diff --git a/src/core/js/file-upload.bundle.js b/src/core/js/file-upload.bundle.js index 618286164bc0b4f9adf4fcb5f01203c396b2b408..a0d2e78996b6d01b2acbaea44f018ffd83bd75b7 100644 --- a/src/core/js/file-upload.bundle.js +++ b/src/core/js/file-upload.bundle.js @@ -1 +1 @@ -(()=>{var __webpack_modules__={557:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(526);\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(470);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(390);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(787);\n/* harmony import */ var _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3__);\nfunction _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }\nfunction _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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a \'" + methodName + "\' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction 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); } }\nfunction _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); }); }; }\n\n\n\n\nvar get_filesystem_body = function get_filesystem_body() {\n return document.querySelector("#caosdb-f-filesystem .card-body");\n};\nvar get_filesystem_header = function get_filesystem_header() {\n return document.querySelector("#caosdb-f-filesystem .card-header");\n};\n\n/**\n * Return an array of the currently shown directory (file system view).\n */\nvar get_current_directory = function get_current_directory() {\n var header = get_filesystem_header();\n if (!header) {\n return [];\n }\n return Array.from(header.getElementsByClassName("caosdb-fs-cwd")).map(function (el) {\n return el.textContent;\n });\n};\n\n/**\n * Construct the XML payload for file insertion.\n */\nvar create_file_upload_request_xml = function create_file_upload_request_xml(files, targetDirectory, recordType) {\n var _parent = recordType ? "<Parent id=\\"".concat(recordType, "\\"/>") : "";\n var request = "<Request>" + files.map(function (f, idx) {\n return "<File upload=\\"".concat(idx, "-").concat(f.name, "\\" path=\\"").concat(targetDirectory).concat(f.name, "\\">").concat(_parent, "</File>");\n }) + "</Request>";\n return request;\n};\n\n/**\n * Put all the XML payload and the files into a form data object (for upload).\n */\nvar create_form_data = function create_form_data(xml, files) {\n var formData = new FormData();\n formData.append("FileRepresentation", xml);\n files.forEach(function (f, idx) {\n var name = "".concat(idx, "-").concat(f.name);\n formData.append(name, f.file, name);\n });\n return formData;\n};\n\n/**\n * Split up the link to the file in the entity view. The two new links point to\n * the file (for download) and to the parent directory (for browsing the file\n * system).\n */\nvar split_parent_dir = function split_parent_dir(node) {\n repair_uri(node, "href");\n var path_old = node.getAttribute("href").substring(connection.getFileSystemPath().length).split("/");\n if (path_old.length > 1) {\n var parent_dir = path_old.slice(0, path_old.length - 1);\n var parent_dir_node = node.cloneNode();\n parent_dir_node.setAttribute("href", connection.getFileSystemPath() + parent_dir.join("/") + "/");\n parent_dir_node.textContent = parent_dir.join("/") + "/";\n parent_dir_node.title = "Go to parent directory.";\n node.before(parent_dir_node);\n node.dataset.entityPath = node.textContent;\n node.textContent = node.textContent.split("/").slice(-1)[0];\n node.title = "Download this file";\n }\n};\n\n/**\n * Repairs broken links (e.g. when files have strange names)\n */\nvar repair_uri = function repair_uri(node, attr) {\n var path_old = node.getAttribute(attr).substring(connection.getFileSystemPath().length).split("/");\n var path_new = path_old.map(encodeURIComponent);\n node.setAttribute(attr, connection.getFileSystemPath() + path_new.join("/"));\n};\n\n/**\n * Perform the actual AJAX request (returns Promise).\n */\nvar uploadRequest = function uploadRequest(formData) {\n return $.ajax({\n url: connection.getBasePath() + "Entity/",\n method: "POST",\n dataType: "xml",\n contentType: false,\n processData: false,\n data: formData\n });\n};\n\n/**\n * This onSubmit implementation works for the legaca REST API.\n */\nvar defaultOnSubmit = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) {\n var _document$querySelect;\n var files, directory, recordType, xml, formData, response, iterator, newFiles, next, hasErrors, _response$evaluate, _response$evaluate2, _response$evaluate3, error, path, id, _response$evaluate4;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n (_document$querySelect = document.querySelector("#collapseFileUpload~ul")) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.remove();\n files = data.files, directory = data.directory, recordType = data.recordType;\n directory = directory || [];\n directory = directory.length > 0 ? "/" + directory.join("/") + "/" : "/";\n xml = create_file_upload_request_xml(files, directory, recordType);\n formData = create_form_data(xml, files);\n _context.next = 8;\n return uploadRequest(formData);\n case 8:\n response = _context.sent;\n // TODO handle XMLDocument, extract errors or ids.\n iterator = response.evaluate("/Response/File", response, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE);\n newFiles = [];\n next = iterator.iterateNext();\n hasErrors = false;\n while (next) {\n error = (_response$evaluate = response.evaluate("Error", next, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE)) === null || _response$evaluate === void 0 ? void 0 : _response$evaluate.iterateNext();\n path = (_response$evaluate2 = response.evaluate("@path", next, null, XPathResult.STRING_TYPE)) === null || _response$evaluate2 === void 0 ? void 0 : _response$evaluate2.stringValue;\n id = (_response$evaluate3 = response.evaluate("@id", next, null, XPathResult.STRING_TYPE)) === null || _response$evaluate3 === void 0 ? void 0 : _response$evaluate3.stringValue;\n if (error) {\n hasErrors = true;\n error = (_response$evaluate4 = response.evaluate("@description", error, null, XPathResult.STRING_TYPE)) === null || _response$evaluate4 === void 0 ? void 0 : _response$evaluate4.stringValue;\n }\n newFiles.push({\n error: error,\n id: id,\n path: path,\n url: !id || connection.getBasePath() + "Entity/" + id\n });\n next = iterator.iterateNext();\n }\n return _context.abrupt("return", {\n hasErrors: hasErrors,\n url: connection.getBasePath() + "FileSystem/" + directory,\n directory: directory,\n newFiles: newFiles\n });\n case 15:\n case "end":\n return _context.stop();\n }\n }, _callee);\n }));\n return function defaultOnSubmit(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Suitable for our purpose here means: Permission to USE:AS_PARENT is granted\n * and the RecordType doesn\'t have any obligatory properties.\n */\nvar findSuitableRecordTypes = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var response, iterator, results, n, _response$evaluate5, _response$evaluate6, _response$evaluate7, hasUsePermission, hasObligatoryProperties;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return connection.get("Entity/?query=FIND RECORDTYPE");\n case 2:\n response = _context2.sent;\n iterator = response.evaluate("/Response/RecordType", response, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE);\n results = [];\n case 5:\n if (false) {}\n n = iterator.iterateNext();\n if (n) {\n _context2.next = 9;\n break;\n }\n return _context2.abrupt("break", 18);\n case 9:\n hasUsePermission = response.evaluate("Permissions/Permission[@name=\'USE:AS_PARENT\']", n, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE).iterateNext();\n if (hasUsePermission) {\n _context2.next = 12;\n break;\n }\n return _context2.abrupt("continue", 5);\n case 12:\n hasObligatoryProperties = response.evaluate("Property[@importance=\'OBLIGATORY\']", n, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE).iterateNext();\n if (!hasObligatoryProperties) {\n _context2.next = 15;\n break;\n }\n return _context2.abrupt("continue", 5);\n case 15:\n results.push({\n name: (_response$evaluate5 = response.evaluate("@name", n, null, XPathResult.STRING_TYPE)) === null || _response$evaluate5 === void 0 ? void 0 : _response$evaluate5.stringValue,\n id: (_response$evaluate6 = response.evaluate("@id", n, null, XPathResult.STRING_TYPE)) === null || _response$evaluate6 === void 0 ? void 0 : _response$evaluate6.stringValue,\n description: (_response$evaluate7 = response.evaluate("@description", n, null, XPathResult.STRING_TYPE)) === null || _response$evaluate7 === void 0 ? void 0 : _response$evaluate7.stringValue\n });\n _context2.next = 5;\n break;\n case 18:\n return _context2.abrupt("return", results);\n case 19:\n case "end":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function findSuitableRecordTypes() {\n return _ref2.apply(this, arguments);\n };\n}();\nvar file_upload = {\n get_record_types: function () {\n var _get_record_types = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return findSuitableRecordTypes();\n case 2:\n return _context3.abrupt("return", _context3.sent);\n case 3:\n case "end":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function get_record_types() {\n return _get_record_types.apply(this, arguments);\n }\n return get_record_types;\n }(),\n create_file_upload_widget: function create_file_upload_widget(container, config) {\n var root = react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot(container);\n var _config = config || {};\n if (!_config.hasOwnProperty("onSubmit")) {\n _config.onSubmit = defaultOnSubmit;\n }\n if (!_config.hasOwnProperty("recordTypes")) {\n _config.recordTypes = this.get_record_types().then(function (results) {\n return results.map(function (rt) {\n return {\n label: rt.name,\n value: rt.id,\n title: rt.description\n };\n });\n });\n }\n root.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.StrictMode, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("form", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3__.FileUpload, _config))));\n },\n /**\n * This is the "+" button shown in the file system view.\n */\n create_upload_button: function create_upload_button() {\n var button = $("\\n <button class=\\"py-0 px-1 ms-2 btn btn-primary\\" type=\\"button\\" data-bs-toggle=\\"collapse\\" data-bs-target=\\"#collapseFileUpload\\" aria-expanded=\\"false\\" aria-controls=\\"collapseFileUpload\\">\\n <span class=\\"bi bi-plus-lg\\"/>\\n </button>");\n var _onClick = function _onClick() {\n button[0].classList.add("d-none");\n };\n button.on("click", _onClick);\n return button[0];\n },\n init_file_upload: function init_file_upload() {\n var _get_filesystem_heade;\n var container = $("<div class=\\"row collapse mb-5\\" id=\\"collapseFileUpload\\"/>");\n var filesystem_header = (_get_filesystem_heade = get_filesystem_header()) === null || _get_filesystem_heade === void 0 ? void 0 : _get_filesystem_heade.querySelector("div.text-end");\n var filesystem_body = get_filesystem_body();\n if (filesystem_body && filesystem_header) {\n var button = this.create_upload_button();\n filesystem_header.appendChild(button);\n $(filesystem_body).prepend(container);\n var config = {\n directoryReadOnly: false,\n directoryBase: get_current_directory(),\n onCancel: function onCancel() {\n button.click();\n button.classList.remove("d-none");\n },\n onFinish: function onFinish() {\n window.location.reload();\n }\n };\n this.create_file_upload_widget(container[0], config);\n }\n },\n repair_file_system_links: function repair_file_system_links() {\n // entity view\n document.querySelectorAll(".caosdb-entity-heading-attr a").forEach(split_parent_dir);\n\n // filesystem view\n document.querySelectorAll("img.entity-image-preview").forEach(function (node) {\n return repair_uri(node, "src");\n });\n document.querySelectorAll("a.caosdb-fs-file").forEach(function (node) {\n return repair_uri(node, "href");\n });\n document.querySelectorAll("a.caosdb-fs-dir").forEach(function (node) {\n return repair_uri(node, "href");\n });\n },\n init: function () {\n var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n this.init_file_upload();\n this.repair_file_system_links();\n\n // this object can be used to create a widget, e.g. for creating custom\n // upload forms.\n window.caosdb_file_upload_widget = this;\n case 3:\n case "end":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n};\n$(document).ready(function () {\n var build = window.BUILD_MODULE_EXT_FILE_UPLOAD || "${BUILD_MODULE_EXT_FILE_UPLOAD}";\n if (build === "ENABLED") {\n caosdb_modules.register(file_upload);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUM7QUFFRHZGLENBQUMsQ0FBQ2hELFFBQVEsQ0FBQyxDQUFDNkksS0FBSyxDQUFDLFlBQVk7RUFDNUIsSUFBTUMsS0FBSyxHQUFHWixNQUFNLENBQUNhLDRCQUE0QixJQUFJLGlDQUFpQztFQUN0RixJQUFJRCxLQUFLLEtBQUssU0FBUyxFQUFFO0lBQ3ZCRSxjQUFjLENBQUNDLFFBQVEsQ0FBQ25ELFdBQVcsQ0FBQztFQUN0QztBQUNGLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL3NyYy9maWxlLXVwbG9hZC5qcz9kZDYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tL2NsaWVudFwiO1xuaW1wb3J0IFwicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSBcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWNvcmUtY29tcG9uZW50c1wiO1xuXG5jb25zdCBnZXRfZmlsZXN5c3RlbV9ib2R5ID0gKCkgPT4ge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjYW9zZGItZi1maWxlc3lzdGVtIC5jYXJkLWJvZHlcIik7XG59O1xuXG5jb25zdCBnZXRfZmlsZXN5c3RlbV9oZWFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nhb3NkYi1mLWZpbGVzeXN0ZW0gLmNhcmQtaGVhZGVyXCIpO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gYW4gYXJyYXkgb2YgdGhlIGN1cnJlbnRseSBzaG93biBkaXJlY3RvcnkgKGZpbGUgc3lzdGVtIHZpZXcpLlxuICovXG5jb25zdCBnZXRfY3VycmVudF9kaXJlY3RvcnkgPSAoKSA9PiB7XG4gIGNvbnN0IGhlYWRlciA9IGdldF9maWxlc3lzdGVtX2hlYWRlcigpO1xuICBpZiAoIWhlYWRlcikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gQXJyYXkuZnJvbShoZWFkZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNhb3NkYi1mcy1jd2RcIikpLm1hcChcbiAgICAoZWwpID0+IGVsLnRleHRDb250ZW50LFxuICApO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgdGhlIFhNTCBwYXlsb2FkIGZvciBmaWxlIGluc2VydGlvbi5cbiAqL1xuY29uc3QgY3JlYXRlX2ZpbGVfdXBsb2FkX3JlcXVlc3RfeG1sID0gKGZpbGVzLCB0YXJnZXREaXJlY3RvcnksIHJlY29yZFR5cGUpID0+IHtcbiAgY29uc3QgX3BhcmVudCA9IHJlY29yZFR5cGUgPyBgPFBhcmVudCBpZD1cIiR7cmVjb3JkVHlwZX1cIi8+YCA6IFwiXCI7XG4gIGNvbnN0IHJlcXVlc3QgPVxuICAgIFwiPFJlcXVlc3Q+XCIgK1xuICAgIGZpbGVzLm1hcCgoZiwgaWR4KSA9PiB7XG4gICAgICByZXR1cm4gYDxGaWxlIHVwbG9hZD1cIiR7aWR4fS0ke2YubmFtZX1cIiBwYXRoPVwiJHt0YXJnZXREaXJlY3Rvcnl9JHtmLm5hbWV9XCI+JHtfcGFyZW50fTwvRmlsZT5gO1xuICAgIH0pICtcbiAgICBcIjwvUmVxdWVzdD5cIjtcblxuICByZXR1cm4gcmVxdWVzdDtcbn07XG5cbi8qKlxuICogUHV0IGFsbCB0aGUgWE1MIHBheWxvYWQgYW5kIHRoZSBmaWxlcyBpbnRvIGEgZm9ybSBkYXRhIG9iamVjdCAoZm9yIHVwbG9hZCkuXG4gKi9cbmNvbnN0IGNyZWF0ZV9mb3JtX2RhdGEgPSAoeG1sLCBmaWxlcykgPT4ge1xuICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICBmb3JtRGF0YS5hcHBlbmQoXCJGaWxlUmVwcmVzZW50YXRpb25cIiwgeG1sKTtcbiAgZmlsZXMuZm9yRWFjaCgoZiwgaWR4KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGAke2lkeH0tJHtmLm5hbWV9YDtcbiAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgZi5maWxlLCBuYW1lKTtcbiAgfSk7XG4gIHJldHVybiBmb3JtRGF0YTtcbn07XG5cbi8qKlxuICogU3BsaXQgdXAgdGhlIGxpbmsgdG8gdGhlIGZpbGUgaW4gdGhlIGVudGl0eSB2aWV3LiBUaGUgdHdvIG5ldyBsaW5rcyBwb2ludCB0b1xuICogdGhlIGZpbGUgKGZvciBkb3dubG9hZCkgYW5kIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5IChmb3IgYnJvd3NpbmcgdGhlIGZpbGVcbiAqIHN5c3RlbSkuXG4gKi9cbmNvbnN0IHNwbGl0X3BhcmVudF9kaXIgPSAobm9kZSkgPT4ge1xuICByZXBhaXJfdXJpKG5vZGUsIFwiaHJlZlwiKTtcbiAgY29uc3QgcGF0aF9vbGQgPSBub2RlXG4gICAgLmdldEF0dHJpYnV0ZShcImhyZWZcIilcbiAgICAuc3Vic3RyaW5nKGNvbm5lY3Rpb24uZ2V0RmlsZVN5c3RlbVBhdGgoKS5sZW5ndGgpXG4gICAgLnNwbGl0KFwiL1wiKTtcbiAgaWYgKHBhdGhfb2xkLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCBwYXJlbnRfZGlyID0gcGF0aF9vbGQuc2xpY2UoMCwgcGF0aF9vbGQubGVuZ3RoIC0gMSk7XG4gICAgY29uc3QgcGFyZW50X2Rpcl9ub2RlID0gbm9kZS5jbG9uZU5vZGUoKTtcbiAgICBwYXJlbnRfZGlyX25vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgXCJocmVmXCIsXG4gICAgICBjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkgKyBwYXJlbnRfZGlyLmpvaW4oXCIvXCIpICsgXCIvXCIsXG4gICAgKTtcbiAgICBwYXJlbnRfZGlyX25vZGUudGV4dENvbnRlbnQgPSBwYXJlbnRfZGlyLmpvaW4oXCIvXCIpICsgXCIvXCI7XG4gICAgcGFyZW50X2Rpcl9ub2RlLnRpdGxlID0gXCJHbyB0byBwYXJlbnQgZGlyZWN0b3J5LlwiO1xuICAgIG5vZGUuYmVmb3JlKHBhcmVudF9kaXJfbm9kZSk7XG4gICAgbm9kZS5kYXRhc2V0LmVudGl0eVBhdGggPSBub2RlLnRleHRDb250ZW50O1xuICAgIG5vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50LnNwbGl0KFwiL1wiKS5zbGljZSgtMSlbMF07XG4gICAgbm9kZS50aXRsZSA9IFwiRG93bmxvYWQgdGhpcyBmaWxlXCI7XG4gIH1cbn07XG5cbi8qKlxuICogUmVwYWlycyBicm9rZW4gbGlua3MgKGUuZy4gd2hlbiBmaWxlcyBoYXZlIHN0cmFuZ2UgbmFtZXMpXG4gKi9cbmNvbnN0IHJlcGFpcl91cmkgPSAobm9kZSwgYXR0cikgPT4ge1xuICBjb25zdCBwYXRoX29sZCA9IG5vZGVcbiAgICAuZ2V0QXR0cmlidXRlKGF0dHIpXG4gICAgLnN1YnN0cmluZyhjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkubGVuZ3RoKVxuICAgIC5zcGxpdChcIi9cIik7XG4gIGNvbnN0IHBhdGhfbmV3ID0gcGF0aF9vbGQubWFwKGVuY29kZVVSSUNvbXBvbmVudCk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIGNvbm5lY3Rpb24uZ2V0RmlsZVN5c3RlbVBhdGgoKSArIHBhdGhfbmV3LmpvaW4oXCIvXCIpKTtcbn07XG5cbi8qKlxuICogUGVyZm9ybSB0aGUgYWN0dWFsIEFKQVggcmVxdWVzdCAocmV0dXJucyBQcm9taXNlKS5cbiAqL1xuY29uc3QgdXBsb2FkUmVxdWVzdCA9IChmb3JtRGF0YSkgPT4ge1xuICByZXR1cm4gJC5hamF4KHtcbiAgICB1cmw6IGNvbm5lY3Rpb24uZ2V0QmFzZVBhdGgoKSArIFwiRW50aXR5L1wiLFxuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgZGF0YVR5cGU6IFwieG1sXCIsXG4gICAgY29udGVudFR5cGU6IGZhbHNlLFxuICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcbiAgICBkYXRhOiBmb3JtRGF0YSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFRoaXMgb25TdWJtaXQgaW1wbGVtZW50YXRpb24gd29ya3MgZm9yIHRoZSBsZWdhY2EgUkVTVCBBUEkuXG4gKi9cbmNvbnN0IGRlZmF1bHRPblN1Ym1pdCA9IGFzeW5jIChkYXRhKSA9PiB7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY29sbGFwc2VGaWxlVXBsb2FkfnVsXCIpPy5yZW1vdmUoKTtcbiAgdmFyIHsgZmlsZXMsIGRpcmVjdG9yeSwgcmVjb3JkVHlwZSB9ID0gZGF0YTtcbiAgZGlyZWN0b3J5ID0gZGlyZWN0b3J5IHx8IFtdO1xuICBkaXJlY3RvcnkgPSBkaXJlY3RvcnkubGVuZ3RoID4gMCA/IFwiL1wiICsgZGlyZWN0b3J5LmpvaW4oXCIvXCIpICsgXCIvXCIgOiBcIi9cIjtcblxuICBjb25zdCB4bWwgPSBjcmVhdGVfZmlsZV91cGxvYWRfcmVxdWVzdF94bWwoZmlsZXMsIGRpcmVjdG9yeSwgcmVjb3JkVHlwZSk7XG4gIGNvbnN0IGZvcm1EYXRhID0gY3JlYXRlX2Zvcm1fZGF0YSh4bWwsIGZpbGVzKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB1cGxvYWRSZXF1ZXN0KGZvcm1EYXRhKTtcbiAgLy8gVE9ETyBoYW5kbGUgWE1MRG9jdW1lbnQsIGV4dHJhY3QgZXJyb3JzIG9yIGlkcy5cbiAgY29uc3QgaXRlcmF0b3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICBcIi9SZXNwb25zZS9GaWxlXCIsXG4gICAgcmVzcG9uc2UsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICApO1xuICBjb25zdCBuZXdGaWxlcyA9IFtdO1xuXG4gIHZhciBuZXh0ID0gaXRlcmF0b3IuaXRlcmF0ZU5leHQoKTtcbiAgdmFyIGhhc0Vycm9ycyA9IGZhbHNlO1xuICB3aGlsZSAobmV4dCkge1xuICAgIHZhciBlcnJvciA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXCJFcnJvclwiLCBuZXh0LCBudWxsLCBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFKVxuICAgICAgPy5pdGVyYXRlTmV4dCgpO1xuICAgIGNvbnN0IHBhdGggPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgIFwiQHBhdGhcIixcbiAgICAgIG5leHQsXG4gICAgICBudWxsLFxuICAgICAgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUsXG4gICAgKT8uc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgaWQgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgIFwiQGlkXCIsXG4gICAgICBuZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICk/LnN0cmluZ1ZhbHVlO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgIGVycm9yID0gcmVzcG9uc2UuZXZhbHVhdGUoXG4gICAgICAgIFwiQGRlc2NyaXB0aW9uXCIsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBudWxsLFxuICAgICAgICBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSxcbiAgICAgICk/LnN0cmluZ1ZhbHVlO1xuICAgIH1cbiAgICBuZXdGaWxlcy5wdXNoKHtcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgIGlkOiBpZCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICB1cmw6ICFpZCB8fCBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkVudGl0eS9cIiArIGlkLFxuICAgIH0pO1xuICAgIG5leHQgPSBpdGVyYXRvci5pdGVyYXRlTmV4dCgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgaGFzRXJyb3JzOiBoYXNFcnJvcnMsXG4gICAgdXJsOiBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkZpbGVTeXN0ZW0vXCIgKyBkaXJlY3RvcnksXG4gICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksXG4gICAgbmV3RmlsZXM6IG5ld0ZpbGVzLFxuICB9O1xufTtcblxuLyoqXG4gKiBTdWl0YWJsZSBmb3Igb3VyIHB1cnBvc2UgaGVyZSBtZWFuczogUGVybWlzc2lvbiB0byBVU0U6QVNfUEFSRU5UIGlzIGdyYW50ZWRcbiAqIGFuZCB0aGUgUmVjb3JkVHlwZSBkb2Vzbid0IGhhdmUgYW55IG9ibGlnYXRvcnkgcHJvcGVydGllcy5cbiAqL1xuY29uc3QgZmluZFN1aXRhYmxlUmVjb3JkVHlwZXMgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY29ubmVjdGlvbi5nZXQoXCJFbnRpdHkvP3F1ZXJ5PUZJTkQgUkVDT1JEVFlQRVwiKTtcbiAgY29uc3QgaXRlcmF0b3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICBcIi9SZXNwb25zZS9SZWNvcmRUeXBlXCIsXG4gICAgcmVzcG9uc2UsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICApO1xuICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgdmFyIG47XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbiA9IGl0ZXJhdG9yLml0ZXJhdGVOZXh0KCk7XG4gICAgaWYgKCFuKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgaGFzVXNlUGVybWlzc2lvbiA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXG4gICAgICAgIFwiUGVybWlzc2lvbnMvUGVybWlzc2lvbltAbmFtZT0nVVNFOkFTX1BBUkVOVCddXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsXG4gICAgICApXG4gICAgICAuaXRlcmF0ZU5leHQoKTtcbiAgICBpZiAoIWhhc1VzZVBlcm1pc3Npb24pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBoYXNPYmxpZ2F0b3J5UHJvcGVydGllcyA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXG4gICAgICAgIFwiUHJvcGVydHlbQGltcG9ydGFuY2U9J09CTElHQVRPUlknXVwiLFxuICAgICAgICBuLFxuICAgICAgICBudWxsLFxuICAgICAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICAgICAgKVxuICAgICAgLml0ZXJhdGVOZXh0KCk7XG4gICAgaWYgKGhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgIG5hbWU6IHJlc3BvbnNlLmV2YWx1YXRlKFwiQG5hbWVcIiwgbiwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpXG4gICAgICAgID8uc3RyaW5nVmFsdWUsXG4gICAgICBpZDogcmVzcG9uc2UuZXZhbHVhdGUoXCJAaWRcIiwgbiwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpXG4gICAgICAgID8uc3RyaW5nVmFsdWUsXG4gICAgICBkZXNjcmlwdGlvbjogcmVzcG9uc2UuZXZhbHVhdGUoXG4gICAgICAgIFwiQGRlc2NyaXB0aW9uXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICAgKT8uc3RyaW5nVmFsdWUsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5jb25zdCBmaWxlX3VwbG9hZCA9IHtcbiAgZ2V0X3JlY29yZF90eXBlczogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIC8vIFRPRE8gYWRkIHBlcm1pc3Npb25zIHRvIEdSUEMgQVBJLCB0aGVuIHVzZSB0aGlzIGFnYWluXG4gICAgLy9jb25zdCBzZXJ2aWNlID0gbmV3IFRyYW5zYWN0aW9uU2VydmljZSgpO1xuICAgIC8vY29uc3QgcmVzdWx0cyA9IGF3YWl0IHNlcnZpY2UuZXhlY3V0ZVF1ZXJ5KFwiRklORCBSRUNPUkRUWVBFXCIpO1xuICAgIC8vY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgcmV0dXJuIGF3YWl0IGZpbmRTdWl0YWJsZVJlY29yZFR5cGVzKCk7XG4gIH0sXG4gIGNyZWF0ZV9maWxlX3VwbG9hZF93aWRnZXQ6IGZ1bmN0aW9uIChjb250YWluZXIsIGNvbmZpZykge1xuICAgIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGNvbnRhaW5lcik7XG4gICAgY29uc3QgX2NvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICBpZiAoIV9jb25maWcuaGFzT3duUHJvcGVydHkoXCJvblN1Ym1pdFwiKSkge1xuICAgICAgX2NvbmZpZy5vblN1Ym1pdCA9IGRlZmF1bHRPblN1Ym1pdDtcbiAgICB9XG5cbiAgICBpZiAoIV9jb25maWcuaGFzT3duUHJvcGVydHkoXCJyZWNvcmRUeXBlc1wiKSkge1xuICAgICAgX2NvbmZpZy5yZWNvcmRUeXBlcyA9IHRoaXMuZ2V0X3JlY29yZF90eXBlcygpLnRoZW4oKHJlc3VsdHMpID0+XG4gICAgICAgIHJlc3VsdHMubWFwKChydCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBydC5uYW1lLCB2YWx1ZTogcnQuaWQsIHRpdGxlOiBydC5kZXNjcmlwdGlvbiB9O1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcm9vdC5yZW5kZXIoXG4gICAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgICAgPGZvcm0+XG4gICAgICAgICAgPEZpbGVVcGxvYWQgey4uLl9jb25maWd9IC8+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvUmVhY3QuU3RyaWN0TW9kZT4sXG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogVGhpcyBpcyB0aGUgXCIrXCIgYnV0dG9uIHNob3duIGluIHRoZSBmaWxlIHN5c3RlbSB2aWV3LlxuICAgKi9cbiAgY3JlYXRlX3VwbG9hZF9idXR0b246ICgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSAkKGBcbiAgICAgIDxidXR0b24gY2xhc3M9XCJweS0wIHB4LTEgbXMtMiBidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtYnMtdGFyZ2V0PVwiI2NvbGxhcHNlRmlsZVVwbG9hZFwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUZpbGVVcGxvYWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1wbHVzLWxnXCIvPlxuICAgICAgPC9idXR0b24+YCk7XG5cbiAgICBjb25zdCBfb25DbGljayA9ICgpID0+IHtcbiAgICAgIGJ1dHRvblswXS5jbGFzc0xpc3QuYWRkKFwiZC1ub25lXCIpO1xuICAgIH07XG4gICAgYnV0dG9uLm9uKFwiY2xpY2tcIiwgX29uQ2xpY2spO1xuICAgIHJldHVybiBidXR0b25bMF07XG4gIH0sXG5cbiAgaW5pdF9maWxlX3VwbG9hZDogZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9ICQoXG4gICAgICBgPGRpdiBjbGFzcz1cInJvdyBjb2xsYXBzZSBtYi01XCIgaWQ9XCJjb2xsYXBzZUZpbGVVcGxvYWRcIi8+YCxcbiAgICApO1xuICAgIGNvbnN0IGZpbGVzeXN0ZW1faGVhZGVyID1cbiAgICAgIGdldF9maWxlc3lzdGVtX2hlYWRlcigpPy5xdWVyeVNlbGVjdG9yKFwiZGl2LnRleHQtZW5kXCIpO1xuICAgIGNvbnN0IGZpbGVzeXN0ZW1fYm9keSA9IGdldF9maWxlc3lzdGVtX2JvZHkoKTtcblxuICAgIGlmIChmaWxlc3lzdGVtX2JvZHkgJiYgZmlsZXN5c3RlbV9oZWFkZXIpIHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuY3JlYXRlX3VwbG9hZF9idXR0b24oKTtcbiAgICAgIGZpbGVzeXN0ZW1faGVhZGVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cbiAgICAgICQoZmlsZXN5c3RlbV9ib2R5KS5wcmVwZW5kKGNvbnRhaW5lcik7XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgZGlyZWN0b3J5UmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICBkaXJlY3RvcnlCYXNlOiBnZXRfY3VycmVudF9kaXJlY3RvcnkoKSxcbiAgICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgICBidXR0b24uY2xpY2soKTtcbiAgICAgICAgICBidXR0b24uY2xhc3NMaXN0LnJlbW92ZShcImQtbm9uZVwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GaW5pc2g6ICgpID0+IHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVfZmlsZV91cGxvYWRfd2lkZ2V0KGNvbnRhaW5lclswXSwgY29uZmlnKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVwYWlyX2ZpbGVfc3lzdGVtX2xpbmtzOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gZW50aXR5IHZpZXdcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuY2Fvc2RiLWVudGl0eS1oZWFkaW5nLWF0dHIgYVwiKVxuICAgICAgLmZvckVhY2goc3BsaXRfcGFyZW50X2Rpcik7XG5cbiAgICAvLyBmaWxlc3lzdGVtIHZpZXdcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWcuZW50aXR5LWltYWdlLXByZXZpZXdcIilcbiAgICAgIC5mb3JFYWNoKChub2RlKSA9PiByZXBhaXJfdXJpKG5vZGUsIFwic3JjXCIpKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhLmNhb3NkYi1mcy1maWxlXCIpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gcmVwYWlyX3VyaShub2RlLCBcImhyZWZcIikpO1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcImEuY2Fvc2RiLWZzLWRpclwiKVxuICAgICAgLmZvckVhY2goKG5vZGUpID0+IHJlcGFpcl91cmkobm9kZSwgXCJocmVmXCIpKTtcbiAgfSxcblxuICBpbml0OiBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0X2ZpbGVfdXBsb2FkKCk7XG4gICAgdGhpcy5yZXBhaXJfZmlsZV9zeXN0ZW1fbGlua3MoKTtcblxuICAgIC8vIHRoaXMgb2JqZWN0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHdpZGdldCwgZS5nLiBmb3IgY3JlYXRpbmcgY3VzdG9tXG4gICAgLy8gdXBsb2FkIGZvcm1zLlxuICAgIHdpbmRvdy5jYW9zZGJfZmlsZV91cGxvYWRfd2lkZ2V0ID0gdGhpcztcbiAgfSxcbn07XG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYnVpbGQgPSB3aW5kb3cuQlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRCB8fCBcIiR7QlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRH1cIlxuICBpZiAoYnVpbGQgPT09IFwiRU5BQkxFRFwiKSB7XG4gICAgY2Fvc2RiX21vZHVsZXMucmVnaXN0ZXIoZmlsZV91cGxvYWQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsImRlc2MiLCJ2YWx1ZSIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwic2VsZiIsInRyeUxvY3NMaXN0IiwicHJvdG9HZW5lcmF0b3IiLCJHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJjcmVhdGUiLCJjb250ZXh0IiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwidHlwZSIsImNhbGwiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInRoZW4iLCJ1bndyYXBwZWQiLCJlcnJvciIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiZG9uZSIsIm1ldGhvZE5hbWUiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJsZW5ndGgiLCJpIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsImtleXMiLCJ2YWwiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJSZWFjdCIsIlJlYWN0RE9NIiwiRmlsZVVwbG9hZCIsImdldF9maWxlc3lzdGVtX2JvZHkiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRfZmlsZXN5c3RlbV9oZWFkZXIiLCJnZXRfY3VycmVudF9kaXJlY3RvcnkiLCJoZWFkZXIiLCJBcnJheSIsImZyb20iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwibWFwIiwiZWwiLCJ0ZXh0Q29udGVudCIsImNyZWF0ZV9maWxlX3VwbG9hZF9yZXF1ZXN0X3htbCIsImZpbGVzIiwidGFyZ2V0RGlyZWN0b3J5IiwicmVjb3JkVHlwZSIsIl9wYXJlbnQiLCJjb25jYXQiLCJyZXF1ZXN0IiwiZiIsImlkeCIsImNyZWF0ZV9mb3JtX2RhdGEiLCJ4bWwiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiZmlsZSIsInNwbGl0X3BhcmVudF9kaXIiLCJub2RlIiwicmVwYWlyX3VyaSIsInBhdGhfb2xkIiwiZ2V0QXR0cmlidXRlIiwic3Vic3RyaW5nIiwiY29ubmVjdGlvbiIsImdldEZpbGVTeXN0ZW1QYXRoIiwic3BsaXQiLCJwYXJlbnRfZGlyIiwicGFyZW50X2Rpcl9ub2RlIiwiY2xvbmVOb2RlIiwic2V0QXR0cmlidXRlIiwiam9pbiIsInRpdGxlIiwiYmVmb3JlIiwiZGF0YXNldCIsImVudGl0eVBhdGgiLCJhdHRyIiwicGF0aF9uZXciLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1cGxvYWRSZXF1ZXN0IiwiJCIsImFqYXgiLCJ1cmwiLCJnZXRCYXNlUGF0aCIsImRhdGFUeXBlIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImRhdGEiLCJkZWZhdWx0T25TdWJtaXQiLCJfcmVmIiwiX2NhbGxlZSIsIl9kb2N1bWVudCRxdWVyeVNlbGVjdCIsImRpcmVjdG9yeSIsInJlc3BvbnNlIiwibmV3RmlsZXMiLCJoYXNFcnJvcnMiLCJfcmVzcG9uc2UkZXZhbHVhdGUiLCJfcmVzcG9uc2UkZXZhbHVhdGUyIiwiX3Jlc3BvbnNlJGV2YWx1YXRlMyIsInBhdGgiLCJpZCIsIl9yZXNwb25zZSRldmFsdWF0ZTQiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicmVtb3ZlIiwiZXZhbHVhdGUiLCJYUGF0aFJlc3VsdCIsIlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUiLCJpdGVyYXRlTmV4dCIsIlNUUklOR19UWVBFIiwic3RyaW5nVmFsdWUiLCJfeCIsImZpbmRTdWl0YWJsZVJlY29yZFR5cGVzIiwiX3JlZjIiLCJfY2FsbGVlMiIsInJlc3VsdHMiLCJuIiwiX3Jlc3BvbnNlJGV2YWx1YXRlNSIsIl9yZXNwb25zZSRldmFsdWF0ZTYiLCJfcmVzcG9uc2UkZXZhbHVhdGU3IiwiaGFzVXNlUGVybWlzc2lvbiIsImhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0IiwiZGVzY3JpcHRpb24iLCJmaWxlX3VwbG9hZCIsImdldF9yZWNvcmRfdHlwZXMiLCJfZ2V0X3JlY29yZF90eXBlcyIsIl9jYWxsZWUzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiY3JlYXRlX2ZpbGVfdXBsb2FkX3dpZGdldCIsImNvbnRhaW5lciIsImNvbmZpZyIsInJvb3QiLCJjcmVhdGVSb290IiwiX2NvbmZpZyIsIm9uU3VibWl0IiwicmVjb3JkVHlwZXMiLCJydCIsImxhYmVsIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIlN0cmljdE1vZGUiLCJjcmVhdGVfdXBsb2FkX2J1dHRvbiIsImJ1dHRvbiIsIl9vbkNsaWNrIiwiY2xhc3NMaXN0IiwiYWRkIiwib24iLCJpbml0X2ZpbGVfdXBsb2FkIiwiX2dldF9maWxlc3lzdGVtX2hlYWRlIiwiZmlsZXN5c3RlbV9oZWFkZXIiLCJmaWxlc3lzdGVtX2JvZHkiLCJhcHBlbmRDaGlsZCIsInByZXBlbmQiLCJkaXJlY3RvcnlSZWFkT25seSIsImRpcmVjdG9yeUJhc2UiLCJvbkNhbmNlbCIsImNsaWNrIiwib25GaW5pc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCIsInJlcGFpcl9maWxlX3N5c3RlbV9saW5rcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbml0IiwiX2luaXQiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImNhb3NkYl9maWxlX3VwbG9hZF93aWRnZXQiLCJyZWFkeSIsImJ1aWxkIiwiQlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRCIsImNhb3NkYl9tb2R1bGVzIiwicmVnaXN0ZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///557\n')},787:(module,__unused_webpack_exports,__webpack_require__)=>{eval('/*! For license information please see caosdb-webui-core-components.js.LICENSE.txt */\n!function(e,t){ true?module.exports=t(__webpack_require__(526),function(){try{return __webpack_require__(818)}catch(e){}}()):0}(self,(function(e,t){return function(){var n={184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var i=a.apply(null,n);i&&e.push(i)}}else if("object"===o){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){e.push(n.toString());continue}for(var l in n)r.call(n,l)&&n[l]&&e.push(l)}}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()},550:function(e,t,n){"use strict";var r=n(537),a=n.n(r),o=n(645),i=n.n(o)()(a());i.push([e.id,".caosdb-f-query-cql-hint{border-radius:2rem;background-color:#d9d9d9;color:#262626;padding:.1rem .4rem}.caosdb-f-query-form-sug{display:none}nav .navbar-collapse{align-items:start;flex-wrap:wrap}nav .navbar-collapse form{display:flex;flex-direction:column}.caosdb-f-query-panel.condensed:focus-within,.caosdb-f-query-panel{margin-top:.5rem;width:100%;order:1}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form,.caosdb-f-query-panel .caosdb-f-query-form{order:unset;height:44px;padding-left:2rem;padding-top:.5rem;padding-right:2rem;padding-bottom:.5rem;border:1px solid #ddd;background-color:#fff;border-radius:2rem}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form:hover,.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus,.caosdb-f-query-panel .caosdb-f-query-form:hover,.caosdb-f-query-panel .caosdb-f-query-form.focus{box-shadow:0 1px 6px rgba(32,33,36,.28)}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug{margin-top:.5rem;background-color:#fff;display:inline-block;max-height:200px;position:absolute;overflow-y:auto;box-shadow:0 4px 6px rgba(32,33,36,.28);padding:0px}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li{padding-left:.5rem;padding-right:.5rem;height:24px;list-style-type:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li.highlight,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li.highlight{background-color:#d9d9d9}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li:hover,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li:hover{background-color:#d9d9d9}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.submit.open .caosdb-f-query-form-sug,.caosdb-f-query-panel .caosdb-f-query-form.focus.submit.open .caosdb-f-query-form-sug{display:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form button,.caosdb-f-query-panel .caosdb-f-query-form button{background-color:inherit;border:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input,.caosdb-f-query-panel .caosdb-f-query-form input{border:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input:focus,.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input:focus-visible,.caosdb-f-query-panel .caosdb-f-query-form input:focus,.caosdb-f-query-panel .caosdb-f-query-form input:focus-visible{outline:none}.caosdb-f-query-panel.condensed:focus-within form,.caosdb-f-query-panel form{flex-direction:column}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-list,.caosdb-f-query-panel .caosdb-f-query-tab-list{margin-top:.5rem;padding-left:1rem;padding-right:1rem}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-filters,.caosdb-f-query-panel .caosdb-f-query-tab-filters{display:flex;flex-direction:row;flex-wrap:wrap}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-filters input.form-control,.caosdb-f-query-panel .caosdb-f-query-tab-filters input.form-control{display:unset;width:unset}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab,.caosdb-f-query-panel .caosdb-f-query-tab{height:44px;margin-right:1rem;padding:6px;background-color:unset;border:none;border-bottom:.2rem solid rgba(0,0,0,0)}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab.active,.caosdb-f-query-panel .caosdb-f-query-tab.active{border-bottom:.2rem solid gray}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-filter-property-selector,.caosdb-f-query-panel .caosdb-f-query-filter-property-selector{flex-basis:100%}@media(min-width: 992px){.caosdb-f-query-panel .caosdb-f-query-tab-filters{display:grid;grid-template-columns:max-content max-content auto max-content;grid-column-gap:.5rem;padding:.2rem 0rem}.caosdb-f-query-panel .caosdb-f-query-tab-filters input.form-control{display:unset;width:unset}.caosdb-f-query-panel.condensed{margin-top:0;width:unset;order:unset}.caosdb-f-query-panel.condensed form{flex-direction:row}.caosdb-f-query-panel.condensed .caosdb-f-query-filters-toggle{display:none}.caosdb-f-query-panel.condensed .caosdb-f-query-tab-list{margin-top:0rem}.caosdb-f-query-panel.condensed .caosdb-f-query-tab{height:38px}.caosdb-f-query-panel.condensed .caosdb-f-query-tab-filters{display:none}.caosdb-f-query-panel.condensed .caosdb-f-query-form{height:38px;order:1;padding-left:1rem;padding-top:.3rem;padding-right:1rem;padding-bottom:.3rem}.caosdb-f-query-panel.condensed .caosdb-f-query-form .caosdb-f-query-form-sug{display:none}}.user-component .alert{padding-top:.375rem;padding-bottom:.375rem;font-size:1rem;margin:0}header{border-bottom:1px solid rgba(0,0,0,.15);border-radius:0}footer{color:#878787}footer .nav{border-bottom:1px solid #a0a0a0}footer .nav-link{color:#878787 !important}footer .nav-link:hover{color:#6d6d6d !important}footer .footer-body{border-top:1px solid #bababa;background-color:#d3d3d3;min-height:20rem}footer .footer-border{height:3rem;box-shadow:0px -5px 7px -5px rgba(0,0,0,.4) inset;-webkit-box-shadow:0px -5px 7px -5px rgba(0,0,0,.4) inset;-moz-box-shadow:0px -5px 6px -7px rgba(0,0,0,.4) inset}.caosdb-checkbox{cursor:pointer}.caosdb-checkbox .caosdb-checkbox-icon{font-size:1.3em}.caosdb-checkbox .caosdb-check-box-input{display:none}.caosdb-checkbox.read-only{cursor:auto}.color-light-green{color:#b4e600}.minicard{border:1px solid red;width:400px;display:flex}.minicard .minicard-title{background-color:red}","",{version:3,sources:["webpack://./src/components/QueryForm.scss","webpack://./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://./src/index.scss"],names:[],mappings:"AAIA,yBACE,kBAAA,CACA,wBAAA,CACA,aAAA,CACA,mBAAA,CAGF,yBACE,YAAA,CAGF,qBACE,iBAAA,CACA,cAAA,CAEA,0BACE,YAAA,CACA,qBAAA,CAIJ,mEAEE,gBAAA,CACA,UAAA,CACA,OAAA,CAEA,6GACE,WAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,oBAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CAEA,kPAEE,uCAAA,CAKE,yLACE,gBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,uCAAA,CACA,WAAA,CAEA,+LACE,kBAAA,CACA,mBAAA,CACA,WAAA,CACA,oBAAA,CACA,mNACE,wBAAA,CAEF,2MACE,wBAAA,CAOJ,mMACE,YAAA,CAMR,2HACE,wBAAA,CACA,WAAA,CAGF,yHACE,WAAA,CAEA,0RAEE,YAAA,CAKN,6EACE,qBAAA,CAGF,qHACE,gBAAA,CACA,iBAAA,CACA,kBAAA,CAGF,2HACE,YAAA,CACA,kBAAA,CACA,cAAA,CAEA,iKACE,aAAA,CACA,WAAA,CAIJ,2GACE,WAAA,CACA,iBAAA,CACA,WAAA,CACA,sBAAA,CACA,WAAA,CACA,uCAAA,CACA,yHACE,8BAAA,CAIJ,qJACE,eAAA,CCpEA,yBD0EA,kDACE,YAAA,CACA,8DAAA,CACA,qBAAA,CACA,kBAAA,CAEA,qEACE,aAAA,CACA,WAAA,CAKN,gCACE,YAAA,CACA,WAAA,CACA,WAAA,CAEA,qCACE,kBAAA,CAGF,+DACE,YAAA,CAGF,yDACE,eAAA,CAGF,oDACE,WAAA,CAGF,4DACE,YAAA,CAGF,qDACE,WAAA,CACA,OAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,oBAAA,CAEA,8EACE,YAAA,CAAA,CEpLR,uBACE,mBAAA,CACA,sBAAA,CACA,cAAA,CACA,QAAA,CAGF,OACE,uCAAA,CACA,eAAA,CAGF,OACE,aAAA,CAEA,YACE,+BAAA,CAEF,iBACE,wBAAA,CAEF,uBACE,wBAAA,CAEF,oBACE,4BAAA,CACA,wBA5BgB,CA6BhB,gBAAA,CAEF,sBACE,WAAA,CACA,iDAAA,CACA,yDAAA,CACA,sDAAA,CAIJ,iBASE,cAAA,CARA,uCACE,eAAA,CAGF,yCACE,YAAA,CAKF,2BACE,WAAA,CAIJ,mBACE,aAAA,CAGF,UACE,oBAAA,CACA,WAAA,CACA,YAAA,CAEA,0BACE,oBAAA",sourcesContent:[\'@import "bootstrap/scss/functions";\\n@import "bootstrap/scss/variables";\\n@import "bootstrap/scss/mixins";\\n\\n.caosdb-f-query-cql-hint {\\n border-radius: 2rem;\\n background-color: darken(white, 15%);\\n color: lighten(black, 15%);\\n padding: 0.1rem 0.4rem;\\n}\\n\\n.caosdb-f-query-form-sug {\\n display: none;\\n}\\n\\nnav .navbar-collapse {\\n align-items: start;\\n flex-wrap: wrap;\\n\\n form {\\n display: flex;\\n flex-direction: column;\\n }\\n}\\n\\n.caosdb-f-query-panel.condensed:focus-within,\\n.caosdb-f-query-panel {\\n margin-top: 0.5rem;\\n width: 100%;\\n order: 1;\\n\\n .caosdb-f-query-form {\\n order: unset;\\n height: 44px;\\n padding-left: 2rem;\\n padding-top: 0.5rem;\\n padding-right: 2rem;\\n padding-bottom: 0.5rem;\\n border: 1px solid #ddd;\\n background-color: white;\\n border-radius: 2rem;\\n\\n &:hover,\\n &.focus {\\n box-shadow: 0 1px 6px rgba(32, 33, 36, 0.28);\\n }\\n\\n &.focus {\\n &.open {\\n ol.caosdb-f-query-form-sug {\\n margin-top: 0.5rem;\\n background-color: white;\\n display: inline-block;\\n max-height: 200px;\\n position: absolute;\\n overflow-y: auto;\\n box-shadow: 0 4px 6px rgba(32, 33, 36, 0.28);\\n padding: 0px;\\n\\n li {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n height: 24px;\\n list-style-type: none;\\n &.highlight {\\n background-color: darken(white, 15%);\\n }\\n &:hover {\\n background-color: darken(white, 15%);\\n }\\n }\\n }\\n }\\n &.submit {\\n &.open {\\n .caosdb-f-query-form-sug {\\n display: none;\\n }\\n }\\n }\\n }\\n\\n button {\\n background-color: inherit;\\n border: none;\\n }\\n\\n input {\\n border: none;\\n\\n &:focus,\\n &:focus-visible {\\n outline: none;\\n }\\n }\\n }\\n\\n form {\\n flex-direction: column;\\n }\\n\\n .caosdb-f-query-tab-list {\\n margin-top: 0.5rem;\\n padding-left: 1rem;\\n padding-right: 1rem;\\n }\\n\\n .caosdb-f-query-tab-filters {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n\\n input.form-control {\\n display: unset;\\n width: unset;\\n }\\n }\\n\\n .caosdb-f-query-tab {\\n height: 44px;\\n margin-right: 1rem;\\n padding: 6px;\\n background-color: unset;\\n border: none;\\n border-bottom: 0.2rem solid transparent;\\n &.active {\\n border-bottom: 0.2rem solid gray;\\n }\\n }\\n\\n .caosdb-f-query-filter-property-selector {\\n flex-basis: 100%;\\n }\\n}\\n\\n@include media-breakpoint-up(lg) {\\n .caosdb-f-query-panel {\\n .caosdb-f-query-tab-filters {\\n display: grid;\\n grid-template-columns: max-content max-content auto max-content;\\n grid-column-gap: 0.5rem;\\n padding: 0.2rem 0rem;\\n\\n input.form-control {\\n display: unset;\\n width: unset;\\n }\\n }\\n }\\n\\n .caosdb-f-query-panel.condensed {\\n margin-top: 0;\\n width: unset;\\n order: unset;\\n\\n form {\\n flex-direction: row;\\n }\\n\\n .caosdb-f-query-filters-toggle {\\n display: none;\\n }\\n\\n .caosdb-f-query-tab-list {\\n margin-top: 0rem;\\n }\\n\\n .caosdb-f-query-tab {\\n height: 38px;\\n }\\n\\n .caosdb-f-query-tab-filters {\\n display: none;\\n }\\n\\n .caosdb-f-query-form {\\n height: 38px;\\n order: 1;\\n padding-left: 1rem;\\n padding-top: 0.3rem;\\n padding-right: 1rem;\\n padding-bottom: 0.3rem;\\n\\n .caosdb-f-query-form-sug {\\n display: none;\\n }\\n }\\n }\\n}\\n\',\'// Breakpoint viewport sizes and media queries.\\n//\\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\\n//\\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\\n//\\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\\n\\n// Name of the next breakpoint, or null for the last breakpoint.\\n//\\n// >> breakpoint-next(sm)\\n// md\\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// md\\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\\n// md\\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\\n $n: index($breakpoint-names, $name);\\n @if not $n {\\n @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";\\n }\\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\\n}\\n\\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\\n//\\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// 576px\\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\\n $min: map-get($breakpoints, $name);\\n @return if($min != 0, $min, null);\\n}\\n\\n// Maximum breakpoint width.\\n// The maximum value is reduced by 0.02px to work around the limitations of\\n// `min-` and `max-` prefixes and viewports with fractional widths.\\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\\n//\\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// 767.98px\\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\\n $max: map-get($breakpoints, $name);\\n @return if($max and $max > 0, $max - .02, null);\\n}\\n\\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\\n// Useful for making responsive utilities.\\n//\\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// "" (Returns a blank string)\\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// "-sm"\\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\\n @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");\\n}\\n\\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\\n// Makes the @content apply to the given breakpoint and wider.\\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($name, $breakpoints);\\n @if $min {\\n @media (min-width: $min) {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\\n// Makes the @content apply to the given breakpoint and narrower.\\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\\n $max: breakpoint-max($name, $breakpoints);\\n @if $max {\\n @media (max-width: $max) {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Media that spans multiple breakpoint widths.\\n// Makes the @content apply between the min and max breakpoints\\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($lower, $breakpoints);\\n $max: breakpoint-max($upper, $breakpoints);\\n\\n @if $min != null and $max != null {\\n @media (min-width: $min) and (max-width: $max) {\\n @content;\\n }\\n } @else if $max == null {\\n @include media-breakpoint-up($lower, $breakpoints) {\\n @content;\\n }\\n } @else if $min == null {\\n @include media-breakpoint-down($upper, $breakpoints) {\\n @content;\\n }\\n }\\n}\\n\\n// Media between the breakpoint\\\'s minimum and maximum widths.\\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($name, $breakpoints);\\n $next: breakpoint-next($name, $breakpoints);\\n $max: breakpoint-max($next, $breakpoints);\\n\\n @if $min != null and $max != null {\\n @media (min-width: $min) and (max-width: $max) {\\n @content;\\n }\\n } @else if $max == null {\\n @include media-breakpoint-up($name, $breakpoints) {\\n @content;\\n }\\n } @else if $min == null {\\n @include media-breakpoint-down($next, $breakpoints) {\\n @content;\\n }\\n }\\n}\\n\',\'@import "./components/QueryForm";\\n\\n$footer-body-color: lightgray;\\n\\n.user-component .alert {\\n padding-top: 0.375rem;\\n padding-bottom: 0.375rem;\\n font-size: 1rem;\\n margin: 0;\\n}\\n\\nheader {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n}\\n\\nfooter {\\n color: darken($footer-body-color, 30%);\\n\\n .nav {\\n border-bottom: 1px solid darken($footer-body-color, 20%);\\n }\\n .nav-link {\\n color: darken($footer-body-color, 30%) !important;\\n }\\n .nav-link:hover {\\n color: darken($footer-body-color, 40%) !important;\\n }\\n .footer-body {\\n border-top: 1px solid darken($footer-body-color, 10%);\\n background-color: $footer-body-color;\\n min-height: 20rem;\\n }\\n .footer-border {\\n height: 3rem;\\n box-shadow: 0px -5px 7px -5px rgba(0, 0, 0, 0.4) inset;\\n -webkit-box-shadow: 0px -5px 7px -5px rgba(0, 0, 0, 0.4) inset;\\n -moz-box-shadow: 0px -5px 6px -7px rgba(0, 0, 0, 0.4) inset;\\n }\\n}\\n\\n.caosdb-checkbox {\\n .caosdb-checkbox-icon {\\n font-size: 1.3em;\\n }\\n\\n .caosdb-check-box-input {\\n display: none;\\n }\\n\\n cursor: pointer;\\n\\n &.read-only {\\n cursor: auto;\\n }\\n}\\n\\n.color-light-green {\\n color: #b4e600;\\n}\\n\\n.minicard {\\n border: 1px solid red;\\n width: 400px;\\n display: flex;\\n\\n .minicard-title {\\n background-color: red;\\n }\\n}\\n\'],sourceRoot:""}]),t.Z=i},645:function(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,a,o){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l<this.length;l++){var s=this[l][0];null!=s&&(i[s]=!0)}for(var c=0;c<e.length;c++){var u=[].concat(e[c]);r&&i[u[0]]||(void 0!==o&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),a&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=a):u[4]="".concat(a)),t.push(u))}},t}},537:function(e){"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),a="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(a," */");return[t].concat([o]).join("\\n")}return[t].join("\\n")}},143:function(e){"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},391:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,a.default)((function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];var a=null;return t.forEach((function(e){if(null==a){var t=e.apply(void 0,n);null!=t&&(a=t)}})),a}))};var r,a=(r=n(613))&&r.__esModule?r:{default:r};e.exports=t.default},613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,r,a,o,i){var l=a||"<<anonymous>>",s=i||r;if(null==n[r])return t?new Error("Required "+o+" `"+s+"` was not specified in `"+l+"`."):null;for(var c=arguments.length,u=Array(c>6?c-6:0),f=6;f<c;f++)u[f-6]=arguments[f];return e.apply(void 0,[n,r,l,o,s].concat(u))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},703:function(e,t,n){"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},697:function(e,t,n){e.exports=n(703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},448:function(e,t,n){"use strict";var r=n(639),a=n(840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,p={},m={};function h(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function y(e,t,n,r){var a=g.hasOwnProperty(t)?g[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(m,e)||!f.call(p,e)&&(d.test(e)?m[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,b);g[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for("react.element"),E=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),N=Symbol.for("react.context"),F=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),_=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),z=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var T=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var P=Symbol.iterator;function j(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=P&&e[P]||e["@@iterator"])?e:null}var D,R=Object.assign;function M(e){if(void 0===D)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);D=t&&t[1]||""}return"\\n"+D+e}var I=!1;function B(e,t){if(!e||I)return"";I=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&"string"==typeof t.stack){for(var a=t.stack.split("\\n"),o=r.stack.split("\\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{I=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function q(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return B(e.type,!1);case 11:return B(e.type.render,!1);case 1:return B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case k:return"Fragment";case E:return"Portal";case S:return"Profiler";case C:return"StrictMode";case O:return"Suspense";case _:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case N:return(e.displayName||"Context")+".Consumer";case A:return(e._context.displayName||"Context")+".Provider";case F:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case z:t=e._payload,e=e._init;try{return U(e(t))}catch(e){}}return null}function $(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===C?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function G(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Y(e,t){var n=t.checked;return R({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function X(e,t){null!=(t=t.checked)&&y(e,"checked",t,!1)}function Z(e,t){X(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return R({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,fe=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function he(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=he(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(pe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ve=R({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ve[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ye(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xe=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ee=null,ke=null,Ce=null;function Se(e){if(e=ya(e)){if("function"!=typeof Ee)throw Error(o(280));var t=e.stateNode;t&&(t=wa(t),Ee(e.stateNode,e.type,t))}}function Ae(e){ke?Ce?Ce.push(e):Ce=[e]:ke=e}function Ne(){if(ke){var e=ke,t=Ce;if(Ce=ke=null,Se(e),t)for(e=0;e<t.length;e++)Se(t[e])}}function Fe(e,t){return e(t)}function Oe(){}var _e=!1;function Le(e,t,n){if(_e)return e(t,n);_e=!0;try{return Fe(e,t,n)}finally{_e=!1,(null!==ke||null!==Ce)&&(Oe(),Ne())}}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=wa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Te=!1;if(u)try{var Pe={};Object.defineProperty(Pe,"passive",{get:function(){Te=!0}}),window.addEventListener("test",Pe,Pe),window.removeEventListener("test",Pe,Pe)}catch(ue){Te=!1}function je(e,t,n,r,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(e){this.onError(e)}}var De=!1,Re=null,Me=!1,Ie=null,Be={onError:function(e){De=!0,Re=e}};function qe(e,t,n,r,a,o,i,l,s){De=!1,Re=null,je.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function $e(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return He(a),e;if(i===r)return He(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var Ge=a.unstable_scheduleCallback,Qe=a.unstable_cancelCallback,Ye=a.unstable_shouldYield,Ke=a.unstable_requestPaint,Xe=a.unstable_now,Ze=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null,it=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2,ct=64,ut=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=ft(l):0!=(o&=i)&&(r=ft(o))}else 0!=(i=n&~a)?r=ft(i):0!==o&&(r=ft(o));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&0!=(4194240&o)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function ht(){var e=ct;return 0==(4194240&(ct<<=1))&&(ct=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function vt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var yt=0;function xt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var wt,Et,kt,Ct,St,At=!1,Nt=[],Ft=null,Ot=null,_t=null,Lt=new Map,zt=new Map,Tt=[],Pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function jt(e,t){switch(e){case"focusin":case"focusout":Ft=null;break;case"dragenter":case"dragleave":Ot=null;break;case"mouseover":case"mouseout":_t=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":zt.delete(t.pointerId)}}function Dt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&null!==(t=ya(t))&&Et(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Rt(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=$e(n)))return e.blockedOn=t,void St(e.priority,(function(){kt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Yt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ya(n))&&Et(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);xe=r,n.target.dispatchEvent(r),xe=null,t.shift()}return!0}function It(e,t,n){Mt(e)&&n.delete(t)}function Bt(){At=!1,null!==Ft&&Mt(Ft)&&(Ft=null),null!==Ot&&Mt(Ot)&&(Ot=null),null!==_t&&Mt(_t)&&(_t=null),Lt.forEach(It),zt.forEach(It)}function qt(e,t){e.blockedOn===t&&(e.blockedOn=null,At||(At=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return qt(t,e)}if(0<Nt.length){qt(Nt[0],e);for(var n=1;n<Nt.length;n++){var r=Nt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Ft&&qt(Ft,e),null!==Ot&&qt(Ot,e),null!==_t&&qt(_t,e),Lt.forEach(t),zt.forEach(t),n=0;n<Tt.length;n++)(r=Tt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Tt.length&&null===(n=Tt[0]).blockedOn;)Rt(n),null===n.blockedOn&&Tt.shift()}var $t=x.ReactCurrentBatchConfig,Ht=!0;function Wt(e,t,n,r){var a=yt,o=$t.transition;$t.transition=null;try{yt=1,Gt(e,t,n,r)}finally{yt=a,$t.transition=o}}function Vt(e,t,n,r){var a=yt,o=$t.transition;$t.transition=null;try{yt=4,Gt(e,t,n,r)}finally{yt=a,$t.transition=o}}function Gt(e,t,n,r){if(Ht){var a=Yt(e,t,n,r);if(null===a)Hr(e,t,r,Qt,n),jt(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Ft=Dt(Ft,e,t,n,r,a),!0;case"dragenter":return Ot=Dt(Ot,e,t,n,r,a),!0;case"mouseover":return _t=Dt(_t,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Lt.set(o,Dt(Lt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,zt.set(o,Dt(zt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(jt(e,r),4&t&&-1<Pt.indexOf(e)){for(;null!==a;){var o=ya(a);if(null!==o&&wt(o),null===(o=Yt(e,t,n,r))&&Hr(e,t,r,Qt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Qt=null;function Yt(e,t,n,r){if(Qt=null,null!==(e=ba(e=we(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=$e(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Qt=e,null}function Kt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Ze()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Xt=null,Zt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Zt,r=n.length,a="value"in Xt?Xt.value:Xt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return R(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=an(cn),fn=R({},cn,{view:0,detail:0}),dn=an(fn),pn=R({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Sn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=an(pn),hn=an(R({},pn,{dataTransfer:0})),gn=an(R({},fn,{relatedTarget:0})),vn=an(R({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=R({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),yn=an(bn),xn=an(R({},cn,{data:0})),wn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},kn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=kn[e])&&!!t[e]}function Sn(){return Cn}var An=R({},fn,{key:function(e){if(e.key){var t=wn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Sn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Nn=an(An),Fn=an(R({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),On=an(R({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Sn})),_n=an(R({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=R({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),zn=an(Ln),Tn=[9,13,27,32],Pn=u&&"CompositionEvent"in window,jn=null;u&&"documentMode"in document&&(jn=document.documentMode);var Dn=u&&"TextEvent"in window&&!jn,Rn=u&&(!Pn||jn&&8<jn&&11>=jn),Mn=String.fromCharCode(32),In=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Tn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1,$n={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!$n[e.type]:"textarea"===t}function Wn(e,t,n,r){Ae(r),0<(t=Vr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Gn=null;function Qn(e){Mr(e,0)}function Yn(e){if(G(xa(e)))return e}function Kn(e,t){if("change"===e)return t}var Xn=!1;if(u){var Zn;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Zn=Jn}else Zn=!1;Xn=Zn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),Gn=Vn=null)}function nr(e){if("value"===e.propertyName&&Yn(Gn)){var t=[];Wn(t,Gn,e,we(e)),Le(Qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Gn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Gn)}function or(e,t){if("click"===e)return Yn(t)}function ir(e,t){if("input"===e||"change"===e)return Yn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!f.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=ur(n,o);var i=ur(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hr=u&&"documentMode"in document&&11>=document.documentMode,gr=null,vr=null,br=null,yr=!1;function xr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;yr||null==gr||gr!==Q(r)||(r="selectionStart"in(r=gr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Vr(vr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Er={animationend:wr("Animation","AnimationEnd"),animationiteration:wr("Animation","AnimationIteration"),animationstart:wr("Animation","AnimationStart"),transitionend:wr("Transition","TransitionEnd")},kr={},Cr={};function Sr(e){if(kr[e])return kr[e];if(!Er[e])return e;var t,n=Er[e];for(t in n)if(n.hasOwnProperty(t)&&t in Cr)return kr[e]=n[t];return e}u&&(Cr=document.createElement("div").style,"AnimationEvent"in window||(delete Er.animationend.animation,delete Er.animationiteration.animation,delete Er.animationstart.animation),"TransitionEvent"in window||delete Er.transitionend.transition);var Ar=Sr("animationend"),Nr=Sr("animationiteration"),Fr=Sr("animationstart"),Or=Sr("transitionend"),_r=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function zr(e,t){_r.set(e,t),s(t,[e])}for(var Tr=0;Tr<Lr.length;Tr++){var Pr=Lr[Tr];zr(Pr.toLowerCase(),"on"+(Pr[0].toUpperCase()+Pr.slice(1)))}zr(Ar,"onAnimationEnd"),zr(Nr,"onAnimationIteration"),zr(Fr,"onAnimationStart"),zr("dblclick","onDoubleClick"),zr("focusin","onFocus"),zr("focusout","onBlur"),zr(Or,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var jr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Dr=new Set("cancel close invalid load scroll toggle".split(" ").concat(jr));function Rr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,c){if(qe.apply(this,arguments),De){if(!De)throw Error(o(198));var u=Re;De=!1,Re=null,Me||(Me=!0,Ie=u)}}(r,t,void 0,e),e.currentTarget=null}function Mr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Rr(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Rr(a,l,c),o=s}}}if(Me)throw e=Ie,Me=!1,Ie=null,e}function Ir(e,t){var n=t[ha];void 0===n&&(n=t[ha]=new Set);var r=e+"__bubble";n.has(r)||($r(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),$r(n,e,r,t)}var qr="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[qr]){e[qr]=!0,i.forEach((function(t){"selectionchange"!==t&&(Dr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[qr]||(t[qr]=!0,Br("selectionchange",!1,t))}}function $r(e,t,n,r){switch(Kt(t)){case 1:var a=Wt;break;case 4:a=Vt;break;default:a=Gt}n=a.bind(null,t,n,e),a=void 0,!Te||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=o,a=we(n),i=[];e:{var l=_r.get(e);if(void 0!==l){var s=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=Nn;break;case"focusin":c="focus",s=gn;break;case"focusout":c="blur",s=gn;break;case"beforeblur":case"afterblur":s=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=On;break;case Ar:case Nr:case Fr:s=vn;break;case Or:s=_n;break;case"scroll":s=dn;break;case"wheel":s=zn;break;case"copy":case"cut":case"paste":s=yn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Fn}var u=0!=(4&t),f=!u&&"scroll"===e,d=u?null!==l?l+"Capture":null:l;u=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==d&&null!=(h=ze(m,d))&&u.push(Wr(m,h,p))),f)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===xe||!(c=n.relatedTarget||n.fromElement)||!ba(c)&&!c[ma])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?ba(c):null)&&(c!==(f=Ue(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=mn,h="onMouseLeave",d="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Fn,h="onPointerLeave",d="onPointerEnter",m="pointer"),f=null==s?l:xa(s),p=null==c?l:xa(c),(l=new u(h,m+"leave",s,n,a)).target=f,l.relatedTarget=p,h=null,ba(a)===r&&((u=new u(d,m+"enter",c,n,a)).target=p,u.relatedTarget=f,h=u),f=h,s&&c)e:{for(d=c,m=0,p=u=s;p;p=Gr(p))m++;for(p=0,h=d;h;h=Gr(h))p++;for(;0<m-p;)u=Gr(u),m--;for(;0<p-m;)d=Gr(d),p--;for(;m--;){if(u===d||null!==d&&u===d.alternate)break e;u=Gr(u),d=Gr(d)}u=null}else u=null;null!==s&&Qr(i,l,s,u,!1),null!==c&&null!==f&&Qr(i,f,c,u,!0)}if("select"===(s=(l=r?xa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Hn(l))if(Xn)g=ir;else{g=ar;var v=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=or);switch(g&&(g=g(e,r))?Wn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ee(l,"number",l.value)),v=r?xa(r):window,e){case"focusin":(Hn(v)||"true"===v.contentEditable)&&(gr=v,vr=r,br=null);break;case"focusout":br=vr=gr=null;break;case"mousedown":yr=!0;break;case"contextmenu":case"mouseup":case"dragend":yr=!1,xr(i,n,a);break;case"selectionchange":if(hr)break;case"keydown":case"keyup":xr(i,n,a)}var b;if(Pn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Un?Bn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Rn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==y?"onCompositionEnd"===y&&Un&&(b=en()):(Zt="value"in(Xt=a)?Xt.value:Xt.textContent,Un=!0)),0<(v=Vr(r,y)).length&&(y=new xn(y,e,null,n,a),i.push({event:y,listeners:v}),(b||null!==(b=qn(n)))&&(y.data=b))),(b=Dn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(In=!0,Mn);case"textInput":return(e=t.data)===Mn&&In?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!Pn&&Bn(e,t)?(e=en(),Jt=Zt=Xt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Rn&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(r=Vr(r,"onBeforeInput")).length&&(a=new xn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b)}Mr(i,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=ze(e,n))&&r.unshift(Wr(e,o,a)),null!=(o=ze(e,t))&&r.push(Wr(e,o,a))),e=e.return}return r}function Gr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Qr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=ze(n,o))&&i.unshift(Wr(n,s,l)):a||null!=(s=ze(n,o))&&i.push(Wr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Yr=/\\r\\n?/g,Kr=/\\u0000|\\uFFFD/g;function Xr(e){return("string"==typeof e?e:""+e).replace(Yr,"\\n").replace(Kr,"")}function Zr(e,t,n){if(t=Xr(t),Xr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout((function(){throw e}))}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ca(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ua(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var fa=Math.random().toString(36).slice(2),da="__reactFiber$"+fa,pa="__reactProps$"+fa,ma="__reactContainer$"+fa,ha="__reactEvents$"+fa,ga="__reactListeners$"+fa,va="__reactHandles$"+fa;function ba(e){var t=e[da];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ma]||n[da]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ua(e);null!==e;){if(n=e[da])return n;e=ua(e)}return t}n=(e=n).parentNode}return null}function ya(e){return!(e=e[da]||e[ma])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function xa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function wa(e){return e[pa]||null}var Ea=[],ka=-1;function Ca(e){return{current:e}}function Sa(e){0>ka||(e.current=Ea[ka],Ea[ka]=null,ka--)}function Aa(e,t){ka++,Ea[ka]=e.current,e.current=t}var Na={},Fa=Ca(Na),Oa=Ca(!1),_a=Na;function La(e,t){var n=e.type.contextTypes;if(!n)return Na;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function za(e){return null!=e.childContextTypes}function Ta(){Sa(Oa),Sa(Fa)}function Pa(e,t,n){if(Fa.current!==Na)throw Error(o(168));Aa(Fa,t),Aa(Oa,n)}function ja(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,$(e)||"Unknown",a));return R({},n,r)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Na,_a=Fa.current,Aa(Fa,e),Aa(Oa,Oa.current),!0}function Ra(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=ja(e,t,_a),r.__reactInternalMemoizedMergedChildContext=e,Sa(Oa),Sa(Fa),Aa(Fa,e)):Sa(Oa),Aa(Oa,n)}var Ma=null,Ia=!1,Ba=!1;function qa(e){null===Ma?Ma=[e]:Ma.push(e)}function Ua(){if(!Ba&&null!==Ma){Ba=!0;var e=0,t=yt;try{var n=Ma;for(yt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Ma=null,Ia=!1}catch(t){throw null!==Ma&&(Ma=Ma.slice(e+1)),Ge(Je,Ua),t}finally{yt=t,Ba=!1}}return null}var $a=[],Ha=0,Wa=null,Va=0,Ga=[],Qa=0,Ya=null,Ka=1,Xa="";function Za(e,t){$a[Ha++]=Va,$a[Ha++]=Wa,Wa=e,Va=t}function Ja(e,t,n){Ga[Qa++]=Ka,Ga[Qa++]=Xa,Ga[Qa++]=Ya,Ya=e;var r=Ka;e=Xa;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Ka=1<<32-it(t)+a|n<<a|r,Xa=o+e}else Ka=1<<o|n<<a|r,Xa=e}function eo(e){null!==e.return&&(Za(e,1),Ja(e,1,0))}function to(e){for(;e===Wa;)Wa=$a[--Ha],$a[Ha]=null,Va=$a[--Ha],$a[Ha]=null;for(;e===Ya;)Ya=Ga[--Qa],Ga[Qa]=null,Xa=Ga[--Qa],Ga[Qa]=null,Ka=Ga[--Qa],Ga[Qa]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=zc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ca(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ya?{id:Ka,overflow:Xa}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=zc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function co(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ca(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function uo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function fo(e){if(e!==no)return!1;if(!ao)return uo(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw po(),Error(o(418));for(;t;)io(e,t),t=ca(t.nextSibling)}if(uo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ca(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ca(e.stateNode.nextSibling):null;return!0}function po(){for(var e=ro;e;)e=ca(e.nextSibling)}function mo(){ro=no=null,ao=!1}function ho(e){null===oo?oo=[e]:oo.push(e)}var go=x.ReactCurrentBatchConfig;function vo(e,t){if(e&&e.defaultProps){for(var n in t=R({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var bo=Ca(null),yo=null,xo=null,wo=null;function Eo(){wo=xo=yo=null}function ko(e){var t=bo.current;Sa(bo),e._currentValue=t}function Co(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function So(e,t){yo=e,wo=xo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(xl=!0),e.firstContext=null)}function Ao(e){var t=e._currentValue;if(wo!==e)if(e={context:e,memoizedValue:t,next:null},null===xo){if(null===yo)throw Error(o(308));xo=e,yo.dependencies={lanes:0,firstContext:e}}else xo=xo.next=e;return t}var No=null;function Fo(e){null===No?No=[e]:No.push(e)}function Oo(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,Fo(t)):(n.next=a.next,a.next=n),t.interleaved=n,_o(e,r)}function _o(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Lo=!1;function zo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function To(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Po(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function jo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Os)){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,_o(e,n)}return null===(a=r.interleaved)?(t.next=t,Fo(r)):(t.next=a.next,a.next=t),r.interleaved=t,_o(e,n)}function Do(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Ro(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Mo(e,t,n,r){var a=e.updateQueue;Lo=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?o=c:i.next=c,i=s;var u=e.alternate;null!==u&&(l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s)}if(null!==o){var f=a.baseState;for(i=0,u=c=s=null,l=o;;){var d=l.lane,p=l.eventTime;if((r&d)===d){null!==u&&(u=u.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,h=l;switch(d=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,d);break e}f=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(d="function"==typeof(m=h.payload)?m.call(p,f,d):m))break e;f=R({},f,d);break e;case 2:Lo=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(d=a.effects)?a.effects=[l]:d.push(l))}else p={eventTime:p,lane:d,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=p,s=f):u=u.next=p,i|=d;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(d=l).next,d.next=null,a.lastBaseUpdate=d,a.shared.pending=null}}if(null===u&&(s=f),a.baseState=s,a.firstBaseUpdate=c,a.lastBaseUpdate=u,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Rs|=i,e.lanes=i,e.memoizedState=f}}function Io(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Bo=(new r.Component).refs;function qo(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:R({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Uo={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=tc(),a=nc(e),o=Po(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=jo(e,o,a))&&(rc(t,e,a,r),Do(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=tc(),a=nc(e),o=Po(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=jo(e,o,a))&&(rc(t,e,a,r),Do(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=tc(),r=nc(e),a=Po(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=jo(e,a,r))&&(rc(t,e,r,n),Do(t,e,r))}};function $o(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!(t.prototype&&t.prototype.isPureReactComponent&&sr(n,r)&&sr(a,o))}function Ho(e,t,n){var r=!1,a=Na,o=t.contextType;return"object"==typeof o&&null!==o?o=Ao(o):(a=za(t)?_a:Fa.current,o=(r=null!=(r=t.contextTypes))?La(e,a):Na),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Uo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function Wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Uo.enqueueReplaceState(t,t.state,null)}function Vo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=Bo,zo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=Ao(o):(o=za(t)?_a:Fa.current,a.context=La(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(qo(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&Uo.enqueueReplaceState(a,a.state,null),Mo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function Go(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;t===Bo&&(t=a.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Qo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Yo(e){return(0,e._init)(e._payload)}function Ko(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Pc(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Mc(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){var o=n.type;return o===k?f(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===z&&Yo(o)===t.type)?((r=a(t,n.props)).ref=Go(e,t,n),r.return=e,r):((r=jc(n.type,n.key,n.props,null,e.mode,r)).ref=Go(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ic(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function f(e,t,n,r,o){return null===t||7!==t.tag?((t=Dc(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Mc(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case w:return(n=jc(t.type,t.key,t.props,null,e.mode,n)).ref=Go(e,null,t),n.return=e,n;case E:return(t=Ic(t,e.mode,n)).return=e,t;case z:return d(e,(0,t._init)(t._payload),n)}if(te(t)||j(t))return(t=Dc(t,e.mode,n,null)).return=e,t;Qo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case w:return n.key===a?c(e,t,n,r):null;case E:return n.key===a?u(e,t,n,r):null;case z:return p(e,t,(a=n._init)(n._payload),r)}if(te(n)||j(n))return null!==a?null:f(e,t,n,r,null);Qo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case w:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case E:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case z:return m(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||j(r))return f(t,e=e.get(n)||null,r,a,null);Qo(t,r)}return null}function h(a,o,l,s){for(var c=null,u=null,f=o,h=o=0,g=null;null!==f&&h<l.length;h++){f.index>h?(g=f,f=null):g=f.sibling;var v=p(a,f,l[h],s);if(null===v){null===f&&(f=g);break}e&&f&&null===v.alternate&&t(a,f),o=i(v,o,h),null===u?c=v:u.sibling=v,u=v,f=g}if(h===l.length)return n(a,f),ao&&Za(a,h),c;if(null===f){for(;h<l.length;h++)null!==(f=d(a,l[h],s))&&(o=i(f,o,h),null===u?c=f:u.sibling=f,u=f);return ao&&Za(a,h),c}for(f=r(a,f);h<l.length;h++)null!==(g=m(f,a,h,l[h],s))&&(e&&null!==g.alternate&&f.delete(null===g.key?h:g.key),o=i(g,o,h),null===u?c=g:u.sibling=g,u=g);return e&&f.forEach((function(e){return t(a,e)})),ao&&Za(a,h),c}function g(a,l,s,c){var u=j(s);if("function"!=typeof u)throw Error(o(150));if(null==(s=u.call(s)))throw Error(o(151));for(var f=u=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(a,h,b.value,c);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=i(y,l,g),null===f?u=y:f.sibling=y,f=y,h=v}if(b.done)return n(a,h),ao&&Za(a,g),u;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=d(a,b.value,c))&&(l=i(b,l,g),null===f?u=b:f.sibling=b,f=b);return ao&&Za(a,g),u}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,c))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=i(b,l,g),null===f?u=b:f.sibling=b,f=b);return e&&h.forEach((function(e){return t(a,e)})),ao&&Za(a,g),u}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===k&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case w:e:{for(var c=i.key,u=o;null!==u;){if(u.key===c){if((c=i.type)===k){if(7===u.tag){n(r,u.sibling),(o=a(u,i.props.children)).return=r,r=o;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===z&&Yo(c)===u.type){n(r,u.sibling),(o=a(u,i.props)).ref=Go(r,u,i),o.return=r,r=o;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===k?((o=Dc(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=jc(i.type,i.key,i.props,null,r.mode,s)).ref=Go(r,o,i),s.return=r,r=s)}return l(r);case E:e:{for(u=i.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=Ic(i,r.mode,s)).return=r,r=o}return l(r);case z:return e(r,o,(u=i._init)(i._payload),s)}if(te(i))return h(r,o,i,s);if(j(i))return g(r,o,i,s);Qo(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Mc(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var Xo=Ko(!0),Zo=Ko(!1),Jo={},ei=Ca(Jo),ti=Ca(Jo),ni=Ca(Jo);function ri(e){if(e===Jo)throw Error(o(174));return e}function ai(e,t){switch(Aa(ni,t),Aa(ti,e),Aa(ei,Jo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Sa(ei),Aa(ei,t)}function oi(){Sa(ei),Sa(ti),Sa(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=se(t,e.type);t!==n&&(Aa(ti,e),Aa(ei,n))}function li(e){ti.current===e&&(Sa(ei),Sa(ti))}var si=Ca(0);function ci(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ui=[];function fi(){for(var e=0;e<ui.length;e++)ui[e]._workInProgressVersionPrimary=null;ui.length=0}var di=x.ReactCurrentDispatcher,pi=x.ReactCurrentBatchConfig,mi=0,hi=null,gi=null,vi=null,bi=!1,yi=!1,xi=0,wi=0;function Ei(){throw Error(o(321))}function ki(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Ci(e,t,n,r,a,i){if(mi=i,hi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,di.current=null===e||null===e.memoizedState?ll:sl,e=n(r,a),yi){i=0;do{if(yi=!1,xi=0,25<=i)throw Error(o(301));i+=1,vi=gi=null,t.updateQueue=null,di.current=cl,e=n(r,a)}while(yi)}if(di.current=il,t=null!==gi&&null!==gi.next,mi=0,vi=gi=hi=null,bi=!1,t)throw Error(o(300));return e}function Si(){var e=0!==xi;return xi=0,e}function Ai(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===vi?hi.memoizedState=vi=e:vi=vi.next=e,vi}function Ni(){if(null===gi){var e=hi.alternate;e=null!==e?e.memoizedState:null}else e=gi.next;var t=null===vi?hi.memoizedState:vi.next;if(null!==t)vi=t,gi=e;else{if(null===e)throw Error(o(310));e={memoizedState:(gi=e).memoizedState,baseState:gi.baseState,baseQueue:gi.baseQueue,queue:gi.queue,next:null},null===vi?hi.memoizedState=vi=e:vi=vi.next=e}return vi}function Fi(e,t){return"function"==typeof t?t(e):t}function Oi(e){var t=Ni(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=gi,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,c=null,u=i;do{var f=u.lane;if((mi&f)===f)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var d={lane:f,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(s=c=d,l=r):c=c.next=d,hi.lanes|=f,Rs|=f}u=u.next}while(null!==u&&u!==i);null===c?l=r:c.next=s,lr(r,t.memoizedState)||(xl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,hi.lanes|=i,Rs|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function _i(e){var t=Ni(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(xl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Li(){}function zi(e,t){var n=hi,r=Ni(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,xl=!0),r=r.queue,Hi(ji.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==vi&&1&vi.memoizedState.tag){if(n.flags|=2048,Ii(9,Pi.bind(null,n,r,a,t),void 0,null),null===_s)throw Error(o(349));0!=(30&mi)||Ti(n,t,a)}return a}function Ti(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Pi(e,t,n,r){t.value=n,t.getSnapshot=r,Di(t)&&Ri(e)}function ji(e,t,n){return n((function(){Di(t)&&Ri(e)}))}function Di(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(e){return!0}}function Ri(e){var t=_o(e,1);null!==t&&rc(t,e,1,-1)}function Mi(e){var t=Ai();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Fi,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,hi,e),[t.memoizedState,e]}function Ii(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Bi(){return Ni().memoizedState}function qi(e,t,n,r){var a=Ai();hi.flags|=e,a.memoizedState=Ii(1|t,n,void 0,void 0===r?null:r)}function Ui(e,t,n,r){var a=Ni();r=void 0===r?null:r;var o=void 0;if(null!==gi){var i=gi.memoizedState;if(o=i.destroy,null!==r&&ki(r,i.deps))return void(a.memoizedState=Ii(t,n,o,r))}hi.flags|=e,a.memoizedState=Ii(1|t,n,o,r)}function $i(e,t){return qi(8390656,8,e,t)}function Hi(e,t){return Ui(2048,8,e,t)}function Wi(e,t){return Ui(4,2,e,t)}function Vi(e,t){return Ui(4,4,e,t)}function Gi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Qi(e,t,n){return n=null!=n?n.concat([e]):null,Ui(4,4,Gi.bind(null,t,e),n)}function Yi(){}function Ki(e,t){var n=Ni();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ki(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Xi(e,t){var n=Ni();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ki(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Zi(e,t,n){return 0==(21&mi)?(e.baseState&&(e.baseState=!1,xl=!0),e.memoizedState=n):(lr(n,t)||(n=ht(),hi.lanes|=n,Rs|=n,e.baseState=!0),t)}function Ji(e,t){var n=yt;yt=0!==n&&4>n?n:4,e(!0);var r=pi.transition;pi.transition={};try{e(!1),t()}finally{yt=n,pi.transition=r}}function el(){return Ni().memoizedState}function tl(e,t,n){var r=nc(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e)?al(t,n):null!==(n=Oo(e,t,n,r))&&(rc(n,e,r,tc()),ol(n,t,r))}function nl(e,t,n){var r=nc(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))al(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,Fo(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(e){}null!==(n=Oo(e,t,a,r))&&(rc(n,e,r,a=tc()),ol(n,t,r))}}function rl(e){var t=e.alternate;return e===hi||null!==t&&t===hi}function al(e,t){yi=bi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ol(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var il={readContext:Ao,useCallback:Ei,useContext:Ei,useEffect:Ei,useImperativeHandle:Ei,useInsertionEffect:Ei,useLayoutEffect:Ei,useMemo:Ei,useReducer:Ei,useRef:Ei,useState:Ei,useDebugValue:Ei,useDeferredValue:Ei,useTransition:Ei,useMutableSource:Ei,useSyncExternalStore:Ei,useId:Ei,unstable_isNewReconciler:!1},ll={readContext:Ao,useCallback:function(e,t){return Ai().memoizedState=[e,void 0===t?null:t],e},useContext:Ao,useEffect:$i,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,qi(4194308,4,Gi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qi(4194308,4,e,t)},useInsertionEffect:function(e,t){return qi(4,2,e,t)},useMemo:function(e,t){var n=Ai();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ai();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,hi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ai().memoizedState=e},useState:Mi,useDebugValue:Yi,useDeferredValue:function(e){return Ai().memoizedState=e},useTransition:function(){var e=Mi(!1),t=e[0];return e=Ji.bind(null,e[1]),Ai().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=hi,a=Ai();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===_s)throw Error(o(349));0!=(30&mi)||Ti(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,$i(ji.bind(null,r,i,e),[e]),r.flags|=2048,Ii(9,Pi.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ai(),t=_s.identifierPrefix;if(ao){var n=Xa;t=":"+t+"R"+(n=(Ka&~(1<<32-it(Ka)-1)).toString(32)+n),0<(n=xi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=wi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},sl={readContext:Ao,useCallback:Ki,useContext:Ao,useEffect:Hi,useImperativeHandle:Qi,useInsertionEffect:Wi,useLayoutEffect:Vi,useMemo:Xi,useReducer:Oi,useRef:Bi,useState:function(){return Oi(Fi)},useDebugValue:Yi,useDeferredValue:function(e){return Zi(Ni(),gi.memoizedState,e)},useTransition:function(){return[Oi(Fi)[0],Ni().memoizedState]},useMutableSource:Li,useSyncExternalStore:zi,useId:el,unstable_isNewReconciler:!1},cl={readContext:Ao,useCallback:Ki,useContext:Ao,useEffect:Hi,useImperativeHandle:Qi,useInsertionEffect:Wi,useLayoutEffect:Vi,useMemo:Xi,useReducer:_i,useRef:Bi,useState:function(){return _i(Fi)},useDebugValue:Yi,useDeferredValue:function(e){var t=Ni();return null===gi?t.memoizedState=e:Zi(t,gi.memoizedState,e)},useTransition:function(){return[_i(Fi)[0],Ni().memoizedState]},useMutableSource:Li,useSyncExternalStore:zi,useId:el,unstable_isNewReconciler:!1};function ul(e,t){try{var n="",r=t;do{n+=q(r),r=r.return}while(r);var a=n}catch(e){a="\\nError generating stack: "+e.message+"\\n"+e.stack}return{value:e,source:t,stack:a,digest:null}}function fl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function ml(e,t,n){(n=Po(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ws||(Ws=!0,Vs=r),dl(0,t)},n}function hl(e,t,n){(n=Po(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){dl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Gs?Gs=new Set([this]):Gs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=Ac.bind(null,e,t,n),t.then(e,e))}function vl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function bl(e,t,n,r,a){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Po(-1,1)).tag=2,jo(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=a,e)}var yl=x.ReactCurrentOwner,xl=!1;function wl(e,t,n,r){t.child=null===e?Zo(t,null,n,r):Xo(t,e.child,n,r)}function El(e,t,n,r,a){n=n.render;var o=t.ref;return So(t,a),r=Ci(e,t,n,r,o,a),n=Si(),null===e||xl?(ao&&n&&eo(t),t.flags|=1,wl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Wl(e,t,a))}function kl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Tc(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=jc(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Cl(e,t,o,r,a))}if(o=e.child,0==(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Wl(e,t,a)}return t.flags|=1,(e=Pc(o,r)).ref=t.ref,e.return=t,t.child=e}function Cl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(xl=!1,t.pendingProps=r=o,0==(e.lanes&a))return t.lanes=e.lanes,Wl(e,t,a);0!=(131072&e.flags)&&(xl=!0)}}return Nl(e,t,n,r,a)}function Sl(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Aa(Ps,Ts),Ts|=n;else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Aa(Ps,Ts),Ts|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Aa(Ps,Ts),Ts|=r}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Aa(Ps,Ts),Ts|=r;return wl(e,t,a,n),t.child}function Al(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Nl(e,t,n,r,a){var o=za(n)?_a:Fa.current;return o=La(t,o),So(t,a),n=Ci(e,t,n,r,o,a),r=Si(),null===e||xl?(ao&&r&&eo(t),t.flags|=1,wl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Wl(e,t,a))}function Fl(e,t,n,r,a){if(za(n)){var o=!0;Da(t)}else o=!1;if(So(t,a),null===t.stateNode)Hl(e,t),Ho(t,n,r),Vo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;c="object"==typeof c&&null!==c?Ao(c):La(t,c=za(n)?_a:Fa.current);var u=n.getDerivedStateFromProps,f="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;f||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&Wo(t,i,r,c),Lo=!1;var d=t.memoizedState;i.state=d,Mo(t,r,i,a),s=t.memoizedState,l!==r||d!==s||Oa.current||Lo?("function"==typeof u&&(qo(t,n,u,r),s=t.memoizedState),(l=Lo||$o(t,n,l,r,d,s,c))?(f||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,To(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:vo(t.type,l),i.props=c,f=t.pendingProps,d=i.context,s="object"==typeof(s=n.contextType)&&null!==s?Ao(s):La(t,s=za(n)?_a:Fa.current);var p=n.getDerivedStateFromProps;(u="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==f||d!==s)&&Wo(t,i,r,s),Lo=!1,d=t.memoizedState,i.state=d,Mo(t,r,i,a);var m=t.memoizedState;l!==f||d!==m||Oa.current||Lo?("function"==typeof p&&(qo(t,n,p,r),m=t.memoizedState),(c=Lo||$o(t,n,c,r,d,m,s)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return Ol(e,t,n,r,o,a)}function Ol(e,t,n,r,a,o){Al(e,t);var i=0!=(128&t.flags);if(!r&&!i)return a&&Ra(t,n,!1),Wl(e,t,o);r=t.stateNode,yl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Xo(t,e.child,null,o),t.child=Xo(t,null,l,o)):wl(e,t,l,o),t.memoizedState=r.state,a&&Ra(t,n,!0),t.child}function _l(e){var t=e.stateNode;t.pendingContext?Pa(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Pa(0,t.context,!1),ai(e,t.containerInfo)}function Ll(e,t,n,r,a){return mo(),ho(a),t.flags|=256,wl(e,t,n,r),t.child}var zl,Tl,Pl,jl,Dl={dehydrated:null,treeContext:null,retryLane:0};function Rl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ml(e,t,n){var r,a=t.pendingProps,i=si.current,l=!1,s=0!=(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&0!=(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Aa(si,1&i),null===e)return co(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},0==(1&a)&&null!==l?(l.childLanes=0,l.pendingProps=s):l=Rc(s,a,0,null),e=Dc(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Rl(n),t.memoizedState=Dl,e):Il(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,Bl(e,t,l,r=fl(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Rc({mode:"visible",children:r.children},a,0,null),(i=Dc(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&t.mode)&&Xo(t,e.child,null,l),t.child.memoizedState=Rl(l),t.memoizedState=Dl,i);if(0==(1&t.mode))return Bl(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,Bl(e,t,l,r=fl(i=Error(o(419)),r,void 0))}if(s=0!=(l&e.childLanes),xl||s){if(null!==(r=_s)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!=(a&(r.suspendedLanes|l))?0:a)&&a!==i.retryLane&&(i.retryLane=a,_o(e,a),rc(r,e,a,-1))}return gc(),Bl(e,t,l,r=fl(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=Fc.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ca(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Ga[Qa++]=Ka,Ga[Qa++]=Xa,Ga[Qa++]=Ya,Ka=e.id,Xa=e.overflow,Ya=t),(t=Il(t,r.children)).flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:a.children};return 0==(1&s)&&t.child!==i?((a=t.child).childLanes=0,a.pendingProps=c,t.deletions=null):(a=Pc(i,c)).subtreeFlags=14680064&i.subtreeFlags,null!==r?l=Pc(r,l):(l=Dc(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Rl(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Dl,a}return e=(l=e.child).sibling,a=Pc(l,{mode:"visible",children:a.children}),0==(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Il(e,t){return(t=Rc({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bl(e,t,n,r){return null!==r&&ho(r),Xo(t,e.child,null,n),(e=Il(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function ql(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Co(e.return,t,n)}function Ul(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function $l(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(wl(e,t,r.children,n),0!=(2&(r=si.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ql(e,n,t);else if(19===e.tag)ql(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Aa(si,r),0==(1&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ci(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Ul(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ci(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Ul(t,!0,n,null,o);break;case"together":Ul(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Hl(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Wl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Rs|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Pc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Pc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Vl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Gl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ql(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Gl(t),null;case 1:case 17:return za(t.type)&&Ta(),Gl(t),null;case 3:return r=t.stateNode,oi(),Sa(Oa),Sa(Fa),fi(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fo(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==oo&&(lc(oo),oo=null))),Tl(e,t),Gl(t),null;case 5:li(t);var a=ri(ni.current);if(n=t.type,null!==e&&null!=t.stateNode)Pl(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Gl(t),null}if(e=ri(ei.current),fo(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[da]=t,r[pa]=i,e=0!=(1&t.mode),n){case"dialog":Ir("cancel",r),Ir("close",r);break;case"iframe":case"object":case"embed":Ir("load",r);break;case"video":case"audio":for(a=0;a<jr.length;a++)Ir(jr[a],r);break;case"source":Ir("error",r);break;case"img":case"image":case"link":Ir("error",r),Ir("load",r);break;case"details":Ir("toggle",r);break;case"input":K(r,i),Ir("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Ir("invalid",r);break;case"textarea":ae(r,i),Ir("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var c=i[s];"children"===s?"string"==typeof c?r.textContent!==c&&(!0!==i.suppressHydrationWarning&&Zr(r.textContent,c,e),a=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(!0!==i.suppressHydrationWarning&&Zr(r.textContent,c,e),a=["children",""+c]):l.hasOwnProperty(s)&&null!=c&&"onScroll"===s&&Ir("scroll",r)}switch(n){case"input":V(r),J(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[da]=t,e[pa]=r,zl(e,t,!1,!1),t.stateNode=e;e:{switch(s=ye(n,r),n){case"dialog":Ir("cancel",e),Ir("close",e),a=r;break;case"iframe":case"object":case"embed":Ir("load",e),a=r;break;case"video":case"audio":for(a=0;a<jr.length;a++)Ir(jr[a],e);a=r;break;case"source":Ir("error",e),a=r;break;case"img":case"image":case"link":Ir("error",e),Ir("load",e),a=r;break;case"details":Ir("toggle",e),a=r;break;case"input":K(e,r),a=Y(e,r),Ir("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=R({},r,{value:void 0}),Ir("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),Ir("invalid",e)}for(i in be(n,a),c=a)if(c.hasOwnProperty(i)){var u=c[i];"style"===i?ge(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&fe(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&de(e,u):"number"==typeof u&&de(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=u&&"onScroll"===i&&Ir("scroll",e):null!=u&&y(e,i,u,s))}switch(n){case"input":V(e),J(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Gl(t),null;case 6:if(e&&null!=t.stateNode)jl(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=ri(ni.current),ri(ei.current),fo(t)){if(r=t.stateNode,n=t.memoizedProps,r[da]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Zr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Zr(r.nodeValue,n,0!=(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[da]=t,t.stateNode=r}return Gl(t),null;case 13:if(Sa(si),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&0!=(1&t.mode)&&0==(128&t.flags))po(),mo(),t.flags|=98560,i=!1;else if(i=fo(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[da]=t}else mo(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Gl(t),i=!1}else null!==oo&&(lc(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&si.current)?0===js&&(js=3):gc())),null!==t.updateQueue&&(t.flags|=4),Gl(t),null);case 4:return oi(),Tl(e,t),null===e&&Ur(t.stateNode.containerInfo),Gl(t),null;case 10:return ko(t.type._context),Gl(t),null;case 19:if(Sa(si),null===(i=t.memoizedState))return Gl(t),null;if(r=0!=(128&t.flags),null===(s=i.rendering))if(r)Vl(i,!1);else{if(0!==js||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(s=ci(e))){for(t.flags|=128,Vl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Aa(si,1&si.current|2),t.child}e=e.sibling}null!==i.tail&&Xe()>$s&&(t.flags|=128,r=!0,Vl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ci(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Vl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return Gl(t),null}else 2*Xe()-i.renderingStartTime>$s&&1073741824!==n&&(t.flags|=128,r=!0,Vl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Xe(),t.sibling=null,n=si.current,Aa(si,r?1&n|2:1&n),t):(Gl(t),null);case 22:case 23:return dc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&Ts)&&(Gl(t),6&t.subtreeFlags&&(t.flags|=8192)):Gl(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Yl(e,t){switch(to(t),t.tag){case 1:return za(t.type)&&Ta(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return oi(),Sa(Oa),Sa(Fa),fi(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return li(t),null;case 13:if(Sa(si),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));mo()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Sa(si),null;case 4:return oi(),null;case 10:return ko(t.type._context),null;case 22:case 23:return dc(),null;default:return null}}zl=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Tl=function(){},Pl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,ri(ei.current);var o,i=null;switch(n){case"input":a=Y(e,a),r=Y(e,r),i=[];break;case"select":a=R({},a,{value:void 0}),r=R({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(u in be(n,r),n=null,a)if(!r.hasOwnProperty(u)&&a.hasOwnProperty(u)&&null!=a[u])if("style"===u){var s=a[u];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(l.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(s=null!=a?a[u]:void 0,r.hasOwnProperty(u)&&c!==s&&(null!=c||null!=s))if("style"===u)if(s){for(o in s)!s.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&s[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(l.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&Ir("scroll",e),i||s===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},jl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Xl=!1,Zl="function"==typeof WeakSet?WeakSet:Set,Jl=null;function es(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){Sc(e,t,n)}else n.current=null}function ts(e,t,n){try{n()}catch(n){Sc(e,t,n)}}var ns=!1;function rs(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&ts(t,n,o)}a=a.next}while(a!==r)}}function as(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function is(e){var t=e.alternate;null!==t&&(e.alternate=null,is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[da],delete t[pa],delete t[ha],delete t[ga],delete t[va]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ls(e){return 5===e.tag||3===e.tag||4===e.tag}function ss(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||ls(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(cs(e,t,n),e=e.sibling;null!==e;)cs(e,t,n),e=e.sibling}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}var fs=null,ds=!1;function ps(e,t,n){for(n=n.child;null!==n;)ms(e,t,n),n=n.sibling}function ms(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(e){}switch(n.tag){case 5:Xl||es(n,t);case 6:var r=fs,a=ds;fs=null,ps(e,t,n),ds=a,null!==(fs=r)&&(ds?(e=fs,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):fs.removeChild(n.stateNode));break;case 18:null!==fs&&(ds?(e=fs,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(fs,n.stateNode));break;case 4:r=fs,a=ds,fs=n.stateNode.containerInfo,ds=!0,ps(e,t,n),fs=r,ds=a;break;case 0:case 11:case 14:case 15:if(!Xl&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(0!=(2&o)||0!=(4&o))&&ts(n,t,i),a=a.next}while(a!==r)}ps(e,t,n);break;case 1:if(!Xl&&(es(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Sc(n,t,e)}ps(e,t,n);break;case 21:ps(e,t,n);break;case 22:1&n.mode?(Xl=(r=Xl)||null!==n.memoizedState,ps(e,t,n),Xl=r):ps(e,t,n);break;default:ps(e,t,n)}}function hs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zl),t.forEach((function(t){var r=Oc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:fs=s.stateNode,ds=!1;break e;case 3:case 4:fs=s.stateNode.containerInfo,ds=!0;break e}s=s.return}if(null===fs)throw Error(o(160));ms(i,l,a),fs=null,ds=!1;var c=a.alternate;null!==c&&(c.return=null),a.return=null}catch(e){Sc(a,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)vs(t,e),t=t.sibling}function vs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(gs(t,e),bs(e),4&r){try{rs(3,e,e.return),as(3,e)}catch(t){Sc(e,e.return,t)}try{rs(5,e,e.return)}catch(t){Sc(e,e.return,t)}}break;case 1:gs(t,e),bs(e),512&r&&null!==n&&es(n,n.return);break;case 5:if(gs(t,e),bs(e),512&r&&null!==n&&es(n,n.return),32&e.flags){var a=e.stateNode;try{de(a,"")}catch(t){Sc(e,e.return,t)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===s&&"radio"===i.type&&null!=i.name&&X(a,i),ye(s,l);var u=ye(s,i);for(l=0;l<c.length;l+=2){var f=c[l],d=c[l+1];"style"===f?ge(a,d):"dangerouslySetInnerHTML"===f?fe(a,d):"children"===f?de(a,d):y(a,f,d,u)}switch(s){case"input":Z(a,i);break;case"textarea":oe(a,i);break;case"select":var p=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(a,!!i.multiple,m,!1):p!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[pa]=i}catch(t){Sc(e,e.return,t)}}break;case 6:if(gs(t,e),bs(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(t){Sc(e,e.return,t)}}break;case 3:if(gs(t,e),bs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(t){Sc(e,e.return,t)}break;case 4:default:gs(t,e),bs(e);break;case 13:gs(t,e),bs(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||(Us=Xe())),4&r&&hs(e);break;case 22:if(f=null!==n&&null!==n.memoizedState,1&e.mode?(Xl=(u=Xl)||f,gs(t,e),Xl=u):gs(t,e),bs(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!f&&0!=(1&e.mode))for(Jl=e,f=e.child;null!==f;){for(d=Jl=f;null!==Jl;){switch(m=(p=Jl).child,p.tag){case 0:case 11:case 14:case 15:rs(4,p,p.return);break;case 1:es(p,p.return);var h=p.stateNode;if("function"==typeof h.componentWillUnmount){r=p,n=p.return;try{t=r,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(e){Sc(r,n,e)}}break;case 5:es(p,p.return);break;case 22:if(null!==p.memoizedState){Es(d);continue}}null!==m?(m.return=p,Jl=m):Es(d)}f=f.sibling}e:for(f=null,d=e;;){if(5===d.tag){if(null===f){f=d;try{a=d.stateNode,u?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=d.stateNode,l=null!=(c=d.memoizedProps.style)&&c.hasOwnProperty("display")?c.display:null,s.style.display=he("display",l))}catch(t){Sc(e,e.return,t)}}}else if(6===d.tag){if(null===f)try{d.stateNode.nodeValue=u?"":d.memoizedProps}catch(t){Sc(e,e.return,t)}}else if((22!==d.tag&&23!==d.tag||null===d.memoizedState||d===e)&&null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;f===d&&(f=null),d=d.return}f===d&&(f=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:gs(t,e),bs(e),4&r&&hs(e);case 21:}}function bs(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(ls(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(de(a,""),r.flags&=-33),us(e,ss(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;cs(e,ss(e),i);break;default:throw Error(o(161))}}catch(t){Sc(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function ys(e,t,n){Jl=e,xs(e,t,n)}function xs(e,t,n){for(var r=0!=(1&e.mode);null!==Jl;){var a=Jl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Kl;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Xl;l=Kl;var c=Xl;if(Kl=i,(Xl=s)&&!c)for(Jl=a;null!==Jl;)s=(i=Jl).child,22===i.tag&&null!==i.memoizedState?ks(a):null!==s?(s.return=i,Jl=s):ks(a);for(;null!==o;)Jl=o,xs(o,t,n),o=o.sibling;Jl=a,Kl=l,Xl=c}ws(e)}else 0!=(8772&a.subtreeFlags)&&null!==o?(o.return=a,Jl=o):ws(e)}}function ws(e){for(;null!==Jl;){var t=Jl;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Xl||as(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Xl)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:vo(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Io(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Io(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var f=u.memoizedState;if(null!==f){var d=f.dehydrated;null!==d&&Ut(d)}}}break;default:throw Error(o(163))}Xl||512&t.flags&&os(t)}catch(e){Sc(t,t.return,e)}}if(t===e){Jl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Jl=n;break}Jl=t.return}}function Es(e){for(;null!==Jl;){var t=Jl;if(t===e){Jl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Jl=n;break}Jl=t.return}}function ks(e){for(;null!==Jl;){var t=Jl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{as(4,t)}catch(e){Sc(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(e){Sc(t,a,e)}}var o=t.return;try{os(t)}catch(e){Sc(t,o,e)}break;case 5:var i=t.return;try{os(t)}catch(e){Sc(t,i,e)}}}catch(e){Sc(t,t.return,e)}if(t===e){Jl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Jl=l;break}Jl=t.return}}var Cs,Ss=Math.ceil,As=x.ReactCurrentDispatcher,Ns=x.ReactCurrentOwner,Fs=x.ReactCurrentBatchConfig,Os=0,_s=null,Ls=null,zs=0,Ts=0,Ps=Ca(0),js=0,Ds=null,Rs=0,Ms=0,Is=0,Bs=null,qs=null,Us=0,$s=1/0,Hs=null,Ws=!1,Vs=null,Gs=null,Qs=!1,Ys=null,Ks=0,Xs=0,Zs=null,Js=-1,ec=0;function tc(){return 0!=(6&Os)?Xe():-1!==Js?Js:Js=Xe()}function nc(e){return 0==(1&e.mode)?1:0!=(2&Os)&&0!==zs?zs&-zs:null!==go.transition?(0===ec&&(ec=ht()),ec):0!==(e=yt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function rc(e,t,n,r){if(50<Xs)throw Xs=0,Zs=null,Error(o(185));vt(e,n,r),0!=(2&Os)&&e===_s||(e===_s&&(0==(2&Os)&&(Ms|=n),4===js&&sc(e,zs)),ac(e,r),1===n&&0===Os&&0==(1&t.mode)&&($s=Xe()+500,Ia&&Ua()))}function ac(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?0!=(l&n)&&0==(l&r)||(a[i]=pt(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=dt(e,e===_s?zs:0);if(0===r)null!==n&&Qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Qe(n),1===t)0===e.tag?function(e){Ia=!0,qa(e)}(cc.bind(null,e)):qa(cc.bind(null,e)),ia((function(){0==(6&Os)&&Ua()})),n=null;else{switch(xt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=_c(n,oc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function oc(e,t){if(Js=-1,ec=0,0!=(6&Os))throw Error(o(327));var n=e.callbackNode;if(kc()&&e.callbackNode!==n)return null;var r=dt(e,e===_s?zs:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=vc(e,r);else{t=r;var a=Os;Os|=2;var i=hc();for(_s===e&&zs===t||(Hs=null,$s=Xe()+500,pc(e,t));;)try{yc();break}catch(t){mc(e,t)}Eo(),As.current=i,Os=a,null!==Ls?t=0:(_s=null,zs=0,t=js)}if(0!==t){if(2===t&&0!==(a=mt(e))&&(r=a,t=ic(e,a)),1===t)throw n=Ds,pc(e,0),sc(e,r),ac(e,Xe()),n;if(6===t)sc(e,r);else{if(a=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)&&(2===(t=vc(e,r))&&0!==(i=mt(e))&&(r=i,t=ic(e,i)),1===t))throw n=Ds,pc(e,0),sc(e,r),ac(e,Xe()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:Ec(e,qs,Hs);break;case 3:if(sc(e,r),(130023424&r)===r&&10<(t=Us+500-Xe())){if(0!==dt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){tc(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(Ec.bind(null,e,qs,Hs),t);break}Ec(e,qs,Hs);break;case 4:if(sc(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Xe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ss(r/1960))-r)){e.timeoutHandle=ra(Ec.bind(null,e,qs,Hs),r);break}Ec(e,qs,Hs);break;default:throw Error(o(329))}}}return ac(e,Xe()),e.callbackNode===n?oc.bind(null,e):null}function ic(e,t){var n=Bs;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=vc(e,t))&&(t=qs,qs=n,null!==t&&lc(t)),e}function lc(e){null===qs?qs=e:qs.push.apply(qs,e)}function sc(e,t){for(t&=~Is,t&=~Ms,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function cc(e){if(0!=(6&Os))throw Error(o(327));kc();var t=dt(e,0);if(0==(1&t))return ac(e,Xe()),null;var n=vc(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=ic(e,r))}if(1===n)throw n=Ds,pc(e,0),sc(e,t),ac(e,Xe()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ec(e,qs,Hs),ac(e,Xe()),null}function uc(e,t){var n=Os;Os|=1;try{return e(t)}finally{0===(Os=n)&&($s=Xe()+500,Ia&&Ua())}}function fc(e){null!==Ys&&0===Ys.tag&&0==(6&Os)&&kc();var t=Os;Os|=1;var n=Fs.transition,r=yt;try{if(Fs.transition=null,yt=1,e)return e()}finally{yt=r,Fs.transition=n,0==(6&(Os=t))&&Ua()}}function dc(){Ts=Ps.current,Sa(Ps)}function pc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==Ls)for(n=Ls.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ta();break;case 3:oi(),Sa(Oa),Sa(Fa),fi();break;case 5:li(r);break;case 4:oi();break;case 13:case 19:Sa(si);break;case 10:ko(r.type._context);break;case 22:case 23:dc()}n=n.return}if(_s=e,Ls=e=Pc(e.current,null),zs=Ts=t,js=0,Ds=null,Is=Ms=Rs=0,qs=Bs=null,null!==No){for(t=0;t<No.length;t++)if(null!==(r=(n=No[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}No=null}return e}function mc(e,t){for(;;){var n=Ls;try{if(Eo(),di.current=il,bi){for(var r=hi.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}bi=!1}if(mi=0,vi=gi=hi=null,yi=!1,xi=0,Ns.current=null,null===n||null===n.return){js=1,Ds=t,Ls=null;break}e:{var i=e,l=n.return,s=n,c=t;if(t=zs,s.flags|=32768,null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=c,f=s,d=f.tag;if(0==(1&f.mode)&&(0===d||11===d||15===d)){var p=f.alternate;p?(f.updateQueue=p.updateQueue,f.memoizedState=p.memoizedState,f.lanes=p.lanes):(f.updateQueue=null,f.memoizedState=null)}var m=vl(l);if(null!==m){m.flags&=-257,bl(m,l,s,0,t),1&m.mode&&gl(i,u,t),c=u;var h=(t=m).updateQueue;if(null===h){var g=new Set;g.add(c),t.updateQueue=g}else h.add(c);break e}if(0==(1&t)){gl(i,u,t),gc();break e}c=Error(o(426))}else if(ao&&1&s.mode){var v=vl(l);if(null!==v){0==(65536&v.flags)&&(v.flags|=256),bl(v,l,s,0,t),ho(ul(c,s));break e}}i=c=ul(c,s),4!==js&&(js=2),null===Bs?Bs=[i]:Bs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Ro(i,ml(0,c,t));break e;case 1:s=c;var b=i.type,y=i.stateNode;if(0==(128&i.flags)&&("function"==typeof b.getDerivedStateFromError||null!==y&&"function"==typeof y.componentDidCatch&&(null===Gs||!Gs.has(y)))){i.flags|=65536,t&=-t,i.lanes|=t,Ro(i,hl(i,s,t));break e}}i=i.return}while(null!==i)}wc(n)}catch(e){t=e,Ls===n&&null!==n&&(Ls=n=n.return);continue}break}}function hc(){var e=As.current;return As.current=il,null===e?il:e}function gc(){0!==js&&3!==js&&2!==js||(js=4),null===_s||0==(268435455&Rs)&&0==(268435455&Ms)||sc(_s,zs)}function vc(e,t){var n=Os;Os|=2;var r=hc();for(_s===e&&zs===t||(Hs=null,pc(e,t));;)try{bc();break}catch(t){mc(e,t)}if(Eo(),Os=n,As.current=r,null!==Ls)throw Error(o(261));return _s=null,zs=0,js}function bc(){for(;null!==Ls;)xc(Ls)}function yc(){for(;null!==Ls&&!Ye();)xc(Ls)}function xc(e){var t=Cs(e.alternate,e,Ts);e.memoizedProps=e.pendingProps,null===t?wc(e):Ls=t,Ns.current=null}function wc(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Ql(n,t,Ts)))return void(Ls=n)}else{if(null!==(n=Yl(n,t)))return n.flags&=32767,void(Ls=n);if(null===e)return js=6,void(Ls=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Ls=t);Ls=t=e}while(null!==t);0===js&&(js=5)}function Ec(e,t,n){var r=yt,a=Fs.transition;try{Fs.transition=null,yt=1,function(e,t,n,r){do{kc()}while(null!==Ys);if(0!=(6&Os))throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===_s&&(Ls=_s=null,zs=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Qs||(Qs=!0,_c(tt,(function(){return kc(),null}))),i=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||i){i=Fs.transition,Fs.transition=null;var l=yt;yt=1;var s=Os;Os|=4,Ns.current=null,function(e,t){if(ea=Ht,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(e){n=null;break e}var l=0,s=-1,c=-1,u=0,f=0,d=e,p=null;t:for(;;){for(var m;d!==n||0!==a&&3!==d.nodeType||(s=l+a),d!==i||0!==r&&3!==d.nodeType||(c=l+r),3===d.nodeType&&(l+=d.nodeValue.length),null!==(m=d.firstChild);)p=d,d=m;for(;;){if(d===e)break t;if(p===n&&++u===a&&(s=l),p===i&&++f===r&&(c=l),null!==(m=d.nextSibling))break;p=(d=p).parentNode}d=m}n=-1===s||-1===c?null:{start:s,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Jl=t;null!==Jl;)if(e=(t=Jl).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Jl=e;else for(;null!==Jl;){t=Jl;try{var h=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==h){var g=h.memoizedProps,v=h.memoizedState,b=t.stateNode,y=b.getSnapshotBeforeUpdate(t.elementType===t.type?g:vo(t.type,g),v);b.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var x=t.stateNode.containerInfo;1===x.nodeType?x.textContent="":9===x.nodeType&&x.documentElement&&x.removeChild(x.documentElement);break;default:throw Error(o(163))}}catch(e){Sc(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Jl=e;break}Jl=t.return}h=ns,ns=!1}(e,n),vs(n,e),mr(ta),Ht=!!ea,ta=ea=null,e.current=n,ys(n,e,a),Ke(),Os=s,yt=l,Fs.transition=i}else e.current=n;if(Qs&&(Qs=!1,Ys=e,Ks=a),0===(i=e.pendingLanes)&&(Gs=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,128==(128&e.current.flags))}catch(e){}}(n.stateNode),ac(e,Xe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((a=t[n]).value,{componentStack:a.stack,digest:a.digest});if(Ws)throw Ws=!1,e=Vs,Vs=null,e;0!=(1&Ks)&&0!==e.tag&&kc(),0!=(1&(i=e.pendingLanes))?e===Zs?Xs++:(Xs=0,Zs=e):Xs=0,Ua()}(e,t,n,r)}finally{Fs.transition=a,yt=r}return null}function kc(){if(null!==Ys){var e=xt(Ks),t=Fs.transition,n=yt;try{if(Fs.transition=null,yt=16>e?16:e,null===Ys)var r=!1;else{if(e=Ys,Ys=null,Ks=0,0!=(6&Os))throw Error(o(331));var a=Os;for(Os|=4,Jl=e.current;null!==Jl;){var i=Jl,l=i.child;if(0!=(16&Jl.flags)){var s=i.deletions;if(null!==s){for(var c=0;c<s.length;c++){var u=s[c];for(Jl=u;null!==Jl;){var f=Jl;switch(f.tag){case 0:case 11:case 15:rs(8,f,i)}var d=f.child;if(null!==d)d.return=f,Jl=d;else for(;null!==Jl;){var p=(f=Jl).sibling,m=f.return;if(is(f),f===u){Jl=null;break}if(null!==p){p.return=m,Jl=p;break}Jl=m}}}var h=i.alternate;if(null!==h){var g=h.child;if(null!==g){h.child=null;do{var v=g.sibling;g.sibling=null,g=v}while(null!==g)}}Jl=i}}if(0!=(2064&i.subtreeFlags)&&null!==l)l.return=i,Jl=l;else e:for(;null!==Jl;){if(0!=(2048&(i=Jl).flags))switch(i.tag){case 0:case 11:case 15:rs(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Jl=b;break e}Jl=i.return}}var y=e.current;for(Jl=y;null!==Jl;){var x=(l=Jl).child;if(0!=(2064&l.subtreeFlags)&&null!==x)x.return=l,Jl=x;else e:for(l=y;null!==Jl;){if(0!=(2048&(s=Jl).flags))try{switch(s.tag){case 0:case 11:case 15:as(9,s)}}catch(e){Sc(s,s.return,e)}if(s===l){Jl=null;break e}var w=s.sibling;if(null!==w){w.return=s.return,Jl=w;break e}Jl=s.return}}if(Os=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(e){}r=!0}return r}finally{yt=n,Fs.transition=t}}return!1}function Cc(e,t,n){e=jo(e,t=ml(0,t=ul(n,t),1),1),t=tc(),null!==e&&(vt(e,1,t),ac(e,t))}function Sc(e,t,n){if(3===e.tag)Cc(e,e,n);else for(;null!==t;){if(3===t.tag){Cc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Gs||!Gs.has(r))){t=jo(t,e=hl(t,e=ul(n,e),1),1),e=tc(),null!==t&&(vt(t,1,e),ac(t,e));break}}t=t.return}}function Ac(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=tc(),e.pingedLanes|=e.suspendedLanes&n,_s===e&&(zs&n)===n&&(4===js||3===js&&(130023424&zs)===zs&&500>Xe()-Us?pc(e,0):Is|=n),ac(e,t)}function Nc(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ut,0==(130023424&(ut<<=1))&&(ut=4194304)));var n=tc();null!==(e=_o(e,t))&&(vt(e,t,n),ac(e,n))}function Fc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Nc(e,n)}function Oc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Nc(e,n)}function _c(e,t){return Ge(e,t)}function Lc(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function zc(e,t,n,r){return new Lc(e,t,n,r)}function Tc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Pc(e,t){var n=e.alternate;return null===n?((n=zc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function jc(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)Tc(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case k:return Dc(n.children,a,i,t);case C:l=8,a|=8;break;case S:return(e=zc(12,n,t,2|a)).elementType=S,e.lanes=i,e;case O:return(e=zc(13,n,t,a)).elementType=O,e.lanes=i,e;case _:return(e=zc(19,n,t,a)).elementType=_,e.lanes=i,e;case T:return Rc(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case A:l=10;break e;case N:l=9;break e;case F:l=11;break e;case L:l=14;break e;case z:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=zc(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function Dc(e,t,n,r){return(e=zc(7,e,r,t)).lanes=n,e}function Rc(e,t,n,r){return(e=zc(22,e,r,t)).elementType=T,e.lanes=n,e.stateNode={isHidden:!1},e}function Mc(e,t,n){return(e=zc(6,e,null,t)).lanes=n,e}function Ic(e,t,n){return(t=zc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bc(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function qc(e,t,n,r,a,o,i,l,s){return e=new Bc(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=zc(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},zo(o),e}function Uc(e){if(!e)return Na;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(za(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(za(n))return ja(e,n,t)}return t}function $c(e,t,n,r,a,o,i,l,s){return(e=qc(n,r,!0,e,0,o,0,l,s)).context=Uc(null),n=e.current,(o=Po(r=tc(),a=nc(n))).callback=null!=t?t:null,jo(n,o,a),e.current.lanes=a,vt(e,a,r),ac(e,r),e}function Hc(e,t,n,r){var a=t.current,o=tc(),i=nc(a);return n=Uc(n),null===t.context?t.context=n:t.pendingContext=n,(t=Po(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=jo(a,t,i))&&(rc(e,a,i,o),Do(e,a,i)),i}function Wc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Gc(e,t){Vc(e,t),(e=e.alternate)&&Vc(e,t)}Cs=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Oa.current)xl=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return xl=!1,function(e,t,n){switch(t.tag){case 3:_l(t),mo();break;case 5:ii(t);break;case 1:za(t.type)&&Da(t);break;case 4:ai(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Aa(bo,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Aa(si,1&si.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Ml(e,t,n):(Aa(si,1&si.current),null!==(e=Wl(e,t,n))?e.sibling:null);Aa(si,1&si.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return $l(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Aa(si,si.current),r)break;return null;case 22:case 23:return t.lanes=0,Sl(e,t,n)}return Wl(e,t,n)}(e,t,n);xl=0!=(131072&e.flags)}else xl=!1,ao&&0!=(1048576&t.flags)&&Ja(t,Va,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hl(e,t),e=t.pendingProps;var a=La(t,Fa.current);So(t,n),a=Ci(null,t,r,e,a,n);var i=Si();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,za(r)?(i=!0,Da(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,zo(t),a.updater=Uo,t.stateNode=a,a._reactInternals=t,Vo(t,r,e,n),t=Ol(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),wl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hl(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Tc(e)?1:0;if(null!=e){if((e=e.$$typeof)===F)return 11;if(e===L)return 14}return 2}(r),e=vo(r,e),a){case 0:t=Nl(null,t,r,e,n);break e;case 1:t=Fl(null,t,r,e,n);break e;case 11:t=El(null,t,r,e,n);break e;case 14:t=kl(null,t,r,vo(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,Nl(e,t,r,a=t.elementType===r?a:vo(r,a),n);case 1:return r=t.type,a=t.pendingProps,Fl(e,t,r,a=t.elementType===r?a:vo(r,a),n);case 3:e:{if(_l(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,To(e,t),Mo(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ll(e,t,r,n,a=ul(Error(o(423)),t));break e}if(r!==a){t=Ll(e,t,r,n,a=ul(Error(o(424)),t));break e}for(ro=ca(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=Zo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(mo(),r===a){t=Wl(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&&co(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),Al(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&co(t),null;case 13:return Ml(e,t,n);case 4:return ai(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Xo(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,El(e,t,r,a=t.elementType===r?a:vo(r,a),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,Aa(bo,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!Oa.current){t=Wl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var c=s.firstContext;null!==c;){if(c.context===r){if(1===i.tag){(c=Po(-1,n&-n)).tag=2;var u=i.updateQueue;if(null!==u){var f=(u=u.shared).pending;null===f?c.next=c:(c.next=f.next,f.next=c),u.pending=c}}i.lanes|=n,null!==(c=i.alternate)&&(c.lanes|=n),Co(i.return,n,t),s.lanes|=n;break}c=c.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),Co(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}wl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,So(t,n),r=r(a=Ao(a)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return a=vo(r=t.type,t.pendingProps),kl(e,t,r,a=vo(r.type,a),n);case 15:return Cl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:vo(r,a),Hl(e,t),t.tag=1,za(r)?(e=!0,Da(t)):e=!1,So(t,n),Ho(t,r,a),Vo(t,r,a,n),Ol(null,t,r,!0,e,n);case 19:return $l(e,t,n);case 22:return Sl(e,t,n)}throw Error(o(156,t.tag))};var Qc="function"==typeof reportError?reportError:function(e){console.error(e)};function Yc(e){this._internalRoot=e}function Kc(e){this._internalRoot=e}function Xc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Jc(){}function eu(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=Wc(i);l.call(e)}}Hc(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Wc(i);o.call(e)}}var i=$c(t,r,e,0,null,!1,0,"",Jc);return e._reactRootContainer=i,e[ma]=i.current,Ur(8===e.nodeType?e.parentNode:e),fc(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=Wc(s);l.call(e)}}var s=qc(e,0,!1,null,0,!1,0,"",Jc);return e._reactRootContainer=s,e[ma]=s.current,Ur(8===e.nodeType?e.parentNode:e),fc((function(){Hc(t,s,n,r)})),s}(n,t,e,a,r);return Wc(i)}Kc.prototype.render=Yc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Hc(e,t,null,null)},Kc.prototype.unmount=Yc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;fc((function(){Hc(null,e,null,null)})),t[ma]=null}},Kc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ct();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Tt.length&&0!==t&&t<Tt[n].priority;n++);Tt.splice(n,0,e),0===n&&Rt(e)}},wt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&&(bt(t,1|n),ac(t,Xe()),0==(6&Os)&&($s=Xe()+500,Ua()))}break;case 13:fc((function(){var t=_o(e,1);if(null!==t){var n=tc();rc(t,e,1,n)}})),Gc(e,1)}},Et=function(e){if(13===e.tag){var t=_o(e,134217728);null!==t&&rc(t,e,134217728,tc()),Gc(e,134217728)}},kt=function(e){if(13===e.tag){var t=nc(e),n=_o(e,t);null!==n&&rc(n,e,t,tc()),Gc(e,t)}},Ct=function(){return yt},St=function(e,t){var n=yt;try{return yt=e,t()}finally{yt=n}},Ee=function(e,t,n){switch(t){case"input":if(Z(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+\'][type="radio"]\'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=wa(r);if(!a)throw Error(o(90));G(r),Z(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Fe=uc,Oe=fc;var tu={usingClientEntryPoint:!1,Events:[ya,xa,wa,Ae,Ne,uc]},nu={findFiberByHostInstance:ba,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},ru={bundleType:nu.bundleType,version:nu.version,rendererPackageName:nu.rendererPackageName,rendererConfig:nu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var au=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!au.isDisabled&&au.supportsFiber)try{at=au.inject(ru),ot=au}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tu,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Xc(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:E,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Xc(e))throw Error(o(299));var n=!1,r="",a=Qc;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=qc(e,1,!1,null,0,n,0,r,a),e[ma]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Yc(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return fc(e)},t.hydrate=function(e,t,n){if(!Zc(t))throw Error(o(200));return eu(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Xc(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Qc;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=$c(t,null,e,1,null!=n?n:null,a,0,i,l),e[ma]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Kc(t)},t.render=function(e,t,n){if(!Zc(t))throw Error(o(200));return eu(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zc(e))throw Error(o(40));return!!e._reactRootContainer&&(fc((function(){eu(null,null,e,!1,(function(){e._reactRootContainer=null,e[ma]=null}))})),!0)},t.unstable_batchedUpdates=uc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zc(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return eu(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},935:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},251:function(e,t,n){"use strict";var r=n(639),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},893:function(e,t,n){"use strict";e.exports=n(251)},53:function(e,t){"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],c=l+1,u=e[c];if(0>o(s,n))c<a&&0>o(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else{if(!(c<a&&0>o(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var c=[],u=[],f=1,d=null,p=3,m=!1,h=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,y="undefined"!=typeof setImmediate?setImmediate:null;function x(e){for(var t=r(u);null!==t;){if(null===t.callback)a(u);else{if(!(t.startTime<=e))break;a(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function w(e){if(g=!1,x(e),!h)if(null!==r(c))h=!0,T(E);else{var t=r(u);null!==t&&P(w,t.startTime-e)}}function E(e,n){h=!1,g&&(g=!1,b(A),A=-1),m=!0;var o=p;try{for(x(n),d=r(c);null!==d&&(!(d.expirationTime>n)||e&&!O());){var i=d.callback;if("function"==typeof i){d.callback=null,p=d.priorityLevel;var l=i(d.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?d.callback=l:d===r(c)&&a(c),x(n)}else a(c);d=r(c)}if(null!==d)var s=!0;else{var f=r(u);null!==f&&P(w,f.startTime-n),s=!1}return s}finally{d=null,p=o,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var k,C=!1,S=null,A=-1,N=5,F=-1;function O(){return!(t.unstable_now()-F<N)}function _(){if(null!==S){var e=t.unstable_now();F=e;var n=!0;try{n=S(!0,e)}finally{n?k():(C=!1,S=null)}}else C=!1}if("function"==typeof y)k=function(){y(_)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,z=L.port2;L.port1.onmessage=_,k=function(){z.postMessage(null)}}else k=function(){v(_,0)};function T(e){S=e,C||(C=!0,k())}function P(e,n){A=v((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){h||m||(h=!0,T(E))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):N=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch(o="object"==typeof o&&null!==o&&"number"==typeof(o=o.delay)&&0<o?i+o:i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:f++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(u,e),null===r(c)&&e===r(u)&&(g?(b(A),A=-1):g=!0,P(w,o-i))):(e.sortIndex=l,n(c,e),h||m||(h=!0,T(E))),e},t.unstable_shouldYield=O,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},840:function(e,t,n){"use strict";e.exports=n(53)},379:function(e){"use strict";var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var o={},i=[],l=0;l<e.length;l++){var s=e[l],c=r.base?s[0]+r.base:s[0],u=o[c]||0,f="".concat(c," ").concat(u);o[c]=u+1;var d=n(f),p={css:s[1],media:s[2],sourceMap:s[3],supports:s[4],layer:s[5]};if(-1!==d)t[d].references++,t[d].updater(p);else{var m=a(p,r);r.byIndex=l,t.splice(l,0,{identifier:f,updater:m,references:1})}i.push(f)}return i}function a(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,a){var o=r(e=e||[],a=a||{});return function(e){e=e||[];for(var i=0;i<o.length;i++){var l=n(o[i]);t[l].references--}for(var s=r(e,a),c=0;c<o.length;c++){var u=n(o[c]);0===t[u].references&&(t[u].updater(),t.splice(u,1))}o=s}}},569:function(e){"use strict";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn\'t find a style target. This probably means that the value for the \'insert\' parameter is invalid.");r.appendChild(n)}},216:function(e){"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:function(e,t,n){"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:function(e){"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var a=void 0!==n.layer;a&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,a&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:function(e){"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},496:function(e){!function(){var t=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],n="undefined"!=typeof window,r=n&&null!=window.mozInnerScreenX;function a(e,a,o){if(!n)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");var i=o&&o.debug||!1;if(i){var l=document.querySelector("#input-textarea-caret-position-mirror-div");l&&l.parentNode.removeChild(l)}var s=document.createElement("div");s.id="input-textarea-caret-position-mirror-div",document.body.appendChild(s);var c=s.style,u=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,f="INPUT"===e.nodeName;c.whiteSpace="pre-wrap",f||(c.wordWrap="break-word"),c.position="absolute",i||(c.visibility="hidden"),t.forEach((function(e){f&&"lineHeight"===e?c.lineHeight=u.height:c[e]=u[e]})),r?e.scrollHeight>parseInt(u.height)&&(c.overflowY="scroll"):c.overflow="hidden",s.textContent=e.value.substring(0,a),f&&(s.textContent=s.textContent.replace(/\\s/g," "));var d=document.createElement("span");d.textContent=e.value.substring(a)||".",s.appendChild(d);var p={top:d.offsetTop+parseInt(u.borderTopWidth),left:d.offsetLeft+parseInt(u.borderLeftWidth),height:parseInt(u.lineHeight)};return i?d.style.backgroundColor="#aaa":document.body.removeChild(s),p}void 0!==e.exports?e.exports=a:n&&(window.getCaretCoordinates=a)}()},473:function(e){"use strict";e.exports=function(){}},189:function(e){"use strict";if(void 0===t){var n=new Error("Cannot find module \'undefined\'");throw n.code="MODULE_NOT_FOUND",n}e.exports=t},639:function(t){"use strict";t.exports=e}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={id:e,exports:{}};return n[e](o,o.exports,a),o.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nc=void 0;var o={};return function(){"use strict";a.r(o),a.d(o,{Await:function(){return pi},Branding:function(){return Ir},Card:function(){return gi},Checkbox:function(){return hi},ErrorMessage:function(){return je},FileUpload:function(){return sc},Footer:function(){return si},FooterManager:function(){return li},Header:function(){return ri},LoadingInfo:function(){return De},LoginForm:function(){return Qe},Message:function(){return Pe},NavigationManager:function(){return ti},QueryForm:function(){return Qo},QueryPanel:function(){return Zo},ServerVersionInfo:function(){return p},TopNavigationBar:function(){return ni},UserComponent:function(){return Mr},createTab:function(){return xo},makeQueryTemplate:function(){return vo},toggleQueryPanel:function(){return Xo}});var e,t=a(639),n=a.n(t);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function i(){i=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var o=t&&t.prototype instanceof m?t:m,i=Object.create(o.prototype),l=new N(r||[]);return a(i,"_invoke",{value:k(e,n,l)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var p={};function m(){}function h(){}function g(){}var v={};u(v,l,(function(){return this}));var b=Object.getPrototypeOf,y=b&&b(b(F([])));y&&y!==t&&n.call(y,l)&&(v=y);var x=g.prototype=m.prototype=Object.create(v);function w(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function o(a,i,l,s){var c=d(e[a],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==r(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,l,s)}),(function(e){o("throw",e,l,s)})):t.resolve(f).then((function(e){u.value=e,l(u)}),(function(e){return o("throw",e,l,s)}))}s(c.arg)}var i;a(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function k(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=C(i,n);if(l){if(l===p)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=d(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===p)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function C(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),p;var a=d(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,p;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function F(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:O}}function O(){return{value:void 0,done:!0}}return h.prototype=g,a(x,"constructor",{value:g,configurable:!0}),a(g,"constructor",{value:h,configurable:!0}),h.displayName=u(g,c,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,u(e,c,"GeneratorFunction")),e.prototype=Object.create(x),e},e.awrap=function(e){return{__await:e}},w(E.prototype),u(E.prototype,s,(function(){return this})),e.AsyncIterator=E,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new E(f(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},w(x),u(x,c,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=F,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(A),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,p):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),A(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;A(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:F(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}function l(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){l(o,r,a,i,s,"next",e)}function s(e){l(o,r,a,i,s,"throw",e)}i(void 0)}))}}function c(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,(void 0,o=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!==r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a.key),"symbol"===r(o)?o:String(o)),a)}var o}var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,r,a,o;return t=e,n=[{key:"getSessionInfo",value:(a=s(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:throw{message:"Please log in!"};case 3:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"sleep",value:function(e){return new Promise((function(t){return setTimeout(t,e)}))}},{key:"login",value:(o=s(i().mark((function e(t){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:if("error"!=t){e.next=4;break}throw{message:"Login failed! Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!"};case 4:return e.abrupt("return",{realm:"MockRealm",username:t,roles:[],expires:6e4});case 5:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"logout",value:(r=s(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})}],n&&c(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();try{e=a(189).InfoService}catch(t){console.log("Providing mockup implementation for InfoService"),e=u}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function d(e){return"Could not retrieve Server Version Info: "+e.message}function p(){var r,a,o=(r=(0,t.useState)(null),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[0],l=o[1];return null===i&&(i=function(t){return(new e).getVersionInfo().then((function(e){return e.noBuild().toString()})).catch(d).then(t),"..."}(l)),n().createElement("div",{className:"caosdb-comp-server-version-info"},i)}var m=a(697),h=a.n(m),g=a(184),v=a.n(g);function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},b.apply(this,arguments)}function y(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}function x(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function w(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}function E(e,n){return Object.keys(n).reduce((function(r,a){var o,i=r,l=i[x(a)],s=i[a],c=y(i,[x(a),a].map(w)),u=n[a],f=function(e,n,r){var a=(0,t.useRef)(void 0!==e),o=(0,t.useState)(n),i=o[0],l=o[1],s=void 0!==e,c=a.current;return a.current=s,!s&&c&&i!==n&&l(n),[s?e:i,(0,t.useCallback)((function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];r&&r.apply(void 0,[e].concat(n)),l(e)}),[r])]}(s,l,e[u]),d=f[0],p=f[1];return b({},c,((o={})[a]=d,o[u]=p,o))}),e)}a(143);var k=function(e){var n=(0,t.useRef)(e);return(0,t.useEffect)((function(){n.current=e}),[e]),n};function C(e){var n=k(e);return(0,t.useCallback)((function(){return n.current&&n.current.apply(n,arguments)}),[n])}function S(){var e=(0,t.useRef)(!0),n=(0,t.useRef)((function(){return e.current}));return(0,t.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),n.current}function A(e){var n=(0,t.useRef)(null);return(0,t.useEffect)((function(){n.current=e})),n.current}var N=void 0!==a.g&&a.g.navigator&&"ReactNative"===a.g.navigator.product,F="undefined"!=typeof document||N?t.useLayoutEffect:t.useEffect;new WeakMap;var O=a(893);const _=["as","disabled"];function L({tagName:e,disabled:t,href:n,target:r,rel:a,role:o,onClick:i,tabIndex:l=0,type:s}){e||(e=null!=n||null!=r||null!=a?"a":"button");const c={tagName:e};if("button"===e)return[{type:s||"button",disabled:t},c];const u=r=>{(t||"a"===e&&function(e){return!e||"#"===e.trim()}(n))&&r.preventDefault(),t?r.stopPropagation():null==i||i(r)};return"a"===e&&(n||(n="#"),t&&(n=void 0)),[{role:null!=o?o:"button",disabled:void 0,tabIndex:t?void 0:l,href:n,target:"a"===e?r:void 0,"aria-disabled":t||void 0,rel:"a"===e?a:void 0,onClick:u,onKeyDown:e=>{" "===e.key&&(e.preventDefault(),u(e))}},c]}const z=t.forwardRef(((e,t)=>{let{as:n,disabled:r}=e,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,_);const[o,{tagName:i}]=L(Object.assign({tagName:n,disabled:r},a));return(0,O.jsx)(i,Object.assign({},a,o,{ref:t}))}));z.displayName="Button";var T=z;const P=["onKeyDown"],j=t.forwardRef(((e,t)=>{let{onKeyDown:n}=e,r=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,P);const[a]=L(Object.assign({tagName:"a"},r)),o=C((e=>{a.onKeyDown(e),null==n||n(e)}));return(i=r.href)&&"#"!==i.trim()&&"button"!==r.role?(0,O.jsx)("a",Object.assign({ref:t},r,{onKeyDown:n})):(0,O.jsx)("a",Object.assign({ref:t},r,a,{onKeyDown:o}));var i}));j.displayName="Anchor";var D=j;const R=t.createContext({prefixes:{},breakpoints:["xxl","xl","lg","md","sm","xs"],minBreakpoint:"xs"}),{Consumer:M,Provider:I}=R;function B(e,n){const{prefixes:r}=(0,t.useContext)(R);return e||r[n]||n}function q(e,t){return q=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},q(e,t)}var U=a(935),$=n().createContext(null),H="unmounted",W="exited",V="entering",G="entered",Q="exiting",Y=function(e){var t,r;function a(t,n){var r;r=e.call(this,t,n)||this;var a,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(a=W,r.appearStatus=V):a=G:a=t.unmountOnExit||t.mountOnEnter?H:W,r.state={status:a},r.nextCallback=null,r}r=e,(t=a).prototype=Object.create(r.prototype),t.prototype.constructor=t,q(t,r),a.getDerivedStateFromProps=function(e,t){return e.in&&t.status===H?{status:W}:null};var o=a.prototype;return o.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},o.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==V&&n!==G&&(t=V):n!==V&&n!==G||(t=Q)}this.updateStatus(!1,t)},o.componentWillUnmount=function(){this.cancelNextCallback()},o.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},o.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===V){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:U.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===W&&this.setState({status:H})},o.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,a=this.props.nodeRef?[r]:[U.findDOMNode(this),r],o=a[0],i=a[1],l=this.getTimeouts(),s=r?l.appear:l.enter;e||n?(this.props.onEnter(o,i),this.safeSetState({status:V},(function(){t.props.onEntering(o,i),t.onTransitionEnd(s,(function(){t.safeSetState({status:G},(function(){t.props.onEntered(o,i)}))}))}))):this.safeSetState({status:G},(function(){t.props.onEntered(o)}))},o.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:U.findDOMNode(this);t?(this.props.onExit(r),this.safeSetState({status:Q},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:W},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:W},(function(){e.props.onExited(r)}))},o.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},o.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},o.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},o.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:U.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var a=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=a[0],i=a[1];this.props.addEndListener(o,i)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},o.render=function(){var e=this.state.status;if(e===H)return null;var t=this.props,r=t.children,a=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,y(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return n().createElement($.Provider,{value:null},"function"==typeof r?r(e,a):n().cloneElement(n().Children.only(r),a))},a}(n().Component);function K(){}Y.contextType=$,Y.propTypes={},Y.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:K,onEntering:K,onEntered:K,onExit:K,onExiting:K,onExited:K},Y.UNMOUNTED=H,Y.EXITED=W,Y.ENTERING=V,Y.ENTERED=G,Y.EXITING=Q;var X=Y;function Z(e){return e&&e.ownerDocument||document}var J=/([A-Z])/g,ee=/^ms-/;function te(e){return function(e){return e.replace(J,"-$1").toLowerCase()}(e).replace(ee,"-ms-")}var ne=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i,re=function(e,t){var n="",r="";if("string"==typeof t)return e.style.getPropertyValue(te(t))||function(e,t){return function(e){var t=Z(e);return t&&t.defaultView||window}(e).getComputedStyle(e,t)}(e).getPropertyValue(te(t));Object.keys(t).forEach((function(a){var o=t[a];o||0===o?function(e){return!(!e||!ne.test(e))}(a)?r+=a+"("+o+") ":n+=te(a)+": "+o+";":e.style.removeProperty(te(a))})),r&&(n+="transform: "+r+";"),e.style.cssText+=";"+n},ae=!("undefined"==typeof window||!window.document||!window.document.createElement),oe=!1,ie=!1;try{var le={get passive(){return oe=!0},get once(){return ie=oe=!0}};ae&&(window.addEventListener("test",le,le),window.removeEventListener("test",le,!0))}catch(e){}var se=function(e,t,n,r){if(r&&"boolean"!=typeof r&&!ie){var a=r.once,o=r.capture,i=n;!ie&&a&&(i=n.__once||function e(r){this.removeEventListener(t,e,o),n.call(this,r)},n.__once=i),e.addEventListener(t,i,oe?r:o)}e.addEventListener(t,n,r)},ce=function(e,t,n,r){return se(e,t,n,r),function(){!function(e,t,n,r){var a=r&&"boolean"!=typeof r?r.capture:r;e.removeEventListener(t,n,a),n.__once&&e.removeEventListener(t,n.__once,a)}(e,t,n,r)}};function ue(e,t,n,r){var a,o;null==n&&(o=-1===(a=re(e,"transitionDuration")||"").indexOf("ms")?1e3:1,n=parseFloat(a)*o||0);var i=function(e,t,n){void 0===n&&(n=5);var r=!1,a=setTimeout((function(){r||function(e,t,n,r){if(void 0===n&&(n=!1),void 0===r&&(r=!0),e){var a=document.createEvent("HTMLEvents");a.initEvent("transitionend",n,r),e.dispatchEvent(a)}}(e,0,!0)}),t+n),o=ce(e,"transitionend",(function(){r=!0}),{once:!0});return function(){clearTimeout(a),o()}}(e,n,r),l=ce(e,"transitionend",t);return function(){i(),l()}}function fe(e,t){const n=re(e,t)||"",r=-1===n.indexOf("ms")?1e3:1;return parseFloat(n)*r}function de(e,t){const n=fe(e,"transitionDuration"),r=fe(e,"transitionDelay"),a=ue(e,(n=>{n.target===e&&(a(),t(n))}),n+r)}function pe(e){e.offsetHeight}var me=function(e){return e&&"function"!=typeof e?function(t){e.current=t}:e},he=function(e,n){return(0,t.useMemo)((function(){return function(e,t){var n=me(e),r=me(t);return function(e){n&&n(e),r&&r(e)}}(e,n)}),[e,n])},ge=n().forwardRef((({onEnter:e,onEntering:r,onEntered:a,onExit:o,onExiting:i,onExited:l,addEndListener:s,children:c,childRef:u,...f},d)=>{const p=(0,t.useRef)(null),m=he(p,u),h=e=>{var t;m((t=e)&&"setState"in t?U.findDOMNode(t):null!=t?t:null)},g=e=>t=>{e&&p.current&&e(p.current,t)},v=(0,t.useCallback)(g(e),[e]),b=(0,t.useCallback)(g(r),[r]),y=(0,t.useCallback)(g(a),[a]),x=(0,t.useCallback)(g(o),[o]),w=(0,t.useCallback)(g(i),[i]),E=(0,t.useCallback)(g(l),[l]),k=(0,t.useCallback)(g(s),[s]);return(0,O.jsx)(X,{ref:d,...f,onEnter:v,onEntered:y,onEntering:b,onExit:x,onExited:E,onExiting:w,addEndListener:k,nodeRef:p,children:"function"==typeof c?(e,t)=>c(e,{...t,ref:h}):n().cloneElement(c,{ref:h})})}));const ve={[V]:"show",[G]:"show"},be=t.forwardRef((({className:e,children:n,transitionClasses:r={},...a},o)=>{const i=(0,t.useCallback)(((e,t)=>{pe(e),null==a.onEnter||a.onEnter(e,t)}),[a]);return(0,O.jsx)(ge,{ref:o,addEndListener:de,...a,onEnter:i,childRef:n.ref,children:(a,o)=>t.cloneElement(n,{...o,className:v()("fade",e,n.props.className,ve[a],r[a])})})}));be.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1},be.displayName="Fade";var ye=be;const xe={"aria-label":h().string,onClick:h().func,variant:h().oneOf(["white"])},we=t.forwardRef((({className:e,variant:t,...n},r)=>(0,O.jsx)("button",{ref:r,type:"button",className:v()("btn-close",t&&`btn-close-${t}`,e),...n})));we.displayName="CloseButton",we.propTypes=xe,we.defaultProps={"aria-label":"Close"};var Ee=we,ke=e=>t.forwardRef(((t,n)=>(0,O.jsx)("div",{...t,ref:n,className:v()(t.className,e)}))),Ce=/-(.)/g;const Se=e=>{return e[0].toUpperCase()+(t=e,t.replace(Ce,(function(e,t){return t.toUpperCase()}))).slice(1);var t};function Ae(e,{displayName:n=Se(e),Component:r,defaultProps:a}={}){const o=t.forwardRef((({className:t,bsPrefix:n,as:a=r||"div",...o},i)=>{const l=B(n,e);return(0,O.jsx)(a,{ref:i,className:v()(t,l),...o})}));return o.defaultProps=a,o.displayName=n,o}const Ne=ke("h4");Ne.displayName="DivStyledAsH4";const Fe=Ae("alert-heading",{Component:Ne}),Oe=Ae("alert-link",{Component:D}),_e={variant:"primary",show:!0,transition:ye,closeLabel:"Close alert"},Le=t.forwardRef(((e,t)=>{const{bsPrefix:n,show:r,closeLabel:a,closeVariant:o,className:i,children:l,variant:s,onClose:c,dismissible:u,transition:f,...d}=E(e,{show:"onClose"}),p=B(n,"alert"),m=C((e=>{c&&c(!1,e)})),h=!0===f?ye:f,g=(0,O.jsxs)("div",{role:"alert",...h?void 0:d,ref:t,className:v()(i,p,s&&`${p}-${s}`,u&&`${p}-dismissible`),children:[u&&(0,O.jsx)(Ee,{onClick:m,"aria-label":a,variant:o}),l]});return h?(0,O.jsx)(h,{unmountOnExit:!0,...d,ref:void 0,in:r,children:g}):r?g:null}));Le.displayName="Alert",Le.defaultProps=_e;var ze=Object.assign(Le,{Link:Oe,Heading:Fe});function Te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Pe=function(e){var r,a,o=e.heading,i=e.icon,l=e.type,s=e.dismissible,c=e.children,u=e.className,f="primary",d=void 0===i||i,p="bi bi-exclamation-circle",m=(r=(0,t.useState)(!0),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return Te(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=m[0],g=m[1];return h?("error"===l?(f="danger",p="bi bi-exclamation-triangle-fill"):"warning"===l?(f="warning",p="bi bi-exclamation-triangle"):"success"===l&&(f="success",p="bi bi-check-circle"),i=d&&(i||n().createElement("i",{className:"".concat(p," me-2 m-0")})),n().createElement(ze,{className:u,variant:f,onClose:function(){return g(!1)},dismissible:s},o&&n().createElement(ze.Heading,null,i,o),n().createElement("div",{className:"d-flex align-items-center m-0"},!o&&i,n().createElement("div",null,c)))):n().createElement(n().Fragment,null)};Pe.propTypes={heading:h().node,icon:h().node,type:h().oneOf(["error","warning","success","info"]),dismissible:h().bool,children:h().oneOfType([h().arrayOf(h().node),h().node]),className:h().string};var je=function(e){var t,r=e.heading,a=e.error;return console.warn(a),r=r||"Error",t="string"==typeof a||a instanceof String?a:a.message&&("string"==typeof a.message||a.message instanceof String)?a.message:JSON.stringify(a),n().createElement(Pe,{className:"mt-3 mx-3",heading:r,type:"error",dismissible:!0},t)};je.propTypes={heading:h().node,error:h().oneOfType([h().string,h().instanceOf(Error)])};var De=function(e){var t=e.className,r=e.size,a=e.color,o=e.title,i="spinner-border";return t&&(i+=" "+t),"sm"===r&&(i+=" spinner-border-sm"),"primary"===a?i+=" text-primary":"secondary"===a&&(i+=" text-secondary"),n().createElement("span",{title:o,className:i,role:"status","aria-hidden":"true"})};function Re(e){return Re="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}function Me(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ie(){Ie=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Re(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Be(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==Re(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Re(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Re(a)?a:String(a)),r)}var a}function qe(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function Ue(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){qe(o,r,a,i,l,"next",e)}function l(e){qe(o,r,a,i,l,"throw",e)}i(void 0)}))}}function $e(){return($e=Ue(Ie().mark((function t(n,r){var a;return Ie().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new e,t.next=3,a.login(n,r);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function He(e,t,n){return function(r){r.preventDefault(),e();var a=r.target.username.value,o=r.target.password.value;r.target.submit.disabled=!0;var i=function(e,t){return $e.apply(this,arguments)}(a,o).catch((function(e){throw r.target.submit.disabled=!1,e}));t&&(i=i.then(t)),n&&i.catch(n)}}De.propTypes={className:h().string,size:h().oneOf(["sm"]),color:h().oneOf(["primary","secondary"]),title:h().string},De.defaultProps={title:"Loading..."};var We=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.cb=t,n=Number.isInteger(n)?n:1e4,this.timeout=setTimeout(this.cb,n)}var t,n;return t=e,(n=[{key:"reset",value:function(e){this.pause(),this.cb&&(e=Number.isInteger(e)?e:2e4,this.timeout=setTimeout(this.cb,e))}},{key:"pause",value:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}},{key:"stop",value:function(){this.pause(),this.cb=void 0}}])&&Be(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),Ve=function(e){var t=e.then,r=e.onError,a=e.showMessages,o=e.showLoadingInfo,i=new We(a),l=function(){return i.pause()},s=function(){return i.reset()},c=function(){var e=Ue(Ie().mark((function e(t){return Ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a(),!r){e.next=5;break}return e.next=4,r(t);case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return n().createElement("form",{className:"m-0",onSubmit:He(o,t,c)},n().createElement("div",{className:"row g-3"},n().createElement("div",{className:"col-sm-5"},n().createElement("input",{onChange:l,onBlur:s,name:"username",className:"form-control",placeholder:"Username","aria-label":"Username"})),n().createElement("div",{className:"col-sm-5"},n().createElement("input",{onChange:l,onBlur:s,name:"password",className:"form-control",type:"password",placeholder:"Password","aria-label":"Password"})),n().createElement("div",{className:"col-sm-1"},n().createElement("button",{onClick:function(){return i.stop()},className:"btn btn-secondary navbar-btn d-inline-block",name:"submit",type:"submit"},"Login"))))};Ve.propTypes={then:h().func.isRequired,onError:h().func,showMessages:h().func.isRequired,showLoadingInfo:h().func.isRequired};var Ge=function(e){var t=e.message,r=e.messageType,a=e.showInputs;return t=t?n().createElement("div",{className:"col-sm-auto"},n().createElement(Pe,{type:r},t)):void 0,n().createElement("div",{className:"align-items-center row g-3"},t,n().createElement("div",{className:"col-sm-1"},n().createElement("button",{className:"btn btn-secondary navbar-btn d-inline-block",name:"show",type:"button",onClick:a},"Login")))};Ge.propTypes={message:h().node,messageType:h().oneOf(["error","warning","success","info"]),showInputs:h().func.isRequired};var Qe=function(e){var r,a,o=e.then,i=e.onError,l=e.message,s=e.messageType,c=(r=(0,t.useState)("messages"),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return Me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Me(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],f=c[1];return"inputs"===u?n().createElement(Ve,{then:o,onError:i,showMessages:function(){return f("messages")},showLoadingInfo:function(){return f("loading")}}):"loading"===u?n().createElement(De,{size:"sm"}):n().createElement(Ge,{message:l,messageType:s,showInputs:function(){return f("inputs")}})};Qe.propTypes={then:h().func.isRequired,onError:h().func,message:h().node,messageType:h().oneOf(["error","warning","success","info"])};var Ye=Function.prototype.bind.call(Function.prototype.call,[].slice);function Ke(e,t){return Ye(e.querySelectorAll(t))}function Xe(){return(0,t.useReducer)((function(e){return!e}),!1)[1]}var Ze=t.createContext(null),Je=Object.prototype.hasOwnProperty;function et(e,t,n){for(n of e.keys())if(tt(n,t))return n}function tt(e,t){var n,r,a;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&tt(e[r],t[r]););return-1===r}if(n===Set){if(e.size!==t.size)return!1;for(r of e){if((a=r)&&"object"==typeof a&&!(a=et(t,a)))return!1;if(!t.has(a))return!1}return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e){if((a=r[0])&&"object"==typeof a&&!(a=et(t,a)))return!1;if(!tt(r[1],t.get(a)))return!1}return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return-1===r}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return-1===r}if(!n||"object"==typeof e){for(n in r=0,e){if(Je.call(e,n)&&++r&&!Je.call(t,n))return!1;if(!(n in t)||!tt(e[n],t[n]))return!1}return Object.keys(t).length===r}}return e!=e&&t!=t}function nt(e){return e.split("-")[0]}function rt(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function at(e){return e instanceof rt(e).Element||e instanceof Element}function ot(e){return e instanceof rt(e).HTMLElement||e instanceof HTMLElement}function it(e){return"undefined"!=typeof ShadowRoot&&(e instanceof rt(e).ShadowRoot||e instanceof ShadowRoot)}var lt=Math.max,st=Math.min,ct=Math.round;function ut(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function ft(){return!/^((?!chrome|android).)*safari/i.test(ut())}function dt(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),a=1,o=1;t&&ot(e)&&(a=e.offsetWidth>0&&ct(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&ct(r.height)/e.offsetHeight||1);var i=(at(e)?rt(e):window).visualViewport,l=!ft()&&n,s=(r.left+(l&&i?i.offsetLeft:0))/a,c=(r.top+(l&&i?i.offsetTop:0))/o,u=r.width/a,f=r.height/o;return{width:u,height:f,top:c,right:s+u,bottom:c+f,left:s,x:s,y:c}}function pt(e){var t=dt(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function mt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&it(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ht(e){return e?(e.nodeName||"").toLowerCase():null}function gt(e){return rt(e).getComputedStyle(e)}function vt(e){return["table","td","th"].indexOf(ht(e))>=0}function bt(e){return((at(e)?e.ownerDocument:e.document)||window.document).documentElement}function yt(e){return"html"===ht(e)?e:e.assignedSlot||e.parentNode||(it(e)?e.host:null)||bt(e)}function xt(e){return ot(e)&&"fixed"!==gt(e).position?e.offsetParent:null}function wt(e){for(var t=rt(e),n=xt(e);n&&vt(n)&&"static"===gt(n).position;)n=xt(n);return n&&("html"===ht(n)||"body"===ht(n)&&"static"===gt(n).position)?t:n||function(e){var t=/firefox/i.test(ut());if(/Trident/i.test(ut())&&ot(e)&&"fixed"===gt(e).position)return null;var n=yt(e);for(it(n)&&(n=n.host);ot(n)&&["html","body"].indexOf(ht(n))<0;){var r=gt(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}function Et(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function kt(e,t,n){return lt(e,st(t,n))}function Ct(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function St(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var At="top",Nt="bottom",Ft="right",Ot="left",_t="auto",Lt=[At,Nt,Ft,Ot],zt="start",Tt="end",Pt="viewport",jt="popper",Dt=Lt.reduce((function(e,t){return e.concat([t+"-"+zt,t+"-"+Tt])}),[]),Rt=[].concat(Lt,[_t]).reduce((function(e,t){return e.concat([t,t+"-"+zt,t+"-"+Tt])}),[]),Mt=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],It={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,a=e.options,o=n.elements.arrow,i=n.modifiersData.popperOffsets,l=nt(n.placement),s=Et(l),c=[Ot,Ft].indexOf(l)>=0?"height":"width";if(o&&i){var u=function(e,t){return Ct("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:St(e,Lt))}(a.padding,n),f=pt(o),d="y"===s?At:Ot,p="y"===s?Nt:Ft,m=n.rects.reference[c]+n.rects.reference[s]-i[s]-n.rects.popper[c],h=i[s]-n.rects.reference[s],g=wt(o),v=g?"y"===s?g.clientHeight||0:g.clientWidth||0:0,b=m/2-h/2,y=u[d],x=v-f[c]-u[p],w=v/2-f[c]/2+b,E=kt(y,w,x),k=s;n.modifiersData[r]=((t={})[k]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&mt(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Bt(e){return e.split("-")[1]}var qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ut(e){var t,n=e.popper,r=e.popperRect,a=e.placement,o=e.variation,i=e.offsets,l=e.position,s=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=i.x,p=void 0===d?0:d,m=i.y,h=void 0===m?0:m,g="function"==typeof u?u({x:p,y:h}):{x:p,y:h};p=g.x,h=g.y;var v=i.hasOwnProperty("x"),b=i.hasOwnProperty("y"),y=Ot,x=At,w=window;if(c){var E=wt(n),k="clientHeight",C="clientWidth";E===rt(n)&&"static"!==gt(E=bt(n)).position&&"absolute"===l&&(k="scrollHeight",C="scrollWidth"),(a===At||(a===Ot||a===Ft)&&o===Tt)&&(x=Nt,h-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[k])-r.height,h*=s?1:-1),a!==Ot&&(a!==At&&a!==Nt||o!==Tt)||(y=Ft,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[C])-r.width,p*=s?1:-1)}var S,A=Object.assign({position:l},c&&qt),N=!0===u?function(e,t){var n=e.x,r=e.y,a=t.devicePixelRatio||1;return{x:ct(n*a)/a||0,y:ct(r*a)/a||0}}({x:p,y:h},rt(n)):{x:p,y:h};return p=N.x,h=N.y,s?Object.assign({},A,((S={})[x]=b?"0":"",S[y]=v?"0":"",S.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+h+"px)":"translate3d("+p+"px, "+h+"px, 0)",S)):Object.assign({},A,((t={})[x]=b?h+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var $t={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,a=void 0===r||r,o=n.adaptive,i=void 0===o||o,l=n.roundOffsets,s=void 0===l||l,c={placement:nt(t.placement),variation:Bt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:a,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Ut(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ut(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Ht={passive:!0},Wt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,o=void 0===a||a,i=r.resize,l=void 0===i||i,s=rt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",n.update,Ht)})),l&&s.addEventListener("resize",n.update,Ht),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Ht)})),l&&s.removeEventListener("resize",n.update,Ht)}},data:{}},Vt={left:"right",right:"left",bottom:"top",top:"bottom"};function Gt(e){return e.replace(/left|right|bottom|top/g,(function(e){return Vt[e]}))}var Qt={start:"end",end:"start"};function Yt(e){return e.replace(/start|end/g,(function(e){return Qt[e]}))}function Kt(e){var t=rt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Xt(e){return dt(bt(e)).left+Kt(e).scrollLeft}function Zt(e){var t=gt(e),n=t.overflow,r=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+r)}function Jt(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:ot(e)&&Zt(e)?e:Jt(yt(e))}function en(e,t){var n;void 0===t&&(t=[]);var r=Jt(e),a=r===(null==(n=e.ownerDocument)?void 0:n.body),o=rt(r),i=a?[o].concat(o.visualViewport||[],Zt(r)?r:[]):r,l=t.concat(i);return a?l:l.concat(en(yt(i)))}function tn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function nn(e,t,n){return t===Pt?tn(function(e,t){var n=rt(e),r=bt(e),a=n.visualViewport,o=r.clientWidth,i=r.clientHeight,l=0,s=0;if(a){o=a.width,i=a.height;var c=ft();(c||!c&&"fixed"===t)&&(l=a.offsetLeft,s=a.offsetTop)}return{width:o,height:i,x:l+Xt(e),y:s}}(e,n)):at(t)?function(e,t){var n=dt(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):tn(function(e){var t,n=bt(e),r=Kt(e),a=null==(t=e.ownerDocument)?void 0:t.body,o=lt(n.scrollWidth,n.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0),i=lt(n.scrollHeight,n.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0),l=-r.scrollLeft+Xt(e),s=-r.scrollTop;return"rtl"===gt(a||n).direction&&(l+=lt(n.clientWidth,a?a.clientWidth:0)-o),{width:o,height:i,x:l,y:s}}(bt(e)))}function rn(e){var t,n=e.reference,r=e.element,a=e.placement,o=a?nt(a):null,i=a?Bt(a):null,l=n.x+n.width/2-r.width/2,s=n.y+n.height/2-r.height/2;switch(o){case At:t={x:l,y:n.y-r.height};break;case Nt:t={x:l,y:n.y+n.height};break;case Ft:t={x:n.x+n.width,y:s};break;case Ot:t={x:n.x-r.width,y:s};break;default:t={x:n.x,y:n.y}}var c=o?Et(o):null;if(null!=c){var u="y"===c?"height":"width";switch(i){case zt:t[c]=t[c]-(n[u]/2-r[u]/2);break;case Tt:t[c]=t[c]+(n[u]/2-r[u]/2)}}return t}function an(e,t){void 0===t&&(t={});var n=t,r=n.placement,a=void 0===r?e.placement:r,o=n.strategy,i=void 0===o?e.strategy:o,l=n.boundary,s=void 0===l?"clippingParents":l,c=n.rootBoundary,u=void 0===c?Pt:c,f=n.elementContext,d=void 0===f?jt:f,p=n.altBoundary,m=void 0!==p&&p,h=n.padding,g=void 0===h?0:h,v=Ct("number"!=typeof g?g:St(g,Lt)),b=d===jt?"reference":jt,y=e.rects.popper,x=e.elements[m?b:d],w=function(e,t,n,r){var a="clippingParents"===t?function(e){var t=en(yt(e)),n=["absolute","fixed"].indexOf(gt(e).position)>=0&&ot(e)?wt(e):e;return at(n)?t.filter((function(e){return at(e)&&mt(e,n)&&"body"!==ht(e)})):[]}(e):[].concat(t),o=[].concat(a,[n]),i=o[0],l=o.reduce((function(t,n){var a=nn(e,n,r);return t.top=lt(a.top,t.top),t.right=st(a.right,t.right),t.bottom=st(a.bottom,t.bottom),t.left=lt(a.left,t.left),t}),nn(e,i,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}(at(x)?x:x.contextElement||bt(e.elements.popper),s,u,i),E=dt(e.elements.reference),k=rn({reference:E,element:y,strategy:"absolute",placement:a}),C=tn(Object.assign({},y,k)),S=d===jt?C:E,A={top:w.top-S.top+v.top,bottom:S.bottom-w.bottom+v.bottom,left:w.left-S.left+v.left,right:S.right-w.right+v.right},N=e.modifiersData.offset;if(d===jt&&N){var F=N[a];Object.keys(A).forEach((function(e){var t=[Ft,Nt].indexOf(e)>=0?1:-1,n=[At,Nt].indexOf(e)>=0?"y":"x";A[e]+=F[n]*t}))}return A}var on={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var a=n.mainAxis,o=void 0===a||a,i=n.altAxis,l=void 0===i||i,s=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,m=void 0===p||p,h=n.allowedAutoPlacements,g=t.options.placement,v=nt(g),b=s||(v!==g&&m?function(e){if(nt(e)===_t)return[];var t=Gt(e);return[Yt(e),t,Yt(t)]}(g):[Gt(g)]),y=[g].concat(b).reduce((function(e,n){return e.concat(nt(n)===_t?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,a=n.boundary,o=n.rootBoundary,i=n.padding,l=n.flipVariations,s=n.allowedAutoPlacements,c=void 0===s?Rt:s,u=Bt(r),f=u?l?Dt:Dt.filter((function(e){return Bt(e)===u})):Lt,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=an(e,{placement:n,boundary:a,rootBoundary:o,padding:i})[nt(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:m,allowedAutoPlacements:h}):n)}),[]),x=t.rects.reference,w=t.rects.popper,E=new Map,k=!0,C=y[0],S=0;S<y.length;S++){var A=y[S],N=nt(A),F=Bt(A)===zt,O=[At,Nt].indexOf(N)>=0,_=O?"width":"height",L=an(t,{placement:A,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),z=O?F?Ft:Ot:F?Nt:At;x[_]>w[_]&&(z=Gt(z));var T=Gt(z),P=[];if(o&&P.push(L[N]<=0),l&&P.push(L[z]<=0,L[T]<=0),P.every((function(e){return e}))){C=A,k=!1;break}E.set(A,P)}if(k)for(var j=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},D=m?3:1;D>0&&"break"!==j(D);D--);t.placement!==C&&(t.modifiersData[r]._skip=!0,t.placement=C,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ln(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function sn(e){return[At,Ft,Nt,Ot].some((function(t){return e[t]>=0}))}var cn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,a=n.offset,o=void 0===a?[0,0]:a,i=Rt.reduce((function(e,n){return e[n]=function(e,t,n){var r=nt(e),a=[Ot,At].indexOf(r)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,i=o[0],l=o[1];return i=i||0,l=(l||0)*a,[Ot,Ft].indexOf(r)>=0?{x:l,y:i}:{x:i,y:l}}(n,t.rects,o),e}),{}),l=i[t.placement],s=l.x,c=l.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=i}},un={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,a=n.mainAxis,o=void 0===a||a,i=n.altAxis,l=void 0!==i&&i,s=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,m=n.tetherOffset,h=void 0===m?0:m,g=an(t,{boundary:s,rootBoundary:c,padding:f,altBoundary:u}),v=nt(t.placement),b=Bt(t.placement),y=!b,x=Et(v),w="x"===x?"y":"x",E=t.modifiersData.popperOffsets,k=t.rects.reference,C=t.rects.popper,S="function"==typeof h?h(Object.assign({},t.rects,{placement:t.placement})):h,A="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,F={x:0,y:0};if(E){if(o){var O,_="y"===x?At:Ot,L="y"===x?Nt:Ft,z="y"===x?"height":"width",T=E[x],P=T+g[_],j=T-g[L],D=p?-C[z]/2:0,R=b===zt?k[z]:C[z],M=b===zt?-C[z]:-k[z],I=t.elements.arrow,B=p&&I?pt(I):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},U=q[_],$=q[L],H=kt(0,k[z],B[z]),W=y?k[z]/2-D-H-U-A.mainAxis:R-H-U-A.mainAxis,V=y?-k[z]/2+D+H+$+A.mainAxis:M+H+$+A.mainAxis,G=t.elements.arrow&&wt(t.elements.arrow),Q=G?"y"===x?G.clientTop||0:G.clientLeft||0:0,Y=null!=(O=null==N?void 0:N[x])?O:0,K=T+V-Y,X=kt(p?st(P,T+W-Y-Q):P,T,p?lt(j,K):j);E[x]=X,F[x]=X-T}if(l){var Z,J="x"===x?At:Ot,ee="x"===x?Nt:Ft,te=E[w],ne="y"===w?"height":"width",re=te+g[J],ae=te-g[ee],oe=-1!==[At,Ot].indexOf(v),ie=null!=(Z=null==N?void 0:N[w])?Z:0,le=oe?re:te-k[ne]-C[ne]-ie+A.altAxis,se=oe?te+k[ne]+C[ne]-ie-A.altAxis:ae,ce=p&&oe?function(e,t,n){var r=kt(e,t,n);return r>n?n:r}(le,te,se):kt(p?le:re,te,p?se:ae);E[w]=ce,F[w]=ce-te}t.modifiersData[r]=F}},requiresIfExists:["offset"]};function fn(e,t,n){void 0===n&&(n=!1);var r,a,o=ot(t),i=ot(t)&&function(e){var t=e.getBoundingClientRect(),n=ct(t.width)/e.offsetWidth||1,r=ct(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),l=bt(t),s=dt(e,i,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(o||!o&&!n)&&(("body"!==ht(t)||Zt(l))&&(c=(r=t)!==rt(r)&&ot(r)?{scrollLeft:(a=r).scrollLeft,scrollTop:a.scrollTop}:Kt(r)),ot(t)?((u=dt(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):l&&(u.x=Xt(l))),{x:s.left+c.scrollLeft-u.x,y:s.top+c.scrollTop-u.y,width:s.width,height:s.height}}function dn(e){var t=new Map,n=new Set,r=[];function a(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&a(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||a(e)})),r}var pn={placement:"bottom",modifiers:[],strategy:"absolute"};function mn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}const hn=function(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,a=t.defaultOptions,o=void 0===a?pn:a;return function(e,t,n){void 0===n&&(n=o);var a,i,l={placement:"bottom",orderedModifiers:[],options:Object.assign({},pn,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},s=[],c=!1,u={state:l,setOptions:function(n){var a="function"==typeof n?n(l.options):n;f(),l.options=Object.assign({},o,l.options,a),l.scrollParents={reference:at(e)?en(e):e.contextElement?en(e.contextElement):[],popper:en(t)};var i,c,d=function(e){var t=dn(e);return Mt.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((i=[].concat(r,l.options.modifiers),c=i.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(c).map((function(e){return c[e]}))));return l.orderedModifiers=d.filter((function(e){return e.enabled})),l.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,a=e.effect;if("function"==typeof a){var o=a({state:l,name:t,instance:u,options:r});s.push(o||function(){})}})),u.update()},forceUpdate:function(){if(!c){var e=l.elements,t=e.reference,n=e.popper;if(mn(t,n)){l.rects={reference:fn(t,wt(n),"fixed"===l.options.strategy),popper:pt(n)},l.reset=!1,l.placement=l.options.placement,l.orderedModifiers.forEach((function(e){return l.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<l.orderedModifiers.length;r++)if(!0!==l.reset){var a=l.orderedModifiers[r],o=a.fn,i=a.options,s=void 0===i?{}:i,f=a.name;"function"==typeof o&&(l=o({state:l,options:s,name:f,instance:u})||l)}else l.reset=!1,r=-1}}},update:(a=function(){return new Promise((function(e){u.forceUpdate(),e(l)}))},function(){return i||(i=new Promise((function(e){Promise.resolve().then((function(){i=void 0,e(a())}))}))),i}),destroy:function(){f(),c=!0}};if(!mn(e,t))return u;function f(){s.forEach((function(e){return e()})),s=[]}return u.setOptions(n).then((function(e){!c&&n.onFirstUpdate&&n.onFirstUpdate(e)})),u}}({defaultModifiers:[{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,a=t.rects.popper,o=t.modifiersData.preventOverflow,i=an(t,{elementContext:"reference"}),l=an(t,{altBoundary:!0}),s=ln(i,r),c=ln(l,a,o),u=sn(s),f=sn(c);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=rn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},$t,Wt,cn,on,un,It]}),gn=["enabled","placement","strategy","modifiers"],vn={name:"applyStyles",enabled:!1,phase:"afterWrite",fn:()=>{}},bn={name:"ariaDescribedBy",enabled:!0,phase:"afterWrite",effect:({state:e})=>()=>{const{reference:t,popper:n}=e.elements;if("removeAttribute"in t){const e=(t.getAttribute("aria-describedby")||"").split(",").filter((e=>e.trim()!==n.id));e.length?t.setAttribute("aria-describedby",e.join(",")):t.removeAttribute("aria-describedby")}},fn:({state:e})=>{var t;const{popper:n,reference:r}=e.elements,a=null==(t=n.getAttribute("role"))?void 0:t.toLowerCase();if(n.id&&"tooltip"===a&&"setAttribute"in r){const e=r.getAttribute("aria-describedby");if(e&&-1!==e.split(",").indexOf(n.id))return;r.setAttribute("aria-describedby",e?`${e},${n.id}`:n.id)}}},yn=[];var xn=function(e,n,r={}){let{enabled:a=!0,placement:o="bottom",strategy:i="absolute",modifiers:l=yn}=r,s=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(r,gn);const c=(0,t.useRef)(l),u=(0,t.useRef)(),f=(0,t.useCallback)((()=>{var e;null==(e=u.current)||e.update()}),[]),d=(0,t.useCallback)((()=>{var e;null==(e=u.current)||e.forceUpdate()}),[]),[p,m]=(v=(0,t.useState)({placement:o,update:f,forceUpdate:d,attributes:{},styles:{popper:{},arrow:{}}}),b=S(),[v[0],(0,t.useCallback)((function(e){if(b())return v[1](e)}),[b,v[1]])]),h=(0,t.useMemo)((()=>({name:"updateStateModifier",enabled:!0,phase:"write",requires:["computeStyles"],fn:({state:e})=>{const t={},n={};Object.keys(e.elements).forEach((r=>{t[r]=e.styles[r],n[r]=e.attributes[r]})),m({state:e,styles:t,attributes:n,update:f,forceUpdate:d,placement:e.placement})}})),[f,d,m]),g=(0,t.useMemo)((()=>(tt(c.current,l)||(c.current=l),c.current)),[l]);var v,b;return(0,t.useEffect)((()=>{u.current&&a&&u.current.setOptions({placement:o,strategy:i,modifiers:[...g,h,vn]})}),[i,o,h,a,g]),(0,t.useEffect)((()=>{if(a&&null!=e&&null!=n)return u.current=hn(e,n,Object.assign({},s,{placement:o,strategy:i,modifiers:[...g,bn,h]})),()=>{null!=u.current&&(u.current.destroy(),u.current=void 0,m((e=>Object.assign({},e,{attributes:{},styles:{popper:{}}}))))}}),[a,e,n]),p};function wn(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):void 0}var En=a(473),kn=a.n(En);const Cn=()=>{},Sn=e=>e&&("current"in e?e.current:e),An={click:"mousedown",mouseup:"mousedown",pointerup:"pointerdown"};var Nn=function(e,n=Cn,{disabled:r,clickTrigger:a="click"}={}){const o=(0,t.useRef)(!1),i=(0,t.useRef)(!1),l=(0,t.useCallback)((t=>{const n=Sn(e);var r;kn()(!!n,"ClickOutside captured a close event but does not have a ref to compare it to. useClickOutside(), should be passed a ref that resolves to a DOM node"),o.current=!n||!!((r=t).metaKey||r.altKey||r.ctrlKey||r.shiftKey)||!function(e){return 0===e.button}(t)||!!wn(n,t.target)||i.current,i.current=!1}),[e]),s=C((t=>{const n=Sn(e);n&&wn(n,t.target)&&(i.current=!0)})),c=C((e=>{o.current||n(e)}));(0,t.useEffect)((()=>{if(r||null==e)return;const t=Z(Sn(e));let n=(t.defaultView||window).event,o=null;An[a]&&(o=ce(t,An[a],s,!0));const i=ce(t,a,l,!0),u=ce(t,a,(e=>{e!==n?c(e):n=void 0}));let f=[];return"ontouchstart"in t.documentElement&&(f=[].slice.call(t.body.children).map((e=>ce(e,"mousemove",Cn)))),()=>{null==o||o(),i(),u(),f.forEach((e=>e()))}}),[e,r,a,l,s,c])};function Fn(e={}){return Array.isArray(e)?e:Object.keys(e).map((t=>(e[t].name=t,e[t])))}const On=["children"],_n=()=>{};function Ln(e={}){const n=(0,t.useContext)(Ze),[r,a]=(0,t.useState)(null),o=(0,t.useRef)(!1),{flip:i,offset:l,rootCloseEvent:s,fixed:c=!1,placement:u,popperConfig:f={},enableEventListeners:d=!0,usePopper:p=!!n}=e,m=null==(null==n?void 0:n.show)?!!e.show:n.show;m&&!o.current&&(o.current=!0);const{placement:h,setMenu:g,menuElement:v,toggleElement:b}=n||{},y=xn(b,v,function({enabled:e,enableEvents:t,placement:n,flip:r,offset:a,fixed:o,containerPadding:i,arrowElement:l,popperConfig:s={}}){var c,u,f,d,p;const m=function(e){const t={};return Array.isArray(e)?(null==e||e.forEach((e=>{t[e.name]=e})),t):e||t}(s.modifiers);return Object.assign({},s,{placement:n,enabled:e,strategy:o?"fixed":s.strategy,modifiers:Fn(Object.assign({},m,{eventListeners:{enabled:t,options:null==(c=m.eventListeners)?void 0:c.options},preventOverflow:Object.assign({},m.preventOverflow,{options:i?Object.assign({padding:i},null==(u=m.preventOverflow)?void 0:u.options):null==(f=m.preventOverflow)?void 0:f.options}),offset:{options:Object.assign({offset:a},null==(d=m.offset)?void 0:d.options)},arrow:Object.assign({},m.arrow,{enabled:!!l,options:Object.assign({},null==(p=m.arrow)?void 0:p.options,{element:l})}),flip:Object.assign({enabled:!!r},m.flip)}))})}({placement:u||h||"bottom-start",enabled:p,enableEvents:null==d?m:d,offset:l,flip:i,fixed:c,arrowElement:r,popperConfig:f})),x=Object.assign({ref:g||_n,"aria-labelledby":null==b?void 0:b.id},y.attributes.popper,{style:y.styles.popper}),w={show:m,placement:h,hasShown:o.current,toggle:null==n?void 0:n.toggle,popper:p?y:null,arrowProps:p?Object.assign({ref:a},y.attributes.arrow,{style:y.styles.arrow}):{}};return Nn(v,(e=>{null==n||n.toggle(!1,e)}),{clickTrigger:s,disabled:!m}),[x,w]}function zn(e){let{children:t}=e,n=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,On);const[r,a]=Ln(n);return(0,O.jsx)(O.Fragment,{children:t(r,a)})}zn.displayName="DropdownMenu",zn.defaultProps={usePopper:!0};var Tn=zn;const Pn={prefix:String(Math.round(1e10*Math.random())),current:0},jn=t.createContext(Pn);let Dn=Boolean("undefined"!=typeof window&&window.document&&window.document.createElement),Rn=new WeakMap;const Mn=e=>{var t;return"menu"===(null==(t=e.getAttribute("role"))?void 0:t.toLowerCase())},In=()=>{};function Bn(){const e=function(e){let n=(0,t.useContext)(jn);n!==Pn||Dn||console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let r=function(e=!1){let n=(0,t.useContext)(jn),r=(0,t.useRef)(null);if(null===r.current&&!e){var a,o;let e=null===(a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)||void 0===a||null===(o=a.ReactCurrentOwner)||void 0===o?void 0:o.current;if(e){let t=Rn.get(e);null==t?Rn.set(e,{id:n.current,state:e.memoizedState}):e.memoizedState!==t.state&&(n.current=t.id,Rn.delete(e))}r.current=++n.current}return r.current}(!1);return`react-aria${n.prefix}-${r}`}(),{show:n=!1,toggle:r=In,setToggle:a,menuElement:o}=(0,t.useContext)(Ze)||{},i=(0,t.useCallback)((e=>{r(!n,e)}),[n,r]),l={id:e,ref:a||In,onClick:i,"aria-expanded":!!n};return o&&Mn(o)&&(l["aria-haspopup"]=!0),[l,{show:n,toggle:r}]}function qn({children:e}){const[t,n]=Bn();return(0,O.jsx)(O.Fragment,{children:e(t,n)})}qn.displayName="DropdownToggle";var Un=qn;const $n=(e,t=null)=>null!=e?String(e):t||null;var Hn=t.createContext(null);const Wn=t.createContext(null);Wn.displayName="NavContext";var Vn=Wn;const Gn="data-rr-ui-";function Qn(e){return`${Gn}${e}`}const Yn=["eventKey","disabled","onClick","active","as"];function Kn({key:e,href:n,active:r,disabled:a,onClick:o}){const i=(0,t.useContext)(Hn),l=(0,t.useContext)(Vn),{activeKey:s}=l||{},c=$n(e,n),u=null==r&&null!=e?$n(s)===c:r;return[{onClick:C((e=>{a||(null==o||o(e),i&&!e.isPropagationStopped()&&i(c,e))})),"aria-disabled":a||void 0,"aria-selected":u,[Qn("dropdown-item")]:""},{isActive:u}]}const Xn=t.forwardRef(((e,t)=>{let{eventKey:n,disabled:r,onClick:a,active:o,as:i=T}=e,l=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,Yn);const[s]=Kn({key:n,href:l.href,disabled:r,onClick:a,active:o});return(0,O.jsx)(i,Object.assign({},l,{ref:t},s))}));Xn.displayName="DropdownItem";var Zn=Xn;const Jn=(0,t.createContext)(ae?window:void 0);function er(){return(0,t.useContext)(Jn)}function tr(){const e=Xe(),n=(0,t.useRef)(null),r=(0,t.useCallback)((t=>{n.current=t,e()}),[e]);return[n,r]}function nr({defaultShow:e,show:n,onSelect:r,onToggle:a,itemSelector:o=`* [${Qn("dropdown-item")}]`,focusFirstItemOnShow:i,placement:l="bottom-start",children:s}){const c=er(),[u,f]=function(e,n,r){const a=(0,t.useRef)(void 0!==e),[o,i]=(0,t.useState)(n),l=void 0!==e,s=a.current;return a.current=l,!l&&s&&o!==n&&i(n),[l?e:o,(0,t.useCallback)(((e,...t)=>{r&&r(e,...t),i(e)}),[r])]}(n,e,a),[d,p]=tr(),m=d.current,[h,g]=tr(),v=h.current,b=A(u),y=(0,t.useRef)(null),x=(0,t.useRef)(!1),w=(0,t.useContext)(Hn),E=(0,t.useCallback)(((e,t,n=(null==t?void 0:t.type))=>{f(e,{originalEvent:t,source:n})}),[f]),k=C(((e,t)=>{null==r||r(e,t),E(!1,t,"select"),t.isPropagationStopped()||null==w||w(e,t)})),S=(0,t.useMemo)((()=>({toggle:E,placement:l,show:u,menuElement:m,toggleElement:v,setMenu:p,setToggle:g})),[E,l,u,m,v,p,g]);m&&b&&!u&&(x.current=m.contains(m.ownerDocument.activeElement));const N=C((()=>{v&&v.focus&&v.focus()})),F=C((()=>{const e=y.current;let t=i;if(null==t&&(t=!(!d.current||!Mn(d.current))&&"keyboard"),!1===t||"keyboard"===t&&!/^key.+$/.test(e))return;const n=Ke(d.current,o)[0];n&&n.focus&&n.focus()}));(0,t.useEffect)((()=>{u?F():x.current&&(x.current=!1,N())}),[u,x,N,F]),(0,t.useEffect)((()=>{y.current=null}));const _=(e,t)=>{if(!d.current)return null;const n=Ke(d.current,o);let r=n.indexOf(e)+t;return r=Math.max(0,Math.min(r,n.length)),n[r]};return function(e,n,r,a){void 0===a&&(a=!1);var o=C((e=>{var t,n;const{key:r}=e,a=e.target,o=null==(t=d.current)?void 0:t.contains(a),i=null==(n=h.current)?void 0:n.contains(a);if(/input|textarea/i.test(a.tagName)&&(" "===r||"Escape"!==r&&o||"Escape"===r&&"search"===a.type))return;if(!o&&!i)return;if(!("Tab"!==r||d.current&&u))return;y.current=e.type;const l={originalEvent:e,source:e.type};switch(r){case"ArrowUp":{const t=_(a,-1);return t&&t.focus&&t.focus(),void e.preventDefault()}case"ArrowDown":if(e.preventDefault(),u){const e=_(a,1);e&&e.focus&&e.focus()}else f(!0,l);return;case"Tab":se(a.ownerDocument,"keyup",(e=>{var t;("Tab"!==e.key||e.target)&&null!=(t=d.current)&&t.contains(e.target)||f(!1,l)}),{once:!0});break;case"Escape":"Escape"===r&&(e.preventDefault(),e.stopPropagation()),f(!1,l)}}));(0,t.useEffect)((function(){var t="function"==typeof e?e():e;return t.addEventListener(n,o,a),function(){return t.removeEventListener(n,o,a)}}),[e])}((0,t.useCallback)((()=>c.document),[c]),"keydown"),(0,O.jsx)(Hn.Provider,{value:k,children:(0,O.jsx)(Ze.Provider,{value:S,children:s})})}Jn.Provider,nr.displayName="Dropdown",nr.Menu=Tn,nr.Toggle=Un,nr.Item=Zn;var rr=nr;const ar=t.createContext({});ar.displayName="DropdownContext";var or=ar;const ir=t.forwardRef((({bsPrefix:e,className:t,eventKey:n,disabled:r=!1,onClick:a,active:o,as:i=D,...l},s)=>{const c=B(e,"dropdown-item"),[u,f]=Kn({key:n,href:l.href,disabled:r,onClick:a,active:o});return(0,O.jsx)(i,{...l,...u,ref:s,className:v()(t,c,f.isActive&&"active",r&&"disabled")})}));ir.displayName="DropdownItem";var lr=ir;const sr=t.createContext(null);sr.displayName="InputGroupContext";var cr=sr;const ur=t.createContext(null);ur.displayName="NavbarContext";var fr=ur;function dr(e,t){return e}function pr(e,t,n){let r=e?n?"bottom-start":"bottom-end":n?"bottom-end":"bottom-start";return"up"===t?r=e?n?"top-start":"top-end":n?"top-end":"top-start":"end"===t?r=e?n?"left-end":"right-end":n?"left-start":"right-start":"start"===t?r=e?n?"right-end":"left-end":n?"right-start":"left-start":"down-centered"===t?r="bottom":"up-centered"===t&&(r="top"),r}const mr=t.forwardRef((({bsPrefix:e,className:n,align:r,rootCloseEvent:a,flip:o,show:i,renderOnMount:l,as:s="div",popperConfig:c,variant:u,...f},d)=>{let p=!1;const m=(0,t.useContext)(fr),h=B(e,"dropdown-menu"),{align:g,drop:b,isRTL:y}=(0,t.useContext)(or);r=r||g;const x=(0,t.useContext)(cr),w=[];if(r)if("object"==typeof r){const e=Object.keys(r);if(e.length){const t=e[0],n=r[t];p="start"===n,w.push(`${h}-${t}-${n}`)}}else"end"===r&&(p=!0);const E=pr(p,b,y),[k,{hasShown:C,popper:S,show:A,toggle:N}]=Ln({flip:o,rootCloseEvent:a,show:i,usePopper:!m&&0===w.length,offset:[0,2],popperConfig:c,placement:E});if(k.ref=he(dr(d),k.ref),F((()=>{A&&(null==S||S.update())}),[A]),!C&&!l&&!x)return null;"string"!=typeof s&&(k.show=A,k.close=()=>null==N?void 0:N(!1),k.align=r);let _=f.style;return null!=S&&S.placement&&(_={...f.style,...k.style},f["x-placement"]=S.placement),(0,O.jsx)(s,{...f,...k,style:_,...(w.length||m)&&{"data-bs-popper":"static"},className:v()(n,h,A&&"show",p&&`${h}-end`,u&&`${h}-${u}`,...w)})}));mr.displayName="DropdownMenu",mr.defaultProps={flip:!0};var hr=mr;const gr=t.forwardRef((({as:e,bsPrefix:t,variant:n,size:r,active:a,className:o,...i},l)=>{const s=B(t,"btn"),[c,{tagName:u}]=L({tagName:e,...i}),f=u;return(0,O.jsx)(f,{...c,...i,ref:l,className:v()(o,s,a&&"active",n&&`${s}-${n}`,r&&`${s}-${r}`,i.href&&i.disabled&&"disabled")})}));gr.displayName="Button",gr.defaultProps={variant:"primary",active:!1,disabled:!1};var vr=gr;const br=t.forwardRef((({bsPrefix:e,split:n,className:r,childBsPrefix:a,as:o=vr,...i},l)=>{const s=B(e,"dropdown-toggle"),c=(0,t.useContext)(Ze);void 0!==a&&(i.bsPrefix=a);const[u]=Bn();return u.ref=he(u.ref,dr(l)),(0,O.jsx)(o,{className:v()(r,s,n&&`${s}-split`,(null==c?void 0:c.show)&&"show"),...u,...i})}));br.displayName="DropdownToggle";var yr=br;const xr=Ae("dropdown-header",{defaultProps:{role:"heading"}}),wr=Ae("dropdown-divider",{Component:"hr",defaultProps:{role:"separator"}}),Er=Ae("dropdown-item-text",{Component:"span"}),kr=t.forwardRef(((e,n)=>{const{bsPrefix:r,drop:a,show:o,className:i,align:l,onSelect:s,onToggle:c,focusFirstItemOnShow:u,as:f="div",navbar:d,autoClose:p,...m}=E(e,{show:"onToggle"}),h=(0,t.useContext)(cr),g=B(r,"dropdown"),b=function(){const{dir:e}=(0,t.useContext)(R);return"rtl"===e}(),y=C(((e,t)=>{var n;t.originalEvent.currentTarget!==document||"keydown"===t.source&&"Escape"!==t.originalEvent.key||(t.source="rootClose"),n=t.source,(!1===p?"click"===n:"inside"===p?"rootClose"!==n:"outside"!==p||"select"!==n)&&(null==c||c(e,t))})),x=pr("end"===l,a,b),w=(0,t.useMemo)((()=>({align:l,drop:a,isRTL:b})),[l,a,b]),k={down:g,"down-centered":`${g}-center`,up:"dropup","up-centered":"dropup-center dropup",end:"dropend",start:"dropstart"};return(0,O.jsx)(or.Provider,{value:w,children:(0,O.jsx)(rr,{placement:x,show:o,onSelect:s,onToggle:y,focusFirstItemOnShow:u,itemSelector:`.${g}-item:not(.disabled):not(:disabled)`,children:h?m.children:(0,O.jsx)(f,{...m,ref:n,className:v()(i,o&&"show",k[a])})})})}));kr.displayName="Dropdown",kr.defaultProps={navbar:!1,align:"start",autoClose:!0,drop:"down"};var Cr=Object.assign(kr,{Toggle:yr,Menu:hr,Item:lr,ItemText:Er,Divider:wr,Header:xr}),Sr=t.createContext(null);const Ar=["as","active","eventKey"];function Nr({key:e,onClick:n,active:r,id:a,role:o,disabled:i}){const l=(0,t.useContext)(Hn),s=(0,t.useContext)(Vn),c=(0,t.useContext)(Sr);let u=r;const f={role:o};if(s){o||"tablist"!==s.role||(f.role="tab");const t=s.getControllerId(null!=e?e:null),n=s.getControlledId(null!=e?e:null);f[Qn("event-key")]=e,f.id=t||a,u=null==r&&null!=e?s.activeKey===e:r,!u&&(null!=c&&c.unmountOnExit||null!=c&&c.mountOnEnter)||(f["aria-controls"]=n)}return"tab"===f.role&&(f["aria-selected"]=u,u||(f.tabIndex=-1),i&&(f.tabIndex=-1,f["aria-disabled"]=!0)),f.onClick=C((t=>{i||(null==n||n(t),null!=e&&l&&!t.isPropagationStopped()&&l(e,t))})),[f,{isActive:u}]}const Fr=t.forwardRef(((e,t)=>{let{as:n=T,active:r,eventKey:a}=e,o=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,Ar);const[i,l]=Nr(Object.assign({key:$n(a,o.href),active:r},o));return i[Qn("active")]=l.isActive,(0,O.jsx)(n,Object.assign({},o,i,{ref:t}))}));Fr.displayName="NavItem";var Or=Fr;const _r=t.forwardRef((({bsPrefix:e,className:t,as:n=D,active:r,eventKey:a,...o},i)=>{e=B(e,"nav-link");const[l,s]=Nr({key:$n(a,o.href),active:r,...o});return(0,O.jsx)(n,{...o,...l,ref:i,className:v()(t,e,o.disabled&&"disabled",s.isActive&&"active")})}));_r.displayName="NavLink",_r.defaultProps={disabled:!1};var Lr=_r;const zr=t.forwardRef((({id:e,title:t,children:n,bsPrefix:r,className:a,rootCloseEvent:o,menuRole:i,disabled:l,active:s,renderMenuOnMount:c,menuVariant:u,...f},d)=>{const p=B(void 0,"nav-item");return(0,O.jsxs)(Cr,{ref:d,...f,className:v()(a,p),children:[(0,O.jsx)(Cr.Toggle,{id:e,eventKey:null,active:s,disabled:l,childBsPrefix:r,as:Lr,children:t}),(0,O.jsx)(Cr.Menu,{role:i,renderOnMount:c,rootCloseEvent:o,variant:u,children:n})]})}));zr.displayName="NavDropdown";var Tr=Object.assign(zr,{Item:Cr.Item,ItemText:Cr.ItemText,Divider:Cr.Divider,Header:Cr.Header});function Pr(e){return Pr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pr(e)}function jr(){jr=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Pr(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Dr(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function Rr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Mr(r,a){var o,i,l=(o=(0,t.useState)(null),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(o,i)||function(e,t){if(e){if("string"==typeof e)return Rr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Rr(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=l[0],c=l[1],u=s;if(null===s){var f,d=function(){var t,r=(t=jr().mark((function t(){var r;return jr().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,c(n().createElement(De,{size:"sm"})),r=new e,t.next=5,r.logout();case 5:a()&&f("You have been logged out.","success"),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),f("Logout failed: "+t.t0.message,"error");case 11:case"end":return t.stop()}}),t,null,[[0,8]])})),function(){var e=this,n=arguments;return new Promise((function(r,a){var o=t.apply(e,n);function i(e){Dr(o,r,a,i,l,"next",e)}function l(e){Dr(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(){return r.apply(this,arguments)}}(),p=function(e){"anonymous"===e.username?f():c(function(e,t){var r=n().createElement(n().Fragment,null,e.username," ",n().createElement("i",{className:"bi bi-person-fill"}));return n().createElement(Tr,{align:"end",title:r},n().createElement(Tr.Item,{as:"button",onClick:t,href:"#"},"Logout"))}(e,d))},m=function(e){f(e.message,"error")},h=function(e){r(e)&&p(e)};f=function(e,t){c(n().createElement(Qe,{message:e,messageType:t,then:h,onError:m}))},(new e).getSessionInfo().then(p).catch((function(e){return f(e.message,"info")})),u=n().createElement(De,{size:"sm"})}return n().createElement("div",{className:"user-component"},u)}Mr.defaultProps={onLogin:function(){return!0},onLogout:function(){return!0}};var Ir={name:"CaosDB"};a(391);const Br=["as","onSelect","activeKey","role","onKeyDown"],qr=()=>{},Ur=Qn("event-key"),$r=t.forwardRef(((e,n)=>{let{as:r="div",onSelect:a,activeKey:o,role:i,onKeyDown:l}=e,s=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,Br);const c=Xe(),u=(0,t.useRef)(!1),f=(0,t.useContext)(Hn),d=(0,t.useContext)(Sr);let p,m;d&&(i=i||"tablist",o=d.activeKey,p=d.getControlledId,m=d.getControllerId);const h=(0,t.useRef)(null),g=e=>{const t=h.current;if(!t)return null;const n=Ke(t,`[${Ur}]:not([aria-disabled=true])`),r=t.querySelector("[aria-selected=true]");if(!r||r!==document.activeElement)return null;const a=n.indexOf(r);if(-1===a)return null;let o=a+e;return o>=n.length&&(o=0),o<0&&(o=n.length-1),n[o]},v=(e,t)=>{null!=e&&(null==a||a(e,t),null==f||f(e,t))};(0,t.useEffect)((()=>{if(h.current&&u.current){const e=h.current.querySelector(`[${Ur}][aria-selected=true]`);null==e||e.focus()}u.current=!1}));const b=he(n,h);return(0,O.jsx)(Hn.Provider,{value:v,children:(0,O.jsx)(Vn.Provider,{value:{role:i,activeKey:$n(o),getControlledId:p||qr,getControllerId:m||qr},children:(0,O.jsx)(r,Object.assign({},s,{onKeyDown:e=>{if(null==l||l(e),!d)return;let t;switch(e.key){case"ArrowLeft":case"ArrowUp":t=g(-1);break;case"ArrowRight":case"ArrowDown":t=g(1);break;default:return}t&&(e.preventDefault(),v(t.dataset[("EventKey","rrUiEventKey")]||null,e),u.current=!0,c())},ref:b,role:i}))})})}));$r.displayName="Nav";var Hr=Object.assign($r,{Item:Or});const Wr=t.createContext(null);Wr.displayName="CardHeaderContext";var Vr=Wr,Gr=Ae("nav-item");const Qr=t.forwardRef(((e,n)=>{const{as:r="div",bsPrefix:a,variant:o,fill:i,justify:l,navbar:s,navbarScroll:c,className:u,activeKey:f,...d}=E(e,{activeKey:"onSelect"}),p=B(a,"nav");let m,h,g=!1;const b=(0,t.useContext)(fr),y=(0,t.useContext)(Vr);return b?(m=b.bsPrefix,g=null==s||s):y&&({cardHeaderBsPrefix:h}=y),(0,O.jsx)(Hr,{as:r,ref:n,activeKey:f,className:v()(u,{[p]:!g,[`${m}-nav`]:g,[`${m}-nav-scroll`]:g&&c,[`${h}-${o}`]:!!h,[`${p}-${o}`]:!!o,[`${p}-fill`]:i,[`${p}-justified`]:l}),...d})}));Qr.displayName="Nav",Qr.defaultProps={justify:!1,fill:!1};var Yr=Object.assign(Qr,{Item:Gr,Link:Lr});const Kr=t.forwardRef((({bsPrefix:e,className:t,as:n,...r},a)=>{e=B(e,"navbar-brand");const o=n||(r.href?"a":"span");return(0,O.jsx)(o,{...r,ref:a,className:v()(t,e)})}));Kr.displayName="NavbarBrand";var Xr=Kr,Zr=function(...e){return e.filter((e=>null!=e)).reduce(((e,t)=>{if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(...n){e.apply(this,n),t.apply(this,n)}}),null)};const Jr={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]};function ea(e,t){const n=t[`offset${e[0].toUpperCase()}${e.slice(1)}`],r=Jr[e];return n+parseInt(re(t,r[0]),10)+parseInt(re(t,r[1]),10)}const ta={[W]:"collapse",[Q]:"collapsing",[V]:"collapsing",[G]:"collapse show"},na={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,getDimensionValue:ea},ra=n().forwardRef((({onEnter:e,onEntering:r,onEntered:a,onExit:o,onExiting:i,className:l,children:s,dimension:c="height",getDimensionValue:u=ea,...f},d)=>{const p="function"==typeof c?c():c,m=(0,t.useMemo)((()=>Zr((e=>{e.style[p]="0"}),e)),[p,e]),h=(0,t.useMemo)((()=>Zr((e=>{const t=`scroll${p[0].toUpperCase()}${p.slice(1)}`;e.style[p]=`${e[t]}px`}),r)),[p,r]),g=(0,t.useMemo)((()=>Zr((e=>{e.style[p]=null}),a)),[p,a]),b=(0,t.useMemo)((()=>Zr((e=>{e.style[p]=`${u(p,e)}px`,pe(e)}),o)),[o,u,p]),y=(0,t.useMemo)((()=>Zr((e=>{e.style[p]=null}),i)),[p,i]);return(0,O.jsx)(ge,{ref:d,addEndListener:de,...f,"aria-expanded":f.role?f.in:null,onEnter:m,onEntering:h,onEntered:g,onExit:b,onExiting:y,childRef:s.ref,children:(e,t)=>n().cloneElement(s,{...t,className:v()(l,s.props.className,ta[e],"width"===p&&"collapse-horizontal")})})}));ra.defaultProps=na;var aa=ra;const oa=t.forwardRef((({children:e,bsPrefix:n,...r},a)=>{n=B(n,"navbar-collapse");const o=(0,t.useContext)(fr);return(0,O.jsx)(aa,{in:!(!o||!o.expanded),...r,children:(0,O.jsx)("div",{ref:a,className:n,children:e})})}));oa.displayName="NavbarCollapse";var ia=oa;const la=t.forwardRef((({bsPrefix:e,className:n,children:r,label:a,as:o="button",onClick:i,...l},s)=>{e=B(e,"navbar-toggler");const{onToggle:c,expanded:u}=(0,t.useContext)(fr)||{},f=C((e=>{i&&i(e),c&&c()}));return"button"===o&&(l.type="button"),(0,O.jsx)(o,{...l,ref:s,onClick:f,"aria-label":a,className:v()(n,e,!u&&"collapsed"),children:r||(0,O.jsx)("span",{className:`${e}-icon`})})}));la.displayName="NavbarToggle",la.defaultProps={label:"Toggle navigation"};var sa=la,ca=new WeakMap,ua=function(e,t){if(e&&t){var n=ca.get(t)||new Map;ca.set(t,n);var r=n.get(e);return r||((r=t.matchMedia(e)).refCount=0,n.set(r.media,r)),r}};function fa(e,n){void 0===n&&(n="undefined"==typeof window?void 0:window);var r=ua(e,n),a=(0,t.useState)((function(){return!!r&&r.matches})),o=a[0],i=a[1];return F((function(){var t=ua(e,n);if(!t)return i(!1);var r=ca.get(n),a=function(){i(t.matches)};return t.refCount++,t.addListener(a),a(),function(){t.removeListener(a),t.refCount--,t.refCount<=0&&(null==r||r.delete(t.media)),t=void 0}}),[e]),o}var da=function(e){var n=Object.keys(e);function r(e,t){return e===t?t:e?e+" and "+t:t}return function(a,o,i){var l,s;return"object"==typeof a?(l=a,i=o,o=!0):((s={})[a]=o=o||!0,l=s),fa((0,t.useMemo)((function(){return Object.entries(l).reduce((function(t,a){var o,i=a[0],l=a[1];return"up"!==l&&!0!==l||(t=r(t,("number"==typeof(o=e[i])&&(o+="px"),"(min-width: "+o+")"))),"down"!==l&&!0!==l||(t=r(t,function(t){var r=function(e){return n[Math.min(n.indexOf(e)+1,n.length-1)]}(t),a=e[r];return"(max-width: "+(a="number"==typeof a?a-.2+"px":"calc("+a+" - 0.2px)")+")"}(i))),t}),"")}),[JSON.stringify(l)]),i)}}({xs:0,sm:576,md:768,lg:992,xl:1200,xxl:1400});function pa(e){void 0===e&&(e=Z());try{var t=e.activeElement;return t&&t.nodeName?t:null}catch(t){return e.body}}const ma=Qn("modal-open");var ha=class{constructor({ownerDocument:e,handleContainerOverflow:t=!0,isRTL:n=!1}={}){this.handleContainerOverflow=t,this.isRTL=n,this.modals=[],this.ownerDocument=e}getScrollbarWidth(){return function(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(e){}removeModalAttributes(e){}setContainerStyle(e){const t={overflow:"hidden"},n=this.isRTL?"paddingLeft":"paddingRight",r=this.getElement();e.style={overflow:r.style.overflow,[n]:r.style[n]},e.scrollBarWidth&&(t[n]=`${parseInt(re(r,n)||"0",10)+e.scrollBarWidth}px`),r.setAttribute(ma,""),re(r,t)}reset(){[...this.modals].forEach((e=>this.remove(e)))}removeContainerStyle(e){const t=this.getElement();t.removeAttribute(ma),Object.assign(t.style,e.style)}add(e){let t=this.modals.indexOf(e);return-1!==t||(t=this.modals.length,this.modals.push(e),this.setModalAttributes(e),0!==t||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state))),t}remove(e){const t=this.modals.indexOf(e);-1!==t&&(this.modals.splice(t,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(e))}isTopModal(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e}};const ga=(e,t)=>ae?null==e?(t||Z()).body:("function"==typeof e&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;var va=function({children:e,in:n,onExited:r,mountOnEnter:a,unmountOnExit:o}){const i=(0,t.useRef)(null),l=(0,t.useRef)(n),s=C(r);(0,t.useEffect)((()=>{n?l.current=!0:s(i.current)}),[n,s]);const c=he(i,e.ref),u=(0,t.cloneElement)(e,{ref:c});return n?u:o||!l.current&&a?null:u};function ba({children:e,in:n,onExited:r,onEntered:a,transition:o}){const[i,l]=(0,t.useState)(!n);n&&i&&l(!1);const s=function({in:e,onTransition:n}){const r=(0,t.useRef)(null),a=(0,t.useRef)(!0),o=C(n);return F((()=>{if(!r.current)return;let t=!1;return o({in:e,element:r.current,initial:a.current,isStale:()=>t}),()=>{t=!0}}),[e,o]),F((()=>(a.current=!1,()=>{a.current=!0})),[]),r}({in:!!n,onTransition:e=>{Promise.resolve(o(e)).then((()=>{e.isStale()||(e.in?null==a||a(e.element,e.initial):(l(!0),null==r||r(e.element)))}),(t=>{throw e.in||l(!0),t}))}}),c=he(s,e.ref);return i&&!n?null:(0,t.cloneElement)(e,{ref:c})}function ya(e,t,n){return e?(0,O.jsx)(e,Object.assign({},n)):t?(0,O.jsx)(ba,Object.assign({},n,{transition:t})):(0,O.jsx)(va,Object.assign({},n))}const xa=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];let wa;const Ea=(0,t.forwardRef)(((e,n)=>{let{show:r=!1,role:a="dialog",className:o,style:i,children:l,backdrop:s=!0,keyboard:c=!0,onBackdropClick:u,onEscapeKeyDown:f,transition:d,runTransition:p,backdropTransition:m,runBackdropTransition:h,autoFocus:g=!0,enforceFocus:v=!0,restoreFocus:b=!0,restoreFocusOptions:y,renderDialog:x,renderBackdrop:w=(e=>(0,O.jsx)("div",Object.assign({},e))),manager:E,container:k,onShow:N,onHide:F=(()=>{}),onExit:_,onExited:L,onExiting:z,onEnter:T,onEntering:P,onEntered:j}=e,D=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,xa);const R=function(e,n){const r=er(),[a,o]=(0,t.useState)((()=>ga(e,null==r?void 0:r.document)));if(!a){const t=ga(e);t&&o(t)}return(0,t.useEffect)((()=>{}),[n,a]),(0,t.useEffect)((()=>{const t=ga(e);t!==a&&o(t)}),[e,a]),a}(k),M=function(e){const n=er(),r=e||function(e){return wa||(wa=new ha({ownerDocument:null==e?void 0:e.document})),wa}(n),a=(0,t.useRef)({dialog:null,backdrop:null});return Object.assign(a.current,{add:()=>r.add(a.current),remove:()=>r.remove(a.current),isTopModal:()=>r.isTopModal(a.current),setDialogRef:(0,t.useCallback)((e=>{a.current.dialog=e}),[]),setBackdropRef:(0,t.useCallback)((e=>{a.current.backdrop=e}),[])})}(E),I=S(),B=A(r),[q,$]=(0,t.useState)(!r),H=(0,t.useRef)(null);(0,t.useImperativeHandle)(n,(()=>M),[M]),ae&&!B&&r&&(H.current=pa()),r&&q&&$(!1);const W=C((()=>{if(M.add(),ee.current=ce(document,"keydown",Z),J.current=ce(document,"focus",(()=>setTimeout(K)),!0),N&&N(),g){const e=pa(document);M.dialog&&e&&!wn(M.dialog,e)&&(H.current=e,M.dialog.focus())}})),V=C((()=>{var e;M.remove(),null==ee.current||ee.current(),null==J.current||J.current(),b&&(null==(e=H.current)||null==e.focus||e.focus(y),H.current=null)}));var G,Q,Y;(0,t.useEffect)((()=>{r&&R&&W()}),[r,R,W]),(0,t.useEffect)((()=>{q&&V()}),[q,V]),G=()=>{V()},(Q=(0,t.useRef)(G)).current=G,Y=Q,(0,t.useEffect)((function(){return function(){return Y.current()}}),[]);const K=C((()=>{if(!v||!I()||!M.isTopModal())return;const e=pa();M.dialog&&e&&!wn(M.dialog,e)&&M.dialog.focus()})),X=C((e=>{e.target===e.currentTarget&&(null==u||u(e),!0===s&&F())})),Z=C((e=>{c&&function(e){return"Escape"===e.code||27===e.keyCode}(e)&&M.isTopModal()&&(null==f||f(e),e.defaultPrevented||F())})),J=(0,t.useRef)(),ee=(0,t.useRef)();if(!R)return null;const te=Object.assign({role:a,ref:M.setDialogRef,"aria-modal":"dialog"===a||void 0},D,{style:i,className:o,tabIndex:-1});let ne=x?x(te):(0,O.jsx)("div",Object.assign({},te,{children:t.cloneElement(l,{role:"document"})}));ne=ya(d,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!r,onExit:_,onExiting:z,onExited:(...e)=>{$(!0),null==L||L(...e)},onEnter:T,onEntering:P,onEntered:j,children:ne});let re=null;return s&&(re=w({ref:M.setBackdropRef,onClick:X}),re=ya(m,h,{in:!!r,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:re})),(0,O.jsx)(O.Fragment,{children:U.createPortal((0,O.jsxs)(O.Fragment,{children:[re,ne]}),R)})}));Ea.displayName="Modal";var ka=Object.assign(Ea,{Manager:ha}),Ca=Ae("offcanvas-body");const Sa={[V]:"show",[G]:"show"},Aa=t.forwardRef((({bsPrefix:e,className:n,children:r,...a},o)=>(e=B(e,"offcanvas"),(0,O.jsx)(ge,{ref:o,addEndListener:de,...a,childRef:r.ref,children:(a,o)=>t.cloneElement(r,{...o,className:v()(n,r.props.className,(a===V||a===Q)&&`${e}-toggling`,Sa[a])})}))));Aa.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1},Aa.displayName="OffcanvasToggling";var Na=Aa,Fa=t.createContext({onHide(){}});const Oa=t.forwardRef((({closeLabel:e,closeVariant:n,closeButton:r,onHide:a,children:o,...i},l)=>{const s=(0,t.useContext)(Fa),c=C((()=>{null==s||s.onHide(),null==a||a()}));return(0,O.jsxs)("div",{ref:l,...i,children:[o,r&&(0,O.jsx)(Ee,{"aria-label":e,variant:n,onClick:c})]})}));Oa.defaultProps={closeLabel:"Close",closeButton:!1};var _a=Oa;const La=t.forwardRef((({bsPrefix:e,className:t,...n},r)=>(e=B(e,"offcanvas-header"),(0,O.jsx)(_a,{ref:r,...n,className:v()(t,e)}))));La.displayName="OffcanvasHeader",La.defaultProps={closeLabel:"Close",closeButton:!1};var za=La,Ta=Ae("offcanvas-title",{Component:ke("h5")});function Pa(e,t){return e.replace(new RegExp("(^|\\\\s)"+t+"(?:\\\\s|$)","g"),"$1").replace(/\\s+/g," ").replace(/^\\s*|\\s*$/g,"")}const ja=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Da=".sticky-top",Ra=".navbar-toggler";class Ma extends ha{adjustAndStore(e,t,n){const r=t.style[e];t.dataset[e]=r,re(t,{[e]:`${parseFloat(re(t,e))+n}px`})}restore(e,t){const n=t.dataset[e];void 0!==n&&(delete t.dataset[e],re(t,{[e]:n}))}setContainerStyle(e){super.setContainerStyle(e);const t=this.getElement();var n,r;if(r="modal-open",(n=t).classList?n.classList.add(r):function(e,t){return e.classList?e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,r)||("string"==typeof n.className?n.className=n.className+" "+r:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+r)),!e.scrollBarWidth)return;const a=this.isRTL?"paddingLeft":"paddingRight",o=this.isRTL?"marginLeft":"marginRight";Ke(t,ja).forEach((t=>this.adjustAndStore(a,t,e.scrollBarWidth))),Ke(t,Da).forEach((t=>this.adjustAndStore(o,t,-e.scrollBarWidth))),Ke(t,Ra).forEach((t=>this.adjustAndStore(o,t,e.scrollBarWidth)))}removeContainerStyle(e){super.removeContainerStyle(e);const t=this.getElement();var n,r;r="modal-open",(n=t).classList?n.classList.remove(r):"string"==typeof n.className?n.className=Pa(n.className,r):n.setAttribute("class",Pa(n.className&&n.className.baseVal||"",r));const a=this.isRTL?"paddingLeft":"paddingRight",o=this.isRTL?"marginLeft":"marginRight";Ke(t,ja).forEach((e=>this.restore(a,e))),Ke(t,Da).forEach((e=>this.restore(o,e))),Ke(t,Ra).forEach((e=>this.restore(o,e)))}}let Ia;var Ba=Ma;function qa(e){return(0,O.jsx)(Na,{...e})}function Ua(e){return(0,O.jsx)(ye,{...e})}const $a=t.forwardRef((({bsPrefix:e,className:n,children:r,"aria-labelledby":a,placement:o,responsive:i,show:l,backdrop:s,keyboard:c,scroll:u,onEscapeKeyDown:f,onShow:d,onHide:p,container:m,autoFocus:h,enforceFocus:g,restoreFocus:b,restoreFocusOptions:y,onEntered:x,onExit:w,onExiting:E,onEnter:k,onEntering:S,onExited:A,backdropClassName:N,manager:F,renderStaticNode:_,...L},z)=>{const T=(0,t.useRef)();e=B(e,"offcanvas");const{onToggle:P}=(0,t.useContext)(fr)||{},[j,D]=(0,t.useState)(!1),R=da(i||"xs","up");(0,t.useEffect)((()=>{D(i?l&&!R:l)}),[l,i,R]);const M=C((()=>{null==P||P(),null==p||p()})),I=(0,t.useMemo)((()=>({onHide:M})),[M]),q=(0,t.useCallback)((t=>(0,O.jsx)("div",{...t,className:v()(`${e}-backdrop`,N)})),[N,e]),U=t=>(0,O.jsx)("div",{...t,...L,className:v()(n,i?`${e}-${i}`:e,`${e}-${o}`),"aria-labelledby":a,children:r});return(0,O.jsxs)(O.Fragment,{children:[!j&&(i||_)&&U({}),(0,O.jsx)(Fa.Provider,{value:I,children:(0,O.jsx)(ka,{show:j,ref:z,backdrop:s,container:m,keyboard:c,autoFocus:h,enforceFocus:g&&!u,restoreFocus:b,restoreFocusOptions:y,onEscapeKeyDown:f,onShow:d,onHide:M,onEnter:(e,...t)=>{e&&(e.style.visibility="visible"),null==k||k(e,...t)},onEntering:S,onEntered:x,onExit:w,onExiting:E,onExited:(e,...t)=>{e&&(e.style.visibility=""),null==A||A(...t)},manager:F||(u?(T.current||(T.current=new Ba({handleContainerOverflow:!1})),T.current):(Ia||(Ia=new Ma(void 0)),Ia)),transition:qa,backdropTransition:Ua,renderBackdrop:q,renderDialog:U})})]})}));$a.displayName="Offcanvas",$a.defaultProps={show:!1,backdrop:!0,keyboard:!0,scroll:!1,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,placement:"start",renderStaticNode:!1};var Ha=Object.assign($a,{Body:Ca,Header:za,Title:Ta});const Wa=t.forwardRef(((e,n)=>{const r=(0,t.useContext)(fr);return(0,O.jsx)(Ha,{ref:n,show:!(null==r||!r.expanded),...e,renderStaticNode:!0})}));Wa.displayName="NavbarOffcanvas";var Va=Wa;const Ga=Ae("navbar-text",{Component:"span"}),Qa=t.forwardRef(((e,n)=>{const{bsPrefix:r,expand:a,variant:o,bg:i,fixed:l,sticky:s,className:c,as:u="nav",expanded:f,onToggle:d,onSelect:p,collapseOnSelect:m,...h}=E(e,{expanded:"onToggle"}),g=B(r,"navbar"),b=(0,t.useCallback)(((...e)=>{null==p||p(...e),m&&f&&(null==d||d(!1))}),[p,m,f,d]);void 0===h.role&&"nav"!==u&&(h.role="navigation");let y=`${g}-expand`;"string"==typeof a&&(y=`${y}-${a}`);const x=(0,t.useMemo)((()=>({onToggle:()=>null==d?void 0:d(!f),bsPrefix:g,expanded:!!f,expand:a})),[g,f,a,d]);return(0,O.jsx)(fr.Provider,{value:x,children:(0,O.jsx)(Hn.Provider,{value:b,children:(0,O.jsx)(u,{ref:n,...h,className:v()(c,g,a&&y,o&&`${g}-${o}`,i&&`bg-${i}`,s&&`sticky-${s}`,l&&`fixed-${l}`)})})})}));Qa.defaultProps={expand:!0,variant:"light",collapseOnSelect:!1},Qa.displayName="Navbar";var Ya=Object.assign(Qa,{Brand:Xr,Collapse:ia,Offcanvas:Va,Text:Ga,Toggle:sa});const Ka=t.forwardRef((({bsPrefix:e,fluid:t,as:n="div",className:r,...a},o)=>{const i=B(e,"container"),l="string"==typeof t?`-${t}`:"-fluid";return(0,O.jsx)(n,{ref:o,...a,className:v()(r,t?`${i}${l}`:i)})}));Ka.displayName="Container",Ka.defaultProps={fluid:!1};var Xa=Ka,Za=a(496),Ja=a.n(Za);function eo(e){return eo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},eo(e)}function to(){to=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,a){var o=new RegExp(e,r);return t.set(o,a||t.get(e)),no(o,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){var a=r[n];if("number"==typeof a)t[n]=e[a];else{for(var o=0;void 0===e[a[o]]&&o+1<a.length;)o++;t[n]=e[a[o]]}return t}),Object.create(null))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&no(e,t)}(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=r(n,this);var a=n.indices;a&&(a.groups=r(a,this))}return n},n.prototype[Symbol.replace]=function(n,a){if("string"==typeof a){var o=t.get(this);return e[Symbol.replace].call(this,n,a.replace(/\\$<([^>]+)>/g,(function(e,t){var n=o[t];return"$"+(Array.isArray(n)?n.join("$"):n)})))}if("function"==typeof a){var i=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=eo(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,i)),a.apply(this,e)}))}return e[Symbol.replace].call(this,n,a)},to.apply(this,arguments)}function no(e,t){return no=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},no(e,t)}function ro(){ro=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==eo(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function ao(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function oo(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){ao(o,r,a,i,l,"next",e)}function l(e){ao(o,r,a,i,l,"throw",e)}i(void 0)}))}}function io(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==eo(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==eo(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===eo(a)?a:String(a)),r)}var a}var lo=["FIND","FILE","ENTITY","SELECT","COUNT","RECORD","PROPERTY","RECORDTYPE","REFERENCES","REFERENCED BY","WHICH","WITH","CREATED BY","CREATED BY ME","CREATED AT","CREATED ON","CREATED IN","CREATED BEFORE","CREATED UNTIL","CREATED AFTER","CREATED SINCE","SOMEONE","STORED AT","HAS A PROPERTY","HAS BEEN","ANY VERSION OF","FROM","INSERTED AT","INSERTED ON","INSERTED IN","INSERTED BY","INSERTED BY ME","INSERTED BEFORE","INSERTED UNTIL","INSERTED AFTER","INSERTED SINCE","UPDATED AT","UPDATED ON","UPDATED IN","UPDATED BY","UPDATED BY ME","UPDATED BEFORE","UPDATED UNTIL","UPDATED AFTER","UPDATED SINCE","SINCE","BEFORE","ON","IN","AFTER","UNTIL","AT","BY","BY ME"];function so(e){return e.map((function(e){var t=e;return t.indexOf(" ")>-1&&(t=e.indexOf(\'"\')>-1?"\'".concat(t,"\'"):\'"\'.concat(t,\'"\')),{original:e,normalized:e.trim().toLowerCase(),escaped:t}}))}function co(e){return e.map((function(e){return{original:e,normalized:e.trim().toLowerCase(),escaped:e}}))}var uo=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._cql_words=co(n||lo),this._terms=t||[],this._resolved_terms=void 0}var t,n,r,a,o,i,l;return t=e,n=[{key:"getSuggestions",value:(l=oo(ro().mark((function e(t,n,r){return ro().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=4;break}return e.next=3,this.getCqlSuggestions(n,r);case 3:case 6:return e.abrupt("return",e.sent);case 4:return e.next=6,this.getSearchTermSuggestions(n,r);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return l.apply(this,arguments)})},{key:"_do_resolve_terms",value:(i=oo(ro().mark((function e(t){var n;return ro().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t){e.next=6;break}return e.next=3,t();case 3:n=e.sent,e.next=9;break;case 6:return e.next=8,t;case 8:n=e.sent;case 9:return e.next=11,so(n);case 11:return e.abrupt("return",e.sent);case 12:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"_getTerms",value:(o=oo(ro().mark((function e(){return ro().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._resolved_terms||(this._resolved_terms=this._do_resolve_terms(this._terms)),e.next=3,this._resolved_terms;case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"getSearchTermSuggestions",value:(a=oo(ro().mark((function e(t,n){var r,a;return ro().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getTerms();case 2:return r=e.sent,t===n&&(r=co(["FIND","SELECT","COUNT"]).concat(r)),a=n.trim().toLowerCase(),e.abrupt("return",r.filter((function(e){return e.normalized.startsWith(a)})));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t){return a.apply(this,arguments)})},{key:"getCqlSuggestions",value:(r=oo(ro().mark((function e(t,n){var r,a;return ro().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this._cql_words,a=n.trim().toLowerCase(),e.t0=r.filter((function(e){return e.normalized.startsWith(a)})),e.next=5,this.getSearchTermSuggestions(t,n);case 5:return e.t1=e.sent,e.abrupt("return",e.t0.concat.call(e.t0,e.t1));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})}],n&&io(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),fo=function(e){return(e=e.toUpperCase().trim()).startsWith("FIND")||e.startsWith("COUNT")||e.startsWith("SELECT")},po=function(e){return e.toUpperCase().trim().startsWith("SELECT")},mo={"=":"=",">":">","≥":">=","<":"<","≤":"<=","≠":"!=",equals:"=",in:"in","not in":"not in","after date":">","since date":">=","until date":"<=","before date":"<","on date":"on","not on date":"not on"},ho={boolean:["is true","is false"],text:["equals","not equals","contains","not contains"],integer:["=","≠","≥","≤","<",">","range"],double:["=","≠","≥","≤","<",">","range"],datetime:["=","≠","on date","in","not on date","not in","after date","before date","until date","since date"]},go={boolean:{"is true":function(e){return"(".concat(e," = TRUE)")},"is false":function(e){return"(".concat(e," = FALSE)")}},text:{contains:function(e,t,n){return"(".concat(e,\' LIKE "*\').concat(n,\'*")\')},"not equals":function(e,t,n){return"(NOT ".concat(e,\' = "\').concat(n,\'")\')},"not contains":function(e,t,n){return"(NOT ".concat(e,\' LIKE "*\').concat(n,\'*")\')}},integer:{range:function(e,t,n,r){return"(".concat(e," > ").concat(n[0]).concat(r,") AND (").concat(e," < ").concat(n[1]).concat(r,")")}},double:{range:function(e,t,n,r){return"(".concat(e," > ").concat(n[0]).concat(r,") AND (").concat(e," < ").concat(n[1]).concat(r,")")}},_default:{_default:function(e,t,n,r){n=n||"";var a=""!==(r=r||"")?"":-1===n.indexOf(\'"\')?\'"\':"\'";if(mo[t])return"(".concat(e," ").concat(mo[t]," ").concat(a).concat(n).concat(r).concat(a,")");throw new Error("Could not translate ".concat(e," ").concat(t," filter"),n)}}},vo=function(e){return function(t,n){var r="FIND RECORD";e&&(r+=\' "\'.concat(e,\'"\'));var a=" WITH ";if(t&&t.length>0){var o=yo(t).map((function(e){return"A PROPERTY LIKE \'*".concat(e.replaceAll("\'","\\\\\'"),"*\'")}));o.length&&(a=" AND ",r+=" WITH "+o.join(a))}var i=n.map((function(e){return function(e,t,n,r,a){if(e&&n){if(a=a||"",go[e]){if(go[e][n]||null===go[e][n])return go[e][n](t,n,r,a);if(go[e]._default||null===go[e]._default)return go[e]._default(t,n,r,a)}return go._default[n]?go._default[n](t,n,r,a):go._default._default(t,n,r,a)}}(e.datatype,e.property,e.operator,e.value,e.unit)}));return i.length>0&&(r+=a+i.join(" AND ")),r}},bo=to(/"([^"]*)" |\'([^\']*)\' |([^ ]+)/g,{dq:1,sq:2,nq:3}),yo=function(e){return Array.from((e+" ").matchAll(bo),(function(e){return e[1]||e[2]||e[3]})).filter((function(e){return e}))};function xo(e,t,n,r,a,o){return{id:e,recordType:t,label:n||t||e,description:r||"Show only results of type ".concat(n||t||e),makeQuery:a||vo(t),filterDefinitions:o||[]}}var wo=function(){var e=oo(ro().mark((function e(t,n,r){var a;return ro().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=new uo((function(){return[r+"-suggestion1",r+"-suggestion2",r+"-suggestion3",r+"-suggestion4",r+"-suggestion5",r+"-suggestion6",r+"-suggestion7",r+"-suggestion8",r+"-suggestion9",r+"-suggestion10",r+"-suggestion11",r+"-suggestion12",r+"-suggestion13",r+"-suggestion14",r+"-suggestion15"]}),lo),e.abrupt("return",a.getSuggestions(t,n,r));case 2:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}();function Eo(e){return Eo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Eo(e)}function ko(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Co(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ko(Object(n),!0).forEach((function(t){So(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ko(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function So(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==Eo(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Eo(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Eo(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ao(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return No(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?No(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function No(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Fo(){return Fo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fo.apply(this,arguments)}var Oo,_o=n().createContext({}),Lo=function(e){var r=e.onChange,a=e.value,o=(0,t.useCallback)((function(e){var t={target:{value:[e.target.value,a[1]]}};r(t)}),[r,a]),i=(0,t.useCallback)((function(e){var t={target:{value:[a[0],e.target.value]}};r(t)}),[r,a]);return n().createElement(n().Fragment,null,n().createElement("input",Fo({type:"number"},e,{value:e.value[0],onChange:o,max:e.value[1]})),n().createElement("span",{className:"mx-1"},"to"),n().createElement("input",Fo({type:"number"},e,{value:e.value[1],onChange:i,min:e.value[0]})),e.unitElement)},zo=function(e){var r=e.min,a=e.max,o=e.step,i=e.value,l=e.setValue,s=e.datatype,c=e.operator,u=e.unit,f=e.inputtype,d=(0,t.useCallback)((function(e){return l(e.target.value)}),[l]);if(s&&c){var p={className:"form-control form-control-sm",onChange:d,value:i,min:r,max:a};f&&(p.type=f),o&&(p.step=o);var m=u&&n().createElement("span",{className:"ms-1",title:"The unit"},u),h={boolean:{_default:null},integer:{_default:n().createElement(n().Fragment,null,n().createElement("input",Fo({},p,{type:"number",step:"1"})),m),range:n().createElement(Lo,Fo({unitElement:m},p,{step:"1"}))},double:{_default:n().createElement(n().Fragment,null,n().createElement("input",Fo({step:"0.001"},p,{type:"number"})),m),range:n().createElement(Lo,Fo({unitElement:m,step:"0.001"},p))},_default:{_default:n().createElement("input",p)}};if(h[s]){if(h[s][c]||null===h[s][c])return h[s][c];if(h[s]._default||null===h[s]._default)return h[s]._default}return h._default[c]?h._default[c]:h._default._default}};function To(){return n().createElement("div",{className:"caosdb-f-query-cql-hint",title:"You are using the expert search mode. Enter a valid CQL Query."},"CQL")}function Po(e){var r=e.tab,a=e.setActiveTab,o=e.isActiveTab,i=(0,t.useCallback)((function(){o||a(r)}),[r,a,o]),l="caosdb-f-query-tab"+(o?" active":"");return n().createElement("button",{type:"button",title:r.description,tabIndex:o?"-1":"0",className:l,onClick:o?void 0:i},r.label)}function jo(e){var r=e.filter,a=e.filterIdx,o=e.updateFilter,i=e.restoreOperator,l=e.restoreValue,s=Ao((0,t.useState)(r.operator||ho[r.datatype][0]),2),c=s[0],u=s[1],f=Ao((0,t.useState)(r.value||""),2),d=f[0],p=f[1],m=n().createElement(zo,{datatype:r.datatype,operator:c,setValue:p,value:d,unit:r.unit,min:r.min,max:r.max,step:r.step,inputtype:r.inputtype});return(0,t.useEffect)((function(){i&&c!==i&&u(i)}),[i,c]),(0,t.useEffect)((function(){l&&d!==l&&p(l)}),[l,d]),(0,t.useEffect)((function(){c!==r.operator&&o(a,{restoreOperator:void 0,operator:c})}),[c,r.operator,a,o]),(0,t.useEffect)((function(){d!==r.value&&o(a,{restoreValue:void 0,value:d})}),[d,r.value,a,o]),n().createElement(n().Fragment,null,n().createElement("div",null,n().createElement("select",{className:"form-select form-select-sm",value:c,onChange:function(e){return u(e.target.value)}},ho[r.datatype].map((function(e,t){return n().createElement("option",{key:t},e)})))),n().createElement("div",{className:"d-flex"},m))}function Do(e){var t=e.selected,r=e.filterDefinitions,a=e.onChange,o=e.title;return n().createElement("select",{title:o,className:"form-select form-select-sm",value:t,onChange:a},r.map((function(e,t){return n().createElement("option",{value:e.property,style:e.style,key:t},e.label||e.property)})))}function Ro(e){var r=e.filterDefinitions,a=e.addFilter,o=(0,t.useCallback)((function(e){a(e.target.value)}),[a]);return n().createElement("div",null,n().createElement(Do,{filterDefinitions:r.concat({property:"__add_filter__",label:"Add Filter",style:{display:"none"}}),selected:"__add_filter__",title:"Add Filter",onChange:o}))}function Mo(e){var r=e.filterDefinitions,a=e.filterIdx,o=e.activeFilters,i=e.updateFilter,l=e.setProperty,s=e.removeFilter,c=o&&o[a],u=(0,t.useCallback)((function(e){l(a,e.target.value)}),[l,a]),f=(0,t.useCallback)((function(){return s(a)}),[s,a]);return n().createElement(n().Fragment,null,n().createElement("div",{className:"caosdb-f-query-filter-property-selector"},n().createElement(Do,{filterDefinitions:r,selected:c.property,onChange:u})),n().createElement(jo,{restoreValue:c.restoreValue,restoreOperator:c.restoreOperator,updateFilter:i,filterIdx:a,filter:c}),n().createElement("div",{className:"text-end flex-grow-1"},n().createElement("button",{type:"button",className:"btn btn-sm btn-outline-secondary",onClick:f},"Remove Filter")))}function Io(e){var r=e.filterDefinitions,a=e.activeFilters,o=e.setActiveFilters,i=(0,t.useCallback)((function(e){o(a.filter((function(t,n){return n!==e})))}),[a,o]),l=(0,t.useCallback)((function(e,t){var n=[].concat(a);n[e]=Co(Co({},n[e]),t),o(n)}),[a,o]),s=(0,t.useCallback)((function(e,t){var n=r.filter((function(e){return e.property===t}))[0];l(e,{restoreValue:"",restoreOperator:ho[n.datatype][0],property:t,datatype:n.datatype,unit:n.unit,min:n.min,max:n.max,filter:n})}),[l,r]),c=(0,t.useCallback)((function(e){var t=r.filter((function(t){return t.property===e}))[0];o(a.concat({property:e,datatype:t.datatype,unit:t.unit,min:t.min,max:t.max,filter:t}))}),[a,o,r]);return n().createElement(n().Fragment,null,a.map((function(e,t){return n().createElement(Mo,{key:t,filterIdx:t,filterDefinitions:r,activeFilters:a,setActiveFilters:o,updateFilter:l,setProperty:s,removeFilter:i})})),n().createElement("div",{className:"d-flex"},n().createElement(Ro,{filterDefinitions:r,addFilter:c}),a.length>0&&n().createElement("button",{type:"submit",title:"Search with filters",className:"btn btn-primary btn-sm ms-auto"},"Search")))}function Bo(e){var r=e.filterDefinitions,a=e.activeFilters,o=e.setActiveFilters,i=Ao((0,t.useState)(a.length>0),2),l=i[0],s=i[1],c=l?"Cancel Advanced Filtering":"Advanced Filtering";return n().createElement(n().Fragment,null,n().createElement("button",{type:"button",onClick:function(){return s(!l)},className:"btn ms-auto caosdb-f-query-filters-toggle",title:c},l?n().createElement("i",{className:"bi bi-x"}):n().createElement("i",{className:"bi bi-filter"})),l&&n().createElement("div",{className:"caosdb-f-query-tab-filters w-100"},n().createElement(Io,{filterDefinitions:r,activeFilters:a,setActiveFilters:o})))}function qo(e){var r=e.tabs,a=e.setActiveTab,o=e.activeTab,i=e.activeFilters,l=e.setActiveFilters,s=(0,t.useMemo)((function(){return o&&o.filterDefinitions&&o.filterDefinitions.length>0}),[o]);return n().createElement("div",{className:"caosdb-f-query-tab-list d-flex flex-wrap"},r.map((function(e){return n().createElement(Po,{isActiveTab:o.id===e.id,setActiveTab:a,key:e.label,tab:e})}))," ",s&&n().createElement(Bo,Fo({},o,{activeFilters:i,setActiveFilters:l})))}function Uo(e){var t=e.isSubmitted,r=e.active;return t?n().createElement(De,{className:"align-self-center",size:"sm"}):n().createElement("button",{"aria-label":"search",title:"Search",type:"submit",disabled:!r},n().createElement("i",{className:"bi bi-search"}))}function $o(e){var t=e.suggestion,r=e.isHighlighted,a=e.onMouseEnter;return n().createElement("li",{onMouseEnter:a,className:r?"highlight":""},t.original)}function Ho(e){var t=e.suggestions,r=e.highlightIndex,a=e.selectSuggestion;return n().createElement(n().Fragment,null,t.map((function(e,t){return n().createElement($o,{onMouseEnter:function(){return a(t)},key:t,isHighlighted:r===t,suggestion:e})})))}function Wo(e){var r=e.unselectSuggestions,a=e.selectSuggestion,o=e.highlightIndex,i=e.suggestions,l=e.getInputRef,s=e.wordPos,c=e.word,u=e.xOffset,f=(0,t.useRef)(),d=n().createElement(Ho,{selectSuggestion:a,highlightIndex:o,suggestions:i});return(0,t.useEffect)((function(){o>-1&&f.current.scroll(0,24*o-48)}),[o]),(0,t.useEffect)((function(){var e=l(),t=Ja()(e.current,s),n=e.current.getBoundingClientRect().width;if(t.left>n){var r=Ja()(e.current,s+c.length).left-t.left;f.current.style.marginLeft="".concat(n-r,"px")}else t.left>8&&(f.current.style.marginLeft="".concat(t.left-8,"px"))}),[c,l,s]),n().createElement("div",{onMouseLeave:r,style:{paddingLeft:u},className:"caosdb-f-query-form-sug-container"},n().createElement("ol",{ref:f,className:"caosdb-f-query-form-sug"},d))}function Vo(e,t){var n,r,a,o,i;switch(t.type){case"onFocus":return Co(Co({},e),{},{refocus:!1,focus:!0});case"onBlur":return e.onClickValue?Co(Co({},e),{},{value:e.onClickValue,cursorPos:e.onClickCursorPos,onClickCursorPos:void 0,onClickValue:void 0,refocus:!0,open:!1}):Co(Co({},e),{},{focus:!1});case"onChange":return n=t.target.selectionEnd,r=t.target.value.slice(0,n).lastIndexOf(" ")+1,i=(o=(a=t.target.value.slice(r,n)).length>2)&&t.getSuggestionsCallback?t.getSuggestionsCallback(fo(t.target.value),t.target.value,a):null,Co(Co({},e),{},{onClickValue:void 0,onClickCursorPos:void 0,highlightIndex:-1,cursorPos:n,cursorPosNoCompletion:n,wordPos:r,value:t.target.value,valueNoCompletion:t.target.value,refocus:!1,word:a,open:o,changeId:e.changeId+1|0,unresolvedSuggestions:i});case"resolveSuggestions":if(e.changeId===t.changeId)return Co(Co({},e),{},{suggestions:t.suggestions,unresolvedSuggestions:void 0});break;case"onArrowDown":if(e.open&&e.suggestions&&e.highlightIndex<e.suggestions.length-1){var l=e.highlightIndex+1,s=e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[l].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion),c=e.wordPos+e.suggestions[l].escaped.length;return Co(Co({},e),{},{cursorPos:c,value:s,highlightIndex:l})}break;case"unselectSuggestions":return Co(Co({},e),{},{onClickCursorPos:void 0,onClickValue:void 0});case"selectSuggestion":if(t.index>-1&&t.index<e.suggestions.length){var u=e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[t.index].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion)+" ",f=e.wordPos+e.suggestions[t.index].escaped.length+1;return Co(Co({},e),{},{onClickValue:u,onClickCursorPos:f})}break;case"restore":return Co(Co({},e),{},{value:t.value});case"onArrowUp":if(e.open&&e.highlightIndex>-1){var d=e.highlightIndex-1,p=d<0?e.valueNoCompletion:e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[d].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion),m=d<0?e.cursorPosNoCompletion:e.wordPos+e.suggestions[d].escaped.length;return Co(Co({},e),{},{cursorPos:m,value:p,highlightIndex:d})}}return e}function Go(e){var r=e.setQueryString,a=e.isCql,o=e.restoreQueryString,i=(0,t.useContext)(_o),l=i.getSuggestionsCallback,s=i.isSubmitted,c=(0,t.useRef)(),u=(0,t.useRef)(),f=Ao((0,t.useReducer)(Vo,{refocus:!1,value:"",focus:!1,open:!1,word:"",highlightIndex:-1,unresolvedSuggestions:null,suggestions:null}),2),d=f[0],p=f[1];(0,t.useEffect)((function(){r(d.value)}),[d.value,r]),(0,t.useEffect)((function(){o&&p({type:"restore",value:o})}),[o]);var m=(0,t.useCallback)((function(){p({type:"onFocus"})}),[]),h=(0,t.useCallback)((function(){p({type:"onBlur"})}),[]),g=(0,t.useCallback)((function(){p({type:"onArrowUp"})}),[]),v=(0,t.useCallback)((function(){p({type:"onArrowDown"})}),[]),b=(0,t.useCallback)((function(e){p({type:"onChange",target:e.target,getSuggestionsCallback:l})}),[l]),y=(0,t.useCallback)((function(e){return"ArrowDown"===e.key?(e.preventDefault(),v(e)):"ArrowUp"===e.key?(e.preventDefault(),g(e)):void 0}),[g,v]),x=(0,t.useCallback)((function(){p({type:"unselectSuggestions"})}),[]),w=(0,t.useCallback)((function(e){p({type:"selectSuggestion",index:e})}),[]),E="caosdb-f-query-form";d.open&&(E+=" open"),d.focus&&(E+=" focus"),(0,t.useEffect)((function(){if(d.unresolvedSuggestions){var e=d.changeId;d.unresolvedSuggestions.then((function(t){p({type:"resolveSuggestions",suggestions:t,changeId:e})}))}}),[d.unresolvedSuggestions,d.changeId]),(0,t.useEffect)((function(){c.current.setSelectionRange(d.cursorPos,d.cursorPos)}),[d.value,d.cursorPos]);var k=(0,t.useCallback)((function(){return c}),[c]);return(0,t.useEffect)((function(){d.refocus&&c.current.focus()}),[d]),n().createElement("div",{ref:u,className:E},n().createElement("div",{className:"d-flex"},a&&n().createElement(To,null),n().createElement("input",{disabled:s,className:"flex-grow-1","aria-label":"enter search terms",name:"query",title:"Enter search terms",onFocus:m,onBlur:h,onKeyDown:y,onChange:b,value:d.value,ref:c}),n().createElement(Uo,{active:d.value.length>0,isSubmitted:s})),d.open&&d.suggestions&&n().createElement(Wo,{unselectSuggestions:x,selectSuggestion:w,word:d.word,wordPos:d.wordPos,getInputRef:k,suggestions:d.suggestions,highlightIndex:d.highlightIndex,xOffset:a?44:0}))}function Qo(e){var r=e.submitCallback,a=e.tabs,o=e.defaultTab,i=e.getSuggestionsCallback,l=e.restoreCallback,s=e.storeCallback,c=e.restore?l(a):{},u=c.restoreQueryString,f=c.restoreActiveFilters,d=c.restoreActiveTab,p=Ao((0,t.useState)(!1),2),m=p[0],h=p[1],g=Ao((0,t.useState)(""),2),v=g[0],b=g[1],y=Ao((0,t.useState)(d||a[o]),2),x=y[0],w=y[1],E=Ao((0,t.useState)(f||[]),2),k=E[0],C=E[1],S=(0,t.useCallback)((function(e){e.preventDefault(),h(!0),s(x,k,v);var t=a.filter((function(e){return e.id===x.id}))[0]||{},n=fo(v),o=n&&po(v),i=n||!t.makeQuery?function(e){return e}:t.makeQuery,l=o?-1:void 0;return r(i(v,k),l)}),[a,x,k,v,r,s]),A=fo(v),N=(0,t.useMemo)((function(){return{isSubmitted:m,queryString:v,getSuggestionsCallback:i}}),[v,i,m]),F=(0,t.useCallback)((function(e){w(e),C([])}),[C,w]);return n().createElement("form",{autoComplete:"off",onSubmit:S},n().createElement(_o.Provider,{value:N},n().createElement(Go,{restoreQueryString:u,isCql:A,setQueryString:b}),!A&&n().createElement(qo,{tabs:a,activeTab:x,setActiveTab:F,activeFilters:k,setActiveFilters:C})))}Qo.AutoCompletion=uo,Qo.defaultProps={submitCallback:function(e,t){console.log("submit query: ",e,t),setTimeout((function(){alert(e),window.location.href=window.location.href}),1e3)},tabs:(Oo=function(e){return[{property:e+"-text-property",datatype:"text"},{property:e+"-datetime-property",datatype:"datetime"},{property:e+"-integer-property",datatype:"integer"},{property:e+"-double-property",datatype:"double",min:"-50",max:"50",unit:"m"},{property:e+"-boolean-property",datatype:"boolean"},{property:\'"\'.concat(e,\'-reference-property"."sub-property"\'),label:"sub-property of ".concat(e,"-reference-property"),datatype:"text"}]},[xo("all",void 0,"All","Show all matching results",vo(""),Oo("all")),xo("dataset","Dataset","Dataset",void 0,vo("Dataset"),Oo("dataset")),xo("event","Event","Event",void 0,vo("Event"),Oo("event")),xo("person","Person","Person",void 0,vo("Person"),Oo("person"))]),defaultTab:0,getSuggestionsCallback:wo,restoreCallback:function(e){var t={restoreActiveTab:window.localStorage["query.activeTab"]&&JSON.parse(window.localStorage["query.activeTab"]),restoreActiveFilters:window.localStorage["query.activeFilters"]&&JSON.parse(window.localStorage["query.activeFilters"]),restoreQueryString:window.localStorage["query.queryString"]||""};return t.restoreActiveTab&&0===e.filter((function(e){return e.id===t.restoreActiveTab.id})).length?(window.localStorage.removeItem("query.activeTab"),window.localStorage.removeItem("query.activeFilters"),window.localStorage.removeItem("query.queryString"),{}):t},storeCallback:function(e,t,n){window.localStorage.removeItem("query.activeTab"),window.localStorage.removeItem("query.activeFilters"),window.localStorage.removeItem("query.queryString"),e&&(window.localStorage["query.activeTab"]=JSON.stringify(e)),t&&t.length>0&&(window.localStorage["query.activeFilters"]=JSON.stringify(t)),n&&n.length>0&&(window.localStorage["query.queryString"]=n)},restore:!1};var Yo=0,Ko=void 0,Xo=function(e){"number"==typeof Ko&&clearTimeout(Ko);var t=e.getBoundingClientRect(),n=t.top,r=t.bottom;Yo===r-n?Ko=setTimeout((function(){Ko=void 0,window.pageYOffset>Yo?e.classList.add("condensed"):e.classList.remove("condensed")}),200):Yo=r-n},Zo=function(e){return(0,t.useEffect)((function(){return window.addEventListener("scroll",e.scrollHandler),function(){window.removeEventListener("scroll",e.scrollHandler)}}),[e.scrollHandler]),n().createElement(Xa,null,n().createElement(Qo,e))};function Jo(e){return Jo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jo(e)}function ei(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==Jo(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Jo(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Jo(a)?a:String(a)),r)}var a}Zo.propTypes={scrollHandler:h().func};var ti=new(function(){function e(t){var n=t.items,r=t.brand,a=t.user_component;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items=n||[],this.brand=r||Ir.name,this.update_listeners=[],this.user_component=a}var t,n;return t=e,(n=[{key:"registerUpdateListener",value:function(e){this.update_listeners.push(e)}},{key:"addLink",value:function(e){this.items.push(e),this.notifyUpdateListeners()}},{key:"notifyUpdateListeners",value:function(){this.update_listeners.forEach((function(e){return e()}))}}])&&ei(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}())({items:[n().createElement(Yr.Link,{key:"0",href:"#action1"},"Home"),n().createElement(Yr.Link,{key:"1",href:"#action2"},"Link"),n().createElement(Tr,{key:"2",title:"Link"},n().createElement(Tr.Item,{href:"#action3"},"Action"),n().createElement(Tr.Item,{href:"#action4"},"Another action"),n().createElement(Tr.Divider,null),n().createElement(Tr.Item,{href:"#action5"},"Something else here")),n().createElement(Yr.Link,{key:"3",href:"#",disabled:!0},"Link")],user_component:n().createElement(Mr,null)}),ni=function(){var e=(0,t.useRef)(),r=(0,t.useCallback)((function(){Xo(e.current)}),[e]);return n().createElement(Ya,{bg:"light",expand:"lg"},n().createElement(Xa,{fluid:!0},n().createElement("span",{className:"d-lg-none d-inline"},ti.brand),n().createElement(Ya.Toggle,{"aria-controls":"navbarScroll"}),n().createElement(Ya.Collapse,{id:"navbarScroll"},n().createElement(Ya.Brand,{className:"d-none d-lg-inline"},ti.brand),n().createElement(Yr,{className:"me-auto my-2 my-lg-0"},ti.items.map((function(e,t){return n().createElement("span",{key:t},e)}))),n().createElement(Yr,{ref:e,className:"caosdb-f-query-panel me-lg-2 full"},n().createElement(Zo,{restore:!0,scrollHandler:r})),n().createElement(Yr,null,ti.user_component))))},ri=function(){return n().createElement("header",{className:"shadow-sm bg-light"},n().createElement(ni,null))};function ai(e){return ai="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ai(e)}function oi(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==ai(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==ai(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===ai(a)?a:String(a)),r)}var a}function ii(e,t,n){return t&&oi(e.prototype,t),n&&oi(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var li=new(ii((function e(t){var n=t.items,r=t.copyRight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items=n,this.copyRight=r})))({items:[n().createElement("a",{key:"0",className:"nav-link px-2",href:"https://www.gnu.org/licenses/agpl-3.0.en.html"},"License (AGPL-v3)"),n().createElement("a",{key:"1",className:"nav-link px-2",href:"https://gitlab.com/caosdb"},"Sources"),n().createElement("a",{key:"3",className:"nav-link px-2",href:"https://docs.indiscale.com/"},"Documentation")],copyRight:"© 2021 IndiScale GmbH"}),si=function(){return n().createElement("footer",null,n().createElement("div",{className:"footer-border"}),n().createElement("div",{className:"footer-body"},n().createElement("div",{className:"container py-3 my-4"},n().createElement("ul",{className:"nav align-items-center justify-content-center pb-3 mb-3"},li.items.map((function(e,t){var r=0===t?null:n().createElement("li",{className:"nav-item px-1"},"•");return n().createElement(n().Fragment,{key:t},r,n().createElement("li",{className:"nav-item"},e))}))),n().createElement("p",{className:"text-center"},li.copyRight))))};function ci(e){return ci="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ci(e)}function ui(){ui=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==ci(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function fi(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function di(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function pi(e){var r,a,o=e.loading||n().createElement(De,null),i=(r=(0,t.useState)(o),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return di(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?di(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=i[0],s=i[1];return(0,t.useEffect)((function(){var t=function(){var e,t=(e=ui().mark((function e(t,r,a){var o,i;return ui().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=void 0,e.prev=1,e.next=4,t;case 4:if(o=e.sent,!r){e.next=9;break}return e.next=8,r(o);case 8:o=e.sent;case 9:e.next=21;break;case 11:if(e.prev=11,e.t0=e.catch(1),!a){e.next=19;break}return e.next=16,a(e.t0);case 16:o=e.sent,e.next=21;break;case 19:i=e.t0&&e.t0.message?e.t0.message:e.t0,o=n().createElement("span",null,"An unhandled error occured: ",i);case 21:s(o);case 22:case"end":return e.stop()}}),e,null,[[1,11]])})),function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){fi(o,r,a,i,l,"next",e)}function l(e){fi(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(e,n,r){return t.apply(this,arguments)}}();t(e.promise,e.then,e.catch)}),[e.promise,e.then,e.catch,s]),l}function mi(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var hi=function(e){var r,a,o=e.name,i=e.value,l=e.icons,s=e.style,c=e.color,u=e.readOnly,f=e.onChange,d=e.onBlur,p=e.setValue,m=e.title,h=(r=(0,t.useState)(i||"false"),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return mi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?mi(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=h[0],v=h[1];s=s||"check";var b,y={x:{true:"bi bi-x-square"+(c=c||{check:{true:" text-success",false:" text-body",partial:" color-light-green"},"check-fill":{true:" text-success",false:" text-body",partial:" color-light-green"},x:{true:" text-danger",false:" text-body",partial:" text-warning"},"x-fill":{true:" text-danger",false:" text-body",partial:" text-warning"}}[s]).true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square"+c.partial},"x-fill":{true:"bi bi-x-square-fill"+c.true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square-fill"+c.partial},check:{true:"bi bi-check-square"+c.true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square"+c.partial},"check-fill":{true:"bi bi-check-square-fill"+c.true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square-fill"+c.partial}},x={partial:"false",true:"false",false:"true"},w={};u||(b=n().createElement("input",{className:"caosdb-check-box-input",onChange:f,tabIndex:"-1",type:"hidden",name:o,value:g}),w.onClick=function(){p(o,x[g]),v(x[g])},w.onKeyDown=function(e){"Space"===e.code&&(p(o,x[g]),v(x[g]),e.preventDefault())},w.tabIndex="0",w.onBlur=d);var E=(l=l||{})[g]||n().createElement("i",{className:"ms-1 caosdb-checkbox-icon "+y[s][g]}),k="caosdb-checkbox d-flex align-items-center";return u&&(k+=" read-only"),n().createElement("span",{title:m,className:k,role:"checkbox","aria-checked":g},b,n().createElement("span",w,E))};hi.propTypes={name:h().string.isRequired,value:h().oneOf(["true","false"]),icons:h().object,style:h().string,color:h().object,readOnly:h().bool,onChange:h().func,onBlur:h().func,setValue:h().func,title:h().string};var gi=function(e){var t=e.className,r=e.children;return t=t||"",n().createElement("div",{className:"card mt-3 rounded shadow ".concat(t)},r)};function vi(e){if(!e||"undefined"==typeof window)return;const t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}gi.propTypes={className:h().string,children:h().oneOfType([h().arrayOf(h().node),h().node])},gi.Body=function(e){var t=e.children;return n().createElement("div",{className:"card-body"},t)},gi.Body.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},gi.Footer=function(e){var t=e.children;return n().createElement("div",{className:"card-footer d-flex justify-content-between"},t)},gi.Footer.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},gi.Title=function(e){var t=e.children;return n().createElement("h3",{className:"card-title"},t)},gi.Title.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},gi.Header=function(e){var t=e.title,r=e.children;return t=t?n().createElement(gi.Title,null,t):void 0,n().createElement("div",{className:"card-header"},t,r)},gi.Header.propTypes={title:h().node,children:h().oneOfType([h().arrayOf(h().node),h().node])};var bi=function(){return bi=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},bi.apply(this,arguments)};function yi(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function xi(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function l(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function wi(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!((a=(a=i.trys).length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}function Ei(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}var ki=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},Ci={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},Si={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},Ai={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},Ni={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},Fi={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},Oi={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},_i={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},Li={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},zi=function(e){switch(e){case"ES-es":return Ci;case"EN-en":default:return Si;case"FR-fr":return Ai;case"IT-it":return Ni;case"PT-pt":return Fi;case"RU-ru":return Oi;case"ZH-cn":return _i;case"ZH-hk":return Li}},Ti={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},Pi={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},ji={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},Di={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},Ri={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},Mi={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},Ii={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},Bi={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},qi=function(e){switch(e){case"ES-es":return Ti;case"EN-en":default:return Pi;case"FR-fr":return ji;case"IT-it":return Di;case"PT-pt":return Ri;case"RU-ru":return Mi;case"ZH-cn":return Ii;case"ZH-hk":return Bi}},Ui={"ES-es":{maxSizeError:function(e){return"El archivo es muy grande. El tam. máximo es ".concat(ki(e))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},"EN-en":{maxSizeError:function(e){return"File is too big. Max file size allowed is ".concat(ki(e))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},"FR-fr":{maxSizeError:function(e){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(ki(e))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},"IT-it":{maxSizeError:function(e){return"Il file è molto grande. Il tam. il massimo è ".concat(ki(e))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},"PT-pt":{maxSizeError:function(e){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(ki(e))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},"RU-ru":{maxSizeError:function(e){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(ki(e))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},"ZH-cn":{maxSizeError:function(e){return"文件太大。 允许的最大文件大小为 ".concat(ki(e))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},"ZH-hk":{maxSizeError:function(e){return"文件太大。 允許的最大文件大小為 ".concat(ki(e))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}}},$i=function(e,t,n){return new Promise((function(r,a){try{var o=new FileReader;o.onprogress=function(){null==t||t()},o.onerror=function(){null==n||n()},o.onload=function(){r(o.result)},o.readAsDataURL(e)}catch(e){a(void 0)}}))};function Hi(e){return new Promise((function(t,n){if(e&&0!==e.length)try{var r=new Image;r.src=e,r.onerror=function(e){n("landscape")},r.onload=function(){var e=r.width,n=r.height;t(e>n?"landscape":"portrait")}}catch(e){n("landscape")}else n("landscape")}))}var Wi="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",Vi="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",Gi=function(e){var t=/(?:\\.([^.]+))?$/.exec(e);return t?t[1]:""},Qi="octet",Yi=function(e){if(!e||!e.includes("/"))return Qi;var t=e.split("/")[0],n=e.split("/")[1];switch(t){case"application":return function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return Qi}}(n);case"audio":return function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return Qi}}(n);case"video":return function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return Qi}}(n);case"text":return function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return Qi}}(n);case"image":return function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return Qi}}(n);case"font":return function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return Qi}}(n);default:return Qi}},Ki=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},Xi=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},Zi={aac:"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",accdb:"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",abw:"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",arc:"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",avi:"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",azw:"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",octet:Vi,bmp:"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",bz:"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",bz2:"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",cda:"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",csh:"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",css:"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",csv:"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",docx:"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",drawio:"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",eot:"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",epub:"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",gzip:"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",gif:"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",html:Wi,icalendar:"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",jar:"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",jpeg:"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",javascript:"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",json:"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",jsonld:"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",midi:"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",mp3:"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",mp4:"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",mpeg:"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",mpkg:"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",mp2t:Vi,odp:"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",ods:"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",odt:"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",oga:"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",ogv:"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",ogx:"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",opus:"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",otf:"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",png:"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",pdf:"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",php:"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",pptx:"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",psd:"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",rar:"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",rtf:"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",sass:"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",sh:"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",swf:"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",tar:"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",tiff:"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",ttf:"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",typescript:"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",text:"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",vsd:"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",wav:"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",weba:"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",webm:"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",webp:"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",woff:"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",wma:"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",wmv:"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",xhtml:Wi,xlsx:"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",xml:"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",xul:"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",zip:"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",sevenzip:"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",python:"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",java:"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",react:"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",vue:"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",fallBack:Vi},Ji=function(){function e(e){var t=e.id,n=e.file,r=e.name,a=e.size,o=e.type,i=e.imageUrl,l=e.valid,s=e.errors,c=e.uploadMessage,u=e.uploadStatus,f=e.progress,d=e.xhr,p=e.extraData,m=e.extraUploadData,h=e.serverResponse,g=e.downloadUrl,v=e.videoUrl;this.id=t,this.file=n,this.name=r,this.size=a,this.type=o,this.imageUrl=i,this.valid=l,this.errors=s,this.uploadStatus=u,this.uploadMessage=c,this.progress=f,this.xhr=d,this.extraData=p,this.extraUploadData=m,this.serverResponse=h,this.downloadUrl=g,this.videoUrl=v}return e.toExtFile=function(e){for(var t={},n=Object.keys(e),r=Object.values(e),a=0;a<r.length;a++){var o=r[a],i=n[a];void 0!==o&&(t[i]=o)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),el=function(){return el=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},el.apply(this,arguments)};function tl(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function l(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function nl(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!((a=(a=i.trys).length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}function rl(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}var al=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,n){return t?(e.fileLists[t]=rl([],n,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return 0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return}},e.setFileListMapPreparing=function(t,n,r,a){if("number"==typeof t||"string"==typeof t)try{var o,i=rl([],n,!0);return a&&r&&(i=i.filter((function(e){return e.valid}))),o=(i=r?i.map((function(e){return"success"!==e.uploadStatus&&e.valid?el(el({},e),{uploadStatus:"preparing"}):el({},e)})):i.map((function(e){return"success"!==e.uploadStatus?el(el({},e),{uploadStatus:"preparing"}):el({},e)}))).map((function(e){return new Ji(e)})),e.setFileList(t,o),o}catch(e){return}},e.setFileListMapPreparing2=function(t,n,r,a){return e.setFileList(t,n.map((function(e){return new Ji(el(el({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),ol=(function(){function e(){}e.createFile=function(e,t,n){var r=new File([],e,{type:n});return Object.defineProperty(r,"size",{get:function(){return t}}),r},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var n=[];return n.push(e.create_aac(t)),n.push(e.create_abw(t)),n.push(e.create_freearc(t)),n.push(e.create_avi(t)),n.push(e.create_azw(t)),n.push(e.create_octet(t)),n.push(e.create_bmp(t)),n.push(e.create_bz(t)),n.push(e.create_bz2(t)),n.push(e.create_cda(t)),n.push(e.create_csh(t)),n.push(e.create_css(t)),n.push(e.create_csv(t)),n.push(e.create_doc(t)),n.push(e.create_docx(t)),n.push(e.create_eot(t)),n.push(e.create_epub(t)),n.push(e.create_gzip(t)),n.push(e.create_gif(t)),n.push(e.create_htm(t)),n.push(e.create_html(t)),n.push(e.create_ico(t)),n.push(e.create_icalendar(t)),n.push(e.create_jar(t)),n.push(e.create_jpeg(t)),n.push(e.create_jpg(t)),n.push(e.create_js(t)),n.push(e.create_json(t)),n.push(e.create_jsonld(t)),n.push(e.create_mid(t)),n.push(e.create_midi(t)),n.push(e.create_x_mid(t)),n.push(e.create_x_midi(t)),n.push(e.create_mjs(t)),n.push(e.create_mp3(t)),n.push(e.create_mp4(t)),n.push(e.create_mpeg(t)),n.push(e.create_mpkg(t)),n.push(e.create_odp(t)),n.push(e.create_ods(t)),n.push(e.create_odt(t)),n.push(e.create_oga(t)),n.push(e.create_ogv(t)),n.push(e.create_ogx(t)),n.push(e.create_opus(t)),n.push(e.create_otf(t)),n.push(e.create_png(t)),n.push(e.create_pdf(t)),n.push(e.create_php(t)),n.push(e.create_ppt(t)),n.push(e.create_pptx(t)),n.push(e.create_rar(t)),n.push(e.create_rtf(t)),n.push(e.create_sh(t)),n.push(e.create_svg(t)),n.push(e.create_swf(t)),n.push(e.create_tar(t)),n.push(e.create_tif(t)),n.push(e.create_tiff(t)),n.push(e.create_ts(t)),n.push(e.create_ttf(t)),n.push(e.create_text(t)),n.push(e.create_typescript(t)),n.push(e.create_vsd(t)),n.push(e.create_wav(t)),n.push(e.create_weba(t)),n.push(e.create_webm(t)),n.push(e.create_webp(t)),n.push(e.create_woff(t)),n.push(e.create_woff2(t)),n.push(e.create_xhtml(t)),n.push(e.create_xlsx(t)),n.push(e.create_xls(t)),n.push(e.create_xml(t)),n.push(e.create_xml_txt(t)),n.push(e.create_xul(t)),n.push(e.create_zip(t)),n.push(e.create_python(t)),n.push(e.create_java(t)),n.push(e.create_react(t)),n.push(e.create_vue(t)),n}}(),function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}()),il=function(e){for(var t=[],n=0,r=void 0;r=e[n];n++)t.push({id:ol.getNextId(),file:r,name:r.name,size:r.size,type:r.type});return t},ll=function(e){return void 0===e&&(e=5e3),new Promise((function(t,n){setTimeout((function(){t()}),e)}))},sl=function(e,t){void 0===t&&(t=qi("EN-en"));var n=e.toExtFile();return new Promise((function(e,r){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var r=!0,a=t.fakeuploadsuccess,o={url:""};e(el(el({},n),{serverResponse:{success:r,message:a,payload:o},uploadStatus:"success",uploadMessage:a}))}else r=!1,a=t.fakeUploadError,o={},e(el(el({},n),{serverResponse:{success:r,message:a,payload:o},uploadStatus:"error",uploadMessage:a}))}),1700)}))};var cl=function(e,t){return t?"".concat(e," ").concat(t):e},ul=function(e,t,n,r,a,o){var i,l=[];if(!t)return l;for(var s=t,c=(i=o)&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(i)?Ui[i]:Ui["EN-en"],u=c.maxFileCount,f=0;f<e.length;f++){var d=e[f];if((d=fl(d,r,n,c)).valid){var p=s>0;d.valid=p,p||(d.errors=d.errors?rl(rl([],d.errors,!0),[u(a||1/0)],!1):[u(a||1/0)]),s--}l.push(d)}return l},fl=function(e,t,n,r){var a=el({},e),o=[];if(!e.file)return el({},a);if(t){var i=t(a.file).errors;i&&o.push.apply(o,i)}var l=n.maxFileSize,s=n.accept,c=e.file;if(l&&c.size>l){var u=r.maxSizeError;o.push(u(l))}s&&!function(e,t){for(var n=t.name,r=t.type,a=0;a<e.length;a++){var o=e[a];if(0!==o.length){if("."===o.charAt(0)&&o.includes(Gi(n)))return!0;if(r&&r.length>0&&o.includes("/")&&r.includes("/")){var i=o.split("/")[0],l=o.split("/")[1],s=r.split("/")[0],c=r.split("/")[1];if(i===s){if("*"===l)return!0;if(l===c)return!0}}}}return!1}(function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]}(s),c)&&o.push(r.acceptError);var f=0===o.length;return el(el({},a),{valid:f,errors:f?void 0:o})},dl={success:!1,message:"Timeout error",payload:{}},pl={success:!1,message:"Upload aborted",payload:{}},ml={success:!1,message:"Error when parsing JSON response",payload:{}},hl={success:!1,message:"Unexpected error",payload:{}},gl=function(e,t){return el(el({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},vl=function(e,t,n,r,a){return void 0===t&&(t="POST"),new Promise((function(o,i){var l=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return o(dl)},e.upload.onabort=function(){o(pl)},e.onloadend=function(e){return tl(void 0,void 0,void 0,(function(){return nl(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return tl(void 0,void 0,void 0,(function(){return nl(this,(function(t){return 4===e.readyState&&(""!==e.response?o(function(e){try{var t=JSON.parse(e.response),n=t.success,r=t.message;return{success:"boolean"==typeof n&&n,message:"string"==typeof r?r:"Error on message response",payload:t.payload||{}}}catch(e){return ml}}(e)):o(pl)),[2]}))}))},e.open(l,n,!0),function(e,t){for(var n=Object.keys(t||{}),r=0;r<n.length&&t;r++)e.setRequestHeader(n[r],t[n[r]])}(e,a),e.send(r)}))},bl=function(e,t,n,r,a){return tl(void 0,void 0,void 0,(function(){return nl(this,(function(o){return[2,new Promise((function(o,i){return tl(void 0,void 0,void 0,(function(){var i,l,s,c,u,f;return nl(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(i=e.xhr)?(l=n||"POST",s=e.file,(c=new FormData).append(a||"file",s),u=el({},e.extraUploadData),function(e,t){for(var n=Object.keys(t||{}),r=0;r<n.length&&t;r++)e.append(n[r],t[n[r]])}(c,u),f=void 0,[4,vl(i,l,t,c,r||{})]):(o(function(e){return el(el({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})}(e)),[2]);case 1:return(f=d.sent()).success?o(function(e,t){return el(el({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})}(e,f)):o(gl(e,f)),[3,3];case 2:return d.sent(),o(gl(e,hl)),[3,3];case 3:return[2]}}))}))}))]}))}))},yl=function(e){return e?e.map((function(e){return el(el({},e),{xhr:new XMLHttpRequest})})):[]},xl=function(e){return void 0===e&&(e=1500),new Promise((function(t,n){setTimeout((function(){t(!0)}),e)}))},wl=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),Ji.toExtFile(e)}))},El={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},kl=function(e,t){void 0===t&&(t=25);var n="",r=(100-t)/100,a=0,o=0,i=0;if(Sl(Al(e)))a=16*Ol(e.charAt(1))+Ol(e.charAt(2)),o=16*Ol(e.charAt(3))+Ol(e.charAt(4)),i=16*Ol(e.charAt(5))+Ol(e.charAt(6)),n="rgb(".concat(a*r,", ").concat(o*r,",").concat(i*r,")");else if(e.includes("rgba")){var l=e.replace("rgba(","").split(",");n="rgb(".concat(parseInt(l[0],10)*r,", ").concat(parseInt(l[1],10)*r,",").concat(parseInt(l[2],10)*r,")")}else e.includes("rgb")&&(l=e.replace("rgb(","").split(","),n="rgb(".concat(parseInt(l[0],10)*r,", ").concat(parseInt(l[1],10)*r,",").concat(parseInt(l[2],10)*r,")"));return n},Cl=function(e,t,n){void 0===t&&(t=0);var r=n||"rgba(255, 255, 255, 0.6)";if(!e)return r;var a,o,i,l=e.toUpperCase();return l.includes("RGBA")?l:l.includes("RGB")?l.replace("RGB","rgba").replace(")",", ".concat(t,")")):Sl(Al(l))?(a=16*Ol(l.charAt(1))+Ol(l.charAt(2)),o=16*Ol(l.charAt(3))+Ol(l.charAt(4)),i=16*Ol(l.charAt(5))+Ol(l.charAt(6)),"rgba(".concat(a,", ").concat(o,",").concat(i," , ").concat(t,")")):r},Sl=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!Nl.includes(e.charAt(t)))return!1;return!0};function Al(e){return e?void 0!==El[e.toLocaleLowerCase()]?El[e.toLocaleLowerCase()]:e:""}var Nl=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],Fl=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Ol=function(e){return Nl.includes(e)?Fl[Nl.indexOf(e)]:0},_l=function(e){return void 0!==e&&""!==e?e:zl},Ll=function(e,t){return void 0===t&&(t=1),Cl(_l(Al(e)),t)},zl="#646c7f";function Tl(e,t){return e?bi(bi({},t),e):t}var Pl=function(e){var n=e.onChange,r=e.inputRef,a=e.accept,o=e.multiple;return t.createElement(t.Fragment,null,t.createElement("input",{"aria-label":"fui-hidden-input",style:{display:"none"},ref:r,onChange:n,type:"file",accept:a,multiple:o}))},jl={clickable:!0,behaviour:"add",disabled:!1,dropOnLayer:!0,uploadConfig:{},actionButtons:{},header:!0,footer:!0,value:[]},Dl="8px";vi(".files-ui-dropzone-children-container {\\n width: 100%;\\n flex-grow: 1;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n flex-wrap: wrap;\\n padding: 5px 0;\\n}");var Rl=function(e){var n=e.children,r=e.label,a=e.localization,o=Array.isArray(n)&&0===n.length,i=qi(a);return n&&!o?t.createElement("div",{className:"files-ui-dropzone-children-container"},n):t.createElement("div",{className:"files-ui-dropzone-children-container"},t.createElement("label",null," ",r||i.defaultLabel))},Ml=function(e){e.stopPropagation(),e.preventDefault()},Il=function(e){e.dataTransfer.dropEffect="link",Ml(e)};function Bl(e){e.preventDefault(),e.stopPropagation()}var ql=function(e){return Ll(e,.4)};vi(".filesui-disabled-root {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.38);\\n}");var Ul=function(e){var n=e.open,r=e.className,a=e.style,o=cl("filesui-disabled-root",r);return n?t.createElement("div",{style:a,className:o,onDrop:function(e){return xi(void 0,void 0,void 0,(function(){return wi(this,(function(t){return Ml(e),[2]}))}))},onDragOver:function(e){Il(e)},onClick:function(e){Bl(e)}}):t.createElement(t.Fragment,null)};vi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.fui-dropzone-root {\\n width: 100%;\\n min-width: 150px;\\n min-height: 180px;\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n gap: 0 8px;\\n text-rendering: optimizeLegibility;\\n font-size: 1.5em;\\n font-family: "Poppins", sans-serif;\\n text-align: center;\\n font-weight: 400;\\n letter-spacing: 0.02857em;\\n box-sizing: border-box;\\n word-break: normal;\\n /* &.fui-dropzone-border {\\n box-sizing: border-box;\\n\\n border: 1px dashed #0c2358;\\n border-radius: 10px;\\n &.fui-hide-border {\\n border: none;\\n }\\n } */\\n}\\n@media (max-width: 600px) {\\n .fui-dropzone-root {\\n font-size: 1.3em;\\n }\\n}\\n.fui-dropzone-root.clickable {\\n cursor: pointer;\\n}\\n\\n.files-ui-header {\\n min-height: 23px;\\n /* height: 22px;\\n position: absolute; \\n top: 0;\\n */\\n cursor: text;\\n display: flex;\\n width: 100%;\\n flex-direction: row;\\n align-items: center;\\n justify-content: flex-end;\\n font-family: inherit;\\n font-size: 1rem;\\n}\\n@media (max-width: 960px) {\\n .files-ui-header {\\n font-size: 0.8rem;\\n }\\n}\\n\\n.files-ui-footer {\\n /* border-bottom-left-radius: 8px;\\n border-bottom-right-radius: 8px; */\\n box-sizing: border-box;\\n cursor: text;\\n /* height: 23px;\\n position: absolute;\\n bottom: 0;\\n left: 0; */\\n width: 100%;\\n /* display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center; */\\n font-family: inherit;\\n padding-left: 10px;\\n font-size: 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1; /* number of lines to show */\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n text-align: left;\\n}\\n@media (max-width: 960px) {\\n .files-ui-footer {\\n padding-left: 1px;\\n font-size: 0.9rem;\\n }\\n}\'),vi(".filesui-base-ripple-absolute {\\n position: absolute;\\n display: none;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n box-sizing: border-box;\\n border-radius: 8px;\\n overflow: hidden;\\n}\\n.filesui-base-ripple-absolute .filesui-base-ripple-relative {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n box-sizing: border-box;\\n}\\n.filesui-base-ripple-absolute .filesui-base-ripple-relative span.ripple {\\n position: absolute;\\n border-radius: 50%;\\n transform: scale(0);\\n animation: ripple 500ms linear;\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n@keyframes ripple {\\n to {\\n transform: scale(4);\\n opacity: 0;\\n }\\n}");var $l=function(e){if("number"==typeof e)return e;switch(e){case"micro":return 8;case"small":return 15;case"semi-medium":return 18;case"medium":return 25;case"large":return 28;case"extra-large":return 32;default:return 24}},Hl=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(n),c=i||{};return t.createElement("svg",{style:o?bi({},bi({cursor:"pointer"},c)):c,onClick:function(e){Bl(e),null==o||o(e)},xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",className:l||""},t.createElement("path",{d:"M0 0h24v24H0V0z",fill:"none",opacity:".87"}),t.createElement("path",{d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8zm5 11.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z",fill:a||"none",opacity:".5"}),t.createElement("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13L12 10.59 8.41 7 7 8.41 10.59 12 7 15.59 8.41 17 12 13.41 15.59 17 17 15.59 13.41 12 17 8.41z"}))},Wl=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?bi({},bi({cursor:"pointer"},c)):c,onClick:function(){return null==o?void 0:o()},xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000"},n().createElement("path",{d:"M0 0h24v24H0z",fill:a||"none"}),n().createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}))},Vl=function(e){var t=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=$l(t),s=o||{};return n().createElement("svg",{className:i||"",style:a?bi({},bi({cursor:"pointer"},s)):s,onClick:function(){return null==a?void 0:a()},xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:l?"".concat(l,"px"):"24px",viewBox:"0 0 24 24",width:l?"".concat(l,"px"):"24px",fill:r||"#000000"},n().createElement("g",null,n().createElement("rect",{fill:"none",height:l||"24",width:l||"24"})),n().createElement("g",null,n().createElement("g",null,n().createElement("path",{d:"M16,11h-1V3c0-1.1-0.9-2-2-2h-2C9.9,1,9,1.9,9,3v8H8c-2.76,0-5,2.24-5,5v7h18v-7C21,13.24,18.76,11,16,11z M11,3h2v8h-2V3 z M19,21h-2v-3c0-0.55-0.45-1-1-1s-1,0.45-1,1v3h-2v-3c0-0.55-0.45-1-1-1s-1,0.45-1,1v3H9v-3c0-0.55-0.45-1-1-1s-1,0.45-1,1v3H5 v-5c0-1.65,1.35-3,3-3h8c1.65,0,3,1.35,3,3V21z"}))))},Gl=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(n),c=i||{};return t.createElement("svg",{className:l||"",style:o?bi({cursor:"pointer"},c):c,xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Bl(e),null==o||o(e)}},t.createElement("path",{d:"M0 0h24v24H0V0z",fill:a||"none"}),t.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"}))},Ql=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(n),c=i||{};return t.createElement("svg",{className:l||"",style:o?bi({cursor:"pointer"},c):c,enableBackground:"new 0 0 24 24",xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Bl(e),null==o||o(e)}},t.createElement("path",{d:"M0 0h24v24H0V0z",fill:a||"none"}),t.createElement("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3zm-9-3.82l-2.09-2.09L6.5 13.5 10 17l6.01-6.01-1.41-1.41z"}))},Yl=function(e){var t=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=$l(t),s=o||{};return n().createElement("svg",{className:i||"",style:a?bi({},bi({cursor:"pointer"},s)):s,onClick:function(){return null==a?void 0:a()},xmlns:"http://www.w3.org/2000/svg",height:l?"".concat(l,"px"):"24px",viewBox:"0 0 24 24",width:l?"".concat(l,"px"):"24px",fill:r||"#000000"},n().createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}),n().createElement("path",{d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8z",opacity:".4"}),n().createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z"}))},Kl=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(n),c=i||{};return t.createElement("svg",{className:l||"",style:o?bi({cursor:"pointer"},c):c,enableBackground:"new 0 0 24 24",xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Bl(e),null==o||o(e)}},t.createElement("g",null,t.createElement("rect",{fill:a||"none",height:s,width:s})),t.createElement("g",null,t.createElement("path",{d:"M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M17,11l-1.41-1.41L13,12.17V4h-2v8.17L8.41,9.59L7,11l5,5 L17,11z"})))},Xl=function(e){var n=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=$l(n)-2,s=o||{};return t.createElement("svg",{className:i||"",style:a?bi({cursor:"pointer"},s):s,"aria-hidden":"true","aria-label":"info",fill:r||"#000000",role:"img",transform:"",version:"1.1",viewBox:"0 0 36 36",xmlns:"http://www.w3.org/2000/svg",height:"".concat(l,"px"),width:"".concat(l,"px"),onClick:function(e){Bl(e),null==a||a(e)}},t.createElement("path",{d:"M22.378 0c2.412 0 3.618 1.642 3.618 3.523 0 2.349-2.095 4.522-4.822 4.522-2.284 0-3.616-1.35-3.553-3.582 0-1.877 1.586-4.462 4.757-4.462zM14.956 36c-1.904 0-3.299-1.174-1.967-6.343l2.185-9.166c0.38-1.465 0.443-2.054 0-2.054-0.571 0-3.040 1.012-4.504 2.011l-0.95-1.584c4.63-3.935 9.956-6.241 12.242-6.241 1.903 0 2.219 2.291 1.269 5.814l-2.504 9.634c-0.443 1.701-0.254 2.288 0.191 2.288 0.571 0 2.443-0.706 4.282-2.173l1.080 1.465c-4.504 4.585-9.423 6.349-11.324 6.349z"}))},Zl=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?bi({cursor:"pointer"},c):c,xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Bl(e),null==o||o(e)}},n().createElement("path",{d:"M0 0h24v24H0V0z",opacity:".9",fill:a||"none"}),n().createElement("path",{d:"M8 5v14l11-7L8 5z"}))},Jl=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(t),c=i||{};return n().createElement("svg",{style:o?bi({},bi({cursor:"pointer"},c)):c,onClick:function(){return null==o?void 0:o()},xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",className:l||""},n().createElement("g",null,n().createElement("rect",{fill:a||"none",height:t||"24",width:t||"24"})),n().createElement("g",null,n().createElement("path",{d:"M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M7,9l1.41,1.41L11,7.83V16h2V7.83l2.59,2.58L17,9l-5-5L7,9z"})))},es=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?bi({},bi({cursor:"pointer"},c)):c,onClick:function(){return null==o?void 0:o()},xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000"},n().createElement("rect",{fill:a||"none",height:s,width:s}),n().createElement("path",{d:"M18,15.17V15h2v2.17L18,15.17z M15.41,12.59L17,11l-1.41-1.41L14,11.17L15.41,12.59z M13,10.17V4h-2v4.17L13,10.17z M21.19,21.19l-1.78-1.78L2.81,2.81L1.39,4.22l6.19,6.19L7,11l5,5l0.59-0.59L15.17,18H6v-3H4v3c0,1.1,0.9,2,2,2h11.17l2.61,2.61 L21.19,21.19z"}))};vi("@keyframes filesui-rotate-spin {\\n from {\\n transform: rotate(0deg);\\n }\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n.filesui-rotate {\\n cursor: default;\\n}\\n\\n@media (prefers-reduced-motion: no-preference) {\\n .filesui-rotate {\\n animation: filesui-rotate-spin infinite 2s linear;\\n }\\n}");var ts,ns=function(e){var t=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=e.spin,s=$l(t),c=o||{},u=i||"";return u+=l?"filesui-rotate":"",n().createElement("svg",{className:u,style:a?bi({},bi({cursor:"pointer"},c)):c,onClick:function(){return null==a?void 0:a()},xmlns:"http://www.w3.org/2000/svg",height:s?"".concat(s,"px"):"24px",viewBox:"0 0 24 24",width:s?"".concat(s,"px"):"24px",fill:r||"#000000"},n().createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}),n().createElement("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"}))},rs=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=$l(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?bi({cursor:"pointer"},c):c,xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Bl(e),null==o||o(e)}},n().createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}),n().createElement("path",{d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8z",fill:a||"none"}),n().createElement("path",{d:"M12 4C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 12.5c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}))},as=function(e){var n=e.maxFileSize,r=e.numberOfValidFiles,a=e.onReset,o=e.onClean,i=e.maxFiles,l=e.onUploadStart,s=e.isUploading,c=e.urlPresent,u=e.localization,f=e.borderRadius,d=e.style,p=e.className,m=void 0===p?"":p,h=e.resetStyles,g=e.color,v=e.firstClassName,b=void 0===v?"":v,y=qi(u).header,x=function(){null==o||o()},w=function(){null==l||l()},E=h?m:cl("files-ui-header "+b,m),k=h?d:bi(bi({},d),{borderTopLeftRadius:f,borderTopRightRadius:f});return t.createElement("div",{className:E,onClick:function(e){e.stopPropagation()},style:k},function(){var e=[];l&&c&&r&&(s?e.push(t.createElement(ns,{spin:!0,color:g})):e.push(t.createElement(t.Fragment,null,t.createElement(t.Fragment,null,y.uploadFilesMessage),t.createElement(Jl,{color:g,onClick:w}))),e.push(t.createElement(t.Fragment,null,","," ")));var u=y.maxSizeMessage,f=ki(n);f&&(e.push(u(f)),e.push(t.createElement(t.Fragment,null,","," ")));var d=y.validFilesMessage;return i&&(e.push(d(r,i)),e.push(t.createElement(t.Fragment,null,","," "))),o&&e.push(t.createElement(Vl,{color:g,onClick:x,size:"semi-medium"})),a&&e.push(t.createElement(Hl,{color:g,onClick:function(){return null==a?void 0:a()}})),e}().map((function(e,n){return t.createElement("span",{key:n,style:{display:"flex"}},e)})))},os=function(e){var n=e.accept,r=e.message,a=e.localization,o=e.borderRadius,i=e.style,l=e.className,s=void 0===l?"":l,c=e.resetStyles,u=void 0!==c&&c,f=e.allowedTypesLabel,d=void 0===f||f,p=e.customMessage,m=void 0===p?void 0:p,h=e.firstClassName,g=void 0===h?"":h,v=qi(a).footer,b=v.acceptCustom,y=u?s:cl("files-ui-footer ".concat(g),s),x=u?i:bi(bi({},i),{borderBotomLeftRadius:o,borderBotomRightRadius:o});return t.createElement("div",{className:y,onClick:function(e){Bl(e)},style:x},m?t.createElement(t.Fragment,null,m):t.createElement(t.Fragment,null,r||(n?b(n):d?v.acceptAll:void 0)))};function is(e){for(var t,n="",r=" ",a=!1,o=0;o<e.length;o++){var i=e[o];if((t=i)&&!/[a-z]/.test(t)&&/[A-Z]/.test(t)){r=i,a=!0;break}}if(a){var l=e.split(r);n="".concat(l[0],"-").concat(r.toLowerCase()).concat(l[1])}else n=e;return n}function ls(e){var t="",n=e.trim().split(" ");if(n.length>1){for(var r=0;r<n.length;r++)t+=".".concat(n[r]);t+="{\\n"}else t+=".".concat(e,"{\\n");return t}function ss(e){if(null==e)return"";for(var t,n="",r=[],a=0;a<e.length;a++){var o="";o+=ls((d=e[a]).className);for(var i=Object.keys(d.rules),l=0;l<i.length;l++){var s=is(p=i[l]);if((t=s)&&t.includes(":")){var c=d.className+s;r.push({className:c,rules:d.rules[s]})}else{var u=d.rules[p];o+="\\t".concat(s," : ").concat(u,";\\n")}}n+=o+="}\\n"}for(var f=0;f<r.length;f++){o="";var d=r[f];for(i=Object.keys(d.rules),o+=".".concat(d.className,"{\\n"),l=0;l<i.length;l++){var p;s=is(p=i[l]),u=d.rules[p],o+="\\t".concat(s," : ").concat(u,";\\n")}n+=o+="}\\n"}return n}!function(e){e.insertStyleSheet=function(e){var t;if("undefined"==typeof window)return"";if(null==e)return"";if(document.getElementById(e.id))return e.id;t=e.id;var n=document.createElement("style");n.id=t,n.setAttribute("type","text/css");var r=ss(e.sheetRules||[])+e.raw||"";return n.textContent=r,document.head.appendChild(n)?t:""},e.editStyleSheet=function(e,t){if("undefined"==typeof window)return"";if(null==e||null===t)return"";var n=document.getElementById(e);return n?(n.textContent=ss(t),""):""},e.removeStyleSheet=function(e){var t="";if(!e)return"";var n=document.getElementById(e);return n&&(document.head.removeChild(n),t=e),t},e.existStyleSheet=function(e){return null!=e&&!!document.getElementById(e)},e.makeStyleSheet=function(e){return null==e?null:e}}(ts||(ts={}));var cs=function(){function e(){}return e.getNextId=function(){return e.nextButtonClassNameNumber++,e.nextButtonClassNameNumber},e.nextButtonClassNameNumber=0,e.makeDynamicStyle=function(e,t,n,r,a,o){var i={id:"material-button-styles-".concat(e),sheetRules:[{className:"material-button.".concat(t,"-").concat(e),rules:{}},{className:"material-button-root.".concat(t,"-").concat(e),rules:{}}]},l=i.sheetRules;if(!n)switch(t){case"contained":l[0].rules={color:_l(Al(a)),backgroundColor:Ll(r),textDecoration:o},l[1].rules={":hover":{backgroundColor:kl(Ll(r))}};break;case"outlined":l[0].rules={border:"1px solid ".concat(Ll(r,.5)),color:Ll(r),backgroundColor:"transparent",textDecoration:o},l[1].rules={":hover":{border:"1px solid ".concat(Ll(r,1)),backgroundColor:Ll(r,.085)}};break;case"text":l[0].rules={color:Ll(r),backgroundColor:"transparent",textDecoration:o},l[1].rules={":hover":{backgroundColor:Ll(r,.085)}}}return i.sheetRules=l,i},e}();vi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.material-button-root {\\n border: 0;\\n cursor: pointer;\\n display: inline-flex;\\n outline: 0;\\n position: relative;\\n align-items: center;\\n vertical-align: middle;\\n justify-content: center;\\n text-decoration: none;\\n text-transform: none;\\n color: white;\\n}\\n\\n.material-button {\\n transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\\n overflow: hidden;\\n min-width: 64px;\\n box-sizing: border-box;\\n border-radius: 4px;\\n font-family: "Poppins", sans-serif;\\n font-size: 0.875rem;\\n font-weight: 400;\\n line-height: 1.75;\\n letter-spacing: 0.02857em;\\n}\\n\\n.material-button.uppercase {\\n text-transform: uppercase;\\n}\\n\\n.material-button.lowercase {\\n text-transform: lowercase;\\n}\\n\\n.material-button.capitalize {\\n text-transform: capitalize;\\n}\\n\\n.material-button.contained {\\n padding: 6px 16px;\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n.material-button.outlined {\\n padding: 5px 15px;\\n}\\n\\n.material-button.text {\\n padding: 5px 15px;\\n}\\n\\n.material-button-root.contained:hover {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n.material-button span.material-button-label {\\n width: 100%;\\n display: inherit;\\n align-items: inherit;\\n justify-content: inherit;\\n}\\n\\nspan.ripple {\\n position: absolute;\\n border-radius: 50%;\\n transform: scale(0);\\n animation: ripple 500ms linear;\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n\\n@keyframes ripple {\\n to {\\n transform: scale(4);\\n opacity: 0;\\n }\\n}\\n.material-button-root.disabled {\\n box-shadow: none;\\n cursor: default;\\n pointer-events: none;\\n background-color: rgba(0, 0, 0, 0.12);\\n color: rgba(0, 0, 0, 0.26);\\n padding: 6px 16px;\\n}\\n.material-button-root.disabled.darkmode {\\n background-color: rgba(255, 255, 255, 0.12);\\n color: rgba(255, 255, 255, 0.3);\\n}\\n\\n/* @media screen and (max-width: 600px) {\\n .material-button {\\n min-width: 30px;\\n font-size: 0.78rem;\\n line-height: 1.5;\\n letter-spacing: 0.025em;\\n }\\n .material-button.contained {\\n padding: 4px 13px;\\n }\\n .material-button.outlined {\\n padding: 4px 12px;\\n }\\n}\\n */\');var us=n().createContext({}),fs=function(e){var n=e.disabled,r=e.href,a=e.textTransform,o=e.variant,i=void 0===o?"contained":o,l=e.color,s=void 0===l?"#1976d2":l,c=e.textColor,u=void 0===c?"white":c,f=e.children,d=e.className,p=e.style,m=e.onClick,h=e.resetStyles,g=e.disableRipple,v=e.darkMode,b=e.id,y=yi(e,["disabled","href","textTransform","variant","color","textColor","children","className","style","onClick","resetStyles","disableRipple","darkMode","id"]),x=t.useContext(us).darkMode,w=void 0!==v?v:x,E=t.useMemo((function(){return b||ol.getNextId()+""}),[b]),k=function(e,n,r,a,o,i,l,s){var c=t.useState(""),u=c[0],f=c[1],d=t.useState(!1),p=d[0],m=d[1],h=t.useState(void 0),g=h[0],v=h[1];return t.useEffect((function(){s||function(e,t,n,r,a,o){var l="material-button-root material-button",s=cs.makeDynamicStyle(e,t,n,r,o,a),c="";if(p?ts.editStyleSheet(u,s.sheetRules||[]):(c=ts.insertStyleSheet(s),f(c),""!==c&&m(!0)),l+=n?" disabled":" ".concat(t," ").concat(t,"-").concat(e),i&&i.length>0&&(l+=" ".concat(i)),a){var d=a&&["uppercase","capitalize","lowercase","none"].includes(null==a?void 0:a.toLowerCase())?a.toLowerCase():"uppercase";l+=" ".concat(d)}v(l)}(l,e,n,r,o,a)}),[e,n,r,o,a,i,l,s]),t.useEffect((function(){return function(){return function(e,t){e&&(ts.removeStyleSheet(t),m(!1),f(""))}(p,u)}}),[p,u]),g}(i,n,s,u,a,d,E.replace(":","").replace(":",""),h),C=k&&w?cl(k,"darkmode"):k;return void 0!==C||h?t.createElement(r?"a":"button",bi({className:h&&d?d:C,"data-testid":r?"dui-anchor":"dui-button",onClick:function(e){e.preventDefault(),g||function(e,t,n){var r=e.currentTarget,a=document.createElement("span"),o=Math.max(r.clientWidth,r.clientHeight);a.style.width=a.style.height="".concat(o,"px"),a.classList.add("ripple"),a.style.backgroundColor="contained"!==t?ql(n):Cl("#ffffff",.4),r.appendChild(a),setTimeout((function(){null==a||a.remove()}),501)}(e,i,s),null==m||m(e)},href:r,style:p,children:t.createElement("span",{className:"material-button-label"},f),disabled:n},y)):t.createElement(t.Fragment,null,"loading styes")};vi(".files-ui-buttons-container {\\n width: 100%;\\n box-sizing: border-box;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-end;\\n box-sizing: border-box;\\n gap: 10px;\\n}\\n.files-ui-buttons-container.top {\\n padding-bottom: 10px;\\n}\\n.files-ui-buttons-container.bottom {\\n padding-top: 10px;\\n}");var ds=function(e){var n=e.cleanButton,r=e.abortButton,a=e.className,o=e.style,i=e.deleteButton,l=e.uploadButton,s=e.onAbort,c=e.onClean,u=e.onDelete,f=e.onUpload,d=e.top,p=e.disabled,m=[n?bi(bi({},n),{label:"Clean",onClick:n.onClick||c}):void 0,i?bi(bi({},i),{label:"Delete",onClick:i.onClick||u}):void 0,l?bi(bi({},l),{label:"Upload",onClick:l.onClick||f}):void 0,r?bi(bi({},r),{label:"Abort",onClick:r.onClick||s}):void 0].filter((function(e){return void 0!==e})),h="".concat(d?" top":" bottom"),g=cl("files-ui-buttons-container"+h,a);return t.createElement("div",{className:g,style:o},m.map((function(e,n){var r=e.children,a=e.label,o=e.resetStyles,i=e.className,l=e.style,s=e.onClick;return t.createElement(fs,{key:n,className:i,style:l,resetStyles:o,onClick:function(e){return null==s?void 0:s(e)},disabled:p},r||a)})))},ps=function(e){var n=e.onDrop,r=e.onDragLeave,a=e.className,o=e.open,i=e.style;return t.createElement("div",{className:a,onDragLeave:r,onDrop:n,style:i||{display:o?void 0:"none"}})};var ms=function(e,t,n,r){return{id:"files-dropzone-ui-style-id-"+e,sheetRules:[{className:"files-ui-dropzone-extra-".concat(e),rules:{color:Ll(t),border:"1px dashed ".concat(Ll(t)),borderRadius:Dl,background:n,minHeight:"number"==typeof r?"".concat(r,"px"):r}},{className:"files-ui-root-border-hide",rules:{borderColor:"transparent"}},{className:"files-ui-header-border-rd-".concat(e),rules:{"border-top-left-radius":Dl,"border-top-right-radius":Dl}},{className:"files-ui-footer-border-rd-top-bg-color-".concat(e),rules:{"border-bottom-left-radius":Dl,"border-bottom-right-radius":Dl,background:Ll(t,.129),borderTop:"1px dotted ".concat(Ll(t))}},{className:"files-ui-disabled-layer-color-".concat(e),rules:{borderRadius:Dl,background:Ll(t,.38)}}]}},hs=function(e,n,r,a,o,i,l,s,c){var u=t.useState(!1),f=u[0],d=u[1],p=t.useState(!1),m=p[0],h=p[1],g=t.useState(""),v=g[0],b=g[1],y=t.useState(void 0),x=y[0],w=y[1],E=t.useState(void 0),k=E[0],C=E[1],S=t.useState(!1),A=S[0],N=S[1];return t.useEffect((function(){return function(e,t,n,r,a,o,i,l,s,c){xi(void 0,void 0,void 0,(function(){var s,c,u;return wi(this,(function(f){switch(f.label){case 0:return e||t||n?(s=(e?function(e,t){var n="fallBack";if(!e)return n=Qi,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:n}:{url:Zi[n],mimeResume:n};n=Yi(e.type);var r=Gi(e.name);"text"===n&&(n=Xi(r)),n===Qi&&(n=Ki(r));var a=null==t?void 0:t[n];return void 0!==a?{url:a,mimeResume:n}:{url:Zi[n],mimeResume:n}}(e,l):function(e,t,n){var r="octet";if(!e)return r=Qi,(null==n?void 0:n.fallBack)?{url:null==n?void 0:n.fallBack,mimeResume:r}:{url:Zi[r],mimeResume:r};r=Yi(t);var a=Gi(e);"text"===r&&(r=Xi(a)),r===Qi&&(r=Ki(a));var o=null==n?void 0:n[r];return void 0!==o?{url:o,mimeResume:r}:{url:Zi[r],mimeResume:r}}(t,n,l)).url,b(s),o&&i?(h(!0),w(o),C(i),N(!0),[2]):[3,1]):[2];case 1:return o?(d(!0),w(o),N(!0),[2]):[3,2];case 2:return i?(h(!0),C(i),N(!0),[3,5]):[3,3];case 3:return c=gs(e,n),d("image"===c[0]),["mp4","ogg","webm"].includes(c[1])&&h("video"===c[0]),!a||!r&&null!=r||"image"!==c[0]?[3,5]:(u=void 0,e?[4,$i(e)]:[3,5]);case 4:(u=f.sent())&&w(u),f.label=5;case 5:return N(!0),[2]}}))}))}(e,n,r,a,o||!1,i,l,s),function(){w(void 0),d(!1),h(!1),N(!1)}}),[e,n,r,a,o,i,l,s]),[A,f,m,v,x,k]},gs=function(e,t){var n;return e?e.type?[(n=e.type.split("/"))[0],n[1]]:["octet","octet"]:(n=null==t?void 0:t.split("/"))&&n.length>1?[n[0],n[1]]:["octet","octet"]},vs=function(e){var n=Tl(e,jl),r=n.onChange,a=n.value,o=void 0===a?[]:a,i=n.accept,l=n.maxFileSize,s=n.maxFiles,c=n.validator,u=n.cleanFiles,f=n.onClean,d=n.autoClean,p=n.uploadConfig,m=n.fakeUpload,h=n.onUploadStart,g=n.onUploadFinish,v=n.background,b=n.color,y=n.minHeight,x=n.style,w=n.className,E=n.label,k=n.localization,C=n.disableRipple,S=n.onDragEnter,A=n.onDragLeave,N=n.actionButtons,F=n.dropOnLayer,O=n.header,_=n.footer,L=n.headerConfig,z=void 0===L?{}:L,T=n.footerConfig,P=void 0===T?{}:T,j=n.disabled,D=n.clickable,R=n.behaviour,M=n.children,I=yi(n,["onChange","value","accept","maxFileSize","maxFiles","validator","cleanFiles","onClean","autoClean","uploadConfig","fakeUpload","onUploadStart","onUploadFinish","background","color","minHeight","style","className","label","localization","disableRipple","onDragEnter","onDragLeave","actionButtons","dropOnLayer","header","footer","headerConfig","footerConfig","disabled","clickable","behaviour","children"]),B=t.useContext(us).localization,q=void 0!==k?k:B,U=p,$=U.url,H=U.method,W=U.headers,V=U.uploadLabel,G=U.cleanOnUpload,Q=void 0===G||G,Y=U.preparingTime,K=void 0===Y?1500:Y,X=U.autoUpload,Z=void 0!==X&&X,J=N,ee=J.position,te=J.abortButton,ne=J.deleteButton,re=J.uploadButton,ae=J.cleanButton,oe=J.style,ie=J.className,le=null==x?void 0:x.borderRadius,se=z.cleanFiles,ce=void 0===se||se,ue=z.deleteFiles,fe=void 0===ue||ue,de=z.maxFileSize,pe=void 0===de||de,me=z.uploadFiles,he=void 0===me||me,ge=z.uploadingIcon,ve=void 0===ge||ge,be=z.validFilesCount,ye=void 0===be||be,xe=z.customHeader,we=z.className,Ee=z.resetStyles,ke=void 0!==Ee&&Ee,Ce=z.style,Se=P.customFooter,Ae=P.noMissingFilesLabel,Ne=void 0===Ae||Ae,Fe=P.uploadProgressMessage,Oe=void 0===Fe||Fe,_e=P.uploadResultMessage,Le=void 0===_e||_e,ze=qi(q),Te=t.useRef(null),Pe=t.useRef(null),je=t.useRef(null),De=t.useState(!1),Re=De[0],Me=De[1],Ie=t.useState(!1),Be=Ie[0],qe=Ie[1],Ue=t.useState(""),$e=Ue[0],He=Ue[1],We=t.useMemo((function(){return ol.getNextId()+""}),[]),Ve=function(e,t,n,r){return null!=e||null!=t||null!=n||null!=r}(i,l,s,c),Ge=function(e,n,r,a,o,i,l,s,c){var u=t.useState([]),f=u[0],d=u[1],p=t.useState(0),m=p[0],h=p[1];return t.useEffect((function(){var t=al.getExtFileInstanceList(e);r?t&&t.forEach((function(e){var t=n.findIndex((function(t){return t.id===e.id}));if(-1===t)e.extraData={deleted:!0};else{var r=n[t];!function(e,t){var n=e.uploadStatus,r=t.uploadStatus;"preparing"===n&&["aborted",void 0].includes(r)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===n&&["aborted",void 0].includes(r)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)}(e,r)}})):d(n)}),[e,n]),t.useEffect((function(){if(c){var e=ul(f,i?i-m:1/0,{maxFileSize:a,accept:o},l,i,s);d(e)}else d(f.map((function(e){return bi(bi({},e),{valid:void 0})})))}),[c,a,o,i,s]),t.useEffect((function(){h(c?f.filter((function(e){return e.valid})).length:f.length)}),[f,c]),[f,m,d]}(We,o||[],Be,l,i,s,c,q,Ve),Qe=Ge[0],Ye=Ge[1],Ke=Ge[2],Xe=function(e){return xi(void 0,void 0,void 0,(function(){var t,n,r,a,o,i,l,s,c,u,f,d,p,v,b;return wi(this,(function(y){switch(y.label){case 0:return qe(!0),Be||0===e.length||!$?(qe(!1),[2]):0===e.length?(He(ze.noFilesMessage),setTimeout((function(){qe(!1)}),1500),[2]):(t=[],n=e.length,r=e.filter((function(e){return function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus}(e,Ve)})).length,a=0,o=0,i=ze.uploadingMessage,r>0?(Oe&&He(i("".concat(r,"/").concat(n))),null==h||h(e),t=al.setFileListMapPreparing(We,e,Ve,Q)||[],l=Ei([],t,!0).map((function(e){return e.toExtFile()})),ot(l,!0),[4,ll(K)]):(setTimeout((function(){Ne&&He(ze.noFilesMessage),qe(!1)}),1500),[2]));case 1:y.sent(),s=[],c=0,y.label=2;case 2:return c<t.length?"preparing"!==(u=t[c]).uploadStatus||(null===(b=u.extraData)||void 0===b?void 0:b.deleted)?[3,14]:[4,xl()]:[3,16];case 3:return y.sent(),"preparing"===(E=u).uploadStatus&&(E.uploadStatus="uploading",el(el({},E),{uploadStatus:"uploading"})),Oe&&He(i("".concat(++o,"/").concat(r))),ot(wl(t),!0),f=void 0,m?[4,sl(u,ze)]:[3,8];case 4:f=y.sent(),d=0,y.label=5;case 5:return d<100?(d+=(void 0===(x=21)&&(x=0),void 0===(w=35)&&(w=0),Math.floor(Math.random()*(w-x))+x),u.progress=d>100?100:d,[4,xl(1e3)]):[3,7];case 6:return y.sent(),ot(wl(t),!0),[3,5];case 7:return[3,11];case 8:return y.trys.push([8,10,,11]),[4,bl(u,$,H,W,V)];case 9:return f=y.sent(),[3,11];case 10:return y.sent(),f=function(e){return el(el({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})}(u.toExtFile()),[3,11];case 11:return p=f,u.uploadStatus=p.uploadStatus,u.uploadMessage=p.uploadMessage,"aborted"===u.uploadStatus?[3,13]:[4,xl()];case 12:y.sent(),y.label=13;case 13:return ot(wl(t),!0),"error"===p.uploadStatus&&a++,s.push(f),[3,15];case 14:ot(wl(t),!0),y.label=15;case 15:return c++,[3,2];case 16:return Ke(wl(t)),null==g||g(s),v=ze.uploadFinished,Le&&He(v(r-a,a)),setTimeout((function(){qe(!1)}),2e3),[2]}var x,w,E}))}))},Ze=function(){var e=al.getExtFileInstanceList(We);e&&e.forEach((function(e){"uploading"!==e.uploadStatus&&"preparing"!==e.uploadStatus||(null!==e.xhr&&void 0!==e.xhr&&e.xhr.abort(),e.uploadStatus="aborted",e.uploadMessage="Upload was aborted by user")}))},Je=function(e,n,r,a,o){var i=void 0===r&&void 0===a&&void 0===o?"default":e.replace(":","_").replace(":","_"),l=t.useState(""),s=l[0],c=l[1],u=t.useState(!1),f=u[0],d=u[1],p=t.useState(void 0),m=p[0],h=p[1],g=t.useState(void 0),v=g[0],b=g[1],y=t.useState(void 0),x=y[0],w=y[1],E=t.useState(void 0),k=E[0],C=E[1];return t.useEffect((function(){!function(e,t,n,r){var a="fui-dropzone-root fui-dropzone-border",o=ms(i,t,n,r),l="";f?ts.editStyleSheet(s,o.sheetRules||[]):(l=ts.insertStyleSheet(o),c(l),""!==l&&d(!0)),a+=" files-ui-dropzone-extra-".concat(i),e&&(a="".concat(a," ").concat(e)),h(a),b("files-ui-header-border-rd-".concat(i)),w("files-ui-footer-border-rd-top-bg-color-".concat(i)),C("files-ui-disabled-layer-color-".concat(i))}(n,r,a,o)}),[n,r,a,o]),[m,v,x,k]}(We,w,b,v,y),et=Je[0],tt=Je[1],nt=Je[2],rt=Je[3],at=function(e,n,r){var a=t.useState(""),o=a[0],i=a[1],l=t.useState(!1),s=l[0],c=l[1],u=t.useState(""),f=u[0],d=u[1],p=void 0===n?"default":e.replace(":","_").replace(":","_");return t.useEffect((function(){r&&function(e){var t="",n=function(e,t){return{id:"files-ui-drop-layer-style-id-"+e,sheetRules:[{className:"dropzone-layer-".concat(e),rules:{backgroundColor:Ll(t,.4),borderRadius:Dl,position:"absolute",left:0,top:0,width:"0%",height:"0%",zIndex:20,border:"0px dashed ".concat(Ll(t))}},{className:"dropzone-layer-drag",rules:{width:"100%",height:"100%",borderWidth:"2px"}}]}}(p,e),r="";"default"!==p||s?s?ts.editStyleSheet(o,n.sheetRules||[]):(r=ts.insertStyleSheet(n),i(r),""!==r&&c(!0)):ts.existStyleSheet("files-ui-drop-layer-style-id-"+p)?(c(!0),i("files-ui-drop-layer-style-id-"+p)):(r=ts.insertStyleSheet(n),i(r),""!==r&&c(!0)),t+="dropzone-layer-".concat(p),d(t)}(n)}),[n,r]),f}(We,b,!S&&!A);t.useEffect((function(){var e=ul(Qe,s?s-Ye:1/0,{maxFileSize:l,accept:i},c,s,q);Ke(e)}),[l,i,s,q]);var ot=function(e,t){var n=Ei("add"!==R||t?[]:Ei([],Qe,!0),e,!0);r?r(n):Ke(n),Z&&!t&&Xe(n)},it=function(e){var t=Ye;return"replace"===R&&(t=0),ul(e,s?s-t:1/0,{maxFileSize:l,accept:i},c,s,q)},lt=function(e){j||(Il(e),Me(!1))},st=function(){!function(e,t,n){if(t&&e){e.style.display="block";var r=document.createElement("span");r.id="filesui-ripple",r.className="ripple";var a=Math.max(t.clientWidth,t.clientHeight);r.style.width=r.style.height="".concat(a,"px"),r.style.backgroundColor=ql(n),t.appendChild(r),setTimeout((function(){e.style.display="none",null==r||r.remove()}),501)}}(Te.current,Pe.current,b)},ct=function(e){return xi(void 0,void 0,void 0,(function(){var t,n;return wi(this,(function(r){return Ml(e),j||Be||(C||st(),Me(!1),t=e.dataTransfer.files,n=il(t),Ve&&(n=it(n),d&&(n=n.filter((function(e){return e.valid})))),$&&(n=yl(n)),ot(n)),[2]}))}))},ut=function(){r?r([]):Ke([])},ft=function(){f?f():r?r(Qe.filter((function(e){return e.valid}))):Ke(Qe.filter((function(e){return e.valid})))},dt=et?Re&&F||j?cl(et,"files-ui-root-border-hide"):et:void 0,pt=dt?D&&!j?cl(dt,"clickable"):dt:void 0;return pt?t.createElement(t.Fragment,null,"before"===ee&&t.createElement(ds,{disabled:j,abortButton:Be?te:void 0,onAbort:Ze,deleteButton:ne,onDelete:Be?void 0:ut,uploadButton:Be||Z?void 0:re,onUpload:Z?void 0:function(){return Xe(Qe)},cleanButton:!Ve||Be||d?void 0:ae,onClean:ft,style:oe,className:ie,top:!0}),t.createElement("div",bi({style:x,className:pt},I,{onClick:function(){var e;!D||j||Be||(st(),(e=je.current)&&e.click())},onDragOver:function(e){Il(e),j||Me(!0)},onDragLeave:F?void 0:lt,onDrop:F?void 0:ct}),!C&&t.createElement("div",{ref:Te,className:"filesui-base-ripple-absolute",style:{borderRadius:null==x?void 0:x.borderRadius}},t.createElement("div",{ref:Pe,className:"filesui-base-ripple-relative"})),t.createElement(t.Fragment,null,O?t.createElement(t.Fragment,null,xe?t.createElement(t.Fragment,null,xe):t.createElement(as,{firstClassName:tt,color:Ll(b),style:Ce,className:we,resetStyles:ke,borderRadius:le,isUploading:Be&&ve,onReset:!Be&&fe?ut:void 0,maxFileSize:l&&pe?l:void 0,maxFiles:s&&ye?s:void 0,localization:q,urlPresent:void 0!==$&&he,onUploadStart:Z||re?void 0:function(){return Xe(Qe)},numberOfValidFiles:Ye,onClean:!ce||Be||ae||d?void 0:(u||f)&&Ve?ft:void 0})):t.createElement(t.Fragment,null)),t.createElement(Rl,{label:E,localization:q},M),t.createElement(t.Fragment,null,Se?t.createElement(t.Fragment,null,Se):t.createElement(t.Fragment,null,_&&t.createElement(os,bi({firstClassName:nt,borderRadius:le,accept:i,message:Be?$e:void 0,localization:q},P)))),F&&t.createElement(ps,{open:Re,className:Re?"".concat(at," dropzone-layer-drag"):at,onDragLeave:lt,onDrop:ct,style:{borderRadius:null==x?void 0:x.borderRadius}}),t.createElement(Pl,{multiple:!s||s>1,accept:i||"",inputRef:je,onChange:function(e){var t,n=e.target.files,r=il(n);Ve&&(r=it(r),d&&(r=r.filter((function(e){return e.valid})))),$&&(r=yl(r)),(t=je.current)&&(t.value=""),ot(r)}}),t.createElement(Ul,{open:j,className:rt})),"after"===ee&&t.createElement(ds,{disabled:j,abortButton:Be?te:void 0,onAbort:Ze,deleteButton:ne,onDelete:Be?void 0:ut,uploadButton:Be||Z?void 0:re,onUpload:Z?void 0:function(){return Xe(Qe)},cleanButton:!Ve||Be||d?void 0:ae,onClean:ft,style:oe,className:ie,top:!1})):t.createElement(t.Fragment,null)};vi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.fui-avatar-main-container {\\n width: 200px;\\n height: 200px;\\n position: relative;\\n background-color: transparent;\\n overflow: hidden;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background-color: rgba(128, 128, 128, 0.486);\\n border-radius: 10px;\\n font-family: "Poppins", sans-serif;\\n}\\n.fui-avatar-main-container.square {\\n border-radius: 0px;\\n}\\n.fui-avatar-main-container.circle {\\n border-radius: 50%;\\n}\\n.fui-avatar-main-container .fui-avatar-image {\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n.fui-avatar-main-container:hover .fui-avatar-label.hide {\\n display: flex;\\n}\\n.fui-avatar-main-container .fui-avatar-label {\\n margin: 0;\\n overflow: hidden;\\n background-color: rgba(128, 128, 128, 0.486);\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n color: white;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n text-align: center;\\n flex-direction: column;\\n}\\n.fui-avatar-main-container .fui-avatar-label.hide {\\n display: none;\\n}\\n.fui-avatar-main-container .fui-avatar-label:hover {\\n background-color: rgba(71, 71, 71, 0.74);\\n display: flex;\\n cursor: pointer;\\n}\');var bs=function(e){var n=e.size,r=e.color,a=e.style,o=e.radius,i=e.x,l=e.y,s=e.width,c=o||46,u=i||50,f=l||50,d=$l(n),p=a||{};return t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"".concat(d,"px"),height:"".concat(d,"px"),style:p,viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid"},t.createElement("circle",{cx:"".concat(u),cy:"".concat(f),r:"".concat(c),fill:"none",stroke:r||"#14ff00",strokeWidth:"".concat(s||8,"px"),strokeDasharray:"164.93361431346415 100.97787143782138"},t.createElement("animateTransform",{attributeName:"transform",type:"rotate",repeatCount:"indefinite",dur:"1s",values:"0 ".concat(u," ").concat(u,";360 ").concat(u," ").concat(u),keyTimes:"0;1"})))};vi(".files-ui-loader-container {\\n background-color: rgba(0, 0, 0, 0.41);\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n overflow: hidden;\\n position: relative;\\n}\\n.files-ui-loader-container.clickable {\\n cursor: pointer;\\n}\\n.files-ui-loader-container:hover {\\n background-color: rgba(0, 0, 0, 0.61);\\n}");var ys=function(e){var n=e.children,r=e.className,a=e.style,o=e.size,i=e.onClick,l=o?$l(o):void 0,s=i?"files-ui-loader-container clickable":"files-ui-loader-container";return t.createElement("div",{onClick:function(){null==i||i()},className:r?"".concat(s," ").concat(r):s,style:bi(bi({},a),{height:l,width:l})},n)},xs=function(e){var n=e.onClick,r=e.size;return t.createElement(ys,{onClick:n,size:r},t.createElement(t.Fragment,null,t.createElement(bs,{size:r}),t.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}},n&&t.createElement(Gl,{color:"rgba(255,255,255,0.75)",size:45,onClick:n}))))};vi(".files-ui-layer {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n}");var ws=function(e){var n=e.style,r=e.className,a=e.children,o=e.visible,i=yi(e,["style","className","children","visible"]),l=cl(r||"","files-ui-layer");return o?t.createElement("div",bi({className:l,style:n},i),a):t.createElement(t.Fragment,null)},Es={alt:"image-preview",smartImgFit:"orientation"};vi(".fui-image-preview {\\n position: relative;\\n border-radius: 10px;\\n}");var ks=function(e){var n=Tl(e,Es),r=n.src,a=n.alt,o=n.width,i=n.height,l=n.onError,s=n.smartImgFit,c=n.style,u=n.className,f=t.useState([void 0,void 0]),d=f[0],p=d[0],m=d[1],h=f[1],g=t.useState(void 0),v=g[0],b=g[1],y=function(e){return xi(void 0,void 0,void 0,(function(){var t,n;return wi(this,(function(r){switch(r.label){case 0:return""!==e&&e?(t=void 0,n=void 0,s?[3,1]:(n="100%",[3,4])):[2];case 1:return r.trys.push([1,3,,4]),[4,Hi(e)];case 2:return"landscape"===r.sent()?"orientation"===s?(t=void 0,n="100%"):(t="100%",n=void 0):"center"===s?(t=void 0,n="100%"):(t="100%",n=void 0),[3,4];case 3:return r.sent(),null==l||l(),[3,4];case 4:return i&&(t=i),o&&(n=o),h([t,n]),b(e),[2]}}))}))};return t.useEffect((function(){r&&("string"==typeof r?y(r):"image"===(r.type?r.type.split("/")[0]:"octet")?function(e){xi(void 0,void 0,void 0,(function(){var t;return wi(this,(function(n){switch(n.label){case 0:return[4,$i(e)];case 1:return t=n.sent(),y(t),[2]}}))}))}(r):null==l||l())}),[r]),t.createElement(t.Fragment,null,r&&v&&(p||m)&&t.createElement("img",{style:c||{},onClick:function(e){e.preventDefault()},width:m,height:p,src:v,alt:a,className:u,onError:function(e){null==l||l()}}))};vi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.files-ui-file-card-main-container {\\n border-radius: 8px;\\n color: rgba(0, 0, 0, 0.858);\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n min-height: 100px;\\n box-sizing: border-box;\\n position: relative;\\n font-size: 15px;\\n font-weight: 400;\\n width: 320px;\\n font-family: "Poppins", sans-serif;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container {\\n border-radius: 8px;\\n overflow: hidden;\\n width: 320px;\\n box-sizing: border-box;\\n height: 100px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer {\\n box-sizing: border-box;\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n box-sizing: border-box;\\n align-items: center;\\n justify-content: space-between;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n gap: 5px;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container {\\n width: 100px;\\n height: 100px;\\n overflow: hidden;\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-icon-layer {\\n box-sizing: border-box;\\n position: absolute;\\n width: 100px;\\n height: 100px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-icon-layer img {\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-icon-layer.blur img {\\n filter: blur(4px);\\n width: 200%;\\n height: 200%;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-status-layer {\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n padding: 5px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data {\\n padding-right: 10px;\\n box-sizing: border-box;\\n line-height: 19px;\\n font-weight: 500;\\n width: calc(100% - 100px);\\n word-break: break-all;\\n color: black;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n height: 100%;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data.dark-mode {\\n color: rgba(255, 255, 255, 0.7);\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data .file-card-size {\\n font-weight: 400;\\n font-size: 0.9rem;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data .file-card-name {\\n font-size: 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1; /* number of lines to show */\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data .file-card-name.not-allowed {\\n background-color: rgba(180, 16, 16, 0.7);\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-upload-layer-container {\\n cursor: default;\\n display: flex;\\n box-sizing: border-box;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.625), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9));\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n position: relative;\\n overflow: hidden;\\n align-items: center;\\n justify-content: flex-end;\\n height: 100%;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container {\\n cursor: default;\\n display: flex;\\n box-sizing: border-box;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9));\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n overflow: hidden;\\n align-items: center;\\n justify-content: flex-end;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info {\\n width: calc(100% - 100px);\\n height: 100px;\\n text-align: left;\\n scrollbar-width: thin;\\n overflow: auto;\\n scrollbar-color: rgba(100, 108, 127, 0.662745098) transparent;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info::-webkit-scrollbar {\\n width: 9px;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info::-webkit-scrollbar-thumb {\\n background-color: rgba(100, 108, 127, 0.662745098);\\n border-radius: 20px;\\n border: transparent;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info .files-ui-file-card-info-layer-header {\\n display: flex;\\n width: 100%;\\n flex-direction: row;\\n align-items: center;\\n justify-content: flex-end;\\n /* position: absolute;\\n top: 5;\\n right: 5; */\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info .heading {\\n font-weight: 600;\\n padding: 0 5px;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info .label {\\n padding: 0 5px;\\n font-weight: 399;\\n}\\n.files-ui-file-card-main-container.clickable {\\n cursor: pointer;\\n}\\n\\n/* .files-ui-file-icon {\\n font-size: 0.7rem;\\n min-width: 19px;\\n min-height: 19px;\\n margin: 0;\\n padding: 2px 2px;\\n border-radius: 50%;\\n background-color: rgba(32, 33, 36, 0.65);\\n word-break: break-word;\\n box-sizing: content-box;\\n &:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n }\\n &.dark-mode {\\n background-color: rgba(154, 160, 166, 0.65);\\n &:hover {\\n background-color: rgba(154, 160, 166, 0.85);\\n }\\n }\\n} */\'),vi(".files-ui-file-icon {\\n font-size: 0.7rem;\\n min-width: 19px;\\n min-height: 19px;\\n margin: 0;\\n padding: 2px 2px;\\n border-radius: 50%;\\n background-color: rgba(32, 33, 36, 0.65);\\n word-break: break-word;\\n box-sizing: content-box;\\n}\\n.files-ui-file-icon:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n}\\n.files-ui-file-icon.dark-mode {\\n background-color: rgba(154, 160, 166, 0.65);\\n}\\n.files-ui-file-icon.dark-mode:hover {\\n background-color: rgba(154, 160, 166, 0.85);\\n}"),vi(".files-ui-file-card-main-container.dark-mode {\\n color: rgba(255, 255, 255, 0.7);\\n background-color: #121212;\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-0 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-1 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-2 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.07));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-3 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.08));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-4 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.09));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-5 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-6 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.11));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-7 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.11));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-8 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-9 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-10 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.13));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-11 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.13));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-12 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-13 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-14 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-15 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-16 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-17 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-18 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-19 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-20 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-21 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-22 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-23 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-24 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.elevation-0 {\\n box-shadow: none;\\n}\\n.files-ui-file-card-main-container.elevation-1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-2 {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-8 {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}"),vi(".file-card-right-layer-header {\\n margin-top: 3px;\\n margin-right: 3px;\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: unset;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n gap: 2px;\\n}\\n\\n.file-card-right-layer-footer {\\n margin-bottom: 3px;\\n margin-right: 3px;\\n left: unset;\\n position: absolute;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n gap: 2px;\\n bottom: 0;\\n right: 0;\\n}");var Cs=function(e){var n=e.localization,r=e.size,a=zi(n).status;return t.createElement(t.Fragment,null,t.createElement(Yl,{color:"#f44336",size:r||65}),t.createElement("span",null," ",a.aborted))},Ss=function(e){var n=e.height,r=n?"number"==typeof n?"".concat(n,"px"):n:"132px";return t.createElement(t.Fragment,null,t.createElement("div",{style:{width:"100%",height:r}}))},As=function(e){var n=e.localization,r=e.size,a=zi(n).status;return t.createElement(t.Fragment,null,t.createElement(Gl,{color:"rgba(255,255,255,0.4)",style:{backgroundColor:"rgba(244, 67, 54, 0.8)",borderRadius:"50%"},size:r||65}),t.createElement("span",null," ",a.error))},Ns=function(e){var n=e.onCancel,r=e.localization,a=e.size,o=zi(r).status;return t.createElement(t.Fragment,null,t.createElement(xs,{onClick:n,size:a||65}),t.createElement("span",null,o.preparing))},Fs=function(e){var n=e.localization,r=e.size,a=zi(n).status;return t.createElement(t.Fragment,null,t.createElement(Wl,{color:"#4caf50",size:r||65}),t.createElement("span",null," ",a.success))};vi("text.files-ui-text-dynamic-loader {\\n text-anchor: middle;\\n font-size: 1em;\\n fill: aliceblue;\\n}");var Os=function(e){var n=e.size,r=e.color,a=e.style,o=e.percentage,i=e.hidePerncentage,l=e.radius,s=e.x,c=e.y,u=e.width,f=e.onClick,d=l||28,p=s||30,m=c||30,h=$l(n),g=a||{},v=t.useRef(null);return t.useEffect((function(){var e=v.current;if(null!=e&&void 0!==o){var t=2*Math.PI*e.r.baseVal.value;e.style.strokeDasharray="".concat(t," 1000"),function(e,t,n){t.style.strokeDashoffset="".concat(n*(1-e/100))}(o>=100?100:o,e,t)}}),[o]),void 0!==o?t.createElement(ys,{size:n},t.createElement(t.Fragment,null,t.createElement("svg",{className:"dui_svg_circle_loader",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"".concat(h,"px"),height:"".concat(h,"px"),style:g},t.createElement("circle",{style:{transform:"rotate(-90deg)",transformOrigin:"center"},stroke:r||"#14ff00",cx:"".concat(p),cy:"".concat(m),r:"".concat(d),strokeWidth:"".concat(u||8,"px"),id:"circle",ref:v,fill:"none"}),!i&&void 0!==o&&t.createElement("text",{className:"files-ui-text-dynamic-loader",x:"".concat(p),y:"".concat(7*p/6)},"".concat(o.toFixed(0)," %"))),f&&t.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}},t.createElement(Gl,{color:"rgba(255,255,255,0.75)",size:45,onClick:f})))):t.createElement(t.Fragment,null)};vi(".lds-colorbar {\\n background-color: rgba(255, 255, 255, 0.8);\\n border-radius: 4px;\\n}\\n.lds-colorbar .files-ui-text-default-loader {\\n font-size: 1.5rem;\\n font-weight: 400;\\n text-anchor: middle;\\n}");var _s=function(e){var n=e.localization,r=e.size,a=e.onAbort,o=e.progress,i=zi(n).status;return t.createElement(t.Fragment,null,void 0!==o?t.createElement(Os,{size:70,x:35,y:35,radius:32,percentage:o,width:6,hidePerncentage:void 0===o||void 0!==a,onClick:a}):t.createElement(xs,{onClick:a,size:r||70}),t.createElement("span",null," ",i.uploading))};vi(".files-ui-file-card-upload-layer {\\n width: 100px;\\n height: 100%;\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n position: relative;\\n overflow: hidden;\\n}\\n.files-ui-file-card-upload-layer .elevation-list-card {\\n transition: all 1.5s ease;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n}\\n.files-ui-file-card-upload-layer .elevation-list-card .elevation-item-card {\\n width: 100%;\\n height: 100px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n padding: 0 10px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-upload-layer .elevation-list-card .elevation-item-card span {\\n text-align: center;\\n word-break: break-word;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2; /* number of lines to show */\\n line-clamp: 2;\\n -webkit-box-orient: vertical;\\n}"),vi(\'.files-ui-tooltip {\\n cursor: default;\\n position: relative;\\n}\\n.files-ui-tooltip:hover {\\n z-index: 2;\\n}\\n.files-ui-tooltip:hover .files-ui-tooltiptext {\\n visibility: visible;\\n opacity: 1;\\n z-index: 2;\\n}\\n.files-ui-tooltip.card:hover {\\n z-index: 2;\\n}\\n.files-ui-tooltip.card:hover .files-ui-tooltiptext {\\n visibility: visible;\\n opacity: 1;\\n z-index: 2;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext {\\n box-sizing: border-box;\\n font-family: "Poppins", sans-serif;\\n font-size: 0.8rem;\\n font-weight: 400;\\n visibility: hidden;\\n width: 200px;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 2px 2px;\\n position: absolute;\\n z-index: 2;\\n left: calc(50% - 100px);\\n left: 0;\\n margin-top: 5px;\\n top: 100%;\\n opacity: 0;\\n transition: opacity 1s;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.not-valid-error {\\n background: linear-gradient(to top, #c62828, #d32f2f);\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.not-valid-error::after {\\n border-color: transparent transparent #d32f2f transparent;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.success {\\n background: linear-gradient(to top, #1b5e20, #2e7d32);\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.success::after {\\n border-color: transparent transparent #2e7d32 transparent;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext::after {\\n content: "";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border-width: 5px;\\n border-style: solid;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext {\\n box-sizing: border-box;\\n font-family: "Poppins", sans-serif;\\n font-size: 0.8rem;\\n font-weight: 400;\\n visibility: hidden;\\n width: 132px;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 2px 2px;\\n position: absolute;\\n z-index: 2;\\n left: 0;\\n opacity: 0;\\n transition: opacity 1s;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.not-valid-error {\\n background: linear-gradient(to top, #c62828, #d32f2f);\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.not-valid-error::after {\\n border-color: transparent transparent #d32f2f transparent;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.success {\\n background: linear-gradient(to top, #1b5e20, #2e7d32);\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.success::after {\\n border-color: transparent transparent #2e7d32 transparent;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext::after {\\n content: "";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border-width: 5px;\\n border-style: solid;\\n}\');var Ls=function(e){var n=e.uploadStatus,r=e.valid,a=e.errors,o=e.uploadMessage,i=e.open,l=t.useState(void 0),s=l[0],c=l[1],u=t.useState(void 0),f=u[0],d=u[1];return t.useEffect((function(){!function(e,t){void 0!==e?(d(o),c("success"===e?"success":"not-valid-error")):void 0!==t&&(t||(c("not-valid-error"),d(a?a.reduce((function(e,t){return e+"".concat(t,". ")}),""):"")))}(n,r)}),[n,r]),t.createElement(t.Fragment,null,i&&f&&s&&t.createElement("span",{className:"files-ui-tooltiptext ".concat(s)},f))},zs=function(e){var n=e.downloadUrl,r=e.anchorRef,a=e.fileName;return n?t.createElement("a",{ref:r,target:"_blank",href:n,download:a,hidden:!0,rel:"noopener noreferrer",onClick:function(e){e.stopPropagation()}},"download_file"):t.createElement(t.Fragment,null)};vi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.files-ui-file-mosaic-main-container {\\n width: 132px;\\n box-sizing: border-box;\\n font-family: "Poppins", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n word-break: break-word;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container {\\n width: 132px;\\n height: 132px;\\n border-radius: 8px;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-image-layer {\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-image-layer img {\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-image-layer.blur img {\\n filter: blur(4px);\\n width: 200%;\\n height: 200%;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer {\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex-direction: column;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-header {\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-footer {\\n width: 100%;\\n display: flex;\\n align-items: flex-end;\\n justify-content: space-between;\\n flex-direction: row;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-footer .file-mosaic-footer-right {\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n flex-grow: 1;\\n align-items: flex-end;\\n justify-content: flex-end;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-footer .file-mosaic-footer-left {\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n flex-grow: 1;\\n align-items: flex-start;\\n justify-content: center;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer {\\n position: absolute;\\n left: 0;\\n right: 0;\\n text-align: left;\\n scrollbar-width: thin;\\n line-height: 1.5;\\n letter-spacing: 0.02857em;\\n font-family: "Poppins", sans-serif;\\n width: inherit;\\n background-color: rgba(0, 0, 0, 0.85);\\n word-break: break-word;\\n height: 100%;\\n width: 100%;\\n font-size: 0.8rem;\\n transition: all 0.5s ease 0s;\\n overflow: auto;\\n color: white;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer::-webkit-scrollbar {\\n width: 9px;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer::-webkit-scrollbar-thumb {\\n background-color: rgba(100, 108, 127, 0.662745098);\\n border-radius: 20px;\\n border: transparent;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer .files-ui-file-mosaic-info-layer-header {\\n display: flex;\\n width: 100%;\\n flex-direction: row;\\n align-items: center;\\n justify-content: space-between;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer .heading {\\n font-weight: 600;\\n padding: 0 5px;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer .label {\\n padding: 0 5px;\\n font-weight: 399;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-file-name {\\n margin-top: 1px;\\n height: 31px;\\n text-align: center;\\n width: 100%;\\n color: black;\\n font-size: 0.95em;\\n box-sizing: border-box;\\n line-height: 15px;\\n font-weight: 400;\\n letter-spacing: 0.07rem;\\n word-break: break-all;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2; /* number of lines to show */\\n line-clamp: 2;\\n -webkit-box-orient: vertical;\\n /* display: flex;\\n align-items: center;\\n justify-content: center; */\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-file-name.dark-mode {\\n color: rgba(255, 255, 255, 0.7);\\n}\\n.files-ui-file-mosaic-main-container.clickable {\\n cursor: pointer;\\n}\\n\\n/* .files-ui-file-icon {\\n font-size: 0.7rem;\\n min-width: 19px;\\n min-height: 19px;\\n margin: 0;\\n padding: 2px 2px;\\n border-radius: 50%;\\n background-color: rgba(32, 33, 36, 0.65);\\n word-break: break-word;\\n box-sizing: content-box;\\n &:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n }\\n &.dark-mode {\\n background-color: rgba(154, 160, 166, 0.65);\\n &:hover {\\n background-color: rgba(154, 160, 166, 0.85);\\n }\\n }\\n}\\n */\'),vi(".files-ui-layer-container {\\n position: relative;\\n}");var Ts=function(e){var n=e.style,r=e.className,a=e.children,o=cl(r||"","files-ui-layer-container");return t.createElement("div",{className:o,style:n},a)},Ps=function(e){var n=e.fileName;return n?t.createElement("span",null,n):t.createElement(t.Fragment,null)};vi(".files-ui-file-mosaic-upload-layer {\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.65);\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n position: relative;\\n overflow: hidden;\\n}\\n.files-ui-file-mosaic-upload-layer .elevation-list {\\n transition: all 1.5s ease;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n}\\n.files-ui-file-mosaic-upload-layer .elevation-list .elevation-item {\\n width: 100%;\\n height: 132px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n padding: 0 10px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-mosaic-upload-layer .elevation-list .elevation-item span {\\n text-align: center;\\n word-break: break-word;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2; /* number of lines to show */\\n line-clamp: 2;\\n -webkit-box-orient: vertical;\\n}");var js=function(e){var n=e.uploadStatus,r=e.onCancel,a=e.onAbort,o=e.progress,i=e.localization,l=t.useRef(null),s=t.useRef(null),c=t.useState([void 0]),u=c[0],f=c[1];return t.useEffect((function(){f((function(e){if("preparing"===e[e.length-1]&&"uploading"===n){var t=Ei([],e,!0);return t[e.length-1]=n,Ei([],t,!0)}return Ei(Ei([],e,!0),[n],!1)}))}),[n]),t.useEffect((function(){var e,t;u.length>1&&(e=l.current,t=s.current,null!==e&&null!==t&&(t.style.top=0-132*(u.length-1)+"px"))}),[u.length]),t.createElement("div",{className:"elevation-layer-container",ref:l},t.createElement("div",{className:"elevation-list",ref:s},u.map((function(e,n){switch(e){case"preparing":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Ns,{onCancel:r,localization:i}));case"uploading":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(_s,{onAbort:a,progress:o,localization:i}));case"error":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(As,{localization:i}));case"success":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Fs,{localization:i}));case"aborted":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Cs,{localization:i}));default:return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Ss,null))}}))))},Ds=function(e){var n=e.imageSource,r=e.url,a=e.fileName,o=e.card,i=e.isBlur,l=e.smartImgFit,s=t.useState(void 0),c=s[0],u=s[1],f=t.useState(!1),d=f[0],p=f[1];return t.useEffect((function(){u(n||r)}),[n,r]),i?t.createElement(t.Fragment,null,!o&&!d&&n&&t.createElement(ks,{src:c,alt:"blur ".concat(a),smartImgFit:!1})):t.createElement(t.Fragment,null,t.createElement(ks,{onError:function(){p(!0),u(r)},src:c,style:{borderRadius:"0px"},alt:"preview ".concat(a),smartImgFit:l}))};vi(".files-ui-file-item-status-container {\\n text-align: center;\\n font-size: 0.8rem;\\n background-color: rgba(255, 255, 255, 0.8);\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n border-radius: 4px;\\n padding: 0.5px;\\n font-weight: 400;\\n}\\n.files-ui-file-item-status-container.file-status-error {\\n color: #f44336;\\n}\\n.files-ui-file-item-status-container.file-status-ok {\\n color: #5c7a1f;\\n}\\n.files-ui-file-item-status-container.file-status-loading {\\n position: relative;\\n display: flex;\\n color: #8b6b10;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n.files-ui-file-item-status-container.file-status-loading.percentage {\\n padding: 7px 4px 2px 5px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .abort-button {\\n position: absolute;\\n right: -2px;\\n top: -2px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .uploading-text.up {\\n margin-bottom: -22px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .uploading-text.down {\\n margin-top: -20px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .uploading-text p.percentage {\\n font-weight: 500;\\n}");var Rs=function(e){var n=e.valid,r=e.uploadStatus,a=e.localization,o=e.style,i=zi(a).status;return"success"===r?t.createElement("div",{className:"files-ui-file-item-status-container file-status-ok",style:o},t.createElement(Ql,{color:"#4caf50",size:"small",className:"status-icon"}),i.success):"error"===r||"aborted"===r?t.createElement("div",{className:"files-ui-file-item-status-container file-status-error",style:o},t.createElement(es,{color:"#f44336",size:"semi-medium",className:"status-icon"}),i.error):null!=n?n?t.createElement("div",{className:"files-ui-file-item-status-container file-status-ok",style:o},t.createElement(Wl,{color:"#4caf50",size:"small",className:"status-icon"}),i.valid):t.createElement("div",{className:"files-ui-file-item-status-container file-status-error",style:o},t.createElement(Yl,{color:"#f44336",size:"small",className:"status-icon"}),i.denied):t.createElement(t.Fragment,null)},Ms=function(e){var n=e.valid,r=e.localization,a=e.onCloseInfo,o=e.uploadStatus,i=e.localName,l=e.sizeFormatted,s=e.localType,c=zi(r).fullInfoLayer,u=c.name,f=c.size,d=c.type;return t.createElement(t.Fragment,null,t.createElement("div",{className:"files-ui-file-mosaic-info-layer-header"},t.createElement(Hl,{color:"rgba(255,255,255,0.8)",onClick:a,colorFill:"black"}),t.createElement(Rs,{valid:n,uploadStatus:o,localization:r})),t.createElement("div",{className:"heading"},u),t.createElement("div",{className:"label"},i),t.createElement("div",{className:"heading"},f),t.createElement("div",{className:"label"},l),t.createElement("div",{className:"heading"},d),t.createElement("div",{className:"label"},s))};vi(".filesui-file-item-size {\\n box-sizing: border-box;\\n font-size: 0.7rem;\\n border: 0.5px solid wheat;\\n text-align: center;\\n color: rgba(255, 255, 255, 0.89);\\n padding: 2px 1.5px;\\n border-radius: 7px;\\n background-color: rgba(32, 33, 36, 0.75);\\n min-width: 45px;\\n word-break: break-word;\\n font-family: inherit;\\n}\\n.filesui-file-item-size:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n color: rgba(255, 255, 255, 0.97);\\n}");var Is=function(e){var n=e.sizeFormatted;return t.createElement(t.Fragment,null,n&&t.createElement("div",{className:"filesui-file-item-size"},n))},Bs=function(e){var n=e.darkMode,r=e.deleteIcon,a=e.downloadIcon,o=e.imageIcon,i=e.infoIcon,l=e.onDelete,s=e.onDownload,c=e.onOpenInfo,u=e.onSee,f=e.onWatch,d=e.sizeFormatted,p=e.valid,m=e.videoIcon,h=e.localization,g=e.uploadStatus,v=e.isActive;return t.createElement(t.Fragment,null,t.createElement("div",{className:"file-mosaic-main-layer-header"},v&&r&&t.createElement(Gl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:l,size:"small",colorFill:"transparent"})),t.createElement("div",{className:"file-mosaic-main-layer-footer"},t.createElement("div",{className:"file-mosaic-footer-left"},t.createElement(Rs,{valid:p,uploadStatus:g,localization:h}),v&&d&&t.createElement(Is,{sizeFormatted:d})),t.createElement("div",{className:"file-mosaic-footer-right"},v&&t.createElement(t.Fragment,null,o&&t.createElement(rs,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:u,size:"small"}),m&&t.createElement(Zl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:f,size:"small"}),a&&t.createElement(Kl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:s,size:"small"}),i&&t.createElement(Xl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",onClick:c,color:n?"#121212":"rgba(255,255,255,0.851)",size:"micro"})))))},qs=function(e){var n=e.style,r=e.className,a=e.file,o=e.name,i=e.size,l=e.type,s=e.id,c=e.valid,u=e.errors,f=e.uploadStatus,d=e.uploadMessage,p=e.progress,m=e.xhr,h=e.localization,g=e.preview,v=e.imageUrl,b=e.videoUrl,y=e.info,x=e.backgroundBlurImage,w=void 0===x||x,E=e.darkMode,k=e.alwaysActive,C=void 0===k||k,S=e.resultOnTooltip,A=void 0===S||S,N=e.downloadUrl,F=e.onDelete,O=e.onCancel,_=e.onAbort,L=e.onDownload,z=e.onSee,T=e.onWatch,P=e.onDoubleClick,j=e.onClick,D=e.onRightClick,R=e.smartImgFit,M=void 0===R?"orientation":R,I=t.useContext(us),B=I.darkMode,q=I.icons,U=I.localization,$=void 0!==h?h:U,H=void 0!==E?E:B,W=t.useRef(null),V=cl(cl("files-ui-file-mosaic-main-container files-ui-tooltip",r),j?"clickable":void 0),G=H?"files-ui-file-mosaic-file-name dark-mode":"files-ui-file-mosaic-file-name",Q=function(e,t,n,r){var a="",o=void 0,i=void 0;return e&&"string"==typeof e.name?(a=e.name,o=e.type,i=e.size):t&&"string"==typeof t&&(a=t,o=n,i=r),[a,o,i]}(a,o,l,i),Y=Q[0],K=Q[1],X=Q[2],Z=function(e,n){var r=t.useState(void 0),a=r[0],o=r[1];return void 0!==e?a!==e&&o(e):null!=n&&null===n.upload.onprogress&&(n.upload.onprogress=function(e){o(e.loaded/e.total*100)},o(0)),a}(p,m),J=hs(a,o,l,c,g,v,b,q),ee=J[0],te=J[1],ne=J[2],re=J[3],ae=J[4],oe=J[5],ie=ki(X),le=t.useState(!1),se=le[0],ce=le[1],ue=t.useState(!1),fe=ue[0],de=ue[1],pe=function(){return ce(!1)},me=function(e){var n=t.useState(!1),r=n[0],a=n[1],o=t.useState(e),i=o[0],l=o[1];return t.useEffect((function(){l(e),["uploading","preparing"].includes(i||"")&&["success","error","aborted"].includes(e||"")?setTimeout((function(){a(!1)}),3500):a("preparing"===e||"uploading"===e)}),[e]),r}(f);return t.useEffect((function(){me&&se&&pe()}),[me]),ee?t.createElement("div",{className:V,style:n,onClick:function(e){e.stopPropagation(),null==j||j(e)},onMouseEnter:function(){C||de(!0)},onMouseLeave:function(){C||de(!1)},onDoubleClick:function(e){e.preventDefault(),null==P||P(e)},onContextMenu:function(e){null==D||D(e)}},t.createElement(Ts,{className:"files-ui-file-mosaic-icon-layer-container",style:n},t.createElement(ws,{className:"files-ui-file-mosaic-image-layer blur",visible:w},t.createElement(Ds,{imageSource:ae,url:re,fileName:Y,isBlur:!0,smartImgFit:!1})),t.createElement(ws,{className:"files-ui-file-mosaic-image-layer",visible:!0},t.createElement(Ds,{imageSource:ae,url:re,fileName:Y,isBlur:!1,smartImgFit:M})),t.createElement(ws,{className:"files-ui-file-mosaic-main-layer",visible:!me&&!se},t.createElement(Bs,{deleteIcon:void 0!==F,onDelete:function(){return null==F?void 0:F(s)},darkMode:H,valid:c,uploadStatus:f,localization:$,sizeFormatted:ie,imageIcon:te&&void 0!==z,onSee:function(){return null==z?void 0:z(ae)},videoIcon:ne&&void 0!==T,onWatch:function(){return null==T?void 0:T(oe)},downloadIcon:void 0!==L||void 0!==N,onDownload:function(){var e;L?null==L||L(s,N):"string"==typeof N&&(e=W.current)&&e.click()},infoIcon:void 0!==y,onOpenInfo:function(){return ce(!0)},isActive:C||fe})),t.createElement(ws,{className:"files-ui-file-mosaic-info-layer",visible:se,onClick:Bl},t.createElement(Ms,{onCloseInfo:pe,valid:c,localization:$,localName:Y,sizeFormatted:ie,localType:K})),t.createElement(ws,{className:"files-ui-file-mosaic-upload-layer",visible:me,onClick:Bl},t.createElement(js,{uploadStatus:f,progress:Z,onCancel:O?function(){return null==O?void 0:O(s)}:void 0,onAbort:_?function(){null==m||m.abort(),null==_||_(s)}:void 0,localization:$}))),t.createElement("div",{className:G},t.createElement(Ps,{fileName:Y})),t.createElement(Ls,{open:A,uploadStatus:f,valid:c,errors:u,uploadMessage:d}),t.createElement(zs,{fileName:Y,anchorRef:W,downloadUrl:N})):t.createElement(t.Fragment,null)};function Us(e){return Us="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Us(e)}function $s(){$s=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Us(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Hs(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function Ws(){return Ws=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ws.apply(this,arguments)}function Vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Gs(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vs(Object(n),!0).forEach((function(t){Qs(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Qs(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==Us(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Us(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Us(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ys(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ks(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ks(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ks(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}vi(".fui-fullscreen-container {\\n position: fixed;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 100%;\\n height: 100vh;\\n top: 0;\\n left: 0;\\n background: rgba(0, 0, 0, 0.734);\\n transform: translate(100%);\\n transition: transform 0.2s ease-in-out;\\n margin: 0 !important;\\n z-index: 4000;\\n box-sizing: border-box;\\n}\\n.fui-fullscreen-container.show-fs {\\n transform: translate(0);\\n}\\n\\n.fui-fullscreen-relative-container {\\n position: relative;\\n width: 90%;\\n height: 90%;\\n overflow: hidden;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n /* @media (max-width: 600px) {\\n width: 80%;\\n height: auto;\\n }*/\\n}\\n.fui-fullscreen-relative-container img {\\n height: 100%;\\n width: auto;\\n}\\n.fui-fullscreen-relative-container video {\\n height: 100%;\\n width: auto;\\n}\\n@media (max-width: 960px) {\\n .fui-fullscreen-relative-container {\\n height: 90%;\\n width: 100%;\\n }\\n .fui-fullscreen-relative-container video {\\n height: auto;\\n width: 100%;\\n }\\n .fui-fullscreen-relative-container img {\\n height: auto;\\n width: 100%;\\n }\\n}\\n\\n.button-full-screen {\\n position: absolute;\\n top: 0;\\n right: 0;\\n}");var Xs=function(e){var r=e.name,a=e.edit,o=e.setNewDir,i=e.idx,l=(0,t.useRef)(),s=Ys((0,t.useState)(r||""),2),c=s[0],u=s[1];return(0,t.useEffect)((function(){a&&l.current.focus()}),[l,a]),(0,t.useEffect)((function(){if(c.indexOf("/")>-1){var e=c.split("/",2);u(e[0]);var t={name:e[1],edit:!0};o({name:e[0],edit:!1},i,t)}}),[c,o,i]),a?n().createElement("span",{className:"input-group"},n().createElement("input",{ref:l,onChange:function(e){u(e.target.value)},value:c,onKeyDown:function(e){"Enter"===e.key&&o({name:c,edit:!1},i)},className:"form-control",title:"Insert new directory name. A directory name must not contain the slash \'/\'.",onBlur:function(e){var t;null!==(t=e.relatedTarget)&&void 0!==t&&t.classList.contains("caosdb-f-cancel-new-directory")?o({edit:!1},i):o({name:c,edit:!1},i)}}),n().createElement("button",{className:"btn btn-outline-secondary caosdb-f-cancel-new-directory"},n().createElement("i",{className:"bi bi-x"})),n().createElement("button",{className:"btn btn-outline-secondary"},n().createElement("i",{className:"bi bi-check"}))):n().createElement("button",{ref:l,onClick:function(){o({name:c,edit:!0},i)},className:"btn btn-link",style:{paddingLeft:"0.1rem",paddingRight:"0rem"}},c,"/")},Zs=function(e){var r=e.setDirectory,a=e.value,o=Ys((0,t.useState)(a.map((function(e){return{name:e}}))),2),i=o[0],l=o[1],s=(0,t.useCallback)((function(e,t,n){var a=[].concat(i);e.name?a[t]=e:a=a.slice(0,t).concat(a.slice(t+1)),n&&(a=a.slice(0,t+1).concat([n],a.slice(t+1))),l(a),r(a.map((function(e){return e.name})))}),[i,l,r]),c=(0,t.useCallback)((function(){var e=i.map((function(e){return Gs(Gs({},e),{},{edit:!1})}));e.push({edit:!0}),l(e)}),[i,l]);return n().createElement(n().Fragment,null,i.map((function(e,t){return n().createElement(Xs,{key:"".concat(e.name,"-").concat(t),idx:t,name:e.name,setNewDir:s,edit:e.edit})})),i.filter((function(e){return e.edit})).length>0||n().createElement("button",{className:"ms-auto btn btn-outline-secondary",onClick:function(){return c()}},n().createElement("i",{className:"bi bi-folder-plus"})))},Js=function(e){var t=e.directoryBase,r=e.readOnly,a=e.value,o=e.setDirectory,i=e.label||"Directory";return n().createElement("div",{className:"mb-1 row caosdb-f-file-upload-directory-input"},n().createElement("label",{className:"col-sm-3 col-form-label"},i),n().createElement("div",{className:"col-sm-9 d-flex"},!t||n().createElement("span",{style:{width:"unset",display:"inline-block"},className:"form-control-plaintext"},t.join("/")+"/"),r||n().createElement(Zs,{setDirectory:o,value:a})))},ec=function(e){var t=e.options,r=e.onChange,a=e.value,o=e.className;return n().createElement("select",{className:o,onChange:r,value:a},n().createElement("option",{value:""}),t.map((function(e,t){return n().createElement("option",{key:t,value:e.value,title:e.title},e.label||e.value)})))},tc=function(e){var t=e.options,r=e.value,a=e.onChange,o=e.label||"RecordType",i=!t,l=i?"form-control-plaintext":"form-control";return n().createElement("div",{className:"mb-1 row caosdb-f-file-upload-recordtype-select"},n().createElement("label",{className:"pe-1 col-sm-3 col-form-label"},o),n().createElement("div",{className:"col-sm-9"},!i||n().createElement("input",{className:l,readOnly:i,value:r}),i||n().createElement(pi,{promise:Promise.all([t,r]),then:function(e){return n().createElement(ec,{className:l,options:e[0],onChange:a,value:e[1]})}})))},nc=function(e){var t=e.file,r=e.removeFile;return n().createElement(qs,Ws({},t,{onDelete:r}))},rc=function(e){var t=e.children;return n().createElement(Pe,{type:"error"},"The file upload failed: ",t)},ac=function(e){var t=e.children;return n().createElement("div",null,t||n().createElement(Pe,{type:"success"},"Your files have been uploaded."))},oc=function(e){var t,r=e.directory,a=e.file;return t=e.responseErrors?n().createElement(n().Fragment,null,n().createElement("div",{className:"col-sm-6"},a.path.replaceAll(r,"")),n().createElement("div",{className:"col-sm-6 text-end"},a.error?n().createElement("div",{className:"text-danger"},a.error):n().createElement("i",{className:"text-success bi bi-check"}))):n().createElement(n().Fragment,null,n().createElement("div",{className:"col-sm-6"},a.path.replaceAll(r,"")),n().createElement("div",{className:"col-sm-4"},a.id),n().createElement("div",{className:"col-sm-2 text-end"},n().createElement("a",{className:"btn caosdb-fs-btn-file",href:a.url},n().createElement("span",{className:"badge caosdb-label-file"},"F")))),n().createElement("li",{className:"list-group-item"},n().createElement("div",{className:"row"},t))},ic=function(e){var t,r=e.hasErrors?n().createElement(Pe,{type:"error"},"The file upload failed."):n().createElement(n().Fragment,null,n().createElement(Pe,{type:"success"},"Your files have been uploaded."),!e.url||n().createElement("div",{className:"mb-3"},"Go to directory: ",n().createElement("a",{href:e.url},e.directory)));return n().createElement("div",null,r,n().createElement("ul",{className:"list-group"},n().createElement("li",{className:"list-group-item"},n().createElement("div",{className:"row"},n().createElement("div",{className:"col-sm-6"}),e.hasErrors?n().createElement("div",{className:"col-sm-6 text-end fw-bold"},"Error"):n().createElement(n().Fragment,null,n().createElement("div",{className:"col-sm-3 fw-bold"},"ID"),n().createElement("div",{className:"col-sm-3 text-end fw-bold"},"File Entity")))),null===(t=e.newFiles)||void 0===t?void 0:t.map((function(t,r){return n().createElement(oc,{responseErrors:e.hasErrors,directory:e.directory,file:t,key:r})}))))},lc=function(e){return null!=e&&e.split?e.split("/").filter((function(e){return e})):e},sc=function(e){var r=e.files,a=e.onCancel,o=e.recordTypeShow,i=e.recordTypes,l=e.directoryBase,s=e.directory,c=e.directoryReadOnly,u=e.directoryShow,f=e.recordType,d=e.onChange,p=e.onSubmit,m=e.accept,h=e.state,g=e.onFinish,v=Ys((0,t.useState)(r||[]),2),b=v[0],y=v[1],x=Ys((0,t.useState)(lc(s)||[]),2),w=x[0],E=x[1],k=Ys((0,t.useState)(f),2),C=k[0],S=k[1],A=Ys((0,t.useState)(h||"READY"),2),N=A[0],F=A[1],O=Ys((0,t.useState)(),2),_=O[0],L=O[1],z=Ys((0,t.useState)(),2),T=z[0],P=z[1],j=(0,t.useMemo)((function(){return{files:b,directory:lc(l).concat(w),recordType:C}}),[b,C,w,l]);(0,t.useEffect)((function(){d&&d(j)}),[j,d]);var D=(0,t.useMemo)((function(){var e,t,r,o;return{position:"after",deleteButton:a&&{className:"btn btn-outline-secondary",children:["Cancel"],resetStyles:!0,onClick:a},uploadButton:p&&{disabled:!(null!==(e=j.files)&&void 0!==e&&e.length)>0,className:(null===(t=j.files)||void 0===t?void 0:t.length)>0?"btn btn-primary":"btn btn-primary disabled",resetStyles:!0,children:["Upload"],onClick:(r=$s().mark((function e(){var t,r;return $s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return F("SENDING"),e.prev=1,e.t0=p,e.t1=Gs,e.t2=Gs({},j),e.t3={},e.next=8,j.recordType;case 8:return e.t4=e.sent,e.t5={recordType:e.t4},e.t6=(0,e.t1)(e.t2,e.t3,e.t5),e.next=13,(0,e.t0)(e.t6);case 13:t=e.sent,r=ic(t),F("SUCCESS"),P(r),e.next=23;break;case 19:e.prev=19,e.t7=e.catch(1),F("FAILED"),L(n().createElement(rc,null,e.t7.message));case 23:case"end":return e.stop()}}),e,null,[[1,19]])})),o=function(){var e=this,t=arguments;return new Promise((function(n,a){var o=r.apply(e,t);function i(e){Hs(o,n,a,i,l,"next",e)}function l(e){Hs(o,n,a,i,l,"throw",e)}i(void 0)}))},function(){return o.apply(this,arguments)})}}}),[j,p,F,L,a]),R=(0,t.useCallback)((function(e){y(e)}),[y]),M=(0,t.useCallback)((function(e){S(e.target.value)}),[S]),I=function(e){y(b.filter((function(t){return t.id!==e})))};return n().createElement("div",{style:{minWidth:"500px"}},"SENDING"===N&&n().createElement("div",{className:"text-center"},n().createElement(De,{color:"primary"})),"READY"===N&&n().createElement(n().Fragment,null,(i||C)&&o&&n().createElement(tc,{options:i,value:C,onChange:M}),!u||n().createElement(Js,{directoryBase:lc(l),readOnly:c,value:w,setDirectory:E}),n().createElement(vs,{accept:m,actionButtons:D,onChange:R,value:b},b.map((function(e){return n().createElement(nc,{key:e.id,file:e,removeFile:I})})))),_,!("SUCCESS"===N)||n().createElement(ac,null,T),("SUCCESS"===N||"FAILED"===N)&&g&&n().createElement("div",{className:"mt-3 text-end"},n().createElement("button",{type:"reset",title:"Close this file upload dialogue.",className:"btn btn-outline-secondary",onClick:g},"Ok")))};sc.defaultProps={directoryShow:!0,directoryReadOnly:!1,recordTypeShow:!0,directoryBase:[],directory:[]};var cc=a(379),uc=a.n(cc),fc=a(795),dc=a.n(fc),pc=a(569),mc=a.n(pc),hc=a(565),gc=a.n(hc),vc=a(216),bc=a.n(vc),yc=a(589),xc=a.n(yc),wc=a(550),Ec={};Ec.styleTagTransform=xc(),Ec.setAttributes=gc(),Ec.insert=mc().bind(null,"head"),Ec.domAPI=dc(),Ec.insertStyleElement=bc(),uc()(wc.Z,Ec),wc.Z&&wc.Z.locals&&wc.Z.locals}(),o}()}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QzVCLEdBQVFMLGNBQWdCLEtBRWxCLEdBQVFOLE9BQVMsVUFBYyxLQUFNLFFBRTNDLEdBQVFWLE9BQVMsS0FDakIsR0FBUW9CLG1CQUFxQixLQUVoQixLQUFJLEtBQVMsSUFLSixNQUFXLGFBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbj9kZGQ3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzPzM4ZWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2luZGV4LnNjc3M/NGVjZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzPzQ0MjUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanM/NTYxOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvaW52YXJpYW50L2Jyb3dzZXIuanM/OWQ4YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy1leHRyYS9saWIvYWxsLmpzP2VkYjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMtZXh0cmEvbGliL3V0aWxzL2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyLmpzP2Q4ZmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzPzUxZjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanM/OTc2NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanM/MDc5MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanM/ODkwNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzPzZlN2UiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcz83MWYyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcz9kNWI1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcz9jNjA2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvaW5kZXguanM/ZjdkNSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanM/MGZjYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzP2I3M2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzP2ViZTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzP2ZmN2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanM/NGVhMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcz80ZGJmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy90ZXh0YXJlYS1jYXJldC9pbmRleC5qcz9jZWRhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy93YXJuaW5nL3dhcm5pbmcuanM/MzcxMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgdW1kIHtcImNvbW1vbmpzXCI6XCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIixcImNvbW1vbmpzMlwiOlwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIsXCJhbWRcIjpcIkNhb3NEQkluZm9TZXJ2aWNlXCIsXCJyb290XCI6XCJDYW9zREJJbmZvU2VydmljZVwifT8xZjk5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy9leHRlcm5hbCB1bWQge1wiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJhbWRcIjpcIlJlYWN0XCIsXCJyb290XCI6XCJSZWFjdFwifT9mNzM3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL2Jvb3RzdHJhcD81Y2I2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydD8wZjA2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnM/MmQwNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2dsb2JhbD82ODU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kP2JmM2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3Q/OTc1YSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL25vbmNlP2FjOTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL0luZm9TZXJ2aWNlLmpzPzliM2YiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvU2VydmVyVmVyc2lvbkluZm8uanN4P2RiMDQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanM/MzY5YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcz9hMTVmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy91bmNvbnRyb2xsYWJsZS9saWIvZXNtL3V0aWxzLmpzP2Q4ZDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3VuY29udHJvbGxhYmxlL2xpYi9lc20vaG9vay5qcz9kYjViIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlQ29tbWl0dGVkUmVmLmpzPzVhN2IiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VFdmVudENhbGxiYWNrLmpzP2M1MWMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VNb3VudGVkLmpzP2NmZDQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VQcmV2aW91cy5qcz9lNDU1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlSXNvbW9ycGhpY0VmZmVjdC5qcz9lMThkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlUmVzaXplT2JzZXJ2ZXIuanM/OWYzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0J1dHRvbi5qcz83MmFiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vQW5jaG9yLmpzPzhlZDkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vVGhlbWVQcm92aWRlci5qcz9iMDNjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcz8wYTFjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS9UcmFuc2l0aW9uR3JvdXBDb250ZXh0LmpzPzJkNDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb24uanM/ZDdmNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZS5qcz8wNzBiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS91dGlscy9yZWZsb3cuanM/Mzc1NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL293bmVyRG9jdW1lbnQuanM/MTU1MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2h5cGhlbmF0ZS5qcz82MjM3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaHlwaGVuYXRlU3R5bGUuanM/N2U1NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2lzVHJhbnNmb3JtLmpzPzJhZDkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9jc3MuanM/ZTE5NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2dldENvbXB1dGVkU3R5bGUuanM/YTRkYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL293bmVyV2luZG93LmpzPzVhMmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9jYW5Vc2VET00uanM/NGEwNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2FkZEV2ZW50TGlzdGVuZXIuanM/ZDUxMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2xpc3Rlbi5qcz9mZTkzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vcmVtb3ZlRXZlbnRMaXN0ZW5lci5qcz8wOTQzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vdHJhbnNpdGlvbkVuZC5qcz9mYmRmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vdHJpZ2dlckV2ZW50LmpzPzQ3NTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vdHJhbnNpdGlvbkVuZExpc3RlbmVyLmpzP2RkM2YiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vdHJpZ2dlckJyb3dzZXJSZWZsb3cuanM/NDU4OSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZU1lcmdlZFJlZnMuanM/MWFlMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9UcmFuc2l0aW9uV3JhcHBlci5qcz82MTQ4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3NhZmVGaW5kRE9NTm9kZS5qcz9iZDRhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0ZhZGUuanM/NGFmZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9DbG9zZUJ1dHRvbi5qcz85NTAzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL2RpdldpdGhDbGFzc05hbWUuanM/ZDgxYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2NhbWVsaXplLmpzP2JkN2IiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vY3JlYXRlV2l0aEJzUHJlZml4LmpzPzEzMzAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQWxlcnQuanM/MDY0MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9NZXNzYWdlLmpzeD8yNzViIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0xvYWRpbmdJbmZvLmpzeD8xN2U4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0xvZ2luRm9ybS5qc3g/YTVmMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3F1ZXJ5U2VsZWN0b3JBbGwuanM/NzlhMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUZvcmNlVXBkYXRlLmpzP2M4OWMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93bkNvbnRleHQuanM/OGJlNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZGVxdWFsL2Rpc3QvaW5kZXgubWpzPzI2YmIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzPzdmZTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzP2UzNmMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qcz9kNTJlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcz83YjUxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdXNlckFnZW50LmpzPzFlOGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNMYXlvdXRWaWV3cG9ydC5qcz84OTJmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcz9lN2Y0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanM/OGYzMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcz8xOTY4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzP2MwYTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcz9hMWJkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzPzY5Y2UiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzPzMwMGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcz8yZGIzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qcz8xYWQzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzPzg0ZjMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy93aXRoaW4uanM/NjI4ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcz8xZmQ0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzP2JhNjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanM/NDY1MSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzP2Q1YTgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanM/MWJiNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcz9iOGExIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanM/YjU5ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcz80OGQ5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanM/YWFiZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzP2Y1ZmEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsLmpzPzFlOTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcz8wNzQ4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzP2E2NDUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0U2Nyb2xsUGFyZW50LmpzP2MwZWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanM/OWJhNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanM/MTNlZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanM/NDgwOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRWaWV3cG9ydFJlY3QuanM/ZDlhMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudFJlY3QuanM/ZDA4NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzPzc2NDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcz8xOWIxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanM/MDU2NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzPzUwYWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcz8wMDAxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcz8wNzZkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcz9lZTk3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcz9mYzAyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanM/NWY0MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlU2Nyb2xsLmpzPzJmYzEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanM/NWU0MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzPzQ1MGMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9jcmVhdGVQb3BwZXIuanM/NjY4NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3BvcHBlci5qcz80ZDgwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanM/YzYzMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzPzQ0OTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcz80ZDcwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXNlUG9wcGVyLmpzPzAyMDciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VTYWZlU3RhdGUuanM/YTk1NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2NvbnRhaW5zLmpzPzIyM2YiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VDbGlja091dHNpZGUuanM/M2E3YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL21lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcuanM/NTI3OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duTWVudS5qcz80MmFmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlQ2FsbGJhY2tSZWYuanM/YjQ4YSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlYWN0LWFyaWEvc3NyL2Rpc3QvaW1wb3J0Lm1qcz83Zjc4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25Ub2dnbGUuanM/NWM3YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL1NlbGVjdGFibGVDb250ZXh0LmpzP2Q0NzkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9OYXZDb250ZXh0LmpzPzIzMjAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9EYXRhS2V5LmpzPzhmNzAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93bkl0ZW0uanM/MDQ5OSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZVdpbmRvdy5qcz85ZWY0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd24uanM/YmQ2MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvbm9kZV9tb2R1bGVzL3VuY29udHJvbGxhYmxlL2xpYi9lc20vaW5kZXguanM/YjZiNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUV2ZW50TGlzdGVuZXIuanM/YTJlMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Ecm9wZG93bkNvbnRleHQuanM/NDdkNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Ecm9wZG93bkl0ZW0uanM/MmZlMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9JbnB1dEdyb3VwQ29udGV4dC5qcz9hNGM1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhckNvbnRleHQuanM/MzA0YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS91c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcuanM/OTUxMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Ecm9wZG93bk1lbnUuanM/ZmE5MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9CdXR0b24uanM/ZmRhMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Ecm9wZG93blRvZ2dsZS5qcz9hMjlmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duLmpzPzliOTgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9UYWJDb250ZXh0LmpzPzIyYjciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9OYXZJdGVtLmpzP2VjYjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2TGluay5qcz8xZmExIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdkRyb3Bkb3duLmpzP2M1MTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvVXNlckNvbXBvbmVudC5qc3g/ZDZkYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvQnJhbmRpbmcuanM/YTc4MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05hdi5qcz81NGQyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0NhcmRIZWFkZXJDb250ZXh0LmpzP2FiZTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2SXRlbS5qcz9kNWM3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdi5qcz9lNjdkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhckJyYW5kLmpzP2IzYTgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzPzQwMjgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQ29sbGFwc2UuanM/ZDIzZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJDb2xsYXBzZS5qcz9iNmIwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhclRvZ2dsZS5qcz81NjRmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlTWVkaWFRdWVyeS5qcz9kNTZlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlQnJlYWtwb2ludC5qcz81NzYyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vYWN0aXZlRWxlbWVudC5qcz84NDk3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTW9kYWxNYW5hZ2VyLmpzPzg2YjkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9nZXRTY3JvbGxiYXJXaWR0aC5qcz9iZTExIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXNlV2FpdEZvckRPTVJlZi5qcz81ZWIyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTm9vcFRyYW5zaXRpb24uanM/NTFhZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0ltcGVyYXRpdmVUcmFuc2l0aW9uLmpzP2MzNzQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Nb2RhbC5qcz9iYmViIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlV2lsbFVubW91bnQuanM/ZjhhNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVVwZGF0ZWRSZWYuanM/M2I1MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3V0aWxzLmpzPzRjYjEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzQm9keS5qcz8zNjUzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhc1RvZ2dsaW5nLmpzP2FlOTUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTW9kYWxDb250ZXh0LmpzP2EwOWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQWJzdHJhY3RNb2RhbEhlYWRlci5qcz9hYmUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhc0hlYWRlci5qcz8yZjYyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhc1RpdGxlLmpzPzE0MTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9yZW1vdmVDbGFzcy5qcz9hMWEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Jvb3RzdHJhcE1vZGFsTWFuYWdlci5qcz83OWU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vYWRkQ2xhc3MuanM/MmUyOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2hhc0NsYXNzLmpzPzQ1NWUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzLmpzP2Y1MjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyT2ZmY2FudmFzLmpzPzQzOTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyLmpzPzQxMWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQ29udGFpbmVyLmpzPzQ5ZDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvUXVlcnlGb3JtLmhlbHBlcnMuanM/NzA4ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9RdWVyeUZvcm0uanN4PzQwMzIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvUXVlcnlQYW5lbC5qc3g/MzBkMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Ub3BOYXZpZ2F0aW9uQmFyLmpzeD9lZTA4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0hlYWRlci5qc3g/YjVmYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Gb290ZXIuanN4PzE4ZDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvQXdhaXQuanN4P2E0OGQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvQ2hlY2tib3guanN4P2JhY2IiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvQ2FyZC5qc3g/MTM1NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGZpbGVzLXVpL3JlYWN0L2J1aWxkL2luZGV4LmVzLmpzP2UzZjAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvRmlsZVVwbG9hZC5qc3g/Y2EzOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvaW5kZXguc2Nzcz9lZDc1Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpLCAoZnVuY3Rpb24gd2VicGFja0xvYWRPcHRpb25hbEV4dGVybmFsTW9kdWxlKCkgeyB0cnkgeyByZXR1cm4gcmVxdWlyZShcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiKTsgfSBjYXRjaChlKSB7fSB9KCkpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcIlJlYWN0XCIsIFwiQ2Fvc0RCSW5mb1NlcnZpY2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiQ2Fvc0RCQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSwgKGZ1bmN0aW9uIHdlYnBhY2tMb2FkT3B0aW9uYWxFeHRlcm5hbE1vZHVsZSgpIHsgdHJ5IHsgcmV0dXJuIHJlcXVpcmUoXCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIik7IH0gY2F0Y2goZSkge30gfSgpKSk7XG5cdGVsc2Vcblx0XHRyb290W1wiQ2Fvc0RCQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KHJvb3RbXCJSZWFjdFwiXSwgcm9vdFtcIkNhb3NEQkluZm9TZXJ2aWNlXCJdKTtcbn0pKHNlbGYsIGZ1bmN0aW9uKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzYzOV9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xODlfXykge1xucmV0dXJuICIsIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIG5hdGl2ZUNvZGVTdHJpbmcgPSAnW25hdGl2ZSBjb2RlXSc7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcygpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0aWYgKGFyZy5sZW5ndGgpIHtcblx0XHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goaW5uZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAoYXJnLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICYmICFhcmcudG9TdHJpbmcudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZy50b1N0cmluZygpKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5jYW9zZGItZi1xdWVyeS1jcWwtaGludHtib3JkZXItcmFkaXVzOjJyZW07YmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5O2NvbG9yOiMyNjI2MjY7cGFkZGluZzouMXJlbSAuNHJlbX0uY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWd7ZGlzcGxheTpub25lfW5hdiAubmF2YmFyLWNvbGxhcHNle2FsaWduLWl0ZW1zOnN0YXJ0O2ZsZXgtd3JhcDp3cmFwfW5hdiAubmF2YmFyLWNvbGxhcHNlIGZvcm17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiwuY2Fvc2RiLWYtcXVlcnktcGFuZWx7bWFyZ2luLXRvcDouNXJlbTt3aWR0aDoxMDAlO29yZGVyOjF9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0sLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3Jte29yZGVyOnVuc2V0O2hlaWdodDo0NHB4O3BhZGRpbmctbGVmdDoycmVtO3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctcmlnaHQ6MnJlbTtwYWRkaW5nLWJvdHRvbTouNXJlbTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MnJlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybTpob3ZlciwuY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm06aG92ZXIsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3Vze2JveC1zaGFkb3c6MCAxcHggNnB4IHJnYmEoMzIsMzMsMzYsLjI4KX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne21hcmdpbi10b3A6LjVyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC1oZWlnaHQ6MjAwcHg7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3cteTphdXRvO2JveC1zaGFkb3c6MCA0cHggNnB4IHJnYmEoMzIsMzMsMzYsLjI4KTtwYWRkaW5nOjBweH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpe3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtO2hlaWdodDoyNHB4O2xpc3Qtc3R5bGUtdHlwZTpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGkuaGlnaGxpZ2h0LC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpLmhpZ2hsaWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaTpob3ZlciwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMuc3VibWl0Lm9wZW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5zdWJtaXQub3BlbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWd7ZGlzcGxheTpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGJ1dHRvbiwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gYnV0dG9ue2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXI6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dCwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXR7Ym9yZGVyOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQ6Zm9jdXMsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQ6Zm9jdXMtdmlzaWJsZSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQ6Zm9jdXMsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLXZpc2libGV7b3V0bGluZTpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIGZvcm0sLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIGZvcm17ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdCwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0e21hcmdpbi10b3A6LjVyZW07cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy1yaWdodDoxcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIGlucHV0LmZvcm0tY29udHJvbCwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIGlucHV0LmZvcm0tY29udHJvbHtkaXNwbGF5OnVuc2V0O3dpZHRoOnVuc2V0fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWIsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWJ7aGVpZ2h0OjQ0cHg7bWFyZ2luLXJpZ2h0OjFyZW07cGFkZGluZzo2cHg7YmFja2dyb3VuZC1jb2xvcjp1bnNldDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOi4ycmVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYi5hY3RpdmUsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWIuYWN0aXZle2JvcmRlci1ib3R0b206LjJyZW0gc29saWQgZ3JheX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZmlsdGVyLXByb3BlcnR5LXNlbGVjdG9yLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZmlsdGVyLXByb3BlcnR5LXNlbGVjdG9ye2ZsZXgtYmFzaXM6MTAwJX1AbWVkaWEobWluLXdpZHRoOiA5OTJweCl7LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVyc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1heC1jb250ZW50IG1heC1jb250ZW50IGF1dG8gbWF4LWNvbnRlbnQ7Z3JpZC1jb2x1bW4tZ2FwOi41cmVtO3BhZGRpbmc6LjJyZW0gMHJlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIGlucHV0LmZvcm0tY29udHJvbHtkaXNwbGF5OnVuc2V0O3dpZHRoOnVuc2V0fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWR7bWFyZ2luLXRvcDowO3dpZHRoOnVuc2V0O29yZGVyOnVuc2V0fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgZm9ybXtmbGV4LWRpcmVjdGlvbjpyb3d9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktZmlsdGVycy10b2dnbGV7ZGlzcGxheTpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0e21hcmdpbi10b3A6MHJlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS10YWJ7aGVpZ2h0OjM4cHh9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnN7ZGlzcGxheTpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LWZvcm17aGVpZ2h0OjM4cHg7b3JkZXI6MTtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXRvcDouM3JlbTtwYWRkaW5nLXJpZ2h0OjFyZW07cGFkZGluZy1ib3R0b206LjNyZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktZm9ybSAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWd7ZGlzcGxheTpub25lfX0udXNlci1jb21wb25lbnQgLmFsZXJ0e3BhZGRpbmctdG9wOi4zNzVyZW07cGFkZGluZy1ib3R0b206LjM3NXJlbTtmb250LXNpemU6MXJlbTttYXJnaW46MH1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTUpO2JvcmRlci1yYWRpdXM6MH1mb290ZXJ7Y29sb3I6Izg3ODc4N31mb290ZXIgLm5hdntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYTBhMGEwfWZvb3RlciAubmF2LWxpbmt7Y29sb3I6Izg3ODc4NyAhaW1wb3J0YW50fWZvb3RlciAubmF2LWxpbms6aG92ZXJ7Y29sb3I6IzZkNmQ2ZCAhaW1wb3J0YW50fWZvb3RlciAuZm9vdGVyLWJvZHl7Ym9yZGVyLXRvcDoxcHggc29saWQgI2JhYmFiYTtiYWNrZ3JvdW5kLWNvbG9yOiNkM2QzZDM7bWluLWhlaWdodDoyMHJlbX1mb290ZXIgLmZvb3Rlci1ib3JkZXJ7aGVpZ2h0OjNyZW07Ym94LXNoYWRvdzowcHggLTVweCA3cHggLTVweCByZ2JhKDAsMCwwLC40KSBpbnNldDstd2Via2l0LWJveC1zaGFkb3c6MHB4IC01cHggN3B4IC01cHggcmdiYSgwLDAsMCwuNCkgaW5zZXQ7LW1vei1ib3gtc2hhZG93OjBweCAtNXB4IDZweCAtN3B4IHJnYmEoMCwwLDAsLjQpIGluc2V0fS5jYW9zZGItY2hlY2tib3h7Y3Vyc29yOnBvaW50ZXJ9LmNhb3NkYi1jaGVja2JveCAuY2Fvc2RiLWNoZWNrYm94LWljb257Zm9udC1zaXplOjEuM2VtfS5jYW9zZGItY2hlY2tib3ggLmNhb3NkYi1jaGVjay1ib3gtaW5wdXR7ZGlzcGxheTpub25lfS5jYW9zZGItY2hlY2tib3gucmVhZC1vbmx5e2N1cnNvcjphdXRvfS5jb2xvci1saWdodC1ncmVlbntjb2xvcjojYjRlNjAwfS5taW5pY2FyZHtib3JkZXI6MXB4IHNvbGlkIHJlZDt3aWR0aDo0MDBweDtkaXNwbGF5OmZsZXh9Lm1pbmljYXJkIC5taW5pY2FyZC10aXRsZXtiYWNrZ3JvdW5kLWNvbG9yOnJlZH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvY29tcG9uZW50cy9RdWVyeUZvcm0uc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL2luZGV4LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBSUEseUJBQ0Usa0JBQUEsQ0FDQSx3QkFBQSxDQUNBLGFBQUEsQ0FDQSxtQkFBQSxDQUdGLHlCQUNFLFlBQUEsQ0FHRixxQkFDRSxpQkFBQSxDQUNBLGNBQUEsQ0FFQSwwQkFDRSxZQUFBLENBQ0EscUJBQUEsQ0FJSixtRUFFRSxnQkFBQSxDQUNBLFVBQUEsQ0FDQSxPQUFBLENBRUEsNkdBQ0UsV0FBQSxDQUNBLFdBQUEsQ0FDQSxpQkFBQSxDQUNBLGlCQUFBLENBQ0Esa0JBQUEsQ0FDQSxvQkFBQSxDQUNBLHFCQUFBLENBQ0EscUJBQUEsQ0FDQSxrQkFBQSxDQUVBLGtQQUVFLHVDQUFBLENBS0UseUxBQ0UsZ0JBQUEsQ0FDQSxxQkFBQSxDQUNBLG9CQUFBLENBQ0EsZ0JBQUEsQ0FDQSxpQkFBQSxDQUNBLGVBQUEsQ0FDQSx1Q0FBQSxDQUNBLFdBQUEsQ0FFQSwrTEFDRSxrQkFBQSxDQUNBLG1CQUFBLENBQ0EsV0FBQSxDQUNBLG9CQUFBLENBQ0EsbU5BQ0Usd0JBQUEsQ0FFRiwyTUFDRSx3QkFBQSxDQU9KLG1NQUNFLFlBQUEsQ0FNUiwySEFDRSx3QkFBQSxDQUNBLFdBQUEsQ0FHRix5SEFDRSxXQUFBLENBRUEsMFJBRUUsWUFBQSxDQUtOLDZFQUNFLHFCQUFBLENBR0YscUhBQ0UsZ0JBQUEsQ0FDQSxpQkFBQSxDQUNBLGtCQUFBLENBR0YsMkhBQ0UsWUFBQSxDQUNBLGtCQUFBLENBQ0EsY0FBQSxDQUVBLGlLQUNFLGFBQUEsQ0FDQSxXQUFBLENBSUosMkdBQ0UsV0FBQSxDQUNBLGlCQUFBLENBQ0EsV0FBQSxDQUNBLHNCQUFBLENBQ0EsV0FBQSxDQUNBLHVDQUFBLENBQ0EseUhBQ0UsOEJBQUEsQ0FJSixxSkFDRSxlQUFBLENDcEVBLHlCRDBFQSxrREFDRSxZQUFBLENBQ0EsOERBQUEsQ0FDQSxxQkFBQSxDQUNBLGtCQUFBLENBRUEscUVBQ0UsYUFBQSxDQUNBLFdBQUEsQ0FLTixnQ0FDRSxZQUFBLENBQ0EsV0FBQSxDQUNBLFdBQUEsQ0FFQSxxQ0FDRSxrQkFBQSxDQUdGLCtEQUNFLFlBQUEsQ0FHRix5REFDRSxlQUFBLENBR0Ysb0RBQ0UsV0FBQSxDQUdGLDREQUNFLFlBQUEsQ0FHRixxREFDRSxXQUFBLENBQ0EsT0FBQSxDQUNBLGlCQUFBLENBQ0EsaUJBQUEsQ0FDQSxrQkFBQSxDQUNBLG9CQUFBLENBRUEsOEVBQ0UsWUFBQSxDQUFBLENFcExSLHVCQUNFLG1CQUFBLENBQ0Esc0JBQUEsQ0FDQSxjQUFBLENBQ0EsUUFBQSxDQUdGLE9BQ0UsdUNBQUEsQ0FDQSxlQUFBLENBR0YsT0FDRSxhQUFBLENBRUEsWUFDRSwrQkFBQSxDQUVGLGlCQUNFLHdCQUFBLENBRUYsdUJBQ0Usd0JBQUEsQ0FFRixvQkFDRSw0QkFBQSxDQUNBLHdCQTVCZ0IsQ0E2QmhCLGdCQUFBLENBRUYsc0JBQ0UsV0FBQSxDQUNBLGlEQUFBLENBQ0EseURBQUEsQ0FDQSxzREFBQSxDQUlKLGlCQVNFLGNBQUEsQ0FSQSx1Q0FDRSxlQUFBLENBR0YseUNBQ0UsWUFBQSxDQUtGLDJCQUNFLFdBQUEsQ0FJSixtQkFDRSxhQUFBLENBR0YsVUFDRSxvQkFBQSxDQUNBLFdBQUEsQ0FDQSxZQUFBLENBRUEsMEJBQ0Usb0JBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCBcXFwiYm9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zXFxcIjtcXG5AaW1wb3J0IFxcXCJib290c3RyYXAvc2Nzcy92YXJpYWJsZXNcXFwiO1xcbkBpbXBvcnQgXFxcImJvb3RzdHJhcC9zY3NzL21peGluc1xcXCI7XFxuXFxuLmNhb3NkYi1mLXF1ZXJ5LWNxbC1oaW50IHtcXG4gIGJvcmRlci1yYWRpdXM6IDJyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4od2hpdGUsIDE1JSk7XFxuICBjb2xvcjogbGlnaHRlbihibGFjaywgMTUlKTtcXG4gIHBhZGRpbmc6IDAuMXJlbSAwLjRyZW07XFxufVxcblxcbi5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG5uYXYgLm5hdmJhci1jb2xsYXBzZSB7XFxuICBhbGlnbi1pdGVtczogc3RhcnQ7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuXFxuICBmb3JtIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIH1cXG59XFxuXFxuLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4sXFxuLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIHtcXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3JkZXI6IDE7XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktZm9ybSB7XFxuICAgIG9yZGVyOiB1bnNldDtcXG4gICAgaGVpZ2h0OiA0NHB4O1xcbiAgICBwYWRkaW5nLWxlZnQ6IDJyZW07XFxuICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcbiAgICBib3JkZXItcmFkaXVzOiAycmVtO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmLmZvY3VzIHtcXG4gICAgICBib3gtc2hhZG93OiAwIDFweCA2cHggcmdiYSgzMiwgMzMsIDM2LCAwLjI4KTtcXG4gICAgfVxcblxcbiAgICAmLmZvY3VzIHtcXG4gICAgICAmLm9wZW4ge1xcbiAgICAgICAgb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcge1xcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4O1xcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDMyLCAzMywgMzYsIDAuMjgpO1xcbiAgICAgICAgICBwYWRkaW5nOiAwcHg7XFxuXFxuICAgICAgICAgIGxpIHtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XFxuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcXG4gICAgICAgICAgICAmLmhpZ2hsaWdodCB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4od2hpdGUsIDE1JSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKHdoaXRlLCAxNSUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgICAmLnN1Ym1pdCB7XFxuICAgICAgICAmLm9wZW4ge1xcbiAgICAgICAgICAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgYnV0dG9uIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG4gICAgfVxcblxcbiAgICBpbnB1dCB7XFxuICAgICAgYm9yZGVyOiBub25lO1xcblxcbiAgICAgICY6Zm9jdXMsXFxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBmb3JtIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdCB7XFxuICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgZmxleC13cmFwOiB3cmFwO1xcblxcbiAgICBpbnB1dC5mb3JtLWNvbnRyb2wge1xcbiAgICAgIGRpc3BsYXk6IHVuc2V0O1xcbiAgICAgIHdpZHRoOiB1bnNldDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LXRhYiB7XFxuICAgIGhlaWdodDogNDRweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xcbiAgICBwYWRkaW5nOiA2cHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHVuc2V0O1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgJi5hY3RpdmUge1xcbiAgICAgIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCBncmF5O1xcbiAgICB9XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktZmlsdGVyLXByb3BlcnR5LXNlbGVjdG9yIHtcXG4gICAgZmxleC1iYXNpczogMTAwJTtcXG4gIH1cXG59XFxuXFxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xcbiAgLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIHtcXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIHtcXG4gICAgICBkaXNwbGF5OiBncmlkO1xcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWF4LWNvbnRlbnQgbWF4LWNvbnRlbnQgYXV0byBtYXgtY29udGVudDtcXG4gICAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcXG4gICAgICBwYWRkaW5nOiAwLjJyZW0gMHJlbTtcXG5cXG4gICAgICBpbnB1dC5mb3JtLWNvbnRyb2wge1xcbiAgICAgICAgZGlzcGxheTogdW5zZXQ7XFxuICAgICAgICB3aWR0aDogdW5zZXQ7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIHtcXG4gICAgbWFyZ2luLXRvcDogMDtcXG4gICAgd2lkdGg6IHVuc2V0O1xcbiAgICBvcmRlcjogdW5zZXQ7XFxuXFxuICAgIGZvcm0ge1xcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlcnMtdG9nZ2xlIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdCB7XFxuICAgICAgbWFyZ2luLXRvcDogMHJlbTtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiIHtcXG4gICAgICBoZWlnaHQ6IDM4cHg7XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS1mb3JtIHtcXG4gICAgICBoZWlnaHQ6IDM4cHg7XFxuICAgICAgb3JkZXI6IDE7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgICAgIHBhZGRpbmctdG9wOiAwLjNyZW07XFxuICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMC4zcmVtO1xcblxcbiAgICAgIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXFxuLy9cXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XFxuLy9cXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KVxcbi8vXFxuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0Llxcblxcbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cXG4vL1xcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcXG4vLyAgICBtZFxcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgbWRcXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwgeHhsKSlcXG4vLyAgICBtZFxcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XFxuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcXG4gIEBpZiBub3QgJG4ge1xcbiAgICBAZXJyb3IgXFxcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcXFwiO1xcbiAgfVxcbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XFxufVxcblxcbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cXG4vL1xcbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICA1NzZweFxcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcXG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcXG59XFxuXFxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLlxcbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZlxcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxcbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW1heChtZCwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgNzY3Ljk4cHhcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtYXg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XFxuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcXG59XFxuXFxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cXG4vL1xcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIFxcXCJcXFwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICBcXFwiLXNtXFxcIlxcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFxcXCJcXFwiLCBcXFwiLSN7JG5hbWV9XFxcIik7XFxufVxcblxcbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gIEBpZiAkbWluIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50Llxcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XFxuICBAaWYgJG1heCB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2Uge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XFxuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XFxuXFxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxcbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XFxuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgJG1heDogIGJyZWFrcG9pbnQtbWF4KCRuZXh0LCAkYnJlYWtwb2ludHMpO1xcblxcbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuZXh0LCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIkBpbXBvcnQgXFxcIi4vY29tcG9uZW50cy9RdWVyeUZvcm1cXFwiO1xcblxcbiRmb290ZXItYm9keS1jb2xvcjogbGlnaHRncmF5O1xcblxcbi51c2VyLWNvbXBvbmVudCAuYWxlcnQge1xcbiAgcGFkZGluZy10b3A6IDAuMzc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgbWFyZ2luOiAwO1xcbn1cXG5cXG5oZWFkZXIge1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbn1cXG5cXG5mb290ZXIge1xcbiAgY29sb3I6IGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDMwJSk7XFxuXFxuICAubmF2IHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDIwJSk7XFxuICB9XFxuICAubmF2LWxpbmsge1xcbiAgICBjb2xvcjogZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMzAlKSAhaW1wb3J0YW50O1xcbiAgfVxcbiAgLm5hdi1saW5rOmhvdmVyIHtcXG4gICAgY29sb3I6IGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDQwJSkgIWltcG9ydGFudDtcXG4gIH1cXG4gIC5mb290ZXItYm9keSB7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAxMCUpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWJvZHktY29sb3I7XFxuICAgIG1pbi1oZWlnaHQ6IDIwcmVtO1xcbiAgfVxcbiAgLmZvb3Rlci1ib3JkZXIge1xcbiAgICBoZWlnaHQ6IDNyZW07XFxuICAgIGJveC1zaGFkb3c6IDBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldDtcXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggLTVweCA3cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQ7XFxuICAgIC1tb3otYm94LXNoYWRvdzogMHB4IC01cHggNnB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0O1xcbiAgfVxcbn1cXG5cXG4uY2Fvc2RiLWNoZWNrYm94IHtcXG4gIC5jYW9zZGItY2hlY2tib3gtaWNvbiB7XFxuICAgIGZvbnQtc2l6ZTogMS4zZW07XFxuICB9XFxuXFxuICAuY2Fvc2RiLWNoZWNrLWJveC1pbnB1dCB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxuXFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuXFxuICAmLnJlYWQtb25seSB7XFxuICAgIGN1cnNvcjogYXV0bztcXG4gIH1cXG59XFxuXFxuLmNvbG9yLWxpZ2h0LWdyZWVuIHtcXG4gIGNvbG9yOiAjYjRlNjAwO1xcbn1cXG5cXG4ubWluaWNhcmQge1xcbiAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xcbiAgd2lkdGg6IDQwMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG5cXG4gIC5taW5pY2FyZC10aXRsZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIGludmFyaWFudCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgK1xuICAgICAgICAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsgfSlcbiAgICAgICk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBhbGw7XG5cbnZhciBfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIgPSByZXF1aXJlKCcuL3V0aWxzL2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyJyk7XG5cbnZhciBfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBhbGwoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB2YWxpZGF0b3JzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgdmFsaWRhdG9yc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFsbFByb3BUeXBlcygpIHtcbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHZhciBlcnJvciA9IG51bGw7XG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goZnVuY3Rpb24gKHZhbGlkYXRvcikge1xuICAgICAgaWYgKGVycm9yICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVzdWx0ID0gdmFsaWRhdG9yLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgZXJyb3IgPSByZXN1bHQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cblxuICByZXR1cm4gKDAsIF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcjIuZGVmYXVsdCkoYWxsUHJvcFR5cGVzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyO1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuLy8gTW9zdGx5IHRha2VuIGZyb20gUmVhY3RQcm9wVHlwZXMuXG5cbmZ1bmN0aW9uIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICB2YXIgY29tcG9uZW50TmFtZVNhZmUgPSBjb21wb25lbnROYW1lIHx8ICc8PGFub255bW91cz4+JztcbiAgICB2YXIgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcblxuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0gbnVsbCkge1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignUmVxdWlyZWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZVNhZmUgKyAnYCB3YXMgbm90IHNwZWNpZmllZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWVTYWZlICsgJ2AuJykpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiA2ID8gX2xlbiAtIDYgOiAwKSwgX2tleSA9IDY7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDZdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZS5hcHBseSh1bmRlZmluZWQsIFtwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWVTYWZlLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lU2FmZV0uY29uY2F0KGFyZ3MpKTtcbiAgfVxuXG4gIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICBjaGFpbmVkQ2hlY2tUeXBlLmlzUmVxdWlyZWQgPSBjaGVja1R5cGUuYmluZChudWxsLCB0cnVlKTtcblxuICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbi8qXG4gTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4qL1xuJ3VzZSBzdHJpY3QnO3ZhciBhYT1yZXF1aXJlKFwicmVhY3RcIiksY2E9cmVxdWlyZShcInNjaGVkdWxlclwiKTtmdW5jdGlvbiBwKGEpe2Zvcih2YXIgYj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbY10pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2ErXCI7IHZpc2l0IFwiK2IrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBkYT1uZXcgU2V0LGVhPXt9O2Z1bmN0aW9uIGZhKGEsYil7aGEoYSxiKTtoYShhK1wiQ2FwdHVyZVwiLGIpfVxuZnVuY3Rpb24gaGEoYSxiKXtlYVthXT1iO2ZvcihhPTA7YTxiLmxlbmd0aDthKyspZGEuYWRkKGJbYV0pfVxudmFyIGlhPSEoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3d8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxqYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGthPS9eWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokLyxsYT1cbnt9LG1hPXt9O2Z1bmN0aW9uIG9hKGEpe2lmKGphLmNhbGwobWEsYSkpcmV0dXJuITA7aWYoamEuY2FsbChsYSxhKSlyZXR1cm4hMTtpZihrYS50ZXN0KGEpKXJldHVybiBtYVthXT0hMDtsYVthXT0hMDtyZXR1cm4hMX1mdW5jdGlvbiBwYShhLGIsYyxkKXtpZihudWxsIT09YyYmMD09PWMudHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlIFwiYm9vbGVhblwiOmlmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpcmV0dXJuIWMuYWNjZXB0c0Jvb2xlYW5zO2E9YS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSk7cmV0dXJuXCJkYXRhLVwiIT09YSYmXCJhcmlhLVwiIT09YTtkZWZhdWx0OnJldHVybiExfX1cbmZ1bmN0aW9uIHFhKGEsYixjLGQpe2lmKG51bGw9PT1ifHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIGJ8fHBhKGEsYixjLGQpKXJldHVybiEwO2lmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpc3dpdGNoKGMudHlwZSl7Y2FzZSAzOnJldHVybiFiO2Nhc2UgNDpyZXR1cm4hMT09PWI7Y2FzZSA1OnJldHVybiBpc05hTihiKTtjYXNlIDY6cmV0dXJuIGlzTmFOKGIpfHwxPmJ9cmV0dXJuITF9ZnVuY3Rpb24gdihhLGIsYyxkLGUsZixnKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09Ynx8Mz09PWJ8fDQ9PT1iO3RoaXMuYXR0cmlidXRlTmFtZT1kO3RoaXMuYXR0cmlidXRlTmFtZXNwYWNlPWU7dGhpcy5tdXN0VXNlUHJvcGVydHk9Yzt0aGlzLnByb3BlcnR5TmFtZT1hO3RoaXMudHlwZT1iO3RoaXMuc2FuaXRpemVVUkw9Zjt0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPWd9dmFyIHo9e307XG5cImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwwLCExLGEsbnVsbCwhMSwhMSl9KTtbW1wiYWNjZXB0Q2hhcnNldFwiLFwiYWNjZXB0LWNoYXJzZXRcIl0sW1wiY2xhc3NOYW1lXCIsXCJjbGFzc1wiXSxbXCJodG1sRm9yXCIsXCJmb3JcIl0sW1wiaHR0cEVxdWl2XCIsXCJodHRwLWVxdWl2XCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWFbMF07eltiXT1uZXcgdihiLDEsITEsYVsxXSxudWxsLCExLCExKX0pO1tcImNvbnRlbnRFZGl0YWJsZVwiLFwiZHJhZ2dhYmxlXCIsXCJzcGVsbENoZWNrXCIsXCJ2YWx1ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiYXV0b1JldmVyc2VcIixcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcImZvY3VzYWJsZVwiLFwicHJlc2VydmVBbHBoYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEsbnVsbCwhMSwhMSl9KTtcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBkaXNhYmxlUmVtb3RlUGxheWJhY2sgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImNoZWNrZWRcIixcIm11bHRpcGxlXCIsXCJtdXRlZFwiLFwic2VsZWN0ZWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMCxhLG51bGwsITEsITEpfSk7W1wiY2FwdHVyZVwiLFwiZG93bmxvYWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNCwhMSxhLG51bGwsITEsITEpfSk7W1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw2LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJyb3dTcGFuXCIsXCJzdGFydFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw1LCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO3ZhciByYT0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIHNhKGEpe3JldHVybiBhWzFdLnRvVXBwZXJDYXNlKCl9XG5cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLFxuc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsbnVsbCwhMSwhMSl9KTtcInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMSwhMSl9KTtbXCJ4bWw6YmFzZVwiLFwieG1sOmxhbmdcIixcInhtbDpzcGFjZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLCExLCExKX0pO1tcInRhYkluZGV4XCIsXCJjcm9zc09yaWdpblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuei54bGlua0hyZWY9bmV3IHYoXCJ4bGlua0hyZWZcIiwxLCExLFwieGxpbms6aHJlZlwiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCEwLCExKTtbXCJzcmNcIixcImhyZWZcIixcImFjdGlvblwiLFwiZm9ybUFjdGlvblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO1xuZnVuY3Rpb24gdGEoYSxiLGMsZCl7dmFyIGU9ei5oYXNPd25Qcm9wZXJ0eShiKT96W2JdOm51bGw7aWYobnVsbCE9PWU/MCE9PWUudHlwZTpkfHwhKDI8Yi5sZW5ndGgpfHxcIm9cIiE9PWJbMF0mJlwiT1wiIT09YlswXXx8XCJuXCIhPT1iWzFdJiZcIk5cIiE9PWJbMV0pcWEoYixjLGUsZCkmJihjPW51bGwpLGR8fG51bGw9PT1lP29hKGIpJiYobnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6YS5zZXRBdHRyaWJ1dGUoYixcIlwiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOlwiXCI6YzooYj1lLmF0dHJpYnV0ZU5hbWUsZD1lLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTooZT1lLnR5cGUsYz0zPT09ZXx8ND09PWUmJiEwPT09Yz9cIlwiOlwiXCIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKX1cbnZhciB1YT1hYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCx2YT1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSx3YT1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHlhPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSx6YT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksQWE9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLEJhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxDYT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxEYT1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksRWE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLEZhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLEdhPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLEhhPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKTtcbnZhciBJYT1TeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5jYWNoZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QudHJhY2luZ19tYXJrZXJcIik7dmFyIEphPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBLYShhKXtpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2E9SmEmJmFbSmFdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9dmFyIEE9T2JqZWN0LmFzc2lnbixMYTtmdW5jdGlvbiBNYShhKXtpZih2b2lkIDA9PT1MYSl0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2goYyl7dmFyIGI9Yy5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtMYT1iJiZiWzFdfHxcIlwifXJldHVyblwiXFxuXCIrTGErYX12YXIgTmE9ITE7XG5mdW5jdGlvbiBPYShhLGIpe2lmKCFhfHxOYSlyZXR1cm5cIlwiO05hPSEwO3ZhciBjPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYoYilpZihiPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLnByb3RvdHlwZSxcInByb3BzXCIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fX0pLFwib2JqZWN0XCI9PT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChiLFtdKX1jYXRjaChsKXt2YXIgZD1sfVJlZmxlY3QuY29uc3RydWN0KGEsW10sYil9ZWxzZXt0cnl7Yi5jYWxsKCl9Y2F0Y2gobCl7ZD1sfWEuY2FsbChiLnByb3RvdHlwZSl9ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2gobCl7ZD1sfWEoKX19Y2F0Y2gobCl7aWYobCYmZCYmXCJzdHJpbmdcIj09PXR5cGVvZiBsLnN0YWNrKXtmb3IodmFyIGU9bC5zdGFjay5zcGxpdChcIlxcblwiKSxcbmY9ZC5zdGFjay5zcGxpdChcIlxcblwiKSxnPWUubGVuZ3RoLTEsaD1mLmxlbmd0aC0xOzE8PWcmJjA8PWgmJmVbZ10hPT1mW2hdOyloLS07Zm9yKDsxPD1nJiYwPD1oO2ctLSxoLS0paWYoZVtnXSE9PWZbaF0pe2lmKDEhPT1nfHwxIT09aCl7ZG8gaWYoZy0tLGgtLSwwPmh8fGVbZ10hPT1mW2hdKXt2YXIgaz1cIlxcblwiK2VbZ10ucmVwbGFjZShcIiBhdCBuZXcgXCIsXCIgYXQgXCIpO2EuZGlzcGxheU5hbWUmJmsuaW5jbHVkZXMoXCI8YW5vbnltb3VzPlwiKSYmKGs9ay5yZXBsYWNlKFwiPGFub255bW91cz5cIixhLmRpc3BsYXlOYW1lKSk7cmV0dXJuIGt9d2hpbGUoMTw9ZyYmMDw9aCl9YnJlYWt9fX1maW5hbGx5e05hPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPWN9cmV0dXJuKGE9YT9hLmRpc3BsYXlOYW1lfHxhLm5hbWU6XCJcIik/TWEoYSk6XCJcIn1cbmZ1bmN0aW9uIFBhKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnJldHVybiBNYShhLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIE1hKFwiTGF6eVwiKTtjYXNlIDEzOnJldHVybiBNYShcIlN1c3BlbnNlXCIpO2Nhc2UgMTk6cmV0dXJuIE1hKFwiU3VzcGVuc2VMaXN0XCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gYT1PYShhLnR5cGUsITEpLGE7Y2FzZSAxMTpyZXR1cm4gYT1PYShhLnR5cGUucmVuZGVyLCExKSxhO2Nhc2UgMTpyZXR1cm4gYT1PYShhLnR5cGUsITApLGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFFhKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2Ugd2E6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIEFhOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIHphOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgRWE6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgRmE6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQ2E6cmV0dXJuKGEuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgQmE6cmV0dXJuKGEuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgRGE6dmFyIGI9YS5yZW5kZXI7YT1hLmRpc3BsYXlOYW1lO2F8fChhPWIuZGlzcGxheU5hbWV8fFxuYi5uYW1lfHxcIlwiLGE9XCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO3JldHVybiBhO2Nhc2UgR2E6cmV0dXJuIGI9YS5kaXNwbGF5TmFtZXx8bnVsbCxudWxsIT09Yj9iOlFhKGEudHlwZSl8fFwiTWVtb1wiO2Nhc2UgSGE6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIFFhKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSYShhKXt2YXIgYj1hLnR5cGU7c3dpdGNoKGEudGFnKXtjYXNlIDI0OnJldHVyblwiQ2FjaGVcIjtjYXNlIDk6cmV0dXJuKGIuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgMTA6cmV0dXJuKGIuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgMTg6cmV0dXJuXCJEZWh5ZHJhdGVkRnJhZ21lbnRcIjtjYXNlIDExOnJldHVybiBhPWIucmVuZGVyLGE9YS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxcIlwiLGIuZGlzcGxheU5hbWV8fChcIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7Y2FzZSA3OnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIDU6cmV0dXJuIGI7Y2FzZSA0OnJldHVyblwiUG9ydGFsXCI7Y2FzZSAzOnJldHVyblwiUm9vdFwiO2Nhc2UgNjpyZXR1cm5cIlRleHRcIjtjYXNlIDE2OnJldHVybiBRYShiKTtjYXNlIDg6cmV0dXJuIGI9PT16YT9cIlN0cmljdE1vZGVcIjpcIk1vZGVcIjtjYXNlIDIyOnJldHVyblwiT2Zmc2NyZWVuXCI7XG5jYXNlIDEyOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIDIxOnJldHVyblwiU2NvcGVcIjtjYXNlIDEzOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIDE5OnJldHVyblwiU3VzcGVuc2VMaXN0XCI7Y2FzZSAyNTpyZXR1cm5cIlRyYWNpbmdNYXJrZXJcIjtjYXNlIDE6Y2FzZSAwOmNhc2UgMTc6Y2FzZSAyOmNhc2UgMTQ6Y2FzZSAxNTppZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYilyZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBTYShhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgXCJib29sZWFuXCI6Y2FzZSBcIm51bWJlclwiOmNhc2UgXCJzdHJpbmdcIjpjYXNlIFwidW5kZWZpbmVkXCI6cmV0dXJuIGE7Y2FzZSBcIm9iamVjdFwiOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBUYShhKXt2YXIgYj1hLnR5cGU7cmV0dXJuKGE9YS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWEudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWJ8fFwicmFkaW9cIj09PWIpfVxuZnVuY3Rpb24gVWEoYSl7dmFyIGI9VGEoYSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiLGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxiKSxkPVwiXCIrYVtiXTtpZighYS5oYXNPd25Qcm9wZXJ0eShiKSYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5nZXQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnNldCl7dmFyIGU9Yy5nZXQsZj1jLnNldDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGEpe2Q9XCJcIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2VudW1lcmFibGU6Yy5lbnVtZXJhYmxlfSk7cmV0dXJue2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldFZhbHVlOmZ1bmN0aW9uKGEpe2Q9XCJcIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9XG5udWxsO2RlbGV0ZSBhW2JdfX19fWZ1bmN0aW9uIFZhKGEpe2EuX3ZhbHVlVHJhY2tlcnx8KGEuX3ZhbHVlVHJhY2tlcj1VYShhKSl9ZnVuY3Rpb24gV2EoYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9YS5fdmFsdWVUcmFja2VyO2lmKCFiKXJldHVybiEwO3ZhciBjPWIuZ2V0VmFsdWUoKTt2YXIgZD1cIlwiO2EmJihkPVRhKGEpP2EuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6YS52YWx1ZSk7YT1kO3JldHVybiBhIT09Yz8oYi5zZXRWYWx1ZShhKSwhMCk6ITF9ZnVuY3Rpb24gWGEoYSl7YT1hfHwoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApO2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVudHx8YS5ib2R5fWNhdGNoKGIpe3JldHVybiBhLmJvZHl9fVxuZnVuY3Rpb24gWWEoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIEEoe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIFphKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU/XCJcIjpiLmRlZmF1bHRWYWx1ZSxkPW51bGwhPWIuY2hlY2tlZD9iLmNoZWNrZWQ6Yi5kZWZhdWx0Q2hlY2tlZDtjPVNhKG51bGwhPWIudmFsdWU/Yi52YWx1ZTpjKTthLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmQsaW5pdGlhbFZhbHVlOmMsY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT1iLnR5cGV8fFwicmFkaW9cIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gYWIoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZ0YShhLFwiY2hlY2tlZFwiLGIsITEpfVxuZnVuY3Rpb24gYmIoYSxiKXthYihhLGIpO3ZhciBjPVNhKGIudmFsdWUpLGQ9Yi50eXBlO2lmKG51bGwhPWMpaWYoXCJudW1iZXJcIj09PWQpe2lmKDA9PT1jJiZcIlwiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPVwiXCIrY31lbHNlIGEudmFsdWUhPT1cIlwiK2MmJihhLnZhbHVlPVwiXCIrYyk7ZWxzZSBpZihcInN1Ym1pdFwiPT09ZHx8XCJyZXNldFwiPT09ZCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP2NiKGEsYi50eXBlLGMpOmIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJmNiKGEsYi50eXBlLFNhKGIuZGVmYXVsdFZhbHVlKSk7bnVsbD09Yi5jaGVja2VkJiZudWxsIT1iLmRlZmF1bHRDaGVja2VkJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIWIuZGVmYXVsdENoZWNrZWQpfVxuZnVuY3Rpb24gZGIoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIGQ9Yi50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PWQmJlwicmVzZXRcIiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7Y3x8Yj09PWEudmFsdWV8fChhLnZhbHVlPWIpO2EuZGVmYXVsdFZhbHVlPWJ9Yz1hLm5hbWU7XCJcIiE9PWMmJihhLm5hbWU9XCJcIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDtcIlwiIT09YyYmKGEubmFtZT1jKX1cbmZ1bmN0aW9uIGNiKGEsYixjKXtpZihcIm51bWJlclwiIT09Ynx8WGEoYS5vd25lckRvY3VtZW50KSE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6YS5kZWZhdWx0VmFsdWUhPT1cIlwiK2MmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2MpfXZhciBlYj1BcnJheS5pc0FycmF5O1xuZnVuY3Rpb24gZmIoYSxiLGMsZCl7YT1hLm9wdGlvbnM7aWYoYil7Yj17fTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyliW1wiJFwiK2NbZV1dPSEwO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZT1iLmhhc093blByb3BlcnR5KFwiJFwiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz1cIlwiK1NhKGMpO2I9bnVsbDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtpZihhW2VdLnZhbHVlPT09Yyl7YVtlXS5zZWxlY3RlZD0hMDtkJiYoYVtlXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09Ynx8YVtlXS5kaXNhYmxlZHx8KGI9YVtlXSl9bnVsbCE9PWImJihiLnNlbGVjdGVkPSEwKX19XG5mdW5jdGlvbiBnYihhLGIpe2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IocCg5MSkpO3JldHVybiBBKHt9LGIse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOlwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIGhiKGEsYil7dmFyIGM9Yi52YWx1ZTtpZihudWxsPT1jKXtjPWIuY2hpbGRyZW47Yj1iLmRlZmF1bHRWYWx1ZTtpZihudWxsIT1jKXtpZihudWxsIT1iKXRocm93IEVycm9yKHAoOTIpKTtpZihlYihjKSl7aWYoMTxjLmxlbmd0aCl0aHJvdyBFcnJvcihwKDkzKSk7Yz1jWzBdfWI9Y31udWxsPT1iJiYoYj1cIlwiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6U2EoYyl9fVxuZnVuY3Rpb24gaWIoYSxiKXt2YXIgYz1TYShiLnZhbHVlKSxkPVNhKGIuZGVmYXVsdFZhbHVlKTtudWxsIT1jJiYoYz1cIlwiK2MsYyE9PWEudmFsdWUmJihhLnZhbHVlPWMpLG51bGw9PWIuZGVmYXVsdFZhbHVlJiZhLmRlZmF1bHRWYWx1ZSE9PWMmJihhLmRlZmF1bHRWYWx1ZT1jKSk7bnVsbCE9ZCYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrZCl9ZnVuY3Rpb24gamIoYSl7dmFyIGI9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmXCJcIiE9PWImJm51bGwhPT1iJiYoYS52YWx1ZT1iKX1mdW5jdGlvbiBrYihhKXtzd2l0Y2goYSl7Y2FzZSBcInN2Z1wiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtjYXNlIFwibWF0aFwiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO2RlZmF1bHQ6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJ9fVxuZnVuY3Rpb24gbGIoYSxiKXtyZXR1cm4gbnVsbD09YXx8XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP2tiKGIpOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWEmJlwiZm9yZWlnbk9iamVjdFwiPT09Yj9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjphfVxudmFyIG1iLG5iPWZ1bmN0aW9uKGEpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGIsYyxkLGUpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGEoYixjLGQsZSl9KX06YX0oZnVuY3Rpb24oYSxiKXtpZihcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIhPT1hLm5hbWVzcGFjZVVSSXx8XCJpbm5lckhUTUxcImluIGEpYS5pbm5lckhUTUw9YjtlbHNle21iPW1ifHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO21iLmlubmVySFRNTD1cIjxzdmc+XCIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKStcIjwvc3ZnPlwiO2ZvcihiPW1iLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5maXJzdENoaWxkKX19KTtcbmZ1bmN0aW9uIG9iKGEsYil7aWYoYil7dmFyIGM9YS5maXJzdENoaWxkO2lmKGMmJmM9PT1hLmxhc3RDaGlsZCYmMz09PWMubm9kZVR5cGUpe2Mubm9kZVZhbHVlPWI7cmV0dXJufX1hLnRleHRDb250ZW50PWJ9XG52YXIgcGI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCxcbnpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0scWI9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO09iamVjdC5rZXlzKHBiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3FiLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7cGJbYl09cGJbYV19KX0pO2Z1bmN0aW9uIHJiKGEsYixjKXtyZXR1cm4gbnVsbD09Ynx8XCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJcIj09PWI/XCJcIjpjfHxcIm51bWJlclwiIT09dHlwZW9mIGJ8fDA9PT1ifHxwYi5oYXNPd25Qcm9wZXJ0eShhKSYmcGJbYV0/KFwiXCIrYikudHJpbSgpOmIrXCJweFwifVxuZnVuY3Rpb24gc2IoYSxiKXthPWEuc3R5bGU7Zm9yKHZhciBjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9MD09PWMuaW5kZXhPZihcIi0tXCIpLGU9cmIoYyxiW2NdLGQpO1wiZmxvYXRcIj09PWMmJihjPVwiY3NzRmxvYXRcIik7ZD9hLnNldFByb3BlcnR5KGMsZSk6YVtjXT1lfX12YXIgdGI9QSh7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtcbmZ1bmN0aW9uIHViKGEsYil7aWYoYil7aWYodGJbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDEzNyxhKSk7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl7aWYobnVsbCE9Yi5jaGlsZHJlbil0aHJvdyBFcnJvcihwKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfHwhKFwiX19odG1sXCJpbiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDYxKSk7fWlmKG51bGwhPWIuc3R5bGUmJlwib2JqZWN0XCIhPT10eXBlb2YgYi5zdHlsZSl0aHJvdyBFcnJvcihwKDYyKSk7fX1cbmZ1bmN0aW9uIHZiKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoXCItXCIpKXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYi5pcztzd2l0Y2goYSl7Y2FzZSBcImFubm90YXRpb24teG1sXCI6Y2FzZSBcImNvbG9yLXByb2ZpbGVcIjpjYXNlIFwiZm9udC1mYWNlXCI6Y2FzZSBcImZvbnQtZmFjZS1zcmNcIjpjYXNlIFwiZm9udC1mYWNlLXVyaVwiOmNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgd2I9bnVsbDtmdW5jdGlvbiB4YihhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fHdpbmRvdzthLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoYT1hLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KTtyZXR1cm4gMz09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmF9dmFyIHliPW51bGwsemI9bnVsbCxBYj1udWxsO1xuZnVuY3Rpb24gQmIoYSl7aWYoYT1DYihhKSl7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIHliKXRocm93IEVycm9yKHAoMjgwKSk7dmFyIGI9YS5zdGF0ZU5vZGU7YiYmKGI9RGIoYikseWIoYS5zdGF0ZU5vZGUsYS50eXBlLGIpKX19ZnVuY3Rpb24gRWIoYSl7emI/QWI/QWIucHVzaChhKTpBYj1bYV06emI9YX1mdW5jdGlvbiBGYigpe2lmKHpiKXt2YXIgYT16YixiPUFiO0FiPXpiPW51bGw7QmIoYSk7aWYoYilmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKUJiKGJbYV0pfX1mdW5jdGlvbiBHYihhLGIpe3JldHVybiBhKGIpfWZ1bmN0aW9uIEhiKCl7fXZhciBJYj0hMTtmdW5jdGlvbiBKYihhLGIsYyl7aWYoSWIpcmV0dXJuIGEoYixjKTtJYj0hMDt0cnl7cmV0dXJuIEdiKGEsYixjKX1maW5hbGx5e2lmKEliPSExLG51bGwhPT16Ynx8bnVsbCE9PUFiKUhiKCksRmIoKX19XG5mdW5jdGlvbiBLYihhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKG51bGw9PT1jKXJldHVybiBudWxsO3ZhciBkPURiKGMpO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2M9ZFtiXTthOnN3aXRjaChiKXtjYXNlIFwib25DbGlja1wiOmNhc2UgXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VEb3duXCI6Y2FzZSBcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlTW92ZVwiOmNhc2UgXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZVVwXCI6Y2FzZSBcIm9uTW91c2VVcENhcHR1cmVcIjpjYXNlIFwib25Nb3VzZUVudGVyXCI6KGQ9IWQuZGlzYWJsZWQpfHwoYT1hLnR5cGUsZD0hKFwiYnV0dG9uXCI9PT1hfHxcImlucHV0XCI9PT1hfHxcInNlbGVjdFwiPT09YXx8XCJ0ZXh0YXJlYVwiPT09YSkpO2E9IWQ7YnJlYWsgYTtkZWZhdWx0OmE9ITF9aWYoYSlyZXR1cm4gbnVsbDtpZihjJiZcImZ1bmN0aW9uXCIhPT1cbnR5cGVvZiBjKXRocm93IEVycm9yKHAoMjMxLGIsdHlwZW9mIGMpKTtyZXR1cm4gY312YXIgTGI9ITE7aWYoaWEpdHJ5e3ZhciBNYj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTWIsXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe0xiPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYil9Y2F0Y2goYSl7TGI9ITF9ZnVuY3Rpb24gTmIoYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBsPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTt0cnl7Yi5hcHBseShjLGwpfWNhdGNoKG0pe3RoaXMub25FcnJvcihtKX19dmFyIE9iPSExLFBiPW51bGwsUWI9ITEsUmI9bnVsbCxTYj17b25FcnJvcjpmdW5jdGlvbihhKXtPYj0hMDtQYj1hfX07ZnVuY3Rpb24gVGIoYSxiLGMsZCxlLGYsZyxoLGspe09iPSExO1BiPW51bGw7TmIuYXBwbHkoU2IsYXJndW1lbnRzKX1cbmZ1bmN0aW9uIFViKGEsYixjLGQsZSxmLGcsaCxrKXtUYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoT2Ipe2lmKE9iKXt2YXIgbD1QYjtPYj0hMTtQYj1udWxsfWVsc2UgdGhyb3cgRXJyb3IocCgxOTgpKTtRYnx8KFFiPSEwLFJiPWwpfX1mdW5jdGlvbiBWYihhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZmxhZ3MmNDA5OCkmJihjPWIucmV0dXJuKSxhPWIucmV0dXJuO3doaWxlKGEpfXJldHVybiAzPT09Yi50YWc/YzpudWxsfWZ1bmN0aW9uIFdiKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09YiYmKGE9YS5hbHRlcm5hdGUsbnVsbCE9PWEmJihiPWEubWVtb2l6ZWRTdGF0ZSkpO2lmKG51bGwhPT1iKXJldHVybiBiLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWGIoYSl7aWYoVmIoYSkhPT1hKXRocm93IEVycm9yKHAoMTg4KSk7fVxuZnVuY3Rpb24gWWIoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9VmIoYSk7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYiE9PWE/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gWGIoZSksYTtpZihmPT09ZClyZXR1cm4gWGIoZSksYjtmPWYuc2libGluZ310aHJvdyBFcnJvcihwKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGc9ITEsaD1lLmNoaWxkO2g7KXtpZihoPT09Yyl7Zz0hMDtjPWU7ZD1mO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZTtjPWY7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpe2ZvcihoPWYuY2hpbGQ7aDspe2lmKGg9PT1cbmMpe2c9ITA7Yz1mO2Q9ZTticmVha31pZihoPT09ZCl7Zz0hMDtkPWY7Yz1lO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXRocm93IEVycm9yKHAoMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgRXJyb3IocCgxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBaYihhKXthPVliKGEpO3JldHVybiBudWxsIT09YT8kYihhKTpudWxsfWZ1bmN0aW9uICRiKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhO2ZvcihhPWEuY2hpbGQ7bnVsbCE9PWE7KXt2YXIgYj0kYihhKTtpZihudWxsIT09YilyZXR1cm4gYjthPWEuc2libGluZ31yZXR1cm4gbnVsbH1cbnZhciBhYz1jYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGJjPWNhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLGNjPWNhLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGRjPWNhLnVuc3RhYmxlX3JlcXVlc3RQYWludCxCPWNhLnVuc3RhYmxlX25vdyxlYz1jYS51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxmYz1jYS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxnYz1jYS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxoYz1jYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxpYz1jYS51bnN0YWJsZV9Mb3dQcmlvcml0eSxqYz1jYS51bnN0YWJsZV9JZGxlUHJpb3JpdHksa2M9bnVsbCxsYz1udWxsO2Z1bmN0aW9uIG1jKGEpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclJvb3QpdHJ5e2xjLm9uQ29tbWl0RmliZXJSb290KGtjLGEsdm9pZCAwLDEyOD09PShhLmN1cnJlbnQuZmxhZ3MmMTI4KSl9Y2F0Y2goYil7fX1cbnZhciBvYz1NYXRoLmNsejMyP01hdGguY2x6MzI6bmMscGM9TWF0aC5sb2cscWM9TWF0aC5MTjI7ZnVuY3Rpb24gbmMoYSl7YT4+Pj0wO3JldHVybiAwPT09YT8zMjozMS0ocGMoYSkvcWN8MCl8MH12YXIgcmM9NjQsc2M9NDE5NDMwNDtcbmZ1bmN0aW9uIHRjKGEpe3N3aXRjaChhJi1hKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYSY0MTk0MjQwO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuIGEmMTMwMDIzNDI0O2Nhc2UgMTM0MjE3NzI4OnJldHVybiAxMzQyMTc3Mjg7Y2FzZSAyNjg0MzU0NTY6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlIDUzNjg3MDkxMjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMTA3Mzc0MTgyNDpyZXR1cm4gMTA3Mzc0MTgyNDtcbmRlZmF1bHQ6cmV0dXJuIGF9fWZ1bmN0aW9uIHVjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXM7aWYoMD09PWMpcmV0dXJuIDA7dmFyIGQ9MCxlPWEuc3VzcGVuZGVkTGFuZXMsZj1hLnBpbmdlZExhbmVzLGc9YyYyNjg0MzU0NTU7aWYoMCE9PWcpe3ZhciBoPWcmfmU7MCE9PWg/ZD10YyhoKTooZiY9ZywwIT09ZiYmKGQ9dGMoZikpKX1lbHNlIGc9YyZ+ZSwwIT09Zz9kPXRjKGcpOjAhPT1mJiYoZD10YyhmKSk7aWYoMD09PWQpcmV0dXJuIDA7aWYoMCE9PWImJmIhPT1kJiYwPT09KGImZSkmJihlPWQmLWQsZj1iJi1iLGU+PWZ8fDE2PT09ZSYmMCE9PShmJjQxOTQyNDApKSlyZXR1cm4gYjswIT09KGQmNCkmJihkfD1jJjE2KTtiPWEuZW50YW5nbGVkTGFuZXM7aWYoMCE9PWIpZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGImPWQ7MDxiOyljPTMxLW9jKGIpLGU9MTw8YyxkfD1hW2NdLGImPX5lO3JldHVybiBkfVxuZnVuY3Rpb24gdmMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIGIrMjUwO2Nhc2UgODpjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYis1RTM7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4tMTtjYXNlIDEzNDIxNzcyODpjYXNlIDI2ODQzNTQ1NjpjYXNlIDUzNjg3MDkxMjpjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuLTE7ZGVmYXVsdDpyZXR1cm4tMX19XG5mdW5jdGlvbiB3YyhhLGIpe2Zvcih2YXIgYz1hLnN1c3BlbmRlZExhbmVzLGQ9YS5waW5nZWRMYW5lcyxlPWEuZXhwaXJhdGlvblRpbWVzLGY9YS5wZW5kaW5nTGFuZXM7MDxmOyl7dmFyIGc9MzEtb2MoZiksaD0xPDxnLGs9ZVtnXTtpZigtMT09PWspe2lmKDA9PT0oaCZjKXx8MCE9PShoJmQpKWVbZ109dmMoaCxiKX1lbHNlIGs8PWImJihhLmV4cGlyZWRMYW5lc3w9aCk7ZiY9fmh9fWZ1bmN0aW9uIHhjKGEpe2E9YS5wZW5kaW5nTGFuZXMmLTEwNzM3NDE4MjU7cmV0dXJuIDAhPT1hP2E6YSYxMDczNzQxODI0PzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiB5Yygpe3ZhciBhPXJjO3JjPDw9MTswPT09KHJjJjQxOTQyNDApJiYocmM9NjQpO3JldHVybiBhfWZ1bmN0aW9uIHpjKGEpe2Zvcih2YXIgYj1bXSxjPTA7MzE+YztjKyspYi5wdXNoKGEpO3JldHVybiBifVxuZnVuY3Rpb24gQWMoYSxiLGMpe2EucGVuZGluZ0xhbmVzfD1iOzUzNjg3MDkxMiE9PWImJihhLnN1c3BlbmRlZExhbmVzPTAsYS5waW5nZWRMYW5lcz0wKTthPWEuZXZlbnRUaW1lcztiPTMxLW9jKGIpO2FbYl09Y31mdW5jdGlvbiBCYyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzJn5iO2EucGVuZGluZ0xhbmVzPWI7YS5zdXNwZW5kZWRMYW5lcz0wO2EucGluZ2VkTGFuZXM9MDthLmV4cGlyZWRMYW5lcyY9YjthLm11dGFibGVSZWFkTGFuZXMmPWI7YS5lbnRhbmdsZWRMYW5lcyY9YjtiPWEuZW50YW5nbGVtZW50czt2YXIgZD1hLmV2ZW50VGltZXM7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxjOyl7dmFyIGU9MzEtb2MoYyksZj0xPDxlO2JbZV09MDtkW2VdPS0xO2FbZV09LTE7YyY9fmZ9fVxuZnVuY3Rpb24gQ2MoYSxiKXt2YXIgYz1hLmVudGFuZ2xlZExhbmVzfD1iO2ZvcihhPWEuZW50YW5nbGVtZW50cztjOyl7dmFyIGQ9MzEtb2MoYyksZT0xPDxkO2UmYnxhW2RdJmImJihhW2RdfD1iKTtjJj1+ZX19dmFyIEM9MDtmdW5jdGlvbiBEYyhhKXthJj0tYTtyZXR1cm4gMTxhPzQ8YT8wIT09KGEmMjY4NDM1NDU1KT8xNjo1MzY4NzA5MTI6NDoxfXZhciBFYyxGYyxHYyxIYyxJYyxKYz0hMSxLYz1bXSxMYz1udWxsLE1jPW51bGwsTmM9bnVsbCxPYz1uZXcgTWFwLFBjPW5ldyBNYXAsUWM9W10sUmM9XCJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0XCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gU2MoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpMYz1udWxsO2JyZWFrO2Nhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6TWM9bnVsbDticmVhaztjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcIm1vdXNlb3V0XCI6TmM9bnVsbDticmVhaztjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcm91dFwiOk9jLmRlbGV0ZShiLnBvaW50ZXJJZCk7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOlBjLmRlbGV0ZShiLnBvaW50ZXJJZCl9fVxuZnVuY3Rpb24gVGMoYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hfHxhLm5hdGl2ZUV2ZW50IT09ZilyZXR1cm4gYT17YmxvY2tlZE9uOmIsZG9tRXZlbnROYW1lOmMsZXZlbnRTeXN0ZW1GbGFnczpkLG5hdGl2ZUV2ZW50OmYsdGFyZ2V0Q29udGFpbmVyczpbZV19LG51bGwhPT1iJiYoYj1DYihiKSxudWxsIT09YiYmRmMoYikpLGE7YS5ldmVudFN5c3RlbUZsYWdzfD1kO2I9YS50YXJnZXRDb250YWluZXJzO251bGwhPT1lJiYtMT09PWIuaW5kZXhPZihlKSYmYi5wdXNoKGUpO3JldHVybiBhfVxuZnVuY3Rpb24gVWMoYSxiLGMsZCxlKXtzd2l0Y2goYil7Y2FzZSBcImZvY3VzaW5cIjpyZXR1cm4gTGM9VGMoTGMsYSxiLGMsZCxlKSwhMDtjYXNlIFwiZHJhZ2VudGVyXCI6cmV0dXJuIE1jPVRjKE1jLGEsYixjLGQsZSksITA7Y2FzZSBcIm1vdXNlb3ZlclwiOnJldHVybiBOYz1UYyhOYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJwb2ludGVyb3ZlclwiOnZhciBmPWUucG9pbnRlcklkO09jLnNldChmLFRjKE9jLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gZj1lLnBvaW50ZXJJZCxQYy5zZXQoZixUYyhQYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9XG5mdW5jdGlvbiBWYyhhKXt2YXIgYj1XYyhhLnRhcmdldCk7aWYobnVsbCE9PWIpe3ZhciBjPVZiKGIpO2lmKG51bGwhPT1jKWlmKGI9Yy50YWcsMTM9PT1iKXtpZihiPVdiKGMpLG51bGwhPT1iKXthLmJsb2NrZWRPbj1iO0ljKGEucHJpb3JpdHksZnVuY3Rpb24oKXtHYyhjKX0pO3JldHVybn19ZWxzZSBpZigzPT09YiYmYy5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7YS5ibG9ja2VkT249Mz09PWMudGFnP2Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fWEuYmxvY2tlZE9uPW51bGx9XG5mdW5jdGlvbiBYYyhhKXtpZihudWxsIT09YS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBiPWEudGFyZ2V0Q29udGFpbmVyczswPGIubGVuZ3RoOyl7dmFyIGM9WWMoYS5kb21FdmVudE5hbWUsYS5ldmVudFN5c3RlbUZsYWdzLGJbMF0sYS5uYXRpdmVFdmVudCk7aWYobnVsbD09PWMpe2M9YS5uYXRpdmVFdmVudDt2YXIgZD1uZXcgYy5jb25zdHJ1Y3RvcihjLnR5cGUsYyk7d2I9ZDtjLnRhcmdldC5kaXNwYXRjaEV2ZW50KGQpO3diPW51bGx9ZWxzZSByZXR1cm4gYj1DYihjKSxudWxsIT09YiYmRmMoYiksYS5ibG9ja2VkT249YywhMTtiLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gWmMoYSxiLGMpe1hjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiAkYygpe0pjPSExO251bGwhPT1MYyYmWGMoTGMpJiYoTGM9bnVsbCk7bnVsbCE9PU1jJiZYYyhNYykmJihNYz1udWxsKTtudWxsIT09TmMmJlhjKE5jKSYmKE5jPW51bGwpO09jLmZvckVhY2goWmMpO1BjLmZvckVhY2goWmMpfVxuZnVuY3Rpb24gYWQoYSxiKXthLmJsb2NrZWRPbj09PWImJihhLmJsb2NrZWRPbj1udWxsLEpjfHwoSmM9ITAsY2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhjYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSwkYykpKX1cbmZ1bmN0aW9uIGJkKGEpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIGFkKGIsYSl9aWYoMDxLYy5sZW5ndGgpe2FkKEtjWzBdLGEpO2Zvcih2YXIgYz0xO2M8S2MubGVuZ3RoO2MrKyl7dmFyIGQ9S2NbY107ZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCl9fW51bGwhPT1MYyYmYWQoTGMsYSk7bnVsbCE9PU1jJiZhZChNYyxhKTtudWxsIT09TmMmJmFkKE5jLGEpO09jLmZvckVhY2goYik7UGMuZm9yRWFjaChiKTtmb3IoYz0wO2M8UWMubGVuZ3RoO2MrKylkPVFjW2NdLGQuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDxRYy5sZW5ndGgmJihjPVFjWzBdLG51bGw9PT1jLmJsb2NrZWRPbik7KVZjKGMpLG51bGw9PT1jLmJsb2NrZWRPbiYmUWMuc2hpZnQoKX12YXIgY2Q9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsZGQ9ITA7XG5mdW5jdGlvbiBlZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9MSxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fWZ1bmN0aW9uIGdkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz00LGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19XG5mdW5jdGlvbiBmZChhLGIsYyxkKXtpZihkZCl7dmFyIGU9WWMoYSxiLGMsZCk7aWYobnVsbD09PWUpaGQoYSxiLGQsaWQsYyksU2MoYSxkKTtlbHNlIGlmKFVjKGUsYSxiLGMsZCkpZC5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKFNjKGEsZCksYiY0JiYtMTxSYy5pbmRleE9mKGEpKXtmb3IoO251bGwhPT1lOyl7dmFyIGY9Q2IoZSk7bnVsbCE9PWYmJkVjKGYpO2Y9WWMoYSxiLGMsZCk7bnVsbD09PWYmJmhkKGEsYixkLGlkLGMpO2lmKGY9PT1lKWJyZWFrO2U9Zn1udWxsIT09ZSYmZC5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIGhkKGEsYixkLG51bGwsYyl9fXZhciBpZD1udWxsO1xuZnVuY3Rpb24gWWMoYSxiLGMsZCl7aWQ9bnVsbDthPXhiKGQpO2E9V2MoYSk7aWYobnVsbCE9PWEpaWYoYj1WYihhKSxudWxsPT09YilhPW51bGw7ZWxzZSBpZihjPWIudGFnLDEzPT09Yyl7YT1XYihiKTtpZihudWxsIT09YSlyZXR1cm4gYTthPW51bGx9ZWxzZSBpZigzPT09Yyl7aWYoYi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PWIudGFnP2Iuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDthPW51bGx9ZWxzZSBiIT09YSYmKGE9bnVsbCk7aWQ9YTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGpkKGEpe3N3aXRjaChhKXtjYXNlIFwiY2FuY2VsXCI6Y2FzZSBcImNsaWNrXCI6Y2FzZSBcImNsb3NlXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjpjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJpbnZhbGlkXCI6Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwia2V5dXBcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwicGFzdGVcIjpjYXNlIFwicGF1c2VcIjpjYXNlIFwicGxheVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOmNhc2UgXCJyYXRlY2hhbmdlXCI6Y2FzZSBcInJlc2V0XCI6Y2FzZSBcInJlc2l6ZVwiOmNhc2UgXCJzZWVrZWRcIjpjYXNlIFwic3VibWl0XCI6Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjpjYXNlIFwidm9sdW1lY2hhbmdlXCI6Y2FzZSBcImNoYW5nZVwiOmNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjpjYXNlIFwidGV4dElucHV0XCI6Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjpjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjpjYXNlIFwiYmVmb3JlaW5wdXRcIjpjYXNlIFwiYmx1clwiOmNhc2UgXCJmdWxsc2NyZWVuY2hhbmdlXCI6Y2FzZSBcImZvY3VzXCI6Y2FzZSBcImhhc2hjaGFuZ2VcIjpjYXNlIFwicG9wc3RhdGVcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInNlbGVjdHN0YXJ0XCI6cmV0dXJuIDE7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwic2Nyb2xsXCI6Y2FzZSBcInRvZ2dsZVwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwid2hlZWxcIjpjYXNlIFwibW91c2VlbnRlclwiOmNhc2UgXCJtb3VzZWxlYXZlXCI6Y2FzZSBcInBvaW50ZXJlbnRlclwiOmNhc2UgXCJwb2ludGVybGVhdmVcIjpyZXR1cm4gNDtcbmNhc2UgXCJtZXNzYWdlXCI6c3dpdGNoKGVjKCkpe2Nhc2UgZmM6cmV0dXJuIDE7Y2FzZSBnYzpyZXR1cm4gNDtjYXNlIGhjOmNhc2UgaWM6cmV0dXJuIDE2O2Nhc2UgamM6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIGtkPW51bGwsbGQ9bnVsbCxtZD1udWxsO2Z1bmN0aW9uIG5kKCl7aWYobWQpcmV0dXJuIG1kO3ZhciBhLGI9bGQsYz1iLmxlbmd0aCxkLGU9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsZj1lLmxlbmd0aDtmb3IoYT0wO2E8YyYmYlthXT09PWVbYV07YSsrKTt2YXIgZz1jLWE7Zm9yKGQ9MTtkPD1nJiZiW2MtZF09PT1lW2YtZF07ZCsrKTtyZXR1cm4gbWQ9ZS5zbGljZShhLDE8ZD8xLWQ6dm9pZCAwKX1cbmZ1bmN0aW9uIG9kKGEpe3ZhciBiPWEua2V5Q29kZTtcImNoYXJDb2RlXCJpbiBhPyhhPWEuY2hhckNvZGUsMD09PWEmJjEzPT09YiYmKGE9MTMpKTphPWI7MTA9PT1hJiYoYT0xMyk7cmV0dXJuIDMyPD1hfHwxMz09PWE/YTowfWZ1bmN0aW9uIHBkKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWQoKXtyZXR1cm4hMX1cbmZ1bmN0aW9uIHJkKGEpe2Z1bmN0aW9uIGIoYixkLGUsZixnKXt0aGlzLl9yZWFjdE5hbWU9Yjt0aGlzLl90YXJnZXRJbnN0PWU7dGhpcy50eXBlPWQ7dGhpcy5uYXRpdmVFdmVudD1mO3RoaXMudGFyZ2V0PWc7dGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9YVtjXSx0aGlzW2NdPWI/YihmKTpmW2NdKTt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9Zi5kZWZhdWx0UHJldmVudGVkP2YuZGVmYXVsdFByZXZlbnRlZDohMT09PWYucmV0dXJuVmFsdWUpP3BkOnFkO3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cWQ7cmV0dXJuIHRoaXN9QShiLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5yZXR1cm5WYWx1ZSYmXG4oYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cGQpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT09dHlwZW9mIGEuY2FuY2VsQnViYmxlJiYoYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cGQpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6cGR9KTtyZXR1cm4gYn1cbnZhciBzZD17ZXZlbnRQaGFzZTowLGJ1YmJsZXM6MCxjYW5jZWxhYmxlOjAsdGltZVN0YW1wOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDowLGlzVHJ1c3RlZDowfSx0ZD1yZChzZCksdWQ9QSh7fSxzZCx7dmlldzowLGRldGFpbDowfSksdmQ9cmQodWQpLHdkLHhkLHlkLEFkPUEoe30sdWQse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLHBhZ2VZOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLGdldE1vZGlmaWVyU3RhdGU6emQsYnV0dG9uOjAsYnV0dG9uczowLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWEucmVsYXRlZFRhcmdldD9hLmZyb21FbGVtZW50PT09YS5zcmNFbGVtZW50P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ6YS5yZWxhdGVkVGFyZ2V0fSxtb3ZlbWVudFg6ZnVuY3Rpb24oYSl7aWYoXCJtb3ZlbWVudFhcImluXG5hKXJldHVybiBhLm1vdmVtZW50WDthIT09eWQmJih5ZCYmXCJtb3VzZW1vdmVcIj09PWEudHlwZT8od2Q9YS5zY3JlZW5YLXlkLnNjcmVlblgseGQ9YS5zY3JlZW5ZLXlkLnNjcmVlblkpOnhkPXdkPTAseWQ9YSk7cmV0dXJuIHdkfSxtb3ZlbWVudFk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJtb3ZlbWVudFlcImluIGE/YS5tb3ZlbWVudFk6eGR9fSksQmQ9cmQoQWQpLENkPUEoe30sQWQse2RhdGFUcmFuc2ZlcjowfSksRGQ9cmQoQ2QpLEVkPUEoe30sdWQse3JlbGF0ZWRUYXJnZXQ6MH0pLEZkPXJkKEVkKSxHZD1BKHt9LHNkLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxIZD1yZChHZCksSWQ9QSh7fSxzZCx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGE/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLEpkPXJkKElkKSxLZD1BKHt9LHNkLHtkYXRhOjB9KSxMZD1yZChLZCksTWQ9e0VzYzpcIkVzY2FwZVwiLFxuU3BhY2ViYXI6XCIgXCIsTGVmdDpcIkFycm93TGVmdFwiLFVwOlwiQXJyb3dVcFwiLFJpZ2h0OlwiQXJyb3dSaWdodFwiLERvd246XCJBcnJvd0Rvd25cIixEZWw6XCJEZWxldGVcIixXaW46XCJPU1wiLE1lbnU6XCJDb250ZXh0TWVudVwiLEFwcHM6XCJDb250ZXh0TWVudVwiLFNjcm9sbDpcIlNjcm9sbExvY2tcIixNb3pQcmludGFibGVLZXk6XCJVbmlkZW50aWZpZWRcIn0sTmQ9ezg6XCJCYWNrc3BhY2VcIiw5OlwiVGFiXCIsMTI6XCJDbGVhclwiLDEzOlwiRW50ZXJcIiwxNjpcIlNoaWZ0XCIsMTc6XCJDb250cm9sXCIsMTg6XCJBbHRcIiwxOTpcIlBhdXNlXCIsMjA6XCJDYXBzTG9ja1wiLDI3OlwiRXNjYXBlXCIsMzI6XCIgXCIsMzM6XCJQYWdlVXBcIiwzNDpcIlBhZ2VEb3duXCIsMzU6XCJFbmRcIiwzNjpcIkhvbWVcIiwzNzpcIkFycm93TGVmdFwiLDM4OlwiQXJyb3dVcFwiLDM5OlwiQXJyb3dSaWdodFwiLDQwOlwiQXJyb3dEb3duXCIsNDU6XCJJbnNlcnRcIiw0NjpcIkRlbGV0ZVwiLDExMjpcIkYxXCIsMTEzOlwiRjJcIiwxMTQ6XCJGM1wiLDExNTpcIkY0XCIsMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsXG4xMTk6XCJGOFwiLDEyMDpcIkY5XCIsMTIxOlwiRjEwXCIsMTIyOlwiRjExXCIsMTIzOlwiRjEyXCIsMTQ0OlwiTnVtTG9ja1wiLDE0NTpcIlNjcm9sbExvY2tcIiwyMjQ6XCJNZXRhXCJ9LE9kPXtBbHQ6XCJhbHRLZXlcIixDb250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiBQZChhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9kW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gemQoKXtyZXR1cm4gUGR9XG52YXIgUWQ9QSh7fSx1ZCx7a2V5OmZ1bmN0aW9uKGEpe2lmKGEua2V5KXt2YXIgYj1NZFthLmtleV18fGEua2V5O2lmKFwiVW5pZGVudGlmaWVkXCIhPT1iKXJldHVybiBifXJldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT8oYT1vZChhKSwxMz09PWE/XCJFbnRlclwiOlN0cmluZy5mcm9tQ2hhckNvZGUoYSkpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/TmRbYS5rZXlDb2RlXXx8XCJVbmlkZW50aWZpZWRcIjpcIlwifSxjb2RlOjAsbG9jYXRpb246MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAscmVwZWF0OjAsbG9jYWxlOjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxjaGFyQ29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/b2QoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1cbmEudHlwZT9vZChhKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLFJkPXJkKFFkKSxTZD1BKHt9LEFkLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pLFRkPXJkKFNkKSxVZD1BKHt9LHVkLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6emR9KSxWZD1yZChVZCksV2Q9QSh7fSxzZCx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxYZD1yZChXZCksWWQ9QSh7fSxBZCx7ZGVsdGFYOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFYXCJpbiBhP2EuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluIGE/LWEud2hlZWxEZWx0YVg6MH0sXG5kZWx0YVk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVlcImluIGE/YS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gYT8tYS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGE/LWEud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLFpkPXJkKFlkKSwkZD1bOSwxMywyNywzMl0sYWU9aWEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LGJlPW51bGw7aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKGJlPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGNlPWlhJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYhYmUsZGU9aWEmJighYWV8fGJlJiY4PGJlJiYxMT49YmUpLGVlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLGZlPSExO1xuZnVuY3Rpb24gZ2UoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImtleXVwXCI6cmV0dXJuLTEhPT0kZC5pbmRleE9mKGIua2V5Q29kZSk7Y2FzZSBcImtleWRvd25cIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwiZm9jdXNvdXRcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBoZShhKXthPWEuZGV0YWlsO3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmXCJkYXRhXCJpbiBhP2EuZGF0YTpudWxsfXZhciBpZT0hMTtmdW5jdGlvbiBqZShhLGIpe3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gaGUoYik7Y2FzZSBcImtleXByZXNzXCI6aWYoMzIhPT1iLndoaWNoKXJldHVybiBudWxsO2ZlPSEwO3JldHVybiBlZTtjYXNlIFwidGV4dElucHV0XCI6cmV0dXJuIGE9Yi5kYXRhLGE9PT1lZSYmZmU/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxuZnVuY3Rpb24ga2UoYSxiKXtpZihpZSlyZXR1cm5cImNvbXBvc2l0aW9uZW5kXCI9PT1hfHwhYWUmJmdlKGEsYik/KGE9bmQoKSxtZD1sZD1rZD1udWxsLGllPSExLGEpOm51bGw7c3dpdGNoKGEpe2Nhc2UgXCJwYXN0ZVwiOnJldHVybiBudWxsO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKCEoYi5jdHJsS2V5fHxiLmFsdEtleXx8Yi5tZXRhS2V5KXx8Yi5jdHJsS2V5JiZiLmFsdEtleSl7aWYoYi5jaGFyJiYxPGIuY2hhci5sZW5ndGgpcmV0dXJuIGIuY2hhcjtpZihiLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGIud2hpY2gpfXJldHVybiBudWxsO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBkZSYmXCJrb1wiIT09Yi5sb2NhbGU/bnVsbDpiLmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG52YXIgbGU9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsXCJkYXRldGltZS1sb2NhbFwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gbWUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PWI/ISFsZVthLnR5cGVdOlwidGV4dGFyZWFcIj09PWI/ITA6ITF9ZnVuY3Rpb24gbmUoYSxiLGMsZCl7RWIoZCk7Yj1vZShiLFwib25DaGFuZ2VcIik7MDxiLmxlbmd0aCYmKGM9bmV3IHRkKFwib25DaGFuZ2VcIixcImNoYW5nZVwiLG51bGwsYyxkKSxhLnB1c2goe2V2ZW50OmMsbGlzdGVuZXJzOmJ9KSl9dmFyIHBlPW51bGwscWU9bnVsbDtmdW5jdGlvbiByZShhKXtzZShhLDApfWZ1bmN0aW9uIHRlKGEpe3ZhciBiPXVlKGEpO2lmKFdhKGIpKXJldHVybiBhfVxuZnVuY3Rpb24gdmUoYSxiKXtpZihcImNoYW5nZVwiPT09YSlyZXR1cm4gYn12YXIgd2U9ITE7aWYoaWEpe3ZhciB4ZTtpZihpYSl7dmFyIHllPVwib25pbnB1dFwiaW4gZG9jdW1lbnQ7aWYoIXllKXt2YXIgemU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt6ZS5zZXRBdHRyaWJ1dGUoXCJvbmlucHV0XCIsXCJyZXR1cm47XCIpO3llPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB6ZS5vbmlucHV0fXhlPXllfWVsc2UgeGU9ITE7d2U9eGUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gQWUoKXtwZSYmKHBlLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSxxZT1wZT1udWxsKX1mdW5jdGlvbiBCZShhKXtpZihcInZhbHVlXCI9PT1hLnByb3BlcnR5TmFtZSYmdGUocWUpKXt2YXIgYj1bXTtuZShiLHFlLGEseGIoYSkpO0piKHJlLGIpfX1cbmZ1bmN0aW9uIENlKGEsYixjKXtcImZvY3VzaW5cIj09PWE/KEFlKCkscGU9YixxZT1jLHBlLmF0dGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSk6XCJmb2N1c291dFwiPT09YSYmQWUoKX1mdW5jdGlvbiBEZShhKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09YXx8XCJrZXl1cFwiPT09YXx8XCJrZXlkb3duXCI9PT1hKXJldHVybiB0ZShxZSl9ZnVuY3Rpb24gRWUoYSxiKXtpZihcImNsaWNrXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBGZShhLGIpe2lmKFwiaW5wdXRcIj09PWF8fFwiY2hhbmdlXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBHZShhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyIEhlPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOkdlO1xuZnVuY3Rpb24gSWUoYSxiKXtpZihIZShhLGIpKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYXx8bnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYnx8bnVsbD09PWIpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksZD1PYmplY3Qua2V5cyhiKTtpZihjLmxlbmd0aCE9PWQubGVuZ3RoKXJldHVybiExO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07aWYoIWphLmNhbGwoYixlKXx8IUhlKGFbZV0sYltlXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gSmUoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfVxuZnVuY3Rpb24gS2UoYSxiKXt2YXIgYz1KZShhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD1hK2MudGV4dENvbnRlbnQubGVuZ3RoO2lmKGE8PWImJmQ+PWIpcmV0dXJue25vZGU6YyxvZmZzZXQ6Yi1hfTthPWR9YTp7Zm9yKDtjOyl7aWYoYy5uZXh0U2libGluZyl7Yz1jLm5leHRTaWJsaW5nO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGV9Yz12b2lkIDB9Yz1KZShjKX19ZnVuY3Rpb24gTGUoYSxiKXtyZXR1cm4gYSYmYj9hPT09Yj8hMDphJiYzPT09YS5ub2RlVHlwZT8hMTpiJiYzPT09Yi5ub2RlVHlwZT9MZShhLGIucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9XG5mdW5jdGlvbiBNZSgpe2Zvcih2YXIgYT13aW5kb3csYj1YYSgpO2IgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPVwic3RyaW5nXCI9PT10eXBlb2YgYi5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZCl7Yz0hMX1pZihjKWE9Yi5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7Yj1YYShhLmRvY3VtZW50KX1yZXR1cm4gYn1mdW5jdGlvbiBOZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGImJihcImlucHV0XCI9PT1iJiYoXCJ0ZXh0XCI9PT1hLnR5cGV8fFwic2VhcmNoXCI9PT1hLnR5cGV8fFwidGVsXCI9PT1hLnR5cGV8fFwidXJsXCI9PT1hLnR5cGV8fFwicGFzc3dvcmRcIj09PWEudHlwZSl8fFwidGV4dGFyZWFcIj09PWJ8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpfVxuZnVuY3Rpb24gT2UoYSl7dmFyIGI9TWUoKSxjPWEuZm9jdXNlZEVsZW0sZD1hLnNlbGVjdGlvblJhbmdlO2lmKGIhPT1jJiZjJiZjLm93bmVyRG9jdW1lbnQmJkxlKGMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYykpe2lmKG51bGwhPT1kJiZOZShjKSlpZihiPWQuc3RhcnQsYT1kLmVuZCx2b2lkIDA9PT1hJiYoYT1iKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBjKWMuc2VsZWN0aW9uU3RhcnQ9YixjLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihhLGMudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGE9KGI9Yy5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJmIuZGVmYXVsdFZpZXd8fHdpbmRvdyxhLmdldFNlbGVjdGlvbil7YT1hLmdldFNlbGVjdGlvbigpO3ZhciBlPWMudGV4dENvbnRlbnQubGVuZ3RoLGY9TWF0aC5taW4oZC5zdGFydCxlKTtkPXZvaWQgMD09PWQuZW5kP2Y6TWF0aC5taW4oZC5lbmQsZSk7IWEuZXh0ZW5kJiZmPmQmJihlPWQsZD1mLGY9ZSk7ZT1LZShjLGYpO3ZhciBnPUtlKGMsXG5kKTtlJiZnJiYoMSE9PWEucmFuZ2VDb3VudHx8YS5hbmNob3JOb2RlIT09ZS5ub2RlfHxhLmFuY2hvck9mZnNldCE9PWUub2Zmc2V0fHxhLmZvY3VzTm9kZSE9PWcubm9kZXx8YS5mb2N1c09mZnNldCE9PWcub2Zmc2V0KSYmKGI9Yi5jcmVhdGVSYW5nZSgpLGIuc2V0U3RhcnQoZS5ub2RlLGUub2Zmc2V0KSxhLnJlbW92ZUFsbFJhbmdlcygpLGY+ZD8oYS5hZGRSYW5nZShiKSxhLmV4dGVuZChnLm5vZGUsZy5vZmZzZXQpKTooYi5zZXRFbmQoZy5ub2RlLGcub2Zmc2V0KSxhLmFkZFJhbmdlKGIpKSl9Yj1bXTtmb3IoYT1jO2E9YS5wYXJlbnROb2RlOykxPT09YS5ub2RlVHlwZSYmYi5wdXNoKHtlbGVtZW50OmEsbGVmdDphLnNjcm9sbExlZnQsdG9wOmEuc2Nyb2xsVG9wfSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZm9jdXMmJmMuZm9jdXMoKTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWE9YltjXSxhLmVsZW1lbnQuc2Nyb2xsTGVmdD1hLmxlZnQsYS5lbGVtZW50LnNjcm9sbFRvcD1hLnRvcH19XG52YXIgUGU9aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxRZT1udWxsLFJlPW51bGwsU2U9bnVsbCxUZT0hMTtcbmZ1bmN0aW9uIFVlKGEsYixjKXt2YXIgZD1jLndpbmRvdz09PWM/Yy5kb2N1bWVudDo5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDtUZXx8bnVsbD09UWV8fFFlIT09WGEoZCl8fChkPVFlLFwic2VsZWN0aW9uU3RhcnRcImluIGQmJk5lKGQpP2Q9e3N0YXJ0OmQuc2VsZWN0aW9uU3RhcnQsZW5kOmQuc2VsZWN0aW9uRW5kfTooZD0oZC5vd25lckRvY3VtZW50JiZkLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCksZD17YW5jaG9yTm9kZTpkLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OmQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpkLmZvY3VzTm9kZSxmb2N1c09mZnNldDpkLmZvY3VzT2Zmc2V0fSksU2UmJkllKFNlLGQpfHwoU2U9ZCxkPW9lKFJlLFwib25TZWxlY3RcIiksMDxkLmxlbmd0aCYmKGI9bmV3IHRkKFwib25TZWxlY3RcIixcInNlbGVjdFwiLG51bGwsYixjKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmR9KSxiLnRhcmdldD1RZSkpKX1cbmZ1bmN0aW9uIFZlKGEsYil7dmFyIGM9e307Y1thLnRvTG93ZXJDYXNlKCldPWIudG9Mb3dlckNhc2UoKTtjW1wiV2Via2l0XCIrYV09XCJ3ZWJraXRcIitiO2NbXCJNb3pcIithXT1cIm1velwiK2I7cmV0dXJuIGN9dmFyIFdlPXthbmltYXRpb25lbmQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxhbmltYXRpb25zdGFydDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmVuZDpWZShcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LFhlPXt9LFllPXt9O1xuaWEmJihZZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLFwiQW5pbWF0aW9uRXZlbnRcImluIHdpbmRvd3x8KGRlbGV0ZSBXZS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLFwiVHJhbnNpdGlvbkV2ZW50XCJpbiB3aW5kb3d8fGRlbGV0ZSBXZS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO2Z1bmN0aW9uIFplKGEpe2lmKFhlW2FdKXJldHVybiBYZVthXTtpZighV2VbYV0pcmV0dXJuIGE7dmFyIGI9V2VbYV0sYztmb3IoYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykmJmMgaW4gWWUpcmV0dXJuIFhlW2FdPWJbY107cmV0dXJuIGF9dmFyICRlPVplKFwiYW5pbWF0aW9uZW5kXCIpLGFmPVplKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLGJmPVplKFwiYW5pbWF0aW9uc3RhcnRcIiksY2Y9WmUoXCJ0cmFuc2l0aW9uZW5kXCIpLGRmPW5ldyBNYXAsZWY9XCJhYm9ydCBhdXhDbGljayBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIGZmKGEsYil7ZGYuc2V0KGEsYik7ZmEoYixbYV0pfWZvcih2YXIgZ2Y9MDtnZjxlZi5sZW5ndGg7Z2YrKyl7dmFyIGhmPWVmW2dmXSxqZj1oZi50b0xvd2VyQ2FzZSgpLGtmPWhmWzBdLnRvVXBwZXJDYXNlKCkraGYuc2xpY2UoMSk7ZmYoamYsXCJvblwiK2tmKX1mZigkZSxcIm9uQW5pbWF0aW9uRW5kXCIpO2ZmKGFmLFwib25BbmltYXRpb25JdGVyYXRpb25cIik7ZmYoYmYsXCJvbkFuaW1hdGlvblN0YXJ0XCIpO2ZmKFwiZGJsY2xpY2tcIixcIm9uRG91YmxlQ2xpY2tcIik7ZmYoXCJmb2N1c2luXCIsXCJvbkZvY3VzXCIpO2ZmKFwiZm9jdXNvdXRcIixcIm9uQmx1clwiKTtmZihjZixcIm9uVHJhbnNpdGlvbkVuZFwiKTtoYShcIm9uTW91c2VFbnRlclwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Nb3VzZUxlYXZlXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvblBvaW50ZXJFbnRlclwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtcbmhhKFwib25Qb2ludGVyTGVhdmVcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7ZmEoXCJvbkNoYW5nZVwiLFwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25TZWxlY3RcIixcImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkJlZm9yZUlucHV0XCIsW1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdKTtmYShcIm9uQ29tcG9zaXRpb25FbmRcIixcImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQ29tcG9zaXRpb25TdGFydFwiLFwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7XG5mYShcIm9uQ29tcG9zaXRpb25VcGRhdGVcIixcImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTt2YXIgbGY9XCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxtZj1uZXcgU2V0KFwiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlXCIuc3BsaXQoXCIgXCIpLmNvbmNhdChsZikpO1xuZnVuY3Rpb24gbmYoYSxiLGMpe3ZhciBkPWEudHlwZXx8XCJ1bmtub3duLWV2ZW50XCI7YS5jdXJyZW50VGFyZ2V0PWM7VWIoZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1cbmZ1bmN0aW9uIHNlKGEsYil7Yj0wIT09KGImNCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1kLmV2ZW50O2Q9ZC5saXN0ZW5lcnM7YTp7dmFyIGY9dm9pZCAwO2lmKGIpZm9yKHZhciBnPWQubGVuZ3RoLTE7MDw9ZztnLS0pe3ZhciBoPWRbZ10saz1oLmluc3RhbmNlLGw9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a31lbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspe2g9ZFtnXTtrPWguaW5zdGFuY2U7bD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfX19aWYoUWIpdGhyb3cgYT1SYixRYj0hMSxSYj1udWxsLGE7fVxuZnVuY3Rpb24gRChhLGIpe3ZhciBjPWJbb2ZdO3ZvaWQgMD09PWMmJihjPWJbb2ZdPW5ldyBTZXQpO3ZhciBkPWErXCJfX2J1YmJsZVwiO2MuaGFzKGQpfHwocGYoYixhLDIsITEpLGMuYWRkKGQpKX1mdW5jdGlvbiBxZihhLGIsYyl7dmFyIGQ9MDtiJiYoZHw9NCk7cGYoYyxhLGQsYil9dmFyIHJmPVwiX3JlYWN0TGlzdGVuaW5nXCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gc2YoYSl7aWYoIWFbcmZdKXthW3JmXT0hMDtkYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1wic2VsZWN0aW9uY2hhbmdlXCIhPT1iJiYobWYuaGFzKGIpfHxxZihiLCExLGEpLHFmKGIsITAsYSkpfSk7dmFyIGI9OT09PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnQ7bnVsbD09PWJ8fGJbcmZdfHwoYltyZl09ITAscWYoXCJzZWxlY3Rpb25jaGFuZ2VcIiwhMSxiKSl9fVxuZnVuY3Rpb24gcGYoYSxiLGMsZCl7c3dpdGNoKGpkKGIpKXtjYXNlIDE6dmFyIGU9ZWQ7YnJlYWs7Y2FzZSA0OmU9Z2Q7YnJlYWs7ZGVmYXVsdDplPWZkfWM9ZS5iaW5kKG51bGwsYixjLGEpO2U9dm9pZCAwOyFMYnx8XCJ0b3VjaHN0YXJ0XCIhPT1iJiZcInRvdWNobW92ZVwiIT09YiYmXCJ3aGVlbFwiIT09Ynx8KGU9ITApO2Q/dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtjYXB0dXJlOiEwLHBhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITApOnZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7cGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSl9XG5mdW5jdGlvbiBoZChhLGIsYyxkLGUpe3ZhciBmPWQ7aWYoMD09PShiJjEpJiYwPT09KGImMikmJm51bGwhPT1kKWE6Zm9yKDs7KXtpZihudWxsPT09ZClyZXR1cm47dmFyIGc9ZC50YWc7aWYoMz09PWd8fDQ9PT1nKXt2YXIgaD1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKGg9PT1lfHw4PT09aC5ub2RlVHlwZSYmaC5wYXJlbnROb2RlPT09ZSlicmVhaztpZig0PT09Zylmb3IoZz1kLnJldHVybjtudWxsIT09Zzspe3ZhciBrPWcudGFnO2lmKDM9PT1rfHw0PT09aylpZihrPWcuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saz09PWV8fDg9PT1rLm5vZGVUeXBlJiZrLnBhcmVudE5vZGU9PT1lKXJldHVybjtnPWcucmV0dXJufWZvcig7bnVsbCE9PWg7KXtnPVdjKGgpO2lmKG51bGw9PT1nKXJldHVybjtrPWcudGFnO2lmKDU9PT1rfHw2PT09ayl7ZD1mPWc7Y29udGludWUgYX1oPWgucGFyZW50Tm9kZX19ZD1kLnJldHVybn1KYihmdW5jdGlvbigpe3ZhciBkPWYsZT14YihjKSxnPVtdO1xuYTp7dmFyIGg9ZGYuZ2V0KGEpO2lmKHZvaWQgMCE9PWgpe3ZhciBrPXRkLG49YTtzd2l0Y2goYSl7Y2FzZSBcImtleXByZXNzXCI6aWYoMD09PW9kKGMpKWJyZWFrIGE7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjprPVJkO2JyZWFrO2Nhc2UgXCJmb2N1c2luXCI6bj1cImZvY3VzXCI7az1GZDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpuPVwiYmx1clwiO2s9RmQ7YnJlYWs7Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6az1GZDticmVhaztjYXNlIFwiY2xpY2tcIjppZigyPT09Yy5idXR0b24pYnJlYWsgYTtjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJjb250ZXh0bWVudVwiOms9QmQ7YnJlYWs7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6az1cbkRkO2JyZWFrO2Nhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwidG91Y2hzdGFydFwiOms9VmQ7YnJlYWs7Y2FzZSAkZTpjYXNlIGFmOmNhc2UgYmY6az1IZDticmVhaztjYXNlIGNmOms9WGQ7YnJlYWs7Y2FzZSBcInNjcm9sbFwiOms9dmQ7YnJlYWs7Y2FzZSBcIndoZWVsXCI6az1aZDticmVhaztjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwicGFzdGVcIjprPUpkO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOms9VGR9dmFyIHQ9MCE9PShiJjQpLEo9IXQmJlwic2Nyb2xsXCI9PT1hLHg9dD9udWxsIT09aD9oK1wiQ2FwdHVyZVwiOm51bGw6aDt0PVtdO2Zvcih2YXIgdz1kLHU7bnVsbCE9PVxudzspe3U9dzt2YXIgRj11LnN0YXRlTm9kZTs1PT09dS50YWcmJm51bGwhPT1GJiYodT1GLG51bGwhPT14JiYoRj1LYih3LHgpLG51bGwhPUYmJnQucHVzaCh0Zih3LEYsdSkpKSk7aWYoSilicmVhazt3PXcucmV0dXJufTA8dC5sZW5ndGgmJihoPW5ldyBrKGgsbixudWxsLGMsZSksZy5wdXNoKHtldmVudDpoLGxpc3RlbmVyczp0fSkpfX1pZigwPT09KGImNykpe2E6e2g9XCJtb3VzZW92ZXJcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWE7az1cIm1vdXNlb3V0XCI9PT1hfHxcInBvaW50ZXJvdXRcIj09PWE7aWYoaCYmYyE9PXdiJiYobj1jLnJlbGF0ZWRUYXJnZXR8fGMuZnJvbUVsZW1lbnQpJiYoV2Mobil8fG5bdWZdKSlicmVhayBhO2lmKGt8fGgpe2g9ZS53aW5kb3c9PT1lP2U6KGg9ZS5vd25lckRvY3VtZW50KT9oLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoayl7aWYobj1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50LGs9ZCxuPW4/V2Mobik6bnVsbCxudWxsIT09XG5uJiYoSj1WYihuKSxuIT09Snx8NSE9PW4udGFnJiY2IT09bi50YWcpKW49bnVsbH1lbHNlIGs9bnVsbCxuPWQ7aWYoayE9PW4pe3Q9QmQ7Rj1cIm9uTW91c2VMZWF2ZVwiO3g9XCJvbk1vdXNlRW50ZXJcIjt3PVwibW91c2VcIjtpZihcInBvaW50ZXJvdXRcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWEpdD1UZCxGPVwib25Qb2ludGVyTGVhdmVcIix4PVwib25Qb2ludGVyRW50ZXJcIix3PVwicG9pbnRlclwiO0o9bnVsbD09az9oOnVlKGspO3U9bnVsbD09bj9oOnVlKG4pO2g9bmV3IHQoRix3K1wibGVhdmVcIixrLGMsZSk7aC50YXJnZXQ9SjtoLnJlbGF0ZWRUYXJnZXQ9dTtGPW51bGw7V2MoZSk9PT1kJiYodD1uZXcgdCh4LHcrXCJlbnRlclwiLG4sYyxlKSx0LnRhcmdldD11LHQucmVsYXRlZFRhcmdldD1KLEY9dCk7Sj1GO2lmKGsmJm4pYjp7dD1rO3g9bjt3PTA7Zm9yKHU9dDt1O3U9dmYodSkpdysrO3U9MDtmb3IoRj14O0Y7Rj12ZihGKSl1Kys7Zm9yKDswPHctdTspdD12Zih0KSx3LS07Zm9yKDswPHUtdzspeD1cbnZmKHgpLHUtLTtmb3IoO3ctLTspe2lmKHQ9PT14fHxudWxsIT09eCYmdD09PXguYWx0ZXJuYXRlKWJyZWFrIGI7dD12Zih0KTt4PXZmKHgpfXQ9bnVsbH1lbHNlIHQ9bnVsbDtudWxsIT09ayYmd2YoZyxoLGssdCwhMSk7bnVsbCE9PW4mJm51bGwhPT1KJiZ3ZihnLEosbix0LCEwKX19fWE6e2g9ZD91ZShkKTp3aW5kb3c7az1oLm5vZGVOYW1lJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJzZWxlY3RcIj09PWt8fFwiaW5wdXRcIj09PWsmJlwiZmlsZVwiPT09aC50eXBlKXZhciBuYT12ZTtlbHNlIGlmKG1lKGgpKWlmKHdlKW5hPUZlO2Vsc2V7bmE9RGU7dmFyIHhhPUNlfWVsc2Uoaz1oLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09ay50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09aC50eXBlfHxcInJhZGlvXCI9PT1oLnR5cGUpJiYobmE9RWUpO2lmKG5hJiYobmE9bmEoYSxkKSkpe25lKGcsbmEsYyxlKTticmVhayBhfXhhJiZ4YShhLGgsZCk7XCJmb2N1c291dFwiPT09YSYmKHhhPWguX3dyYXBwZXJTdGF0ZSkmJlxueGEuY29udHJvbGxlZCYmXCJudW1iZXJcIj09PWgudHlwZSYmY2IoaCxcIm51bWJlclwiLGgudmFsdWUpfXhhPWQ/dWUoZCk6d2luZG93O3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmlmKG1lKHhhKXx8XCJ0cnVlXCI9PT14YS5jb250ZW50RWRpdGFibGUpUWU9eGEsUmU9ZCxTZT1udWxsO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOlNlPVJlPVFlPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlZG93blwiOlRlPSEwO2JyZWFrO2Nhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcImRyYWdlbmRcIjpUZT0hMTtVZShnLGMsZSk7YnJlYWs7Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmlmKFBlKWJyZWFrO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6VWUoZyxjLGUpfXZhciAkYTtpZihhZSliOntzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjp2YXIgYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIjticmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmJhPVwib25Db21wb3NpdGlvbkVuZFwiO1xuYnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpiYT1cIm9uQ29tcG9zaXRpb25VcGRhdGVcIjticmVhayBifWJhPXZvaWQgMH1lbHNlIGllP2dlKGEsYykmJihiYT1cIm9uQ29tcG9zaXRpb25FbmRcIik6XCJrZXlkb3duXCI9PT1hJiYyMjk9PT1jLmtleUNvZGUmJihiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiKTtiYSYmKGRlJiZcImtvXCIhPT1jLmxvY2FsZSYmKGllfHxcIm9uQ29tcG9zaXRpb25TdGFydFwiIT09YmE/XCJvbkNvbXBvc2l0aW9uRW5kXCI9PT1iYSYmaWUmJigkYT1uZCgpKTooa2Q9ZSxsZD1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxpZT0hMCkpLHhhPW9lKGQsYmEpLDA8eGEubGVuZ3RoJiYoYmE9bmV3IExkKGJhLGEsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6YmEsbGlzdGVuZXJzOnhhfSksJGE/YmEuZGF0YT0kYTooJGE9aGUoYyksbnVsbCE9PSRhJiYoYmEuZGF0YT0kYSkpKSk7aWYoJGE9Y2U/amUoYSxjKTprZShhLGMpKWQ9b2UoZCxcIm9uQmVmb3JlSW5wdXRcIiksXG4wPGQubGVuZ3RoJiYoZT1uZXcgTGQoXCJvbkJlZm9yZUlucHV0XCIsXCJiZWZvcmVpbnB1dFwiLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmUsbGlzdGVuZXJzOmR9KSxlLmRhdGE9JGEpfXNlKGcsYil9KX1mdW5jdGlvbiB0ZihhLGIsYyl7cmV0dXJue2luc3RhbmNlOmEsbGlzdGVuZXI6YixjdXJyZW50VGFyZ2V0OmN9fWZ1bmN0aW9uIG9lKGEsYil7Zm9yKHZhciBjPWIrXCJDYXB0dXJlXCIsZD1bXTtudWxsIT09YTspe3ZhciBlPWEsZj1lLnN0YXRlTm9kZTs1PT09ZS50YWcmJm51bGwhPT1mJiYoZT1mLGY9S2IoYSxjKSxudWxsIT1mJiZkLnVuc2hpZnQodGYoYSxmLGUpKSxmPUtiKGEsYiksbnVsbCE9ZiYmZC5wdXNoKHRmKGEsZixlKSkpO2E9YS5yZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gdmYoYSl7aWYobnVsbD09PWEpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiY1IT09YS50YWcpO3JldHVybiBhP2E6bnVsbH1cbmZ1bmN0aW9uIHdmKGEsYixjLGQsZSl7Zm9yKHZhciBmPWIuX3JlYWN0TmFtZSxnPVtdO251bGwhPT1jJiZjIT09ZDspe3ZhciBoPWMsaz1oLmFsdGVybmF0ZSxsPWguc3RhdGVOb2RlO2lmKG51bGwhPT1rJiZrPT09ZClicmVhazs1PT09aC50YWcmJm51bGwhPT1sJiYoaD1sLGU/KGs9S2IoYyxmKSxudWxsIT1rJiZnLnVuc2hpZnQodGYoYyxrLGgpKSk6ZXx8KGs9S2IoYyxmKSxudWxsIT1rJiZnLnB1c2godGYoYyxrLGgpKSkpO2M9Yy5yZXR1cm59MCE9PWcubGVuZ3RoJiZhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmd9KX12YXIgeGY9L1xcclxcbj8vZyx5Zj0vXFx1MDAwMHxcXHVGRkZEL2c7ZnVuY3Rpb24gemYoYSl7cmV0dXJuKFwic3RyaW5nXCI9PT10eXBlb2YgYT9hOlwiXCIrYSkucmVwbGFjZSh4ZixcIlxcblwiKS5yZXBsYWNlKHlmLFwiXCIpfWZ1bmN0aW9uIEFmKGEsYixjKXtiPXpmKGIpO2lmKHpmKGEpIT09YiYmYyl0aHJvdyBFcnJvcihwKDQyNSkpO31mdW5jdGlvbiBCZigpe31cbnZhciBDZj1udWxsLERmPW51bGw7ZnVuY3Rpb24gRWYoYSxiKXtyZXR1cm5cInRleHRhcmVhXCI9PT1hfHxcIm5vc2NyaXB0XCI9PT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwibnVtYmVyXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9XG52YXIgRmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsR2Y9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwLEhmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBQcm9taXNlP1Byb21pc2U6dm9pZCAwLEpmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9xdWV1ZU1pY3JvdGFzazpcInVuZGVmaW5lZFwiIT09dHlwZW9mIEhmP2Z1bmN0aW9uKGEpe3JldHVybiBIZi5yZXNvbHZlKG51bGwpLnRoZW4oYSkuY2F0Y2goSWYpfTpGZjtmdW5jdGlvbiBJZihhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9KX1cbmZ1bmN0aW9uIEtmKGEsYil7dmFyIGM9YixkPTA7ZG97dmFyIGU9Yy5uZXh0U2libGluZzthLnJlbW92ZUNoaWxkKGMpO2lmKGUmJjg9PT1lLm5vZGVUeXBlKWlmKGM9ZS5kYXRhLFwiLyRcIj09PWMpe2lmKDA9PT1kKXthLnJlbW92ZUNoaWxkKGUpO2JkKGIpO3JldHVybn1kLS19ZWxzZVwiJFwiIT09YyYmXCIkP1wiIT09YyYmXCIkIVwiIT09Y3x8ZCsrO2M9ZX13aGlsZShjKTtiZChiKX1mdW5jdGlvbiBMZihhKXtmb3IoO251bGwhPWE7YT1hLm5leHRTaWJsaW5nKXt2YXIgYj1hLm5vZGVUeXBlO2lmKDE9PT1ifHwzPT09YilicmVhaztpZig4PT09Yil7Yj1hLmRhdGE7aWYoXCIkXCI9PT1ifHxcIiQhXCI9PT1ifHxcIiQ/XCI9PT1iKWJyZWFrO2lmKFwiLyRcIj09PWIpcmV0dXJuIG51bGx9fXJldHVybiBhfVxuZnVuY3Rpb24gTWYoYSl7YT1hLnByZXZpb3VzU2libGluZztmb3IodmFyIGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIiRcIj09PWN8fFwiJCFcIj09PWN8fFwiJD9cIj09PWMpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlXCIvJFwiPT09YyYmYisrfWE9YS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIE5mPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLE9mPVwiX19yZWFjdEZpYmVyJFwiK05mLFBmPVwiX19yZWFjdFByb3BzJFwiK05mLHVmPVwiX19yZWFjdENvbnRhaW5lciRcIitOZixvZj1cIl9fcmVhY3RFdmVudHMkXCIrTmYsUWY9XCJfX3JlYWN0TGlzdGVuZXJzJFwiK05mLFJmPVwiX19yZWFjdEhhbmRsZXMkXCIrTmY7XG5mdW5jdGlvbiBXYyhhKXt2YXIgYj1hW09mXTtpZihiKXJldHVybiBiO2Zvcih2YXIgYz1hLnBhcmVudE5vZGU7Yzspe2lmKGI9Y1t1Zl18fGNbT2ZdKXtjPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1iLmNoaWxkfHxudWxsIT09YyYmbnVsbCE9PWMuY2hpbGQpZm9yKGE9TWYoYSk7bnVsbCE9PWE7KXtpZihjPWFbT2ZdKXJldHVybiBjO2E9TWYoYSl9cmV0dXJuIGJ9YT1jO2M9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIENiKGEpe2E9YVtPZl18fGFbdWZdO3JldHVybiFhfHw1IT09YS50YWcmJjYhPT1hLnRhZyYmMTMhPT1hLnRhZyYmMyE9PWEudGFnP251bGw6YX1mdW5jdGlvbiB1ZShhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IocCgzMykpO31mdW5jdGlvbiBEYihhKXtyZXR1cm4gYVtQZl18fG51bGx9dmFyIFNmPVtdLFRmPS0xO2Z1bmN0aW9uIFVmKGEpe3JldHVybntjdXJyZW50OmF9fVxuZnVuY3Rpb24gRShhKXswPlRmfHwoYS5jdXJyZW50PVNmW1RmXSxTZltUZl09bnVsbCxUZi0tKX1mdW5jdGlvbiBHKGEsYil7VGYrKztTZltUZl09YS5jdXJyZW50O2EuY3VycmVudD1ifXZhciBWZj17fSxIPVVmKFZmKSxXZj1VZighMSksWGY9VmY7ZnVuY3Rpb24gWWYoYSxiKXt2YXIgYz1hLnR5cGUuY29udGV4dFR5cGVzO2lmKCFjKXJldHVybiBWZjt2YXIgZD1hLnN0YXRlTm9kZTtpZihkJiZkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT1iKXJldHVybiBkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBlPXt9LGY7Zm9yKGYgaW4gYyllW2ZdPWJbZl07ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWIsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1lKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFpmKGEpe2E9YS5jaGlsZENvbnRleHRUeXBlcztyZXR1cm4gbnVsbCE9PWEmJnZvaWQgMCE9PWF9ZnVuY3Rpb24gJGYoKXtFKFdmKTtFKEgpfWZ1bmN0aW9uIGFnKGEsYixjKXtpZihILmN1cnJlbnQhPT1WZil0aHJvdyBFcnJvcihwKDE2OCkpO0coSCxiKTtHKFdmLGMpfWZ1bmN0aW9uIGJnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtiPWIuY2hpbGRDb250ZXh0VHlwZXM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBjO2Q9ZC5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGUgaW4gZClpZighKGUgaW4gYikpdGhyb3cgRXJyb3IocCgxMDgsUmEoYSl8fFwiVW5rbm93blwiLGUpKTtyZXR1cm4gQSh7fSxjLGQpfVxuZnVuY3Rpb24gY2coYSl7YT0oYT1hLnN0YXRlTm9kZSkmJmEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFZmO1hmPUguY3VycmVudDtHKEgsYSk7RyhXZixXZi5jdXJyZW50KTtyZXR1cm4hMH1mdW5jdGlvbiBkZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoIWQpdGhyb3cgRXJyb3IocCgxNjkpKTtjPyhhPWJnKGEsYixYZiksZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD1hLEUoV2YpLEUoSCksRyhILGEpKTpFKFdmKTtHKFdmLGMpfXZhciBlZz1udWxsLGZnPSExLGdnPSExO2Z1bmN0aW9uIGhnKGEpe251bGw9PT1lZz9lZz1bYV06ZWcucHVzaChhKX1mdW5jdGlvbiBpZyhhKXtmZz0hMDtoZyhhKX1cbmZ1bmN0aW9uIGpnKCl7aWYoIWdnJiZudWxsIT09ZWcpe2dnPSEwO3ZhciBhPTAsYj1DO3RyeXt2YXIgYz1lZztmb3IoQz0xO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZD1jW2FdO2RvIGQ9ZCghMCk7d2hpbGUobnVsbCE9PWQpfWVnPW51bGw7Zmc9ITF9Y2F0Y2goZSl7dGhyb3cgbnVsbCE9PWVnJiYoZWc9ZWcuc2xpY2UoYSsxKSksYWMoZmMsamcpLGU7fWZpbmFsbHl7Qz1iLGdnPSExfX1yZXR1cm4gbnVsbH12YXIga2c9W10sbGc9MCxtZz1udWxsLG5nPTAsb2c9W10scGc9MCxxZz1udWxsLHJnPTEsc2c9XCJcIjtmdW5jdGlvbiB0ZyhhLGIpe2tnW2xnKytdPW5nO2tnW2xnKytdPW1nO21nPWE7bmc9Yn1cbmZ1bmN0aW9uIHVnKGEsYixjKXtvZ1twZysrXT1yZztvZ1twZysrXT1zZztvZ1twZysrXT1xZztxZz1hO3ZhciBkPXJnO2E9c2c7dmFyIGU9MzItb2MoZCktMTtkJj1+KDE8PGUpO2MrPTE7dmFyIGY9MzItb2MoYikrZTtpZigzMDxmKXt2YXIgZz1lLWUlNTtmPShkJigxPDxnKS0xKS50b1N0cmluZygzMik7ZD4+PWc7ZS09ZztyZz0xPDwzMi1vYyhiKStlfGM8PGV8ZDtzZz1mK2F9ZWxzZSByZz0xPDxmfGM8PGV8ZCxzZz1hfWZ1bmN0aW9uIHZnKGEpe251bGwhPT1hLnJldHVybiYmKHRnKGEsMSksdWcoYSwxLDApKX1mdW5jdGlvbiB3ZyhhKXtmb3IoO2E9PT1tZzspbWc9a2dbLS1sZ10sa2dbbGddPW51bGwsbmc9a2dbLS1sZ10sa2dbbGddPW51bGw7Zm9yKDthPT09cWc7KXFnPW9nWy0tcGddLG9nW3BnXT1udWxsLHNnPW9nWy0tcGddLG9nW3BnXT1udWxsLHJnPW9nWy0tcGddLG9nW3BnXT1udWxsfXZhciB4Zz1udWxsLHlnPW51bGwsST0hMSx6Zz1udWxsO1xuZnVuY3Rpb24gQWcoYSxiKXt2YXIgYz1CZyg1LG51bGwsbnVsbCwwKTtjLmVsZW1lbnRUeXBlPVwiREVMRVRFRFwiO2Muc3RhdGVOb2RlPWI7Yy5yZXR1cm49YTtiPWEuZGVsZXRpb25zO251bGw9PT1iPyhhLmRlbGV0aW9ucz1bY10sYS5mbGFnc3w9MTYpOmIucHVzaChjKX1cbmZ1bmN0aW9uIENnKGEsYil7c3dpdGNoKGEudGFnKXtjYXNlIDU6dmFyIGM9YS50eXBlO2I9MSE9PWIubm9kZVR5cGV8fGMudG9Mb3dlckNhc2UoKSE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOmI7cmV0dXJuIG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9TGYoYi5maXJzdENoaWxkKSwhMCk6ITE7Y2FzZSA2OnJldHVybiBiPVwiXCI9PT1hLnBlbmRpbmdQcm9wc3x8MyE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9bnVsbCwhMCk6ITE7Y2FzZSAxMzpyZXR1cm4gYj04IT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGM9bnVsbCE9PXFnP3tpZDpyZyxvdmVyZmxvdzpzZ306bnVsbCxhLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6Yix0cmVlQ29udGV4dDpjLHJldHJ5TGFuZToxMDczNzQxODI0fSxjPUJnKDE4LG51bGwsbnVsbCwwKSxjLnN0YXRlTm9kZT1iLGMucmV0dXJuPWEsYS5jaGlsZD1jLHhnPWEseWc9XG5udWxsLCEwKTohMTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBEZyhhKXtyZXR1cm4gMCE9PShhLm1vZGUmMSkmJjA9PT0oYS5mbGFncyYxMjgpfWZ1bmN0aW9uIEVnKGEpe2lmKEkpe3ZhciBiPXlnO2lmKGIpe3ZhciBjPWI7aWYoIUNnKGEsYikpe2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7Yj1MZihjLm5leHRTaWJsaW5nKTt2YXIgZD14ZztiJiZDZyhhLGIpP0FnKGQsYyk6KGEuZmxhZ3M9YS5mbGFncyYtNDA5N3wyLEk9ITEseGc9YSl9fWVsc2V7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTthLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MjtJPSExO3hnPWF9fX1mdW5jdGlvbiBGZyhhKXtmb3IoYT1hLnJldHVybjtudWxsIT09YSYmNSE9PWEudGFnJiYzIT09YS50YWcmJjEzIT09YS50YWc7KWE9YS5yZXR1cm47eGc9YX1cbmZ1bmN0aW9uIEdnKGEpe2lmKGEhPT14ZylyZXR1cm4hMTtpZighSSlyZXR1cm4gRmcoYSksST0hMCwhMTt2YXIgYjsoYj0zIT09YS50YWcpJiYhKGI9NSE9PWEudGFnKSYmKGI9YS50eXBlLGI9XCJoZWFkXCIhPT1iJiZcImJvZHlcIiE9PWImJiFFZihhLnR5cGUsYS5tZW1vaXplZFByb3BzKSk7aWYoYiYmKGI9eWcpKXtpZihEZyhhKSl0aHJvdyBIZygpLEVycm9yKHAoNDE4KSk7Zm9yKDtiOylBZyhhLGIpLGI9TGYoYi5uZXh0U2libGluZyl9RmcoYSk7aWYoMTM9PT1hLnRhZyl7YT1hLm1lbW9pemVkU3RhdGU7YT1udWxsIT09YT9hLmRlaHlkcmF0ZWQ6bnVsbDtpZighYSl0aHJvdyBFcnJvcihwKDMxNykpO2E6e2E9YS5uZXh0U2libGluZztmb3IoYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiLyRcIj09PWMpe2lmKDA9PT1iKXt5Zz1MZihhLm5leHRTaWJsaW5nKTticmVhayBhfWItLX1lbHNlXCIkXCIhPT1jJiZcIiQhXCIhPT1jJiZcIiQ/XCIhPT1jfHxiKyt9YT1hLm5leHRTaWJsaW5nfXlnPVxubnVsbH19ZWxzZSB5Zz14Zz9MZihhLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiBIZygpe2Zvcih2YXIgYT15ZzthOylhPUxmKGEubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIElnKCl7eWc9eGc9bnVsbDtJPSExfWZ1bmN0aW9uIEpnKGEpe251bGw9PT16Zz96Zz1bYV06emcucHVzaChhKX12YXIgS2c9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc7ZnVuY3Rpb24gTGcoYSxiKXtpZihhJiZhLmRlZmF1bHRQcm9wcyl7Yj1BKHt9LGIpO2E9YS5kZWZhdWx0UHJvcHM7Zm9yKHZhciBjIGluIGEpdm9pZCAwPT09YltjXSYmKGJbY109YVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGJ9dmFyIE1nPVVmKG51bGwpLE5nPW51bGwsT2c9bnVsbCxQZz1udWxsO2Z1bmN0aW9uIFFnKCl7UGc9T2c9Tmc9bnVsbH1mdW5jdGlvbiBSZyhhKXt2YXIgYj1NZy5jdXJyZW50O0UoTWcpO2EuX2N1cnJlbnRWYWx1ZT1ifVxuZnVuY3Rpb24gU2coYSxiLGMpe2Zvcig7bnVsbCE9PWE7KXt2YXIgZD1hLmFsdGVybmF0ZTsoYS5jaGlsZExhbmVzJmIpIT09Yj8oYS5jaGlsZExhbmVzfD1iLG51bGwhPT1kJiYoZC5jaGlsZExhbmVzfD1iKSk6bnVsbCE9PWQmJihkLmNoaWxkTGFuZXMmYikhPT1iJiYoZC5jaGlsZExhbmVzfD1iKTtpZihhPT09YylicmVhazthPWEucmV0dXJufX1mdW5jdGlvbiBUZyhhLGIpe05nPWE7UGc9T2c9bnVsbDthPWEuZGVwZW5kZW5jaWVzO251bGwhPT1hJiZudWxsIT09YS5maXJzdENvbnRleHQmJigwIT09KGEubGFuZXMmYikmJihVZz0hMCksYS5maXJzdENvbnRleHQ9bnVsbCl9XG5mdW5jdGlvbiBWZyhhKXt2YXIgYj1hLl9jdXJyZW50VmFsdWU7aWYoUGchPT1hKWlmKGE9e2NvbnRleHQ6YSxtZW1vaXplZFZhbHVlOmIsbmV4dDpudWxsfSxudWxsPT09T2cpe2lmKG51bGw9PT1OZyl0aHJvdyBFcnJvcihwKDMwOCkpO09nPWE7TmcuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDphfX1lbHNlIE9nPU9nLm5leHQ9YTtyZXR1cm4gYn12YXIgV2c9bnVsbDtmdW5jdGlvbiBYZyhhKXtudWxsPT09V2c/V2c9W2FdOldnLnB1c2goYSl9ZnVuY3Rpb24gWWcoYSxiLGMsZCl7dmFyIGU9Yi5pbnRlcmxlYXZlZDtudWxsPT09ZT8oYy5uZXh0PWMsWGcoYikpOihjLm5leHQ9ZS5uZXh0LGUubmV4dD1jKTtiLmludGVybGVhdmVkPWM7cmV0dXJuIFpnKGEsZCl9XG5mdW5jdGlvbiBaZyhhLGIpe2EubGFuZXN8PWI7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJihjLmxhbmVzfD1iKTtjPWE7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWE7KWEuY2hpbGRMYW5lc3w9YixjPWEuYWx0ZXJuYXRlLG51bGwhPT1jJiYoYy5jaGlsZExhbmVzfD1iKSxjPWEsYT1hLnJldHVybjtyZXR1cm4gMz09PWMudGFnP2Muc3RhdGVOb2RlOm51bGx9dmFyICRnPSExO2Z1bmN0aW9uIGFoKGEpe2EudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjB9LGVmZmVjdHM6bnVsbH19XG5mdW5jdGlvbiBiaChhLGIpe2E9YS51cGRhdGVRdWV1ZTtiLnVwZGF0ZVF1ZXVlPT09YSYmKGIudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6YS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6YS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6YS5zaGFyZWQsZWZmZWN0czphLmVmZmVjdHN9KX1mdW5jdGlvbiBjaChhLGIpe3JldHVybntldmVudFRpbWU6YSxsYW5lOmIsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1cbmZ1bmN0aW9uIGRoKGEsYixjKXt2YXIgZD1hLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2Q9ZC5zaGFyZWQ7aWYoMCE9PShLJjIpKXt2YXIgZT1kLnBlbmRpbmc7bnVsbD09PWU/Yi5uZXh0PWI6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QucGVuZGluZz1iO3JldHVybiBaZyhhLGMpfWU9ZC5pbnRlcmxlYXZlZDtudWxsPT09ZT8oYi5uZXh0PWIsWGcoZCkpOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLmludGVybGVhdmVkPWI7cmV0dXJuIFpnKGEsYyl9ZnVuY3Rpb24gZWgoYSxiLGMpe2I9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YiYmKGI9Yi5zaGFyZWQsMCE9PShjJjQxOTQyNDApKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbmZ1bmN0aW9uIGZoKGEsYil7dmFyIGM9YS51cGRhdGVRdWV1ZSxkPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1kJiYoZD1kLnVwZGF0ZVF1ZXVlLGM9PT1kKSl7dmFyIGU9bnVsbCxmPW51bGw7Yz1jLmZpcnN0QmFzZVVwZGF0ZTtpZihudWxsIT09Yyl7ZG97dmFyIGc9e2V2ZW50VGltZTpjLmV2ZW50VGltZSxsYW5lOmMubGFuZSx0YWc6Yy50YWcscGF5bG9hZDpjLnBheWxvYWQsY2FsbGJhY2s6Yy5jYWxsYmFjayxuZXh0Om51bGx9O251bGw9PT1mP2U9Zj1nOmY9Zi5uZXh0PWc7Yz1jLm5leHR9d2hpbGUobnVsbCE9PWMpO251bGw9PT1mP2U9Zj1iOmY9Zi5uZXh0PWJ9ZWxzZSBlPWY9YjtjPXtiYXNlU3RhdGU6ZC5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmUsbGFzdEJhc2VVcGRhdGU6ZixzaGFyZWQ6ZC5zaGFyZWQsZWZmZWN0czpkLmVmZmVjdHN9O2EudXBkYXRlUXVldWU9YztyZXR1cm59YT1jLmxhc3RCYXNlVXBkYXRlO251bGw9PT1hP2MuZmlyc3RCYXNlVXBkYXRlPWI6YS5uZXh0PVxuYjtjLmxhc3RCYXNlVXBkYXRlPWJ9XG5mdW5jdGlvbiBnaChhLGIsYyxkKXt2YXIgZT1hLnVwZGF0ZVF1ZXVlOyRnPSExO3ZhciBmPWUuZmlyc3RCYXNlVXBkYXRlLGc9ZS5sYXN0QmFzZVVwZGF0ZSxoPWUuc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PWgpe2Uuc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgaz1oLGw9ay5uZXh0O2submV4dD1udWxsO251bGw9PT1nP2Y9bDpnLm5leHQ9bDtnPWs7dmFyIG09YS5hbHRlcm5hdGU7bnVsbCE9PW0mJihtPW0udXBkYXRlUXVldWUsaD1tLmxhc3RCYXNlVXBkYXRlLGghPT1nJiYobnVsbD09PWg/bS5maXJzdEJhc2VVcGRhdGU9bDpoLm5leHQ9bCxtLmxhc3RCYXNlVXBkYXRlPWspKX1pZihudWxsIT09Zil7dmFyIHE9ZS5iYXNlU3RhdGU7Zz0wO209bD1rPW51bGw7aD1mO2Rve3ZhciByPWgubGFuZSx5PWguZXZlbnRUaW1lO2lmKChkJnIpPT09cil7bnVsbCE9PW0mJihtPW0ubmV4dD17ZXZlbnRUaW1lOnksbGFuZTowLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLFxubmV4dDpudWxsfSk7YTp7dmFyIG49YSx0PWg7cj1iO3k9Yztzd2l0Y2godC50YWcpe2Nhc2UgMTpuPXQucGF5bG9hZDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbil7cT1uLmNhbGwoeSxxLHIpO2JyZWFrIGF9cT1uO2JyZWFrIGE7Y2FzZSAzOm4uZmxhZ3M9bi5mbGFncyYtNjU1Mzd8MTI4O2Nhc2UgMDpuPXQucGF5bG9hZDtyPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBuP24uY2FsbCh5LHEscik6bjtpZihudWxsPT09cnx8dm9pZCAwPT09cilicmVhayBhO3E9QSh7fSxxLHIpO2JyZWFrIGE7Y2FzZSAyOiRnPSEwfX1udWxsIT09aC5jYWxsYmFjayYmMCE9PWgubGFuZSYmKGEuZmxhZ3N8PTY0LHI9ZS5lZmZlY3RzLG51bGw9PT1yP2UuZWZmZWN0cz1baF06ci5wdXNoKGgpKX1lbHNlIHk9e2V2ZW50VGltZTp5LGxhbmU6cix0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxuZXh0Om51bGx9LG51bGw9PT1tPyhsPW09eSxrPXEpOm09bS5uZXh0PXksZ3w9cjtcbmg9aC5uZXh0O2lmKG51bGw9PT1oKWlmKGg9ZS5zaGFyZWQucGVuZGluZyxudWxsPT09aClicmVhaztlbHNlIHI9aCxoPXIubmV4dCxyLm5leHQ9bnVsbCxlLmxhc3RCYXNlVXBkYXRlPXIsZS5zaGFyZWQucGVuZGluZz1udWxsfXdoaWxlKDEpO251bGw9PT1tJiYoaz1xKTtlLmJhc2VTdGF0ZT1rO2UuZmlyc3RCYXNlVXBkYXRlPWw7ZS5sYXN0QmFzZVVwZGF0ZT1tO2I9ZS5zaGFyZWQuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWIpe2U9YjtkbyBnfD1lLmxhbmUsZT1lLm5leHQ7d2hpbGUoZSE9PWIpfWVsc2UgbnVsbD09PWYmJihlLnNoYXJlZC5sYW5lcz0wKTtoaHw9ZzthLmxhbmVzPWc7YS5tZW1vaXplZFN0YXRlPXF9fVxuZnVuY3Rpb24gaWgoYSxiLGMpe2E9Yi5lZmZlY3RzO2IuZWZmZWN0cz1udWxsO2lmKG51bGwhPT1hKWZvcihiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBkPWFbYl0sZT1kLmNhbGxiYWNrO2lmKG51bGwhPT1lKXtkLmNhbGxiYWNrPW51bGw7ZD1jO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlKXRocm93IEVycm9yKHAoMTkxLGUpKTtlLmNhbGwoZCl9fX12YXIgamg9KG5ldyBhYS5Db21wb25lbnQpLnJlZnM7ZnVuY3Rpb24ga2goYSxiLGMsZCl7Yj1hLm1lbW9pemVkU3RhdGU7Yz1jKGQsYik7Yz1udWxsPT09Y3x8dm9pZCAwPT09Yz9iOkEoe30sYixjKTthLm1lbW9pemVkU3RhdGU9YzswPT09YS5sYW5lcyYmKGEudXBkYXRlUXVldWUuYmFzZVN0YXRlPWMpfVxudmFyIG5oPXtpc01vdW50ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5fcmVhY3RJbnRlcm5hbHMpP1ZiKGEpPT09YTohMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPUwoKSxlPWxoKGEpLGY9Y2goZCxlKTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1kaChhLGYsZSk7bnVsbCE9PWImJihtaChiLGEsZSxkKSxlaChiLGEsZSkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPUwoKSxlPWxoKGEpLGY9Y2goZCxlKTtmLnRhZz0xO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPWRoKGEsZixlKTtudWxsIT09YiYmKG1oKGIsYSxlLGQpLGVoKGIsYSxlKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGM9TCgpLGQ9XG5saChhKSxlPWNoKGMsZCk7ZS50YWc9Mjt2b2lkIDAhPT1iJiZudWxsIT09YiYmKGUuY2FsbGJhY2s9Yik7Yj1kaChhLGUsZCk7bnVsbCE9PWImJihtaChiLGEsZCxjKSxlaChiLGEsZCkpfX07ZnVuY3Rpb24gb2goYSxiLGMsZCxlLGYsZyl7YT1hLnN0YXRlTm9kZTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5zaG91bGRDb21wb25lbnRVcGRhdGU/YS5zaG91bGRDb21wb25lbnRVcGRhdGUoZCxmLGcpOmIucHJvdG90eXBlJiZiLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD8hSWUoYyxkKXx8IUllKGUsZik6ITB9XG5mdW5jdGlvbiBwaChhLGIsYyl7dmFyIGQ9ITEsZT1WZjt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/Zj1WZyhmKTooZT1aZihiKT9YZjpILmN1cnJlbnQsZD1iLmNvbnRleHRUeXBlcyxmPShkPW51bGwhPT1kJiZ2b2lkIDAhPT1kKT9ZZihhLGUpOlZmKTtiPW5ldyBiKGMsZik7YS5tZW1vaXplZFN0YXRlPW51bGwhPT1iLnN0YXRlJiZ2b2lkIDAhPT1iLnN0YXRlP2Iuc3RhdGU6bnVsbDtiLnVwZGF0ZXI9bmg7YS5zdGF0ZU5vZGU9YjtiLl9yZWFjdEludGVybmFscz1hO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1lLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9Zik7cmV0dXJuIGJ9XG5mdW5jdGlvbiBxaChhLGIsYyxkKXthPWIuc3RhdGU7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtiLnN0YXRlIT09YSYmbmguZW5xdWV1ZVJlcGxhY2VTdGF0ZShiLGIuc3RhdGUsbnVsbCl9XG5mdW5jdGlvbiByaChhLGIsYyxkKXt2YXIgZT1hLnN0YXRlTm9kZTtlLnByb3BzPWM7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7ZS5yZWZzPWpoO2FoKGEpO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9lLmNvbnRleHQ9VmcoZik6KGY9WmYoYik/WGY6SC5jdXJyZW50LGUuY29udGV4dD1ZZihhLGYpKTtlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtmPWIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYoa2goYSxiLGYsYyksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudHx8KGI9ZS5zdGF0ZSxcblwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudCYmZS5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxiIT09ZS5zdGF0ZSYmbmguZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLGUuc3RhdGUsbnVsbCksZ2goYSxjLGUsZCksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudERpZE1vdW50JiYoYS5mbGFnc3w9NDE5NDMwOCl9XG5mdW5jdGlvbiBzaChhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJlwib2JqZWN0XCIhPT10eXBlb2YgYSl7aWYoYy5fb3duZXIpe2M9Yy5fb3duZXI7aWYoYyl7aWYoMSE9PWMudGFnKXRocm93IEVycm9yKHAoMzA5KSk7dmFyIGQ9Yy5zdGF0ZU5vZGV9aWYoIWQpdGhyb3cgRXJyb3IocCgxNDcsYSkpO3ZhciBlPWQsZj1cIlwiK2E7aWYobnVsbCE9PWImJm51bGwhPT1iLnJlZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGIucmVmJiZiLnJlZi5fc3RyaW5nUmVmPT09ZilyZXR1cm4gYi5yZWY7Yj1mdW5jdGlvbihhKXt2YXIgYj1lLnJlZnM7Yj09PWpoJiYoYj1lLnJlZnM9e30pO251bGw9PT1hP2RlbGV0ZSBiW2ZdOmJbZl09YX07Yi5fc3RyaW5nUmVmPWY7cmV0dXJuIGJ9aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKHAoMjg0KSk7aWYoIWMuX293bmVyKXRocm93IEVycm9yKHAoMjkwLGEpKTt9cmV0dXJuIGF9XG5mdW5jdGlvbiB0aChhLGIpe2E9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpO3Rocm93IEVycm9yKHAoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PWE/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhiKS5qb2luKFwiLCBcIikrXCJ9XCI6YSkpO31mdW5jdGlvbiB1aChhKXt2YXIgYj1hLl9pbml0O3JldHVybiBiKGEuX3BheWxvYWQpfVxuZnVuY3Rpb24gdmgoYSl7ZnVuY3Rpb24gYihiLGMpe2lmKGEpe3ZhciBkPWIuZGVsZXRpb25zO251bGw9PT1kPyhiLmRlbGV0aW9ucz1bY10sYi5mbGFnc3w9MTYpOmQucHVzaChjKX19ZnVuY3Rpb24gYyhjLGQpe2lmKCFhKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PWQ7KWIoYyxkKSxkPWQuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGEsYil7Zm9yKGE9bmV3IE1hcDtudWxsIT09YjspbnVsbCE9PWIua2V5P2Euc2V0KGIua2V5LGIpOmEuc2V0KGIuaW5kZXgsYiksYj1iLnNpYmxpbmc7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2E9d2goYSxiKTthLmluZGV4PTA7YS5zaWJsaW5nPW51bGw7cmV0dXJuIGF9ZnVuY3Rpb24gZihiLGMsZCl7Yi5pbmRleD1kO2lmKCFhKXJldHVybiBiLmZsYWdzfD0xMDQ4NTc2LGM7ZD1iLmFsdGVybmF0ZTtpZihudWxsIT09ZClyZXR1cm4gZD1kLmluZGV4LGQ8Yz8oYi5mbGFnc3w9MixjKTpkO2IuZmxhZ3N8PTI7cmV0dXJuIGN9ZnVuY3Rpb24gZyhiKXthJiZcbm51bGw9PT1iLmFsdGVybmF0ZSYmKGIuZmxhZ3N8PTIpO3JldHVybiBifWZ1bmN0aW9uIGgoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDYhPT1iLnRhZylyZXR1cm4gYj14aChjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBmPWMudHlwZTtpZihmPT09eWEpcmV0dXJuIG0oYSxiLGMucHJvcHMuY2hpbGRyZW4sZCxjLmtleSk7aWYobnVsbCE9PWImJihiLmVsZW1lbnRUeXBlPT09Znx8XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZiYmZi4kJHR5cGVvZj09PUhhJiZ1aChmKT09PWIudHlwZSkpcmV0dXJuIGQ9ZShiLGMucHJvcHMpLGQucmVmPXNoKGEsYixjKSxkLnJldHVybj1hLGQ7ZD15aChjLnR5cGUsYy5rZXksYy5wcm9wcyxudWxsLGEubW9kZSxkKTtkLnJlZj1zaChhLGIsYyk7ZC5yZXR1cm49YTtyZXR1cm4gZH1mdW5jdGlvbiBsKGEsYixjLGQpe2lmKG51bGw9PT1ifHw0IT09Yi50YWd8fFxuYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PWMuY29udGFpbmVySW5mb3x8Yi5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1jLmltcGxlbWVudGF0aW9uKXJldHVybiBiPXpoKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjLmNoaWxkcmVufHxbXSk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBtKGEsYixjLGQsZil7aWYobnVsbD09PWJ8fDchPT1iLnRhZylyZXR1cm4gYj1BaChjLGEubW9kZSxkLGYpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIHEoYSxiLGMpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYiYmXCJcIiE9PWJ8fFwibnVtYmVyXCI9PT10eXBlb2YgYilyZXR1cm4gYj14aChcIlwiK2IsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtpZihcIm9iamVjdFwiPT09dHlwZW9mIGImJm51bGwhPT1iKXtzd2l0Y2goYi4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYz15aChiLnR5cGUsYi5rZXksYi5wcm9wcyxudWxsLGEubW9kZSxjKSxcbmMucmVmPXNoKGEsbnVsbCxiKSxjLnJldHVybj1hLGM7Y2FzZSB3YTpyZXR1cm4gYj16aChiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7Y2FzZSBIYTp2YXIgZD1iLl9pbml0O3JldHVybiBxKGEsZChiLl9wYXlsb2FkKSxjKX1pZihlYihiKXx8S2EoYikpcmV0dXJuIGI9QWgoYixhLm1vZGUsYyxudWxsKSxiLnJldHVybj1hLGI7dGgoYSxiKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiByKGEsYixjLGQpe3ZhciBlPW51bGwhPT1iP2Iua2V5Om51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBjJiZcIlwiIT09Y3x8XCJudW1iZXJcIj09PXR5cGVvZiBjKXJldHVybiBudWxsIT09ZT9udWxsOmgoYSxiLFwiXCIrYyxkKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYy5rZXk9PT1lP2soYSxiLGMsZCk6bnVsbDtjYXNlIHdhOnJldHVybiBjLmtleT09PWU/bChhLGIsYyxkKTpudWxsO2Nhc2UgSGE6cmV0dXJuIGU9Yy5faW5pdCxyKGEsXG5iLGUoYy5fcGF5bG9hZCksZCl9aWYoZWIoYyl8fEthKGMpKXJldHVybiBudWxsIT09ZT9udWxsOm0oYSxiLGMsZCxudWxsKTt0aChhLGMpfXJldHVybiBudWxsfWZ1bmN0aW9uIHkoYSxiLGMsZCxlKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGQmJlwiXCIhPT1kfHxcIm51bWJlclwiPT09dHlwZW9mIGQpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsaChiLGEsXCJcIitkLGUpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZCYmbnVsbCE9PWQpe3N3aXRjaChkLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxrKGIsYSxkLGUpO2Nhc2Ugd2E6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGwoYixhLGQsZSk7Y2FzZSBIYTp2YXIgZj1kLl9pbml0O3JldHVybiB5KGEsYixjLGYoZC5fcGF5bG9hZCksZSl9aWYoZWIoZCl8fEthKGQpKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLG0oYixhLGQsZSxudWxsKTt0aChiLGQpfXJldHVybiBudWxsfVxuZnVuY3Rpb24gbihlLGcsaCxrKXtmb3IodmFyIGw9bnVsbCxtPW51bGwsdT1nLHc9Zz0wLHg9bnVsbDtudWxsIT09dSYmdzxoLmxlbmd0aDt3Kyspe3UuaW5kZXg+dz8oeD11LHU9bnVsbCk6eD11LnNpYmxpbmc7dmFyIG49cihlLHUsaFt3XSxrKTtpZihudWxsPT09bil7bnVsbD09PXUmJih1PXgpO2JyZWFrfWEmJnUmJm51bGw9PT1uLmFsdGVybmF0ZSYmYihlLHUpO2c9ZihuLGcsdyk7bnVsbD09PW0/bD1uOm0uc2libGluZz1uO209bjt1PXh9aWYodz09PWgubGVuZ3RoKXJldHVybiBjKGUsdSksSSYmdGcoZSx3KSxsO2lmKG51bGw9PT11KXtmb3IoO3c8aC5sZW5ndGg7dysrKXU9cShlLGhbd10sayksbnVsbCE9PXUmJihnPWYodSxnLHcpLG51bGw9PT1tP2w9dTptLnNpYmxpbmc9dSxtPXUpO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKHU9ZChlLHUpO3c8aC5sZW5ndGg7dysrKXg9eSh1LGUsdyxoW3ddLGspLG51bGwhPT14JiYoYSYmbnVsbCE9PXguYWx0ZXJuYXRlJiZ1LmRlbGV0ZShudWxsPT09XG54LmtleT93Ongua2V5KSxnPWYoeCxnLHcpLG51bGw9PT1tP2w9eDptLnNpYmxpbmc9eCxtPXgpO2EmJnUuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiB0KGUsZyxoLGspe3ZhciBsPUthKGgpO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBsKXRocm93IEVycm9yKHAoMTUwKSk7aD1sLmNhbGwoaCk7aWYobnVsbD09aCl0aHJvdyBFcnJvcihwKDE1MSkpO2Zvcih2YXIgdT1sPW51bGwsbT1nLHc9Zz0wLHg9bnVsbCxuPWgubmV4dCgpO251bGwhPT1tJiYhbi5kb25lO3crKyxuPWgubmV4dCgpKXttLmluZGV4Pnc/KHg9bSxtPW51bGwpOng9bS5zaWJsaW5nO3ZhciB0PXIoZSxtLG4udmFsdWUsayk7aWYobnVsbD09PXQpe251bGw9PT1tJiYobT14KTticmVha31hJiZtJiZudWxsPT09dC5hbHRlcm5hdGUmJmIoZSxtKTtnPWYodCxnLHcpO251bGw9PT11P2w9dDp1LnNpYmxpbmc9dDt1PXQ7bT14fWlmKG4uZG9uZSlyZXR1cm4gYyhlLFxubSksSSYmdGcoZSx3KSxsO2lmKG51bGw9PT1tKXtmb3IoOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj1xKGUsbi52YWx1ZSxrKSxudWxsIT09biYmKGc9ZihuLGcsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IobT1kKGUsbSk7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXkobSxlLHcsbi52YWx1ZSxrKSxudWxsIT09biYmKGEmJm51bGwhPT1uLmFsdGVybmF0ZSYmbS5kZWxldGUobnVsbD09PW4ua2V5P3c6bi5rZXkpLGc9ZihuLGcsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7YSYmbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIEooYSxkLGYsaCl7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZiYmZi50eXBlPT09eWEmJm51bGw9PT1mLmtleSYmKGY9Zi5wcm9wcy5jaGlsZHJlbik7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zil7c3dpdGNoKGYuJCR0eXBlb2Ype2Nhc2UgdmE6YTp7Zm9yKHZhciBrPVxuZi5rZXksbD1kO251bGwhPT1sOyl7aWYobC5rZXk9PT1rKXtrPWYudHlwZTtpZihrPT09eWEpe2lmKDc9PT1sLnRhZyl7YyhhLGwuc2libGluZyk7ZD1lKGwsZi5wcm9wcy5jaGlsZHJlbik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX19ZWxzZSBpZihsLmVsZW1lbnRUeXBlPT09a3x8XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09ayYmay4kJHR5cGVvZj09PUhhJiZ1aChrKT09PWwudHlwZSl7YyhhLGwuc2libGluZyk7ZD1lKGwsZi5wcm9wcyk7ZC5yZWY9c2goYSxsLGYpO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9YyhhLGwpO2JyZWFrfWVsc2UgYihhLGwpO2w9bC5zaWJsaW5nfWYudHlwZT09PXlhPyhkPUFoKGYucHJvcHMuY2hpbGRyZW4sYS5tb2RlLGgsZi5rZXkpLGQucmV0dXJuPWEsYT1kKTooaD15aChmLnR5cGUsZi5rZXksZi5wcm9wcyxudWxsLGEubW9kZSxoKSxoLnJlZj1zaChhLGQsZiksaC5yZXR1cm49YSxhPWgpfXJldHVybiBnKGEpO2Nhc2Ugd2E6YTp7Zm9yKGw9Zi5rZXk7bnVsbCE9PVxuZDspe2lmKGQua2V5PT09bClpZig0PT09ZC50YWcmJmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1mLmNvbnRhaW5lckluZm8mJmQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09Zi5pbXBsZW1lbnRhdGlvbil7YyhhLGQuc2libGluZyk7ZD1lKGQsZi5jaGlsZHJlbnx8W10pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9ZWxzZXtjKGEsZCk7YnJlYWt9ZWxzZSBiKGEsZCk7ZD1kLnNpYmxpbmd9ZD16aChmLGEubW9kZSxoKTtkLnJldHVybj1hO2E9ZH1yZXR1cm4gZyhhKTtjYXNlIEhhOnJldHVybiBsPWYuX2luaXQsSihhLGQsbChmLl9wYXlsb2FkKSxoKX1pZihlYihmKSlyZXR1cm4gbihhLGQsZixoKTtpZihLYShmKSlyZXR1cm4gdChhLGQsZixoKTt0aChhLGYpfXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgZiYmXCJcIiE9PWZ8fFwibnVtYmVyXCI9PT10eXBlb2YgZj8oZj1cIlwiK2YsbnVsbCE9PWQmJjY9PT1kLnRhZz8oYyhhLGQuc2libGluZyksZD1lKGQsZiksZC5yZXR1cm49YSxhPWQpOlxuKGMoYSxkKSxkPXhoKGYsYS5tb2RlLGgpLGQucmV0dXJuPWEsYT1kKSxnKGEpKTpjKGEsZCl9cmV0dXJuIEp9dmFyIEJoPXZoKCEwKSxDaD12aCghMSksRGg9e30sRWg9VWYoRGgpLEZoPVVmKERoKSxHaD1VZihEaCk7ZnVuY3Rpb24gSGgoYSl7aWYoYT09PURoKXRocm93IEVycm9yKHAoMTc0KSk7cmV0dXJuIGF9ZnVuY3Rpb24gSWgoYSxiKXtHKEdoLGIpO0coRmgsYSk7RyhFaCxEaCk7YT1iLm5vZGVUeXBlO3N3aXRjaChhKXtjYXNlIDk6Y2FzZSAxMTpiPShiPWIuZG9jdW1lbnRFbGVtZW50KT9iLm5hbWVzcGFjZVVSSTpsYihudWxsLFwiXCIpO2JyZWFrO2RlZmF1bHQ6YT04PT09YT9iLnBhcmVudE5vZGU6YixiPWEubmFtZXNwYWNlVVJJfHxudWxsLGE9YS50YWdOYW1lLGI9bGIoYixhKX1FKEVoKTtHKEVoLGIpfWZ1bmN0aW9uIEpoKCl7RShFaCk7RShGaCk7RShHaCl9XG5mdW5jdGlvbiBLaChhKXtIaChHaC5jdXJyZW50KTt2YXIgYj1IaChFaC5jdXJyZW50KTt2YXIgYz1sYihiLGEudHlwZSk7YiE9PWMmJihHKEZoLGEpLEcoRWgsYykpfWZ1bmN0aW9uIExoKGEpe0ZoLmN1cnJlbnQ9PT1hJiYoRShFaCksRShGaCkpfXZhciBNPVVmKDApO1xuZnVuY3Rpb24gTWgoYSl7Zm9yKHZhciBiPWE7bnVsbCE9PWI7KXtpZigxMz09PWIudGFnKXt2YXIgYz1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsPT09Y3x8XCIkP1wiPT09Yy5kYXRhfHxcIiQhXCI9PT1jLmRhdGEpKXJldHVybiBifWVsc2UgaWYoMTk9PT1iLnRhZyYmdm9pZCAwIT09Yi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYn1lbHNlIGlmKG51bGwhPT1iLmNoaWxkKXtiLmNoaWxkLnJldHVybj1iO2I9Yi5jaGlsZDtjb250aW51ZX1pZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIE5oPVtdO1xuZnVuY3Rpb24gT2goKXtmb3IodmFyIGE9MDthPE5oLmxlbmd0aDthKyspTmhbYV0uX3dvcmtJblByb2dyZXNzVmVyc2lvblByaW1hcnk9bnVsbDtOaC5sZW5ndGg9MH12YXIgUGg9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixRaD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxSaD0wLE49bnVsbCxPPW51bGwsUD1udWxsLFNoPSExLFRoPSExLFVoPTAsVmg9MDtmdW5jdGlvbiBRKCl7dGhyb3cgRXJyb3IocCgzMjEpKTt9ZnVuY3Rpb24gV2goYSxiKXtpZihudWxsPT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoJiZjPGEubGVuZ3RoO2MrKylpZighSGUoYVtjXSxiW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH1cbmZ1bmN0aW9uIFhoKGEsYixjLGQsZSxmKXtSaD1mO049YjtiLm1lbW9pemVkU3RhdGU9bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7Yi5sYW5lcz0wO1BoLmN1cnJlbnQ9bnVsbD09PWF8fG51bGw9PT1hLm1lbW9pemVkU3RhdGU/WWg6Wmg7YT1jKGQsZSk7aWYoVGgpe2Y9MDtkb3tUaD0hMTtVaD0wO2lmKDI1PD1mKXRocm93IEVycm9yKHAoMzAxKSk7Zis9MTtQPU89bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7UGguY3VycmVudD0kaDthPWMoZCxlKX13aGlsZShUaCl9UGguY3VycmVudD1haTtiPW51bGwhPT1PJiZudWxsIT09Ty5uZXh0O1JoPTA7UD1PPU49bnVsbDtTaD0hMTtpZihiKXRocm93IEVycm9yKHAoMzAwKSk7cmV0dXJuIGF9ZnVuY3Rpb24gYmkoKXt2YXIgYT0wIT09VWg7VWg9MDtyZXR1cm4gYX1cbmZ1bmN0aW9uIGNpKCl7dmFyIGE9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hO3JldHVybiBQfWZ1bmN0aW9uIGRpKCl7aWYobnVsbD09PU8pe3ZhciBhPU4uYWx0ZXJuYXRlO2E9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBhPU8ubmV4dDt2YXIgYj1udWxsPT09UD9OLm1lbW9pemVkU3RhdGU6UC5uZXh0O2lmKG51bGwhPT1iKVA9YixPPWE7ZWxzZXtpZihudWxsPT09YSl0aHJvdyBFcnJvcihwKDMxMCkpO089YTthPXttZW1vaXplZFN0YXRlOk8ubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6Ty5iYXNlU3RhdGUsYmFzZVF1ZXVlOk8uYmFzZVF1ZXVlLHF1ZXVlOk8ucXVldWUsbmV4dDpudWxsfTtudWxsPT09UD9OLm1lbW9pemVkU3RhdGU9UD1hOlA9UC5uZXh0PWF9cmV0dXJuIFB9XG5mdW5jdGlvbiBlaShhLGIpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yn1cbmZ1bmN0aW9uIGZpKGEpe3ZhciBiPWRpKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9TyxlPWQuYmFzZVF1ZXVlLGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXtpZihudWxsIT09ZSl7dmFyIGc9ZS5uZXh0O2UubmV4dD1mLm5leHQ7Zi5uZXh0PWd9ZC5iYXNlUXVldWU9ZT1mO2MucGVuZGluZz1udWxsfWlmKG51bGwhPT1lKXtmPWUubmV4dDtkPWQuYmFzZVN0YXRlO3ZhciBoPWc9bnVsbCxrPW51bGwsbD1mO2Rve3ZhciBtPWwubGFuZTtpZigoUmgmbSk9PT1tKW51bGwhPT1rJiYoaz1rLm5leHQ9e2xhbmU6MCxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZD1sLmhhc0VhZ2VyU3RhdGU/bC5lYWdlclN0YXRlOmEoZCxsLmFjdGlvbik7ZWxzZXt2YXIgcT17bGFuZTptLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxcbmVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH07bnVsbD09PWs/KGg9az1xLGc9ZCk6az1rLm5leHQ9cTtOLmxhbmVzfD1tO2hofD1tfWw9bC5uZXh0fXdoaWxlKG51bGwhPT1sJiZsIT09Zik7bnVsbD09PWs/Zz1kOmsubmV4dD1oO0hlKGQsYi5tZW1vaXplZFN0YXRlKXx8KFVnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZDtiLmJhc2VTdGF0ZT1nO2IuYmFzZVF1ZXVlPWs7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1kfWE9Yy5pbnRlcmxlYXZlZDtpZihudWxsIT09YSl7ZT1hO2RvIGY9ZS5sYW5lLE4ubGFuZXN8PWYsaGh8PWYsZT1lLm5leHQ7d2hpbGUoZSE9PWEpfWVsc2UgbnVsbD09PWUmJihjLmxhbmVzPTApO3JldHVybltiLm1lbW9pemVkU3RhdGUsYy5kaXNwYXRjaF19XG5mdW5jdGlvbiBnaShhKXt2YXIgYj1kaSgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPWMuZGlzcGF0Y2gsZT1jLnBlbmRpbmcsZj1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUpe2MucGVuZGluZz1udWxsO3ZhciBnPWU9ZS5uZXh0O2RvIGY9YShmLGcuYWN0aW9uKSxnPWcubmV4dDt3aGlsZShnIT09ZSk7SGUoZixiLm1lbW9pemVkU3RhdGUpfHwoVWc9ITApO2IubWVtb2l6ZWRTdGF0ZT1mO251bGw9PT1iLmJhc2VRdWV1ZSYmKGIuYmFzZVN0YXRlPWYpO2MubGFzdFJlbmRlcmVkU3RhdGU9Zn1yZXR1cm5bZixkXX1mdW5jdGlvbiBoaSgpe31cbmZ1bmN0aW9uIGlpKGEsYil7dmFyIGM9TixkPWRpKCksZT1iKCksZj0hSGUoZC5tZW1vaXplZFN0YXRlLGUpO2YmJihkLm1lbW9pemVkU3RhdGU9ZSxVZz0hMCk7ZD1kLnF1ZXVlO2ppKGtpLmJpbmQobnVsbCxjLGQsYSksW2FdKTtpZihkLmdldFNuYXBzaG90IT09Ynx8Znx8bnVsbCE9PVAmJlAubWVtb2l6ZWRTdGF0ZS50YWcmMSl7Yy5mbGFnc3w9MjA0ODtsaSg5LG1pLmJpbmQobnVsbCxjLGQsZSxiKSx2b2lkIDAsbnVsbCk7aWYobnVsbD09PVIpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KFJoJjMwKXx8bmkoYyxiLGUpfXJldHVybiBlfWZ1bmN0aW9uIG5pKGEsYixjKXthLmZsYWdzfD0xNjM4NDthPXtnZXRTbmFwc2hvdDpiLHZhbHVlOmN9O2I9Ti51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxOLnVwZGF0ZVF1ZXVlPWIsYi5zdG9yZXM9W2FdKTooYz1iLnN0b3JlcyxudWxsPT09Yz9iLnN0b3Jlcz1bYV06Yy5wdXNoKGEpKX1cbmZ1bmN0aW9uIG1pKGEsYixjLGQpe2IudmFsdWU9YztiLmdldFNuYXBzaG90PWQ7b2koYikmJnBpKGEpfWZ1bmN0aW9uIGtpKGEsYixjKXtyZXR1cm4gYyhmdW5jdGlvbigpe29pKGIpJiZwaShhKX0pfWZ1bmN0aW9uIG9pKGEpe3ZhciBiPWEuZ2V0U25hcHNob3Q7YT1hLnZhbHVlO3RyeXt2YXIgYz1iKCk7cmV0dXJuIUhlKGEsYyl9Y2F0Y2goZCl7cmV0dXJuITB9fWZ1bmN0aW9uIHBpKGEpe3ZhciBiPVpnKGEsMSk7bnVsbCE9PWImJm1oKGIsYSwxLC0xKX1cbmZ1bmN0aW9uIHFpKGEpe3ZhciBiPWNpKCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGEmJihhPWEoKSk7Yi5tZW1vaXplZFN0YXRlPWIuYmFzZVN0YXRlPWE7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZWksbGFzdFJlbmRlcmVkU3RhdGU6YX07Yi5xdWV1ZT1hO2E9YS5kaXNwYXRjaD1yaS5iaW5kKG51bGwsTixhKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGFdfVxuZnVuY3Rpb24gbGkoYSxiLGMsZCl7YT17dGFnOmEsY3JlYXRlOmIsZGVzdHJveTpjLGRlcHM6ZCxuZXh0Om51bGx9O2I9Ti51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxOLnVwZGF0ZVF1ZXVlPWIsYi5sYXN0RWZmZWN0PWEubmV4dD1hKTooYz1iLmxhc3RFZmZlY3QsbnVsbD09PWM/Yi5sYXN0RWZmZWN0PWEubmV4dD1hOihkPWMubmV4dCxjLm5leHQ9YSxhLm5leHQ9ZCxiLmxhc3RFZmZlY3Q9YSkpO3JldHVybiBhfWZ1bmN0aW9uIHNpKCl7cmV0dXJuIGRpKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiB0aShhLGIsYyxkKXt2YXIgZT1jaSgpO04uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxpKDF8YixjLHZvaWQgMCx2b2lkIDA9PT1kP251bGw6ZCl9XG5mdW5jdGlvbiB1aShhLGIsYyxkKXt2YXIgZT1kaSgpO2Q9dm9pZCAwPT09ZD9udWxsOmQ7dmFyIGY9dm9pZCAwO2lmKG51bGwhPT1PKXt2YXIgZz1PLm1lbW9pemVkU3RhdGU7Zj1nLmRlc3Ryb3k7aWYobnVsbCE9PWQmJldoKGQsZy5kZXBzKSl7ZS5tZW1vaXplZFN0YXRlPWxpKGIsYyxmLGQpO3JldHVybn19Ti5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9bGkoMXxiLGMsZixkKX1mdW5jdGlvbiB2aShhLGIpe3JldHVybiB0aSg4MzkwNjU2LDgsYSxiKX1mdW5jdGlvbiBqaShhLGIpe3JldHVybiB1aSgyMDQ4LDgsYSxiKX1mdW5jdGlvbiB3aShhLGIpe3JldHVybiB1aSg0LDIsYSxiKX1mdW5jdGlvbiB4aShhLGIpe3JldHVybiB1aSg0LDQsYSxiKX1cbmZ1bmN0aW9uIHlpKGEsYil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGE9YSgpLGIoYSksZnVuY3Rpb24oKXtiKG51bGwpfTtpZihudWxsIT09YiYmdm9pZCAwIT09YilyZXR1cm4gYT1hKCksYi5jdXJyZW50PWEsZnVuY3Rpb24oKXtiLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gemkoYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiB1aSg0LDQseWkuYmluZChudWxsLGIsYSksYyl9ZnVuY3Rpb24gQWkoKXt9ZnVuY3Rpb24gQmkoYSxiKXt2YXIgYz1kaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmV2goYixkWzFdKSlyZXR1cm4gZFswXTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9XG5mdW5jdGlvbiBDaShhLGIpe3ZhciBjPWRpKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZXaChiLGRbMV0pKXJldHVybiBkWzBdO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiBEaShhLGIsYyl7aWYoMD09PShSaCYyMSkpcmV0dXJuIGEuYmFzZVN0YXRlJiYoYS5iYXNlU3RhdGU9ITEsVWc9ITApLGEubWVtb2l6ZWRTdGF0ZT1jO0hlKGMsYil8fChjPXljKCksTi5sYW5lc3w9YyxoaHw9YyxhLmJhc2VTdGF0ZT0hMCk7cmV0dXJuIGJ9ZnVuY3Rpb24gRWkoYSxiKXt2YXIgYz1DO0M9MCE9PWMmJjQ+Yz9jOjQ7YSghMCk7dmFyIGQ9UWgudHJhbnNpdGlvbjtRaC50cmFuc2l0aW9uPXt9O3RyeXthKCExKSxiKCl9ZmluYWxseXtDPWMsUWgudHJhbnNpdGlvbj1kfX1mdW5jdGlvbiBGaSgpe3JldHVybiBkaSgpLm1lbW9pemVkU3RhdGV9XG5mdW5jdGlvbiBHaShhLGIsYyl7dmFyIGQ9bGgoYSk7Yz17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoSGkoYSkpSWkoYixjKTtlbHNlIGlmKGM9WWcoYSxiLGMsZCksbnVsbCE9PWMpe3ZhciBlPUwoKTttaChjLGEsZCxlKTtKaShjLGIsZCl9fVxuZnVuY3Rpb24gcmkoYSxiLGMpe3ZhciBkPWxoKGEpLGU9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKEhpKGEpKUlpKGIsZSk7ZWxzZXt2YXIgZj1hLmFsdGVybmF0ZTtpZigwPT09YS5sYW5lcyYmKG51bGw9PT1mfHwwPT09Zi5sYW5lcykmJihmPWIubGFzdFJlbmRlcmVkUmVkdWNlcixudWxsIT09ZikpdHJ5e3ZhciBnPWIubGFzdFJlbmRlcmVkU3RhdGUsaD1mKGcsYyk7ZS5oYXNFYWdlclN0YXRlPSEwO2UuZWFnZXJTdGF0ZT1oO2lmKEhlKGgsZykpe3ZhciBrPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWs/KGUubmV4dD1lLFhnKGIpKTooZS5uZXh0PWsubmV4dCxrLm5leHQ9ZSk7Yi5pbnRlcmxlYXZlZD1lO3JldHVybn19Y2F0Y2gobCl7fWZpbmFsbHl7fWM9WWcoYSxiLGUsZCk7bnVsbCE9PWMmJihlPUwoKSxtaChjLGEsZCxlKSxKaShjLGIsZCkpfX1cbmZ1bmN0aW9uIEhpKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO3JldHVybiBhPT09Tnx8bnVsbCE9PWImJmI9PT1OfWZ1bmN0aW9uIElpKGEsYil7VGg9U2g9ITA7dmFyIGM9YS5wZW5kaW5nO251bGw9PT1jP2IubmV4dD1iOihiLm5leHQ9Yy5uZXh0LGMubmV4dD1iKTthLnBlbmRpbmc9Yn1mdW5jdGlvbiBKaShhLGIsYyl7aWYoMCE9PShjJjQxOTQyNDApKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxudmFyIGFpPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpRLHVzZUNvbnRleHQ6USx1c2VFZmZlY3Q6USx1c2VJbXBlcmF0aXZlSGFuZGxlOlEsdXNlSW5zZXJ0aW9uRWZmZWN0OlEsdXNlTGF5b3V0RWZmZWN0OlEsdXNlTWVtbzpRLHVzZVJlZHVjZXI6USx1c2VSZWY6USx1c2VTdGF0ZTpRLHVzZURlYnVnVmFsdWU6USx1c2VEZWZlcnJlZFZhbHVlOlEsdXNlVHJhbnNpdGlvbjpRLHVzZU11dGFibGVTb3VyY2U6USx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpRLHVzZUlkOlEsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxZaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXtjaSgpLm1lbW9pemVkU3RhdGU9W2Esdm9pZCAwPT09Yj9udWxsOmJdO3JldHVybiBhfSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDp2aSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gdGkoNDE5NDMwOCxcbjQseWkuYmluZChudWxsLGIsYSksYyl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aSg0MTk0MzA4LDQsYSxiKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRpKDQsMixhLGIpfSx1c2VNZW1vOmZ1bmN0aW9uKGEsYil7dmFyIGM9Y2koKTtiPXZvaWQgMD09PWI/bnVsbDpiO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Y2koKTtiPXZvaWQgMCE9PWM/YyhiKTpiO2QubWVtb2l6ZWRTdGF0ZT1kLmJhc2VTdGF0ZT1iO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmEsbGFzdFJlbmRlcmVkU3RhdGU6Yn07ZC5xdWV1ZT1hO2E9YS5kaXNwYXRjaD1HaS5iaW5kKG51bGwsTixhKTtyZXR1cm5bZC5tZW1vaXplZFN0YXRlLGFdfSx1c2VSZWY6ZnVuY3Rpb24oYSl7dmFyIGI9XG5jaSgpO2E9e2N1cnJlbnQ6YX07cmV0dXJuIGIubWVtb2l6ZWRTdGF0ZT1hfSx1c2VTdGF0ZTpxaSx1c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGNpKCkubWVtb2l6ZWRTdGF0ZT1hfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9cWkoITEpLGI9YVswXTthPUVpLmJpbmQobnVsbCxhWzFdKTtjaSgpLm1lbW9pemVkU3RhdGU9YTtyZXR1cm5bYixhXX0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbigpe30sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU4sZT1jaSgpO2lmKEkpe2lmKHZvaWQgMD09PWMpdGhyb3cgRXJyb3IocCg0MDcpKTtjPWMoKX1lbHNle2M9YigpO2lmKG51bGw9PT1SKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShSaCYzMCl8fG5pKGQsYixjKX1lLm1lbW9pemVkU3RhdGU9Yzt2YXIgZj17dmFsdWU6YyxnZXRTbmFwc2hvdDpifTtlLnF1ZXVlPWY7dmkoa2kuYmluZChudWxsLGQsXG5mLGEpLFthXSk7ZC5mbGFnc3w9MjA0ODtsaSg5LG1pLmJpbmQobnVsbCxkLGYsYyxiKSx2b2lkIDAsbnVsbCk7cmV0dXJuIGN9LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGE9Y2koKSxiPVIuaWRlbnRpZmllclByZWZpeDtpZihJKXt2YXIgYz1zZzt2YXIgZD1yZztjPShkJn4oMTw8MzItb2MoZCktMSkpLnRvU3RyaW5nKDMyKStjO2I9XCI6XCIrYitcIlJcIitjO2M9VWgrKzswPGMmJihiKz1cIkhcIitjLnRvU3RyaW5nKDMyKSk7Yis9XCI6XCJ9ZWxzZSBjPVZoKyssYj1cIjpcIitiK1wiclwiK2MudG9TdHJpbmcoMzIpK1wiOlwiO3JldHVybiBhLm1lbW9pemVkU3RhdGU9Yn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxaaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6QmksdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6amksdXNlSW1wZXJhdGl2ZUhhbmRsZTp6aSx1c2VJbnNlcnRpb25FZmZlY3Q6d2ksdXNlTGF5b3V0RWZmZWN0OnhpLHVzZU1lbW86Q2ksdXNlUmVkdWNlcjpmaSx1c2VSZWY6c2ksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZmkoZWkpfSxcbnVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1kaSgpO3JldHVybiBEaShiLE8ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWZpKGVpKVswXSxiPWRpKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpoaSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTppaSx1c2VJZDpGaSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LCRoPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpCaSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDpqaSx1c2VJbXBlcmF0aXZlSGFuZGxlOnppLHVzZUluc2VydGlvbkVmZmVjdDp3aSx1c2VMYXlvdXRFZmZlY3Q6eGksdXNlTWVtbzpDaSx1c2VSZWR1Y2VyOmdpLHVzZVJlZjpzaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBnaShlaSl9LHVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1kaSgpO3JldHVybiBudWxsPT09XG5PP2IubWVtb2l6ZWRTdGF0ZT1hOkRpKGIsTy5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9Z2koZWkpWzBdLGI9ZGkoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOmhpLHVzZVN5bmNFeHRlcm5hbFN0b3JlOmlpLHVzZUlkOkZpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX07ZnVuY3Rpb24gS2koYSxiKXt0cnl7dmFyIGM9XCJcIixkPWI7ZG8gYys9UGEoZCksZD1kLnJldHVybjt3aGlsZShkKTt2YXIgZT1jfWNhdGNoKGYpe2U9XCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIitmLm1lc3NhZ2UrXCJcXG5cIitmLnN0YWNrfXJldHVybnt2YWx1ZTphLHNvdXJjZTpiLHN0YWNrOmUsZGlnZXN0Om51bGx9fWZ1bmN0aW9uIExpKGEsYixjKXtyZXR1cm57dmFsdWU6YSxzb3VyY2U6bnVsbCxzdGFjazpudWxsIT1jP2M6bnVsbCxkaWdlc3Q6bnVsbCE9Yj9iOm51bGx9fVxuZnVuY3Rpb24gTWkoYSxiKXt0cnl7Y29uc29sZS5lcnJvcihiLnZhbHVlKX1jYXRjaChjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX19dmFyIE5pPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIE9pKGEsYixjKXtjPWNoKC0xLGMpO2MudGFnPTM7Yy5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciBkPWIudmFsdWU7Yy5jYWxsYmFjaz1mdW5jdGlvbigpe1BpfHwoUGk9ITAsUWk9ZCk7TWkoYSxiKX07cmV0dXJuIGN9XG5mdW5jdGlvbiBSaShhLGIsYyl7Yz1jaCgtMSxjKTtjLnRhZz0zO3ZhciBkPWEudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIGQoZSl9O2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaShhLGIpfX12YXIgZj1hLnN0YXRlTm9kZTtudWxsIT09ZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuY29tcG9uZW50RGlkQ2F0Y2gmJihjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TWkoYSxiKTtcImZ1bmN0aW9uXCIhPT10eXBlb2YgZCYmKG51bGw9PT1TaT9TaT1uZXcgU2V0KFt0aGlzXSk6U2kuYWRkKHRoaXMpKTt2YXIgYz1iLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goYi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWM/YzpcIlwifSl9KTtyZXR1cm4gY31cbmZ1bmN0aW9uIFRpKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtpZihudWxsPT09ZCl7ZD1hLnBpbmdDYWNoZT1uZXcgTmk7dmFyIGU9bmV3IFNldDtkLnNldChiLGUpfWVsc2UgZT1kLmdldChiKSx2b2lkIDA9PT1lJiYoZT1uZXcgU2V0LGQuc2V0KGIsZSkpO2UuaGFzKGMpfHwoZS5hZGQoYyksYT1VaS5iaW5kKG51bGwsYSxiLGMpLGIudGhlbihhLGEpKX1mdW5jdGlvbiBWaShhKXtkb3t2YXIgYjtpZihiPTEzPT09YS50YWcpYj1hLm1lbW9pemVkU3RhdGUsYj1udWxsIT09Yj9udWxsIT09Yi5kZWh5ZHJhdGVkPyEwOiExOiEwO2lmKGIpcmV0dXJuIGE7YT1hLnJldHVybn13aGlsZShudWxsIT09YSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBXaShhLGIsYyxkLGUpe2lmKDA9PT0oYS5tb2RlJjEpKXJldHVybiBhPT09Yj9hLmZsYWdzfD02NTUzNjooYS5mbGFnc3w9MTI4LGMuZmxhZ3N8PTEzMTA3MixjLmZsYWdzJj0tNTI4MDUsMT09PWMudGFnJiYobnVsbD09PWMuYWx0ZXJuYXRlP2MudGFnPTE3OihiPWNoKC0xLDEpLGIudGFnPTIsZGgoYyxiLDEpKSksYy5sYW5lc3w9MSksYTthLmZsYWdzfD02NTUzNjthLmxhbmVzPWU7cmV0dXJuIGF9dmFyIFhpPXVhLlJlYWN0Q3VycmVudE93bmVyLFVnPSExO2Z1bmN0aW9uIFlpKGEsYixjLGQpe2IuY2hpbGQ9bnVsbD09PWE/Q2goYixudWxsLGMsZCk6QmgoYixhLmNoaWxkLGMsZCl9XG5mdW5jdGlvbiBaaShhLGIsYyxkLGUpe2M9Yy5yZW5kZXI7dmFyIGY9Yi5yZWY7VGcoYixlKTtkPVhoKGEsYixjLGQsZixlKTtjPWJpKCk7aWYobnVsbCE9PWEmJiFVZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLCRpKGEsYixlKTtJJiZjJiZ2ZyhiKTtiLmZsYWdzfD0xO1lpKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gYWooYSxiLGMsZCxlKXtpZihudWxsPT09YSl7dmFyIGY9Yy50eXBlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYhYmooZikmJnZvaWQgMD09PWYuZGVmYXVsdFByb3BzJiZudWxsPT09Yy5jb21wYXJlJiZ2b2lkIDA9PT1jLmRlZmF1bHRQcm9wcylyZXR1cm4gYi50YWc9MTUsYi50eXBlPWYsY2ooYSxiLGYsZCxlKTthPXloKGMudHlwZSxudWxsLGQsYixiLm1vZGUsZSk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfWY9YS5jaGlsZDtpZigwPT09KGEubGFuZXMmZSkpe3ZhciBnPWYubWVtb2l6ZWRQcm9wcztjPWMuY29tcGFyZTtjPW51bGwhPT1jP2M6SWU7aWYoYyhnLGQpJiZhLnJlZj09PWIucmVmKXJldHVybiAkaShhLGIsZSl9Yi5mbGFnc3w9MTthPXdoKGYsZCk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfVxuZnVuY3Rpb24gY2ooYSxiLGMsZCxlKXtpZihudWxsIT09YSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKEllKGYsZCkmJmEucmVmPT09Yi5yZWYpaWYoVWc9ITEsYi5wZW5kaW5nUHJvcHM9ZD1mLDAhPT0oYS5sYW5lcyZlKSkwIT09KGEuZmxhZ3MmMTMxMDcyKSYmKFVnPSEwKTtlbHNlIHJldHVybiBiLmxhbmVzPWEubGFuZXMsJGkoYSxiLGUpfXJldHVybiBkaihhLGIsYyxkLGUpfVxuZnVuY3Rpb24gZWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5jaGlsZHJlbixmPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKFwiaGlkZGVuXCI9PT1kLm1vZGUpaWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxHKGZqLGdqKSxnanw9YztlbHNle2lmKDA9PT0oYyYxMDczNzQxODI0KSlyZXR1cm4gYT1udWxsIT09Zj9mLmJhc2VMYW5lc3xjOmMsYi5sYW5lcz1iLmNoaWxkTGFuZXM9MTA3Mzc0MTgyNCxiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LGIudXBkYXRlUXVldWU9bnVsbCxHKGZqLGdqKSxnanw9YSxudWxsO2IubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH07ZD1udWxsIT09Zj9mLmJhc2VMYW5lczpjO0coZmosZ2opO2dqfD1kfWVsc2UgbnVsbCE9PVxuZj8oZD1mLmJhc2VMYW5lc3xjLGIubWVtb2l6ZWRTdGF0ZT1udWxsKTpkPWMsRyhmaixnaiksZ2p8PWQ7WWkoYSxiLGUsYyk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gaGooYSxiKXt2YXIgYz1iLnJlZjtpZihudWxsPT09YSYmbnVsbCE9PWN8fG51bGwhPT1hJiZhLnJlZiE9PWMpYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTJ9ZnVuY3Rpb24gZGooYSxiLGMsZCxlKXt2YXIgZj1aZihjKT9YZjpILmN1cnJlbnQ7Zj1ZZihiLGYpO1RnKGIsZSk7Yz1YaChhLGIsYyxkLGYsZSk7ZD1iaSgpO2lmKG51bGwhPT1hJiYhVWcpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSwkaShhLGIsZSk7SSYmZCYmdmcoYik7Yi5mbGFnc3w9MTtZaShhLGIsYyxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGlqKGEsYixjLGQsZSl7aWYoWmYoYykpe3ZhciBmPSEwO2NnKGIpfWVsc2UgZj0hMTtUZyhiLGUpO2lmKG51bGw9PT1iLnN0YXRlTm9kZSlqaihhLGIpLHBoKGIsYyxkKSxyaChiLGMsZCxlKSxkPSEwO2Vsc2UgaWYobnVsbD09PWEpe3ZhciBnPWIuc3RhdGVOb2RlLGg9Yi5tZW1vaXplZFByb3BzO2cucHJvcHM9aDt2YXIgaz1nLmNvbnRleHQsbD1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgbCYmbnVsbCE9PWw/bD1WZyhsKToobD1aZihjKT9YZjpILmN1cnJlbnQsbD1ZZihiLGwpKTt2YXIgbT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyxxPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBtfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtxfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8XG4oaCE9PWR8fGshPT1sKSYmcWgoYixnLGQsbCk7JGc9ITE7dmFyIHI9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtnaChiLGQsZyxlKTtrPWIubWVtb2l6ZWRTdGF0ZTtoIT09ZHx8ciE9PWt8fFdmLmN1cnJlbnR8fCRnPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgbSYmKGtoKGIsYyxtLGQpLGs9Yi5tZW1vaXplZFN0YXRlKSwoaD0kZ3x8b2goYixjLGgsZCxyLGssbCkpPyhxfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnR8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnQmJmcuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCkpOlxuKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPWspLGcucHJvcHM9ZCxnLnN0YXRlPWssZy5jb250ZXh0PWwsZD1oKTooXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxkPSExKX1lbHNle2c9Yi5zdGF0ZU5vZGU7YmgoYSxiKTtoPWIubWVtb2l6ZWRQcm9wcztsPWIudHlwZT09PWIuZWxlbWVudFR5cGU/aDpMZyhiLnR5cGUsaCk7Zy5wcm9wcz1sO3E9Yi5wZW5kaW5nUHJvcHM7cj1nLmNvbnRleHQ7az1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWs/az1WZyhrKTooaz1aZihjKT9YZjpILmN1cnJlbnQsaz1ZZihiLGspKTt2YXIgeT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczsobT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgeXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcblwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PXF8fHIhPT1rKSYmcWgoYixnLGQsayk7JGc9ITE7cj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2doKGIsZCxnLGUpO3ZhciBuPWIubWVtb2l6ZWRTdGF0ZTtoIT09cXx8ciE9PW58fFdmLmN1cnJlbnR8fCRnPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgeSYmKGtoKGIsYyx5LGQpLG49Yi5tZW1vaXplZFN0YXRlKSwobD0kZ3x8b2goYixjLGwsZCxyLG4sayl8fCExKT8obXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGV8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlJiZnLmNvbXBvbmVudFdpbGxVcGRhdGUoZCxuLGspLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcbmcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoZCxuLGspKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGUmJihiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKGIuZmxhZ3N8PTEwMjQpKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9biksZy5wcm9wcz1kLGcuc3RhdGU9bixnLmNvbnRleHQ9ayxkPWwpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1cbmEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksZD0hMSl9cmV0dXJuIGtqKGEsYixjLGQsZixlKX1cbmZ1bmN0aW9uIGtqKGEsYixjLGQsZSxmKXtoaihhLGIpO3ZhciBnPTAhPT0oYi5mbGFncyYxMjgpO2lmKCFkJiYhZylyZXR1cm4gZSYmZGcoYixjLCExKSwkaShhLGIsZik7ZD1iLnN0YXRlTm9kZTtYaS5jdXJyZW50PWI7dmFyIGg9ZyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGMuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ZC5yZW5kZXIoKTtiLmZsYWdzfD0xO251bGwhPT1hJiZnPyhiLmNoaWxkPUJoKGIsYS5jaGlsZCxudWxsLGYpLGIuY2hpbGQ9QmgoYixudWxsLGgsZikpOllpKGEsYixoLGYpO2IubWVtb2l6ZWRTdGF0ZT1kLnN0YXRlO2UmJmRnKGIsYywhMCk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gbGooYSl7dmFyIGI9YS5zdGF0ZU5vZGU7Yi5wZW5kaW5nQ29udGV4dD9hZyhhLGIucGVuZGluZ0NvbnRleHQsYi5wZW5kaW5nQ29udGV4dCE9PWIuY29udGV4dCk6Yi5jb250ZXh0JiZhZyhhLGIuY29udGV4dCwhMSk7SWgoYSxiLmNvbnRhaW5lckluZm8pfVxuZnVuY3Rpb24gbWooYSxiLGMsZCxlKXtJZygpO0pnKGUpO2IuZmxhZ3N8PTI1NjtZaShhLGIsYyxkKTtyZXR1cm4gYi5jaGlsZH12YXIgbmo9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBvaihhKXtyZXR1cm57YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19XG5mdW5jdGlvbiBwaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1NLmN1cnJlbnQsZj0hMSxnPTAhPT0oYi5mbGFncyYxMjgpLGg7KGg9Zyl8fChoPW51bGwhPT1hJiZudWxsPT09YS5tZW1vaXplZFN0YXRlPyExOjAhPT0oZSYyKSk7aWYoaClmPSEwLGIuZmxhZ3MmPS0xMjk7ZWxzZSBpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSllfD0xO0coTSxlJjEpO2lmKG51bGw9PT1hKXtFZyhiKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmKGE9YS5kZWh5ZHJhdGVkLG51bGwhPT1hKSlyZXR1cm4gMD09PShiLm1vZGUmMSk/Yi5sYW5lcz0xOlwiJCFcIj09PWEuZGF0YT9iLmxhbmVzPTg6Yi5sYW5lcz0xMDczNzQxODI0LG51bGw7Zz1kLmNoaWxkcmVuO2E9ZC5mYWxsYmFjaztyZXR1cm4gZj8oZD1iLm1vZGUsZj1iLmNoaWxkLGc9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpnfSwwPT09KGQmMSkmJm51bGwhPT1mPyhmLmNoaWxkTGFuZXM9MCxmLnBlbmRpbmdQcm9wcz1cbmcpOmY9cWooZyxkLDAsbnVsbCksYT1BaChhLGQsYyxudWxsKSxmLnJldHVybj1iLGEucmV0dXJuPWIsZi5zaWJsaW5nPWEsYi5jaGlsZD1mLGIuY2hpbGQubWVtb2l6ZWRTdGF0ZT1vaihjKSxiLm1lbW9pemVkU3RhdGU9bmosYSk6cmooYixnKX1lPWEubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSYmKGg9ZS5kZWh5ZHJhdGVkLG51bGwhPT1oKSlyZXR1cm4gc2ooYSxiLGcsZCxoLGUsYyk7aWYoZil7Zj1kLmZhbGxiYWNrO2c9Yi5tb2RlO2U9YS5jaGlsZDtoPWUuc2libGluZzt2YXIgaz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmQuY2hpbGRyZW59OzA9PT0oZyYxKSYmYi5jaGlsZCE9PWU/KGQ9Yi5jaGlsZCxkLmNoaWxkTGFuZXM9MCxkLnBlbmRpbmdQcm9wcz1rLGIuZGVsZXRpb25zPW51bGwpOihkPXdoKGUsayksZC5zdWJ0cmVlRmxhZ3M9ZS5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQpO251bGwhPT1oP2Y9d2goaCxmKTooZj1BaChmLGcsYyxudWxsKSxmLmZsYWdzfD0yKTtmLnJldHVybj1cbmI7ZC5yZXR1cm49YjtkLnNpYmxpbmc9ZjtiLmNoaWxkPWQ7ZD1mO2Y9Yi5jaGlsZDtnPWEuY2hpbGQubWVtb2l6ZWRTdGF0ZTtnPW51bGw9PT1nP29qKGMpOntiYXNlTGFuZXM6Zy5iYXNlTGFuZXN8YyxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfTtmLm1lbW9pemVkU3RhdGU9ZztmLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzJn5jO2IubWVtb2l6ZWRTdGF0ZT1uajtyZXR1cm4gZH1mPWEuY2hpbGQ7YT1mLnNpYmxpbmc7ZD13aChmLHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59KTswPT09KGIubW9kZSYxKSYmKGQubGFuZXM9Yyk7ZC5yZXR1cm49YjtkLnNpYmxpbmc9bnVsbDtudWxsIT09YSYmKGM9Yi5kZWxldGlvbnMsbnVsbD09PWM/KGIuZGVsZXRpb25zPVthXSxiLmZsYWdzfD0xNik6Yy5wdXNoKGEpKTtiLmNoaWxkPWQ7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGR9XG5mdW5jdGlvbiByaihhLGIpe2I9cWooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46Yn0sYS5tb2RlLDAsbnVsbCk7Yi5yZXR1cm49YTtyZXR1cm4gYS5jaGlsZD1ifWZ1bmN0aW9uIHRqKGEsYixjLGQpe251bGwhPT1kJiZKZyhkKTtCaChiLGEuY2hpbGQsbnVsbCxjKTthPXJqKGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pO2EuZmxhZ3N8PTI7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGF9XG5mdW5jdGlvbiBzaihhLGIsYyxkLGUsZixnKXtpZihjKXtpZihiLmZsYWdzJjI1NilyZXR1cm4gYi5mbGFncyY9LTI1NyxkPUxpKEVycm9yKHAoNDIyKSkpLHRqKGEsYixnLGQpO2lmKG51bGwhPT1iLm1lbW9pemVkU3RhdGUpcmV0dXJuIGIuY2hpbGQ9YS5jaGlsZCxiLmZsYWdzfD0xMjgsbnVsbDtmPWQuZmFsbGJhY2s7ZT1iLm1vZGU7ZD1xaih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSxlLDAsbnVsbCk7Zj1BaChmLGUsZyxudWxsKTtmLmZsYWdzfD0yO2QucmV0dXJuPWI7Zi5yZXR1cm49YjtkLnNpYmxpbmc9ZjtiLmNoaWxkPWQ7MCE9PShiLm1vZGUmMSkmJkJoKGIsYS5jaGlsZCxudWxsLGcpO2IuY2hpbGQubWVtb2l6ZWRTdGF0ZT1vaihnKTtiLm1lbW9pemVkU3RhdGU9bmo7cmV0dXJuIGZ9aWYoMD09PShiLm1vZGUmMSkpcmV0dXJuIHRqKGEsYixnLG51bGwpO2lmKFwiJCFcIj09PWUuZGF0YSl7ZD1lLm5leHRTaWJsaW5nJiZlLm5leHRTaWJsaW5nLmRhdGFzZXQ7XG5pZihkKXZhciBoPWQuZGdzdDtkPWg7Zj1FcnJvcihwKDQxOSkpO2Q9TGkoZixkLHZvaWQgMCk7cmV0dXJuIHRqKGEsYixnLGQpfWg9MCE9PShnJmEuY2hpbGRMYW5lcyk7aWYoVWd8fGgpe2Q9UjtpZihudWxsIT09ZCl7c3dpdGNoKGcmLWcpe2Nhc2UgNDplPTI7YnJlYWs7Y2FzZSAxNjplPTg7YnJlYWs7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OmU9MzI7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6ZT0yNjg0MzU0NTY7YnJlYWs7ZGVmYXVsdDplPTB9ZT0wIT09KGUmKGQuc3VzcGVuZGVkTGFuZXN8ZykpPzA6ZTtcbjAhPT1lJiZlIT09Zi5yZXRyeUxhbmUmJihmLnJldHJ5TGFuZT1lLFpnKGEsZSksbWgoZCxhLGUsLTEpKX11aigpO2Q9TGkoRXJyb3IocCg0MjEpKSk7cmV0dXJuIHRqKGEsYixnLGQpfWlmKFwiJD9cIj09PWUuZGF0YSlyZXR1cm4gYi5mbGFnc3w9MTI4LGIuY2hpbGQ9YS5jaGlsZCxiPXZqLmJpbmQobnVsbCxhKSxlLl9yZWFjdFJldHJ5PWIsbnVsbDthPWYudHJlZUNvbnRleHQ7eWc9TGYoZS5uZXh0U2libGluZyk7eGc9YjtJPSEwO3pnPW51bGw7bnVsbCE9PWEmJihvZ1twZysrXT1yZyxvZ1twZysrXT1zZyxvZ1twZysrXT1xZyxyZz1hLmlkLHNnPWEub3ZlcmZsb3cscWc9Yik7Yj1yaihiLGQuY2hpbGRyZW4pO2IuZmxhZ3N8PTQwOTY7cmV0dXJuIGJ9ZnVuY3Rpb24gd2ooYSxiLGMpe2EubGFuZXN8PWI7dmFyIGQ9YS5hbHRlcm5hdGU7bnVsbCE9PWQmJihkLmxhbmVzfD1iKTtTZyhhLnJldHVybixiLGMpfVxuZnVuY3Rpb24geGooYSxiLGMsZCxlKXt2YXIgZj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWY/YS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczpiLHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6ZCx0YWlsOmMsdGFpbE1vZGU6ZX06KGYuaXNCYWNrd2FyZHM9YixmLnJlbmRlcmluZz1udWxsLGYucmVuZGVyaW5nU3RhcnRUaW1lPTAsZi5sYXN0PWQsZi50YWlsPWMsZi50YWlsTW9kZT1lKX1cbmZ1bmN0aW9uIHlqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQucmV2ZWFsT3JkZXIsZj1kLnRhaWw7WWkoYSxiLGQuY2hpbGRyZW4sYyk7ZD1NLmN1cnJlbnQ7aWYoMCE9PShkJjIpKWQ9ZCYxfDIsYi5mbGFnc3w9MTI4O2Vsc2V7aWYobnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWE6Zm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2lmKDEzPT09YS50YWcpbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmd2ooYSxjLGIpO2Vsc2UgaWYoMTk9PT1hLnRhZyl3aihhLGMsYik7ZWxzZSBpZihudWxsIT09YS5jaGlsZCl7YS5jaGlsZC5yZXR1cm49YTthPWEuY2hpbGQ7Y29udGludWV9aWYoYT09PWIpYnJlYWsgYTtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fGEucmV0dXJuPT09YilicmVhayBhO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjthPWEuc2libGluZ31kJj0xfUcoTSxkKTtpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9XG5udWxsO2Vsc2Ugc3dpdGNoKGUpe2Nhc2UgXCJmb3J3YXJkc1wiOmM9Yi5jaGlsZDtmb3IoZT1udWxsO251bGwhPT1jOylhPWMuYWx0ZXJuYXRlLG51bGwhPT1hJiZudWxsPT09TWgoYSkmJihlPWMpLGM9Yy5zaWJsaW5nO2M9ZTtudWxsPT09Yz8oZT1iLmNoaWxkLGIuY2hpbGQ9bnVsbCk6KGU9Yy5zaWJsaW5nLGMuc2libGluZz1udWxsKTt4aihiLCExLGUsYyxmKTticmVhaztjYXNlIFwiYmFja3dhcmRzXCI6Yz1udWxsO2U9Yi5jaGlsZDtmb3IoYi5jaGlsZD1udWxsO251bGwhPT1lOyl7YT1lLmFsdGVybmF0ZTtpZihudWxsIT09YSYmbnVsbD09PU1oKGEpKXtiLmNoaWxkPWU7YnJlYWt9YT1lLnNpYmxpbmc7ZS5zaWJsaW5nPWM7Yz1lO2U9YX14aihiLCEwLGMsbnVsbCxmKTticmVhaztjYXNlIFwidG9nZXRoZXJcIjp4aihiLCExLG51bGwsbnVsbCx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6Yi5tZW1vaXplZFN0YXRlPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBqaihhLGIpezA9PT0oYi5tb2RlJjEpJiZudWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmZsYWdzfD0yKX1mdW5jdGlvbiAkaShhLGIsYyl7bnVsbCE9PWEmJihiLmRlcGVuZGVuY2llcz1hLmRlcGVuZGVuY2llcyk7aGh8PWIubGFuZXM7aWYoMD09PShjJmIuY2hpbGRMYW5lcykpcmV0dXJuIG51bGw7aWYobnVsbCE9PWEmJmIuY2hpbGQhPT1hLmNoaWxkKXRocm93IEVycm9yKHAoMTUzKSk7aWYobnVsbCE9PWIuY2hpbGQpe2E9Yi5jaGlsZDtjPXdoKGEsYS5wZW5kaW5nUHJvcHMpO2IuY2hpbGQ9Yztmb3IoYy5yZXR1cm49YjtudWxsIT09YS5zaWJsaW5nOylhPWEuc2libGluZyxjPWMuc2libGluZz13aChhLGEucGVuZGluZ1Byb3BzKSxjLnJldHVybj1iO2Muc2libGluZz1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gemooYSxiLGMpe3N3aXRjaChiLnRhZyl7Y2FzZSAzOmxqKGIpO0lnKCk7YnJlYWs7Y2FzZSA1OktoKGIpO2JyZWFrO2Nhc2UgMTpaZihiLnR5cGUpJiZjZyhiKTticmVhaztjYXNlIDQ6SWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOnZhciBkPWIudHlwZS5fY29udGV4dCxlPWIubWVtb2l6ZWRQcm9wcy52YWx1ZTtHKE1nLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWU7YnJlYWs7Y2FzZSAxMzpkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCl7aWYobnVsbCE9PWQuZGVoeWRyYXRlZClyZXR1cm4gRyhNLE0uY3VycmVudCYxKSxiLmZsYWdzfD0xMjgsbnVsbDtpZigwIT09KGMmYi5jaGlsZC5jaGlsZExhbmVzKSlyZXR1cm4gcGooYSxiLGMpO0coTSxNLmN1cnJlbnQmMSk7YT0kaShhLGIsYyk7cmV0dXJuIG51bGwhPT1hP2Euc2libGluZzpudWxsfUcoTSxNLmN1cnJlbnQmMSk7YnJlYWs7Y2FzZSAxOTpkPTAhPT0oYyZcbmIuY2hpbGRMYW5lcyk7aWYoMCE9PShhLmZsYWdzJjEyOCkpe2lmKGQpcmV0dXJuIHlqKGEsYixjKTtiLmZsYWdzfD0xMjh9ZT1iLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihlLnJlbmRlcmluZz1udWxsLGUudGFpbD1udWxsLGUubGFzdEVmZmVjdD1udWxsKTtHKE0sTS5jdXJyZW50KTtpZihkKWJyZWFrO2Vsc2UgcmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBiLmxhbmVzPTAsZWooYSxiLGMpfXJldHVybiAkaShhLGIsYyl9dmFyIEFqLEJqLENqLERqO1xuQWo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yi5jaGlsZDtudWxsIT09Yzspe2lmKDU9PT1jLnRhZ3x8Nj09PWMudGFnKWEuYXBwZW5kQ2hpbGQoYy5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PWMudGFnJiZudWxsIT09Yy5jaGlsZCl7Yy5jaGlsZC5yZXR1cm49YztjPWMuY2hpbGQ7Y29udGludWV9aWYoYz09PWIpYnJlYWs7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxjLnJldHVybj09PWIpcmV0dXJuO2M9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtjPWMuc2libGluZ319O0JqPWZ1bmN0aW9uKCl7fTtcbkNqPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEubWVtb2l6ZWRQcm9wcztpZihlIT09ZCl7YT1iLnN0YXRlTm9kZTtIaChFaC5jdXJyZW50KTt2YXIgZj1udWxsO3N3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjplPVlhKGEsZSk7ZD1ZYShhLGQpO2Y9W107YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmU9QSh7fSxlLHt2YWx1ZTp2b2lkIDB9KTtkPUEoe30sZCx7dmFsdWU6dm9pZCAwfSk7Zj1bXTticmVhaztjYXNlIFwidGV4dGFyZWFcIjplPWdiKGEsZSk7ZD1nYihhLGQpO2Y9W107YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5vbkNsaWNrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX11YihjLGQpO3ZhciBnO2M9bnVsbDtmb3IobCBpbiBlKWlmKCFkLmhhc093blByb3BlcnR5KGwpJiZlLmhhc093blByb3BlcnR5KGwpJiZudWxsIT1lW2xdKWlmKFwic3R5bGVcIj09PWwpe3ZhciBoPWVbbF07Zm9yKGcgaW4gaCloLmhhc093blByb3BlcnR5KGcpJiZcbihjfHwoYz17fSksY1tnXT1cIlwiKX1lbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiIT09bCYmXCJjaGlsZHJlblwiIT09bCYmXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiZcImF1dG9Gb2N1c1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpP2Z8fChmPVtdKTooZj1mfHxbXSkucHVzaChsLG51bGwpKTtmb3IobCBpbiBkKXt2YXIgaz1kW2xdO2g9bnVsbCE9ZT9lW2xdOnZvaWQgMDtpZihkLmhhc093blByb3BlcnR5KGwpJiZrIT09aCYmKG51bGwhPWt8fG51bGwhPWgpKWlmKFwic3R5bGVcIj09PWwpaWYoaCl7Zm9yKGcgaW4gaCkhaC5oYXNPd25Qcm9wZXJ0eShnKXx8ayYmay5oYXNPd25Qcm9wZXJ0eShnKXx8KGN8fChjPXt9KSxjW2ddPVwiXCIpO2ZvcihnIGluIGspay5oYXNPd25Qcm9wZXJ0eShnKSYmaFtnXSE9PWtbZ10mJihjfHwoYz17fSksY1tnXT1rW2ddKX1lbHNlIGN8fChmfHwoZj1bXSksZi5wdXNoKGwsXG5jKSksYz1rO2Vsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1sPyhrPWs/ay5fX2h0bWw6dm9pZCAwLGg9aD9oLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmaCE9PWsmJihmPWZ8fFtdKS5wdXNoKGwsaykpOlwiY2hpbGRyZW5cIj09PWw/XCJzdHJpbmdcIiE9PXR5cGVvZiBrJiZcIm51bWJlclwiIT09dHlwZW9mIGt8fChmPWZ8fFtdKS5wdXNoKGwsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9ayYmXCJvblNjcm9sbFwiPT09bCYmRChcInNjcm9sbFwiLGEpLGZ8fGg9PT1rfHwoZj1bXSkpOihmPWZ8fFtdKS5wdXNoKGwsaykpfWMmJihmPWZ8fFtdKS5wdXNoKFwic3R5bGVcIixjKTt2YXIgbD1mO2lmKGIudXBkYXRlUXVldWU9bCliLmZsYWdzfD00fX07RGo9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9PWQmJihiLmZsYWdzfD00KX07XG5mdW5jdGlvbiBFaihhLGIpe2lmKCFJKXN3aXRjaChhLnRhaWxNb2RlKXtjYXNlIFwiaGlkZGVuXCI6Yj1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bnVsbCE9PWI7KW51bGwhPT1iLmFsdGVybmF0ZSYmKGM9YiksYj1iLnNpYmxpbmc7bnVsbD09PWM/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSBcImNvbGxhcHNlZFwiOmM9YS50YWlsO2Zvcih2YXIgZD1udWxsO251bGwhPT1jOyludWxsIT09Yy5hbHRlcm5hdGUmJihkPWMpLGM9Yy5zaWJsaW5nO251bGw9PT1kP2J8fG51bGw9PT1hLnRhaWw/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpkLnNpYmxpbmc9bnVsbH19XG5mdW5jdGlvbiBTKGEpe3ZhciBiPW51bGwhPT1hLmFsdGVybmF0ZSYmYS5hbHRlcm5hdGUuY2hpbGQ9PT1hLmNoaWxkLGM9MCxkPTA7aWYoYilmb3IodmFyIGU9YS5jaGlsZDtudWxsIT09ZTspY3w9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZHw9ZS5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQsZHw9ZS5mbGFncyYxNDY4MDA2NCxlLnJldHVybj1hLGU9ZS5zaWJsaW5nO2Vsc2UgZm9yKGU9YS5jaGlsZDtudWxsIT09ZTspY3w9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZHw9ZS5zdWJ0cmVlRmxhZ3MsZHw9ZS5mbGFncyxlLnJldHVybj1hLGU9ZS5zaWJsaW5nO2Euc3VidHJlZUZsYWdzfD1kO2EuY2hpbGRMYW5lcz1jO3JldHVybiBifVxuZnVuY3Rpb24gRmooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzO3dnKGIpO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIFMoYiksbnVsbDtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMzpkPWIuc3RhdGVOb2RlO0poKCk7RShXZik7RShIKTtPaCgpO2QucGVuZGluZ0NvbnRleHQmJihkLmNvbnRleHQ9ZC5wZW5kaW5nQ29udGV4dCxkLnBlbmRpbmdDb250ZXh0PW51bGwpO2lmKG51bGw9PT1hfHxudWxsPT09YS5jaGlsZClHZyhiKT9iLmZsYWdzfD00Om51bGw9PT1hfHxhLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYwPT09KGIuZmxhZ3MmMjU2KXx8KGIuZmxhZ3N8PTEwMjQsbnVsbCE9PXpnJiYoR2ooemcpLHpnPW51bGwpKTtCaihhLGIpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA1OkxoKGIpO3ZhciBlPUhoKEdoLmN1cnJlbnQpO1xuYz1iLnR5cGU7aWYobnVsbCE9PWEmJm51bGwhPWIuc3RhdGVOb2RlKUNqKGEsYixjLGQsZSksYS5yZWYhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKTtlbHNle2lmKCFkKXtpZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtTKGIpO3JldHVybiBudWxsfWE9SGgoRWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLnR5cGU7dmFyIGY9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7ZFtQZl09ZjthPTAhPT0oYi5tb2RlJjEpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGQpO0QoXCJjbG9zZVwiLGQpO2JyZWFrO2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RChcImxvYWRcIixkKTticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGQpO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixkKTticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpEKFwiZXJyb3JcIixcbmQpO0QoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsZCk7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoZCxmKTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpkLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZi5tdWx0aXBsZX07RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpoYihkLGYpLEQoXCJpbnZhbGlkXCIsZCl9dWIoYyxmKTtlPW51bGw7Zm9yKHZhciBnIGluIGYpaWYoZi5oYXNPd25Qcm9wZXJ0eShnKSl7dmFyIGg9ZltnXTtcImNoaWxkcmVuXCI9PT1nP1wic3RyaW5nXCI9PT10eXBlb2YgaD9kLnRleHRDb250ZW50IT09aCYmKCEwIT09Zi5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQudGV4dENvbnRlbnQsaCxhKSxlPVtcImNoaWxkcmVuXCIsaF0pOlwibnVtYmVyXCI9PT10eXBlb2YgaCYmZC50ZXh0Q29udGVudCE9PVwiXCIraCYmKCEwIT09Zi5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQudGV4dENvbnRlbnQsXG5oLGEpLGU9W1wiY2hpbGRyZW5cIixcIlwiK2hdKTplYS5oYXNPd25Qcm9wZXJ0eShnKSYmbnVsbCE9aCYmXCJvblNjcm9sbFwiPT09ZyYmRChcInNjcm9sbFwiLGQpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShkKTtkYihkLGYsITApO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGQpO2piKGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpjYXNlIFwib3B0aW9uXCI6YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5vbkNsaWNrJiYoZC5vbmNsaWNrPUJmKX1kPWU7Yi51cGRhdGVRdWV1ZT1kO251bGwhPT1kJiYoYi5mbGFnc3w9NCl9ZWxzZXtnPTk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50O1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YSYmKGE9a2IoYykpO1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9cInNjcmlwdFwiPT09Yz8oYT1nLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksYS5pbm5lckhUTUw9XCI8c2NyaXB0PlxceDNjL3NjcmlwdD5cIixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6XG5cInN0cmluZ1wiPT09dHlwZW9mIGQuaXM/YT1nLmNyZWF0ZUVsZW1lbnQoYyx7aXM6ZC5pc30pOihhPWcuY3JlYXRlRWxlbWVudChjKSxcInNlbGVjdFwiPT09YyYmKGc9YSxkLm11bHRpcGxlP2cubXVsdGlwbGU9ITA6ZC5zaXplJiYoZy5zaXplPWQuc2l6ZSkpKTphPWcuY3JlYXRlRWxlbWVudE5TKGEsYyk7YVtPZl09YjthW1BmXT1kO0FqKGEsYiwhMSwhMSk7Yi5zdGF0ZU5vZGU9YTthOntnPXZiKGMsZCk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsYSk7RChcImNsb3NlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxhKTtlPWQ7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGEpO2U9ZDticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpEKFwiZXJyb3JcIixcbmEpO0QoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaW5wdXRcIjpaYShhLGQpO2U9WWEoYSxkKTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjplPWQ7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFkLm11bHRpcGxlfTtlPUEoe30sZCx7dmFsdWU6dm9pZCAwfSk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpoYihhLGQpO2U9Z2IoYSxkKTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2RlZmF1bHQ6ZT1kfXViKGMsZSk7aD1lO2ZvcihmIGluIGgpaWYoaC5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGs9aFtmXTtcInN0eWxlXCI9PT1mP3NiKGEsayk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09Zj8oaz1rP2suX19odG1sOnZvaWQgMCxudWxsIT1rJiZuYihhLGspKTpcImNoaWxkcmVuXCI9PT1mP1wic3RyaW5nXCI9PT10eXBlb2Ygaz8oXCJ0ZXh0YXJlYVwiIT09XG5jfHxcIlwiIT09aykmJm9iKGEsayk6XCJudW1iZXJcIj09PXR5cGVvZiBrJiZvYihhLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWYmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1mJiZcImF1dG9Gb2N1c1wiIT09ZiYmKGVhLmhhc093blByb3BlcnR5KGYpP251bGwhPWsmJlwib25TY3JvbGxcIj09PWYmJkQoXCJzY3JvbGxcIixhKTpudWxsIT1rJiZ0YShhLGYsayxnKSl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGEpO2RiKGEsZCwhMSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoYSk7amIoYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOm51bGwhPWQudmFsdWUmJmEuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiK1NhKGQudmFsdWUpKTticmVhaztjYXNlIFwic2VsZWN0XCI6YS5tdWx0aXBsZT0hIWQubXVsdGlwbGU7Zj1kLnZhbHVlO251bGwhPWY/ZmIoYSwhIWQubXVsdGlwbGUsZiwhMSk6bnVsbCE9ZC5kZWZhdWx0VmFsdWUmJmZiKGEsISFkLm11bHRpcGxlLGQuZGVmYXVsdFZhbHVlLFxuITApO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGUub25DbGljayYmKGEub25jbGljaz1CZil9c3dpdGNoKGMpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ZD0hIWQuYXV0b0ZvY3VzO2JyZWFrIGE7Y2FzZSBcImltZ1wiOmQ9ITA7YnJlYWsgYTtkZWZhdWx0OmQ9ITF9fWQmJihiLmZsYWdzfD00KX1udWxsIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mil9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDY6aWYoYSYmbnVsbCE9Yi5zdGF0ZU5vZGUpRGooYSxiLGEubWVtb2l6ZWRQcm9wcyxkKTtlbHNle2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZCYmbnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7Yz1IaChHaC5jdXJyZW50KTtIaChFaC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2lmKGY9ZC5ub2RlVmFsdWUhPT1jKWlmKGE9XG54ZyxudWxsIT09YSlzd2l0Y2goYS50YWcpe2Nhc2UgMzpBZihkLm5vZGVWYWx1ZSxjLDAhPT0oYS5tb2RlJjEpKTticmVhaztjYXNlIDU6ITAhPT1hLm1lbW9pemVkUHJvcHMuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLm5vZGVWYWx1ZSxjLDAhPT0oYS5tb2RlJjEpKX1mJiYoYi5mbGFnc3w9NCl9ZWxzZSBkPSg5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZCksZFtPZl09YixiLnN0YXRlTm9kZT1kfVMoYik7cmV0dXJuIG51bGw7Y2FzZSAxMzpFKE0pO2Q9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlJiZudWxsIT09YS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpe2lmKEkmJm51bGwhPT15ZyYmMCE9PShiLm1vZGUmMSkmJjA9PT0oYi5mbGFncyYxMjgpKUhnKCksSWcoKSxiLmZsYWdzfD05ODU2MCxmPSExO2Vsc2UgaWYoZj1HZyhiKSxudWxsIT09ZCYmbnVsbCE9PWQuZGVoeWRyYXRlZCl7aWYobnVsbD09PVxuYSl7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTgpKTtmPWIubWVtb2l6ZWRTdGF0ZTtmPW51bGwhPT1mP2YuZGVoeWRyYXRlZDpudWxsO2lmKCFmKXRocm93IEVycm9yKHAoMzE3KSk7ZltPZl09Yn1lbHNlIElnKCksMD09PShiLmZsYWdzJjEyOCkmJihiLm1lbW9pemVkU3RhdGU9bnVsbCksYi5mbGFnc3w9NDtTKGIpO2Y9ITF9ZWxzZSBudWxsIT09emcmJihHaih6Zyksemc9bnVsbCksZj0hMDtpZighZilyZXR1cm4gYi5mbGFncyY2NTUzNj9iOm51bGx9aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGIubGFuZXM9YyxiO2Q9bnVsbCE9PWQ7ZCE9PShudWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSkmJmQmJihiLmNoaWxkLmZsYWdzfD04MTkyLDAhPT0oYi5tb2RlJjEpJiYobnVsbD09PWF8fDAhPT0oTS5jdXJyZW50JjEpPzA9PT1UJiYoVD0zKTp1aigpKSk7bnVsbCE9PWIudXBkYXRlUXVldWUmJihiLmZsYWdzfD00KTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNDpyZXR1cm4gSmgoKSxcbkJqKGEsYiksbnVsbD09PWEmJnNmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLFMoYiksbnVsbDtjYXNlIDEwOnJldHVybiBSZyhiLnR5cGUuX2NvbnRleHQpLFMoYiksbnVsbDtjYXNlIDE3OnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDE5OkUoTSk7Zj1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWYpcmV0dXJuIFMoYiksbnVsbDtkPTAhPT0oYi5mbGFncyYxMjgpO2c9Zi5yZW5kZXJpbmc7aWYobnVsbD09PWcpaWYoZClFaihmLCExKTtlbHNle2lmKDAhPT1UfHxudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpZm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2c9TWgoYSk7aWYobnVsbCE9PWcpe2IuZmxhZ3N8PTEyODtFaihmLCExKTtkPWcudXBkYXRlUXVldWU7bnVsbCE9PWQmJihiLnVwZGF0ZVF1ZXVlPWQsYi5mbGFnc3w9NCk7Yi5zdWJ0cmVlRmxhZ3M9MDtkPWM7Zm9yKGM9Yi5jaGlsZDtudWxsIT09YzspZj1jLGE9ZCxmLmZsYWdzJj0xNDY4MDA2Nixcbmc9Zi5hbHRlcm5hdGUsbnVsbD09PWc/KGYuY2hpbGRMYW5lcz0wLGYubGFuZXM9YSxmLmNoaWxkPW51bGwsZi5zdWJ0cmVlRmxhZ3M9MCxmLm1lbW9pemVkUHJvcHM9bnVsbCxmLm1lbW9pemVkU3RhdGU9bnVsbCxmLnVwZGF0ZVF1ZXVlPW51bGwsZi5kZXBlbmRlbmNpZXM9bnVsbCxmLnN0YXRlTm9kZT1udWxsKTooZi5jaGlsZExhbmVzPWcuY2hpbGRMYW5lcyxmLmxhbmVzPWcubGFuZXMsZi5jaGlsZD1nLmNoaWxkLGYuc3VidHJlZUZsYWdzPTAsZi5kZWxldGlvbnM9bnVsbCxmLm1lbW9pemVkUHJvcHM9Zy5tZW1vaXplZFByb3BzLGYubWVtb2l6ZWRTdGF0ZT1nLm1lbW9pemVkU3RhdGUsZi51cGRhdGVRdWV1ZT1nLnVwZGF0ZVF1ZXVlLGYudHlwZT1nLnR5cGUsYT1nLmRlcGVuZGVuY2llcyxmLmRlcGVuZGVuY2llcz1udWxsPT09YT9udWxsOntsYW5lczphLmxhbmVzLGZpcnN0Q29udGV4dDphLmZpcnN0Q29udGV4dH0pLGM9Yy5zaWJsaW5nO0coTSxNLmN1cnJlbnQmMXwyKTtyZXR1cm4gYi5jaGlsZH1hPVxuYS5zaWJsaW5nfW51bGwhPT1mLnRhaWwmJkIoKT5IaiYmKGIuZmxhZ3N8PTEyOCxkPSEwLEVqKGYsITEpLGIubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighZClpZihhPU1oKGcpLG51bGwhPT1hKXtpZihiLmZsYWdzfD0xMjgsZD0hMCxjPWEudXBkYXRlUXVldWUsbnVsbCE9PWMmJihiLnVwZGF0ZVF1ZXVlPWMsYi5mbGFnc3w9NCksRWooZiwhMCksbnVsbD09PWYudGFpbCYmXCJoaWRkZW5cIj09PWYudGFpbE1vZGUmJiFnLmFsdGVybmF0ZSYmIUkpcmV0dXJuIFMoYiksbnVsbH1lbHNlIDIqQigpLWYucmVuZGVyaW5nU3RhcnRUaW1lPkhqJiYxMDczNzQxODI0IT09YyYmKGIuZmxhZ3N8PTEyOCxkPSEwLEVqKGYsITEpLGIubGFuZXM9NDE5NDMwNCk7Zi5pc0JhY2t3YXJkcz8oZy5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1nKTooYz1mLmxhc3QsbnVsbCE9PWM/Yy5zaWJsaW5nPWc6Yi5jaGlsZD1nLGYubGFzdD1nKX1pZihudWxsIT09Zi50YWlsKXJldHVybiBiPWYudGFpbCxmLnJlbmRlcmluZz1cbmIsZi50YWlsPWIuc2libGluZyxmLnJlbmRlcmluZ1N0YXJ0VGltZT1CKCksYi5zaWJsaW5nPW51bGwsYz1NLmN1cnJlbnQsRyhNLGQ/YyYxfDI6YyYxKSxiO1MoYik7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBJaigpLGQ9bnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSxudWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSE9PWQmJihiLmZsYWdzfD04MTkyKSxkJiYwIT09KGIubW9kZSYxKT8wIT09KGdqJjEwNzM3NDE4MjQpJiYoUyhiKSxiLnN1YnRyZWVGbGFncyY2JiYoYi5mbGFnc3w9ODE5MikpOlMoYiksbnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2Nhc2UgMjU6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IocCgxNTYsYi50YWcpKTt9XG5mdW5jdGlvbiBKaihhLGIpe3dnKGIpO3N3aXRjaChiLnRhZyl7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLGE9Yi5mbGFncyxhJjY1NTM2PyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgMzpyZXR1cm4gSmgoKSxFKFdmKSxFKEgpLE9oKCksYT1iLmZsYWdzLDAhPT0oYSY2NTUzNikmJjA9PT0oYSYxMjgpPyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgNTpyZXR1cm4gTGgoYiksbnVsbDtjYXNlIDEzOkUoTSk7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1iLmFsdGVybmF0ZSl0aHJvdyBFcnJvcihwKDM0MCkpO0lnKCl9YT1iLmZsYWdzO3JldHVybiBhJjY1NTM2PyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgMTk6cmV0dXJuIEUoTSksbnVsbDtjYXNlIDQ6cmV0dXJuIEpoKCksbnVsbDtjYXNlIDEwOnJldHVybiBSZyhiLnR5cGUuX2NvbnRleHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBJaigpLFxubnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBLaj0hMSxVPSExLExqPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LFY9bnVsbDtmdW5jdGlvbiBNaihhLGIpe3ZhciBjPWEucmVmO2lmKG51bGwhPT1jKWlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBjKXRyeXtjKG51bGwpfWNhdGNoKGQpe1coYSxiLGQpfWVsc2UgYy5jdXJyZW50PW51bGx9ZnVuY3Rpb24gTmooYSxiLGMpe3RyeXtjKCl9Y2F0Y2goZCl7VyhhLGIsZCl9fXZhciBPaj0hMTtcbmZ1bmN0aW9uIFBqKGEsYil7Q2Y9ZGQ7YT1NZSgpO2lmKE5lKGEpKXtpZihcInNlbGVjdGlvblN0YXJ0XCJpbiBhKXZhciBjPXtzdGFydDphLnNlbGVjdGlvblN0YXJ0LGVuZDphLnNlbGVjdGlvbkVuZH07ZWxzZSBhOntjPShjPWEub3duZXJEb2N1bWVudCkmJmMuZGVmYXVsdFZpZXd8fHdpbmRvdzt2YXIgZD1jLmdldFNlbGVjdGlvbiYmYy5nZXRTZWxlY3Rpb24oKTtpZihkJiYwIT09ZC5yYW5nZUNvdW50KXtjPWQuYW5jaG9yTm9kZTt2YXIgZT1kLmFuY2hvck9mZnNldCxmPWQuZm9jdXNOb2RlO2Q9ZC5mb2N1c09mZnNldDt0cnl7Yy5ub2RlVHlwZSxmLm5vZGVUeXBlfWNhdGNoKEYpe2M9bnVsbDticmVhayBhfXZhciBnPTAsaD0tMSxrPS0xLGw9MCxtPTAscT1hLHI9bnVsbDtiOmZvcig7Oyl7Zm9yKHZhciB5Ozspe3EhPT1jfHwwIT09ZSYmMyE9PXEubm9kZVR5cGV8fChoPWcrZSk7cSE9PWZ8fDAhPT1kJiYzIT09cS5ub2RlVHlwZXx8KGs9ZytkKTszPT09cS5ub2RlVHlwZSYmKGcrPVxucS5ub2RlVmFsdWUubGVuZ3RoKTtpZihudWxsPT09KHk9cS5maXJzdENoaWxkKSlicmVhaztyPXE7cT15fWZvcig7Oyl7aWYocT09PWEpYnJlYWsgYjtyPT09YyYmKytsPT09ZSYmKGg9Zyk7cj09PWYmJisrbT09PWQmJihrPWcpO2lmKG51bGwhPT0oeT1xLm5leHRTaWJsaW5nKSlicmVhaztxPXI7cj1xLnBhcmVudE5vZGV9cT15fWM9LTE9PT1ofHwtMT09PWs/bnVsbDp7c3RhcnQ6aCxlbmQ6a319ZWxzZSBjPW51bGx9Yz1jfHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBjPW51bGw7RGY9e2ZvY3VzZWRFbGVtOmEsc2VsZWN0aW9uUmFuZ2U6Y307ZGQ9ITE7Zm9yKFY9YjtudWxsIT09VjspaWYoYj1WLGE9Yi5jaGlsZCwwIT09KGIuc3VidHJlZUZsYWdzJjEwMjgpJiZudWxsIT09YSlhLnJldHVybj1iLFY9YTtlbHNlIGZvcig7bnVsbCE9PVY7KXtiPVY7dHJ5e3ZhciBuPWIuYWx0ZXJuYXRlO2lmKDAhPT0oYi5mbGFncyYxMDI0KSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6YnJlYWs7XG5jYXNlIDE6aWYobnVsbCE9PW4pe3ZhciB0PW4ubWVtb2l6ZWRQcm9wcyxKPW4ubWVtb2l6ZWRTdGF0ZSx4PWIuc3RhdGVOb2RlLHc9eC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShiLmVsZW1lbnRUeXBlPT09Yi50eXBlP3Q6TGcoYi50eXBlLHQpLEopO3guX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9d31icmVhaztjYXNlIDM6dmFyIHU9Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsxPT09dS5ub2RlVHlwZT91LnRleHRDb250ZW50PVwiXCI6OT09PXUubm9kZVR5cGUmJnUuZG9jdW1lbnRFbGVtZW50JiZ1LnJlbW92ZUNoaWxkKHUuZG9jdW1lbnRFbGVtZW50KTticmVhaztjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9fWNhdGNoKEYpe1coYixiLnJldHVybixGKX1hPWIuc2libGluZztpZihudWxsIT09YSl7YS5yZXR1cm49Yi5yZXR1cm47Vj1hO2JyZWFrfVY9Yi5yZXR1cm59bj1PajtPaj0hMTtyZXR1cm4gbn1cbmZ1bmN0aW9uIFFqKGEsYixjKXt2YXIgZD1iLnVwZGF0ZVF1ZXVlO2Q9bnVsbCE9PWQ/ZC5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWQpe3ZhciBlPWQ9ZC5uZXh0O2Rve2lmKChlLnRhZyZhKT09PWEpe3ZhciBmPWUuZGVzdHJveTtlLmRlc3Ryb3k9dm9pZCAwO3ZvaWQgMCE9PWYmJk5qKGIsYyxmKX1lPWUubmV4dH13aGlsZShlIT09ZCl9fWZ1bmN0aW9uIFJqKGEsYil7Yj1iLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe3ZhciBjPWI9Yi5uZXh0O2Rve2lmKChjLnRhZyZhKT09PWEpe3ZhciBkPWMuY3JlYXRlO2MuZGVzdHJveT1kKCl9Yz1jLm5leHR9d2hpbGUoYyE9PWIpfX1mdW5jdGlvbiBTaihhKXt2YXIgYj1hLnJlZjtpZihudWxsIT09Yil7dmFyIGM9YS5zdGF0ZU5vZGU7c3dpdGNoKGEudGFnKXtjYXNlIDU6YT1jO2JyZWFrO2RlZmF1bHQ6YT1jfVwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yi5jdXJyZW50PWF9fVxuZnVuY3Rpb24gVGooYSl7dmFyIGI9YS5hbHRlcm5hdGU7bnVsbCE9PWImJihhLmFsdGVybmF0ZT1udWxsLFRqKGIpKTthLmNoaWxkPW51bGw7YS5kZWxldGlvbnM9bnVsbDthLnNpYmxpbmc9bnVsbDs1PT09YS50YWcmJihiPWEuc3RhdGVOb2RlLG51bGwhPT1iJiYoZGVsZXRlIGJbT2ZdLGRlbGV0ZSBiW1BmXSxkZWxldGUgYltvZl0sZGVsZXRlIGJbUWZdLGRlbGV0ZSBiW1JmXSkpO2Euc3RhdGVOb2RlPW51bGw7YS5yZXR1cm49bnVsbDthLmRlcGVuZGVuY2llcz1udWxsO2EubWVtb2l6ZWRQcm9wcz1udWxsO2EubWVtb2l6ZWRTdGF0ZT1udWxsO2EucGVuZGluZ1Byb3BzPW51bGw7YS5zdGF0ZU5vZGU9bnVsbDthLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gVWooYSl7cmV0dXJuIDU9PT1hLnRhZ3x8Mz09PWEudGFnfHw0PT09YS50YWd9XG5mdW5jdGlvbiBWaihhKXthOmZvcig7Oyl7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxVaihhLnJldHVybikpcmV0dXJuIG51bGw7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2ZvcihhPWEuc2libGluZzs1IT09YS50YWcmJjYhPT1hLnRhZyYmMTghPT1hLnRhZzspe2lmKGEuZmxhZ3MmMiljb250aW51ZSBhO2lmKG51bGw9PT1hLmNoaWxkfHw0PT09YS50YWcpY29udGludWUgYTtlbHNlIGEuY2hpbGQucmV0dXJuPWEsYT1hLmNoaWxkfWlmKCEoYS5mbGFncyYyKSlyZXR1cm4gYS5zdGF0ZU5vZGV9fVxuZnVuY3Rpb24gV2ooYSxiLGMpe3ZhciBkPWEudGFnO2lmKDU9PT1kfHw2PT09ZClhPWEuc3RhdGVOb2RlLGI/OD09PWMubm9kZVR5cGU/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpOmMuaW5zZXJ0QmVmb3JlKGEsYik6KDg9PT1jLm5vZGVUeXBlPyhiPWMucGFyZW50Tm9kZSxiLmluc2VydEJlZm9yZShhLGMpKTooYj1jLGIuYXBwZW5kQ2hpbGQoYSkpLGM9Yy5fcmVhY3RSb290Q29udGFpbmVyLG51bGwhPT1jJiZ2b2lkIDAhPT1jfHxudWxsIT09Yi5vbmNsaWNrfHwoYi5vbmNsaWNrPUJmKSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFdqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspV2ooYSxiLGMpLGE9YS5zaWJsaW5nfVxuZnVuY3Rpb24gWGooYSxiLGMpe3ZhciBkPWEudGFnO2lmKDU9PT1kfHw2PT09ZClhPWEuc3RhdGVOb2RlLGI/Yy5pbnNlcnRCZWZvcmUoYSxiKTpjLmFwcGVuZENoaWxkKGEpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihYaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVhqKGEsYixjKSxhPWEuc2libGluZ312YXIgWD1udWxsLFlqPSExO2Z1bmN0aW9uIFpqKGEsYixjKXtmb3IoYz1jLmNoaWxkO251bGwhPT1jOylhayhhLGIsYyksYz1jLnNpYmxpbmd9XG5mdW5jdGlvbiBhayhhLGIsYyl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7bGMub25Db21taXRGaWJlclVubW91bnQoa2MsYyl9Y2F0Y2goaCl7fXN3aXRjaChjLnRhZyl7Y2FzZSA1OlV8fE1qKGMsYik7Y2FzZSA2OnZhciBkPVgsZT1ZajtYPW51bGw7WmooYSxiLGMpO1g9ZDtZaj1lO251bGwhPT1YJiYoWWo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKTphLnJlbW92ZUNoaWxkKGMpKTpYLnJlbW92ZUNoaWxkKGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSAxODpudWxsIT09WCYmKFlqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9LZihhLnBhcmVudE5vZGUsYyk6MT09PWEubm9kZVR5cGUmJktmKGEsYyksYmQoYSkpOktmKFgsYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDQ6ZD1YO2U9WWo7WD1jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO1xuWmooYSxiLGMpO1g9ZDtZaj1lO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZighVSYmKGQ9Yy51cGRhdGVRdWV1ZSxudWxsIT09ZCYmKGQ9ZC5sYXN0RWZmZWN0LG51bGwhPT1kKSkpe2U9ZD1kLm5leHQ7ZG97dmFyIGY9ZSxnPWYuZGVzdHJveTtmPWYudGFnO3ZvaWQgMCE9PWcmJigwIT09KGYmMik/TmooYyxiLGcpOjAhPT0oZiY0KSYmTmooYyxiLGcpKTtlPWUubmV4dH13aGlsZShlIT09ZCl9WmooYSxiLGMpO2JyZWFrO2Nhc2UgMTppZighVSYmKE1qKGMsYiksZD1jLnN0YXRlTm9kZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnRXaWxsVW5tb3VudCkpdHJ5e2QucHJvcHM9Yy5tZW1vaXplZFByb3BzLGQuc3RhdGU9Yy5tZW1vaXplZFN0YXRlLGQuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChoKXtXKGMsYixoKX1aaihhLGIsYyk7YnJlYWs7Y2FzZSAyMTpaaihhLGIsYyk7YnJlYWs7Y2FzZSAyMjpjLm1vZGUmMT8oVT0oZD1VKXx8bnVsbCE9PVxuYy5tZW1vaXplZFN0YXRlLFpqKGEsYixjKSxVPWQpOlpqKGEsYixjKTticmVhaztkZWZhdWx0OlpqKGEsYixjKX19ZnVuY3Rpb24gYmsoYSl7dmFyIGI9YS51cGRhdGVRdWV1ZTtpZihudWxsIT09Yil7YS51cGRhdGVRdWV1ZT1udWxsO3ZhciBjPWEuc3RhdGVOb2RlO251bGw9PT1jJiYoYz1hLnN0YXRlTm9kZT1uZXcgTGopO2IuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZD1jay5iaW5kKG51bGwsYSxiKTtjLmhhcyhiKXx8KGMuYWRkKGIpLGIudGhlbihkLGQpKX0pfX1cbmZ1bmN0aW9uIGRrKGEsYil7dmFyIGM9Yi5kZWxldGlvbnM7aWYobnVsbCE9PWMpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07dHJ5e3ZhciBmPWEsZz1iLGg9ZzthOmZvcig7bnVsbCE9PWg7KXtzd2l0Y2goaC50YWcpe2Nhc2UgNTpYPWguc3RhdGVOb2RlO1lqPSExO2JyZWFrIGE7Y2FzZSAzOlg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDticmVhayBhO2Nhc2UgNDpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7YnJlYWsgYX1oPWgucmV0dXJufWlmKG51bGw9PT1YKXRocm93IEVycm9yKHAoMTYwKSk7YWsoZixnLGUpO1g9bnVsbDtZaj0hMTt2YXIgaz1lLmFsdGVybmF0ZTtudWxsIT09ayYmKGsucmV0dXJuPW51bGwpO2UucmV0dXJuPW51bGx9Y2F0Y2gobCl7VyhlLGIsbCl9fWlmKGIuc3VidHJlZUZsYWdzJjEyODU0KWZvcihiPWIuY2hpbGQ7bnVsbCE9PWI7KWVrKGIsYSksYj1iLnNpYmxpbmd9XG5mdW5jdGlvbiBlayhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlLGQ9YS5mbGFncztzd2l0Y2goYS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpkayhiLGEpO2ZrKGEpO2lmKGQmNCl7dHJ5e1FqKDMsYSxhLnJldHVybiksUmooMyxhKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9dHJ5e1FqKDUsYSxhLnJldHVybil9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDE6ZGsoYixhKTtmayhhKTtkJjUxMiYmbnVsbCE9PWMmJk1qKGMsYy5yZXR1cm4pO2JyZWFrO2Nhc2UgNTpkayhiLGEpO2ZrKGEpO2QmNTEyJiZudWxsIT09YyYmTWooYyxjLnJldHVybik7aWYoYS5mbGFncyYzMil7dmFyIGU9YS5zdGF0ZU5vZGU7dHJ5e29iKGUsXCJcIil9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1pZihkJjQmJihlPWEuc3RhdGVOb2RlLG51bGwhPWUpKXt2YXIgZj1hLm1lbW9pemVkUHJvcHMsZz1udWxsIT09Yz9jLm1lbW9pemVkUHJvcHM6ZixoPWEudHlwZSxrPWEudXBkYXRlUXVldWU7XG5hLnVwZGF0ZVF1ZXVlPW51bGw7aWYobnVsbCE9PWspdHJ5e1wiaW5wdXRcIj09PWgmJlwicmFkaW9cIj09PWYudHlwZSYmbnVsbCE9Zi5uYW1lJiZhYihlLGYpO3ZiKGgsZyk7dmFyIGw9dmIoaCxmKTtmb3IoZz0wO2c8ay5sZW5ndGg7Zys9Mil7dmFyIG09a1tnXSxxPWtbZysxXTtcInN0eWxlXCI9PT1tP3NiKGUscSk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bT9uYihlLHEpOlwiY2hpbGRyZW5cIj09PW0/b2IoZSxxKTp0YShlLG0scSxsKX1zd2l0Y2goaCl7Y2FzZSBcImlucHV0XCI6YmIoZSxmKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihlLGYpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjp2YXIgcj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhZi5tdWx0aXBsZTt2YXIgeT1mLnZhbHVlO251bGwhPXk/ZmIoZSwhIWYubXVsdGlwbGUseSwhMSk6ciE9PSEhZi5tdWx0aXBsZSYmKG51bGwhPWYuZGVmYXVsdFZhbHVlP2ZiKGUsISFmLm11bHRpcGxlLFxuZi5kZWZhdWx0VmFsdWUsITApOmZiKGUsISFmLm11bHRpcGxlLGYubXVsdGlwbGU/W106XCJcIiwhMSkpfWVbUGZdPWZ9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDY6ZGsoYixhKTtmayhhKTtpZihkJjQpe2lmKG51bGw9PT1hLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2MikpO2U9YS5zdGF0ZU5vZGU7Zj1hLm1lbW9pemVkUHJvcHM7dHJ5e2Uubm9kZVZhbHVlPWZ9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDM6ZGsoYixhKTtmayhhKTtpZihkJjQmJm51bGwhPT1jJiZjLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXRyeXtiZChiLmNvbnRhaW5lckluZm8pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX1icmVhaztjYXNlIDQ6ZGsoYixhKTtmayhhKTticmVhaztjYXNlIDEzOmRrKGIsYSk7ZmsoYSk7ZT1hLmNoaWxkO2UuZmxhZ3MmODE5MiYmKGY9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSxlLnN0YXRlTm9kZS5pc0hpZGRlbj1mLCFmfHxcbm51bGwhPT1lLmFsdGVybmF0ZSYmbnVsbCE9PWUuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGV8fChnaz1CKCkpKTtkJjQmJmJrKGEpO2JyZWFrO2Nhc2UgMjI6bT1udWxsIT09YyYmbnVsbCE9PWMubWVtb2l6ZWRTdGF0ZTthLm1vZGUmMT8oVT0obD1VKXx8bSxkayhiLGEpLFU9bCk6ZGsoYixhKTtmayhhKTtpZihkJjgxOTIpe2w9bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZTtpZigoYS5zdGF0ZU5vZGUuaXNIaWRkZW49bCkmJiFtJiYwIT09KGEubW9kZSYxKSlmb3IoVj1hLG09YS5jaGlsZDtudWxsIT09bTspe2ZvcihxPVY9bTtudWxsIT09Vjspe3I9Vjt5PXIuY2hpbGQ7c3dpdGNoKHIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6UWooNCxyLHIucmV0dXJuKTticmVhaztjYXNlIDE6TWoocixyLnJldHVybik7dmFyIG49ci5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4uY29tcG9uZW50V2lsbFVubW91bnQpe2Q9cjtjPXIucmV0dXJuO3RyeXtiPWQsbi5wcm9wcz1cbmIubWVtb2l6ZWRQcm9wcyxuLnN0YXRlPWIubWVtb2l6ZWRTdGF0ZSxuLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2godCl7VyhkLGMsdCl9fWJyZWFrO2Nhc2UgNTpNaihyLHIucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKG51bGwhPT1yLm1lbW9pemVkU3RhdGUpe2hrKHEpO2NvbnRpbnVlfX1udWxsIT09eT8oeS5yZXR1cm49cixWPXkpOmhrKHEpfW09bS5zaWJsaW5nfWE6Zm9yKG09bnVsbCxxPWE7Oyl7aWYoNT09PXEudGFnKXtpZihudWxsPT09bSl7bT1xO3RyeXtlPXEuc3RhdGVOb2RlLGw/KGY9ZS5zdHlsZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5zZXRQcm9wZXJ0eT9mLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpOmYuZGlzcGxheT1cIm5vbmVcIik6KGg9cS5zdGF0ZU5vZGUsaz1xLm1lbW9pemVkUHJvcHMuc3R5bGUsZz12b2lkIDAhPT1rJiZudWxsIT09ayYmay5oYXNPd25Qcm9wZXJ0eShcImRpc3BsYXlcIik/ay5kaXNwbGF5Om51bGwsaC5zdHlsZS5kaXNwbGF5PVxucmIoXCJkaXNwbGF5XCIsZykpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19fWVsc2UgaWYoNj09PXEudGFnKXtpZihudWxsPT09bSl0cnl7cS5zdGF0ZU5vZGUubm9kZVZhbHVlPWw/XCJcIjpxLm1lbW9pemVkUHJvcHN9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1lbHNlIGlmKCgyMiE9PXEudGFnJiYyMyE9PXEudGFnfHxudWxsPT09cS5tZW1vaXplZFN0YXRlfHxxPT09YSkmJm51bGwhPT1xLmNoaWxkKXtxLmNoaWxkLnJldHVybj1xO3E9cS5jaGlsZDtjb250aW51ZX1pZihxPT09YSlicmVhayBhO2Zvcig7bnVsbD09PXEuc2libGluZzspe2lmKG51bGw9PT1xLnJldHVybnx8cS5yZXR1cm49PT1hKWJyZWFrIGE7bT09PXEmJihtPW51bGwpO3E9cS5yZXR1cm59bT09PXEmJihtPW51bGwpO3Euc2libGluZy5yZXR1cm49cS5yZXR1cm47cT1xLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6ZGsoYixhKTtmayhhKTtkJjQmJmJrKGEpO2JyZWFrO2Nhc2UgMjE6YnJlYWs7ZGVmYXVsdDpkayhiLFxuYSksZmsoYSl9fWZ1bmN0aW9uIGZrKGEpe3ZhciBiPWEuZmxhZ3M7aWYoYiYyKXt0cnl7YTp7Zm9yKHZhciBjPWEucmV0dXJuO251bGwhPT1jOyl7aWYoVWooYykpe3ZhciBkPWM7YnJlYWsgYX1jPWMucmV0dXJufXRocm93IEVycm9yKHAoMTYwKSk7fXN3aXRjaChkLnRhZyl7Y2FzZSA1OnZhciBlPWQuc3RhdGVOb2RlO2QuZmxhZ3MmMzImJihvYihlLFwiXCIpLGQuZmxhZ3MmPS0zMyk7dmFyIGY9VmooYSk7WGooYSxmLGUpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIGc9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxoPVZqKGEpO1dqKGEsaCxnKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYxKSk7fX1jYXRjaChrKXtXKGEsYS5yZXR1cm4sayl9YS5mbGFncyY9LTN9YiY0MDk2JiYoYS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIGlrKGEsYixjKXtWPWE7amsoYSxiLGMpfVxuZnVuY3Rpb24gamsoYSxiLGMpe2Zvcih2YXIgZD0wIT09KGEubW9kZSYxKTtudWxsIT09Vjspe3ZhciBlPVYsZj1lLmNoaWxkO2lmKDIyPT09ZS50YWcmJmQpe3ZhciBnPW51bGwhPT1lLm1lbW9pemVkU3RhdGV8fEtqO2lmKCFnKXt2YXIgaD1lLmFsdGVybmF0ZSxrPW51bGwhPT1oJiZudWxsIT09aC5tZW1vaXplZFN0YXRlfHxVO2g9S2o7dmFyIGw9VTtLaj1nO2lmKChVPWspJiYhbClmb3IoVj1lO251bGwhPT1WOylnPVYsaz1nLmNoaWxkLDIyPT09Zy50YWcmJm51bGwhPT1nLm1lbW9pemVkU3RhdGU/a2soZSk6bnVsbCE9PWs/KGsucmV0dXJuPWcsVj1rKTprayhlKTtmb3IoO251bGwhPT1mOylWPWYsamsoZixiLGMpLGY9Zi5zaWJsaW5nO1Y9ZTtLaj1oO1U9bH1sayhhLGIsYyl9ZWxzZSAwIT09KGUuc3VidHJlZUZsYWdzJjg3NzIpJiZudWxsIT09Zj8oZi5yZXR1cm49ZSxWPWYpOmxrKGEsYixjKX19XG5mdW5jdGlvbiBsayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9VjtpZigwIT09KGIuZmxhZ3MmODc3Mikpe3ZhciBjPWIuYWx0ZXJuYXRlO3RyeXtpZigwIT09KGIuZmxhZ3MmODc3Mikpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlV8fFJqKDUsYik7YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKGIuZmxhZ3MmNCYmIVUpaWYobnVsbD09PWMpZC5jb21wb25lbnREaWRNb3VudCgpO2Vsc2V7dmFyIGU9Yi5lbGVtZW50VHlwZT09PWIudHlwZT9jLm1lbW9pemVkUHJvcHM6TGcoYi50eXBlLGMubWVtb2l6ZWRQcm9wcyk7ZC5jb21wb25lbnREaWRVcGRhdGUoZSxjLm1lbW9pemVkU3RhdGUsZC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9dmFyIGY9Yi51cGRhdGVRdWV1ZTtudWxsIT09ZiYmaWgoYixmLGQpO2JyZWFrO2Nhc2UgMzp2YXIgZz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1nKXtjPW51bGw7aWYobnVsbCE9PWIuY2hpbGQpc3dpdGNoKGIuY2hpbGQudGFnKXtjYXNlIDU6Yz1cbmIuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTpjPWIuY2hpbGQuc3RhdGVOb2RlfWloKGIsZyxjKX1icmVhaztjYXNlIDU6dmFyIGg9Yi5zdGF0ZU5vZGU7aWYobnVsbD09PWMmJmIuZmxhZ3MmNCl7Yz1oO3ZhciBrPWIubWVtb2l6ZWRQcm9wcztzd2l0Y2goYi50eXBlKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmsuYXV0b0ZvY3VzJiZjLmZvY3VzKCk7YnJlYWs7Y2FzZSBcImltZ1wiOmsuc3JjJiYoYy5zcmM9ay5zcmMpfX1icmVhaztjYXNlIDY6YnJlYWs7Y2FzZSA0OmJyZWFrO2Nhc2UgMTI6YnJlYWs7Y2FzZSAxMzppZihudWxsPT09Yi5tZW1vaXplZFN0YXRlKXt2YXIgbD1iLmFsdGVybmF0ZTtpZihudWxsIT09bCl7dmFyIG09bC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1tKXt2YXIgcT1tLmRlaHlkcmF0ZWQ7bnVsbCE9PXEmJmJkKHEpfX19YnJlYWs7Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7XG5kZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fVV8fGIuZmxhZ3MmNTEyJiZTaihiKX1jYXRjaChyKXtXKGIsYi5yZXR1cm4scil9fWlmKGI9PT1hKXtWPW51bGw7YnJlYWt9Yz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1mdW5jdGlvbiBoayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9VjtpZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBjPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fVxuZnVuY3Rpb24ga2soYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7dHJ5e3N3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp2YXIgYz1iLnJldHVybjt0cnl7UmooNCxiKX1jYXRjaChrKXtXKGIsYyxrKX1icmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkTW91bnQpe3ZhciBlPWIucmV0dXJuO3RyeXtkLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goayl7VyhiLGUsayl9fXZhciBmPWIucmV0dXJuO3RyeXtTaihiKX1jYXRjaChrKXtXKGIsZixrKX1icmVhaztjYXNlIDU6dmFyIGc9Yi5yZXR1cm47dHJ5e1NqKGIpfWNhdGNoKGspe1coYixnLGspfX19Y2F0Y2goayl7VyhiLGIucmV0dXJuLGspfWlmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGg9Yi5zaWJsaW5nO2lmKG51bGwhPT1oKXtoLnJldHVybj1iLnJldHVybjtWPWg7YnJlYWt9Vj1iLnJldHVybn19XG52YXIgbWs9TWF0aC5jZWlsLG5rPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsb2s9dWEuUmVhY3RDdXJyZW50T3duZXIscGs9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsSz0wLFI9bnVsbCxZPW51bGwsWj0wLGdqPTAsZmo9VWYoMCksVD0wLHFrPW51bGwsaGg9MCxyaz0wLHNrPTAsdGs9bnVsbCx1az1udWxsLGdrPTAsSGo9SW5maW5pdHksdms9bnVsbCxQaT0hMSxRaT1udWxsLFNpPW51bGwsd2s9ITEseGs9bnVsbCx5az0wLHprPTAsQWs9bnVsbCxCaz0tMSxDaz0wO2Z1bmN0aW9uIEwoKXtyZXR1cm4gMCE9PShLJjYpP0IoKTotMSE9PUJrP0JrOkJrPUIoKX1cbmZ1bmN0aW9uIGxoKGEpe2lmKDA9PT0oYS5tb2RlJjEpKXJldHVybiAxO2lmKDAhPT0oSyYyKSYmMCE9PVopcmV0dXJuIFomLVo7aWYobnVsbCE9PUtnLnRyYW5zaXRpb24pcmV0dXJuIDA9PT1DayYmKENrPXljKCkpLENrO2E9QztpZigwIT09YSlyZXR1cm4gYTthPXdpbmRvdy5ldmVudDthPXZvaWQgMD09PWE/MTY6amQoYS50eXBlKTtyZXR1cm4gYX1mdW5jdGlvbiBtaChhLGIsYyxkKXtpZig1MDx6ayl0aHJvdyB6az0wLEFrPW51bGwsRXJyb3IocCgxODUpKTtBYyhhLGMsZCk7aWYoMD09PShLJjIpfHxhIT09UilhPT09UiYmKDA9PT0oSyYyKSYmKHJrfD1jKSw0PT09VCYmRGsoYSxaKSksRWsoYSxkKSwxPT09YyYmMD09PUsmJjA9PT0oYi5tb2RlJjEpJiYoSGo9QigpKzUwMCxmZyYmamcoKSl9XG5mdW5jdGlvbiBFayhhLGIpe3ZhciBjPWEuY2FsbGJhY2tOb2RlO3djKGEsYik7dmFyIGQ9dWMoYSxhPT09Uj9aOjApO2lmKDA9PT1kKW51bGwhPT1jJiZiYyhjKSxhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wO2Vsc2UgaWYoYj1kJi1kLGEuY2FsbGJhY2tQcmlvcml0eSE9PWIpe251bGwhPWMmJmJjKGMpO2lmKDE9PT1iKTA9PT1hLnRhZz9pZyhGay5iaW5kKG51bGwsYSkpOmhnKEZrLmJpbmQobnVsbCxhKSksSmYoZnVuY3Rpb24oKXswPT09KEsmNikmJmpnKCl9KSxjPW51bGw7ZWxzZXtzd2l0Y2goRGMoZCkpe2Nhc2UgMTpjPWZjO2JyZWFrO2Nhc2UgNDpjPWdjO2JyZWFrO2Nhc2UgMTY6Yz1oYzticmVhaztjYXNlIDUzNjg3MDkxMjpjPWpjO2JyZWFrO2RlZmF1bHQ6Yz1oY31jPUdrKGMsSGsuYmluZChudWxsLGEpKX1hLmNhbGxiYWNrUHJpb3JpdHk9YjthLmNhbGxiYWNrTm9kZT1jfX1cbmZ1bmN0aW9uIEhrKGEsYil7Qms9LTE7Q2s9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTt2YXIgYz1hLmNhbGxiYWNrTm9kZTtpZihJaygpJiZhLmNhbGxiYWNrTm9kZSE9PWMpcmV0dXJuIG51bGw7dmFyIGQ9dWMoYSxhPT09Uj9aOjApO2lmKDA9PT1kKXJldHVybiBudWxsO2lmKDAhPT0oZCYzMCl8fDAhPT0oZCZhLmV4cGlyZWRMYW5lcyl8fGIpYj1KayhhLGQpO2Vsc2V7Yj1kO3ZhciBlPUs7S3w9Mjt2YXIgZj1LaygpO2lmKFIhPT1hfHxaIT09Yil2az1udWxsLEhqPUIoKSs1MDAsTGsoYSxiKTtkbyB0cnl7TWsoKTticmVha31jYXRjaChoKXtOayhhLGgpfXdoaWxlKDEpO1FnKCk7bmsuY3VycmVudD1mO0s9ZTtudWxsIT09WT9iPTA6KFI9bnVsbCxaPTAsYj1UKX1pZigwIT09Yil7Mj09PWImJihlPXhjKGEpLDAhPT1lJiYoZD1lLGI9T2soYSxlKSkpO2lmKDE9PT1iKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGQpLEVrKGEsQigpKSxjO2lmKDY9PT1iKURrKGEsZCk7XG5lbHNle2U9YS5jdXJyZW50LmFsdGVybmF0ZTtpZigwPT09KGQmMzApJiYhUGsoZSkmJihiPUprKGEsZCksMj09PWImJihmPXhjKGEpLDAhPT1mJiYoZD1mLGI9T2soYSxmKSkpLDE9PT1iKSl0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxkKSxFayhhLEIoKSksYzthLmZpbmlzaGVkV29yaz1lO2EuZmluaXNoZWRMYW5lcz1kO3N3aXRjaChiKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKHAoMzQ1KSk7Y2FzZSAyOlFrKGEsdWssdmspO2JyZWFrO2Nhc2UgMzpEayhhLGQpO2lmKChkJjEzMDAyMzQyNCk9PT1kJiYoYj1nays1MDAtQigpLDEwPGIpKXtpZigwIT09dWMoYSwwKSlicmVhaztlPWEuc3VzcGVuZGVkTGFuZXM7aWYoKGUmZCkhPT1kKXtMKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZlO2JyZWFrfWEudGltZW91dEhhbmRsZT1GZihRay5iaW5kKG51bGwsYSx1ayx2ayksYik7YnJlYWt9UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSA0OkRrKGEsZCk7aWYoKGQmNDE5NDI0MCk9PT1cbmQpYnJlYWs7Yj1hLmV2ZW50VGltZXM7Zm9yKGU9LTE7MDxkOyl7dmFyIGc9MzEtb2MoZCk7Zj0xPDxnO2c9YltnXTtnPmUmJihlPWcpO2QmPX5mfWQ9ZTtkPUIoKS1kO2Q9KDEyMD5kPzEyMDo0ODA+ZD80ODA6MTA4MD5kPzEwODA6MTkyMD5kPzE5MjA6M0UzPmQ/M0UzOjQzMjA+ZD80MzIwOjE5NjAqbWsoZC8xOTYwKSktZDtpZigxMDxkKXthLnRpbWVvdXRIYW5kbGU9RmYoUWsuYmluZChudWxsLGEsdWssdmspLGQpO2JyZWFrfVFrKGEsdWssdmspO2JyZWFrO2Nhc2UgNTpRayhhLHVrLHZrKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzI5KSk7fX19RWsoYSxCKCkpO3JldHVybiBhLmNhbGxiYWNrTm9kZT09PWM/SGsuYmluZChudWxsLGEpOm51bGx9XG5mdW5jdGlvbiBPayhhLGIpe3ZhciBjPXRrO2EuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKExrKGEsYikuZmxhZ3N8PTI1Nik7YT1KayhhLGIpOzIhPT1hJiYoYj11ayx1az1jLG51bGwhPT1iJiZHaihiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gR2ooYSl7bnVsbD09PXVrP3VrPWE6dWsucHVzaC5hcHBseSh1ayxhKX1cbmZ1bmN0aW9uIFBrKGEpe2Zvcih2YXIgYj1hOzspe2lmKGIuZmxhZ3MmMTYzODQpe3ZhciBjPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWMmJihjPWMuc3RvcmVzLG51bGwhPT1jKSlmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXSxmPWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXtpZighSGUoZigpLGUpKXJldHVybiExfWNhdGNoKGcpe3JldHVybiExfX19Yz1iLmNoaWxkO2lmKGIuc3VidHJlZUZsYWdzJjE2Mzg0JiZudWxsIT09YyljLnJldHVybj1iLGI9YztlbHNle2lmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiEwO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ319cmV0dXJuITB9XG5mdW5jdGlvbiBEayhhLGIpe2ImPX5zaztiJj1+cms7YS5zdXNwZW5kZWRMYW5lc3w9YjthLnBpbmdlZExhbmVzJj1+Yjtmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGI7KXt2YXIgYz0zMS1vYyhiKSxkPTE8PGM7YVtjXT0tMTtiJj1+ZH19ZnVuY3Rpb24gRmsoYSl7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7SWsoKTt2YXIgYj11YyhhLDApO2lmKDA9PT0oYiYxKSlyZXR1cm4gRWsoYSxCKCkpLG51bGw7dmFyIGM9SmsoYSxiKTtpZigwIT09YS50YWcmJjI9PT1jKXt2YXIgZD14YyhhKTswIT09ZCYmKGI9ZCxjPU9rKGEsZCkpfWlmKDE9PT1jKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGIpLEVrKGEsQigpKSxjO2lmKDY9PT1jKXRocm93IEVycm9yKHAoMzQ1KSk7YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTthLmZpbmlzaGVkTGFuZXM9YjtRayhhLHVrLHZrKTtFayhhLEIoKSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSayhhLGIpe3ZhciBjPUs7S3w9MTt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtLPWMsMD09PUsmJihIaj1CKCkrNTAwLGZnJiZqZygpKX19ZnVuY3Rpb24gU2soYSl7bnVsbCE9PXhrJiYwPT09eGsudGFnJiYwPT09KEsmNikmJklrKCk7dmFyIGI9SztLfD0xO3ZhciBjPXBrLnRyYW5zaXRpb24sZD1DO3RyeXtpZihway50cmFuc2l0aW9uPW51bGwsQz0xLGEpcmV0dXJuIGEoKX1maW5hbGx5e0M9ZCxway50cmFuc2l0aW9uPWMsSz1iLDA9PT0oSyY2KSYmamcoKX19ZnVuY3Rpb24gSWooKXtnaj1mai5jdXJyZW50O0UoZmopfVxuZnVuY3Rpb24gTGsoYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsR2YoYykpO2lmKG51bGwhPT1ZKWZvcihjPVkucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yzt3ZyhkKTtzd2l0Y2goZC50YWcpe2Nhc2UgMTpkPWQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT09ZCYmdm9pZCAwIT09ZCYmJGYoKTticmVhaztjYXNlIDM6SmgoKTtFKFdmKTtFKEgpO09oKCk7YnJlYWs7Y2FzZSA1OkxoKGQpO2JyZWFrO2Nhc2UgNDpKaCgpO2JyZWFrO2Nhc2UgMTM6RShNKTticmVhaztjYXNlIDE5OkUoTSk7YnJlYWs7Y2FzZSAxMDpSZyhkLnR5cGUuX2NvbnRleHQpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpJaigpfWM9Yy5yZXR1cm59Uj1hO1k9YT13aChhLmN1cnJlbnQsbnVsbCk7Wj1naj1iO1Q9MDtxaz1udWxsO3NrPXJrPWhoPTA7dWs9dGs9bnVsbDtpZihudWxsIT09V2cpe2ZvcihiPVxuMDtiPFdnLmxlbmd0aDtiKyspaWYoYz1XZ1tiXSxkPWMuaW50ZXJsZWF2ZWQsbnVsbCE9PWQpe2MuaW50ZXJsZWF2ZWQ9bnVsbDt2YXIgZT1kLm5leHQsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe3ZhciBnPWYubmV4dDtmLm5leHQ9ZTtkLm5leHQ9Z31jLnBlbmRpbmc9ZH1XZz1udWxsfXJldHVybiBhfVxuZnVuY3Rpb24gTmsoYSxiKXtkb3t2YXIgYz1ZO3RyeXtRZygpO1BoLmN1cnJlbnQ9YWk7aWYoU2gpe2Zvcih2YXIgZD1OLm1lbW9pemVkU3RhdGU7bnVsbCE9PWQ7KXt2YXIgZT1kLnF1ZXVlO251bGwhPT1lJiYoZS5wZW5kaW5nPW51bGwpO2Q9ZC5uZXh0fVNoPSExfVJoPTA7UD1PPU49bnVsbDtUaD0hMTtVaD0wO29rLmN1cnJlbnQ9bnVsbDtpZihudWxsPT09Y3x8bnVsbD09PWMucmV0dXJuKXtUPTE7cWs9YjtZPW51bGw7YnJlYWt9YTp7dmFyIGY9YSxnPWMucmV0dXJuLGg9YyxrPWI7Yj1aO2guZmxhZ3N8PTMyNzY4O2lmKG51bGwhPT1rJiZcIm9iamVjdFwiPT09dHlwZW9mIGsmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBrLnRoZW4pe3ZhciBsPWssbT1oLHE9bS50YWc7aWYoMD09PShtLm1vZGUmMSkmJigwPT09cXx8MTE9PT1xfHwxNT09PXEpKXt2YXIgcj1tLmFsdGVybmF0ZTtyPyhtLnVwZGF0ZVF1ZXVlPXIudXBkYXRlUXVldWUsbS5tZW1vaXplZFN0YXRlPXIubWVtb2l6ZWRTdGF0ZSxcbm0ubGFuZXM9ci5sYW5lcyk6KG0udXBkYXRlUXVldWU9bnVsbCxtLm1lbW9pemVkU3RhdGU9bnVsbCl9dmFyIHk9VmkoZyk7aWYobnVsbCE9PXkpe3kuZmxhZ3MmPS0yNTc7V2koeSxnLGgsZixiKTt5Lm1vZGUmMSYmVGkoZixsLGIpO2I9eTtrPWw7dmFyIG49Yi51cGRhdGVRdWV1ZTtpZihudWxsPT09bil7dmFyIHQ9bmV3IFNldDt0LmFkZChrKTtiLnVwZGF0ZVF1ZXVlPXR9ZWxzZSBuLmFkZChrKTticmVhayBhfWVsc2V7aWYoMD09PShiJjEpKXtUaShmLGwsYik7dWooKTticmVhayBhfWs9RXJyb3IocCg0MjYpKX19ZWxzZSBpZihJJiZoLm1vZGUmMSl7dmFyIEo9VmkoZyk7aWYobnVsbCE9PUopezA9PT0oSi5mbGFncyY2NTUzNikmJihKLmZsYWdzfD0yNTYpO1dpKEosZyxoLGYsYik7SmcoS2koayxoKSk7YnJlYWsgYX19Zj1rPUtpKGssaCk7NCE9PVQmJihUPTIpO251bGw9PT10az90az1bZl06dGsucHVzaChmKTtmPWc7ZG97c3dpdGNoKGYudGFnKXtjYXNlIDM6Zi5mbGFnc3w9NjU1MzY7XG5iJj0tYjtmLmxhbmVzfD1iO3ZhciB4PU9pKGYsayxiKTtmaChmLHgpO2JyZWFrIGE7Y2FzZSAxOmg9azt2YXIgdz1mLnR5cGUsdT1mLnN0YXRlTm9kZTtpZigwPT09KGYuZmxhZ3MmMTI4KSYmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiB3LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PXUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiB1LmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVNpfHwhU2kuaGFzKHUpKSkpe2YuZmxhZ3N8PTY1NTM2O2ImPS1iO2YubGFuZXN8PWI7dmFyIEY9UmkoZixoLGIpO2ZoKGYsRik7YnJlYWsgYX19Zj1mLnJldHVybn13aGlsZShudWxsIT09Zil9VGsoYyl9Y2F0Y2gobmEpe2I9bmE7WT09PWMmJm51bGwhPT1jJiYoWT1jPWMucmV0dXJuKTtjb250aW51ZX1icmVha313aGlsZSgxKX1mdW5jdGlvbiBLaygpe3ZhciBhPW5rLmN1cnJlbnQ7bmsuY3VycmVudD1haTtyZXR1cm4gbnVsbD09PWE/YWk6YX1cbmZ1bmN0aW9uIHVqKCl7aWYoMD09PVR8fDM9PT1UfHwyPT09VClUPTQ7bnVsbD09PVJ8fDA9PT0oaGgmMjY4NDM1NDU1KSYmMD09PShyayYyNjg0MzU0NTUpfHxEayhSLFopfWZ1bmN0aW9uIEprKGEsYil7dmFyIGM9SztLfD0yO3ZhciBkPUtrKCk7aWYoUiE9PWF8fFohPT1iKXZrPW51bGwsTGsoYSxiKTtkbyB0cnl7VWsoKTticmVha31jYXRjaChlKXtOayhhLGUpfXdoaWxlKDEpO1FnKCk7Sz1jO25rLmN1cnJlbnQ9ZDtpZihudWxsIT09WSl0aHJvdyBFcnJvcihwKDI2MSkpO1I9bnVsbDtaPTA7cmV0dXJuIFR9ZnVuY3Rpb24gVWsoKXtmb3IoO251bGwhPT1ZOylWayhZKX1mdW5jdGlvbiBNaygpe2Zvcig7bnVsbCE9PVkmJiFjYygpOylWayhZKX1mdW5jdGlvbiBWayhhKXt2YXIgYj1XayhhLmFsdGVybmF0ZSxhLGdqKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHM7bnVsbD09PWI/VGsoYSk6WT1iO29rLmN1cnJlbnQ9bnVsbH1cbmZ1bmN0aW9uIFRrKGEpe3ZhciBiPWE7ZG97dmFyIGM9Yi5hbHRlcm5hdGU7YT1iLnJldHVybjtpZigwPT09KGIuZmxhZ3MmMzI3NjgpKXtpZihjPUZqKGMsYixnaiksbnVsbCE9PWMpe1k9YztyZXR1cm59fWVsc2V7Yz1KaihjLGIpO2lmKG51bGwhPT1jKXtjLmZsYWdzJj0zMjc2NztZPWM7cmV0dXJufWlmKG51bGwhPT1hKWEuZmxhZ3N8PTMyNzY4LGEuc3VidHJlZUZsYWdzPTAsYS5kZWxldGlvbnM9bnVsbDtlbHNle1Q9NjtZPW51bGw7cmV0dXJufX1iPWIuc2libGluZztpZihudWxsIT09Yil7WT1iO3JldHVybn1ZPWI9YX13aGlsZShudWxsIT09Yik7MD09PVQmJihUPTUpfWZ1bmN0aW9uIFFrKGEsYixjKXt2YXIgZD1DLGU9cGsudHJhbnNpdGlvbjt0cnl7cGsudHJhbnNpdGlvbj1udWxsLEM9MSxYayhhLGIsYyxkKX1maW5hbGx5e3BrLnRyYW5zaXRpb249ZSxDPWR9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBYayhhLGIsYyxkKXtkbyBJaygpO3doaWxlKG51bGwhPT14ayk7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7Yz1hLmZpbmlzaGVkV29yazt2YXIgZT1hLmZpbmlzaGVkTGFuZXM7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDtpZihjPT09YS5jdXJyZW50KXRocm93IEVycm9yKHAoMTc3KSk7YS5jYWxsYmFja05vZGU9bnVsbDthLmNhbGxiYWNrUHJpb3JpdHk9MDt2YXIgZj1jLmxhbmVzfGMuY2hpbGRMYW5lcztCYyhhLGYpO2E9PT1SJiYoWT1SPW51bGwsWj0wKTswPT09KGMuc3VidHJlZUZsYWdzJjIwNjQpJiYwPT09KGMuZmxhZ3MmMjA2NCl8fHdrfHwod2s9ITAsR2soaGMsZnVuY3Rpb24oKXtJaygpO3JldHVybiBudWxsfSkpO2Y9MCE9PShjLmZsYWdzJjE1OTkwKTtpZigwIT09KGMuc3VidHJlZUZsYWdzJjE1OTkwKXx8Zil7Zj1way50cmFuc2l0aW9uO3BrLnRyYW5zaXRpb249bnVsbDtcbnZhciBnPUM7Qz0xO3ZhciBoPUs7S3w9NDtvay5jdXJyZW50PW51bGw7UGooYSxjKTtlayhjLGEpO09lKERmKTtkZD0hIUNmO0RmPUNmPW51bGw7YS5jdXJyZW50PWM7aWsoYyxhLGUpO2RjKCk7Sz1oO0M9Zztway50cmFuc2l0aW9uPWZ9ZWxzZSBhLmN1cnJlbnQ9Yzt3ayYmKHdrPSExLHhrPWEseWs9ZSk7Zj1hLnBlbmRpbmdMYW5lczswPT09ZiYmKFNpPW51bGwpO21jKGMuc3RhdGVOb2RlLGQpO0VrKGEsQigpKTtpZihudWxsIT09Yilmb3IoZD1hLm9uUmVjb3ZlcmFibGVFcnJvcixjPTA7YzxiLmxlbmd0aDtjKyspZT1iW2NdLGQoZS52YWx1ZSx7Y29tcG9uZW50U3RhY2s6ZS5zdGFjayxkaWdlc3Q6ZS5kaWdlc3R9KTtpZihQaSl0aHJvdyBQaT0hMSxhPVFpLFFpPW51bGwsYTswIT09KHlrJjEpJiYwIT09YS50YWcmJklrKCk7Zj1hLnBlbmRpbmdMYW5lczswIT09KGYmMSk/YT09PUFrP3prKys6KHprPTAsQWs9YSk6ems9MDtqZygpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gSWsoKXtpZihudWxsIT09eGspe3ZhciBhPURjKHlrKSxiPXBrLnRyYW5zaXRpb24sYz1DO3RyeXtway50cmFuc2l0aW9uPW51bGw7Qz0xNj5hPzE2OmE7aWYobnVsbD09PXhrKXZhciBkPSExO2Vsc2V7YT14azt4az1udWxsO3lrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzMxKSk7dmFyIGU9SztLfD00O2ZvcihWPWEuY3VycmVudDtudWxsIT09Vjspe3ZhciBmPVYsZz1mLmNoaWxkO2lmKDAhPT0oVi5mbGFncyYxNikpe3ZhciBoPWYuZGVsZXRpb25zO2lmKG51bGwhPT1oKXtmb3IodmFyIGs9MDtrPGgubGVuZ3RoO2srKyl7dmFyIGw9aFtrXTtmb3IoVj1sO251bGwhPT1WOyl7dmFyIG09Vjtzd2l0Y2gobS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UWooOCxtLGYpfXZhciBxPW0uY2hpbGQ7aWYobnVsbCE9PXEpcS5yZXR1cm49bSxWPXE7ZWxzZSBmb3IoO251bGwhPT1WOyl7bT1WO3ZhciByPW0uc2libGluZyx5PW0ucmV0dXJuO1RqKG0pO2lmKG09PT1cbmwpe1Y9bnVsbDticmVha31pZihudWxsIT09cil7ci5yZXR1cm49eTtWPXI7YnJlYWt9Vj15fX19dmFyIG49Zi5hbHRlcm5hdGU7aWYobnVsbCE9PW4pe3ZhciB0PW4uY2hpbGQ7aWYobnVsbCE9PXQpe24uY2hpbGQ9bnVsbDtkb3t2YXIgSj10LnNpYmxpbmc7dC5zaWJsaW5nPW51bGw7dD1KfXdoaWxlKG51bGwhPT10KX19Vj1mfX1pZigwIT09KGYuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09ZylnLnJldHVybj1mLFY9ZztlbHNlIGI6Zm9yKDtudWxsIT09Vjspe2Y9VjtpZigwIT09KGYuZmxhZ3MmMjA0OCkpc3dpdGNoKGYudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDksZixmLnJldHVybil9dmFyIHg9Zi5zaWJsaW5nO2lmKG51bGwhPT14KXt4LnJldHVybj1mLnJldHVybjtWPXg7YnJlYWsgYn1WPWYucmV0dXJufX12YXIgdz1hLmN1cnJlbnQ7Zm9yKFY9dztudWxsIT09Vjspe2c9Vjt2YXIgdT1nLmNoaWxkO2lmKDAhPT0oZy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1cbnUpdS5yZXR1cm49ZyxWPXU7ZWxzZSBiOmZvcihnPXc7bnVsbCE9PVY7KXtoPVY7aWYoMCE9PShoLmZsYWdzJjIwNDgpKXRyeXtzd2l0Y2goaC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UmooOSxoKX19Y2F0Y2gobmEpe1coaCxoLnJldHVybixuYSl9aWYoaD09PWcpe1Y9bnVsbDticmVhayBifXZhciBGPWguc2libGluZztpZihudWxsIT09Ril7Ri5yZXR1cm49aC5yZXR1cm47Vj1GO2JyZWFrIGJ9Vj1oLnJldHVybn19Sz1lO2pnKCk7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vblBvc3RDb21taXRGaWJlclJvb3QpdHJ5e2xjLm9uUG9zdENvbW1pdEZpYmVyUm9vdChrYyxhKX1jYXRjaChuYSl7fWQ9ITB9cmV0dXJuIGR9ZmluYWxseXtDPWMscGsudHJhbnNpdGlvbj1ifX1yZXR1cm4hMX1mdW5jdGlvbiBZayhhLGIsYyl7Yj1LaShjLGIpO2I9T2koYSxiLDEpO2E9ZGgoYSxiLDEpO2I9TCgpO251bGwhPT1hJiYoQWMoYSwxLGIpLEVrKGEsYikpfVxuZnVuY3Rpb24gVyhhLGIsYyl7aWYoMz09PWEudGFnKVlrKGEsYSxjKTtlbHNlIGZvcig7bnVsbCE9PWI7KXtpZigzPT09Yi50YWcpe1lrKGIsYSxjKTticmVha31lbHNlIGlmKDE9PT1iLnRhZyl7dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVNpfHwhU2kuaGFzKGQpKSl7YT1LaShjLGEpO2E9UmkoYixhLDEpO2I9ZGgoYixhLDEpO2E9TCgpO251bGwhPT1iJiYoQWMoYiwxLGEpLEVrKGIsYSkpO2JyZWFrfX1iPWIucmV0dXJufX1cbmZ1bmN0aW9uIFVpKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtudWxsIT09ZCYmZC5kZWxldGUoYik7Yj1MKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZjO1I9PT1hJiYoWiZjKT09PWMmJig0PT09VHx8Mz09PVQmJihaJjEzMDAyMzQyNCk9PT1aJiY1MDA+QigpLWdrP0xrKGEsMCk6c2t8PWMpO0VrKGEsYil9ZnVuY3Rpb24gWmsoYSxiKXswPT09YiYmKDA9PT0oYS5tb2RlJjEpP2I9MTooYj1zYyxzYzw8PTEsMD09PShzYyYxMzAwMjM0MjQpJiYoc2M9NDE5NDMwNCkpKTt2YXIgYz1MKCk7YT1aZyhhLGIpO251bGwhPT1hJiYoQWMoYSxiLGMpLEVrKGEsYykpfWZ1bmN0aW9uIHZqKGEpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZSxjPTA7bnVsbCE9PWImJihjPWIucmV0cnlMYW5lKTtaayhhLGMpfVxuZnVuY3Rpb24gY2soYSxiKXt2YXIgYz0wO3N3aXRjaChhLnRhZyl7Y2FzZSAxMzp2YXIgZD1hLnN0YXRlTm9kZTt2YXIgZT1hLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihjPWUucmV0cnlMYW5lKTticmVhaztjYXNlIDE5OmQ9YS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMxNCkpO31udWxsIT09ZCYmZC5kZWxldGUoYik7WmsoYSxjKX12YXIgV2s7XG5Xaz1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9PWEpaWYoYS5tZW1vaXplZFByb3BzIT09Yi5wZW5kaW5nUHJvcHN8fFdmLmN1cnJlbnQpVWc9ITA7ZWxzZXtpZigwPT09KGEubGFuZXMmYykmJjA9PT0oYi5mbGFncyYxMjgpKXJldHVybiBVZz0hMSx6aihhLGIsYyk7VWc9MCE9PShhLmZsYWdzJjEzMTA3Mik/ITA6ITF9ZWxzZSBVZz0hMSxJJiYwIT09KGIuZmxhZ3MmMTA0ODU3NikmJnVnKGIsbmcsYi5pbmRleCk7Yi5sYW5lcz0wO3N3aXRjaChiLnRhZyl7Y2FzZSAyOnZhciBkPWIudHlwZTtqaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7dmFyIGU9WWYoYixILmN1cnJlbnQpO1RnKGIsYyk7ZT1YaChudWxsLGIsZCxhLGUsYyk7dmFyIGY9YmkoKTtiLmZsYWdzfD0xO1wib2JqZWN0XCI9PT10eXBlb2YgZSYmbnVsbCE9PWUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLnJlbmRlciYmdm9pZCAwPT09ZS4kJHR5cGVvZj8oYi50YWc9MSxiLm1lbW9pemVkU3RhdGU9bnVsbCxiLnVwZGF0ZVF1ZXVlPVxubnVsbCxaZihkKT8oZj0hMCxjZyhiKSk6Zj0hMSxiLm1lbW9pemVkU3RhdGU9bnVsbCE9PWUuc3RhdGUmJnZvaWQgMCE9PWUuc3RhdGU/ZS5zdGF0ZTpudWxsLGFoKGIpLGUudXBkYXRlcj1uaCxiLnN0YXRlTm9kZT1lLGUuX3JlYWN0SW50ZXJuYWxzPWIscmgoYixkLGEsYyksYj1raihudWxsLGIsZCwhMCxmLGMpKTooYi50YWc9MCxJJiZmJiZ2ZyhiKSxZaShudWxsLGIsZSxjKSxiPWIuY2hpbGQpO3JldHVybiBiO2Nhc2UgMTY6ZD1iLmVsZW1lbnRUeXBlO2E6e2pqKGEsYik7YT1iLnBlbmRpbmdQcm9wcztlPWQuX2luaXQ7ZD1lKGQuX3BheWxvYWQpO2IudHlwZT1kO2U9Yi50YWc9JGsoZCk7YT1MZyhkLGEpO3N3aXRjaChlKXtjYXNlIDA6Yj1kaihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxOmI9aWoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTE6Yj1aaShudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxNDpiPWFqKG51bGwsYixkLExnKGQudHlwZSxhKSxjKTticmVhayBhfXRocm93IEVycm9yKHAoMzA2LFxuZCxcIlwiKSk7fXJldHVybiBiO2Nhc2UgMDpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxkaihhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxpaihhLGIsZCxlLGMpO2Nhc2UgMzphOntsaihiKTtpZihudWxsPT09YSl0aHJvdyBFcnJvcihwKDM4NykpO2Q9Yi5wZW5kaW5nUHJvcHM7Zj1iLm1lbW9pemVkU3RhdGU7ZT1mLmVsZW1lbnQ7YmgoYSxiKTtnaChiLGQsbnVsbCxjKTt2YXIgZz1iLm1lbW9pemVkU3RhdGU7ZD1nLmVsZW1lbnQ7aWYoZi5pc0RlaHlkcmF0ZWQpaWYoZj17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDohMSxjYWNoZTpnLmNhY2hlLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6Zy5wZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9LGIudXBkYXRlUXVldWUuYmFzZVN0YXRlPVxuZixiLm1lbW9pemVkU3RhdGU9ZixiLmZsYWdzJjI1Nil7ZT1LaShFcnJvcihwKDQyMykpLGIpO2I9bWooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgaWYoZCE9PWUpe2U9S2koRXJyb3IocCg0MjQpKSxiKTtiPW1qKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGZvcih5Zz1MZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLmZpcnN0Q2hpbGQpLHhnPWIsST0hMCx6Zz1udWxsLGM9Q2goYixudWxsLGQsYyksYi5jaGlsZD1jO2M7KWMuZmxhZ3M9Yy5mbGFncyYtM3w0MDk2LGM9Yy5zaWJsaW5nO2Vsc2V7SWcoKTtpZihkPT09ZSl7Yj0kaShhLGIsYyk7YnJlYWsgYX1ZaShhLGIsZCxjKX1iPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA1OnJldHVybiBLaChiKSxudWxsPT09YSYmRWcoYiksZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxmPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpudWxsLGc9ZS5jaGlsZHJlbixFZihkLGUpP2c9bnVsbDpudWxsIT09ZiYmRWYoZCxmKSYmKGIuZmxhZ3N8PTMyKSxcbmhqKGEsYiksWWkoYSxiLGcsYyksYi5jaGlsZDtjYXNlIDY6cmV0dXJuIG51bGw9PT1hJiZFZyhiKSxudWxsO2Nhc2UgMTM6cmV0dXJuIHBqKGEsYixjKTtjYXNlIDQ6cmV0dXJuIEloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksZD1iLnBlbmRpbmdQcm9wcyxudWxsPT09YT9iLmNoaWxkPUJoKGIsbnVsbCxkLGMpOllpKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxaaShhLGIsZCxlLGMpO2Nhc2UgNzpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLGMpLGIuY2hpbGQ7Y2FzZSA4OnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEyOnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEwOmE6e2Q9Yi50eXBlLl9jb250ZXh0O2U9Yi5wZW5kaW5nUHJvcHM7Zj1iLm1lbW9pemVkUHJvcHM7XG5nPWUudmFsdWU7RyhNZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1nO2lmKG51bGwhPT1mKWlmKEhlKGYudmFsdWUsZykpe2lmKGYuY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhV2YuY3VycmVudCl7Yj0kaShhLGIsYyk7YnJlYWsgYX19ZWxzZSBmb3IoZj1iLmNoaWxkLG51bGwhPT1mJiYoZi5yZXR1cm49Yik7bnVsbCE9PWY7KXt2YXIgaD1mLmRlcGVuZGVuY2llcztpZihudWxsIT09aCl7Zz1mLmNoaWxkO2Zvcih2YXIgaz1oLmZpcnN0Q29udGV4dDtudWxsIT09azspe2lmKGsuY29udGV4dD09PWQpe2lmKDE9PT1mLnRhZyl7az1jaCgtMSxjJi1jKTtrLnRhZz0yO3ZhciBsPWYudXBkYXRlUXVldWU7aWYobnVsbCE9PWwpe2w9bC5zaGFyZWQ7dmFyIG09bC5wZW5kaW5nO251bGw9PT1tP2submV4dD1rOihrLm5leHQ9bS5uZXh0LG0ubmV4dD1rKTtsLnBlbmRpbmc9a319Zi5sYW5lc3w9YztrPWYuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5sYW5lc3w9Yyk7U2coZi5yZXR1cm4sXG5jLGIpO2gubGFuZXN8PWM7YnJlYWt9az1rLm5leHR9fWVsc2UgaWYoMTA9PT1mLnRhZylnPWYudHlwZT09PWIudHlwZT9udWxsOmYuY2hpbGQ7ZWxzZSBpZigxOD09PWYudGFnKXtnPWYucmV0dXJuO2lmKG51bGw9PT1nKXRocm93IEVycm9yKHAoMzQxKSk7Zy5sYW5lc3w9YztoPWcuYWx0ZXJuYXRlO251bGwhPT1oJiYoaC5sYW5lc3w9Yyk7U2coZyxjLGIpO2c9Zi5zaWJsaW5nfWVsc2UgZz1mLmNoaWxkO2lmKG51bGwhPT1nKWcucmV0dXJuPWY7ZWxzZSBmb3IoZz1mO251bGwhPT1nOyl7aWYoZz09PWIpe2c9bnVsbDticmVha31mPWcuc2libGluZztpZihudWxsIT09Zil7Zi5yZXR1cm49Zy5yZXR1cm47Zz1mO2JyZWFrfWc9Zy5yZXR1cm59Zj1nfVlpKGEsYixlLmNoaWxkcmVuLGMpO2I9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDk6cmV0dXJuIGU9Yi50eXBlLGQ9Yi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sVGcoYixjKSxlPVZnKGUpLGQ9ZChlKSxiLmZsYWdzfD0xLFlpKGEsYixkLGMpLFxuYi5jaGlsZDtjYXNlIDE0OnJldHVybiBkPWIudHlwZSxlPUxnKGQsYi5wZW5kaW5nUHJvcHMpLGU9TGcoZC50eXBlLGUpLGFqKGEsYixkLGUsYyk7Y2FzZSAxNTpyZXR1cm4gY2ooYSxiLGIudHlwZSxiLnBlbmRpbmdQcm9wcyxjKTtjYXNlIDE3OnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGpqKGEsYiksYi50YWc9MSxaZihkKT8oYT0hMCxjZyhiKSk6YT0hMSxUZyhiLGMpLHBoKGIsZCxlKSxyaChiLGQsZSxjKSxraihudWxsLGIsZCwhMCxhLGMpO2Nhc2UgMTk6cmV0dXJuIHlqKGEsYixjKTtjYXNlIDIyOnJldHVybiBlaihhLGIsYyl9dGhyb3cgRXJyb3IocCgxNTYsYi50YWcpKTt9O2Z1bmN0aW9uIEdrKGEsYil7cmV0dXJuIGFjKGEsYil9XG5mdW5jdGlvbiBhbChhLGIsYyxkKXt0aGlzLnRhZz1hO3RoaXMua2V5PWM7dGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbDt0aGlzLmluZGV4PTA7dGhpcy5yZWY9bnVsbDt0aGlzLnBlbmRpbmdQcm9wcz1iO3RoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsO3RoaXMubW9kZT1kO3RoaXMuc3VidHJlZUZsYWdzPXRoaXMuZmxhZ3M9MDt0aGlzLmRlbGV0aW9ucz1udWxsO3RoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTA7dGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBCZyhhLGIsYyxkKXtyZXR1cm4gbmV3IGFsKGEsYixjLGQpfWZ1bmN0aW9uIGJqKGEpe2E9YS5wcm90b3R5cGU7cmV0dXJuISghYXx8IWEuaXNSZWFjdENvbXBvbmVudCl9XG5mdW5jdGlvbiAkayhhKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYmooYSk/MTowO2lmKHZvaWQgMCE9PWEmJm51bGwhPT1hKXthPWEuJCR0eXBlb2Y7aWYoYT09PURhKXJldHVybiAxMTtpZihhPT09R2EpcmV0dXJuIDE0fXJldHVybiAyfVxuZnVuY3Rpb24gd2goYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsPT09Yz8oYz1CZyhhLnRhZyxiLGEua2V5LGEubW9kZSksYy5lbGVtZW50VHlwZT1hLmVsZW1lbnRUeXBlLGMudHlwZT1hLnR5cGUsYy5zdGF0ZU5vZGU9YS5zdGF0ZU5vZGUsYy5hbHRlcm5hdGU9YSxhLmFsdGVybmF0ZT1jKTooYy5wZW5kaW5nUHJvcHM9YixjLnR5cGU9YS50eXBlLGMuZmxhZ3M9MCxjLnN1YnRyZWVGbGFncz0wLGMuZGVsZXRpb25zPW51bGwpO2MuZmxhZ3M9YS5mbGFncyYxNDY4MDA2NDtjLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzO2MubGFuZXM9YS5sYW5lcztjLmNoaWxkPWEuY2hpbGQ7Yy5tZW1vaXplZFByb3BzPWEubWVtb2l6ZWRQcm9wcztjLm1lbW9pemVkU3RhdGU9YS5tZW1vaXplZFN0YXRlO2MudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2xhbmVzOmIubGFuZXMsZmlyc3RDb250ZXh0OmIuZmlyc3RDb250ZXh0fTtcbmMuc2libGluZz1hLnNpYmxpbmc7Yy5pbmRleD1hLmluZGV4O2MucmVmPWEucmVmO3JldHVybiBjfVxuZnVuY3Rpb24geWgoYSxiLGMsZCxlLGYpe3ZhciBnPTI7ZD1hO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKWJqKGEpJiYoZz0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlnPTU7ZWxzZSBhOnN3aXRjaChhKXtjYXNlIHlhOnJldHVybiBBaChjLmNoaWxkcmVuLGUsZixiKTtjYXNlIHphOmc9ODtlfD04O2JyZWFrO2Nhc2UgQWE6cmV0dXJuIGE9QmcoMTIsYyxiLGV8MiksYS5lbGVtZW50VHlwZT1BYSxhLmxhbmVzPWYsYTtjYXNlIEVhOnJldHVybiBhPUJnKDEzLGMsYixlKSxhLmVsZW1lbnRUeXBlPUVhLGEubGFuZXM9ZixhO2Nhc2UgRmE6cmV0dXJuIGE9QmcoMTksYyxiLGUpLGEuZWxlbWVudFR5cGU9RmEsYS5sYW5lcz1mLGE7Y2FzZSBJYTpyZXR1cm4gcWooYyxlLGYsYik7ZGVmYXVsdDppZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIEJhOmc9MTA7YnJlYWsgYTtjYXNlIENhOmc9OTticmVhayBhO2Nhc2UgRGE6Zz0xMTtcbmJyZWFrIGE7Y2FzZSBHYTpnPTE0O2JyZWFrIGE7Y2FzZSBIYTpnPTE2O2Q9bnVsbDticmVhayBhfXRocm93IEVycm9yKHAoMTMwLG51bGw9PWE/YTp0eXBlb2YgYSxcIlwiKSk7fWI9QmcoZyxjLGIsZSk7Yi5lbGVtZW50VHlwZT1hO2IudHlwZT1kO2IubGFuZXM9ZjtyZXR1cm4gYn1mdW5jdGlvbiBBaChhLGIsYyxkKXthPUJnKDcsYSxkLGIpO2EubGFuZXM9YztyZXR1cm4gYX1mdW5jdGlvbiBxaihhLGIsYyxkKXthPUJnKDIyLGEsZCxiKTthLmVsZW1lbnRUeXBlPUlhO2EubGFuZXM9YzthLnN0YXRlTm9kZT17aXNIaWRkZW46ITF9O3JldHVybiBhfWZ1bmN0aW9uIHhoKGEsYixjKXthPUJnKDYsYSxudWxsLGIpO2EubGFuZXM9YztyZXR1cm4gYX1cbmZ1bmN0aW9uIHpoKGEsYixjKXtiPUJnKDQsbnVsbCE9PWEuY2hpbGRyZW4/YS5jaGlsZHJlbjpbXSxhLmtleSxiKTtiLmxhbmVzPWM7Yi5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86YS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmEuaW1wbGVtZW50YXRpb259O3JldHVybiBifVxuZnVuY3Rpb24gYmwoYSxiLGMsZCxlKXt0aGlzLnRhZz1iO3RoaXMuY29udGFpbmVySW5mbz1hO3RoaXMuZmluaXNoZWRXb3JrPXRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsO3RoaXMudGltZW91dEhhbmRsZT0tMTt0aGlzLmNhbGxiYWNrTm9kZT10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsO3RoaXMuY2FsbGJhY2tQcmlvcml0eT0wO3RoaXMuZXZlbnRUaW1lcz16YygwKTt0aGlzLmV4cGlyYXRpb25UaW1lcz16YygtMSk7dGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wO3RoaXMuZW50YW5nbGVtZW50cz16YygwKTt0aGlzLmlkZW50aWZpZXJQcmVmaXg9ZDt0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1lO3RoaXMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1cbm51bGx9ZnVuY3Rpb24gY2woYSxiLGMsZCxlLGYsZyxoLGspe2E9bmV3IGJsKGEsYixjLGgsayk7MT09PWI/KGI9MSwhMD09PWYmJihifD04KSk6Yj0wO2Y9QmcoMyxudWxsLG51bGwsYik7YS5jdXJyZW50PWY7Zi5zdGF0ZU5vZGU9YTtmLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6YyxjYWNoZTpudWxsLHRyYW5zaXRpb25zOm51bGwscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpudWxsfTthaChmKTtyZXR1cm4gYX1mdW5jdGlvbiBkbChhLGIsYyl7dmFyIGQ9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOndhLGtleTpudWxsPT1kP251bGw6XCJcIitkLGNoaWxkcmVuOmEsY29udGFpbmVySW5mbzpiLGltcGxlbWVudGF0aW9uOmN9fVxuZnVuY3Rpb24gZWwoYSl7aWYoIWEpcmV0dXJuIFZmO2E9YS5fcmVhY3RJbnRlcm5hbHM7YTp7aWYoVmIoYSkhPT1hfHwxIT09YS50YWcpdGhyb3cgRXJyb3IocCgxNzApKTt2YXIgYj1hO2Rve3N3aXRjaChiLnRhZyl7Y2FzZSAzOmI9Yi5zdGF0ZU5vZGUuY29udGV4dDticmVhayBhO2Nhc2UgMTppZihaZihiLnR5cGUpKXtiPWIuc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIGF9fWI9Yi5yZXR1cm59d2hpbGUobnVsbCE9PWIpO3Rocm93IEVycm9yKHAoMTcxKSk7fWlmKDE9PT1hLnRhZyl7dmFyIGM9YS50eXBlO2lmKFpmKGMpKXJldHVybiBiZyhhLGMsYil9cmV0dXJuIGJ9XG5mdW5jdGlvbiBmbChhLGIsYyxkLGUsZixnLGgsayl7YT1jbChjLGQsITAsYSxlLGYsZyxoLGspO2EuY29udGV4dD1lbChudWxsKTtjPWEuY3VycmVudDtkPUwoKTtlPWxoKGMpO2Y9Y2goZCxlKTtmLmNhbGxiYWNrPXZvaWQgMCE9PWImJm51bGwhPT1iP2I6bnVsbDtkaChjLGYsZSk7YS5jdXJyZW50LmxhbmVzPWU7QWMoYSxlLGQpO0VrKGEsZCk7cmV0dXJuIGF9ZnVuY3Rpb24gZ2woYSxiLGMsZCl7dmFyIGU9Yi5jdXJyZW50LGY9TCgpLGc9bGgoZSk7Yz1lbChjKTtudWxsPT09Yi5jb250ZXh0P2IuY29udGV4dD1jOmIucGVuZGluZ0NvbnRleHQ9YztiPWNoKGYsZyk7Yi5wYXlsb2FkPXtlbGVtZW50OmF9O2Q9dm9pZCAwPT09ZD9udWxsOmQ7bnVsbCE9PWQmJihiLmNhbGxiYWNrPWQpO2E9ZGgoZSxiLGcpO251bGwhPT1hJiYobWgoYSxlLGcsZiksZWgoYSxlLGcpKTtyZXR1cm4gZ31cbmZ1bmN0aW9uIGhsKGEpe2E9YS5jdXJyZW50O2lmKCFhLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChhLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gaWwoYSxiKXthPWEubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7dmFyIGM9YS5yZXRyeUxhbmU7YS5yZXRyeUxhbmU9MCE9PWMmJmM8Yj9jOmJ9fWZ1bmN0aW9uIGpsKGEsYil7aWwoYSxiKTsoYT1hLmFsdGVybmF0ZSkmJmlsKGEsYil9ZnVuY3Rpb24ga2woKXtyZXR1cm4gbnVsbH12YXIgbGw9XCJmdW5jdGlvblwiPT09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGEpe2NvbnNvbGUuZXJyb3IoYSl9O2Z1bmN0aW9uIG1sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubmwucHJvdG90eXBlLnJlbmRlcj1tbC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDQwOSkpO2dsKGEsYixudWxsLG51bGwpfTtubC5wcm90b3R5cGUudW5tb3VudD1tbC5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsIT09YSl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIGI9YS5jb250YWluZXJJbmZvO1NrKGZ1bmN0aW9uKCl7Z2wobnVsbCxhLG51bGwsbnVsbCl9KTtiW3VmXT1udWxsfX07ZnVuY3Rpb24gbmwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5ubC5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb249ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9SGMoKTthPXtibG9ja2VkT246bnVsbCx0YXJnZXQ6YSxwcmlvcml0eTpifTtmb3IodmFyIGM9MDtjPFFjLmxlbmd0aCYmMCE9PWImJmI8UWNbY10ucHJpb3JpdHk7YysrKTtRYy5zcGxpY2UoYywwLGEpOzA9PT1jJiZWYyhhKX19O2Z1bmN0aW9uIG9sKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlKX1mdW5jdGlvbiBwbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSYmKDghPT1hLm5vZGVUeXBlfHxcIiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSBcIiE9PWEubm9kZVZhbHVlKSl9ZnVuY3Rpb24gcWwoKXt9XG5mdW5jdGlvbiBybChhLGIsYyxkLGUpe2lmKGUpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZj1kO2Q9ZnVuY3Rpb24oKXt2YXIgYT1obChnKTtmLmNhbGwoYSl9fXZhciBnPWZsKGIsZCxhLDAsbnVsbCwhMSwhMSxcIlwiLHFsKTthLl9yZWFjdFJvb3RDb250YWluZXI9ZzthW3VmXT1nLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1NrKCk7cmV0dXJuIGd9Zm9yKDtlPWEubGFzdENoaWxkOylhLnJlbW92ZUNoaWxkKGUpO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgaD1kO2Q9ZnVuY3Rpb24oKXt2YXIgYT1obChrKTtoLmNhbGwoYSl9fXZhciBrPWNsKGEsMCwhMSxudWxsLG51bGwsITEsITEsXCJcIixxbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWs7YVt1Zl09ay5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtTayhmdW5jdGlvbigpe2dsKGIsayxjLGQpfSk7cmV0dXJuIGt9XG5mdW5jdGlvbiBzbChhLGIsYyxkLGUpe3ZhciBmPWMuX3JlYWN0Um9vdENvbnRhaW5lcjtpZihmKXt2YXIgZz1mO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlKXt2YXIgaD1lO2U9ZnVuY3Rpb24oKXt2YXIgYT1obChnKTtoLmNhbGwoYSl9fWdsKGIsZyxhLGUpfWVsc2UgZz1ybChjLGIsYSxlLGQpO3JldHVybiBobChnKX1FYz1mdW5jdGlvbihhKXtzd2l0Y2goYS50YWcpe2Nhc2UgMzp2YXIgYj1hLnN0YXRlTm9kZTtpZihiLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBjPXRjKGIucGVuZGluZ0xhbmVzKTswIT09YyYmKENjKGIsY3wxKSxFayhiLEIoKSksMD09PShLJjYpJiYoSGo9QigpKzUwMCxqZygpKSl9YnJlYWs7Y2FzZSAxMzpTayhmdW5jdGlvbigpe3ZhciBiPVpnKGEsMSk7aWYobnVsbCE9PWIpe3ZhciBjPUwoKTttaChiLGEsMSxjKX19KSxqbChhLDEpfX07XG5GYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1aZyhhLDEzNDIxNzcyOCk7aWYobnVsbCE9PWIpe3ZhciBjPUwoKTttaChiLGEsMTM0MjE3NzI4LGMpfWpsKGEsMTM0MjE3NzI4KX19O0djPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWxoKGEpLGM9WmcoYSxiKTtpZihudWxsIT09Yyl7dmFyIGQ9TCgpO21oKGMsYSxiLGQpfWpsKGEsYil9fTtIYz1mdW5jdGlvbigpe3JldHVybiBDfTtJYz1mdW5jdGlvbihhLGIpe3ZhciBjPUM7dHJ5e3JldHVybiBDPWEsYigpfWZpbmFsbHl7Qz1jfX07XG55Yj1mdW5jdGlvbihhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgXCJpbnB1dFwiOmJiKGEsYyk7Yj1jLm5hbWU7aWYoXCJyYWRpb1wiPT09Yy50eXBlJiZudWxsIT1iKXtmb3IoYz1hO2MucGFyZW50Tm9kZTspYz1jLnBhcmVudE5vZGU7Yz1jLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFtuYW1lPVwiK0pTT04uc3RyaW5naWZ5KFwiXCIrYikrJ11bdHlwZT1cInJhZGlvXCJdJyk7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKyl7dmFyIGQ9Y1tiXTtpZihkIT09YSYmZC5mb3JtPT09YS5mb3JtKXt2YXIgZT1EYihkKTtpZighZSl0aHJvdyBFcnJvcihwKDkwKSk7V2EoZCk7YmIoZCxlKX19fWJyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGEsYyk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmI9Yy52YWx1ZSxudWxsIT1iJiZmYihhLCEhYy5tdWx0aXBsZSxiLCExKX19O0diPVJrO0hiPVNrO1xudmFyIHRsPXt1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ITEsRXZlbnRzOltDYix1ZSxEYixFYixGYixSa119LHVsPXtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTpXYyxidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE4LjIuMFwiLHJlbmRlcmVyUGFja2FnZU5hbWU6XCJyZWFjdC1kb21cIn07XG52YXIgdmw9e2J1bmRsZVR5cGU6dWwuYnVuZGxlVHlwZSx2ZXJzaW9uOnVsLnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTp1bC5yZW5kZXJlclBhY2thZ2VOYW1lLHJlbmRlcmVyQ29uZmlnOnVsLnJlbmRlcmVyQ29uZmlnLG92ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLG92ZXJyaWRlUHJvcHNEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6bnVsbCxzZXRFcnJvckhhbmRsZXI6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOnVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oYSl7YT1aYihhKTtyZXR1cm4gbnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6dWwuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2V8fFxua2wsZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbCxyZWNvbmNpbGVyVmVyc2lvbjpcIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwifTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyl7dmFyIHdsPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighd2wuaXNEaXNhYmxlZCYmd2wuc3VwcG9ydHNGaWJlcil0cnl7a2M9d2wuaW5qZWN0KHZsKSxsYz13bH1jYXRjaChhKXt9fWV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9dGw7XG5leHBvcnRzLmNyZWF0ZVBvcnRhbD1mdW5jdGlvbihhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFvbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBkbChhLGIsbnVsbCxjKX07ZXhwb3J0cy5jcmVhdGVSb290PWZ1bmN0aW9uKGEsYil7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoMjk5KSk7dmFyIGM9ITEsZD1cIlwiLGU9bGw7bnVsbCE9PWImJnZvaWQgMCE9PWImJighMD09PWIudW5zdGFibGVfc3RyaWN0TW9kZSYmKGM9ITApLHZvaWQgMCE9PWIuaWRlbnRpZmllclByZWZpeCYmKGQ9Yi5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1iLm9uUmVjb3ZlcmFibGVFcnJvciYmKGU9Yi5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWNsKGEsMSwhMSxudWxsLG51bGwsYywhMSxkLGUpO2FbdWZdPWIuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7cmV0dXJuIG5ldyBtbChiKX07XG5leHBvcnRzLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoMT09PWEubm9kZVR5cGUpcmV0dXJuIGE7dmFyIGI9YS5fcmVhY3RJbnRlcm5hbHM7aWYodm9pZCAwPT09Yil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEucmVuZGVyKXRocm93IEVycm9yKHAoMTg4KSk7YT1PYmplY3Qua2V5cyhhKS5qb2luKFwiLFwiKTt0aHJvdyBFcnJvcihwKDI2OCxhKSk7fWE9WmIoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtleHBvcnRzLmZsdXNoU3luYz1mdW5jdGlvbihhKXtyZXR1cm4gU2soYSl9O2V4cG9ydHMuaHlkcmF0ZT1mdW5jdGlvbihhLGIsYyl7aWYoIXBsKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHNsKG51bGwsYSxiLCEwLGMpfTtcbmV4cG9ydHMuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDQwNSkpO3ZhciBkPW51bGwhPWMmJmMuaHlkcmF0ZWRTb3VyY2VzfHxudWxsLGU9ITEsZj1cIlwiLGc9bGw7bnVsbCE9PWMmJnZvaWQgMCE9PWMmJighMD09PWMudW5zdGFibGVfc3RyaWN0TW9kZSYmKGU9ITApLHZvaWQgMCE9PWMuaWRlbnRpZmllclByZWZpeCYmKGY9Yy5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1jLm9uUmVjb3ZlcmFibGVFcnJvciYmKGc9Yy5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWZsKGIsbnVsbCxhLDEsbnVsbCE9Yz9jOm51bGwsZSwhMSxmLGcpO2FbdWZdPWIuY3VycmVudDtzZihhKTtpZihkKWZvcihhPTA7YTxkLmxlbmd0aDthKyspYz1kW2FdLGU9Yy5fZ2V0VmVyc2lvbixlPWUoYy5fc291cmNlKSxudWxsPT1iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE/Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVtjLGVdOmIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKGMsXG5lKTtyZXR1cm4gbmV3IG5sKGIpfTtleHBvcnRzLnJlbmRlcj1mdW5jdGlvbihhLGIsYyl7aWYoIXBsKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHNsKG51bGwsYSxiLCExLGMpfTtleHBvcnRzLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIXBsKGEpKXRocm93IEVycm9yKHAoNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhTayhmdW5jdGlvbigpe3NsKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVt1Zl09bnVsbH0pfSksITApOiExfTtleHBvcnRzLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPVJrO1xuZXhwb3J0cy51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighcGwoYykpdGhyb3cgRXJyb3IocCgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihwKDM4KSk7cmV0dXJuIHNsKGEsYixjLCExLGQpfTtleHBvcnRzLnZlcnNpb249XCIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDhcIjtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLyoganNoaW50IGJyb3dzZXI6IHRydWUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblxuLy8gV2UnbGwgY29weSB0aGUgcHJvcGVydGllcyBiZWxvdyBpbnRvIHRoZSBtaXJyb3IgZGl2LlxuLy8gTm90ZSB0aGF0IHNvbWUgYnJvd3NlcnMsIHN1Y2ggYXMgRmlyZWZveCwgZG8gbm90IGNvbmNhdGVuYXRlIHByb3BlcnRpZXNcbi8vIGludG8gdGhlaXIgc2hvcnRoYW5kIChlLmcuIHBhZGRpbmctdG9wLCBwYWRkaW5nLWJvdHRvbSBldGMuIC0+IHBhZGRpbmcpLFxuLy8gc28gd2UgaGF2ZSB0byBsaXN0IGV2ZXJ5IHNpbmdsZSBwcm9wZXJ0eSBleHBsaWNpdGx5LlxudmFyIHByb3BlcnRpZXMgPSBbXG4gICdkaXJlY3Rpb24nLCAgLy8gUlRMIHN1cHBvcnRcbiAgJ2JveFNpemluZycsXG4gICd3aWR0aCcsICAvLyBvbiBDaHJvbWUgYW5kIElFLCBleGNsdWRlIHRoZSBzY3JvbGxiYXIsIHNvIHRoZSBtaXJyb3IgZGl2IHdyYXBzIGV4YWN0bHkgYXMgdGhlIHRleHRhcmVhIGRvZXNcbiAgJ2hlaWdodCcsXG4gICdvdmVyZmxvd1gnLFxuICAnb3ZlcmZsb3dZJywgIC8vIGNvcHkgdGhlIHNjcm9sbGJhciBmb3IgSUVcblxuICAnYm9yZGVyVG9wV2lkdGgnLFxuICAnYm9yZGVyUmlnaHRXaWR0aCcsXG4gICdib3JkZXJCb3R0b21XaWR0aCcsXG4gICdib3JkZXJMZWZ0V2lkdGgnLFxuICAnYm9yZGVyU3R5bGUnLFxuXG4gICdwYWRkaW5nVG9wJyxcbiAgJ3BhZGRpbmdSaWdodCcsXG4gICdwYWRkaW5nQm90dG9tJyxcbiAgJ3BhZGRpbmdMZWZ0JyxcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZm9udFxuICAnZm9udFN0eWxlJyxcbiAgJ2ZvbnRWYXJpYW50JyxcbiAgJ2ZvbnRXZWlnaHQnLFxuICAnZm9udFN0cmV0Y2gnLFxuICAnZm9udFNpemUnLFxuICAnZm9udFNpemVBZGp1c3QnLFxuICAnbGluZUhlaWdodCcsXG4gICdmb250RmFtaWx5JyxcblxuICAndGV4dEFsaWduJyxcbiAgJ3RleHRUcmFuc2Zvcm0nLFxuICAndGV4dEluZGVudCcsXG4gICd0ZXh0RGVjb3JhdGlvbicsICAvLyBtaWdodCBub3QgbWFrZSBhIGRpZmZlcmVuY2UsIGJ1dCBiZXR0ZXIgYmUgc2FmZVxuXG4gICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ3dvcmRTcGFjaW5nJyxcblxuICAndGFiU2l6ZScsXG4gICdNb3pUYWJTaXplJ1xuXG5dO1xuXG52YXIgaXNCcm93c2VyID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKTtcbnZhciBpc0ZpcmVmb3ggPSAoaXNCcm93c2VyICYmIHdpbmRvdy5tb3pJbm5lclNjcmVlblggIT0gbnVsbCk7XG5cbmZ1bmN0aW9uIGdldENhcmV0Q29vcmRpbmF0ZXMoZWxlbWVudCwgcG9zaXRpb24sIG9wdGlvbnMpIHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uI2dldENhcmV0Q29vcmRpbmF0ZXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGEgYnJvd3NlcicpO1xuICB9XG5cbiAgdmFyIGRlYnVnID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnIHx8IGZhbHNlO1xuICBpZiAoZGVidWcpIHtcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaW5wdXQtdGV4dGFyZWEtY2FyZXQtcG9zaXRpb24tbWlycm9yLWRpdicpO1xuICAgIGlmIChlbCkgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gIH1cblxuICAvLyBUaGUgbWlycm9yIGRpdiB3aWxsIHJlcGxpY2F0ZSB0aGUgdGV4dGFyZWEncyBzdHlsZVxuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pZCA9ICdpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2JztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuXG4gIHZhciBzdHlsZSA9IGRpdi5zdHlsZTtcbiAgdmFyIGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUgPyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSA6IGVsZW1lbnQuY3VycmVudFN0eWxlOyAgLy8gY3VycmVudFN0eWxlIGZvciBJRSA8IDlcbiAgdmFyIGlzSW5wdXQgPSBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnO1xuXG4gIC8vIERlZmF1bHQgdGV4dGFyZWEgc3R5bGVzXG4gIHN0eWxlLndoaXRlU3BhY2UgPSAncHJlLXdyYXAnO1xuICBpZiAoIWlzSW5wdXQpXG4gICAgc3R5bGUud29yZFdyYXAgPSAnYnJlYWstd29yZCc7ICAvLyBvbmx5IGZvciB0ZXh0YXJlYS1zXG5cbiAgLy8gUG9zaXRpb24gb2ZmLXNjcmVlblxuICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7ICAvLyByZXF1aXJlZCB0byByZXR1cm4gY29vcmRpbmF0ZXMgcHJvcGVybHlcbiAgaWYgKCFkZWJ1ZylcbiAgICBzdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7ICAvLyBub3QgJ2Rpc3BsYXk6IG5vbmUnIGJlY2F1c2Ugd2Ugd2FudCByZW5kZXJpbmdcblxuICAvLyBUcmFuc2ZlciB0aGUgZWxlbWVudCdzIHByb3BlcnRpZXMgdG8gdGhlIGRpdlxuICBwcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBpZiAoaXNJbnB1dCAmJiBwcm9wID09PSAnbGluZUhlaWdodCcpIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgPGlucHV0PnMgYmVjYXVzZSB0ZXh0IGlzIHJlbmRlcmVkIGNlbnRlcmVkIGFuZCBsaW5lIGhlaWdodCBtYXkgYmUgIT0gaGVpZ2h0XG4gICAgICBzdHlsZS5saW5lSGVpZ2h0ID0gY29tcHV0ZWQuaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVtwcm9wXSA9IGNvbXB1dGVkW3Byb3BdO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzRmlyZWZveCkge1xuICAgIC8vIEZpcmVmb3ggbGllcyBhYm91dCB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgZm9yIHRleHRhcmVhczogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0Mjc1XG4gICAgaWYgKGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KSlcbiAgICAgIHN0eWxlLm92ZXJmbG93WSA9ICdzY3JvbGwnO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7ICAvLyBmb3IgQ2hyb21lIHRvIG5vdCByZW5kZXIgYSBzY3JvbGxiYXI7IElFIGtlZXBzIG92ZXJmbG93WSA9ICdzY3JvbGwnXG4gIH1cblxuICBkaXYudGV4dENvbnRlbnQgPSBlbGVtZW50LnZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbik7XG4gIC8vIFRoZSBzZWNvbmQgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW5wdXQgdHlwZT1cInRleHRcIiB2cyB0ZXh0YXJlYTpcbiAgLy8gc3BhY2VzIG5lZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBub24tYnJlYWtpbmcgc3BhY2VzIC0gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTM0MDIwMzUvMTI2OTAzN1xuICBpZiAoaXNJbnB1dClcbiAgICBkaXYudGV4dENvbnRlbnQgPSBkaXYudGV4dENvbnRlbnQucmVwbGFjZSgvXFxzL2csICdcXHUwMGEwJyk7XG5cbiAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gIC8vIFdyYXBwaW5nIG11c3QgYmUgcmVwbGljYXRlZCAqZXhhY3RseSosIGluY2x1ZGluZyB3aGVuIGEgbG9uZyB3b3JkIGdldHNcbiAgLy8gb250byB0aGUgbmV4dCBsaW5lLCB3aXRoIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBiZWZvcmUgKCM3KS5cbiAgLy8gVGhlICAqb25seSogcmVsaWFibGUgd2F5IHRvIGRvIHRoYXQgaXMgdG8gY29weSB0aGUgKmVudGlyZSogcmVzdCBvZiB0aGVcbiAgLy8gdGV4dGFyZWEncyBjb250ZW50IGludG8gdGhlIDxzcGFuPiBjcmVhdGVkIGF0IHRoZSBjYXJldCBwb3NpdGlvbi5cbiAgLy8gRm9yIGlucHV0cywganVzdCAnLicgd291bGQgYmUgZW5vdWdoLCBidXQgbm8gbmVlZCB0byBib3RoZXIuXG4gIHNwYW4udGV4dENvbnRlbnQgPSBlbGVtZW50LnZhbHVlLnN1YnN0cmluZyhwb3NpdGlvbikgfHwgJy4nOyAgLy8gfHwgYmVjYXVzZSBhIGNvbXBsZXRlbHkgZW1wdHkgZmF1eCBzcGFuIGRvZXNuJ3QgcmVuZGVyIGF0IGFsbFxuICBkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cbiAgdmFyIGNvb3JkaW5hdGVzID0ge1xuICAgIHRvcDogc3Bhbi5vZmZzZXRUb3AgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyVG9wV2lkdGgnXSksXG4gICAgbGVmdDogc3Bhbi5vZmZzZXRMZWZ0ICsgcGFyc2VJbnQoY29tcHV0ZWRbJ2JvcmRlckxlZnRXaWR0aCddKSxcbiAgICBoZWlnaHQ6IHBhcnNlSW50KGNvbXB1dGVkWydsaW5lSGVpZ2h0J10pXG4gIH07XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2FhYSc7XG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuICB9XG5cbiAgcmV0dXJuIGNvb3JkaW5hdGVzO1xufVxuXG5pZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBnZXRDYXJldENvb3JkaW5hdGVzO1xufSBlbHNlIGlmKGlzQnJvd3Nlcikge1xuICB3aW5kb3cuZ2V0Q2FyZXRDb29yZGluYXRlcyA9IGdldENhcmV0Q29vcmRpbmF0ZXM7XG59XG5cbn0oKSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIF9fREVWX18gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nO1xuXG52YXIgd2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChfX0RFVl9fKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAxID8gbGVuIC0gMSA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDE7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMV0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICtcbiAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9XG5cbiAgd2FybmluZyA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAyID8gbGVuIC0gMiA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDI7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMl0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgK1xuICAgICAgICAgICdtZXNzYWdlIGFyZ3VtZW50J1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIHByaW50V2FybmluZy5hcHBseShudWxsLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuIiwiaWYodHlwZW9mIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fID09PSAndW5kZWZpbmVkJykgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAndW5kZWZpbmVkJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTg5X187IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX182MzlfXzsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsInZhciBJbmZvU2VydmljZTtcblxuY2xhc3MgTW9ja3VwSW5mb1NlcnZpY2VJbXBsIHtcbiAgYXN5bmMgZ2V0U2Vzc2lvbkluZm8oKSB7XG4gICAgYXdhaXQgdGhpcy5zbGVlcCgzMDAwKTtcbiAgICB0aHJvdyB7IG1lc3NhZ2U6IFwiUGxlYXNlIGxvZyBpbiFcIiB9O1xuICB9XG5cbiAgc2xlZXAobXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKHVzZXJuYW1lKSB7XG4gICAgYXdhaXQgdGhpcy5zbGVlcCgzMDAwKTtcbiAgICBpZiAodXNlcm5hbWUgPT0gXCJlcnJvclwiKSB7XG4gICAgICB0aHJvdyB7IG1lc3NhZ2U6IFwiTG9naW4gZmFpbGVkISBBaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaCFcIiB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVhbG06IFwiTW9ja1JlYWxtXCIsXG4gICAgICB1c2VybmFtZTogdXNlcm5hbWUsXG4gICAgICByb2xlczogW10sXG4gICAgICBleHBpcmVzOiA2MDAwMCxcbiAgICB9O1xuICB9XG4gIGFzeW5jIGxvZ291dCgpIHtcbiAgICBhd2FpdCB0aGlzLnNsZWVwKDMwMDApO1xuICB9XG59XG5cbnRyeSB7XG4gIEluZm9TZXJ2aWNlID0gcmVxdWlyZShcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiKS5JbmZvU2VydmljZTtcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIGNvbnNvbGUubG9nKFwiUHJvdmlkaW5nIG1vY2t1cCBpbXBsZW1lbnRhdGlvbiBmb3IgSW5mb1NlcnZpY2VcIik7XG5cbiAgSW5mb1NlcnZpY2UgPSBNb2NrdXBJbmZvU2VydmljZUltcGw7XG59XG5cbmV4cG9ydCB7IEluZm9TZXJ2aWNlIH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEluZm9TZXJ2aWNlIH0gZnJvbSBcIi4uL0luZm9TZXJ2aWNlXCI7XG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycm9yKSB7XG4gIHJldHVybiBcIkNvdWxkIG5vdCByZXRyaWV2ZSBTZXJ2ZXIgVmVyc2lvbiBJbmZvOiBcIiArIGVycm9yLm1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFNlcnZlclZlcnNpb25JbmZvKHNldFZlcnNpb24pIHtcbiAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICBzZXJ2aWNlXG4gICAgLmdldFZlcnNpb25JbmZvKClcbiAgICAudGhlbigoc2VydmVyVmVyc2lvbikgPT4gc2VydmVyVmVyc2lvbi5ub0J1aWxkKCkudG9TdHJpbmcoKSlcbiAgICAuY2F0Y2goaGFuZGxlRXJyb3IpXG4gICAgLnRoZW4oc2V0VmVyc2lvbik7XG4gIHJldHVybiBcIi4uLlwiOyAvLyBzb21lIG5pY2VyIHdhaXRpbmcgaW5mbz9cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlcnZlclZlcnNpb25JbmZvKCkge1xuICB2YXIgW3ZlcnNpb24sIHNldFZlcnNpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGlmICh2ZXJzaW9uID09PSBudWxsKSB7XG4gICAgdmVyc2lvbiA9IGdldFNlcnZlclZlcnNpb25JbmZvKHNldFZlcnNpb24pO1xuICB9XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWNvbXAtc2VydmVyLXZlcnNpb24taW5mb1wiPnt2ZXJzaW9ufTwvZGl2Pjtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuZnVuY3Rpb24gcmVhZE9ubHlQcm9wVHlwZShoYW5kbGVyLCBuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocHJvcHMsIHByb3BOYW1lKSB7XG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXByb3BzW2hhbmRsZXJdKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBwcm92aWRlZCBhIGBcIiArIHByb3BOYW1lICsgXCJgIHByb3AgdG8gYFwiICsgbmFtZSArIFwiYCBcIiArIChcIndpdGhvdXQgYW4gYFwiICsgaGFuZGxlciArIFwiYCBoYW5kbGVyIHByb3AuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIFwiKSArIChcIklmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYFwiICsgZGVmYXVsdEtleShwcm9wTmFtZSkgKyBcImAuIFwiKSArIChcIk90aGVyd2lzZSwgc2V0IGBcIiArIGhhbmRsZXIgKyBcImAuXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmNvbnRyb2xsZWRQcm9wVHlwZXMoY29udHJvbGxlZFZhbHVlcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHByb3BUeXBlcyA9IHt9O1xuICBPYmplY3Qua2V5cyhjb250cm9sbGVkVmFsdWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgLy8gYWRkIGRlZmF1bHQgcHJvcFR5cGVzIGZvciBmb2xrcyB0aGF0IHVzZSBydW50aW1lIGNoZWNrc1xuICAgIHByb3BUeXBlc1tkZWZhdWx0S2V5KHByb3ApXSA9IG5vb3A7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGhhbmRsZXIgPSBjb250cm9sbGVkVmFsdWVzW3Byb3BdO1xuICAgICAgISh0eXBlb2YgaGFuZGxlciA9PT0gJ3N0cmluZycgJiYgaGFuZGxlci50cmltKCkubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ1VuY29udHJvbGxhYmxlIC0gWyVzXTogdGhlIHByb3AgYCVzYCBuZWVkcyBhIHZhbGlkIGhhbmRsZXIga2V5IG5hbWUgaW4gb3JkZXIgdG8gbWFrZSBpdCB1bmNvbnRyb2xsYWJsZScsIGRpc3BsYXlOYW1lLCBwcm9wKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgICBwcm9wVHlwZXNbcHJvcF0gPSByZWFkT25seVByb3BUeXBlKGhhbmRsZXIsIGRpc3BsYXlOYW1lKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcHJvcFR5cGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcChwcm9wcywgcHJvcCkge1xuICByZXR1cm4gcHJvcHNbcHJvcF0gIT09IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0S2V5KGtleSkge1xuICByZXR1cm4gJ2RlZmF1bHQnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cigxKTtcbn1cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2FuQWNjZXB0UmVmKGNvbXBvbmVudCkge1xuICByZXR1cm4gISFjb21wb25lbnQgJiYgKHR5cGVvZiBjb21wb25lbnQgIT09ICdmdW5jdGlvbicgfHwgY29tcG9uZW50LnByb3RvdHlwZSAmJiBjb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KGFyZykgeyB2YXIga2V5ID0gX3RvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7IHJldHVybiB0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiID8ga2V5IDogU3RyaW5nKGtleSk7IH1cblxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7IGlmICh0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDsgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7IHZhciByZXMgPSBwcmltLmNhbGwoaW5wdXQsIGhpbnQgfHwgXCJkZWZhdWx0XCIpOyBpZiAodHlwZW9mIHJlcyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlczsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoaGludCA9PT0gXCJzdHJpbmdcIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpOyB9XG5cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIHVzZVVuY29udHJvbGxlZFByb3AocHJvcFZhbHVlLCBkZWZhdWx0VmFsdWUsIGhhbmRsZXIpIHtcbiAgdmFyIHdhc1Byb3BSZWYgPSB1c2VSZWYocHJvcFZhbHVlICE9PSB1bmRlZmluZWQpO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShkZWZhdWx0VmFsdWUpLFxuICAgICAgc3RhdGVWYWx1ZSA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldFN0YXRlID0gX3VzZVN0YXRlWzFdO1xuXG4gIHZhciBpc1Byb3AgPSBwcm9wVmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgdmFyIHdhc1Byb3AgPSB3YXNQcm9wUmVmLmN1cnJlbnQ7XG4gIHdhc1Byb3BSZWYuY3VycmVudCA9IGlzUHJvcDtcbiAgLyoqXG4gICAqIElmIGEgcHJvcCBzd2l0Y2hlcyBmcm9tIGNvbnRyb2xsZWQgdG8gVW5jb250cm9sbGVkXG4gICAqIHJlc2V0IGl0cyB2YWx1ZSB0byB0aGUgZGVmYXVsdFZhbHVlXG4gICAqL1xuXG4gIGlmICghaXNQcm9wICYmIHdhc1Byb3AgJiYgc3RhdGVWYWx1ZSAhPT0gZGVmYXVsdFZhbHVlKSB7XG4gICAgc2V0U3RhdGUoZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBbaXNQcm9wID8gcHJvcFZhbHVlIDogc3RhdGVWYWx1ZSwgdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIpIGhhbmRsZXIuYXBwbHkodm9pZCAwLCBbdmFsdWVdLmNvbmNhdChhcmdzKSk7XG4gICAgc2V0U3RhdGUodmFsdWUpO1xuICB9LCBbaGFuZGxlcl0pXTtcbn1cblxuZXhwb3J0IHsgdXNlVW5jb250cm9sbGVkUHJvcCB9O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkKHByb3BzLCBjb25maWcpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbmZpZykucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGZpZWxkTmFtZSkge1xuICAgIHZhciBfZXh0ZW5kczI7XG5cbiAgICB2YXIgX3JlZiA9IHJlc3VsdCxcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gX3JlZltVdGlscy5kZWZhdWx0S2V5KGZpZWxkTmFtZSldLFxuICAgICAgICBwcm9wc1ZhbHVlID0gX3JlZltmaWVsZE5hbWVdLFxuICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgW1V0aWxzLmRlZmF1bHRLZXkoZmllbGROYW1lKSwgZmllbGROYW1lXS5tYXAoX3RvUHJvcGVydHlLZXkpKTtcblxuICAgIHZhciBoYW5kbGVyTmFtZSA9IGNvbmZpZ1tmaWVsZE5hbWVdO1xuXG4gICAgdmFyIF91c2VVbmNvbnRyb2xsZWRQcm9wID0gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wc1ZhbHVlLCBkZWZhdWx0VmFsdWUsIHByb3BzW2hhbmRsZXJOYW1lXSksXG4gICAgICAgIHZhbHVlID0gX3VzZVVuY29udHJvbGxlZFByb3BbMF0sXG4gICAgICAgIGhhbmRsZXIgPSBfdXNlVW5jb250cm9sbGVkUHJvcFsxXTtcblxuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgKF9leHRlbmRzMiA9IHt9LCBfZXh0ZW5kczJbZmllbGROYW1lXSA9IHZhbHVlLCBfZXh0ZW5kczJbaGFuZGxlck5hbWVdID0gaGFuZGxlciwgX2V4dGVuZHMyKSk7XG4gIH0sIHByb3BzKTtcbn0iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQ3JlYXRlcyBhIGBSZWZgIHdob3NlIHZhbHVlIGlzIHVwZGF0ZWQgaW4gYW4gZWZmZWN0LCBlbnN1cmluZyB0aGUgbW9zdCByZWNlbnRcbiAqIHZhbHVlIGlzIHRoZSBvbmUgcmVuZGVyZWQgd2l0aC4gR2VuZXJhbGx5IG9ubHkgcmVxdWlyZWQgZm9yIENvbmN1cnJlbnQgbW9kZSB1c2FnZVxuICogd2hlcmUgcHJldmlvdXMgd29yayBpbiBgcmVuZGVyKClgIG1heSBiZSBkaXNjYXJkZWQgYmVmb3JlIGJlaW5nIHVzZWQuXG4gKlxuICogVGhpcyBpcyBzYWZlIHRvIGFjY2VzcyBpbiBhbiBldmVudCBoYW5kbGVyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgYFJlZmAgdmFsdWVcbiAqL1xuXG5mdW5jdGlvbiB1c2VDb21taXR0ZWRSZWYodmFsdWUpIHtcbiAgdmFyIHJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSwgW3ZhbHVlXSk7XG4gIHJldHVybiByZWY7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUNvbW1pdHRlZFJlZjsiLCJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb21taXR0ZWRSZWYgZnJvbSAnLi91c2VDb21taXR0ZWRSZWYnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICB2YXIgcmVmID0gdXNlQ29tbWl0dGVkUmVmKGZuKTtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcmVmLmN1cnJlbnQgJiYgcmVmLmN1cnJlbnQuYXBwbHkocmVmLCBhcmd1bWVudHMpO1xuICB9LCBbcmVmXSk7XG59IiwiaW1wb3J0IHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFRyYWNrIHdoZXRoZXIgYSBjb21wb25lbnQgaXMgY3VycmVudCBtb3VudGVkLiBHZW5lcmFsbHkgbGVzcyBwcmVmZXJhYmxlIHRoYW5cbiAqIHByb3BlcmxseSBjYW5jZWxpbmcgZWZmZWN0cyBzbyB0aGV5IGRvbid0IHJ1biBhZnRlciBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQsXG4gKiBidXQgaGVscGZ1bCBpbiBjYXNlcyB3aGVyZSB0aGF0IGlzbid0IGZlYXNpYmxlLCBzdWNoIGFzIGEgYFByb21pc2VgIHJlc29sdXRpb24uXG4gKlxuICogQHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGN1cnJlbnQgaXNNb3VudGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnRcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGUobnVsbClcbiAqIGNvbnN0IGlzTW91bnRlZCA9IHVzZU1vdW50ZWQoKVxuICpcbiAqIHVzZUVmZmVjdCgoKSA9PiB7XG4gKiAgIGZldGNoZGF0YSgpLnRoZW4oKG5ld0RhdGEpID0+IHtcbiAqICAgICAgaWYgKGlzTW91bnRlZCgpKSB7XG4gKiAgICAgICAgc2V0RGF0YShuZXdEYXRhKTtcbiAqICAgICAgfVxuICogICB9KVxuICogfSlcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1vdW50ZWQoKSB7XG4gIHZhciBtb3VudGVkID0gdXNlUmVmKHRydWUpO1xuICB2YXIgaXNNb3VudGVkID0gdXNlUmVmKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbW91bnRlZC5jdXJyZW50O1xuICB9KTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBtb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBtb3VudGVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiBpc01vdW50ZWQuY3VycmVudDtcbn0iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogU3RvcmUgdGhlIGxhc3Qgb2Ygc29tZSB2YWx1ZS4gVHJhY2tlZCB2aWEgYSBgUmVmYCBvbmx5IHVwZGF0aW5nIGl0XG4gKiBhZnRlciB0aGUgY29tcG9uZW50IHJlbmRlcnMuXG4gKlxuICogSGVscGZ1bCBpZiB5b3UgbmVlZCB0byBjb21wYXJlIGEgcHJvcCB2YWx1ZSB0byBpdCdzIHByZXZpb3VzIHZhbHVlIGR1cmluZyByZW5kZXIuXG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICogICBjb25zdCBsYXN0UHJvcHMgPSB1c2VQcmV2aW91cyhwcm9wcylcbiAqXG4gKiAgIGlmIChsYXN0UHJvcHMuZm9vICE9PSBwcm9wcy5mb28pXG4gKiAgICAgcmVzZXRWYWx1ZUZyb21Qcm9wcyhwcm9wcy5mb28pXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHRyYWNrXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlUHJldmlvdXModmFsdWUpIHtcbiAgdmFyIHJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZi5jdXJyZW50O1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xudmFyIGlzUmVhY3ROYXRpdmUgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiAvLyBAdHMtaWdub3JlXG5nbG9iYWwubmF2aWdhdG9yICYmIC8vIEB0cy1pZ25vcmVcbmdsb2JhbC5uYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJztcbnZhciBpc0RPTSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG4vKipcbiAqIElzIGB1c2VMYXlvdXRFZmZlY3RgIGluIGEgRE9NIG9yIFJlYWN0IE5hdGl2ZSBlbnZpcm9ubWVudCwgb3RoZXJ3aXNlIHJlc29sdmVzIHRvIHVzZUVmZmVjdFxuICogT25seSB1c2VmdWwgdG8gYXZvaWQgdGhlIGNvbnNvbGUgd2FybmluZy5cbiAqXG4gKiBQUkVGRVIgYHVzZUVmZmVjdGAgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VIEFSRSBET0lORy5cbiAqXG4gKiBAY2F0ZWdvcnkgZWZmZWN0c1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGlzRE9NIHx8IGlzUmVhY3ROYXRpdmUgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7IiwiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRWZmZWN0IGZyb20gJy4vdXNlSXNvbW9ycGhpY0VmZmVjdCc7XG52YXIgdGFyZ2V0TWFwID0gbmV3IFdlYWtNYXAoKTtcbnZhciByZXNpemVPYnNlcnZlcjtcblxuZnVuY3Rpb24gZ2V0UmVzaXplT2JzZXJ2ZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXR1cm4tYXNzaWduXG4gIHJldHVybiByZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyIHx8IG5ldyB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICB2YXIgaGFuZGxlciA9IHRhcmdldE1hcC5nZXQoZW50cnkudGFyZ2V0KTtcbiAgICAgIGlmIChoYW5kbGVyKSBoYW5kbGVyKGVudHJ5LmNvbnRlbnRSZWN0KTtcbiAgICB9KTtcbiAgfSk7XG59XG4vKipcbiAqIEVmZmljaWVudGx5IG9ic2VydmUgc2l6ZSBjaGFuZ2VzIG9uIGFuIGVsZW1lbnQuIERlcGVuZHMgb24gdGhlIGBSZXNpemVPYnNlcnZlcmAgYXBpLFxuICogYW5kIHBvbHlmaWxscyBhcmUgbmVlZGVkIGluIG9sZGVyIGJyb3dzZXJzLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBbcmVmLCBhdHRhY2hSZWZdID0gdXNlQ2FsbGJhY2tSZWYobnVsbCk7XG4gKlxuICogY29uc3QgcmVjdCA9IHVzZVJlc2l6ZU9ic2VydmVyKHJlZik7XG4gKlxuICogcmV0dXJuIChcbiAqICA8ZGl2IHJlZj17YXR0YWNoUmVmfT5cbiAqICAgIHtKU09OLnN0cmluZ2lmeShyZWN0KX1cbiAqICA8L2Rpdj5cbiAqIClcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBET00gZWxlbWVudCB0byBvYnNlcnZlXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VSZXNpemVPYnNlcnZlcihlbGVtZW50KSB7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShudWxsKSxcbiAgICAgIHJlY3QgPSBfdXNlU3RhdGVbMF0sXG4gICAgICBzZXRSZWN0ID0gX3VzZVN0YXRlWzFdO1xuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgZ2V0UmVzaXplT2JzZXJ2ZXIoKS5vYnNlcnZlKGVsZW1lbnQpO1xuICAgIHNldFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgdGFyZ2V0TWFwLnNldChlbGVtZW50LCBmdW5jdGlvbiAocmVjdCkge1xuICAgICAgc2V0UmVjdChyZWN0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdGFyZ2V0TWFwLmRlbGV0ZShlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbZWxlbWVudF0pO1xuICByZXR1cm4gcmVjdDtcbn0iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJhc1wiLCBcImRpc2FibGVkXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc1RyaXZpYWxIcmVmKGhyZWYpIHtcbiAgcmV0dXJuICFocmVmIHx8IGhyZWYudHJpbSgpID09PSAnIyc7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQnV0dG9uUHJvcHMoe1xuICB0YWdOYW1lLFxuICBkaXNhYmxlZCxcbiAgaHJlZixcbiAgdGFyZ2V0LFxuICByZWwsXG4gIHJvbGUsXG4gIG9uQ2xpY2ssXG4gIHRhYkluZGV4ID0gMCxcbiAgdHlwZVxufSkge1xuICBpZiAoIXRhZ05hbWUpIHtcbiAgICBpZiAoaHJlZiAhPSBudWxsIHx8IHRhcmdldCAhPSBudWxsIHx8IHJlbCAhPSBudWxsKSB7XG4gICAgICB0YWdOYW1lID0gJ2EnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdOYW1lID0gJ2J1dHRvbic7XG4gICAgfVxuICB9XG4gIGNvbnN0IG1ldGEgPSB7XG4gICAgdGFnTmFtZVxuICB9O1xuICBpZiAodGFnTmFtZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gW3tcbiAgICAgIHR5cGU6IHR5cGUgfHwgJ2J1dHRvbicsXG4gICAgICBkaXNhYmxlZFxuICAgIH0sIG1ldGFdO1xuICB9XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gZXZlbnQgPT4ge1xuICAgIGlmIChkaXNhYmxlZCB8fCB0YWdOYW1lID09PSAnYScgJiYgaXNUcml2aWFsSHJlZihocmVmKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DbGljayA9PSBudWxsID8gdm9pZCAwIDogb25DbGljayhldmVudCk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaGFuZGxlQ2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgaWYgKHRhZ05hbWUgPT09ICdhJykge1xuICAgIC8vIEVuc3VyZSB0aGVyZSdzIGEgaHJlZiBzbyBFbnRlciBjYW4gdHJpZ2dlciBhbmNob3IgYnV0dG9uLlxuICAgIGhyZWYgfHwgKGhyZWYgPSAnIycpO1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgaHJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFt7XG4gICAgcm9sZTogcm9sZSAhPSBudWxsID8gcm9sZSA6ICdidXR0b24nLFxuICAgIC8vIGV4cGxpY2l0bHkgdW5kZWZpbmVkIHNvIHRoYXQgaXQgb3ZlcnJpZGVzIHRoZSBwcm9wcyBkaXNhYmxlZCBpbiBhIHNwcmVhZFxuICAgIC8vIGUuZy4gPFRhZyB7Li4ucHJvcHN9IHsuLi5ob29rUHJvcHN9IC8+XG4gICAgZGlzYWJsZWQ6IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiB0YWJJbmRleCxcbiAgICBocmVmLFxuICAgIHRhcmdldDogdGFnTmFtZSA9PT0gJ2EnID8gdGFyZ2V0IDogdW5kZWZpbmVkLFxuICAgICdhcmlhLWRpc2FibGVkJzogIWRpc2FibGVkID8gdW5kZWZpbmVkIDogZGlzYWJsZWQsXG4gICAgcmVsOiB0YWdOYW1lID09PSAnYScgPyByZWwgOiB1bmRlZmluZWQsXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duXG4gIH0sIG1ldGFdO1xufVxuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgYXM6IGFzUHJvcCxcbiAgICAgIGRpc2FibGVkXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbYnV0dG9uUHJvcHMsIHtcbiAgICB0YWdOYW1lOiBDb21wb25lbnRcbiAgfV0gPSB1c2VCdXR0b25Qcm9wcyhPYmplY3QuYXNzaWduKHtcbiAgICB0YWdOYW1lOiBhc1Byb3AsXG4gICAgZGlzYWJsZWRcbiAgfSwgcHJvcHMpKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIGJ1dHRvblByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpO1xufSk7XG5CdXR0b24uZGlzcGxheU5hbWUgPSAnQnV0dG9uJztcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJvbktleURvd25cIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudCAqL1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQHJlc3RhcnQvaG9va3MnO1xuaW1wb3J0IHsgdXNlQnV0dG9uUHJvcHMgfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJpdmlhbEhyZWYoaHJlZikge1xuICByZXR1cm4gIWhyZWYgfHwgaHJlZi50cmltKCkgPT09ICcjJztcbn1cbi8qKlxuICogQW4gZ2VuZXJpYyBgPGE+YCBjb21wb25lbnQgdGhhdCBjb3ZlcnMgYSBmZXcgQTExeSBjYXNlcywgZW5zdXJpbmcgdGhhdFxuICogY2FzZXMgd2hlcmUgdGhlIGBocmVmYCBpcyBtaXNzaW5nIG9yIHRyaXZpYWwgbGlrZSBcIiNcIiBhcmUgdHJlYXRlZCBsaWtlIGJ1dHRvbnMuXG4gKi9cbmNvbnN0IEFuY2hvciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIG9uS2V5RG93blxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2J1dHRvblByb3BzXSA9IHVzZUJ1dHRvblByb3BzKE9iamVjdC5hc3NpZ24oe1xuICAgIHRhZ05hbWU6ICdhJ1xuICB9LCBwcm9wcykpO1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBidXR0b25Qcm9wcy5vbktleURvd24oZSk7XG4gICAgb25LZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbktleURvd24oZSk7XG4gIH0pO1xuICBpZiAoaXNUcml2aWFsSHJlZihwcm9wcy5ocmVmKSB8fCBwcm9wcy5yb2xlID09PSAnYnV0dG9uJykge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzLCBidXR0b25Qcm9wcywge1xuICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgcmVmOiByZWZcbiAgfSwgcHJvcHMsIHtcbiAgICBvbktleURvd246IG9uS2V5RG93blxuICB9KSk7XG59KTtcbkFuY2hvci5kaXNwbGF5TmFtZSA9ICdBbmNob3InO1xuZXhwb3J0IGRlZmF1bHQgQW5jaG9yOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQlJFQUtQT0lOVFMgPSBbJ3h4bCcsICd4bCcsICdsZycsICdtZCcsICdzbScsICd4cyddO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUlOX0JSRUFLUE9JTlQgPSAneHMnO1xuY29uc3QgVGhlbWVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBwcmVmaXhlczoge30sXG4gIGJyZWFrcG9pbnRzOiBERUZBVUxUX0JSRUFLUE9JTlRTLFxuICBtaW5CcmVha3BvaW50OiBERUZBVUxUX01JTl9CUkVBS1BPSU5UXG59KTtcbmNvbnN0IHtcbiAgQ29uc3VtZXIsXG4gIFByb3ZpZGVyXG59ID0gVGhlbWVDb250ZXh0O1xuZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7XG4gIHByZWZpeGVzID0ge30sXG4gIGJyZWFrcG9pbnRzID0gREVGQVVMVF9CUkVBS1BPSU5UUyxcbiAgbWluQnJlYWtwb2ludCA9IERFRkFVTFRfTUlOX0JSRUFLUE9JTlQsXG4gIGRpcixcbiAgY2hpbGRyZW5cbn0pIHtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHByZWZpeGVzOiB7XG4gICAgICAuLi5wcmVmaXhlc1xuICAgIH0sXG4gICAgYnJlYWtwb2ludHMsXG4gICAgbWluQnJlYWtwb2ludCxcbiAgICBkaXJcbiAgfSksIFtwcmVmaXhlcywgYnJlYWtwb2ludHMsIG1pbkJyZWFrcG9pbnQsIGRpcl0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCb290c3RyYXBQcmVmaXgocHJlZml4LCBkZWZhdWx0UHJlZml4KSB7XG4gIGNvbnN0IHtcbiAgICBwcmVmaXhlc1xuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gcHJlZml4IHx8IHByZWZpeGVzW2RlZmF1bHRQcmVmaXhdIHx8IGRlZmF1bHRQcmVmaXg7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQm9vdHN0cmFwQnJlYWtwb2ludHMoKSB7XG4gIGNvbnN0IHtcbiAgICBicmVha3BvaW50c1xuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQm9vdHN0cmFwTWluQnJlYWtwb2ludCgpIHtcbiAgY29uc3Qge1xuICAgIG1pbkJyZWFrcG9pbnRcbiAgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgcmV0dXJuIG1pbkJyZWFrcG9pbnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlSXNSVEwoKSB7XG4gIGNvbnN0IHtcbiAgICBkaXJcbiAgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgcmV0dXJuIGRpciA9PT0gJ3J0bCc7XG59XG5mdW5jdGlvbiBjcmVhdGVCb290c3RyYXBDb21wb25lbnQoQ29tcG9uZW50LCBvcHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7XG4gICAgcHJlZml4OiBvcHRzXG4gIH07XG4gIGNvbnN0IGlzQ2xhc3N5ID0gQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ7XG4gIC8vIElmIGl0J3MgYSBmdW5jdGlvbmFsIGNvbXBvbmVudCBtYWtlIHN1cmUgd2UgZG9uJ3QgYnJlYWsgaXQgd2l0aCBhIHJlZlxuICBjb25zdCB7XG4gICAgcHJlZml4LFxuICAgIGZvcndhcmRSZWZBcyA9IGlzQ2xhc3N5ID8gJ3JlZicgOiAnaW5uZXJSZWYnXG4gIH0gPSBvcHRzO1xuICBjb25zdCBXcmFwcGVkID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBwcm9wc1tmb3J3YXJkUmVmQXNdID0gcmVmO1xuICAgIGNvbnN0IGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KHByb3BzLmJzUHJlZml4LCBwcmVmaXgpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgYnNQcmVmaXg6IGJzUHJlZml4XG4gICAgfSk7XG4gIH0pO1xuICBXcmFwcGVkLmRpc3BsYXlOYW1lID0gYEJvb3RzdHJhcCgke0NvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZX0pYDtcbiAgcmV0dXJuIFdyYXBwZWQ7XG59XG5leHBvcnQgeyBjcmVhdGVCb290c3RyYXBDb21wb25lbnQsIENvbnN1bWVyIGFzIFRoZW1lQ29uc3VtZXIgfTtcbmV4cG9ydCBkZWZhdWx0IFRoZW1lUHJvdmlkZXI7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpOyIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9pbmhlcml0c0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyB0aW1lb3V0c1NoYXBlIH0gZnJvbSAnLi91dGlscy9Qcm9wVHlwZXMnO1xuaW1wb3J0IFRyYW5zaXRpb25Hcm91cENvbnRleHQgZnJvbSAnLi9UcmFuc2l0aW9uR3JvdXBDb250ZXh0JztcbmltcG9ydCB7IGZvcmNlUmVmbG93IH0gZnJvbSAnLi91dGlscy9yZWZsb3cnO1xuZXhwb3J0IHZhciBVTk1PVU5URUQgPSAndW5tb3VudGVkJztcbmV4cG9ydCB2YXIgRVhJVEVEID0gJ2V4aXRlZCc7XG5leHBvcnQgdmFyIEVOVEVSSU5HID0gJ2VudGVyaW5nJztcbmV4cG9ydCB2YXIgRU5URVJFRCA9ICdlbnRlcmVkJztcbmV4cG9ydCB2YXIgRVhJVElORyA9ICdleGl0aW5nJztcbi8qKlxuICogVGhlIFRyYW5zaXRpb24gY29tcG9uZW50IGxldHMgeW91IGRlc2NyaWJlIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBjb21wb25lbnRcbiAqIHN0YXRlIHRvIGFub3RoZXIgX292ZXIgdGltZV8gd2l0aCBhIHNpbXBsZSBkZWNsYXJhdGl2ZSBBUEkuIE1vc3QgY29tbW9ubHlcbiAqIGl0J3MgdXNlZCB0byBhbmltYXRlIHRoZSBtb3VudGluZyBhbmQgdW5tb3VudGluZyBvZiBhIGNvbXBvbmVudCwgYnV0IGNhbiBhbHNvXG4gKiBiZSB1c2VkIHRvIGRlc2NyaWJlIGluLXBsYWNlIHRyYW5zaXRpb24gc3RhdGVzIGFzIHdlbGwuXG4gKlxuICogLS0tXG4gKlxuICogKipOb3RlKio6IGBUcmFuc2l0aW9uYCBpcyBhIHBsYXRmb3JtLWFnbm9zdGljIGJhc2UgY29tcG9uZW50LiBJZiB5b3UncmUgdXNpbmdcbiAqIHRyYW5zaXRpb25zIGluIENTUywgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNlXG4gKiBbYENTU1RyYW5zaXRpb25gXShodHRwczovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Nzcy10cmFuc2l0aW9uKVxuICogaW5zdGVhZC4gSXQgaW5oZXJpdHMgYWxsIHRoZSBmZWF0dXJlcyBvZiBgVHJhbnNpdGlvbmAsIGJ1dCBjb250YWluc1xuICogYWRkaXRpb25hbCBmZWF0dXJlcyBuZWNlc3NhcnkgdG8gcGxheSBuaWNlIHdpdGggQ1NTIHRyYW5zaXRpb25zIChoZW5jZSB0aGVcbiAqIG5hbWUgb2YgdGhlIGNvbXBvbmVudCkuXG4gKlxuICogLS0tXG4gKlxuICogQnkgZGVmYXVsdCB0aGUgYFRyYW5zaXRpb25gIGNvbXBvbmVudCBkb2VzIG5vdCBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlXG4gKiBjb21wb25lbnQgaXQgcmVuZGVycywgaXQgb25seSB0cmFja3MgXCJlbnRlclwiIGFuZCBcImV4aXRcIiBzdGF0ZXMgZm9yIHRoZVxuICogY29tcG9uZW50cy4gSXQncyB1cCB0byB5b3UgdG8gZ2l2ZSBtZWFuaW5nIGFuZCBlZmZlY3QgdG8gdGhvc2Ugc3RhdGVzLiBGb3JcbiAqIGV4YW1wbGUgd2UgY2FuIGFkZCBzdHlsZXMgdG8gYSBjb21wb25lbnQgd2hlbiBpdCBlbnRlcnMgb3IgZXhpdHM6XG4gKlxuICogYGBganN4XG4gKiBpbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG4gKlxuICogY29uc3QgZHVyYXRpb24gPSAzMDA7XG4gKlxuICogY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICogICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke2R1cmF0aW9ufW1zIGVhc2UtaW4tb3V0YCxcbiAqICAgb3BhY2l0eTogMCxcbiAqIH1cbiAqXG4gKiBjb25zdCB0cmFuc2l0aW9uU3R5bGVzID0ge1xuICogICBlbnRlcmluZzogeyBvcGFjaXR5OiAxIH0sXG4gKiAgIGVudGVyZWQ6ICB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZXhpdGluZzogIHsgb3BhY2l0eTogMCB9LFxuICogICBleGl0ZWQ6ICB7IG9wYWNpdHk6IDAgfSxcbiAqIH07XG4gKlxuICogY29uc3QgRmFkZSA9ICh7IGluOiBpblByb3AgfSkgPT4gKFxuICogICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXtkdXJhdGlvbn0+XG4gKiAgICAge3N0YXRlID0+IChcbiAqICAgICAgIDxkaXYgc3R5bGU9e3tcbiAqICAgICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICogICAgICAgICAuLi50cmFuc2l0aW9uU3R5bGVzW3N0YXRlXVxuICogICAgICAgfX0+XG4gKiAgICAgICAgIEknbSBhIGZhZGUgVHJhbnNpdGlvbiFcbiAqICAgICAgIDwvZGl2PlxuICogICAgICl9XG4gKiAgIDwvVHJhbnNpdGlvbj5cbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBUaGVyZSBhcmUgNCBtYWluIHN0YXRlcyBhIFRyYW5zaXRpb24gY2FuIGJlIGluOlxuICogIC0gYCdlbnRlcmluZydgXG4gKiAgLSBgJ2VudGVyZWQnYFxuICogIC0gYCdleGl0aW5nJ2BcbiAqICAtIGAnZXhpdGVkJ2BcbiAqXG4gKiBUcmFuc2l0aW9uIHN0YXRlIGlzIHRvZ2dsZWQgdmlhIHRoZSBgaW5gIHByb3AuIFdoZW4gYHRydWVgIHRoZSBjb21wb25lbnRcbiAqIGJlZ2lucyB0aGUgXCJFbnRlclwiIHN0YWdlLiBEdXJpbmcgdGhpcyBzdGFnZSwgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IGZyb21cbiAqIGl0cyBjdXJyZW50IHRyYW5zaXRpb24gc3RhdGUsIHRvIGAnZW50ZXJpbmcnYCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZVxuICogdHJhbnNpdGlvbiBhbmQgdGhlbiB0byB0aGUgYCdlbnRlcmVkJ2Agc3RhZ2Ugb25jZSBpdCdzIGNvbXBsZXRlLiBMZXQncyB0YWtlXG4gKiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgKHdlJ2xsIHVzZSB0aGVcbiAqIFt1c2VTdGF0ZV0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLXJlZmVyZW5jZS5odG1sI3VzZXN0YXRlKSBob29rKTpcbiAqXG4gKiBgYGBqc3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgW2luUHJvcCwgc2V0SW5Qcm9wXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPFRyYW5zaXRpb24gaW49e2luUHJvcH0gdGltZW91dD17NTAwfT5cbiAqICAgICAgICAge3N0YXRlID0+IChcbiAqICAgICAgICAgICAvLyAuLi5cbiAqICAgICAgICAgKX1cbiAqICAgICAgIDwvVHJhbnNpdGlvbj5cbiAqICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gc2V0SW5Qcm9wKHRydWUpfT5cbiAqICAgICAgICAgQ2xpY2sgdG8gRW50ZXJcbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogV2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IHRvIHRoZSBgJ2VudGVyaW5nJ2Agc3RhdGVcbiAqIGFuZCBzdGF5IHRoZXJlIGZvciA1MDBtcyAodGhlIHZhbHVlIG9mIGB0aW1lb3V0YCkgYmVmb3JlIGl0IGZpbmFsbHkgc3dpdGNoZXNcbiAqIHRvIGAnZW50ZXJlZCdgLlxuICpcbiAqIFdoZW4gYGluYCBpcyBgZmFsc2VgIHRoZSBzYW1lIHRoaW5nIGhhcHBlbnMgZXhjZXB0IHRoZSBzdGF0ZSBtb3ZlcyBmcm9tXG4gKiBgJ2V4aXRpbmcnYCB0byBgJ2V4aXRlZCdgLlxuICovXG5cbnZhciBUcmFuc2l0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFRyYW5zaXRpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb24ocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICB2YXIgcGFyZW50R3JvdXAgPSBjb250ZXh0OyAvLyBJbiB0aGUgY29udGV4dCBvZiBhIFRyYW5zaXRpb25Hcm91cCBhbGwgZW50ZXJzIGFyZSByZWFsbHkgYXBwZWFyc1xuXG4gICAgdmFyIGFwcGVhciA9IHBhcmVudEdyb3VwICYmICFwYXJlbnRHcm91cC5pc01vdW50aW5nID8gcHJvcHMuZW50ZXIgOiBwcm9wcy5hcHBlYXI7XG4gICAgdmFyIGluaXRpYWxTdGF0dXM7XG4gICAgX3RoaXMuYXBwZWFyU3RhdHVzID0gbnVsbDtcblxuICAgIGlmIChwcm9wcy5pbikge1xuICAgICAgaWYgKGFwcGVhcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gRVhJVEVEO1xuICAgICAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBFTlRFUklORztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFTlRFUkVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvcHMudW5tb3VudE9uRXhpdCB8fCBwcm9wcy5tb3VudE9uRW50ZXIpIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IFVOTU9VTlRFRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBzdGF0dXM6IGluaXRpYWxTdGF0dXNcbiAgICB9O1xuICAgIF90aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgVHJhbnNpdGlvbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgcHJldlN0YXRlKSB7XG4gICAgdmFyIG5leHRJbiA9IF9yZWYuaW47XG5cbiAgICBpZiAobmV4dEluICYmIHByZXZTdGF0ZS5zdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzKSB7XG4gIC8vICAgbGV0IG5leHRTdGF0dXMgPSBudWxsXG4gIC8vICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAvLyAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHRoaXMuc3RhdGVcbiAgLy8gICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBpZiAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVOVEVSRUQpIHtcbiAgLy8gICAgICAgICBuZXh0U3RhdHVzID0gRVhJVElOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB7IG5leHRTdGF0dXMgfVxuICAvLyB9XG4gIDtcblxuICB2YXIgX3Byb3RvID0gVHJhbnNpdGlvbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0dXModHJ1ZSwgdGhpcy5hcHBlYXJTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgdmFyIG5leHRTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAgICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5pbikge1xuICAgICAgICBpZiAoc3RhdHVzICE9PSBFTlRFUklORyAmJiBzdGF0dXMgIT09IEVOVEVSRUQpIHtcbiAgICAgICAgICBuZXh0U3RhdHVzID0gRU5URVJJTkc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTdGF0dXMoZmFsc2UsIG5leHRTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG4gIH07XG5cbiAgX3Byb3RvLmdldFRpbWVvdXRzID0gZnVuY3Rpb24gZ2V0VGltZW91dHMoKSB7XG4gICAgdmFyIHRpbWVvdXQgPSB0aGlzLnByb3BzLnRpbWVvdXQ7XG4gICAgdmFyIGV4aXQsIGVudGVyLCBhcHBlYXI7XG4gICAgZXhpdCA9IGVudGVyID0gYXBwZWFyID0gdGltZW91dDtcblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwgJiYgdHlwZW9mIHRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICBleGl0ID0gdGltZW91dC5leGl0O1xuICAgICAgZW50ZXIgPSB0aW1lb3V0LmVudGVyOyAvLyBUT0RPOiByZW1vdmUgZmFsbGJhY2sgZm9yIG5leHQgbWFqb3JcblxuICAgICAgYXBwZWFyID0gdGltZW91dC5hcHBlYXIgIT09IHVuZGVmaW5lZCA/IHRpbWVvdXQuYXBwZWFyIDogZW50ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4aXQ6IGV4aXQsXG4gICAgICBlbnRlcjogZW50ZXIsXG4gICAgICBhcHBlYXI6IGFwcGVhclxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvLnVwZGF0ZVN0YXR1cyA9IGZ1bmN0aW9uIHVwZGF0ZVN0YXR1cyhtb3VudGluZywgbmV4dFN0YXR1cykge1xuICAgIGlmIChtb3VudGluZyA9PT0gdm9pZCAwKSB7XG4gICAgICBtb3VudGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZXh0U3RhdHVzICE9PSBudWxsKSB7XG4gICAgICAvLyBuZXh0U3RhdHVzIHdpbGwgYWx3YXlzIGJlIEVOVEVSSU5HIG9yIEVYSVRJTkcuXG4gICAgICB0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO1xuXG4gICAgICBpZiAobmV4dFN0YXR1cyA9PT0gRU5URVJJTkcpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCB8fCB0aGlzLnByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICAgIHZhciBub2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdGhpcy5wcm9wcy5ub2RlUmVmLmN1cnJlbnQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9wdWxsLzc0OVxuICAgICAgICAgIC8vIFdpdGggdW5tb3VudE9uRXhpdCBvciBtb3VudE9uRW50ZXIsIHRoZSBlbnRlciBhbmltYXRpb24gc2hvdWxkIGhhcHBlbiBhdCB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIGBleGl0ZWRgIGFuZCBgZW50ZXJpbmdgLlxuICAgICAgICAgIC8vIFRvIG1ha2UgdGhlIGFuaW1hdGlvbiBoYXBwZW4sICB3ZSBoYXZlIHRvIHNlcGFyYXRlIGVhY2ggcmVuZGVyaW5nIGFuZCBhdm9pZCBiZWluZyBwcm9jZXNzZWQgYXMgYmF0Y2hlZC5cblxuICAgICAgICAgIGlmIChub2RlKSBmb3JjZVJlZmxvdyhub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGVyZm9ybUVudGVyKG1vdW50aW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVyZm9ybUV4aXQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCAmJiB0aGlzLnN0YXRlLnN0YXR1cyA9PT0gRVhJVEVEKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBVTk1PVU5URURcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gcGVyZm9ybUVudGVyKG1vdW50aW5nKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgZW50ZXIgPSB0aGlzLnByb3BzLmVudGVyO1xuICAgIHZhciBhcHBlYXJpbmcgPSB0aGlzLmNvbnRleHQgPyB0aGlzLmNvbnRleHQuaXNNb3VudGluZyA6IG1vdW50aW5nO1xuXG4gICAgdmFyIF9yZWYyID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gW2FwcGVhcmluZ10gOiBbUmVhY3RET00uZmluZERPTU5vZGUodGhpcyksIGFwcGVhcmluZ10sXG4gICAgICAgIG1heWJlTm9kZSA9IF9yZWYyWzBdLFxuICAgICAgICBtYXliZUFwcGVhcmluZyA9IF9yZWYyWzFdO1xuXG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBlbnRlclRpbWVvdXQgPSBhcHBlYXJpbmcgPyB0aW1lb3V0cy5hcHBlYXIgOiB0aW1lb3V0cy5lbnRlcjsgLy8gbm8gZW50ZXIgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRU5URVJFRFxuICAgIC8vIGlmIHdlIGFyZSBtb3VudGluZyBhbmQgcnVubmluZyB0aGlzIGl0IG1lYW5zIGFwcGVhciBfbXVzdF8gYmUgc2V0XG5cbiAgICBpZiAoIW1vdW50aW5nICYmICFlbnRlciB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5wcm9wcy5vbkVudGVyZWQobWF5YmVOb2RlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMub25FbnRlcihtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVOVEVSSU5HXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJpbmcobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG5cbiAgICAgIF90aGlzMi5vblRyYW5zaXRpb25FbmQoZW50ZXJUaW1lb3V0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRU5URVJFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUV4aXQgPSBmdW5jdGlvbiBwZXJmb3JtRXhpdCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHZhciBleGl0ID0gdGhpcy5wcm9wcy5leGl0O1xuICAgIHZhciB0aW1lb3V0cyA9IHRoaXMuZ2V0VGltZW91dHMoKTtcbiAgICB2YXIgbWF5YmVOb2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdW5kZWZpbmVkIDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7IC8vIG5vIGV4aXQgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRVhJVEVEXG5cbiAgICBpZiAoIWV4aXQgfHwgY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkV4aXQobWF5YmVOb2RlKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVYSVRJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczMucHJvcHMub25FeGl0aW5nKG1heWJlTm9kZSk7XG5cbiAgICAgIF90aGlzMy5vblRyYW5zaXRpb25FbmQodGltZW91dHMuZXhpdCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLmNhbmNlbE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIGNhbmNlbE5leHRDYWxsYmFjaygpIHtcbiAgICBpZiAodGhpcy5uZXh0Q2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCgpO1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uc2FmZVNldFN0YXRlID0gZnVuY3Rpb24gc2FmZVNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAvLyBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCB0aGVyZSBhcmUgd2VpcmQgcmFjZSBjb25kaXRpb25zIHdpdGhcbiAgICAvLyBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIHVubW91bnRpbmcgaW4gdGVzdGluZywgc28gYWx3YXlzIG1ha2Ugc3VyZSB0aGF0XG4gICAgLy8gd2UgY2FuIGNhbmNlbCBhbnkgcGVuZGluZyBzZXRTdGF0ZSBjYWxsYmFja3MgYWZ0ZXIgd2UgdW5tb3VudC5cbiAgICBjYWxsYmFjayA9IHRoaXMuc2V0TmV4dENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spO1xuICB9O1xuXG4gIF9wcm90by5zZXROZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiBzZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciBhY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIF90aGlzNC5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s7XG4gIH07XG5cbiAgX3Byb3RvLm9uVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0LCBoYW5kbGVyKSB7XG4gICAgdGhpcy5zZXROZXh0Q2FsbGJhY2soaGFuZGxlcik7XG4gICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgIHZhciBkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyID0gdGltZW91dCA9PSBudWxsICYmICF0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyO1xuXG4gICAgaWYgKCFub2RlIHx8IGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKSB7XG4gICAgICB2YXIgX3JlZjMgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbdGhpcy5uZXh0Q2FsbGJhY2tdIDogW25vZGUsIHRoaXMubmV4dENhbGxiYWNrXSxcbiAgICAgICAgICBtYXliZU5vZGUgPSBfcmVmM1swXSxcbiAgICAgICAgICBtYXliZU5leHRDYWxsYmFjayA9IF9yZWYzWzFdO1xuXG4gICAgICB0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKG1heWJlTm9kZSwgbWF5YmVOZXh0Q2FsbGJhY2spO1xuICAgIH1cblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIHRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBzdGF0dXMgPSB0aGlzLnN0YXRlLnN0YXR1cztcblxuICAgIGlmIChzdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgX2luID0gX3RoaXMkcHJvcHMuaW4sXG4gICAgICAgIF9tb3VudE9uRW50ZXIgPSBfdGhpcyRwcm9wcy5tb3VudE9uRW50ZXIsXG4gICAgICAgIF91bm1vdW50T25FeGl0ID0gX3RoaXMkcHJvcHMudW5tb3VudE9uRXhpdCxcbiAgICAgICAgX2FwcGVhciA9IF90aGlzJHByb3BzLmFwcGVhcixcbiAgICAgICAgX2VudGVyID0gX3RoaXMkcHJvcHMuZW50ZXIsXG4gICAgICAgIF9leGl0ID0gX3RoaXMkcHJvcHMuZXhpdCxcbiAgICAgICAgX3RpbWVvdXQgPSBfdGhpcyRwcm9wcy50aW1lb3V0LFxuICAgICAgICBfYWRkRW5kTGlzdGVuZXIgPSBfdGhpcyRwcm9wcy5hZGRFbmRMaXN0ZW5lcixcbiAgICAgICAgX29uRW50ZXIgPSBfdGhpcyRwcm9wcy5vbkVudGVyLFxuICAgICAgICBfb25FbnRlcmluZyA9IF90aGlzJHByb3BzLm9uRW50ZXJpbmcsXG4gICAgICAgIF9vbkVudGVyZWQgPSBfdGhpcyRwcm9wcy5vbkVudGVyZWQsXG4gICAgICAgIF9vbkV4aXQgPSBfdGhpcyRwcm9wcy5vbkV4aXQsXG4gICAgICAgIF9vbkV4aXRpbmcgPSBfdGhpcyRwcm9wcy5vbkV4aXRpbmcsXG4gICAgICAgIF9vbkV4aXRlZCA9IF90aGlzJHByb3BzLm9uRXhpdGVkLFxuICAgICAgICBfbm9kZVJlZiA9IF90aGlzJHByb3BzLm5vZGVSZWYsXG4gICAgICAgIGNoaWxkUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJpblwiLCBcIm1vdW50T25FbnRlclwiLCBcInVubW91bnRPbkV4aXRcIiwgXCJhcHBlYXJcIiwgXCJlbnRlclwiLCBcImV4aXRcIiwgXCJ0aW1lb3V0XCIsIFwiYWRkRW5kTGlzdGVuZXJcIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRW50ZXJlZFwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGluZ1wiLCBcIm9uRXhpdGVkXCIsIFwibm9kZVJlZlwiXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLyojX19QVVJFX18qL1xuICAgICAgLy8gYWxsb3dzIGZvciBuZXN0ZWQgVHJhbnNpdGlvbnNcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSwgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oc3RhdHVzLCBjaGlsZFByb3BzKSA6IFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwgY2hpbGRQcm9wcykpXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNpdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuVHJhbnNpdGlvbi5jb250ZXh0VHlwZSA9IFRyYW5zaXRpb25Hcm91cENvbnRleHQ7XG5UcmFuc2l0aW9uLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgLyoqXG4gICAqIEEgUmVhY3QgcmVmZXJlbmNlIHRvIERPTSBlbGVtZW50IHRoYXQgbmVlZCB0byB0cmFuc2l0aW9uOlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTExMjcxMzAvNDY3MTkzMlxuICAgKlxuICAgKiAgIC0gV2hlbiBgbm9kZVJlZmAgcHJvcCBpcyB1c2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZCB0byBjYWxsYmFjayBmdW5jdGlvbnNcbiAgICogICAgICAoZS5nLiBgb25FbnRlcmApIGJlY2F1c2UgdXNlciBhbHJlYWR5IGhhcyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBub2RlLlxuICAgKiAgIC0gV2hlbiBjaGFuZ2luZyBga2V5YCBwcm9wIG9mIGBUcmFuc2l0aW9uYCBpbiBhIGBUcmFuc2l0aW9uR3JvdXBgIGEgbmV3XG4gICAqICAgICBgbm9kZVJlZmAgbmVlZCB0byBiZSBwcm92aWRlZCB0byBgVHJhbnNpdGlvbmAgd2l0aCBjaGFuZ2VkIGBrZXlgIHByb3BcbiAgICogICAgIChzZWVcbiAgICogICAgIFt0ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qc10oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9ibG9iLzEzNDM1Zjg5N2IzYWI3MWY2ZTE5ZDcyNGYxNDU1OTZmNTkxMDU4MWMvdGVzdC9DU1NUcmFuc2l0aW9uLXRlc3QuanMjTDM2Mi1MNDM3KSkuXG4gICAqL1xuICBub2RlUmVmOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbnQ6IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyA/IFByb3BUeXBlcy5hbnkgOiBmdW5jdGlvbiAocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tleV07XG4gICAgICByZXR1cm4gUHJvcFR5cGVzLmluc3RhbmNlT2YodmFsdWUgJiYgJ293bmVyRG9jdW1lbnQnIGluIHZhbHVlID8gdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5FbGVtZW50IDogRWxlbWVudCkocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCk7XG4gICAgfVxuICB9KSxcblxuICAvKipcbiAgICogQSBgZnVuY3Rpb25gIGNoaWxkIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBSZWFjdCBlbGVtZW50LiBUaGlzIGZ1bmN0aW9uIGlzXG4gICAqIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IHRyYW5zaXRpb24gc3RhdHVzIChgJ2VudGVyaW5nJ2AsIGAnZW50ZXJlZCdgLFxuICAgKiBgJ2V4aXRpbmcnYCwgYCdleGl0ZWQnYCksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFwcGx5IGNvbnRleHRcbiAgICogc3BlY2lmaWMgcHJvcHMgdG8gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiA8VHJhbnNpdGlvbiBpbj17dGhpcy5zdGF0ZS5pbn0gdGltZW91dD17MTUwfT5cbiAgICogICB7c3RhdGUgPT4gKFxuICAgKiAgICAgPE15Q29tcG9uZW50IGNsYXNzTmFtZT17YGZhZGUgZmFkZS0ke3N0YXRlfWB9IC8+XG4gICAqICAgKX1cbiAgICogPC9UcmFuc2l0aW9uPlxuICAgKiBgYGBcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMuZWxlbWVudC5pc1JlcXVpcmVkXSkuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29tcG9uZW50OyB0cmlnZ2VycyB0aGUgZW50ZXIgb3IgZXhpdCBzdGF0ZXNcbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGlzIG1vdW50ZWQgaW1tZWRpYXRlbHkgYWxvbmcgd2l0aFxuICAgKiB0aGUgcGFyZW50IGBUcmFuc2l0aW9uYCBjb21wb25lbnQuIElmIHlvdSB3YW50IHRvIFwibGF6eSBtb3VudFwiIHRoZSBjb21wb25lbnQgb24gdGhlXG4gICAqIGZpcnN0IGBpbj17dHJ1ZX1gIHlvdSBjYW4gc2V0IGBtb3VudE9uRW50ZXJgLiBBZnRlciB0aGUgZmlyc3QgZW50ZXIgdHJhbnNpdGlvbiB0aGUgY29tcG9uZW50IHdpbGwgc3RheVxuICAgKiBtb3VudGVkLCBldmVuIG9uIFwiZXhpdGVkXCIsIHVubGVzcyB5b3UgYWxzbyBzcGVjaWZ5IGB1bm1vdW50T25FeGl0YC5cbiAgICovXG4gIG1vdW50T25FbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBzdGF5cyBtb3VudGVkIGFmdGVyIGl0IHJlYWNoZXMgdGhlIGAnZXhpdGVkJ2Agc3RhdGUuXG4gICAqIFNldCBgdW5tb3VudE9uRXhpdGAgaWYgeW91J2QgcHJlZmVyIHRvIHVubW91bnQgdGhlIGNvbXBvbmVudCBhZnRlciBpdCBmaW5pc2hlcyBleGl0aW5nLlxuICAgKi9cbiAgdW5tb3VudE9uRXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBkb2VzIG5vdCBwZXJmb3JtIHRoZSBlbnRlciB0cmFuc2l0aW9uIHdoZW5cbiAgICogaXQgZmlyc3QgbW91bnRzLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBgaW5gLiBJZiB5b3Ugd2FudCB0aGlzXG4gICAqIGJlaGF2aW9yLCBzZXQgYm90aCBgYXBwZWFyYCBhbmQgYGluYCB0byBgdHJ1ZWAuXG4gICAqXG4gICAqID4gKipOb3RlKio6IHRoZXJlIGFyZSBubyBzcGVjaWFsIGFwcGVhciBzdGF0ZXMgbGlrZSBgYXBwZWFyaW5nYC9gYXBwZWFyZWRgLCB0aGlzIHByb3BcbiAgICogPiBvbmx5IGFkZHMgYW4gYWRkaXRpb25hbCBlbnRlciB0cmFuc2l0aW9uLiBIb3dldmVyLCBpbiB0aGVcbiAgICogPiBgPENTU1RyYW5zaXRpb24+YCBjb21wb25lbnQgdGhhdCBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIGRvZXMgcmVzdWx0IGluXG4gICAqID4gYWRkaXRpb25hbCBgLmFwcGVhci0qYCBjbGFzc2VzLCB0aGF0IHdheSB5b3UgY2FuIGNob29zZSB0byBzdHlsZSBpdFxuICAgKiA+IGRpZmZlcmVudGx5LlxuICAgKi9cbiAgYXBwZWFyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZW50ZXIgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBlbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGV4aXQgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBleGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFJlcXVpcmVkIHVubGVzcyBgYWRkRW5kTGlzdGVuZXJgIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zOlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17NTAwfVxuICAgKiBgYGBcbiAgICpcbiAgICogb3IgaW5kaXZpZHVhbGx5OlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17e1xuICAgKiAgYXBwZWFyOiA1MDAsXG4gICAqICBlbnRlcjogMzAwLFxuICAgKiAgZXhpdDogNTAwLFxuICAgKiB9fVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBgYXBwZWFyYCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYGVudGVyYFxuICAgKiAtIGBlbnRlcmAgZGVmYXVsdHMgdG8gYDBgXG4gICAqIC0gYGV4aXRgIGRlZmF1bHRzIHRvIGAwYFxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyIHwgeyBlbnRlcj86IG51bWJlciwgZXhpdD86IG51bWJlciwgYXBwZWFyPzogbnVtYmVyIH19XG4gICAqL1xuICB0aW1lb3V0OiBmdW5jdGlvbiB0aW1lb3V0KHByb3BzKSB7XG4gICAgdmFyIHB0ID0gdGltZW91dHNTaGFwZTtcbiAgICBpZiAoIXByb3BzLmFkZEVuZExpc3RlbmVyKSBwdCA9IHB0LmlzUmVxdWlyZWQ7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHQuYXBwbHkodm9pZCAwLCBbcHJvcHNdLmNvbmNhdChhcmdzKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSB0cmFuc2l0aW9uIGVuZCB0cmlnZ2VyLiBDYWxsZWQgd2l0aCB0aGUgdHJhbnNpdGlvbmluZ1xuICAgKiBET00gbm9kZSBhbmQgYSBgZG9uZWAgY2FsbGJhY2suIEFsbG93cyBmb3IgbW9yZSBmaW5lIGdyYWluZWQgdHJhbnNpdGlvbiBlbmRcbiAgICogbG9naWMuIFRpbWVvdXRzIGFyZSBzdGlsbCB1c2VkIGFzIGEgZmFsbGJhY2sgaWYgcHJvdmlkZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiBhZGRFbmRMaXN0ZW5lcj17KG5vZGUsIGRvbmUpID0+IHtcbiAgICogICAvLyB1c2UgdGhlIGNzcyB0cmFuc2l0aW9uZW5kIGV2ZW50IHRvIG1hcmsgdGhlIGZpbmlzaCBvZiBhIHRyYW5zaXRpb25cbiAgICogICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBkb25lLCBmYWxzZSk7XG4gICAqIH19XG4gICAqIGBgYFxuICAgKi9cbiAgYWRkRW5kTGlzdGVuZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZW50ZXJpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbClcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKSAtPiB2b2lkXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0aW5nOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpIC0+IHZvaWRcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuY1xufSA6IHt9OyAvLyBOYW1lIHRoZSBmdW5jdGlvbiBzbyBpdCBpcyBjbGVhcmVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5UcmFuc2l0aW9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZSxcbiAgZW50ZXI6IHRydWUsXG4gIGV4aXQ6IHRydWUsXG4gIG9uRW50ZXI6IG5vb3AsXG4gIG9uRW50ZXJpbmc6IG5vb3AsXG4gIG9uRW50ZXJlZDogbm9vcCxcbiAgb25FeGl0OiBub29wLFxuICBvbkV4aXRpbmc6IG5vb3AsXG4gIG9uRXhpdGVkOiBub29wXG59O1xuVHJhbnNpdGlvbi5VTk1PVU5URUQgPSBVTk1PVU5URUQ7XG5UcmFuc2l0aW9uLkVYSVRFRCA9IEVYSVRFRDtcblRyYW5zaXRpb24uRU5URVJJTkcgPSBFTlRFUklORztcblRyYW5zaXRpb24uRU5URVJFRCA9IEVOVEVSRUQ7XG5UcmFuc2l0aW9uLkVYSVRJTkcgPSBFWElUSU5HO1xuZXhwb3J0IGRlZmF1bHQgVHJhbnNpdGlvbjsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcbiAgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImV4cG9ydCB2YXIgZm9yY2VSZWZsb3cgPSBmdW5jdGlvbiBmb3JjZVJlZmxvdyhub2RlKSB7XG4gIHJldHVybiBub2RlLnNjcm9sbFRvcDtcbn07IiwiLyoqXG4gKiBSZXR1cm5zIHRoZSBvd25lciBkb2N1bWVudCBvZiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwidmFyIHJVcHBlciA9IC8oW0EtWl0pL2c7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShyVXBwZXIsICctJDEnKS50b0xvd2VyQ2FzZSgpO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi8yYWViOGEyYTZiZWIwMDYxN2E0MjE3ZjdmODI4NDkyNGZhMmFkODE5L3NyYy92ZW5kb3IvY29yZS9oeXBoZW5hdGVTdHlsZU5hbWUuanNcbiAqL1xuaW1wb3J0IGh5cGhlbmF0ZSBmcm9tICcuL2h5cGhlbmF0ZSc7XG52YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4gaHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7XG59IiwidmFyIHN1cHBvcnRlZFRyYW5zZm9ybXMgPSAvXigodHJhbnNsYXRlfHJvdGF0ZXxzY2FsZSkoWHxZfFp8M2QpP3xtYXRyaXgoM2QpP3xwZXJzcGVjdGl2ZXxza2V3KFh8WSk/KSQvaTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVHJhbnNmb3JtKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiBzdXBwb3J0ZWRUcmFuc2Zvcm1zLnRlc3QodmFsdWUpKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tICcuL2dldENvbXB1dGVkU3R5bGUnO1xuaW1wb3J0IGh5cGhlbmF0ZSBmcm9tICcuL2h5cGhlbmF0ZVN0eWxlJztcbmltcG9ydCBpc1RyYW5zZm9ybSBmcm9tICcuL2lzVHJhbnNmb3JtJztcblxuZnVuY3Rpb24gc3R5bGUobm9kZSwgcHJvcGVydHkpIHtcbiAgdmFyIGNzcyA9ICcnO1xuICB2YXIgdHJhbnNmb3JtcyA9ICcnO1xuXG4gIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShoeXBoZW5hdGUocHJvcGVydHkpKSB8fCBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLmdldFByb3BlcnR5VmFsdWUoaHlwaGVuYXRlKHByb3BlcnR5KSk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhwcm9wZXJ0eSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbHVlID0gcHJvcGVydHlba2V5XTtcblxuICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgIG5vZGUuc3R5bGUucmVtb3ZlUHJvcGVydHkoaHlwaGVuYXRlKGtleSkpO1xuICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm0oa2V5KSkge1xuICAgICAgdHJhbnNmb3JtcyArPSBrZXkgKyBcIihcIiArIHZhbHVlICsgXCIpIFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjc3MgKz0gaHlwaGVuYXRlKGtleSkgKyBcIjogXCIgKyB2YWx1ZSArIFwiO1wiO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRyYW5zZm9ybXMpIHtcbiAgICBjc3MgKz0gXCJ0cmFuc2Zvcm06IFwiICsgdHJhbnNmb3JtcyArIFwiO1wiO1xuICB9XG5cbiAgbm9kZS5zdHlsZS5jc3NUZXh0ICs9IFwiO1wiICsgY3NzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZTsiLCJpbXBvcnQgb3duZXJXaW5kb3cgZnJvbSAnLi9vd25lcldpbmRvdyc7XG4vKipcbiAqIFJldHVybnMgb25lIG9yIGFsbCBjb21wdXRlZCBzdHlsZSBwcm9wZXJ0aWVzIG9mIGFuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gcHN1ZWRvRWxlbWVudCB0aGUgc3R5bGUgcHJvcGVydHlcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKG5vZGUsIHBzdWVkb0VsZW1lbnQpIHtcbiAgcmV0dXJuIG93bmVyV2luZG93KG5vZGUpLmdldENvbXB1dGVkU3R5bGUobm9kZSwgcHN1ZWRvRWxlbWVudCk7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi9vd25lckRvY3VtZW50Jztcbi8qKlxuICogUmV0dXJucyB0aGUgb3duZXIgd2luZG93IG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIHZhciBkb2MgPSBvd25lckRvY3VtZW50KG5vZGUpO1xuICByZXR1cm4gZG9jICYmIGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXR1cm4tYXNzaWduICovXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4vY2FuVXNlRE9NJztcbmV4cG9ydCB2YXIgb3B0aW9uc1N1cHBvcnRlZCA9IGZhbHNlO1xuZXhwb3J0IHZhciBvbmNlU3VwcG9ydGVkID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIGdldCBwYXNzaXZlKCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNTdXBwb3J0ZWQgPSB0cnVlO1xuICAgIH0sXG5cbiAgICBnZXQgb25jZSgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1hc3NpZ25cbiAgICAgIHJldHVybiBvbmNlU3VwcG9ydGVkID0gb3B0aW9uc1N1cHBvcnRlZCA9IHRydWU7XG4gICAgfVxuXG4gIH07XG5cbiAgaWYgKGNhblVzZURPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCB0cnVlKTtcbiAgfVxufSBjYXRjaCAoZSkge1xuICAvKiAqL1xufVxuXG4vKipcbiAqIEFuIGBhZGRFdmVudExpc3RlbmVyYCBwb255ZmlsbCwgc3VwcG9ydHMgdGhlIGBvbmNlYCBvcHRpb25cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBldmVudE5hbWUgdGhlIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGUgdGhlIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zIGV2ZW50IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgIT09ICdib29sZWFuJyAmJiAhb25jZVN1cHBvcnRlZCkge1xuICAgIHZhciBvbmNlID0gb3B0aW9ucy5vbmNlLFxuICAgICAgICBjYXB0dXJlID0gb3B0aW9ucy5jYXB0dXJlO1xuICAgIHZhciB3cmFwcGVkSGFuZGxlciA9IGhhbmRsZXI7XG5cbiAgICBpZiAoIW9uY2VTdXBwb3J0ZWQgJiYgb25jZSkge1xuICAgICAgd3JhcHBlZEhhbmRsZXIgPSBoYW5kbGVyLl9fb25jZSB8fCBmdW5jdGlvbiBvbmNlSGFuZGxlcihldmVudCkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBvbmNlSGFuZGxlciwgY2FwdHVyZSk7XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBldmVudCk7XG4gICAgICB9O1xuXG4gICAgICBoYW5kbGVyLl9fb25jZSA9IHdyYXBwZWRIYW5kbGVyO1xuICAgIH1cblxuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHdyYXBwZWRIYW5kbGVyLCBvcHRpb25zU3VwcG9ydGVkID8gb3B0aW9ucyA6IGNhcHR1cmUpO1xuICB9XG5cbiAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZEV2ZW50TGlzdGVuZXI7IiwiaW1wb3J0IGFkZEV2ZW50TGlzdGVuZXIgZnJvbSAnLi9hZGRFdmVudExpc3RlbmVyJztcbmltcG9ydCByZW1vdmVFdmVudExpc3RlbmVyIGZyb20gJy4vcmVtb3ZlRXZlbnRMaXN0ZW5lcic7XG5cbmZ1bmN0aW9uIGxpc3Rlbihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGlzdGVuOyIsIi8qKlxuICogQSBgcmVtb3ZlRXZlbnRMaXN0ZW5lcmAgcG9ueWZpbGxcbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBldmVudE5hbWUgdGhlIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGUgdGhlIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zIGV2ZW50IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGNhcHR1cmUgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zICE9PSAnYm9vbGVhbicgPyBvcHRpb25zLmNhcHR1cmUgOiBvcHRpb25zO1xuICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLCBjYXB0dXJlKTtcblxuICBpZiAoaGFuZGxlci5fX29uY2UpIHtcbiAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLl9fb25jZSwgY2FwdHVyZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlRXZlbnRMaXN0ZW5lcjsiLCJpbXBvcnQgY3NzIGZyb20gJy4vY3NzJztcbmltcG9ydCBsaXN0ZW4gZnJvbSAnLi9saXN0ZW4nO1xuaW1wb3J0IHRyaWdnZXJFdmVudCBmcm9tICcuL3RyaWdnZXJFdmVudCc7XG5cbmZ1bmN0aW9uIHBhcnNlRHVyYXRpb24obm9kZSkge1xuICB2YXIgc3RyID0gY3NzKG5vZGUsICd0cmFuc2l0aW9uRHVyYXRpb24nKSB8fCAnJztcbiAgdmFyIG11bHQgPSBzdHIuaW5kZXhPZignbXMnKSA9PT0gLTEgPyAxMDAwIDogMTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKSAqIG11bHQ7XG59XG5cbmZ1bmN0aW9uIGVtdWxhdGVUcmFuc2l0aW9uRW5kKGVsZW1lbnQsIGR1cmF0aW9uLCBwYWRkaW5nKSB7XG4gIGlmIChwYWRkaW5nID09PSB2b2lkIDApIHtcbiAgICBwYWRkaW5nID0gNTtcbiAgfVxuXG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgdmFyIGhhbmRsZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmICghY2FsbGVkKSB0cmlnZ2VyRXZlbnQoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnLCB0cnVlKTtcbiAgfSwgZHVyYXRpb24gKyBwYWRkaW5nKTtcbiAgdmFyIHJlbW92ZSA9IGxpc3RlbihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICB9LCB7XG4gICAgb25jZTogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgICByZW1vdmUoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbkVuZChlbGVtZW50LCBoYW5kbGVyLCBkdXJhdGlvbiwgcGFkZGluZykge1xuICBpZiAoZHVyYXRpb24gPT0gbnVsbCkgZHVyYXRpb24gPSBwYXJzZUR1cmF0aW9uKGVsZW1lbnQpIHx8IDA7XG4gIHZhciByZW1vdmVFbXVsYXRlID0gZW11bGF0ZVRyYW5zaXRpb25FbmQoZWxlbWVudCwgZHVyYXRpb24sIHBhZGRpbmcpO1xuICB2YXIgcmVtb3ZlID0gbGlzdGVuKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgaGFuZGxlcik7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmVtb3ZlRW11bGF0ZSgpO1xuICAgIHJlbW92ZSgpO1xuICB9O1xufSIsIi8qKlxuICogVHJpZ2dlcnMgYW4gZXZlbnQgb24gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIGV2ZW50TmFtZSB0aGUgZXZlbnQgbmFtZSB0byB0cmlnZ2VyXG4gKiBAcGFyYW0gYnViYmxlcyB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgYnViYmxlIHVwXG4gKiBAcGFyYW0gY2FuY2VsYWJsZSB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgYmUgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmlnZ2VyRXZlbnQobm9kZSwgZXZlbnROYW1lLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gIGlmIChidWJibGVzID09PSB2b2lkIDApIHtcbiAgICBidWJibGVzID0gZmFsc2U7XG4gIH1cblxuICBpZiAoY2FuY2VsYWJsZSA9PT0gdm9pZCAwKSB7XG4gICAgY2FuY2VsYWJsZSA9IHRydWU7XG4gIH1cblxuICBpZiAobm9kZSkge1xuICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gICAgZXZlbnQuaW5pdEV2ZW50KGV2ZW50TmFtZSwgYnViYmxlcywgY2FuY2VsYWJsZSk7XG4gICAgbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfVxufSIsImltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCB0cmFuc2l0aW9uRW5kIGZyb20gJ2RvbS1oZWxwZXJzL3RyYW5zaXRpb25FbmQnO1xuZnVuY3Rpb24gcGFyc2VEdXJhdGlvbihub2RlLCBwcm9wZXJ0eSkge1xuICBjb25zdCBzdHIgPSBjc3Mobm9kZSwgcHJvcGVydHkpIHx8ICcnO1xuICBjb25zdCBtdWx0ID0gc3RyLmluZGV4T2YoJ21zJykgPT09IC0xID8gMTAwMCA6IDE7XG4gIHJldHVybiBwYXJzZUZsb2F0KHN0cikgKiBtdWx0O1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbkVuZExpc3RlbmVyKGVsZW1lbnQsIGhhbmRsZXIpIHtcbiAgY29uc3QgZHVyYXRpb24gPSBwYXJzZUR1cmF0aW9uKGVsZW1lbnQsICd0cmFuc2l0aW9uRHVyYXRpb24nKTtcbiAgY29uc3QgZGVsYXkgPSBwYXJzZUR1cmF0aW9uKGVsZW1lbnQsICd0cmFuc2l0aW9uRGVsYXknKTtcbiAgY29uc3QgcmVtb3ZlID0gdHJhbnNpdGlvbkVuZChlbGVtZW50LCBlID0+IHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGVsZW1lbnQpIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgICAgaGFuZGxlcihlKTtcbiAgICB9XG4gIH0sIGR1cmF0aW9uICsgZGVsYXkpO1xufSIsIi8vIHJlYWRpbmcgYSBkaW1lbnNpb24gcHJvcCB3aWxsIGNhdXNlIHRoZSBicm93c2VyIHRvIHJlY2FsY3VsYXRlLFxuLy8gd2hpY2ggd2lsbCBsZXQgb3VyIGFuaW1hdGlvbnMgd29ya1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJpZ2dlckJyb3dzZXJSZWZsb3cobm9kZSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICBub2RlLm9mZnNldEhlaWdodDtcbn0iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG52YXIgdG9GblJlZiA9IGZ1bmN0aW9uIHRvRm5SZWYocmVmKSB7XG4gIHJldHVybiAhcmVmIHx8IHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicgPyByZWYgOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUmVmcyhyZWZBLCByZWZCKSB7XG4gIHZhciBhID0gdG9GblJlZihyZWZBKTtcbiAgdmFyIGIgPSB0b0ZuUmVmKHJlZkIpO1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKGEpIGEodmFsdWUpO1xuICAgIGlmIChiKSBiKHZhbHVlKTtcbiAgfTtcbn1cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm5zIGEgc2luZ2xlIGNhbGxiYWNrIHJlZiBjb21wb3NlZCBmcm9tIHR3byBvdGhlciBSZWZzLlxuICpcbiAqIGBgYHRzeFxuICogY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICogICBjb25zdCBbZWxlbWVudCwgYXR0YWNoUmVmXSA9IHVzZUNhbGxiYWNrUmVmPEhUTUxCdXR0b25FbGVtZW50PigpO1xuICogICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgYXR0YWNoUmVmKTtcbiAqXG4gKiAgIHJldHVybiA8YnV0dG9uIHJlZj17bWVyZ2VkUmVmfSB7Li4ucHJvcHN9Lz5cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcmVmQSBBIENhbGxiYWNrIG9yIG11dGFibGUgUmVmXG4gKiBAcGFyYW0gcmVmQiBBIENhbGxiYWNrIG9yIG11dGFibGUgUmVmXG4gKiBAY2F0ZWdvcnkgcmVmc1xuICovXG5cbmZ1bmN0aW9uIHVzZU1lcmdlZFJlZnMocmVmQSwgcmVmQikge1xuICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG1lcmdlUmVmcyhyZWZBLCByZWZCKTtcbiAgfSwgW3JlZkEsIHJlZkJdKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlTWVyZ2VkUmVmczsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUcmFuc2l0aW9uIGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCBzYWZlRmluZERPTU5vZGUgZnJvbSAnLi9zYWZlRmluZERPTU5vZGUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIE5vcm1hbGl6ZXMgVHJhbnNpdGlvbiBjYWxsYmFja3Mgd2hlbiBub2RlUmVmIGlzIHVzZWQuXG5jb25zdCBUcmFuc2l0aW9uV3JhcHBlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIG9uRW50ZXIsXG4gIG9uRW50ZXJpbmcsXG4gIG9uRW50ZXJlZCxcbiAgb25FeGl0LFxuICBvbkV4aXRpbmcsXG4gIG9uRXhpdGVkLFxuICBhZGRFbmRMaXN0ZW5lcixcbiAgY2hpbGRyZW4sXG4gIGNoaWxkUmVmLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IG5vZGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlZFJlZnMobm9kZVJlZiwgY2hpbGRSZWYpO1xuICBjb25zdCBhdHRhY2hSZWYgPSByID0+IHtcbiAgICBtZXJnZWRSZWYoc2FmZUZpbmRET01Ob2RlKHIpKTtcbiAgfTtcbiAgY29uc3Qgbm9ybWFsaXplID0gY2FsbGJhY2sgPT4gcGFyYW0gPT4ge1xuICAgIGlmIChjYWxsYmFjayAmJiBub2RlUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbGxiYWNrKG5vZGVSZWYuY3VycmVudCwgcGFyYW0pO1xuICAgIH1cbiAgfTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgKi9cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FbnRlciksIFtvbkVudGVyXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRW50ZXJpbmcpLCBbb25FbnRlcmluZ10pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRW50ZXJlZCksIFtvbkVudGVyZWRdKTtcbiAgY29uc3QgaGFuZGxlRXhpdCA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkV4aXQpLCBbb25FeGl0XSk7XG4gIGNvbnN0IGhhbmRsZUV4aXRpbmcgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FeGl0aW5nKSwgW29uRXhpdGluZ10pO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FeGl0ZWQpLCBbb25FeGl0ZWRdKTtcbiAgY29uc3QgaGFuZGxlQWRkRW5kTGlzdGVuZXIgPSB1c2VDYWxsYmFjayhub3JtYWxpemUoYWRkRW5kTGlzdGVuZXIpLCBbYWRkRW5kTGlzdGVuZXJdKTtcbiAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgKi9cblxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbiwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgIG9uRW50ZXJlZDogaGFuZGxlRW50ZXJlZCxcbiAgICBvbkVudGVyaW5nOiBoYW5kbGVFbnRlcmluZyxcbiAgICBvbkV4aXQ6IGhhbmRsZUV4aXQsXG4gICAgb25FeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICBvbkV4aXRpbmc6IGhhbmRsZUV4aXRpbmcsXG4gICAgYWRkRW5kTGlzdGVuZXI6IGhhbmRsZUFkZEVuZExpc3RlbmVyLFxuICAgIG5vZGVSZWY6IG5vZGVSZWYsXG4gICAgY2hpbGRyZW46IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IChzdGF0dXMsIGlubmVyUHJvcHMpID0+IGNoaWxkcmVuKHN0YXR1cywge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIHJlZjogYXR0YWNoUmVmXG4gICAgfSkgOiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICByZWY6IGF0dGFjaFJlZlxuICAgIH0pXG4gIH0pO1xufSk7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uV3JhcHBlcjsiLCJpbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhZmVGaW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgaWYgKGNvbXBvbmVudE9yRWxlbWVudCAmJiAnc2V0U3RhdGUnIGluIGNvbXBvbmVudE9yRWxlbWVudCkge1xuICAgIHJldHVybiBSZWFjdERPTS5maW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpO1xuICB9XG4gIHJldHVybiBjb21wb25lbnRPckVsZW1lbnQgIT0gbnVsbCA/IGNvbXBvbmVudE9yRWxlbWVudCA6IG51bGw7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEVOVEVSRUQsIEVOVEVSSU5HIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uJztcbmltcG9ydCB0cmFuc2l0aW9uRW5kTGlzdGVuZXIgZnJvbSAnLi90cmFuc2l0aW9uRW5kTGlzdGVuZXInO1xuaW1wb3J0IHRyaWdnZXJCcm93c2VyUmVmbG93IGZyb20gJy4vdHJpZ2dlckJyb3dzZXJSZWZsb3cnO1xuaW1wb3J0IFRyYW5zaXRpb25XcmFwcGVyIGZyb20gJy4vVHJhbnNpdGlvbldyYXBwZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICB0aW1lb3V0OiAzMDAsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlXG59O1xuY29uc3QgZmFkZVN0eWxlcyA9IHtcbiAgW0VOVEVSSU5HXTogJ3Nob3cnLFxuICBbRU5URVJFRF06ICdzaG93J1xufTtcbmNvbnN0IEZhZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICB0cmFuc2l0aW9uQ2xhc3NlcyA9IHt9LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gdXNlQ2FsbGJhY2soKG5vZGUsIGlzQXBwZWFyaW5nKSA9PiB7XG4gICAgdHJpZ2dlckJyb3dzZXJSZWZsb3cobm9kZSk7XG4gICAgcHJvcHMub25FbnRlciA9PSBudWxsID8gdm9pZCAwIDogcHJvcHMub25FbnRlcihub2RlLCBpc0FwcGVhcmluZyk7XG4gIH0sIFtwcm9wc10pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbldyYXBwZXIsIHtcbiAgICByZWY6IHJlZixcbiAgICBhZGRFbmRMaXN0ZW5lcjogdHJhbnNpdGlvbkVuZExpc3RlbmVyLFxuICAgIC4uLnByb3BzLFxuICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgIGNoaWxkUmVmOiBjaGlsZHJlbi5yZWYsXG4gICAgY2hpbGRyZW46IChzdGF0dXMsIGlubmVyUHJvcHMpID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIC4uLmlubmVyUHJvcHMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ2ZhZGUnLCBjbGFzc05hbWUsIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSwgZmFkZVN0eWxlc1tzdGF0dXNdLCB0cmFuc2l0aW9uQ2xhc3Nlc1tzdGF0dXNdKVxuICAgIH0pXG4gIH0pO1xufSk7XG5GYWRlLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbkZhZGUuZGlzcGxheU5hbWUgPSAnRmFkZSc7XG5leHBvcnQgZGVmYXVsdCBGYWRlOyIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBwcm9wVHlwZXMgPSB7XG4gIC8qKiBBbiBhY2Nlc3NpYmxlIGxhYmVsIGluZGljYXRpbmcgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBDbG9zZSBCdXR0b24uICovXG4gICdhcmlhLWxhYmVsJzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIEEgY2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIENsb3NlIEJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFJlbmRlciBkaWZmZXJlbnQgY29sb3IgdmFyaWFudCBmb3IgdGhlIGJ1dHRvbi5cbiAgICpcbiAgICogT21pdHRpbmcgdGhpcyB3aWxsIHJlbmRlciB0aGUgZGVmYXVsdCBkYXJrIGNvbG9yLlxuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnd2hpdGUnXSlcbn07XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICdhcmlhLWxhYmVsJzogJ0Nsb3NlJ1xufTtcbmNvbnN0IENsb3NlQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgY2xhc3NOYW1lLFxuICB2YXJpYW50LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiAvKiNfX1BVUkVfXyovX2pzeChcImJ1dHRvblwiLCB7XG4gIHJlZjogcmVmLFxuICB0eXBlOiBcImJ1dHRvblwiLFxuICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ2J0bi1jbG9zZScsIHZhcmlhbnQgJiYgYGJ0bi1jbG9zZS0ke3ZhcmlhbnR9YCwgY2xhc3NOYW1lKSxcbiAgLi4ucHJvcHNcbn0pKTtcbkNsb3NlQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0Nsb3NlQnV0dG9uJztcbkNsb3NlQnV0dG9uLnByb3BUeXBlcyA9IHByb3BUeXBlcztcbkNsb3NlQnV0dG9uLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IENsb3NlQnV0dG9uOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IChjbGFzc05hbWUgPT4gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHAsIHJlZikgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAuLi5wLFxuICByZWY6IHJlZixcbiAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHAuY2xhc3NOYW1lLCBjbGFzc05hbWUpXG59KSkpOyIsInZhciBySHlwaGVuID0gLy0oLikvZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2Uockh5cGhlbiwgZnVuY3Rpb24gKF8sIGNocikge1xuICAgIHJldHVybiBjaHIudG9VcHBlckNhc2UoKTtcbiAgfSk7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgY2FtZWxpemUgZnJvbSAnZG9tLWhlbHBlcnMvY2FtZWxpemUnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBwYXNjYWxDYXNlID0gc3RyID0+IHN0clswXS50b1VwcGVyQ2FzZSgpICsgY2FtZWxpemUoc3RyKS5zbGljZSgxKTtcbi8vIFRPRE86IGVtc3RyaWN0ZW4gJiBmaXggdGhlIHR5cGluZyBoZXJlISBgY3JlYXRlV2l0aEJzUHJlZml4PFRFbGVtZW50VHlwZT4uLi5gXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVXaXRoQnNQcmVmaXgocHJlZml4LCB7XG4gIGRpc3BsYXlOYW1lID0gcGFzY2FsQ2FzZShwcmVmaXgpLFxuICBDb21wb25lbnQsXG4gIGRlZmF1bHRQcm9wc1xufSA9IHt9KSB7XG4gIGNvbnN0IEJzQ29tcG9uZW50ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgICBjbGFzc05hbWUsXG4gICAgYnNQcmVmaXgsXG4gICAgYXM6IFRhZyA9IENvbXBvbmVudCB8fCAnZGl2JyxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgcHJlZml4KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVGFnLCB7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHJlc29sdmVkUHJlZml4KSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH0pO1xuICBCc0NvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4gIEJzQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gIHJldHVybiBCc0NvbXBvbmVudDtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IEFuY2hvciBmcm9tICdAcmVzdGFydC91aS9BbmNob3InO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBGYWRlIGZyb20gJy4vRmFkZSc7XG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSAnLi9DbG9zZUJ1dHRvbic7XG5pbXBvcnQgZGl2V2l0aENsYXNzTmFtZSBmcm9tICcuL2RpdldpdGhDbGFzc05hbWUnO1xuaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRGl2U3R5bGVkQXNINCA9IGRpdldpdGhDbGFzc05hbWUoJ2g0Jyk7XG5EaXZTdHlsZWRBc0g0LmRpc3BsYXlOYW1lID0gJ0RpdlN0eWxlZEFzSDQnO1xuY29uc3QgQWxlcnRIZWFkaW5nID0gY3JlYXRlV2l0aEJzUHJlZml4KCdhbGVydC1oZWFkaW5nJywge1xuICBDb21wb25lbnQ6IERpdlN0eWxlZEFzSDRcbn0pO1xuY29uc3QgQWxlcnRMaW5rID0gY3JlYXRlV2l0aEJzUHJlZml4KCdhbGVydC1saW5rJywge1xuICBDb21wb25lbnQ6IEFuY2hvclxufSk7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgc2hvdzogdHJ1ZSxcbiAgdHJhbnNpdGlvbjogRmFkZSxcbiAgY2xvc2VMYWJlbDogJ0Nsb3NlIGFsZXJ0J1xufTtcbmNvbnN0IEFsZXJ0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHVuY29udHJvbGxlZFByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGJzUHJlZml4LFxuICAgIHNob3csXG4gICAgY2xvc2VMYWJlbCxcbiAgICBjbG9zZVZhcmlhbnQsXG4gICAgY2xhc3NOYW1lLFxuICAgIGNoaWxkcmVuLFxuICAgIHZhcmlhbnQsXG4gICAgb25DbG9zZSxcbiAgICBkaXNtaXNzaWJsZSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIC4uLnByb3BzXG4gIH0gPSB1c2VVbmNvbnRyb2xsZWQodW5jb250cm9sbGVkUHJvcHMsIHtcbiAgICBzaG93OiAnb25DbG9zZSdcbiAgfSk7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2FsZXJ0Jyk7XG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAob25DbG9zZSkge1xuICAgICAgb25DbG9zZShmYWxzZSwgZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgVHJhbnNpdGlvbiA9IHRyYW5zaXRpb24gPT09IHRydWUgPyBGYWRlIDogdHJhbnNpdGlvbjtcbiAgY29uc3QgYWxlcnQgPSAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgIHJvbGU6IFwiYWxlcnRcIixcbiAgICAuLi4oIVRyYW5zaXRpb24gPyBwcm9wcyA6IHVuZGVmaW5lZCksXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCB2YXJpYW50ICYmIGAke3ByZWZpeH0tJHt2YXJpYW50fWAsIGRpc21pc3NpYmxlICYmIGAke3ByZWZpeH0tZGlzbWlzc2libGVgKSxcbiAgICBjaGlsZHJlbjogW2Rpc21pc3NpYmxlICYmIC8qI19fUFVSRV9fKi9fanN4KENsb3NlQnV0dG9uLCB7XG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbG9zZSxcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBjbG9zZUxhYmVsLFxuICAgICAgdmFyaWFudDogY2xvc2VWYXJpYW50XG4gICAgfSksIGNoaWxkcmVuXVxuICB9KTtcbiAgaWYgKCFUcmFuc2l0aW9uKSByZXR1cm4gc2hvdyA/IGFsZXJ0IDogbnVsbDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb24sIHtcbiAgICB1bm1vdW50T25FeGl0OiB0cnVlLFxuICAgIC4uLnByb3BzLFxuICAgIHJlZjogdW5kZWZpbmVkLFxuICAgIGluOiBzaG93LFxuICAgIGNoaWxkcmVuOiBhbGVydFxuICB9KTtcbn0pO1xuQWxlcnQuZGlzcGxheU5hbWUgPSAnQWxlcnQnO1xuQWxlcnQuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihBbGVydCwge1xuICBMaW5rOiBBbGVydExpbmssXG4gIEhlYWRpbmc6IEFsZXJ0SGVhZGluZ1xufSk7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuXG5leHBvcnQgY29uc3QgTWVzc2FnZSA9ICh7XG4gIGhlYWRpbmcsXG4gIGljb24sXG4gIHR5cGUsXG4gIGRpc21pc3NpYmxlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxufSkgPT4ge1xuICB2YXIgdmFyaWFudCA9IFwicHJpbWFyeVwiO1xuICBjb25zdCBzaG93SWNvbiA9IGljb24gPT09IHVuZGVmaW5lZCB8fCBpY29uO1xuICB2YXIgaWNvbkNsYXNzID0gXCJiaSBiaS1leGNsYW1hdGlvbi1jaXJjbGVcIjtcbiAgdmFyIFtzaG93LCBzZXRTaG93XSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIGlmICghc2hvdykge1xuICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQgLz47XG4gIH1cblxuICBpZiAodHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgdmFyaWFudCA9IFwiZGFuZ2VyXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1leGNsYW1hdGlvbi10cmlhbmdsZS1maWxsXCI7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ3YXJuaW5nXCIpIHtcbiAgICB2YXJpYW50ID0gXCJ3YXJuaW5nXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgdmFyaWFudCA9IFwic3VjY2Vzc1wiO1xuICAgIGljb25DbGFzcyA9IFwiYmkgYmktY2hlY2stY2lyY2xlXCI7XG4gIH1cblxuICBpY29uID0gc2hvd0ljb24gJiYgKGljb24gfHwgPGkgY2xhc3NOYW1lPXtgJHtpY29uQ2xhc3N9IG1lLTIgbS0wYH0+PC9pPik7XG5cbiAgcmV0dXJuIChcbiAgICA8QWxlcnRcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgdmFyaWFudD17dmFyaWFudH1cbiAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3coZmFsc2UpfVxuICAgICAgZGlzbWlzc2libGU9e2Rpc21pc3NpYmxlfVxuICAgID5cbiAgICAgIHtoZWFkaW5nICYmIChcbiAgICAgICAgPEFsZXJ0LkhlYWRpbmc+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAge2hlYWRpbmd9XG4gICAgICAgIDwvQWxlcnQuSGVhZGluZz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbS0wXCI+XG4gICAgICAgIHshaGVhZGluZyAmJiBpY29ufVxuICAgICAgICA8ZGl2PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvQWxlcnQ+XG4gICk7XG59O1xuXG5NZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgaGVhZGluZzogUHJvcFR5cGVzLm5vZGUsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICB0eXBlOiBQcm9wVHlwZXMub25lT2YoW1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIsIFwic3VjY2Vzc1wiLCBcImluZm9cIl0pLFxuICBkaXNtaXNzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgRXJyb3JNZXNzYWdlID0gKHsgaGVhZGluZywgZXJyb3IgfSkgPT4ge1xuICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICBoZWFkaW5nID0gaGVhZGluZyB8fCBcIkVycm9yXCI7XG5cbiAgdmFyIG1lc3NhZ2U7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIgfHwgZXJyb3IgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICBtZXNzYWdlID0gZXJyb3I7XG4gIH0gZWxzZSBpZiAoXG4gICAgZXJyb3IubWVzc2FnZSAmJlxuICAgICh0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIiB8fCBlcnJvci5tZXNzYWdlIGluc3RhbmNlb2YgU3RyaW5nKVxuICApIHtcbiAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TWVzc2FnZSBjbGFzc05hbWU9XCJtdC0zIG14LTNcIiBoZWFkaW5nPXtoZWFkaW5nfSB0eXBlPVwiZXJyb3JcIiBkaXNtaXNzaWJsZT5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvTWVzc2FnZT5cbiAgKTtcbn07XG5cbkVycm9yTWVzc2FnZS5wcm9wVHlwZXMgPSB7XG4gIGhlYWRpbmc6IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmluc3RhbmNlT2YoRXJyb3IpXSksXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgTG9hZGluZ0luZm8gPSAoeyBjbGFzc05hbWUsIHNpemUsIGNvbG9yLCB0aXRsZSB9KSA9PiB7XG4gIHZhciBjbGFzc2VzID0gXCJzcGlubmVyLWJvcmRlclwiO1xuXG4gIGlmIChjbGFzc05hbWUpIHtcbiAgICBjbGFzc2VzICs9IFwiIFwiICsgY2xhc3NOYW1lO1xuICB9XG4gIGlmIChzaXplID09PSBcInNtXCIpIHtcbiAgICBjbGFzc2VzICs9IFwiIHNwaW5uZXItYm9yZGVyLXNtXCI7XG4gIH1cbiAgaWYgKGNvbG9yID09PSBcInByaW1hcnlcIikge1xuICAgIGNsYXNzZXMgKz0gXCIgdGV4dC1wcmltYXJ5XCI7XG4gIH0gZWxzZSBpZiAoY29sb3IgPT09IFwic2Vjb25kYXJ5XCIpIHtcbiAgICBjbGFzc2VzICs9IFwiIHRleHQtc2Vjb25kYXJ5XCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxzcGFuIHRpdGxlPXt0aXRsZX0gY2xhc3NOYW1lPXtjbGFzc2VzfSByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgKTtcbn07XG5cbkxvYWRpbmdJbmZvLnByb3BUeXBlcyA9IHtcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wic21cIl0pLFxuICBjb2xvcjogUHJvcFR5cGVzLm9uZU9mKFtcInByaW1hcnlcIiwgXCJzZWNvbmRhcnlcIl0pLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkxvYWRpbmdJbmZvLmRlZmF1bHRQcm9wcyA9IHtcbiAgdGl0bGU6IFwiTG9hZGluZy4uLlwiLFxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgSW5mb1NlcnZpY2UgfSBmcm9tIFwiLi4vSW5mb1NlcnZpY2VcIjtcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tIFwiLi9NZXNzYWdlXCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIF9sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpIHtcbiAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICByZXR1cm4gYXdhaXQgc2VydmljZS5sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVTdWJtaXQoc2hvd0xvYWRpbmdJbmZvLCB0aGVuLCBvbkVycm9yKSB7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNob3dMb2FkaW5nSW5mbygpO1xuICAgIGNvbnN0IHVzZXJuYW1lID0gZXZlbnQudGFyZ2V0LnVzZXJuYW1lLnZhbHVlO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZXZlbnQudGFyZ2V0LnBhc3N3b3JkLnZhbHVlO1xuXG4gICAgLy8gZGVhY3RpdmUgbG9naW4gZm9ybSAobm8gcmV0cnkgdW50aWwgdGhlIHNlcnZlciBhbnN3ZXIgaXMgdGhlcmUgb3IgYVxuICAgIC8vIHRpbWVvdXQpLlxuICAgIGV2ZW50LnRhcmdldC5zdWJtaXQuZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgdmFyIGxvZ2luX3Byb21pc2UgPSBfbG9naW4odXNlcm5hbWUsIHBhc3N3b3JkKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAvLyBhY3RpdmUgbG9naW4gYWdhaW5cbiAgICAgIGV2ZW50LnRhcmdldC5zdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcblxuICAgIGlmICh0aGVuKSB7XG4gICAgICBsb2dpbl9wcm9taXNlID0gbG9naW5fcHJvbWlzZS50aGVuKHRoZW4pO1xuICAgIH1cblxuICAgIGlmIChvbkVycm9yKSB7XG4gICAgICBsb2dpbl9wcm9taXNlLmNhdGNoKG9uRXJyb3IpO1xuICAgIH1cbiAgfTtcbn1cblxuY2xhc3MgVGltZW91dCB7XG4gIGNvbnN0cnVjdG9yKGNiLCBtcykge1xuICAgIHRoaXMuY2IgPSBjYjtcbiAgICBtcyA9IE51bWJlci5pc0ludGVnZXIobXMpID8gbXMgOiAxMDAwMDtcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY2IsIG1zKTtcbiAgfVxuICByZXNldChtcykge1xuICAgIHRoaXMucGF1c2UoKTtcbiAgICBpZiAodGhpcy5jYikge1xuICAgICAgbXMgPSBOdW1iZXIuaXNJbnRlZ2VyKG1zKSA/IG1zIDogMjAwMDA7XG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY2IsIG1zKTtcbiAgICB9XG4gIH1cbiAgcGF1c2UoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICB0aGlzLnRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHN0b3AoKSB7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMuY2IgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuY29uc3QgTG9naW5Gb3JtSW5wdXRzID0gKHsgdGhlbiwgb25FcnJvciwgc2hvd01lc3NhZ2VzLCBzaG93TG9hZGluZ0luZm8gfSkgPT4ge1xuICBjb25zdCB0aW1lb3V0ID0gbmV3IFRpbWVvdXQoc2hvd01lc3NhZ2VzKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB0aW1lb3V0LnBhdXNlKCk7XG4gIGNvbnN0IG9uQmx1ciA9ICgpID0+IHRpbWVvdXQucmVzZXQoKTtcbiAgY29uc3Qgb25DbGljayA9ICgpID0+IHRpbWVvdXQuc3RvcCgpO1xuXG4gIGNvbnN0IHdyYXBwZWRPbkVycm9yID0gYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgc2hvd01lc3NhZ2VzKCk7XG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIHJldHVybiBhd2FpdCBvbkVycm9yKGVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgY2xhc3NOYW1lPVwibS0wXCJcbiAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXQoc2hvd0xvYWRpbmdJbmZvLCB0aGVuLCB3cmFwcGVkT25FcnJvcil9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgZy0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgbmFtZT1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlVzZXJuYW1lXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJVc2VybmFtZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiUGFzc3dvcmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS0xXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc2Vjb25kYXJ5IG5hdmJhci1idG4gZC1pbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgbmFtZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBMb2dpblxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkxvZ2luRm9ybUlucHV0cy5wcm9wVHlwZXMgPSB7XG4gIHRoZW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93TWVzc2FnZXM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dMb2FkaW5nSW5mbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmNvbnN0IExvZ2luRm9ybU1lc3NhZ2UgPSAoeyBtZXNzYWdlLCBtZXNzYWdlVHlwZSwgc2hvd0lucHV0cyB9KSA9PiB7XG4gIG1lc3NhZ2UgPSBtZXNzYWdlID8gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLWF1dG9cIj5cbiAgICAgIDxNZXNzYWdlIHR5cGU9e21lc3NhZ2VUeXBlfT57bWVzc2FnZX08L01lc3NhZ2U+XG4gICAgPC9kaXY+XG4gICkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImFsaWduLWl0ZW1zLWNlbnRlciByb3cgZy0zXCI+XG4gICAgICB7bWVzc2FnZX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTFcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc2Vjb25kYXJ5IG5hdmJhci1idG4gZC1pbmxpbmUtYmxvY2tcIlxuICAgICAgICAgIG5hbWU9XCJzaG93XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXtzaG93SW5wdXRzfVxuICAgICAgICA+XG4gICAgICAgICAgTG9naW5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkxvZ2luRm9ybU1lc3NhZ2UucHJvcFR5cGVzID0ge1xuICBtZXNzYWdlOiBQcm9wVHlwZXMubm9kZSxcbiAgbWVzc2FnZVR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG4gIHNob3dJbnB1dHM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgY29uc3QgTG9naW5Gb3JtID0gKHsgdGhlbiwgb25FcnJvciwgbWVzc2FnZSwgbWVzc2FnZVR5cGUgfSkgPT4ge1xuICBjb25zdCBbc2hvd0lucHV0cywgc2V0U2hvd0lucHV0c10gPSB1c2VTdGF0ZShcIm1lc3NhZ2VzXCIpO1xuXG4gIGlmIChzaG93SW5wdXRzID09PSBcImlucHV0c1wiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMb2dpbkZvcm1JbnB1dHNcbiAgICAgICAgdGhlbj17dGhlbn1cbiAgICAgICAgb25FcnJvcj17b25FcnJvcn1cbiAgICAgICAgc2hvd01lc3NhZ2VzPXsoKSA9PiBzZXRTaG93SW5wdXRzKFwibWVzc2FnZXNcIil9XG4gICAgICAgIHNob3dMb2FkaW5nSW5mbz17KCkgPT4gc2V0U2hvd0lucHV0cyhcImxvYWRpbmdcIil9XG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSBpZiAoc2hvd0lucHV0cyA9PT0gXCJsb2FkaW5nXCIpIHtcbiAgICByZXR1cm4gPExvYWRpbmdJbmZvIHNpemU9XCJzbVwiIC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TG9naW5Gb3JtTWVzc2FnZVxuICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgIG1lc3NhZ2VUeXBlPXttZXNzYWdlVHlwZX1cbiAgICAgIHNob3dJbnB1dHM9eygpID0+IHNldFNob3dJbnB1dHMoXCJpbnB1dHNcIil9XG4gICAgLz5cbiAgKTtcbn07XG5cbkxvZ2luRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRoZW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICBtZXNzYWdlOiBQcm9wVHlwZXMubm9kZSxcbiAgbWVzc2FnZVR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG59O1xuIiwidmFyIHRvQXJyYXkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLCBbXS5zbGljZSk7XG4vKipcbiAqIFJ1bnMgYHF1ZXJ5U2VsZWN0b3JBbGxgIG9uIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBzZWxlY3RvciB0aGUgc2VsZWN0b3JcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxc2EoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHRvQXJyYXkoZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG59IiwiaW1wb3J0IHsgdXNlUmVkdWNlciB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgYSBjb21wb25lbnQgdXBkYXRlLiB0aGUgaG9vayBlcXVpdmFsZW50IHRvXG4gKiBgdGhpcy5mb3JjZVVwZGF0ZSgpYCBpbiBhIGNsYXNzIGNvbXBvbmVudC4gSW4gbW9zdCBjYXNlcyB1c2luZyBhIHN0YXRlIHZhbHVlIGRpcmVjdGx5XG4gKiBpcyBwcmVmZXJhYmxlIGJ1dCBtYXkgYmUgcmVxdWlyZWQgaW4gc29tZSBhZHZhbmNlZCB1c2FnZXMgb2YgcmVmcyBmb3IgaW50ZXJvcCBvclxuICogd2hlbiBkaXJlY3QgRE9NIG1hbmlwdWxhdGlvbiBpcyByZXF1aXJlZC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VGb3JjZVVwZGF0ZSgpO1xuICpcbiAqIGNvbnN0IHVwZGF0ZU9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gKiAgZm9yY2VVcGRhdGUoKVxuICogfSwgW2ZvcmNlVXBkYXRlXSlcbiAqXG4gKiByZXR1cm4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17dXBkYXRlT25DbGlja30+SGkgdGhlcmU8L2J1dHRvbj5cbiAqIGBgYFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUZvcmNlVXBkYXRlKCkge1xuICAvLyBUaGUgdG9nZ2xpbmcgc3RhdGUgdmFsdWUgaXMgZGVzaWduZWQgdG8gZGVmZWF0IFJlYWN0IG9wdGltaXphdGlvbnMgZm9yIHNraXBwaW5nXG4gIC8vIHVwZGF0ZXMgd2hlbiB0aGV5IGFyZSBzdHJpY3RpbmcgZXF1YWwgdG8gdGhlIGxhc3Qgc3RhdGUgdmFsdWVcbiAgdmFyIF91c2VSZWR1Y2VyID0gdXNlUmVkdWNlcihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICByZXR1cm4gIXN0YXRlO1xuICB9LCBmYWxzZSksXG4gICAgICBkaXNwYXRjaCA9IF91c2VSZWR1Y2VyWzFdO1xuXG4gIHJldHVybiBkaXNwYXRjaDtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBEcm9wZG93bkNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duQ29udGV4dDsiLCJ2YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZmluZChpdGVyLCB0YXIsIGtleSkge1xuXHRmb3IgKGtleSBvZiBpdGVyLmtleXMoKSkge1xuXHRcdGlmIChkZXF1YWwoa2V5LCB0YXIpKSByZXR1cm4ga2V5O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXF1YWwoZm9vLCBiYXIpIHtcblx0dmFyIGN0b3IsIGxlbiwgdG1wO1xuXHRpZiAoZm9vID09PSBiYXIpIHJldHVybiB0cnVlO1xuXG5cdGlmIChmb28gJiYgYmFyICYmIChjdG9yPWZvby5jb25zdHJ1Y3RvcikgPT09IGJhci5jb25zdHJ1Y3Rvcikge1xuXHRcdGlmIChjdG9yID09PSBEYXRlKSByZXR1cm4gZm9vLmdldFRpbWUoKSA9PT0gYmFyLmdldFRpbWUoKTtcblx0XHRpZiAoY3RvciA9PT0gUmVnRXhwKSByZXR1cm4gZm9vLnRvU3RyaW5nKCkgPT09IGJhci50b1N0cmluZygpO1xuXG5cdFx0aWYgKGN0b3IgPT09IEFycmF5KSB7XG5cdFx0XHRpZiAoKGxlbj1mb28ubGVuZ3RoKSA9PT0gYmFyLmxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZGVxdWFsKGZvb1tsZW5dLCBiYXJbbGVuXSkpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlbiA9PT0gLTE7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IFNldCkge1xuXHRcdFx0aWYgKGZvby5zaXplICE9PSBiYXIuc2l6ZSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxlbiBvZiBmb28pIHtcblx0XHRcdFx0dG1wID0gbGVuO1xuXHRcdFx0XHRpZiAodG1wICYmIHR5cGVvZiB0bXAgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0dG1wID0gZmluZChiYXIsIHRtcCk7XG5cdFx0XHRcdFx0aWYgKCF0bXApIHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWJhci5oYXModG1wKSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IE1hcCkge1xuXHRcdFx0aWYgKGZvby5zaXplICE9PSBiYXIuc2l6ZSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxlbiBvZiBmb28pIHtcblx0XHRcdFx0dG1wID0gbGVuWzBdO1xuXHRcdFx0XHRpZiAodG1wICYmIHR5cGVvZiB0bXAgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0dG1wID0gZmluZChiYXIsIHRtcCk7XG5cdFx0XHRcdFx0aWYgKCF0bXApIHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWRlcXVhbChsZW5bMV0sIGJhci5nZXQodG1wKSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuXHRcdFx0Zm9vID0gbmV3IFVpbnQ4QXJyYXkoZm9vKTtcblx0XHRcdGJhciA9IG5ldyBVaW50OEFycmF5KGJhcik7XG5cdFx0fSBlbHNlIGlmIChjdG9yID09PSBEYXRhVmlldykge1xuXHRcdFx0aWYgKChsZW49Zm9vLmJ5dGVMZW5ndGgpID09PSBiYXIuYnl0ZUxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZm9vLmdldEludDgobGVuKSA9PT0gYmFyLmdldEludDgobGVuKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGZvbykpIHtcblx0XHRcdGlmICgobGVuPWZvby5ieXRlTGVuZ3RoKSA9PT0gYmFyLmJ5dGVMZW5ndGgpIHtcblx0XHRcdFx0d2hpbGUgKGxlbi0tICYmIGZvb1tsZW5dID09PSBiYXJbbGVuXSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoIWN0b3IgfHwgdHlwZW9mIGZvbyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdGxlbiA9IDA7XG5cdFx0XHRmb3IgKGN0b3IgaW4gZm9vKSB7XG5cdFx0XHRcdGlmIChoYXMuY2FsbChmb28sIGN0b3IpICYmICsrbGVuICYmICFoYXMuY2FsbChiYXIsIGN0b3IpKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlmICghKGN0b3IgaW4gYmFyKSB8fCAhZGVxdWFsKGZvb1tjdG9yXSwgYmFyW2N0b3JdKSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKGJhcikubGVuZ3RoID09PSBsZW47XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZvbyAhPT0gZm9vICYmIGJhciAhPT0gYmFyO1xufVxuIiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLmJyYW5kICsgXCIvXCIgKyBpdGVtLnZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG5cbiAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG59IiwiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cblxuICB2YXIgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaW5jbHVkZVNjYWxlICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBzY2FsZVggPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCA/IHJvdW5kKGNsaWVudFJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxIDogMTtcbiAgICBzY2FsZVkgPSBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgPyByb3VuZChjbGllbnRSZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxIDogMTtcbiAgfVxuXG4gIHZhciBfcmVmID0gaXNFbGVtZW50KGVsZW1lbnQpID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93LFxuICAgICAgdmlzdWFsVmlld3BvcnQgPSBfcmVmLnZpc3VhbFZpZXdwb3J0O1xuXG4gIHZhciBhZGRWaXN1YWxPZmZzZXRzID0gIWlzTGF5b3V0Vmlld3BvcnQoKSAmJiBpc0ZpeGVkU3RyYXRlZ3k7XG4gIHZhciB4ID0gKGNsaWVudFJlY3QubGVmdCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCA6IDApKSAvIHNjYWxlWDtcbiAgdmFyIHkgPSAoY2xpZW50UmVjdC50b3AgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcCA6IDApKSAvIHNjYWxlWTtcbiAgdmFyIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlWDtcbiAgdmFyIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGVZO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiOyAvLyBSZXR1cm5zIHRoZSBsYXlvdXQgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuIExheW91dFxuLy8gbWVhbnMgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRMYXlvdXRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7IC8vIFVzZSB0aGUgY2xpZW50UmVjdCBzaXplcyBpZiBpdCdzIG5vdCBiZWVuIHRyYW5zZm9ybWVkLlxuICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEyMjNcblxuICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3Qud2lkdGggLSB3aWR0aCkgPD0gMSkge1xuICAgIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aDtcbiAgfVxuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LmhlaWdodCAtIGhlaWdodCkgPD0gMSkge1xuICAgIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBlbGVtZW50Lm9mZnNldExlZnQsXG4gICAgeTogZWxlbWVudC5vZmZzZXRUb3AsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59IiwiaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICB2YXIgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSAmJiBjaGlsZC5nZXRSb290Tm9kZSgpOyAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG5cbiAgaWYgKHBhcmVudC5jb250YWlucyhjaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBlbHNlIGlmIChyb290Tm9kZSAmJiBpc1NoYWRvd1Jvb3Qocm9vdE5vZGUpKSB7XG4gICAgICB2YXIgbmV4dCA9IGNoaWxkO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuZXh0ICYmIHBhcmVudC5pc1NhbWVOb2RlKG5leHQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddOiBuZWVkIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcy4uLlxuXG5cbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50Tm9kZSB8fCBuZXh0Lmhvc3Q7XG4gICAgICB9IHdoaWxlIChuZXh0KTtcbiAgICB9IC8vIEdpdmUgdXAsIHRoZSByZXN1bHQgaXMgZmFsc2VcblxuXG4gIHJldHVybiBmYWxzZTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSB7XG4gIGlmIChnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gKC8vIHRoaXMgaXMgYSBxdWlja2VyIChidXQgbGVzcyB0eXBlIHNhZmUpIHdheSB0byBzYXZlIHF1aXRlIHNvbWUgYnl0ZXMgZnJvbSB0aGUgYnVuZGxlXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgIGVsZW1lbnQuYXNzaWduZWRTbG90IHx8IC8vIHN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlXG4gICAgZWxlbWVudC5wYXJlbnROb2RlIHx8ICggLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWRcbiAgICBpc1NoYWRvd1Jvb3QoZWxlbWVudCkgPyBlbGVtZW50Lmhvc3QgOiBudWxsKSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IEhUTUxFbGVtZW50IGlzIGEgTm9kZVxuICAgIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSAvLyBmYWxsYmFja1xuXG4gICk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGlzVGFibGVFbGVtZW50IGZyb20gXCIuL2lzVGFibGVFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSAvZmlyZWZveC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG4gIHZhciBpc0lFID0gL1RyaWRlbnQvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgaWYgKGlzU2hhZG93Um9vdChjdXJyZW50Tm9kZSkpIHtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhvc3Q7XG4gIH1cblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJpbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VQYWRkaW5nT2JqZWN0KHBhZGRpbmdPYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGdldEZyZXNoU2lkZU9iamVjdCgpLCBwYWRkaW5nT2JqZWN0KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYsIHdpbikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICAgIHkgPSBfcmVmLnk7XG4gIHZhciBkcHIgPSB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKHggKiBkcHIpIC8gZHByIHx8IDAsXG4gICAgeTogcm91bmQoeSAqIGRwcikgLyBkcHIgfHwgMFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9TdHlsZXMoX3JlZjIpIHtcbiAgdmFyIF9PYmplY3QkYXNzaWduMjtcblxuICB2YXIgcG9wcGVyID0gX3JlZjIucG9wcGVyLFxuICAgICAgcG9wcGVyUmVjdCA9IF9yZWYyLnBvcHBlclJlY3QsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgICB2YXJpYXRpb24gPSBfcmVmMi52YXJpYXRpb24sXG4gICAgICBvZmZzZXRzID0gX3JlZjIub2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uID0gX3JlZjIucG9zaXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfcmVmMi5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBhZGFwdGl2ZSA9IF9yZWYyLmFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzID0gX3JlZjIucm91bmRPZmZzZXRzLFxuICAgICAgaXNGaXhlZCA9IF9yZWYyLmlzRml4ZWQ7XG4gIHZhciBfb2Zmc2V0cyR4ID0gb2Zmc2V0cy54LFxuICAgICAgeCA9IF9vZmZzZXRzJHggPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR4LFxuICAgICAgX29mZnNldHMkeSA9IG9mZnNldHMueSxcbiAgICAgIHkgPSBfb2Zmc2V0cyR5ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeTtcblxuICB2YXIgX3JlZjMgPSB0eXBlb2Ygcm91bmRPZmZzZXRzID09PSAnZnVuY3Rpb24nID8gcm91bmRPZmZzZXRzKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWYzLng7XG4gIHkgPSBfcmVmMy55O1xuICB2YXIgaGFzWCA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3gnKTtcbiAgdmFyIGhhc1kgPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd5Jyk7XG4gIHZhciBzaWRlWCA9IGxlZnQ7XG4gIHZhciBzaWRlWSA9IHRvcDtcbiAgdmFyIHdpbiA9IHdpbmRvdztcblxuICBpZiAoYWRhcHRpdmUpIHtcbiAgICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KHBvcHBlcik7XG4gICAgdmFyIGhlaWdodFByb3AgPSAnY2xpZW50SGVpZ2h0JztcbiAgICB2YXIgd2lkdGhQcm9wID0gJ2NsaWVudFdpZHRoJztcblxuICAgIGlmIChvZmZzZXRQYXJlbnQgPT09IGdldFdpbmRvdyhwb3BwZXIpKSB7XG4gICAgICBvZmZzZXRQYXJlbnQgPSBnZXREb2N1bWVudEVsZW1lbnQocG9wcGVyKTtcblxuICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiAhPT0gJ3N0YXRpYycgJiYgcG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgICAgaGVpZ2h0UHJvcCA9ICdzY3JvbGxIZWlnaHQnO1xuICAgICAgICB3aWR0aFByb3AgPSAnc2Nyb2xsV2lkdGgnO1xuICAgICAgfVxuICAgIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FzdF06IGZvcmNlIHR5cGUgcmVmaW5lbWVudCwgd2UgY29tcGFyZSBvZmZzZXRQYXJlbnQgd2l0aCB3aW5kb3cgYWJvdmUsIGJ1dCBGbG93IGRvZXNuJ3QgZGV0ZWN0IGl0XG5cblxuICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudDtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09IHRvcCB8fCAocGxhY2VtZW50ID09PSBsZWZ0IHx8IHBsYWNlbWVudCA9PT0gcmlnaHQpICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWSA9IGJvdHRvbTtcbiAgICAgIHZhciBvZmZzZXRZID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbaGVpZ2h0UHJvcF07XG4gICAgICB5IC09IG9mZnNldFkgLSBwb3BwZXJSZWN0LmhlaWdodDtcbiAgICAgIHkgKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09IGxlZnQgfHwgKHBsYWNlbWVudCA9PT0gdG9wIHx8IHBsYWNlbWVudCA9PT0gYm90dG9tKSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVggPSByaWdodDtcbiAgICAgIHZhciBvZmZzZXRYID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQud2lkdGggOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFt3aWR0aFByb3BdO1xuICAgICAgeCAtPSBvZmZzZXRYIC0gcG9wcGVyUmVjdC53aWR0aDtcbiAgICAgIHggKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgfSwgYWRhcHRpdmUgJiYgdW5zZXRTaWRlcyk7XG5cbiAgdmFyIF9yZWY0ID0gcm91bmRPZmZzZXRzID09PSB0cnVlID8gcm91bmRPZmZzZXRzQnlEUFIoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9LCBnZXRXaW5kb3cocG9wcGVyKSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWY0Lng7XG4gIHkgPSBfcmVmNC55O1xuXG4gIGlmIChncHVBY2NlbGVyYXRpb24pIHtcbiAgICB2YXIgX09iamVjdCRhc3NpZ247XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24gPSB7fSwgX09iamVjdCRhc3NpZ25bc2lkZVldID0gaGFzWSA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbltzaWRlWF0gPSBoYXNYID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduLnRyYW5zZm9ybSA9ICh3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSA8PSAxID8gXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIiA6IFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgMClcIiwgX09iamVjdCRhc3NpZ24pKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbjIgPSB7fSwgX09iamVjdCRhc3NpZ24yW3NpZGVZXSA9IGhhc1kgPyB5ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMltzaWRlWF0gPSBoYXNYID8geCArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjIudHJhbnNmb3JtID0gJycsIF9PYmplY3QkYXNzaWduMikpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3R5bGVzKF9yZWY1KSB7XG4gIHZhciBzdGF0ZSA9IF9yZWY1LnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWY1Lm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPSBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGdwdUFjY2VsZXJhdCxcbiAgICAgIF9vcHRpb25zJGFkYXB0aXZlID0gb3B0aW9ucy5hZGFwdGl2ZSxcbiAgICAgIGFkYXB0aXZlID0gX29wdGlvbnMkYWRhcHRpdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhZGFwdGl2ZSxcbiAgICAgIF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9IG9wdGlvbnMucm91bmRPZmZzZXRzLFxuICAgICAgcm91bmRPZmZzZXRzID0gX29wdGlvbnMkcm91bmRPZmZzZXRzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcm91bmRPZmZzZXRzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICB2YXIgdHJhbnNpdGlvblByb3BlcnR5ID0gZ2V0Q29tcHV0ZWRTdHlsZShzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLnRyYW5zaXRpb25Qcm9wZXJ0eSB8fCAnJztcblxuICAgIGlmIChhZGFwdGl2ZSAmJiBbJ3RyYW5zZm9ybScsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9wZXJ0eS5pbmRleE9mKHByb3BlcnR5KSA+PSAwO1xuICAgIH0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IERldGVjdGVkIENTUyB0cmFuc2l0aW9ucyBvbiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZycsICdDU1MgcHJvcGVydGllczogXCJ0cmFuc2Zvcm1cIiwgXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIi4nLCAnXFxuXFxuJywgJ0Rpc2FibGUgdGhlIFwiY29tcHV0ZVN0eWxlc1wiIG1vZGlmaWVyXFwncyBgYWRhcHRpdmVgIG9wdGlvbiB0byBhbGxvdycsICdmb3Igc21vb3RoIHRyYW5zaXRpb25zLCBvciByZW1vdmUgdGhlc2UgcHJvcGVydGllcyBmcm9tIHRoZSBDU1MnLCAndHJhbnNpdGlvbiBkZWNsYXJhdGlvbiBvbiB0aGUgcG9wcGVyIGVsZW1lbnQgaWYgb25seSB0cmFuc2l0aW9uaW5nJywgJ29wYWNpdHkgb3IgYmFja2dyb3VuZC1jb2xvciBmb3IgZXhhbXBsZS4nLCAnXFxuXFxuJywgJ1dlIHJlY29tbWVuZCB1c2luZyB0aGUgcG9wcGVyIGVsZW1lbnQgYXMgYSB3cmFwcGVyIGFyb3VuZCBhbiBpbm5lcicsICdlbGVtZW50IHRoYXQgY2FuIGhhdmUgYW55IENTUyBwcm9wZXJ0eSB0cmFuc2l0aW9uZWQgZm9yIGFuaW1hdGlvbnMuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0ge1xuICAgIHBsYWNlbWVudDogZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHZhcmlhdGlvbjogZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCksXG4gICAgcG9wcGVyOiBzdGF0ZS5lbGVtZW50cy5wb3BwZXIsXG4gICAgcG9wcGVyUmVjdDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZ3B1QWNjZWxlcmF0aW9uLFxuICAgIGlzRml4ZWQ6IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCdcbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjb21wdXRlU3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gIGZuOiBjb21wdXRlU3R5bGVzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0LFxuICBkYXRhOiB7fVxufTsiLCJ2YXIgaGFzaCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJ2YXIgaGFzaCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbChub2RlKSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3cobm9kZSk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuICB2YXIgc2Nyb2xsVG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59IiwiaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBGaXJlZm94IHdhbnRzIHVzIHRvIGNoZWNrIGAteGAgYW5kIGAteWAgdmFyaWF0aW9ucyBhcyB3ZWxsXG4gIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93LFxuICAgICAgb3ZlcmZsb3dYID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dYLFxuICAgICAgb3ZlcmZsb3dZID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dZO1xuXG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpO1xufSIsImltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KG5vZGUpIHtcbiAgaWYgKFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUobm9kZSkpID49IDApIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG5cbiAgaWYgKGlzSFRNTEVsZW1lbnQobm9kZSkgJiYgaXNTY3JvbGxQYXJlbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBnZXRTY3JvbGxQYXJlbnQoZ2V0UGFyZW50Tm9kZShub2RlKSk7XG59IiwiaW1wb3J0IGdldFNjcm9sbFBhcmVudCBmcm9tIFwiLi9nZXRTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbi8qXG5naXZlbiBhIERPTSBlbGVtZW50LCByZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHNjcm9sbCBwYXJlbnRzLCB1cCB0aGUgbGlzdCBvZiBhbmNlc29yc1xudW50aWwgd2UgZ2V0IHRvIHRoZSB0b3Agd2luZG93IG9iamVjdC4gVGhpcyBsaXN0IGlzIHdoYXQgd2UgYXR0YWNoIHNjcm9sbCBsaXN0ZW5lcnNcbnRvLCBiZWNhdXNlIGlmIGFueSBvZiB0aGVzZSBwYXJlbnQgZWxlbWVudHMgc2Nyb2xsLCB3ZSdsbCBuZWVkIHRvIHJlLWNhbGN1bGF0ZSB0aGVcbnJlZmVyZW5jZSBlbGVtZW50J3MgcG9zaXRpb24uXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaXN0U2Nyb2xsUGFyZW50cyhlbGVtZW50LCBsaXN0KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuXG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCk7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQgPT09ICgoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHkpO1xuICB2YXIgd2luID0gZ2V0V2luZG93KHNjcm9sbFBhcmVudCk7XG4gIHZhciB0YXJnZXQgPSBpc0JvZHkgPyBbd2luXS5jb25jYXQod2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc1Njcm9sbFBhcmVudChzY3JvbGxQYXJlbnQpID8gc2Nyb2xsUGFyZW50IDogW10pIDogc2Nyb2xsUGFyZW50O1xuICB2YXIgdXBkYXRlZExpc3QgPSBsaXN0LmNvbmNhdCh0YXJnZXQpO1xuICByZXR1cm4gaXNCb2R5ID8gdXBkYXRlZExpc3QgOiAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogaXNCb2R5IHRlbGxzIHVzIHRhcmdldCB3aWxsIGJlIGFuIEhUTUxFbGVtZW50IGhlcmVcbiAgdXBkYXRlZExpc3QuY29uY2F0KGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUodGFyZ2V0KSkpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGZhbHNlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkge1xuICByZXR1cm4gY2xpcHBpbmdQYXJlbnQgPT09IHZpZXdwb3J0ID8gcmVjdFRvQ2xpZW50UmVjdChnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSkge1xuICB2YXIgbWFpbkNsaXBwaW5nUGFyZW50cyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdQYXJlbnRzJyA/IGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBbXS5jb25jYXQobWFpbkNsaXBwaW5nUGFyZW50cywgW3Jvb3RCb3VuZGFyeV0pO1xuICB2YXIgZmlyc3RDbGlwcGluZ1BhcmVudCA9IGNsaXBwaW5nUGFyZW50c1swXTtcbiAgdmFyIGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nUGFyZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjY1JlY3QsIGNsaXBwaW5nUGFyZW50KSB7XG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgc3RhcnQsIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZU9mZnNldHMoX3JlZikge1xuICB2YXIgcmVmZXJlbmNlID0gX3JlZi5yZWZlcmVuY2UsXG4gICAgICBlbGVtZW50ID0gX3JlZi5lbGVtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50ID8gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIHZhcmlhdGlvbiA9IHBsYWNlbWVudCA/IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBlbGVtZW50LndpZHRoIC8gMjtcbiAgdmFyIGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZWxlbWVudC5oZWlnaHQgLyAyO1xuICB2YXIgb2Zmc2V0cztcblxuICBzd2l0Y2ggKGJhc2VQbGFjZW1lbnQpIHtcbiAgICBjYXNlIHRvcDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZWxlbWVudC5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgYm90dG9tOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIHJpZ2h0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgbGVmdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZWxlbWVudC53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuXG4gIHZhciBtYWluQXhpcyA9IGJhc2VQbGFjZW1lbnQgPyBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCkgOiBudWxsO1xuXG4gIGlmIChtYWluQXhpcyAhPSBudWxsKSB7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICBzd2l0Y2ggKHZhcmlhdGlvbikge1xuICAgICAgY2FzZSBzdGFydDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSAtIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgZW5kOlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdICsgKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0Q2xpcHBpbmdSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4vY29tcHV0ZU9mZnNldHMuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IGNsaXBwaW5nUGFyZW50cywgcmVmZXJlbmNlLCBwb3BwZXIsIGJvdHRvbSwgdG9wLCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4vbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuL2V4cGFuZFRvSGFzaE1hcC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgX29wdGlvbnMkcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyBzdGF0ZS5wbGFjZW1lbnQgOiBfb3B0aW9ucyRwbGFjZW1lbnQsXG4gICAgICBfb3B0aW9ucyRzdHJhdGVneSA9IF9vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgc3RyYXRlZ3kgPSBfb3B0aW9ucyRzdHJhdGVneSA9PT0gdm9pZCAwID8gc3RhdGUuc3RyYXRlZ3kgOiBfb3B0aW9ucyRzdHJhdGVneSxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSk7XG4gIHZhciByZWZlcmVuY2VDbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZSk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlQ2xpZW50UmVjdCxcbiAgICBlbGVtZW50OiBwb3BwZXJSZWN0LFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pO1xuICB2YXIgcG9wcGVyQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyUmVjdCwgcG9wcGVyT2Zmc2V0cykpO1xuICB2YXIgZWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcG9wcGVyQ2xpZW50UmVjdCA6IHJlZmVyZW5jZUNsaWVudFJlY3Q7IC8vIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIHJlY3RcbiAgLy8gMCBvciBuZWdhdGl2ZSA9IHdpdGhpbiB0aGUgY2xpcHBpbmcgcmVjdFxuXG4gIHZhciBvdmVyZmxvd09mZnNldHMgPSB7XG4gICAgdG9wOiBjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3AsXG4gICAgYm90dG9tOiBlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20sXG4gICAgbGVmdDogY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0LFxuICAgIHJpZ2h0OiBlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHRcbiAgfTtcbiAgdmFyIG9mZnNldERhdGEgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldDsgLy8gT2Zmc2V0cyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBwb3BwZXIgZWxlbWVudFxuXG4gIGlmIChlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyICYmIG9mZnNldERhdGEpIHtcbiAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0RGF0YVtwbGFjZW1lbnRdO1xuICAgIE9iamVjdC5rZXlzKG92ZXJmbG93T2Zmc2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgbXVsdGlwbHkgPSBbcmlnaHQsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAxIDogLTE7XG4gICAgICB2YXIgYXhpcyA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAneScgOiAneCc7XG4gICAgICBvdmVyZmxvd09mZnNldHNba2V5XSArPSBvZmZzZXRbYXhpc10gKiBtdWx0aXBseTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvdmVyZmxvd09mZnNldHM7XG59IiwiaW1wb3J0IGdldE9wcG9zaXRlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBjb21wdXRlQXV0b1BsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IGJvdHRvbSwgdG9wLCBzdGFydCwgcmlnaHQsIGxlZnQsIGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmZ1bmN0aW9uIGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBpZiAoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cblxuZnVuY3Rpb24gZmxpcChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyA9IG9wdGlvbnMuZmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZmxpcFZhcmlhdGlvID0gb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMkZmxpcFZhcmlhdGlvID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZmxpcFZhcmlhdGlvLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHM7XG4gIHZhciBwcmVmZXJyZWRQbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSBiYXNlUGxhY2VtZW50ID09PSBwcmVmZXJyZWRQbGFjZW1lbnQ7XG4gIHZhciBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcFZhcmlhdGlvbnMgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwcmVmZXJyZWRQbGFjZW1lbnQpKTtcbiAgdmFyIHBsYWNlbWVudHMgPSBbcHJlZmVycmVkUGxhY2VtZW50XS5jb25jYXQoZmFsbGJhY2tQbGFjZW1lbnRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvID8gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnM6IGZsaXBWYXJpYXRpb25zLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzOiBhbGxvd2VkQXV0b1BsYWNlbWVudHNcbiAgICB9KSA6IHBsYWNlbWVudCk7XG4gIH0sIFtdKTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgY2hlY2tzTWFwID0gbmV3IE1hcCgpO1xuICB2YXIgbWFrZUZhbGxiYWNrQ2hlY2tzID0gdHJ1ZTtcbiAgdmFyIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHNbMF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBsYWNlbWVudCA9IHBsYWNlbWVudHNbaV07XG5cbiAgICB2YXIgX2Jhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG5cbiAgICB2YXIgaXNTdGFydFZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSBzdGFydDtcbiAgICB2YXIgaXNWZXJ0aWNhbCA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihfYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KTtcbiAgICB2YXIgbWFpblZhcmlhdGlvblNpZGUgPSBpc1ZlcnRpY2FsID8gaXNTdGFydFZhcmlhdGlvbiA/IHJpZ2h0IDogbGVmdCA6IGlzU3RhcnRWYXJpYXRpb24gPyBib3R0b20gOiB0b3A7XG5cbiAgICBpZiAocmVmZXJlbmNlUmVjdFtsZW5dID4gcG9wcGVyUmVjdFtsZW5dKSB7XG4gICAgICBtYWluVmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB9XG5cbiAgICB2YXIgYWx0VmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB2YXIgY2hlY2tzID0gW107XG5cbiAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbX2Jhc2VQbGFjZW1lbnRdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W21haW5WYXJpYXRpb25TaWRlXSA8PSAwLCBvdmVyZmxvd1thbHRWYXJpYXRpb25TaWRlXSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tzLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgcmV0dXJuIGNoZWNrO1xuICAgIH0pKSB7XG4gICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICBtYWtlRmFsbGJhY2tDaGVja3MgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNoZWNrc01hcC5zZXQocGxhY2VtZW50LCBjaGVja3MpO1xuICB9XG5cbiAgaWYgKG1ha2VGYWxsYmFja0NoZWNrcykge1xuICAgIC8vIGAyYCBtYXkgYmUgZGVzaXJlZCBpbiBzb21lIGNhc2VzIOKAkyByZXNlYXJjaCBsYXRlclxuICAgIHZhciBudW1iZXJPZkNoZWNrcyA9IGZsaXBWYXJpYXRpb25zID8gMyA6IDE7XG5cbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaSkge1xuICAgICAgdmFyIGZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzLmZpbmQoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgICAgICB2YXIgY2hlY2tzID0gY2hlY2tzTWFwLmdldChwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChjaGVja3MpIHtcbiAgICAgICAgICByZXR1cm4gY2hlY2tzLnNsaWNlKDAsIF9pKS5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVjaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IGZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pID0gbnVtYmVyT2ZDaGVja3M7IF9pID4gMDsgX2ktLSkge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcChfaSk7XG5cbiAgICAgIGlmIChfcmV0ID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5wbGFjZW1lbnQgIT09IGZpcnN0Rml0dGluZ1BsYWNlbWVudCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXAgPSB0cnVlO1xuICAgIHN0YXRlLnBsYWNlbWVudCA9IGZpcnN0Rml0dGluZ1BsYWNlbWVudDtcbiAgICBzdGF0ZS5yZXNldCA9IHRydWU7XG4gIH1cbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2ZsaXAnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogZmxpcCxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXSxcbiAgZGF0YToge1xuICAgIF9za2lwOiBmYWxzZVxuICB9XG59OyIsImltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyB2YXJpYXRpb25QbGFjZW1lbnRzLCBiYXNlUGxhY2VtZW50cywgcGxhY2VtZW50cyBhcyBhbGxQbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gYWxsUGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhbGxvd2VkQXV0b1BsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpID49IDA7XG4gIH0pO1xuXG4gIGlmIChhbGxvd2VkUGxhY2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBUaGUgYGFsbG93ZWRBdXRvUGxhY2VtZW50c2Agb3B0aW9uIGRpZCBub3QgYWxsb3cgYW55JywgJ3BsYWNlbWVudHMuIEVuc3VyZSB0aGUgYHBsYWNlbWVudGAgb3B0aW9uIG1hdGNoZXMgdGhlIHZhcmlhdGlvbicsICdvZiB0aGUgYWxsb3dlZCBwbGFjZW1lbnRzLicsICdGb3IgZXhhbXBsZSwgXCJhdXRvXCIgY2Fubm90IGJlIHVzZWQgdG8gYWxsb3cgXCJib3R0b20tc3RhcnRcIi4nLCAnVXNlIFwiYXV0by1zdGFydFwiIGluc3RlYWQuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufSIsImltcG9ydCB7IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCwgcHJldmVudGVkT2Zmc2V0cykge1xuICBpZiAocHJldmVudGVkT2Zmc2V0cyA9PT0gdm9pZCAwKSB7XG4gICAgcHJldmVudGVkT2Zmc2V0cyA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCAtIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoICsgcHJldmVudGVkT2Zmc2V0cy54LFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQgKyBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGggLSBwcmV2ZW50ZWRPZmZzZXRzLnhcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XS5zb21lKGZ1bmN0aW9uIChzaWRlKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93W3NpZGVdID49IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoaWRlKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHByZXZlbnRlZE9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnByZXZlbnRPdmVyZmxvdztcbiAgdmFyIHJlZmVyZW5jZU92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgfSk7XG4gIHZhciBwb3BwZXJBbHRPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgfSk7XG4gIHZhciByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhyZWZlcmVuY2VPdmVyZmxvdywgcmVmZXJlbmNlUmVjdCk7XG4gIHZhciBwb3BwZXJFc2NhcGVPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocG9wcGVyQWx0T3ZlcmZsb3csIHBvcHBlclJlY3QsIHByZXZlbnRlZE9mZnNldHMpO1xuICB2YXIgaXNSZWZlcmVuY2VIaWRkZW4gPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzKTtcbiAgdmFyIGhhc1BvcHBlckVzY2FwZWQgPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocG9wcGVyRXNjYXBlT2Zmc2V0cyk7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSB7XG4gICAgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzOiByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMsXG4gICAgcG9wcGVyRXNjYXBlT2Zmc2V0czogcG9wcGVyRXNjYXBlT2Zmc2V0cyxcbiAgICBpc1JlZmVyZW5jZUhpZGRlbjogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgaGFzUG9wcGVyRXNjYXBlZDogaGFzUG9wcGVyRXNjYXBlZFxuICB9O1xuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4nOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICAnZGF0YS1wb3BwZXItZXNjYXBlZCc6IGhhc1BvcHBlckVzY2FwZWRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdoaWRlJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXSxcbiAgZm46IGhpZGVcbn07IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIHBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCByZWN0cywgb2Zmc2V0KSB7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICB2YXIgaW52ZXJ0RGlzdGFuY2UgPSBbbGVmdCwgdG9wXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyAtMSA6IDE7XG5cbiAgdmFyIF9yZWYgPSB0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gb2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSkpIDogb2Zmc2V0LFxuICAgICAgc2tpZGRpbmcgPSBfcmVmWzBdLFxuICAgICAgZGlzdGFuY2UgPSBfcmVmWzFdO1xuXG4gIHNraWRkaW5nID0gc2tpZGRpbmcgfHwgMDtcbiAgZGlzdGFuY2UgPSAoZGlzdGFuY2UgfHwgMCkgKiBpbnZlcnREaXN0YW5jZTtcbiAgcmV0dXJuIFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8ge1xuICAgIHg6IGRpc3RhbmNlLFxuICAgIHk6IHNraWRkaW5nXG4gIH0gOiB7XG4gICAgeDogc2tpZGRpbmcsXG4gICAgeTogZGlzdGFuY2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gb2Zmc2V0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZjIubmFtZTtcbiAgdmFyIF9vcHRpb25zJG9mZnNldCA9IG9wdGlvbnMub2Zmc2V0LFxuICAgICAgb2Zmc2V0ID0gX29wdGlvbnMkb2Zmc2V0ID09PSB2b2lkIDAgPyBbMCwgMF0gOiBfb3B0aW9ucyRvZmZzZXQ7XG4gIHZhciBkYXRhID0gcGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHN0YXRlLnJlY3RzLCBvZmZzZXQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgdmFyIF9kYXRhJHN0YXRlJHBsYWNlbWVudCA9IGRhdGFbc3RhdGUucGxhY2VtZW50XSxcbiAgICAgIHggPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueCxcbiAgICAgIHkgPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueCArPSB4O1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy55ICs9IHk7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ29mZnNldCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgZm46IG9mZnNldFxufTsiLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHsgd2l0aGluLCB3aXRoaW5NYXhDbGFtcCB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuLi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmltcG9ydCB7IG1pbiBhcyBtYXRoTWluLCBtYXggYXMgbWF0aE1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIF9vcHRpb25zJHRldGhlciA9IG9wdGlvbnMudGV0aGVyLFxuICAgICAgdGV0aGVyID0gX29wdGlvbnMkdGV0aGVyID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkdGV0aGVyLFxuICAgICAgX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID0gb3B0aW9ucy50ZXRoZXJPZmZzZXQsXG4gICAgICB0ZXRoZXJPZmZzZXQgPSBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQ7XG4gIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5XG4gIH0pO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gIXZhcmlhdGlvbjtcbiAgdmFyIG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgYWx0QXhpcyA9IGdldEFsdEF4aXMobWFpbkF4aXMpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgdGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gdGV0aGVyT2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogdGV0aGVyT2Zmc2V0O1xuICB2YXIgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldFZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogdGV0aGVyT2Zmc2V0VmFsdWUsXG4gICAgYWx0QXhpczogdGV0aGVyT2Zmc2V0VmFsdWVcbiAgfSA6IE9iamVjdC5hc3NpZ24oe1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGFsdEF4aXM6IDBcbiAgfSwgdGV0aGVyT2Zmc2V0VmFsdWUpO1xuICB2YXIgb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XSA6IG51bGw7XG4gIHZhciBkYXRhID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmICghcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDtcblxuICAgIHZhciBtYWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICAgIHZhciBhbHRTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIHZhciBvZmZzZXQgPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXTtcbiAgICB2YXIgbWluID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXggPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWF0aE1pbihtaW4sIHRldGhlck1pbikgOiBtaW4sIG9mZnNldCwgdGV0aGVyID8gbWF0aE1heChtYXgsIHRldGhlck1heCkgOiBtYXgpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWx0QXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXROb2RlU2Nyb2xsIGZyb20gXCIuL2dldE5vZGVTY3JvbGwuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50U2NhbGVkKGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gcm91bmQocmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDE7XG4gIHZhciBzY2FsZVkgPSByb3VuZChyZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxO1xuICByZXR1cm4gc2NhbGVYICE9PSAxIHx8IHNjYWxlWSAhPT0gMTtcbn0gLy8gUmV0dXJucyB0aGUgY29tcG9zaXRlIHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LlxuLy8gQ29tcG9zaXRlIG1lYW5zIGl0IHRha2VzIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zIGFzIHdlbGwgYXMgbGF5b3V0LlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXBvc2l0ZVJlY3QoZWxlbWVudE9yVmlydHVhbEVsZW1lbnQsIG9mZnNldFBhcmVudCwgaXNGaXhlZCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50SXNTY2FsZWQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNFbGVtZW50U2NhbGVkKG9mZnNldFBhcmVudCk7XG4gIHZhciBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudE9yVmlydHVhbEVsZW1lbnQsIG9mZnNldFBhcmVudElzU2NhbGVkLCBpc0ZpeGVkKTtcbiAgdmFyIHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICB2YXIgb2Zmc2V0cyA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEwNzhcbiAgICBpc1Njcm9sbFBhcmVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgb2Zmc2V0cyA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUpO1xuICAgICAgb2Zmc2V0cy54ICs9IG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ICs9IG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59IiwiaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEhUTUxFbGVtZW50U2Nyb2xsIGZyb20gXCIuL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlU2Nyb2xsKG5vZGUpIHtcbiAgaWYgKG5vZGUgPT09IGdldFdpbmRvdyhub2RlKSB8fCAhaXNIVE1MRWxlbWVudChub2RlKSkge1xuICAgIHJldHVybiBnZXRXaW5kb3dTY3JvbGwobm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldEhUTUxFbGVtZW50U2Nyb2xsKG5vZGUpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnRTY3JvbGwoZWxlbWVudCkge1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgYXJyb3cgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdyc7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMnO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMnO1xuaW1wb3J0IGZsaXAgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwJztcbmltcG9ydCBoaWRlIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZSc7XG5pbXBvcnQgb2Zmc2V0IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0JztcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cyc7XG5pbXBvcnQgcHJldmVudE92ZXJmbG93IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93JztcbmltcG9ydCB7IHBsYWNlbWVudHMgfSBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvZW51bXMnO1xuaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1iYXNlJztcblxuLy8gRm9yIHRoZSBjb21tb24gSlMgYnVpbGQgd2Ugd2lsbCB0dXJuIHRoaXMgZmlsZSBpbnRvIGEgYnVuZGxlIHdpdGggbm8gaW1wb3J0cy5cbi8vIFRoaXMgaXMgYi9jIHRoZSBQb3BwZXIgbGliIGlzIGFsbCBlc20gZmlsZXMsIGFuZCB3b3VsZCBicmVhayBpbiBhIGNvbW1vbiBqcyBvbmx5IGVudmlyb25tZW50XG5leHBvcnQgY29uc3QgY3JlYXRlUG9wcGVyID0gcG9wcGVyR2VuZXJhdG9yKHtcbiAgZGVmYXVsdE1vZGlmaWVyczogW2hpZGUsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGV2ZW50TGlzdGVuZXJzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3ddXG59KTtcbmV4cG9ydCB7IHBsYWNlbWVudHMgfTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWJvdW5jZShmbikge1xuICB2YXIgcGVuZGluZztcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwZW5kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHJlc29sdmUoZm4oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBlbmRpbmc7XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuLi91dGlscy9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuXG5mdW5jdGlvbiBwb3BwZXJPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIC8vIE9mZnNldHMgYXJlIHRoZSBhY3R1YWwgcG9zaXRpb24gdGhlIHBvcHBlciBuZWVkcyB0byBoYXZlIHRvIGJlXG4gIC8vIHByb3Blcmx5IHBvc2l0aW9uZWQgbmVhciBpdHMgcmVmZXJlbmNlIGVsZW1lbnRcbiAgLy8gVGhpcyBpcyB0aGUgbW9zdCBiYXNpYyBwbGFjZW1lbnQsIGFuZCB3aWxsIGJlIGFkanVzdGVkIGJ5XG4gIC8vIHRoZSBtb2RpZmllcnMgaW4gdGhlIG5leHQgc3RlcFxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogc3RhdGUucmVjdHMucmVmZXJlbmNlLFxuICAgIGVsZW1lbnQ6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3BvcHBlck9mZnNldHMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3JlYWQnLFxuICBmbjogcG9wcGVyT2Zmc2V0cyxcbiAgZGF0YToge31cbn07IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiZW5hYmxlZFwiLCBcInBsYWNlbWVudFwiLCBcInN0cmF0ZWd5XCIsIFwibW9kaWZpZXJzXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRlcXVhbCB9IGZyb20gJ2RlcXVhbCc7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBjcmVhdGVQb3BwZXIgfSBmcm9tICcuL3BvcHBlcic7XG5jb25zdCBkaXNhYmxlZEFwcGx5U3R5bGVzTW9kaWZpZXIgPSB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IGZhbHNlLFxuICBwaGFzZTogJ2FmdGVyV3JpdGUnLFxuICBmbjogKCkgPT4gdW5kZWZpbmVkXG59O1xuXG4vLyB1bnRpbCBkb2NqcyBzdXBwb3J0cyB0eXBlIGV4cG9ydHMuLi5cblxuY29uc3QgYXJpYURlc2NyaWJlZEJ5TW9kaWZpZXIgPSB7XG4gIG5hbWU6ICdhcmlhRGVzY3JpYmVkQnknLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2FmdGVyV3JpdGUnLFxuICBlZmZlY3Q6ICh7XG4gICAgc3RhdGVcbiAgfSkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIHBvcHBlclxuICAgIH0gPSBzdGF0ZS5lbGVtZW50cztcbiAgICBpZiAoJ3JlbW92ZUF0dHJpYnV0ZScgaW4gcmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSAocmVmZXJlbmNlLmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpIHx8ICcnKS5zcGxpdCgnLCcpLmZpbHRlcihpZCA9PiBpZC50cmltKCkgIT09IHBvcHBlci5pZCk7XG4gICAgICBpZiAoIWlkcy5sZW5ndGgpIHJlZmVyZW5jZS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtlbHNlIHJlZmVyZW5jZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMuam9pbignLCcpKTtcbiAgICB9XG4gIH0sXG4gIGZuOiAoe1xuICAgIHN0YXRlXG4gIH0pID0+IHtcbiAgICB2YXIgX3BvcHBlciRnZXRBdHRyaWJ1dGU7XG4gICAgY29uc3Qge1xuICAgICAgcG9wcGVyLFxuICAgICAgcmVmZXJlbmNlXG4gICAgfSA9IHN0YXRlLmVsZW1lbnRzO1xuICAgIGNvbnN0IHJvbGUgPSAoX3BvcHBlciRnZXRBdHRyaWJ1dGUgPSBwb3BwZXIuZ2V0QXR0cmlidXRlKCdyb2xlJykpID09IG51bGwgPyB2b2lkIDAgOiBfcG9wcGVyJGdldEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChwb3BwZXIuaWQgJiYgcm9sZSA9PT0gJ3Rvb2x0aXAnICYmICdzZXRBdHRyaWJ1dGUnIGluIHJlZmVyZW5jZSkge1xuICAgICAgY29uc3QgaWRzID0gcmVmZXJlbmNlLmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO1xuICAgICAgaWYgKGlkcyAmJiBpZHMuc3BsaXQoJywnKS5pbmRleE9mKHBvcHBlci5pZCkgIT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlZmVyZW5jZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMgPyBgJHtpZHN9LCR7cG9wcGVyLmlkfWAgOiBwb3BwZXIuaWQpO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IEVNUFRZX01PRElGSUVSUyA9IFtdO1xuLyoqXG4gKiBQb3NpdGlvbiBhbiBlbGVtZW50IHJlbGF0aXZlIHNvbWUgcmVmZXJlbmNlIGVsZW1lbnQgdXNpbmcgUG9wcGVyLmpzXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZUVsZW1lbnRcbiAqIEBwYXJhbSBwb3BwZXJFbGVtZW50XG4gKiBAcGFyYW0ge29iamVjdH0gICAgICBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdD19ICAgICBvcHRpb25zLm1vZGlmaWVycyBQb3BwZXIuanMgbW9kaWZpZXJzXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSAgICBvcHRpb25zLmVuYWJsZWQgdG9nZ2xlIHRoZSBwb3BwZXIgZnVuY3Rpb25hbGl0eSBvbi9vZmZcbiAqIEBwYXJhbSB7c3RyaW5nPX0gICAgIG9wdGlvbnMucGxhY2VtZW50IFRoZSBwb3BwZXIgZWxlbWVudCBwbGFjZW1lbnQgcmVsYXRpdmUgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50XG4gKiBAcGFyYW0ge3N0cmluZz19ICAgICBvcHRpb25zLnN0cmF0ZWd5IHRoZSBwb3NpdGlvbmluZyBzdHJhdGVneVxuICogQHBhcmFtIHtmdW5jdGlvbj19ICAgb3B0aW9ucy5vbkNyZWF0ZSBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIGNyZWF0ZWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb249fSAgIG9wdGlvbnMub25VcGRhdGUgY2FsbGVkIHdoZW4gdGhlIHBvcHBlciBpcyB1cGRhdGVkXG4gKlxuICogQHJldHVybnMge1VzZVBvcHBlclN0YXRlfSBUaGUgcG9wcGVyIHN0YXRlXG4gKi9cbmZ1bmN0aW9uIHVzZVBvcHBlcihyZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50LCBfcmVmID0ge30pIHtcbiAgbGV0IHtcbiAgICAgIGVuYWJsZWQgPSB0cnVlLFxuICAgICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgICBtb2RpZmllcnMgPSBFTVBUWV9NT0RJRklFUlNcbiAgICB9ID0gX3JlZixcbiAgICBjb25maWcgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBwcmV2TW9kaWZpZXJzID0gdXNlUmVmKG1vZGlmaWVycyk7XG4gIGNvbnN0IHBvcHBlckluc3RhbmNlUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB2YXIgX3BvcHBlckluc3RhbmNlUmVmJGN1O1xuICAgIChfcG9wcGVySW5zdGFuY2VSZWYkY3UgPSBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3BvcHBlckluc3RhbmNlUmVmJGN1LnVwZGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGZvcmNlVXBkYXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHZhciBfcG9wcGVySW5zdGFuY2VSZWYkY3UyO1xuICAgIChfcG9wcGVySW5zdGFuY2VSZWYkY3UyID0gcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wb3BwZXJJbnN0YW5jZVJlZiRjdTIuZm9yY2VVcGRhdGUoKTtcbiAgfSwgW10pO1xuICBjb25zdCBbcG9wcGVyU3RhdGUsIHNldFN0YXRlXSA9IHVzZVNhZmVTdGF0ZSh1c2VTdGF0ZSh7XG4gICAgcGxhY2VtZW50LFxuICAgIHVwZGF0ZSxcbiAgICBmb3JjZVVwZGF0ZSxcbiAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICBzdHlsZXM6IHtcbiAgICAgIHBvcHBlcjoge30sXG4gICAgICBhcnJvdzoge31cbiAgICB9XG4gIH0pKTtcbiAgY29uc3QgdXBkYXRlTW9kaWZpZXIgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgbmFtZTogJ3VwZGF0ZVN0YXRlTW9kaWZpZXInLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcGhhc2U6ICd3cml0ZScsXG4gICAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddLFxuICAgIGZuOiAoe1xuICAgICAgc3RhdGVcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBzdHlsZXMgPSB7fTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBzdHlsZXNbZWxlbWVudF0gPSBzdGF0ZS5zdHlsZXNbZWxlbWVudF07XG4gICAgICAgIGF0dHJpYnV0ZXNbZWxlbWVudF0gPSBzdGF0ZS5hdHRyaWJ1dGVzW2VsZW1lbnRdO1xuICAgICAgfSk7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXRlLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgIHVwZGF0ZSxcbiAgICAgICAgZm9yY2VVcGRhdGUsXG4gICAgICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbdXBkYXRlLCBmb3JjZVVwZGF0ZSwgc2V0U3RhdGVdKTtcbiAgY29uc3QgbmV4dE1vZGlmaWVycyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZGVxdWFsKHByZXZNb2RpZmllcnMuY3VycmVudCwgbW9kaWZpZXJzKSkge1xuICAgICAgcHJldk1vZGlmaWVycy5jdXJyZW50ID0gbW9kaWZpZXJzO1xuICAgIH1cbiAgICByZXR1cm4gcHJldk1vZGlmaWVycy5jdXJyZW50O1xuICB9LCBbbW9kaWZpZXJzXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50IHx8ICFlbmFibGVkKSByZXR1cm47XG4gICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudC5zZXRPcHRpb25zKHtcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbW9kaWZpZXJzOiBbLi4ubmV4dE1vZGlmaWVycywgdXBkYXRlTW9kaWZpZXIsIGRpc2FibGVkQXBwbHlTdHlsZXNNb2RpZmllcl1cbiAgICB9KTtcbiAgfSwgW3N0cmF0ZWd5LCBwbGFjZW1lbnQsIHVwZGF0ZU1vZGlmaWVyLCBlbmFibGVkLCBuZXh0TW9kaWZpZXJzXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlbmFibGVkIHx8IHJlZmVyZW5jZUVsZW1lbnQgPT0gbnVsbCB8fCBwb3BwZXJFbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgPSBjcmVhdGVQb3BwZXIocmVmZXJlbmNlRWxlbWVudCwgcG9wcGVyRWxlbWVudCwgT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnLCB7XG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1vZGlmaWVyczogWy4uLm5leHRNb2RpZmllcnMsIGFyaWFEZXNjcmliZWRCeU1vZGlmaWVyLCB1cGRhdGVNb2RpZmllcl1cbiAgICB9KSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudC5kZXN0cm95KCk7XG4gICAgICAgIHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHNldFN0YXRlKHMgPT4gT2JqZWN0LmFzc2lnbih7fSwgcywge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgIHN0eWxlczoge1xuICAgICAgICAgICAgcG9wcGVyOiB7fVxuICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgLy8gVGhpcyBpcyBvbmx5IHJ1biBvbmNlIHRvIF9jcmVhdGVfIHRoZSBwb3BwZXJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtlbmFibGVkLCByZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50XSk7XG4gIHJldHVybiBwb3BwZXJTdGF0ZTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZVBvcHBlcjsiLCJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNb3VudGVkIGZyb20gJy4vdXNlTW91bnRlZCc7XG5cbmZ1bmN0aW9uIHVzZVNhZmVTdGF0ZShzdGF0ZSkge1xuICB2YXIgaXNNb3VudGVkID0gdXNlTW91bnRlZCgpO1xuICByZXR1cm4gW3N0YXRlWzBdLCB1c2VDYWxsYmFjayhmdW5jdGlvbiAobmV4dFN0YXRlKSB7XG4gICAgaWYgKCFpc01vdW50ZWQoKSkgcmV0dXJuO1xuICAgIHJldHVybiBzdGF0ZVsxXShuZXh0U3RhdGUpO1xuICB9LCBbaXNNb3VudGVkLCBzdGF0ZVsxXV0pXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlU2FmZVN0YXRlOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UsIG5vLWNvbmQtYXNzaWduICovXG5cbi8qKlxuICogQ2hlY2tzIGlmIGFuIGVsZW1lbnQgY29udGFpbnMgYW5vdGhlciBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCBlbGVtZW50XG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudCB0byBjaGVja1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhjb250ZXh0LCBub2RlKSB7XG4gIC8vIEhUTUwgRE9NIGFuZCBTVkcgRE9NIG1heSBoYXZlIGRpZmZlcmVudCBzdXBwb3J0IGxldmVscyxcbiAgLy8gc28gd2UgbmVlZCB0byBjaGVjayBvbiBjb250ZXh0IGluc3RlYWQgb2YgYSBkb2N1bWVudCByb290IGVsZW1lbnQuXG4gIGlmIChjb250ZXh0LmNvbnRhaW5zKSByZXR1cm4gY29udGV4dC5jb250YWlucyhub2RlKTtcbiAgaWYgKGNvbnRleHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHJldHVybiBjb250ZXh0ID09PSBub2RlIHx8ICEhKGNvbnRleHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24obm9kZSkgJiAxNik7XG59IiwiaW1wb3J0IGNvbnRhaW5zIGZyb20gJ2RvbS1oZWxwZXJzL2NvbnRhaW5zJztcbmltcG9ydCBsaXN0ZW4gZnJvbSAnZG9tLWhlbHBlcnMvbGlzdGVuJztcbmltcG9ydCBvd25lckRvY3VtZW50IGZyb20gJ2RvbS1oZWxwZXJzL293bmVyRG9jdW1lbnQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgd2FybmluZyBmcm9tICd3YXJuaW5nJztcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbmZ1bmN0aW9uIGlzTGVmdENsaWNrRXZlbnQoZXZlbnQpIHtcbiAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gMDtcbn1cbmZ1bmN0aW9uIGlzTW9kaWZpZWRFdmVudChldmVudCkge1xuICByZXR1cm4gISEoZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSk7XG59XG5leHBvcnQgY29uc3QgZ2V0UmVmVGFyZ2V0ID0gcmVmID0+IHJlZiAmJiAoJ2N1cnJlbnQnIGluIHJlZiA/IHJlZi5jdXJyZW50IDogcmVmKTtcbmNvbnN0IEluaXRpYWxUcmlnZ2VyRXZlbnRzID0ge1xuICBjbGljazogJ21vdXNlZG93bicsXG4gIG1vdXNldXA6ICdtb3VzZWRvd24nLFxuICBwb2ludGVydXA6ICdwb2ludGVyZG93bidcbn07XG5cbi8qKlxuICogVGhlIGB1c2VDbGlja091dHNpZGVgIGhvb2sgcmVnaXN0ZXJzIHlvdXIgY2FsbGJhY2sgb24gdGhlIGRvY3VtZW50IHRoYXQgZmlyZXNcbiAqIHdoZW4gYSBwb2ludGVyIGV2ZW50IGlzIHJlZ2lzdGVyZWQgb3V0c2lkZSBvZiB0aGUgcHJvdmlkZWQgcmVmIG9yIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHtSZWY8SFRNTEVsZW1lbnQ+fCBIVE1MRWxlbWVudH0gcmVmICBUaGUgZWxlbWVudCBib3VuZGFyeVxuICogQHBhcmFtIHtmdW5jdGlvbn0gb25DbGlja091dHNpZGVcbiAqIEBwYXJhbSB7b2JqZWN0PX0gIG9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdGlvbnMuZGlzYWJsZWRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gIG9wdGlvbnMuY2xpY2tUcmlnZ2VyIFRoZSBET00gZXZlbnQgbmFtZSAoY2xpY2ssIG1vdXNlZG93biwgZXRjKSB0byBhdHRhY2ggbGlzdGVuZXJzIG9uXG4gKi9cbmZ1bmN0aW9uIHVzZUNsaWNrT3V0c2lkZShyZWYsIG9uQ2xpY2tPdXRzaWRlID0gbm9vcCwge1xuICBkaXNhYmxlZCxcbiAgY2xpY2tUcmlnZ2VyID0gJ2NsaWNrJ1xufSA9IHt9KSB7XG4gIGNvbnN0IHByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHdhaXRpbmdGb3JUcmlnZ2VyID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlTW91c2VDYXB0dXJlID0gdXNlQ2FsbGJhY2soZSA9PiB7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGdldFJlZlRhcmdldChyZWYpO1xuICAgIHdhcm5pbmcoISFjdXJyZW50VGFyZ2V0LCAnQ2xpY2tPdXRzaWRlIGNhcHR1cmVkIGEgY2xvc2UgZXZlbnQgYnV0IGRvZXMgbm90IGhhdmUgYSByZWYgdG8gY29tcGFyZSBpdCB0by4gJyArICd1c2VDbGlja091dHNpZGUoKSwgc2hvdWxkIGJlIHBhc3NlZCBhIHJlZiB0aGF0IHJlc29sdmVzIHRvIGEgRE9NIG5vZGUnKTtcbiAgICBwcmV2ZW50TW91c2VDbGlja091dHNpZGVSZWYuY3VycmVudCA9ICFjdXJyZW50VGFyZ2V0IHx8IGlzTW9kaWZpZWRFdmVudChlKSB8fCAhaXNMZWZ0Q2xpY2tFdmVudChlKSB8fCAhIWNvbnRhaW5zKGN1cnJlbnRUYXJnZXQsIGUudGFyZ2V0KSB8fCB3YWl0aW5nRm9yVHJpZ2dlci5jdXJyZW50O1xuICAgIHdhaXRpbmdGb3JUcmlnZ2VyLmN1cnJlbnQgPSBmYWxzZTtcbiAgfSwgW3JlZl0pO1xuICBjb25zdCBoYW5kbGVJbml0aWFsTW91c2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBnZXRSZWZUYXJnZXQocmVmKTtcbiAgICBpZiAoY3VycmVudFRhcmdldCAmJiBjb250YWlucyhjdXJyZW50VGFyZ2V0LCBlLnRhcmdldCkpIHtcbiAgICAgIHdhaXRpbmdGb3JUcmlnZ2VyLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZU1vdXNlID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoIXByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZi5jdXJyZW50KSB7XG4gICAgICBvbkNsaWNrT3V0c2lkZShlKTtcbiAgICB9XG4gIH0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCB8fCByZWYgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBkb2MgPSBvd25lckRvY3VtZW50KGdldFJlZlRhcmdldChyZWYpKTtcblxuICAgIC8vIFN0b3JlIHRoZSBjdXJyZW50IGV2ZW50IHRvIGF2b2lkIHRyaWdnZXJpbmcgaGFuZGxlcnMgaW1tZWRpYXRlbHlcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzIwMDc0XG4gICAgbGV0IGN1cnJlbnRFdmVudCA9IChkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93KS5ldmVudDtcbiAgICBsZXQgcmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciA9IG51bGw7XG4gICAgaWYgKEluaXRpYWxUcmlnZ2VyRXZlbnRzW2NsaWNrVHJpZ2dlcl0pIHtcbiAgICAgIHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIgPSBsaXN0ZW4oZG9jLCBJbml0aWFsVHJpZ2dlckV2ZW50c1tjbGlja1RyaWdnZXJdLCBoYW5kbGVJbml0aWFsTW91c2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIFVzZSBjYXB0dXJlIGZvciB0aGlzIGxpc3RlbmVyIHNvIGl0IGZpcmVzIGJlZm9yZSBSZWFjdCdzIGxpc3RlbmVyLCB0b1xuICAgIC8vIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgY29udGFpbnMoKSBjaGVjayBiZWxvdyBpZiB0aGUgdGFyZ2V0IERPTVxuICAgIC8vIGVsZW1lbnQgaXMgcmVtb3ZlZCBpbiB0aGUgUmVhY3QgbW91c2UgY2FsbGJhY2suXG4gICAgY29uc3QgcmVtb3ZlTW91c2VDYXB0dXJlTGlzdGVuZXIgPSBsaXN0ZW4oZG9jLCBjbGlja1RyaWdnZXIsIGhhbmRsZU1vdXNlQ2FwdHVyZSwgdHJ1ZSk7XG4gICAgY29uc3QgcmVtb3ZlTW91c2VMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIGNsaWNrVHJpZ2dlciwgZSA9PiB7XG4gICAgICAvLyBza2lwIGlmIHRoaXMgZXZlbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBydW5uaW5nIHdoZW4gd2UgYWRkZWQgdGhlIGhhbmRsZXJzXG4gICAgICBpZiAoZSA9PT0gY3VycmVudEV2ZW50KSB7XG4gICAgICAgIGN1cnJlbnRFdmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaGFuZGxlTW91c2UoZSk7XG4gICAgfSk7XG4gICAgbGV0IG1vYmlsZVNhZmFyaUhhY2tMaXN0ZW5lcnMgPSBbXTtcbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jLmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgbW9iaWxlU2FmYXJpSGFja0xpc3RlbmVycyA9IFtdLnNsaWNlLmNhbGwoZG9jLmJvZHkuY2hpbGRyZW4pLm1hcChlbCA9PiBsaXN0ZW4oZWwsICdtb3VzZW1vdmUnLCBub29wKSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByZW1vdmVJbml0aWFsVHJpZ2dlckxpc3RlbmVyID09IG51bGwgPyB2b2lkIDAgOiByZW1vdmVJbml0aWFsVHJpZ2dlckxpc3RlbmVyKCk7XG4gICAgICByZW1vdmVNb3VzZUNhcHR1cmVMaXN0ZW5lcigpO1xuICAgICAgcmVtb3ZlTW91c2VMaXN0ZW5lcigpO1xuICAgICAgbW9iaWxlU2FmYXJpSGFja0xpc3RlbmVycy5mb3JFYWNoKHJlbW92ZSA9PiByZW1vdmUoKSk7XG4gICAgfTtcbiAgfSwgW3JlZiwgZGlzYWJsZWQsIGNsaWNrVHJpZ2dlciwgaGFuZGxlTW91c2VDYXB0dXJlLCBoYW5kbGVJbml0aWFsTW91c2UsIGhhbmRsZU1vdXNlXSk7XG59XG5leHBvcnQgZGVmYXVsdCB1c2VDbGlja091dHNpZGU7IiwiZXhwb3J0IGZ1bmN0aW9uIHRvTW9kaWZpZXJNYXAobW9kaWZpZXJzKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXJzKSkge1xuICAgIHJldHVybiBtb2RpZmllcnMgfHwgcmVzdWx0O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICBtb2RpZmllcnMgPT0gbnVsbCA/IHZvaWQgMCA6IG1vZGlmaWVycy5mb3JFYWNoKG0gPT4ge1xuICAgIHJlc3VsdFttLm5hbWVdID0gbTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gdG9Nb2RpZmllckFycmF5KG1hcCA9IHt9KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1hcCkpIHJldHVybiBtYXA7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtYXApLm1hcChrID0+IHtcbiAgICBtYXBba10ubmFtZSA9IGs7XG4gICAgcmV0dXJuIG1hcFtrXTtcbiAgfSk7XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnKHtcbiAgZW5hYmxlZCxcbiAgZW5hYmxlRXZlbnRzLFxuICBwbGFjZW1lbnQsXG4gIGZsaXAsXG4gIG9mZnNldCxcbiAgZml4ZWQsXG4gIGNvbnRhaW5lclBhZGRpbmcsXG4gIGFycm93RWxlbWVudCxcbiAgcG9wcGVyQ29uZmlnID0ge31cbn0pIHtcbiAgdmFyIF9tb2RpZmllcnMkZXZlbnRMaXN0ZSwgX21vZGlmaWVycyRwcmV2ZW50T3ZlLCBfbW9kaWZpZXJzJHByZXZlbnRPdmUyLCBfbW9kaWZpZXJzJG9mZnNldCwgX21vZGlmaWVycyRhcnJvdztcbiAgY29uc3QgbW9kaWZpZXJzID0gdG9Nb2RpZmllck1hcChwb3BwZXJDb25maWcubW9kaWZpZXJzKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHBvcHBlckNvbmZpZywge1xuICAgIHBsYWNlbWVudCxcbiAgICBlbmFibGVkLFxuICAgIHN0cmF0ZWd5OiBmaXhlZCA/ICdmaXhlZCcgOiBwb3BwZXJDb25maWcuc3RyYXRlZ3ksXG4gICAgbW9kaWZpZXJzOiB0b01vZGlmaWVyQXJyYXkoT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXJzLCB7XG4gICAgICBldmVudExpc3RlbmVyczoge1xuICAgICAgICBlbmFibGVkOiBlbmFibGVFdmVudHMsXG4gICAgICAgIG9wdGlvbnM6IChfbW9kaWZpZXJzJGV2ZW50TGlzdGUgPSBtb2RpZmllcnMuZXZlbnRMaXN0ZW5lcnMpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJGV2ZW50TGlzdGUub3B0aW9uc1xuICAgICAgfSxcbiAgICAgIHByZXZlbnRPdmVyZmxvdzogT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdywge1xuICAgICAgICBvcHRpb25zOiBjb250YWluZXJQYWRkaW5nID8gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgcGFkZGluZzogY29udGFpbmVyUGFkZGluZ1xuICAgICAgICB9LCAoX21vZGlmaWVycyRwcmV2ZW50T3ZlID0gbW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkcHJldmVudE92ZS5vcHRpb25zKSA6IChfbW9kaWZpZXJzJHByZXZlbnRPdmUyID0gbW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkcHJldmVudE92ZTIub3B0aW9uc1xuICAgICAgfSksXG4gICAgICBvZmZzZXQ6IHtcbiAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgb2Zmc2V0XG4gICAgICAgIH0sIChfbW9kaWZpZXJzJG9mZnNldCA9IG1vZGlmaWVycy5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJG9mZnNldC5vcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGFycm93OiBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMuYXJyb3csIHtcbiAgICAgICAgZW5hYmxlZDogISFhcnJvd0VsZW1lbnQsXG4gICAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIChfbW9kaWZpZXJzJGFycm93ID0gbW9kaWZpZXJzLmFycm93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRhcnJvdy5vcHRpb25zLCB7XG4gICAgICAgICAgZWxlbWVudDogYXJyb3dFbGVtZW50XG4gICAgICAgIH0pXG4gICAgICB9KSxcbiAgICAgIGZsaXA6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBlbmFibGVkOiAhIWZsaXBcbiAgICAgIH0sIG1vZGlmaWVycy5mbGlwKVxuICAgIH0pKVxuICB9KTtcbn0iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDYWxsYmFja1JlZiBmcm9tICdAcmVzdGFydC9ob29rcy91c2VDYWxsYmFja1JlZic7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCB1c2VQb3BwZXIgZnJvbSAnLi91c2VQb3BwZXInO1xuaW1wb3J0IHVzZUNsaWNrT3V0c2lkZSBmcm9tICcuL3VzZUNsaWNrT3V0c2lkZSc7XG5pbXBvcnQgbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyBmcm9tICcuL21lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcnO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG4vKipcbiAqIEBtZW1iZXJPZiBEcm9wZG93blxuICogQHBhcmFtIHtvYmplY3R9ICBvcHRpb25zXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZmxpcCBBdXRvbWF0aWNhbGx5IGFkanVzdCB0aGUgbWVudSBgZHJvcGAgcG9zaXRpb24gYmFzZWQgb24gdmlld3BvcnQgZWRnZSBkZXRlY3Rpb25cbiAqIEBwYXJhbSB7W251bWJlciwgbnVtYmVyXX0gb3B0aW9ucy5vZmZzZXQgRGVmaW5lIGFuIG9mZnNldCBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBNZW51IGFuZCB0aGUgVG9nZ2xlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuc2hvdyBEaXNwbGF5IHRoZSBtZW51IG1hbnVhbGx5LCBpZ25vcmVkIGluIHRoZSBjb250ZXh0IG9mIGEgYERyb3Bkb3duYFxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnVzZVBvcHBlciBvcHQgaW4vb3V0IG9mIHVzaW5nIFBvcHBlckpTIHRvIHBvc2l0aW9uIG1lbnVzLiBXaGVuIGRpc2FibGVkIHlvdSBtdXN0IHBvc2l0aW9uIGl0IHlvdXJzZWxmLlxuICogQHBhcmFtIHtzdHJpbmd9ICBvcHRpb25zLnJvb3RDbG9zZUV2ZW50IFRoZSBwb2ludGVyIGV2ZW50IHRvIGxpc3RlbiBmb3Igd2hlbiBkZXRlcm1pbmluZyBcImNsaWNrcyBvdXRzaWRlXCIgdGhlIG1lbnUgZm9yIHRyaWdnZXJpbmcgYSBjbG9zZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgb3B0aW9ucy5wb3BwZXJDb25maWcgT3B0aW9ucyBwYXNzZWQgdG8gdGhlIFtgdXNlUG9wcGVyYF0oL2FwaS91c2VQb3BwZXIpIGhvb2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEcm9wZG93bk1lbnUob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGNvbnN0IFthcnJvd0VsZW1lbnQsIGF0dGFjaEFycm93UmVmXSA9IHVzZUNhbGxiYWNrUmVmKCk7XG4gIGNvbnN0IGhhc1Nob3duUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qge1xuICAgIGZsaXAsXG4gICAgb2Zmc2V0LFxuICAgIHJvb3RDbG9zZUV2ZW50LFxuICAgIGZpeGVkID0gZmFsc2UsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPdmVycmlkZSxcbiAgICBwb3BwZXJDb25maWcgPSB7fSxcbiAgICBlbmFibGVFdmVudExpc3RlbmVycyA9IHRydWUsXG4gICAgdXNlUG9wcGVyOiBzaG91bGRVc2VQb3BwZXIgPSAhIWNvbnRleHRcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNob3cgPSAoY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC5zaG93KSA9PSBudWxsID8gISFvcHRpb25zLnNob3cgOiBjb250ZXh0LnNob3c7XG4gIGlmIChzaG93ICYmICFoYXNTaG93blJlZi5jdXJyZW50KSB7XG4gICAgaGFzU2hvd25SZWYuY3VycmVudCA9IHRydWU7XG4gIH1cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSBlID0+IHtcbiAgICBjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LnRvZ2dsZShmYWxzZSwgZSk7XG4gIH07XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgc2V0TWVudSxcbiAgICBtZW51RWxlbWVudCxcbiAgICB0b2dnbGVFbGVtZW50XG4gIH0gPSBjb250ZXh0IHx8IHt9O1xuICBjb25zdCBwb3BwZXIgPSB1c2VQb3BwZXIodG9nZ2xlRWxlbWVudCwgbWVudUVsZW1lbnQsIG1lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcoe1xuICAgIHBsYWNlbWVudDogcGxhY2VtZW50T3ZlcnJpZGUgfHwgcGxhY2VtZW50IHx8ICdib3R0b20tc3RhcnQnLFxuICAgIGVuYWJsZWQ6IHNob3VsZFVzZVBvcHBlcixcbiAgICBlbmFibGVFdmVudHM6IGVuYWJsZUV2ZW50TGlzdGVuZXJzID09IG51bGwgPyBzaG93IDogZW5hYmxlRXZlbnRMaXN0ZW5lcnMsXG4gICAgb2Zmc2V0LFxuICAgIGZsaXAsXG4gICAgZml4ZWQsXG4gICAgYXJyb3dFbGVtZW50LFxuICAgIHBvcHBlckNvbmZpZ1xuICB9KSk7XG4gIGNvbnN0IG1lbnVQcm9wcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJlZjogc2V0TWVudSB8fCBub29wLFxuICAgICdhcmlhLWxhYmVsbGVkYnknOiB0b2dnbGVFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiB0b2dnbGVFbGVtZW50LmlkXG4gIH0sIHBvcHBlci5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgIHN0eWxlOiBwb3BwZXIuc3R5bGVzLnBvcHBlclxuICB9KTtcbiAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAgc2hvdyxcbiAgICBwbGFjZW1lbnQsXG4gICAgaGFzU2hvd246IGhhc1Nob3duUmVmLmN1cnJlbnQsXG4gICAgdG9nZ2xlOiBjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LnRvZ2dsZSxcbiAgICBwb3BwZXI6IHNob3VsZFVzZVBvcHBlciA/IHBvcHBlciA6IG51bGwsXG4gICAgYXJyb3dQcm9wczogc2hvdWxkVXNlUG9wcGVyID8gT2JqZWN0LmFzc2lnbih7XG4gICAgICByZWY6IGF0dGFjaEFycm93UmVmXG4gICAgfSwgcG9wcGVyLmF0dHJpYnV0ZXMuYXJyb3csIHtcbiAgICAgIHN0eWxlOiBwb3BwZXIuc3R5bGVzLmFycm93XG4gICAgfSkgOiB7fVxuICB9O1xuICB1c2VDbGlja091dHNpZGUobWVudUVsZW1lbnQsIGhhbmRsZUNsb3NlLCB7XG4gICAgY2xpY2tUcmlnZ2VyOiByb290Q2xvc2VFdmVudCxcbiAgICBkaXNhYmxlZDogIXNob3dcbiAgfSk7XG4gIHJldHVybiBbbWVudVByb3BzLCBtZXRhZGF0YV07XG59XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHVzZVBvcHBlcjogdHJ1ZVxufTtcbi8qKlxuICogQWxzbyBleHBvcnRlZCBhcyBgPERyb3Bkb3duLk1lbnU+YCBmcm9tIGBEcm9wZG93bmAuXG4gKlxuICogQGRpc3BsYXlOYW1lIERyb3Bkb3duTWVudVxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKi9cbmZ1bmN0aW9uIERyb3Bkb3duTWVudShfcmVmKSB7XG4gIGxldCB7XG4gICAgICBjaGlsZHJlblxuICAgIH0gPSBfcmVmLFxuICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbcHJvcHMsIG1ldGFdID0gdXNlRHJvcGRvd25NZW51KG9wdGlvbnMpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuKHByb3BzLCBtZXRhKVxuICB9KTtcbn1cbkRyb3Bkb3duTWVudS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bk1lbnUnO1xuRHJvcGRvd25NZW51LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuLyoqIEBjb21wb25lbnQgKi9cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTWVudTsiLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQSBjb252ZW5pZW5jZSBob29rIGFyb3VuZCBgdXNlU3RhdGVgIGRlc2lnbmVkIHRvIGJlIHBhaXJlZCB3aXRoXG4gKiB0aGUgY29tcG9uZW50IFtjYWxsYmFjayByZWZdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWZzLWFuZC10aGUtZG9tLmh0bWwjY2FsbGJhY2stcmVmcykgYXBpLlxuICogQ2FsbGJhY2sgcmVmcyBhcmUgdXNlZnVsIG92ZXIgYHVzZVJlZigpYCB3aGVuIHlvdSBuZWVkIHRvIHJlc3BvbmQgdG8gdGhlIHJlZiBiZWluZyBzZXRcbiAqIGluc3RlYWQgb2YgbGF6aWx5IGFjY2Vzc2luZyBpdCBpbiBhbiBlZmZlY3QuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFtlbGVtZW50LCBhdHRhY2hSZWZdID0gdXNlQ2FsbGJhY2tSZWY8SFRNTERpdkVsZW1lbnQ+KClcbiAqXG4gKiB1c2VFZmZlY3QoKCkgPT4ge1xuICogICBpZiAoIWVsZW1lbnQpIHJldHVyblxuICpcbiAqICAgY29uc3QgY2FsZW5kYXIgPSBuZXcgRnVsbENhbGVuZGFyLkNhbGVuZGFyKGVsZW1lbnQpXG4gKlxuICogICByZXR1cm4gKCkgPT4ge1xuICogICAgIGNhbGVuZGFyLmRlc3Ryb3koKVxuICogICB9XG4gKiB9LCBbZWxlbWVudF0pXG4gKlxuICogcmV0dXJuIDxkaXYgcmVmPXthdHRhY2hSZWZ9IC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgcmVmc1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNhbGxiYWNrUmVmKCkge1xuICByZXR1cm4gdXNlU3RhdGUobnVsbCk7XG59IiwiaW1wb3J0ICQ4OXlFMiRyZWFjdCwge3VzZUNvbnRleHQgYXMgJDg5eUUyJHVzZUNvbnRleHQsIHVzZU1lbW8gYXMgJDg5eUUyJHVzZU1lbW8sIHVzZVJlZiBhcyAkODl5RTIkdXNlUmVmLCB1c2VTdGF0ZSBhcyAkODl5RTIkdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCBhcyAkODl5RTIkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuLypcbiAqIENvcHlyaWdodCAyMDIwIEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovIC8qXG4gKiBDb3B5cmlnaHQgMjAyMCBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlNcbiAqIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqLyAvLyBXZSBtdXN0IGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIEByZWFjdC1hcmlhL3V0aWxzLCBhbmQgdGhpcyB1c2VMYXlvdXRFZmZlY3QgaXNcbi8vIGd1YXJkZWQgYnkgYSBjaGVjayB0aGF0IGl0IG9ubHkgcnVucyBvbiB0aGUgY2xpZW50IHNpZGUuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnVsZXNkaXIvdXNlTGF5b3V0RWZmZWN0UnVsZVxuXG4vLyBEZWZhdWx0IGNvbnRleHQgdmFsdWUgdG8gdXNlIGluIGNhc2UgdGhlcmUgaXMgbm8gU1NSUHJvdmlkZXIuIFRoaXMgaXMgZmluZSBmb3Jcbi8vIGNsaWVudC1vbmx5IGFwcHMuIEluIG9yZGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IEFyaWEgcG90ZW50aWFsbHlcbi8vIGJlaW5nIG9uIHRoZSBwYWdlIGF0IG9uY2UsIHRoZSBwcmVmaXggaXMgc2V0IHRvIGEgcmFuZG9tIG51bWJlci4gU1NSUHJvdmlkZXJcbi8vIHdpbGwgcmVzZXQgdGhpcyB0byB6ZXJvIGZvciBjb25zaXN0ZW5jeSBiZXR3ZWVuIHNlcnZlciBhbmQgY2xpZW50LCBzbyBpbiB0aGVcbi8vIFNTUiBjYXNlIG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBBcmlhIGlzIG5vdCBzdXBwb3J0ZWQuXG5jb25zdCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQgPSB7XG4gICAgcHJlZml4OiBTdHJpbmcoTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwMDApKSxcbiAgICBjdXJyZW50OiAwXG59O1xuY29uc3QgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQgPSAvKiNfX1BVUkVfXyovICgwLCAkODl5RTIkcmVhY3QpLmNyZWF0ZUNvbnRleHQoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0KTtcbmZ1bmN0aW9uICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ5ZjhhYzk2YWY0YjFiMmFlKHByb3BzKSB7XG4gICAgbGV0IGN1ciA9ICgwLCAkODl5RTIkdXNlQ29udGV4dCkoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQpO1xuICAgIGxldCBjb3VudGVyID0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJHVzZUNvdW50ZXIoY3VyID09PSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQpO1xuICAgIGxldCB2YWx1ZSA9ICgwLCAkODl5RTIkdXNlTWVtbykoKCk9Pih7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCBTU1JQcm92aWRlciwgc3RhcnQgd2l0aCBhbiBlbXB0eSBzdHJpbmcgcHJlZml4LCBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIGFwcGVuZCBhbmQgaW5jcmVtZW50IHRoZSBjb3VudGVyLlxuICAgICAgICAgICAgcHJlZml4OiBjdXIgPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCA/IFwiXCIgOiBgJHtjdXIucHJlZml4fS0ke2NvdW50ZXJ9YCxcbiAgICAgICAgICAgIGN1cnJlbnQ6IDBcbiAgICAgICAgfSksIFtcbiAgICAgICAgY3VyLFxuICAgICAgICBjb3VudGVyXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gKDAsICQ4OXlFMiRyZWFjdCkuY3JlYXRlRWxlbWVudCgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICB9LCBwcm9wcy5jaGlsZHJlbik7XG59XG5sZXQgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNhblVzZURPTSA9IEJvb2xlYW4odHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubGV0ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJHVzZUNvdW50ZXIoaXNEaXNhYmxlZCA9IGZhbHNlKSB7XG4gICAgbGV0IGN0eCA9ICgwLCAkODl5RTIkdXNlQ29udGV4dCkoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQpO1xuICAgIGxldCByZWYgPSAoMCwgJDg5eUUyJHVzZVJlZikobnVsbCk7XG4gICAgaWYgKHJlZi5jdXJyZW50ID09PSBudWxsICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHZhciBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsIF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lcjtcbiAgICAgICAgLy8gSW4gc3RyaWN0IG1vZGUsIFJlYWN0IHJlbmRlcnMgY29tcG9uZW50cyB0d2ljZSwgYW5kIHRoZSByZWYgd2lsbCBiZSByZXNldCB0byBudWxsIG9uIHRoZSBzZWNvbmQgcmVuZGVyLlxuICAgICAgICAvLyBUaGlzIG1lYW5zIG91ciBpZCBjb3VudGVyIHdpbGwgYmUgaW5jcmVtZW50ZWQgdHdpY2UgaW5zdGVhZCBvZiBvbmNlLiBUaGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlIG9uIHRoZVxuICAgICAgICAvLyBzZXJ2ZXIsIGNvbXBvbmVudHMgYXJlIG9ubHkgcmVuZGVyZWQgb25jZSBhbmQgc28gaWRzIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyIHdvbid0IG1hdGNoIHRoZSBjbGllbnQuXG4gICAgICAgIC8vIEluIFJlYWN0IDE4LCB1c2VJZCB3YXMgaW50cm9kdWNlZCB0byBzb2x2ZSB0aGlzLCBidXQgaXQgaXMgbm90IGF2YWlsYWJsZSBpbiBvbGRlciB2ZXJzaW9ucy4gU28gdG8gc29sdmUgdGhpc1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHVzZSBzb21lIFJlYWN0IGludGVybmFscyB0byBhY2Nlc3MgdGhlIHVuZGVybHlpbmcgRmliZXIgaW5zdGFuY2UsIHdoaWNoIGlzIHN0YWJsZSBiZXR3ZWVuIHJlbmRlcnMuXG4gICAgICAgIC8vIFRoaXMgaXMgZXhwb3NlZCBhcyBSZWFjdEN1cnJlbnRPd25lciBpbiBkZXZlbG9wbWVudCwgd2hpY2ggaXMgYWxsIHdlIG5lZWQgc2luY2UgU3RyaWN0TW9kZSBvbmx5IHJ1bnMgaW4gZGV2ZWxvcG1lbnQuXG4gICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHdlIG9ubHkgaW5jcmVtZW50IHRoZSBnbG9iYWwgY291bnRlciBvbmNlLCB3ZSBzdG9yZSB0aGUgc3RhcnRpbmcgaWQgZm9yIHRoaXMgY29tcG9uZW50IGluXG4gICAgICAgIC8vIGEgd2VhayBtYXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBGaWJlci4gT24gdGhlIHNlY29uZCByZW5kZXIsIHdlIHJlc2V0IHRoZSBnbG9iYWwgY291bnRlciB0byB0aGlzIHZhbHVlLlxuICAgICAgICAvLyBTaW5jZSBSZWFjdCBydW5zIHRoZSBzZWNvbmQgcmVuZGVyIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmaXJzdCwgdGhpcyBpcyBzYWZlLlxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxldCBjdXJyZW50T3duZXIgPSAoX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID0gKDAsICQ4OXlFMiRyZWFjdCkuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQpID09PSBudWxsIHx8IF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lciA9IF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcikgPT09IG51bGwgfHwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICAgICAgaWYgKGN1cnJlbnRPd25lcikge1xuICAgICAgICAgICAgbGV0IHByZXZDb21wb25lbnRWYWx1ZSA9ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMuZ2V0KGN1cnJlbnRPd25lcik7XG4gICAgICAgICAgICBpZiAocHJldkNvbXBvbmVudFZhbHVlID09IG51bGwpIC8vIE9uIHRoZSBmaXJzdCByZW5kZXIsIGFuZCBmaXJzdCBjYWxsIHRvIHVzZUlkLCBzdG9yZSB0aGUgaWQgYW5kIHN0YXRlIGluIG91ciB3ZWFrIG1hcC5cbiAgICAgICAgICAgICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMuc2V0KGN1cnJlbnRPd25lciwge1xuICAgICAgICAgICAgICAgIGlkOiBjdHguY3VycmVudCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogY3VycmVudE93bmVyLm1lbW9pemVkU3RhdGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudE93bmVyLm1lbW9pemVkU3RhdGUgIT09IHByZXZDb21wb25lbnRWYWx1ZS5zdGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIE9uIHRoZSBzZWNvbmQgcmVuZGVyLCB0aGUgbWVtb2l6ZWRTdGF0ZSBnZXRzIHJlc2V0IGJ5IFJlYWN0LlxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBjb3VudGVyLCBhbmQgcmVtb3ZlIGZyb20gdGhlIHdlYWsgbWFwIHNvIHdlIGRvbid0XG4gICAgICAgICAgICAgICAgLy8gZG8gdGhpcyBmb3Igc3Vic2VxdWVudCB1c2VJZCBjYWxscy5cbiAgICAgICAgICAgICAgICBjdHguY3VycmVudCA9IHByZXZDb21wb25lbnRWYWx1ZS5pZDtcbiAgICAgICAgICAgICAgICAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY29tcG9uZW50SWRzLmRlbGV0ZShjdXJyZW50T3duZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlZi5jdXJyZW50ID0gKytjdHguY3VycmVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlZi5jdXJyZW50O1xufVxuZnVuY3Rpb24gJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDYxOTUwMDk1OWZjNDhiMjYoZGVmYXVsdElkKSB7XG4gICAgbGV0IGN0eCA9ICgwLCAkODl5RTIkdXNlQ29udGV4dCkoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQpO1xuICAgIC8vIElmIHdlIGFyZSByZW5kZXJpbmcgaW4gYSBub24tRE9NIGVudmlyb25tZW50LCBhbmQgdGhlcmUncyBubyBTU1JQcm92aWRlcixcbiAgICAvLyBwcm92aWRlIGEgd2FybmluZyB0byBoaW50IHRvIHRoZSBkZXZlbG9wZXIgdG8gYWRkIG9uZS5cbiAgICBpZiAoY3R4ID09PSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQgJiYgISQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjYW5Vc2VET00pIGNvbnNvbGUud2FybihcIldoZW4gc2VydmVyIHJlbmRlcmluZywgeW91IG11c3Qgd3JhcCB5b3VyIGFwcGxpY2F0aW9uIGluIGFuIDxTU1JQcm92aWRlcj4gdG8gZW5zdXJlIGNvbnNpc3RlbnQgaWRzIGFyZSBnZW5lcmF0ZWQgYmV0d2VlbiB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIuXCIpO1xuICAgIGxldCBjb3VudGVyID0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJHVzZUNvdW50ZXIoISFkZWZhdWx0SWQpO1xuICAgIHJldHVybiBkZWZhdWx0SWQgfHwgYHJlYWN0LWFyaWEke2N0eC5wcmVmaXh9LSR7Y291bnRlcn1gO1xufVxuZnVuY3Rpb24gJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDUzNWJkNmNhN2Y5MGEyNzMoKSB7XG4gICAgbGV0IGN1ciA9ICgwLCAkODl5RTIkdXNlQ29udGV4dCkoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQpO1xuICAgIGxldCBpc0luU1NSQ29udGV4dCA9IGN1ciAhPT0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0O1xuICAgIGxldCBbaXNTU1IsIHNldElzU1NSXSA9ICgwLCAkODl5RTIkdXNlU3RhdGUpKGlzSW5TU1JDb250ZXh0KTtcbiAgICAvLyBJZiBvbiB0aGUgY2xpZW50LCBhbmQgdGhlIGNvbXBvbmVudCB3YXMgaW5pdGlhbGx5IHNlcnZlciByZW5kZXJlZCxcbiAgICAvLyB0aGVuIHNjaGVkdWxlIGEgbGF5b3V0IGVmZmVjdCB0byB1cGRhdGUgdGhlIGNvbXBvbmVudCBhZnRlciBoeWRyYXRpb24uXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgaXNJblNTUkNvbnRleHQpIC8vIFRoaXMgaWYgc3RhdGVtZW50IHRlY2huaWNhbGx5IGJyZWFrcyB0aGUgcnVsZXMgb2YgaG9va3MsIGJ1dCBpcyBzYWZlXG4gICAgLy8gYmVjYXVzZSB0aGUgY29uZGl0aW9uIG5ldmVyIGNoYW5nZXMgYWZ0ZXIgbW91bnRpbmcuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgKDAsICQ4OXlFMiR1c2VMYXlvdXRFZmZlY3QpKCgpPT57XG4gICAgICAgIHNldElzU1NSKGZhbHNlKTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIGlzU1NSO1xufVxuXG5cblxuXG5leHBvcnQgeyQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ5ZjhhYzk2YWY0YjFiMmFlIGFzIFNTUlByb3ZpZGVyLCAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNjE5NTAwOTU5ZmM0OGIyNiBhcyB1c2VTU1JTYWZlSWQsICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ1MzViZDZjYTdmOTBhMjczIGFzIHVzZUlzU1NSfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1vZHVsZS5qcy5tYXBcbiIsImltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU1NSU2FmZUlkIH0gZnJvbSAnLi9zc3InO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgY29uc3QgaXNSb2xlTWVudSA9IGVsID0+IHtcbiAgdmFyIF9lbCRnZXRBdHRyaWJ1dGU7XG4gIHJldHVybiAoKF9lbCRnZXRBdHRyaWJ1dGUgPSBlbC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbCRnZXRBdHRyaWJ1dGUudG9Mb3dlckNhc2UoKSkgPT09ICdtZW51Jztcbn07XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbi8qKlxuICogV2lyZXMgdXAgRHJvcGRvd24gdG9nZ2xlIGZ1bmN0aW9uYWxpdHksIHJldHVybmluZyBhIHNldCBhIHByb3BzIHRvIGF0dGFjaFxuICogdG8gdGhlIGVsZW1lbnQgdGhhdCBmdW5jdGlvbnMgYXMgdGhlIGRyb3Bkb3duIHRvZ2dsZSAoZ2VuZXJhbGx5IGEgYnV0dG9uKS5cbiAqXG4gKiBAbWVtYmVyT2YgRHJvcGRvd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyb3Bkb3duVG9nZ2xlKCkge1xuICBjb25zdCBpZCA9IHVzZVNTUlNhZmVJZCgpO1xuICBjb25zdCB7XG4gICAgc2hvdyA9IGZhbHNlLFxuICAgIHRvZ2dsZSA9IG5vb3AsXG4gICAgc2V0VG9nZ2xlLFxuICAgIG1lbnVFbGVtZW50XG4gIH0gPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCkgfHwge307XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soZSA9PiB7XG4gICAgdG9nZ2xlKCFzaG93LCBlKTtcbiAgfSwgW3Nob3csIHRvZ2dsZV0pO1xuICBjb25zdCBwcm9wcyA9IHtcbiAgICBpZCxcbiAgICByZWY6IHNldFRvZ2dsZSB8fCBub29wLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICdhcmlhLWV4cGFuZGVkJzogISFzaG93XG4gIH07XG5cbiAgLy8gVGhpcyBpcyBtYXliZSBiZXR0ZXIgZG93biBpbiBhbiBlZmZlY3QsIGJ1dFxuICAvLyB0aGUgY29tcG9uZW50IGlzIGdvaW5nIHRvIHVwZGF0ZSBhbnl3YXkgd2hlbiB0aGUgbWVudSBlbGVtZW50XG4gIC8vIGlzIHNldCBzbyBtaWdodCByZXR1cm4gbmV3IHByb3BzLlxuICBpZiAobWVudUVsZW1lbnQgJiYgaXNSb2xlTWVudShtZW51RWxlbWVudCkpIHtcbiAgICBwcm9wc1snYXJpYS1oYXNwb3B1cCddID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gW3Byb3BzLCB7XG4gICAgc2hvdyxcbiAgICB0b2dnbGVcbiAgfV07XG59XG4vKipcbiAqIEFsc28gZXhwb3J0ZWQgYXMgYDxEcm9wZG93bi5Ub2dnbGU+YCBmcm9tIGBEcm9wZG93bmAuXG4gKlxuICogQGRpc3BsYXlOYW1lIERyb3Bkb3duVG9nZ2xlXG4gKiBAbWVtYmVyT2YgRHJvcGRvd25cbiAqL1xuZnVuY3Rpb24gRHJvcGRvd25Ub2dnbGUoe1xuICBjaGlsZHJlblxufSkge1xuICBjb25zdCBbcHJvcHMsIG1ldGFdID0gdXNlRHJvcGRvd25Ub2dnbGUoKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbihwcm9wcywgbWV0YSlcbiAgfSk7XG59XG5Ecm9wZG93blRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93blRvZ2dsZSc7XG5cbi8qKiBAY29tcG9uZW50ICovXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blRvZ2dsZTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBTZWxlY3RhYmxlQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGNvbnN0IG1ha2VFdmVudEtleSA9IChldmVudEtleSwgaHJlZiA9IG51bGwpID0+IHtcbiAgaWYgKGV2ZW50S2V5ICE9IG51bGwpIHJldHVybiBTdHJpbmcoZXZlbnRLZXkpO1xuICByZXR1cm4gaHJlZiB8fCBudWxsO1xufTtcbmV4cG9ydCBkZWZhdWx0IFNlbGVjdGFibGVDb250ZXh0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IE5hdkNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbk5hdkNvbnRleHQuZGlzcGxheU5hbWUgPSAnTmF2Q29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBOYXZDb250ZXh0OyIsImV4cG9ydCBjb25zdCBBVFRSSUJVVEVfUFJFRklYID0gYGRhdGEtcnItdWktYDtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9QUkVGSVggPSBgcnJVaWA7XG5leHBvcnQgZnVuY3Rpb24gZGF0YUF0dHIocHJvcGVydHkpIHtcbiAgcmV0dXJuIGAke0FUVFJJQlVURV9QUkVGSVh9JHtwcm9wZXJ0eX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFQcm9wKHByb3BlcnR5KSB7XG4gIHJldHVybiBgJHtQUk9QRVJUWV9QUkVGSVh9JHtwcm9wZXJ0eX1gO1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcImV2ZW50S2V5XCIsIFwiZGlzYWJsZWRcIiwgXCJvbkNsaWNrXCIsIFwiYWN0aXZlXCIsIFwiYXNcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQsIHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgTmF2Q29udGV4dCBmcm9tICcuL05hdkNvbnRleHQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBkYXRhQXR0ciB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLyoqXG4gKiBDcmVhdGUgYSBkcm9wZG93biBpdGVtLiBSZXR1cm5zIGEgc2V0IG9mIHByb3BzIGZvciB0aGUgZHJvcGRvd24gaXRlbSBjb21wb25lbnRcbiAqIGluY2x1ZGluZyBhbiBgb25DbGlja2AgaGFuZGxlciB0aGF0IHByZXZlbnRzIHNlbGVjdGlvbiB3aGVuIHRoZSBpdGVtIGlzIGRpc2FibGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEcm9wZG93bkl0ZW0oe1xuICBrZXksXG4gIGhyZWYsXG4gIGFjdGl2ZSxcbiAgZGlzYWJsZWQsXG4gIG9uQ2xpY2tcbn0pIHtcbiAgY29uc3Qgb25TZWxlY3RDdHggPSB1c2VDb250ZXh0KFNlbGVjdGFibGVDb250ZXh0KTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZUNvbnRleHQoTmF2Q29udGV4dCk7XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVLZXlcbiAgfSA9IG5hdkNvbnRleHQgfHwge307XG4gIGNvbnN0IGV2ZW50S2V5ID0gbWFrZUV2ZW50S2V5KGtleSwgaHJlZik7XG4gIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlID09IG51bGwgJiYga2V5ICE9IG51bGwgPyBtYWtlRXZlbnRLZXkoYWN0aXZlS2V5KSA9PT0gZXZlbnRLZXkgOiBhY3RpdmU7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgb25DbGljayA9PSBudWxsID8gdm9pZCAwIDogb25DbGljayhldmVudCk7XG4gICAgaWYgKG9uU2VsZWN0Q3R4ICYmICFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICBvblNlbGVjdEN0eChldmVudEtleSwgZXZlbnQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBbe1xuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgICdhcmlhLWRpc2FibGVkJzogZGlzYWJsZWQgfHwgdW5kZWZpbmVkLFxuICAgICdhcmlhLXNlbGVjdGVkJzogaXNBY3RpdmUsXG4gICAgW2RhdGFBdHRyKCdkcm9wZG93bi1pdGVtJyldOiAnJ1xuICB9LCB7XG4gICAgaXNBY3RpdmVcbiAgfV07XG59XG5jb25zdCBEcm9wZG93bkl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICBldmVudEtleSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgb25DbGljayxcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGFzOiBDb21wb25lbnQgPSBCdXR0b25cbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtkcm9wZG93bkl0ZW1Qcm9wc10gPSB1c2VEcm9wZG93bkl0ZW0oe1xuICAgIGtleTogZXZlbnRLZXksXG4gICAgaHJlZjogcHJvcHMuaHJlZixcbiAgICBkaXNhYmxlZCxcbiAgICBvbkNsaWNrLFxuICAgIGFjdGl2ZVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9LCBkcm9wZG93bkl0ZW1Qcm9wcykpO1xufSk7XG5Ecm9wZG93bkl0ZW0uZGlzcGxheU5hbWUgPSAnRHJvcGRvd25JdGVtJztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duSXRlbTsiLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNhblVzZURPTSBmcm9tICdkb20taGVscGVycy9jYW5Vc2VET00nO1xuY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KGNhblVzZURPTSA/IHdpbmRvdyA6IHVuZGVmaW5lZCk7XG5leHBvcnQgY29uc3QgV2luZG93UHJvdmlkZXIgPSBDb250ZXh0LlByb3ZpZGVyO1xuXG4vKipcbiAqIFRoZSBkb2N1bWVudCBcIndpbmRvd1wiIHBsYWNlZCBpbiBSZWFjdCBjb250ZXh0LiBIZWxwZnVsIGZvciBkZXRlcm1pbmluZ1xuICogU1NSIGNvbnRleHQsIG9yIHdoZW4gcmVuZGVyaW5nIGludG8gYW4gaWZyYW1lLlxuICpcbiAqIEByZXR1cm5zIHRoZSBjdXJyZW50IHdpbmRvd1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXaW5kb3coKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KENvbnRleHQpO1xufSIsImltcG9ydCBxc2EgZnJvbSAnZG9tLWhlbHBlcnMvcXVlcnlTZWxlY3RvckFsbCc7XG5pbXBvcnQgYWRkRXZlbnRMaXN0ZW5lciBmcm9tICdkb20taGVscGVycy9hZGRFdmVudExpc3RlbmVyJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZFByb3AgfSBmcm9tICd1bmNvbnRyb2xsYWJsZSc7XG5pbXBvcnQgdXNlUHJldmlvdXMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlUHJldmlvdXMnO1xuaW1wb3J0IHVzZUZvcmNlVXBkYXRlIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUZvcmNlVXBkYXRlJztcbmltcG9ydCB1c2VFdmVudExpc3RlbmVyIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50TGlzdGVuZXInO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCBEcm9wZG93bk1lbnUgZnJvbSAnLi9Ecm9wZG93bk1lbnUnO1xuaW1wb3J0IERyb3Bkb3duVG9nZ2xlLCB7IGlzUm9sZU1lbnUgfSBmcm9tICcuL0Ryb3Bkb3duVG9nZ2xlJztcbmltcG9ydCBEcm9wZG93bkl0ZW0gZnJvbSAnLi9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgZGF0YUF0dHIgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IHVzZVdpbmRvdyBmcm9tICcuL3VzZVdpbmRvdyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZnVuY3Rpb24gdXNlUmVmV2l0aFVwZGF0ZSgpIHtcbiAgY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VGb3JjZVVwZGF0ZSgpO1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGF0dGFjaFJlZiA9IHVzZUNhbGxiYWNrKGVsZW1lbnQgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICAvLyBlbnN1cmUgdGhhdCBhIG1lbnUgc2V0IHRyaWdnZXJzIGFuIHVwZGF0ZSBmb3IgY29uc3VtZXJzXG4gICAgZm9yY2VVcGRhdGUoKTtcbiAgfSwgW2ZvcmNlVXBkYXRlXSk7XG4gIHJldHVybiBbcmVmLCBhdHRhY2hSZWZdO1xufVxuXG4vKipcbiAqIEBkaXNwbGF5TmFtZSBEcm9wZG93blxuICogQHB1YmxpY1xuICovXG5mdW5jdGlvbiBEcm9wZG93bih7XG4gIGRlZmF1bHRTaG93LFxuICBzaG93OiByYXdTaG93LFxuICBvblNlbGVjdCxcbiAgb25Ub2dnbGU6IHJhd09uVG9nZ2xlLFxuICBpdGVtU2VsZWN0b3IgPSBgKiBbJHtkYXRhQXR0cignZHJvcGRvd24taXRlbScpfV1gLFxuICBmb2N1c0ZpcnN0SXRlbU9uU2hvdyxcbiAgcGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCcsXG4gIGNoaWxkcmVuXG59KSB7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBbc2hvdywgb25Ub2dnbGVdID0gdXNlVW5jb250cm9sbGVkUHJvcChyYXdTaG93LCBkZWZhdWx0U2hvdywgcmF3T25Ub2dnbGUpO1xuXG4gIC8vIFdlIHVzZSBub3JtYWwgcmVmcyBpbnN0ZWFkIG9mIHVzZUNhbGxiYWNrUmVmIGluIG9yZGVyIHRvIHBvcHVsYXRlIHRoZVxuICAvLyB0aGUgdmFsdWUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSwgb3RoZXJ3aXNlIHRoZSBlZmZlY3QgdG8gZm9jdXMgdGhlIGVsZW1lbnRcbiAgLy8gbWF5IHJ1biBiZWZvcmUgdGhlIHN0YXRlIHZhbHVlIGlzIHNldFxuICBjb25zdCBbbWVudVJlZiwgc2V0TWVudV0gPSB1c2VSZWZXaXRoVXBkYXRlKCk7XG4gIGNvbnN0IG1lbnVFbGVtZW50ID0gbWVudVJlZi5jdXJyZW50O1xuICBjb25zdCBbdG9nZ2xlUmVmLCBzZXRUb2dnbGVdID0gdXNlUmVmV2l0aFVwZGF0ZSgpO1xuICBjb25zdCB0b2dnbGVFbGVtZW50ID0gdG9nZ2xlUmVmLmN1cnJlbnQ7XG4gIGNvbnN0IGxhc3RTaG93ID0gdXNlUHJldmlvdXMoc2hvdyk7XG4gIGNvbnN0IGxhc3RTb3VyY2VFdmVudCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZm9jdXNJbkRyb3Bkb3duID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgb25TZWxlY3RDdHggPSB1c2VDb250ZXh0KFNlbGVjdGFibGVDb250ZXh0KTtcbiAgY29uc3QgdG9nZ2xlID0gdXNlQ2FsbGJhY2soKG5leHRTaG93LCBldmVudCwgc291cmNlID0gZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LnR5cGUpID0+IHtcbiAgICBvblRvZ2dsZShuZXh0U2hvdywge1xuICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICBzb3VyY2VcbiAgICB9KTtcbiAgfSwgW29uVG9nZ2xlXSk7XG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGtleSwgZXZlbnQpID0+IHtcbiAgICBvblNlbGVjdCA9PSBudWxsID8gdm9pZCAwIDogb25TZWxlY3Qoa2V5LCBldmVudCk7XG4gICAgdG9nZ2xlKGZhbHNlLCBldmVudCwgJ3NlbGVjdCcpO1xuICAgIGlmICghZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgb25TZWxlY3RDdHggPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0Q3R4KGtleSwgZXZlbnQpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgdG9nZ2xlLFxuICAgIHBsYWNlbWVudCxcbiAgICBzaG93LFxuICAgIG1lbnVFbGVtZW50LFxuICAgIHRvZ2dsZUVsZW1lbnQsXG4gICAgc2V0TWVudSxcbiAgICBzZXRUb2dnbGVcbiAgfSksIFt0b2dnbGUsIHBsYWNlbWVudCwgc2hvdywgbWVudUVsZW1lbnQsIHRvZ2dsZUVsZW1lbnQsIHNldE1lbnUsIHNldFRvZ2dsZV0pO1xuICBpZiAobWVudUVsZW1lbnQgJiYgbGFzdFNob3cgJiYgIXNob3cpIHtcbiAgICBmb2N1c0luRHJvcGRvd24uY3VycmVudCA9IG1lbnVFbGVtZW50LmNvbnRhaW5zKG1lbnVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gIH1cbiAgY29uc3QgZm9jdXNUb2dnbGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAodG9nZ2xlRWxlbWVudCAmJiB0b2dnbGVFbGVtZW50LmZvY3VzKSB7XG4gICAgICB0b2dnbGVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgbWF5YmVGb2N1c0ZpcnN0ID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdHlwZSA9IGxhc3RTb3VyY2VFdmVudC5jdXJyZW50O1xuICAgIGxldCBmb2N1c1R5cGUgPSBmb2N1c0ZpcnN0SXRlbU9uU2hvdztcbiAgICBpZiAoZm9jdXNUeXBlID09IG51bGwpIHtcbiAgICAgIGZvY3VzVHlwZSA9IG1lbnVSZWYuY3VycmVudCAmJiBpc1JvbGVNZW51KG1lbnVSZWYuY3VycmVudCkgPyAna2V5Ym9hcmQnIDogZmFsc2U7XG4gICAgfVxuICAgIGlmIChmb2N1c1R5cGUgPT09IGZhbHNlIHx8IGZvY3VzVHlwZSA9PT0gJ2tleWJvYXJkJyAmJiAhL15rZXkuKyQvLnRlc3QodHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3QgPSBxc2EobWVudVJlZi5jdXJyZW50LCBpdGVtU2VsZWN0b3IpWzBdO1xuICAgIGlmIChmaXJzdCAmJiBmaXJzdC5mb2N1cykgZmlyc3QuZm9jdXMoKTtcbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3cpIG1heWJlRm9jdXNGaXJzdCgpO2Vsc2UgaWYgKGZvY3VzSW5Ecm9wZG93bi5jdXJyZW50KSB7XG4gICAgICBmb2N1c0luRHJvcGRvd24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgZm9jdXNUb2dnbGUoKTtcbiAgICB9XG4gICAgLy8gb25seSBgc2hvd2Agc2hvdWxkIGJlIGNoYW5naW5nXG4gIH0sIFtzaG93LCBmb2N1c0luRHJvcGRvd24sIGZvY3VzVG9nZ2xlLCBtYXliZUZvY3VzRmlyc3RdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsYXN0U291cmNlRXZlbnQuY3VycmVudCA9IG51bGw7XG4gIH0pO1xuICBjb25zdCBnZXROZXh0Rm9jdXNlZENoaWxkID0gKGN1cnJlbnQsIG9mZnNldCkgPT4ge1xuICAgIGlmICghbWVudVJlZi5jdXJyZW50KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBpdGVtcyA9IHFzYShtZW51UmVmLmN1cnJlbnQsIGl0ZW1TZWxlY3Rvcik7XG4gICAgbGV0IGluZGV4ID0gaXRlbXMuaW5kZXhPZihjdXJyZW50KSArIG9mZnNldDtcbiAgICBpbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGluZGV4LCBpdGVtcy5sZW5ndGgpKTtcbiAgICByZXR1cm4gaXRlbXNbaW5kZXhdO1xuICB9O1xuICB1c2VFdmVudExpc3RlbmVyKHVzZUNhbGxiYWNrKCgpID0+IHdpbmRvdy5kb2N1bWVudCwgW3dpbmRvd10pLCAna2V5ZG93bicsIGV2ZW50ID0+IHtcbiAgICB2YXIgX21lbnVSZWYkY3VycmVudCwgX3RvZ2dsZVJlZiRjdXJyZW50O1xuICAgIGNvbnN0IHtcbiAgICAgIGtleVxuICAgIH0gPSBldmVudDtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgZnJvbU1lbnUgPSAoX21lbnVSZWYkY3VycmVudCA9IG1lbnVSZWYuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tZW51UmVmJGN1cnJlbnQuY29udGFpbnModGFyZ2V0KTtcbiAgICBjb25zdCBmcm9tVG9nZ2xlID0gKF90b2dnbGVSZWYkY3VycmVudCA9IHRvZ2dsZVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3RvZ2dsZVJlZiRjdXJyZW50LmNvbnRhaW5zKHRhcmdldCk7XG5cbiAgICAvLyBTZWNvbmQgb25seSB0byBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi84Y2ZiZjY5MzNiOGEwMTQ2YWMzZmJjMzY5ZjE5ZTUyMGJkMWViZGFjL2pzL3NyYy9kcm9wZG93bi5qcyNMNDAwXG4gICAgLy8gaW4gaW5zY3J1dGFiaWxpdHlcbiAgICBjb25zdCBpc0lucHV0ID0gL2lucHV0fHRleHRhcmVhL2kudGVzdCh0YXJnZXQudGFnTmFtZSk7XG4gICAgaWYgKGlzSW5wdXQgJiYgKGtleSA9PT0gJyAnIHx8IGtleSAhPT0gJ0VzY2FwZScgJiYgZnJvbU1lbnUgfHwga2V5ID09PSAnRXNjYXBlJyAmJiB0YXJnZXQudHlwZSA9PT0gJ3NlYXJjaCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZnJvbU1lbnUgJiYgIWZyb21Ub2dnbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGtleSA9PT0gJ1RhYicgJiYgKCFtZW51UmVmLmN1cnJlbnQgfHwgIXNob3cpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxhc3RTb3VyY2VFdmVudC5jdXJyZW50ID0gZXZlbnQudHlwZTtcbiAgICBjb25zdCBtZXRhID0ge1xuICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICBzb3VyY2U6IGV2ZW50LnR5cGVcbiAgICB9O1xuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0Rm9jdXNlZENoaWxkKHRhcmdldCwgLTEpO1xuICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQuZm9jdXMpIG5leHQuZm9jdXMoKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCFzaG93KSB7XG4gICAgICAgICAgb25Ub2dnbGUodHJ1ZSwgbWV0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IGdldE5leHRGb2N1c2VkQ2hpbGQodGFyZ2V0LCAxKTtcbiAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0LmZvY3VzKSBuZXh0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgLy8gb24ga2V5ZG93biB0aGUgdGFyZ2V0IGlzIHRoZSBlbGVtZW50IGJlaW5nIHRhYmJlZCBGUk9NLCB3ZSBuZWVkIHRoYXRcbiAgICAgICAgLy8gdG8ga25vdyBpZiB0aGlzIGV2ZW50IGlzIHJlbGV2YW50IHRvIHRoaXMgZHJvcGRvd24gKGUuZy4gaW4gdGhpcyBtZW51KS5cbiAgICAgICAgLy8gT24gYGtleXVwYCB0aGUgdGFyZ2V0IGlzIHRoZSBlbGVtZW50IGJlaW5nIHRhZ2dlZCBUTyB3aGljaCB3ZSB1c2UgdG8gY2hlY2tcbiAgICAgICAgLy8gaWYgZm9jdXMgaGFzIGxlZnQgdGhlIG1lbnVcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQub3duZXJEb2N1bWVudCwgJ2tleXVwJywgZSA9PiB7XG4gICAgICAgICAgdmFyIF9tZW51UmVmJGN1cnJlbnQyO1xuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ1RhYicgJiYgIWUudGFyZ2V0IHx8ICEoKF9tZW51UmVmJGN1cnJlbnQyID0gbWVudVJlZi5jdXJyZW50KSAhPSBudWxsICYmIF9tZW51UmVmJGN1cnJlbnQyLmNvbnRhaW5zKGUudGFyZ2V0KSkpIHtcbiAgICAgICAgICAgIG9uVG9nZ2xlKGZhbHNlLCBtZXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIGlmIChrZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBvblRvZ2dsZShmYWxzZSwgbWV0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU2VsZWN0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogaGFuZGxlU2VsZWN0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChEcm9wZG93bkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBjb250ZXh0LFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSlcbiAgfSk7XG59XG5Ecm9wZG93bi5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bic7XG5Ecm9wZG93bi5NZW51ID0gRHJvcGRvd25NZW51O1xuRHJvcGRvd24uVG9nZ2xlID0gRHJvcGRvd25Ub2dnbGU7XG5Ecm9wZG93bi5JdGVtID0gRHJvcGRvd25JdGVtO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd247IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7IHZhciBrZXkgPSBfdG9QcmltaXRpdmUoYXJnLCBcInN0cmluZ1wiKTsgcmV0dXJuIHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7IGlmICh0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDsgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7IHZhciByZXMgPSBwcmltLmNhbGwoaW5wdXQsIGhpbnQgfHwgXCJkZWZhdWx0XCIpOyBpZiAodHlwZW9mIHJlcyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlczsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoaGludCA9PT0gXCJzdHJpbmdcIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpOyB9XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0S2V5KGtleSkge1xuICByZXR1cm4gJ2RlZmF1bHQnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cigxKTtcbn1cbmZ1bmN0aW9uIHVzZVVuY29udHJvbGxlZFByb3AocHJvcFZhbHVlLCBkZWZhdWx0VmFsdWUsIGhhbmRsZXIpIHtcbiAgY29uc3Qgd2FzUHJvcFJlZiA9IHVzZVJlZihwcm9wVmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IFtzdGF0ZVZhbHVlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShkZWZhdWx0VmFsdWUpO1xuICBjb25zdCBpc1Byb3AgPSBwcm9wVmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgY29uc3Qgd2FzUHJvcCA9IHdhc1Byb3BSZWYuY3VycmVudDtcbiAgd2FzUHJvcFJlZi5jdXJyZW50ID0gaXNQcm9wO1xuXG4gIC8qKlxuICAgKiBJZiBhIHByb3Agc3dpdGNoZXMgZnJvbSBjb250cm9sbGVkIHRvIFVuY29udHJvbGxlZFxuICAgKiByZXNldCBpdHMgdmFsdWUgdG8gdGhlIGRlZmF1bHRWYWx1ZVxuICAgKi9cbiAgaWYgKCFpc1Byb3AgJiYgd2FzUHJvcCAmJiBzdGF0ZVZhbHVlICE9PSBkZWZhdWx0VmFsdWUpIHtcbiAgICBzZXRTdGF0ZShkZWZhdWx0VmFsdWUpO1xuICB9XG4gIHJldHVybiBbaXNQcm9wID8gcHJvcFZhbHVlIDogc3RhdGVWYWx1ZSwgdXNlQ2FsbGJhY2soKHZhbHVlLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKGhhbmRsZXIpIGhhbmRsZXIodmFsdWUsIC4uLmFyZ3MpO1xuICAgIHNldFN0YXRlKHZhbHVlKTtcbiAgfSwgW2hhbmRsZXJdKV07XG59XG5leHBvcnQgeyB1c2VVbmNvbnRyb2xsZWRQcm9wIH07XG5leHBvcnQgZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkKHByb3BzLCBjb25maWcpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbmZpZykucmVkdWNlKChyZXN1bHQsIGZpZWxkTmFtZSkgPT4ge1xuICAgIGNvbnN0IF9yZWYgPSByZXN1bHQsXG4gICAgICBfZGVmYXVsdEtleSA9IGRlZmF1bHRLZXkoZmllbGROYW1lKSxcbiAgICAgIHtcbiAgICAgICAgW19kZWZhdWx0S2V5XTogZGVmYXVsdFZhbHVlLFxuICAgICAgICBbZmllbGROYW1lXTogcHJvcHNWYWx1ZVxuICAgICAgfSA9IF9yZWYsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgW19kZWZhdWx0S2V5LCBmaWVsZE5hbWVdLm1hcChfdG9Qcm9wZXJ0eUtleSkpO1xuICAgIGNvbnN0IGhhbmRsZXJOYW1lID0gY29uZmlnW2ZpZWxkTmFtZV07XG4gICAgY29uc3QgW3ZhbHVlLCBoYW5kbGVyXSA9IHVzZVVuY29udHJvbGxlZFByb3AocHJvcHNWYWx1ZSwgZGVmYXVsdFZhbHVlLCBwcm9wc1toYW5kbGVyTmFtZV0pO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7XG4gICAgICBbZmllbGROYW1lXTogdmFsdWUsXG4gICAgICBbaGFuZGxlck5hbWVdOiBoYW5kbGVyXG4gICAgfSk7XG4gIH0sIHByb3BzKTtcbn0iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuL3VzZUV2ZW50Q2FsbGJhY2snO1xuXG4vKipcbiAqIEF0dGFjaGVzIGFuIGV2ZW50IGhhbmRsZXIgb3V0c2lkZSBkaXJlY3RseSB0byBzcGVjaWZpZWQgRE9NIGVsZW1lbnRcbiAqIGJ5cGFzc2luZyB0aGUgcmVhY3Qgc3ludGhldGljIGV2ZW50IHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IHRvIGxpc3RlbiBmb3IgZXZlbnRzIG9uXG4gKiBAcGFyYW0gZXZlbnQgVGhlIERPTSBldmVudCBuYW1lXG4gKiBAcGFyYW0gaGFuZGxlciBBbiBldmVudCBoYW5kbGVyXG4gKiBAcGFyYW0gY2FwdHVyZSBXaGV0aGVyIG9yIG5vdCB0byBsaXN0ZW4gZHVyaW5nIHRoZSBjYXB0dXJlIGV2ZW50IHBoYXNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUV2ZW50TGlzdGVuZXIoZXZlbnRUYXJnZXQsIGV2ZW50LCBsaXN0ZW5lciwgY2FwdHVyZSkge1xuICBpZiAoY2FwdHVyZSA9PT0gdm9pZCAwKSB7XG4gICAgY2FwdHVyZSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGhhbmRsZXIgPSB1c2VFdmVudENhbGxiYWNrKGxpc3RlbmVyKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdHlwZW9mIGV2ZW50VGFyZ2V0ID09PSAnZnVuY3Rpb24nID8gZXZlbnRUYXJnZXQoKSA6IGV2ZW50VGFyZ2V0O1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBjYXB0dXJlKTtcbiAgICB9O1xuICB9LCBbZXZlbnRUYXJnZXRdKTtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBEcm9wZG93bkNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5Ecm9wZG93bkNvbnRleHQuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25Db250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duQ29udGV4dDsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURyb3Bkb3duSXRlbSB9IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duSXRlbSc7XG5pbXBvcnQgQW5jaG9yIGZyb20gJ0ByZXN0YXJ0L3VpL0FuY2hvcic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERyb3Bkb3duSXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGV2ZW50S2V5LFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBvbkNsaWNrLFxuICBhY3RpdmUsXG4gIGFzOiBDb21wb25lbnQgPSBBbmNob3IsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnZHJvcGRvd24taXRlbScpO1xuICBjb25zdCBbZHJvcGRvd25JdGVtUHJvcHMsIG1ldGFdID0gdXNlRHJvcGRvd25JdGVtKHtcbiAgICBrZXk6IGV2ZW50S2V5LFxuICAgIGhyZWY6IHByb3BzLmhyZWYsXG4gICAgZGlzYWJsZWQsXG4gICAgb25DbGljayxcbiAgICBhY3RpdmVcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICAuLi5kcm9wZG93bkl0ZW1Qcm9wcyxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIG1ldGEuaXNBY3RpdmUgJiYgJ2FjdGl2ZScsIGRpc2FibGVkICYmICdkaXNhYmxlZCcpXG4gIH0pO1xufSk7XG5Ecm9wZG93bkl0ZW0uZGlzcGxheU5hbWUgPSAnRHJvcGRvd25JdGVtJztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duSXRlbTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBjb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb250ZXh0LmRpc3BsYXlOYW1lID0gJ0lucHV0R3JvdXBDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGNvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vLyBUT0RPOiBjaGVja1xuXG5jb25zdCBjb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb250ZXh0LmRpc3BsYXlOYW1lID0gJ05hdmJhckNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgY29udGV4dDsiLCJpbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nKHJlZiwgY29tcG9uZW50TmFtZSkge1xuICAvLyBAdHMtaWdub3JlXG4gIGlmICghKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHJldHVybiByZWY7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gIGNvbnN0IHdhcm5pbmdSZWYgPSB1c2VDYWxsYmFjayhyZWZWYWx1ZSA9PiB7XG4gICAgIShyZWZWYWx1ZSA9PSBudWxsIHx8ICFyZWZWYWx1ZS5pc1JlYWN0Q29tcG9uZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYCR7Y29tcG9uZW50TmFtZX0gaW5qZWN0ZWQgYSByZWYgdG8gYSBwcm92aWRlZCBcXGBhc1xcYCBjb21wb25lbnQgdGhhdCByZXNvbHZlZCB0byBhIGNvbXBvbmVudCBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgRE9NIGVsZW1lbnQuIGAgKyAnVXNlIGBSZWFjdC5mb3J3YXJkUmVmYCB0byBwcm92aWRlIHRoZSBpbmplY3RlZCByZWYgdG8gdGhlIGNsYXNzIGNvbXBvbmVudCBhcyBhIHByb3AgaW4gb3JkZXIgdG8gcGFzcyBpdCBkaXJlY3RseSB0byBhIERPTSBlbGVtZW50JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB9LCBbY29tcG9uZW50TmFtZV0pO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgcmV0dXJuIHVzZU1lcmdlZFJlZnMod2FybmluZ1JlZiwgcmVmKTtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bk1lbnUgfSBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93bk1lbnUnO1xuaW1wb3J0IHVzZUlzb21vcnBoaWNFZmZlY3QgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlSXNvbW9ycGhpY0VmZmVjdCc7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgSW5wdXRHcm91cENvbnRleHQgZnJvbSAnLi9JbnB1dEdyb3VwQ29udGV4dCc7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcgZnJvbSAnLi91c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcnO1xuaW1wb3J0IHsgYWxpZ25Qcm9wVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZmxpcDogdHJ1ZVxufTtcbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bk1lbnVQbGFjZW1lbnQoYWxpZ25FbmQsIGRyb3BEaXJlY3Rpb24sIGlzUlRMKSB7XG4gIGNvbnN0IHRvcFN0YXJ0ID0gaXNSVEwgPyAndG9wLWVuZCcgOiAndG9wLXN0YXJ0JztcbiAgY29uc3QgdG9wRW5kID0gaXNSVEwgPyAndG9wLXN0YXJ0JyA6ICd0b3AtZW5kJztcbiAgY29uc3QgYm90dG9tU3RhcnQgPSBpc1JUTCA/ICdib3R0b20tZW5kJyA6ICdib3R0b20tc3RhcnQnO1xuICBjb25zdCBib3R0b21FbmQgPSBpc1JUTCA/ICdib3R0b20tc3RhcnQnIDogJ2JvdHRvbS1lbmQnO1xuICBjb25zdCBsZWZ0U3RhcnQgPSBpc1JUTCA/ICdyaWdodC1zdGFydCcgOiAnbGVmdC1zdGFydCc7XG4gIGNvbnN0IGxlZnRFbmQgPSBpc1JUTCA/ICdyaWdodC1lbmQnIDogJ2xlZnQtZW5kJztcbiAgY29uc3QgcmlnaHRTdGFydCA9IGlzUlRMID8gJ2xlZnQtc3RhcnQnIDogJ3JpZ2h0LXN0YXJ0JztcbiAgY29uc3QgcmlnaHRFbmQgPSBpc1JUTCA/ICdsZWZ0LWVuZCcgOiAncmlnaHQtZW5kJztcbiAgbGV0IHBsYWNlbWVudCA9IGFsaWduRW5kID8gYm90dG9tRW5kIDogYm90dG9tU3RhcnQ7XG4gIGlmIChkcm9wRGlyZWN0aW9uID09PSAndXAnKSBwbGFjZW1lbnQgPSBhbGlnbkVuZCA/IHRvcEVuZCA6IHRvcFN0YXJ0O2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICdlbmQnKSBwbGFjZW1lbnQgPSBhbGlnbkVuZCA/IHJpZ2h0RW5kIDogcmlnaHRTdGFydDtlbHNlIGlmIChkcm9wRGlyZWN0aW9uID09PSAnc3RhcnQnKSBwbGFjZW1lbnQgPSBhbGlnbkVuZCA/IGxlZnRFbmQgOiBsZWZ0U3RhcnQ7ZWxzZSBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ2Rvd24tY2VudGVyZWQnKSBwbGFjZW1lbnQgPSAnYm90dG9tJztlbHNlIGlmIChkcm9wRGlyZWN0aW9uID09PSAndXAtY2VudGVyZWQnKSBwbGFjZW1lbnQgPSAndG9wJztcbiAgcmV0dXJuIHBsYWNlbWVudDtcbn1cbmNvbnN0IERyb3Bkb3duTWVudSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGFsaWduLFxuICByb290Q2xvc2VFdmVudCxcbiAgZmxpcCxcbiAgc2hvdzogc2hvd1Byb3BzLFxuICByZW5kZXJPbk1vdW50LFxuICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gIGFzOiBDb21wb25lbnQgPSAnZGl2JyxcbiAgcG9wcGVyQ29uZmlnLFxuICB2YXJpYW50LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGxldCBhbGlnbkVuZCA9IGZhbHNlO1xuICBjb25zdCBpc05hdmJhciA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2Ryb3Bkb3duLW1lbnUnKTtcbiAgY29uc3Qge1xuICAgIGFsaWduOiBjb250ZXh0QWxpZ24sXG4gICAgZHJvcCxcbiAgICBpc1JUTFxuICB9ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xuICBhbGlnbiA9IGFsaWduIHx8IGNvbnRleHRBbGlnbjtcbiAgY29uc3QgaXNJbnB1dEdyb3VwID0gdXNlQ29udGV4dChJbnB1dEdyb3VwQ29udGV4dCk7XG4gIGNvbnN0IGFsaWduQ2xhc3NlcyA9IFtdO1xuICBpZiAoYWxpZ24pIHtcbiAgICBpZiAodHlwZW9mIGFsaWduID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFsaWduKTtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoa2V5cy5sZW5ndGggPT09IDEsICdUaGVyZSBzaG91bGQgb25seSBiZSAxIGJyZWFrcG9pbnQgd2hlbiBwYXNzaW5nIGFuIG9iamVjdCB0byBgYWxpZ25gJykgOiB2b2lkIDA7XG4gICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnJrUG9pbnQgPSBrZXlzWzBdO1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBhbGlnblticmtQb2ludF07XG5cbiAgICAgICAgLy8gLmRyb3Bkb3duLW1lbnUtZW5kIGlzIHJlcXVpcmVkIGZvciByZXNwb25zaXZlbHkgYWxpZ25pbmdcbiAgICAgICAgLy8gbGVmdCBpbiBhZGRpdGlvbiB0byBhbGlnbiBsZWZ0IGNsYXNzZXMuXG4gICAgICAgIGFsaWduRW5kID0gZGlyZWN0aW9uID09PSAnc3RhcnQnO1xuICAgICAgICBhbGlnbkNsYXNzZXMucHVzaChgJHtwcmVmaXh9LSR7YnJrUG9pbnR9LSR7ZGlyZWN0aW9ufWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdlbmQnKSB7XG4gICAgICBhbGlnbkVuZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBsYWNlbWVudCA9IGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcCwgaXNSVEwpO1xuICBjb25zdCBbbWVudVByb3BzLCB7XG4gICAgaGFzU2hvd24sXG4gICAgcG9wcGVyLFxuICAgIHNob3csXG4gICAgdG9nZ2xlXG4gIH1dID0gdXNlRHJvcGRvd25NZW51KHtcbiAgICBmbGlwLFxuICAgIHJvb3RDbG9zZUV2ZW50LFxuICAgIHNob3c6IHNob3dQcm9wcyxcbiAgICB1c2VQb3BwZXI6ICFpc05hdmJhciAmJiBhbGlnbkNsYXNzZXMubGVuZ3RoID09PSAwLFxuICAgIG9mZnNldDogWzAsIDJdLFxuICAgIHBvcHBlckNvbmZpZyxcbiAgICBwbGFjZW1lbnRcbiAgfSk7XG4gIG1lbnVQcm9wcy5yZWYgPSB1c2VNZXJnZWRSZWZzKHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyhyZWYsICdEcm9wZG93bk1lbnUnKSwgbWVudVByb3BzLnJlZik7XG4gIHVzZUlzb21vcnBoaWNFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFBvcHBlcidzIGluaXRpYWwgcG9zaXRpb24gZm9yIHRoZSBtZW51IGlzIGluY29ycmVjdCB3aGVuXG4gICAgLy8gcmVuZGVyT25Nb3VudD10cnVlLiBOZWVkIHRvIGNhbGwgdXBkYXRlKCkgdG8gY29ycmVjdCBpdC5cbiAgICBpZiAoc2hvdykgcG9wcGVyID09IG51bGwgPyB2b2lkIDAgOiBwb3BwZXIudXBkYXRlKCk7XG4gIH0sIFtzaG93XSk7XG4gIGlmICghaGFzU2hvd24gJiYgIXJlbmRlck9uTW91bnQgJiYgIWlzSW5wdXRHcm91cCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gRm9yIGN1c3RvbSBjb21wb25lbnRzIHByb3ZpZGUgYWRkaXRpb25hbCwgbm9uLURPTSwgcHJvcHM7XG4gIGlmICh0eXBlb2YgQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIG1lbnVQcm9wcy5zaG93ID0gc2hvdztcbiAgICBtZW51UHJvcHMuY2xvc2UgPSAoKSA9PiB0b2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHRvZ2dsZShmYWxzZSk7XG4gICAgbWVudVByb3BzLmFsaWduID0gYWxpZ247XG4gIH1cbiAgbGV0IHN0eWxlID0gcHJvcHMuc3R5bGU7XG4gIGlmIChwb3BwZXIgIT0gbnVsbCAmJiBwb3BwZXIucGxhY2VtZW50KSB7XG4gICAgLy8gd2UgZG9uJ3QgbmVlZCB0aGUgZGVmYXVsdCBwb3BwZXIgc3R5bGUsXG4gICAgLy8gbWVudXMgYXJlIGRpc3BsYXk6IG5vbmUgd2hlbiBub3Qgc2hvd24uXG4gICAgc3R5bGUgPSB7XG4gICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgIC4uLm1lbnVQcm9wcy5zdHlsZVxuICAgIH07XG4gICAgcHJvcHNbJ3gtcGxhY2VtZW50J10gPSBwb3BwZXIucGxhY2VtZW50O1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICAuLi5tZW51UHJvcHMsXG4gICAgc3R5bGU6IHN0eWxlXG4gICAgLy8gQm9vdHN0cmFwIGNzcyByZXF1aXJlcyB0aGlzIGRhdGEgYXR0cmliIHRvIHN0eWxlIHJlc3BvbnNpdmUgbWVudXMuXG4gICAgLFxuICAgIC4uLigoYWxpZ25DbGFzc2VzLmxlbmd0aCB8fCBpc05hdmJhcikgJiYge1xuICAgICAgJ2RhdGEtYnMtcG9wcGVyJzogJ3N0YXRpYydcbiAgICB9KSxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIHNob3cgJiYgJ3Nob3cnLCBhbGlnbkVuZCAmJiBgJHtwcmVmaXh9LWVuZGAsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgLi4uYWxpZ25DbGFzc2VzKVxuICB9KTtcbn0pO1xuRHJvcGRvd25NZW51LmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duTWVudSc7XG5Ecm9wZG93bk1lbnUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51OyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQnV0dG9uUHJvcHMgfSBmcm9tICdAcmVzdGFydC91aS9CdXR0b24nO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlXG59O1xuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYXMsXG4gIGJzUHJlZml4LFxuICB2YXJpYW50LFxuICBzaXplLFxuICBhY3RpdmUsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdidG4nKTtcbiAgY29uc3QgW2J1dHRvblByb3BzLCB7XG4gICAgdGFnTmFtZVxuICB9XSA9IHVzZUJ1dHRvblByb3BzKHtcbiAgICB0YWdOYW1lOiBhcyxcbiAgICAuLi5wcm9wc1xuICB9KTtcbiAgY29uc3QgQ29tcG9uZW50ID0gdGFnTmFtZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLmJ1dHRvblByb3BzLFxuICAgIC4uLnByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgYWN0aXZlICYmICdhY3RpdmUnLCB2YXJpYW50ICYmIGAke3ByZWZpeH0tJHt2YXJpYW50fWAsIHNpemUgJiYgYCR7cHJlZml4fS0ke3NpemV9YCwgcHJvcHMuaHJlZiAmJiBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnKVxuICB9KTtcbn0pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0J1dHRvbic7XG5CdXR0b24uZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25Ub2dnbGUgfSBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93blRvZ2dsZSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nIGZyb20gJy4vdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEcm9wZG93blRvZ2dsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBzcGxpdCxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZEJzUHJlZml4LFxuICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gIGFzOiBDb21wb25lbnQgPSBCdXR0b24sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnZHJvcGRvd24tdG9nZ2xlJyk7XG4gIGNvbnN0IGRyb3Bkb3duQ29udGV4dCA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgaWYgKGNoaWxkQnNQcmVmaXggIT09IHVuZGVmaW5lZCkge1xuICAgIHByb3BzLmJzUHJlZml4ID0gY2hpbGRCc1ByZWZpeDtcbiAgfVxuICBjb25zdCBbdG9nZ2xlUHJvcHNdID0gdXNlRHJvcGRvd25Ub2dnbGUoKTtcbiAgdG9nZ2xlUHJvcHMucmVmID0gdXNlTWVyZ2VkUmVmcyh0b2dnbGVQcm9wcy5yZWYsIHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyhyZWYsICdEcm9wZG93blRvZ2dsZScpKTtcblxuICAvLyBUaGlzIGludGVudGlvbmFsbHkgZm9yd2FyZHMgc2l6ZSBhbmQgdmFyaWFudCAoaWYgc2V0KSB0byB0aGVcbiAgLy8gdW5kZXJseWluZyBjb21wb25lbnQsIHRvIGFsbG93IGl0IHRvIHJlbmRlciBzaXplIGFuZCBzdHlsZSB2YXJpYW50cy5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgc3BsaXQgJiYgYCR7cHJlZml4fS1zcGxpdGAsIChkcm9wZG93bkNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGRyb3Bkb3duQ29udGV4dC5zaG93KSAmJiAnc2hvdycpLFxuICAgIC4uLnRvZ2dsZVByb3BzLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufSk7XG5Ecm9wZG93blRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93blRvZ2dsZSc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blRvZ2dsZTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmFzZURyb3Bkb3duIGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duJztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgRHJvcGRvd25JdGVtIGZyb20gJy4vRHJvcGRvd25JdGVtJztcbmltcG9ydCBEcm9wZG93bk1lbnUsIHsgZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50IH0gZnJvbSAnLi9Ecm9wZG93bk1lbnUnO1xuaW1wb3J0IERyb3Bkb3duVG9nZ2xlIGZyb20gJy4vRHJvcGRvd25Ub2dnbGUnO1xuaW1wb3J0IElucHV0R3JvdXBDb250ZXh0IGZyb20gJy4vSW5wdXRHcm91cENvbnRleHQnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4LCB1c2VJc1JUTCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCB7IGFsaWduUHJvcFR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEcm9wZG93bkhlYWRlciA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnZHJvcGRvd24taGVhZGVyJywge1xuICBkZWZhdWx0UHJvcHM6IHtcbiAgICByb2xlOiAnaGVhZGluZydcbiAgfVxufSk7XG5jb25zdCBEcm9wZG93bkRpdmlkZXIgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2Ryb3Bkb3duLWRpdmlkZXInLCB7XG4gIENvbXBvbmVudDogJ2hyJyxcbiAgZGVmYXVsdFByb3BzOiB7XG4gICAgcm9sZTogJ3NlcGFyYXRvcidcbiAgfVxufSk7XG5jb25zdCBEcm9wZG93bkl0ZW1UZXh0ID0gY3JlYXRlV2l0aEJzUHJlZml4KCdkcm9wZG93bi1pdGVtLXRleHQnLCB7XG4gIENvbXBvbmVudDogJ3NwYW4nXG59KTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgbmF2YmFyOiBmYWxzZSxcbiAgYWxpZ246ICdzdGFydCcsXG4gIGF1dG9DbG9zZTogdHJ1ZSxcbiAgZHJvcDogJ2Rvd24nXG59O1xuY29uc3QgRHJvcGRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigocFByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGJzUHJlZml4LFxuICAgIGRyb3AsXG4gICAgc2hvdyxcbiAgICBjbGFzc05hbWUsXG4gICAgYWxpZ24sXG4gICAgb25TZWxlY3QsXG4gICAgb25Ub2dnbGUsXG4gICAgZm9jdXNGaXJzdEl0ZW1PblNob3csXG4gICAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICAgIGFzOiBDb21wb25lbnQgPSAnZGl2JyxcbiAgICBuYXZiYXI6IF80LFxuICAgIGF1dG9DbG9zZSxcbiAgICAuLi5wcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHBQcm9wcywge1xuICAgIHNob3c6ICdvblRvZ2dsZSdcbiAgfSk7XG4gIGNvbnN0IGlzSW5wdXRHcm91cCA9IHVzZUNvbnRleHQoSW5wdXRHcm91cENvbnRleHQpO1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bicpO1xuICBjb25zdCBpc1JUTCA9IHVzZUlzUlRMKCk7XG4gIGNvbnN0IGlzQ2xvc2luZ1Blcm1pdHRlZCA9IHNvdXJjZSA9PiB7XG4gICAgLy8gYXV0b0Nsb3NlPWZhbHNlIG9ubHkgcGVybWl0cyBjbG9zZSBvbiBidXR0b24gY2xpY2tcbiAgICBpZiAoYXV0b0Nsb3NlID09PSBmYWxzZSkgcmV0dXJuIHNvdXJjZSA9PT0gJ2NsaWNrJztcblxuICAgIC8vIGF1dG9DbG9zZT1pbnNpZGUgZG9lc24ndCBwZXJtaXQgY2xvc2Ugb24gcm9vdENsb3NlXG4gICAgaWYgKGF1dG9DbG9zZSA9PT0gJ2luc2lkZScpIHJldHVybiBzb3VyY2UgIT09ICdyb290Q2xvc2UnO1xuXG4gICAgLy8gYXV0b0Nsb3NlPW91dHNpZGUgZG9lc24ndCBwZXJtaXQgY2xvc2Ugb24gc2VsZWN0XG4gICAgaWYgKGF1dG9DbG9zZSA9PT0gJ291dHNpZGUnKSByZXR1cm4gc291cmNlICE9PSAnc2VsZWN0JztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlVG9nZ2xlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFNob3csIG1ldGEpID0+IHtcbiAgICBpZiAobWV0YS5vcmlnaW5hbEV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGRvY3VtZW50ICYmIChtZXRhLnNvdXJjZSAhPT0gJ2tleWRvd24nIHx8IG1ldGEub3JpZ2luYWxFdmVudC5rZXkgPT09ICdFc2NhcGUnKSkgbWV0YS5zb3VyY2UgPSAncm9vdENsb3NlJztcbiAgICBpZiAoaXNDbG9zaW5nUGVybWl0dGVkKG1ldGEuc291cmNlKSkgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKG5leHRTaG93LCBtZXRhKTtcbiAgfSk7XG4gIGNvbnN0IGFsaWduRW5kID0gYWxpZ24gPT09ICdlbmQnO1xuICBjb25zdCBwbGFjZW1lbnQgPSBnZXREcm9wZG93bk1lbnVQbGFjZW1lbnQoYWxpZ25FbmQsIGRyb3AsIGlzUlRMKTtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGFsaWduLFxuICAgIGRyb3AsXG4gICAgaXNSVExcbiAgfSksIFthbGlnbiwgZHJvcCwgaXNSVExdKTtcbiAgY29uc3QgZGlyZWN0aW9uQ2xhc3NlcyA9IHtcbiAgICBkb3duOiBwcmVmaXgsXG4gICAgJ2Rvd24tY2VudGVyZWQnOiBgJHtwcmVmaXh9LWNlbnRlcmAsXG4gICAgdXA6ICdkcm9wdXAnLFxuICAgICd1cC1jZW50ZXJlZCc6ICdkcm9wdXAtY2VudGVyIGRyb3B1cCcsXG4gICAgZW5kOiAnZHJvcGVuZCcsXG4gICAgc3RhcnQ6ICdkcm9wc3RhcnQnXG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChEcm9wZG93bkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChCYXNlRHJvcGRvd24sIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgc2hvdzogc2hvdyxcbiAgICAgIG9uU2VsZWN0OiBvblNlbGVjdCxcbiAgICAgIG9uVG9nZ2xlOiBoYW5kbGVUb2dnbGUsXG4gICAgICBmb2N1c0ZpcnN0SXRlbU9uU2hvdzogZm9jdXNGaXJzdEl0ZW1PblNob3csXG4gICAgICBpdGVtU2VsZWN0b3I6IGAuJHtwcmVmaXh9LWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZClgLFxuICAgICAgY2hpbGRyZW46IGlzSW5wdXRHcm91cCA/IHByb3BzLmNoaWxkcmVuIDogLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgc2hvdyAmJiAnc2hvdycsIGRpcmVjdGlvbkNsYXNzZXNbZHJvcF0pXG4gICAgICB9KVxuICAgIH0pXG4gIH0pO1xufSk7XG5Ecm9wZG93bi5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bic7XG5Ecm9wZG93bi5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKERyb3Bkb3duLCB7XG4gIFRvZ2dsZTogRHJvcGRvd25Ub2dnbGUsXG4gIE1lbnU6IERyb3Bkb3duTWVudSxcbiAgSXRlbTogRHJvcGRvd25JdGVtLFxuICBJdGVtVGV4dDogRHJvcGRvd25JdGVtVGV4dCxcbiAgRGl2aWRlcjogRHJvcGRvd25EaXZpZGVyLFxuICBIZWFkZXI6IERyb3Bkb3duSGVhZGVyXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBUYWJDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgZGVmYXVsdCBUYWJDb250ZXh0OyIsImNvbnN0IF9leGNsdWRlZCA9IFtcImFzXCIsIFwiYWN0aXZlXCIsIFwiZXZlbnRLZXlcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgTmF2Q29udGV4dCBmcm9tICcuL05hdkNvbnRleHQnO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0LCB7IG1ha2VFdmVudEtleSB9IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBkYXRhQXR0ciB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgVGFiQ29udGV4dCBmcm9tICcuL1RhYkNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VOYXZJdGVtKHtcbiAga2V5LFxuICBvbkNsaWNrLFxuICBhY3RpdmUsXG4gIGlkLFxuICByb2xlLFxuICBkaXNhYmxlZFxufSkge1xuICBjb25zdCBwYXJlbnRPblNlbGVjdCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlQ29udGV4dChOYXZDb250ZXh0KTtcbiAgY29uc3QgdGFiQ29udGV4dCA9IHVzZUNvbnRleHQoVGFiQ29udGV4dCk7XG4gIGxldCBpc0FjdGl2ZSA9IGFjdGl2ZTtcbiAgY29uc3QgcHJvcHMgPSB7XG4gICAgcm9sZVxuICB9O1xuICBpZiAobmF2Q29udGV4dCkge1xuICAgIGlmICghcm9sZSAmJiBuYXZDb250ZXh0LnJvbGUgPT09ICd0YWJsaXN0JykgcHJvcHMucm9sZSA9ICd0YWInO1xuICAgIGNvbnN0IGNvbnRleHRDb250cm9sbGVySWQgPSBuYXZDb250ZXh0LmdldENvbnRyb2xsZXJJZChrZXkgIT0gbnVsbCA/IGtleSA6IG51bGwpO1xuICAgIGNvbnN0IGNvbnRleHRDb250cm9sbGVkSWQgPSBuYXZDb250ZXh0LmdldENvbnRyb2xsZWRJZChrZXkgIT0gbnVsbCA/IGtleSA6IG51bGwpO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByb3BzW2RhdGFBdHRyKCdldmVudC1rZXknKV0gPSBrZXk7XG4gICAgcHJvcHMuaWQgPSBjb250ZXh0Q29udHJvbGxlcklkIHx8IGlkO1xuICAgIGlzQWN0aXZlID0gYWN0aXZlID09IG51bGwgJiYga2V5ICE9IG51bGwgPyBuYXZDb250ZXh0LmFjdGl2ZUtleSA9PT0ga2V5IDogYWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogU2ltcGxpZmllZCBzY2VuYXJpbyBmb3IgYG1vdW50T25FbnRlcmAuXG4gICAgICpcbiAgICAgKiBXaGlsZSBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGtlZXAgJ2FyaWEtY29udHJvbHMnIGZvciB0YWJzIHRoYXQgaGF2ZSBiZWVuIG1vdW50ZWQgYXQgbGVhc3RcbiAgICAgKiBvbmNlLCBpdCB3b3VsZCBhbHNvIGNvbXBsaWNhdGUgdGhlIGNvZGUgcXVpdGUgYSBiaXQsIGZvciB2ZXJ5IGxpdHRsZSBnYWluLlxuICAgICAqIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaXMgcHJvYmFibHkgZ29vZCBlbm91Z2guXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1yZXN0YXJ0L3VpL3B1bGwvNDAjaXNzdWVjb21tZW50LTEwMDk5NzE1NjFcbiAgICAgKi9cbiAgICBpZiAoaXNBY3RpdmUgfHwgISh0YWJDb250ZXh0ICE9IG51bGwgJiYgdGFiQ29udGV4dC51bm1vdW50T25FeGl0KSAmJiAhKHRhYkNvbnRleHQgIT0gbnVsbCAmJiB0YWJDb250ZXh0Lm1vdW50T25FbnRlcikpIHByb3BzWydhcmlhLWNvbnRyb2xzJ10gPSBjb250ZXh0Q29udHJvbGxlZElkO1xuICB9XG4gIGlmIChwcm9wcy5yb2xlID09PSAndGFiJykge1xuICAgIHByb3BzWydhcmlhLXNlbGVjdGVkJ10gPSBpc0FjdGl2ZTtcbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICBwcm9wcy50YWJJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHByb3BzLnRhYkluZGV4ID0gLTE7XG4gICAgICBwcm9wc1snYXJpYS1kaXNhYmxlZCddID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcHJvcHMub25DbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgb25DbGljayA9PSBudWxsID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHBhcmVudE9uU2VsZWN0ICYmICFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIHBhcmVudE9uU2VsZWN0KGtleSwgZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIFtwcm9wcywge1xuICAgIGlzQWN0aXZlXG4gIH1dO1xufVxuY29uc3QgTmF2SXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIGFzOiBDb21wb25lbnQgPSBCdXR0b24sXG4gICAgICBhY3RpdmUsXG4gICAgICBldmVudEtleVxuICAgIH0gPSBfcmVmLFxuICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbcHJvcHMsIG1ldGFdID0gdXNlTmF2SXRlbShPYmplY3QuYXNzaWduKHtcbiAgICBrZXk6IG1ha2VFdmVudEtleShldmVudEtleSwgb3B0aW9ucy5ocmVmKSxcbiAgICBhY3RpdmVcbiAgfSwgb3B0aW9ucykpO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJvcHNbZGF0YUF0dHIoJ2FjdGl2ZScpXSA9IG1ldGEuaXNBY3RpdmU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMsIHByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpO1xufSk7XG5OYXZJdGVtLmRpc3BsYXlOYW1lID0gJ05hdkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgTmF2SXRlbTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBbmNob3IgZnJvbSAnQHJlc3RhcnQvdWkvQW5jaG9yJztcbmltcG9ydCB7IHVzZU5hdkl0ZW0gfSBmcm9tICdAcmVzdGFydC91aS9OYXZJdGVtJztcbmltcG9ydCB7IG1ha2VFdmVudEtleSB9IGZyb20gJ0ByZXN0YXJ0L3VpL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBkaXNhYmxlZDogZmFsc2Vcbn07XG5jb25zdCBOYXZMaW5rID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgYXM6IENvbXBvbmVudCA9IEFuY2hvcixcbiAgYWN0aXZlLFxuICBldmVudEtleSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ25hdi1saW5rJyk7XG4gIGNvbnN0IFtuYXZJdGVtUHJvcHMsIG1ldGFdID0gdXNlTmF2SXRlbSh7XG4gICAga2V5OiBtYWtlRXZlbnRLZXkoZXZlbnRLZXksIHByb3BzLmhyZWYpLFxuICAgIGFjdGl2ZSxcbiAgICAuLi5wcm9wc1xuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIC4uLm5hdkl0ZW1Qcm9wcyxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeCwgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJywgbWV0YS5pc0FjdGl2ZSAmJiAnYWN0aXZlJylcbiAgfSk7XG59KTtcbk5hdkxpbmsuZGlzcGxheU5hbWUgPSAnTmF2TGluayc7XG5OYXZMaW5rLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE5hdkxpbms7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJy4vRHJvcGRvd24nO1xuaW1wb3J0IE5hdkxpbmsgZnJvbSAnLi9OYXZMaW5rJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZEcm9wZG93biA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGlkLFxuICB0aXRsZSxcbiAgY2hpbGRyZW4sXG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIHJvb3RDbG9zZUV2ZW50LFxuICBtZW51Um9sZSxcbiAgZGlzYWJsZWQsXG4gIGFjdGl2ZSxcbiAgcmVuZGVyTWVudU9uTW91bnQsXG4gIG1lbnVWYXJpYW50LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIE5hdkl0ZW0gaGFzIG5vIGFkZGl0aW9uYWwgbG9naWMsIGl0J3MgcHVyZWx5IHByZXNlbnRhdGlvbmFsLiBDYW4gc2V0IG5hdiBpdGVtIGNsYXNzIGhlcmUgdG8gc3VwcG9ydCBcImFzXCIgKi9cbiAgY29uc3QgbmF2SXRlbVByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeCh1bmRlZmluZWQsICduYXYtaXRlbScpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKERyb3Bkb3duLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgbmF2SXRlbVByZWZpeCksXG4gICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChEcm9wZG93bi5Ub2dnbGUsIHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGV2ZW50S2V5OiBudWxsLFxuICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICBjaGlsZEJzUHJlZml4OiBic1ByZWZpeCxcbiAgICAgIGFzOiBOYXZMaW5rLFxuICAgICAgY2hpbGRyZW46IHRpdGxlXG4gICAgfSksIC8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duLk1lbnUsIHtcbiAgICAgIHJvbGU6IG1lbnVSb2xlLFxuICAgICAgcmVuZGVyT25Nb3VudDogcmVuZGVyTWVudU9uTW91bnQsXG4gICAgICByb290Q2xvc2VFdmVudDogcm9vdENsb3NlRXZlbnQsXG4gICAgICB2YXJpYW50OiBtZW51VmFyaWFudCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXVxuICB9KTtcbn0pO1xuTmF2RHJvcGRvd24uZGlzcGxheU5hbWUgPSAnTmF2RHJvcGRvd24nO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXZEcm9wZG93biwge1xuICBJdGVtOiBEcm9wZG93bi5JdGVtLFxuICBJdGVtVGV4dDogRHJvcGRvd24uSXRlbVRleHQsXG4gIERpdmlkZXI6IERyb3Bkb3duLkRpdmlkZXIsXG4gIEhlYWRlcjogRHJvcGRvd24uSGVhZGVyXG59KTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEluZm9TZXJ2aWNlIH0gZnJvbSBcIi4uL0luZm9TZXJ2aWNlXCI7XG5pbXBvcnQgeyBMb2dpbkZvcm0gfSBmcm9tIFwiLi9Mb2dpbkZvcm1cIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcbmltcG9ydCB7IE5hdkRyb3Bkb3duIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcFwiO1xuXG5mdW5jdGlvbiBfVXNlckNvbXBvbmVudChzZXNzaW9uX2luZm8sIGxvZ291dF9jYWxsYmFjaykge1xuICBjb25zdCB0aXRsZSA9IChcbiAgICA8PlxuICAgICAge3Nlc3Npb25faW5mby51c2VybmFtZX0gPGkgY2xhc3NOYW1lPVwiYmkgYmktcGVyc29uLWZpbGxcIiAvPlxuICAgIDwvPlxuICApO1xuICByZXR1cm4gKFxuICAgIDxOYXZEcm9wZG93biBhbGlnbj1cImVuZFwiIHRpdGxlPXt0aXRsZX0+XG4gICAgICA8TmF2RHJvcGRvd24uSXRlbSBhcz1cImJ1dHRvblwiIG9uQ2xpY2s9e2xvZ291dF9jYWxsYmFja30gaHJlZj1cIiNcIj5cbiAgICAgICAgTG9nb3V0XG4gICAgICA8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgPC9OYXZEcm9wZG93bj5cbiAgKTtcbn1cblxuLyoqXG4gKiBAZnVuY3Rpb24gb25Mb2dvdXRDYWxsYmFja1xuICpcbiAqIFRvIGJlIHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgbG9nb3V0LlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAZnVuY3Rpb24gb25Mb2dpbkNhbGxiYWNrXG4gKlxuICogVG8gYmUgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dpbi5cbiAqXG4gKiBAcGFyYW0ge0BpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZS5TZXNzaW9uSW5mb30gc2Vzc2lvbkluZm8gYWJvdXRcbiAqICAgdGhlIGN1cnJlbnQgdXNlci5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBUaGUgVXNlckNvbXBvbmVudCBzaG93cyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdXNlciBvciBhXG4gKiBMb2dpbkZvcm0uXG4gKlxuICogQHBhcmFtIHtvbkxvZ2luQ2FsbGJhY2t9IG9uTG9naW4gQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZVxuICogICBjYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luLiBXaGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZVxuICogICBVc2VyQ29tcG9uZW50IHByb2NlZWRzIGFzIHVzdWFsIGFuZCByZS1yZW5kZXJzIHRoZSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge29uTG9nb3V0Q2FsbGJhY2t9IG9uTG9nb3V0IENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmVcbiAqICAgY2FsbGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dvdXQuIFdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlXG4gKiAgIFVzZXJDb21wb25lbnQgcHJvY2VlZHMgYXMgdXN1YWwgYW5kIHJlLXJlbmRlcnMgdGhlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVzZXJDb21wb25lbnQob25Mb2dpbiwgb25Mb2dvdXQpIHtcbiAgY29uc3QgW2NvbXBvbmVudCwgc2V0Q29tcG9uZW50XSA9IHVzZVN0YXRlKG51bGwpO1xuXG4gIHZhciBzaG93X2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgaWYgKGNvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgIHZhciBzaG93X2xvZ2luX2Zvcm07XG5cbiAgICBjb25zdCBsb2dvdXRfY2FsbGJhY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRDb21wb25lbnQoPExvYWRpbmdJbmZvIHNpemU9XCJzbVwiIC8+KTtcbiAgICAgICAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICAgICAgICBhd2FpdCBzZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICBpZiAob25Mb2dvdXQoKSkge1xuICAgICAgICAgIHNob3dfbG9naW5fZm9ybShcIllvdSBoYXZlIGJlZW4gbG9nZ2VkIG91dC5cIiwgXCJzdWNjZXNzXCIpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHNob3dfbG9naW5fZm9ybShcIkxvZ291dCBmYWlsZWQ6IFwiICsgZS5tZXNzYWdlLCBcImVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBzaG93X3Nlc3Npb25faW5mbyA9IChzZXNzaW9uX2luZm8pID0+IHtcbiAgICAgIC8vIFRPRE8gaXNfYW5vbnltb3VzIG1lbWJlcj9cbiAgICAgIGlmIChzZXNzaW9uX2luZm8udXNlcm5hbWUgPT09IFwiYW5vbnltb3VzXCIpIHtcbiAgICAgICAgc2hvd19sb2dpbl9mb3JtKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRDb21wb25lbnQoX1VzZXJDb21wb25lbnQoc2Vzc2lvbl9pbmZvLCBsb2dvdXRfY2FsbGJhY2spKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgbG9naW5fZmFpbCA9IChlcnJvcikgPT4ge1xuICAgICAgc2hvd19sb2dpbl9mb3JtKGVycm9yLm1lc3NhZ2UsIFwiZXJyb3JcIik7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvZ2luX3N1Y2Nlc3MgPSAoc2Vzc2lvbl9pbmZvKSA9PiB7XG4gICAgICBpZiAob25Mb2dpbihzZXNzaW9uX2luZm8pKSB7XG4gICAgICAgIHNob3dfc2Vzc2lvbl9pbmZvKHNlc3Npb25faW5mbyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNob3dfbG9naW5fZm9ybSA9IChtZXNzYWdlLCBtZXNzYWdlVHlwZSkgPT4ge1xuICAgICAgdmFyIGxvZ2luX2Zvcm0gPSAoXG4gICAgICAgIDxMb2dpbkZvcm1cbiAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgIG1lc3NhZ2VUeXBlPXttZXNzYWdlVHlwZX1cbiAgICAgICAgICB0aGVuPXtsb2dpbl9zdWNjZXNzfVxuICAgICAgICAgIG9uRXJyb3I9e2xvZ2luX2ZhaWx9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgc2V0Q29tcG9uZW50KGxvZ2luX2Zvcm0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gICAgc2VydmljZVxuICAgICAgLmdldFNlc3Npb25JbmZvKClcbiAgICAgIC50aGVuKHNob3dfc2Vzc2lvbl9pbmZvKVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4gc2hvd19sb2dpbl9mb3JtKGVycm9yLm1lc3NhZ2UsIFwiaW5mb1wiKSk7XG4gICAgc2hvd19jb21wb25lbnQgPSA8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz47XG4gIH1cblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJ1c2VyLWNvbXBvbmVudFwiPntzaG93X2NvbXBvbmVudH08L2Rpdj47XG59XG5cblVzZXJDb21wb25lbnQuZGVmYXVsdFByb3BzID0ge1xuICBvbkxvZ2luOiAoKSA9PiB0cnVlLFxuICBvbkxvZ291dDogKCkgPT4gdHJ1ZSxcbn07XG4iLCJjb25zdCBCcmFuZGluZyA9IHtcbiAgbmFtZTogXCJDYW9zREJcIixcbn07XG5cbmV4cG9ydCB7IEJyYW5kaW5nIH07XG4iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJhc1wiLCBcIm9uU2VsZWN0XCIsIFwiYWN0aXZlS2V5XCIsIFwicm9sZVwiLCBcIm9uS2V5RG93blwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCBxc2EgZnJvbSAnZG9tLWhlbHBlcnMvcXVlcnlTZWxlY3RvckFsbCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VGb3JjZVVwZGF0ZSBmcm9tICdAcmVzdGFydC9ob29rcy91c2VGb3JjZVVwZGF0ZSc7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQsIHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgVGFiQ29udGV4dCBmcm9tICcuL1RhYkNvbnRleHQnO1xuaW1wb3J0IHsgZGF0YUF0dHIsIGRhdGFQcm9wIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBOYXZJdGVtIGZyb20gJy4vTmF2SXRlbSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuY29uc3QgRVZFTlRfS0VZX0FUVFIgPSBkYXRhQXR0cignZXZlbnQta2V5Jyk7XG5jb25zdCBOYXYgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gICAgICBvblNlbGVjdCxcbiAgICAgIGFjdGl2ZUtleSxcbiAgICAgIHJvbGUsXG4gICAgICBvbktleURvd25cbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIC8vIEEgcmVmIGFuZCBmb3JjZVVwZGF0ZSBmb3IgcmVmb2N1cywgYi9jIHdlIG9ubHkgd2FudCB0byB0cmlnZ2VyIHdoZW4gbmVlZGVkXG4gIC8vIGFuZCBkb24ndCB3YW50IHRvIHJlc2V0IHRoZSBzZXQgaW4gdGhlIGVmZmVjdFxuICBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gIGNvbnN0IG5lZWRzUmVmb2N1c1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHBhcmVudE9uU2VsZWN0ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IHRhYkNvbnRleHQgPSB1c2VDb250ZXh0KFRhYkNvbnRleHQpO1xuICBsZXQgZ2V0Q29udHJvbGxlZElkLCBnZXRDb250cm9sbGVySWQ7XG4gIGlmICh0YWJDb250ZXh0KSB7XG4gICAgcm9sZSA9IHJvbGUgfHwgJ3RhYmxpc3QnO1xuICAgIGFjdGl2ZUtleSA9IHRhYkNvbnRleHQuYWN0aXZlS2V5O1xuICAgIC8vIFRPRE86IGRvIHdlIG5lZWQgdG8gZHVwbGljYXRlIHRoZXNlP1xuICAgIGdldENvbnRyb2xsZWRJZCA9IHRhYkNvbnRleHQuZ2V0Q29udHJvbGxlZElkO1xuICAgIGdldENvbnRyb2xsZXJJZCA9IHRhYkNvbnRleHQuZ2V0Q29udHJvbGxlcklkO1xuICB9XG4gIGNvbnN0IGxpc3ROb2RlID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBnZXROZXh0QWN0aXZlVGFiID0gb2Zmc2V0ID0+IHtcbiAgICBjb25zdCBjdXJyZW50TGlzdE5vZGUgPSBsaXN0Tm9kZS5jdXJyZW50O1xuICAgIGlmICghY3VycmVudExpc3ROb2RlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBpdGVtcyA9IHFzYShjdXJyZW50TGlzdE5vZGUsIGBbJHtFVkVOVF9LRVlfQVRUUn1dOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSlgKTtcbiAgICBjb25zdCBhY3RpdmVDaGlsZCA9IGN1cnJlbnRMaXN0Tm9kZS5xdWVyeVNlbGVjdG9yKCdbYXJpYS1zZWxlY3RlZD10cnVlXScpO1xuICAgIGlmICghYWN0aXZlQ2hpbGQgfHwgYWN0aXZlQ2hpbGQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGluZGV4ID0gaXRlbXMuaW5kZXhPZihhY3RpdmVDaGlsZCk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IG5leHRJbmRleCA9IGluZGV4ICsgb2Zmc2V0O1xuICAgIGlmIChuZXh0SW5kZXggPj0gaXRlbXMubGVuZ3RoKSBuZXh0SW5kZXggPSAwO1xuICAgIGlmIChuZXh0SW5kZXggPCAwKSBuZXh0SW5kZXggPSBpdGVtcy5sZW5ndGggLSAxO1xuICAgIHJldHVybiBpdGVtc1tuZXh0SW5kZXhdO1xuICB9O1xuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoa2V5LCBldmVudCkgPT4ge1xuICAgIGlmIChrZXkgPT0gbnVsbCkgcmV0dXJuO1xuICAgIG9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdChrZXksIGV2ZW50KTtcbiAgICBwYXJlbnRPblNlbGVjdCA9PSBudWxsID8gdm9pZCAwIDogcGFyZW50T25TZWxlY3Qoa2V5LCBldmVudCk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgb25LZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbktleURvd24oZXZlbnQpO1xuICAgIGlmICghdGFiQ29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV4dEFjdGl2ZUNoaWxkO1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIG5leHRBY3RpdmVDaGlsZCA9IGdldE5leHRBY3RpdmVUYWIoLTEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgbmV4dEFjdGl2ZUNoaWxkID0gZ2V0TmV4dEFjdGl2ZVRhYigxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbmV4dEFjdGl2ZUNoaWxkKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBoYW5kbGVTZWxlY3QobmV4dEFjdGl2ZUNoaWxkLmRhdGFzZXRbZGF0YVByb3AoJ0V2ZW50S2V5JyldIHx8IG51bGwsIGV2ZW50KTtcbiAgICBuZWVkc1JlZm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgZm9yY2VVcGRhdGUoKTtcbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGlzdE5vZGUuY3VycmVudCAmJiBuZWVkc1JlZm9jdXNSZWYuY3VycmVudCkge1xuICAgICAgY29uc3QgYWN0aXZlQ2hpbGQgPSBsaXN0Tm9kZS5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYFske0VWRU5UX0tFWV9BVFRSfV1bYXJpYS1zZWxlY3RlZD10cnVlXWApO1xuICAgICAgYWN0aXZlQ2hpbGQgPT0gbnVsbCA/IHZvaWQgMCA6IGFjdGl2ZUNoaWxkLmZvY3VzKCk7XG4gICAgfVxuICAgIG5lZWRzUmVmb2N1c1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gIH0pO1xuICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgbGlzdE5vZGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU2VsZWN0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogaGFuZGxlU2VsZWN0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChOYXZDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZToge1xuICAgICAgICByb2xlLFxuICAgICAgICAvLyB1c2VkIGJ5IE5hdkxpbmsgdG8gZGV0ZXJtaW5lIGl0J3Mgcm9sZVxuICAgICAgICBhY3RpdmVLZXk6IG1ha2VFdmVudEtleShhY3RpdmVLZXkpLFxuICAgICAgICBnZXRDb250cm9sbGVkSWQ6IGdldENvbnRyb2xsZWRJZCB8fCBub29wLFxuICAgICAgICBnZXRDb250cm9sbGVySWQ6IGdldENvbnRyb2xsZXJJZCB8fCBub29wXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgICByZWY6IG1lcmdlZFJlZixcbiAgICAgICAgcm9sZTogcm9sZVxuICAgICAgfSkpXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdi5kaXNwbGF5TmFtZSA9ICdOYXYnO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXYsIHtcbiAgSXRlbTogTmF2SXRlbVxufSk7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29udGV4dC5kaXNwbGF5TmFtZSA9ICdDYXJkSGVhZGVyQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0OyIsImltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlV2l0aEJzUHJlZml4KCduYXYtaXRlbScpOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGFsbCBmcm9tICdwcm9wLXR5cGVzLWV4dHJhL2xpYi9hbGwnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCBCYXNlTmF2IGZyb20gJ0ByZXN0YXJ0L3VpL05hdic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCBDYXJkSGVhZGVyQ29udGV4dCBmcm9tICcuL0NhcmRIZWFkZXJDb250ZXh0JztcbmltcG9ydCBOYXZJdGVtIGZyb20gJy4vTmF2SXRlbSc7XG5pbXBvcnQgTmF2TGluayBmcm9tICcuL05hdkxpbmsnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAganVzdGlmeTogZmFsc2UsXG4gIGZpbGw6IGZhbHNlXG59O1xuY29uc3QgTmF2ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHVuY29udHJvbGxlZFByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGFzID0gJ2RpdicsXG4gICAgYnNQcmVmaXg6IGluaXRpYWxCc1ByZWZpeCxcbiAgICB2YXJpYW50LFxuICAgIGZpbGwsXG4gICAganVzdGlmeSxcbiAgICBuYXZiYXIsXG4gICAgbmF2YmFyU2Nyb2xsLFxuICAgIGNsYXNzTmFtZSxcbiAgICBhY3RpdmVLZXksXG4gICAgLi4ucHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZCh1bmNvbnRyb2xsZWRQcm9wcywge1xuICAgIGFjdGl2ZUtleTogJ29uU2VsZWN0J1xuICB9KTtcbiAgY29uc3QgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoaW5pdGlhbEJzUHJlZml4LCAnbmF2Jyk7XG4gIGxldCBuYXZiYXJCc1ByZWZpeDtcbiAgbGV0IGNhcmRIZWFkZXJCc1ByZWZpeDtcbiAgbGV0IGlzTmF2YmFyID0gZmFsc2U7XG4gIGNvbnN0IG5hdmJhckNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICBjb25zdCBjYXJkSGVhZGVyQ29udGV4dCA9IHVzZUNvbnRleHQoQ2FyZEhlYWRlckNvbnRleHQpO1xuICBpZiAobmF2YmFyQ29udGV4dCkge1xuICAgIG5hdmJhckJzUHJlZml4ID0gbmF2YmFyQ29udGV4dC5ic1ByZWZpeDtcbiAgICBpc05hdmJhciA9IG5hdmJhciA9PSBudWxsID8gdHJ1ZSA6IG5hdmJhcjtcbiAgfSBlbHNlIGlmIChjYXJkSGVhZGVyQ29udGV4dCkge1xuICAgICh7XG4gICAgICBjYXJkSGVhZGVyQnNQcmVmaXhcbiAgICB9ID0gY2FyZEhlYWRlckNvbnRleHQpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChCYXNlTmF2LCB7XG4gICAgYXM6IGFzLFxuICAgIHJlZjogcmVmLFxuICAgIGFjdGl2ZUtleTogYWN0aXZlS2V5LFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHtcbiAgICAgIFtic1ByZWZpeF06ICFpc05hdmJhcixcbiAgICAgIFtgJHtuYXZiYXJCc1ByZWZpeH0tbmF2YF06IGlzTmF2YmFyLFxuICAgICAgW2Ake25hdmJhckJzUHJlZml4fS1uYXYtc2Nyb2xsYF06IGlzTmF2YmFyICYmIG5hdmJhclNjcm9sbCxcbiAgICAgIFtgJHtjYXJkSGVhZGVyQnNQcmVmaXh9LSR7dmFyaWFudH1gXTogISFjYXJkSGVhZGVyQnNQcmVmaXgsXG4gICAgICBbYCR7YnNQcmVmaXh9LSR7dmFyaWFudH1gXTogISF2YXJpYW50LFxuICAgICAgW2Ake2JzUHJlZml4fS1maWxsYF06IGZpbGwsXG4gICAgICBbYCR7YnNQcmVmaXh9LWp1c3RpZmllZGBdOiBqdXN0aWZ5XG4gICAgfSksXG4gICAgLi4ucHJvcHNcbiAgfSk7XG59KTtcbk5hdi5kaXNwbGF5TmFtZSA9ICdOYXYnO1xuTmF2LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTmF2LCB7XG4gIEl0ZW06IE5hdkl0ZW0sXG4gIExpbms6IE5hdkxpbmtcbn0pOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZiYXJCcmFuZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGFzLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2YmFyLWJyYW5kJyk7XG4gIGNvbnN0IENvbXBvbmVudCA9IGFzIHx8IChwcm9wcy5ocmVmID8gJ2EnIDogJ3NwYW4nKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4KVxuICB9KTtcbn0pO1xuTmF2YmFyQnJhbmQuZGlzcGxheU5hbWUgPSAnTmF2YmFyQnJhbmQnO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyQnJhbmQ7IiwiLyoqXG4gKiBTYWZlIGNoYWluZWQgZnVuY3Rpb25cbiAqXG4gKiBXaWxsIG9ubHkgY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGlmIG5lZWRlZCxcbiAqIG90aGVyd2lzZSB3aWxsIHBhc3MgYmFjayBleGlzdGluZyBmdW5jdGlvbnMgb3IgbnVsbC5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmdW5jdGlvbnMgdG8gY2hhaW5cbiAqIEByZXR1cm5zIHtmdW5jdGlvbnxudWxsfVxuICovXG5mdW5jdGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oLi4uZnVuY3MpIHtcbiAgcmV0dXJuIGZ1bmNzLmZpbHRlcihmID0+IGYgIT0gbnVsbCkucmVkdWNlKChhY2MsIGYpID0+IHtcbiAgICBpZiAodHlwZW9mIGYgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBUeXBlLCBtdXN0IG9ubHkgcHJvdmlkZSBmdW5jdGlvbnMsIHVuZGVmaW5lZCwgb3IgbnVsbC4nKTtcbiAgICB9XG4gICAgaWYgKGFjYyA9PT0gbnVsbCkgcmV0dXJuIGY7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBhY2MuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH0sIG51bGwpO1xufVxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IGNzcyBmcm9tICdkb20taGVscGVycy9jc3MnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBFTlRFUkVELCBFTlRFUklORywgRVhJVEVELCBFWElUSU5HIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uJztcbmltcG9ydCB0cmFuc2l0aW9uRW5kTGlzdGVuZXIgZnJvbSAnLi90cmFuc2l0aW9uRW5kTGlzdGVuZXInO1xuaW1wb3J0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbiBmcm9tICcuL2NyZWF0ZUNoYWluZWRGdW5jdGlvbic7XG5pbXBvcnQgdHJpZ2dlckJyb3dzZXJSZWZsb3cgZnJvbSAnLi90cmlnZ2VyQnJvd3NlclJlZmxvdyc7XG5pbXBvcnQgVHJhbnNpdGlvbldyYXBwZXIgZnJvbSAnLi9UcmFuc2l0aW9uV3JhcHBlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTUFSR0lOUyA9IHtcbiAgaGVpZ2h0OiBbJ21hcmdpblRvcCcsICdtYXJnaW5Cb3R0b20nXSxcbiAgd2lkdGg6IFsnbWFyZ2luTGVmdCcsICdtYXJnaW5SaWdodCddXG59O1xuZnVuY3Rpb24gZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlKGRpbWVuc2lvbiwgZWxlbSkge1xuICBjb25zdCBvZmZzZXQgPSBgb2Zmc2V0JHtkaW1lbnNpb25bMF0udG9VcHBlckNhc2UoKX0ke2RpbWVuc2lvbi5zbGljZSgxKX1gO1xuICBjb25zdCB2YWx1ZSA9IGVsZW1bb2Zmc2V0XTtcbiAgY29uc3QgbWFyZ2lucyA9IE1BUkdJTlNbZGltZW5zaW9uXTtcbiAgcmV0dXJuIHZhbHVlICtcbiAgLy8gQHRzLWlnbm9yZVxuICBwYXJzZUludChjc3MoZWxlbSwgbWFyZ2luc1swXSksIDEwKSArXG4gIC8vIEB0cy1pZ25vcmVcbiAgcGFyc2VJbnQoY3NzKGVsZW0sIG1hcmdpbnNbMV0pLCAxMCk7XG59XG5jb25zdCBjb2xsYXBzZVN0eWxlcyA9IHtcbiAgW0VYSVRFRF06ICdjb2xsYXBzZScsXG4gIFtFWElUSU5HXTogJ2NvbGxhcHNpbmcnLFxuICBbRU5URVJJTkddOiAnY29sbGFwc2luZycsXG4gIFtFTlRFUkVEXTogJ2NvbGxhcHNlIHNob3cnXG59O1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIHRpbWVvdXQ6IDMwMCxcbiAgbW91bnRPbkVudGVyOiBmYWxzZSxcbiAgdW5tb3VudE9uRXhpdDogZmFsc2UsXG4gIGFwcGVhcjogZmFsc2UsXG4gIGdldERpbWVuc2lvblZhbHVlOiBnZXREZWZhdWx0RGltZW5zaW9uVmFsdWVcbn07XG5jb25zdCBDb2xsYXBzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIG9uRW50ZXIsXG4gIG9uRW50ZXJpbmcsXG4gIG9uRW50ZXJlZCxcbiAgb25FeGl0LFxuICBvbkV4aXRpbmcsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGRpbWVuc2lvbiA9ICdoZWlnaHQnLFxuICBnZXREaW1lbnNpb25WYWx1ZSA9IGdldERlZmF1bHREaW1lbnNpb25WYWx1ZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICAvKiBDb21wdXRlIGRpbWVuc2lvbiAqL1xuICBjb25zdCBjb21wdXRlZERpbWVuc2lvbiA9IHR5cGVvZiBkaW1lbnNpb24gPT09ICdmdW5jdGlvbicgPyBkaW1lbnNpb24oKSA6IGRpbWVuc2lvbjtcblxuICAvKiAtLSBFeHBhbmRpbmcgLS0gKi9cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9ICcwJztcbiAgfSwgb25FbnRlciksIFtjb21wdXRlZERpbWVuc2lvbiwgb25FbnRlcl0pO1xuICBjb25zdCBoYW5kbGVFbnRlcmluZyA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGNvbnN0IHNjcm9sbCA9IGBzY3JvbGwke2NvbXB1dGVkRGltZW5zaW9uWzBdLnRvVXBwZXJDYXNlKCl9JHtjb21wdXRlZERpbWVuc2lvbi5zbGljZSgxKX1gO1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gYCR7ZWxlbVtzY3JvbGxdfXB4YDtcbiAgfSwgb25FbnRlcmluZyksIFtjb21wdXRlZERpbWVuc2lvbiwgb25FbnRlcmluZ10pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBudWxsO1xuICB9LCBvbkVudGVyZWQpLCBbY29tcHV0ZWREaW1lbnNpb24sIG9uRW50ZXJlZF0pO1xuXG4gIC8qIC0tIENvbGxhcHNpbmcgLS0gKi9cbiAgY29uc3QgaGFuZGxlRXhpdCA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gYCR7Z2V0RGltZW5zaW9uVmFsdWUoY29tcHV0ZWREaW1lbnNpb24sIGVsZW0pfXB4YDtcbiAgICB0cmlnZ2VyQnJvd3NlclJlZmxvdyhlbGVtKTtcbiAgfSwgb25FeGl0KSwgW29uRXhpdCwgZ2V0RGltZW5zaW9uVmFsdWUsIGNvbXB1dGVkRGltZW5zaW9uXSk7XG4gIGNvbnN0IGhhbmRsZUV4aXRpbmcgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9IG51bGw7XG4gIH0sIG9uRXhpdGluZyksIFtjb21wdXRlZERpbWVuc2lvbiwgb25FeGl0aW5nXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uV3JhcHBlciwge1xuICAgIHJlZjogcmVmLFxuICAgIGFkZEVuZExpc3RlbmVyOiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIsXG4gICAgLi4ucHJvcHMsXG4gICAgXCJhcmlhLWV4cGFuZGVkXCI6IHByb3BzLnJvbGUgPyBwcm9wcy5pbiA6IG51bGwsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRpbmc6IGhhbmRsZUV4aXRpbmcsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBjaGlsZHJlbjogKHN0YXRlLCBpbm5lclByb3BzKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAuLi5pbm5lclByb3BzLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCBjb2xsYXBzZVN0eWxlc1tzdGF0ZV0sIGNvbXB1dGVkRGltZW5zaW9uID09PSAnd2lkdGgnICYmICdjb2xsYXBzZS1ob3Jpem9udGFsJylcbiAgICB9KVxuICB9KTtcbn0pO1xuXG4vLyBAdHMtaWdub3JlXG5cbi8vIEB0cy1pZ25vcmVcbkNvbGxhcHNlLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IENvbGxhcHNlOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29sbGFwc2UgZnJvbSAnLi9Db2xsYXBzZSc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZiYXJDb2xsYXBzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNoaWxkcmVuLFxuICBic1ByZWZpeCxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ25hdmJhci1jb2xsYXBzZScpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbGxhcHNlLCB7XG4gICAgaW46ICEhKGNvbnRleHQgJiYgY29udGV4dC5leHBhbmRlZCksXG4gICAgLi4ucHJvcHMsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBic1ByZWZpeCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXG4gIH0pO1xufSk7XG5OYXZiYXJDb2xsYXBzZS5kaXNwbGF5TmFtZSA9ICdOYXZiYXJDb2xsYXBzZSc7XG5leHBvcnQgZGVmYXVsdCBOYXZiYXJDb2xsYXBzZTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgbGFiZWw6ICdUb2dnbGUgbmF2aWdhdGlvbidcbn07XG5jb25zdCBOYXZiYXJUb2dnbGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgbGFiZWwsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9ICdidXR0b24nLFxuICBvbkNsaWNrLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2YmFyLXRvZ2dsZXInKTtcbiAgY29uc3Qge1xuICAgIG9uVG9nZ2xlLFxuICAgIGV4cGFuZGVkXG4gIH0gPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpIHx8IHt9O1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKG9uQ2xpY2spIG9uQ2xpY2soZSk7XG4gICAgaWYgKG9uVG9nZ2xlKSBvblRvZ2dsZSgpO1xuICB9KTtcbiAgaWYgKENvbXBvbmVudCA9PT0gJ2J1dHRvbicpIHtcbiAgICBwcm9wcy50eXBlID0gJ2J1dHRvbic7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBsYWJlbCxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeCwgIWV4cGFuZGVkICYmICdjb2xsYXBzZWQnKSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogYCR7YnNQcmVmaXh9LWljb25gXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdmJhclRvZ2dsZS5kaXNwbGF5TmFtZSA9ICdOYXZiYXJUb2dnbGUnO1xuTmF2YmFyVG9nZ2xlLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE5hdmJhclRvZ2dsZTsiLCJpbXBvcnQgdXNlRWZmZWN0IGZyb20gJy4vdXNlSXNvbW9ycGhpY0VmZmVjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbnZhciBtYXRjaGVyc0J5V2luZG93ID0gbmV3IFdlYWtNYXAoKTtcblxudmFyIGdldE1hdGNoZXIgPSBmdW5jdGlvbiBnZXRNYXRjaGVyKHF1ZXJ5LCB0YXJnZXRXaW5kb3cpIHtcbiAgaWYgKCFxdWVyeSB8fCAhdGFyZ2V0V2luZG93KSByZXR1cm4gdW5kZWZpbmVkO1xuICB2YXIgbWF0Y2hlcnMgPSBtYXRjaGVyc0J5V2luZG93LmdldCh0YXJnZXRXaW5kb3cpIHx8IG5ldyBNYXAoKTtcbiAgbWF0Y2hlcnNCeVdpbmRvdy5zZXQodGFyZ2V0V2luZG93LCBtYXRjaGVycyk7XG4gIHZhciBtcWwgPSBtYXRjaGVycy5nZXQocXVlcnkpO1xuXG4gIGlmICghbXFsKSB7XG4gICAgbXFsID0gdGFyZ2V0V2luZG93Lm1hdGNoTWVkaWEocXVlcnkpO1xuICAgIG1xbC5yZWZDb3VudCA9IDA7XG4gICAgbWF0Y2hlcnMuc2V0KG1xbC5tZWRpYSwgbXFsKTtcbiAgfVxuXG4gIHJldHVybiBtcWw7XG59O1xuLyoqXG4gKiBNYXRjaCBhIG1lZGlhIHF1ZXJ5IGFuZCBnZXQgdXBkYXRlcyBhcyB0aGUgbWF0Y2ggY2hhbmdlcy4gVGhlIG1lZGlhIHN0cmluZyBpc1xuICogcGFzc2VkIGRpcmVjdGx5IHRvIGB3aW5kb3cubWF0Y2hNZWRpYWAgYW5kIHJ1biBhcyBhIExheW91dCBFZmZlY3QsIHNvIGluaXRpYWxcbiAqIG1hdGNoZXMgYXJlIHJldHVybmVkIGJlZm9yZSB0aGUgYnJvd3NlciBoYXMgYSBjaGFuY2UgdG8gcGFpbnQuXG4gKlxuICogYGBgdHN4XG4gKiBmdW5jdGlvbiBQYWdlKCkge1xuICogICBjb25zdCBpc1dpZGUgPSB1c2VNZWRpYVF1ZXJ5KCdtaW4td2lkdGg6IDEwMDBweCcpXG4gKlxuICogICByZXR1cm4gaXNXaWRlID8gXCJ2ZXJ5IHdpZGVcIiA6ICdub3Qgc28gd2lkZSdcbiAqIH1cbiAqIGBgYFxuICpcbiAqIE1lZGlhIHF1ZXJ5IGxpc3RzIGFyZSBhbHNvIHJldXNlZCBnbG9iYWxseSwgaG9vayBjYWxscyBmb3IgdGhlIHNhbWUgcXVlcnlcbiAqIHdpbGwgb25seSBjcmVhdGUgYSBtYXRjaGVyIG9uY2UgdW5kZXIgdGhlIGhvb2QuXG4gKlxuICogQHBhcmFtIHF1ZXJ5IEEgbWVkaWEgcXVlcnlcbiAqIEBwYXJhbSB0YXJnZXRXaW5kb3cgVGhlIHdpbmRvdyB0byBtYXRjaCBhZ2FpbnN0LCB1c2VzIHRoZSBnbG9iYWxseSBhdmFpbGFibGUgb25lIGFzIGEgZGVmYXVsdC5cbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnksIHRhcmdldFdpbmRvdykge1xuICBpZiAodGFyZ2V0V2luZG93ID09PSB2b2lkIDApIHtcbiAgICB0YXJnZXRXaW5kb3cgPSB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IHdpbmRvdztcbiAgfVxuXG4gIHZhciBtcWwgPSBnZXRNYXRjaGVyKHF1ZXJ5LCB0YXJnZXRXaW5kb3cpO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG1xbCA/IG1xbC5tYXRjaGVzIDogZmFsc2U7XG4gIH0pLFxuICAgICAgbWF0Y2hlcyA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldE1hdGNoZXMgPSBfdXNlU3RhdGVbMV07XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbXFsID0gZ2V0TWF0Y2hlcihxdWVyeSwgdGFyZ2V0V2luZG93KTtcblxuICAgIGlmICghbXFsKSB7XG4gICAgICByZXR1cm4gc2V0TWF0Y2hlcyhmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoZXJzID0gbWF0Y2hlcnNCeVdpbmRvdy5nZXQodGFyZ2V0V2luZG93KTtcblxuICAgIHZhciBoYW5kbGVDaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVDaGFuZ2UoKSB7XG4gICAgICBzZXRNYXRjaGVzKG1xbC5tYXRjaGVzKTtcbiAgICB9O1xuXG4gICAgbXFsLnJlZkNvdW50Kys7XG4gICAgbXFsLmFkZExpc3RlbmVyKGhhbmRsZUNoYW5nZSk7XG4gICAgaGFuZGxlQ2hhbmdlKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1xbC5yZW1vdmVMaXN0ZW5lcihoYW5kbGVDaGFuZ2UpO1xuICAgICAgbXFsLnJlZkNvdW50LS07XG5cbiAgICAgIGlmIChtcWwucmVmQ291bnQgPD0gMCkge1xuICAgICAgICBtYXRjaGVycyA9PSBudWxsID8gdm9pZCAwIDogbWF0Y2hlcnMuZGVsZXRlKG1xbC5tZWRpYSk7XG4gICAgICB9XG5cbiAgICAgIG1xbCA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbcXVlcnldKTtcbiAgcmV0dXJuIG1hdGNoZXM7XG59IiwiaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSAnLi91c2VNZWRpYVF1ZXJ5JztcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbi8qKlxuICogQ3JlYXRlIGEgcmVzcG9uc2l2ZSBob29rIHdlIGEgc2V0IG9mIGJyZWFrcG9pbnQgbmFtZXMgYW5kIHdpZHRocy5cbiAqIFlvdSBjYW4gdXNlIGFueSB2YWxpZCBjc3MgdW5pdHMgYXMgd2VsbCBhcyBhIG51bWJlcnMgKGZvciBwaXhlbHMpLlxuICpcbiAqICoqTk9URToqKiBUaGUgb2JqZWN0IGtleSBvcmRlciBpcyBpbXBvcnRhbnQhIGl0J3MgYXNzdW1lZCB0byBiZSBpbiBvcmRlciBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3RcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgdXNlQnJlYWtwb2ludCA9IGNyZWF0ZUJyZWFrcG9pbnRIb29rKHtcbiAqICB4czogMCxcbiAqICBzbTogNTc2LFxuICogIG1kOiA3NjgsXG4gKiAgbGc6IDk5MixcbiAqICB4bDogMTIwMCxcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiAqKldhdGNoIG91dCEqKiB1c2luZyBzdHJpbmcgdmFsdWVzIHdpbGwgc29tZXRpbWVzIGNvbnN0cnVjdCBtZWRpYSBxdWVyaWVzIHVzaW5nIGNzcyBgY2FsYygpYCB3aGljaFxuICogaXMgTk9UIHN1cHBvcnRlZCBpbiBtZWRpYSBxdWVyaWVzIGJ5IGFsbCBicm93c2VycyBhdCB0aGUgbW9tZW50LiB1c2UgbnVtYmVycyBmb3JcbiAqIHRoZSB3aWRlc3QgcmFuZ2Ugb2YgYnJvd3NlciBzdXBwb3J0LlxuICpcbiAqIEBwYXJhbSBicmVha3BvaW50VmFsdWVzIEEgb2JqZWN0IGhhc2ggb2YgbmFtZXMgdG8gYnJlYWtwb2ludCBkaW1lbnNpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCcmVha3BvaW50SG9vayhicmVha3BvaW50VmFsdWVzKSB7XG4gIHZhciBuYW1lcyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRWYWx1ZXMpO1xuXG4gIGZ1bmN0aW9uIGFuZChxdWVyeSwgbmV4dCkge1xuICAgIGlmIChxdWVyeSA9PT0gbmV4dCkge1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5ID8gcXVlcnkgKyBcIiBhbmQgXCIgKyBuZXh0IDogbmV4dDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5leHQoYnJlYWtwb2ludCkge1xuICAgIHJldHVybiBuYW1lc1tNYXRoLm1pbihuYW1lcy5pbmRleE9mKGJyZWFrcG9pbnQpICsgMSwgbmFtZXMubGVuZ3RoIC0gMSldO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWF4UXVlcnkoYnJlYWtwb2ludCkge1xuICAgIHZhciBuZXh0ID0gZ2V0TmV4dChicmVha3BvaW50KTtcbiAgICB2YXIgdmFsdWUgPSBicmVha3BvaW50VmFsdWVzW25leHRdO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB2YWx1ZSA9IHZhbHVlIC0gMC4yICsgXCJweFwiO2Vsc2UgdmFsdWUgPSBcImNhbGMoXCIgKyB2YWx1ZSArIFwiIC0gMC4ycHgpXCI7XG4gICAgcmV0dXJuIFwiKG1heC13aWR0aDogXCIgKyB2YWx1ZSArIFwiKVwiO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWluUXVlcnkoYnJlYWtwb2ludCkge1xuICAgIHZhciB2YWx1ZSA9IGJyZWFrcG9pbnRWYWx1ZXNbYnJlYWtwb2ludF07XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZSArIFwicHhcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiBcIiArIHZhbHVlICsgXCIpXCI7XG4gIH1cbiAgLyoqXG4gICAqIE1hdGNoIGEgc2V0IG9mIGJyZWFrcG9pbnRzXG4gICAqXG4gICAqIGBgYHRzeFxuICAgKiBjb25zdCBNaWRTaXplT25seSA9ICgpID0+IHtcbiAgICogICBjb25zdCBpc01pZCA9IHVzZUJyZWFrcG9pbnQoeyBsZzogJ2Rvd24nLCBzbTogJ3VwJyB9KTtcbiAgICpcbiAgICogICBpZiAoaXNNaWQpIHJldHVybiA8ZGl2Pk9uIGEgUmVhc29uYWJsZSBzaXplZCBTY3JlZW4hPC9kaXY+XG4gICAqICAgcmV0dXJuIG51bGw7XG4gICAqIH1cbiAgICogYGBgXG4gICAqIEBwYXJhbSBicmVha3BvaW50TWFwIEFuIG9iamVjdCBtYXAgb2YgYnJlYWtwb2ludHMgYW5kIGRpcmVjdGlvbnMsIHF1ZXJpZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIFwiYW5kXCIgdG8gam9pblxuICAgKiBicmVha3BvaW50cyB0b2dldGhlclxuICAgKiBAcGFyYW0gd2luZG93IE9wdGlvbmFsbHkgc3BlY2lmeSB0aGUgdGFyZ2V0IHdpbmRvdyB0byBtYXRjaCBhZ2FpbnN0ICh1c2VmdWwgd2hlbiByZW5kZXJpbmcgaW50byBpZnJhbWVzKVxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIHVzZUJyZWFrcG9pbnQoYnJlYWtwb2ludE9yTWFwLCBkaXJlY3Rpb24sIHdpbmRvdykge1xuICAgIHZhciBicmVha3BvaW50TWFwO1xuXG4gICAgaWYgKHR5cGVvZiBicmVha3BvaW50T3JNYXAgPT09ICdvYmplY3QnKSB7XG4gICAgICBicmVha3BvaW50TWFwID0gYnJlYWtwb2ludE9yTWFwO1xuICAgICAgd2luZG93ID0gZGlyZWN0aW9uO1xuICAgICAgZGlyZWN0aW9uID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9icmVha3BvaW50TWFwO1xuXG4gICAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgdHJ1ZTtcbiAgICAgIGJyZWFrcG9pbnRNYXAgPSAoX2JyZWFrcG9pbnRNYXAgPSB7fSwgX2JyZWFrcG9pbnRNYXBbYnJlYWtwb2ludE9yTWFwXSA9IGRpcmVjdGlvbiwgX2JyZWFrcG9pbnRNYXApO1xuICAgIH1cblxuICAgIHZhciBxdWVyeSA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGJyZWFrcG9pbnRNYXApLnJlZHVjZShmdW5jdGlvbiAocXVlcnksIF9yZWYpIHtcbiAgICAgICAgdmFyIGtleSA9IF9yZWZbMF0sXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSBfcmVmWzFdO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcgfHwgZGlyZWN0aW9uID09PSB0cnVlKSB7XG4gICAgICAgICAgcXVlcnkgPSBhbmQocXVlcnksIGdldE1pblF1ZXJ5KGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nIHx8IGRpcmVjdGlvbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHF1ZXJ5ID0gYW5kKHF1ZXJ5LCBnZXRNYXhRdWVyeShrZXkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgIH0sICcnKTtcbiAgICB9LCBbSlNPTi5zdHJpbmdpZnkoYnJlYWtwb2ludE1hcCldKTtcbiAgICByZXR1cm4gdXNlTWVkaWFRdWVyeShxdWVyeSwgd2luZG93KTtcbiAgfVxuXG4gIHJldHVybiB1c2VCcmVha3BvaW50O1xufVxudmFyIHVzZUJyZWFrcG9pbnQgPSBjcmVhdGVCcmVha3BvaW50SG9vayh7XG4gIHhzOiAwLFxuICBzbTogNTc2LFxuICBtZDogNzY4LFxuICBsZzogOTkyLFxuICB4bDogMTIwMCxcbiAgeHhsOiAxNDAwXG59KTtcbmV4cG9ydCBkZWZhdWx0IHVzZUJyZWFrcG9pbnQ7IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi9vd25lckRvY3VtZW50Jztcbi8qKlxuICogUmV0dXJucyB0aGUgYWN0aXZlbHkgZm9jdXNlZCBlbGVtZW50IHNhZmVseS5cbiAqXG4gKiBAcGFyYW0gZG9jIHRoZSBkb2N1bWVudCB0byBjaGVja1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFjdGl2ZUVsZW1lbnQoZG9jKSB7XG4gIGlmIChkb2MgPT09IHZvaWQgMCkge1xuICAgIGRvYyA9IG93bmVyRG9jdW1lbnQoKTtcbiAgfVxuXG4gIC8vIFN1cHBvcnQ6IElFIDkgb25seVxuICAvLyBJRTkgdGhyb3dzIGFuIFwiVW5zcGVjaWZpZWQgZXJyb3JcIiBhY2Nlc3NpbmcgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBmcm9tIGFuIDxpZnJhbWU+XG4gIHRyeSB7XG4gICAgdmFyIGFjdGl2ZSA9IGRvYy5hY3RpdmVFbGVtZW50OyAvLyBJRTExIHJldHVybnMgYSBzZWVtaW5nbHkgZW1wdHkgb2JqZWN0IGluIHNvbWUgY2FzZXMgd2hlbiBhY2Nlc3NpbmdcbiAgICAvLyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGZyb20gYW4gPGlmcmFtZT5cblxuICAgIGlmICghYWN0aXZlIHx8ICFhY3RpdmUubm9kZU5hbWUpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBhY3RpdmU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvKiBpZSB0aHJvd3MgaWYgbm8gYWN0aXZlIGVsZW1lbnQgKi9cbiAgICByZXR1cm4gZG9jLmJvZHk7XG4gIH1cbn0iLCJpbXBvcnQgY3NzIGZyb20gJ2RvbS1oZWxwZXJzL2Nzcyc7XG5pbXBvcnQgeyBkYXRhQXR0ciB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgZ2V0Qm9keVNjcm9sbGJhcldpZHRoIGZyb20gJy4vZ2V0U2Nyb2xsYmFyV2lkdGgnO1xuZXhwb3J0IGNvbnN0IE9QRU5fREFUQV9BVFRSSUJVVEUgPSBkYXRhQXR0cignbW9kYWwtb3BlbicpO1xuXG4vKipcbiAqIE1hbmFnZXMgYSBzdGFjayBvZiBNb2RhbHMgYXMgd2VsbCBhcyBlbnN1cmluZ1xuICogYm9keSBzY3JvbGxpbmcgaXMgaXMgZGlzYWJsZWQgYW5kIHBhZGRpbmcgYWNjb3VudGVkIGZvclxuICovXG5jbGFzcyBNb2RhbE1hbmFnZXIge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgb3duZXJEb2N1bWVudCxcbiAgICBoYW5kbGVDb250YWluZXJPdmVyZmxvdyA9IHRydWUsXG4gICAgaXNSVEwgPSBmYWxzZVxuICB9ID0ge30pIHtcbiAgICB0aGlzLmhhbmRsZUNvbnRhaW5lck92ZXJmbG93ID0gaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3c7XG4gICAgdGhpcy5pc1JUTCA9IGlzUlRMO1xuICAgIHRoaXMubW9kYWxzID0gW107XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXJEb2N1bWVudDtcbiAgfVxuICBnZXRTY3JvbGxiYXJXaWR0aCgpIHtcbiAgICByZXR1cm4gZ2V0Qm9keVNjcm9sbGJhcldpZHRoKHRoaXMub3duZXJEb2N1bWVudCk7XG4gIH1cbiAgZ2V0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gKHRoaXMub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkuYm9keTtcbiAgfVxuICBzZXRNb2RhbEF0dHJpYnV0ZXMoX21vZGFsKSB7XG4gICAgLy8gRm9yIG92ZXJyaWRpbmdcbiAgfVxuICByZW1vdmVNb2RhbEF0dHJpYnV0ZXMoX21vZGFsKSB7XG4gICAgLy8gRm9yIG92ZXJyaWRpbmdcbiAgfVxuICBzZXRDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgfTtcblxuICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGFjdHVhbCBgc3R5bGVgIGhlcmVcbiAgICAvLyBiZWNhdXNlIHdlIHdpbGwgb3ZlcnJpZGUgaXRcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHRoaXMuaXNSVEwgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRFbGVtZW50KCk7XG4gICAgY29udGFpbmVyU3RhdGUuc3R5bGUgPSB7XG4gICAgICBvdmVyZmxvdzogY29udGFpbmVyLnN0eWxlLm92ZXJmbG93LFxuICAgICAgW3BhZGRpbmdQcm9wXTogY29udGFpbmVyLnN0eWxlW3BhZGRpbmdQcm9wXVxuICAgIH07XG4gICAgaWYgKGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSB7XG4gICAgICAvLyB1c2UgY29tcHV0ZWQgc3R5bGUsIGhlcmUgdG8gZ2V0IHRoZSByZWFsIHBhZGRpbmdcbiAgICAgIC8vIHRvIGFkZCBvdXIgc2Nyb2xsYmFyIHdpZHRoXG4gICAgICBzdHlsZVtwYWRkaW5nUHJvcF0gPSBgJHtwYXJzZUludChjc3MoY29udGFpbmVyLCBwYWRkaW5nUHJvcCkgfHwgJzAnLCAxMCkgKyBjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aH1weGA7XG4gICAgfVxuICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoT1BFTl9EQVRBX0FUVFJJQlVURSwgJycpO1xuICAgIGNzcyhjb250YWluZXIsIHN0eWxlKTtcbiAgfVxuICByZXNldCgpIHtcbiAgICBbLi4udGhpcy5tb2RhbHNdLmZvckVhY2gobSA9PiB0aGlzLnJlbW92ZShtKSk7XG4gIH1cbiAgcmVtb3ZlQ29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICBjb250YWluZXIucmVtb3ZlQXR0cmlidXRlKE9QRU5fREFUQV9BVFRSSUJVVEUpO1xuICAgIE9iamVjdC5hc3NpZ24oY29udGFpbmVyLnN0eWxlLCBjb250YWluZXJTdGF0ZS5zdHlsZSk7XG4gIH1cbiAgYWRkKG1vZGFsKSB7XG4gICAgbGV0IG1vZGFsSWR4ID0gdGhpcy5tb2RhbHMuaW5kZXhPZihtb2RhbCk7XG4gICAgaWYgKG1vZGFsSWR4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIG1vZGFsSWR4O1xuICAgIH1cbiAgICBtb2RhbElkeCA9IHRoaXMubW9kYWxzLmxlbmd0aDtcbiAgICB0aGlzLm1vZGFscy5wdXNoKG1vZGFsKTtcbiAgICB0aGlzLnNldE1vZGFsQXR0cmlidXRlcyhtb2RhbCk7XG4gICAgaWYgKG1vZGFsSWR4ICE9PSAwKSB7XG4gICAgICByZXR1cm4gbW9kYWxJZHg7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBzY3JvbGxCYXJXaWR0aDogdGhpcy5nZXRTY3JvbGxiYXJXaWR0aCgpLFxuICAgICAgc3R5bGU6IHt9XG4gICAgfTtcbiAgICBpZiAodGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdykge1xuICAgICAgdGhpcy5zZXRDb250YWluZXJTdHlsZSh0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsSWR4O1xuICB9XG4gIHJlbW92ZShtb2RhbCkge1xuICAgIGNvbnN0IG1vZGFsSWR4ID0gdGhpcy5tb2RhbHMuaW5kZXhPZihtb2RhbCk7XG4gICAgaWYgKG1vZGFsSWR4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1vZGFscy5zcGxpY2UobW9kYWxJZHgsIDEpO1xuXG4gICAgLy8gaWYgdGhhdCB3YXMgdGhlIGxhc3QgbW9kYWwgaW4gYSBjb250YWluZXIsXG4gICAgLy8gY2xlYW4gdXAgdGhlIGNvbnRhaW5lclxuICAgIGlmICghdGhpcy5tb2RhbHMubGVuZ3RoICYmIHRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cpIHtcbiAgICAgIHRoaXMucmVtb3ZlQ29udGFpbmVyU3R5bGUodGhpcy5zdGF0ZSk7XG4gICAgfVxuICAgIHRoaXMucmVtb3ZlTW9kYWxBdHRyaWJ1dGVzKG1vZGFsKTtcbiAgfVxuICBpc1RvcE1vZGFsKG1vZGFsKSB7XG4gICAgcmV0dXJuICEhdGhpcy5tb2RhbHMubGVuZ3RoICYmIHRoaXMubW9kYWxzW3RoaXMubW9kYWxzLmxlbmd0aCAtIDFdID09PSBtb2RhbDtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgTW9kYWxNYW5hZ2VyOyIsIi8qKlxuICogR2V0IHRoZSB3aWR0aCBvZiB0aGUgdmVydGljYWwgd2luZG93IHNjcm9sbGJhciBpZiBpdCdzIHZpc2libGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Qm9keVNjcm9sbGJhcldpZHRoKG93bmVyRG9jdW1lbnQgPSBkb2N1bWVudCkge1xuICBjb25zdCB3aW5kb3cgPSBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICByZXR1cm4gTWF0aC5hYnMod2luZG93LmlubmVyV2lkdGggLSBvd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvb3duZXJEb2N1bWVudCc7XG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJ2RvbS1oZWxwZXJzL2NhblVzZURPTSc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVdpbmRvdyBmcm9tICcuL3VzZVdpbmRvdyc7XG5leHBvcnQgY29uc3QgcmVzb2x2ZUNvbnRhaW5lclJlZiA9IChyZWYsIGRvY3VtZW50KSA9PiB7XG4gIGlmICghY2FuVXNlRE9NKSByZXR1cm4gbnVsbDtcbiAgaWYgKHJlZiA9PSBudWxsKSByZXR1cm4gKGRvY3VtZW50IHx8IG93bmVyRG9jdW1lbnQoKSkuYm9keTtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHJlZiA9IHJlZigpO1xuICBpZiAocmVmICYmICdjdXJyZW50JyBpbiByZWYpIHJlZiA9IHJlZi5jdXJyZW50O1xuICBpZiAocmVmICYmICgnbm9kZVR5cGUnIGluIHJlZiB8fCByZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSkgcmV0dXJuIHJlZjtcbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV2FpdEZvckRPTVJlZihyZWYsIG9uUmVzb2x2ZWQpIHtcbiAgY29uc3Qgd2luZG93ID0gdXNlV2luZG93KCk7XG4gIGNvbnN0IFtyZXNvbHZlZFJlZiwgc2V0UmVmXSA9IHVzZVN0YXRlKCgpID0+IHJlc29sdmVDb250YWluZXJSZWYocmVmLCB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudCkpO1xuICBpZiAoIXJlc29sdmVkUmVmKSB7XG4gICAgY29uc3QgZWFybHlSZWYgPSByZXNvbHZlQ29udGFpbmVyUmVmKHJlZik7XG4gICAgaWYgKGVhcmx5UmVmKSBzZXRSZWYoZWFybHlSZWYpO1xuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uUmVzb2x2ZWQgJiYgcmVzb2x2ZWRSZWYpIHtcbiAgICAgIG9uUmVzb2x2ZWQocmVzb2x2ZWRSZWYpO1xuICAgIH1cbiAgfSwgW29uUmVzb2x2ZWQsIHJlc29sdmVkUmVmXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV4dFJlZiA9IHJlc29sdmVDb250YWluZXJSZWYocmVmKTtcbiAgICBpZiAobmV4dFJlZiAhPT0gcmVzb2x2ZWRSZWYpIHtcbiAgICAgIHNldFJlZihuZXh0UmVmKTtcbiAgICB9XG4gIH0sIFtyZWYsIHJlc29sdmVkUmVmXSk7XG4gIHJldHVybiByZXNvbHZlZFJlZjtcbn0iLCJpbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHsgY2xvbmVFbGVtZW50LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmZ1bmN0aW9uIE5vb3BUcmFuc2l0aW9uKHtcbiAgY2hpbGRyZW4sXG4gIGluOiBpblByb3AsXG4gIG9uRXhpdGVkLFxuICBtb3VudE9uRW50ZXIsXG4gIHVubW91bnRPbkV4aXRcbn0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYXNFbnRlcmVkUmVmID0gdXNlUmVmKGluUHJvcCk7XG4gIGNvbnN0IGhhbmRsZUV4aXRlZCA9IHVzZUV2ZW50Q2FsbGJhY2sob25FeGl0ZWQpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpblByb3ApIGhhc0VudGVyZWRSZWYuY3VycmVudCA9IHRydWU7ZWxzZSB7XG4gICAgICBoYW5kbGVFeGl0ZWQocmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW2luUHJvcCwgaGFuZGxlRXhpdGVkXSk7XG4gIGNvbnN0IGNvbWJpbmVkUmVmID0gdXNlTWVyZ2VkUmVmcyhyZWYsIGNoaWxkcmVuLnJlZik7XG4gIGNvbnN0IGNoaWxkID0gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgIHJlZjogY29tYmluZWRSZWZcbiAgfSk7XG4gIGlmIChpblByb3ApIHJldHVybiBjaGlsZDtcbiAgaWYgKHVubW91bnRPbkV4aXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWhhc0VudGVyZWRSZWYuY3VycmVudCAmJiBtb3VudE9uRW50ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gY2hpbGQ7XG59XG5leHBvcnQgZGVmYXVsdCBOb29wVHJhbnNpdGlvbjsiLCJpbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZUlzb21vcnBoaWNFZmZlY3QgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlSXNvbW9ycGhpY0VmZmVjdCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCBjbG9uZUVsZW1lbnQsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IE5vb3BUcmFuc2l0aW9uIGZyb20gJy4vTm9vcFRyYW5zaXRpb24nO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VUcmFuc2l0aW9uKHtcbiAgaW46IGluUHJvcCxcbiAgb25UcmFuc2l0aW9uXG59KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaXNJbml0aWFsUmVmID0gdXNlUmVmKHRydWUpO1xuICBjb25zdCBoYW5kbGVUcmFuc2l0aW9uID0gdXNlRXZlbnRDYWxsYmFjayhvblRyYW5zaXRpb24pO1xuICB1c2VJc29tb3JwaGljRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgc3RhbGUgPSBmYWxzZTtcbiAgICBoYW5kbGVUcmFuc2l0aW9uKHtcbiAgICAgIGluOiBpblByb3AsXG4gICAgICBlbGVtZW50OiByZWYuY3VycmVudCxcbiAgICAgIGluaXRpYWw6IGlzSW5pdGlhbFJlZi5jdXJyZW50LFxuICAgICAgaXNTdGFsZTogKCkgPT4gc3RhbGVcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc3RhbGUgPSB0cnVlO1xuICAgIH07XG4gIH0sIFtpblByb3AsIGhhbmRsZVRyYW5zaXRpb25dKTtcbiAgdXNlSXNvbW9ycGhpY0VmZmVjdCgoKSA9PiB7XG4gICAgaXNJbml0aWFsUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAvLyB0aGlzIGlzIGZvciBzdHJpY3QgbW9kZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc0luaXRpYWxSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gcmVmO1xufVxuLyoqXG4gKiBBZGFwdHMgYW4gaW1wZXJhdGl2ZSB0cmFuc2l0aW9uIGZ1bmN0aW9uIHRvIGEgc3Vic2V0IG9mIHRoZSBSVEcgYDxUcmFuc2l0aW9uPmAgY29tcG9uZW50IEFQSS5cbiAqXG4gKiBJbXBlcmF0aXZlVHJhbnNpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG1vdW50aW5nIG9wdGlvbnMgb3IgYGFwcGVhcmAgYXQgdGhlIG1vbWVudCwgbWVhbmluZ1xuICogdGhhdCBpdCBhbHdheXMgYWN0cyBsaWtlOiBgbW91bnRPbkVudGVyPXt0cnVlfSB1bm1vdW50T25FeGl0PXt0cnVlfSBhcHBlYXI9e3RydWV9YFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJbXBlcmF0aXZlVHJhbnNpdGlvbih7XG4gIGNoaWxkcmVuLFxuICBpbjogaW5Qcm9wLFxuICBvbkV4aXRlZCxcbiAgb25FbnRlcmVkLFxuICB0cmFuc2l0aW9uXG59KSB7XG4gIGNvbnN0IFtleGl0ZWQsIHNldEV4aXRlZF0gPSB1c2VTdGF0ZSghaW5Qcm9wKTtcblxuICAvLyBUT0RPOiBJIHRoaW5rIHRoaXMgbmVlZHMgdG8gYmUgaW4gYW4gZWZmZWN0XG4gIGlmIChpblByb3AgJiYgZXhpdGVkKSB7XG4gICAgc2V0RXhpdGVkKGZhbHNlKTtcbiAgfVxuICBjb25zdCByZWYgPSB1c2VUcmFuc2l0aW9uKHtcbiAgICBpbjogISFpblByb3AsXG4gICAgb25UcmFuc2l0aW9uOiBvcHRpb25zID0+IHtcbiAgICAgIGNvbnN0IG9uRmluaXNoID0gKCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pc1N0YWxlKCkpIHJldHVybjtcbiAgICAgICAgaWYgKG9wdGlvbnMuaW4pIHtcbiAgICAgICAgICBvbkVudGVyZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRW50ZXJlZChvcHRpb25zLmVsZW1lbnQsIG9wdGlvbnMuaW5pdGlhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0RXhpdGVkKHRydWUpO1xuICAgICAgICAgIG9uRXhpdGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkV4aXRlZChvcHRpb25zLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKHRyYW5zaXRpb24ob3B0aW9ucykpLnRoZW4ob25GaW5pc2gsIGVycm9yID0+IHtcbiAgICAgICAgaWYgKCFvcHRpb25zLmluKSBzZXRFeGl0ZWQodHJ1ZSk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgY29tYmluZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgY2hpbGRyZW4ucmVmKTtcbiAgcmV0dXJuIGV4aXRlZCAmJiAhaW5Qcm9wID8gbnVsbCA6IC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICByZWY6IGNvbWJpbmVkUmVmXG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRyYW5zaXRpb24oQ29tcG9uZW50LCBydW5UcmFuc2l0aW9uLCBwcm9wcykge1xuICBpZiAoQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpKTtcbiAgfVxuICBpZiAocnVuVHJhbnNpdGlvbikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChJbXBlcmF0aXZlVHJhbnNpdGlvbiwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgIHRyYW5zaXRpb246IHJ1blRyYW5zaXRpb25cbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE5vb3BUcmFuc2l0aW9uLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcykpO1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcInNob3dcIiwgXCJyb2xlXCIsIFwiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJjaGlsZHJlblwiLCBcImJhY2tkcm9wXCIsIFwia2V5Ym9hcmRcIiwgXCJvbkJhY2tkcm9wQ2xpY2tcIiwgXCJvbkVzY2FwZUtleURvd25cIiwgXCJ0cmFuc2l0aW9uXCIsIFwicnVuVHJhbnNpdGlvblwiLCBcImJhY2tkcm9wVHJhbnNpdGlvblwiLCBcInJ1bkJhY2tkcm9wVHJhbnNpdGlvblwiLCBcImF1dG9Gb2N1c1wiLCBcImVuZm9yY2VGb2N1c1wiLCBcInJlc3RvcmVGb2N1c1wiLCBcInJlc3RvcmVGb2N1c09wdGlvbnNcIiwgXCJyZW5kZXJEaWFsb2dcIiwgXCJyZW5kZXJCYWNrZHJvcFwiLCBcIm1hbmFnZXJcIiwgXCJjb250YWluZXJcIiwgXCJvblNob3dcIiwgXCJvbkhpZGVcIiwgXCJvbkV4aXRcIiwgXCJvbkV4aXRlZFwiLCBcIm9uRXhpdGluZ1wiLCBcIm9uRW50ZXJcIiwgXCJvbkVudGVyaW5nXCIsIFwib25FbnRlcmVkXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lLCByZWFjdC9wcm9wLXR5cGVzICovXG5cbmltcG9ydCBhY3RpdmVFbGVtZW50IGZyb20gJ2RvbS1oZWxwZXJzL2FjdGl2ZUVsZW1lbnQnO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gJ2RvbS1oZWxwZXJzL2NvbnRhaW5zJztcbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnZG9tLWhlbHBlcnMvY2FuVXNlRE9NJztcbmltcG9ydCBsaXN0ZW4gZnJvbSAnZG9tLWhlbHBlcnMvbGlzdGVuJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VJbXBlcmF0aXZlSGFuZGxlLCBmb3J3YXJkUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB1c2VNb3VudGVkIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1vdW50ZWQnO1xuaW1wb3J0IHVzZVdpbGxVbm1vdW50IGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVdpbGxVbm1vdW50JztcbmltcG9ydCB1c2VQcmV2aW91cyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VQcmV2aW91cyc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBNb2RhbE1hbmFnZXIgZnJvbSAnLi9Nb2RhbE1hbmFnZXInO1xuaW1wb3J0IHVzZVdhaXRGb3JET01SZWYgZnJvbSAnLi91c2VXYWl0Rm9yRE9NUmVmJztcbmltcG9ydCB1c2VXaW5kb3cgZnJvbSAnLi91c2VXaW5kb3cnO1xuaW1wb3J0IHsgcmVuZGVyVHJhbnNpdGlvbiB9IGZyb20gJy4vSW1wZXJhdGl2ZVRyYW5zaXRpb24nO1xuaW1wb3J0IHsgaXNFc2NLZXkgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmxldCBtYW5hZ2VyO1xuZnVuY3Rpb24gZ2V0TWFuYWdlcih3aW5kb3cpIHtcbiAgaWYgKCFtYW5hZ2VyKSBtYW5hZ2VyID0gbmV3IE1vZGFsTWFuYWdlcih7XG4gICAgb3duZXJEb2N1bWVudDogd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnRcbiAgfSk7XG4gIHJldHVybiBtYW5hZ2VyO1xufVxuZnVuY3Rpb24gdXNlTW9kYWxNYW5hZ2VyKHByb3ZpZGVkKSB7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBtb2RhbE1hbmFnZXIgPSBwcm92aWRlZCB8fCBnZXRNYW5hZ2VyKHdpbmRvdyk7XG4gIGNvbnN0IG1vZGFsID0gdXNlUmVmKHtcbiAgICBkaWFsb2c6IG51bGwsXG4gICAgYmFja2Ryb3A6IG51bGxcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKG1vZGFsLmN1cnJlbnQsIHtcbiAgICBhZGQ6ICgpID0+IG1vZGFsTWFuYWdlci5hZGQobW9kYWwuY3VycmVudCksXG4gICAgcmVtb3ZlOiAoKSA9PiBtb2RhbE1hbmFnZXIucmVtb3ZlKG1vZGFsLmN1cnJlbnQpLFxuICAgIGlzVG9wTW9kYWw6ICgpID0+IG1vZGFsTWFuYWdlci5pc1RvcE1vZGFsKG1vZGFsLmN1cnJlbnQpLFxuICAgIHNldERpYWxvZ1JlZjogdXNlQ2FsbGJhY2socmVmID0+IHtcbiAgICAgIG1vZGFsLmN1cnJlbnQuZGlhbG9nID0gcmVmO1xuICAgIH0sIFtdKSxcbiAgICBzZXRCYWNrZHJvcFJlZjogdXNlQ2FsbGJhY2socmVmID0+IHtcbiAgICAgIG1vZGFsLmN1cnJlbnQuYmFja2Ryb3AgPSByZWY7XG4gICAgfSwgW10pXG4gIH0pO1xufVxuY29uc3QgTW9kYWwgPSAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICBzaG93ID0gZmFsc2UsXG4gICAgICByb2xlID0gJ2RpYWxvZycsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBzdHlsZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgYmFja2Ryb3AgPSB0cnVlLFxuICAgICAga2V5Ym9hcmQgPSB0cnVlLFxuICAgICAgb25CYWNrZHJvcENsaWNrLFxuICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgdHJhbnNpdGlvbixcbiAgICAgIHJ1blRyYW5zaXRpb24sXG4gICAgICBiYWNrZHJvcFRyYW5zaXRpb24sXG4gICAgICBydW5CYWNrZHJvcFRyYW5zaXRpb24sXG4gICAgICBhdXRvRm9jdXMgPSB0cnVlLFxuICAgICAgZW5mb3JjZUZvY3VzID0gdHJ1ZSxcbiAgICAgIHJlc3RvcmVGb2N1cyA9IHRydWUsXG4gICAgICByZXN0b3JlRm9jdXNPcHRpb25zLFxuICAgICAgcmVuZGVyRGlhbG9nLFxuICAgICAgcmVuZGVyQmFja2Ryb3AgPSBwcm9wcyA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcykpLFxuICAgICAgbWFuYWdlcjogcHJvdmlkZWRNYW5hZ2VyLFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXJSZWYsXG4gICAgICBvblNob3csXG4gICAgICBvbkhpZGUgPSAoKSA9PiB7fSxcbiAgICAgIG9uRXhpdCxcbiAgICAgIG9uRXhpdGVkLFxuICAgICAgb25FeGl0aW5nLFxuICAgICAgb25FbnRlcixcbiAgICAgIG9uRW50ZXJpbmcsXG4gICAgICBvbkVudGVyZWRcbiAgICB9ID0gX3JlZixcbiAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgY29udGFpbmVyID0gdXNlV2FpdEZvckRPTVJlZihjb250YWluZXJSZWYpO1xuICBjb25zdCBtb2RhbCA9IHVzZU1vZGFsTWFuYWdlcihwcm92aWRlZE1hbmFnZXIpO1xuICBjb25zdCBpc01vdW50ZWQgPSB1c2VNb3VudGVkKCk7XG4gIGNvbnN0IHByZXZTaG93ID0gdXNlUHJldmlvdXMoc2hvdyk7XG4gIGNvbnN0IFtleGl0ZWQsIHNldEV4aXRlZF0gPSB1c2VTdGF0ZSghc2hvdyk7XG4gIGNvbnN0IGxhc3RGb2N1c1JlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+IG1vZGFsLCBbbW9kYWxdKTtcbiAgaWYgKGNhblVzZURPTSAmJiAhcHJldlNob3cgJiYgc2hvdykge1xuICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gYWN0aXZlRWxlbWVudCgpO1xuICB9XG5cbiAgLy8gVE9ETzogSSB0aGluayB0aGlzIG5lZWRzIHRvIGJlIGluIGFuIGVmZmVjdFxuICBpZiAoc2hvdyAmJiBleGl0ZWQpIHtcbiAgICBzZXRFeGl0ZWQoZmFsc2UpO1xuICB9XG4gIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBtb2RhbC5hZGQoKTtcbiAgICByZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYuY3VycmVudCA9IGxpc3Rlbihkb2N1bWVudCwgJ2tleWRvd24nLCBoYW5kbGVEb2N1bWVudEtleURvd24pO1xuICAgIHJlbW92ZUZvY3VzTGlzdGVuZXJSZWYuY3VycmVudCA9IGxpc3Rlbihkb2N1bWVudCwgJ2ZvY3VzJyxcbiAgICAvLyB0aGUgdGltZW91dCBpcyBuZWNlc3NhcnkgYi9jIHRoaXMgd2lsbCBydW4gYmVmb3JlIHRoZSBuZXcgbW9kYWwgaXMgbW91bnRlZFxuICAgIC8vIGFuZCBzbyBzdGVhbHMgZm9jdXMgZnJvbSBpdFxuICAgICgpID0+IHNldFRpbWVvdXQoaGFuZGxlRW5mb3JjZUZvY3VzKSwgdHJ1ZSk7XG4gICAgaWYgKG9uU2hvdykge1xuICAgICAgb25TaG93KCk7XG4gICAgfVxuXG4gICAgLy8gYXV0b2ZvY3VzIGFmdGVyIG9uU2hvdyB0byBub3QgdHJpZ2dlciBhIGZvY3VzIGV2ZW50IGZvciBwcmV2aW91c1xuICAgIC8vIG1vZGFscyBiZWZvcmUgdGhpcyBvbmUgaXMgc2hvd24uXG4gICAgaWYgKGF1dG9Gb2N1cykge1xuICAgICAgY29uc3QgY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBhY3RpdmVFbGVtZW50KGRvY3VtZW50KTtcbiAgICAgIGlmIChtb2RhbC5kaWFsb2cgJiYgY3VycmVudEFjdGl2ZUVsZW1lbnQgJiYgIWNvbnRhaW5zKG1vZGFsLmRpYWxvZywgY3VycmVudEFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gY3VycmVudEFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIG1vZGFsLmRpYWxvZy5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUhpZGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBtb2RhbC5yZW1vdmUoKTtcbiAgICByZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYuY3VycmVudCA9PSBudWxsID8gdm9pZCAwIDogcmVtb3ZlS2V5ZG93bkxpc3RlbmVyUmVmLmN1cnJlbnQoKTtcbiAgICByZW1vdmVGb2N1c0xpc3RlbmVyUmVmLmN1cnJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlbW92ZUZvY3VzTGlzdGVuZXJSZWYuY3VycmVudCgpO1xuICAgIGlmIChyZXN0b3JlRm9jdXMpIHtcbiAgICAgIHZhciBfbGFzdEZvY3VzUmVmJGN1cnJlbnQ7XG4gICAgICAvLyBTdXBwb3J0OiA8PUlFMTEgZG9lc24ndCBzdXBwb3J0IGBmb2N1cygpYCBvbiBzdmcgZWxlbWVudHMgKFJCOiAjOTE3KVxuICAgICAgKF9sYXN0Rm9jdXNSZWYkY3VycmVudCA9IGxhc3RGb2N1c1JlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2xhc3RGb2N1c1JlZiRjdXJyZW50LmZvY3VzID09IG51bGwgPyB2b2lkIDAgOiBfbGFzdEZvY3VzUmVmJGN1cnJlbnQuZm9jdXMocmVzdG9yZUZvY3VzT3B0aW9ucyk7XG4gICAgICBsYXN0Rm9jdXNSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICB9KTtcblxuICAvLyBUT0RPOiB0cnkgYW5kIGNvbWJpbmUgdGhlc2UgZWZmZWN0czogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1vdmVybGF5cy9wdWxsLzc5NCNkaXNjdXNzaW9uX3I0MDk5NTQxMjBcblxuICAvLyBTaG93IGxvZ2ljIHdoZW46XG4gIC8vICAtIHNob3cgaXMgYHRydWVgIF9hbmRfIGBjb250YWluZXJgIGhhcyByZXNvbHZlZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvdyB8fCAhY29udGFpbmVyKSByZXR1cm47XG4gICAgaGFuZGxlU2hvdygpO1xuICB9LCBbc2hvdywgY29udGFpbmVyLCAvKiBzaG91bGQgbmV2ZXIgY2hhbmdlOiAqL2hhbmRsZVNob3ddKTtcblxuICAvLyBIaWRlIGNsZWFudXAgbG9naWMgd2hlbjpcbiAgLy8gIC0gYGV4aXRlZGAgc3dpdGNoZXMgdG8gdHJ1ZVxuICAvLyAgLSBjb21wb25lbnQgdW5tb3VudHM7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFleGl0ZWQpIHJldHVybjtcbiAgICBoYW5kbGVIaWRlKCk7XG4gIH0sIFtleGl0ZWQsIGhhbmRsZUhpZGVdKTtcbiAgdXNlV2lsbFVubW91bnQoKCkgPT4ge1xuICAgIGhhbmRsZUhpZGUoKTtcbiAgfSk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBjb25zdCBoYW5kbGVFbmZvcmNlRm9jdXMgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWVuZm9yY2VGb2N1cyB8fCAhaXNNb3VudGVkKCkgfHwgIW1vZGFsLmlzVG9wTW9kYWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50QWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoKTtcbiAgICBpZiAobW9kYWwuZGlhbG9nICYmIGN1cnJlbnRBY3RpdmVFbGVtZW50ICYmICFjb250YWlucyhtb2RhbC5kaWFsb2csIGN1cnJlbnRBY3RpdmVFbGVtZW50KSkge1xuICAgICAgbW9kYWwuZGlhbG9nLmZvY3VzKCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKGUudGFyZ2V0ICE9PSBlLmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25CYWNrZHJvcENsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkJhY2tkcm9wQ2xpY2soZSk7XG4gICAgaWYgKGJhY2tkcm9wID09PSB0cnVlKSB7XG4gICAgICBvbkhpZGUoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVEb2N1bWVudEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChrZXlib2FyZCAmJiBpc0VzY0tleShlKSAmJiBtb2RhbC5pc1RvcE1vZGFsKCkpIHtcbiAgICAgIG9uRXNjYXBlS2V5RG93biA9PSBudWxsID8gdm9pZCAwIDogb25Fc2NhcGVLZXlEb3duKGUpO1xuICAgICAgaWYgKCFlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgb25IaWRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3QgcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCByZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaGFuZGxlSGlkZGVuID0gKC4uLmFyZ3MpID0+IHtcbiAgICBzZXRFeGl0ZWQodHJ1ZSk7XG4gICAgb25FeGl0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXhpdGVkKC4uLmFyZ3MpO1xuICB9O1xuICBpZiAoIWNvbnRhaW5lcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGRpYWxvZ1Byb3BzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcm9sZSxcbiAgICByZWY6IG1vZGFsLnNldERpYWxvZ1JlZixcbiAgICAvLyBhcHBhcmVudGx5IG9ubHkgd29ya3Mgb24gdGhlIGRpYWxvZyByb2xlIGVsZW1lbnRcbiAgICAnYXJpYS1tb2RhbCc6IHJvbGUgPT09ICdkaWFsb2cnID8gdHJ1ZSA6IHVuZGVmaW5lZFxuICB9LCByZXN0LCB7XG4gICAgc3R5bGUsXG4gICAgY2xhc3NOYW1lLFxuICAgIHRhYkluZGV4OiAtMVxuICB9KTtcbiAgbGV0IGRpYWxvZyA9IHJlbmRlckRpYWxvZyA/IHJlbmRlckRpYWxvZyhkaWFsb2dQcm9wcykgOiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBkaWFsb2dQcm9wcywge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICByb2xlOiAnZG9jdW1lbnQnXG4gICAgfSlcbiAgfSkpO1xuICBkaWFsb2cgPSByZW5kZXJUcmFuc2l0aW9uKHRyYW5zaXRpb24sIHJ1blRyYW5zaXRpb24sIHtcbiAgICB1bm1vdW50T25FeGl0OiB0cnVlLFxuICAgIG1vdW50T25FbnRlcjogdHJ1ZSxcbiAgICBhcHBlYXI6IHRydWUsXG4gICAgaW46ICEhc2hvdyxcbiAgICBvbkV4aXQsXG4gICAgb25FeGl0aW5nLFxuICAgIG9uRXhpdGVkOiBoYW5kbGVIaWRkZW4sXG4gICAgb25FbnRlcixcbiAgICBvbkVudGVyaW5nLFxuICAgIG9uRW50ZXJlZCxcbiAgICBjaGlsZHJlbjogZGlhbG9nXG4gIH0pO1xuICBsZXQgYmFja2Ryb3BFbGVtZW50ID0gbnVsbDtcbiAgaWYgKGJhY2tkcm9wKSB7XG4gICAgYmFja2Ryb3BFbGVtZW50ID0gcmVuZGVyQmFja2Ryb3Aoe1xuICAgICAgcmVmOiBtb2RhbC5zZXRCYWNrZHJvcFJlZixcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUJhY2tkcm9wQ2xpY2tcbiAgICB9KTtcbiAgICBiYWNrZHJvcEVsZW1lbnQgPSByZW5kZXJUcmFuc2l0aW9uKGJhY2tkcm9wVHJhbnNpdGlvbiwgcnVuQmFja2Ryb3BUcmFuc2l0aW9uLCB7XG4gICAgICBpbjogISFzaG93LFxuICAgICAgYXBwZWFyOiB0cnVlLFxuICAgICAgbW91bnRPbkVudGVyOiB0cnVlLFxuICAgICAgdW5tb3VudE9uRXhpdDogdHJ1ZSxcbiAgICAgIGNoaWxkcmVuOiBiYWNrZHJvcEVsZW1lbnRcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9SZWFjdERPTS5jcmVhdGVQb3J0YWwoIC8qI19fUFVSRV9fKi9fanN4cyhfRnJhZ21lbnQsIHtcbiAgICAgIGNoaWxkcmVuOiBbYmFja2Ryb3BFbGVtZW50LCBkaWFsb2ddXG4gICAgfSksIGNvbnRhaW5lcilcbiAgfSk7XG59KTtcbk1vZGFsLmRpc3BsYXlOYW1lID0gJ01vZGFsJztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTW9kYWwsIHtcbiAgTWFuYWdlcjogTW9kYWxNYW5hZ2VyXG59KTsiLCJpbXBvcnQgdXNlVXBkYXRlZFJlZiBmcm9tICcuL3VzZVVwZGF0ZWRSZWYnO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBBdHRhY2ggYSBjYWxsYmFjayB0aGF0IGZpcmVzIHdoZW4gYSBjb21wb25lbnQgdW5tb3VudHNcbiAqXG4gKiBAcGFyYW0gZm4gSGFuZGxlciB0byBydW4gd2hlbiB0aGUgY29tcG9uZW50IHVubW91bnRzXG4gKiBAY2F0ZWdvcnkgZWZmZWN0c1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVdpbGxVbm1vdW50KGZuKSB7XG4gIHZhciBvblVubW91bnQgPSB1c2VVcGRhdGVkUmVmKGZuKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG9uVW5tb3VudC5jdXJyZW50KCk7XG4gICAgfTtcbiAgfSwgW10pO1xufSIsImltcG9ydCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogUmV0dXJucyBhIHJlZiB0aGF0IGlzIGltbWVkaWF0ZWx5IHVwZGF0ZWQgd2l0aCB0aGUgbmV3IHZhbHVlXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBSZWYgdmFsdWVcbiAqIEBjYXRlZ29yeSByZWZzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVXBkYXRlZFJlZih2YWx1ZSkge1xuICB2YXIgdmFsdWVSZWYgPSB1c2VSZWYodmFsdWUpO1xuICB2YWx1ZVJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIHJldHVybiB2YWx1ZVJlZjtcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0ICovXG5leHBvcnQgZnVuY3Rpb24gaXNFc2NLZXkoZSkge1xuICByZXR1cm4gZS5jb2RlID09PSAnRXNjYXBlJyB8fCBlLmtleUNvZGUgPT09IDI3O1xufSIsImltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlV2l0aEJzUHJlZml4KCdvZmZjYW52YXMtYm9keScpOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRU5URVJFRCwgRU5URVJJTkcsIEVYSVRJTkcgfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwL1RyYW5zaXRpb24nO1xuaW1wb3J0IHRyYW5zaXRpb25FbmRMaXN0ZW5lciBmcm9tICcuL3RyYW5zaXRpb25FbmRMaXN0ZW5lcic7XG5pbXBvcnQgVHJhbnNpdGlvbldyYXBwZXIgZnJvbSAnLi9UcmFuc2l0aW9uV3JhcHBlcic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZVxufTtcbmNvbnN0IHRyYW5zaXRpb25TdHlsZXMgPSB7XG4gIFtFTlRFUklOR106ICdzaG93JyxcbiAgW0VOVEVSRURdOiAnc2hvdydcbn07XG5jb25zdCBPZmZjYW52YXNUb2dnbGluZyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnb2ZmY2FudmFzJyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uV3JhcHBlciwge1xuICAgIHJlZjogcmVmLFxuICAgIGFkZEVuZExpc3RlbmVyOiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIsXG4gICAgLi4ucHJvcHMsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBjaGlsZHJlbjogKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSwgKHN0YXR1cyA9PT0gRU5URVJJTkcgfHwgc3RhdHVzID09PSBFWElUSU5HKSAmJiBgJHtic1ByZWZpeH0tdG9nZ2xpbmdgLCB0cmFuc2l0aW9uU3R5bGVzW3N0YXR1c10pXG4gICAgfSlcbiAgfSk7XG59KTtcbk9mZmNhbnZhc1RvZ2dsaW5nLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbk9mZmNhbnZhc1RvZ2dsaW5nLmRpc3BsYXlOYW1lID0gJ09mZmNhbnZhc1RvZ2dsaW5nJztcbmV4cG9ydCBkZWZhdWx0IE9mZmNhbnZhc1RvZ2dsaW5nOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IE1vZGFsQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkhpZGUoKSB7fVxufSk7XG5leHBvcnQgZGVmYXVsdCBNb2RhbENvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gJy4vQ2xvc2VCdXR0b24nO1xuaW1wb3J0IE1vZGFsQ29udGV4dCBmcm9tICcuL01vZGFsQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBjbG9zZUxhYmVsOiAnQ2xvc2UnLFxuICBjbG9zZUJ1dHRvbjogZmFsc2Vcbn07XG5jb25zdCBBYnN0cmFjdE1vZGFsSGVhZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgY2xvc2VMYWJlbCxcbiAgY2xvc2VWYXJpYW50LFxuICBjbG9zZUJ1dHRvbixcbiAgb25IaWRlLFxuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNb2RhbENvbnRleHQpO1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQub25IaWRlKCk7XG4gICAgb25IaWRlID09IG51bGwgPyB2b2lkIDAgOiBvbkhpZGUoKTtcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4sIGNsb3NlQnV0dG9uICYmIC8qI19fUFVSRV9fKi9fanN4KENsb3NlQnV0dG9uLCB7XG4gICAgICBcImFyaWEtbGFiZWxcIjogY2xvc2VMYWJlbCxcbiAgICAgIHZhcmlhbnQ6IGNsb3NlVmFyaWFudCxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgfSldXG4gIH0pO1xufSk7XG5BYnN0cmFjdE1vZGFsSGVhZGVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0TW9kYWxIZWFkZXI7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IEFic3RyYWN0TW9kYWxIZWFkZXIgZnJvbSAnLi9BYnN0cmFjdE1vZGFsSGVhZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGNsb3NlTGFiZWw6ICdDbG9zZScsXG4gIGNsb3NlQnV0dG9uOiBmYWxzZVxufTtcbmNvbnN0IE9mZmNhbnZhc0hlYWRlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdvZmZjYW52YXMtaGVhZGVyJyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChBYnN0cmFjdE1vZGFsSGVhZGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgpXG4gIH0pO1xufSk7XG5PZmZjYW52YXNIZWFkZXIuZGlzcGxheU5hbWUgPSAnT2ZmY2FudmFzSGVhZGVyJztcbk9mZmNhbnZhc0hlYWRlci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPZmZjYW52YXNIZWFkZXI7IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgZGl2V2l0aENsYXNzTmFtZSBmcm9tICcuL2RpdldpdGhDbGFzc05hbWUnO1xuY29uc3QgRGl2U3R5bGVkQXNINSA9IGRpdldpdGhDbGFzc05hbWUoJ2g1Jyk7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ29mZmNhbnZhcy10aXRsZScsIHtcbiAgQ29tcG9uZW50OiBEaXZTdHlsZWRBc0g1XG59KTsiLCJmdW5jdGlvbiByZXBsYWNlQ2xhc3NOYW1lKG9yaWdDbGFzcywgY2xhc3NUb1JlbW92ZSkge1xuICByZXR1cm4gb3JpZ0NsYXNzLnJlcGxhY2UobmV3IFJlZ0V4cChcIihefFxcXFxzKVwiICsgY2xhc3NUb1JlbW92ZSArIFwiKD86XFxcXHN8JClcIiwgJ2cnKSwgJyQxJykucmVwbGFjZSgvXFxzKy9nLCAnICcpLnJlcGxhY2UoL15cXHMqfFxccyokL2csICcnKTtcbn1cbi8qKlxuICogUmVtb3ZlcyBhIENTUyBjbGFzcyBmcm9tIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW1vdmVDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSB7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gcmVwbGFjZUNsYXNzTmFtZShlbGVtZW50LmNsYXNzTmFtZSwgY2xhc3NOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCByZXBsYWNlQ2xhc3NOYW1lKGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgJycsIGNsYXNzTmFtZSkpO1xuICB9XG59IiwiaW1wb3J0IGFkZENsYXNzIGZyb20gJ2RvbS1oZWxwZXJzL2FkZENsYXNzJztcbmltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCBxc2EgZnJvbSAnZG9tLWhlbHBlcnMvcXVlcnlTZWxlY3RvckFsbCc7XG5pbXBvcnQgcmVtb3ZlQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvcmVtb3ZlQ2xhc3MnO1xuaW1wb3J0IE1vZGFsTWFuYWdlciBmcm9tICdAcmVzdGFydC91aS9Nb2RhbE1hbmFnZXInO1xuY29uc3QgU2VsZWN0b3IgPSB7XG4gIEZJWEVEX0NPTlRFTlQ6ICcuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wJyxcbiAgU1RJQ0tZX0NPTlRFTlQ6ICcuc3RpY2t5LXRvcCcsXG4gIE5BVkJBUl9UT0dHTEVSOiAnLm5hdmJhci10b2dnbGVyJ1xufTtcbmNsYXNzIEJvb3RzdHJhcE1vZGFsTWFuYWdlciBleHRlbmRzIE1vZGFsTWFuYWdlciB7XG4gIGFkanVzdEFuZFN0b3JlKHByb3AsIGVsZW1lbnQsIGFkanVzdCkge1xuICAgIGNvbnN0IGFjdHVhbCA9IGVsZW1lbnQuc3R5bGVbcHJvcF07XG4gICAgLy8gVE9ETzogRE9NU3RyaW5nTWFwIGFuZCBDU1NTdHlsZURlY2xhcmF0aW9uIGFyZW4ndCBzdHJpY3RseSBjb21wYXRpYmxlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGVsZW1lbnQuZGF0YXNldFtwcm9wXSA9IGFjdHVhbDtcbiAgICBjc3MoZWxlbWVudCwge1xuICAgICAgW3Byb3BdOiBgJHtwYXJzZUZsb2F0KGNzcyhlbGVtZW50LCBwcm9wKSkgKyBhZGp1c3R9cHhgXG4gICAgfSk7XG4gIH1cbiAgcmVzdG9yZShwcm9wLCBlbGVtZW50KSB7XG4gICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LmRhdGFzZXRbcHJvcF07XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBlbGVtZW50LmRhdGFzZXRbcHJvcF07XG4gICAgICBjc3MoZWxlbWVudCwge1xuICAgICAgICBbcHJvcF06IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgc2V0Q29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpIHtcbiAgICBzdXBlci5zZXRDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRFbGVtZW50KCk7XG4gICAgYWRkQ2xhc3MoY29udGFpbmVyLCAnbW9kYWwtb3BlbicpO1xuICAgIGlmICghY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpIHJldHVybjtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHRoaXMuaXNSVEwgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3QgbWFyZ2luUHJvcCA9IHRoaXMuaXNSVEwgPyAnbWFyZ2luTGVmdCcgOiAnbWFyZ2luUmlnaHQnO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLkZJWEVEX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5hZGp1c3RBbmRTdG9yZShwYWRkaW5nUHJvcCwgZWwsIGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSk7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuU1RJQ0tZX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5hZGp1c3RBbmRTdG9yZShtYXJnaW5Qcm9wLCBlbCwgLWNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSk7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuTkFWQkFSX1RPR0dMRVIpLmZvckVhY2goZWwgPT4gdGhpcy5hZGp1c3RBbmRTdG9yZShtYXJnaW5Qcm9wLCBlbCwgY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpKTtcbiAgfVxuICByZW1vdmVDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIHN1cGVyLnJlbW92ZUNvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICByZW1vdmVDbGFzcyhjb250YWluZXIsICdtb2RhbC1vcGVuJyk7XG4gICAgY29uc3QgcGFkZGluZ1Byb3AgPSB0aGlzLmlzUlRMID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnO1xuICAgIGNvbnN0IG1hcmdpblByb3AgPSB0aGlzLmlzUlRMID8gJ21hcmdpbkxlZnQnIDogJ21hcmdpblJpZ2h0JztcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5GSVhFRF9DT05URU5UKS5mb3JFYWNoKGVsID0+IHRoaXMucmVzdG9yZShwYWRkaW5nUHJvcCwgZWwpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5TVElDS1lfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLnJlc3RvcmUobWFyZ2luUHJvcCwgZWwpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5OQVZCQVJfVE9HR0xFUikuZm9yRWFjaChlbCA9PiB0aGlzLnJlc3RvcmUobWFyZ2luUHJvcCwgZWwpKTtcbiAgfVxufVxubGV0IHNoYXJlZE1hbmFnZXI7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hhcmVkTWFuYWdlcihvcHRpb25zKSB7XG4gIGlmICghc2hhcmVkTWFuYWdlcikgc2hhcmVkTWFuYWdlciA9IG5ldyBCb290c3RyYXBNb2RhbE1hbmFnZXIob3B0aW9ucyk7XG4gIHJldHVybiBzaGFyZWRNYW5hZ2VyO1xufVxuZXhwb3J0IGRlZmF1bHQgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyOyIsImltcG9ydCBoYXNDbGFzcyBmcm9tICcuL2hhc0NsYXNzJztcbi8qKlxuICogQWRkcyBhIENTUyBjbGFzcyB0byBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MgbmFtZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZENsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO2Vsc2UgaWYgKCFoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpKSBpZiAodHlwZW9mIGVsZW1lbnQuY2xhc3NOYW1lID09PSAnc3RyaW5nJykgZWxlbWVudC5jbGFzc05hbWUgPSBlbGVtZW50LmNsYXNzTmFtZSArIFwiIFwiICsgY2xhc3NOYW1lO2Vsc2UgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgKGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgJycpICsgXCIgXCIgKyBjbGFzc05hbWUpO1xufSIsIi8qKlxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4gZWxlbWVudCBoYXMgYSBDU1MgY2xhc3MuXG4gKiBcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MgbmFtZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYXNDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSByZXR1cm4gISFjbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbiAgcmV0dXJuIChcIiBcIiArIChlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsIHx8IGVsZW1lbnQuY2xhc3NOYW1lKSArIFwiIFwiKS5pbmRleE9mKFwiIFwiICsgY2xhc3NOYW1lICsgXCIgXCIpICE9PSAtMTtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB1c2VCcmVha3BvaW50IGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUJyZWFrcG9pbnQnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJhc2VNb2RhbCBmcm9tICdAcmVzdGFydC91aS9Nb2RhbCc7XG5pbXBvcnQgRmFkZSBmcm9tICcuL0ZhZGUnO1xuaW1wb3J0IE9mZmNhbnZhc0JvZHkgZnJvbSAnLi9PZmZjYW52YXNCb2R5JztcbmltcG9ydCBPZmZjYW52YXNUb2dnbGluZyBmcm9tICcuL09mZmNhbnZhc1RvZ2dsaW5nJztcbmltcG9ydCBNb2RhbENvbnRleHQgZnJvbSAnLi9Nb2RhbENvbnRleHQnO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCBPZmZjYW52YXNIZWFkZXIgZnJvbSAnLi9PZmZjYW52YXNIZWFkZXInO1xuaW1wb3J0IE9mZmNhbnZhc1RpdGxlIGZyb20gJy4vT2ZmY2FudmFzVGl0bGUnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBCb290c3RyYXBNb2RhbE1hbmFnZXIsIHsgZ2V0U2hhcmVkTWFuYWdlciB9IGZyb20gJy4vQm9vdHN0cmFwTW9kYWxNYW5hZ2VyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgc2hvdzogZmFsc2UsXG4gIGJhY2tkcm9wOiB0cnVlLFxuICBrZXlib2FyZDogdHJ1ZSxcbiAgc2Nyb2xsOiBmYWxzZSxcbiAgYXV0b0ZvY3VzOiB0cnVlLFxuICBlbmZvcmNlRm9jdXM6IHRydWUsXG4gIHJlc3RvcmVGb2N1czogdHJ1ZSxcbiAgcGxhY2VtZW50OiAnc3RhcnQnLFxuICByZW5kZXJTdGF0aWNOb2RlOiBmYWxzZVxufTtcbmZ1bmN0aW9uIERpYWxvZ1RyYW5zaXRpb24ocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE9mZmNhbnZhc1RvZ2dsaW5nLCB7XG4gICAgLi4ucHJvcHNcbiAgfSk7XG59XG5mdW5jdGlvbiBCYWNrZHJvcFRyYW5zaXRpb24ocHJvcHMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEZhZGUsIHtcbiAgICAuLi5wcm9wc1xuICB9KTtcbn1cbmNvbnN0IE9mZmNhbnZhcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkYnksXG4gIHBsYWNlbWVudCxcbiAgcmVzcG9uc2l2ZSxcbiAgLyogQmFzZU1vZGFsIHByb3BzICovXG5cbiAgc2hvdyxcbiAgYmFja2Ryb3AsXG4gIGtleWJvYXJkLFxuICBzY3JvbGwsXG4gIG9uRXNjYXBlS2V5RG93bixcbiAgb25TaG93LFxuICBvbkhpZGUsXG4gIGNvbnRhaW5lcixcbiAgYXV0b0ZvY3VzLFxuICBlbmZvcmNlRm9jdXMsXG4gIHJlc3RvcmVGb2N1cyxcbiAgcmVzdG9yZUZvY3VzT3B0aW9ucyxcbiAgb25FbnRlcmVkLFxuICBvbkV4aXQsXG4gIG9uRXhpdGluZyxcbiAgb25FbnRlcixcbiAgb25FbnRlcmluZyxcbiAgb25FeGl0ZWQsXG4gIGJhY2tkcm9wQ2xhc3NOYW1lLFxuICBtYW5hZ2VyOiBwcm9wc01hbmFnZXIsXG4gIHJlbmRlclN0YXRpY05vZGUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgbW9kYWxNYW5hZ2VyID0gdXNlUmVmKCk7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnb2ZmY2FudmFzJyk7XG4gIGNvbnN0IHtcbiAgICBvblRvZ2dsZVxuICB9ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KSB8fCB7fTtcbiAgY29uc3QgW3Nob3dPZmZjYW52YXMsIHNldFNob3dPZmZjYW52YXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBoaWRlUmVzcG9uc2l2ZU9mZmNhbnZhcyA9IHVzZUJyZWFrcG9pbnQocmVzcG9uc2l2ZSB8fCAneHMnLCAndXAnKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBIYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHNjcmVlbiBpcyByZXNpemVkIHdoaWxlIHRoZSByZXNwb25zaXZlXG4gICAgLy8gb2ZmY2FudmFzIGlzIHNob3duLiBJZiBgcmVzcG9uc2l2ZWAgbm90IHByb3ZpZGVkLCBqdXN0IHVzZSBgc2hvd2AuXG4gICAgc2V0U2hvd09mZmNhbnZhcyhyZXNwb25zaXZlID8gc2hvdyAmJiAhaGlkZVJlc3BvbnNpdmVPZmZjYW52YXMgOiBzaG93KTtcbiAgfSwgW3Nob3csIHJlc3BvbnNpdmUsIGhpZGVSZXNwb25zaXZlT2ZmY2FudmFzXSk7XG4gIGNvbnN0IGhhbmRsZUhpZGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoKTtcbiAgICBvbkhpZGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uSGlkZSgpO1xuICB9KTtcbiAgY29uc3QgbW9kYWxDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIG9uSGlkZTogaGFuZGxlSGlkZVxuICB9KSwgW2hhbmRsZUhpZGVdKTtcbiAgZnVuY3Rpb24gZ2V0TW9kYWxNYW5hZ2VyKCkge1xuICAgIGlmIChwcm9wc01hbmFnZXIpIHJldHVybiBwcm9wc01hbmFnZXI7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgLy8gSGF2ZSB0byB1c2UgYSBkaWZmZXJlbnQgbW9kYWwgbWFuYWdlciBzaW5jZSB0aGUgc2hhcmVkXG4gICAgICAvLyBvbmUgaGFuZGxlcyBvdmVyZmxvdy5cbiAgICAgIGlmICghbW9kYWxNYW5hZ2VyLmN1cnJlbnQpIG1vZGFsTWFuYWdlci5jdXJyZW50ID0gbmV3IEJvb3RzdHJhcE1vZGFsTWFuYWdlcih7XG4gICAgICAgIGhhbmRsZUNvbnRhaW5lck92ZXJmbG93OiBmYWxzZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbW9kYWxNYW5hZ2VyLmN1cnJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBnZXRTaGFyZWRNYW5hZ2VyKCk7XG4gIH1cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSAobm9kZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChub2RlKSBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgb25FbnRlciA9PSBudWxsID8gdm9pZCAwIDogb25FbnRlcihub2RlLCAuLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gKG5vZGUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAobm9kZSkgbm9kZS5zdHlsZS52aXNpYmlsaXR5ID0gJyc7XG4gICAgb25FeGl0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXhpdGVkKC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCByZW5kZXJCYWNrZHJvcCA9IHVzZUNhbGxiYWNrKGJhY2tkcm9wUHJvcHMgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgIC4uLmJhY2tkcm9wUHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGAke2JzUHJlZml4fS1iYWNrZHJvcGAsIGJhY2tkcm9wQ2xhc3NOYW1lKVxuICB9KSwgW2JhY2tkcm9wQ2xhc3NOYW1lLCBic1ByZWZpeF0pO1xuICBjb25zdCByZW5kZXJEaWFsb2cgPSBkaWFsb2dQcm9wcyA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgLi4uZGlhbG9nUHJvcHMsXG4gICAgLi4ucHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcmVzcG9uc2l2ZSA/IGAke2JzUHJlZml4fS0ke3Jlc3BvbnNpdmV9YCA6IGJzUHJlZml4LCBgJHtic1ByZWZpeH0tJHtwbGFjZW1lbnR9YCksXG4gICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkYnksXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbIXNob3dPZmZjYW52YXMgJiYgKHJlc3BvbnNpdmUgfHwgcmVuZGVyU3RhdGljTm9kZSkgJiYgcmVuZGVyRGlhbG9nKHt9KSwgLyojX19QVVJFX18qL19qc3goTW9kYWxDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogbW9kYWxDb250ZXh0LFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEJhc2VNb2RhbCwge1xuICAgICAgICBzaG93OiBzaG93T2ZmY2FudmFzLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgYmFja2Ryb3A6IGJhY2tkcm9wLFxuICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICAgICAga2V5Ym9hcmQ6IGtleWJvYXJkLFxuICAgICAgICBhdXRvRm9jdXM6IGF1dG9Gb2N1cyxcbiAgICAgICAgZW5mb3JjZUZvY3VzOiBlbmZvcmNlRm9jdXMgJiYgIXNjcm9sbCxcbiAgICAgICAgcmVzdG9yZUZvY3VzOiByZXN0b3JlRm9jdXMsXG4gICAgICAgIHJlc3RvcmVGb2N1c09wdGlvbnM6IHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvblNob3c6IG9uU2hvdyxcbiAgICAgICAgb25IaWRlOiBoYW5kbGVIaWRlLFxuICAgICAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICAgICAgb25FbnRlcmluZzogb25FbnRlcmluZyxcbiAgICAgICAgb25FbnRlcmVkOiBvbkVudGVyZWQsXG4gICAgICAgIG9uRXhpdDogb25FeGl0LFxuICAgICAgICBvbkV4aXRpbmc6IG9uRXhpdGluZyxcbiAgICAgICAgb25FeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICAgICAgbWFuYWdlcjogZ2V0TW9kYWxNYW5hZ2VyKCksXG4gICAgICAgIHRyYW5zaXRpb246IERpYWxvZ1RyYW5zaXRpb24sXG4gICAgICAgIGJhY2tkcm9wVHJhbnNpdGlvbjogQmFja2Ryb3BUcmFuc2l0aW9uLFxuICAgICAgICByZW5kZXJCYWNrZHJvcDogcmVuZGVyQmFja2Ryb3AsXG4gICAgICAgIHJlbmRlckRpYWxvZzogcmVuZGVyRGlhbG9nXG4gICAgICB9KVxuICAgIH0pXVxuICB9KTtcbn0pO1xuT2ZmY2FudmFzLmRpc3BsYXlOYW1lID0gJ09mZmNhbnZhcyc7XG5PZmZjYW52YXMuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihPZmZjYW52YXMsIHtcbiAgQm9keTogT2ZmY2FudmFzQm9keSxcbiAgSGVhZGVyOiBPZmZjYW52YXNIZWFkZXIsXG4gIFRpdGxlOiBPZmZjYW52YXNUaXRsZVxufSk7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBPZmZjYW52YXMgZnJvbSAnLi9PZmZjYW52YXMnO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZiYXJPZmZjYW52YXMgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE9mZmNhbnZhcywge1xuICAgIHJlZjogcmVmLFxuICAgIHNob3c6ICEhKGNvbnRleHQgIT0gbnVsbCAmJiBjb250ZXh0LmV4cGFuZGVkKSxcbiAgICAuLi5wcm9wcyxcbiAgICByZW5kZXJTdGF0aWNOb2RlOiB0cnVlXG4gIH0pO1xufSk7XG5OYXZiYXJPZmZjYW52YXMuZGlzcGxheU5hbWUgPSAnTmF2YmFyT2ZmY2FudmFzJztcbmV4cG9ydCBkZWZhdWx0IE5hdmJhck9mZmNhbnZhczsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0IGZyb20gJ0ByZXN0YXJ0L3VpL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuaW1wb3J0IE5hdmJhckJyYW5kIGZyb20gJy4vTmF2YmFyQnJhbmQnO1xuaW1wb3J0IE5hdmJhckNvbGxhcHNlIGZyb20gJy4vTmF2YmFyQ29sbGFwc2UnO1xuaW1wb3J0IE5hdmJhclRvZ2dsZSBmcm9tICcuL05hdmJhclRvZ2dsZSc7XG5pbXBvcnQgTmF2YmFyT2ZmY2FudmFzIGZyb20gJy4vTmF2YmFyT2ZmY2FudmFzJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhclRleHQgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ25hdmJhci10ZXh0Jywge1xuICBDb21wb25lbnQ6ICdzcGFuJ1xufSk7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGV4cGFuZDogdHJ1ZSxcbiAgdmFyaWFudDogJ2xpZ2h0JyxcbiAgY29sbGFwc2VPblNlbGVjdDogZmFsc2Vcbn07XG5jb25zdCBOYXZiYXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYnNQcmVmaXg6IGluaXRpYWxCc1ByZWZpeCxcbiAgICBleHBhbmQsXG4gICAgdmFyaWFudCxcbiAgICBiZyxcbiAgICBmaXhlZCxcbiAgICBzdGlja3ksXG4gICAgY2xhc3NOYW1lLFxuICAgIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgICBhczogQ29tcG9uZW50ID0gJ25hdicsXG4gICAgZXhwYW5kZWQsXG4gICAgb25Ub2dnbGUsXG4gICAgb25TZWxlY3QsXG4gICAgY29sbGFwc2VPblNlbGVjdCxcbiAgICAuLi5jb250cm9sbGVkUHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZChwcm9wcywge1xuICAgIGV4cGFuZGVkOiAnb25Ub2dnbGUnXG4gIH0pO1xuICBjb25zdCBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChpbml0aWFsQnNQcmVmaXgsICduYXZiYXInKTtcbiAgY29uc3QgaGFuZGxlQ29sbGFwc2UgPSB1c2VDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgIG9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdCguLi5hcmdzKTtcbiAgICBpZiAoY29sbGFwc2VPblNlbGVjdCAmJiBleHBhbmRlZCkge1xuICAgICAgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKGZhbHNlKTtcbiAgICB9XG4gIH0sIFtvblNlbGVjdCwgY29sbGFwc2VPblNlbGVjdCwgZXhwYW5kZWQsIG9uVG9nZ2xlXSk7XG5cbiAgLy8gd2lsbCByZXN1bHQgaW4gc29tZSBmYWxzZSBwb3NpdGl2ZXMgYnV0IHRoYXQgc2VlbXMgYmV0dGVyXG4gIC8vIHRoYW4gZmFsc2UgbmVnYXRpdmVzLiBzdHJpY3QgYHVuZGVmaW5lZGAgY2hlY2sgYWxsb3dzIGV4cGxpY2l0XG4gIC8vIFwibnVsbGluZ1wiIG9mIHRoZSByb2xlIGlmIHRoZSB1c2VyIHJlYWxseSBkb2Vzbid0IHdhbnQgb25lXG4gIGlmIChjb250cm9sbGVkUHJvcHMucm9sZSA9PT0gdW5kZWZpbmVkICYmIENvbXBvbmVudCAhPT0gJ25hdicpIHtcbiAgICBjb250cm9sbGVkUHJvcHMucm9sZSA9ICduYXZpZ2F0aW9uJztcbiAgfVxuICBsZXQgZXhwYW5kQ2xhc3MgPSBgJHtic1ByZWZpeH0tZXhwYW5kYDtcbiAgaWYgKHR5cGVvZiBleHBhbmQgPT09ICdzdHJpbmcnKSBleHBhbmRDbGFzcyA9IGAke2V4cGFuZENsYXNzfS0ke2V4cGFuZH1gO1xuICBjb25zdCBuYXZiYXJDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIG9uVG9nZ2xlOiAoKSA9PiBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoIWV4cGFuZGVkKSxcbiAgICBic1ByZWZpeCxcbiAgICBleHBhbmRlZDogISFleHBhbmRlZCxcbiAgICBleHBhbmRcbiAgfSksIFtic1ByZWZpeCwgZXhwYW5kZWQsIGV4cGFuZCwgb25Ub2dnbGVdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE5hdmJhckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogbmF2YmFyQ29udGV4dCxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU2VsZWN0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBoYW5kbGVDb2xsYXBzZSxcbiAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIC4uLmNvbnRyb2xsZWRQcm9wcyxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgsIGV4cGFuZCAmJiBleHBhbmRDbGFzcywgdmFyaWFudCAmJiBgJHtic1ByZWZpeH0tJHt2YXJpYW50fWAsIGJnICYmIGBiZy0ke2JnfWAsIHN0aWNreSAmJiBgc3RpY2t5LSR7c3RpY2t5fWAsIGZpeGVkICYmIGBmaXhlZC0ke2ZpeGVkfWApXG4gICAgICB9KVxuICAgIH0pXG4gIH0pO1xufSk7XG5OYXZiYXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuTmF2YmFyLmRpc3BsYXlOYW1lID0gJ05hdmJhcic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdmJhciwge1xuICBCcmFuZDogTmF2YmFyQnJhbmQsXG4gIENvbGxhcHNlOiBOYXZiYXJDb2xsYXBzZSxcbiAgT2ZmY2FudmFzOiBOYXZiYXJPZmZjYW52YXMsXG4gIFRleHQ6IE5hdmJhclRleHQsXG4gIFRvZ2dsZTogTmF2YmFyVG9nZ2xlXG59KTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBmbHVpZDogZmFsc2Vcbn07XG5jb25zdCBDb250YWluZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgZmx1aWQsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnY29udGFpbmVyJyk7XG4gIGNvbnN0IHN1ZmZpeCA9IHR5cGVvZiBmbHVpZCA9PT0gJ3N0cmluZycgPyBgLSR7Zmx1aWR9YCA6ICctZmx1aWQnO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgZmx1aWQgPyBgJHtwcmVmaXh9JHtzdWZmaXh9YCA6IHByZWZpeClcbiAgfSk7XG59KTtcbkNvbnRhaW5lci5kaXNwbGF5TmFtZSA9ICdDb250YWluZXInO1xuQ29udGFpbmVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IENvbnRhaW5lcjsiLCIvKlxuICogVGhpcyBmaWxlIGlzIGEgcGFydCBvZiB0aGUgQ2Fvc0RCIFByb2plY3QuXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDE5IEhlbnJpayB0b20gV8O2cmRlbiA8aC50b213b2VyZGVuQGluZGlzY2FsZS5jb20+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMyBUaW1tIEZpdHNjaGVuIDx0LmZpdHNjaGVuQGluZGlzY2FsZS5jb20+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMyBJbmRpU2NhbGUgR21iSCA8aW5mb0BpbmRpc2NhbGUuY29tPlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuLy8vLy8vLyBBVVRPIENPTVBMRVRJT05cbmNvbnN0IENRTF9XT1JEUyA9IFtcbiAgXCJGSU5EXCIsXG4gIFwiRklMRVwiLFxuICBcIkVOVElUWVwiLFxuICBcIlNFTEVDVFwiLFxuICBcIkNPVU5UXCIsXG4gIFwiUkVDT1JEXCIsXG4gIFwiUFJPUEVSVFlcIixcbiAgXCJSRUNPUkRUWVBFXCIsXG4gIFwiUkVGRVJFTkNFU1wiLFxuICBcIlJFRkVSRU5DRUQgQllcIixcbiAgXCJXSElDSFwiLFxuICBcIldJVEhcIixcbiAgXCJDUkVBVEVEIEJZXCIsXG4gIFwiQ1JFQVRFRCBCWSBNRVwiLFxuICBcIkNSRUFURUQgQVRcIixcbiAgXCJDUkVBVEVEIE9OXCIsXG4gIFwiQ1JFQVRFRCBJTlwiLFxuICBcIkNSRUFURUQgQkVGT1JFXCIsXG4gIFwiQ1JFQVRFRCBVTlRJTFwiLFxuICBcIkNSRUFURUQgQUZURVJcIixcbiAgXCJDUkVBVEVEIFNJTkNFXCIsXG4gIFwiU09NRU9ORVwiLFxuICBcIlNUT1JFRCBBVFwiLFxuICBcIkhBUyBBIFBST1BFUlRZXCIsXG4gIFwiSEFTIEJFRU5cIixcbiAgXCJBTlkgVkVSU0lPTiBPRlwiLFxuICBcIkZST01cIixcbiAgXCJJTlNFUlRFRCBBVFwiLFxuICBcIklOU0VSVEVEIE9OXCIsXG4gIFwiSU5TRVJURUQgSU5cIixcbiAgXCJJTlNFUlRFRCBCWVwiLFxuICBcIklOU0VSVEVEIEJZIE1FXCIsXG4gIFwiSU5TRVJURUQgQkVGT1JFXCIsXG4gIFwiSU5TRVJURUQgVU5USUxcIixcbiAgXCJJTlNFUlRFRCBBRlRFUlwiLFxuICBcIklOU0VSVEVEIFNJTkNFXCIsXG4gIFwiVVBEQVRFRCBBVFwiLFxuICBcIlVQREFURUQgT05cIixcbiAgXCJVUERBVEVEIElOXCIsXG4gIFwiVVBEQVRFRCBCWVwiLFxuICBcIlVQREFURUQgQlkgTUVcIixcbiAgXCJVUERBVEVEIEJFRk9SRVwiLFxuICBcIlVQREFURUQgVU5USUxcIixcbiAgXCJVUERBVEVEIEFGVEVSXCIsXG4gIFwiVVBEQVRFRCBTSU5DRVwiLFxuICBcIlNJTkNFXCIsXG4gIFwiQkVGT1JFXCIsXG4gIFwiT05cIixcbiAgXCJJTlwiLFxuICBcIkFGVEVSXCIsXG4gIFwiVU5USUxcIixcbiAgXCJBVFwiLFxuICBcIkJZXCIsXG4gIFwiQlkgTUVcIixcbl07XG5cbmZ1bmN0aW9uIHByZXBhcmVUZXJtcyh0ZXJtcykge1xuICByZXR1cm4gdGVybXMubWFwKCh0ZXJtKSA9PiB7XG4gICAgdmFyIHRlcm1fZXNjYXBlZCA9IHRlcm07XG4gICAgaWYgKHRlcm1fZXNjYXBlZC5pbmRleE9mKFwiIFwiKSA+IC0xKSB7XG4gICAgICBpZiAodGVybS5pbmRleE9mKCdcIicpID4gLTEpIHtcbiAgICAgICAgdGVybV9lc2NhcGVkID0gYCcke3Rlcm1fZXNjYXBlZH0nYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlcm1fZXNjYXBlZCA9IGBcIiR7dGVybV9lc2NhcGVkfVwiYDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG9yaWdpbmFsOiB0ZXJtLFxuICAgICAgbm9ybWFsaXplZDogdGVybS50cmltKCkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGVzY2FwZWQ6IHRlcm1fZXNjYXBlZCxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUNxbFdvcmRzKHdvcmRzKSB7XG4gIHJldHVybiB3b3Jkcy5tYXAoKHdvcmQpID0+ICh7XG4gICAgb3JpZ2luYWw6IHdvcmQsXG4gICAgbm9ybWFsaXplZDogd29yZC50cmltKCkudG9Mb3dlckNhc2UoKSxcbiAgICBlc2NhcGVkOiB3b3JkLFxuICB9KSk7XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGlvbiB7XG4gIGNvbnN0cnVjdG9yKHRlcm1zLCBjcWxfd29yZHMpIHtcbiAgICB0aGlzLl9jcWxfd29yZHMgPSBwcmVwYXJlQ3FsV29yZHMoY3FsX3dvcmRzIHx8IENRTF9XT1JEUyk7XG4gICAgdGhpcy5fdGVybXMgPSB0ZXJtcyB8fCBbXTtcbiAgICB0aGlzLl9yZXNvbHZlZF90ZXJtcyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIGdldFN1Z2dlc3Rpb25zKGlzQ3FsLCBmdWxsUXVlcnksIHdvcmQpIHtcbiAgICBpZiAoaXNDcWwpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldENxbFN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFNlYXJjaFRlcm1TdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpO1xuICB9XG5cbiAgYXN5bmMgX2RvX3Jlc29sdmVfdGVybXModGVybXMpIHtcbiAgICB2YXIgcmVzb2x2ZWRfdGVybXM7XG4gICAgaWYgKHR5cGVvZiB0ZXJtcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXNvbHZlZF90ZXJtcyA9IGF3YWl0IHRlcm1zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmVkX3Rlcm1zID0gYXdhaXQgdGVybXM7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBwcmVwYXJlVGVybXMocmVzb2x2ZWRfdGVybXMpO1xuICB9XG5cbiAgYXN5bmMgX2dldFRlcm1zKCkge1xuICAgIGlmICghdGhpcy5fcmVzb2x2ZWRfdGVybXMpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmVkX3Rlcm1zID0gdGhpcy5fZG9fcmVzb2x2ZV90ZXJtcyh0aGlzLl90ZXJtcyk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9yZXNvbHZlZF90ZXJtcztcbiAgfVxuXG4gIGFzeW5jIGdldFNlYXJjaFRlcm1TdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpIHtcbiAgICB2YXIgdGVybXMgPSBhd2FpdCB0aGlzLl9nZXRUZXJtcygpO1xuICAgIGlmIChmdWxsUXVlcnkgPT09IHdvcmQpIHtcbiAgICAgIC8vIHN0aWxsIG9ubHkgb25lIHdvcmQgLT4gYWxzbyBhcHBlbmQgRklORCwgU0VMRUNUIGFuZCBDT1VOVFxuICAgICAgdGVybXMgPSBwcmVwYXJlQ3FsV29yZHMoW1wiRklORFwiLCBcIlNFTEVDVFwiLCBcIkNPVU5UXCJdKS5jb25jYXQodGVybXMpO1xuICAgIH1cbiAgICBjb25zdCB3b3JkTm9ybWFsaXplZCA9IHdvcmQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRlcm1zLmZpbHRlcigodGVybSkgPT4gdGVybS5ub3JtYWxpemVkLnN0YXJ0c1dpdGgod29yZE5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFzeW5jIGdldENxbFN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCkge1xuICAgIGNvbnN0IGNxbF93b3JkcyA9IHRoaXMuX2NxbF93b3JkcztcblxuICAgIGNvbnN0IHdvcmROb3JtYWxpemVkID0gd29yZC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gY3FsX3dvcmRzXG4gICAgICAuZmlsdGVyKCh0ZXJtKSA9PiB0ZXJtLm5vcm1hbGl6ZWQuc3RhcnRzV2l0aCh3b3JkTm9ybWFsaXplZCkpXG4gICAgICAuY29uY2F0KGF3YWl0IHRoaXMuZ2V0U2VhcmNoVGVybVN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCkpO1xuICB9XG59XG5cbi8vLy8vLy8gUVVFUlkgR0VORVJBVElPTlxuXG5leHBvcnQgY29uc3QgaXNDcWwgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgcXVlcnkgPSBxdWVyeS50b1VwcGVyQ2FzZSgpLnRyaW0oKTtcbiAgcmV0dXJuIChcbiAgICBxdWVyeS5zdGFydHNXaXRoKFwiRklORFwiKSB8fFxuICAgIHF1ZXJ5LnN0YXJ0c1dpdGgoXCJDT1VOVFwiKSB8fFxuICAgIHF1ZXJ5LnN0YXJ0c1dpdGgoXCJTRUxFQ1RcIilcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NlbGVjdCA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICByZXR1cm4gcXVlcnkudG9VcHBlckNhc2UoKS50cmltKCkuc3RhcnRzV2l0aChcIlNFTEVDVFwiKTtcbn07XG5cbmNvbnN0IHRyYW5zbGF0b3IgPSB7XG4gIFwiPVwiOiBcIj1cIixcbiAgXCI+XCI6IFwiPlwiLFxuICBcIuKJpVwiOiBcIj49XCIsXG4gIFwiPFwiOiBcIjxcIixcbiAgXCLiiaRcIjogXCI8PVwiLFxuICBcIuKJoFwiOiBcIiE9XCIsXG4gIGVxdWFsczogXCI9XCIsXG4gIGluOiBcImluXCIsXG4gIFwibm90IGluXCI6IFwibm90IGluXCIsXG4gIFwiYWZ0ZXIgZGF0ZVwiOiBcIj5cIixcbiAgXCJzaW5jZSBkYXRlXCI6IFwiPj1cIixcbiAgXCJ1bnRpbCBkYXRlXCI6IFwiPD1cIixcbiAgXCJiZWZvcmUgZGF0ZVwiOiBcIjxcIixcbiAgXCJvbiBkYXRlXCI6IFwib25cIixcbiAgXCJub3Qgb24gZGF0ZVwiOiBcIm5vdCBvblwiLFxufTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpIHR1cGxlIHRvIGEgdmFsaWQgQ1FMIFBPVi1maWx0ZXJcbiAqIGV4cHJlc3Npb24gaW5jbHVkaW5nIHF1b3RhdGlvbiBmb3IgdGhlIHZhbHVlIGFuZCBwYXJlbnRoZXNpcyBhcm91bmRcbiAqIGV2ZXJ5dGhpbmcgZm9yIHNhZmUgaW50ZXJwcmV0YXRpb24gYnkgdGhlIENRTCBwYXJzZXIuXG4gKlxuICogICBFLmcuIChcIkV2ZW50LmxvbmdpdHVkZVwiLCBcIj5cIiwgLTQwLCBcIsKwXCIpIHJlc3VsdHMgaW5cbiAqICAgICAgICAnKEV2ZW50LmxvbmdpdHVkZSA+IFwiLTQwwrBcIiknLlxuICpcbiAqIE5vdGU6IFRoZSBjb3JyZWN0IHF1b3RhdGlvbiBmb3IgdGhlIHByb3BlcnR5IG11c3QgYmUgaW5jbHVkZWQgaW4gdGhlIHBhc3NlZFxuICogYHByb3BlcnR5YCBhbHJlYWR5IGFuZCBoZW5jZSBiZSBkZWZpbmVkIGluIHRoZSBRdWVyeUZvcm1+RmlsdGVyRGVmaW5pdGlvbi5cbiAqXG4gKiBOb3RlOiBUaGlzIGlzIG5lZWRlZCBieSBtYWtlUXVlcnkgYW5kIGhhbmRsZXMgdGhlIG1vc3QgYmFzaWMgY2FzZXMuIEZvclxuICogb3BlcmF0b3JzIGxpa2UgYG5vdCBjb250YWluc2Agb3IgYHJhbmdlYCB0aGVyZSBhcmUgc3BlY2lhbCB0cmVhdG1lbnRzXG4gKiBlbHNld2hlcmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdF1cbiAqIEByZXR1cm4ge3N0cmluZ30gQ1FMIFBPVi1maWx0ZXIgZXhwcmVzc2lvbi5cbiAqL1xuY29uc3QgdG9DUUwgPSAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgPT4ge1xuICB2YWx1ZSA9IHZhbHVlIHx8IFwiXCI7XG4gIHVuaXQgPSB1bml0IHx8IFwiXCI7XG4gIGNvbnN0IHF1b3RlcyA9IHVuaXQgIT09IFwiXCIgPyBcIlwiIDogdmFsdWUuaW5kZXhPZignXCInKSA9PT0gLTEgPyAnXCInIDogXCInXCI7XG4gIGlmICh0cmFuc2xhdG9yW29wZXJhdG9yXSkge1xuICAgIHJldHVybiBgKCR7cHJvcGVydHl9ICR7dHJhbnNsYXRvcltvcGVyYXRvcl19ICR7cXVvdGVzfSR7dmFsdWV9JHt1bml0fSR7cXVvdGVzfSlgO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHRyYW5zbGF0ZSAke3Byb3BlcnR5fSAke29wZXJhdG9yfSBmaWx0ZXJgLCB2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWxsb3dlZF9vcGVyYXRvcnMgPSB7XG4gIGJvb2xlYW46IFtcImlzIHRydWVcIiwgXCJpcyBmYWxzZVwiXSxcbiAgdGV4dDogW1wiZXF1YWxzXCIsIFwibm90IGVxdWFsc1wiLCBcImNvbnRhaW5zXCIsIFwibm90IGNvbnRhaW5zXCJdLFxuICBpbnRlZ2VyOiBbXCI9XCIsIFwi4omgXCIsIFwi4omlXCIsIFwi4omkXCIsIFwiPFwiLCBcIj5cIiwgXCJyYW5nZVwiXSxcbiAgZG91YmxlOiBbXCI9XCIsIFwi4omgXCIsIFwi4omlXCIsIFwi4omkXCIsIFwiPFwiLCBcIj5cIiwgXCJyYW5nZVwiXSxcbiAgZGF0ZXRpbWU6IFtcbiAgICBcIj1cIixcbiAgICBcIuKJoFwiLFxuICAgIFwib24gZGF0ZVwiLFxuICAgIFwiaW5cIixcbiAgICBcIm5vdCBvbiBkYXRlXCIsXG4gICAgXCJub3QgaW5cIixcbiAgICBcImFmdGVyIGRhdGVcIixcbiAgICBcImJlZm9yZSBkYXRlXCIsXG4gICAgXCJ1bnRpbCBkYXRlXCIsXG4gICAgXCJzaW5jZSBkYXRlXCIsXG4gIF0sXG59O1xuXG4vKipcbiAqIERpY3Rpb25hcnkgb2YgZnVuY3Rpb25zOlxuICpcbiAqIChkYXRhdHlwZSxvcGVyYXRvcikgLT4gZnVuY3Rpb24ocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdClcbiAqL1xuY29uc3QgbWFrZV9xdWVyeV9maWx0ZXIgPSB7XG4gIGJvb2xlYW46IHtcbiAgICBcImlzIHRydWVcIjogKHByb3BlcnR5KSA9PiBgKCR7cHJvcGVydHl9ID0gVFJVRSlgLFxuICAgIFwiaXMgZmFsc2VcIjogKHByb3BlcnR5KSA9PiBgKCR7cHJvcGVydHl9ID0gRkFMU0UpYCxcbiAgfSxcbiAgdGV4dDoge1xuICAgIGNvbnRhaW5zOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSkgPT4gYCgke3Byb3BlcnR5fSBMSUtFIFwiKiR7dmFsdWV9KlwiKWAsXG4gICAgXCJub3QgZXF1YWxzXCI6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlKSA9PlxuICAgICAgYChOT1QgJHtwcm9wZXJ0eX0gPSBcIiR7dmFsdWV9XCIpYCxcbiAgICBcIm5vdCBjb250YWluc1wiOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSkgPT5cbiAgICAgIGAoTk9UICR7cHJvcGVydHl9IExJS0UgXCIqJHt2YWx1ZX0qXCIpYCxcbiAgfSxcbiAgaW50ZWdlcjoge1xuICAgIHJhbmdlOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgPT5cbiAgICAgIGAoJHtwcm9wZXJ0eX0gPiAke3ZhbHVlWzBdfSR7dW5pdH0pIEFORCAoJHtwcm9wZXJ0eX0gPCAke3ZhbHVlWzFdfSR7dW5pdH0pYCxcbiAgfSxcbiAgZG91YmxlOiB7XG4gICAgcmFuZ2U6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSA9PlxuICAgICAgYCgke3Byb3BlcnR5fSA+ICR7dmFsdWVbMF19JHt1bml0fSkgQU5EICgke3Byb3BlcnR5fSA8ICR7dmFsdWVbMV19JHt1bml0fSlgLFxuICB9LFxuICBfZGVmYXVsdDogeyBfZGVmYXVsdDogdG9DUUwgfSxcbn07XG5cbi8qKlxuICogR2VuZXJhdGUgYSB2YWxpZCBDUUwgUE9WLWZpbHRlciBleHByZXNzaW9ucyBhcHByb3ByaWF0ZSBmb3IgYSB0dXBsZVxuICogKGRhdGF0eXBlLCBwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YXR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW3VuaXRdXG4gKiBAcmV0dXJuIHtzdHJpbmd9IENRTCBQT1YtZmlsdGVyIGV4cHJlc3Npb24uXG4gKlxuICovXG5leHBvcnQgY29uc3QgbWFrZVF1ZXJ5RmlsdGVyID0gKGRhdGF0eXBlLCBwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSA9PiB7XG4gIGlmICghZGF0YXR5cGUgfHwgIW9wZXJhdG9yKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICB1bml0ID0gdW5pdCB8fCBcIlwiO1xuXG4gIGlmIChtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV0pIHtcbiAgICBpZiAoXG4gICAgICBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bb3BlcmF0b3JdIHx8XG4gICAgICBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bb3BlcmF0b3JdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW29wZXJhdG9yXShcbiAgICAgICAgcHJvcGVydHksXG4gICAgICAgIG9wZXJhdG9yLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdW5pdCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdIHx8XG4gICAgICBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdKFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB1bml0LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAobWFrZV9xdWVyeV9maWx0ZXJbXCJfZGVmYXVsdFwiXVtvcGVyYXRvcl0pIHtcbiAgICByZXR1cm4gbWFrZV9xdWVyeV9maWx0ZXJbXCJfZGVmYXVsdFwiXVtvcGVyYXRvcl0oXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIG9wZXJhdG9yLFxuICAgICAgdmFsdWUsXG4gICAgICB1bml0LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbWFrZV9xdWVyeV9maWx0ZXJbXCJfZGVmYXVsdFwiXVtcIl9kZWZhdWx0XCJdKFxuICAgIHByb3BlcnR5LFxuICAgIG9wZXJhdG9yLFxuICAgIHZhbHVlLFxuICAgIHVuaXQsXG4gICk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWNvcmRfdHlwZVxuICogQHJldHVybnMge1F1ZXJ5Rm9ybX5tYWtlUXVlcnlDYWxsYmFja31cbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VRdWVyeVRlbXBsYXRlID1cbiAgKHJlY29yZF90eXBlKSA9PiAoc2VhcmNoX3Rlcm1zLCBhY3RpdmVGaWx0ZXJzKSA9PiB7XG4gICAgdmFyIHF1ZXJ5ID0gXCJGSU5EIFJFQ09SRFwiO1xuICAgIGlmIChyZWNvcmRfdHlwZSkge1xuICAgICAgcXVlcnkgKz0gYCBcIiR7cmVjb3JkX3R5cGV9XCJgO1xuICAgIH1cbiAgICB2YXIgZmlsdGVyX2Nvbm5lY3RvciA9IFwiIFdJVEggXCI7XG4gICAgaWYgKHNlYXJjaF90ZXJtcyAmJiBzZWFyY2hfdGVybXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3BsaXR0ZWRfc2VhcmNoX3Rlcm1zID0gc3BsaXRTZWFyY2hUZXJtcyhzZWFyY2hfdGVybXMpLm1hcChcbiAgICAgICAgKHdvcmQpID0+IGBBIFBST1BFUlRZIExJS0UgJyoke3dvcmQucmVwbGFjZUFsbChcIidcIiwgYFxcXFwnYCl9KidgLFxuICAgICAgKTtcbiAgICAgIGlmIChzcGxpdHRlZF9zZWFyY2hfdGVybXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbHRlcl9jb25uZWN0b3IgPSBcIiBBTkQgXCI7XG4gICAgICAgIHF1ZXJ5ICs9IFwiIFdJVEggXCIgKyBzcGxpdHRlZF9zZWFyY2hfdGVybXMuam9pbihmaWx0ZXJfY29ubmVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJzID0gYWN0aXZlRmlsdGVycy5tYXAoKGZpbHRlcikgPT5cbiAgICAgIG1ha2VRdWVyeUZpbHRlcihcbiAgICAgICAgZmlsdGVyLmRhdGF0eXBlLFxuICAgICAgICBmaWx0ZXIucHJvcGVydHksXG4gICAgICAgIGZpbHRlci5vcGVyYXRvcixcbiAgICAgICAgZmlsdGVyLnZhbHVlLFxuICAgICAgICBmaWx0ZXIudW5pdCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5ICs9IGZpbHRlcl9jb25uZWN0b3IgKyBmaWx0ZXJzLmpvaW4oXCIgQU5EIFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH07XG5cbmNvbnN0IF9zcGxpdFNlYXJjaFRlcm1zUGF0dGVybiA9XG4gIC9cIig/PGRxPlteXCJdKilcIiB8Jyg/PHNxPlteJ10qKScgfCg/PG5xPlteIF0rKS9nO1xuXG4vKipcbiAqIFNwbGl0IGEgcXVlcnkgc3RyaW5nIGludG8gc2luZ2xlIHRlcm1zLlxuICpcbiAqIFRlcm1zIGFyZSBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2VzLiBUZXJtcyB3aGljaCBjb250YWluIHdoaXRlIHNwYWNlc1xuICogd2hpY2ggYXJlIHRvIGJlIHByZXNlcnZlZCBtdXN0IGJlIGVuY2xvc2VkIGluIFwiIG9yICcgcXVvdGVzLiBUaGVcbiAqIGVuY2xvc2luZyBxdW90YXRpb24gbWFya3MgYXJlIGJlaW5nIHN0cmlwcGVkLiBDdXJyZW50bHkgbm8gc3VwcG9ydCBmb3JcbiAqIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIHF1b3RhdGlvbiBtYXJrcy5cbiAqXG4gKiBAZnVuY3Rpb24gc3BsaXRTZWFyY2hUZXJtc1xuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5IC0gY29tcGxldGUgcXVlcnkgc3RyaW5nLlxuICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIHRoZSBzZWFyY2ggdGVybXMuXG4gKi9cbmNvbnN0IHNwbGl0U2VhcmNoVGVybXMgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgLy8gYWRkIGVtcHR5IHNwYWNlIGF0IHRoZSBlbmQsIHNvIGV2ZXJ5IG1hdGNoaW5nIGdyb3VwIGVuZHMgd2l0aCBpdCAtPiBlYXNpZXIgcmVnZXguIEFsc28sIHVuZGVmaW5lZCBpcyBmaWx0ZXJlZCBvdXRcbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgKHF1ZXJ5ICsgXCIgXCIpLm1hdGNoQWxsKF9zcGxpdFNlYXJjaFRlcm1zUGF0dGVybiksXG4gICAgKG0pID0+IG1bMV0gfHwgbVsyXSB8fCBtWzNdLFxuICApLmZpbHRlcigod29yZCkgPT4gd29yZCk7XG59O1xuXG4vLy8vLy8gVEFCU1xuXG4vKipcbiAqIEZpbHRlckRlZmluaXRpb25zIGRlZmluZSB3aGljaCBmaWx0ZXJzIGNhbiBiZSBzZWxlY3RlZCBieSB0aGUgdXNlcnMuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gUXVlcnlGb3JtfkZpbHRlckRlZmluaXRpb25cbiAqIEBwdWJsaWNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9wZXJ0eVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRhdGF0eXBlXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21pbl1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWF4XVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtzdGVwXVxuICogQHByb3BlcnR5IHtzdHJpbnR9IFt1bml0XVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpbnB1dFR5cGVdXG4gKi9cblxuLyoqXG4gKiBRdWVyeUZpbHRlcnMgc3BlY2lmeSB0aGUgY3VycmVudCBmaWx0ZXJzIGEgdXNlciBoYXMgc3BlY2lmaWVkIHVzaW5nIHRoZVxuICogUXVlcnlGb3JtLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFF1ZXJ5Rm9ybX5RdWVyeUZpbHRlclxuICogQHB1YmxpY1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gZGF0YXR5cGVcbiAqIEBwcm9wZXJ0eSB7c3Rpcm5nfSBvcGVyYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHVuaXRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdmFsdWVcbiAqL1xuXG4vKipcbiAqIFdoZW4gdGhlIHF1ZXJ5IGZvcm0gaXMgYmVpbmcgc3VibWl0dGVkLCB0aGlzIGNhbGxiYWNrIGdlbmVyYXRlcyB0aGUgcXVlcnlcbiAqIGZyb20gdGhlIHNlYXJjaCB0ZXJtcyBhbmQgYWN0aXZlIEZpbHRlcnMuXG4gKlxuICogQGNhbGxiYWNrIFF1ZXJ5Rm9ybX5tYWtlUXVlcnlDYWxsYmFja1xuICogQHB1YmxpY1xuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFRlcm1zXG4gKiBAcGFyYW0ge1F1ZXJ5Rm9ybX5RdWVyeUZpbHRlcltdfSBhY3RpdmVGaWx0ZXJzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZ2VuZXJhdGVkIENRTCBxdWVyeS5cbiAqL1xuXG4vKipcbiAqIENyZWF0ZSBhIHRhYiBvYmplY3QuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcHVibGljXG4gKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWNvcmRUeXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xhYmVsXVxuICogQHBhcmFtIHtzdHJpbmd9IFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSB7UXVlcnlGb3Jtfm1ha2VRdWVyeUNhbGxiYWNrfSBbbWFrZVF1ZXJ5Q2FsbGJhY2s9bWFrZVF1ZXJ5VGVtcGxhdGUoaWQpXVxuICogQHBhcmFtIHtRdWVyeUZvcm1+RmlsdGVyRGVmaW5pdGlvbltdfSBbZmlsdGVyRGVmaW5pdGlvbnM9W11dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUYWIoXG4gIGlkLFxuICByZWNvcmRUeXBlLFxuICBsYWJlbCxcbiAgZGVzY3JpcHRpb24sXG4gIG1ha2VRdWVyeUNhbGxiYWNrLFxuICBmaWx0ZXJEZWZpbml0aW9ucyxcbikge1xuICByZXR1cm4ge1xuICAgIGlkOiBpZCxcbiAgICByZWNvcmRUeXBlOiByZWNvcmRUeXBlLFxuICAgIGxhYmVsOiBsYWJlbCB8fCByZWNvcmRUeXBlIHx8IGlkLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgZGVzY3JpcHRpb24gfHwgYFNob3cgb25seSByZXN1bHRzIG9mIHR5cGUgJHtsYWJlbCB8fCByZWNvcmRUeXBlIHx8IGlkfWAsXG4gICAgbWFrZVF1ZXJ5OiBtYWtlUXVlcnlDYWxsYmFjayB8fCBtYWtlUXVlcnlUZW1wbGF0ZShyZWNvcmRUeXBlKSxcbiAgICBmaWx0ZXJEZWZpbml0aW9uczogZmlsdGVyRGVmaW5pdGlvbnMgfHwgW10sXG4gIH07XG59XG5cbi8vLy8vLyBERUJVR0dJTkcgQU5EIFRFU1RJTkdcblxuLyoqXG4gKiBDcmVhdGUgc29tZSBxdWVyeSBwYW5lbCB0YWJzIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRfdGVzdF90YWJzID0gKCkgPT4ge1xuICBjb25zdCBtYWtlRmlsdGVyRGVmaW5pdGlvbnMgPSAoaWQpID0+IFtcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLXRleHQtcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwidGV4dFwiIH0sXG4gICAgeyBwcm9wZXJ0eTogaWQgKyBcIi1kYXRldGltZS1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJkYXRldGltZVwiIH0sXG4gICAgeyBwcm9wZXJ0eTogaWQgKyBcIi1pbnRlZ2VyLXByb3BlcnR5XCIsIGRhdGF0eXBlOiBcImludGVnZXJcIiB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBpZCArIFwiLWRvdWJsZS1wcm9wZXJ0eVwiLFxuICAgICAgZGF0YXR5cGU6IFwiZG91YmxlXCIsXG4gICAgICBtaW46IFwiLTUwXCIsXG4gICAgICBtYXg6IFwiNTBcIixcbiAgICAgIHVuaXQ6IFwibVwiLFxuICAgIH0sXG4gICAgeyBwcm9wZXJ0eTogaWQgKyBcIi1ib29sZWFuLXByb3BlcnR5XCIsIGRhdGF0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgIHtcbiAgICAgIHByb3BlcnR5OiBgXCIke2lkfS1yZWZlcmVuY2UtcHJvcGVydHlcIi5cInN1Yi1wcm9wZXJ0eVwiYCxcbiAgICAgIGxhYmVsOiBgc3ViLXByb3BlcnR5IG9mICR7aWR9LXJlZmVyZW5jZS1wcm9wZXJ0eWAsXG4gICAgICBkYXRhdHlwZTogXCJ0ZXh0XCIsXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIFtcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcImFsbFwiLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgXCJBbGxcIixcbiAgICAgIFwiU2hvdyBhbGwgbWF0Y2hpbmcgcmVzdWx0c1wiLFxuICAgICAgbWFrZVF1ZXJ5VGVtcGxhdGUoXCJcIiksXG4gICAgICBtYWtlRmlsdGVyRGVmaW5pdGlvbnMoXCJhbGxcIiksXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcImRhdGFzZXRcIixcbiAgICAgIFwiRGF0YXNldFwiLFxuICAgICAgXCJEYXRhc2V0XCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIkRhdGFzZXRcIiksXG4gICAgICBtYWtlRmlsdGVyRGVmaW5pdGlvbnMoXCJkYXRhc2V0XCIpLFxuICAgICksXG4gICAgY3JlYXRlVGFiKFxuICAgICAgXCJldmVudFwiLFxuICAgICAgXCJFdmVudFwiLFxuICAgICAgXCJFdmVudFwiLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbWFrZVF1ZXJ5VGVtcGxhdGUoXCJFdmVudFwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcImV2ZW50XCIpLFxuICAgICksXG4gICAgY3JlYXRlVGFiKFxuICAgICAgXCJwZXJzb25cIixcbiAgICAgIFwiUGVyc29uXCIsXG4gICAgICBcIlBlcnNvblwiLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbWFrZVF1ZXJ5VGVtcGxhdGUoXCJQZXJzb25cIiksXG4gICAgICBtYWtlRmlsdGVyRGVmaW5pdGlvbnMoXCJwZXJzb25cIiksXG4gICAgKSxcbiAgXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRfdGVzdF9zdWdnZXN0aW9ucyA9IGFzeW5jIChpc0NxbCwgZnVsbCwgcHJlZml4KSA9PiB7XG4gIGNvbnN0IGFjID0gbmV3IEF1dG9Db21wbGV0aW9uKFxuICAgICgpID0+IFtcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMlwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjNcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb240XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uNVwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjZcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb243XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uOFwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjlcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xMFwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjExXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTJcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xM1wiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjE0XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTVcIixcbiAgICBdLFxuICAgIENRTF9XT1JEUyxcbiAgKTtcbiAgcmV0dXJuIGFjLmdldFN1Z2dlc3Rpb25zKGlzQ3FsLCBmdWxsLCBwcmVmaXgpO1xufTtcbiIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIHRoZSBDYW9zREIgUHJvamVjdC5cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBUaW1tIEZpdHNjaGVuIDx0LmZpdHNjaGVuQGluZGlzY2FsZS5jb20+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMyBJbmRpU2NhbGUgR21iSCA8aW5mb0BpbmRpc2NhbGUuY29tPlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcHJvcC10eXBlcyAqL1xuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZU1lbW8sXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICB1c2VFZmZlY3QsXG4gIHVzZUNvbnRleHQsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTG9hZGluZ0luZm8gfSBmcm9tIFwiLi9Mb2FkaW5nSW5mb1wiO1xuaW1wb3J0IGdldENhcmV0Q29vcmRpbmF0ZXMgZnJvbSBcInRleHRhcmVhLWNhcmV0XCI7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGlvbiB9IGZyb20gXCIuL1F1ZXJ5Rm9ybS5oZWxwZXJzXCI7XG5pbXBvcnQge1xuICBhbGxvd2VkX29wZXJhdG9ycyxcbiAgaXNTZWxlY3QgYXMgZklzU2VsZWN0LFxuICBpc0NxbCBhcyBmSXNDcWwsXG4gIGdldF90ZXN0X3N1Z2dlc3Rpb25zLFxuICBnZXRfdGVzdF90YWJzLFxufSBmcm9tIFwiLi9RdWVyeUZvcm0uaGVscGVyc1wiO1xuXG5jb25zdCBRdWVyeUZvcm1Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5cbmNvbnN0IFJhbmdlRmlsdGVySW5wdXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBvbkNoYW5nZSwgdmFsdWUgfSA9IHByb3BzO1xuICBjb25zdCBvbkNoYW5nZU1pbiA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBjb25zdCBuZXdFID0geyB0YXJnZXQ6IHsgdmFsdWU6IFtlLnRhcmdldC52YWx1ZSwgdmFsdWVbMV1dIH0gfTtcbiAgICAgIG9uQ2hhbmdlKG5ld0UpO1xuICAgIH0sXG4gICAgW29uQ2hhbmdlLCB2YWx1ZV0sXG4gICk7XG4gIGNvbnN0IG9uQ2hhbmdlTWF4ID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0UgPSB7IHRhcmdldDogeyB2YWx1ZTogW3ZhbHVlWzBdLCBlLnRhcmdldC52YWx1ZV0gfSB9O1xuICAgICAgb25DaGFuZ2UobmV3RSk7XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIHZhbHVlXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlWzBdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VNaW59XG4gICAgICAgIG1heD17cHJvcHMudmFsdWVbMV19XG4gICAgICAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXgtMVwiPnRvPC9zcGFuPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZVsxXX1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTWF4fVxuICAgICAgICBtaW49e3Byb3BzLnZhbHVlWzBdfVxuICAgICAgLz5cbiAgICAgIHtwcm9wcy51bml0RWxlbWVudH1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IEZpbHRlcklucHV0ID0gKHtcbiAgbWluLFxuICBtYXgsXG4gIHN0ZXAsXG4gIHZhbHVlLFxuICBzZXRWYWx1ZSxcbiAgZGF0YXR5cGUsXG4gIG9wZXJhdG9yLFxuICB1bml0LFxuICBpbnB1dHR5cGUsXG59KSA9PiB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHNldFZhbHVlKGUudGFyZ2V0LnZhbHVlKSwgW3NldFZhbHVlXSk7XG4gIGlmICghZGF0YXR5cGUgfHwgIW9wZXJhdG9yKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6IFwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiLFxuICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgbWluOiBtaW4sXG4gICAgbWF4OiBtYXgsXG4gIH07XG4gIGlmIChpbnB1dHR5cGUpIHtcbiAgICBkZWZhdWx0UHJvcHMudHlwZSA9IGlucHV0dHlwZTtcbiAgfVxuICBpZiAoc3RlcCkge1xuICAgIGRlZmF1bHRQcm9wcy5zdGVwID0gc3RlcDtcbiAgfVxuXG4gIGNvbnN0IHVuaXRFbGVtZW50ID0gdW5pdCAmJiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwibXMtMVwiIHRpdGxlPVwiVGhlIHVuaXRcIj5cbiAgICAgIHt1bml0fVxuICAgIDwvc3Bhbj5cbiAgKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSB7XG4gICAgYm9vbGVhbjogeyBfZGVmYXVsdDogbnVsbCB9LFxuICAgIGludGVnZXI6IHtcbiAgICAgIF9kZWZhdWx0OiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGlucHV0IHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJudW1iZXJcIiBzdGVwPVwiMVwiIC8+XG4gICAgICAgICAge3VuaXRFbGVtZW50fVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICByYW5nZTogKFxuICAgICAgICA8UmFuZ2VGaWx0ZXJJbnB1dFxuICAgICAgICAgIHVuaXRFbGVtZW50PXt1bml0RWxlbWVudH1cbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBkb3VibGU6IHtcbiAgICAgIF9kZWZhdWx0OiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGlucHV0IHN0ZXA9XCIwLjAwMVwiIHsuLi5kZWZhdWx0UHJvcHN9IHR5cGU9XCJudW1iZXJcIiAvPlxuICAgICAgICAgIHt1bml0RWxlbWVudH1cbiAgICAgICAgPC8+XG4gICAgICApLFxuICAgICAgcmFuZ2U6IChcbiAgICAgICAgPFJhbmdlRmlsdGVySW5wdXRcbiAgICAgICAgICB1bml0RWxlbWVudD17dW5pdEVsZW1lbnR9XG4gICAgICAgICAgc3RlcD1cIjAuMDAxXCJcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIF9kZWZhdWx0OiB7IF9kZWZhdWx0OiA8aW5wdXQgey4uLmRlZmF1bHRQcm9wc30gLz4gfSxcbiAgfTtcblxuICBpZiAoaW5wdXRFbGVtZW50W2RhdGF0eXBlXSkge1xuICAgIGlmIChcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bb3BlcmF0b3JdIHx8XG4gICAgICBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW29wZXJhdG9yXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bb3BlcmF0b3JdO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0gfHxcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5wdXRFbGVtZW50W1wiX2RlZmF1bHRcIl1bb3BlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGlucHV0RWxlbWVudFtcIl9kZWZhdWx0XCJdW29wZXJhdG9yXTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dEVsZW1lbnRbXCJfZGVmYXVsdFwiXVtcIl9kZWZhdWx0XCJdO1xufTtcblxuZnVuY3Rpb24gQ3FsSGludCgpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1jcWwtaGludFwiXG4gICAgICB0aXRsZT1cIllvdSBhcmUgdXNpbmcgdGhlIGV4cGVydCBzZWFyY2ggbW9kZS4gRW50ZXIgYSB2YWxpZCBDUUwgUXVlcnkuXCJcbiAgICA+XG4gICAgICBDUUxcbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtU2luZ2xlVGFiKHsgdGFiLCBzZXRBY3RpdmVUYWIsIGlzQWN0aXZlVGFiIH0pIHtcbiAgY29uc3QgYWN0aXZhdGVUYWIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFpc0FjdGl2ZVRhYikge1xuICAgICAgc2V0QWN0aXZlVGFiKHRhYik7XG4gICAgfVxuICB9LCBbdGFiLCBzZXRBY3RpdmVUYWIsIGlzQWN0aXZlVGFiXSk7XG5cbiAgY29uc3QgY2xhc3NOYW1lID0gXCJjYW9zZGItZi1xdWVyeS10YWJcIiArIChpc0FjdGl2ZVRhYiA/IFwiIGFjdGl2ZVwiIDogXCJcIik7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICB0aXRsZT17dGFiLmRlc2NyaXB0aW9ufVxuICAgICAgdGFiSW5kZXg9e2lzQWN0aXZlVGFiID8gXCItMVwiIDogXCIwXCJ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uQ2xpY2s9e2lzQWN0aXZlVGFiID8gdW5kZWZpbmVkIDogYWN0aXZhdGVUYWJ9XG4gICAgPlxuICAgICAge3RhYi5sYWJlbH1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQWRkVGFiRmlsdGVyT3BlcmF0b3Ioe1xuICBmaWx0ZXIsXG4gIGZpbHRlcklkeCxcbiAgdXBkYXRlRmlsdGVyLFxuICByZXN0b3JlT3BlcmF0b3IsXG4gIHJlc3RvcmVWYWx1ZSxcbn0pIHtcbiAgY29uc3QgW29wZXJhdG9yLCBzZXRPcGVyYXRvcl0gPSB1c2VTdGF0ZShcbiAgICBmaWx0ZXIub3BlcmF0b3IgfHwgYWxsb3dlZF9vcGVyYXRvcnNbZmlsdGVyLmRhdGF0eXBlXVswXSxcbiAgKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShmaWx0ZXIudmFsdWUgfHwgXCJcIik7XG5cbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gKFxuICAgIDxGaWx0ZXJJbnB1dFxuICAgICAgZGF0YXR5cGU9e2ZpbHRlci5kYXRhdHlwZX1cbiAgICAgIG9wZXJhdG9yPXtvcGVyYXRvcn1cbiAgICAgIHNldFZhbHVlPXtzZXRWYWx1ZX1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIHVuaXQ9e2ZpbHRlci51bml0fVxuICAgICAgbWluPXtmaWx0ZXIubWlufVxuICAgICAgbWF4PXtmaWx0ZXIubWF4fVxuICAgICAgc3RlcD17ZmlsdGVyLnN0ZXB9XG4gICAgICBpbnB1dHR5cGU9e2ZpbHRlci5pbnB1dHR5cGV9XG4gICAgLz5cbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXN0b3JlT3BlcmF0b3IgJiYgb3BlcmF0b3IgIT09IHJlc3RvcmVPcGVyYXRvcikge1xuICAgICAgc2V0T3BlcmF0b3IocmVzdG9yZU9wZXJhdG9yKTtcbiAgICB9XG4gIH0sIFtyZXN0b3JlT3BlcmF0b3IsIG9wZXJhdG9yXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzdG9yZVZhbHVlICYmIHZhbHVlICE9PSByZXN0b3JlVmFsdWUpIHtcbiAgICAgIHNldFZhbHVlKHJlc3RvcmVWYWx1ZSk7XG4gICAgfVxuICB9LCBbcmVzdG9yZVZhbHVlLCB2YWx1ZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wZXJhdG9yICE9PSBmaWx0ZXIub3BlcmF0b3IpIHtcbiAgICAgIHVwZGF0ZUZpbHRlcihmaWx0ZXJJZHgsIHtcbiAgICAgICAgcmVzdG9yZU9wZXJhdG9yOiB1bmRlZmluZWQsXG4gICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW29wZXJhdG9yLCBmaWx0ZXIub3BlcmF0b3IsIGZpbHRlcklkeCwgdXBkYXRlRmlsdGVyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmFsdWUgIT09IGZpbHRlci52YWx1ZSkge1xuICAgICAgdXBkYXRlRmlsdGVyKGZpbHRlcklkeCwge1xuICAgICAgICByZXN0b3JlVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdmFsdWUsIGZpbHRlci52YWx1ZSwgZmlsdGVySWR4LCB1cGRhdGVGaWx0ZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2PlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxuICAgICAgICAgIHZhbHVlPXtvcGVyYXRvcn1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldE9wZXJhdG9yKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGxvd2VkX29wZXJhdG9yc1tmaWx0ZXIuZGF0YXR5cGVdLm1hcCgob3AsIGlkeCkgPT4gKFxuICAgICAgICAgICAgPG9wdGlvbiBrZXk9e2lkeH0+e29wfTwvb3B0aW9uPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXhcIj57aW5wdXRFbGVtZW50fTwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBGaWx0ZXJTZWxlY3QoeyBzZWxlY3RlZCwgZmlsdGVyRGVmaW5pdGlvbnMsIG9uQ2hhbmdlLCB0aXRsZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNlbGVjdFxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgY2xhc3NOYW1lPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxuICAgICAgdmFsdWU9e3NlbGVjdGVkfVxuICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgID5cbiAgICAgIHtmaWx0ZXJEZWZpbml0aW9ucy5tYXAoKGZpbCwgaWR4KSA9PiAoXG4gICAgICAgIDxvcHRpb24gdmFsdWU9e2ZpbC5wcm9wZXJ0eX0gc3R5bGU9e2ZpbC5zdHlsZX0ga2V5PXtpZHh9PlxuICAgICAgICAgIHtmaWwubGFiZWwgfHwgZmlsLnByb3BlcnR5fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICkpfVxuICAgIDwvc2VsZWN0PlxuICApO1xufVxuXG5mdW5jdGlvbiBBZGRGaWx0ZXIoeyBmaWx0ZXJEZWZpbml0aW9ucywgYWRkRmlsdGVyIH0pIHtcbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgYWRkRmlsdGVyKGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIFthZGRGaWx0ZXJdLFxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8RmlsdGVyU2VsZWN0XG4gICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9ucy5jb25jYXQoe1xuICAgICAgICAgIHByb3BlcnR5OiBcIl9fYWRkX2ZpbHRlcl9fXCIsXG4gICAgICAgICAgbGFiZWw6IFwiQWRkIEZpbHRlclwiLFxuICAgICAgICAgIHN0eWxlOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0sXG4gICAgICAgIH0pfVxuICAgICAgICBzZWxlY3RlZD1cIl9fYWRkX2ZpbHRlcl9fXCJcbiAgICAgICAgdGl0bGU9XCJBZGQgRmlsdGVyXCJcbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRmlsdGVyKHtcbiAgZmlsdGVyRGVmaW5pdGlvbnMsXG4gIGZpbHRlcklkeCxcbiAgYWN0aXZlRmlsdGVycyxcbiAgdXBkYXRlRmlsdGVyLFxuICBzZXRQcm9wZXJ0eSxcbiAgcmVtb3ZlRmlsdGVyLFxufSkge1xuICBjb25zdCBhY3RpdmVGaWx0ZXIgPSBhY3RpdmVGaWx0ZXJzICYmIGFjdGl2ZUZpbHRlcnNbZmlsdGVySWR4XTtcbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgc2V0UHJvcGVydHkoZmlsdGVySWR4LCBlLnRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0UHJvcGVydHksIGZpbHRlcklkeF0sXG4gICk7XG4gIGNvbnN0IHJlbW92ZVRoaXMgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiByZW1vdmVGaWx0ZXIoZmlsdGVySWR4KSxcbiAgICBbcmVtb3ZlRmlsdGVyLCBmaWx0ZXJJZHhdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktZmlsdGVyLXByb3BlcnR5LXNlbGVjdG9yXCI+XG4gICAgICAgIDxGaWx0ZXJTZWxlY3RcbiAgICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2FjdGl2ZUZpbHRlci5wcm9wZXJ0eX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxBZGRUYWJGaWx0ZXJPcGVyYXRvclxuICAgICAgICByZXN0b3JlVmFsdWU9e2FjdGl2ZUZpbHRlci5yZXN0b3JlVmFsdWV9XG4gICAgICAgIHJlc3RvcmVPcGVyYXRvcj17YWN0aXZlRmlsdGVyLnJlc3RvcmVPcGVyYXRvcn1cbiAgICAgICAgdXBkYXRlRmlsdGVyPXt1cGRhdGVGaWx0ZXJ9XG4gICAgICAgIGZpbHRlcklkeD17ZmlsdGVySWR4fVxuICAgICAgICBmaWx0ZXI9e2FjdGl2ZUZpbHRlcn1cbiAgICAgIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZW5kIGZsZXgtZ3Jvdy0xXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgb25DbGljaz17cmVtb3ZlVGhpc31cbiAgICAgICAgPlxuICAgICAgICAgIFJlbW92ZSBGaWx0ZXJcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtVGFiRmlsdGVyc0lubmVyKHtcbiAgZmlsdGVyRGVmaW5pdGlvbnMsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHNldEFjdGl2ZUZpbHRlcnMsXG59KSB7XG4gIGNvbnN0IHJlbW92ZUZpbHRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWx0ZXJJZHgpID0+IHtcbiAgICAgIHNldEFjdGl2ZUZpbHRlcnMoYWN0aXZlRmlsdGVycy5maWx0ZXIoKGZpbCwgaWR4KSA9PiBpZHggIT09IGZpbHRlcklkeCkpO1xuICAgIH0sXG4gICAgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnNdLFxuICApO1xuXG4gIGNvbnN0IHVwZGF0ZUZpbHRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWx0ZXJJZHgsIHVwZGF0ZSkgPT4ge1xuICAgICAgY29uc3QgbmV3QWN0aXZlRmlsdGVycyA9IFtdLmNvbmNhdChhY3RpdmVGaWx0ZXJzKTtcblxuICAgICAgbmV3QWN0aXZlRmlsdGVyc1tmaWx0ZXJJZHhdID0ge1xuICAgICAgICAuLi5uZXdBY3RpdmVGaWx0ZXJzW2ZpbHRlcklkeF0sXG4gICAgICAgIC4uLnVwZGF0ZSxcbiAgICAgIH07XG5cbiAgICAgIHNldEFjdGl2ZUZpbHRlcnMobmV3QWN0aXZlRmlsdGVycyk7XG4gICAgfSxcbiAgICBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc10sXG4gICk7XG5cbiAgY29uc3Qgc2V0UHJvcGVydHkgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVySWR4LCBwcm9wZXJ0eU5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5RmlsdGVyID0gZmlsdGVyRGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgICAgICAoZmlsKSA9PiBmaWwucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZSxcbiAgICAgIClbMF07XG4gICAgICB1cGRhdGVGaWx0ZXIoZmlsdGVySWR4LCB7XG4gICAgICAgIHJlc3RvcmVWYWx1ZTogXCJcIixcbiAgICAgICAgcmVzdG9yZU9wZXJhdG9yOiBhbGxvd2VkX29wZXJhdG9yc1twcm9wZXJ0eUZpbHRlci5kYXRhdHlwZV1bMF0sXG4gICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgIGRhdGF0eXBlOiBwcm9wZXJ0eUZpbHRlci5kYXRhdHlwZSxcbiAgICAgICAgdW5pdDogcHJvcGVydHlGaWx0ZXIudW5pdCxcbiAgICAgICAgbWluOiBwcm9wZXJ0eUZpbHRlci5taW4sXG4gICAgICAgIG1heDogcHJvcGVydHlGaWx0ZXIubWF4LFxuICAgICAgICBmaWx0ZXI6IHByb3BlcnR5RmlsdGVyLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbdXBkYXRlRmlsdGVyLCBmaWx0ZXJEZWZpbml0aW9uc10sXG4gICk7XG5cbiAgY29uc3QgYWRkRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKHByb3BlcnR5TmFtZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHlGaWx0ZXIgPSBmaWx0ZXJEZWZpbml0aW9ucy5maWx0ZXIoXG4gICAgICAgIChmaWwpID0+IGZpbC5wcm9wZXJ0eSA9PT0gcHJvcGVydHlOYW1lLFxuICAgICAgKVswXTtcbiAgICAgIHNldEFjdGl2ZUZpbHRlcnMoXG4gICAgICAgIGFjdGl2ZUZpbHRlcnMuY29uY2F0KHtcbiAgICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHlOYW1lLFxuICAgICAgICAgIGRhdGF0eXBlOiBwcm9wZXJ0eUZpbHRlci5kYXRhdHlwZSxcbiAgICAgICAgICB1bml0OiBwcm9wZXJ0eUZpbHRlci51bml0LFxuICAgICAgICAgIG1pbjogcHJvcGVydHlGaWx0ZXIubWluLFxuICAgICAgICAgIG1heDogcHJvcGVydHlGaWx0ZXIubWF4LFxuICAgICAgICAgIGZpbHRlcjogcHJvcGVydHlGaWx0ZXIsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIFthY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVGaWx0ZXJzLCBmaWx0ZXJEZWZpbml0aW9uc10sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2FjdGl2ZUZpbHRlcnMubWFwKChmaWwsIGlkeCkgPT4gKFxuICAgICAgICA8RmlsdGVyXG4gICAgICAgICAga2V5PXtpZHh9XG4gICAgICAgICAgZmlsdGVySWR4PXtpZHh9XG4gICAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zfVxuICAgICAgICAgIGFjdGl2ZUZpbHRlcnM9e2FjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgICB1cGRhdGVGaWx0ZXI9e3VwZGF0ZUZpbHRlcn1cbiAgICAgICAgICBzZXRQcm9wZXJ0eT17c2V0UHJvcGVydHl9XG4gICAgICAgICAgcmVtb3ZlRmlsdGVyPXtyZW1vdmVGaWx0ZXJ9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4XCI+XG4gICAgICAgIDxBZGRGaWx0ZXJcbiAgICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnN9XG4gICAgICAgICAgYWRkRmlsdGVyPXthZGRGaWx0ZXJ9XG4gICAgICAgIC8+XG4gICAgICAgIHthY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgdGl0bGU9XCJTZWFyY2ggd2l0aCBmaWx0ZXJzXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbXMtYXV0b1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2VhcmNoXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtVGFiRmlsdGVycyh7XG4gIGZpbHRlckRlZmluaXRpb25zLFxuICBhY3RpdmVGaWx0ZXJzLFxuICBzZXRBY3RpdmVGaWx0ZXJzLFxufSkge1xuICBjb25zdCBbc2hvd0ZpbHRlcnMsIHNldFNob3dGaWx0ZXJzXSA9IHVzZVN0YXRlKGFjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMCk7XG5cbiAgY29uc3QgdGl0bGUgPSBzaG93RmlsdGVyc1xuICAgID8gXCJDYW5jZWwgQWR2YW5jZWQgRmlsdGVyaW5nXCJcbiAgICA6IFwiQWR2YW5jZWQgRmlsdGVyaW5nXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvd0ZpbHRlcnMoIXNob3dGaWx0ZXJzKX1cbiAgICAgICAgY2xhc3NOYW1lPVwiYnRuIG1zLWF1dG8gY2Fvc2RiLWYtcXVlcnktZmlsdGVycy10b2dnbGVcIlxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICA+XG4gICAgICAgIHtzaG93RmlsdGVycyA/IChcbiAgICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS14XCI+PC9pPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLWZpbHRlclwiPjwvaT5cbiAgICAgICAgKX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAge3Nob3dGaWx0ZXJzICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB3LTEwMFwiPlxuICAgICAgICAgIDxRdWVyeUZvcm1UYWJGaWx0ZXJzSW5uZXJcbiAgICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICAgIGFjdGl2ZUZpbHRlcnM9e2FjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJzPXtzZXRBY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtVGFicyh7XG4gIHRhYnMsXG4gIHNldEFjdGl2ZVRhYixcbiAgYWN0aXZlVGFiLFxuICBhY3RpdmVGaWx0ZXJzLFxuICBzZXRBY3RpdmVGaWx0ZXJzLFxufSkge1xuICBjb25zdCBoYXNGaWx0ZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGFjdGl2ZVRhYiAmJlxuICAgICAgYWN0aXZlVGFiLmZpbHRlckRlZmluaXRpb25zICYmXG4gICAgICBhY3RpdmVUYWIuZmlsdGVyRGVmaW5pdGlvbnMubGVuZ3RoID4gMFxuICAgICk7XG4gIH0sIFthY3RpdmVUYWJdKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0IGQtZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgIHt0YWJzLm1hcCgodGFiKSA9PiAoXG4gICAgICAgIDxRdWVyeUZvcm1TaW5nbGVUYWJcbiAgICAgICAgICBpc0FjdGl2ZVRhYj17YWN0aXZlVGFiLmlkID09PSB0YWIuaWR9XG4gICAgICAgICAgc2V0QWN0aXZlVGFiPXtzZXRBY3RpdmVUYWJ9XG4gICAgICAgICAga2V5PXt0YWIubGFiZWx9XG4gICAgICAgICAgdGFiPXt0YWJ9XG4gICAgICAgIC8+XG4gICAgICApKX17XCIgXCJ9XG4gICAgICB7aGFzRmlsdGVycyAmJiAoXG4gICAgICAgIDxRdWVyeUZvcm1UYWJGaWx0ZXJzXG4gICAgICAgICAgey4uLmFjdGl2ZVRhYn1cbiAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeVN1Ym1pdEJ1dHRvbih7IGlzU3VibWl0dGVkLCBhY3RpdmUgfSkge1xuICBpZiAoaXNTdWJtaXR0ZWQpIHtcbiAgICByZXR1cm4gPExvYWRpbmdJbmZvIGNsYXNzTmFtZT1cImFsaWduLXNlbGYtY2VudGVyXCIgc2l6ZT1cInNtXCIgLz47XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uIGFyaWEtbGFiZWw9XCJzZWFyY2hcIiB0aXRsZT1cIlNlYXJjaFwiIHR5cGU9XCJzdWJtaXRcIiBkaXNhYmxlZD17IWFjdGl2ZX0+XG4gICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1zZWFyY2hcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFNpbmdsZVF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbSh7XG4gIHN1Z2dlc3Rpb24sXG4gIGlzSGlnaGxpZ2h0ZWQsXG4gIG9uTW91c2VFbnRlcixcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8bGlcbiAgICAgIG9uTW91c2VFbnRlcj17b25Nb3VzZUVudGVyfVxuICAgICAgY2xhc3NOYW1lPXtpc0hpZ2hsaWdodGVkID8gXCJoaWdobGlnaHRcIiA6IFwiXCJ9XG4gICAgPlxuICAgICAge3N1Z2dlc3Rpb24ub3JpZ2luYWx9XG4gICAgPC9saT5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtcyh7XG4gIHN1Z2dlc3Rpb25zLFxuICBoaWdobGlnaHRJbmRleCxcbiAgc2VsZWN0U3VnZ2VzdGlvbixcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3N1Z2dlc3Rpb25zLm1hcCgoc3VnLCBpbmRleCkgPT4gKFxuICAgICAgICA8U2luZ2xlUXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtXG4gICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZWxlY3RTdWdnZXN0aW9uKGluZGV4KX1cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIGlzSGlnaGxpZ2h0ZWQ9e2hpZ2hsaWdodEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICBzdWdnZXN0aW9uPXtzdWd9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtU3VnZ2VzdGlvbnMoe1xuICB1bnNlbGVjdFN1Z2dlc3Rpb25zLFxuICBzZWxlY3RTdWdnZXN0aW9uLFxuICBoaWdobGlnaHRJbmRleCxcbiAgc3VnZ2VzdGlvbnMsXG4gIGdldElucHV0UmVmLFxuICB3b3JkUG9zLFxuICB3b3JkLFxuICB4T2Zmc2V0LFxufSkge1xuICBjb25zdCByZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgaXRlbXMgPSAoXG4gICAgPFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbXNcbiAgICAgIHNlbGVjdFN1Z2dlc3Rpb249e3NlbGVjdFN1Z2dlc3Rpb259XG4gICAgICBoaWdobGlnaHRJbmRleD17aGlnaGxpZ2h0SW5kZXh9XG4gICAgICBzdWdnZXN0aW9ucz17c3VnZ2VzdGlvbnN9XG4gICAgLz5cbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChoaWdobGlnaHRJbmRleCA+IC0xKSB7XG4gICAgICByZWYuY3VycmVudC5zY3JvbGwoMCwgMjQgKiBoaWdobGlnaHRJbmRleCAtIDQ4KTtcbiAgICB9XG4gIH0sIFtoaWdobGlnaHRJbmRleF0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0UmVmID0gZ2V0SW5wdXRSZWYoKTtcbiAgICB2YXIgY29vcmRzID0gZ2V0Q2FyZXRDb29yZGluYXRlcyhpbnB1dFJlZi5jdXJyZW50LCB3b3JkUG9zKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gaW5wdXRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICBpZiAoY29vcmRzLmxlZnQgPiBpbnB1dFdpZHRoKSB7XG4gICAgICBjb25zdCByaWdodE9mZnNldCA9XG4gICAgICAgIGdldENhcmV0Q29vcmRpbmF0ZXMoaW5wdXRSZWYuY3VycmVudCwgd29yZFBvcyArIHdvcmQubGVuZ3RoKS5sZWZ0IC1cbiAgICAgICAgY29vcmRzLmxlZnQ7XG5cbiAgICAgIHJlZi5jdXJyZW50LnN0eWxlLm1hcmdpbkxlZnQgPSBgJHtpbnB1dFdpZHRoIC0gcmlnaHRPZmZzZXR9cHhgO1xuICAgIH0gZWxzZSBpZiAoY29vcmRzLmxlZnQgPiA4KSB7XG4gICAgICByZWYuY3VycmVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gYCR7Y29vcmRzLmxlZnQgLSA4fXB4YDtcbiAgICB9XG4gIH0sIFt3b3JkLCBnZXRJbnB1dFJlZiwgd29yZFBvc10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgb25Nb3VzZUxlYXZlPXt1bnNlbGVjdFN1Z2dlc3Rpb25zfVxuICAgICAgc3R5bGU9e3sgcGFkZGluZ0xlZnQ6IHhPZmZzZXQgfX1cbiAgICAgIGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnLWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPG9sIHJlZj17cmVmfSBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1mb3JtLXN1Z1wiPlxuICAgICAgICB7aXRlbXN9XG4gICAgICA8L29sPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gIHZhciBjdXJzb3JfcG9zLCB3b3JkX3Bvcywgd29yZCwgb3BlbiwgdW5yZXNvbHZlZF9zdWdnZXN0aW9ucztcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgXCJvbkZvY3VzXCI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgcmVmb2N1czogZmFsc2UsIGZvY3VzOiB0cnVlIH07XG4gICAgY2FzZSBcIm9uQmx1clwiOlxuICAgICAgaWYgKHN0YXRlLm9uQ2xpY2tWYWx1ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZhbHVlOiBzdGF0ZS5vbkNsaWNrVmFsdWUsXG4gICAgICAgICAgY3Vyc29yUG9zOiBzdGF0ZS5vbkNsaWNrQ3Vyc29yUG9zLFxuICAgICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICByZWZvY3VzOiB0cnVlLFxuICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZvY3VzOiBmYWxzZSB9O1xuICAgIGNhc2UgXCJvbkNoYW5nZVwiOlxuICAgICAgY3Vyc29yX3BvcyA9IGFjdGlvbi50YXJnZXQuc2VsZWN0aW9uRW5kO1xuICAgICAgd29yZF9wb3MgPSBhY3Rpb24udGFyZ2V0LnZhbHVlLnNsaWNlKDAsIGN1cnNvcl9wb3MpLmxhc3RJbmRleE9mKFwiIFwiKSArIDE7XG4gICAgICB3b3JkID0gYWN0aW9uLnRhcmdldC52YWx1ZS5zbGljZSh3b3JkX3BvcywgY3Vyc29yX3Bvcyk7XG4gICAgICBvcGVuID0gd29yZC5sZW5ndGggPiAyO1xuICAgICAgdW5yZXNvbHZlZF9zdWdnZXN0aW9ucyA9XG4gICAgICAgIG9wZW4gJiYgYWN0aW9uLmdldFN1Z2dlc3Rpb25zQ2FsbGJhY2tcbiAgICAgICAgICA/IGFjdGlvbi5nZXRTdWdnZXN0aW9uc0NhbGxiYWNrKFxuICAgICAgICAgICAgICBmSXNDcWwoYWN0aW9uLnRhcmdldC52YWx1ZSksXG4gICAgICAgICAgICAgIGFjdGlvbi50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICAgIHdvcmQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb25DbGlja1ZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IHVuZGVmaW5lZCxcbiAgICAgICAgaGlnaGxpZ2h0SW5kZXg6IC0xLFxuICAgICAgICBjdXJzb3JQb3M6IGN1cnNvcl9wb3MsXG4gICAgICAgIGN1cnNvclBvc05vQ29tcGxldGlvbjogY3Vyc29yX3BvcyxcbiAgICAgICAgd29yZFBvczogd29yZF9wb3MsXG4gICAgICAgIHZhbHVlOiBhY3Rpb24udGFyZ2V0LnZhbHVlLFxuICAgICAgICB2YWx1ZU5vQ29tcGxldGlvbjogYWN0aW9uLnRhcmdldC52YWx1ZSxcbiAgICAgICAgcmVmb2N1czogZmFsc2UsXG4gICAgICAgIHdvcmQ6IHdvcmQsXG4gICAgICAgIG9wZW46IG9wZW4sXG4gICAgICAgIGNoYW5nZUlkOiAoc3RhdGUuY2hhbmdlSWQgKyAxKSB8IDAsXG4gICAgICAgIHVucmVzb2x2ZWRTdWdnZXN0aW9uczogdW5yZXNvbHZlZF9zdWdnZXN0aW9ucyxcbiAgICAgIH07XG4gICAgY2FzZSBcInJlc29sdmVTdWdnZXN0aW9uc1wiOlxuICAgICAgaWYgKHN0YXRlLmNoYW5nZUlkID09PSBhY3Rpb24uY2hhbmdlSWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBzdWdnZXN0aW9uczogYWN0aW9uLnN1Z2dlc3Rpb25zLFxuICAgICAgICAgIHVucmVzb2x2ZWRTdWdnZXN0aW9uczogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gZWxzZSB7IC8qIHN1Z2dlc3Rpb25zIGFyZSBvdXRkYXRlZCBkdWUgdG8gbmV3IGNoYW5nZXMgKi8gfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm9uQXJyb3dEb3duXCI6XG4gICAgICBpZiAoXG4gICAgICAgIHN0YXRlLm9wZW4gJiZcbiAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnMgJiZcbiAgICAgICAgc3RhdGUuaGlnaGxpZ2h0SW5kZXggPCBzdGF0ZS5zdWdnZXN0aW9ucy5sZW5ndGggLSAxXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbmV3SGlnaGxpZ2h0SW5kZXggPSBzdGF0ZS5oaWdobGlnaHRJbmRleCArIDE7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZSgwLCBzdGF0ZS53b3JkUG9zKSArXG4gICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQgK1xuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvbik7XG4gICAgICAgIGNvbnN0IG5ld0N1cnNvclBvcyA9XG4gICAgICAgICAgc3RhdGUud29yZFBvcyArIHN0YXRlLnN1Z2dlc3Rpb25zW25ld0hpZ2hsaWdodEluZGV4XS5lc2NhcGVkLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBjdXJzb3JQb3M6IG5ld0N1cnNvclBvcyxcbiAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgICAgaGlnaGxpZ2h0SW5kZXg6IG5ld0hpZ2hsaWdodEluZGV4LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInVuc2VsZWN0U3VnZ2VzdGlvbnNcIjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvbkNsaWNrQ3Vyc29yUG9zOiB1bmRlZmluZWQsXG4gICAgICAgIG9uQ2xpY2tWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICBjYXNlIFwic2VsZWN0U3VnZ2VzdGlvblwiOlxuICAgICAgaWYgKGFjdGlvbi5pbmRleCA+IC0xICYmIGFjdGlvbi5pbmRleCA8IHN0YXRlLnN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2UoMCwgc3RhdGUud29yZFBvcykgK1xuICAgICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zW2FjdGlvbi5pbmRleF0uZXNjYXBlZCArXG4gICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2Uoc3RhdGUuY3Vyc29yUG9zTm9Db21wbGV0aW9uKSArXG4gICAgICAgICAgXCIgXCI7XG4gICAgICAgIGNvbnN0IG5ld0N1cnNvclBvcyA9XG4gICAgICAgICAgc3RhdGUud29yZFBvcyArIHN0YXRlLnN1Z2dlc3Rpb25zW2FjdGlvbi5pbmRleF0uZXNjYXBlZC5sZW5ndGggKyAxO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG9uQ2xpY2tWYWx1ZTogbmV3VmFsdWUsXG4gICAgICAgICAgb25DbGlja0N1cnNvclBvczogbmV3Q3Vyc29yUG9zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInJlc3RvcmVcIjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB2YWx1ZTogYWN0aW9uLnZhbHVlIH07XG4gICAgY2FzZSBcIm9uQXJyb3dVcFwiOlxuICAgICAgaWYgKHN0YXRlLm9wZW4gJiYgc3RhdGUuaGlnaGxpZ2h0SW5kZXggPiAtMSkge1xuICAgICAgICBjb25zdCBuZXdIaWdobGlnaHRJbmRleCA9IHN0YXRlLmhpZ2hsaWdodEluZGV4IC0gMTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIG5ld0hpZ2hsaWdodEluZGV4IDwgMFxuICAgICAgICAgICAgPyBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvblxuICAgICAgICAgICAgOiBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZSgwLCBzdGF0ZS53b3JkUG9zKSArXG4gICAgICAgICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zW25ld0hpZ2hsaWdodEluZGV4XS5lc2NhcGVkICtcbiAgICAgICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2Uoc3RhdGUuY3Vyc29yUG9zTm9Db21wbGV0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3Q3Vyc29yUG9zID1cbiAgICAgICAgICBuZXdIaWdobGlnaHRJbmRleCA8IDBcbiAgICAgICAgICAgID8gc3RhdGUuY3Vyc29yUG9zTm9Db21wbGV0aW9uXG4gICAgICAgICAgICA6IHN0YXRlLndvcmRQb3MgK1xuICAgICAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgY3Vyc29yUG9zOiBuZXdDdXJzb3JQb3MsXG4gICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICAgIGhpZ2hsaWdodEluZGV4OiBuZXdIaWdobGlnaHRJbmRleCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVRleHRGaWVsZCh7IHNldFF1ZXJ5U3RyaW5nLCBpc0NxbCwgcmVzdG9yZVF1ZXJ5U3RyaW5nIH0pIHtcbiAgY29uc3QgeyBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrLCBpc1N1Ym1pdHRlZCB9ID0gdXNlQ29udGV4dChRdWVyeUZvcm1Db250ZXh0KTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gdXNlUmVkdWNlcihyZWR1Y2VyLCB7XG4gICAgcmVmb2N1czogZmFsc2UsXG4gICAgdmFsdWU6IFwiXCIsXG4gICAgZm9jdXM6IGZhbHNlLFxuICAgIG9wZW46IGZhbHNlLFxuICAgIHdvcmQ6IFwiXCIsXG4gICAgaGlnaGxpZ2h0SW5kZXg6IC0xLFxuICAgIHVucmVzb2x2ZWRTdWdnZXN0aW9uczogbnVsbCxcbiAgICBzdWdnZXN0aW9uczogbnVsbCxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRRdWVyeVN0cmluZyhzdGF0ZS52YWx1ZSk7XG4gIH0sIFtzdGF0ZS52YWx1ZSwgc2V0UXVlcnlTdHJpbmddKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXN0b3JlUXVlcnlTdHJpbmcpIHtcbiAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJyZXN0b3JlXCIsIHZhbHVlOiByZXN0b3JlUXVlcnlTdHJpbmcgfSk7XG4gICAgfVxuICB9LCBbcmVzdG9yZVF1ZXJ5U3RyaW5nXSk7XG5cbiAgY29uc3Qgb25Gb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwib25Gb2N1c1wiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25CbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkJsdXJcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uQXJyb3dVcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwib25BcnJvd1VwXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkFycm93RG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwib25BcnJvd0Rvd25cIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxuICAgICAgICB0YXJnZXQ6IGUudGFyZ2V0LFxuICAgICAgICBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrOiBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZ2V0U3VnZ2VzdGlvbnNDYWxsYmFja10sXG4gICk7XG5cbiAgY29uc3Qgb25LZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBvbkFycm93RG93bihlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIG9uQXJyb3dVcChlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkFycm93VXAsIG9uQXJyb3dEb3duXSxcbiAgKTtcblxuICBjb25zdCB1bnNlbGVjdFN1Z2dlc3Rpb25zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJ1bnNlbGVjdFN1Z2dlc3Rpb25zXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBzZWxlY3RTdWdnZXN0aW9uID0gdXNlQ2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcInNlbGVjdFN1Z2dlc3Rpb25cIiwgaW5kZXg6IGluZGV4IH0pO1xuICB9LCBbXSk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IFwiY2Fvc2RiLWYtcXVlcnktZm9ybVwiO1xuICBpZiAoc3RhdGUub3Blbikge1xuICAgIGNsYXNzTmFtZSArPSBcIiBvcGVuXCI7XG4gIH1cbiAgaWYgKHN0YXRlLmZvY3VzKSB7XG4gICAgY2xhc3NOYW1lICs9IFwiIGZvY3VzXCI7XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGF0ZS51bnJlc29sdmVkU3VnZ2VzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNoYW5nZUlkID0gc3RhdGUuY2hhbmdlSWQ7XG4gICAgICBzdGF0ZS51bnJlc29sdmVkU3VnZ2VzdGlvbnMudGhlbigoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IFwicmVzb2x2ZVN1Z2dlc3Rpb25zXCIsXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zLFxuICAgICAgICAgIGNoYW5nZUlkOiBjaGFuZ2VJZCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtzdGF0ZS51bnJlc29sdmVkU3VnZ2VzdGlvbnMsIHN0YXRlLmNoYW5nZUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKHN0YXRlLmN1cnNvclBvcywgc3RhdGUuY3Vyc29yUG9zKTtcbiAgfSwgW3N0YXRlLnZhbHVlLCBzdGF0ZS5jdXJzb3JQb3NdKTtcblxuICBjb25zdCBnZXRJbnB1dFJlZiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXR1cm4gaW5wdXRSZWY7XG4gIH0sIFtpbnB1dFJlZl0pO1xuXG4gIC8vIGhhbmRsZSBmb2N1cyBhZnRlciByZXNldFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGF0ZS5yZWZvY3VzKSB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbc3RhdGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtjb250YWluZXJSZWZ9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4XCI+XG4gICAgICAgIHtpc0NxbCAmJiA8Q3FsSGludCAvPn1cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtZ3Jvdy0xXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiZW50ZXIgc2VhcmNoIHRlcm1zXCJcbiAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgIHRpdGxlPVwiRW50ZXIgc2VhcmNoIHRlcm1zXCJcbiAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICB2YWx1ZT17c3RhdGUudmFsdWV9XG4gICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgPjwvaW5wdXQ+XG4gICAgICAgIDxRdWVyeVN1Ym1pdEJ1dHRvblxuICAgICAgICAgIGFjdGl2ZT17c3RhdGUudmFsdWUubGVuZ3RoID4gMH1cbiAgICAgICAgICBpc1N1Ym1pdHRlZD17aXNTdWJtaXR0ZWR9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzdGF0ZS5vcGVuICYmIHN0YXRlLnN1Z2dlc3Rpb25zICYmIChcbiAgICAgICAgPFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zXG4gICAgICAgICAgdW5zZWxlY3RTdWdnZXN0aW9ucz17dW5zZWxlY3RTdWdnZXN0aW9uc31cbiAgICAgICAgICBzZWxlY3RTdWdnZXN0aW9uPXtzZWxlY3RTdWdnZXN0aW9ufVxuICAgICAgICAgIHdvcmQ9e3N0YXRlLndvcmR9XG4gICAgICAgICAgd29yZFBvcz17c3RhdGUud29yZFBvc31cbiAgICAgICAgICBnZXRJbnB1dFJlZj17Z2V0SW5wdXRSZWZ9XG4gICAgICAgICAgc3VnZ2VzdGlvbnM9e3N0YXRlLnN1Z2dlc3Rpb25zfVxuICAgICAgICAgIGhpZ2hsaWdodEluZGV4PXtzdGF0ZS5oaWdobGlnaHRJbmRleH1cbiAgICAgICAgICB4T2Zmc2V0PXtpc0NxbCA/IDQ0IDogMH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHN0b3JlKGFjdGl2ZVRhYiwgYWN0aXZlRmlsdGVycywgcXVlcnlTdHJpbmcpIHtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkuYWN0aXZlVGFiXCIpO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCIpO1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5xdWVyeVN0cmluZ1wiKTtcbiAgaWYgKGFjdGl2ZVRhYikge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVUYWJcIl0gPSBKU09OLnN0cmluZ2lmeShhY3RpdmVUYWIpO1xuICB9XG4gIGlmIChhY3RpdmVGaWx0ZXJzICYmIGFjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCJdID0gSlNPTi5zdHJpbmdpZnkoYWN0aXZlRmlsdGVycyk7XG4gIH1cbiAgaWYgKHF1ZXJ5U3RyaW5nICYmIHF1ZXJ5U3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkucXVlcnlTdHJpbmdcIl0gPSBxdWVyeVN0cmluZztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN0b3JlKHRhYnMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHJlc3RvcmVBY3RpdmVUYWI6XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlVGFiXCJdICYmXG4gICAgICBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVUYWJcIl0pLFxuICAgIHJlc3RvcmVBY3RpdmVGaWx0ZXJzOlxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIl0gJiZcbiAgICAgIEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIl0pLFxuICAgIHJlc3RvcmVRdWVyeVN0cmluZzogd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCJdIHx8IFwiXCIsXG4gIH07XG4gIGlmIChcbiAgICByZXN1bHQucmVzdG9yZUFjdGl2ZVRhYiAmJlxuICAgIHRhYnMuZmlsdGVyKCh0YWIpID0+IHRhYi5pZCA9PT0gcmVzdWx0LnJlc3RvcmVBY3RpdmVUYWIuaWQpLmxlbmd0aCA9PT0gMFxuICApIHtcbiAgICAvLyBjb25maWcgY2hhbmdlZFxuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZVRhYlwiKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCIpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCIpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUXVlcnlGb3JtKHtcbiAgc3VibWl0Q2FsbGJhY2ssXG4gIHRhYnMsXG4gIGRlZmF1bHRUYWIsXG4gIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gIHJlc3RvcmVDYWxsYmFjayxcbiAgc3RvcmVDYWxsYmFjayxcbiAgcmVzdG9yZSxcbn0pIHtcbiAgY29uc3QgeyByZXN0b3JlUXVlcnlTdHJpbmcsIHJlc3RvcmVBY3RpdmVGaWx0ZXJzLCByZXN0b3JlQWN0aXZlVGFiIH0gPSByZXN0b3JlXG4gICAgPyByZXN0b3JlQ2FsbGJhY2sodGFicylcbiAgICA6IHt9O1xuICBjb25zdCBbaXNTdWJtaXR0ZWQsIHNldElzU3VibWl0dGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3F1ZXJ5U3RyaW5nLCBzZXRRdWVyeVN0cmluZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlKFxuICAgIHJlc3RvcmVBY3RpdmVUYWIgfHwgdGFic1tkZWZhdWx0VGFiXSxcbiAgKTtcbiAgY29uc3QgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnNdID0gdXNlU3RhdGUoXG4gICAgcmVzdG9yZUFjdGl2ZUZpbHRlcnMgfHwgW10sXG4gICk7XG5cbiAgY29uc3Qgb25TdWJtaXQgPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgc2V0SXNTdWJtaXR0ZWQodHJ1ZSk7XG4gICAgICBzdG9yZUNhbGxiYWNrKGFjdGl2ZVRhYiwgYWN0aXZlRmlsdGVycywgcXVlcnlTdHJpbmcpO1xuICAgICAgY29uc3QgYWN0aXZlVGFiRGVmID0gdGFicy5maWx0ZXIoKHQpID0+IHQuaWQgPT09IGFjdGl2ZVRhYi5pZClbMF0gfHwge307XG4gICAgICBjb25zdCBpc0NxbCA9IGZJc0NxbChxdWVyeVN0cmluZyk7XG4gICAgICBjb25zdCBpc1NlbGVjdCA9IGlzQ3FsICYmIGZJc1NlbGVjdChxdWVyeVN0cmluZyk7XG4gICAgICBjb25zdCBtYWtlUXVlcnkgPVxuICAgICAgICBpc0NxbCB8fCAhYWN0aXZlVGFiRGVmLm1ha2VRdWVyeSA/ICh4KSA9PiB4IDogYWN0aXZlVGFiRGVmLm1ha2VRdWVyeTtcbiAgICAgIGNvbnN0IHBhZ2VTaXplID0gaXNTZWxlY3QgPyAtMSA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIHN1Ym1pdENhbGxiYWNrKG1ha2VRdWVyeShxdWVyeVN0cmluZywgYWN0aXZlRmlsdGVycyksIHBhZ2VTaXplKTtcbiAgICB9LFxuICAgIFtcbiAgICAgIHRhYnMsXG4gICAgICBhY3RpdmVUYWIsXG4gICAgICBhY3RpdmVGaWx0ZXJzLFxuICAgICAgcXVlcnlTdHJpbmcsXG4gICAgICBzdWJtaXRDYWxsYmFjayxcbiAgICAgIHN0b3JlQ2FsbGJhY2ssXG4gICAgXSxcbiAgKTtcblxuICBjb25zdCBpc0NxbCA9IGZJc0NxbChxdWVyeVN0cmluZyk7XG5cbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpc1N1Ym1pdHRlZDogaXNTdWJtaXR0ZWQsXG4gICAgICBxdWVyeVN0cmluZzogcXVlcnlTdHJpbmcsXG4gICAgICBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrOiBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrLFxuICAgIH07XG4gIH0sIFtxdWVyeVN0cmluZywgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjaywgaXNTdWJtaXR0ZWRdKTtcblxuICBjb25zdCBzZXRBY3RpdmVUYWJSZXNldEZpbHRlcnMgPSB1c2VDYWxsYmFjayhcbiAgICAodGFiKSA9PiB7XG4gICAgICBzZXRBY3RpdmVUYWIodGFiKTtcbiAgICAgIHNldEFjdGl2ZUZpbHRlcnMoW10pO1xuICAgIH0sXG4gICAgW3NldEFjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZVRhYl0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBhdXRvQ29tcGxldGU9XCJvZmZcIiBvblN1Ym1pdD17b25TdWJtaXR9PlxuICAgICAgPFF1ZXJ5Rm9ybUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAgICA8UXVlcnlGb3JtVGV4dEZpZWxkXG4gICAgICAgICAgcmVzdG9yZVF1ZXJ5U3RyaW5nPXtyZXN0b3JlUXVlcnlTdHJpbmd9XG4gICAgICAgICAgaXNDcWw9e2lzQ3FsfVxuICAgICAgICAgIHNldFF1ZXJ5U3RyaW5nPXtzZXRRdWVyeVN0cmluZ31cbiAgICAgICAgLz5cbiAgICAgICAgeyFpc0NxbCAmJiAoXG4gICAgICAgICAgPFF1ZXJ5Rm9ybVRhYnNcbiAgICAgICAgICAgIHRhYnM9e3RhYnN9XG4gICAgICAgICAgICBhY3RpdmVUYWI9e2FjdGl2ZVRhYn1cbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYj17c2V0QWN0aXZlVGFiUmVzZXRGaWx0ZXJzfVxuICAgICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvUXVlcnlGb3JtQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L2Zvcm0+XG4gICk7XG59XG5cblF1ZXJ5Rm9ybS5BdXRvQ29tcGxldGlvbiA9IEF1dG9Db21wbGV0aW9uO1xuXG4vLyBEZWZhdWx0cyBhcmUgc3VpdGFibGUgZm9yIHRlc3RpbmcgYnV0IG5vdCBmb3IgcHJvZHVjdGlvbi5cblF1ZXJ5Rm9ybS5kZWZhdWx0UHJvcHMgPSB7XG4gIHN1Ym1pdENhbGxiYWNrOiAocXVlcnlTdHJpbmcsIHBhZ2VTaXplKSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJzdWJtaXQgcXVlcnk6IFwiLCBxdWVyeVN0cmluZywgcGFnZVNpemUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgYWxlcnQocXVlcnlTdHJpbmcpO1xuICAgICAgLy8gcmVsb2FkIHBhZ2VcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9LCAxMDAwKTtcbiAgfSxcbiAgdGFiczogZ2V0X3Rlc3RfdGFicygpLFxuICBkZWZhdWx0VGFiOiAwLFxuICBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrOiBnZXRfdGVzdF9zdWdnZXN0aW9ucyxcbiAgcmVzdG9yZUNhbGxiYWNrOiByZXN0b3JlLFxuICBzdG9yZUNhbGxiYWNrOiBzdG9yZSxcbiAgcmVzdG9yZTogZmFsc2UsXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBRdWVyeUZvcm0gfSBmcm9tIFwiLi9RdWVyeUZvcm1cIjtcblxubGV0IGxhc3RRdWVyeUZvcm1IZWlnaHQgPSAwO1xubGV0IHNjcm9sbERvd25UaW1lb3V0ID0gdW5kZWZpbmVkO1xuXG5jb25zdCB0b2dnbGVRdWVyeVBhbmVsID0gKGNvbnRhaW5lcikgPT4ge1xuICBpZiAodHlwZW9mIHNjcm9sbERvd25UaW1lb3V0ID09PSBcIm51bWJlclwiKSB7XG4gICAgY2xlYXJUaW1lb3V0KHNjcm9sbERvd25UaW1lb3V0KTtcbiAgfVxuICBjb25zdCB7IHRvcCwgYm90dG9tIH0gPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGlmIChsYXN0UXVlcnlGb3JtSGVpZ2h0ICE9PSBib3R0b20gLSB0b3ApIHtcbiAgICAvLyBPbmx5IHRoZSBoZWlnaHQgb2YgdGhlIGZvcm0gaGFzIGNoYW5nZWQuIFRoaXMgaXMgbm90IGFjdHVhbGx5IGEgc2Nyb2xsIGV2ZW50LlxuICAgIGxhc3RRdWVyeUZvcm1IZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2Nyb2xsRG93blRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBzY3JvbGxEb3duVGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICBpZiAod2luZG93LnBhZ2VZT2Zmc2V0ID4gbGFzdFF1ZXJ5Rm9ybUhlaWdodCkge1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJjb25kZW5zZWRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiY29uZGVuc2VkXCIpO1xuICAgIH1cbiAgfSwgMjAwKTtcbn07XG5cbmNvbnN0IFF1ZXJ5UGFuZWwgPSAocHJvcHMpID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBwcm9wcy5zY3JvbGxIYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgcHJvcHMuc2Nyb2xsSGFuZGxlcik7XG4gICAgfTtcbiAgfSwgW3Byb3BzLnNjcm9sbEhhbmRsZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXI+XG4gICAgICA8UXVlcnlGb3JtIHsuLi5wcm9wc30gLz5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblF1ZXJ5UGFuZWwucHJvcFR5cGVzID0ge1xuICBzY3JvbGxIYW5kbGVyOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmV4cG9ydCB7IFF1ZXJ5UGFuZWwsIHRvZ2dsZVF1ZXJ5UGFuZWwgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVJlZiwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEJyYW5kaW5nIH0gZnJvbSBcIi4uL0JyYW5kaW5nXCI7XG5pbXBvcnQgeyBOYXZiYXIsIENvbnRhaW5lciwgTmF2LCBOYXZEcm9wZG93biB9IGZyb20gXCJyZWFjdC1ib290c3RyYXBcIjtcbmltcG9ydCB7IFVzZXJDb21wb25lbnQgfSBmcm9tIFwiLi9Vc2VyQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBRdWVyeVBhbmVsLCB0b2dnbGVRdWVyeVBhbmVsIH0gZnJvbSBcIi4vUXVlcnlQYW5lbFwiO1xuXG5jbGFzcyBOYXZpZ2F0aW9uTWFuYWdlckltcGwge1xuICBjb25zdHJ1Y3Rvcih7IGl0ZW1zLCBicmFuZCwgdXNlcl9jb21wb25lbnQgfSkge1xuICAgIHRoaXMuaXRlbXMgPSBpdGVtcyB8fCBbXTtcbiAgICB0aGlzLmJyYW5kID0gYnJhbmQgfHwgQnJhbmRpbmcubmFtZTtcbiAgICB0aGlzLnVwZGF0ZV9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLnVzZXJfY29tcG9uZW50ID0gdXNlcl9jb21wb25lbnQ7XG4gIH1cbiAgcmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcihsaXN0ZW5lcikge1xuICAgIHRoaXMudXBkYXRlX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfVxuICBhZGRMaW5rKGxpbmspIHtcbiAgICB0aGlzLml0ZW1zLnB1c2gobGluayk7XG4gICAgdGhpcy5ub3RpZnlVcGRhdGVMaXN0ZW5lcnMoKTtcbiAgfVxuICBub3RpZnlVcGRhdGVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy51cGRhdGVfbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcigpKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTmF2aWdhdGlvbk1hbmFnZXIgPSBuZXcgTmF2aWdhdGlvbk1hbmFnZXJJbXBsKHtcbiAgaXRlbXM6IFtcbiAgICA8TmF2Lkxpbmsga2V5PVwiMFwiIGhyZWY9XCIjYWN0aW9uMVwiPlxuICAgICAgSG9tZVxuICAgIDwvTmF2Lkxpbms+LFxuICAgIDxOYXYuTGluayBrZXk9XCIxXCIgaHJlZj1cIiNhY3Rpb24yXCI+XG4gICAgICBMaW5rXG4gICAgPC9OYXYuTGluaz4sXG4gICAgPE5hdkRyb3Bkb3duIGtleT1cIjJcIiB0aXRsZT1cIkxpbmtcIj5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9XCIjYWN0aW9uM1wiPkFjdGlvbjwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9XCIjYWN0aW9uNFwiPkFub3RoZXIgYWN0aW9uPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgPE5hdkRyb3Bkb3duLkRpdmlkZXIgLz5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGhyZWY9XCIjYWN0aW9uNVwiPlNvbWV0aGluZyBlbHNlIGhlcmU8L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgPC9OYXZEcm9wZG93bj4sXG4gICAgPE5hdi5MaW5rIGtleT1cIjNcIiBocmVmPVwiI1wiIGRpc2FibGVkPlxuICAgICAgTGlua1xuICAgIDwvTmF2Lkxpbms+LFxuICBdLFxuICB1c2VyX2NvbXBvbmVudDogPFVzZXJDb21wb25lbnQgLz4sXG59KTtcblxuZXhwb3J0IGNvbnN0IFRvcE5hdmlnYXRpb25CYXIgPSAoKSA9PiB7XG4gIGNvbnN0IHBhbmVsUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IHNjcm9sbEhhbmRsZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlUXVlcnlQYW5lbChwYW5lbFJlZi5jdXJyZW50KTtcbiAgfSwgW3BhbmVsUmVmXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8TmF2YmFyIGJnPVwibGlnaHRcIiBleHBhbmQ9XCJsZ1wiPlxuICAgICAgPENvbnRhaW5lciBmbHVpZD5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZC1sZy1ub25lIGQtaW5saW5lXCI+e05hdmlnYXRpb25NYW5hZ2VyLmJyYW5kfTwvc3Bhbj5cbiAgICAgICAgPE5hdmJhci5Ub2dnbGUgYXJpYS1jb250cm9scz1cIm5hdmJhclNjcm9sbFwiIC8+XG4gICAgICAgIDxOYXZiYXIuQ29sbGFwc2UgaWQ9XCJuYXZiYXJTY3JvbGxcIj5cbiAgICAgICAgICA8TmF2YmFyLkJyYW5kIGNsYXNzTmFtZT1cImQtbm9uZSBkLWxnLWlubGluZVwiPlxuICAgICAgICAgICAge05hdmlnYXRpb25NYW5hZ2VyLmJyYW5kfVxuICAgICAgICAgIDwvTmF2YmFyLkJyYW5kPlxuICAgICAgICAgIDxOYXYgY2xhc3NOYW1lPVwibWUtYXV0byBteS0yIG15LWxnLTBcIj5cbiAgICAgICAgICAgIHtOYXZpZ2F0aW9uTWFuYWdlci5pdGVtcy5tYXAoKGl0ZW0sIGtleSkgPT4gKFxuICAgICAgICAgICAgICA8c3BhbiBrZXk9e2tleX0+e2l0ZW19PC9zcGFuPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9OYXY+XG4gICAgICAgICAgPE5hdiByZWY9e3BhbmVsUmVmfSBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1wYW5lbCBtZS1sZy0yIGZ1bGxcIj5cbiAgICAgICAgICAgIDxRdWVyeVBhbmVsIHJlc3RvcmU9e3RydWV9IHNjcm9sbEhhbmRsZXI9e3Njcm9sbEhhbmRsZXJ9IC8+XG4gICAgICAgICAgPC9OYXY+XG4gICAgICAgICAgPE5hdj57TmF2aWdhdGlvbk1hbmFnZXIudXNlcl9jb21wb25lbnR9PC9OYXY+XG4gICAgICAgIDwvTmF2YmFyLkNvbGxhcHNlPlxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9OYXZiYXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVG9wTmF2aWdhdGlvbkJhciB9IGZyb20gXCIuL1RvcE5hdmlnYXRpb25CYXJcIjtcblxuZXhwb3J0IGNvbnN0IEhlYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8aGVhZGVyIGNsYXNzTmFtZT1cInNoYWRvdy1zbSBiZy1saWdodFwiPlxuICAgICAgPFRvcE5hdmlnYXRpb25CYXI+PC9Ub3BOYXZpZ2F0aW9uQmFyPlxuICAgIDwvaGVhZGVyPlxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY2xhc3MgRm9vdGVyTWFuYWdlckltcGwge1xuICBjb25zdHJ1Y3Rvcih7IGl0ZW1zLCBjb3B5UmlnaHQgfSkge1xuICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLmNvcHlSaWdodCA9IGNvcHlSaWdodDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRm9vdGVyTWFuYWdlciA9IG5ldyBGb290ZXJNYW5hZ2VySW1wbCh7XG4gIGl0ZW1zOiBbXG4gICAgPGFcbiAgICAgIGtleT1cIjBcIlxuICAgICAgY2xhc3NOYW1lPVwibmF2LWxpbmsgcHgtMlwiXG4gICAgICBocmVmPVwiaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLTMuMC5lbi5odG1sXCJcbiAgICA+XG4gICAgICBMaWNlbnNlIChBR1BMLXYzKVxuICAgIDwvYT4sXG4gICAgPGEga2V5PVwiMVwiIGNsYXNzTmFtZT1cIm5hdi1saW5rIHB4LTJcIiBocmVmPVwiaHR0cHM6Ly9naXRsYWIuY29tL2Nhb3NkYlwiPlxuICAgICAgU291cmNlc1xuICAgIDwvYT4sXG4gICAgPGEga2V5PVwiM1wiIGNsYXNzTmFtZT1cIm5hdi1saW5rIHB4LTJcIiBocmVmPVwiaHR0cHM6Ly9kb2NzLmluZGlzY2FsZS5jb20vXCI+XG4gICAgICBEb2N1bWVudGF0aW9uXG4gICAgPC9hPixcbiAgXSxcbiAgY29weVJpZ2h0OiBcIsKpIDIwMjEgSW5kaVNjYWxlIEdtYkhcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgRm9vdGVyID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxmb290ZXI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb3Rlci1ib3JkZXJcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb290ZXItYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBweS0zIG15LTRcIj5cbiAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwibmF2IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHBiLTMgbWItM1wiPlxuICAgICAgICAgICAge0Zvb3Rlck1hbmFnZXIuaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzcGFjZXIgPVxuICAgICAgICAgICAgICAgIGluZGV4ID09PSAwID8gbnVsbCA6IDxsaSBjbGFzc05hbWU9XCJuYXYtaXRlbSBweC0xXCI+4oCiPC9saT47XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3NwYWNlcn1cbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJuYXYtaXRlbVwiPntpdGVtfTwvbGk+XG4gICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj57Rm9vdGVyTWFuYWdlci5jb3B5UmlnaHR9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9vdGVyPlxuICApO1xufTtcbiIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIHRoZSBDYW9zREIgUHJvamVjdC5cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGltbSBGaXRzY2hlbiA8dC5maXRzY2hlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgaGFuZGxpbmcgUHJvbWlzZXMuIFRoZSByZXN1bHRzIG9mIHRoZSBwcm9taXNlIGFyZSBiZWluZ1xuICogcmVuZGVyZWQuIEluIHRoZSBtZWFuIHRpbWUsIGEgTG9hZGluZ0luZm8gaXMgYmVpbmcgc2hvd24uXG4gKlxuICogRXhhbXBsZTpcbiAqICAgPEF3YWl0IHByb21pc2U9e2ZldGNoRGF0YSgpfVxuICogICAgICAgICAgdGhlbj17ZGF0YSA9PiBjcmVhdGVUYWJsZShkYXRhKX1cbiAqICAgICAgICAgIGNhdGNoPXtlcnJvciA9PiBcIjxkaXY+RXJyb3I6IFwiICsgZXJyb3IubWVzc2FnZTwvZGl2Pn0vPlxuICpcbiAqIFdoZW4gZmV0Y2hEYXRhIHJlc29sdmVzLCB0aGUgZGF0YSBpcyBiZWluZyBwcmVzZW50ZWQgYXMgYSB0YWJsZS4gQW4gZXJyb3JcbiAqIGRpdiBpcyBiZWluZyBzaG93biBpZiBmZXRjaERhdGEgZmFpbHMuXG4gKlxuICogTkIuIEVxdWl2YWxlbnRseSwgeW91IGNvdWxkIGFsc28gZG86XG4gKiAgIDxBd2FpdCBwcm9taXNlPXtmZXRjaERhdGEoKVxuICogICAgICAgICAgLnRoZW4oZGF0YSA9PiBjcmVhdGVUYWJsZShkYXRhKVxuICogICAgICAgICAgLmNhdGNoPShlcnJvciA9PiBcIjxkaXY+RXJyb3I6IFwiICsgZXJyb3IubWVzc2FnZTwvZGl2PilcbiAqICAgfS8+XG4gKlxuICogQHBhcmFtIHtQcm9taXNlfSBwcm9taXNlIC0gTXVzdCByZXNvbHZlIHRvIGEgUmVhY3QuQ29tcG9uZW50IHVubGVzcyB0aGVcbiAqIHBhcmFtZXRlciBgdGhlbmAgZG9lcyB0aGUgY29udmVzaW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gW3RoZW5dIC0gZnVuY3Rpb24gd2l0aCBvbmUgcGFyYW1ldGVyLiBJdCBpcyBiZWluZyBjYWxsZWRcbiAqIHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMuIEl0IHNob3VsZCBwcmVwcm9jZXNzIHRoZSBwcm9taXNlcycgcmVzdWx0cyBhbmRcbiAqIG11c3QgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2F0Y2hdIC0gZnVuY3Rpb24gd2l0aCBvbmUgcGFyYW1ldGVyLiBJdCBpcyBiZWluZyBjYWxsZWRcbiAqIHdoZW4gdGhlIHByb21pc2UgcmVqZWN0cy4gSXQgc2hvdWxkIHByZXByb2Nlc3MgdGhlIGVycm9yIGFuZCBtdXN0IHJldHVybiBhXG4gKiBjb21wb25lbnQuXG4gKiBAcGFyYW0ge1JlYWN0LkNvbXBvbmVudH0gW2xvYWRpbmddIC0gQSBjb21wb25lbnQgd2hpY2ggd2lsbCBzaG93IHVudGlsIHRoZVxuICogcHJvbWlzZSByZXNvbHZlcy4gSWYgdW5kZWZpbmVkLCBub3RoaW5nIHdpbGwgYmUgc2hvd24uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIEF3YWl0KHByb3BzKSB7XG4gIGNvbnN0IGxvYWRpbmcgPSBwcm9wcy5sb2FkaW5nIHx8IDxMb2FkaW5nSW5mbyAvPjtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShsb2FkaW5nKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZSA9IGFzeW5jICh0aGVQcm9taXNlLCBkb1RoZW4sIGRvQ2F0Y2gpID0+IHtcbiAgICAgIHZhciByZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGVQcm9taXNlO1xuICAgICAgICBpZiAoZG9UaGVuKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZG9UaGVuKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChkb0NhdGNoKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZG9DYXRjaChlcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgX2Vycm9yID0gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvcjtcbiAgICAgICAgICByZXN1bHQgPSA8c3Bhbj5BbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJlZDoge19lcnJvcn08L3NwYW4+O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShyZXN1bHQpO1xuICAgIH07XG5cbiAgICBoYW5kbGUocHJvcHMucHJvbWlzZSwgcHJvcHMudGhlbiwgcHJvcHMuY2F0Y2gpO1xuICB9LCBbcHJvcHMucHJvbWlzZSwgcHJvcHMudGhlbiwgcHJvcHMuY2F0Y2gsIHNldFN0YXRlXSk7XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBDaGVja2JveCA9ICh7XG4gIG5hbWUsXG4gIHZhbHVlLFxuICBpY29ucyxcbiAgc3R5bGUsXG4gIGNvbG9yLFxuICByZWFkT25seSxcbiAgb25DaGFuZ2UsXG4gIG9uQmx1cixcbiAgc2V0VmFsdWUsXG4gIHRpdGxlLFxufSkgPT4ge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHZhbHVlIHx8IFwiZmFsc2VcIik7XG4gIHN0eWxlID0gc3R5bGUgfHwgXCJjaGVja1wiO1xuICBjb2xvciA9XG4gICAgY29sb3IgfHxcbiAgICB7XG4gICAgICBjaGVjazoge1xuICAgICAgICB0cnVlOiBcIiB0ZXh0LXN1Y2Nlc3NcIixcbiAgICAgICAgZmFsc2U6IFwiIHRleHQtYm9keVwiLFxuICAgICAgICBwYXJ0aWFsOiBcIiBjb2xvci1saWdodC1ncmVlblwiLFxuICAgICAgfSxcbiAgICAgIFwiY2hlY2stZmlsbFwiOiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtc3VjY2Vzc1wiLFxuICAgICAgICBmYWxzZTogXCIgdGV4dC1ib2R5XCIsXG4gICAgICAgIHBhcnRpYWw6IFwiIGNvbG9yLWxpZ2h0LWdyZWVuXCIsXG4gICAgICB9LFxuICAgICAgeDoge1xuICAgICAgICB0cnVlOiBcIiB0ZXh0LWRhbmdlclwiLFxuICAgICAgICBmYWxzZTogXCIgdGV4dC1ib2R5XCIsXG4gICAgICAgIHBhcnRpYWw6IFwiIHRleHQtd2FybmluZ1wiLFxuICAgICAgfSxcbiAgICAgIFwieC1maWxsXCI6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1kYW5nZXJcIixcbiAgICAgICAgZmFsc2U6IFwiIHRleHQtYm9keVwiLFxuICAgICAgICBwYXJ0aWFsOiBcIiB0ZXh0LXdhcm5pbmdcIixcbiAgICAgIH0sXG4gICAgfVtzdHlsZV07XG5cbiAgY29uc3QgaWNvbkNsYXNzTmFtZU1hcCA9IHtcbiAgICB4OiB7XG4gICAgICB0cnVlOiBcImJpIGJpLXgtc3F1YXJlXCIgKyBjb2xvcltcInRydWVcIl0sXG4gICAgICBmYWxzZTogXCJiaSBiaS1zcXVhcmVcIiArIGNvbG9yW1wiZmFsc2VcIl0sXG4gICAgICBwYXJ0aWFsOiBcImJpIGJpLXNsYXNoLXNxdWFyZVwiICsgY29sb3JbXCJwYXJ0aWFsXCJdLFxuICAgIH0sXG4gICAgXCJ4LWZpbGxcIjoge1xuICAgICAgdHJ1ZTogXCJiaSBiaS14LXNxdWFyZS1maWxsXCIgKyBjb2xvcltcInRydWVcIl0sXG4gICAgICBmYWxzZTogXCJiaSBiaS1zcXVhcmVcIiArIGNvbG9yW1wiZmFsc2VcIl0sXG4gICAgICBwYXJ0aWFsOiBcImJpIGJpLXNsYXNoLXNxdWFyZS1maWxsXCIgKyBjb2xvcltcInBhcnRpYWxcIl0sXG4gICAgfSxcbiAgICBjaGVjazoge1xuICAgICAgdHJ1ZTogXCJiaSBiaS1jaGVjay1zcXVhcmVcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlXCIgKyBjb2xvcltcInBhcnRpYWxcIl0sXG4gICAgfSxcbiAgICBcImNoZWNrLWZpbGxcIjoge1xuICAgICAgdHJ1ZTogXCJiaSBiaS1jaGVjay1zcXVhcmUtZmlsbFwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmUtZmlsbFwiICsgY29sb3JbXCJwYXJ0aWFsXCJdLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgdHJhbnNpdGlvbnMgPSB7XG4gICAgcGFydGlhbDogXCJmYWxzZVwiLFxuICAgIHRydWU6IFwiZmFsc2VcIixcbiAgICBmYWxzZTogXCJ0cnVlXCIsXG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB7fTtcblxuICB2YXIgaW5wdXQ7XG4gIGlmICghcmVhZE9ubHkpIHtcbiAgICBpbnB1dCA9IChcbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzc05hbWU9XCJjYW9zZGItY2hlY2stYm94LWlucHV0XCJcbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICB0YWJJbmRleD1cIi0xXCJcbiAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgIHZhbHVlPXtzdGF0ZX1cbiAgICAgIC8+XG4gICAgKTtcblxuICAgIHByb3BzLm9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBzZXRWYWx1ZShuYW1lLCB0cmFuc2l0aW9uc1tzdGF0ZV0pO1xuICAgICAgc2V0U3RhdGUodHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICB9O1xuXG4gICAgcHJvcHMub25LZXlEb3duID0gKGUpID0+IHtcbiAgICAgIGlmIChlLmNvZGUgPT09IFwiU3BhY2VcIikge1xuICAgICAgICBzZXRWYWx1ZShuYW1lLCB0cmFuc2l0aW9uc1tzdGF0ZV0pO1xuICAgICAgICBzZXRTdGF0ZSh0cmFuc2l0aW9uc1tzdGF0ZV0pO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHByb3BzLnRhYkluZGV4ID0gXCIwXCI7XG4gICAgcHJvcHMub25CbHVyID0gb25CbHVyO1xuICB9XG5cbiAgaWNvbnMgPSBpY29ucyB8fCB7fTtcblxuICBjb25zdCBpY29uID0gaWNvbnNbc3RhdGVdIHx8IChcbiAgICA8aVxuICAgICAgY2xhc3NOYW1lPXtcIm1zLTEgY2Fvc2RiLWNoZWNrYm94LWljb24gXCIgKyBpY29uQ2xhc3NOYW1lTWFwW3N0eWxlXVtzdGF0ZV19XG4gICAgLz5cbiAgKTtcblxuICB2YXIgY2xhc3NOYW1lID0gXCJjYW9zZGItY2hlY2tib3ggZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiO1xuICBpZiAocmVhZE9ubHkpIHtcbiAgICBjbGFzc05hbWUgKz0gXCIgcmVhZC1vbmx5XCI7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgYXJpYS1jaGVja2VkPXtzdGF0ZX1cbiAgICA+XG4gICAgICB7aW5wdXR9XG4gICAgICA8c3BhbiB7Li4ucHJvcHN9PntpY29ufTwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuXG5DaGVja2JveC5wcm9wVHlwZXMgPSB7XG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZihbXCJ0cnVlXCIsIFwiZmFsc2VcIl0pLFxuICBpY29uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3R5bGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbG9yOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2V0VmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmNvbnN0IENhcmQgPSBmdW5jdGlvbiAoeyBjbGFzc05hbWUsIGNoaWxkcmVuIH0pIHtcbiAgY2xhc3NOYW1lID0gY2xhc3NOYW1lIHx8IFwiXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YGNhcmQgbXQtMyByb3VuZGVkIHNoYWRvdyAke2NsYXNzTmFtZX1gfT57Y2hpbGRyZW59PC9kaXY+XG4gICk7XG59O1xuXG5DYXJkLnByb3BUeXBlcyA9IHtcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuQm9keSA9IGZ1bmN0aW9uIENhcmRCb2R5KHsgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjYXJkLWJvZHlcIj57Y2hpbGRyZW59PC9kaXY+O1xufTtcblxuQ2FyZC5Cb2R5LnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLkZvb3RlciA9IGZ1bmN0aW9uIENhcmRGb290ZXIoeyBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkLWZvb3RlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj57Y2hpbGRyZW59PC9kaXY+XG4gICk7XG59O1xuXG5DYXJkLkZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuQ2FyZC5UaXRsZSA9IGZ1bmN0aW9uIENhcmRUaXRsZSh7IGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIDxoMyBjbGFzc05hbWU9XCJjYXJkLXRpdGxlXCI+e2NoaWxkcmVufTwvaDM+O1xufTtcblxuQ2FyZC5UaXRsZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuQ2FyZC5IZWFkZXIgPSBmdW5jdGlvbiBDYXJkSGVhZGVyKHsgdGl0bGUsIGNoaWxkcmVuIH0pIHtcbiAgdGl0bGUgPSB0aXRsZSA/IDxDYXJkLlRpdGxlPnt0aXRsZX08L0NhcmQuVGl0bGU+IDogdW5kZWZpbmVkO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgIHt0aXRsZX1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNhcmQuSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgdGl0bGU6IFByb3BUeXBlcy5ub2RlLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbmV4cG9ydCB7IENhcmQgfTtcbiIsImZ1bmN0aW9uIF9fXyRpbnNlcnRTdHlsZShjc3MpIHtcbiAgICBpZiAoIWNzcyB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTtcbiAgICBzdHlsZS5pbm5lckhUTUwgPSBjc3M7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgcmV0dXJuIGNzcztcbn1cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0X19kZWZhdWx0IGZyb20gJ3JlYWN0JztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG52YXIgX19hc3NpZ24kMSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24kMSA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gX19hc3NpZ24kMS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBfX2F3YWl0ZXIkMSh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fZ2VuZXJhdG9yJDEodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gX19zcHJlYWRBcnJheSQxKHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XG5cbi8qKlxuICogR2l2ZXMgYSBYWC5YWCBmb3JtYXQgaW4gQnl0ZXMgS0IsIE1CLCBHQiBvciBUQlxuICogQHBhcmFtIGZpbGVTaXplIGZpbGUgc2l6ZSB0byBnaXZlIGZvcm1hdCBpbiBCeXRlc1xuICovXG52YXIgZmlsZVNpemVGb3JtYXRlciA9IGZ1bmN0aW9uIChmaWxlU2l6ZSkge1xuICAgIHZhciByZXN1bHQgPSBcIlwiO1xuICAgIGlmICghZmlsZVNpemUpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKGZpbGVTaXplIDwgMTAyNCkge1xuICAgICAgICByZXN1bHQgPSBmaWxlU2l6ZSArIFwiIEJ5dGVzXCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvL0tCXG4gICAgICAgIGlmIChmaWxlU2l6ZSA8IDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoZmlsZVNpemUgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCIgS0JcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaWxlU2l6ZSA8IDEwMjQgKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gKChmaWxlU2l6ZSAvIDEwMjQpIC8gMTAyNCkudG9GaXhlZCgyKSArIFwiIE1CXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlsZVNpemUgPCAxMDI0ICogMTAyNCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoKChmaWxlU2l6ZSAvIDEwMjQpIC8gMTAyNCkgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCIgR0JcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9ICgoKChmaWxlU2l6ZSAvIDEwMjQpIC8gMTAyNCkgLyAxMDI0KSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcIiBUQlwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEl0YWxpYW4gdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVJdGFsaWFuID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJUcmFzY2luYSBxdWkgaSB0dW9pIGZpbGVcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJDYXJpY2FtZW50byBkaSBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgZmlsZVwiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJGaWxlIGNhcmljYXRpOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBGaWxlIHJpZml1dGF0aTogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiTmVzc3VuIGZpbGUgdmFsaWRvIGluIGF0dGVzYSBkaSBlc3NlcmUgY2FyaWNhdG9cIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlR1dHRpIGkgdGlwaSBkaSBmaWxlIHNvbm8gYWNjZXR0YXRpXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJUaXBpIGRpIGZpbGUgY29uc2VudGl0aTogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwiQ2FyaWNhbWVudG9cIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJEaW1lbnNpb25lIG1hc3NpbWEgXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIkZpbGUgIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCJJbCBmaWxlIMOoIHN0YXRvIGNhcmljYXRvIGNvbiBzdWNjZXNzbyBcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwiRXJyb3JlIGRpIGNhcmljYW1lbnRvIGRlbCBmaWxlXCIsXG59O1xuLyoqXG4gKiBJdGFsaWFuIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtSXRhbGlhbiA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTm9tZTogXCIsXG4gICAgICAgIHNpemU6IFwiRGltZW5zaW9uZTogXCIsXG4gICAgICAgIHR5cGU6IFwiVGlwbzogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwicHJlcGFyYXppb25lXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJJbiBjb3Jzb1wiLFxuICAgICAgICBzdWNjZXNzOiBcIlN1Y2Nlc3NvXCIsXG4gICAgICAgIHZhbGlkOiBcIlZhbGlkb1wiLFxuICAgICAgICBkZW5pZWQ6IFwiTm9uIHbDoWxpZG9cIixcbiAgICAgICAgZXJyb3I6IFwiRXJyb3JlXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiSW50ZXJyb3R0b1wiXG4gICAgfSxcbn07XG4vKipcbiAqIEl0YWxpYW4gdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9ySXRhbGlhbiA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7IHJldHVybiBcIklsIGZpbGUgXFx1MDBFOCBtb2x0byBncmFuZGUuIElsIHRhbS4gaWwgbWFzc2ltbyBcXHUwMEU4IFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTsgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJUaXBvIGRpIGZpbGUgaWxsZWdhbGVcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykgeyByZXR1cm4gXCJOdW1lcm8gbWFzc2ltbyBkaSBmaWxlIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKSByYWdnaXVudG9cIik7IH1cbn07XG5cbi8qKlxuICogRnJlbmNoIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lRnJlbmNoID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJEw6lwb3NleiB2b3MgZmljaGllcnMgaWNpXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiRW52b2kgZGUgXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIGZpY2hpZXJzXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIkZpY2hpZXJzIHRcXHUwMEU5bFxcdTAwRTljaGFyZ1xcdTAwRTlzIDogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgRmljaGllcnMgcmVqZXRcXHUwMEU5czogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiQXVjdW4gZmljaGllciB2YWxpZGUgbmUgbWFucXVlXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJUb3VzIHR5cGVzIGRlIGZpY2hpZXJzIGFjY2VwdFxcdTAwRTlzIFwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiVHlwZXMgZGUgZmljaGllcjogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwiRW52b3llclwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlRhaWxsZSBtYXhpbWFsZSBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiRmljaGllcnMgIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCJMZSBmaWNoaWVyIGEgw6l0w6kgdMOpbMOpY2hhcmfDqSBhdmVjIHN1Y2PDqHNcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwiRXJyZXVyIGxvcnMgZHUgdMOpbMOpY2hhcmdlbWVudCBcIixcbn07XG4vKipcbiAqIEZyZW5jaCB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbUZyZW5jaCA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTGUgbm9tOiBcIixcbiAgICAgICAgc2l6ZTogXCJMZSB0YWlsbGU6IFwiLFxuICAgICAgICB0eXBlOiBcIkxlIHR5cGU6IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcInByw6lwYXJlclwiLFxuICAgICAgICB1cGxvYWRpbmc6IFwiRW4gY291cnNcIixcbiAgICAgICAgc3VjY2VzczogXCJTdWNjw6hzXCIsXG4gICAgICAgIHZhbGlkOiBcIlZhbGlkZVwiLFxuICAgICAgICBkZW5pZWQ6IFwiUmVmdXPDqVwiLFxuICAgICAgICBlcnJvcjogXCJFcnJldXJcIixcbiAgICAgICAgYWJvcnRlZDogXCJJbnRlcnJvbXB1XCJcbiAgICB9LFxufTtcbi8qKlxuICogRnJlbmNoIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvckZyZW5jaCA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7IHJldHVybiBcIkxlIGZpY2hpZXIgZXN0IHRyXFx1MDBFOHMgdm9sdW1pbmV1eC4gTGUgdGFtLiBsZSBtYXhpbXVtIGVzdCBkZSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7IH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiVHlwZSBkZSBmaWNoaWVyIGlsbFxcdTAwRTlnYWwgXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHsgcmV0dXJuIFwiTGltaXRlIGRlIGZpY2hpZXJzIGF0dGVpbnRlIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKVwiKTsgfVxufTtcblxuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lRW5nbGlzaCA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwiRHJvcCB5b3VyIGZpbGVzIGhlcmVcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJVcGxvYWRpbmcgXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIGZpbGVzXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIlVwbG9hZGVkIGZpbGVzOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBSZWplY3RlZCBmaWxlczogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiVGhlcmUgaXMgbm8gbWlzc2luZyB2YWxpZCBmaWxlIHRvIHVwbG9hZFwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiQWxsIGZpbGUgdHlwZXMgYWNjZXB0ZWRcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIkFsbG93ZWQgdHlwZXM6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIlVwbG9hZCBmaWxlc1wiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIk1heCBmaWxlIHNpemU6IFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJGaWxlcyBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwiRmlsZSB3YXMgc3VjY2Vzc2Z1bHkgdXBsb2FkZWRcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwiRXJyb3Igb24gdXBsb2FkaW5nLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLlwiLFxufTtcbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbUVuZ2xpc2ggPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIk5hbWU6IFwiLFxuICAgICAgICBzaXplOiBcIlNpemU6IFwiLFxuICAgICAgICB0eXBlOiBcIlR5cGU6IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIlByZXBhcmluZ1wiLFxuICAgICAgICB1cGxvYWRpbmc6IFwiVXBsb2FkaW5nXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiU3VjY2Vzc1wiLFxuICAgICAgICB2YWxpZDogXCJWYWxpZFwiLFxuICAgICAgICBkZW5pZWQ6IFwiTm90IHZhbGlkXCIsXG4gICAgICAgIGVycm9yOiBcIkVycm9yXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiQWJvcnRlZFwiXG4gICAgfSxcbn07XG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yRW5nbGlzaCA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7XG4gICAgICAgIHJldHVybiBcIkZpbGUgaXMgdG9vIGJpZy4gTWF4IGZpbGUgc2l6ZSBhbGxvd2VkIGlzIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTtcbiAgICB9LFxuICAgIGFjY2VwdEVycm9yOiBcIkZpbGUgdHlwZSBpcyBub3QgYWxsb3dlZFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7XG4gICAgICAgIHJldHVybiBcIk1heCBhbW91bnQgb2YgZmlsZXMgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpIGhhcyBiZWVuIHJlYWNoZWRcIik7XG4gICAgfVxufTtcblxuLyoqXG4gKiBTcGFuaXNoIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lU3BhbmlzaCA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwiU3VlbHRhIHR1cyBhcmNoaXZvcyBhcXXDrVwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIlN1YmllbmRvIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBhcmNoaXZvc1wiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJBcmNoaXZvcyBzdWJpZG9zOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBBcmNoaXZvcyByZWNoYXphZG9zOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJObyBoYXkgYXJjaGl2b3MgdlxcdTAwRTFsaWRvcyBwZW5kaWVudGVzIHBvciBzdWJpclwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiVG9kb3MgbG9zIHRpcG9zIGRlIGFyY2hpdm8gYWNlcHRhZG9zXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJUaXBvKHMpIGRlIGFyY2hpdm8gcGVybWl0aWRvczogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwiU3ViaXJcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJUYW0uIG1cXHUwMEUxeGltbyBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiQXJjaGl2b3MgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIkVsIGFyY2hpdm8gc2Ugc3ViacOzIGNvcnJlY3RhbWVudGVcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwiRXJyb3IgYWwgc3ViaXIgZWwgYXJjaGl2b1wiLFxufTtcbi8qKlxuICogU3BhbmlzaCB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVNwYW5pc2ggPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIk5vbWJyZTogXCIsXG4gICAgICAgIHNpemU6IFwiVGFtYcOxbzogXCIsXG4gICAgICAgIHR5cGU6IFwiVGlwbzogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwiUHJlcGFyYW5kb1wiLFxuICAgICAgICB1cGxvYWRpbmc6IFwiU3ViaWVuZG9cIixcbiAgICAgICAgc3VjY2VzczogXCLDiXhpdG9cIixcbiAgICAgICAgdmFsaWQ6IFwiVsOhbGlkb1wiLFxuICAgICAgICBkZW5pZWQ6IFwiTm8gdsOhbGlkb1wiLFxuICAgICAgICBlcnJvcjogXCJFcnJvclwiLFxuICAgICAgICBhYm9ydGVkOiBcIkFudWxhZG9cIlxuICAgIH0sXG59O1xuLyoqXG4gKiBTcGFuaXNoIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvclNwYW5pc2ggPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkgeyByZXR1cm4gXCJFbCBhcmNoaXZvIGVzIG11eSBncmFuZGUuIEVsIHRhbS4gbVxcdTAwRTF4aW1vIGVzIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTsgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJUaXBvIGRlIGFyY2hpdm8gbm8gcGVybWl0aWRvXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHsgcmV0dXJuIFwiQ2FudGlkYWQgbVxcdTAwRTF4aW1hIGRlIGFyY2hpdm9zIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKSBhbGNhbnphZGFcIik7IH1cbn07XG5cbi8qKlxuICogUnVzc2lhbiB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZVJ1c3NpYW4gPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcItCf0LXRgNC10YLQsNGJ0LjRgtC1INGB0Y7QtNCwINGB0LLQvtC4INGE0LDQudC70YsuXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiXFx1MDQxMlxcdTA0NEJcXHUwNDMzXFx1MDQ0MFxcdTA0NDNcXHUwNDM3XFx1MDQzQVxcdTA0MzAgXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMlwiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJcXHUwNDE3XFx1MDQzMFxcdTA0MzNcXHUwNDQwXFx1MDQ0M1xcdTA0MzZcXHUwNDM1XFx1MDQzRFxcdTA0M0UgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0M0VcXHUwNDMyOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBcXHUwNDNFXFx1MDQ0MlxcdTA0M0FcXHUwNDNCXFx1MDQzRVxcdTA0M0RcXHUwNDM1XFx1MDQzRFxcdTA0M0RcXHUwNDRCXFx1MDQ0NSBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzI6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIlxcdTA0MTRcXHUwNDM1XFx1MDQzOVxcdTA0NDFcXHUwNDQyXFx1MDQzMlxcdTA0MzhcXHUwNDQyXFx1MDQzNVxcdTA0M0JcXHUwNDRDXFx1MDQzRFxcdTA0NEJcXHUwNDM5IFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0IgXFx1MDQzRFxcdTA0MzUgXFx1MDQzRVxcdTA0NDJcXHUwNDQxXFx1MDQ0M1xcdTA0NDJcXHUwNDQxXFx1MDQ0MlxcdTA0MzJcXHUwNDQzXFx1MDQzNVxcdTA0NDIgXFx1MDQzNFxcdTA0M0JcXHUwNDRGIFxcdTA0MzdcXHUwNDMwXFx1MDQzM1xcdTA0NDBcXHUwNDQzXFx1MDQzN1xcdTA0M0FcXHUwNDM4XCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJcXHUwNDFGXFx1MDQ0MFxcdTA0MzhcXHUwNDNEXFx1MDQzOFxcdTA0M0NcXHUwNDMwXFx1MDQ0RVxcdTA0NDJcXHUwNDQxXFx1MDQ0RiBcXHUwNDMyXFx1MDQ0MVxcdTA0MzUgXFx1MDQ0MlxcdTA0MzhcXHUwNDNGXFx1MDQ0QiBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzIgXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJcXHUwNDE0XFx1MDQzRVxcdTA0M0ZcXHUwNDQzXFx1MDQ0MVxcdTA0NDJcXHUwNDM4XFx1MDQzQ1xcdTA0NEJcXHUwNDM1IFxcdTA0NDJcXHUwNDM4XFx1MDQzRlxcdTA0NEI6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcItCe0YLQv9GA0LDQstC40YLRjFwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlxcdTA0M0NcXHUwNDMwXFx1MDQzQVxcdTA0NDEgXFx1MDQ0MFxcdTA0MzBcXHUwNDM3XFx1MDQzQ1xcdTA0MzVcXHUwNDQwOiBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiXFx1MDQyNFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0NEIgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcItCk0LDQudC7INCx0YvQuyDRg9GB0L/QtdGI0L3QviDQt9Cw0LPRgNGD0LbQtdC9XCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcItCe0YjQuNCx0LrQsCDQv9GA0Lgg0LfQsNCz0YDRg9C30LrQtVwiLFxufTtcbi8qKlxuICogUnVzc2lhbiB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKlxuICovXG52YXIgRmlsZUl0ZW1SdXNzaWFuID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJcXHUwNDE4XFx1MDQzQ1xcdTA0NEY6IFwiLFxuICAgICAgICBzaXplOiBcItCg0LDQt9C80LXRgDogXCIsXG4gICAgICAgIHR5cGU6IFwiVNC40L86IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcItC/0L7QtNCz0L7RgtC+0LLQutCwXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCLQl9Cw0LPRgNGD0LfQutCwXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwi0YPRgdC/0LXRhVwiLFxuICAgICAgICB2YWxpZDogXCLQs9C+0LTQvdGL0LlcIixcbiAgICAgICAgZGVuaWVkOiBcItCy0YvQutC40L3Rg9GC0YvQuVwiLFxuICAgICAgICBlcnJvcjogXCLQvtGI0LjQsdC60LBcIixcbiAgICAgICAgYWJvcnRlZDogXCLQv9GA0LXRgNCy0LDQvdC90YvQuVwiXG4gICAgfSxcbn07XG4vKipcbiAqIFJ1c3NpYW4gdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yUnVzc2lhbiA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTA0MjRcXHUwNDMwXFx1MDQzOVxcdTA0M0IgXFx1MDQ0MVxcdTA0M0JcXHUwNDM4XFx1MDQ0OFxcdTA0M0FcXHUwNDNFXFx1MDQzQyBcXHUwNDMxXFx1MDQzRVxcdTA0M0JcXHUwNDRDXFx1MDQ0OFxcdTA0M0VcXHUwNDM5LiBcXHUwNDFDXFx1MDQzMFxcdTA0M0FcXHUwNDQxXFx1MDQzOFxcdTA0M0NcXHUwNDMwXFx1MDQzQlxcdTA0NENcXHUwNDNEXFx1MDQzRSBcXHUwNDM0XFx1MDQzRVxcdTA0M0ZcXHUwNDQzXFx1MDQ0MVxcdTA0NDJcXHUwNDM4XFx1MDQzQ1xcdTA0NEJcXHUwNDM5IFxcdTA0NDBcXHUwNDMwXFx1MDQzN1xcdTA0M0NcXHUwNDM1XFx1MDQ0MCBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzMCAtIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTtcbiAgICB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlxcdTA0MjJcXHUwNDM4XFx1MDQzRiBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzMCBcXHUwNDNEXFx1MDQzNSBcXHUwNDQwXFx1MDQzMFxcdTA0MzdcXHUwNDQwXFx1MDQzNVxcdTA0NDhcXHUwNDM1XFx1MDQzRFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTA0MTRcXHUwNDNFXFx1MDQ0MVxcdTA0NDJcXHUwNDM4XFx1MDQzM1xcdTA0M0RcXHUwNDQzXFx1MDQ0MlxcdTA0M0UgXFx1MDQzQ1xcdTA0MzBcXHUwNDNBXFx1MDQ0MVxcdTA0MzhcXHUwNDNDXFx1MDQzMFxcdTA0M0JcXHUwNDRDXFx1MDQzRFxcdTA0M0VcXHUwNDM1IFxcdTA0M0FcXHUwNDNFXFx1MDQzQlxcdTA0MzhcXHUwNDQ3XFx1MDQzNVxcdTA0NDFcXHUwNDQyXFx1MDQzMlxcdTA0M0UgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0M0VcXHUwNDMyIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKVwiKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFBvcnR1Z3Vlc2UgdHJhbnNsYXRpb24gZm9yIERyb3B6b25lXG4gKi9cbnZhciBEcm9wem9uZVBvcnR1Z3Vlc2UgPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIlNvbHRlIHNldXMgYXJxdWl2b3MgYXF1aSBcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJFbnZpYW5kbyBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgYXJxdWl2b3NcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiQXJxdWl2b3MgZW52aWFkb3M6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIEFycXVpdm9zIHJlamVpdGFkb3M6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIk5lbmh1bSBhcnF1aXZvIHZcXHUwMEUxbGlkbyBlc3RcXHUwMEUxIGZhbHRhbmRvIHBhcmEgZW52aWFyXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJUb2RvcyBvcyB0aXBvcyBkZSBhcnF1aXZvIHNcXHUwMEUzbyBhY2VpdG9zXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJUaXBvcyBwZXJtaXRpZG9zOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJFbnZpYXJcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJUYW1hbmhvIG1cXHUwMEUxeGltbzogXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIkFycXVpdm9zIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCJPIGFycXVpdm8gZm9pIGVudmlhZG8gY29tIHN1Y2Vzc29cIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwiRXJybyBhbyBlbnZpYXJcIixcbn07XG4vKipcbiAqIFBvcnR1Z3Vlc2UgdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1Qb3J0dWd1ZXNlID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJOb21lOiBcIixcbiAgICAgICAgc2l6ZTogXCJUYW1hbmhvOiBcIixcbiAgICAgICAgdHlwZTogXCJUaXBvOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJQcmVwYXJhbmRvXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJFbnZpYW5kb1wiLFxuICAgICAgICBzdWNjZXNzOiBcIsOKeGl0b1wiLFxuICAgICAgICB2YWxpZDogXCJ2w6FsaWRvXCIsXG4gICAgICAgIGRlbmllZDogXCJOZWdhZG9cIixcbiAgICAgICAgZXJyb3I6IFwiRXJyb1wiLFxuICAgICAgICBhYm9ydGVkOiBcIkFib3J0YWRvXCJcbiAgICB9LFxufTtcbi8qKlxuICogUG9ydHVndWVzZSB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JQb3J0dWd1ZXNlID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHsgcmV0dXJuIFwiTyBhcnF1aXZvIFxcdTAwRTkgbXVpdG8gZ3JhbmRlLiBPIHRhbWFuaG8gbVxcdTAwRTF4aW1vIGRlIGFycXVpdm8gcGVybWl0aWRvIFxcdTAwRTkgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpOyB9LFxuICAgIGFjY2VwdEVycm9yOiBcIk8gdGlwbyBkZSBhcnF1aXZvIG5cXHUwMEUzbyBcXHUwMEU5IHBlcm1pdGlkbyBcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykgeyByZXR1cm4gXCJRdWFudGlkYWRlIG1cXHUwMEUxeGltYSBkZSBhcnF1aXZvcyAoXCIuY29uY2F0KG1heEZpbGVzLCBcIikgYWxjYW5cXHUwMEU3YWRhXCIpOyB9XG59O1xuXG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVTaW1wbGlmaWVkQ2hpbmVzZSA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwi5bCG5oKo55qE5paH5Lu25pS+5Zyo6L+Z6YeMXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiXFx1NEUwQVxcdTRGMjAgXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIFxcdTRFMkFcXHU2NTg3XFx1NEVGNlwiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJcXHU0RTBBXFx1NEYyMFxcdTY1ODdcXHU0RUY2XFx1RkYxQVwiLmNvbmNhdCh1cGxvYWRlZCwgXCJcXHVGRjBDXFx1NjJEMlxcdTdFRERcXHU2NTg3XFx1NEVGNlxcdUZGMUFcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJcXHU2Q0ExXFx1NjcwOVxcdTdGM0FcXHU1QzExXFx1ODk4MVxcdTUyQTBcXHU4RjdEXFx1NzY4NFxcdTY3MDlcXHU2NTQ4XFx1NjU4N1xcdTRFRjZcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlxcdTYzQTVcXHU1M0Q3XFx1NjI0MFxcdTY3MDlcXHU2NTg3XFx1NEVGNlxcdTdDN0JcXHU1NzhCXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJcXHU1MTQxXFx1OEJCOFxcdTc2ODRcXHU3QzdCXFx1NTc4QjogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwi5LiK5Lyg5paH5Lu2XCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiXFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTU5MjdcXHU1QzBGXFx1RkYxQVwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJcXHU2NTg3XFx1Njg2MyBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwi5paH5Lu25bey5oiQ5Yqf5LiK5LygXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIuS4iuS8oOaXtuWHuumUmVwiLFxufTtcbi8qKlxuICogQ2hpbm5lc2UgdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1TaW1wbGlmaWVkQ2hpbmVzZSA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiXFx1NjU4N1xcdTY4NjNcXHU1NDBEXFx1NzlGMDogXCIsXG4gICAgICAgIHNpemU6IFwi5bC65a+4OiBcIixcbiAgICAgICAgdHlwZTogXCLmlofku7bnsbvlnos6IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIumihOWKoOi9vVwiLFxuICAgICAgICB1cGxvYWRpbmc6IFwi5LiK5LygXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwi5oiQ5YqfXCIsXG4gICAgICAgIHZhbGlkOiBcIuaOpeWPl+eahOaWh+S7tlwiLFxuICAgICAgICBkZW5pZWQ6IFwi6KKr5ouS57ud55qE5paH5Lu2XCIsXG4gICAgICAgIGVycm9yOiBcIumUmeivr1wiLFxuICAgICAgICBhYm9ydGVkOiBcIuS4reatolwiXG4gICAgfSxcbn07XG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yU2ltcGxpZmllZENoaW5lc2UgPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkge1xuICAgICAgICByZXR1cm4gXCJcXHU2NTg3XFx1NEVGNlxcdTU5MkFcXHU1OTI3XFx1MzAwMiBcXHU1MTQxXFx1OEJCOFxcdTc2ODRcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NTkyN1xcdTVDMEZcXHU0RTNBIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTtcbiAgICB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlxcdTY1ODdcXHU0RUY2XFx1N0M3QlxcdTU3OEJcXHU0RTBEXFx1NTE0MVxcdThCQjhcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykge1xuICAgICAgICByZXR1cm4gXCJcXHU1REYyXFx1OEZCRVxcdTUyMzBcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NjU3MCAoXCIuY29uY2F0KG1heEZpbGVzLCBcIilcIik7XG4gICAgfVxufTtcblxuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lVHJhZGl0aW9uYWxDaGluZXNlID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCLmiorkvaDnmoTmlofku7bmlL7lnKjpgJnoo6EgXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiXFx1NEUwQVxcdTUwQjNcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCJcXHU1MDBCXFx1NjU4N1xcdTRFRjZcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiXFx1NEUwQVxcdTUwQjNcXHU2NTg3XFx1NEVGNjogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgXFx1NjJEMlxcdTdENTVcXHU3Njg0XFx1NjU4N1xcdTRFRjZcXHVGRjFBXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiXFx1NkM5MlxcdTY3MDlcXHU3RjNBXFx1NUMxMVxcdTg5ODFcXHU0RTBBXFx1NTBCM1xcdTc2ODRcXHU2NzA5XFx1NjU0OFxcdTY1ODdcXHU0RUY2XCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJcXHU2M0E1XFx1NTNEN1xcdTYyNDBcXHU2NzA5XFx1NjU4N1xcdTRFRjZcXHU5ODVFXFx1NTc4QlwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiXFx1NTE0MVxcdThBMzFcXHU3Njg0XFx1OTg1RVxcdTU3OEJcXHVGRjFBXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwi5LiK5YKz5paH5Lu2XCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiXFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTU5MjdcXHU1QzBGXFx1RkYxQVwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCIgXFx1NjU4N1xcdTRFRjYgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIuaWh+S7tuW3suaIkOWKn+S4iuWCs1wiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCLkuIrlgrPmmYLlh7rpjK9cIixcbn07XG4vKipcbiAqIENoaW5lc2UgdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1UcmFkaXRpb25hbENoaW5lc2UgPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIlxcdTY1ODdcXHU2QTk0XFx1NTQwRFxcdTdBMzE6IFwiLFxuICAgICAgICBzaXplOiBcIuaWh+S7tuWkp+WwjzogXCIsXG4gICAgICAgIHR5cGU6IFwi5paH5Lu26aGe5Z6LOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCLpoJDliqDovIlcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIuS4iuWCs1wiLFxuICAgICAgICBzdWNjZXNzOiBcIuaIkOWKn1wiLFxuICAgICAgICB2YWxpZDogXCLmnInmlYjmlofku7ZcIixcbiAgICAgICAgZGVuaWVkOiBcIueEoeaViOaWh+S7tlwiLFxuICAgICAgICBlcnJvcjogXCLpjK/oqqRcIixcbiAgICAgICAgYWJvcnRlZDogXCLkuK3mraJcIlxuICAgIH0sXG59O1xuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvclRyYWRpdGlvbmFsQ2hpbmVzZSA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTY1ODdcXHU0RUY2XFx1NTkyQVxcdTU5MjdcXHUzMDAyIFxcdTUxNDFcXHU4QTMxXFx1NzY4NFxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU1OTI3XFx1NUMwRlxcdTcwQkEgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiXFx1NjU4N1xcdTRFRjZcXHU5ODVFXFx1NTc4QlxcdTRFMERcXHU1MTQxXFx1OEEzMVwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTVERjJcXHU5MDU0XFx1NTIzMFxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU2NTc4IChcIi5jb25jYXQobWF4RmlsZXMsIFwiKVwiKTtcbiAgICB9XG59O1xuXG52YXIgRmlsZUl0ZW1Mb2NhbGl6ZXIgPSB7XG4gICAgXCJFUy1lc1wiOiBGaWxlSXRlbVNwYW5pc2gsXG4gICAgXCJFTi1lblwiOiBGaWxlSXRlbUVuZ2xpc2gsXG4gICAgXCJGUi1mclwiOiBGaWxlSXRlbUZyZW5jaCxcbiAgICBcIklULWl0XCI6IEZpbGVJdGVtSXRhbGlhbixcbiAgICBcIlBULXB0XCI6IEZpbGVJdGVtUG9ydHVndWVzZSxcbiAgICBcIlJVLXJ1XCI6IEZpbGVJdGVtUnVzc2lhbixcbiAgICBcIlpILWNuXCI6IEZpbGVJdGVtU2ltcGxpZmllZENoaW5lc2UsXG4gICAgXCJaSC1oa1wiOiBGaWxlSXRlbVRyYWRpdGlvbmFsQ2hpbmVzZVxufTtcbi8qKlxuICogU2VjdXJlIHRyYW5zbGF0aW9uIHRocm91Z2ggYSBzZWxlY3RvclxuICogQHBhcmFtIGxvY2FsIHRoZSBMb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zIGEgQ29tcG9uZW50TG9jYWxpemVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvblxuICovXG52YXIgRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3RvciA9IGZ1bmN0aW9uIChsb2NhbCkge1xuICAgIHN3aXRjaCAobG9jYWwpIHtcbiAgICAgICAgY2FzZSBcIkVTLWVzXCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIkVTLWVzXCJdO1xuICAgICAgICBjYXNlIFwiRU4tZW5cIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgICAgIGNhc2UgXCJGUi1mclwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJGUi1mclwiXTtcbiAgICAgICAgY2FzZSBcIklULWl0XCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIklULWl0XCJdO1xuICAgICAgICBjYXNlIFwiUFQtcHRcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiUFQtcHRcIl07XG4gICAgICAgIGNhc2UgXCJSVS1ydVwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJSVS1ydVwiXTtcbiAgICAgICAgY2FzZSBcIlpILWNuXCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIlpILWNuXCJdO1xuICAgICAgICBjYXNlIFwiWkgtaGtcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiWkgtaGtcIl07XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIkVOLWVuXCJdO1xuICAgIH1cbn07XG5cbnZhciBEcm9wem9uZUxvY2FsaXplciA9IHtcbiAgICBcIkVTLWVzXCI6IERyb3B6b25lU3BhbmlzaCxcbiAgICBcIkVOLWVuXCI6IERyb3B6b25lRW5nbGlzaCxcbiAgICBcIkZSLWZyXCI6IERyb3B6b25lRnJlbmNoLFxuICAgIFwiSVQtaXRcIjogRHJvcHpvbmVJdGFsaWFuLFxuICAgIFwiUFQtcHRcIjogRHJvcHpvbmVQb3J0dWd1ZXNlLFxuICAgIFwiUlUtcnVcIjogRHJvcHpvbmVSdXNzaWFuLFxuICAgIFwiWkgtY25cIjogRHJvcHpvbmVTaW1wbGlmaWVkQ2hpbmVzZSxcbiAgICBcIlpILWhrXCI6IERyb3B6b25lVHJhZGl0aW9uYWxDaGluZXNlXG59O1xuLyoqXG4gKiBTZWN1cmUgdHJhbnNsYXRpb24gdGhyb3VnaCBhIHNlbGVjdG9yXG4gKiBAcGFyYW0gbG9jYWwgdGhlIExvY2FsaXphdGlvblxuICogQHJldHVybnMgYSBDb21wb25lbnRMb2NhbGl6ZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHRyYW5zbGF0aW9uXG4gKi9cbnZhciBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yID0gZnVuY3Rpb24gKGxvY2FsKSB7XG4gICAgc3dpdGNoIChsb2NhbCkge1xuICAgICAgICBjYXNlIFwiRVMtZXNcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiRVMtZXNcIl07XG4gICAgICAgIGNhc2UgXCJFTi1lblwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICAgICAgY2FzZSBcIkZSLWZyXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIkZSLWZyXCJdO1xuICAgICAgICBjYXNlIFwiSVQtaXRcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiSVQtaXRcIl07XG4gICAgICAgIGNhc2UgXCJQVC1wdFwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJQVC1wdFwiXTtcbiAgICAgICAgY2FzZSBcIlJVLXJ1XCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIlJVLXJ1XCJdO1xuICAgICAgICBjYXNlIFwiWkgtY25cIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiWkgtY25cIl07XG4gICAgICAgIGNhc2UgXCJaSC1oa1wiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJaSC1oa1wiXTtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgfVxufTtcblxudmFyIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXIgPSB7XG4gICAgXCJFUy1lc1wiOiBWYWxpZGF0ZUVycm9yU3BhbmlzaCxcbiAgICBcIkVOLWVuXCI6IFZhbGlkYXRlRXJyb3JFbmdsaXNoLFxuICAgIFwiRlItZnJcIjogVmFsaWRhdGVFcnJvckZyZW5jaCxcbiAgICBcIklULWl0XCI6IFZhbGlkYXRlRXJyb3JJdGFsaWFuLFxuICAgIFwiUFQtcHRcIjogVmFsaWRhdGVFcnJvclBvcnR1Z3Vlc2UsXG4gICAgXCJSVS1ydVwiOiBWYWxpZGF0ZUVycm9yUnVzc2lhbixcbiAgICBcIlpILWNuXCI6IFZhbGlkYXRlRXJyb3JTaW1wbGlmaWVkQ2hpbmVzZSxcbiAgICBcIlpILWhrXCI6IFZhbGlkYXRlRXJyb3JUcmFkaXRpb25hbENoaW5lc2UsXG59O1xuLyoqXG4gKiBTZWN1cmUgdHJhbnNsYXRpb24gdGhyb3VnaCBhIHNlbGVjdG9yXG4gKiBAcGFyYW0gbG9jYWwgdGhlIExvY2FsaXphdGlvblxuICogQHJldHVybnMgYSBDb21wb25lbnRMb2NhbGl6ZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHRyYW5zbGF0aW9uXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yTG9jYWxpemVyU2VsZWN0b3IgPSBmdW5jdGlvbiAobG9jYWwpIHtcbiAgICBpZiAoIWxvY2FsIHx8ICFbXCJFUy1lc1wiLCBcIkVOLWVuXCIsIFwiRlItZnJcIiwgXCJJVC1pdFwiLCBcIlBULXB0XCIsIFwiUlUtcnVcIiwgXCJaSC1jblwiLCBcIlpILWhrXCJdLmluY2x1ZGVzKGxvY2FsKSkge1xuICAgICAgICByZXR1cm4gVmFsaWRhdGVFcnJvckxvY2FsaXplcltcIkVOLWVuXCJdO1xuICAgIH1cbiAgICByZXR1cm4gVmFsaWRhdGVFcnJvckxvY2FsaXplcltsb2NhbF07XG59O1xuXG4vKipcbiAqIFJlYWRzIGFuIGltYWdlIChvciBvdGhlciB0eXBlKSBmaWxlIGFzIGRhdGEgVVJMIGluIGEgcHJvbWlzZSB3YXksXG4gKiBzbyB5b3UgY2FuIHVzZSBhd2FpdC5cbiAqIEl0IHdpbGwgcmV0dXJuIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIFVSTCByZXByZXNlbnRhdGlvblxuICogQHBhcmFtIGZpbGUgRmlsZSBvciBCbG9iIG9iamVjdFxuICogQHJldHVybnMgZGF0YSBVUkwgb2YgdGhlIGZpbGVcbiAqL1xudmFyIHJlYWRBc0RhdGFVUkwgPSBmdW5jdGlvbiAoZmlsZSwgb25Qcm9ncmVzcywgb25FcnJvcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVhZGVyXzEgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyXzEub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzID09PSBudWxsIHx8IG9uUHJvZ3Jlc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUHJvZ3Jlc3MoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8xLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlcl8xLnJlc3VsdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzEucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSZWFkcyBhIGZpbGUgYXMgVGV4dCBpbiBhIHByb21pc2Ugd2F5LCBzbyB5b3UgY2FuIHVzZSBhd2FpdC5cbiAqIElmIG90aGVyIGtpbmQgb2YgZmlsZSBpcyBzZW50LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCBpdCBhbnl3YXlcbiAqIGFuZCB3aWxsIHJldHVybiBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBVUkwgcmVwcmVzZW50YXRpb25cbiAqIEBwYXJhbSBmaWxlIEZpbGUgb3IgQmxvYiBvYmplY3RcbiAqIEBwYXJhbSBlbmNvZGluZyBUaGUgdHlwZSBvZiBlbmNvZGluZyBzdWNoIGFzIFwiYmFzZTY0XCJcbiAqIEByZXR1cm5zIGRhdGEgdGV4dCBvZiB0aGUgZmlsZVxuICovXG52YXIgcmVhZEFzVGV4dCA9IGZ1bmN0aW9uIChmaWxlLCBlbmNvZGluZywgb25Qcm9ncmVzcywgb25FcnJvcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVhZGVyXzIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyXzIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVhZGVyXzIucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMi5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgPT09IG51bGwgfHwgb25Qcm9ncmVzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Qcm9ncmVzcygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8yLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzIucmVhZEFzVGV4dChmaWxlLCBlbmNvZGluZyA/IGVuY29kaW5nIDogXCJiYXNlNjRcIik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbi8qKlxuICogUmVhZHMgYSBmaWxlIGFuZCByZXR1cm4gdGhlIHJhdyBiaW5hcnkgZGF0YSBmcm9tIHRoZSBmaWxlLlxuICogQHBhcmFtIGZpbGUgRmlsZSBvciBCbG9iIG9iamVjdFxuICogQHBhcmFtIGVuY29kaW5nIFRoZSB0eXBlIG9mIGVuY29kaW5nIHN1Y2ggYXMgXCJiYXNlNjRcIlxuICogQHJldHVybnMgcmF3IGJpbmFyeSBkYXRhIG9mIHRoZSBmaWxlXG4gKi9cbnZhciByZWFkQXNCaW5hcnlTdHJpbmcgPSBmdW5jdGlvbiAoZmlsZSwgb25Qcm9ncmVzcywgb25FcnJvcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVhZGVyXzMgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyXzMub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVhZGVyXzMucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMy5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgPT09IG51bGwgfHwgb25Qcm9ncmVzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Qcm9ncmVzcygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8zLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzMucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4vKipcbiAqIFJlYWRzIGEgZmlsZSBhbmQgcmV0dXJucyBhbiBBcnJheUJ1ZmZlciByZXByZXNlbnRpbmcgdGhlIGZpbGUncyBkYXRhXG4gKiBAcGFyYW0gZmlsZSBGaWxlIG9yIGJsb2Igb2JqZWN0XG4gKiBAcGFyYW0gZW5jb2RpbmcgVGhlIHR5cGUgb2YgZW5jb2Rpbmcgc3VjaCBhcyBcImJhc2U2NFwiXG4gKiBAcmV0dXJucyBBcnJheUJ1ZmZlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgZmlsZVxuICovXG52YXIgcmVhZEFzQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoZmlsZSwgb25Qcm9ncmVzcywgb25FcnJvcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVhZGVyXzQgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyXzQub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVhZGVyXzQucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfNC5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgPT09IG51bGwgfHwgb25Qcm9ncmVzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Qcm9ncmVzcygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl80Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzQucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuLyoqXG4gKiBSZXNpemUgYW4gaW1hZ2UgcmVzb2x1dGlvbiBnaXZlbiBtYXhXaWR0aCBhbmQgbWF4SGVpZ2h0XG4gKlxuICogU2hvdWxkIGJlIGNhbGxlZCB3aXRoIGF3YWl0XG4gKiBAcGFyYW0gYmFzZTY0U3RyIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGltYWUgZmlsZVxuICogQHBhcmFtIG1heFdpZHRoIHRoZSBtYXggd2lkdGggb2YgaGUgaW1hZ2VcbiAqIEBwYXJhbSBtYXhIZWlnaHQgdGhlIG1heCBoZWlnaHQgb2YgaGUgaW1hZ2VcbiAqIEByZXR1cm5zIHRoZSByZXNpemVkIGltYWdlXG4gKi9cbmZ1bmN0aW9uIHJlc2l6ZUltYWdlKGJhc2U2NFN0ciwgbWF4V2lkdGgsIG1heEhlaWdodCkge1xuICAgIGlmIChtYXhXaWR0aCA9PT0gdm9pZCAwKSB7IG1heFdpZHRoID0gMTM1OyB9XG4gICAgaWYgKG1heEhlaWdodCA9PT0gdm9pZCAwKSB7IG1heEhlaWdodCA9IDEyMDsgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgaW1nXzEgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgIGltZ18xLnNyYyA9IGJhc2U2NFN0cjtcbiAgICAgICAgICAgIGltZ18xLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgICAgICAgICAgdmFyIE1BWF9XSURUSCA9IG1heFdpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBNQVhfSEVJR0hUID0gbWF4SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IGltZ18xLndpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBpbWdfMS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKG1heFdpZHRoID4gd2lkdGggJiYgbWF4SGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYmFzZTY0U3RyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gTUFYX1dJRFRIKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgKj0gTUFYX1dJRFRIIC8gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IE1BWF9XSURUSDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodCA+IE1BWF9IRUlHSFQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICo9IE1BWF9IRUlHSFQgLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBNQVhfSEVJR0hUO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWdfMSwgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoY2FudmFzLnRvRGF0YVVSTCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQW4gZXJyb3Igb2N1cnJlZCB3aGVuIHRyeWluZyB0byBtYWtlIGEgdGh1bW5haWxcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkFuIGVycm9yIG9jdXJyZWQgd2hlbiB0cnlpbmcgdG8gbWFrZSBhIHRodW1uYWlsXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBSZXNpemUgYW4gaW1hZ2UgcmVzb2x1dGlvbiBnaXZlbiBtYXhXaWR0aCBhbmQgbWF4SGVpZ2h0XG4gKlxuICogU2hvdWxkIGJlIGNhbGxlZCB3aXRoIGF3YWl0XG4gKiBAcGFyYW0gYmFzZTY0U3RyIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGltYWUgZmlsZVxuICogQHBhcmFtIG1heFdpZHRoIHRoZSBtYXggd2lkdGggb2YgaGUgaW1hZ2VcbiAqIEBwYXJhbSBtYXhIZWlnaHQgdGhlIG1heCBoZWlnaHQgb2YgaGUgaW1hZ2VcbiAqIEByZXR1cm5zIHRoZSByZXNpemVkIGltYWdlXG4gKi9cbmZ1bmN0aW9uIGdldEltYWdlT3JpZW50YXRpb24oaW1hZ2VTb3VyY2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ2V0SW1hZ2VPcmllbnRhdGlvbiBpbWFnZVNvdXJjZVwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgIGlmICghaW1hZ2VTb3VyY2UgfHwgaW1hZ2VTb3VyY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImdldEltYWdlT3JpZW50YXRpb24gcmVqZWN0ZWRcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgcmVqZWN0KFwibGFuZHNjYXBlXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ2V0SW1hZ2VPcmllbnRhdGlvbiB0cnkgaW5pXCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgICAgIHZhciBpbWdfMSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaW1nXzEuc3JjID0gaW1hZ2VTb3VyY2U7XG4gICAgICAgICAgICBpbWdfMS5vbmVycm9yID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImdldEltYWdlT3JpZW50YXRpb24gVGhlcmUgd2FzIGEgbmUgZXJyb3IgcmVhZGluZ1wiLCBldik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KFwibGFuZHNjYXBlXCIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGltZ18xLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBpbWdfMS53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nXzEuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFwibGFuZHNjYXBlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShcInBvcnRyYWl0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IoXCJBbiBlcnJvciBvY3VycmVkIHdoZW4gdHJ5aW5nIHRvIGdldCB0aGUgaW1hZ2Ugb3JpZW50YXRpb25cIik7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBbiBlcnJvciBvY3VycmVkIHdoZW4gdHJ5aW5nIHRvIGdldCB0aGUgaW1hZ2Ugb3JpZW50YXRpb25cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxudmFyIHNldmVuemlwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MTctNzJhNTFhMTItZTQwMy00Njc1LWJmZDctMjJjMjNhZmZhNzMwLnBuZ1wiO1xudmFyIGFhYyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTE4LTcwMjZkNGYxLWVhMTYtNGVkMC04OWZkLTM3YzFhYThhYzNlZC5wbmdcIjtcbnZhciBhYncgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUxOS04NjNjNjNiNC05MTdlLTQ0NzEtOTRmZi03ZTE1NjUxY2MxNGIucG5nXCI7XG52YXIgYWNjZGIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUyMC05YmM2YWEzYi01MWM5LTRkYTItOWVmNy0zNDkxNjJiODZkMGIucG5nXCI7XG52YXIgYXZpID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MjEtZGJkNmNmMGQtZDRkNy00YjkyLWJiMjYtMTdlOGE1MWE5MzgzLnBuZ1wiO1xudmFyIGF6dyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTIyLTA3MGY0OGU4LTc4YTgtNDI5NC04ZGJiLWFhYjgxNTI1ZTE2NC5wbmdcIjtcbnZhciBibXAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjU5NS05MGFiN2Y5MC1mODdlLTQ5MDAtOTRkOS1kMGIyNjc0NWRmNDgucG5nXCI7XG52YXIgYnogPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjU5Ny1lMjg1YWQ1Yy02MTNhLTQ2NzktYTI3MC00OTNlNWJlNGZmZDkucG5nXCI7XG52YXIgYnoyID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1OTgtNjIzYzQxMGEtMDg0YS00Mzk1LWE0NDgtMjExYjJmZjYxY2ZlLnBuZ1wiO1xudmFyIGNkYSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjAwLThiNzBhMDA3LTUxMmQtNDI1Mi05YzY2LWVhYmQzZGRkNjU3My5wbmdcIjtcbnZhciBjc2ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwMS1lNjJlNWQxYS1kOGEyLTQ0NzUtYTE0Zi04NTkyMmNlYzkyNzIucG5nXCI7XG52YXIgY3NzID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDItNGM3NzI5MzQtZjYwOC00ZjAxLTg0NTktYzQ2MjJjZWU4YWQ1LnBuZ1wiO1xudmFyIGNzdiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjA0LWI1YjAxOWZlLTU3MmUtNDc3ZS05MmMyLTM3NjlhNDhhMTMwNC5wbmdcIjtcbnZhciBkb2N4ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDYtNzE1Y2NiNjYtNDcwMi00ZjdkLTliMDktYWM5M2JhMTdiNjQzLnBuZ1wiO1xudmFyIGRyYXdpbyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjA4LWJjYWU5ZDU3LThlNTQtNDg4Yy05MGM0LTQ5NTJhZTUzMGI1ZS5wbmdcIjtcbnZhciBlb3QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYxOC0zOTdkNmJkMi05ZmRhLTQzZWQtYTEzNS1jYjQwMzg4YzM1YWYucG5nXCI7XG52YXIgZXB1YiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjIwLTI1ODZiYTQwLWM1ODMtNDU4OS1iMWE0LThiYjViMjU4YjQ0ZC5wbmdcIjtcbnZhciBmcmVlYXJjID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjEtM2I5NWZiNjQtMjUzMy00Y2NjLWFiY2QtYmQyYmViYTU3MmU5LnBuZ1wiO1xudmFyIGdpZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjIyLWFmNzA1YTBjLTJiMjUtNGJhNy04YWI2LWJkNjllYzk3ZjdlMi5wbmdcIjtcbnZhciBnemlwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjQtODkxNDFhNDYtNjRlNC00ZmEwLWJmNjktNTRhMGViNGQ0OGM5LnBuZ1wiO1xudmFyIGh0bWwgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyNS0xYjhmMjY1Mi0xZGUwLTQ0NzUtOGMxMi03ZGE0YTk5NzNmZmIucG5nXCI7XG52YXIgaWNhbGVuZGFyID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjYtMzg2OTk3MDUtMWU2Zi00YmNhLTk4NGItMDMxNjdiMjM2ZmFhLnBuZ1wiO1xudmFyIGphdmEgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1MC1mMTE2NjI0Ni1iMzYxLTRjMzAtYTA0ZS05NzgxYzU1NWQxNGEucG5nXCI7XG52YXIgamFyID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTAtZjExNjYyNDYtYjM2MS00YzMwLWEwNGUtOTc4MWM1NTVkMTRhLnBuZ1wiO1xudmFyIGphdmFzY3JpcHQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1Mi00NTYyOTQyZS1hYWVhLTQ2NmMtOTY4Zi0zODBmZmZhYmYzZjkucG5nXCI7XG52YXIganBlZyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjUzLTA0ODdlN2UyLTFlZTMtNDllMi04Y2ZlLTNlMjBmMWY3NDkwYS5wbmdcIjtcbnZhciBqc29uID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTYtNmU5NmM4MTUtZTRlMi00ZmZkLTlkNzEtNTdlOWNjMjQ1MGJjLnBuZ1wiO1xudmFyIGpzb25sZCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjU4LTVkMjdkM2MyLTM5NGYtNDNmYi1iNTEyLTliNDE0YTI1Nzg3NS5wbmdcIjtcbnZhciBtaWRpID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTktOThmM2VmNmUtYjlmMy00YjZkLWIxOGYtNDY5YjUzMzRiYTI3LnBuZ1wiO1xudmFyIG1wMyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjYxLWE1NDg0NTUzLTA2YzctNGZmYS1hOGY5LTk2YjU3YjFiMDM0NC5wbmdcIjtcbnZhciBtcDQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2Mi0wNWFkMTU5Ny1kNWU1LTRlZmEtODMzZS0yODc2ZTk2NmE3NDUucG5nXCI7XG52YXIgbXBlZyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjYzLTkwYzU4OTU1LWY3ZmItNGJkYi1hYzUzLTkyNjY3ZDE2ZDRhMy5wbmdcIjtcbnZhciBtcGtnID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjQtOWE3NTMwZTctNmQ3OC00ZWYzLWExNzYtMjBjZjdmNTdiNTU1LnBuZ1wiO1xudmFyIG9jdGV0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjYtYWIzYzUwNWQtYjJjMC00MTc3LTlhMDYtYWVkNWQ5YzM5ZWU0LnBuZ1wiO1xudmFyIG9kcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjY3LTZjN2RjYmNjLThkODMtNDFhMi04ZTBhLTg1YjA5ZTI3OTFhZS5wbmdcIjtcbnZhciBvZHMgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2OC05ZjI0NmU5MS1jZjJlLTQ5Y2YtOTYxNy1lMWZiYjcxYWJiYmIucG5nXCI7XG52YXIgb2R0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjktNDYxMTM3NjItODRkMS00YjMyLTk0NDEtYjAxMzhjZTE3YTVkLnBuZ1wiO1xudmFyIG9nYSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTQ1ODM1MzY0LTIwNTQ1MDlkLTM0NDgtNGQzNC05MjFmLTczZGQ2ZTI5N2ZjNy5wbmdcIjtcbnZhciBvZ3YgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzE0NTgzNTM2Ny0xOTE3MmJmOC1jZDVhLTRjYmUtYjUxMi1kMGRlMWQ5MWYyNjkucG5nXCI7XG52YXIgb2d4ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xNDU4MzUzNzMtYTU3ZWYwZjUtMzk2OC00ODNiLTlmNTUtNmQ2N2U3ZjFkY2VhLnBuZ1wiO1xudmFyIG9wdXMgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3MC0wZjk2ZTc3MC1jZWRjLTQ2MzUtYTVmOS1jZjk3ODk0YzFkN2EucG5nXCI7XG52YXIgb3RmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzEtMDJhZDM1ZWYtZWMzYS00YTY1LWFiZDUtNWJmNzk0ZGZjZjdiLnBuZ1wiO1xudmFyIHBkZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjcyLTNhODU2ZmRhLTgyM2QtNDk5Ny1iODAyLWM3YzY0MGU2ZWY0NC5wbmdcIjtcbnZhciBwaHAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3My0wYzQ0MDlhYi03NTRlLTQ2MTktOGNmYS0xNzlkMGNjZjFiZDkucG5nXCI7XG52YXIgcG5nID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzQtZmRiNTZkMDItNTg0NS00OWI3LTg0NjItNjM1N2JjOTYzNDY0LnBuZ1wiO1xudmFyIHBwdHggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3NS1jODc5NjQ1ZC1hY2I0LTQxYTYtYWIzYy00ZTZjMjA0OGJhZGIucG5nXCI7XG52YXIgcHNkID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2ODUtNGUzMjdjNGMtYTQwOS00YjgzLWIzNmEtOGQ4ODkzNmIzMTRiLnBuZ1wiO1xudmFyIHB5dGhvbiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njg4LThlODJmYWU0LTNhOWItNDljMC1iZjk5LTc3MTg5NTI1NTE0Yy5wbmdcIjtcbnZhciB0YXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY4OS1mZTFmZWY5Zi1kMmRiLTQ1NWItOGY0Yi0wOWFjZDA5NWY1NzEucG5nXCI7XG52YXIgcmFyID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2ODktZmUxZmVmOWYtZDJkYi00NTViLThmNGItMDlhY2QwOTVmNTcxLnBuZ1wiO1xudmFyIHJlYWN0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTEtZDQ3MjU3NmItZWM2YS00MzMyLWFjZDItZGQ2YTAwYjcyOTUyLnBuZ1wiO1xudmFyIHJ0ZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjkzLTlkNDM1NzFlLTBjODYtNDM4Zi1iMjQ3LWUyY2I0MmUxOWUwNi5wbmdcIjtcbnZhciBzYXNzID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTQtNGU2NjFkNmEtMTExOC00NDFlLThiYzMtYzUyZmNiMjEzM2I2LnBuZ1wiO1xudmFyIHNoID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTctMWQ4MmQ3MjQtMzViNi00ZjA2LTg0N2EtM2M1OWE1ZGVkYTZlLnBuZ1wiO1xudmFyIHN3ZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njk4LTE5Mzg0MjMwLWRiZDctNGUwNS1iYzY5LWVmNDUzN2I2YWFlMy5wbmdcIjtcbnZhciB0ZXh0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTktNTk5M2E0ODItMDRmNC00OTE1LWIxMDUtOTAzN2Y1MjdjZjYxLnBuZ1wiO1xudmFyIHRpZmYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwMC1jMjM0NjFjOC02ODE5LTQ2ZTEtYWVjZC0wYTFmOGQzNTA3YmIucG5nXCI7XG52YXIgdHRmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDEtYzgwNDRjMDktOGQ5NS00YWYxLTk0MTAtNjY3NjEwMDFkN2RhLnBuZ1wiO1xudmFyIHR5cGVzY3JpcHQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwMi01OTI5NDMzNy1lZDk5LTQzMDItYmFkZC0zMTZiMmMxZmY2MmYucG5nXCI7XG52YXIgdnNkID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDQtOGZkNTFlN2MtYWZhMi00N2EzLWFiMmYtZDBiY2QwZWNhZTlmLnBuZ1wiO1xudmFyIHZ1ZSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA1LTMzMjk0ZGExLTVjMGYtNDlmNy1iODkwLWU0ODU3Y2VjMGE2ZC5wbmdcIjtcbnZhciB3YXYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNi0yMmY4MDVkMC0zOWQ0LTQ5NGItODI0ZS00N2RjNzVkMDVlYjcucG5nXCI7XG52YXIgd2VibSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA3LWU2MWE4NGRlLWQzOTYtNGRiZi04ZDFiLTFkNmVlMTllMWFjOC5wbmdcIjtcbnZhciB3ZWJhID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDctZTYxYTg0ZGUtZDM5Ni00ZGJmLThkMWItMWQ2ZWUxOWUxYWM4LnBuZ1wiO1xudmFyIHdlYnAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwOC0yMWQwOTZkZC03MTQ4LTQwYWEtOTdmMS1jYmIwOTkzMzk3NDAucG5nXCI7XG52YXIgd21hID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDktODExZDRlOTAtM2NmYS00MDQ0LWE5NTYtYWVkYTljNjdmYzkyLnBuZ1wiO1xudmFyIHdtdiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzEwLWM1NDc5YzZjLTAyNDktNDU0Mi1hZGFkLTQ4YjBlZjQwYjc3NS5wbmdcIjtcbnZhciB3b2ZmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTEtMTUyNGEzZTctM2UzMy00ODIyLWEzNGYtZmYzMjM1NDA0MDQ1LnBuZ1wiO1xudmFyIHhsc3ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxMi0xN2UyYzQ5MS1mNmU0LTQ1ODYtYWVmNi0wNmJjYzVmNGIwZTUucG5nXCI7XG52YXIgeG1sID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTUtMjA0YjVhOGItOWM1YS00YmFjLTgyOTQtOTIzN2ViYzE2MDg5LnBuZ1wiO1xudmFyIHh1bCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzE2LTY0NTExZDIwLTU4Y2ItNDVhOC04NWRmLWY0ZDk0MDhiNDY5ZC5wbmdcIjtcbnZhciB6aXAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxOC1hODQ5OTMzMy02MjgyLTQ4MjAtYWExZi00ZDEzM2ViNTQ2NDgucG5nXCI7XG5cbi8qKlxuICogTG9va3MgZm9yIHRoZSBmaXJzdCBmaWxlIGV4dGVuc2lvblxuICogQHBhcmFtIGZpbGVOYW1lIGZpbGUgbmFtZVxuICogQHJldHVybnMgdGhlIGZpbGUgbmFtZSBleHRlbnNpb25cbiAqL1xudmFyIGdldEV4dCA9IGZ1bmN0aW9uIChmaWxlTmFtZSkge1xuICAgIHZhciByZSA9IC8oPzpcXC4oW14uXSspKT8kLztcbiAgICB2YXIgcmVzdWx0ID0gcmUuZXhlYyhmaWxlTmFtZSk7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0WzFdO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxufTtcblxudmFyIERFRl9HRU5fTUlNRSA9IFwib2N0ZXRcIjtcbi8qKlxuICpcbiAqIEBwYXJhbSB0YWlsTWltZVxuICogQHJldHVybnNcbiAqL1xudmFyIGF1ZGlvU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJhYWNcIjogcmV0dXJuIFwiYWFjXCI7XG4gICAgICAgIGNhc2UgXCJtaWRpXCI6IHJldHVybiBcIm1pZGlcIjtcbiAgICAgICAgY2FzZSBcIngtbWlkaVwiOiByZXR1cm4gXCJtaWRpXCI7XG4gICAgICAgIGNhc2UgXCJtcGVnXCI6IHJldHVybiBcIm1wZWdcIjsgLy9tcDNcbiAgICAgICAgY2FzZSBcIm9nZ1wiOiByZXR1cm4gXCJvZ2FcIjtcbiAgICAgICAgY2FzZSBcIm9wdXNcIjogcmV0dXJuIFwib3B1c1wiO1xuICAgICAgICBjYXNlIFwid2F2XCI6IHJldHVybiBcIndhdlwiO1xuICAgICAgICBjYXNlIFwid2VibVwiOiByZXR1cm4gXCJ3ZWJtXCI7XG4gICAgICAgIC8vY2FzZSBcIjNncHBcIjogcmV0dXJuIFwidGhyZWVncFwiO1xuICAgICAgICAvL2Nhc2UgXCIzZ3BwMlwiOiByZXR1cm4gXCJ0aHJlZWdwXCI7XG4gICAgICAgIC8vY2FzZSBcIm1wM1wiOiByZXR1cm4gXCJtcDNcIjtcbiAgICAgICAgY2FzZSBcIndtYVwiOiByZXR1cm4gXCJ3bWFcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xudmFyIHRleHRTZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcImNzc1wiOiByZXR1cm4gXCJjc3NcIjtcbiAgICAgICAgY2FzZSBcImNzdlwiOiByZXR1cm4gXCJjc3ZcIjtcbiAgICAgICAgY2FzZSBcImh0bWxcIjogcmV0dXJuIFwiaHRtbFwiO1xuICAgICAgICBjYXNlIFwiY2FsZW5kYXJcIjogcmV0dXJuIFwiaWNhbGVuZGFyXCI7XG4gICAgICAgIGNhc2UgXCJqYXZhc2NyaXB0XCI6IHJldHVybiBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgY2FzZSBcIngtamF2YXNjcmlwdFwiOiByZXR1cm4gXCJqYXZhc2NyaXB0XCI7XG4gICAgICAgIGNhc2UgXCJwbGFpblwiOiByZXR1cm4gXCJ0ZXh0XCI7XG4gICAgICAgIGNhc2UgXCJ4bWxcIjogcmV0dXJuIFwieG1sXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbnZhciBpbWFnZVNlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwiYm1wXCI6IHJldHVybiBcImJtcFwiO1xuICAgICAgICBjYXNlIFwiZ2lmXCI6IHJldHVybiBcImdpZlwiO1xuICAgICAgICAvLyBjYXNlIFwidm5kLm1pY3Jvc29mdC5pY29uXCI6IHJldHVybiBcImljb1wiO1xuICAgICAgICAvL2Nhc2UgXCJpY29cIjogcmV0dXJuIFwiaWNvXCI7XG4gICAgICAgIGNhc2UgXCJqcGdcIjogcmV0dXJuIFwianBlZ1wiO1xuICAgICAgICBjYXNlIFwianBlZ1wiOiByZXR1cm4gXCJqcGVnXCI7XG4gICAgICAgIGNhc2UgXCJwbmdcIjogcmV0dXJuIFwicG5nXCI7XG4gICAgICAgIC8vY2FzZSBcInN2Zyt4bWxcIjogcmV0dXJuIFwic3ZnXCI7XG4gICAgICAgIC8vY2FzZSBcInN2Z1wiOiByZXR1cm4gXCJzdmdcIjtcbiAgICAgICAgY2FzZSBcInRpZmZcIjogcmV0dXJuIFwidGlmZlwiO1xuICAgICAgICBjYXNlIFwid2VicFwiOiByZXR1cm4gXCJ3ZWJwXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbnZhciBmb250U2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJvdGZcIjogcmV0dXJuIFwib3RmXCI7XG4gICAgICAgIGNhc2UgXCJ0dGZcIjogcmV0dXJuIFwidHRmXCI7XG4gICAgICAgIGNhc2UgXCJ3b2ZmXCI6IHJldHVybiBcIndvZmZcIjtcbiAgICAgICAgY2FzZSBcIndvZmYyXCI6IHJldHVybiBcIndvZmZcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xudmFyIHZpZGVvU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJ4LW1zdmlkZW9cIjogcmV0dXJuIFwiYXZpXCI7XG4gICAgICAgIGNhc2UgXCJtc3ZpZGVvXCI6IHJldHVybiBcImF2aVwiO1xuICAgICAgICBjYXNlIFwiYXZpXCI6IHJldHVybiBcImF2aVwiO1xuICAgICAgICBjYXNlIFwibXA0XCI6IHJldHVybiBcIm1wNFwiO1xuICAgICAgICBjYXNlIFwibXBlZ1wiOiByZXR1cm4gXCJtcGVnXCI7XG4gICAgICAgIGNhc2UgXCJvZ2dcIjogcmV0dXJuIFwib2d2XCI7XG4gICAgICAgIGNhc2UgXCJtcDJ0XCI6IHJldHVybiBcIm1wMnRcIjtcbiAgICAgICAgY2FzZSBcIndtdlwiOiByZXR1cm4gXCJ3bXZcIjtcbiAgICAgICAgY2FzZSBcIndlYm1cIjogcmV0dXJuIFwid2VibVwiO1xuICAgICAgICAvLyBjYXNlIFwiM2dwcFwiOiByZXR1cm4gXCJ0aHJlZWdwXCI7XG4gICAgICAgIC8vIGNhc2UgXCIzZ3BwMlwiOiByZXR1cm4gXCJ0aHJlZWdwMlwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gdGFpbE1pbWVcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBhcHBsaWNhdGlvblNlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwieC1hYml3b3JkXCI6IHJldHVybiBcImFid1wiO1xuICAgICAgICBjYXNlIFwiYWJpd29yZFwiOiByZXR1cm4gXCJhYndcIjtcbiAgICAgICAgY2FzZSBcIngtZnJlZWFyY1wiOiByZXR1cm4gXCJhcmNcIjtcbiAgICAgICAgY2FzZSBcImZyZWVhcmNcIjogcmV0dXJuIFwiYXJjXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQuYW1hem9uLmVib29rXCI6IHJldHVybiBcImF6d1wiO1xuICAgICAgICBjYXNlIFwib2N0ZXQtc3RyZWFtXCI6IHJldHVybiBcIm9jdGV0XCI7XG4gICAgICAgIGNhc2UgXCJ4LWJ6aXBcIjogcmV0dXJuIFwiYnpcIjtcbiAgICAgICAgY2FzZSBcIngtYnppcDJcIjogcmV0dXJuIFwiYnoyXCI7XG4gICAgICAgIGNhc2UgXCJiemlwXCI6IHJldHVybiBcImJ6XCI7XG4gICAgICAgIGNhc2UgXCJiemlwMlwiOiByZXR1cm4gXCJiejJcIjtcbiAgICAgICAgY2FzZSBcIngtY2RmXCI6IHJldHVybiBcImNkYVwiO1xuICAgICAgICBjYXNlIFwibXNhY2Nlc3NcIjogcmV0dXJuIFwiYWNjZGJcIjtcbiAgICAgICAgY2FzZSBcImNzaFwiOiByZXR1cm4gXCJjc2hcIjtcbiAgICAgICAgY2FzZSBcIngtY3NoXCI6IHJldHVybiBcImNzaFwiO1xuICAgICAgICBjYXNlIFwidm5kLm1zLWZvbnRvYmplY3RcIjogcmV0dXJuIFwiZW90XCI7XG4gICAgICAgIGNhc2UgXCJlcHViK3ppcFwiOiByZXR1cm4gXCJlcHViXCI7XG4gICAgICAgIGNhc2UgXCJnemlwXCI6IHJldHVybiBcImd6aXBcIjtcbiAgICAgICAgY2FzZSBcImphdmEtYXJjaGl2ZVwiOiByZXR1cm4gXCJqYXJcIjtcbiAgICAgICAgY2FzZSBcIngtamF2YXNjcmlwdFwiOiByZXR1cm4gXCJqYXZhc2NyaXB0XCI7XG4gICAgICAgIGNhc2UgXCJqc29uXCI6IHJldHVybiBcImpzb25cIjtcbiAgICAgICAgY2FzZSBcImxkK2pzb25cIjogcmV0dXJuIFwianNvbmxkXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQuYXBwbGUuaW5zdGFsbGVyK3htbFwiOiByZXR1cm4gXCJtcGtnXCI7XG4gICAgICAgIGNhc2UgXCJvZ2dcIjogcmV0dXJuIFwib2d4XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQucmFyXCI6IHJldHVybiBcInJhclwiO1xuICAgICAgICBjYXNlIFwicnRmXCI6IHJldHVybiBcInJ0ZlwiO1xuICAgICAgICBjYXNlIFwieC1zaFwiOiByZXR1cm4gXCJzaFwiO1xuICAgICAgICBjYXNlIFwic2hcIjogcmV0dXJuIFwic2hcIjtcbiAgICAgICAgY2FzZSBcIngtc2hvY2t3YXZlLWZsYXNoXCI6IHJldHVybiBcInN3ZlwiO1xuICAgICAgICBjYXNlIFwieC10YXJcIjogcmV0dXJuIFwidGFyXCI7XG4gICAgICAgIGNhc2UgXCJ4LWh0dHBkLXBocFwiOiByZXR1cm4gXCJwaHBcIjtcbiAgICAgICAgY2FzZSBcInZuZC52aXNpb1wiOiByZXR1cm4gXCJ2c2RcIjtcbiAgICAgICAgY2FzZSBcInhodG1sK3htbFwiOiByZXR1cm4gXCJ4aHRtbFwiO1xuICAgICAgICBjYXNlIFwieG1sXCI6IHJldHVybiBcInhtbFwiO1xuICAgICAgICBjYXNlIFwidm5kLm1vemlsbGEueHVsK3htbFwiOiByZXR1cm4gXCJ4dWxcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI6IHJldHVybiBcImRvY3hcIjtcbiAgICAgICAgY2FzZSBcIm1zd29yZFwiOiByZXR1cm4gXCJkb2N4XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiOiByZXR1cm4gXCJ4bHN4XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI6IHJldHVybiBcInBwdHhcIjtcbiAgICAgICAgY2FzZSBcInZuZC5tcy1wb3dlcnBvaW50XCI6IHJldHVybiBcInBwdHhcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI6IHJldHVybiBcIm9kcFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0XCI6IHJldHVybiBcIm9kdFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiOiByZXR1cm4gXCJvZHNcIjtcbiAgICAgICAgY2FzZSBcInppcFwiOiByZXR1cm4gXCJ6aXBcIjtcbiAgICAgICAgY2FzZSBcIngtemlwLWNvbXByZXNzZWRcIjogcmV0dXJuIFwiemlwXCI7XG4gICAgICAgIGNhc2UgXCJwZGZcIjogcmV0dXJuIFwicGRmXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbi8qKlxuICogU2VsZWN0cyB0byB3aWNoIG1pbWUgdHlwZSB0aGUgbWltZSB0eXBlIGdpdmVuIGJlbG9uZ3MgdG9cbiAqIEBwYXJhbSBtaW1lVHlwZSBtaW1lIHR5cGUgdG8gYmUgc2VhcmNoZWRcbiAqIEByZXR1cm5zIHRoZSBnZW5lcmljIHR5cGUsXG5pZiBub3QgZm91bmQgaXQgcmV0dXJuIFwib2N0ZXRcIiB0aGF0IG1lYW5zIGdlbmVyaWMgYmluYXJ5IGZpbGVcbiAqL1xudmFyIG1pbWVTZWxlY3RvciA9IGZ1bmN0aW9uIChtaW1lVHlwZSkge1xuICAgIC8vIGxldCBnZW5lcmljTWltZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICghbWltZVR5cGUgfHwgIW1pbWVUeXBlLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbiAgICB2YXIgaGVhZGVyTWltZSA9IG1pbWVUeXBlLnNwbGl0KFwiL1wiKVswXTtcbiAgICB2YXIgdGFpbE1pbWUgPSBtaW1lVHlwZS5zcGxpdChcIi9cIilbMV07XG4gICAgLyoqXG4gICAgICogRXZlcnkgbWltZXR5cGUgdGhhdFxuICAgICAqIHN0YXJ0cyB3aXRoOiBcImFwcGxpY2F0aW9uLy4uLi5cIlxuICAgICAqL1xuICAgIHN3aXRjaCAoaGVhZGVyTWltZSkge1xuICAgICAgICBjYXNlIFwiYXBwbGljYXRpb25cIjogcmV0dXJuIGFwcGxpY2F0aW9uU2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwiYXVkaW9cIjogcmV0dXJuIGF1ZGlvU2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwidmlkZW9cIjogcmV0dXJuIHZpZGVvU2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwidGV4dFwiOiByZXR1cm4gdGV4dFNlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgY2FzZSBcImltYWdlXCI6IHJldHVybiBpbWFnZVNlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgY2FzZSBcImZvbnRcIjogcmV0dXJuIGZvbnRTZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbi8qKlxuICogU2VsZWN0cyB0byB3aWNoIG1hcHBlZCBleHRlbnNpb25cbiAqIHRoZSBnaXZlbiBleGVuc2lvbiBiZWxvbmdzIHRvXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvblxuICogQHJldHVybnNcbiAqL1xudmFyIGV4dGVuc2lvblNlbGVjdG9yID0gZnVuY3Rpb24gKGV4dGVuc2lvbikge1xuICAgIHZhciBnZW5lcmljTWltZSA9IFwib2N0ZXRcIjtcbiAgICBpZiAoZXh0ZW5zaW9uICYmIGV4dGVuc2lvbiAhPT0gXCJcIikge1xuICAgICAgICBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwiemlwXCIpIHx8IGV4dGVuc2lvbi5pbmNsdWRlcyhcInJhclwiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInppcFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcImRvY1wiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImRvY3hcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJ4bHNcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ4bHN4XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwiZHJhd2lvXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiZHJhd2lvXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwicHNkXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicHNkXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwiY3N2XCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiY3N2XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcImpzeFwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicmVhY3RcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwicHlcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInB5dGhvblwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJ2dWVcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInZ1ZVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJqYXZhXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJqYXZhXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInRzXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ0eXBlc2NyaXB0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInNhc3NcIiB8fCBleHRlbnNpb24gPT09IFwic2Nzc1wiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwic2Fzc1wiO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBnZW5lcmljTWltZTtcbn07XG4vKipcbiAqIENoYWNrIGZvciBleHRlbnRpb24gd2hldGhlciB0aGUgZmlsZSBpcyBjb2RlIG9zIG5vdFxuICogQHBhcmFtIGV4dGVuc2lvblxuICogQHJldHVybnNcbiAqL1xudmFyIGNoZWNrSXNDb2RlID0gZnVuY3Rpb24gKGV4dGVuc2lvbikge1xuICAgIHZhciBnZW5lcmljTWltZSA9IFwidGV4dFwiO1xuICAgIGlmIChleHRlbnNpb24gJiYgZXh0ZW5zaW9uICE9PSBcIlwiKSB7XG4gICAgICAgIGlmIChleHRlbnNpb24gPT09IFwianN4XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJyZWFjdFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJweVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicHl0aG9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInZ1ZVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwidnVlXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcImphdmFcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImphdmFcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwidHNcIiB8fCBleHRlbnNpb24gPT09IFwidHN4XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ0eXBlc2NyaXB0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcImpzXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJqYXZhc2NyaXB0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInhtbFwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwieG1sXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInBocFwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicGhwXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdlbmVyaWNNaW1lO1xufTtcbi8qKlxuICogTG9va3MgZm9yIGEgc3VpdGFibGUgZmlsZSBpY29uXG4gKiBJZiBub3QgZm91bmQsIHJldHVybnMgb2N0ZXQtc3RyZWFtIHVybFxuICogQHBhcmFtIHByb3BzIG1pbWUgYW5kIGV4dGVuc2lvbiBmcm9tIGZpbGUgdG8gc2VhcmNoXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0IGZpbGUgaWNvXG4gKi9cbnZhciBnZXRVUkxGaWxlSWNvID0gZnVuY3Rpb24gKGZpbGUsIGN1c3RvbUljb25zKSB7XG4gICAgdmFyIHJlc3VsdCA9IFwiZmFsbEJhY2tcIjtcbiAgICAvL2lmIG5vdCBmaWxlLCByZXR1cm4gb2N0ZXRcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgcmVzdWx0ID0gREVGX0dFTl9NSU1FO1xuICAgICAgICBpZiAoY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zLmZhbGxCYWNrKVxuICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiBjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnMuZmFsbEJhY2ssIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgICAgICByZXR1cm4geyB1cmw6IG1pbWVVcmxMaXN0W3Jlc3VsdF0sIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbWltZVNlbGVjdG9yKGZpbGUudHlwZSk7XG4gICAgfVxuICAgIC8vSWYgcGxhaW4gdGV4dFxuICAgIHZhciBleHRlbnRpb24gPSBnZXRFeHQoZmlsZS5uYW1lKTtcbiAgICBpZiAocmVzdWx0ID09PSBcInRleHRcIikge1xuICAgICAgICByZXN1bHQgPSBjaGVja0lzQ29kZShleHRlbnRpb24pO1xuICAgIH1cbiAgICAvL0lmIG9jdGV0IHN0cmVhbSByZXN1bHQsIHNlY29uZCBjaGFuY2U6IGZpbGUgZXh0ZW50aW9uXG4gICAgaWYgKHJlc3VsdCA9PT0gREVGX0dFTl9NSU1FKSB7XG4gICAgICAgIHJlc3VsdCA9IGV4dGVuc2lvblNlbGVjdG9yKGV4dGVudGlvbik7XG4gICAgfVxuICAgIHZhciBjdXN0b21VcmwgPSBjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnNbcmVzdWx0XTtcbiAgICBpZiAoY3VzdG9tVXJsICE9PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB7IHVybDogY3VzdG9tVXJsLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbiAgICByZXR1cm4geyB1cmw6IG1pbWVVcmxMaXN0W3Jlc3VsdF0sIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xufTtcbi8qKlxuICogTG9va3MgZm9yIGEgc3VpdGFibGUgZmlsZSBpY29uXG4gKiBAcGFyYW0gcHJvcHMgbWltZSBhbmQgZXh0ZW5zaW9uIGZyb20gZmlsZSB0byBzZWFyY2hcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgZmlsZSBpY28sIGlmIG5vdCBmb3VuZCwgdHVybnMgb2N0ZXQtc3RyZWFtIHVybFxuICovXG52YXIgZ2V0VVJMRmlsZUljb0Zyb21OYW1lQW5kVHlwZSA9IGZ1bmN0aW9uIChuYW1lLCB0eXBlLCBjdXN0b21JY29ucykge1xuICAgIHZhciByZXN1bHQgPSBcIm9jdGV0XCI7XG4gICAgLy9pZiBub3QgbmFtIGFuZCB0eXBlLCByZXR1cm4gb2N0ZXRcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmVzdWx0ID0gREVGX0dFTl9NSU1FO1xuICAgICAgICBpZiAoY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zLmZhbGxCYWNrKVxuICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiBjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnMuZmFsbEJhY2ssIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgICAgICByZXR1cm4geyB1cmw6IG1pbWVVcmxMaXN0W3Jlc3VsdF0sIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gbWltZVNlbGVjdG9yKHR5cGUpO1xuICAgIH1cbiAgICAvL0lmIHBsYWluIHRleHRcbiAgICB2YXIgZXh0ZW50aW9uID0gZ2V0RXh0KG5hbWUpO1xuICAgIGlmIChyZXN1bHQgPT09IFwidGV4dFwiKSB7XG4gICAgICAgIHJlc3VsdCA9IGNoZWNrSXNDb2RlKGV4dGVudGlvbik7XG4gICAgfVxuICAgIC8vSWYgb2N0ZXQgc3RyZWFtIHJlc3VsdCwgc2Vjb25kIGNoYW5jZTogZmlsZSBleHRlbnRpb25cbiAgICBpZiAocmVzdWx0ID09PSBERUZfR0VOX01JTUUpIHtcbiAgICAgICAgcmVzdWx0ID0gZXh0ZW5zaW9uU2VsZWN0b3IoZXh0ZW50aW9uKTtcbiAgICB9XG4gICAgdmFyIGN1c3RvbVVybCA9IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29uc1tyZXN1bHRdO1xuICAgIGlmIChjdXN0b21VcmwgIT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHsgdXJsOiBjdXN0b21VcmwsIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG59O1xudmFyIG1pbWVVcmxMaXN0ID0ge1xuICAgIGFhYzogYWFjLFxuICAgIGFjY2RiOiBhY2NkYixcbiAgICBhYnc6IGFidyxcbiAgICBhcmM6IGZyZWVhcmMsXG4gICAgYXZpOiBhdmksXG4gICAgYXp3OiBhencsXG4gICAgb2N0ZXQ6IG9jdGV0LFxuICAgIGJtcDogYm1wLFxuICAgIGJ6OiBieixcbiAgICBiejI6IGJ6MixcbiAgICBjZGE6IGNkYSxcbiAgICBjc2g6IGNzaCxcbiAgICBjc3M6IGNzcyxcbiAgICBjc3Y6IGNzdixcbiAgICBkb2N4OiBkb2N4LFxuICAgIGRyYXdpbzogZHJhd2lvLFxuICAgIGVvdDogZW90LFxuICAgIGVwdWI6IGVwdWIsXG4gICAgZ3ppcDogZ3ppcCxcbiAgICBnaWY6IGdpZixcbiAgICBodG1sOiBodG1sLFxuICAgIC8vaWNvOiBpY28sXG4gICAgaWNhbGVuZGFyOiBpY2FsZW5kYXIsXG4gICAgamFyOiBqYXIsXG4gICAganBlZzoganBlZyxcbiAgICBqYXZhc2NyaXB0OiBqYXZhc2NyaXB0LFxuICAgIGpzb246IGpzb24sXG4gICAganNvbmxkOiBqc29ubGQsXG4gICAgbWlkaTogbWlkaSxcbiAgICAvLyAganM6IGpzLFxuICAgIG1wMzogbXAzLFxuICAgIG1wNDogbXA0LFxuICAgIG1wZWc6IG1wZWcsXG4gICAgbXBrZzogbXBrZyxcbiAgICBtcDJ0OiBvY3RldCxcbiAgICBvZHA6IG9kcCxcbiAgICBvZHM6IG9kcyxcbiAgICBvZHQ6IG9kdCxcbiAgICBvZ2E6IG9nYSxcbiAgICBvZ3Y6IG9ndixcbiAgICBvZ3g6IG9neCxcbiAgICBvcHVzOiBvcHVzLFxuICAgIG90Zjogb3RmLFxuICAgIHBuZzogcG5nLFxuICAgIHBkZjogcGRmLFxuICAgIHBocDogcGhwLFxuICAgIHBwdHg6IHBwdHgsXG4gICAgcHNkOiBwc2QsXG4gICAgcmFyOiByYXIsXG4gICAgcnRmOiBydGYsXG4gICAgc2Fzczogc2FzcyxcbiAgICBzaDogc2gsXG4gICAgLy9zdmc6IHN2ZyxcbiAgICBzd2Y6IHN3ZixcbiAgICB0YXI6IHRhcixcbiAgICB0aWZmOiB0aWZmLFxuICAgIHR0ZjogdHRmLFxuICAgIC8vdHM6IHRzLFxuICAgIHR5cGVzY3JpcHQ6IHR5cGVzY3JpcHQsXG4gICAgdGV4dDogdGV4dCxcbiAgICB2c2Q6IHZzZCxcbiAgICB3YXY6IHdhdixcbiAgICB3ZWJhOiB3ZWJhLFxuICAgIHdlYm06IHdlYm0sXG4gICAgd2VicDogd2VicCxcbiAgICB3b2ZmOiB3b2ZmLFxuICAgIHdtYTogd21hLFxuICAgIHdtdjogd212LFxuICAgIHhodG1sOiBodG1sLFxuICAgIHhsc3g6IHhsc3gsXG4gICAgeG1sOiB4bWwsXG4gICAgeHVsOiB4dWwsXG4gICAgemlwOiB6aXAsXG4gICAgLy8gdGhyZWVncDogdGhyZWVncCxcbiAgICBzZXZlbnppcDogc2V2ZW56aXAsXG4gICAgcHl0aG9uOiBweXRob24sXG4gICAgamF2YTogamF2YSxcbiAgICByZWFjdDogcmVhY3QsXG4gICAgdnVlOiB2dWUsXG4gICAgZmFsbEJhY2s6IG9jdGV0LFxufTtcblxuLyoqXG4gKiBBIGNsYXNzIGRlZmluaXRpb24gZm9yIEV4dEZpbGUuXG4gKiBUaGlzIGNsYXNzIGhhcyB0aGUgcHVycG9zZSB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgaW5zdGFuY2VzXG4gKiBvZiBhbiBFeHRGaWxlIGZvciBwZXJmb3JtaW5nIGNvbXBsZXggb3BlcmF0aW9ucyB0aGF0IGNhbm5vdCBiZVxuICogYWNjb21wbGlzaGVkIGp1c3QgYnkgdXNpbmcgdGhlIEV4dEZpbGUgdHlwZS5cbiAqIEZvciBpbnN0YW5jZSwgaXQgY2FuIGhlbHAgaW4gY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHNvbWUgYXR0cmlidXRlc1xuICogYWNyb3NzIGRpZmZlcmVudCBzY29wZXMgdGhhbmtzIHRvIG1lbW9yeSByZWZlcmVuY2UuXG4gKi9cbnZhciBFeHRGaWxlSW5zdGFuY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRXh0RmlsZUluc3RhbmNlKGV4dEZpbGUpIHtcbiAgICAgICAgdmFyIGlkID0gZXh0RmlsZS5pZCwgZmlsZSA9IGV4dEZpbGUuZmlsZSwgbmFtZSA9IGV4dEZpbGUubmFtZSwgc2l6ZSA9IGV4dEZpbGUuc2l6ZSwgdHlwZSA9IGV4dEZpbGUudHlwZSwgaW1hZ2VVcmwgPSBleHRGaWxlLmltYWdlVXJsLCB2YWxpZCA9IGV4dEZpbGUudmFsaWQsIGVycm9ycyA9IGV4dEZpbGUuZXJyb3JzLCB1cGxvYWRNZXNzYWdlID0gZXh0RmlsZS51cGxvYWRNZXNzYWdlLCB1cGxvYWRTdGF0dXMgPSBleHRGaWxlLnVwbG9hZFN0YXR1cywgcHJvZ3Jlc3MgPSBleHRGaWxlLnByb2dyZXNzLCB4aHIgPSBleHRGaWxlLnhociwgZXh0cmFEYXRhID0gZXh0RmlsZS5leHRyYURhdGEsIGV4dHJhVXBsb2FkRGF0YSA9IGV4dEZpbGUuZXh0cmFVcGxvYWREYXRhLCBzZXJ2ZXJSZXNwb25zZSA9IGV4dEZpbGUuc2VydmVyUmVzcG9uc2UsIGRvd25sb2FkVXJsID0gZXh0RmlsZS5kb3dubG9hZFVybCwgdmlkZW9VcmwgPSBleHRGaWxlLnZpZGVvVXJsO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuaW1hZ2VVcmwgPSBpbWFnZVVybDtcbiAgICAgICAgdGhpcy52YWxpZCA9IHZhbGlkO1xuICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgdGhpcy51cGxvYWRTdGF0dXMgPSB1cGxvYWRTdGF0dXM7XG4gICAgICAgIHRoaXMudXBsb2FkTWVzc2FnZSA9IHVwbG9hZE1lc3NhZ2U7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgICAgdGhpcy54aHIgPSB4aHI7XG4gICAgICAgIHRoaXMuZXh0cmFEYXRhID0gZXh0cmFEYXRhO1xuICAgICAgICB0aGlzLmV4dHJhVXBsb2FkRGF0YSA9IGV4dHJhVXBsb2FkRGF0YTtcbiAgICAgICAgdGhpcy5zZXJ2ZXJSZXNwb25zZSA9IHNlcnZlclJlc3BvbnNlO1xuICAgICAgICB0aGlzLmRvd25sb2FkVXJsID0gZG93bmxvYWRVcmw7XG4gICAgICAgIHRoaXMudmlkZW9VcmwgPSB2aWRlb1VybDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogbWV0aG9kIHVuZGVyIGNvbnN0cnVjdGlvblxuICAgICAqL1xuICAgIC8qICBwcml2YXRlIHN0YXRpYyBrYW11aUZpbGUoKSB7XG4gXG4gICAgIH1cbiAgKi9cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgYWxsIG5vbiB1bmRlZmluZWQgYXR0cmlidXRlcyBmcm9tIEV4dEZpbGVJbnN0YW5jZSB0byBhIG5ldyBFeHRGaWxlIG9iamVjdFxuICAgICAqIEBwYXJhbSBleHRGaWxlSW5zdGFuY2UgdGhlIGluc3RhbmNlIG9mIEV4dEZpbGVcbiAgICAgKiBAcmV0dXJucyBhbiBFeHRGaWxlIG9iamVjdFxuICAgICAqL1xuICAgIEV4dEZpbGVJbnN0YW5jZS50b0V4dEZpbGUgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJiZWZvcmUgdG9FeHRGaWxlKClcIiwgZXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgdmFyIGV4dEZpbGVDbG9uZSA9IHt9OyAvLyB0aGUgbmV3IGVtcHR5IG9iamVjdFxuICAgICAgICB2YXIgZXh0RmlsZUluc3RhbmNlS2V5cyA9IE9iamVjdC5rZXlzKGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgICAgIHZhciBleHRGaWxlSW5zdGFuY2VWYWx1ZXMgPSBPYmplY3QudmFsdWVzKGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgICAgIC8vIGxldCdzIGNvcHkgYWxsIHVzZXIgcHJvcGVydGllcyBpbnRvIGl0XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0RmlsZUluc3RhbmNlVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gZXh0RmlsZUluc3RhbmNlVmFsdWVzW2ldO1xuICAgICAgICAgICAgdmFyIGN1cnJLZXkgPSBleHRGaWxlSW5zdGFuY2VLZXlzW2ldO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUNsb25lW2N1cnJLZXldID0gY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJhZnRlciB0b0V4dEZpbGUoKVwiLCBleHRGaWxlQ2xvbmUpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiY3VycmVudCBleHRGaWxlQ2xvbmUga2V5c1wiLE9iamVjdC5rZXlzKCBleHRGaWxlQ2xvbmUpLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBleHRGaWxlQ2xvbmU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb3BpZXMgYWxsIG5vbiB1bmRlZmluZWQgYXR0cmlidXRlcyBmcm9tIEV4dEZpbGVJbnN0YW5jZSB0byBhIG5ldyBFeHRGaWxlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyBhbiBFeHRGaWxlIG9iamVjdFxuICAgICAqL1xuICAgIEV4dEZpbGVJbnN0YW5jZS5wcm90b3R5cGUudG9FeHRGaWxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gRXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSh0aGlzKTtcbiAgICB9O1xuICAgIHJldHVybiBFeHRGaWxlSW5zdGFuY2U7XG59KCkpO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbnZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XG5cbnZhciBFeHRGaWxlTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFeHRGaWxlTWFuYWdlcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSBpZCBjb3VudGVyIGFuZCByZXR1cm5zIHRoZSBuZXh0IGlkIGF2YWlsYWJsZS5cbiAgICAgKiBAcmV0dXJucyB0aGUgbmV4dCBpbnRlZ2VyIGlkIGF2YWlsYWJsZVxuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLmdldE5leHRJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgRXh0RmlsZU1hbmFnZXIubmV4dElkKys7XG4gICAgICAgIHJldHVybiBFeHRGaWxlTWFuYWdlci5uZXh0SWQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGEgZHVpIGZpbGUgbGlzdCBnaXZlbiBhbiBpZFxuICAgICAqIEBwYXJhbSBpZCBpZCBvZiB0aGUgZmlsZUxpc3RcbiAgICAgKiBAcGFyYW0gZXh0RmlsZXMgbGlzdCBvZiBEdWlGaWxlcyBmb3Jpbml0aWFsaXppbmcgdGhlIGFycmF5XG4gICAgICogQHJldHVybnMgdGhlIGlkIG9mIHRoZSBmaWxlTGlzdFxuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0ID0gZnVuY3Rpb24gKGlkLCBleHRGaWxlc0luc3RhbmNlcykge1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0c1tpZF0gPSBfX3NwcmVhZEFycmF5KFtdLCBleHRGaWxlc0luc3RhbmNlcywgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBJRFxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IElkIGFzb2NpYXRlZCB3aXRoIGEgRHVpRklsZSBsaXN0XG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuY3JlYXRlRmlsZUxpc3RNYXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBuZXh0SWQgPSBFeHRGaWxlTWFuYWdlci5nZXROZXh0SWQoKTtcbiAgICAgICAgRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW25leHRJZF0gPSBbXTtcbiAgICAgICAgcmV0dXJuIG5leHRJZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSBsaXN0IG1hcFxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IElkIGFzb2NpYXRlZCB3aXRoIGEgRHVpRklsZSBsaXN0XG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIucmVtb3ZlRmlsZUxpc3RNYXAgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0c1tpZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBvbiByZW1vdmVcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIGRyb3B6b25lXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0ID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbaWRdO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIG9uIGdldEV4dEZpbGVJbnN0YW5jZUxpc3RcIiwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyhyZXBsYWNlcykgdGhlIGV4dEZpbGUgbGlzdCBvbiBwcmVwYXJpbmcgc3RhZ2UgYW5kIHJldHVybnMgdGhlIG5ldyBhcnJheS5cbiAgICAgKiBSZW1vdmVzIHRoZSBub24gdmFsaWQgZmlsZXMgaWYgY2xlYW5PblVwbG9hZCBpcyB0cnVlIGFuZCB2YWxpZGF0ZUZpbGVzIGlzIGFsc28gdHJ1ZVxuICAgICAqIFRoZW4gc2V0cyBvbiBwcmVwYXJpbmcgc3RhZ2UgYWxsIGZpbGVzIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGNyZWl0ZXJpYTpcbiAgICAgKiBJZiB0aGV1cGxvYWRTdGF0dXMgaXMgZGlmZXJlbnQgdGhhbiBcInN1Y2Vzc1wiIEFORFxuICAgICAqIHRoZW4sIHVwZGF0ZSB0aGUgZmlsZXMgb24gcHJlcGFyaW5nIHN0YWdlLiBPdGhlcndpc2Uga2VlcCB0aGUgZXh0RmlsZSBwcm9wcy5cbiAgICAgKiBGaW5hbGx5LCB1cGRhdGVzIHRoZSBFeHRGaWxlSW5zdGFuY2UgbGlzdCBvbiBFeHRGaWxlTWFuYWdlci5cbiAgICAgKiBAcGFyYW0gZHJvcHpvbmVJZCB0aGUgaWQgdG8gYWNjZXNzIHRoZSByaWdodCBsaXN0XG4gICAgICogQHBhcmFtIGxvY2FsRmlsZXMgdGhlIGxpc3Qgb2YgZXh0RmlsZXNcbiAgICAgKiBAcGFyYW0gdmFsaWRhdGVGaWxlcyBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgdmFsaWRhdGlvbiBpcyBhY3RpdmUgb3Igb8K/bm90XG4gICAgICogQHBhcmFtIGNsZWFuT25VcGxvYWQgZmxhZyB0byBkZXRlcm1pbmUgd2h0aGVyIHRvIGNsZW5hIHRoZSBsaXN0IG9vZiBub24gdmFsaWQgZmlsZXMgb3Igbm90XG4gICAgICogQHJldHVybnMgYSBsaXN0IG9mIEV4dEZpbGVJbnN0YW5jZVxuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0TWFwUHJlcGFyaW5nID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGxvY2FsRmlsZXMsIHZhbGlkYXRlRmlsZXMsIGNsZWFuT25VcGxvYWQpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIGJlZm9yZSBpZlwiLCBkcm9wem9uZUlkLCBsb2NhbEZpbGVzLCBjbGVhbk9uVXBsb2FkKTtcbiAgICAgICAgaWYgKCEodHlwZW9mIGRyb3B6b25lSWQgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGRyb3B6b25lSWQgPT09IFwic3RyaW5nXCIpKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIGJlZm9yZSB0cnlcIiwgbG9jYWxGaWxlcywgY2xlYW5PblVwbG9hZCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0RXh0TGlzdCA9IFtdO1xuICAgICAgICAgICAgLy9pbml0aWFsaXplcyB0aGUgZXh0RmlsZUxJbnN0YW5jZSBsaXN0XG4gICAgICAgICAgICB2YXIgdGVtTG9jYWxGaWxlcyA9IF9fc3ByZWFkQXJyYXkoW10sIGxvY2FsRmlsZXMsIHRydWUpO1xuICAgICAgICAgICAgLy9yZW1vdmUgbm9uIHZhbGlkcyBpZiBjbGVhbk9uVXBsb2FkIGlzIHRydWUgYW5kIHZhbGlkYXRlRmlsZXMgaXMgYWxzbyB0cnVlXG4gICAgICAgICAgICBpZiAoY2xlYW5PblVwbG9hZCAmJiB2YWxpZGF0ZUZpbGVzKSB7XG4gICAgICAgICAgICAgICAgLy8gY2xlYW4gb24gVXBsb2FkIGlzIHRydWUsIHNvIG5vbiB2YWxpZCBmaWxlcyBtdXN0IGJlIHJlbW92ZWRcbiAgICAgICAgICAgICAgICB0ZW1Mb2NhbEZpbGVzID0gdGVtTG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGV4dEZpbGUpIHsgcmV0dXJuIGV4dEZpbGUudmFsaWQ7IH0pO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ0ZW1Mb2NhbEZpbGVzIGZpbHRlclwiLCB0ZW1Mb2NhbEZpbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBhZnRlciByZW1vdmUgbm9uIHZhbGlkc1wiLCB0ZW1Mb2NhbEZpbGVzKTtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZUZpbGVzKSB7XG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdGlvbiBmbGFnIHdhcyBzZXQgdG8gdHJ1ZSwgc28gb25seSB2YWxpZD10cnVlIGZpbGVzIHdpbGwgYmUgc2V0IHRvIFwicHJlcGFyaW5nXCJcbiAgICAgICAgICAgICAgICAvL3NvLCBvbmx5IHZhbGlkIGZpbGVzIHdhcyBrZXB0IGluIHRoZSB0ZW1Mb2NhbGZpbGVzIGFycmF5XG4gICAgICAgICAgICAgICAgLy9ub3cgc2V0IHRoZSBwcmVwYXJpbmcgc3RhdGUgb25seSBmb3IgZmlsZXMgd2l0aCB1cGxvYWRTdGF0dXMgIT09IFwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRGaWxlLnVwbG9hZFN0YXR1cyAhPT0gXCJzdWNjZXNzXCIgJiYgZXh0RmlsZS52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInByZXBhcmluZ1wiIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKHt9LCBleHRGaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBhbGwgZmlsZXMgd2lsbCBiZSBzZXQgdG8gXCJwcmVwYXJpbmdcIiB3aGV0aGVyIHRoZSB2YWxpZCB2YWx1ZVxuICAgICAgICAgICAgICAgIC8vIGV4Y2VwdCB0aG9zZSBmaWxlcyB3aXRoIHVwbG9hZFN0YXR1cyA9PT1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXMgPVxuICAgICAgICAgICAgICAgICAgICB0ZW1Mb2NhbEZpbGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0RmlsZS51cGxvYWRTdGF0dXMgIT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwicHJlcGFyaW5nXCIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIGV4dEZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyByZXN1bHRcIiwgdGVtTG9jYWxGaWxlcyk7XG4gICAgICAgICAgICAvL2NvbnZlcnRvIHRvIE9iamVjdCBpbnN0YW5jZXNcbiAgICAgICAgICAgIHJlc3VsdEV4dExpc3QgPSB0ZW1Mb2NhbEZpbGVzLm1hcChmdW5jdGlvbiAoRikgeyByZXR1cm4gbmV3IEV4dEZpbGVJbnN0YW5jZShGKTsgfSk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgUkVTVUxUIHJlc3VsdEV4dExpc3RcIiwgcmVzdWx0RXh0TGlzdCk7XG4gICAgICAgICAgICB2YXIgcmVzdWx0U2V0ID0gRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3QoZHJvcHpvbmVJZCwgcmVzdWx0RXh0TGlzdCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgUkVTVUxUIHJlc3VsdFNldFwiLCByZXN1bHRTZXQpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdEV4dExpc3Q7XG4gICAgICAgICAgICAvLyByZXR1cm4gRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW2Ryb3B6b25lSWRdO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIEVycm9yIG9uIGdldCBMaXN0XCIsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICogVXBkYXRlcyhyZXBsYWNlcykgdGhlIGV4dEZpbGUgbGlzdCBvbiBwcmVwYXJpbmcgc3RhZ2UgYW5kIHJldHVybnMgdGhlIG5ldyBhcnJheS5cbiAqIFJlbW92ZXMgdGhlIG5vbiB2YWxpZCBmaWxlcyBpZiBjbGVhbk9uVXBsb2FkIGlzIHRydWUgYW5kIHZhbGlkYXRlRmlsZXMgaXMgYWxzbyB0cnVlXG4gKiBUaGVuIHNldHMgb24gcHJlcGFyaW5nIHN0YWdlIGFsbCBmaWxlcyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBjcmVpdGVyaWE6XG4gKiBJZiB0aGV1cGxvYWRTdGF0dXMgaXMgZGlmZXJlbnQgdGhhbiBcInN1Y2Vzc1wiIEFORFxuICogdGhlbiwgdXBkYXRlIHRoZSBmaWxlcyBvbiBwcmVwYXJpbmcgc3RhZ2UuIE90aGVyd2lzZSBrZWVwIHRoZSBleHRGaWxlIHByb3BzLlxuICogRmluYWxseSwgdXBkYXRlcyB0aGUgRXh0RmlsZUluc3RhbmNlIGxpc3Qgb24gRXh0RmlsZU1hbmFnZXIuXG4gKiBAcGFyYW0gZHJvcHpvbmVJZCB0aGUgaWQgdG8gYWNjZXNzIHRoZSByaWdodCBsaXN0XG4gKiBAcGFyYW0gbG9jYWxGaWxlcyB0aGUgbGlzdCBvZiBleHRGaWxlc1xuICogQHBhcmFtIHZhbGlkYXRlRmlsZXMgZmxhZyB0aGF0IGluZGljYXRlcyB0aGF0IHZhbGlkYXRpb24gaXMgYWN0aXZlIG9yIG/Cv25vdFxuICogQHBhcmFtIGNsZWFuT25VcGxvYWQgZmxhZyB0byBkZXRlcm1pbmUgd2h0aGVyIHRvIGNsZW5hIHRoZSBsaXN0IG9vZiBub24gdmFsaWQgZmlsZXMgb3Igbm90XG4gKiBAcmV0dXJucyBhIGxpc3Qgb2YgRXh0RmlsZUluc3RhbmNlXG4gKi9cbiAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdE1hcFByZXBhcmluZzIgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlcywgY2xlYW5PblVwbG9hZCkge1xuICAgICAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdChkcm9wem9uZUlkLCBsb2NhbEZpbGVzLm1hcChmdW5jdGlvbiAoRikgeyByZXR1cm4gbmV3IEV4dEZpbGVJbnN0YW5jZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgRiksIHsgdXBsb2FkU3RhdHVzOiBcInByZXBhcmluZ1wiIH0pKTsgfSkpO1xuICAgICAgICByZXR1cm4gRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdChkcm9wem9uZUlkKTtcbiAgICB9O1xuICAgIEV4dEZpbGVNYW5hZ2VyLm5leHRJZCA9IDA7XG4gICAgRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzID0ge307XG4gICAgcmV0dXJuIEV4dEZpbGVNYW5hZ2VyO1xufSgpKTtcblxudmFyIGNyZWF0ZVVwbG9hZENvbmZpZyA9IGZ1bmN0aW9uICh1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwsIGNsZWFub25VcGxvYWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgIHVwbG9hZExhYmVsOiB1cGxvYWRMYWJlbCxcbiAgICAgICAgY2xlYW5vblVwbG9hZDogY2xlYW5vblVwbG9hZFxuICAgIH07XG59O1xuXG4vKipcbiAqIEEgc3ludGV0aWMgZmlsZSBjcmVhdG9yLlxuICogVmVyeSB1c2VmdWwgZm9yIHRlc3RzXG4gKi9cbnZhciBTeW50aGV0aWNGaWxlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN5bnRoZXRpY0ZpbGUoKSB7XG4gICAgfVxuICAgIC8qKlxuICpcbiAqIEBwYXJhbSBuYW1lIHRoZSBmaWxlIG5hbWVcbiAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAqIEBwYXJhbSB0eXBlIHRoZSBmaWxlIHR5cGVcbiAqIEByZXR1cm5zXG4gKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUgPSBmdW5jdGlvbiAobmFtZSwgc2l6ZSwgdHlwZSkge1xuICAgICAgICB2YXIgZmlsZSA9IG5ldyBGaWxlKFtdLCBuYW1lLCB7IHR5cGU6IHR5cGUgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWxlLCBcInNpemVcIiwge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9hYWMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYWNjX2F1ZGlvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmFhY1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vYWFjXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYWJ3ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImFiaXdvcmQtZmlsZS13aXRoLWxhcmdlLW5hbWUuYWJ3XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWFiaXdvcmRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9mcmVlYXJjID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImZyZWVhcmMtZmlsZS13aXRoLWxhcmdlLW5hbWUuYXJjXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWZyZWVhcmNcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9hdmkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYXZpLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmF2aVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8veC1tc3ZpZGVvXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYXp3ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImFtYXpvbl9raW5kbGVfZWJvb2stZmlsZS13aXRoLWxhcmdlLW5hbWUuYXp3XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2N0ZXQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYmluYXJ5X29jdGV0X3N0cmVhbS1maWxlLXdpdGgtbGFyZ2UtbmFtZS5iaW5cIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2JtcCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJiaXRfbWFwLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmJtcFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvYm1wXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYnogPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwieF9iemlwLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmJ6XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWJ6aXBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9iejIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwieF9iemlwXzItZmlsZS13aXRoLWxhcmdlLW5hbWUuYnoyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfY2RhID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImNkX2F1ZGlvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmNkYVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1jZGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc2ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5jc2hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtY3NoXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfY3NzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuY3NzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2Nzc1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzdiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmNzdlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9jc3ZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9kb2MgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5kb2NcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL21zd29yZFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2RvY3ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5kb2N4XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2VvdCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmVvdFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3RcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9lcHViID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZXB1YlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vZXB1Yit6aXBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9nemlwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZ3pcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2d6aXBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9naWYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5naWZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL2dpZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2h0bSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmh0bVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9odG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfaHRtbCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmh0bWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvaHRtbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ljbyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmljb1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfaWNhbGVuZGFyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaWNzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2NhbGVuZGFyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfamFyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuamFyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmVcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qcGVnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuanBlZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvanBlZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpwZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvanBlZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuanNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvamF2YXNjcmlwdFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzb24gPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc29uXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanNvbmxkID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuanNvbmxkXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9sZCtqc29uXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbWlkID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubWlkXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9taWRpXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeF9taWQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5taWRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3gtbWlkaVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21pZGkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5taWRpXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby94LW1pZGlcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94X21pZGkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5taWRpXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby94LW1pZGlcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9tanMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5tanNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvamF2YXNjcmlwdFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wMyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1wM1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vbXBlZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wNCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1wNFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vbXA0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbXBlZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1wZWdcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL21wZWdcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGtnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXBrZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZHBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2RzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2RzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2R0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2R0XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ2EgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZ2FcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL29nZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29ndiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9ndlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vb2dnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2d4ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2d4XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9vZ2dcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vcHVzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub3B1c1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vb3B1c1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX290ZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm90ZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiZm9udC9vdGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9wbmcgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wbmdcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3BuZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BkZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBkZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vcGRmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcGhwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucGhwXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BwdCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBwdFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9wcHR4ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucHB0eFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3JhciA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnJhclwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLnJhclwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3J0ZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnJ0ZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vcnRmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfc2ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5zaFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1zaFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3N2ZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnN2Z1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2Uvc3ZnK3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3N3ZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnN3ZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90YXIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50YXJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtdGFyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdGlmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUudGlmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS90aWZmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdGlmZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnRpZmZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3RpZmZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90cyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJtcDJ0X3ZpZGVvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnRzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby9tcDJ0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdHRmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUudHRmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJmb250L3R0ZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RleHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50eHRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90eXBlc2NyaXB0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInR5cGVzY3JpcHQtZmlsZS13aXRoLWxhcmdlLW5hbWUudHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV92c2QgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwibXNfdmlzaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUudnNkXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQudmlzaW9cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93YXYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwid2F2X2F1ZGlvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLndhdlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vd2F2XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd2ViYSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ3ZWJfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUud2ViYVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vd2VibVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYm0gPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwid2ViX3ZpZGVvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLndlYm1cIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL3dlYm1cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIndlYl9pbWFnZS1maWxlLXdpdGgtbGFyZ2UtbmFtZS53ZWJwXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS93ZWJwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd29mZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLndvZmZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImZvbnQvd29mZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dvZmYyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUud29mZjJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImZvbnQvd29mZjJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94aHRtbCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnhodG1sXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94bHN4ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUueGxzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94bHMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54bHN4XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3htbCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ4bWwtZmlsZS13aXRoLWxhcmdlLW5hbWUueG1sXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94bWxfdHh0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInhtbF9wbGFpbl90ZXh0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnhtbFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeHVsID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUueHVsXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfemlwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInppcC1maWxlLXdpdGgtbGFyZ2UtbmFtZS56aXBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCIzZ3BfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuM2dwXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby8zZ3BwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfM2dwMiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCIzZ3AyX3ZpZGVvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLjNnMlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vM2dwcDJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfYSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCIzZ3BfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuM2dwXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby8zZ3BwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfM2dwX3YgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiM2dwX2F1ZGlvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLjNncDJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvLzNncHAyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfN3ogPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwic2V2ZW5femlwLWZpbGUtd2l0aC1sYXJnZS1uYW1lLjd6XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9weXRob24gPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwicHl0aG9uLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnB5XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfamF2YSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJqYXZhLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmphdmFcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9yZWFjdCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJyZWFjdF9qc3gtZmlsZS13aXRoLWxhcmdlLW5hbWUuanN4XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdnVlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInZ1ZS1maWxlLXdpdGgtbGFyZ2UtbmFtZS52dWVcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZha2UgKHN5bnRoZXRpYykgZmlsZXNcbiAgICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplIGZvciBhbGwgc3ludGhldGljIGZpbGVzXG4gICAgICogQHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIGZpbGUgaWNvbiBwcmV2aWV3IHN1cHBvcnRlZCBmaWxlc1xuICAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZUxpc3RNaXNjZWxhbmlvdXMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB2YXIgbGlzdEZpbGUgPSBbXTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9hYWMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2FidyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZnJlZWFyYyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYXZpKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9hencoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29jdGV0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9ibXAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2J6KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9iejIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NkYShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfY3NoKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc3Moc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzdihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZG9jKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9kb2N4KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9lb3Qoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2VwdWIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2d6aXAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2dpZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfaHRtKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9odG1sKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9pY28oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ljYWxlbmRhcihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfamFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qcGVnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qcGcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qc29uKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qc29ubGQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21pZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbWlkaShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeF9taWQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hfbWlkaShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbWpzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcDMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wNChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbXBlZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbXBrZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2RwKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2dhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ3Yoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29neChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb3B1cyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb3RmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9wbmcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BkZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcGhwKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9wcHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BwdHgoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3JhcihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcnRmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9zaChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfc3ZnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9zd2Yoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RhcihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdGlmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWZmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90cyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdHRmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90ZXh0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90eXBlc2NyaXB0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV92c2Qoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dhdihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd2ViYShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd2VibShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd2VicChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd29mZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd29mZjIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hodG1sKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94bHN4KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94bHMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3htbChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeG1sX3R4dChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeHVsKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV96aXAoc2l6ZSkpO1xuICAgICAgICAvL2xpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfM2dwKHNpemUpKTtcbiAgICAgICAgLy9saXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncDIoc2l6ZSkpO1xuICAgICAgICAvL2xpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfM2dwX2Eoc2l6ZSkpO1xuICAgICAgICAvL2xpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfM2dwX3Yoc2l6ZSkpO1xuICAgICAgICAvL2xpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfN3ooc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3B5dGhvbihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfamF2YShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcmVhY3Qoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3Z1ZShzaXplKSk7XG4gICAgICAgIHJldHVybiBsaXN0RmlsZTtcbiAgICB9O1xuICAgIHJldHVybiBTeW50aGV0aWNGaWxlO1xufSgpKTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLyBTSE9SVENVVFNcbi8qKlxuICogQ3JlYXRlIGEgbGlzdCBvZiBzeW50aGV0aWMgZmlsZXMgd2l0aCBkaWZmZXJlbnQgbWltZSB0eXBlc1xuICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZSBmb3IgZWFjaCBzeW50aGV0aWMgZmlsZVxuICogQHJldHVybnMgYSBsaXN0IG9mIHN5bnRoZXRpYyBmaWxlXG4gKi9cbnZhciBjcmVhdGVMaXN0T2ZNdWx0aVR5cGVGaWxlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlTGlzdE1pc2NlbGFuaW91cyhzaXplKTtcbn07XG4vKipcbiAqIENyZWF0ZXMgYSBzeW50aGV0aWMgZmlsZS5cbiAqIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBwbmcgaW1hZ2UgZmlsZVxuICogQHBhcmFtIG5hbWUgdGhlIGZpbGUgbmFtZSB0byBzaG93LiBCeSBkZWZhdWx0IGlzIHNldCB0byBcInBuZy1pbWFnZS1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wbmdcIlxuICogQHBhcmFtIHNpemUgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGZpbGUuIEJ5IGRlZmF1bHQgdGhpcyB2YWx1ZSBpcyBzZXQgdG8gNDU1NTU1XG4gKiBAcGFyYW0gdHlwZSB0aGUgbWltZSB0eXBlIG9mIHRoZSBmaWxlLiBCeSBkZWZhdWx0IGlzIHNldCB0byBcImltYWdlL3BuZ1wiXG4gKiBAcmV0dXJuc1xuICovXG52YXIgY3JlYXRlU3ludGhldGljRmlsZSA9IGZ1bmN0aW9uIChuYW1lLCBzaXplLCB0eXBlKSB7XG4gICAgaWYgKG5hbWUgPT09IHZvaWQgMCkgeyBuYW1lID0gXCJwbmctaW1hZ2UtZmlsZS13aXRoLWxhcmdlLW5hbWUucG5nXCI7IH1cbiAgICBpZiAoc2l6ZSA9PT0gdm9pZCAwKSB7IHNpemUgPSA0NTU1NTU7IH1cbiAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSBcImltYWdlL3BuZ1wiOyB9XG4gICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShuYW1lLCBzaXplLCB0eXBlKTtcbn07XG5cbi8qKlxuICogQW4gaWQgZ2VuZXJhdG9yIGZvciBGaWxlSXRlbXNcbiAqL1xudmFyIEZpbGVJZEdlbmVyYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGaWxlSWRHZW5lcmF0b3IoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluY3JlYXNlcyB0aGUgaWQgY291bnRlciBhbmQgcmV0dXJucyB0aGUgbmV4dCBpZCBhdmFpbGFibGUuXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgaW50ZWdlciBpZCBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBGaWxlSWRHZW5lcmF0b3IubmV4dElkKys7XG4gICAgICAgIHJldHVybiBGaWxlSWRHZW5lcmF0b3IubmV4dElkO1xuICAgIH07XG4gICAgRmlsZUlkR2VuZXJhdG9yLm5leHRJZCA9IDA7XG4gICAgcmV0dXJuIEZpbGVJZEdlbmVyYXRvcjtcbn0oKSk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGZpbGVMaXN0IGludG8gYW4gYXJyYXkgb2Ygc2VwYXJhdGVkIEV4dEZpbGUgb2JqZWN0c1xuICogQHBhcmFtIGZpbGVMaXN0IHRoZSBGaWxlTGlzdCBvYmplY3QgZ2l2ZW4gYnkgaW5wdXQoZXZlbnQudGFyZ2V0LmZpbGVzKSBvciBkcm9wIG9wZXJhdGlvbiAoZXZlbnQuZGF0YVRyYW5zZmVyKVxuICogQHJldHVybnMgYW4gYXJyYXkgb2YgRXh0RmlsZSBvYmplY3RzXG4gKi9cbnZhciBmaWxlTGlzdFRvRXh0RmlsZUFycmF5ID0gZnVuY3Rpb24gKGZpbGVMaXN0KSB7XG4gICAgdmFyIGV4dEZpbGVBcnJheSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBmID0gdm9pZCAwOyAoZiA9IGZpbGVMaXN0W2ldKTsgaSsrKSB7XG4gICAgICAgIGV4dEZpbGVBcnJheS5wdXNoKHsgaWQ6IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSwgZmlsZTogZiwgbmFtZTogZi5uYW1lLCBzaXplOiBmLnNpemUsIHR5cGU6IGYudHlwZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dEZpbGVBcnJheTtcbn07XG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaWxlTGlzdCBpbnRvIGFuIGFycmF5IG9mIHNlcGFyYXRlZCBFeHRGaWxlIGluc3RhbmNlc1xuICogQHBhcmFtIGZpbGVMaXN0IHRoZSBGaWxlTGlzdCBvYmplY3QgZ2l2ZW4gYnkgaW5wdXQgKGV2ZW50LnRhcmdldC5maWxlcykgb3IgZHJvcCBvcGVyYXRpb24gKGV2ZW50LmRhdGFUcmFuc2ZlcilcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIEV4dEZpbGUgaW5zdGFuY2VzXG4gKi9cbnZhciBmaWxlTGlzdFRvRXh0RmlsZUluc3RhbmNlQXJyYXkgPSBmdW5jdGlvbiAoZmlsZUxpc3QpIHtcbiAgICB2YXIgZXh0RmlsZUFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGYgPSB2b2lkIDA7IChmID0gZmlsZUxpc3RbaV0pOyBpKyspIHtcbiAgICAgICAgZXh0RmlsZUFycmF5LnB1c2gobmV3IEV4dEZpbGVJbnN0YW5jZSh7IGlkOiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCksIGZpbGU6IGYsIG5hbWU6IGYubmFtZSwgc2l6ZTogZi5zaXplLCB0eXBlOiBmLnR5cGUgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gZXh0RmlsZUFycmF5O1xufTtcblxudmFyIGlzVmFsaWRhdGVBY3RpdmUgPSBmdW5jdGlvbiAoYWNjZXB0LCBtYXhGaWxlU2l6ZSwgbWF4RmlsZXMsIHZhbGlkYXRvcikge1xuICAgIHJldHVybiAoKGFjY2VwdCAhPT0gdW5kZWZpbmVkICYmIGFjY2VwdCAhPT0gbnVsbCkgfHxcbiAgICAgICAgKG1heEZpbGVTaXplICE9PSB1bmRlZmluZWQgJiYgbWF4RmlsZVNpemUgIT09IG51bGwpIHx8XG4gICAgICAgIChtYXhGaWxlcyAhPT0gdW5kZWZpbmVkICYmIG1heEZpbGVzICE9PSBudWxsKSB8fFxuICAgICAgICAodmFsaWRhdG9yICE9PSB1bmRlZmluZWQgJiYgdmFsaWRhdG9yICE9PSBudWxsKSk7XG59O1xuXG4vKipcbiAqIFRoZSBtYXggc2l6ZSBvZiB0aGUgd29yZCBpbiBjaGFyYWN0ZXJzXG4gKi9cbnZhciBERUZBVUxUX01BWF9TSVpFX1dPUkQgPSAzMDtcbi8qKlxuICpcbiAqIEBwYXJhbSB3b3JkIHRoZSB3b3JkIHRvIGJlIHNocmlua2VkXG4gKiBAcmV0dXJucyB0aGUgc2hyaW5rZWQgd29yZFxuICovXG52YXIgc2hyaW5rV29yZCA9IGZ1bmN0aW9uICh3b3JkLCBjYXJkKSB7XG4gICAgaWYgKHdvcmQgPT09IHZvaWQgMCkgeyB3b3JkID0gXCJcIjsgfVxuICAgIGlmIChjYXJkID09PSB2b2lkIDApIHsgY2FyZCA9IGZhbHNlOyB9XG4gICAgdmFyIG5ld1dvcmQgPSB3b3JkO1xuICAgIGlmIChjYXJkKSB7XG4gICAgICAgIGlmICh3b3JkLmxlbmd0aCA+PSAyMCkge1xuICAgICAgICAgICAgbmV3V29yZCA9IHdvcmQuc2xpY2UoMCwgMTApICsgXCIuLi5cIiArIHdvcmQuc2xpY2UoLTcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHdvcmQubGVuZ3RoID49IERFRkFVTFRfTUFYX1NJWkVfV09SRCkge1xuICAgICAgICBuZXdXb3JkID0gd29yZC5zbGljZSgwLCAxMykgKyBcIi4uLlwiICsgd29yZC5zbGljZSgtOCk7XG4gICAgfVxuICAgIHJldHVybiBuZXdXb3JkO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIGEgZXh0RmlsZSBhbmQgc2V0cyBpdHMgdXBsb2FkU3RhdHVzIHRvIFwidXBsb2FkaW5nXCJcbiAqIEBwYXJhbSBleHRGaWxlIHRoZSBleHRlbmRlZCBmaWxlIG9iamVjdFxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGZpbGUgd2l0aCB0aGUgdXBsb2FkU3RhdHVzIGF0dHJpYnV0ZSBtb2RpZmllZFxuICovXG52YXIgc2V0UHJlcFRvVXBsb2FkaW5nID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwicHJlcFRvVXBsb2FkIE9uZVwiLCBleHRGaWxlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJ1cGxvYWRpbmdcIiB9KSk7XG4gICAgICAgIH0sIDE1MDApO1xuICAgIH0pO1xufTtcbi8qKlxuICogVXBkYXRlcyBhIGV4dEZpbGUgYW5kIHNldHMgaXRzIHVwbG9hZFN0YXR1cyB0byBcInN1Y2Nlc3NcIlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGUgb2JqZWN0XG4gKiBAcmV0dXJucyB0aGUgZXh0ZW5kZWQgZmlsZSB3aXRoIHRoZSB1cGxvYWRTdGF0dXMgYXR0cmlidXRlIG1vZGlmaWVkXG4gKi9cbnZhciB1cGxvYWRPbmUgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWQgT25lXCIsIGV4dEZpbGUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInN1Y2Nlc3NcIiB9KSk7XG4gICAgICAgIH0sIDIwMDApO1xuICAgIH0pO1xufTtcbi8qKlxuICogQXdhaXRzIHRoZSBnaXZlbiB0aW1lIGJlZm9yZSBzdGFydCB1cGxvYWRpbmdcbiAqIEBwYXJhbSBwcmVwYXJpbmdUaW1lIHRoZSB0aW1lIGluIG1pbGlzZWNvbmRzLCBieSBkZWZhdWx0IGl0IHdpbGwgd2FpdCAxLjUgc2Vjc1xuICogQHJldHVybnMgYW4gZW1wdHkgb2JqZWN0XG4gKi9cbnZhciBzbGVlcFByZXBhcmluZyA9IGZ1bmN0aW9uIChwcmVwYXJpbmdUaW1lKSB7XG4gICAgaWYgKHByZXBhcmluZ1RpbWUgPT09IHZvaWQgMCkgeyBwcmVwYXJpbmdUaW1lID0gNTAwMDsgfVxuICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRmaWxlcyBwcmVwYXJpbmdUaW1lIE9uZVwiLCBwcmVwYXJpbmdUaW1lKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSwgcHJlcGFyaW5nVGltZSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGVJbnN0YW5jZVxuICogQHJldHVybnNcbiAqL1xudmFyIHByZXBUb1VwbG9hZE9uZSA9IGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwicHJlcFRvVXBsb2FkIE9uZVwiLCBleHRGaWxlSW5zdGFuY2UpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwidXBsb2FkaW5nXCI7XG4gICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlSW5zdGFuY2UpLCB7IHVwbG9hZFN0YXR1czogXCJ1cGxvYWRpbmdcIiB9KSk7XG4gICAgICAgIH0sIDE1MDApO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlSW5zdGFuY2VcbiAqIEByZXR1cm5zXG4gKi9cbnZhciB1cGxvYWRPbmVFeHRGaWxlID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWQgT25lXCIsIGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJzdWNjZXNzXCI7XG4gICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlSW5zdGFuY2UpLCB7IHVwbG9hZFN0YXR1czogXCJzdWNjZXNzXCIgfSkpO1xuICAgICAgICB9LCAyMDAwKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZSB0aGUgZXh0RmlsZSB0byB1cGxvYWRcbiAqIEBwYXJhbSBEcm9wem9uZUxvY2FsaXplciB0aGUgbG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIGR1aVVwbG9hZFJlc3BvbnNlIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgcmVzdWx0XG4gKi9cbnZhciBmYWtlRnVpVXBsb2FkID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSwgRHJvcHpvbmVMb2NhbGl6ZXIpIHtcbiAgICBpZiAoRHJvcHpvbmVMb2NhbGl6ZXIgPT09IHZvaWQgMCkgeyBEcm9wem9uZUxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IoXCJFTi1lblwiKTsgfVxuICAgIHZhciBleHRGaWxlID0gZXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJhbmRvbU51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTtcbiAgICAgICAgICAgIGlmIChyYW5kb21OdW1iZXIgJSAyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gRHJvcHpvbmVMb2NhbGl6ZXIuZmFrZXVwbG9hZHN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgdmFyIHBheWxvYWQgPSB7IHVybDogXCJcIiB9O1xuICAgICAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHNlcnZlclJlc3BvbnNlOiB7IHN1Y2Nlc3M6IHN1Y2Nlc3MsIG1lc3NhZ2U6IG1lc3NhZ2UsIHBheWxvYWQ6IHBheWxvYWQgfSwgdXBsb2FkU3RhdHVzOiBcInN1Y2Nlc3NcIiwgdXBsb2FkTWVzc2FnZTogbWVzc2FnZSB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gRHJvcHpvbmVMb2NhbGl6ZXIuZmFrZVVwbG9hZEVycm9yO1xuICAgICAgICAgICAgICAgIHZhciBwYXlsb2FkID0ge307XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgc2VydmVyUmVzcG9uc2U6IHsgc3VjY2Vzczogc3VjY2VzcywgbWVzc2FnZTogbWVzc2FnZSwgcGF5bG9hZDogcGF5bG9hZCB9LCB1cGxvYWRTdGF0dXM6IFwiZXJyb3JcIiwgdXBsb2FkTWVzc2FnZTogbWVzc2FnZSB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDE3MDApO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBSYW5kb20gaW50ZWdlciBiZXR3ZWVuIG1pbiAoaW5jbHVkZWQpIGFuZCBtYXggKGV4Y2x1ZGVkKVxuICogQHBhcmFtIG1pbiB0aGUgbWluIG51bWJlclxuICogQHBhcmFtIG1heCB0aGUgbWF4IG51bWJlclxuICogQHJldHVybnMgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gbWluIChpbmNsdWRlZCkgYW5kIG1heCAoZXhjbHVkZWQpXG4gKi9cbmZ1bmN0aW9uIGdldFJhbmRvbUludChtaW4sIG1heCkge1xuICAgIGlmIChtaW4gPT09IHZvaWQgMCkgeyBtaW4gPSAwOyB9XG4gICAgaWYgKG1heCA9PT0gdm9pZCAwKSB7IG1heCA9IDA7IH1cbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xufVxuXG4vKipcbiAqIENsZWFucyB0aGUgaW5wdXQudmFsdWUgYXR0cmlidXRlXG4gKiBAcGFyYW0gaW5wdXRFbGVtZW50XG4gKi9cbnZhciBjbGVhbklucHV0ID0gZnVuY3Rpb24gKGlucHV0RWxlbWVudCkge1xuICAgIGlmICghaW5wdXRFbGVtZW50KVxuICAgICAgICByZXR1cm47XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gXCJcIjtcbn07XG5cbi8qKlxuICogSWYgY2xhc3NOYW1lIGlzIGdpdmVuLCBhZGRzIGNsYXNzIG5hbWUgaW4gc3RyaW5nIGZvcm1hdCB0byBhIGJhc2UgY2xhc3MgbmFtZVxuICogQHBhcmFtIGJhc2VDbGFzc05hbWUgdGhlIGJhc2UgY2xhc3MgbmFtZVxuICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgY2xhc3MgbmFtZSB0byBiZSBhZGRlZFxuICogQHJldHVybnMgYSBuZXcgY2xhc3MgbmFtZSBvYnRhaW5lZCBieSBhZGRpbmcgdGhlIHNlY29uZCBwYXJhbWF0ZXJcbiAqL1xudmFyIGFkZENsYXNzTmFtZSA9IGZ1bmN0aW9uIChiYXNlQ2xhc3NOYW1lLCBjbGFzc05hbWUpIHtcbiAgICBpZiAoY2xhc3NOYW1lKVxuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoYmFzZUNsYXNzTmFtZSwgXCIgXCIpLmNvbmNhdChjbGFzc05hbWUpO1xuICAgIHJldHVybiBiYXNlQ2xhc3NOYW1lO1xufTtcblxudmFyIGlzVXBsb2FkQWJsZUV4dEZpbGUgPSBmdW5jdGlvbiAoZXh0RmlsZSwgdmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICByZXR1cm4gKCF2YWxpZGF0ZUZpbGVzRmxhZyB8fCAodmFsaWRhdGVGaWxlc0ZsYWcgJiYgZXh0RmlsZS52YWxpZCkpICYmIGV4dEZpbGUudXBsb2FkU3RhdHVzICE9PSBcInN1Y2Nlc3NcIjtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlXG4gKiBAcGFyYW0gbmFtZVxuICogQHBhcmFtIHR5cGVcbiAqIEBwYXJhbSBzaXplXG4gKiBAcmV0dXJucyB0aGUgZmlsZSBuYW1lLCB0eXBlIGFuZCBzaXplXG4gKi9cbnZhciBnZXRMb2NhbEZpbGVJdGVtRGF0YSA9IGZ1bmN0aW9uIChmaWxlLCBuYW1lLCB0eXBlLCBzaXplKSB7XG4gICAgdmFyIGxvY2FsRmlsZU5hbWUgPSBcIlwiO1xuICAgIHZhciBsb2NhbEZpbGVUeXBlID0gdW5kZWZpbmVkO1xuICAgIHZhciBsb2NhbEZpbGVTaXplID0gdW5kZWZpbmVkO1xuICAgIC8vIGlmIGZpbGUgb2JqZWN0IGlzIHZhbGlkLCBvYnRhaW4gbWV0YWRhdGEgZnJvbSBpdFxuICAgIC8vIG90aGVyd2lzZSB0cnkgdG8gZ2V0IGZpbGUgZGF0YSBmcm9tIGluZGl2aWR1YWwgcHJvcHMgaW4gc3RyaW5nIGZvcm1hdFxuICAgIGlmIChmaWxlICYmIHR5cGVvZiBmaWxlLm5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbG9jYWxGaWxlTmFtZSA9IGZpbGUubmFtZTtcbiAgICAgICAgbG9jYWxGaWxlVHlwZSA9IGZpbGUudHlwZTtcbiAgICAgICAgbG9jYWxGaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAobmFtZSAmJiB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBsb2NhbEZpbGVOYW1lID0gbmFtZTtcbiAgICAgICAgbG9jYWxGaWxlVHlwZSA9IHR5cGU7XG4gICAgICAgIGxvY2FsRmlsZVNpemUgPSBzaXplO1xuICAgIH1cbiAgICByZXR1cm4gW2xvY2FsRmlsZU5hbWUsIGxvY2FsRmlsZVR5cGUsIGxvY2FsRmlsZVNpemVdO1xufTtcblxuLyoqXG4gKiBTZXBhcmF0ZSB0aGUgYWNjZXB0IHN0cmluZyBhcnJheSBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hc1xuICogQHBhcmFtIGFjY2VwdCB0aGUgc3RyaW5nIGFjY2VwdCBhcnJheVxuICogQHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBpbiB3aWNoIGV2ZXJ5IGl0ZW1cbiAqL1xudmFyIHNlcGFyYXRlQWNjZXB0ID0gZnVuY3Rpb24gKGFjY2VwdCkge1xuICAgIGlmICghYWNjZXB0IHx8IGFjY2VwdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICB2YXIgY29tbWFTZXBhcmF0ZWRBY2NwZXQgPSBhY2NlcHQuc3BsaXQoXCIsXCIpLm1hcChmdW5jdGlvbiAoYWNjZXB0SXRlbSkgeyByZXR1cm4gYWNjZXB0SXRlbS50cmltKCk7IH0pO1xuICAgIHJldHVybiBjb21tYVNlcGFyYXRlZEFjY3BldDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBmaWxlIGlzIHZhbGlkIG9yIG5vdCBnaXZlbiBhbiBhcnJheSBvZiBmaWxlIGV4dGVudGlvbnMgYW5kIG1pbWUgdHlwZXNcbiAqIGUuZy4gYWNjZXB0ID0gIFtcIi5kb2NcIiwgXCIuZG9jeFwiLCBcIi54bWxcIiwgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiXVxuICogQHBhcmFtIGFjY2VwdCB0aGUgYXJyYXkgb2Ygc3RyaW5ncyBhY2NlcHQgaXRlbXNcbiAqIEBwYXJhbSBmaWxlIGEgRmlsZSBvYmplY3QgdG8gYmUgZXZhbHVhdGVkXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBtaW1lIHR5cGUgZmlsZSBpcyBpbmNsdWRlZCBpbiB0aGUgYWNjZXB0IHBhcmFtXG4gKi9cbnZhciB2YWxpZGF0ZUFjY2VwdCA9IGZ1bmN0aW9uIChhY2NlcHQsIGZpbGUpIHtcbiAgICB2YXIgdmFsaWQgPSBmYWxzZTtcbiAgICB2YXIgbmFtZSA9IGZpbGUubmFtZSwgdHlwZSA9IGZpbGUudHlwZTtcbiAgICAvL0FycmF5KDUpIFsgXCIuZG9jXCIsIFwiLmRvY3hcIiwgXCIueG1sXCIsIFwiYXBwbGljYXRpb24vbXN3b3JkXCIsIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIiBdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY2NlcHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGFjY2VwdEl0ZW0gPSBhY2NlcHRbaV07XG4gICAgICAgIC8vY2hlY2sgaXMgbm90IGVtcHR5XG4gICAgICAgIGlmIChhY2NlcHRJdGVtLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgLy9jaGVjayBleHRlbnRpb25cbiAgICAgICAgICAgIGlmIChhY2NlcHRJdGVtLmNoYXJBdCgwKSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0SXRlbS5pbmNsdWRlcyhnZXRFeHQobmFtZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vY2hlY2sgbWltZVxuICAgICAgICAgICAgLy8gaGVhZGVyL3RhaWwgID0+IGltYWdlL3BuZyAgOyAgaW1hZ2UvKiA7IGF1ZGlvXG4gICAgICAgICAgICBpZiAodHlwZSAmJiB0eXBlLmxlbmd0aCA+IDAgJiYgYWNjZXB0SXRlbS5pbmNsdWRlcyhcIi9cIikgJiYgdHlwZS5pbmNsdWRlcyhcIi9cIikpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGVhZGVyTWltZSA9IGFjY2VwdEl0ZW0uc3BsaXQoXCIvXCIpWzBdO1xuICAgICAgICAgICAgICAgIHZhciB0YWlsTWltZSA9IGFjY2VwdEl0ZW0uc3BsaXQoXCIvXCIpWzFdO1xuICAgICAgICAgICAgICAgIHZhciBoZWFkZXJNaW1lRmlsZSA9IHR5cGUuc3BsaXQoXCIvXCIpWzBdO1xuICAgICAgICAgICAgICAgIHZhciB0YWlsTWltZUZpbGUgPSB0eXBlLnNwbGl0KFwiL1wiKVsxXTtcbiAgICAgICAgICAgICAgICBpZiAoaGVhZGVyTWltZSA9PT0gaGVhZGVyTWltZUZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgaW1hZ2UvKlxuICAgICAgICAgICAgICAgICAgICBpZiAodGFpbE1pbWUgPT09IFwiKlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0YWlsTWltZSA9PT0gdGFpbE1pbWVGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWQ7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gcHJlVmFsaWRhdGVkRmlsZXMgRmlsZUxpc3RcbiAqIEBwYXJhbSByZW1haW5pbmdWYWxpZHMgVGhlIG51bWJlciBvZiByZW1haW5pbmcgdmFsaWQgZmlsZXNcbiAqIEBwYXJhbSBsb2NhbFZhbGlkYXRvclxuICogQHBhcmFtIHZhbGlkYXRvclxuICogQHBhcmFtIG1heEZpbGVzXG4gKiBAcGFyYW0gbG9jYWxpemF0aW9uXG4gKiBAcmV0dXJuc1xuICovXG52YXIgZmlsZUxpc3R2YWxpZGF0b3IgPSBmdW5jdGlvbiAocHJlVmFsaWRhdGVkRmlsZXMsIHJlbWFpbmluZ1ZhbGlkcywgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbikge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAvL3NldCBhIGNvdW50ZG93biB3aGVuIHRoZXJlIGlzIGEgbGltaXQgb24gZmlsZXNcbiAgICB2YXIgY291bnRkb3duID0gcmVtYWluaW5nVmFsaWRzO1xuICAgIC8vIGdldCBsb2NhbGl6ZWQgbGFiZWxzXG4gICAgdmFyIFZhbGlkYXRpb25FcnJvckxvY2FsaXplciA9IFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIC8vSXRlcmF0ZSB0aGUgRmlsZSBsaXN0XG4gICAgZm9yICh2YXIgaSA9IDAsIGYgPSB2b2lkIDA7IChmID0gcHJlVmFsaWRhdGVkRmlsZXNbaV0pOyBpKyspIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGZpbGUgbGlzdCB3aXRoXG4gICAgICAgIHZhciB2YWxpZGF0ZWRGaWxlID0gdmFsaWRhdGVGaWxlKGYsIHZhbGlkYXRvciwgbG9jYWxWYWxpZGF0b3IsIFZhbGlkYXRpb25FcnJvckxvY2FsaXplcik7XG4gICAgICAgIGlmICh2YWxpZGF0ZWRGaWxlLnZhbGlkKSB7XG4gICAgICAgICAgICAvL25vdCB2YWxpZCBkdWUgdG8gZmlsZSBjb3VudCBsaW1pdFxuICAgICAgICAgICAgdmFyIHZhbGlkID0gY291bnRkb3duID4gMDtcbiAgICAgICAgICAgIHZhbGlkYXRlZEZpbGUudmFsaWQgPSB2YWxpZDtcbiAgICAgICAgICAgIC8vYWRkIGVycm9yIGFib3V0IGFtb3VudFxuICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgIHZhciBtYXhGaWxlRXJyb3JNZXNzZW5nZXIgPSBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIubWF4RmlsZUNvdW50O1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlZEZpbGUuZXJyb3JzID0gdmFsaWRhdGVkRmlsZS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgPyBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHZhbGlkYXRlZEZpbGUuZXJyb3JzLCB0cnVlKSwgW21heEZpbGVFcnJvck1lc3NlbmdlcihtYXhGaWxlcyB8fCBJbmZpbml0eSldLCBmYWxzZSkgOiBbbWF4RmlsZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVzIHx8IEluZmluaXR5KV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGRvd24tLTtcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXQucHVzaCh2YWxpZGF0ZWRGaWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn07XG4vKipcbiAqIEZvciBlYWNoIEV4dEZpbGUgc2V0cyB0aGUgdmFsaWQgcHJvcCBvZiBFeHRGaWxlIHRvIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIlxuICogZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgdGhlIGluZGl2aWR1YWwgdmFsaWRhdGlvbi5cbiAqIEl0IGFsc28gYWRkIHRoZSBsaXN0IG9mIGVycm9ycy5cbiAqIEBwYXJhbSBleHRGaWxlTGlzdFxuICogQHBhcmFtIHJlbWFpbmluZ1ZhbGlkc1xuICogQHBhcmFtIGxvY2FsVmFsaWRhdG9yUHJvcHNcbiAqIEBwYXJhbSB2YWxpZGF0b3JcbiAqIEBwYXJhbSBtYXhGaWxlc1xuICogQHBhcmFtIGxvY2FsaXphdGlvblxuICogQHJldHVybnMgYSBuZXcgRXh0RmlsZSBsaXN0IHdpdGggZWFjaCBpdGVtIHZhbGlkYXRlZFxuICovXG52YXIgdmFsaWRhdGVFeHRGaWxlTGlzdCA9IGZ1bmN0aW9uIChleHRGaWxlTGlzdCwgcmVtYWluaW5nVmFsaWRzLCBsb2NhbFZhbGlkYXRvclByb3BzLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pIHtcbiAgICAvL2NvbnNvbGUubG9nKFwicmVtYW5pbmcgdmFsaWRzXCIsIHJlbWFpbmluZ1ZhbGlkcyk7XG4gICAgdmFyIGZpbGVMaXN0UmVzdWx0ID0gW107XG4gICAgaWYgKCFyZW1haW5pbmdWYWxpZHMpXG4gICAgICAgIHJldHVybiBmaWxlTGlzdFJlc3VsdDtcbiAgICB2YXIgcmVtYWluaW5nID0gcmVtYWluaW5nVmFsaWRzO1xuICAgIHZhciBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIgPSBWYWxpZGF0ZUVycm9yTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICB2YXIgbWF4RmlsZUVycm9yTWVzc2VuZ2VyID0gVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyLm1heEZpbGVDb3VudDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4dEZpbGVMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJyZW50RXh0RmlsZSA9IGV4dEZpbGVMaXN0W2ldO1xuICAgICAgICBjdXJyZW50RXh0RmlsZSA9IHZhbGlkYXRlRXh0RmlsZShjdXJyZW50RXh0RmlsZSwgdmFsaWRhdG9yLCBsb2NhbFZhbGlkYXRvclByb3BzLCBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGVFeHRGaWxlTGlzdCBhZnRlciB2YWxpZGF0aW9uXCIsIGN1cnJlbnRFeHRGaWxlKTtcbiAgICAgICAgaWYgKGN1cnJlbnRFeHRGaWxlLnZhbGlkKSB7XG4gICAgICAgICAgICAvL25vdCB2YWxpZCBkdWUgdG8gZmlsZSBjb3VudCBsaW1pdFxuICAgICAgICAgICAgdmFyIHZhbGlkID0gcmVtYWluaW5nID4gMDtcbiAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlLnZhbGlkID0gdmFsaWQ7XG4gICAgICAgICAgICAvL2FkZCBlcnJvciBhYm91dCBhbW91bnRcbiAgICAgICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZS5lcnJvcnMgPSBjdXJyZW50RXh0RmlsZS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgPyBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGN1cnJlbnRFeHRGaWxlLmVycm9ycywgdHJ1ZSksIFttYXhGaWxlRXJyb3JNZXNzZW5nZXIobWF4RmlsZXMgfHwgSW5maW5pdHkpXSwgZmFsc2UpIDogW21heEZpbGVFcnJvck1lc3NlbmdlcihtYXhGaWxlcyB8fCBJbmZpbml0eSldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVtYWluaW5nLS07XG4gICAgICAgIH1cbiAgICAgICAgZmlsZUxpc3RSZXN1bHQucHVzaChjdXJyZW50RXh0RmlsZSk7XG4gICAgfVxuICAgIHJldHVybiBmaWxlTGlzdFJlc3VsdDtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZVxuICogQHBhcmFtIHZhbGlkYXRvclxuICogQHBhcmFtIHZhbGlkYXRvclByb3BzXG4gKiBAcGFyYW0gbG9jYWxFcnJvcnNcbiAqIEByZXR1cm5zXG4gKi9cbnZhciB2YWxpZGF0ZUV4dEZpbGUgPSBmdW5jdGlvbiAoZXh0RmlsZSwgdmFsaWRhdG9yLCB2YWxpZGF0b3JQcm9wcywgbG9jYWxFcnJvcnMpIHtcbiAgICB2YXIgZXh0RmlsZVJlc3VsdCA9IF9fYXNzaWduKHt9LCBleHRGaWxlKTtcbiAgICB2YXIgZXJyb3JzID0gW107XG4gICAgLy9UTy1ETzogQWRkIGV4dHJhIHZhbGlkYXRpb24gZm9yIGluZGl2aWR1YWwgcHJvcHMgZXZlbiBpZiBGSWxlIG9iamVjdCB3YXMgbm90IGdpdmVuXG4gICAgaWYgKCFleHRGaWxlLmZpbGUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHt9LCBleHRGaWxlUmVzdWx0KTtcbiAgICB9XG4gICAgLy9UTy1ETzogYWRkIFwib3ZlcnJpZGVWYWxpZGF0aW9uXCIgcHJvcCB0byBpZ25vcmUgdGhlIHJlc3Qgb2YgdmFsaWRhdG9ycyBsaWtlIGFjY2VwdCBhbmQgbWF4RmlsZVNpemVcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICAgIHZhciByZXN1bHRDdXN0b21WYWxpZGF0aW9uID0gdmFsaWRhdG9yKGV4dEZpbGVSZXN1bHQuZmlsZSk7XG4gICAgICAgIHZhciBlcnJvcnNSZXN1bHQgPSByZXN1bHRDdXN0b21WYWxpZGF0aW9uLmVycm9ycztcbiAgICAgICAgaWYgKGVycm9yc1Jlc3VsdClcbiAgICAgICAgICAgIGVycm9ycy5wdXNoLmFwcGx5KGVycm9ycywgZXJyb3JzUmVzdWx0KTtcbiAgICAgICAgLy9yZXR1cm4geyAuLi5leHRGaWxlUmVzdWx0LCAuLi52YWxpZGF0b3IoZXh0RmlsZVJlc3VsdC5maWxlIGFzIEZpbGUpIH07XG4gICAgfVxuICAgIHZhciBtYXhGaWxlU2l6ZSA9IHZhbGlkYXRvclByb3BzLm1heEZpbGVTaXplLCBhY2NlcHQgPSB2YWxpZGF0b3JQcm9wcy5hY2NlcHQ7XG4gICAgLy9jb25zb2xlLmxvZyhcIlZhbGlkYXRpb25cIiwgbWF4RmlsZVNpemUsIGFjY2VwdCk7XG4gICAgLy9jaGVjayBmaWxlIHNpemVcbiAgICB2YXIgZmlsZSA9IGV4dEZpbGUuZmlsZTtcbiAgICBpZiAobWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcbiAgICAgICAgdmFyIG1heEZpbGVTaXplRXJyb3JNZXNzZW5nZXIgPSBsb2NhbEVycm9ycy5tYXhTaXplRXJyb3I7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJTaXplIGVycm9yXCIsIG1heEZpbGVTaXplRXJyb3JNZXNzZW5nZXIobWF4RmlsZVNpemUpKTtcbiAgICAgICAgZXJyb3JzLnB1c2gobWF4RmlsZVNpemVFcnJvck1lc3NlbmdlcihtYXhGaWxlU2l6ZSkpO1xuICAgIH1cbiAgICAvL2NoZWNrIGZpbGUgdHlwZVxuICAgIGlmIChhY2NlcHQgJiYgIXZhbGlkYXRlQWNjZXB0KHNlcGFyYXRlQWNjZXB0KGFjY2VwdCksIGZpbGUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGxvY2FsRXJyb3JzLmFjY2VwdEVycm9yKTtcbiAgICB9XG4gICAgdmFyIGlzVmFsaWQgPSBlcnJvcnMubGVuZ3RoID09PSAwO1xuICAgIGV4dEZpbGVSZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZVJlc3VsdCksIHsgdmFsaWQ6IGlzVmFsaWQsIGVycm9yczogIWlzVmFsaWQgPyBlcnJvcnMgOiB1bmRlZmluZWQgfSk7XG4gICAgLy9jb25zb2xlLmxvZyhcInZhbGlkYXRpb24gZXh0RmlsZVJlc3VsdFwiLCBleHRGaWxlUmVzdWx0KTtcbiAgICByZXR1cm4gZXh0RmlsZVJlc3VsdDtcbn07XG4vKipcbiAqIEZ1bmN0aW9uIHRoYXQgdmFsaWRhdGUgd2hldGhlciBhIGZpbGUgaXMgdmFsaWQsIG9yIG5vdFxuICogYWNjb3JkaW5nIHRvIHRoZSBGaWxldmFsaWRhdG9yIHByb3BlcnRpZXNcbiAqIEBwYXJhbSBmaWxlIGEgRmlsZSBvYmplY3QgdG8gYmUgZXZhbHVhdGVkXG4gKiBAcGFyYW0gdmFsaWRhdG9yUHJvcHMgdGhlIHZhbGlkYXRvciBvYmplY3RcbiAqIEByZXR1cm5zIGEgRmlsZVZhbGlkYXRlZCBvYmplY3RcbiAqL1xudmFyIHZhbGlkYXRlRmlsZSA9IGZ1bmN0aW9uIChmaWxlLCB2YWxpZGF0b3IsIHZhbGlkYXRvclByb3BzLCBsb2NhbEVycm9ycykge1xuICAgIHZhciBpZEdlbmVyYXRlZCA9IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKTtcbiAgICB2YXIgZXJyb3JzID0gW107XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyBpZDogaWRHZW5lcmF0ZWQsIGZpbGU6IGZpbGUgfSwgdmFsaWRhdG9yKGZpbGUpKTtcbiAgICB9XG4gICAgdmFyIG1heEZpbGVTaXplID0gdmFsaWRhdG9yUHJvcHMubWF4RmlsZVNpemUsIGFjY2VwdCA9IHZhbGlkYXRvclByb3BzLmFjY2VwdDtcbiAgICAvL2NoZWNrIGZpbGUgc2l6ZVxuICAgIGlmIChtYXhGaWxlU2l6ZSAmJiBmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xuICAgICAgICB2YXIgbWF4RmlsZVNpemVFcnJvck1lc3NlbmdlciA9IGxvY2FsRXJyb3JzLm1heFNpemVFcnJvcjtcbiAgICAgICAgZXJyb3JzLnB1c2gobWF4RmlsZVNpemVFcnJvck1lc3NlbmdlcihtYXhGaWxlU2l6ZSkpO1xuICAgIH1cbiAgICAvL2NoZWNrIGZpbGUgdHlwZVxuICAgIC8vIGNvbnN0IGFsbG93ZWRUeXBlcyA9IGFjY2VwdC5maWx0ZXIoKHR5cGUpID0+IChmaWxlLnR5cGUgPT09IHR5cGUpKVxuICAgIGlmIChhY2NlcHQgJiYgIXZhbGlkYXRlQWNjZXB0KHNlcGFyYXRlQWNjZXB0KGFjY2VwdCksIGZpbGUpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGxvY2FsRXJyb3JzLmFjY2VwdEVycm9yKTtcbiAgICB9XG4gICAgdmFyIGZpbGVSZXN1bHQgPSB7XG4gICAgICAgIGlkOiBpZEdlbmVyYXRlZCxcbiAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgdmFsaWQ6IGVycm9ycy5sZW5ndGggPT09IDAsXG4gICAgICAgIGVycm9yczogZXJyb3JzXG4gICAgfTtcbiAgICAvLyBsb2dpYyBoZXJlXG4gICAgcmV0dXJuIGZpbGVSZXN1bHQ7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgYmV0d2VuIDAgYW5kIDNcbiAqIHdoZXJlXG4gKiAwID0+IGVycm9yXG4gKiAxID0+IHVwbG9hZGluZ1xuICogMiA9PiBzdWNjZXNzXG4gKiAzID0+IHVuZGVmaW5lZFxuICogQHJldHVybnMgYSByYW5kb20gdXBsb2FkIHN0YXR1cyBvciB1bmRlZmluZWRcbiAqL1xudmFyIGdldFJhbmRvbVVwbG9hZFN0YXR1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gZ2V0UmFuZG9tSW50KDAsIDQpO1xuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgICAgIGNhc2UgMDogcmV0dXJuIFwiZXJyb3JcIjtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gXCJ1cGxvYWRpbmdcIjtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gXCJzdWNjZXNzXCI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbi8qKlxuICogbGlzdCBvZiBkdW15IGVycm9ycyBpbiBlbmdsaXNoXG4gKi9cbnZhciBsaXN0T2ZFcnJvcnMgPSBbXG4gICAgXCJGaWxlIGlzIHRvbyBiaWcuIE1heCBmaWxlIHNpemUgYWxsb3dlZCBpcyA4MG1iLlwiLFxuICAgIFwiRmlsZSdzIHR5cGUgaXMgbm90IGFsbG93ZWQuXCIsXG4gICAgXCJNYXggYW1vdW50IG9mIGZpbGVzICgyOCkgaGFzIGJlZW4gcmVhY2hlZC5cIlxuXTtcblxuLyoqXG4gKiBNYWtlIGEgdmFsaWRhdGVkIGZpbGUgdGhhdCBpcyByZWFkeSB0byBiZSB1c2VkIG9uIEZpbGVJdGVtIGNvbXBvbmVudCxcbiAqIGlmIHZhbGlkIGlzIG5vdCBzZXQsIGEgcmFuZG9tIG9wZXJhdGlvbiB3aWxsIGRlY2lkZSB3aGV0aGVyIHRoZSBmaWxlIGlzIHZhbGlkIG9yIG5vdFxuICogSWYgdmFsaWQgaXMgZmFsc2UsIHRoZW4gdGhlIG5hdHVyYWwgb3JkZXIgaXMgbm90IHRvIGJlIHVwbG9hZGFibGUgYW5kIHdvbnQgaGF2ZSB1cGxvYWQgbWVzc2FnZSBub3IgdXBsb2FkIHN0YXR1c1xuICogSWYgdmFsaWQgaXMgdHJ1ZSwgdGhlbiBmaWxlIGNhbiBiZSB1cGxvYWRlZCBhbmQgY2FuIGhhdmUgdXBsb2FkIG1lc3NhZ2UgaWYgdGhlIHN0YXR1cyBpcyBzdWNjZXMgb3IgZXJyb3JcbiAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlXG4gKiBAcGFyYW0gdmFsaWQgdHJ1ZSBpZiBpdCBpcyBhIHZhbGlkIGZpbGUsIG90aGVyd2lzZSBpcyBmYWxzZVxuICogQHBhcmFtIHVwbG9hZFN0YXR1cyB0aGUgY3VycmVudCB1cGxvYWQgc3RhdHVzLiBJZiBub3QgZ2l2ZW4gYSByYW5kb20gdXBsb2FkIHN0YXR1cyB3aWxsIGJlIHNldFxuICogQHBhcmFtIHVwbG9hZE1lc3NhZ2UgdGhlIHVwbG9hZCBtZXNzYWdlIGFmdGVyIHVwbG9hZGluZ1xuICogQHJldHVybnMgYSBWYWlkYXRlZCBGaWxlIG9iamVjdFxuICovXG52YXIgbWFrZVN5bnRoZXRpY0V4dEZpbGUgPSBmdW5jdGlvbiAoZmlsZSwgdmFsaWQsIHVwbG9hZFN0YXR1cywgdXBsb2FkTWVzc2FnZSkge1xuICAgIGlmICh2YWxpZCA9PT0gdm9pZCAwKSB7IHZhbGlkID0gKE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjgpICUgMiA9PT0gMCk7IH1cbiAgICAvL2lmIHZhbGlkLCBuYXR1cmFsbHksIGNhbiBiZSB1cGxvYWRlZFxuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICB2YXIgbmV3VXBvYWRTdGF0dXMgPSB1cGxvYWRTdGF0dXMgfHwgZ2V0UmFuZG9tVXBsb2FkU3RhdHVzKCk7XG4gICAgdmFyIGN1c3RvbVVwbG9hZE1lc3NhZ2UgPSB1cGxvYWRNZXNzYWdlIHx8IFwiXCI7XG4gICAgaWYgKHZhbGlkKSB7XG4gICAgICAgIC8vd2UgY2FuIGRlY2lkZSBhY2NvcmRpbmcgdG8gdXBsb2FkIHN0YXR1cyBcbiAgICAgICAgaWYgKCF1cGxvYWRNZXNzYWdlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKG5ld1Vwb2FkU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVVwbG9hZE1lc3NhZ2UgPSBcIlVwbG9hZCBmYWlsZWQuIFRoZXJlIHdhcyBhbiBlcnJvclwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxuICAgICAgICAgICAgICAgICAgICBjdXN0b21VcGxvYWRNZXNzYWdlID0gXCJGaWxlIHdhcyBzdWNjZXNzZnVsbHkgdXBsb2FkXCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHVwbG9hZE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3JzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy9pZiBub3QgdmFsaWQsIGp1c3Qgc2hvdyBlcnJvciBtZXNzYWdlc1xuICAgICAgICB2YXIgcmFuZEludCA9IGdldFJhbmRvbUludCgwLCAzKTtcbiAgICAgICAgZXJyb3JzLnB1c2gobGlzdE9mRXJyb3JzW3JhbmRJbnRdKTtcbiAgICAgICAgbmV3VXBvYWRTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGN1c3RvbVVwbG9hZE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vbm93IG1ha2UgYSBGaWxlIFZhbGlkYXRlZCBpbnN0YW5jZSBcbiAgICB2YXIgbmV3RmlsZVZhbGlkYXRlZCA9IHtcbiAgICAgICAgaWQ6IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSxcbiAgICAgICAgdmFsaWQ6IHZhbGlkLFxuICAgICAgICBmaWxlOiBmaWxlLFxuICAgICAgICB1cGxvYWRTdGF0dXM6IG5ld1Vwb2FkU3RhdHVzLFxuICAgICAgICB1cGxvYWRNZXNzYWdlOiBjdXN0b21VcGxvYWRNZXNzYWdlLFxuICAgICAgICBlcnJvcnM6IGVycm9yc1xuICAgIH07XG4gICAgcmV0dXJuIG5ld0ZpbGVWYWxpZGF0ZWQ7XG59O1xuXG52YXIgZXh0RmlsZU1vY2sgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogaWQgfHwgRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpLFxuICAgICAgICBuYW1lOiBcImZpbGVOYW1lLmV4dFwiLFxuICAgICAgICBzaXplOiAyOCAqIDEwMjQgKiAxMDI0LFxuICAgICAgICB0eXBlOiBcImZpbGVzLXVpL21vY2tcIixcbiAgICAgICAgZmlsZTogY3JlYXRlU3ludGhldGljRmlsZShcImZpbGVOYW1lLmV4dFwiLCAyOCAqIDEwMjQgKiAxMDI0LCBcImZpbGVzLXVpL21vY2tcIiksXG4gICAgICAgIGVycm9yczogbGlzdE9mRXJyb3JzLFxuICAgICAgICB1cGxvYWRNZXNzYWdlOiBcInVwbG9hZGVkXCIsXG4gICAgICAgIHVwbG9hZFN0YXR1czogXCJwcmVwYXJpbmdcIixcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICBwcm9ncmVzczogMjgsXG4gICAgICAgIHhocjogbmV3IFhNTEh0dHBSZXF1ZXN0KCksXG4gICAgICAgIGV4dHJhRGF0YToge1xuICAgICAgICAgICAgZXh0cmFEYXRhMTogXCJmaWxlcy11aSBpcyB0aGUgYmVzdFwiLFxuICAgICAgICAgICAgZXh0cmFEYXRhMjoge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZmlsZXMtdWkubW9ja1wiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBkb3dubG9hZFVybDogXCJodHRwczovL3d3dy5maWxlcy11aS5jb20vbW9jay9maWxlLWRvd25sb2FkXCJcbiAgICB9O1xufTtcblxuZnVuY3Rpb24gYWRkRXh0cmFEYXRhKGZvcm1EYXRhLCBleHRyYURhdGEpIHtcbiAgICAvL2hlYWRlcnNcbiAgICB2YXIgZXh0cmFEYXRhS2V5cyA9IE9iamVjdC5rZXlzKGV4dHJhRGF0YSB8fCB7fSk7XG4gICAgLy9jb25zdCBoZWFkZXJWYWx1ZXM6IHN0cmluZ1tdID0gT2JqZWN0LnZhbHVlcyhoZWFkZXJzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4dHJhRGF0YUtleXMubGVuZ3RoICYmIGV4dHJhRGF0YTsgaSsrKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRGaWxlIGV4dHJhRGF0YVwiLCBleHRyYURhdGFLZXlzW2ldLCBleHRyYURhdGFbZXh0cmFEYXRhS2V5c1tpXV0pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZXh0cmFEYXRhS2V5c1tpXSwgZXh0cmFEYXRhW2V4dHJhRGF0YUtleXNbaV1dKTtcbiAgICB9XG4gICAgLy8gZm9ybURhdGEuYXBwZW5kKFwib3RoZXJWYWx1ZVwiLCBcIkhBQUFBQUFBQUFBQUFBQWFcIik7XG59XG5cbmZ1bmN0aW9uIGFkZEhlYWRlcnMoeGhyLCBoZWFkZXJzKSB7XG4gICAgLy9oZWFkZXJzXG4gICAgdmFyIGhlYWRlcktleXMgPSBPYmplY3Qua2V5cyhoZWFkZXJzIHx8IHt9KTtcbiAgICAvL2NvbnN0IGhlYWRlclZhbHVlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKGhlYWRlcnMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVyS2V5cy5sZW5ndGggJiYgaGVhZGVyczsgaSsrKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRGaWxlIGhlYWRlcnNcIiwgaGVhZGVyS2V5c1tpXSwgaGVhZGVyc1toZWFkZXJLZXlzW2ldXSk7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlcktleXNbaV0sIGhlYWRlcnNbaGVhZGVyS2V5c1tpXV0pO1xuICAgIH1cbn1cblxudmFyIFRJTUVPVVRfRVJST1JfUkVTUE9OU0UgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgbWVzc2FnZTogXCJUaW1lb3V0IGVycm9yXCIsXG4gICAgcGF5bG9hZDoge31cbn07XG52YXIgQUJPUlRFRF9FUlJPUl9SRVNQT05TRSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBtZXNzYWdlOiBcIlVwbG9hZCBhYm9ydGVkXCIsXG4gICAgcGF5bG9hZDoge31cbn07XG52YXIgSlNPTl9QQVJTRV9FUlJPUl9SRVNQT05TRSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBtZXNzYWdlOiBcIkVycm9yIHdoZW4gcGFyc2luZyBKU09OIHJlc3BvbnNlXCIsXG4gICAgcGF5bG9hZDoge31cbn07XG52YXIgVU5FWFBFQ1RFRF9FUlJPUl9SRVNQT05TRSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBtZXNzYWdlOiBcIlVuZXhwZWN0ZWQgZXJyb3JcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBOT19YSFJfUFJPVklERURfRVJST1IgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogXCJVbmFibGUgdG8gdXBsb2FkLiB4aHIgb2JqZWN0IHdhcyBub3QgcHJvdmlkZWRcIiwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIsIHNlcnZlclJlc3BvbnNlOiB7IHN1Y2Nlc3M6IGZhbHNlLCB9IH0pO1xufTtcblxudmFyIG1ha2VTZXJ2ZXJSZXNwb25zZSA9IGZ1bmN0aW9uIChzdWNjZXNzLCBtZXNzYWdlLCBwYXlsb2FkKSB7XG4gICAgdmFyIHJlc3VsdCA9IHsgc3VjY2Vzczogc3VjY2VzcywgbWVzc2FnZTogbWVzc2FnZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xudmFyIEpzb25QYXJzZVJlc3BvbnNlID0gZnVuY3Rpb24gKHhocikge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBqc29uUmVzcG9uc2UgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZSk7XG4gICAgICAgIHZhciBzdWNjZXNzID0ganNvblJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgIHZhciBtZXNzYWdlID0ganNvblJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgIHZhciBwYXlsb2FkID0ganNvblJlc3BvbnNlLnBheWxvYWQ7XG4gICAgICAgIHZhciBmdWlSZXNwb25zZSA9IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHR5cGVvZiBzdWNjZXNzID09PSBcImJvb2xlYW5cIiA/IHN1Y2Nlc3MgOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IFwiRXJyb3Igb24gbWVzc2FnZSByZXNwb25zZVwiLFxuICAgICAgICAgICAgcGF5bG9hZDogcGF5bG9hZCB8fCB7fVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZnVpUmVzcG9uc2U7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpVXBsb2FkIEVSUk9SXCIsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIEpTT05fUEFSU0VfRVJST1JfUkVTUE9OU0U7XG4gICAgfVxufTtcbnZhciBtYWtlU3VjY2Vzc1VwbG9hZFJlc3BvbnNlID0gZnVuY3Rpb24gKGV4dEZpbGUsIHJlc3BvbnNlRnVpKSB7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyBzZXJ2ZXJSZXNwb25zZTogcmVzcG9uc2VGdWksIHVwbG9hZE1lc3NhZ2U6IHJlc3BvbnNlRnVpLm1lc3NhZ2UsIHVwbG9hZFN0YXR1czogXCJzdWNjZXNzXCIgfSk7XG59O1xudmFyIG1ha2VFcnJvclVwbG9hZFJlc3BvbnNlID0gZnVuY3Rpb24gKGV4dEZpbGUsIHJlc3BvbnNlRnVpKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcIm1ha2VFcnJvclVwbG9hZFJlc3BvbnNlXCIsIGV4dEZpbGUsIHJlc3BvbnNlRnVpKTtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZE1lc3NhZ2U6IHJlc3BvbnNlRnVpLm1lc3NhZ2UsIHVwbG9hZFN0YXR1czogXCJlcnJvclwiLCBzZXJ2ZXJSZXNwb25zZTogcmVzcG9uc2VGdWkgfSk7XG59O1xuXG4vKipcbiAqIFVwbG9hZHMgb25lIGZvcm1EYXRhIG9iamVjdCB0byBhIGdpdmVuIGVuZHBvaW50IGluIGEgcHJvbWlzaWZpZWQgd2F5XG4gKiBAcGFyYW0geGhyIFhNTEhUVFByZXF1ZXN0IG9iamVjdFxuICogQHBhcmFtIG1ldGhvZCBtZXRob2QgZm9yIHVwbG9hZGluZ1xuICogQHBhcmFtIGVuZHBvaW50IGVuZHBvaW50IHRvIHVwbG9hZCB0aGUgZmlsZVxuICogQHBhcmFtIGRhdGEgRnJvbURhdGEgb2JqZWN0IHRvIHBlcmZvcm0gbXVsdGlwYXJ0IGZvcm0gZGF0YSB1cGxvYWRcbiAqIEBwYXJhbSBoZWFkZXJzIHRoZSBzZXQgb2YgaGVhZGVyc1xuICogQHJldHVybnMgYSBzZXJ2ZXIgcmVzcG9uc2UgdGhhdCBjb25zaXN0cyBvbiB7c3RhdHVzLCBwYXlsb2FkLCBtZXNzYWdlfVxuICovXG52YXIgdXBsb2FkRm9ybURhdGEgPSBmdW5jdGlvbiAoeGhyLCBtZXRob2QsIGVuZHBvaW50LCBkYXRhLCBoZWFkZXJzKSB7XG4gICAgaWYgKG1ldGhvZCA9PT0gdm9pZCAwKSB7IG1ldGhvZCA9IFwiUE9TVFwiOyB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSB1cGxvYWRGaWxlXCIsIHhociwgbWV0aG9kLCBlbmRwb2ludCwgZGF0YSwgaGVhZGVycyk7XG4gICAgICAgIHZhciBmaW5hbE1ldGhvZCA9IFtcIlBPU1RcIiwgXCJQVVRcIiwgXCJQQVRDSFwiXS5pbmNsdWRlcyhtZXRob2QudG9VcHBlckNhc2UoKSkgPyBtZXRob2QgOiBcIlBPU1RcIjtcbiAgICAgICAgLyogICBsZXQgbGFzdExhc3RTdGF0ZTogbnVtYmVyID0gLTE7XG4gICAgICAgICAgbGV0IGxhc3RTdGF0ZTogbnVtYmVyID0gMDtcbiAgICAgICAgICBsZXQganVtcGVkOiBib29sZWFuID0gZmFsc2U7ICovXG4gICAgICAgIHhoci51cGxvYWQub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSB1cGxvYWRGaWxlIG9uTG9hZFwiLCB4aHIucmVhZHlTdGF0ZSwgeGhyLnJlc3BvbnNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgeGhyLnVwbG9hZC5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKFRJTUVPVVRfRVJST1JfUkVTUE9OU0UpOyB9O1xuICAgICAgICB4aHIudXBsb2FkLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEFCT1JURUVFRURERERcIik7XG4gICAgICAgICAgICByZXNvbHZlKEFCT1JURURfRVJST1JfUkVTUE9OU0UpO1xuICAgICAgICB9O1xuICAgICAgICB4aHIub25sb2FkZW5kID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAvLyBsaXN0ZW4gZm9yIGBwcm9ncmVzc2AgZXZlbnRcbiAgICAgICAgLy9jdXJyZW50bHkgbGlzdGVuaW5nIG9uIEZpbGVJdGVtIGNvbXBvbmVudCBob29rXG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRmluaXNoZWRcIiwgeGhyKTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIHVwbG9hZEZpbGUgb25yZWFkeXN0YXRlY2hhbmdlIGUudHlwZVwiLCBlLnR5cGUpO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgdXBsb2FkRmlsZSBvbnJlYWR5c3RhdGVjaGFuZ2VcIiwgeGhyLnJlYWR5U3RhdGUsIHhoci5yZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgLy9sYXN0TGFzdFN0YXRlID0gbGFzdFN0YXRlO1xuICAgICAgICAgICAgICAgIC8vbGFzdFN0YXRlID0geGhyLnJlYWR5U3RhdGU7XG4gICAgICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVzcG9uc2UgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlcmUgaXMgdGggYW5zd2VyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKEpzb25QYXJzZVJlc3BvbnNlKHhocikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9lcnJvciB1bmV4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSBFTVBUWSBzdGF0dXNcIiwgeGhyLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSBFTVBUWSByZWFkeVN0YXRlXCIsIHhoci5yZWFkeVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEVNUFRZIHVwbG9hZFwiLCB4aHIudXBsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgRU1QVFkgYWJvcnRcIiwgeGhyLmFib3J0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc3QganVtcGVkID0gbGFzdExhc3RTdGF0ZSAtIGxhc3RMYXN0U3RhdGUgIT09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKEFCT1JURURfRVJST1JfUkVTUE9OU0UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgLy8gb3BlbiByZXF1ZXN0XG4gICAgICAgIHhoci5vcGVuKGZpbmFsTWV0aG9kLCBlbmRwb2ludCwgdHJ1ZSk7XG4gICAgICAgIC8vYWRkIGhlYWRlciB0byByZXF1ZXN0XG4gICAgICAgIGFkZEhlYWRlcnMoeGhyLCBoZWFkZXJzKTtcbiAgICAgICAgLy9zdGFydCB1cGxvYWRpbmdcbiAgICAgICAgeGhyLnNlbmQoZGF0YSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGZpbGUgdGhlIGV4dGVuZGVkIGZpbGUgdG8gYmUgdXBsb2FkZWRcbiAqIEBwYXJhbSB1cmwgdGhlIGVuZHBvaW50XG4gKiBAcGFyYW0gbWV0aG9kIHRoZSBtZXRob2QgZm9yIHVwbG9hZGluZ1xuICogQHBhcmFtIGhlYWRlcnMgaGVhZGVycyBmb3IgcmVxdWVzdFxuICogQHJldHVybnNcbiAqL1xudmFyIHVwbG9hZEV4dEZpbGUgPSBmdW5jdGlvbiAoZXh0RmlsZSwgdXJsLCBtZXRob2QsIGhlYWRlcnMsIHVwbG9hZExhYmVsKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHVwbG9hZGVyLCBsb2NhbE1ldGhvZCwgZmlsZVRvVXBsb2FkLCBmb3JtRGF0YSwgZmluYWxFeHRyYURhdGEsIHJlc3BvbnNlRnVpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkZXIgPSBleHRGaWxlLnhocjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVwbG9hZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoTk9fWEhSX1BST1ZJREVEX0VSUk9SKGV4dEZpbGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbE1ldGhvZCA9IG1ldGhvZCB8fCBcIlBPU1RcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlVG9VcGxvYWQgPSBleHRGaWxlLmZpbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQodXBsb2FkTGFiZWwgfHwgXCJmaWxlXCIsIGZpbGVUb1VwbG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxFeHRyYURhdGEgPSBfX2Fzc2lnbih7fSwgZXh0RmlsZS5leHRyYVVwbG9hZERhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEV4dHJhRGF0YShmb3JtRGF0YSwgZmluYWxFeHRyYURhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlRnVpID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHVwbG9hZEZvcm1EYXRhKHVwbG9hZGVyLCBsb2NhbE1ldGhvZCwgdXJsLCBmb3JtRGF0YSwgaGVhZGVycyB8fCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlRnVpID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUZ1aS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBpcyB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWFrZVN1Y2Nlc3NVcGxvYWRSZXNwb25zZShleHRGaWxlLCByZXNwb25zZUZ1aSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIGlzIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWFrZUVycm9yVXBsb2FkUmVzcG9uc2UoZXh0RmlsZSwgcmVzcG9uc2VGdWkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZFByb21pc2VYSFIgdXBsb2FkUHJvbWlzZVhIUiBFUlJPUlwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtYWtlRXJyb3JVcGxvYWRSZXNwb25zZShleHRGaWxlLCBVTkVYUEVDVEVEX0VSUk9SX1JFU1BPTlNFKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7IH0pXTtcbiAgICB9KTtcbn0pOyB9O1xuZnVuY3Rpb24gdXBsb2FkRmlsZShmaWxlLCB1cmwsIG1ldGhvZCwgbGFiZWwsIGhlYWRlcnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBmb3JtRGF0YSwgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChsYWJlbCB8fCBcImZpbGVcIiwgZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMSwgMywgLCA0XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHVwbG9hZEZvcm1EYXRhKG5ldyBYTUxIdHRwUmVxdWVzdCgpLCBtZXRob2QsIHVybCwgZm9ybURhdGEsIGhlYWRlcnMpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHNlcnZlclJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRQcm9taXNlWEhSIHVwbG9hZFByb21pc2VYSFIgRVJST1JcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFVORVhQRUNURURfRVJST1JfUkVTUE9OU0UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH0pO1xufVxuXG52YXIgdW5leHBlY3RlZEVycm9yVXBsb2FkUmVzdWx0ID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZE1lc3NhZ2U6IFwiVW5leHBlY3RlZCBlcnJvclwiLCB1cGxvYWRTdGF0dXM6IFwiZXJyb3JcIiwgc2VydmVyUmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJFcnJvciBvbiB1cGxvYWQ6IHVuZXhwZWN0ZWQgZXJyb3IgXCIsXG4gICAgICAgICAgICBwYXlsb2FkOiB7fSxcbiAgICAgICAgfSB9KTtcbn07XG52YXIgdW5hYmxlVG9VcGxvYWRSZXN1bHQgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBleHRGaWxlLmlkLFxuICAgICAgICB1cGxvYWRlZEZpbGU6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiBcIlVuYWJsZSB0byB1cGxvYWQuIFhIUiB3YXMgbm90IHByb3ZpZGVkXCIsIHVwbG9hZFN0YXR1czogXCJlcnJvclwiIH0pLFxuICAgICAgICBzZXJ2ZXJSZXNwb25zZToge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIkVycm9yIG9uIHVwbG9hZDogVW5hYmxlIHRvIHVwbG9hZC4gWEhSIHdhcyBub3QgcHJvdmlkZWQgXCIsXG4gICAgICAgICAgICBwYXlsb2FkOiB7fSxcbiAgICAgICAgfVxuICAgIH07XG59O1xudmFyIGNvbXBsZXRlVXBsb2FkUmVzdWx0ID0gZnVuY3Rpb24gKGV4dEZpbGUsIHNlcnZlclJlc3BvbnNlLCB1cGxvYWRTdGF0dXNyZXN1bHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZXh0RmlsZS5pZCxcbiAgICAgICAgdXBsb2FkZWRGaWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogc2VydmVyUmVzcG9uc2UubWVzc2FnZSwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXNyZXN1bHQgfSksXG4gICAgICAgIHNlcnZlclJlc3BvbnNlOiBzZXJ2ZXJSZXNwb25zZVxuICAgIH07XG59O1xuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgeGhyIGF0dHJpYnV0ZSBmb3IgcGVyZm9ybWluZyB1cGxvYWRzXG4gKiBAcGFyYW0gZXh0RmlsZUxpc3QgdGhlIGxpc3Qgb2YgZXh0ZW5kZWQgZmlsZXNcbiAqIEByZXR1cm5zIHRoZSBhcnJheSBvZiBleHRGaWxlcyB3aXRoIHRoZSB4aHIgYXR0cmlidXRlIGluaXRpYWxpemVkXG4gKi9cbnZhciB0b1VwbG9hZGFibGVFeHRGaWxlTGlzdCA9IGZ1bmN0aW9uIChleHRGaWxlTGlzdCkge1xuICAgIGlmICghZXh0RmlsZUxpc3QpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gZXh0RmlsZUxpc3QubWFwKGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgeGhyOiBuZXcgWE1MSHR0cFJlcXVlc3QoKSB9KTtcbiAgICB9KTtcbn07XG4vKipcbiAqIFVwZGF0ZXMgdGhlIHVwbG9hZFN0YXR1cyBvZiB0aGUgZ2l2ZW4gZXh0RmlsZVxuICogZnJvbSBcInByZXBhcmluZ1wiIHRvIFwidXBsb2FkaW5nXCJcbiAqIEBwYXJhbSBleHRGaWxlIHRoZSBleHRlbmRlZCBmaWxlXG4gKiBAcmV0dXJucyB0aGUgZXh0ZW5kZWQgZmlsZSB3aXRoIHVwbG9hZFN0YXR1cyB1cGRhdGVkIHRvIFwidXBsb2FkaW5nXCJcbiAqL1xudmFyIGluc3RhbnRQcmVwYXJpbmdUb1VwbG9hZE9uZSA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgaWYgKGV4dEZpbGUudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSB7XG4gICAgICAgIC8vZm9yIEV4dEZpbGUgaW5zdGFuY2VcbiAgICAgICAgZXh0RmlsZS51cGxvYWRTdGF0dXMgPSBcInVwbG9hZGluZ1wiO1xuICAgICAgICAvL2ZvciBFeHRGaWxlIHR5cGVcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwidXBsb2FkaW5nXCIgfSk7XG4gICAgfVxuICAgIHJldHVybiBleHRGaWxlO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlIHRoZSBleHRlbmRlZCBmaWxlXG4gKiBAcmV0dXJuc1xuICovXG52YXIgcHJlcGFyaW5nVG9VcGxvYWRPbmUgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGV4dEZpbGUudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgLy9mb3IgRXh0RmlsZSBpbnN0YW5jZVxuICAgICAgICAgICAgICAgIGV4dEZpbGUudXBsb2FkU3RhdHVzID0gXCJ1cGxvYWRpbmdcIjtcbiAgICAgICAgICAgICAgICAvL2ZvciBFeHRGaWxlIHR5cGVcbiAgICAgICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwidXBsb2FkaW5nXCIgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoZXh0RmlsZSk7XG4gICAgICAgIH0sIDE1MDApO1xuICAgIH0pO1xufTtcbi8qKlxuICogU2xlZXBzIGZvciAxMjAwIG1pbGlzZWNvbmRzIGZvciBzaG93aW5nIGEgYmV0dGVyIHRyYW5zaXRpb25cbiAqIG9uIHVwbG9hZGluZ1xuICogQHBhcmFtIHRpbWUgdGhlIHRpbWUgdG8gc2xlZXAgaW4gbWlsaXNlY29uZHNcbiAqIEByZXR1cm5zIHRydWUgaXMgZXZlcnl0aGluZyBpcyBva1xuICovXG52YXIgc2xlZXBUcmFuc2l0aW9uID0gZnVuY3Rpb24gKHRpbWUpIHtcbiAgICBpZiAodGltZSA9PT0gdm9pZCAwKSB7IHRpbWUgPSAxNTAwOyB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9LCB0aW1lKTtcbiAgICB9KTtcbn07XG4vKipcbiAqIFJlbW92ZXMgdGhlIGRlbGV0ZWQgZmlsZXMgYW5kIHVwZGF0ZXMgdGhlIGFib3J0ZWQgb25lcyB3aXRoIGEgbWVzc2FnZVxuICogQHBhcmFtIGFyckV4dEZpbGUgaW5jb21taW5nIGFyciBvZiBleHRGbGUgaW5zdGFuY2VzXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBFeHRGbGUgb2JqZWN0c1xuICovXG52YXIgc2FuaXRpemVBcnJFeHRGaWxlID0gZnVuY3Rpb24gKGFyckV4dEZpbGUpIHtcbiAgICByZXR1cm4gYXJyRXh0RmlsZS5maWx0ZXIoZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkgeyB2YXIgX2E7IHJldHVybiAhKChfYSA9IGV4dEZpbGVJbnN0YW5jZS5leHRyYURhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWxldGVkKTsgfSlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgICAgIGlmIChleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcImFib3J0ZWRcIlxuICAgICAgICAgICAgJiYgIWV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBUTy1ETzogYWQgbG9jYWxpemF0aW9uIGZvciB0aGlzIG1lc3NhZ2VcbiAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gXCJVcGxvYWQgYWJvcnRlZCBieSB1c2VyXCI7XG4gICAgICAgICAgICAvL2V4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcImVycm9yXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEV4dEZpbGVJbnN0YW5jZS50b0V4dEZpbGUoZXh0RmlsZUluc3RhbmNlKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZUluc3RhbmNlXG4gKiBAcGFyYW0gZXh0RmlsZW9ialxuICovXG52YXIgc2V0TmV4dFVwbG9hZFN0YXR1cyA9IGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UsIGV4dEZpbGVvYmopIHtcbiAgICB2YXIgcHJldlN0YXR1cyA9IGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXM7XG4gICAgdmFyIG5leHRTdHN0YXVzID0gZXh0RmlsZW9iai51cGxvYWRTdGF0dXM7XG4gICAgLy9jb25zb2xlLmxvZyhcInNldE5leHRVcGxvYWRTdGF0dXNcIiwgcHJldlN0YXR1cywgbmV4dFN0c3RhdXMpO1xuICAgIC8vY29uc29sZS5sb2coXCJzZXROZXh0VXBsb2FkU3RhdHVzXCIsIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlLCBleHRGaWxlb2JqLnVwbG9hZE1lc3NhZ2UpO1xuICAgIGlmIChwcmV2U3RhdHVzID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgIFtcImFib3J0ZWRcIiwgdW5kZWZpbmVkXS5pbmNsdWRlcyhuZXh0U3RzdGF1cykpIHtcbiAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBleHRGaWxlb2JqLnVwbG9hZE1lc3NhZ2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHByZXZTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIgJiZcbiAgICAgICAgW1wiYWJvcnRlZFwiLCB1bmRlZmluZWRdLmluY2x1ZGVzKG5leHRTdHN0YXVzKSkge1xuICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJhYm9ydGVkXCI7XG4gICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gZXh0RmlsZW9iai51cGxvYWRNZXNzYWdlO1xuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGZ1bGwgbGlzdCBvZiBuYW1lZCBDb2xvcnMgcHJvdmlkZWQgYnlcbiAqIGh0dHBzOi8vaHRtbGNvbG9yY29kZXMuY29tL2VzL25vbWJyZXMtZGUtbG9zLWNvbG9yZXMvXG4gKi9cbnZhciBOQU1FRF9DT0xPUlMgPSB7XG4gICAgLy9SRURcbiAgICBpbmRpYW5yZWQ6IFwiI0NENUM1Q1wiLFxuICAgIGxpZ2h0Y29yYWw6IFwiI0YwODA4MFwiLFxuICAgIHNhbG1vbjogXCIjRkE4MDcyXCIsXG4gICAgZGFya3NhbG1vbjogXCIjRTk5NjdBXCIsXG4gICAgbGlnaHRzYWxtb246IFwiI0ZGQTA3QVwiLFxuICAgIGNyaW1zb246IFwiI0RDMTQzQ1wiLFxuICAgIHJlZDogXCIjRkYwMDAwXCIsXG4gICAgZmlyZWJyaWNrOiBcIiNCMjIyMjJcIixcbiAgICBkYXJrcmVkOiBcIiM4QjAwMDBcIixcbiAgICAvL1BJTktcbiAgICBwaW5rOiBcIiNGRkMwQ0JcIixcbiAgICBsaWdodHBpbms6IFwiI0ZGQjZDMVwiLFxuICAgIGhvdHBpbms6IFwiI0ZGNjlCNFwiLFxuICAgIGRlZXBwaW5rOiBcIiNGRjE0OTNcIixcbiAgICBtZWRpdW12aW9sZXRyZWQ6IFwiI0M3MTU4NVwiLFxuICAgIHBhbGV2aW9sZXRyZWQ6IFwiI0RCNzA5M1wiLFxuICAgIC8vT1JBTkdFXG4gICAgLy9cImxpZ2h0c2FsbW9uOiBcIiNGRkEwN0FcIixcbiAgICBjb3JhbDogXCIjRkY3RjUwXCIsXG4gICAgdG9tYXRvOiBcIiNGRjYzNDdcIixcbiAgICBvcmFuZ2VyZWQ6IFwiI0ZGNDUwMFwiLFxuICAgIGRhcmtvcmFuZ2U6IFwiI0ZGOEMwMFwiLFxuICAgIG9yYW5nZTogXCIjRkZBNTAwXCIsXG4gICAgLy9ZRUxMT1dcbiAgICBnb2xkOiBcIiNGRkQ3MDBcIixcbiAgICB5ZWxsb3c6IFwiI0ZGRkYwMFwiLFxuICAgIGxpZ2h0eWVsbG93OiBcIiNGRkZGRTBcIixcbiAgICBsZW1vbmNoaWZmb246IFwiI0ZGRkFDRFwiLFxuICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiBcIiNGQUZBRDJcIixcbiAgICBwYXBheWF3aGlwOiBcIiNGRkVGRDVcIixcbiAgICBtb2NjYXNpbjogXCIjRkZFNEI1XCIsXG4gICAgcGVhY2hwdWZmOiBcIiNGRkRBQjlcIixcbiAgICBwYWxlZ29sZGVucm9kOiBcIiNFRUU4QUFcIixcbiAgICBraGFraTogXCIjRjBFNjhDXCIsXG4gICAgZGFya2toYWtpOiBcIiNCREI3NkJcIixcbiAgICAvL1BVUlBMRVxuICAgIGxhdmVuZGVyOiBcIiNFNkU2RkFcIixcbiAgICB0aGlzdGxlOiBcIiNEOEJGRDhcIixcbiAgICBwbHVtOiBcIiNEREEwRERcIixcbiAgICB2aW9sZXQ6IFwiI0VFODJFRVwiLFxuICAgIG9yY2hpZDogXCIjREE3MEQ2XCIsXG4gICAgZnVjaHNpYTogXCIjRkYwMEZGXCIsXG4gICAgbWFnZW50YTogXCIjRkYwMEZGXCIsXG4gICAgbWVkaXVtb3JjaGlkOiBcIiNCQTU1RDNcIixcbiAgICBtZWRpdW1wdXJwbGU6IFwiIzkzNzBEQlwiLFxuICAgIHJlYmVjY2FwdXJwbGU6IFwiIzY2MzM5OVwiLFxuICAgIGJsdWV2aW9sZXQ6IFwiIzhBMkJFMlwiLFxuICAgIGRhcmt2aW9sZXQ6IFwiIzk0MDBEM1wiLFxuICAgIGRhcmtvcmNoaWQ6IFwiIzk5MzJDQ1wiLFxuICAgIGRhcmttYWdlbnRhOiBcIiM4QjAwOEJcIixcbiAgICBwdXJwbGU6IFwiIzgwMDA4MFwiLFxuICAgIGluZGlnbzogXCIjNEIwMDgyXCIsXG4gICAgc2xhdGVibHVlOiBcIiM2QTVBQ0RcIixcbiAgICBkYXJrc2xhdGVibHVlOiBcIiM0ODNEOEJcIixcbiAgICBtZWRpdW1zbGF0ZWJsdWU6IFwiIzdCNjhFRVwiLFxuICAgIC8vR1JFRU5cbiAgICBncmVlbnllbGxvdzogXCIjQURGRjJGXCIsXG4gICAgY2hhcnRyZXVzZTogXCIjN0ZGRjAwXCIsXG4gICAgbGF3bmdyZWVuOiBcIiM3Q0ZDMDBcIixcbiAgICBsaW1lOiBcIiMwMEZGMDBcIixcbiAgICBsaW1lZ3JlZW46IFwiIzMyQ0QzMlwiLFxuICAgIHBhbGVncmVlbjogXCIjOThGQjk4XCIsXG4gICAgbGlnaHRncmVlbjogXCIjOTBFRTkwXCIsXG4gICAgbWVkaXVtc3ByaW5nZ3JlZW46IFwiIzAwRkE5QVwiLFxuICAgIHNwcmluZ2dyZWVuOiBcIiMwMEZGN0ZcIixcbiAgICBtZWRpdW1zZWFncmVlbjogXCIjM0NCMzcxXCIsXG4gICAgc2VhZ3JlZW46IFwiIzJFOEI1N1wiLFxuICAgIGZvcmVzdGdyZWVuOiBcIiMyMjhCMjJcIixcbiAgICBncmVlbjogXCIjMDA4MDAwXCIsXG4gICAgZGFya2dyZWVuOiBcIiMwMDY0MDBcIixcbiAgICB5ZWxsb3dncmVlbjogXCIjOUFDRDMyXCIsXG4gICAgb2xpdmVkcmFiOiBcIiM2QjhFMjNcIixcbiAgICBvbGl2ZTogXCIjODA4MDAwXCIsXG4gICAgZGFya29saXZlZ3JlZW46IFwiIzU1NkIyRlwiLFxuICAgIG1lZGl1bWFxdWFtYXJpbmU6IFwiIzY2Q0RBQVwiLFxuICAgIGRhcmtzZWFncmVlbjogXCIjOEZCQzhCXCIsXG4gICAgbGlnaHRzZWFncmVlbjogXCIjMjBCMkFBXCIsXG4gICAgZGFya2N5YW46IFwiIzAwOEI4QlwiLFxuICAgIHRlYWw6IFwiIzAwODA4MFwiLFxuICAgIC8vQkxVRVxuICAgIGFxdWE6IFwiIzAwRkZGRlwiLFxuICAgIGN5YW46IFwiIzAwRkZGRlwiLFxuICAgIGxpZ2h0Y3lhbjogXCIjRTBGRkZGXCIsXG4gICAgcGFsZXR1cnF1b2lzZTogXCIjQUZFRUVFXCIsXG4gICAgYXF1YW1hcmluZTogXCIjN0ZGRkQ0XCIsXG4gICAgdHVycXVvaXNlOiBcIiM0MEUwRDBcIixcbiAgICBtZWRpdW10dXJxdW9pc2U6IFwiIzQ4RDFDQ1wiLFxuICAgIGRhcmt0dXJxdW9pc2U6IFwiIzAwQ0VEMVwiLFxuICAgIGNhZGV0Ymx1ZTogXCIjNUY5RUEwXCIsXG4gICAgc3RlZWxibHVlOiBcIiM0NjgyQjRcIixcbiAgICBsaWdodHN0ZWVsYmx1ZTogXCIjQjBDNERFXCIsXG4gICAgcG93ZGVyYmx1ZTogXCIjQjBFMEU2XCIsXG4gICAgbGlnaHRibHVlOiBcIiNBREQ4RTZcIixcbiAgICBza3libHVlOiBcIiM4N0NFRUJcIixcbiAgICBsaWdodHNreWJsdWU6IFwiIzg3Q0VGQVwiLFxuICAgIGRlZXBza3libHVlOiBcIiMwMEJGRkZcIixcbiAgICBkb2RnZXJibHVlOiBcIiMxRTkwRkZcIixcbiAgICBjb3JuZmxvd2VyYmx1ZTogXCIjNjQ5NUVEXCIsXG4gICAgLy9cIm1lZGl1bXNsYXRlYmx1ZTogXCIjN0I2OEVFXCIsXG4gICAgcm95YWxibHVlOiBcIiM0MTY5RTFcIixcbiAgICBibHVlOiBcIiMwMDAwRkZcIixcbiAgICBtZWRpdW1ibHVlOiBcIiMwMDAwQ0RcIixcbiAgICBkYXJrYmx1ZTogXCIjMDAwMDhCXCIsXG4gICAgbmF2eTogXCIjMDAwMDgwXCIsXG4gICAgbWlkbmlnaHRibHVlOiBcIiMxOTE5NzBcIixcbiAgICAvL0JST1dOXG4gICAgY29ybnNpbGs6IFwiI0ZGRjhEQ1wiLFxuICAgIGJsYW5jaGVkYWxtb25kOiBcIiNGRkVCQ0RcIixcbiAgICBiaXNxdWU6IFwiI0ZGRTRDNFwiLFxuICAgIG5hdmFqb3doaXRlOiBcIiNGRkRFQURcIixcbiAgICB3aGVhdDogXCIjRjVERUIzXCIsXG4gICAgYnVybHl3b29kOiBcIiNERUI4ODdcIixcbiAgICB0YW46IFwiI0QyQjQ4Q1wiLFxuICAgIHJvc3licm93bjogXCIjQkM4RjhGXCIsXG4gICAgc2FuZHlicm93bjogXCIjRjRBNDYwXCIsXG4gICAgZ29sZGVucm9kOiBcIiNEQUE1MjBcIixcbiAgICBkYXJrZ29sZGVucm9kOiBcIiNCODg2MEJcIixcbiAgICBwZXJ1OiBcIiNDRDg1M0ZcIixcbiAgICBjaG9jb2xhdGU6IFwiI0QyNjkxRVwiLFxuICAgIHNhZGRsZWJyb3duOiBcIiM4QjQ1MTNcIixcbiAgICBzaWVubmE6IFwiI0EwNTIyRFwiLFxuICAgIGJyb3duOiBcIiNBNTJBMkFcIixcbiAgICBtYXJvb246IFwiIzgwMDAwMFwiLFxuICAgIC8vV0hJVEVcbiAgICB3aGl0ZTogXCIjRkZGRkZGXCIsXG4gICAgc25vdzogXCIjRkZGQUZBXCIsXG4gICAgaG9uZXlkZXc6IFwiI0YwRkZGMFwiLFxuICAgIG1pbnRjcmVhbTogXCIjRjVGRkZBXCIsXG4gICAgYXp1cmU6IFwiI0YwRkZGRlwiLFxuICAgIGFsaWNlYmx1ZTogXCIjRjBGOEZGXCIsXG4gICAgZ2hvc3R3aGl0ZTogXCIjRjhGOEZGXCIsXG4gICAgd2hpdGVzbW9rZTogXCIjRjVGNUY1XCIsXG4gICAgc2Vhc2hlbGw6IFwiI0ZGRjVFRVwiLFxuICAgIGJlaWdlOiBcIiNGNUY1RENcIixcbiAgICBvbGRsYWNlOiBcIiNGREY1RTZcIixcbiAgICBmbG9yYWx3aGl0ZTogXCIjRkZGQUYwXCIsXG4gICAgaXZvcnk6IFwiI0ZGRkZGMFwiLFxuICAgIGFudGlxdWV3aGl0ZTogXCIjRkFFQkQ3XCIsXG4gICAgbGluZW46IFwiI0ZBRjBFNlwiLFxuICAgIGxhdmVuZGVyYmx1c2g6IFwiI0ZGRjBGNVwiLFxuICAgIG1pc3R5cm9zZTogXCIjRkZFNEUxXCIsXG4gICAgLy9HUkVZXG4gICAgZ2FpbnNib3JvOiBcIiNEQ0RDRENcIixcbiAgICBsaWdodGdyYXk6IFwiI0QzRDNEM1wiLFxuICAgIHNpbHZlcjogXCIjQzBDMEMwXCIsXG4gICAgZGFya2dyYXk6IFwiI0E5QTlBOVwiLFxuICAgIGdyYXk6IFwiIzgwODA4MFwiLFxuICAgIGRpbWdyYXk6IFwiIzY5Njk2OVwiLFxuICAgIGxpZ2h0c2xhdGVncmF5OiBcIiM3Nzg4OTlcIixcbiAgICBzbGF0ZWdyYXk6IFwiIzcwODA5MFwiLFxuICAgIGRhcmtzbGF0ZWdyYXk6IFwiIzJGNEY0RlwiLFxuICAgIGJsYWNrOiBcIiMwMDAwMDBcIlxufTtcblxuLyoqXG4gKiBNYWtlIHRoZSBjb2xvciBpbnRvIGEgZGFya2VyIGNvbG9yXG4gKiBAcGFyYW0gY29sb3JJbnB1dFxuICogQHJldHVybnMgdGhlIGRhcmtlZCBjb2xvciBpblxuICovXG52YXIgZGFya2VyQ29sb3IgPSBmdW5jdGlvbiAoY29sb3JJbnB1dCwgcGVyY2VudGFnZSkge1xuICAgIGlmIChwZXJjZW50YWdlID09PSB2b2lkIDApIHsgcGVyY2VudGFnZSA9IDI1OyB9XG4gICAgdmFyIGRhcmtlZENvbG9yID0gXCJcIjtcbiAgICB2YXIgcmVkdWNlID0gKDEwMCAtIHBlcmNlbnRhZ2UpIC8gMTAwO1xuICAgIHZhciBjb21wb25lbnQxID0gMDtcbiAgICB2YXIgY29tcG9uZW50MiA9IDA7XG4gICAgdmFyIGNvbXBvbmVudDMgPSAwO1xuICAgIGlmIChpc0hleENvbG9yKGNvbG91ck5hbWVUb0hleChjb2xvcklucHV0KSkpIHtcbiAgICAgICAgY29tcG9uZW50MSA9IGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDEpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoMikpO1xuICAgICAgICBjb21wb25lbnQyID0gaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoMykpICogMTYgKyBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCg0KSk7XG4gICAgICAgIGNvbXBvbmVudDMgPSBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCg1KSkgKiAxNiArIGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDYpKTtcbiAgICAgICAgZGFya2VkQ29sb3IgPSBcInJnYihcIi5jb25jYXQoY29tcG9uZW50MSAqIHJlZHVjZSwgXCIsIFwiKS5jb25jYXQoY29tcG9uZW50MiAqIHJlZHVjZSwgXCIsXCIpLmNvbmNhdChjb21wb25lbnQzICogcmVkdWNlLCBcIilcIik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoY29sb3JJbnB1dC5pbmNsdWRlcyhcInJnYmFcIikpIHtcbiAgICAgICAgICAgIHZhciBzbGljZXIgPSBjb2xvcklucHV0LnJlcGxhY2UoXCJyZ2JhKFwiLCBcIlwiKTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gc2xpY2VyLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIGRhcmtlZENvbG9yID0gXCJyZ2IoXCIuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMF0sIDEwKSAqIHJlZHVjZSwgXCIsIFwiKS5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1sxXSwgMTApICogcmVkdWNlLCBcIixcIikuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMl0sIDEwKSAqIHJlZHVjZSwgXCIpXCIpO1xuICAgICAgICAgICAgLy9yZXR1cm4gZGFya2VkQ29sb3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29sb3JJbnB1dC5pbmNsdWRlcyhcInJnYlwiKSkge1xuICAgICAgICAgICAgdmFyIHNsaWNlciA9IGNvbG9ySW5wdXQucmVwbGFjZShcInJnYihcIiwgXCJcIik7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50cyA9IHNsaWNlci5zcGxpdChcIixcIik7XG4gICAgICAgICAgICBkYXJrZWRDb2xvciA9IFwicmdiKFwiLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzBdLCAxMCkgKiByZWR1Y2UsIFwiLCBcIikuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMV0sIDEwKSAqIHJlZHVjZSwgXCIsXCIpLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzJdLCAxMCkgKiByZWR1Y2UsIFwiKVwiKTtcbiAgICAgICAgICAgIC8vIHJldHVybiBkYXJrZWRDb2xvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGFya2VkQ29sb3I7XG59O1xuLyoqXG4gKiBJbiBvcmRlciB0byBtYW5hZ2FlIHJnYmEoKSB3ZSBjb252ZXJ0IGhleCBjb2xvcnMgaW50byByZ2JhKClcbiAqIElmIHRoZSBnaXZlbiBjb2xvciBpcyBhbHJlYWR5IGEgcmdiKCkgY29sb3IsIGl0IGNhbiBhZGQgdGhlIHBlcmNlbnRhZ2UgdG8gY29udmVydCBpdCBpbnRvIHJnYmEoKVxuICpcbiAqXG4gKiBAcGFyYW0gY29sb3JJbnB1dCBjb2xvciBpbiBoZXggb3IgaW4gcmdiXG4gKiBAcGFyYW0gcGVyYyBwZXJjZW50YWdlIGZvciBSR0JBKCkgY29sb3JcbiAqIEByZXR1cm5zIHRoZSByZ2JhIHJlcHJlc2VudGF0aW9uIG9mIGEgaGV4IGNvbG9yXG4gKi9cbnZhciBoZXhDb2xvclRvUkdCID0gZnVuY3Rpb24gKGNvbG9ySW5wdXQsIHBlcmMsIGRlZmF1bHRDb2xvcikge1xuICAgIGlmIChwZXJjID09PSB2b2lkIDApIHsgcGVyYyA9IDA7IH1cbiAgICB2YXIgcmVzdWx0RGVmYXVsdCA9IGRlZmF1bHRDb2xvciA/IGRlZmF1bHRDb2xvciA6IFwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpXCI7XG4gICAgaWYgKCFjb2xvcklucHV0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHREZWZhdWx0O1xuICAgIH1cbiAgICAvL3dvcmsgb25seSBpbiB1cHBlcmNhc2VcbiAgICB2YXIgY29sb3IgPSBjb2xvcklucHV0LnRvVXBwZXJDYXNlKCk7XG4gICAgLy8gaXMgYWxyZWFkeSBhIHJnYmEgY29sb3JcbiAgICBpZiAoY29sb3IuaW5jbHVkZXMoXCJSR0JBXCIpKSB7XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgLy9yZXR1cm4gcmJnID0+IHJnYmFcbiAgICBpZiAoY29sb3IuaW5jbHVkZXMoXCJSR0JcIikpIHtcbiAgICAgICAgcmV0dXJuIGNvbG9yLnJlcGxhY2UoJ1JHQicsIFwicmdiYVwiKS5yZXBsYWNlKCcpJywgXCIsIFwiLmNvbmNhdChwZXJjLCBcIilcIikpO1xuICAgIH1cbiAgICAvLyBpZiBpcyBhIGhleCBjb2xvciBvciBuYW1lZCBjb2xvclxuICAgIGlmICghaXNIZXhDb2xvcihjb2xvdXJOYW1lVG9IZXgoY29sb3IpKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0RGVmYXVsdDtcbiAgICB9XG4gICAgdmFyIHJlc3VsdE9rID0gXCJcIjtcbiAgICAvL2xldCBzdHJWYXI6IHN0cmluZyA9IFwiXCI7XG4gICAgdmFyIGNvbXBvbmVudDEgPSAwO1xuICAgIHZhciBjb21wb25lbnQyID0gMDtcbiAgICB2YXIgY29tcG9uZW50MyA9IDA7XG4gICAgLy9JZiBwYXNzZWQgYWxsIHZhbGlkYXRpb25zLCBwcm9jZWVkIHRvIHRyYW5zZm9ybVxuICAgIGNvbXBvbmVudDEgPSBoZXhUb2RlYyhjb2xvci5jaGFyQXQoMSkpICogMTYgKyBoZXhUb2RlYyhjb2xvci5jaGFyQXQoMikpO1xuICAgIGNvbXBvbmVudDIgPSBoZXhUb2RlYyhjb2xvci5jaGFyQXQoMykpICogMTYgKyBoZXhUb2RlYyhjb2xvci5jaGFyQXQoNCkpO1xuICAgIGNvbXBvbmVudDMgPSBoZXhUb2RlYyhjb2xvci5jaGFyQXQoNSkpICogMTYgKyBoZXhUb2RlYyhjb2xvci5jaGFyQXQoNikpO1xuICAgIHJlc3VsdE9rID0gXCJyZ2JhKFwiLmNvbmNhdChjb21wb25lbnQxLCBcIiwgXCIpLmNvbmNhdChjb21wb25lbnQyLCBcIixcIikuY29uY2F0KGNvbXBvbmVudDMsIFwiICwgXCIpLmNvbmNhdChwZXJjLCBcIilcIik7XG4gICAgcmV0dXJuIHJlc3VsdE9rO1xufTtcbi8qKlxuICogVmFsaWRhdGVzIHdoZXRlaGVyIHRoZSBjb2xvciBpcyBoZXhhZGVjaW1hbCBjc3MgY29sb3JcbiAqIEV4YW1wbGU6ICAjRkY1NkFDXG4gKlxuICpcbiAqIEBwYXJhbSBjb2xvcklucHV0IHRoZSBjb2xvciBpbnB0IHRvIHRlc3RcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGlucHV0Q29sb3IgaXMgYSBoZXhhZGVjaW1hbCBjc3MgY29sb3JcbiAqL1xudmFyIGlzSGV4Q29sb3IgPSBmdW5jdGlvbiAoY29sb3JJbnB1dCkge1xuICAgIC8vIGlmIGZpcnN0IGVsZW1lbnQgaXMgbm8gJyMnIHJldHVybiBkZWZhdWx0IGJhY2tncm91bmQgY29sb3JcbiAgICBpZiAoY29sb3JJbnB1dC5jaGFyQXQoMCkgIT09ICcjJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGlmIGNvbG9yIGxlbmdodCBpcyBub3QgZXhhY3RseSA3IHJldHVybiBkZWZhdWx0XG4gICAgaWYgKGNvbG9ySW5wdXQubGVuZ3RoICE9PSA3KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaWYgb25lIG9mIHRoZSBsZXR0ZXJzIGlzIG5vdCBpbmNsdWRlZCBpbiBoZXggYXJyYXkgcmV0dXJuICBkZWZhdWx0XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBjb2xvcklucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaGV4QXJyYXkuaW5jbHVkZXMoY29sb3JJbnB1dC5jaGFyQXQoaSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuLyoqXG4gKiBDb252ZXJ0cyBhIG5hbWVkIGNvbG9yIGludG8gaGV4YWRlY2ltYWwgY29sb3JcbiAqIGZyb20gYSBsaXN0IG9mIHdlbGwga25vd24gbmFtZCBjb2xvcnMgaWYgZm91bmQuXG4gKiBXaGVuIG5vdCBnaXZlbiByZXR1cm5zIGEgXCJcIlxuICogV2hlbiBub3QgZm91bmQgaW4gdGhlIGxpc3QsIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgZ2l2ZW5cbiAqIEBwYXJhbSBjb2xvdXIgdGhlIG5hbWVkIGNvbG9yXG4gKiBAcmV0dXJucyBUaGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb2xvciBvciBcIlwiIG9yIHRoZSBzYW1lIGNvbG9yXG4gKi9cbmZ1bmN0aW9uIGNvbG91ck5hbWVUb0hleChjb2xvdXIpIHtcbiAgICAvKipcbiAgICAgKiBXaGVuIG5vdCBnaXZlblxuICAgICAqL1xuICAgIGlmICghY29sb3VyKSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiB3aGVuIG5hbWVkIGNvbG9yIGlzIGZvdW5kXG4gICAgICovXG4gICAgaWYgKE5BTUVEX0NPTE9SU1tjb2xvdXIudG9Mb2NhbGVMb3dlckNhc2UoKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gTkFNRURfQ09MT1JTW2NvbG91ci50b0xvY2FsZUxvd2VyQ2FzZSgpXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgbmFtZWQgY29sb3Igd2FzIG5vdCBmb3VuZFxuICAgICAqL1xuICAgIHJldHVybiBjb2xvdXI7XG59XG4vKipcbiAqIGhleEFycmF5ICYgZGVjQXJyYXlcbiAqXG4gKiBhcnJheXMgb2YgbnVtYmVycyB1c2VkIHRvIGNvbnZlcnQgaGV4YWRlY2ltYWwgbnVtYmVycyBpbnRvIGRlY2ltYWwgYW5kIHZpY2V2ZXJzYVxuICovXG52YXIgaGV4QXJyYXkgPSBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnXTtcbnZhciBkZWNBcnJheSA9IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XTtcbi8qKlxuICogQ29udmVydHMgaGV4IG51bWJlciBpbiBzdHJpbmcgcmVwcmVzZW50YXRpb24gdG8gZGVjaW1hbCBudW1iZXJcbiAqXG4gKlxuICogQHBhcmFtIGxldHRlciB0aGUgc3RyaW5nIGhleCBudW1iZXJcbiAqIEByZXR1cm5zIGEgZGVjaW1hbCBudW1iZXJcbiAqL1xudmFyIGhleFRvZGVjID0gZnVuY3Rpb24gKGxldHRlcikge1xuICAgIGlmIChoZXhBcnJheS5pbmNsdWRlcyhsZXR0ZXIpKSB7XG4gICAgICAgIHJldHVybiBkZWNBcnJheVtoZXhBcnJheS5pbmRleE9mKGxldHRlcildO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxufTtcbi8qKlxuICogQXN1cmUgYSBiYXNlIGNvbG9yLiBXaGVuIG5vdCBnaXZlbiBvciB3aGVuIGdpdmVuIGFuIGluY29ycmVjdCBjb2xvciBmb3JtYXRcbiAqIGRlZmF1bHQgY29sb3IgaXMgdGhpcyBraW5kIG9mIGdyZXkgIzVkNjQ3NVxuICpcbiAqIEBwYXJhbSBjb2xvciBwYXJhbSBjb2xvciBnaXZlbiBieSB1c2VyXG4gKiBAcmV0dXJucyByZXR1cm5zIHRoZSBzYW1lIGNvbG9yXG4gKi9cbnZhciBhc3VyZUNvbG9yID0gZnVuY3Rpb24gKGNvbG9yKSB7XG4gICAgaWYgKGNvbG9yICE9PSB1bmRlZmluZWQgJiYgY29sb3IgIT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfRk9OVF9DT0xPUjtcbiAgICB9XG59O1xuLyoqXG4gKiBBc3VyZSBhIGJhc2UgY29sb3IuIFdoZW4gbm90IGdpdmVuIG9yIHdoZW4gZ2l2ZW4gYW4gaW5jb3JyZWN0IGNvbG9yIGZvcm1hdFxuICogZGVmYXVsdCBjb2xvciBpcyB0aGlzIGtpbmQgb2YgZ3JleSAjNWQ2NDc1XG4gKlxuICogQHBhcmFtIGNvbG9yIHBhcmFtIGNvbG9yIGdpdmVuIGJ5IHVzZXJcbiAqIEByZXR1cm5zIHJldHVybnMgdGhlIHNhbWUgY29sb3JcbiAqL1xudmFyIGNvbXBsZXRlQXN1cmVDb2xvciA9IGZ1bmN0aW9uIChjb2xvciwgcGVyYykge1xuICAgIGlmIChwZXJjID09PSB2b2lkIDApIHsgcGVyYyA9IDE7IH1cbiAgICByZXR1cm4gaGV4Q29sb3JUb1JHQihhc3VyZUNvbG9yKGNvbG91ck5hbWVUb0hleChjb2xvcikpLCBwZXJjKTtcbn07XG52YXIgREVGQVVMVF9GT05UX0NPTE9SID0gXCIjNjQ2YzdmXCI7XG5cbnZhciBleHRGaWxlUmVjb25jaWxhdGlvbiA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBleHRGaWxlSW5jb21taW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBhcnJPZkV4dEZpbGVzID0gRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdChkcm9wem9uZUlkKTtcbiAgICAvLyBjb250aW51ZSBvbmx5IGlmIGFyck9mRXh0RmlsZXMgZXhpc3RzXG4gICAgaWYgKGFyck9mRXh0RmlsZXMpIHtcbiAgICAgICAgLy9kaWZmZXJlbnQgc2l6ZXMgbWVhbnMgdGhlcmUgd2FzIGRlbGV0ZWQgZmlsZXNcbiAgICAgICAgLy9hbHNvIGNhbiBiZSBuZXcgZmlsZXMgdG8gYmUgdXBsb2FkZWRcbiAgICAgICAgLy9uZWVkZWQgYW4gZXh0cmEgZmxhZyB0byBhbGxvdyBhZGQgZmlsZXMgaW4gdGhlIG1pZGRsZSBvZiB1cGxvYWRpbmcgcHJvY2Vzc1xuICAgICAgICAvLyBpZiBuZXcgZmlsZXMgYXJlIGFkZGVkLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgTWFuYWdlclxuICAgICAgICAvLyBvdXRzaWRlIHRoZXkgd2VyZSBhbHJlYWR5IGFkZGVkIHRvIHRoZSBVSVxuICAgICAgICAvLyBpbnNpZGUgRHJvcHpvbmUsIHdpbGwgYmUgbmVlZGVkIGEgLm5leHQoKSBtZXRob2QgZm9yIG1hbmFnZXJcbiAgICAgICAgLy8gMXN0IGFsbG93IGRlbGV0ZWQgZmlsZXMgYW5kIGlnbm9yZSBuZXcgb25lc1xuICAgICAgICAvLyByZWR1Y2UgdGhlIGFyck9mRXh0RmlsZUluc3RhbmNlcyBhcnJheVxuICAgICAgICAvLyBwYXJlY2lkbyBhIGxpc3RhcyBsaWdhZGFzLCBpdGVyYXIgaGFzdGEgZW5jb250cmFyIG51bGwgWERcbiAgICAgICAgdmFyIGluY29tbWluZ1RlbXAgPSBfX3NwcmVhZEFycmF5KFtdLCBleHRGaWxlSW5jb21taW5nLCB0cnVlKTtcbiAgICAgICAgaW5jb21taW5nVGVtcCA9IGluY29tbWluZ1RlbXAuZmlsdGVyKGZ1bmN0aW9uIChGKSB7IHJldHVybiAoYXJyT2ZFeHRGaWxlcyA9PT0gbnVsbCB8fCBhcnJPZkV4dEZpbGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJPZkV4dEZpbGVzLmZpbmRJbmRleChmdW5jdGlvbiAoSSkgeyByZXR1cm4gSS5pZCA9PT0gRi5pZDsgfSkpID09PSAtMTsgfSk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJyZWNvbmNpbGlhdGlvbiBpbmNvbW1pbmdUZW1wXCIsIGluY29tbWluZ1RlbXApO1xuICAgICAgICAvL2RpZmZlcmVudCBzaXplcyBub3QgYWxsb3dlZFxuICAgICAgICBpZiAoYXJyT2ZFeHRGaWxlcy5sZW5ndGggIT09IGV4dEZpbGVJbmNvbW1pbmcubGVuZ3RoIHx8IGV4dEZpbGVJbmNvbW1pbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyT2ZFeHRGaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKChleHRGaWxlSW5jb21taW5nW2ldLnVwbG9hZFN0YXR1cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgIChhcnJPZkV4dEZpbGVzW2ldLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIgb25DYW5jZWwgaVwiLCBpKTtcbiAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzW2ldLnVwbG9hZFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBNZXJnZSBwcm9wcyB0aGF0IGNvbWUgZm9ybSB1c2VyIGFuZCB0aG9zZSBvbmVzIHRoYXQgYXJlIGJ5IGRlZmF1bHRcbiAqIGlmIGluY29tbWluZ1Byb3BzIGlzIG51bGwgdGhpcyByZXR1cm5zIHRoZSBkZWZhdWx0IHByb3BzIHZhbHVlXG4gKlxuICogQHBhcmFtIGluY29tbWluZ1Byb3BzIHByb3AgdGhhdCBjb21lcyBmcm9tIHByb3BzIGF0dHJpYnV0b28gb2YgYSBSZWFjdCBOb2RlXG4gKiBAcGFyYW0gZGVmYXVsdFByb3BzIGRlZmF1bHQgcHJvcCBkZWZpbmVkIGZvciB0aGF0ICBSZWFjdCBOb2RlXG4gKiBAcmV0dXJucyBtZXJnZWQgcHJvcHNcbiAqL1xuZnVuY3Rpb24gbWVyZ2VQcm9wcyhpbmNvbW1pbmdQcm9wcywgZGVmYXVsdFByb3BzKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcImluY29tbWluZ1Byb3BzXCIsaW5jb21taW5nUHJvcHMpO1xuICAgIGlmICghaW5jb21taW5nUHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRQcm9wcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIGRlZmF1bHRQcm9wcyksIGluY29tbWluZ1Byb3BzKTtcbiAgICB9XG59XG5cbnZhciBJbnB1dEhpZGRlbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlLCBpbnB1dFJlZiA9IHByb3BzLmlucHV0UmVmLCBhY2NlcHQgPSBwcm9wcy5hY2NlcHQsIG11bHRpcGxlID0gcHJvcHMubXVsdGlwbGU7XG4gICAgLyogZnVuY3Rpb24gaGFuZGxlQ2xpY2s8VCBleHRlbmRzIEhUTUxJbnB1dEVsZW1lbnQ+KFxuICAgICAgZXZ0OiBSZWFjdC5Nb3VzZUV2ZW50PFQsIE1vdXNlRXZlbnQ+XG4gICAgKTogdm9pZCB7XG4gICAgICBoYW5kbGVDbGlja1V0aWwoZXZ0KTtcbiAgICB9ICovXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgeyBcImFyaWEtbGFiZWxcIjogXCJmdWktaGlkZGVuLWlucHV0XCIsIHN0eWxlOiB7IGRpc3BsYXk6IFwibm9uZVwiIH0sIHJlZjogaW5wdXRSZWYsIG9uQ2hhbmdlOiBvbkNoYW5nZSwgdHlwZTogXCJmaWxlXCIsIGFjY2VwdDogYWNjZXB0LCBtdWx0aXBsZTogbXVsdGlwbGUgfSkpKTtcbn07XG5cbnZhciBkZWZhdWx0RHJvem9uZVByb3BzID0ge1xuICAgIGNsaWNrYWJsZTogdHJ1ZSxcbiAgICBiZWhhdmlvdXI6IFwiYWRkXCIsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGRyb3BPbkxheWVyOiB0cnVlLFxuICAgIHVwbG9hZENvbmZpZzoge30sXG4gICAgYWN0aW9uQnV0dG9uczoge30sXG4gICAgaGVhZGVyOiB0cnVlLFxuICAgIGZvb3RlcjogdHJ1ZSxcbiAgICB2YWx1ZTogW10sXG4gICAgLy9ib3JkZXJSYWRpdXM6IFwiOHB4XCJcbn07XG52YXIgREVGQVVMVF9CT1JERVJfUkFESVVTID0gXCI4cHhcIjtcbi8qXG5leHBvcnQgaW50ZXJmYWNlIEFkdmFuY2VkQ29uZmlnSXRlbSB7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEcm9wem9uZUFkdmFuY2VkQ29uZmlnID0ge1xuICBkcm9wem9uZUxheWVyOiBhbnk7XG4gIGRyb3B6b25lQ29udGFpbmVyOiBhbnk7XG4gIGRyb3B6b25lTGFiZWw6IGFueTtcbn1cbiAqL1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZHJvcHpvbmUtY2hpbGRyZW4tY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZmxleC1ncm93OiAxO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGdhcDogOHB4O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAgcGFkZGluZzogNXB4IDA7XFxufVwiKTtcblxudmFyIERyb3B6b25lQ2hpbGRyZW4gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgbGFiZWwgPSBwcm9wcy5sYWJlbCwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uO1xuICAgIHZhciBpc0VtcHR5QXJyYXkgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgLy9jb25zb2xlLmxvZyhcImlzRW1wdHlBcnJheVwiLCBpc0VtcHR5QXJyYXksY2hpbGRyZW4pO1xuICAgIHZhciBEcm9wem9uZUxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICAvL2NoaWxkcmVuIHdpbGwgYmUgYWx3YXlzIGNvbnNpZGVyIGFzIG1vcmUgaW1wb3J0YW50XG4gICAgaWYgKGNoaWxkcmVuICYmICFpc0VtcHR5QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWRyb3B6b25lLWNoaWxkcmVuLWNvbnRhaW5lclwiIH0sIGNoaWxkcmVuKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWRyb3B6b25lLWNoaWxkcmVuLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwgbnVsbCxcbiAgICAgICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgICAgICBsYWJlbCB8fCBEcm9wem9uZUxvY2FsaXplci5kZWZhdWx0TGFiZWwpKSk7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zIHN0b3BQcm9wYWdhdGlvbiBhbmQgcHJldmVudERlZmF1bHQgZnVuY3Rpb25zIG9uIGFuIGRyb3AgZXZlbnQgaW5zdGFuY2VcbiAqIEBwYXJhbSBldnQgZHJhZyBldmVudCBoYW5kbGVyIG9iamVjdFxuICovXG52YXIgaGFuZGxlRHJvcFV0aWwgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xufTtcbi8qKlxuICogUGVyZm9ybXMgc3RvcFByb3BhZ2F0aW9uIGFuZCBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvbnMgb24gYW4gZHJvcCBldmVudCBpbnN0YW5jZVxuICogYW5kIGFsc28gc3BlY2lmaWVzIHRoYXQgdGhlIGRyb3AgZWZmZWN0IGlzIGxpbmtcbiAqIEBwYXJhbSBldnQgZHJhZyBldmVudCBoYW5kbGVyIG9iamVjdFxuICovXG52YXIgaGFuZGxlRHJhZ1V0aWwgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgZXZ0LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gXCJsaW5rXCI7XG4gICAgaGFuZGxlRHJvcFV0aWwoZXZ0KTtcbn07XG5cbi8qKlxuICogUGVyZm9ybXMgc3RvcFByb3BhZ2F0aW9uIGFuZCBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvbnMgb24gYW4gY2xpY2sgZXZlbnQgaW5zdGFuY2VcbiAqIEBwYXJhbSBldnQgY2xpY2sgZXZlbnQgaGFuZGxlciBvYmplY3RcbiAqL1xuZnVuY3Rpb24gaGFuZGxlQ2xpY2tVdGlsKGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbn1cbi8qKlxuICogQ2xpY2sgcHJvZ3JhbWF0aWNhbGx5IGFuIGlucHV0IGVsZW1lbnQuXG4gKiBJZiB0aGUgaW5wdXQgZWxlbWVudCBpcyBudWxsLCBub3RoaW5nIHdpbGwgaGFwcGVuZFxuICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBlbGVtZW50IHRhcmdldCB0byBtYWtlIGEgY2xpY2tcbiAqL1xudmFyIGhhbmRsZUNsaWNrSW5wdXQgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICBpZiAoIWlucHV0KVxuICAgICAgICByZXR1cm47XG4gICAgaW5wdXQuY2xpY2soKTtcbn07XG5cbnZhciBhc3VyZVJpcHBsZUNvbG9yID0gZnVuY3Rpb24gKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC40KTtcbn07XG5mdW5jdGlvbiBjcmVhdGVGdWlSaXBwbGVGcm9tRGl2KGZ1aUNvbnRhaW5lckFicywgZnVpQ29udGFpbmVyUmVsLCBjb2xvcikge1xuICAgIGlmICghZnVpQ29udGFpbmVyUmVsIHx8ICFmdWlDb250YWluZXJBYnMpXG4gICAgICAgIHJldHVybjtcbiAgICBmdWlDb250YWluZXJBYnMuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAvL3JlbW92ZVJpcHBsZUlmRXhpc3QoZnVpQ29udGFpbmVyUmVsLCBcImR1aS1yaXBwbGVcIik7XG4gICAgLy8gY3JlYXRpbmcgdGhlIHNwYW4gY2lyY2xlIHJpcHBsZVxuICAgIHZhciBjaXJjbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAvL2ZvciBzZWFyY2hpbmdcbiAgICBjaXJjbGUuaWQgPSBcImZpbGVzdWktcmlwcGxlXCI7XG4gICAgLy9mb3Igc3R5bGVzXG4gICAgY2lyY2xlLmNsYXNzTmFtZSA9IFwicmlwcGxlXCI7XG4gICAgLy8gY2FsY3VsYXRlcyB0aGUgZGlhbWV0ZXJcbiAgICB2YXIgZGlhbWV0ZXIgPSBNYXRoLm1heChmdWlDb250YWluZXJSZWwuY2xpZW50V2lkdGgsIGZ1aUNvbnRhaW5lclJlbC5jbGllbnRIZWlnaHQpO1xuICAgIC8vY29uc3QgcmlwcGxlQ2lyY2xlUmFkaXVzOiBudW1iZXIgPSBkaWFtZXRlciAvIDI7XG4gICAgLy9jb25zb2xlLmxvZyhcIncsaFwiLCBmdWlDb250YWluZXJSZWwuY2xpZW50V2lkdGgsIGZ1aUNvbnRhaW5lclJlbC5jbGllbnRIZWlnaHQpO1xuICAgIGNpcmNsZS5zdHlsZS53aWR0aCA9IGNpcmNsZS5zdHlsZS5oZWlnaHQgPSBcIlwiLmNvbmNhdChkaWFtZXRlciwgXCJweFwiKTtcbiAgICBjaXJjbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYXN1cmVSaXBwbGVDb2xvcihjb2xvcik7XG4gICAgZnVpQ29udGFpbmVyUmVsLmFwcGVuZENoaWxkKGNpcmNsZSk7XG4gICAgLy9yZW1vdmUgdHJhc2hcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZnVpQ29udGFpbmVyQWJzLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgY2lyY2xlID09PSBudWxsIHx8IGNpcmNsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2lyY2xlLnJlbW92ZSgpO1xuICAgIH0sIDUwMSk7XG59XG5mdW5jdGlvbiBjcmVhdGVSaXBwbGVCdXR0b24oZXZlbnQsIHZhcmlhbnQsIGNvbG9yKSB7XG4gICAgdmFyIGJ1dHRvbkFuY2hvckRpdiA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIHZhciBkaWFtZXRlciA9IE1hdGgubWF4KGJ1dHRvbkFuY2hvckRpdi5jbGllbnRXaWR0aCwgYnV0dG9uQW5jaG9yRGl2LmNsaWVudEhlaWdodCk7XG4gICAgLy9jb25zdCByYWRpdXMgPSBkaWFtZXRlciAvIDI7XG4gICAgY2lyY2xlLnN0eWxlLndpZHRoID0gY2lyY2xlLnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KGRpYW1ldGVyLCBcInB4XCIpO1xuICAgIC8qIGNpcmNsZS5zdHlsZS5sZWZ0ID0gYCR7ZXZlbnQuY2xpZW50WCAtIHJhZGl1c1xuICAgICB9cHhgO1xuICAgY2lyY2xlLnN0eWxlLnRvcCA9IGAke2V2ZW50LmNsaWVudFkgLSByYWRpdXNcbiAgICAgfXB4YDsgKi9cbiAgICBjaXJjbGUuY2xhc3NMaXN0LmFkZChcInJpcHBsZVwiKTtcbiAgICBpZiAodmFyaWFudCAhPT0gXCJjb250YWluZWRcIikge1xuICAgICAgICBjaXJjbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYXN1cmVSaXBwbGVDb2xvcihjb2xvcik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjaXJjbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gaGV4Q29sb3JUb1JHQihcIiNmZmZmZmZcIiwgMC40KTtcbiAgICB9XG4gICAgYnV0dG9uQW5jaG9yRGl2LmFwcGVuZENoaWxkKGNpcmNsZSk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNpcmNsZSA9PT0gbnVsbCB8fCBjaXJjbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNpcmNsZS5yZW1vdmUoKTtcbiAgICB9LCA1MDEpO1xufVxuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXN1aS1kaXNhYmxlZC1yb290IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcXG59XCIpO1xuXG52YXIgRHJvcHpvbmVEaXNhYmxlZExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9wZW4gPSBwcm9wcy5vcGVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHN0eWxlID0gcHJvcHMuc3R5bGU7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZ0KSB7XG4gICAgICAgIGhhbmRsZUNsaWNrVXRpbChldnQpO1xuICAgIH1cbiAgICB2YXIgaGFuZGxlRHJhZyA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgaGFuZGxlRHJhZ1V0aWwoZXZ0KTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVEcm9wID0gZnVuY3Rpb24gKGV2dCkgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIGhhbmRsZURyb3BVdGlsKGV2dCk7XG4gICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIHZhciBmaW5hbERpc2FibGVkTGF5ZXJDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoXCJmaWxlc3VpLWRpc2FibGVkLXJvb3RcIiwgY2xhc3NOYW1lKTtcbiAgICBpZiAob3Blbikge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogc3R5bGUsIGNsYXNzTmFtZTogZmluYWxEaXNhYmxlZExheWVyQ2xhc3NOYW1lLCBvbkRyb3A6IGhhbmRsZURyb3AsIG9uRHJhZ092ZXI6IGhhbmRsZURyYWcsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICB9XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLmZ1aS1kcm9wem9uZS1yb290IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgbWluLXdpZHRoOiAxNTBweDtcXG4gIG1pbi1oZWlnaHQ6IDE4MHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBnYXA6IDAgOHB4O1xcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcXG4gIGZvbnQtc2l6ZTogMS41ZW07XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgd29yZC1icmVhazogbm9ybWFsO1xcbiAgLyogICYuZnVpLWRyb3B6b25lLWJvcmRlciB7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFxuICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjMGMyMzU4O1xcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICAmLmZ1aS1oaWRlLWJvcmRlciB7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICB9XFxuICB9ICovXFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xcbiAgLmZ1aS1kcm9wem9uZS1yb290IHtcXG4gICAgZm9udC1zaXplOiAxLjNlbTtcXG4gIH1cXG59XFxuLmZ1aS1kcm9wem9uZS1yb290LmNsaWNrYWJsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5maWxlcy11aS1oZWFkZXIge1xcbiAgbWluLWhlaWdodDogMjNweDtcXG4gIC8qICBoZWlnaHQ6IDIycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7IFxcbiAgdG9wOiAwO1xcbiAgKi9cXG4gIGN1cnNvcjogdGV4dDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogOTYwcHgpIHtcXG4gIC5maWxlcy11aS1oZWFkZXIge1xcbiAgICBmb250LXNpemU6IDAuOHJlbTtcXG4gIH1cXG59XFxuXFxuLmZpbGVzLXVpLWZvb3RlciB7XFxuICAvKiAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA4cHg7ICovXFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgLyogaGVpZ2h0OiAyM3B4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDsgKi9cXG4gIHdpZHRoOiAxMDAlO1xcbiAgLyogZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyOyAqL1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMTsgLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgKi9cXG4gIGxpbmUtY2xhbXA6IDE7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KSB7XFxuICAuZmlsZXMtdWktZm9vdGVyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAxcHg7XFxuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xcbiAgfVxcbn1cIik7XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlc3VpLWJhc2UtcmlwcGxlLWFic29sdXRlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGUgLmZpbGVzdWktYmFzZS1yaXBwbGUtcmVsYXRpdmUge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlc3VpLWJhc2UtcmlwcGxlLWFic29sdXRlIC5maWxlc3VpLWJhc2UtcmlwcGxlLXJlbGF0aXZlIHNwYW4ucmlwcGxlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxuICBhbmltYXRpb246IHJpcHBsZSA1MDBtcyBsaW5lYXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxufVxcbkBrZXlmcmFtZXMgcmlwcGxlIHtcXG4gIHRvIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSg0KTtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XCIpO1xuXG4vKipcbiAqIEFkZGVkIHN1cHBvcnQgZm9yIGxpdGVyYWxzICUgYW5kIHB4XG4gKiBAcGFyYW0gc2l6ZVN0clxuICogQHJldHVybnNcbiAqL1xudmFyIHBhcnNlU2l6ZSA9IGZ1bmN0aW9uIChzaXplU3RyKSB7XG4gICAgaWYgKHR5cGVvZiBzaXplU3RyID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBzaXplU3RyO1xuICAgIH1cbiAgICBzd2l0Y2ggKHNpemVTdHIpIHtcbiAgICAgICAgY2FzZSBcIm1pY3JvXCI6XG4gICAgICAgICAgICByZXR1cm4gODtcbiAgICAgICAgY2FzZSBcInNtYWxsXCI6XG4gICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgIGNhc2UgXCJzZW1pLW1lZGl1bVwiOlxuICAgICAgICAgICAgcmV0dXJuIDE4O1xuICAgICAgICBjYXNlIFwibWVkaXVtXCI6XG4gICAgICAgICAgICByZXR1cm4gMjU7XG4gICAgICAgIGNhc2UgXCJsYXJnZVwiOlxuICAgICAgICAgICAgcmV0dXJuIDI4O1xuICAgICAgICBjYXNlIFwiZXh0cmEtbGFyZ2VcIjpcbiAgICAgICAgICAgIHJldHVybiAzMjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAyNDtcbiAgICB9XG59O1xuXG52YXIgQ2FuY2VsID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIsIGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBcIm5vbmVcIiwgb3BhY2l0eTogXCIuODdcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4IDgtMy41OSA4LTgtMy41OS04LTgtOHptNSAxMS41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCIsIGZpbGw6IGNvbG9yRmlsbCA/IGNvbG9yRmlsbCA6IFwibm9uZVwiLCBvcGFjaXR5OiBcIi41XCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTMuNTktMTNMMTIgMTAuNTkgOC40MSA3IDcgOC40MSAxMC41OSAxMiA3IDE1LjU5IDguNDEgMTcgMTIgMTMuNDEgMTUuNTkgMTcgMTcgMTUuNTkgMTMuNDEgMTIgMTcgOC40MXpcIiB9KSkpO1xufTtcblxudmFyIENoZWNrQ2lyY2xlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDB6XCIsIGZpbGw6IGNvbG9yRmlsbCA/IGNvbG9yRmlsbCA6IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6XCIgfSkpKTtcbn07XG5cbnZhciBDbGVhbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGVuYWJsZUJhY2tncm91bmQ6IFwibmV3IDAgMCAyNCAyNFwiLCBoZWlnaHQ6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBcIm5vbmVcIiwgaGVpZ2h0OiBmaW5hbFNpemUgfHwgXCIyNFwiLCB3aWR0aDogZmluYWxTaXplIHx8IFwiMjRcIiB9KSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTYsMTFoLTFWM2MwLTEuMS0wLjktMi0yLTJoLTJDOS45LDEsOSwxLjksOSwzdjhIOGMtMi43NiwwLTUsMi4yNC01LDV2N2gxOHYtN0MyMSwxMy4yNCwxOC43NiwxMSwxNiwxMXogTTExLDNoMnY4aC0yVjMgeiBNMTksMjFoLTJ2LTNjMC0wLjU1LTAuNDUtMS0xLTFzLTEsMC40NS0xLDF2M2gtMnYtM2MwLTAuNTUtMC40NS0xLTEtMXMtMSwwLjQ1LTEsMXYzSDl2LTNjMC0wLjU1LTAuNDUtMS0xLTFzLTEsMC40NS0xLDF2M0g1IHYtNWMwLTEuNjUsMS4zNS0zLDMtM2g4YzEuNjUsMCwzLDEuMzUsMywzVjIxelwiIH0pKSkpKTtcbn07XG5cbnZhciBDbGVhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyIDE5IDYuNDF6XCIgfSkpKTtcbn07XG5cbnZhciBDbG91ZERvbmUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCBlbmFibGVCYWNrZ3JvdW5kOiBcIm5ldyAwIDAgMjQgMjRcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yIHx8IFwiIzAwMDAwMFwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogY29sb3JGaWxsIHx8IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVDOC4wOCA3LjE0IDkuOTQgNiAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExYzEuNTYuMSAyLjc4IDEuNDEgMi43OCAyLjk2IDAgMS42NS0xLjM1IDMtMyAzem0tOS0zLjgybC0yLjA5LTIuMDlMNi41IDEzLjUgMTAgMTdsNi4wMS02LjAxLTEuNDEtMS40MXpcIiB9KSkpO1xufTtcblxudmFyIERvRGlzdHVyYiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNGMtNC40MSAwLTggMy41OS04IDhzMy41OSA4IDggOCA4LTMuNTkgOC04LTMuNTktOC04LTh6XCIsIG9wYWNpdHk6IFwiLjRcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOCAwLTEuODUuNjMtMy41NSAxLjY5LTQuOUwxNi45IDE4LjMxQzE1LjU1IDE5LjM3IDEzLjg1IDIwIDEyIDIwem02LjMxLTMuMUw3LjEgNS42OUM4LjQ1IDQuNjMgMTAuMTUgNCAxMiA0YzQuNDIgMCA4IDMuNTggOCA4IDAgMS44NS0uNjMgMy41NS0xLjY5IDQuOXpcIiB9KSkpO1xufTtcblxudmFyIERvd25sb2FkRmlsZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIGVuYWJsZUJhY2tncm91bmQ6IFwibmV3IDAgMCAyNCAyNFwiLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgfHwgXCIjMDAwMDAwXCIsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHsgZmlsbDogY29sb3JGaWxsIHx8IFwibm9uZVwiLCBoZWlnaHQ6IGZpbmFsU2l6ZSwgd2lkdGg6IGZpbmFsU2l6ZSB9KSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE4LDE1djNINnYtM0g0djNjMCwxLjEsMC45LDIsMiwyaDEyYzEuMSwwLDItMC45LDItMnYtM0gxOHogTTE3LDExbC0xLjQxLTEuNDFMMTMsMTIuMTdWNGgtMnY4LjE3TDguNDEsOS41OUw3LDExbDUsNSBMMTcsMTF6XCIgfSkpKSk7XG59O1xuXG52YXIgSW5mb0Rpc25leSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpIC0gMjtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBcbiAgICAgICAgLy9hbHQ9XCJcIlxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIiwgXCJhcmlhLWxhYmVsXCI6IFwiaW5mb1wiLCBmaWxsOiBjb2xvciB8fCBcIiMwMDAwMDBcIiwgcm9sZTogXCJpbWdcIiwgdHJhbnNmb3JtOiBcIlwiLCB2ZXJzaW9uOiBcIjEuMVwiLCB2aWV3Qm94OiBcIjAgMCAzNiAzNlwiLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTIyLjM3OCAwYzIuNDEyIDAgMy42MTggMS42NDIgMy42MTggMy41MjMgMCAyLjM0OS0yLjA5NSA0LjUyMi00LjgyMiA0LjUyMi0yLjI4NCAwLTMuNjE2LTEuMzUtMy41NTMtMy41ODIgMC0xLjg3NyAxLjU4Ni00LjQ2MiA0Ljc1Ny00LjQ2MnpNMTQuOTU2IDM2Yy0xLjkwNCAwLTMuMjk5LTEuMTc0LTEuOTY3LTYuMzQzbDIuMTg1LTkuMTY2YzAuMzgtMS40NjUgMC40NDMtMi4wNTQgMC0yLjA1NC0wLjU3MSAwLTMuMDQwIDEuMDEyLTQuNTA0IDIuMDExbC0wLjk1LTEuNTg0YzQuNjMtMy45MzUgOS45NTYtNi4yNDEgMTIuMjQyLTYuMjQxIDEuOTAzIDAgMi4yMTkgMi4yOTEgMS4yNjkgNS44MTRsLTIuNTA0IDkuNjM0Yy0wLjQ0MyAxLjcwMS0wLjI1NCAyLjI4OCAwLjE5MSAyLjI4OCAwLjU3MSAwIDIuNDQzLTAuNzA2IDQuMjgyLTIuMTczbDEuMDgwIDEuNDY1Yy00LjUwNCA0LjU4NS05LjQyMyA2LjM0OS0xMS4zMjQgNi4zNDl6XCIgfSkpKTtcbn07XG5cbnZhciBQbGF5SWNvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBvcGFjaXR5OiBcIi45XCIsIGZpbGw6IGNvbG9yRmlsbCA/IGNvbG9yRmlsbCA6IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTggNXYxNGwxMS03TDggNXpcIiB9KSkpO1xufTtcblxudmFyIFVwbG9hZCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgZW5hYmxlQmFja2dyb3VuZDogXCJuZXcgMCAwIDI0IDI0XCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIsIGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHsgZmlsbDogY29sb3JGaWxsIHx8IFwibm9uZVwiLCBoZWlnaHQ6IHNpemUgfHwgXCIyNFwiLCB3aWR0aDogc2l6ZSB8fCBcIjI0XCIgfSkpLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xOCwxNXYzSDZ2LTNINHYzYzAsMS4xLDAuOSwyLDIsMmgxMmMxLjEsMCwyLTAuOSwyLTJ2LTNIMTh6IE03LDlsMS40MSwxLjQxTDExLDcuODNWMTZoMlY3LjgzbDIuNTksMi41OEwxNyw5bC01LTVMNyw5elwiIH0pKSkpO1xufTtcblxudmFyIFVwbG9hZEVycm9yID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHsgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIsIGhlaWdodDogZmluYWxTaXplLCB3aWR0aDogZmluYWxTaXplIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE4LDE1LjE3VjE1aDJ2Mi4xN0wxOCwxNS4xN3ogTTE1LjQxLDEyLjU5TDE3LDExbC0xLjQxLTEuNDFMMTQsMTEuMTdMMTUuNDEsMTIuNTl6IE0xMywxMC4xN1Y0aC0ydjQuMTdMMTMsMTAuMTd6IE0yMS4xOSwyMS4xOWwtMS43OC0xLjc4TDIuODEsMi44MUwxLjM5LDQuMjJsNi4xOSw2LjE5TDcsMTFsNSw1bDAuNTktMC41OUwxNS4xNywxOEg2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTEuMTdsMi42MSwyLjYxIEwyMS4xOSwyMS4xOXpcIiB9KSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiQGtleWZyYW1lcyBmaWxlc3VpLXJvdGF0ZS1zcGluIHtcXG4gIGZyb20ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuLmZpbGVzdWktcm90YXRlIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuXFxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XFxuICAuZmlsZXN1aS1yb3RhdGUge1xcbiAgICBhbmltYXRpb246IGZpbGVzdWktcm90YXRlLXNwaW4gaW5maW5pdGUgMnMgbGluZWFyO1xcbiAgfVxcbn1cIik7XG5cbnZhciBVcGxvYWRpbmdQcm9jZXNzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBzcGluID0gcHJvcHMuc3BpbjtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHZhciBmaW5hbENsYXNzbmFtZSA9IGNsYXNzTmFtZSB8fCBcIlwiO1xuICAgIGZpbmFsQ2xhc3NuYW1lICs9IHNwaW4gPyBcImZpbGVzdWktcm90YXRlXCIgOiBcIlwiO1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc25hbWUsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkMxOS41NCAxNS4wMyAyMCAxMy41NyAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QzQuNDYgOC45NyA0IDEwLjQzIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCIgfSkpKTtcbn07XG5cbnZhciBWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDRjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDggOC0zLjU5IDgtOC0zLjU5LTgtOC04elwiLCBcbiAgICAgICAgICAgIC8vb3BhY2l0eT1cIi45XCJcbiAgICAgICAgICAgIGZpbGw6IGNvbG9yRmlsbCA/IGNvbG9yRmlsbCA6IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDRDNyA0IDIuNzMgNy4xMSAxIDExLjUgMi43MyAxNS44OSA3IDE5IDEyIDE5czkuMjctMy4xMSAxMS03LjVDMjEuMjcgNy4xMSAxNyA0IDEyIDR6bTAgMTIuNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6XCIgfSkpKTtcbn07XG5cbnZhciBEcm9wem9uZUhlYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBtYXhGaWxlU2l6ZSA9IHByb3BzLm1heEZpbGVTaXplLCBudW1iZXJPZlZhbGlkRmlsZXMgPSBwcm9wcy5udW1iZXJPZlZhbGlkRmlsZXMsIG9uUmVzZXQgPSBwcm9wcy5vblJlc2V0LCBvbkNsZWFuID0gcHJvcHMub25DbGVhbiwgbWF4RmlsZXMgPSBwcm9wcy5tYXhGaWxlcywgb25VcGxvYWRTdGFydCA9IHByb3BzLm9uVXBsb2FkU3RhcnQsIGlzVXBsb2FkaW5nID0gcHJvcHMuaXNVcGxvYWRpbmcsIHVybFByZXNlbnQgPSBwcm9wcy51cmxQcmVzZW50LCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIGJvcmRlclJhZGl1cyA9IHByb3BzLmJvcmRlclJhZGl1cywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgX2EgPSBwcm9wcy5jbGFzc05hbWUsIGNsYXNzTmFtZSA9IF9hID09PSB2b2lkIDAgPyBcIlwiIDogX2EsIHJlc2V0U3R5bGVzID0gcHJvcHMucmVzZXRTdHlsZXMsIGNvbG9yID0gcHJvcHMuY29sb3IsIF9iID0gcHJvcHMuZmlyc3RDbGFzc05hbWUsIGZpcnN0Q2xhc3NOYW1lID0gX2IgPT09IHZvaWQgMCA/IFwiXCIgOiBfYjtcbiAgICB2YXIgRHJvcHpvbmVIZWFkZXJMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuaGVhZGVyO1xuICAgIHZhciBoYW5kbGVDbGVhbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25DbGVhbiA9PT0gbnVsbCB8fCBvbkNsZWFuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsZWFuKCk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlU3RhcnRVcGxvYWRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uVXBsb2FkU3RhcnQgPT09IG51bGwgfHwgb25VcGxvYWRTdGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25VcGxvYWRTdGFydCgpO1xuICAgIH07XG4gICAgdmFyIG1ha2VIZWFkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgaWYgKG9uVXBsb2FkU3RhcnQgJiYgdXJsUHJlc2VudCAmJiBudW1iZXJPZlZhbGlkRmlsZXMpIHtcbiAgICAgICAgICAgIGlmIChpc1VwbG9hZGluZykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVXBsb2FkaW5nUHJvY2VzcywgeyBzcGluOiB0cnVlLCBjb2xvcjogY29sb3IgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgRHJvcHpvbmVIZWFkZXJMb2NhbGl6ZXIudXBsb2FkRmlsZXNNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWQsIHsgY29sb3I6IGNvbG9yLCBvbkNsaWNrOiBoYW5kbGVTdGFydFVwbG9hZGluZyB9KSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBcIixcIixcbiAgICAgICAgICAgICAgICBcIlxcdTAwQTBcIikpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtYXhGaWxlU2l6ZU1lc3NlbmdlciA9IERyb3B6b25lSGVhZGVyTG9jYWxpemVyLm1heFNpemVNZXNzYWdlO1xuICAgICAgICB2YXIgbWF4RmlsZVNpemVGb3JtYXR0ZWQgPSBmaWxlU2l6ZUZvcm1hdGVyKG1heEZpbGVTaXplKTtcbiAgICAgICAgaWYgKG1heEZpbGVTaXplRm9ybWF0dGVkKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChtYXhGaWxlU2l6ZU1lc3NlbmdlcihtYXhGaWxlU2l6ZUZvcm1hdHRlZCkpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBcIixcIixcbiAgICAgICAgICAgICAgICBcIlxcdTAwQTBcIikpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWxpZEZpbGVTaXplTWVzc2VuZ2VyID0gRHJvcHpvbmVIZWFkZXJMb2NhbGl6ZXIudmFsaWRGaWxlc01lc3NhZ2U7XG4gICAgICAgIGlmIChtYXhGaWxlcykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godmFsaWRGaWxlU2l6ZU1lc3NlbmdlcihudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFwiLFwiLFxuICAgICAgICAgICAgICAgIFwiXFx1MDBBMFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9jbGVhbiBub3QgdmFsaWQgZmlsZXMgb24gY2xpY2tcbiAgICAgICAgaWYgKG9uQ2xlYW4pIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYW4sIHsgY29sb3I6IGNvbG9yLCBvbkNsaWNrOiBoYW5kbGVDbGVhbiwgc2l6ZTogXCJzZW1pLW1lZGl1bVwiIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25SZXNldCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChDYW5jZWwsIHsgY29sb3I6IGNvbG9yLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTsgfSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2dCkge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IHJlc2V0U3R5bGVzXG4gICAgICAgID8gY2xhc3NOYW1lXG4gICAgICAgIDogYWRkQ2xhc3NOYW1lKFwiZmlsZXMtdWktaGVhZGVyXCIgKyBcIiBcIiArIGZpcnN0Q2xhc3NOYW1lLCBjbGFzc05hbWUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gcmVzZXRTdHlsZXNcbiAgICAgICAgPyBzdHlsZVxuICAgICAgICA6IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgc3R5bGUpLCB7IGJvcmRlclRvcExlZnRSYWRpdXM6IGJvcmRlclJhZGl1cywgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IGJvcmRlclJhZGl1cyB9KTtcbiAgICAvL2NvbnNvbGUubG9nKFwiaGVhZGVyeCByZXNldFN0eWxlc1wiLCByZXNldFN0eWxlcyk7XG4gICAgLy9jb25zb2xlLmxvZyhcImhlYWRlcnggc3R5bGVcIiwgc3R5bGUpO1xuICAgIC8vY29uc29sZS5sb2coXCJoZWFkZXJ4IGZpbmFsU3R5bGVcIiwgZmluYWxTdHlsZSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgb25DbGljazogaGFuZGxlQ2xpY2ssIHN0eWxlOiBmaW5hbFN0eWxlIH0sIG1ha2VIZWFkZXIoKS5tYXAoZnVuY3Rpb24gKEhlYWRlckl0ZW0sIGluZGV4KSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBrZXk6IGluZGV4LCBzdHlsZTogeyBkaXNwbGF5OiBcImZsZXhcIiB9IH0sIEhlYWRlckl0ZW0pKTsgfSkpKTtcbn07XG5cbnZhciBEcm9wem9uZUZvb3RlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBhY2NlcHQgPSBwcm9wcy5hY2NlcHQsIG1lc3NhZ2UgPSBwcm9wcy5tZXNzYWdlLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIGJvcmRlclJhZGl1cyA9IHByb3BzLmJvcmRlclJhZGl1cywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgX2EgPSBwcm9wcy5jbGFzc05hbWUsIGNsYXNzTmFtZSA9IF9hID09PSB2b2lkIDAgPyBcIlwiIDogX2EsIF9iID0gcHJvcHMucmVzZXRTdHlsZXMsIHJlc2V0U3R5bGVzID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIF9jID0gcHJvcHMuYWxsb3dlZFR5cGVzTGFiZWwsIGFsbG93ZWRUeXBlc0xhYmVsID0gX2MgPT09IHZvaWQgMCA/IHRydWUgOiBfYywgX2QgPSBwcm9wcy5jdXN0b21NZXNzYWdlLCBjdXN0b21NZXNzYWdlID0gX2QgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9kLCBfZSA9IHByb3BzLmZpcnN0Q2xhc3NOYW1lLCBmaXJzdENsYXNzTmFtZSA9IF9lID09PSB2b2lkIDAgPyBcIlwiIDogX2U7XG4gICAgdmFyIERyb3B6b25lRm9vdGVyTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLmZvb3RlcjtcbiAgICB2YXIgYWNjZXBDdXN0b21NZXNzZW5nZXIgPSBEcm9wem9uZUZvb3RlckxvY2FsaXplci5hY2NlcHRDdXN0b207XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZ0KSB7XG4gICAgICAgIGhhbmRsZUNsaWNrVXRpbChldnQpO1xuICAgIH1cbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSByZXNldFN0eWxlc1xuICAgICAgICA/IGNsYXNzTmFtZVxuICAgICAgICA6IGFkZENsYXNzTmFtZShcImZpbGVzLXVpLWZvb3RlciBcIi5jb25jYXQoZmlyc3RDbGFzc05hbWUpLCBjbGFzc05hbWUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gcmVzZXRTdHlsZXNcbiAgICAgICAgPyBzdHlsZVxuICAgICAgICA6IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgc3R5bGUpLCB7IGJvcmRlckJvdG9tTGVmdFJhZGl1czogYm9yZGVyUmFkaXVzLCBib3JkZXJCb3RvbVJpZ2h0UmFkaXVzOiBib3JkZXJSYWRpdXMgfSk7XG4gICAgLy9jb25zb2xlLmxvZyhcImZpbGVzLXVpLWZvb3RlclwiLCBmaW5hbFN0eWxlKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgc3R5bGU6IGZpbmFsU3R5bGUgfSwgY3VzdG9tTWVzc2FnZSA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21NZXNzYWdlKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgbWVzc2FnZVxuICAgICAgICA/IG1lc3NhZ2VcbiAgICAgICAgOiAhYWNjZXB0XG4gICAgICAgICAgICA/IGFsbG93ZWRUeXBlc0xhYmVsXG4gICAgICAgICAgICAgICAgPyBEcm9wem9uZUZvb3RlckxvY2FsaXplci5hY2NlcHRBbGxcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBhY2NlcEN1c3RvbU1lc3NlbmdlcihhY2NlcHQpKSkpKTtcbn07XG5cbnZhciBEeW5hbWlDU1M7XHJcbihmdW5jdGlvbiAoRHluYW1pQ1NTKSB7XHJcbiAgICAvKipcclxuICAgICAqIEluc2VydHMgYSBzdHlsZXNoZWV0IGludG8gdGhlIERPTS5cclxuICAgICAqIFdoZW4gYW4gZXJyb3Igb2NjdXJzIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgKiBAcGFyYW0gZHluYW1pY1NoZWV0IGEgZHluY2FtaWMgc2hlZXRcclxuICAgICAqIEByZXR1cm4gdGhlIGlkIG9mIHRoZSBzdHlsZXNoZWV0IGluIHN0cmluZyBmb3JtYXRcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gaW5zZXJ0U3R5bGVTaGVldChkeW5hbWljU2hlZXQpIHtcclxuICAgICAgICB2YXIgcmVzdWx0X2lkID0gXCJcIjtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkeW5hbWljU2hlZXQgPT09IFwidW5kZWZpbmVkXCIgfHwgZHluYW1pY1NoZWV0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2lmIGFscmVhZHkgZXhpc3RzXHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGR5bmFtaWNTaGVldC5pZCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGR5bmFtaWNTaGVldC5pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0X2lkID0gZHluYW1pY1NoZWV0LmlkO1xyXG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xyXG4gICAgICAgIHN0eWxlU2hlZXQuaWQgPSByZXN1bHRfaWQ7XHJcbiAgICAgICAgc3R5bGVTaGVldC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XHJcbiAgICAgICAgdmFyIGNvbnRldFJhdyA9IHRvUmF3U3R5bGVTaGVldChkeW5hbWljU2hlZXQuc2hlZXRSdWxlcyB8fCBbXSkgKyBkeW5hbWljU2hlZXQucmF3IHx8IFwiXCI7XHJcbiAgICAgICAgc3R5bGVTaGVldC50ZXh0Q29udGVudCA9IGNvbnRldFJhdztcclxuICAgICAgICB2YXIgYXBwZW5kUmVzdWx0ID0gZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZVNoZWV0KTtcclxuICAgICAgICBpZiAoIWFwcGVuZFJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdF9pZDtcclxuICAgIH1cclxuICAgIER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0ID0gaW5zZXJ0U3R5bGVTaGVldDtcclxuICAgIC8qKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgaGUgc3R5bGUgc2hlZXRcclxuICAgICAqIEBwYXJhbSBzaGVldFJ1bGVzIHRoZSBzZXQgb2YgcnVsZXNcclxuICAgICAqIEByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvciB0aGUgaWRcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZWRpdFN0eWxlU2hlZXQoaWQsIHNoZWV0UnVsZXMpIHtcclxuICAgICAgICB2YXIgcmVzdWx0X2lkID0gXCJcIjtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBpZCA9PT0gbnVsbCB8fCBzaGVldFJ1bGVzID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2lmIGRvbnQgZXhpc3RzIHlldFxyXG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICAgIGlmICghc3R5bGVTaGVldCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyogIHJlc3VsdF9pZCA9IGlkO1xyXG4gICAgICAgICAvL3ZhciBzdHlsZVNoZWV0OiBIVE1MU3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xyXG4gICAgICAgICBzdHlsZVNoZWV0LmlkID0gcmVzdWx0X2lkO1xyXG4gICAgICAgICBzdHlsZVNoZWV0LnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJ0ZXh0L2Nzc1wiKTsgKi9cclxuICAgICAgICBzdHlsZVNoZWV0LnRleHRDb250ZW50ID0gdG9SYXdTdHlsZVNoZWV0KHNoZWV0UnVsZXMpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRfaWQ7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MuZWRpdFN0eWxlU2hlZXQgPSBlZGl0U3R5bGVTaGVldDtcclxuICAgIC8qKlxyXG4gICAgICogR2l2ZW4gYW4gaWQgaW4gc3RyaW5nIGZvcm1hdCwgY2hlY2tzIGludG8gdGhlIERPTSB3aGV0aGVyIHRoZXJlIGlzIGEgc3R5bGVcclxuICAgICAqIHdpdGggdGhlIGdpdmVuIGlkLiBJZiB0cnVlLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIHRoZSBzdHlsZXNoZWV0IGFuZCByZXR1cm4gdGhlIGlkLlxyXG4gICAgICogSWYgbm90IHByZXNlbnQsIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZ1xyXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgc3R5bGVzaGVldCB0byByZW1vdmUgaWYgZXhpc3RzXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgaWQgb3IgYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHJlbW92ZVN0eWxlU2hlZXQoaWQpIHtcclxuICAgICAgICB2YXIgcmVzdWx0X2lkID0gXCJcIjtcclxuICAgICAgICBpZiAoIWlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaHRtbE9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgICBpZiAoaHRtbE9iamVjdCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGh0bWxPYmplY3QpO1xyXG4gICAgICAgICAgICByZXN1bHRfaWQgPSBpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdF9pZDtcclxuICAgIH1cclxuICAgIER5bmFtaUNTUy5yZW1vdmVTdHlsZVNoZWV0ID0gcmVtb3ZlU3R5bGVTaGVldDtcclxuICAgIC8qKlxyXG4gICAgICogR2l2ZW4gYW4gaWQgaW4gc3RyaW5nIGZvcm1hdCwgY2hlY2tzIGludG8gdGhlIERPTSB3aGV0aGVyIHRoZXJlIGlzIGEgc3R5bGVcclxuICAgICAqIHdpdGggdGhlIGdpdmVuIGlkIGV4aXN0cyBhbmQgcmV0dXJuYSBib29sZWFuIHJlc3VsdFxyXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgc3R5bGVzaGVldCB0byBjaGVjayBpZiBleGlzdHNcclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHN0eWxlc2hlZXQgd2FzIGZvdW5kXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGV4aXN0U3R5bGVTaGVldChpZCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgaWQgPT09IFwidW5kZWZpbmVkXCIgfHwgaWQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaHRtbE9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgICBpZiAoaHRtbE9iamVjdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLmV4aXN0U3R5bGVTaGVldCA9IGV4aXN0U3R5bGVTaGVldDtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHN0eWxlc2hlZXQgZ2l2ZW4gYSBzdHlsZXNoZWV0XHJcbiAgICAgKiBAcGFyYW0gc3R5bGVTaGVldCBhc3R5bGVzaGVldFxyXG4gICAgICogQHJldHVybnMgdGhlIG5ldyBzdHlsZXNoZWV0IG9iamVjdFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBtYWtlU3R5bGVTaGVldChzdHlsZVNoZWV0KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzdHlsZVNoZWV0ID09PSBcInVuZGVmaW5lZFwiIHx8IHN0eWxlU2hlZXQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHlsZVNoZWV0O1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLm1ha2VTdHlsZVNoZWV0ID0gbWFrZVN0eWxlU2hlZXQ7XHJcbn0pKER5bmFtaUNTUyB8fCAoRHluYW1pQ1NTID0ge30pKTtcclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciBhIGNoYXJhY3RlciBpcyB1cHBlckNhc2Ugb3Igbm90XHJcbiAqIEBwYXJhbSBjaGFyYWN0ZXIgYSBjaGFyYWN0ZXJcclxuICogQHJldHVybnMgdHJ1ZSBpZiBzdHIgY29udGFpbnMgYSBzdHJpbmcgY2hhcmFjdGVyXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1VwcGVyKGNoYXJhY3Rlcikge1xyXG4gICAgaWYgKCFjaGFyYWN0ZXIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuICEvW2Etel0vLnRlc3QoY2hhcmFjdGVyKSAmJiAvW0EtWl0vLnRlc3QoY2hhcmFjdGVyKTtcclxufVxyXG4vKipcclxuICogQ29udmVydHMgYSBydWxlIHdpdGggdXBwZXJjYXNlIHRvIGEgaHlwaGVuLWxvd2VyY2FzZSB2ZXJzaW9uXHJcbiAqIEBwYXJhbSBydWxlTGFiZWwgdGhlIHJ1bGVcclxuICogQHJldHVybnMgYSBoeXBoZW4tbG93ZXJjYXNlIGxhYmVsXHJcbiAqL1xyXG5mdW5jdGlvbiBmcm9tVXBwZXJDYXNlVG9IeXBoZW4ocnVsZUxhYmVsKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gXCJcIjtcclxuICAgIHZhciBjaGFyVXBwZXIgPSAnICc7XHJcbiAgICB2YXIgaXN1cHBlciA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlTGFiZWwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgY3VycmVudENoYXIgPSBydWxlTGFiZWxbaV07XHJcbiAgICAgICAgaWYgKGlzVXBwZXIoY3VycmVudENoYXIpKSB7XHJcbiAgICAgICAgICAgIGNoYXJVcHBlciA9IGN1cnJlbnRDaGFyO1xyXG4gICAgICAgICAgICBpc3VwcGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9hZGQgaHlwaGVuXHJcbiAgICBpZiAoaXN1cHBlcikge1xyXG4gICAgICAgIHZhciBwYXJ0cyA9IHJ1bGVMYWJlbC5zcGxpdChjaGFyVXBwZXIpO1xyXG4gICAgICAgIHJlc3VsdCA9IFwiXCIuY29uY2F0KHBhcnRzWzBdLCBcIi1cIikuY29uY2F0KGNoYXJVcHBlci50b0xvd2VyQ2FzZSgpKS5jb25jYXQocGFydHNbMV0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcnVsZUxhYmVsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIHRoZSBsYWJlbCBjb250YWlucyB0aGUgXCI6XCIgY2hhcmFjdGVyXHJcbiAqIEBwYXJhbSBydWxlTGFiZWwgdGhlIHJ1bGVcclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcnVsZSBsYWJlbCBjb3JyZXNwb25kcyB0byBhIHBzZXVkbyBjbGFzc1xyXG4gKi9cclxuZnVuY3Rpb24gaXNQc2V1ZG8ocnVsZUxhYmVsKSB7XHJcbiAgICBpZiAoIXJ1bGVMYWJlbClcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gcnVsZUxhYmVsLmluY2x1ZGVzKFwiOlwiKTtcclxufVxyXG4vKipcclxuICpcclxuICogQHBhcmFtIGNsYXNzTmFtZVxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZnVuY3Rpb24gbWFrZVJhd1J1bGVMYWJlbChjbGFzc05hbWUpIHtcclxuICAgIHZhciByZXN1bHQgPSBcIlwiO1xyXG4gICAgdmFyIHNwbGl0ZWRDbGFzc05hbWUgPSBjbGFzc05hbWUudHJpbSgpLnNwbGl0KFwiIFwiKTtcclxuICAgIC8vaXMgY29tcG9zZWQgY2xhc3NuYW1lP1xyXG4gICAgaWYgKHNwbGl0ZWRDbGFzc05hbWUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3BsaXRlZENsYXNzTmFtZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gXCIuXCIuY29uY2F0KHNwbGl0ZWRDbGFzc05hbWVbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQgKz0gXCJ7XFxuXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgKz0gXCIuXCIuY29uY2F0KGNsYXNzTmFtZSwgXCJ7XFxuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHNoZWV0UnVsZXNcclxuICogQHJldHVybnNcclxuICovXHJcbmZ1bmN0aW9uIHRvUmF3U3R5bGVTaGVldChzaGVldFJ1bGVzKSB7XHJcbiAgICBpZiAodHlwZW9mIHNoZWV0UnVsZXMgPT09IFwidW5kZWZpbmVkXCIgfHwgc2hlZXRSdWxlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgdmFyIHJhd1N0eWxlU2hlZXQgPSBcIlwiO1xyXG4gICAgdmFyIG5lc3RlZFBzZXVkb3MgPSBbXTtcclxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2hlZXRSdWxlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIHZhciBjdXJyZW50UnVsZSA9IHNoZWV0UnVsZXNbal07XHJcbiAgICAgICAgdmFyIGN1cnJuZXRSYXdSdWxlID0gXCJcIjtcclxuICAgICAgICAvLyBjdXJybmV0UmF3UnVsZSArPSBgLiR7Y3VycmVudFJ1bGUuY2xhc3NOYW1lfXtcXG5gO1xyXG4gICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IG1ha2VSYXdSdWxlTGFiZWwoY3VycmVudFJ1bGUuY2xhc3NOYW1lKTtcclxuICAgICAgICAvL2xpc3Qgb2YgbGFiZWxzIGZvciBydWxlc1xyXG4gICAgICAgIHZhciBydWxlc2tleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50UnVsZS5ydWxlcyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlc2tleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGN1cnJlbnRLZXkgPSBydWxlc2tleXNbaV07XHJcbiAgICAgICAgICAgIHZhciBzdHlsZUxhYmVsID0gZnJvbVVwcGVyQ2FzZVRvSHlwaGVuKGN1cnJlbnRLZXkpO1xyXG4gICAgICAgICAgICAvL2lmIGEgcHNldWRvIGNsYXNzIGZvdW5kLCBzZXBhcmF0ZSBpdFxyXG4gICAgICAgICAgICBpZiAoaXNQc2V1ZG8oc3R5bGVMYWJlbCkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwc2V1ZG9DbGFzc05hbWUgPSBjdXJyZW50UnVsZS5jbGFzc05hbWUgKyBzdHlsZUxhYmVsO1xyXG4gICAgICAgICAgICAgICAgbmVzdGVkUHNldWRvcy5wdXNoKHsgY2xhc3NOYW1lOiBwc2V1ZG9DbGFzc05hbWUsIHJ1bGVzOiBjdXJyZW50UnVsZS5ydWxlc1tzdHlsZUxhYmVsXSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciBzdHlsZVJ1bGUgPSBjdXJyZW50UnVsZS5ydWxlc1tjdXJyZW50S2V5XTtcclxuICAgICAgICAgICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwiXFx0XCIuY29uY2F0KHN0eWxlTGFiZWwsIFwiIDogXCIpLmNvbmNhdChzdHlsZVJ1bGUsIFwiO1xcblwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBcIn1cXG5cIjtcclxuICAgICAgICByYXdTdHlsZVNoZWV0ICs9IGN1cnJuZXRSYXdSdWxlO1xyXG4gICAgfVxyXG4gICAgLy9uZXN0ZWQgcHNldWRvc1xyXG4gICAgZm9yICh2YXIgcCA9IDA7IHAgPCBuZXN0ZWRQc2V1ZG9zLmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgdmFyIGN1cnJuZXRSYXdSdWxlID0gXCJcIjtcclxuICAgICAgICB2YXIgY3VycmVudFJ1bGUgPSBuZXN0ZWRQc2V1ZG9zW3BdO1xyXG4gICAgICAgIHZhciBydWxlc2tleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50UnVsZS5ydWxlcyk7XHJcbiAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCIuXCIuY29uY2F0KGN1cnJlbnRSdWxlLmNsYXNzTmFtZSwgXCJ7XFxuXCIpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXNrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjdXJyZW50S2V5ID0gcnVsZXNrZXlzW2ldO1xyXG4gICAgICAgICAgICB2YXIgc3R5bGVMYWJlbCA9IGZyb21VcHBlckNhc2VUb0h5cGhlbihjdXJyZW50S2V5KTtcclxuICAgICAgICAgICAgdmFyIHN0eWxlUnVsZSA9IGN1cnJlbnRSdWxlLnJ1bGVzW2N1cnJlbnRLZXldO1xyXG4gICAgICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBcIlxcdFwiLmNvbmNhdChzdHlsZUxhYmVsLCBcIiA6IFwiKS5jb25jYXQoc3R5bGVSdWxlLCBcIjtcXG5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwifVxcblwiO1xyXG4gICAgICAgIHJhd1N0eWxlU2hlZXQgKz0gY3Vycm5ldFJhd1J1bGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmF3U3R5bGVTaGVldDtcclxufVxuXG52YXIgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluY3JlYXNlcyB0aGUgY291bnQgYW5kIHJldHJpZXZlcyB0aGUgbmV4dCBudW1iZXJcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV4dCBzdGF0aWMgbnVtYmVyIGluIHN0eWxlc1xuICAgICAqL1xuICAgIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLmdldE5leHRJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIubmV4dEJ1dHRvbkNsYXNzTmFtZU51bWJlcisrO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiSWQgY2FsbGVkIFwiICsgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIubmV4dEJ1dHRvbkNsYXNzTmFtZU51bWJlcik7XG4gICAgICAgIHJldHVybiBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyO1xuICAgIH07XG4gICAgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIubmV4dEJ1dHRvbkNsYXNzTmFtZU51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWRDbGFzc05hbWUgaWRlbnRpZnllclxuICAgICAqIEBwYXJhbSB2YXJpYW50IHRoZSB2YXJpYW50IG9mIHRoZSBidXR0b25cbiAgICAgKiBAcGFyYW0gZGlzYWJsZWQgZGlzYWJsZWQgcHJvcFxuICAgICAqIEBwYXJhbSBjb2xvciB0aGUgdGhlbWUgY29sb3JcbiAgICAgKiBAcGFyYW0gdGV4dENvbG9yIHRoZSB0ZXh0IGNvbG9yXG4gICAgICogQHJldHVybnMgYSBEeW5hbWljU2hlZXRcbiAgICAgKi9cbiAgICBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5tYWtlRHluYW1pY1N0eWxlID0gZnVuY3Rpb24gKGlkQ2xhc3NOYW1lLCB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgdGV4dERlY29yYXRpb24pIHtcbiAgICAgICAgLy8oW3sgdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsIG5leHRDbGFzc05hbWUgfV0pO1xuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IHtcbiAgICAgICAgICAgIGlkOiBcIm1hdGVyaWFsLWJ1dHRvbi1zdHlsZXMtXCIuY29uY2F0KGlkQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgIC8vIGlkOiBgZHVpLWJ1dHRvbi1zdHlsZXNgLFxuICAgICAgICAgICAgc2hlZXRSdWxlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIm1hdGVyaWFsLWJ1dHRvbi5cIi5jb25jYXQodmFyaWFudCwgXCItXCIpLmNvbmNhdChpZENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgIC8vY2xhc3NOYW1lOiBgZHVpLWJ1dHRvbi4ke3ZhcmlhbnR9YCxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IHt9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwibWF0ZXJpYWwtYnV0dG9uLXJvb3QuXCIuY29uY2F0KHZhcmlhbnQsIFwiLVwiKS5jb25jYXQoaWRDbGFzc05hbWUpLFxuICAgICAgICAgICAgICAgICAgICAvLyBjbGFzc05hbWU6IGBkdWktYnV0dG9uLXJvb3QuJHt2YXJpYW50fWAsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2hlZXRSdWxlcyA9IHN0eWxlU2hlZXQuc2hlZXRSdWxlcztcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImNvbnRhaW5lZFwiOlxuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzBdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGFzdXJlQ29sb3IoY29sb3VyTmFtZVRvSGV4KHRleHRDb2xvcikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IHRleHREZWNvcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMV0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIjpob3ZlclwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkYXJrZXJDb2xvcihjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvdXRsaW5lZFwiOlxuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzBdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogdGV4dERlY29yYXRpb25cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1sxXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiOmhvdmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIFwiLmNvbmNhdChjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC4wODUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1swXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogdGV4dERlY29yYXRpb25cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1sxXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiOmhvdmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC4wODUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3R5bGVTaGVldC5zaGVldFJ1bGVzID0gc2hlZXRSdWxlcztcbiAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQ7XG4gICAgfTtcbiAgICByZXR1cm4gTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXI7XG59KCkpO1xuXG52YXIgdXNlTWF0ZXJpYWxCdXR0b25DbGFzc05hbWUgPSBmdW5jdGlvbiAodmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsIHRleHREZWNvcmF0aW9uLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLCByZXNldFN0eWxlcykge1xuICAgIC8vY29uc29sZS5sb2coXCJ1c2VNYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZVwiLCB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvcixcbiAgICAvLyB0ZXh0RGVjb3JhdGlvbiwgY2xhc3NOYW1lLCBpZENsYXNzTmFtZSwgcmVzZXRTdHlsZXMpO1xuICAgIHZhciBiYXNlQ2xhc3NOYW1lID0gXCJtYXRlcmlhbC1idXR0b24tcm9vdCBtYXRlcmlhbC1idXR0b25cIjtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgaWRTdHlsZXMgPSBfYVswXSwgc2V0SWRTdHlsZXMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHN0eWxlSW5qZWN0ZWQgPSBfYlswXSwgc2V0U3R5bGVJbmplY3RlZCA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lID0gX2NbMF0sIHNldEZpbmFsQ2xhc3NOYW1lID0gX2NbMV07XG4gICAgLy9jb25zdCBbbmV4dENsYXNzTmFtZSwgc2V0TmV4dENsYXNzTmFtZV0gPSBSZWFjdC51c2VTdGF0ZTxudW1iZXI+KDApO1xuICAgIHZhciBoYW5kbGVJbnNlclN0eWxlID0gZnVuY3Rpb24gKGlkQ2xhc3NOYW1lLCB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHREZWNvcmF0aW9uLCB0ZXh0Q29sb3IpIHtcbiAgICAgICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYmFzZUNsYXNzTmFtZTtcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5tYWtlRHluYW1pY1N0eWxlKGlkQ2xhc3NOYW1lLCB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgdGV4dERlY29yYXRpb24pO1xuICAgICAgICB2YXIgaWRTdHlsZSA9IFwiXCI7XG4gICAgICAgIGlmICghc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkR5bmFtaUNTUyBpbnNlcnRcIiwgaWRTdHlsZSk7XG4gICAgICAgICAgICBzZXRJZFN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgIGlmIChpZFN0eWxlICE9PSBcIlwiKVxuICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL2FscmVhZHkgYSBzdHlsZXNoZWV0IGFzc29jaWF0ZWRcbiAgICAgICAgICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldChpZFN0eWxlcywgc3R5bGVTaGVldC5zaGVldFJ1bGVzIHx8IFtdKTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJEeW5hbWlDU1MgZWRpdFwiLCBpZFN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgICAvL2xldCBmaW5hbENsYXNzTmFtZSA9IGBtYXRlcmlhbC1idXR0b24tcm9vdCBtYXRlcmlhbC1idXR0b24gYDtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICAgICAgLy9maW5hbENsYXNzTmFtZSArPSBgJHt2YXJpYW50fSAke3ZhcmlhbnR9LSR7bmV4dENsYXNzTmFtZX1gO1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KHZhcmlhbnQsIFwiIFwiKS5jb25jYXQodmFyaWFudCwgXCItXCIpLmNvbmNhdChpZENsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBkaXNhYmxlZFwiO1xuICAgICAgICB9XG4gICAgICAgIC8vY2xhc3NuYW1lIHRvIG92ZXJyaWRlIHN0eWxlcyBpbiBzdHlsZXNoZWV0XG4gICAgICAgIGlmIChjbGFzc05hbWUgJiYgY2xhc3NOYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIFwiLmNvbmNhdChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vc29tZSB0ZXh0IGluIGNsYXNzTmFtZVxuICAgICAgICBpZiAodGV4dERlY29yYXRpb24pIHtcbiAgICAgICAgICAgIHZhciBmaW5hbFRleHREZWNvcmF0aW9uID0gdGV4dERlY29yYXRpb24gJiZcbiAgICAgICAgICAgICAgICBbXCJ1cHBlcmNhc2VcIiwgXCJjYXBpdGFsaXplXCIsIFwibG93ZXJjYXNlXCIsIFwibm9uZVwiXS5pbmNsdWRlcyh0ZXh0RGVjb3JhdGlvbiA9PT0gbnVsbCB8fCB0ZXh0RGVjb3JhdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGV4dERlY29yYXRpb24udG9Mb3dlckNhc2UoKSkgPyB0ZXh0RGVjb3JhdGlvbi50b0xvd2VyQ2FzZSgpIDogXCJ1cHBlcmNhc2VcIjtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIFwiLmNvbmNhdChmaW5hbFRleHREZWNvcmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZShmaW5hbENsYXNzTmFtZSk7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXJlc2V0U3R5bGVzKVxuICAgICAgICAgICAgaGFuZGxlSW5zZXJTdHlsZShpZENsYXNzTmFtZSwgdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0RGVjb3JhdGlvbiwgdGV4dENvbG9yKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3ZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dERlY29yYXRpb24sIHRleHRDb2xvciwgY2xhc3NOYW1lLCBpZENsYXNzTmFtZSwgcmVzZXRTdHlsZXNdKTtcbiAgICB2YXIgcmVtb3ZlU3R5bGUgPSBmdW5jdGlvbiAoc3R5bGVJbmplY3RlZCwgaWRTdHlsZXMpIHtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiRHluYW1pQ1NTIHJlbW92aW5nXCIsIHN0eWxlSW5qZWN0ZWQsIGlkU3R5bGVzKTtcbiAgICAgICAgaWYgKHN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgIC8qIGNvbnN0IHJlcyA9ICAqLyBEeW5hbWlDU1MucmVtb3ZlU3R5bGVTaGVldChpZFN0eWxlcyk7XG4gICAgICAgICAgICAvLy8vY29uc29sZS5sb2coXCJEeW5hbWlDU1MgcmVtb3ZpbmcgcmVzXCIsIHJlcyk7XG4gICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKGZhbHNlKTtcbiAgICAgICAgICAgIHNldElkU3R5bGVzKFwiXCIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlU3R5bGUoc3R5bGVJbmplY3RlZCwgaWRTdHlsZXMpOyB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbc3R5bGVJbmplY3RlZCwgaWRTdHlsZXNdKTtcbiAgICByZXR1cm4gZmluYWxDbGFzc05hbWU7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLm1hdGVyaWFsLWJ1dHRvbi1yb290IHtcXG4gIGJvcmRlcjogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgb3V0bGluZTogMDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gIGNvbG9yOiB3aGl0ZTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbiB7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zLCBib3gtc2hhZG93IDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zLCBib3JkZXIgMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXM7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgbWluLXdpZHRoOiA2NHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDAuODc1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDI4NTdlbTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi51cHBlcmNhc2Uge1xcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi5sb3dlcmNhc2Uge1xcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi5jYXBpdGFsaXplIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLmNvbnRhaW5lZCB7XFxuICBwYWRkaW5nOiA2cHggMTZweDtcXG4gIGJveC1zaGFkb3c6IDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24ub3V0bGluZWQge1xcbiAgcGFkZGluZzogNXB4IDE1cHg7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24udGV4dCB7XFxuICBwYWRkaW5nOiA1cHggMTVweDtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi1yb290LmNvbnRhaW5lZDpob3ZlciB7XFxuICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbiBzcGFuLm1hdGVyaWFsLWJ1dHRvbi1sYWJlbCB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IGluaGVyaXQ7XFxuICBhbGlnbi1pdGVtczogaW5oZXJpdDtcXG4gIGp1c3RpZnktY29udGVudDogaW5oZXJpdDtcXG59XFxuXFxuc3Bhbi5yaXBwbGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXG4gIGFuaW1hdGlvbjogcmlwcGxlIDUwMG1zIGxpbmVhcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuXFxuQGtleWZyYW1lcyByaXBwbGUge1xcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDQpO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cXG4ubWF0ZXJpYWwtYnV0dG9uLXJvb3QuZGlzYWJsZWQge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpO1xcbiAgcGFkZGluZzogNnB4IDE2cHg7XFxufVxcbi5tYXRlcmlhbC1idXR0b24tcm9vdC5kaXNhYmxlZC5kYXJrbW9kZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcXG59XFxuXFxuLyogQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHtcXG4gIC5tYXRlcmlhbC1idXR0b24ge1xcbiAgICBtaW4td2lkdGg6IDMwcHg7XFxuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XFxuICB9XFxuICAubWF0ZXJpYWwtYnV0dG9uLmNvbnRhaW5lZCB7XFxuICAgIHBhZGRpbmc6IDRweCAxM3B4O1xcbiAgfVxcbiAgLm1hdGVyaWFsLWJ1dHRvbi5vdXRsaW5lZCB7XFxuICAgIHBhZGRpbmc6IDRweCAxMnB4O1xcbiAgfVxcbn1cXG4gKi9cIik7XG5cbnZhciBGaWxlc1VpQ29udGV4dCA9IFJlYWN0X19kZWZhdWx0LmNyZWF0ZUNvbnRleHQoe30pO1xuXG52YXIgTWF0ZXJpYWxCdXR0b24gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCwgaHJlZiA9IHByb3BzLmhyZWYsIHRleHREZWNvcmF0aW9uID0gcHJvcHMudGV4dFRyYW5zZm9ybSwgX2EgPSBwcm9wcy52YXJpYW50LCB2YXJpYW50ID0gX2EgPT09IHZvaWQgMCA/IFwiY29udGFpbmVkXCIgOiBfYSwgX2IgPSBwcm9wcy5jb2xvciwgY29sb3IgPSBfYiA9PT0gdm9pZCAwID8gXCIjMTk3NmQyXCIgOiBfYiwgX2MgPSBwcm9wcy50ZXh0Q29sb3IsIHRleHRDb2xvciA9IF9jID09PSB2b2lkIDAgPyBcIndoaXRlXCIgOiBfYywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgcmVzZXRTdHlsZXMgPSBwcm9wcy5yZXNldFN0eWxlcywgZGlzYWJsZVJpcHBsZSA9IHByb3BzLmRpc2FibGVSaXBwbGUsIGRhcmtNb2RlUHJvcCA9IHByb3BzLmRhcmtNb2RlLCBpZCA9IHByb3BzLmlkLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJkaXNhYmxlZFwiLCBcImhyZWZcIiwgXCJ0ZXh0VHJhbnNmb3JtXCIsIFwidmFyaWFudFwiLCBcImNvbG9yXCIsIFwidGV4dENvbG9yXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcIm9uQ2xpY2tcIiwgXCJyZXNldFN0eWxlc1wiLCBcImRpc2FibGVSaXBwbGVcIiwgXCJkYXJrTW9kZVwiLCBcImlkXCJdKTtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgZGFya01vZGVDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCkuZGFya01vZGU7XG4gICAgdmFyIGRhcmtNb2RlID0gZGFya01vZGVQcm9wICE9PSB1bmRlZmluZWQgPyBkYXJrTW9kZVByb3AgOiBkYXJrTW9kZUNvbnRleHQ7XG4gICAgLy8gIGNvbnN0IGlkQ2xhc3NOYW1lID0gUmVhY3QudXNlSWQoKTtcbiAgICB2YXIgaWRDbGFzc05hbWUgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGlkIHx8IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSArIFwiXCI7IH0sIFtpZF0pO1xuICAgIHZhciBtYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZSA9IHVzZU1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lKHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCB0ZXh0RGVjb3JhdGlvbiwgY2xhc3NOYW1lLCBpZENsYXNzTmFtZS5yZXBsYWNlKFwiOlwiLCBcIlwiKS5yZXBsYWNlKFwiOlwiLCBcIlwiKSwgcmVzZXRTdHlsZXMpO1xuICAgIHZhciBmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGUgPSBtYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZSAmJiBkYXJrTW9kZVxuICAgICAgICA/IGFkZENsYXNzTmFtZShtYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZSwgXCJkYXJrbW9kZVwiKVxuICAgICAgICA6IG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lO1xuICAgIC8vY29uc29sZS5sb2coXCJmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGVcIiwgZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlLCBkYXJrTW9kZSk7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIC8vcmlwcGxlXG4gICAgICAgIGlmICghZGlzYWJsZVJpcHBsZSlcbiAgICAgICAgICAgIGNyZWF0ZVJpcHBsZUJ1dHRvbihlLCB2YXJpYW50LCBjb2xvcik7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICB9XG4gICAgaWYgKGZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZSAhPT0gdW5kZWZpbmVkIHx8IHJlc2V0U3R5bGVzKVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChocmVmID8gXCJhXCIgOiBcImJ1dHRvblwiLCBfX2Fzc2lnbiQxKHsgY2xhc3NOYW1lOiByZXNldFN0eWxlcyAmJiBjbGFzc05hbWUgPyBjbGFzc05hbWUgOiBmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGUsIFwiZGF0YS10ZXN0aWRcIjogaHJlZiA/IFwiZHVpLWFuY2hvclwiIDogXCJkdWktYnV0dG9uXCIsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBocmVmOiBocmVmLCBzdHlsZTogc3R5bGUsIGNoaWxkcmVuOiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJtYXRlcmlhbC1idXR0b24tbGFiZWxcIiB9LCBjaGlsZHJlbiksIGRpc2FibGVkOiBkaXNhYmxlZCB9LCByZXN0KSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgXCJsb2FkaW5nIHN0eWVzXCIpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWJ1dHRvbnMtY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZ2FwOiAxMHB4O1xcbn1cXG4uZmlsZXMtdWktYnV0dG9ucy1jb250YWluZXIudG9wIHtcXG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xcbn1cXG4uZmlsZXMtdWktYnV0dG9ucy1jb250YWluZXIuYm90dG9tIHtcXG4gIHBhZGRpbmctdG9wOiAxMHB4O1xcbn1cIik7XG5cbnZhciBEcm9wem9uZUJ1dHRvbnMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2xlYW5CdXR0b24gPSBwcm9wcy5jbGVhbkJ1dHRvbiwgYWJvcnRCdXR0b24gPSBwcm9wcy5hYm9ydEJ1dHRvbiwgY29udGFpbmVyQ2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBjb250YWluZXJTdHlsZSA9IHByb3BzLnN0eWxlLCBkZWxldGVCdXR0b24gPSBwcm9wcy5kZWxldGVCdXR0b24sIHVwbG9hZEJ1dHRvbiA9IHByb3BzLnVwbG9hZEJ1dHRvbiwgXG4gICAgLy9sb2NhbGl6YXRpb24sXG4gICAgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIG9uQ2xlYW4gPSBwcm9wcy5vbkNsZWFuLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvblVwbG9hZCA9IHByb3BzLm9uVXBsb2FkLCB0b3AgPSBwcm9wcy50b3AsIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQ7XG4gICAgdmFyIGFjdGlvbkJ1dHRvbnNMaXN0ID0gW1xuICAgICAgICBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgPyBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIGNsZWFuQnV0dG9uKSwgeyBsYWJlbDogXCJDbGVhblwiLCBvbkNsaWNrOiBjbGVhbkJ1dHRvbi5vbkNsaWNrIHx8IG9uQ2xlYW4gfSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGRlbGV0ZUJ1dHRvblxuICAgICAgICAgICAgPyBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIGRlbGV0ZUJ1dHRvbiksIHsgbGFiZWw6IFwiRGVsZXRlXCIsIG9uQ2xpY2s6IGRlbGV0ZUJ1dHRvbi5vbkNsaWNrIHx8IG9uRGVsZXRlIH0pIDogdW5kZWZpbmVkLFxuICAgICAgICB1cGxvYWRCdXR0b25cbiAgICAgICAgICAgID8gX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCB1cGxvYWRCdXR0b24pLCB7IGxhYmVsOiBcIlVwbG9hZFwiLCBvbkNsaWNrOiB1cGxvYWRCdXR0b24ub25DbGljayB8fCBvblVwbG9hZCB9KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgYWJvcnRCdXR0b25cbiAgICAgICAgICAgID8gX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBhYm9ydEJ1dHRvbiksIHsgbGFiZWw6IFwiQWJvcnRcIiwgb25DbGljazogYWJvcnRCdXR0b24ub25DbGljayB8fCBvbkFib3J0IH0pIDogdW5kZWZpbmVkLFxuICAgIF0uZmlsdGVyKGZ1bmN0aW9uIChhYikgeyByZXR1cm4gYWIgIT09IHVuZGVmaW5lZDsgfSk7XG4gICAgdmFyIHRhaWxDbGFzc05hbWUgPSBcIlwiLmNvbmNhdCh0b3AgPyBcIiB0b3BcIiA6IFwiIGJvdHRvbVwiKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoXCJmaWxlcy11aS1idXR0b25zLWNvbnRhaW5lclwiICsgdGFpbENsYXNzTmFtZSwgY29udGFpbmVyQ2xhc3NOYW1lKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogY29udGFpbmVyU3R5bGUgfSwgYWN0aW9uQnV0dG9uc0xpc3QubWFwKGZ1bmN0aW9uIChhY3Rpb25CdXR0b25Qcm9wcywgaW5kZXgpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gYWN0aW9uQnV0dG9uUHJvcHMuY2hpbGRyZW4sIGxhYmVsID0gYWN0aW9uQnV0dG9uUHJvcHMubGFiZWwsIHJlc2V0U3R5bGVzID0gYWN0aW9uQnV0dG9uUHJvcHMucmVzZXRTdHlsZXMsIGNsYXNzTmFtZSA9IGFjdGlvbkJ1dHRvblByb3BzLmNsYXNzTmFtZSwgc3R5bGUgPSBhY3Rpb25CdXR0b25Qcm9wcy5zdHlsZSwgb25DbGljayA9IGFjdGlvbkJ1dHRvblByb3BzLm9uQ2xpY2s7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChNYXRlcmlhbEJ1dHRvbiwgeyBrZXk6IGluZGV4LCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgc3R5bGU6IHN0eWxlLCByZXNldFN0eWxlczogcmVzZXRTdHlsZXMsIG9uQ2xpY2s6IGZ1bmN0aW9uIChldnQpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhldnQpOyB9LCBkaXNhYmxlZDogZGlzYWJsZWQgfSwgY2hpbGRyZW4gfHwgbGFiZWwpKTtcbiAgICB9KSkpO1xufTtcblxudmFyIERyb3BMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvbkRyb3AgPSBwcm9wcy5vbkRyb3AsIG9uRHJhZ0xlYXZlID0gcHJvcHMub25EcmFnTGVhdmUsIGNsYXNzTmFtZUxheWVyID0gcHJvcHMuY2xhc3NOYW1lLCBvcGVuID0gcHJvcHMub3Blbiwgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICAvL2NvbnNvbGUubG9nKFwiRHJvcExheWVyXCIsIGNsYXNzTmFtZUxheWVyKTtcbiAgICAvKiAgY29uc3Qgb25EcmFnRW5kID0gKGV2dDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgIC8vY29uc29sZS5sb2coXCJEcmFnIGVuZGVkXCIpO1xuICAgICAgIG9uRHJhZ0xlYXZlPy4oZXZ0KTtcbiAgICAgfTsgKi9cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZUxheWVyLCBvbkRyYWdMZWF2ZTogb25EcmFnTGVhdmUsIG9uRHJvcDogb25Ecm9wLCBcbiAgICAgICAgLy9vbkRyYWdFbmQ9e29uRHJhZ0VuZH1cbiAgICAgICAgc3R5bGU6IHN0eWxlIHx8IHsgZGlzcGxheTogb3BlbiA/IHVuZGVmaW5lZCA6IFwibm9uZVwiIH0gfSkpO1xufTtcblxuZnVuY3Rpb24gdXNlRHJvcHpvbmVDbGFzc05hbWUoZHJvcHpvbmVJZCwgY2xhc3NOYW1lLCBcbi8vaXNEcmFnZ2luZzogYm9vbGVhbixcbi8vaGVhZGVyOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2UsXG4vL2Zvb3RlcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlLFxuY29sb3IsIFxuLy9ib3JkZXJSYWRpdXM6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCxcbmJhY2tncm91bmQsIG1pbkhlaWdodCkge1xuICAgIC8vY29uc29sZS5sb2coXCJ1c2VEcm9wem9uZUNsYXNzTmFtZVwiLCBjbGFzc05hbWUsIGlzRHJhZ2dpbmcsIGhlYWRlciwgZm9vdGVyLCBjb2xvciwgYmFja2dyb3VuZCwgbWluSGVpZ2h0KTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUlkID0gKGNvbG9yID09PSB1bmRlZmluZWQgJiYgYmFja2dyb3VuZCA9PT0gdW5kZWZpbmVkICYmIG1pbkhlaWdodCA9PT0gdW5kZWZpbmVkKSA/IFwiZGVmYXVsdFwiIDogZHJvcHpvbmVJZC5yZXBsYWNlKFwiOlwiLCBcIl9cIikucmVwbGFjZShcIjpcIiwgXCJfXCIpO1xuICAgIHZhciBiYXNlQ2xhc3NOYW1lID0gXCJmdWktZHJvcHpvbmUtcm9vdCBmdWktZHJvcHpvbmUtYm9yZGVyXCI7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIGlkU3R5bGVzID0gX2FbMF0sIHNldElkU3R5bGVzID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzdHlsZUluamVjdGVkID0gX2JbMF0sIHNldFN0eWxlSW5qZWN0ZWQgPSBfYlsxXTtcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBmaW5hbENsYXNzTmFtZSA9IF9jWzBdLCBzZXRGaW5hbENsYXNzTmFtZSA9IF9jWzFdO1xuICAgIHZhciBfZCA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lSGVhZGVyID0gX2RbMF0sIHNldEZpbmFsQ2xhc3NOYW1lSGVhZGVyID0gX2RbMV07XG4gICAgdmFyIF9lID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWVGb290ZXIgPSBfZVswXSwgc2V0RmluYWxDbGFzc05hbWVGb290ZXIgPSBfZVsxXTtcbiAgICB2YXIgX2YgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBmaW5hbENsYXNzTmFtZURpc2FibGVkID0gX2ZbMF0sIHNldEZpbmFsQ2xhc3NOYW1lRGlzYWJsZWQgPSBfZlsxXTtcbiAgICAvL2NvbnN0IFtvZmZzZXQsIHNldE9mZnNldF0gPSBSZWFjdC51c2VTdGF0ZTxudW1iZXI+KDApO1xuICAgIHZhciBtYWtlQ2xhc3NOYW1lID0gZnVuY3Rpb24gKGNsYXNzTmFtZSwgXG4gICAgLy9pc0RyYWdnaW5nOiBib29sZWFuLFxuICAgIC8vIG9mZnNldDogbnVtYmVyLFxuICAgIGNvbG9yLCBcbiAgICAvL2JvcmRlclJhZGl1czogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGJhY2tncm91bmQsIG1pbkhlaWdodCkge1xuICAgICAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBiYXNlQ2xhc3NOYW1lO1xuICAgICAgICAvLyBiZXR0ZXIgdG8gY29tZSBiYWNrIHRvIHRoZSBjdXN0b20gc3R5bGVzaGVldCBmb3IgZWFjaCBkcm9wem9uZSB3aXRoIHRoZSB1bmlxdWUgaWRcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBtYWtlRHluYW1pY0Ryb3B6b25lU3R5bGVTaGVldChmaW5hbERyb3B6b25lSWQsIFxuICAgICAgICAvLyBvZmZzZXQsXG4gICAgICAgIC8vaXNEcmFnZ2luZyxcbiAgICAgICAgY29sb3IsIGJhY2tncm91bmQsIG1pbkhlaWdodCk7XG4gICAgICAgIHZhciBpZFN0eWxlID0gXCJcIjtcbiAgICAgICAgaWYgKCFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICBzZXRJZFN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgIGlmIChpZFN0eWxlICE9PSBcIlwiKVxuICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL2FscmVhZHkgYSBzdHlsZXNoZWV0IGFzc29jaWF0ZWRcbiAgICAgICAgICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldChpZFN0eWxlcywgc3R5bGVTaGVldC5zaGVldFJ1bGVzIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBmaWxlcy11aS1kcm9wem9uZS1leHRyYS1cIi5jb25jYXQoZmluYWxEcm9wem9uZUlkKTtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgPSBcIlwiLmNvbmNhdChmaW5hbENsYXNzTmFtZSwgXCIgXCIpLmNvbmNhdChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlmIChpc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSA9IGAke2ZpbmFsQ2xhc3NOYW1lfSBmdWktaGlkZS1ib3JkZXJgO1xuICAgICAgICB9ICovXG4gICAgICAgIHNldEZpbmFsQ2xhc3NOYW1lKGZpbmFsQ2xhc3NOYW1lKTtcbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWVIZWFkZXIoXCJmaWxlcy11aS1oZWFkZXItYm9yZGVyLXJkLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpKTtcbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWVGb290ZXIoXCJmaWxlcy11aS1mb290ZXItYm9yZGVyLXJkLXRvcC1iZy1jb2xvci1cIi5jb25jYXQoZmluYWxEcm9wem9uZUlkKSk7XG4gICAgICAgIHNldEZpbmFsQ2xhc3NOYW1lRGlzYWJsZWQoXCJmaWxlcy11aS1kaXNhYmxlZC1sYXllci1jb2xvci1cIi5jb25jYXQoZmluYWxEcm9wem9uZUlkKSk7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBtYWtlQ2xhc3NOYW1lKGNsYXNzTmFtZSwgXG4gICAgICAgIC8vaXNEcmFnZ2luZyxcbiAgICAgICAgLy9vZmZzZXQsIFxuICAgICAgICBjb2xvciwgXG4gICAgICAgIC8vIGJvcmRlclJhZGl1cywgXG4gICAgICAgIGJhY2tncm91bmQsIG1pbkhlaWdodCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtjbGFzc05hbWUsXG4gICAgICAgIC8vaXNEcmFnZ2luZyxcbiAgICAgICAgLy8gb2Zmc2V0LCBcbiAgICAgICAgY29sb3IsXG4gICAgICAgIC8vYm9yZGVyUmFkaXVzLCBcbiAgICAgICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0XSk7XG4gICAgcmV0dXJuIFtmaW5hbENsYXNzTmFtZSwgZmluYWxDbGFzc05hbWVIZWFkZXIsIGZpbmFsQ2xhc3NOYW1lRm9vdGVyLCBmaW5hbENsYXNzTmFtZURpc2FibGVkXTtcbn1cbnZhciBtYWtlRHluYW1pY0Ryb3B6b25lU3R5bGVTaGVldCA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBcbi8vIG9mZnNldDogbnVtYmVyLFxuLy9pc0RyYWdnaW5nOiBib29sZWFuLFxuY29sb3IsIGJhY2tncm91bmQsIG1pbkhlaWdodCkge1xuICAgIHZhciByb290Q29sb3JCb3JkZXJTdHlsZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWRyb3B6b25lLWV4dHJhLVwiLmNvbmNhdChkcm9wem9uZUlkKSxcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIGNvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpLFxuICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBkYXNoZWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvcikpLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiB0eXBlb2YgbWluSGVpZ2h0ID09PSBcIm51bWJlclwiID8gXCJcIi5jb25jYXQobWluSGVpZ2h0LCBcInB4XCIpIDogbWluSGVpZ2h0LFxuICAgICAgICB9LFxuICAgIH07XG4gICAgdmFyIHJvb3RDb2xvckJvcmRlclN0eWxlSGlkZUJvcmRlciA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZpbGVzLXVpLXJvb3QtYm9yZGVyLWhpZGVcIixcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB2YXIgaGVhZGVyQm9yZGVyU3R5bGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmaWxlcy11aS1oZWFkZXItYm9yZGVyLXJkLVwiLmNvbmNhdChkcm9wem9uZUlkKSxcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIFwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1c1wiOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgICAgICBcImJvcmRlci10b3AtcmlnaHQtcmFkaXVzXCI6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHZhciBmb290ZXJCb3JkZXJTdHlsZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZvb3Rlci1ib3JkZXItcmQtdG9wLWJnLWNvbG9yLVwiLmNvbmNhdChkcm9wem9uZUlkKSxcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIFwiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c1wiOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgICAgICBcImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzXCI6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC4xMjkpLFxuICAgICAgICAgICAgYm9yZGVyVG9wOiBcIjFweCBkb3R0ZWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvcikpXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB2YXIgZGlzYWJsZWRMYXllclN0eWxlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktZGlzYWJsZWQtbGF5ZXItY29sb3ItXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuMzgpLFxuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgc2hlZXRSdWxlcyA9IFtcbiAgICAgICAgcm9vdENvbG9yQm9yZGVyU3R5bGUsXG4gICAgICAgIHJvb3RDb2xvckJvcmRlclN0eWxlSGlkZUJvcmRlcixcbiAgICAgICAgaGVhZGVyQm9yZGVyU3R5bGUsXG4gICAgICAgIGZvb3RlckJvcmRlclN0eWxlLFxuICAgICAgICBkaXNhYmxlZExheWVyU3R5bGVcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBcImZpbGVzLWRyb3B6b25lLXVpLXN0eWxlLWlkLVwiICsgZHJvcHpvbmVJZCxcbiAgICAgICAgc2hlZXRSdWxlczogc2hlZXRSdWxlc1xuICAgIH07XG59O1xuXG4vKipcbiAqIEVmZmVjdCBmb3Iga2VlcGluZyB0cmFjayBvZiBjaGFuZ2VzXG4gKiB1cGRhdGUgZmlsZXMgd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKiBhbHNvIHVwZGF0ZXMgdGhlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICogV2hlbiBgaXNVcGxvYWRpbmdgIGlzIHRydWUsIGl0IG9ubHkgdXBkYXRlcyB3aGVuIHZhbHVlIGFuZCBhcnJPZkV4dEZpbGVzXG4gKiBoYXZlIHNhbWUgbGVuZ2h0LiBBbHNvLCBvbmx5IHVwZGF0ZXMgdGhlIHVwbG9hZFN0YXR1cyBhdHRyaWJ1dGVcbiAqIGZyb20gXCJwcmVwYXJpbmdcIiwgdG8gdW5kZWZpbmVkIHdoZW4gb25DYW5jZWwoKSBtZXRob2QgaXMgY2FsbGVkIGluXG4gKiBGaWxlSXRlbSBjb21wb25lbnRcbiAqIEBwYXJhbSBkcm9wem9uZUlkIHRoZSBhc29jaWF0ZWQgZHJvcHpvbmVJZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYXJyYXkgb2YgRXh0RmlsZXMgaW4gY2FzZSBvZiBtdWx0aXBsZSBkcm9wem9uZXNcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbGlzdCBvZiBGaWxlcyBmcm9tIHByb3BzXG4gKiBAcGFyYW0gaXNVcGxvYWRpbmdcbiAqIEByZXR1cm5zIHRoZSBsb2NhbCBsaXN0IG9mIEZpbGVzXG4gKi9cbnZhciB1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlciA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCB2YWx1ZSwgaXNVcGxvYWRpbmcsIG1heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCB2YWxpZGF0b3IsIGxvY2FsaXphdGlvbiwgdmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiaW5jb21taW5nIGV4dGZpbGVzIGZpbGV1cGRhdGVyIHZhbHVlXCIsIHZhbHVlLm1hcCh4ID0+IHgudXBsb2FkU3RhdHVzKSk7XG4gICAgLy9jb25zb2xlLmxvZyhcIkZpbGVMaXN0VXBkYXRlclwiLCBkcm9wem9uZUlkLCB2YWx1ZSwgaXNVcGxvYWRpbmcsIG1heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCB2YWxpZGF0ZUZpbGVzRmxhZyk7XG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIGZpbGVzIGxvY2FsbHlcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShbXSksIGxvY2FsRmlsZXMgPSBfYVswXSwgc2V0TG9jYWxGaWxlcyA9IF9hWzFdO1xuICAgIC8vIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKDApLCBudW1iZXJPZlZhbGlkRmlsZXMgPSBfYlswXSwgc2V0TnVtYmVyT2ZWYWxpZEZpbGVzID0gX2JbMV07XG4gICAgLy9EZXRlY3QgY2hhbmdlcyBpbiB0aGUgZmlsZSBpdGVtIHByb3BzIHdoZW4gdXBsb2FkIHN0YXJ0ZWRcbiAgICAvL21vc3RseSBmb3IgZGV0ZWN0aW5nIFxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcnJPZkV4dEZpbGVzID0gRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdChkcm9wem9uZUlkKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInZhbHVlIGNoYW5nZWRcIiwgaXNVcGxvYWRpbmcsIHZhbHVlLm1hcChGID0+IEYudXBsb2FkU3RhdHVzKSwgZHJvcHpvbmVJZCk7XG4gICAgICAgIC8vIC8vY29uc29sZS5sb2coXCJ2YWx1ZSBjaGFuZ2VkXCIsIHZhbHVlLm1hcChGID0+IEYudXBsb2FkU3RhdHVzKSk7XG4gICAgICAgIGlmICghaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXModmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiBpcyB1cGxvYWRpbmdcbiAgICAgICAgICAgIGlmIChhcnJPZkV4dEZpbGVzKSB7XG4gICAgICAgICAgICAgICAgLy9sZW5naHQgb2YgdGhlIG5ldyBhcnIgY2FuIGJlIGVxdWFsIG9yIGxvd2VyXG4gICAgICAgICAgICAgICAgLy93aGVuIGxvd2VyLCBpdCBtZWFucyBhIGZpbGUgd2FzIGRlbGV0ZWQsIGl0IHdpbGwgYmUgcmVtb3ZlZCBvbmx5IGlmIHdhcyBub3QgdXBsb2FkZWRcbiAgICAgICAgICAgICAgICAvL3doZW4gc2FtZSBsZW5naHQgaXQgbWVhbnMgdGhhdCBhIGZpbGUgY291bGQgYmVcbiAgICAgICAgICAgICAgICAvL25vIG1hdGhlciB0aGUgc2l6ZSwgaXQgd2lsbCBzZWFyY2ggZm9yIHRoZSBtaXNzaW5nIGFuZCB0aGUgc3RhdHVzIHRoYXQgY2hhbmdlZFxuICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlIGN1cnJlbnQgRXh0IGZpbGUgaXMgbm90IHByZXNlbnQgYW55bW9yZVxuICAgICAgICAgICAgICAgICAgICAvL2FkZCBkZWxldGVkIGZsYWdcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4dEZpbGVJbmRleCA9IHZhbHVlLmZpbmRJbmRleChmdW5jdGlvbiAoZXh0RmlsZSkgeyByZXR1cm4gZXh0RmlsZS5pZCA9PT0gZXh0RmlsZUluc3RhbmNlLmlkOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4dEZpbGVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS5leHRyYURhdGEgPSB7IGRlbGV0ZWQ6IHRydWUgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJleHRGaWxlVXBkYXRlciBub3QgZm91bmRcIiwgZXh0RmlsZUluc3RhbmNlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyRXh0RmlsZU9iaiA9IHZhbHVlW2V4dEZpbGVJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXROZXh0VXBsb2FkU3RhdHVzKGV4dEZpbGVJbnN0YW5jZSwgY3VyckV4dEZpbGVPYmopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLyppZiAoYXJyT2ZFeHRGaWxlcy5sZW5ndGggIT09IHZhbHVlLmxlbmd0aCB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyck9mRXh0RmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlW2ldLnVwbG9hZFN0YXR1cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChhcnJPZkV4dEZpbGVzW2ldLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIilcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIgb25DYW5jZWwgaVwiLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtkcm9wem9uZUlkLCB2YWx1ZSxcbiAgICAgICAgLy8gaXNVcGxvYWRpbmdcbiAgICBdKTtcbiAgICAvL0RldGVjdCBjaGFuZ2VzIGluIHZhbGlkYXRpb24gcHJvcHMgZm9yIHJlLXZhbGlkYXRpbmcgZmlsZXNcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGxvY2FsRmlsZXMubWFwKGZ1bmN0aW9uIChGKSB7IHJldHVybiBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIEYpLCB7IHZhbGlkOiB1bmRlZmluZWQgfSk7IH0pKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgdmFyIHZhbGlkYXRlZEV4dEZpbGVMaXN0ID0gdmFsaWRhdGVFeHRGaWxlTGlzdChsb2NhbEZpbGVzLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gbnVtYmVyT2ZWYWxpZEZpbGVzIDogSW5maW5pdHksIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pO1xuICAgICAgICBzZXRMb2NhbEZpbGVzKHZhbGlkYXRlZEV4dEZpbGVMaXN0KTtcbiAgICAgICAgLy9taXNzaW5nIGRlcGVuZGVuY2llIGxvY2FsRmlsZXMgd2FzIG5vdCBhZGRlZCBieSBwdXJwb3NlXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFt2YWxpZGF0ZUZpbGVzRmxhZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbl0pO1xuICAgIC8vIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIC8vIHVwZGF0ZSBudW1iZXIgb2YgdmFsaWQgZmlsZXNcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgIHNldE51bWJlck9mVmFsaWRGaWxlcyhsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geC52YWxpZDsgfSkubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldE51bWJlck9mVmFsaWRGaWxlcyhsb2NhbEZpbGVzLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9LCBbbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlc0ZsYWddKTtcbiAgICByZXR1cm4gW2xvY2FsRmlsZXMsIG51bWJlck9mVmFsaWRGaWxlcywgc2V0TG9jYWxGaWxlc107XG59O1xuXG52YXIgdXNlRmFrZVByb2dyZXNzID0gZnVuY3Rpb24gKHRpbWUpIHtcbiAgICBpZiAodGltZSA9PT0gdm9pZCAwKSB7IHRpbWUgPSAxNTAwOyB9XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoMjgpLCBwcm9ncmVzcyA9IF9hWzBdLCBzZXRQcm9ncmVzcyA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1cGRhdGVQcm9ncmVzcyA9IGZ1bmN0aW9uIChjdXJyUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIGlmIChjdXJyUHJvZ3Jlc3MgPT09IDEwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IGdldFJhbmRvbUludCg1LCAyNCk7XG4gICAgICAgICAgICB2YXIgbmV3UHJvZ3Jlc3MgPSBjdXJyUHJvZ3Jlc3MgKyBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAobmV3UHJvZ3Jlc3MgPiAxMDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1Byb2dyZXNzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgX215SW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRQcm9ncmVzcyhmdW5jdGlvbiAoX3Byb2dyZXNzKSB7IHJldHVybiB1cGRhdGVQcm9ncmVzcyhfcHJvZ3Jlc3MpOyB9KTtcbiAgICAgICAgfSwgdGltZSk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VGYWtlUHJvZ3Jlc3MgU0VUIGludGVydmFsXCIsIF9teUludGVydmFsKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VGYWtlUHJvZ3Jlc3MgQ0xFQVIgaW50ZXJ2YWxcIiwgX215SW50ZXJ2YWwpO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChfbXlJbnRlcnZhbCk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gcHJvZ3Jlc3M7XG59O1xuXG52YXIgbWFrZURyb3BMYXllckR5bmFtaWNTdHlsZSA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBjb2xvcikge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBcImZpbGVzLXVpLWRyb3AtbGF5ZXItc3R5bGUtaWQtXCIgKyBkcm9wem9uZUlkLFxuICAgICAgICBzaGVldFJ1bGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImRyb3B6b25lLWxheWVyLVwiLmNvbmNhdChkcm9wem9uZUlkKSxcbiAgICAgICAgICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC40KSxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMCVcIixcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjAlXCIsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogMjAsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogXCIwcHggZGFzaGVkIFwiLmNvbmNhdChjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJkcm9wem9uZS1sYXllci1kcmFnXCIsXG4gICAgICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogXCIycHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgfTtcbn07XG5cbi8vY29uc3QgQkFTRV9EUk9QX0xBWUVSX1NUWUxFOiBzdHJpbmcgPSBcImZpbGVzLXVpLXN0eWxlcy1kcm9wLWxheWVyXCI7IFxuLyoqXG4gKlxuICogQHBhcmFtIGNvbG9yXG4gKiBAcGFyYW0gaXNEcmFnZ2luZ1xuICogQHBhcmFtIG1ha2VDbGFzc05hbWUgd2hldGhlciB0byBtYWtlIHRoZSBjbGFzc25hbWUgb3Igbm90XG4gKiBAcmV0dXJucyB0aGUgY2xhc3NuYW1lIGZvciBsYXllclxuICovXG52YXIgdXNlRHJvcExheWVyQ2xhc3NOYW1lID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGNvbG9yLCBcbi8vaXNEcmFnZ2luZz86IGJvb2xlYW4sXG5tYWtlQ2xhc3NOYW1lKSB7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIGlkU3R5bGVzID0gX2FbMF0sIHNldElkU3R5bGVzID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzdHlsZUluamVjdGVkID0gX2JbMF0sIHNldFN0eWxlSW5qZWN0ZWQgPSBfYlsxXTtcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgY2xhc3NOYW1lQ3JlYXRlZCA9IF9jWzBdLCBzZXRDbGFzc05hbWVDcmVhdGVkID0gX2NbMV07XG4gICAgdmFyIGZpbmFsRHJvcHpvbmVJZCA9IChjb2xvciA9PT0gdW5kZWZpbmVkKSA/IFwiZGVmYXVsdFwiIDogZHJvcHpvbmVJZC5yZXBsYWNlKFwiOlwiLCBcIl9cIikucmVwbGFjZShcIjpcIiwgXCJfXCIpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcInVzZURyb3BMYXllckNsYXNzTmFtZVwiLCBjb2xvciwgaXNEcmFnZ2luZywgbWFrZUNsYXNzTmFtZSk7XG4gICAgICAgIHZhciBoYW5kbGVJbnNlclN0eWxlID0gZnVuY3Rpb24gKGNvbG9yKSB7XG4gICAgICAgICAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBcIlwiO1xuICAgICAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBtYWtlRHJvcExheWVyRHluYW1pY1N0eWxlKGZpbmFsRHJvcHpvbmVJZCwgY29sb3JcbiAgICAgICAgICAgIC8vaXNEcmFnZ2luZ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHZhciBpZFN0eWxlID0gXCJcIjtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VEcm9wTGF5ZXJDbGFzc05hbWUgaGFuZGxlSW5zZXJTdHlsZVwiLCBjb2xvciwgc3R5bGVTaGVldCk7XG4gICAgICAgICAgICBpZiAoZmluYWxEcm9wem9uZUlkID09PSBcImRlZmF1bHRcIiAmJiAhc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgICAgIC8vY2hlY2sgaWYgYWxyZWFkeSBpbnNlcnRlZFxuICAgICAgICAgICAgICAgIGlmIChEeW5hbWlDU1MuZXhpc3RTdHlsZVNoZWV0KFwiZmlsZXMtdWktZHJvcC1sYXllci1zdHlsZS1pZC1cIiArIGZpbmFsRHJvcHpvbmVJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SWRTdHlsZXMoXCJmaWxlcy11aS1kcm9wLWxheWVyLXN0eWxlLWlkLVwiICsgZmluYWxEcm9wem9uZUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SWRTdHlsZXMoaWRTdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZFN0eWxlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICAgICAgc2V0SWRTdHlsZXMoaWRTdHlsZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvL2FscmVhZHkgYSBzdHlsZXNoZWV0IGFzc29jaWF0ZWRcbiAgICAgICAgICAgICAgICBEeW5hbWlDU1MuZWRpdFN0eWxlU2hlZXQoaWRTdHlsZXMsIHN0eWxlU2hlZXQuc2hlZXRSdWxlcyB8fCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcImRyb3B6b25lLWxheWVyLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpO1xuICAgICAgICAgICAgLyogIGlmIChpc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IGAgZHJvcHpvbmUtbGF5ZXItZHJhZ2A7XG4gICAgICAgICAgICAgfSAqL1xuICAgICAgICAgICAgc2V0Q2xhc3NOYW1lQ3JlYXRlZChmaW5hbENsYXNzTmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIj0+XCIsIGlzRHJhZ2dpbmcpO1xuICAgICAgICBpZiAobWFrZUNsYXNzTmFtZSkge1xuICAgICAgICAgICAgaGFuZGxlSW5zZXJTdHlsZShjb2xvcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2NvbG9yLFxuICAgICAgICAvLyBpc0RyYWdnaW5nLFxuICAgICAgICBtYWtlQ2xhc3NOYW1lXSk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZUNyZWF0ZWQ7XG59O1xuXG4vKipcbiAqIEluaXRpYWxpemVyIGhvb2sgZm9yIEZpbGVJdGVtTmVvXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBPYmplY3RcbiAqIEBwYXJhbSB2YWxpZCBXaGV0aGVyIHRoZSBmaWxlIGlzIHZhbGlkLCBub3QgdmFsaWQgb3Igbm90IHNldFxuICogQHBhcmFtIHByZXZpZXcgV2hldGhlciB0byBzaG93IGEgcHJldmlldyBvbiBGaWxlSXRlbVxuICogQHBhcmFtIGltYWdlVXJsIFRoZSBpbWFnZSB1cmxcbiAqIEBwYXJhbSB4aHIgdGhlIHhociBvYmplY3RcbiAqIEBwYXJhbSBwcm9ncmVzcyB0aGUgY3VycmVudCBwcm9ncmVzcyBnaXZlbiBieSBwcm9wc1xuICogQHJldHVybnMgYW4gYXJyYXkgdGh0YSBjb250YWlucyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgW2lzSW1hZ2UsIGlzVmlkZW8sIHVybCwgaW1hZ2VTb3VyY2UsIGxvY2FsUHJvZ3Jlc3NdXG4gKi9cbnZhciB1c2VGaWxlTW9zYWljSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZmlsZSwgbmFtZSwgdHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgY3VzdG9tSWNvbnMsIHhocikge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNJbWFnZSA9IF9hWzBdLCBzZXRJc0ltYWdlID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc1ZpZGVvID0gX2JbMF0sIHNldElzVmlkZW8gPSBfYlsxXTtcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgdXJsID0gX2NbMF0sIHNldFVybCA9IF9jWzFdO1xuICAgIHZhciBfZCA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGltYWdlU291cmNlID0gX2RbMF0sIHNldEltYWdlU291cmNlID0gX2RbMV07XG4gICAgdmFyIF9lID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgdmlkZW9Tb3VyY2UgPSBfZVswXSwgc2V0VmlkZW9Tb3VyY2UgPSBfZVsxXTtcbiAgICB2YXIgX2YgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzUmVhZHkgPSBfZlswXSwgc2V0SXNSZWFkeSA9IF9mWzFdO1xuICAgIHZhciBpbml0ID0gZnVuY3Rpb24gKGZpbGUsIG5hbWUsIHR5cGUsIHZhbGlkLCBwcmV2aWV3LCBpbWFnZVVybCwgdmlkZW9VcmwsIGN1c3RvbUljb25zLCB4aHIsIHByb2dyZXNzKSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB1cmwsIHJlc3BvbnNlLCByZXNwb25zZV8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaW5pdFwiLCBmaWxlLCBuYW1lLCB0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlICYmICghbmFtZSAmJiAhdHlwZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIHVybCA9IChmaWxlID8gZ2V0VVJMRmlsZUljbyhmaWxlLCBjdXN0b21JY29ucykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VVJMRmlsZUljb0Zyb21OYW1lQW5kVHlwZShuYW1lLCB0eXBlLCBjdXN0b21JY29ucykpLnVybDtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImluaXRcIiwgdXJsKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VXJsKHVybCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGltYWdlVXJsICYmIHZpZGVvVXJsKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMV07XG4gICAgICAgICAgICAgICAgICAgIHNldElzVmlkZW8odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEltYWdlU291cmNlKGltYWdlVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2UodmlkZW9VcmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlVXJsKSByZXR1cm4gWzMgLypicmVhayovLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNJbWFnZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW1hZ2VTb3VyY2UoaW1hZ2VVcmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXZpZGVvVXJsKSByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNWaWRlbyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmlkZW9Tb3VyY2UodmlkZW9VcmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZ2V0SGVhZGVyQW5kVGFpbChmaWxlLCB0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNJbWFnZShyZXNwb25zZVswXSA9PT0gXCJpbWFnZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFtcIm1wNFwiLCBcIm9nZ1wiLCBcIndlYm1cIl0uaW5jbHVkZXMocmVzcG9uc2VbMV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNWaWRlbyhyZXNwb25zZVswXSA9PT0gXCJ2aWRlb1wiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEocHJldmlldyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHZhbGlkIHx8IHR5cGVvZiB2YWxpZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCB2YWxpZCA9PT0gbnVsbCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlWzBdID09PSBcImltYWdlXCIpKSByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWxlKSByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgcmVhZEFzRGF0YVVSTChmaWxlKV07XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZV8xID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VfMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW1hZ2VTb3VyY2UocmVzcG9uc2VfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSA1O1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNSZWFkeSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICAvLy8vLy8gICBDTEVBTiBVUFxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGluaXQoZmlsZSwgbmFtZSwgdHlwZSwgdmFsaWQsIHByZXZpZXcgfHwgZmFsc2UsIGltYWdlVXJsLCB2aWRlb1VybCwgY3VzdG9tSWNvbnMpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0SW1hZ2VTb3VyY2UodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHNldElzSW1hZ2UoZmFsc2UpO1xuICAgICAgICAgICAgc2V0SXNWaWRlbyhmYWxzZSk7XG4gICAgICAgICAgICBzZXRJc1JlYWR5KGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2ZpbGUsIG5hbWUsIHR5cGUsIHZhbGlkLCBwcmV2aWV3LCBpbWFnZVVybCwgdmlkZW9VcmwsIGN1c3RvbUljb25zXSk7XG4gICAgcmV0dXJuIFtpc1JlYWR5LCBpc0ltYWdlLCBpc1ZpZGVvLCB1cmwsIGltYWdlU291cmNlLCB2aWRlb1NvdXJjZV07XG59O1xuLyogZXhwb3J0IGNvbnN0IGlkZW50aWZ5RmlsZVNvdXJjZSA9IChmaWxlOiBGaWxlIHwgdW5kZWZpbmVkLCBuYW1lOiBzdHJpbmcsIGZpbGVUeXBlOiBzdHJpbmcpID0+IHtcbiAgICBpZighZmlsZSl7XG5cbiAgICB9XG59ICovXG52YXIgZ2V0SGVhZGVyQW5kVGFpbCA9IGZ1bmN0aW9uIChmaWxlLCB0eXBlKSB7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgaWYgKGZpbGUudHlwZSkge1xuICAgICAgICAgICAgdmFyIHNwbGl0dGVkVHlwZSA9IGZpbGUudHlwZS5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICByZXR1cm4gW3NwbGl0dGVkVHlwZVswXSwgc3BsaXR0ZWRUeXBlWzFdXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXCJvY3RldFwiLCBcIm9jdGV0XCJdO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgc3BsaXR0ZWRUeXBlID0gdHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0eXBlLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgaWYgKHNwbGl0dGVkVHlwZSAmJiBzcGxpdHRlZFR5cGUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtzcGxpdHRlZFR5cGVbMF0sIHNwbGl0dGVkVHlwZVsxXV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW1wib2N0ZXRcIiwgXCJvY3RldFwiXTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbnZhciB1c2VJc1VwbG9hZGluZyA9IGZ1bmN0aW9uICh1cGxvYWRTdGF0dXMpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzVXBsb2FkaW5nID0gX2FbMF0sIHNldElzVXBsb2FkaW5nID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUodXBsb2FkU3RhdHVzKSwgbGFzdFVwbG9hZFN0YXR1cyA9IF9iWzBdLCBzZXRMYXN0VXBsb2FkU3RhdHVzID0gX2JbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0TGFzdFVwbG9hZFN0YXR1cyh1cGxvYWRTdGF0dXMpO1xuICAgICAgICBpZiAoW1widXBsb2FkaW5nXCIsIFwicHJlcGFyaW5nXCJdLmluY2x1ZGVzKGxhc3RVcGxvYWRTdGF0dXMgfHwgXCJcIikgJiZcbiAgICAgICAgICAgIFtcInN1Y2Nlc3NcIiwgXCJlcnJvclwiLCBcImFib3J0ZWRcIl0uaW5jbHVkZXModXBsb2FkU3RhdHVzIHx8IFwiXCIpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9LCAzNTAwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vYmFzZSBjb21wYXJpc29uXG4gICAgICAgICAgICBzZXRJc1VwbG9hZGluZyh1cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIgfHwgdXBsb2FkU3RhdHVzID09PSBcInVwbG9hZGluZ1wiKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbdXBsb2FkU3RhdHVzXSk7XG4gICAgcmV0dXJuIGlzVXBsb2FkaW5nO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcHJvZ3Jlc3MgdGhlIHByb2dyZXNzIGdpdmVuIGFzIGEgcHJvcCB0byB0aGUgY29tcG9uZW50XG4gKiBAcGFyYW0geGhyIHRoZSBYTUxIdHRwUmVxdWVzdCBvYmplY3QgZm9yIEFKQVggb3BlcmF0aW9uc1xuICogQHJldHVybnMgdGhlIHByb2dyZXNzIHRvIGJlIHNob3duIGluIHRoZSBjb21wb25lbnRcbiAqL1xudmFyIHVzZVByb2dyZXNzID0gZnVuY3Rpb24gKHByb2dyZXNzLCB4aHIpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiZ2V0UHJvZ3Jlc3NcIiwgcHJvZ3Jlc3MsIHhocik7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgbG9jYWxQcm9ncmVzcyA9IF9hWzBdLCBzZXRMb2NhbFByb2dyZXNzID0gX2FbMV07XG4gICAgaWYgKHByb2dyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGxvY2FsUHJvZ3Jlc3MgIT09IHByb2dyZXNzKSB7XG4gICAgICAgICAgICBzZXRMb2NhbFByb2dyZXNzKHByb2dyZXNzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKHhociAhPT0gdW5kZWZpbmVkICYmIHhociAhPT0gbnVsbCAmJiB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIHhociB3YXMgZ2l2ZW4gYnV0IGl0IHdhcyBub3QgaW5pdGlhbGl6ZWQgdGhlIGBvbnByb2dyZXNzYCBldmVudFxuICAgICAgICAgICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImdldFByb2dyZXNzIHByb2dyZXNzXCIsIHByb2dyZXNzLCAoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwKTtcbiAgICAgICAgICAgICAgICBzZXRMb2NhbFByb2dyZXNzKChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAxMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vaW5pdGlhbCBwcm9ncmVzcyB2YWx1ZSBzZXQgdG8gMFxuICAgICAgICAgICAgc2V0TG9jYWxQcm9ncmVzcygwKTtcbiAgICAgICAgfVxuICAgICAgICAvL3JldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBsb2NhbFByb2dyZXNzO1xufTtcblxuLy9pbXBvcnQgeyBwcmludF9tYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL3V0aWxzXCI7XG4vKipcbiAqXG4gKiBEZW1vczpcbiAqXG4gKiAtIFtEcm9wem9uZV0oaHR0cHM6Ly93d3cuZmlsZXMtdWkuY29tL2NvbXBvbmVudHMvZHJvcHpvbmUpXG4gKlxuICogQVBJOlxuICpcbiAqIC0gW0Ryb3B6b25lIEFQSV0oaHR0cHM6Ly93d3cuZmlsZXMtdWkuY29tL2FwaS9kcm9wem9uZS8pXG4gKi9cbnZhciBEcm9wem9uZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IG1lcmdlUHJvcHMocHJvcHMsIGRlZmF1bHREcm96b25lUHJvcHMpLCBcbiAgICAvL2Jhc2ljXG4gICAgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSwgX2IgPSBfYS52YWx1ZSwgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYiwgXG4gICAgLy92YWxpZGF0aW9uXG4gICAgYWNjZXB0ID0gX2EuYWNjZXB0LCBtYXhGaWxlU2l6ZSA9IF9hLm1heEZpbGVTaXplLCBtYXhGaWxlcyA9IF9hLm1heEZpbGVzLCB2YWxpZGF0b3IgPSBfYS52YWxpZGF0b3IsIGNsZWFuRmlsZXMgPSBfYS5jbGVhbkZpbGVzLCBvbkNsZWFuID0gX2Eub25DbGVhbiwgYXV0b0NsZWFuID0gX2EuYXV0b0NsZWFuLCBcbiAgICAvL3VwbG9hZGluZ1xuICAgIHVwbG9hZENvbmZpZyA9IF9hLnVwbG9hZENvbmZpZywgZmFrZVVwbG9hZCA9IF9hLmZha2VVcGxvYWQsIG9uVXBsb2FkU3RhcnQgPSBfYS5vblVwbG9hZFN0YXJ0LCBvblVwbG9hZEZpbmlzaCA9IF9hLm9uVXBsb2FkRmluaXNoLCBcbiAgICAvL3N0eWxpbmdcbiAgICBiYWNrZ3JvdW5kID0gX2EuYmFja2dyb3VuZCwgY29sb3IgPSBfYS5jb2xvciwgbWluSGVpZ2h0ID0gX2EubWluSGVpZ2h0LCBzdHlsZSA9IF9hLnN0eWxlLCBcbiAgICAvL3RleHRDb2xvcixcbiAgICBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsIFxuICAgIC8vbGFiZWxcbiAgICBsYWJlbCA9IF9hLmxhYmVsLCBcbiAgICAvL2xvY2FsaXphdGlvblxuICAgIGxvY1Byb3BzID0gX2EubG9jYWxpemF0aW9uLCBcbiAgICAvL3JpcHBsZVxuICAgIGRpc2FibGVSaXBwbGUgPSBfYS5kaXNhYmxlUmlwcGxlLCBcbiAgICAvL2RyYWcgb3BlcmF0aW9uc1xuICAgIG9uRHJhZ0VudGVyID0gX2Eub25EcmFnRW50ZXIsIG9uRHJhZ0xlYXZlID0gX2Eub25EcmFnTGVhdmUsIFxuICAgIC8vYWN0aW9uIGJ1dG90bnNcbiAgICBhY3Rpb25CdXR0b25zID0gX2EuYWN0aW9uQnV0dG9ucywgXG4gICAgLy9kcm9wIGxheWVyXG4gICAgZHJvcE9uTGF5ZXIgPSBfYS5kcm9wT25MYXllciwgXG4gICAgLy9oZWFkZXIgYW5kIGZvb3RlclxuICAgIGhlYWRlciA9IF9hLmhlYWRlciwgZm9vdGVyID0gX2EuZm9vdGVyLCBfYyA9IF9hLmhlYWRlckNvbmZpZywgaGVhZGVyQ29uZmlnID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsIF9kID0gX2EuZm9vdGVyQ29uZmlnLCBmb290ZXJDb25maWcgPSBfZCA9PT0gdm9pZCAwID8ge30gOiBfZCwgXG4gICAgLy9kaXNhYmxlZFxuICAgIGRpc2FibGVkID0gX2EuZGlzYWJsZWQsIFxuICAgIC8vb3BlbiBmaWxlIGRpYWxvZ1xuICAgIGNsaWNrYWJsZSA9IF9hLmNsaWNrYWJsZSwgXG4gICAgLy9hZGQgb3IgcmVwbGFjZVxuICAgIGJlaGF2aW91ciA9IF9hLmJlaGF2aW91ciwgXG4gICAgLy9jb250ZW50XG4gICAgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbiwgXG4gICAgLy9hZHZhbmNlZENvbmZpZyxcbiAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJvbkNoYW5nZVwiLCBcInZhbHVlXCIsIFwiYWNjZXB0XCIsIFwibWF4RmlsZVNpemVcIiwgXCJtYXhGaWxlc1wiLCBcInZhbGlkYXRvclwiLCBcImNsZWFuRmlsZXNcIiwgXCJvbkNsZWFuXCIsIFwiYXV0b0NsZWFuXCIsIFwidXBsb2FkQ29uZmlnXCIsIFwiZmFrZVVwbG9hZFwiLCBcIm9uVXBsb2FkU3RhcnRcIiwgXCJvblVwbG9hZEZpbmlzaFwiLCBcImJhY2tncm91bmRcIiwgXCJjb2xvclwiLCBcIm1pbkhlaWdodFwiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCIsIFwibGFiZWxcIiwgXCJsb2NhbGl6YXRpb25cIiwgXCJkaXNhYmxlUmlwcGxlXCIsIFwib25EcmFnRW50ZXJcIiwgXCJvbkRyYWdMZWF2ZVwiLCBcImFjdGlvbkJ1dHRvbnNcIiwgXCJkcm9wT25MYXllclwiLCBcImhlYWRlclwiLCBcImZvb3RlclwiLCBcImhlYWRlckNvbmZpZ1wiLCBcImZvb3RlckNvbmZpZ1wiLCBcImRpc2FibGVkXCIsIFwiY2xpY2thYmxlXCIsIFwiYmVoYXZpb3VyXCIsIFwiY2hpbGRyZW5cIl0pO1xuICAgIC8vY29udGV4dFxuICAgIHZhciBcbiAgICAvLyBkYXJrTW9kZTogZGFya01vZGVDb250ZXh0LFxuICAgIC8vaWNvbnMsXG4gICAgbG9jQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRmlsZXNVaUNvbnRleHQpLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gbG9jUHJvcHMgIT09IHVuZGVmaW5lZCA/IGxvY1Byb3BzIDogbG9jQ29udGV4dDtcbiAgICB2YXIgX2UgPSB1cGxvYWRDb25maWcsIHVybCA9IF9lLnVybCwgbWV0aG9kID0gX2UubWV0aG9kLCBoZWFkZXJzID0gX2UuaGVhZGVycywgdXBsb2FkTGFiZWwgPSBfZS51cGxvYWRMYWJlbCwgX2YgPSBfZS5jbGVhbk9uVXBsb2FkLCBjbGVhbk9uVXBsb2FkID0gX2YgPT09IHZvaWQgMCA/IHRydWUgOiBfZiwgX2cgPSBfZS5wcmVwYXJpbmdUaW1lLCBwcmVwYXJpbmdUaW1lID0gX2cgPT09IHZvaWQgMCA/IDE1MDAgOiBfZywgX2ggPSBfZS5hdXRvVXBsb2FkLCBhdXRvVXBsb2FkID0gX2ggPT09IHZvaWQgMCA/IGZhbHNlIDogX2g7XG4gICAgdmFyIF9qID0gYWN0aW9uQnV0dG9ucywgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID0gX2oucG9zaXRpb24sIGFib3J0QnV0dG9uID0gX2ouYWJvcnRCdXR0b24sIGRlbGV0ZUJ1dHRvbiA9IF9qLmRlbGV0ZUJ1dHRvbiwgdXBsb2FkQnV0dG9uID0gX2oudXBsb2FkQnV0dG9uLCBjbGVhbkJ1dHRvbiA9IF9qLmNsZWFuQnV0dG9uLCBjb250YWluZXJTdHlsZSA9IF9qLnN0eWxlLCBjb250YWluZXJDbGFzc05hbWUgPSBfai5jbGFzc05hbWU7XG4gICAgdmFyIHN0eWxlQm9yZGVyUmFkaXVzID0gc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlLmJvcmRlclJhZGl1cztcbiAgICB2YXIgX2sgPSBoZWFkZXJDb25maWcuY2xlYW5GaWxlcywgY2xlYW5GaWxlc0hlYWRlciA9IF9rID09PSB2b2lkIDAgPyB0cnVlIDogX2ssIF9sID0gaGVhZGVyQ29uZmlnLmRlbGV0ZUZpbGVzLCBkZWxldGVGaWxlc0hlYWRlciA9IF9sID09PSB2b2lkIDAgPyB0cnVlIDogX2wsIF9tID0gaGVhZGVyQ29uZmlnLm1heEZpbGVTaXplLCBtYXhGaWxlU2l6ZUhlYWRlciA9IF9tID09PSB2b2lkIDAgPyB0cnVlIDogX20sIF9vID0gaGVhZGVyQ29uZmlnLnVwbG9hZEZpbGVzLCB1cGxvYWRGaWxlc0hlYWRlciA9IF9vID09PSB2b2lkIDAgPyB0cnVlIDogX28sIF9wID0gaGVhZGVyQ29uZmlnLnVwbG9hZGluZ0ljb24sIHVwbG9hZGluZ0ljb25IZWRhZXIgPSBfcCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9wLCBfcSA9IGhlYWRlckNvbmZpZy52YWxpZEZpbGVzQ291bnQsIHZhbGlkRmlsZXNDb3VudEhlYWRlciA9IF9xID09PSB2b2lkIDAgPyB0cnVlIDogX3EsIGN1c3RvbUhlYWRlciA9IGhlYWRlckNvbmZpZy5jdXN0b21IZWFkZXIsIGNsYXNzTmFtZUhlYWRlciA9IGhlYWRlckNvbmZpZy5jbGFzc05hbWUsIF9yID0gaGVhZGVyQ29uZmlnLnJlc2V0U3R5bGVzLCByZXNldFN0eWxlc0hlYWRlciA9IF9yID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yLCBzdHlsZUhlYWRlciA9IGhlYWRlckNvbmZpZy5zdHlsZTtcbiAgICB2YXIgY3VzdG9tRm9vdGVyID0gZm9vdGVyQ29uZmlnLmN1c3RvbUZvb3RlciwgX3MgPSBmb290ZXJDb25maWcubm9NaXNzaW5nRmlsZXNMYWJlbCwgbm9NaXNzaW5nRmlsZXNMYWJlbCA9IF9zID09PSB2b2lkIDAgPyB0cnVlIDogX3MsIF90ID0gZm9vdGVyQ29uZmlnLnVwbG9hZFByb2dyZXNzTWVzc2FnZSwgdXBsb2FkUHJvZ3Jlc3NNZXNzYWdlID0gX3QgPT09IHZvaWQgMCA/IHRydWUgOiBfdCwgX3UgPSBmb290ZXJDb25maWcudXBsb2FkUmVzdWx0TWVzc2FnZSwgdXBsb2FkUmVzdWx0TWVzc2FnZSA9IF91ID09PSB2b2lkIDAgPyB0cnVlIDogX3U7XG4gICAgLy9jb25zb2xlLmxvZyhcIkRyb3B6b25lIHByb3BzXCIsIGRyb3BPbkxheWVyKTtcbiAgICAvL2xvY2FsaXplcnNcbiAgICB2YXIgRHJvcHpvbmVMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgLy9yZWYgdG8gaGFuZGxlIHJpcHBsZVxuICAgIHZhciBmdWlSaXBwbGVSZWZBYnMgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGZ1aVJpcHBsZVJlZlJlbCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvL3JlZiB0byB0aGUgaGlkZGVuIGlucHV0IHRhZ1xuICAgIHZhciBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvL3N0YXRlIGZvciBkcmFnIG9wZXJhdGlvblxuICAgIHZhciBfdiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNEcmFnZ2luZyA9IF92WzBdLCBzZXRJc0RyYWdnaW5nID0gX3ZbMV07XG4gICAgLy9zdGF0ZSBmb3IgY2hlY2tpbmcgdXBsb2FkIHN0YXJ0XG4gICAgdmFyIF93ID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc1VwbG9hZGluZyA9IF93WzBdLCBzZXRJc1VwbG9hZGluZyA9IF93WzFdO1xuICAgIC8vc3RhdGUgZm9yIG1lc3NhZ2Ugb24gZm9vdGVyXG4gICAgdmFyIF94ID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIGxvY2FsTWVzc2FnZSA9IF94WzBdLCBzZXRMb2NhbE1lc3NhZ2UgPSBfeFsxXTtcbiAgICAvL0lkIGZvciB1cGxvZGluZyB0aHJvdWdoIEZ1aUZpbGVNYW5hZ2VyXG4gICAgLy9jb25zdCBkcm9wem9uZUlkOiBzdHJpbmcgfCBudW1iZXIgPSB1c2VEcm9wem9uZUZpbGVMaXN0SUQoKTtcbiAgICAvLyBjb25zdCBkcm9wem9uZUlkOiBzdHJpbmcgfCBudW1iZXIgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBkcm9wem9uZUlkID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCkgKyBcIlwiOyB9LCBbXSk7XG4gICAgLy9SZWFjdC51c2VJZCgpO1xuICAgIC8vRmxhZyB0aGF0IGRldGVybWluZXMgd2hldGhlciB0byB2YWxpZGF0ZSBvciBub3RcbiAgICB2YXIgdmFsaWRhdGVGaWxlc0ZsYWcgPSBpc1ZhbGlkYXRlQWN0aXZlKGFjY2VwdCwgbWF4RmlsZVNpemUsIG1heEZpbGVzLCB2YWxpZGF0b3IpO1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBudW1iZXIgb2YgdmFsaWQgZmlsZXNcbiAgICAvL3N0YXRlIGZvciBtYW5hZ2luZyB0aGUgZmlsZXMgbG9jYWxseVxuICAgIHZhciBfeSA9IHVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyKGRyb3B6b25lSWQsIHZhbHVlIHx8IFtdLCBpc1VwbG9hZGluZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIHZhbGlkYXRvciwgbG9jYWxpemF0aW9uLCB2YWxpZGF0ZUZpbGVzRmxhZyksIGxvY2FsRmlsZXMgPSBfeVswXSwgbnVtYmVyT2ZWYWxpZEZpbGVzID0gX3lbMV0sIHNldExvY2FsRmlsZXMgPSBfeVsyXTtcbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGVhY2ggZmlsZSBpbiB0aGUgYXJyYXkgb2YgRXh0RmlsZXNcbiAgICAgKiBGaXJzdCwgc2V0cyBhbGwgdGhlIGZpbGVzIGluIHByZXBhcmluZyBzdGF0dXMgYW5kIGF3YWl0cyBgcHJlcGFyaW5nVGltZWAgbWlsaXNlY29uZHMuXG4gICAgICogSWYgYHByZXBhcmluZ1RpbWVgIGlzIG5vdCBnaXZlbiBvciBpdHMgdmFsdWUgaXMgZmFsc2Ugb3IgMCwgdGhlcmUgd29uwrR0IGJlIGEgcHJlcGFyaW5nIHBoYXNlLlxuICAgICAqICAgICAgICBUaGlzIGlzIG9ubHkgZm9yIHRoZSBmaXJzdCBmaWxlLCB0aGUgcmVzdCBvZiBmaWxlcyB3aWxsIGhhdmUgcHJlcGFyaW5nIHRpbWUgdW50aWwgdGhlIGZpbGUgYmVmb3JlIHdhcyB1cGxvYWRlZFxuICAgICAqICAgICAgICBUaGUgZmlyc3QgZmlsZSB3aWxsIGp1bXAgZnJvbSB1bmRlZiB0byBcInVwbG9hZGluZ1wiXG4gICAgICogVGhlbiBvbkNoYW5nZSBldmVudCB3aWxsIGJlIGNhbGxlZCB0byB1cGRhdGUgdGhlIGZpbGVzIG91dHNpZGUuXG4gICAgICpcbiAgICAgKiBJZiBgb25DYW5jZWxgIGV2ZW50IG9jdXJycyBvdXRzaWRlIG9uIGFueSBvbiB0aGVcbiAgICAgKiBGaWxlSXRlbXMoZS5nLiBieSBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvbiBvbiBgRmlsZUl0ZW1gKSxcbiAgICAgKiB0aGUgZXh0RmlsZUluc3RhbmNlIHdpbGwgY2hhbmdlIGl0cyBzdGF0dXMgZnJvbSAncHJlcGFyaW5nJyB0byB1bmRlZmluZWQuIElmIHNvLFxuICAgICAqIGFmdGVyIHRoZSB3YWl0aW5nIHRpbWUgdGhlIHZhbHVlIG9mIHN0YXR1cyB3aWxsIGJlIGZvdW5kIGFzIHVuZGVmaW5lZCBhbmRcbiAgICAgKiB3b27CtHQgcGVyZm9tIHRoZSB1cGxvYWQgZm9yIHRoYXQgZmlsZSBvciBhbnkgb3RoZXIgdGhhdCBmaXRzIHRoYXQgY29uZGl0aW9uLlxuICAgICAqIFRoZW4sIGZvciBlYWNoIGZpbGUgc2V0cyB0aGUgZmlsZSBpbiAndXBsb2FkaW5nJyBzdGF0dXMuXG4gICAgICogVGhlbiBvbkNoYW5nZSBldmVudCB3aWxsIGJlIGNhbGxlZCB0byB1cGRhdGUgdGhlIGZpbGVzIG91dHNpZGUuXG4gICAgICogVGhlbiB1cGxvYWRzIHRoZSBmaWxlIHdpdGggdGhlIGB4aHJgIGluc3RhbmNlLlxuICAgICAqIEFmdGVyIHRoYXQsIHRoYXQgZmlsZSByZWNpZXZlcyB0aGUgbmV3IHVwbG9hZFN0YXR1cyB0aGF0IGNhbiBiZVxuICAgICAqICAnc3VjY2VzcycsICdlcnJvcicgb3IgJ2Fib3J0ZWQnXG4gICAgICogYW5kIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKiBAcGFyYW0gbG9jYWxGaWxlcyB0aGUgbGlzdCBvZiBleHRGaWxlcyB0byB1cGxvYWRcbiAgICAgKiBAcmV0dXJucyBub3RoaW5nXG4gICAgICovXG4gICAgdmFyIHVwbG9hZGZpbGVzID0gZnVuY3Rpb24gKGxvY2FsRmlsZXMpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMsIHRvdGFsTnVtYmVyLCBtaXNzaW5nVXBsb2FkLCB0b3RhbFJlamVjdGVkLCBjdXJyZW50Q291bnRVcGxvYWQsIHVwbG9hZGluZ01lc3NlbmdlciwgbmV3RXh0RmlsZUxvY2FsLCBzZXJ2ZXJSZXNwb25zZXMsIGksIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIHVwbG9hZFJlc3BvbnNlLCBmYWtlUHJvZ3Jlc3MsIHVwbG9hZGVkRmlsZSwgZmluaXNoVXBsb2FkTWVzc2VuZ2VyO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgdXBsb2FkaW5nIGZsYWcgdG8gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9hdm9pZCB0byBjYWxsIHVwbG9hZCBpZiBub3QgYWxsb3dlZFxuICAgICAgICAgICAgICAgICAgICAvLyBmbGFnIGlzIGFscmVhZHkgdHJ1ZSBvciB0aGVyZSBpc250IGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsIHdhcyBub3QgcHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nIHx8IGxvY2FsRmlsZXMubGVuZ3RoID09PSAwIHx8ICF1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsTWVzc2FnZShEcm9wem9uZUxvY2FsaXplci5ub0ZpbGVzTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsTnVtYmVyID0gbG9jYWxGaWxlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIG1pc3NpbmdVcGxvYWQgPSBsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVXBsb2FkQWJsZUV4dEZpbGUoZXh0RmlsZSwgdmFsaWRhdGVGaWxlc0ZsYWcpO1xuICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsUmVqZWN0ZWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q291bnRVcGxvYWQgPSAwO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRpbmdNZXNzZW5nZXIgPSBEcm9wem9uZUxvY2FsaXplci51cGxvYWRpbmdNZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICAvL25vIG1pc3NpbmcgdG8gdXBsb2FkXG4gICAgICAgICAgICAgICAgICAgIGlmICghKG1pc3NpbmdVcGxvYWQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vTWlzc2luZ0ZpbGVzTGFiZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsTWVzc2FnZShEcm9wem9uZUxvY2FsaXplci5ub0ZpbGVzTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwbG9hZFByb2dyZXNzTWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsTWVzc2FnZSh1cGxvYWRpbmdNZXNzZW5nZXIoXCJcIi5jb25jYXQobWlzc2luZ1VwbG9hZCwgXCIvXCIpLmNvbmNhdCh0b3RhbE51bWJlcikpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL1BSRVBBUklORyBzdGFnZVxuICAgICAgICAgICAgICAgICAgICBvblVwbG9hZFN0YXJ0ID09PSBudWxsIHx8IG9uVXBsb2FkU3RhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVXBsb2FkU3RhcnQobG9jYWxGaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcoZHJvcHpvbmVJZCwgbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlc0ZsYWcsIGNsZWFuT25VcGxvYWQpIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBuZXdFeHRGaWxlTG9jYWwgPSBfX3NwcmVhZEFycmF5JDEoW10sIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMsIHRydWUpLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgudG9FeHRGaWxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSAobyBhbGVqbyBlbCBpc1VwbG9hZGluZyBvIGxvIGFsZWpvIHBhcmEgcXVlIHRlbmdhIG0sYXMgdGllbXBvIGFudGVzIGRlIGxhIHJlc3B1eWVzdGEpXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShuZXdFeHRGaWxlTG9jYWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL0FXQUlUIHdoZW4gcHJlcGFyaW5nIHRpbWUgaXMgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmFsIHNsZWVwIGZvciBhbGwgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBQcmVwYXJpbmcocHJlcGFyaW5nVGltZSldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgLy9BV0FJVCB3aGVuIHByZXBhcmluZyB0aW1lIGlzIGdpdmVuXG4gICAgICAgICAgICAgICAgICAgIC8vZ2VuZXJhbCBzbGVlcCBmb3IgYWxsIGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpIDwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcy5sZW5ndGgpKSByZXR1cm4gWzMgLypicmVhayovLCAxNl07XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UgPSBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISgoX2EgPSBjdXJyZW50RXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlbGV0ZWQpKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTRdO1xuICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFnZSB0byBcInVwbG9hZGluZ1wiIGluIG9uZSBmaWxlIGFuZCBub3RpZnkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIC8vIFBSRVBBUklORyA9PiBVUExPQURJTkdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKCldO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhZ2UgdG8gXCJ1cGxvYWRpbmdcIiBpbiBvbmUgZmlsZSBhbmQgbm90aWZ5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAvLyBQUkVQQVJJTkcgPT4gVVBMT0FESU5HXG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFudFByZXBhcmluZ1RvVXBsb2FkT25lKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAvL21lc3NnZSBpbiBmb290ZXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwbG9hZFByb2dyZXNzTWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsTWVzc2FnZSh1cGxvYWRpbmdNZXNzZW5nZXIoXCJcIi5jb25jYXQoKytjdXJyZW50Q291bnRVcGxvYWQsIFwiL1wiKS5jb25jYXQobWlzc2luZ1VwbG9hZCkpKTtcbiAgICAgICAgICAgICAgICAgICAgLy9DSEFOR0UgRklMRVNcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmFrZVVwbG9hZCkgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGZha2VGdWlVcGxvYWQoY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgRHJvcHpvbmVMb2NhbGl6ZXIpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDU7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShmYWtlUHJvZ3Jlc3MgPCAxMDApKSByZXR1cm4gWzMgLypicmVhayovLCA3XTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzICs9IGdldFJhbmRvbUludCgyMSwgMzUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnByb2dyZXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyA+IDEwMCA/IDEwMCA6IGZha2VQcm9ncmVzcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKDEwMDApXTtcbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgY2FzZSA3OiByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzgsIDEwLCAsIDExXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHVwbG9hZEV4dEZpbGUoY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgdXJsLCBtZXRob2QsIGhlYWRlcnMsIHVwbG9hZExhYmVsKV07XG4gICAgICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSB1bmV4cGVjdGVkRXJyb3JVcGxvYWRSZXN1bHQoY3VycmVudEV4dEZpbGVJbnN0YW5jZS50b0V4dEZpbGUoKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZEZpbGUgPSB1cGxvYWRSZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgLy91cGRhdGUgaW5zdGFuY2VzXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gdXBsb2FkZWRGaWxlLnVwbG9hZFN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gdXBsb2FkZWRGaWxlLnVwbG9hZE1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICghIShjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpKSByZXR1cm4gWzMgLypicmVhayovLCAxM107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTM7XG4gICAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwbG9hZGVkRmlsZS51cGxvYWRTdGF0dXMgPT09IFwiZXJyb3JcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWplY3RlZCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlcy5wdXNoKHVwbG9hZFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTVdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTU7XG4gICAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAyXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbEZpbGVzKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHVwbG9hZCBncm91cCBmaW5pc2hlZCA6RFxuICAgICAgICAgICAgICAgICAgICBvblVwbG9hZEZpbmlzaCA9PT0gbnVsbCB8fCBvblVwbG9hZEZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25VcGxvYWRGaW5pc2goc2VydmVyUmVzcG9uc2VzKTtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoVXBsb2FkTWVzc2VuZ2VyID0gRHJvcHpvbmVMb2NhbGl6ZXIudXBsb2FkRmluaXNoZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cGxvYWRSZXN1bHRNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKGZpbmlzaFVwbG9hZE1lc3NlbmdlcihtaXNzaW5nVXBsb2FkIC0gdG90YWxSZWplY3RlZCwgdG90YWxSZWplY3RlZCkpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgdmFyIGhhbmRsZUFib3J0VXBsb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGlzdEV4dEZpbGVMb2NhbCA9IEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QoZHJvcHpvbmVJZCk7XG4gICAgICAgIGlmICghbGlzdEV4dEZpbGVMb2NhbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGlzdEV4dEZpbGVMb2NhbC5mb3JFYWNoKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInVwbG9hZGluZ1wiIHx8XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIikge1xuICAgICAgICAgICAgICAgIGlmIChleHRGaWxlSW5zdGFuY2UueGhyICE9PSBudWxsICYmIGV4dEZpbGVJbnN0YW5jZS54aHIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnhoci5hYm9ydCgpO1xuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcImFib3J0ZWRcIjtcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IFwiVXBsb2FkIHdhcyBhYm9ydGVkIGJ5IHVzZXJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvL3RoZSBmaW5hbCBjbGFzc05hbWVcbiAgICB2YXIgX3ogPSB1c2VEcm9wem9uZUNsYXNzTmFtZShkcm9wem9uZUlkLCBjbGFzc05hbWUsIFxuICAgIC8vaXNEcmFnZ2luZyAmJiBCb29sZWFuKGRyb3BPbkxheWVyKSxcbiAgICAvLyBoZWFkZXIsXG4gICAgLy8gZm9vdGVyLFxuICAgIGNvbG9yLCBcbiAgICAvL3N0eWxlPy5ib3JkZXJSYWRpdXMgfHwgYm9yZGVyUmFkaXVzLFxuICAgIGJhY2tncm91bmQsIG1pbkhlaWdodCksIGRyb3B6b25lQ2xhc3NOYW1lID0gX3pbMF0sIGhlYWRlckNsYXNzTmFtZSA9IF96WzFdLCBmb290ZXJDbGFzc05hbWUgPSBfelsyXSwgZGlzYWJsZWRMYXllckNsYXNzTmFtZSA9IF96WzNdO1xuICAgIHZhciBkcm9wTGF5ZXJDbGFzc05hbWUgPSB1c2VEcm9wTGF5ZXJDbGFzc05hbWUoZHJvcHpvbmVJZCwgY29sb3IsIFxuICAgIC8vIGlzRHJhZ2dpbmcsXG4gICAgIW9uRHJhZ0VudGVyICYmICFvbkRyYWdMZWF2ZSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxvY2FsVmFsaWRhdG9yID0geyBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsIGFjY2VwdDogYWNjZXB0IH07XG4gICAgICAgIHZhciB2YWxpZGF0ZWRGdWlGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QobG9jYWxGaWxlcywgbWF4RmlsZXMgPyBtYXhGaWxlcyAtIG51bWJlck9mVmFsaWRGaWxlcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgc2V0TG9jYWxGaWxlcyh2YWxpZGF0ZWRGdWlGaWxlTGlzdCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFttYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgbG9jYWxpemF0aW9uXSk7XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGNoYW5nZXMgaW4gdGhlIGV4dEZpbGUgbGlzdC5cbiAgICAgKiBNYWtlcyBhIG5ldyBhcnJheSBvZiBleHRGaWxlIGFjY29yZGluZyB0byB0aGUgXCJiZWhhdmlvdXJcIiBwcm9wLlxuICAgICAqIElmIGlzVXBsb2FkaW5nIHN0YXRlIGlzIG5vdCB0cnVlIGFuZCB0aGUgYmVoYXZpb3VyIHByb3BzIGlzIGVxdWFsIHRvIFwiYWRkXCIsXG4gICAgICogdGhlIGluY29taW5nIGV4dEZpbGVMaXN0IGlzIGFkZGVkIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGlzdCBvZiBleHRGaWxlLlxuICAgICAqIE90aGVyd2lzZSwgdGhlIGNvbXBsZXRlIGV4dEZpbGUgbGlzdCBpcyByZXBsYWNlZCBieSB0aGUgaW5jb21taW5nIGV4dEZpbGUgbGlzdFxuICAgICAqIEBwYXJhbSBleHRGaWxlTGlzdCB0aGUgbmV3IGZpbGVMaXN0XG4gICAgICogQHBhcmFtIGlzVXBsb2FkaW5nIGEgZmxhZyB0aGF0IGRzY3JpYmVzIHdodGhlciB0aGUgdXBsb2FkaW5nIHByb2Nlc3MgaXMgYWN0aXZlIG9yIG5vdFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVGaWxlc0NoYW5nZSA9IGZ1bmN0aW9uIChleHRGaWxlTGlzdCwgaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgdmFyIGZpbmFsRXh0RmlsZUxpc3QgPSBiZWhhdmlvdXIgPT09IFwiYWRkXCIgJiYgIWlzVXBsb2FkaW5nXG4gICAgICAgICAgICA/IF9fc3ByZWFkQXJyYXkkMShfX3NwcmVhZEFycmF5JDEoW10sIGxvY2FsRmlsZXMsIHRydWUpLCBleHRGaWxlTGlzdCwgdHJ1ZSkgOiBfX3NwcmVhZEFycmF5JDEoW10sIGV4dEZpbGVMaXN0LCB0cnVlKTtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF1dG9VcGxvYWQgJiYgIWlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICB1cGxvYWRmaWxlcyhmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGFjdGlvbiBvZiByZWNpZXZpbmcgdGhlIGZpbGVzIHdoZW4gdXNlciBzZWxlY3RzIHRoZSBmaWxlc1xuICAgICAqIGJ5IGNsaWNraW5nIHRoZSBJbnB1dEJ1dHRvblxuICAgICAqIEBwYXJhbSBldnQgZXZlbnQgaGFuZGxlciBmb3IgZ2V0dGluZyBmaWxlcyBmcm9tIGlucHV0IGVsZW1lbnQgdGFyZ2V0XG4gICAgICovXG4gICAgdmFyIGhhbmRsZUNoYW5nZUlucHV0ID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2lmIChpc1VwbG9hZGluZykgcmV0dXJuO1xuICAgICAgICB2YXIgZmlsZUxpc3QgPSBldnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICB2YXIgZXh0RmlsZUxpc3RPdXRwdXQgPSBmaWxlTGlzdFRvRXh0RmlsZUFycmF5KGZpbGVMaXN0KTtcbiAgICAgICAgLy92YWxpZGF0ZSBleHQgZmlsZXNcbiAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IG91dGVyRnVpVmFsaWRhdGlvbihleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgICAgICBpZiAoYXV0b0NsZWFuKSB7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBleHRGaWxlTGlzdE91dHB1dC5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaW5pdCB4aHIgb24gZWFjaCBleHQgZmlsZVxuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSB0b1VwbG9hZGFibGVFeHRGaWxlTGlzdChleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgIC8vIENsZWFuIGlucHV0IGVsZW1lbnQgdG8gdHJpZ2dlciBvbkNoYW5nZSBldmVudCBvbiBpbnB1dFxuICAgICAgICBjbGVhbklucHV0KGlucHV0UmVmLmN1cnJlbnQpO1xuICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgdmFsaWRhdGlvbiBwcm9jZXNzIGZvciBlYWNoIEZ1aUZpbGVcbiAgICAgKiBvdXRzaWRlIHRoZSBEcm9wem9uZU5lbyBjb21wb25lbnQgZmlsZSBkZWNsYXJhdGlvblxuICAgICAqIGFjY29yZGluZyB0byB0aGUgY3JpdGVyaWEgZ2l2ZW4gYnkgbWF4RmlsZXMgYW5kIG1heEZpbGVTaXplIGFuZCBhY2NlcHQgcHJvcHNcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbGxzIHZhbGlkYXRlRnVpRmlsZUxpc3QgYW5kIHNldHMgdGhlIHZhbGlkIHByb3Agb2YgRnVpRmlsZSB0byBcInRydWVcIiBvciBcImZhbHNlXCJcbiAgICAgKiBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXZpZHVhbCB2YWxpZGF0aW9uLlxuICAgICAqIEl0IGFsc28gYWRkIHRoZSBsaXN0IG9mIGVycm9ycy5cbiAgICAgKiBAcGFyYW0gZnVpRmlsZUxpc3RUb1ZhbGlkYXRlIHRoZSBmdWlGaWxlTGlzdCB0byB2YWxpZGF0ZVxuICAgICAqIEByZXR1cm5zIGEgbGlzdCBvZiB2YWxpZGF0ZWQgRnVpRmlsZSBsaXN0XG4gICAgICovXG4gICAgdmFyIG91dGVyRnVpVmFsaWRhdGlvbiA9IGZ1bmN0aW9uIChmdWlGaWxlTGlzdFRvVmFsaWRhdGUpIHtcbiAgICAgICAgdmFyIGxvY2FsVmFsaWRhdG9yID0geyBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsIGFjY2VwdDogYWNjZXB0IH07XG4gICAgICAgIHZhciBmaW5hbE51bWJlck9mVmFsaWRzID0gbnVtYmVyT2ZWYWxpZEZpbGVzO1xuICAgICAgICBpZiAoYmVoYXZpb3VyID09PSBcInJlcGxhY2VcIikge1xuICAgICAgICAgICAgLy9yZS1zdGFydCBudW1iZXIgb2YgdmFsaWRzXG4gICAgICAgICAgICBmaW5hbE51bWJlck9mVmFsaWRzID0gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsaWRhdGVkRnVpRmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSwgbWF4RmlsZXMgPyBtYXhGaWxlcyAtIGZpbmFsTnVtYmVyT2ZWYWxpZHMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRGdWlGaWxlTGlzdDtcbiAgICB9O1xuICAgIC8vIEhBTkRMRVJTIGZvciBDTElDSywgRFJBRyBOQUQgRFJPUFxuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgICAvL2hhbmRsZUNsaWNrVXRpbChldnQpO1xuICAgICAgICBpZiAoIWNsaWNrYWJsZSB8fCBkaXNhYmxlZCB8fCBpc1VwbG9hZGluZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbWFrZVJpcHBsZSgpO1xuICAgICAgICBoYW5kbGVDbGlja0lucHV0KGlucHV0UmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgICB2YXIgaGFuZGxlRHJhZ0VudGVyID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBoYW5kbGVEcmFnVXRpbChldnQpO1xuICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldElzRHJhZ2dpbmcodHJ1ZSk7XG4gICAgICAgIC8qIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldElzRHJhZ2dpbmcoKF9pc0RyYWdnaW5nKSA9PiB7XG4gICAgICAgICAgICAvL2lmIChfaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAvL31cbiAgICAgICAgICAgIC8vcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIDIwMDApOyAqL1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlRHJhZ0VudGVyXCIpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZURyYWdMZWF2ZSA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBoYW5kbGVEcmFnVXRpbChldnQpO1xuICAgICAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKTtcbiAgICB9O1xuICAgIC8vIFJJUFBMRVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSByaXBwbGUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbWFpbiBjb250YWluZXJcbiAgICAgKi9cbiAgICB2YXIgbWFrZVJpcHBsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY3JlYXRlRnVpUmlwcGxlRnJvbURpdihmdWlSaXBwbGVSZWZBYnMuY3VycmVudCwgZnVpUmlwcGxlUmVmUmVsLmN1cnJlbnQsIGNvbG9yKTtcbiAgICB9O1xuICAgIC8vIEtBTVVJID0+IFJFQ0lFVkUgRklMRVMgRlJPTSBEUk9QIE9SIElOUFVUKCBDTElDSyApLCBWQUxJREFURSBBTkQgQ0hBTkdFXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGFjdGlvbiBvZiByZWNpZXZpbmcgdGhlIGZpbGVzIHdoZW4gdXNlciBkcm9wcyB0aGUgZmlsZXNcbiAgICAgKiBpbiB0aGUgRHJvcHpvbmUgY29udGFpbmVyLlxuICAgICAqIEFjY29yZGluZyB0byB0aGUgZ2l2ZW4gY29uZmlnIGZyb20gcHJvcHMsIHRoaXMgZnVuY3Rpb24gY291bGRcbiAgICAgKiB2YWxpZGF0ZSBmaWxlcyBhbmQgYWxzbyBzdGFydCB0aGUgdXBsb2FkaW5nIHBoYXNlXG4gICAgICogQHBhcmFtIGV2dCBldmVuIGhhbmRsZXIgZm9yIGdldHRpbmcgZmlsZXMgZnJvbSBkYXRhVHJhbnNmZXJcbiAgICAgKi9cbiAgICB2YXIga2FtdWkgPSBmdW5jdGlvbiAoZXZ0KSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBmaWxlTGlzdCwgZXh0RmlsZUxpc3RPdXRwdXQ7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgaGFuZGxlRHJvcFV0aWwoZXZ0KTtcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgaWYgKCFkaXNhYmxlUmlwcGxlKVxuICAgICAgICAgICAgICAgIG1ha2VSaXBwbGUoKTtcbiAgICAgICAgICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpO1xuICAgICAgICAgICAgZmlsZUxpc3QgPSBldnQuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBmaWxlTGlzdFRvRXh0RmlsZUFycmF5KGZpbGVMaXN0KTtcbiAgICAgICAgICAgIC8vdmFsaWRhdGUgZXh0ZW5kZWQgZmlsZXNcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgICAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gb3V0ZXJGdWlWYWxpZGF0aW9uKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoYXV0b0NsZWFuKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gZXh0RmlsZUxpc3RPdXRwdXQuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2luaXQgeGhyIG9uIGVhY2ggZXh0IGZpbGVcbiAgICAgICAgICAgIGlmICh1cmwpXG4gICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSB0b1VwbG9hZGFibGVFeHRGaWxlTGlzdChleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIC8qKioqKioqKioqKioqIEhFQURFUiAmIEZPT1RFUiAqKioqKioqKiAqL1xuICAgIC8qKlxuICAgICAqIHJlc2V0IHRoZSBjb21wbGV0ZSBmaWxlIGxpc3RcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoW10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhbXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBoYW5kbGVDbGVhbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2xlYW4pIHtcbiAgICAgICAgICAgIG9uQ2xlYW4oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UobG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMobG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXIgPSAhZHJvcHpvbmVDbGFzc05hbWVcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiAoaXNEcmFnZ2luZyAmJiBkcm9wT25MYXllcikgfHwgZGlzYWJsZWRcbiAgICAgICAgICAgID8gYWRkQ2xhc3NOYW1lKGRyb3B6b25lQ2xhc3NOYW1lLCBcImZpbGVzLXVpLXJvb3QtYm9yZGVyLWhpZGVcIilcbiAgICAgICAgICAgIDogZHJvcHpvbmVDbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJDbGlja2FibGUgPSAhZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlclxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IGNsaWNrYWJsZSAmJiAhZGlzYWJsZWRcbiAgICAgICAgICAgID8gYWRkQ2xhc3NOYW1lKGZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXIsIFwiY2xpY2thYmxlXCIpXG4gICAgICAgICAgICA6IGZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXI7XG4gICAgaWYgKCFmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyQ2xpY2thYmxlKVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBhY3Rpb25CdXR0b25zUG9zaXRpb24gPT09IFwiYmVmb3JlXCIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVCdXR0b25zLCB7IGRpc2FibGVkOiBkaXNhYmxlZCwgYWJvcnRCdXR0b246IGlzVXBsb2FkaW5nID8gYWJvcnRCdXR0b24gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IGhhbmRsZUFib3J0VXBsb2FkLCBkZWxldGVCdXR0b246IGRlbGV0ZUJ1dHRvbiwgb25EZWxldGU6ICFpc1VwbG9hZGluZyA/IGhhbmRsZVJlc2V0IDogdW5kZWZpbmVkLCB1cGxvYWRCdXR0b246ICFpc1VwbG9hZGluZyAmJiAhYXV0b1VwbG9hZCA/IHVwbG9hZEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25VcGxvYWQ6ICFhdXRvVXBsb2FkID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gdXBsb2FkZmlsZXMobG9jYWxGaWxlcyk7IH0gOiB1bmRlZmluZWQsIGNsZWFuQnV0dG9uOiB2YWxpZGF0ZUZpbGVzRmxhZyAmJiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9DbGVhblxuICAgICAgICAgICAgICAgID8gY2xlYW5CdXR0b25cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgb25DbGVhbjogaGFuZGxlQ2xlYW4sIHN0eWxlOiBjb250YWluZXJTdHlsZSwgY2xhc3NOYW1lOiBjb250YWluZXJDbGFzc05hbWUsIHRvcDogdHJ1ZSB9KSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24kMSh7IHN0eWxlOiBzdHlsZSwgY2xhc3NOYW1lOiBmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyQ2xpY2thYmxlIH0sIHJlc3QsIHsgb25DbGljazogaGFuZGxlQ2xpY2ssIG9uRHJhZ092ZXI6IGhhbmRsZURyYWdFbnRlciwgb25EcmFnTGVhdmU6ICFkcm9wT25MYXllciA/IGhhbmRsZURyYWdMZWF2ZSA6IHVuZGVmaW5lZCwgb25Ecm9wOiAhZHJvcE9uTGF5ZXIgPyBrYW11aSA6IHVuZGVmaW5lZCB9KSxcbiAgICAgICAgICAgICFkaXNhYmxlUmlwcGxlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiBmdWlSaXBwbGVSZWZBYnMsIGNsYXNzTmFtZTogXCJmaWxlc3VpLWJhc2UtcmlwcGxlLWFic29sdXRlXCIsIHN0eWxlOiB7IGJvcmRlclJhZGl1czogc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlLmJvcmRlclJhZGl1cyB9IH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHJlZjogZnVpUmlwcGxlUmVmUmVsLCBjbGFzc05hbWU6IFwiZmlsZXN1aS1iYXNlLXJpcHBsZS1yZWxhdGl2ZVwiIH0pKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBoZWFkZXIgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tSGVhZGVyID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1c3RvbUhlYWRlcikpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVIZWFkZXIsIHsgZmlyc3RDbGFzc05hbWU6IGhlYWRlckNsYXNzTmFtZSwgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksIHN0eWxlOiBzdHlsZUhlYWRlciwgY2xhc3NOYW1lOiBjbGFzc05hbWVIZWFkZXIsIHJlc2V0U3R5bGVzOiByZXNldFN0eWxlc0hlYWRlciwgYm9yZGVyUmFkaXVzOiBzdHlsZUJvcmRlclJhZGl1cywgaXNVcGxvYWRpbmc6IGlzVXBsb2FkaW5nICYmIHVwbG9hZGluZ0ljb25IZWRhZXIsIG9uUmVzZXQ6ICFpc1VwbG9hZGluZyAmJiBkZWxldGVGaWxlc0hlYWRlciA/IGhhbmRsZVJlc2V0IDogdW5kZWZpbmVkLCBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUgJiYgbWF4RmlsZVNpemVIZWFkZXIgPyBtYXhGaWxlU2l6ZSA6IHVuZGVmaW5lZCwgbWF4RmlsZXM6IG1heEZpbGVzICYmIHZhbGlkRmlsZXNDb3VudEhlYWRlciA/IG1heEZpbGVzIDogdW5kZWZpbmVkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiwgdXJsUHJlc2VudDogdXJsICE9PSB1bmRlZmluZWQgJiYgdXBsb2FkRmlsZXNIZWFkZXIsIG9uVXBsb2FkU3RhcnQ6ICFhdXRvVXBsb2FkICYmICF1cGxvYWRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgbnVtYmVyT2ZWYWxpZEZpbGVzOiBudW1iZXJPZlZhbGlkRmlsZXMsIFxuICAgICAgICAgICAgICAgIC8vb25DbGVhbj17YXV0b0NsZWFuID8gdW5kZWZpbmVkIDogY2xlYW5CdXR0b24gPyB1bmRlZmluZWQgOiBvbkNsZWFufVxuICAgICAgICAgICAgICAgIG9uQ2xlYW46ICFjbGVhbkZpbGVzSGVhZGVyIHx8IGlzVXBsb2FkaW5nIHx8IGNsZWFuQnV0dG9uIHx8IGF1dG9DbGVhblxuICAgICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICA6IChjbGVhbkZpbGVzIHx8IG9uQ2xlYW4pICYmIHZhbGlkYXRlRmlsZXNGbGFnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsZWFuXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCB9KSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUNoaWxkcmVuLCB7IGxhYmVsOiBsYWJlbCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSwgY2hpbGRyZW4pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tRm9vdGVyID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1c3RvbUZvb3RlcikpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGZvb3RlciAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUZvb3RlciwgX19hc3NpZ24kMSh7IGZpcnN0Q2xhc3NOYW1lOiBmb290ZXJDbGFzc05hbWUsIGJvcmRlclJhZGl1czogc3R5bGVCb3JkZXJSYWRpdXMsIGFjY2VwdDogYWNjZXB0LCBtZXNzYWdlOiBpc1VwbG9hZGluZyA/IGxvY2FsTWVzc2FnZSA6IHVuZGVmaW5lZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSwgZm9vdGVyQ29uZmlnKSkpKSkpLFxuICAgICAgICAgICAgZHJvcE9uTGF5ZXIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcExheWVyLCB7IG9wZW46IGlzRHJhZ2dpbmcsIGNsYXNzTmFtZTogIWlzRHJhZ2dpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBkcm9wTGF5ZXJDbGFzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiLmNvbmNhdChkcm9wTGF5ZXJDbGFzc05hbWUsIFwiIGRyb3B6b25lLWxheWVyLWRyYWdcIiksIG9uRHJhZ0xlYXZlOiBoYW5kbGVEcmFnTGVhdmUsIG9uRHJvcDoga2FtdWksIHN0eWxlOiB7IGJvcmRlclJhZGl1czogc3R5bGUgPT09IG51bGwgfHwgc3R5bGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlLmJvcmRlclJhZGl1cyB9IH0pKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXRIaWRkZW4sIHsgbXVsdGlwbGU6IG1heEZpbGVzID8gbWF4RmlsZXMgPiAxIDogdHJ1ZSwgYWNjZXB0OiBhY2NlcHQgfHwgXCJcIiwgaW5wdXRSZWY6IGlucHV0UmVmLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlSW5wdXQgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lRGlzYWJsZWRMYXllciwgeyBvcGVuOiBkaXNhYmxlZCwgY2xhc3NOYW1lOiBkaXNhYmxlZExheWVyQ2xhc3NOYW1lIH0pKSxcbiAgICAgICAgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID09PSBcImFmdGVyXCIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVCdXR0b25zLCB7IGRpc2FibGVkOiBkaXNhYmxlZCwgYWJvcnRCdXR0b246IGlzVXBsb2FkaW5nID8gYWJvcnRCdXR0b24gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IGhhbmRsZUFib3J0VXBsb2FkLCBkZWxldGVCdXR0b246IGRlbGV0ZUJ1dHRvbiwgb25EZWxldGU6ICFpc1VwbG9hZGluZyA/IGhhbmRsZVJlc2V0IDogdW5kZWZpbmVkLCB1cGxvYWRCdXR0b246ICFpc1VwbG9hZGluZyAmJiAhYXV0b1VwbG9hZCA/IHVwbG9hZEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25VcGxvYWQ6ICFhdXRvVXBsb2FkID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gdXBsb2FkZmlsZXMobG9jYWxGaWxlcyk7IH0gOiB1bmRlZmluZWQsIGNsZWFuQnV0dG9uOiB2YWxpZGF0ZUZpbGVzRmxhZyAmJiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9DbGVhblxuICAgICAgICAgICAgICAgID8gY2xlYW5CdXR0b25cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgb25DbGVhbjogaGFuZGxlQ2xlYW4sIHN0eWxlOiBjb250YWluZXJTdHlsZSwgY2xhc3NOYW1lOiBjb250YWluZXJDbGFzc05hbWUsIHRvcDogZmFsc2UgfSkpKSk7XG59O1xuXG52YXIgZGVmYXVsdEZpbGVJbnB1dEJ1dHRvblByb3BzID0ge1xuICAgIHRleHRUcmFuc2Zvcm06IFwidXBwZXJjYXNlXCIsXG4gICAgbGFiZWw6IFwiYnJvd3NlLi4uXCIsXG4gICAgYmVoYXZpb3VyOiBcImFkZFwiLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB1cGxvYWRDb25maWc6IHt9LFxuICAgIGFjdGlvbkJ1dHRvbnM6IHt9LFxuICAgIHZhbHVlOiBbXSxcbn07XG5cbnZhciBGaWxlSW5wdXRCdXR0b24gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2EgPSBtZXJnZVByb3BzKHByb3BzLCBkZWZhdWx0RmlsZUlucHV0QnV0dG9uUHJvcHMpLCBcbiAgICAvL2Jhc2ljXG4gICAgX2IgPSBfYS52YWx1ZSwgXG4gICAgLy9iYXNpY1xuICAgIHZhbHVlID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2IsIG9uQ2hhbmdlID0gX2Eub25DaGFuZ2UsIFxuICAgIC8vdmFsaWRhdGlvblxuICAgIGFjY2VwdCA9IF9hLmFjY2VwdCwgbWF4RmlsZVNpemUgPSBfYS5tYXhGaWxlU2l6ZSwgbWF4RmlsZXMgPSBfYS5tYXhGaWxlcywgdmFsaWRhdG9yID0gX2EudmFsaWRhdG9yLCBcbiAgICAvL2NsZWFuRmlsZXMsXG4gICAgLy9vbkNsZWFuLFxuICAgIGF1dG9DbGVhbiA9IF9hLmF1dG9DbGVhbiwgXG4gICAgLy91cGxvYWRpbmdcbiAgICB1cGxvYWRDb25maWcgPSBfYS51cGxvYWRDb25maWcsIGZha2VVcGxvYWQgPSBfYS5mYWtlVXBsb2FkLCBvblVwbG9hZFN0YXJ0ID0gX2Eub25VcGxvYWRTdGFydCwgb25VcGxvYWRGaW5pc2ggPSBfYS5vblVwbG9hZEZpbmlzaCwgXG4gICAgLy9zdHlsaW5nXG4gICAgLy9iYWNrZ3JvdW5kLFxuICAgIC8vbWluSGVpZ2h0LFxuICAgIGNvbG9yID0gX2EuY29sb3IsIHN0eWxlID0gX2Euc3R5bGUsIHRleHRDb2xvciA9IF9hLnRleHRDb2xvciwgdGV4dFRyYW5zZm9ybSA9IF9hLnRleHRUcmFuc2Zvcm0sIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSwgXG4gICAgLy9sYWJlbFxuICAgIGxhYmVsID0gX2EubGFiZWwsIFxuICAgIC8vbG9jYWxpemF0aW9uXG4gICAgbG9jUHJvcHMgPSBfYS5sb2NhbGl6YXRpb24sIFxuICAgIC8vcmlwcGxlXG4gICAgZGlzYWJsZVJpcHBsZSA9IF9hLmRpc2FibGVSaXBwbGUsIFxuICAgIC8vYWN0aW9uIGJ1dG90bnNcbiAgICBhY3Rpb25CdXR0b25zID0gX2EuYWN0aW9uQnV0dG9ucywgXG4gICAgLy9kcm9wIGxheWVyXG4gICAgLy8gZHJvcE9uTGF5ZXIsXG4gICAgLy9oZWFkZXIgYW5kIGZvb3RlclxuICAgIC8vaGVhZGVyLFxuICAgIC8vZm9vdGVyLFxuICAgIC8vaGVhZGVyQ29uZmlnID0ge30sXG4gICAgLy9mb290ZXJDb25maWcgPSB7fSxcbiAgICAvL2Rpc2FibGVkXG4gICAgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZCwgXG4gICAgLy9jbGlja2FibGUsXG4gICAgLy9hZGQgb3IgcmVwbGFjZVxuICAgIGJlaGF2aW91ciA9IF9hLmJlaGF2aW91ciwgXG4gICAgLy9jb250ZW50XG4gICAgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbiwgXG4gICAgLy9hZHZhbmNlZENvbmZpZyxcbiAgICB2YXJpYW50ID0gX2EudmFyaWFudCwgcmVzZXRTdHlsZXMgPSBfYS5yZXNldFN0eWxlcywgZGFya01vZGVQcm9wID0gX2EuZGFya01vZGUsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInZhbHVlXCIsIFwib25DaGFuZ2VcIiwgXCJhY2NlcHRcIiwgXCJtYXhGaWxlU2l6ZVwiLCBcIm1heEZpbGVzXCIsIFwidmFsaWRhdG9yXCIsIFwiYXV0b0NsZWFuXCIsIFwidXBsb2FkQ29uZmlnXCIsIFwiZmFrZVVwbG9hZFwiLCBcIm9uVXBsb2FkU3RhcnRcIiwgXCJvblVwbG9hZEZpbmlzaFwiLCBcImNvbG9yXCIsIFwic3R5bGVcIiwgXCJ0ZXh0Q29sb3JcIiwgXCJ0ZXh0VHJhbnNmb3JtXCIsIFwiY2xhc3NOYW1lXCIsIFwibGFiZWxcIiwgXCJsb2NhbGl6YXRpb25cIiwgXCJkaXNhYmxlUmlwcGxlXCIsIFwiYWN0aW9uQnV0dG9uc1wiLCBcImRpc2FibGVkXCIsIFwiYmVoYXZpb3VyXCIsIFwiY2hpbGRyZW5cIiwgXCJ2YXJpYW50XCIsIFwicmVzZXRTdHlsZXNcIiwgXCJkYXJrTW9kZVwiXSk7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIF9jID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCksIGRhcmtNb2RlQ29udGV4dCA9IF9jLmRhcmtNb2RlLCBcbiAgICAvL2ljb25zLFxuICAgIGxvY0NvbnRleHQgPSBfYy5sb2NhbGl6YXRpb247XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IGxvY1Byb3BzICE9PSB1bmRlZmluZWQgPyBsb2NQcm9wcyA6IGxvY0NvbnRleHQ7XG4gICAgdmFyIGRhcmtNb2RlID0gZGFya01vZGVQcm9wICE9PSB1bmRlZmluZWQgPyBkYXJrTW9kZVByb3AgOiBkYXJrTW9kZUNvbnRleHQ7XG4gICAgdmFyIF9kID0gdXBsb2FkQ29uZmlnLCB1cmwgPSBfZC51cmwsIG1ldGhvZCA9IF9kLm1ldGhvZCwgaGVhZGVycyA9IF9kLmhlYWRlcnMsIHVwbG9hZExhYmVsID0gX2QudXBsb2FkTGFiZWwsIF9lID0gX2QuY2xlYW5PblVwbG9hZCwgY2xlYW5PblVwbG9hZCA9IF9lID09PSB2b2lkIDAgPyB0cnVlIDogX2UsIF9mID0gX2QucHJlcGFyaW5nVGltZSwgcHJlcGFyaW5nVGltZSA9IF9mID09PSB2b2lkIDAgPyAxNTAwIDogX2YsIF9nID0gX2QuYXV0b1VwbG9hZCwgYXV0b1VwbG9hZCA9IF9nID09PSB2b2lkIDAgPyBmYWxzZSA6IF9nO1xuICAgIHZhciBfaCA9IGFjdGlvbkJ1dHRvbnMsIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9IF9oLnBvc2l0aW9uLCBhYm9ydEJ1dHRvbiA9IF9oLmFib3J0QnV0dG9uLCBkZWxldGVCdXR0b24gPSBfaC5kZWxldGVCdXR0b24sIHVwbG9hZEJ1dHRvbiA9IF9oLnVwbG9hZEJ1dHRvbiwgY2xlYW5CdXR0b24gPSBfaC5jbGVhbkJ1dHRvbiwgY29udGFpbmVyU3R5bGUgPSBfaC5zdHlsZSwgY29udGFpbmVyQ2xhc3NOYW1lID0gX2guY2xhc3NOYW1lO1xuICAgIC8vbG9jYWxpemVyc1xuICAgIHZhciBEcm9wem9uZUxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICAvL3JlZiB0byB0aGUgaGlkZGVuIGlucHV0IHRhZ1xuICAgIHZhciBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvL3N0YXRlIGZvciBjaGVja2luZyB1cGxvYWQgc3RhcnRcbiAgICB2YXIgX2ogPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzVXBsb2FkaW5nID0gX2pbMF0sIHNldElzVXBsb2FkaW5nID0gX2pbMV07XG4gICAgLy9JZCBmb3IgdXBsb2RpbmcgdGhyb3VnaCBGdWlGaWxlTWFuYWdlclxuICAgIC8vY29uc3QgaW5wdXRCdXR0b25JZDogc3RyaW5nIHwgbnVtYmVyID0gUmVhY3QudXNlSWQoKTtcbiAgICB2YXIgaW5wdXRCdXR0b25JZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpICsgXCJcIjsgfSwgW10pO1xuICAgIC8vRmxhZyB0aGF0IGRldGVybWluZXMgd2hldGhlciB0byB2YWxpZGF0ZSBvciBub3RcbiAgICB2YXIgdmFsaWRhdGVGaWxlc0ZsYWcgPSBpc1ZhbGlkYXRlQWN0aXZlKGFjY2VwdCwgbWF4RmlsZVNpemUsIG1heEZpbGVzLCB2YWxpZGF0b3IpO1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBudW1iZXIgb2YgdmFsaWQgZmlsZXNcbiAgICAvL3N0YXRlIGZvciBtYW5hZ2luZyB0aGUgZmlsZXMgbG9jYWxseVxuICAgIHZhciBfayA9IHVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyKGlucHV0QnV0dG9uSWQsIHZhbHVlIHx8IFtdLCBpc1VwbG9hZGluZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIHZhbGlkYXRvciwgbG9jYWxpemF0aW9uLCB2YWxpZGF0ZUZpbGVzRmxhZyksIGxvY2FsRmlsZXMgPSBfa1swXSwgbnVtYmVyT2ZWYWxpZEZpbGVzID0gX2tbMV0sIHNldExvY2FsRmlsZXMgPSBfa1syXTtcbiAgICAvKipcbiAgICAgKiBVcGxvYWRzIGVhY2ggZmlsZSBpbiB0aGUgYXJyYXkgb2YgRXh0RmlsZXNcbiAgICAgKiBGaXJzdCwgc2V0cyBhbGwgdGhlIGZpbGVzIGluIHByZXBhcmluZyBzdGF0dXMgYW5kIGF3YWl0cyBgcHJlcGFyaW5nVGltZWAgbWlsaXNlY29uZHMuXG4gICAgICogSWYgYHByZXBhcmluZ1RpbWVgIGlzIG5vdCBnaXZlbiBvciBpdHMgdmFsdWUgaXMgZmFsc2Ugb3IgMCwgdGhlcmUgd29uwrR0IGJlIGEgcHJlcGFyaW5nIHBoYXNlLlxuICAgICAqICAgICAgICBUaGlzIGlzIG9ubHkgZm9yIHRoZSBmaXJzdCBmaWxlLCB0aGUgcmVzdCBvZiBmaWxlcyB3aWxsIGhhdmUgcHJlcGFyaW5nIHRpbWUgdW50aWwgdGhlIGZpbGUgYmVmb3JlIHdhcyB1cGxvYWRlZFxuICAgICAqICAgICAgICBUaGUgZmlyc3QgZmlsZSB3aWxsIGp1bXAgZnJvbSB1bmRlZiB0byBcInVwbG9hZGluZ1wiXG4gICAgICogVGhlbiBvbkNoYW5nZSBldmVudCB3aWxsIGJlIGNhbGxlZCB0byB1cGRhdGUgdGhlIGZpbGVzIG91dHNpZGUuXG4gICAgICpcbiAgICAgKiBJZiBgb25DYW5jZWxgIGV2ZW50IG9jdXJycyBvdXRzaWRlIG9uIGFueSBvbiB0aGVcbiAgICAgKiBGaWxlSXRlbXMoZS5nLiBieSBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvbiBvbiBgRmlsZUl0ZW1gKSxcbiAgICAgKiB0aGUgZXh0RmlsZUluc3RhbmNlIHdpbGwgY2hhbmdlIGl0cyBzdGF0dXMgZnJvbSAncHJlcGFyaW5nJyB0byB1bmRlZmluZWQuIElmIHNvLFxuICAgICAqIGFmdGVyIHRoZSB3YWl0aW5nIHRpbWUgdGhlIHZhbHVlIG9mIHN0YXR1cyB3aWxsIGJlIGZvdW5kIGFzIHVuZGVmaW5lZCBhbmRcbiAgICAgKiB3b27CtHQgcGVyZm9tIHRoZSB1cGxvYWQgZm9yIHRoYXQgZmlsZSBvciBhbnkgb3RoZXIgdGhhdCBmaXRzIHRoYXQgY29uZGl0aW9uLlxuICAgICAqIFRoZW4sIGZvciBlYWNoIGZpbGUgc2V0cyB0aGUgZmlsZSBpbiAndXBsb2FkaW5nJyBzdGF0dXMuXG4gICAgICogVGhlbiBvbkNoYW5nZSBldmVudCB3aWxsIGJlIGNhbGxlZCB0byB1cGRhdGUgdGhlIGZpbGVzIG91dHNpZGUuXG4gICAgICogVGhlbiB1cGxvYWRzIHRoZSBmaWxlIHdpdGggdGhlIGB4aHJgIGluc3RhbmNlLlxuICAgICAqIEFmdGVyIHRoYXQsIHRoYXQgZmlsZSByZWNpZXZlcyB0aGUgbmV3IHVwbG9hZFN0YXR1cyB0aGF0IGNhbiBiZVxuICAgICAqICAnc3VjY2VzcycsICdlcnJvcicgb3IgJ2Fib3J0ZWQnXG4gICAgICogYW5kIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKiBAcGFyYW0gbG9jYWxGaWxlcyB0aGUgbGlzdCBvZiBleHRGaWxlcyB0byB1cGxvYWRcbiAgICAgKiBAcmV0dXJucyBub3RoaW5nXG4gICAgICovXG4gICAgdmFyIHVwbG9hZGZpbGVzID0gZnVuY3Rpb24gKGxvY2FsRmlsZXMpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMsIG1pc3NpbmdVcGxvYWQsIG5ld0V4dEZpbGVMb2NhbCwgc2VydmVyUmVzcG9uc2VzLCBpLCBjdXJyZW50RXh0RmlsZUluc3RhbmNlLCB1cGxvYWRSZXNwb25zZSwgZmFrZVByb2dyZXNzLCB1cGxvYWRlZEZpbGU7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAvL3NldCB1cGxvYWRpbmcgZmxhZyB0byB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL2F2b2lkIHRvIGNhbGwgdXBsb2FkIGlmIG5vdCBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIC8vIGZsYWcgaXMgYWxyZWFkeSB0cnVlIG9yIHRoZXJlIGlzbnQgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgLy91cmwgd2FzIG5vdCBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcgfHwgbG9jYWxGaWxlcy5sZW5ndGggPT09IDAgfHwgIXVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ1VwbG9hZCA9IGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNVcGxvYWRBYmxlRXh0RmlsZShleHRGaWxlLCB2YWxpZGF0ZUZpbGVzRmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBzdGFydDogbWlzc2luZ1VwbG9hZFwiLCBtaXNzaW5nVXBsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgLy9ubyBtaXNzaW5nIHRvIHVwbG9hZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIShtaXNzaW5nVXBsb2FkID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWQgc3RhcnQ6IG5vRmlsZXNNZXNzYWdlXCIsIG1pc3NpbmdVcGxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICBzZXRJc1VwbG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9QUkVQQVJJTkcgc3RhZ2VcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInZhbGlkYXRlRmlsZXNGbGFnXCIsIHZhbGlkYXRlRmlsZXNGbGFnKTtcbiAgICAgICAgICAgICAgICAgICAgb25VcGxvYWRTdGFydCA9PT0gbnVsbCB8fCBvblVwbG9hZFN0YXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZFN0YXJ0KGxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0TWFwUHJlcGFyaW5nKGlucHV0QnV0dG9uSWQsIGxvY2FsRmlsZXMsIHZhbGlkYXRlRmlsZXNGbGFnLCBjbGVhbk9uVXBsb2FkKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXh0RmlsZUxvY2FsID0gX19zcHJlYWRBcnJheSQxKFtdLCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLCB0cnVlKS5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LnRvRXh0RmlsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy9DSEFOR0UgKG8gYWxlam8gZWwgaXNVcGxvYWRpbmcgbyBsbyBhbGVqbyBwYXJhIHF1ZSB0ZW5nYSBtLGFzIHRpZW1wbyBhbnRlcyBkZSBsYSByZXNwdXllc3RhKVxuICAgICAgICAgICAgICAgICAgICAvLyBzZXRJc1VwbG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2UobmV3RXh0RmlsZUxvY2FsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNYW5hZ2VyTG9nIGJlZm9yZSBzbGVlcFwiLCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgLy9BV0FJVCB3aGVuIHByZXBhcmluZyB0aW1lIGlzIGdpdmVuXG4gICAgICAgICAgICAgICAgICAgIC8vZ2VuZXJhbCBzbGVlcCBmb3IgYWxsIGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwUHJlcGFyaW5nKHByZXBhcmluZ1RpbWUpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGaWxlTWFuYWdlckxvZyBiZWZvcmUgc2xlZXBcIiwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyk7XG4gICAgICAgICAgICAgICAgICAgIC8vQVdBSVQgd2hlbiBwcmVwYXJpbmcgdGltZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAgICAvL2dlbmVyYWwgc2xlZXAgZm9yIGFsbCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAyO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IGFyck9mRXh0RmlsZXNJbnN0YW5jZXMubGVuZ3RoKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTZdO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlID0gYXJyT2ZFeHRGaWxlc0luc3RhbmNlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoKF9hID0gY3VycmVudEV4dEZpbGVJbnN0YW5jZS5leHRyYURhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWxldGVkKSkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDE0XTtcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhZ2UgdG8gXCJ1cGxvYWRpbmdcIiBpbiBvbmUgZmlsZSBhbmQgbm90aWZ5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAvLyBQUkVQQVJJTkcgPT4gVVBMT0FESU5HXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YWdlIHRvIFwidXBsb2FkaW5nXCIgaW4gb25lIGZpbGUgYW5kIG5vdGlmeSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgLy8gUFJFUEFSSU5HID0+IFVQTE9BRElOR1xuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbnRQcmVwYXJpbmdUb1VwbG9hZE9uZShjdXJyZW50RXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9DSEFOR0UgRklMRVNcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmFrZVVwbG9hZCkgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGZha2VGdWlVcGxvYWQoY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgRHJvcHpvbmVMb2NhbGl6ZXIpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDU7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShmYWtlUHJvZ3Jlc3MgPCAxMDApKSByZXR1cm4gWzMgLypicmVhayovLCA3XTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzICs9IGdldFJhbmRvbUludCgyMSwgMzUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnByb2dyZXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyA+IDEwMCA/IDEwMCA6IGZha2VQcm9ncmVzcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKDEwMDApXTtcbiAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgY2FzZSA3OiByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzgsIDEwLCAsIDExXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHVwbG9hZEV4dEZpbGUoY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgdXJsLCBtZXRob2QsIGhlYWRlcnMsIHVwbG9hZExhYmVsKV07XG4gICAgICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSB1bmV4cGVjdGVkRXJyb3JVcGxvYWRSZXN1bHQoY3VycmVudEV4dEZpbGVJbnN0YW5jZS50b0V4dEZpbGUoKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZEZpbGUgPSB1cGxvYWRSZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImZha2UgdXBsb2FkUmVzcG9uc2UgdXBsb2FkZWRGaWxlXCIsIHVwbG9hZGVkRmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vdXBkYXRlIGluc3RhbmNlc1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IHVwbG9hZGVkRmlsZS51cGxvYWRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IHVwbG9hZGVkRmlsZS51cGxvYWRNZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISEoY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwiYWJvcnRlZFwiKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTNdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDEzO1xuICAgICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlcy5wdXNoKHVwbG9hZFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTVdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTU7XG4gICAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAyXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbEZpbGVzKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHVwbG9hZCBncm91cCBmaW5pc2hlZCA6RFxuICAgICAgICAgICAgICAgICAgICBvblVwbG9hZEZpbmlzaCA9PT0gbnVsbCB8fCBvblVwbG9hZEZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25VcGxvYWRGaW5pc2goc2VydmVyUmVzcG9uc2VzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIHZhciBoYW5kbGVBYm9ydFVwbG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxpc3RFeHRGaWxlTG9jYWwgPSBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGlucHV0QnV0dG9uSWQpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiQWJvcnRpbmdcIiwgbGlzdEV4dEZpbGVMb2NhbCwgaW5wdXRCdXR0b25JZCk7XG4gICAgICAgIGlmICghbGlzdEV4dEZpbGVMb2NhbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGlzdEV4dEZpbGVMb2NhbC5mb3JFYWNoKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInVwbG9hZGluZ1wiIHx8XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIikge1xuICAgICAgICAgICAgICAgIGlmIChleHRGaWxlSW5zdGFuY2UueGhyICE9PSBudWxsICYmIGV4dEZpbGVJbnN0YW5jZS54aHIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnhoci5hYm9ydCgpO1xuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcImFib3J0ZWRcIjtcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IFwiVXBsb2FkIHdhcyBhYm9ydGVkIGJ5IHVzZXJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgdmFyIHZhbGlkYXRlZEZ1aUZpbGVMaXN0ID0gdmFsaWRhdGVFeHRGaWxlTGlzdChsb2NhbEZpbGVzLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gbnVtYmVyT2ZWYWxpZEZpbGVzIDogSW5maW5pdHksIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pO1xuICAgICAgICBzZXRMb2NhbEZpbGVzKHZhbGlkYXRlZEZ1aUZpbGVMaXN0KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW21heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCBsb2NhbGl6YXRpb25dKTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgY2hhbmdlcyBpbiB0aGUgZXh0RmlsZSBsaXN0LlxuICAgICAqIE1ha2VzIGEgbmV3IGFycmF5IG9mIGV4dEZpbGUgYWNjb3JkaW5nIHRvIHRoZSBcImJlaGF2aW91clwiIHByb3AuXG4gICAgICogSWYgaXNVcGxvYWRpbmcgc3RhdGUgaXMgbm90IHRydWUgYW5kIHRoZSBiZWhhdmlvdXIgcHJvcHMgaXMgZXF1YWwgdG8gXCJhZGRcIixcbiAgICAgKiB0aGUgaW5jb21pbmcgZXh0RmlsZUxpc3QgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaXN0IG9mIGV4dEZpbGUuXG4gICAgICogT3RoZXJ3aXNlLCB0aGUgY29tcGxldGUgZXh0RmlsZSBsaXN0IGlzIHJlcGxhY2VkIGJ5IHRoZSBpbmNvbW1pbmcgZXh0RmlsZSBsaXN0XG4gICAgICogQHBhcmFtIGV4dEZpbGVMaXN0IHRoZSBuZXcgZmlsZUxpc3RcbiAgICAgKiBAcGFyYW0gaXNVcGxvYWRpbmcgYSBmbGFnIHRoYXQgZHNjcmliZXMgd2h0aGVyIHRoZSB1cGxvYWRpbmcgcHJvY2VzcyBpcyBhY3RpdmUgb3Igbm90XG4gICAgICovXG4gICAgdmFyIGhhbmRsZUZpbGVzQ2hhbmdlID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0LCBpc1VwbG9hZGluZykge1xuICAgICAgICB2YXIgZmluYWxFeHRGaWxlTGlzdCA9IGJlaGF2aW91ciA9PT0gXCJhZGRcIiAmJiAhaXNVcGxvYWRpbmdcbiAgICAgICAgICAgID8gX19zcHJlYWRBcnJheSQxKF9fc3ByZWFkQXJyYXkkMShbXSwgbG9jYWxGaWxlcywgdHJ1ZSksIGV4dEZpbGVMaXN0LCB0cnVlKSA6IF9fc3ByZWFkQXJyYXkkMShbXSwgZXh0RmlsZUxpc3QsIHRydWUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0b1VwbG9hZCAmJiAhaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdXRvVXBsb2FkXCIsIGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICAgICAgdXBsb2FkZmlsZXMoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBhY3Rpb24gb2YgcmVjaWV2aW5nIHRoZSBmaWxlcyB3aGVuIHVzZXIgc2VsZWN0cyB0aGUgZmlsZXNcbiAgICAgKiBieSBjbGlja2luZyB0aGUgSW5wdXRCdXR0b25cbiAgICAgKiBAcGFyYW0gZXZ0IGV2ZW50IGhhbmRsZXIgZm9yIGdldHRpbmcgZmlsZXMgZnJvbSBpbnB1dCBlbGVtZW50IHRhcmdldFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVDaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy9pZiAoaXNVcGxvYWRpbmcpIHJldHVybjtcbiAgICAgICAgdmFyIGZpbGVMaXN0ID0gZXZ0LnRhcmdldC5maWxlcztcbiAgICAgICAgdmFyIGV4dEZpbGVMaXN0T3V0cHV0ID0gZmlsZUxpc3RUb0V4dEZpbGVBcnJheShmaWxlTGlzdCk7XG4gICAgICAgIC8vdmFsaWRhdGUgZHVpIGZpbGVzXG4gICAgICAgIGlmICh2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBvdXRlckZ1aVZhbGlkYXRpb24oZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAgICAgaWYgKGF1dG9DbGVhbikge1xuICAgICAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gZXh0RmlsZUxpc3RPdXRwdXQuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL2luaXQgeGhyIG9uIGVhY2ggZHVpIGZpbGVcbiAgICAgICAgaWYgKHVybClcbiAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gdG9VcGxvYWRhYmxlRXh0RmlsZUxpc3QoZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAvLyBDbGVhbiBpbnB1dCBlbGVtZW50IHRvIHRyaWdnZXIgb25DaGFuZ2UgZXZlbnQgb24gaW5wdXRcbiAgICAgICAgY2xlYW5JbnB1dChpbnB1dFJlZi5jdXJyZW50KTtcbiAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2UoZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIHZhbGlkYXRpb24gcHJvY2VzcyBmb3IgZWFjaCBGdWlGaWxlXG4gICAgICogb3V0c2lkZSB0aGUgRHJvcHpvbmVOZW8gY29tcG9uZW50IGZpbGUgZGVjbGFyYXRpb25cbiAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhIGdpdmVuIGJ5IG1heEZpbGVzIGFuZCBtYXhGaWxlU2l6ZSBhbmQgYWNjZXB0IHByb3BzXG4gICAgICogVGhpcyBmdW5jdGlvbiBjYWxscyB2YWxpZGF0ZUZ1aUZpbGVMaXN0IGFuZCBzZXRzIHRoZSB2YWxpZCBwcm9wIG9mIEZ1aUZpbGUgdG8gXCJ0cnVlXCIgb3IgXCJmYWxzZVwiXG4gICAgICogZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgdGhlIGluZGl2aWR1YWwgdmFsaWRhdGlvbi5cbiAgICAgKiBJdCBhbHNvIGFkZCB0aGUgbGlzdCBvZiBlcnJvcnMuXG4gICAgICogQHBhcmFtIGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSB0aGUgZnVpRmlsZUxpc3QgdG8gdmFsaWRhdGVcbiAgICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgdmFsaWRhdGVkIEZ1aUZpbGUgbGlzdFxuICAgICAqL1xuICAgIHZhciBvdXRlckZ1aVZhbGlkYXRpb24gPSBmdW5jdGlvbiAoZnVpRmlsZUxpc3RUb1ZhbGlkYXRlKSB7XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGVkRnVpRmlsZUxpc3QgcHJlXCIsIGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSk7XG4gICAgICAgIHZhciBmaW5hbE51bWJlck9mVmFsaWRzID0gbnVtYmVyT2ZWYWxpZEZpbGVzO1xuICAgICAgICBpZiAoYmVoYXZpb3VyID09PSBcInJlcGxhY2VcIikge1xuICAgICAgICAgICAgLy9yZS1zdGFydCBudW1iZXIgb2YgdmFsaWRzXG4gICAgICAgICAgICBmaW5hbE51bWJlck9mVmFsaWRzID0gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsaWRhdGVkRnVpRmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSwgbWF4RmlsZXMgPyBtYXhGaWxlcyAtIGZpbmFsTnVtYmVyT2ZWYWxpZHMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0ZWRGdWlGaWxlTGlzdCBhZnRcIiwgdmFsaWRhdGVkRnVpRmlsZUxpc3QpO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVkRnVpRmlsZUxpc3Q7XG4gICAgfTtcbiAgICAvLyBIQU5ETEVSUyBmb3IgQ0xJQ0tcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiSEFBQUFBQUFBXCIpO1xuICAgICAgICAvL2hhbmRsZUNsaWNrVXRpbChldnQpO1xuICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGhhbmRsZUNsaWNrSW5wdXQoaW5wdXRSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHJlc2V0IHRoZSBjb21wbGV0ZSBmaWxlIGxpc3RcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoW10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhbXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBoYW5kbGVDbGVhbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9PT0gXCJiZWZvcmVcIiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUJ1dHRvbnMsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBhYm9ydEJ1dHRvbjogaXNVcGxvYWRpbmcgPyBhYm9ydEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25BYm9ydDogaGFuZGxlQWJvcnRVcGxvYWQsIGRlbGV0ZUJ1dHRvbjogZGVsZXRlQnV0dG9uLCBvbkRlbGV0ZTogIWlzVXBsb2FkaW5nID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIHVwbG9hZEJ1dHRvbjogIWlzVXBsb2FkaW5nICYmICFhdXRvVXBsb2FkID8gdXBsb2FkQnV0dG9uIDogdW5kZWZpbmVkLCBvblVwbG9hZDogIWF1dG9VcGxvYWQgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfSA6IHVuZGVmaW5lZCwgY2xlYW5CdXR0b246IHZhbGlkYXRlRmlsZXNGbGFnICYmICFpc1VwbG9hZGluZyAmJiAhYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgPyBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBvbkNsZWFuOiBoYW5kbGVDbGVhbiwgc3R5bGU6IGNvbnRhaW5lclN0eWxlLCBjbGFzc05hbWU6IGNvbnRhaW5lckNsYXNzTmFtZSwgdG9wOiB0cnVlIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChNYXRlcmlhbEJ1dHRvbiwgX19hc3NpZ24kMSh7IGRpc2FibGVkOiBkaXNhYmxlZCwgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHN0eWxlOiBzdHlsZSwgY29sb3I6IGNvbG9yLCB2YXJpYW50OiB2YXJpYW50LCB0ZXh0VHJhbnNmb3JtOiB0ZXh0VHJhbnNmb3JtLCB0ZXh0Q29sb3I6IHRleHRDb2xvciwgcmVzZXRTdHlsZXM6IHJlc2V0U3R5bGVzLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgZGlzYWJsZVJpcHBsZTogZGlzYWJsZVJpcHBsZSwgZGFya01vZGU6IGRhcmtNb2RlLCBpZDogaW5wdXRCdXR0b25JZCB9LCByZXN0KSwgY2hpbGRyZW4gfHwgbGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KElucHV0SGlkZGVuLCB7IG11bHRpcGxlOiBtYXhGaWxlcyA/IG1heEZpbGVzID4gMSA6IHRydWUsIGFjY2VwdDogYWNjZXB0IHx8IFwiXCIsIGlucHV0UmVmOiBpbnB1dFJlZiwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZUlucHV0IH0pLFxuICAgICAgICBhY3Rpb25CdXR0b25zUG9zaXRpb24gPT09IFwiYWZ0ZXJcIiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUJ1dHRvbnMsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBhYm9ydEJ1dHRvbjogaXNVcGxvYWRpbmcgPyBhYm9ydEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25BYm9ydDogaGFuZGxlQWJvcnRVcGxvYWQsIGRlbGV0ZUJ1dHRvbjogZGVsZXRlQnV0dG9uLCBvbkRlbGV0ZTogIWlzVXBsb2FkaW5nID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIHVwbG9hZEJ1dHRvbjogIWlzVXBsb2FkaW5nICYmICFhdXRvVXBsb2FkID8gdXBsb2FkQnV0dG9uIDogdW5kZWZpbmVkLCBvblVwbG9hZDogIWF1dG9VcGxvYWQgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfSA6IHVuZGVmaW5lZCwgY2xlYW5CdXR0b246IHZhbGlkYXRlRmlsZXNGbGFnICYmICFpc1VwbG9hZGluZyAmJiAhYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgPyBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBvbkNsZWFuOiBoYW5kbGVDbGVhbiwgc3R5bGU6IGNvbnRhaW5lclN0eWxlLCBjbGFzc05hbWU6IGNvbnRhaW5lckNsYXNzTmFtZSwgdG9wOiBmYWxzZSB9KSkpKTtcbn07XG5cbi8vUmVhY3QuSFRNTFByb3BzPEhUTUxEaXZFbGVtZW50PlxudmFyIGRlZmF1bHRBdmF0YXJQcm9wcyA9IHtcbiAgICB2YXJpYW50OiBcInNxdWFyZVwiLFxuICAgIGFsdDogXCJhdmF0YXJcIixcbiAgICBlbXB0eUxhYmVsOiBcIkFncmVnYXIgZm90b1wiLFxuICAgIGNoYW5nZUxhYmVsOiBcIkNhbWJpYXIgZm90b1wiLFxuICAgIGxvYWRpbmdMYWJlbDogXCJMb2FkaW5nLi4uXCIsXG4gICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgIC8vc21hcnQ6IGZhbHNlLFxuICAgIHNtYXJ0SW1nRml0OiBcImNlbnRlclwiLFxufTtcblxuX19fJGluc2VydFN0eWxlKFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVBvcHBpbnM6MzAwLDQwMCw1MDAsNjAwLDcwMCw5MDApO1xcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyIHtcXG4gIHdpZHRoOiAyMDBweDtcXG4gIGhlaWdodDogMjAwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQ4Nik7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIuc3F1YXJlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDBweDtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIuY2lyY2xlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIgLmZ1aS1hdmF0YXItaW1hZ2Uge1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyOmhvdmVyIC5mdWktYXZhdGFyLWxhYmVsLmhpZGUge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIgLmZ1aS1hdmF0YXItbGFiZWwge1xcbiAgbWFyZ2luOiAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC40ODYpO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29sb3I6IHdoaXRlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyIC5mdWktYXZhdGFyLWxhYmVsLmhpZGUge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIgLmZ1aS1hdmF0YXItbGFiZWw6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3MSwgNzEsIDcxLCAwLjc0KTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVwiKTtcblxudmFyIHVzZUF2YXRhclN0eWxlID0gZnVuY3Rpb24gKGF2YXRhcklkLCBib3JkZXJSYWRpdXMpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgaWRBdmF0YXJTdHlsZXMgPSBfYVswXSwgc2V0SWRBdmF0YXJTdHlsZXMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHN0eWxlSW5qZWN0ZWQgPSBfYlswXSwgc2V0U3R5bGVJbmplY3RlZCA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGNsYXNzTmFtZUJvcmRlciA9IF9jWzBdLCBzZXRDbGFzc05hbWVCb3JkZXIgPSBfY1sxXTtcbiAgICAvL2NvbnNvbGUubG9nKFwiYm9yZGVyUmFkaXVzXCIsYm9yZGVyUmFkaXVzKTtcbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGEgZHluYW1pYyBjc3Mgc2hlZXQgZm9yIGF2YXRhclxuICAgICAqIEBwYXJhbSBib3JkZXJSYWRpdXMgdGhlIGJvcmRlciByYWRpdXNcbiAgICAgKiBAcmV0dXJucyBhIGR5bmFtaWMgY3NzIHNoZWV0XG4gICAgICovXG4gICAgdmFyIG1ha2VEeW5hbWljQXZhdGFyQ1NTUnVsZXMgPSBmdW5jdGlvbiAoYXZhdGFySWQsIGJvcmRlclJhZGl1cykge1xuICAgICAgICB2YXIgZmluYWxJZFN0eWxlID0gIWJvcmRlclJhZGl1cyA/IFwiLWRlZmF1bHRcIiA6IFwiLVwiLmNvbmNhdChhdmF0YXJJZCk7XG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gRHluYW1pQ1NTLm1ha2VTdHlsZVNoZWV0KHtcbiAgICAgICAgICAgIGlkOiBcImZ1aS1hdmF0YXItc3R5bGVzXCIgKyBmaW5hbElkU3R5bGUsXG4gICAgICAgICAgICBzaGVldFJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1ib3JkZXJcIiArIGZpbmFsSWRTdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogXCJcIi5jb25jYXQoYm9yZGVyUmFkaXVzIHx8IFwiNnB4XCIsIFwiICFpbXBvcnRhbnRcIiksXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQ7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgZGVsZXRpbmcgaW5pdFwiLCBzdHlsZUluamVjdGVkLCBpZEF2YXRhclN0eWxlcyk7XG4gICAgICAgICAgICBpZiAoc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdmF0YXIsIGNhdGNoIGNzcyBkZWxldGVcIik7XG4gICAgICAgICAgICAgICAgRHluYW1pQ1NTLnJlbW92ZVN0eWxlU2hlZXQoaWRBdmF0YXJTdHlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0SWRBdmF0YXJTdHlsZXMoXCJcIik7XG4gICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8qICAgICAgaWYgKCFib3JkZXJSYWRpdXMpIHtcbiAgICAgICAgICAgICAgICAgRHluYW1pQ1NTLnJlbW92ZVN0eWxlU2hlZXQoaWRBdmF0YXJTdHlsZXMpO1xuICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgfSAqL1xuICAgICAgICB2YXIgaWRTdHlsZSA9IFwiXCI7XG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gbWFrZUR5bmFtaWNBdmF0YXJDU1NSdWxlcyhhdmF0YXJJZCwgYm9yZGVyUmFkaXVzKTtcbiAgICAgICAgLy9jaGVjayBpZiBkZWZhdWx0IGlzIGluIERPTVxuICAgICAgICBpZiAoIWJvcmRlclJhZGl1cyAmJiAhc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgaWYgKER5bmFtaUNTUy5leGlzdFN0eWxlU2hlZXQoXCJmdWktYXZhdGFyLXN0eWxlcy1kZWZhdWx0XCIpKSB7XG4gICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICBzZXRJZEF2YXRhclN0eWxlcyhcImZ1aS1hdmF0YXItc3R5bGVzLWRlZmF1bHRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICAgICAgc2V0SWRBdmF0YXJTdHlsZXMoaWRTdHlsZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGNsYXNzbmFtZSB3YXMgYWRkZWRcbiAgICAgICAgICAgIC8vIGlmIHllcywgZWRpdCBjc3NcbiAgICAgICAgICAgIC8vIGlmIG5vdCBpbnNlcnQgY3NzXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXZhdGFyLCBubyBjc3MsIGluc2VydGluZ1wiKTtcbiAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdmF0YXIsIG5vIGNzcywgaW5zZXJ0ZWQgT0tcIiwgaWRTdHlsZSk7XG4gICAgICAgICAgICBzZXRJZEF2YXRhclN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgIGlmIChpZFN0eWxlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdmF0YXIsIGNhdGNoIGNzcywgbW9kaWZpeWluZ1wiLCBpZEF2YXRhclN0eWxlcyk7XG4gICAgICAgICAgICBEeW5hbWlDU1MuZWRpdFN0eWxlU2hlZXQoaWRBdmF0YXJTdHlsZXMsIHN0eWxlU2hlZXQuc2hlZXRSdWxlcyB8fCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q2xhc3NOYW1lQm9yZGVyKFwiZnVpLWF2YXRhci1ib3JkZXItXCIgKyBhdmF0YXJJZCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtib3JkZXJSYWRpdXNdKTtcbiAgICByZXR1cm4gY2xhc3NOYW1lQm9yZGVyO1xufTtcblxudmFyIEJhc2VQcmVwYXJpbmdMb2FkZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIC8vb25DbGljayxcbiAgICBzdHlsZSA9IHByb3BzLnN0eWxlLCBcbiAgICAvL2NsYXNzTmFtZSxcbiAgICByYWRpdXMgPSBwcm9wcy5yYWRpdXMsIHggPSBwcm9wcy54LCB5ID0gcHJvcHMueSwgd2lkdGggPSBwcm9wcy53aWR0aDtcbiAgICB2YXIgZmluYWxSYWRpdXMgPSByYWRpdXMgfHwgNDY7XG4gICAgdmFyIGZpbmFsWCA9IHggfHwgNTA7XG4gICAgdmFyIGZpbmFsWSA9IHkgfHwgNTA7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB4bWxuc1hsaW5rOiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHN0eWxlOiBmaW5hbFN0eWxlLCB2aWV3Qm94OiBcIjAgMCAxMDAgMTAwXCIsIHByZXNlcnZlQXNwZWN0UmF0aW86IFwieE1pZFlNaWRcIiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiY2lyY2xlXCIsIHsgY3g6IFwiXCIuY29uY2F0KGZpbmFsWCksIGN5OiBcIlwiLmNvbmNhdChmaW5hbFkpLCByOiBcIlwiLmNvbmNhdChmaW5hbFJhZGl1cyksIGZpbGw6IFwibm9uZVwiLCBzdHJva2U6IGNvbG9yIHx8IFwiIzE0ZmYwMFwiLCBzdHJva2VXaWR0aDogXCJcIi5jb25jYXQod2lkdGggfHwgOCwgXCJweFwiKSwgc3Ryb2tlRGFzaGFycmF5OiBcIjE2NC45MzM2MTQzMTM0NjQxNSAxMDAuOTc3ODcxNDM3ODIxMzhcIiB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFuaW1hdGVUcmFuc2Zvcm1cIiwgeyBhdHRyaWJ1dGVOYW1lOiBcInRyYW5zZm9ybVwiLCB0eXBlOiBcInJvdGF0ZVwiLCByZXBlYXRDb3VudDogXCJpbmRlZmluaXRlXCIsIGR1cjogXCIxc1wiLCB2YWx1ZXM6IFwiMCBcIi5jb25jYXQoZmluYWxYLCBcIiBcIikuY29uY2F0KGZpbmFsWCwgXCI7MzYwIFwiKS5jb25jYXQoZmluYWxYLCBcIiBcIikuY29uY2F0KGZpbmFsWCksIGtleVRpbWVzOiBcIjA7MVwiIH0pKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWxvYWRlci1jb250YWluZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQxKTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uZmlsZXMtdWktbG9hZGVyLWNvbnRhaW5lci5jbGlja2FibGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uZmlsZXMtdWktbG9hZGVyLWNvbnRhaW5lcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjEpO1xcbn1cIik7XG5cbnZhciBMb2FkZXJDb250YWluZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBzaXplID0gcHJvcHMuc2l6ZSwgb25DbGljayA9IHByb3BzLm9uQ2xpY2s7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHNpemUgPyBwYXJzZVNpemUoc2l6ZSkgOiB1bmRlZmluZWQ7XG4gICAgLy9jb25zdCBpc0NsaWNrYWJsZSA9IG9uQ2xpY2sgIT09IHVuZGVmaW5lZDtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBvbkNsaWNrXG4gICAgICAgID8gXCJmaWxlcy11aS1sb2FkZXItY29udGFpbmVyIGNsaWNrYWJsZVwiXG4gICAgICAgIDogXCJmaWxlcy11aS1sb2FkZXItY29udGFpbmVyXCI7XG4gICAgdmFyIGhhbmRsZUNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTtcbiAgICB9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBjbGFzc05hbWU6IGNsYXNzTmFtZSA/IFwiXCIuY29uY2F0KGZpbmFsQ2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSkgOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgc3R5bGUpLCB7IGhlaWdodDogZmluYWxTaXplLCB3aWR0aDogZmluYWxTaXplIH0pIH0sIGNoaWxkcmVuKSk7XG59O1xuXG52YXIgSW5maW5pdGVMb2FkZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIFxuICAgIC8vdGV4dCxcbiAgICBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTG9hZGVyQ29udGFpbmVyLCB7IG9uQ2xpY2s6IG9uQ2xpY2ssIHNpemU6IHNpemUgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQmFzZVByZXBhcmluZ0xvYWRlciwgeyBzaXplOiBzaXplIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgIH0gfSwgb25DbGljayAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpXCIsIHNpemU6IDQ1LCBvbkNsaWNrOiBvbkNsaWNrIH0pKSkpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktbGF5ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHRvcDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cIik7XG5cbnZhciBMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIHZpc2libGUgPSBwcm9wcy52aXNpYmxlLCBvdGhlclByb3BzID0gX19yZXN0KHByb3BzLCBbXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCIsIFwidmlzaWJsZVwiXSk7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYWRkQ2xhc3NOYW1lKGNsYXNzTmFtZSB8fCBcIlwiLCBcImZpbGVzLXVpLWxheWVyXCIpO1xuICAgIGlmICh2aXNpYmxlKVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24kMSh7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBzdHlsZSB9LCBvdGhlclByb3BzKSwgY2hpbGRyZW4pKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbnZhciBJbWFnZVByZXZpZXdEZWZhdWx0UHJvcHMgPSB7XG4gICAgLy93aWR0aDogXCIxMDAlXCIsXG4gICAgLy9oZWlnaHQ6IFwiMTAwJVwiLFxuICAgIGFsdDogXCJpbWFnZS1wcmV2aWV3XCIsXG4gICAgLy9jbGFzc05hbWU6IFwiZnVpLWltYWdlLXByZXZpZXdcIlxuICAgIHNtYXJ0SW1nRml0OiBcIm9yaWVudGF0aW9uXCJcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5mdWktaW1hZ2UtcHJldmlldyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbn1cIik7XG5cbnZhciBJbWFnZVByZXZpZXcgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2EgPSBtZXJnZVByb3BzKHByb3BzLCBJbWFnZVByZXZpZXdEZWZhdWx0UHJvcHMpLCBzcmMgPSBfYS5zcmMsIGFsdCA9IF9hLmFsdCwgd2lkdGggPSBfYS53aWR0aCwgaGVpZ2h0ID0gX2EuaGVpZ2h0LCBvbkVycm9yID0gX2Eub25FcnJvciwgXG4gICAgLy9zbWFydCxcbiAgICBzbWFydEltZ0ZpdCA9IF9hLnNtYXJ0SW1nRml0LCBzdHlsZSA9IF9hLnN0eWxlLCBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWU7XG4gICAgLy9jb25zb2xlLmxvZyhcIkltYWdlUHJldmlldyBzbWFydEltZ0ZpdFwiLHNtYXJ0SW1nRml0KTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShbdW5kZWZpbmVkLCB1bmRlZmluZWRdKSwgX2MgPSBfYlswXSwgZmluYWxIZWlnaHQgPSBfY1swXSwgZmluYWxXaWR0aCA9IF9jWzFdLCBzZXRmaW5hbERpbWVuc2lvbnMgPSBfYlsxXTtcbiAgICAvLy8vY29uc29sZS50YWJsZSh7IHNyYywgYWx0LCBjbGFzc05hbWUsIHN0eWxlLCB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgIHZhciBfZCA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIHNvdXJjZSA9IF9kWzBdLCBzZXRTb3VyY2UgPSBfZFsxXTtcbiAgICAvKiAgY29uc3QgW29yaWVudGF0aW9uLCBzZXRPcmllbnRhdGlvbl0gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICAgIFwibGFuZHNjYXBlXCIgfCBcInBvcnRyYWl0XCIgfCB1bmRlZmluZWRcbiAgICA+KHVuZGVmaW5lZCk7ICovXG4gICAgdmFyIGdldFNvdXJjZSA9IGZ1bmN0aW9uIChzcmMpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5ld0ltYWdlU3JjO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIHJlYWRBc0RhdGFVUkwoc3JjKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBuZXdJbWFnZVNyYyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2V0U3RyU291cmNlKG5ld0ltYWdlU3JjKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICB2YXIgaGFuZGxlU2V0U3RyU291cmNlID0gZnVuY3Rpb24gKGltYWdlU291cmNlKSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBmaW5hbEhlaWdodCwgZmluYWxXaWR0aCwgb3JpZW50YXRpb25fMTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlU2V0U3RyU291cmNlXCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU291cmNlID09PSBcIlwiIHx8ICFpbWFnZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZVNldFN0clNvdXJjZSByZXR1cm5cIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISFzbWFydEltZ0ZpdCkgcmV0dXJuIFszIC8qYnJlYWsqLywgMV07XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVTZXRTdHJTb3VyY2Ugbm8gaW1nZml0XCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9pZiBub3QgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMSwgMywgLCA0XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGdldEltYWdlT3JpZW50YXRpb24oaW1hZ2VTb3VyY2UpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uXzEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVTZXRTdHJTb3VyY2Ugb3JpZW50YXRpb24gb2J0YWluZWRcIiwgb3JpZW50YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3JpZW50YXRpb25fMSA9PT0gXCJsYW5kc2NhcGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNtYXJ0SW1nRml0ID09PSBcIm9yaWVudGF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc21hcnRJbWdGaXQgPT09IFwiY2VudGVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBzZXRmaW5hbERpbWVuc2lvbnMoW2ZpbmFsSGVpZ2h0LCBmaW5hbFdpZHRoXSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZShpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy9pZiBub3QgdW5kZWZpbmVkXG4gICAgICAgIGlmICghc3JjKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJJbWFnZVByZXZpZXcgVGhlcmUgaXMgc291cmNlIDpEXCIpO1xuICAgICAgICBpZiAodHlwZW9mIHNyYyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgLy9pZiBhIHVybCBzdHJpbmcgaXMgZ2l2ZW4sIGFzc2lnbiBpdCBkaXJlY3RseVxuICAgICAgICAgICAgaGFuZGxlU2V0U3RyU291cmNlKHNyYyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL2lmIGEgRmlsZSBvYmplY3QgaXMgZ2l2ZW4sIGNoZWNrIGlmIGlzIGEgc3VwcG9ydGVkIGZvcm1hdCBhbmQgcmVhZCBpdFxuICAgICAgICAgICAgdmFyIGhlYWRlck1pbWUgPSBzcmMudHlwZSA/IHNyYy50eXBlLnNwbGl0KFwiL1wiKVswXSA6IFwib2N0ZXRcIjtcbiAgICAgICAgICAgIGlmIChoZWFkZXJNaW1lID09PSBcImltYWdlXCIpIHtcbiAgICAgICAgICAgICAgICAvL3NldCB0aGUgaW1hZ2Ugc291cmNlIGFuZCBjcmVhdGUgdGhlIHVyaSBzdHJpbmcgaWYgaXQncyBhIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRcbiAgICAgICAgICAgICAgICBnZXRTb3VyY2Uoc3JjKTtcbiAgICAgICAgICAgICAgICAvL2lmIG5vdCBpbWFnZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3NyY10pO1xuICAgIC8vLy9jb25zb2xlLmxvZyhcIkltYWdlUHJldmlld1wiLCBzcmMsIHNvdXJjZSk7XG4gICAgLyogY29uc3QgZmluYWxXaWR0aDogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkID1cbiAgICAgIHdpZHRoIHx8IChvcmllbnRhdGlvbiA9PT0gXCJsYW5kc2NhcGVcIiAmJiBzbWFydCA/IFwiMTAwJVwiIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBmaW5hbEhlaWdodDogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkID1cbiAgICAgIGhlaWdodCB8fCAob3JpZW50YXRpb24gPT09IFwicG9ydHJhaXRcIiAmJiBzbWFydCA/IFwiMTAwJVwiIDogdW5kZWZpbmVkKTsgKi9cbiAgICAvL2NvbnNvbGUubG9nKFwiSW1hZ2UgcmVzdWx0XCIsIHNyYywgc291cmNlLCBmaW5hbEhlaWdodCwgZmluYWxXaWR0aCk7XG4gICAgdmFyIGhhbmRsZUVycm9yID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlRXJyb3JcIiwgb25FcnJvcik7XG4gICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzcmMgJiYgc291cmNlICYmIChmaW5hbEhlaWdodCB8fCBmaW5hbFdpZHRoKSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7IFxuICAgICAgICAvL29uTG9hZD17aGFuZGxlTG9hZH1cbiAgICAgICAgc3R5bGU6IHN0eWxlIHx8IHt9LCBvbkNsaWNrOiBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSwgd2lkdGg6IGZpbmFsV2lkdGgsIGhlaWdodDogZmluYWxIZWlnaHQsIHNyYzogc291cmNlLCBhbHQ6IGFsdCwgY2xhc3NOYW1lOiBjbGFzc05hbWUsIG9uRXJyb3I6IGhhbmRsZUVycm9yIH0pKSkpO1xufTtcblxuLyoqXG4gKlxuICogRGVtb3M6XG4gKlxuICogLSBbQXZhdGFyXShodHRwczovL3d3dy5maWxlcy11aS5jb20vY29tcG9uZW50cy9hdmF0YXIpXG4gKlxuICogQVBJOlxuICpcbiAqIC0gW0F2YXRhciBBUEldKGh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9hcGkvYXZhdGFyLylcbiAqL1xudmFyIEF2YXRhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IG1lcmdlUHJvcHMocHJvcHMsIGRlZmF1bHRBdmF0YXJQcm9wcyksIHJlYWRPbmx5ID0gX2EucmVhZE9ubHksIHNyYyA9IF9hLnNyYywgYWx0ID0gX2EuYWx0LCBhY2NlcHQgPSBfYS5hY2NlcHQsIG9uQ2hhbmdlID0gX2Eub25DaGFuZ2UsIGVtcHR5TGFiZWwgPSBfYS5lbXB0eUxhYmVsLCBjaGFuZ2VMYWJlbCA9IF9hLmNoYW5nZUxhYmVsLCB2YXJpYW50ID0gX2EudmFyaWFudCwgYm9yZGVyUmFkaXVzID0gX2EuYm9yZGVyUmFkaXVzLCB1cGxvYWRpbmdMYWJlbCA9IF9hLmxvYWRpbmdMYWJlbCwgaXNVbG9hZGluZyA9IF9hLmlzTG9hZGluZywgb25FcnJvciA9IF9hLm9uRXJyb3IsIHNtYXJ0SW1nRml0ID0gX2Euc21hcnRJbWdGaXQsIHN0eWxlID0gX2Euc3R5bGUsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInJlYWRPbmx5XCIsIFwic3JjXCIsIFwiYWx0XCIsIFwiYWNjZXB0XCIsIFwib25DaGFuZ2VcIiwgXCJlbXB0eUxhYmVsXCIsIFwiY2hhbmdlTGFiZWxcIiwgXCJ2YXJpYW50XCIsIFwiYm9yZGVyUmFkaXVzXCIsIFwibG9hZGluZ0xhYmVsXCIsIFwiaXNMb2FkaW5nXCIsIFwib25FcnJvclwiLCBcInNtYXJ0SW1nRml0XCIsIFwic3R5bGVcIl0pO1xuICAgIC8vY29uc29sZS5sb2coXCJBdmF0YXIgc21hcnRJbWdGaXRcIiwgc21hcnRJbWdGaXQpO1xuICAgIHZhciBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvL2NvbnN0IGF2YXRhcklkID0gUmVhY3QudXNlSWQoKTtcbiAgICB2YXIgYXZhdGFySWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSArIFwiXCI7IH0sIFtdKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWVCb3JkZXIgPSB1c2VBdmF0YXJTdHlsZShhdmF0YXJJZC5yZXBsYWNlKFwiOlwiLCBcIlwiKS5yZXBsYWNlKFwiOlwiLCBcIlwiKSwgYm9yZGVyUmFkaXVzKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiZmluYWxDbGFzc05hbWVCb3JkZXJcIiwgZmluYWxDbGFzc05hbWVCb3JkZXIpO1xuICAgIHZhciBoYW5kbGVDbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAvLyBhbGVydChcIkFncmVnYXIgZm90b29vb29vb1wiKTtcbiAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsaWNrKCk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlQ2hhbmdlSW5wdXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHZhciBmaWxlTGlzdCA9IGV2dC50YXJnZXQuZmlsZXM7XG4gICAgICAgIHZhciBmaWxlTGlzdE91dHB1dCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgZiA9IHZvaWQgMDsgKGYgPSBmaWxlTGlzdFtpXSk7IGkrKykge1xuICAgICAgICAgICAgZmlsZUxpc3RPdXRwdXQucHVzaChmKTtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZmlsZUxpc3RPdXRwdXRbMF0pO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZUVycm9yID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiQXZhdGFyIGVycm9yXCIsIGV2dCk7XG4gICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcihldnQpO1xuICAgIH07XG4gICAgaWYgKCFmaW5hbENsYXNzTmFtZUJvcmRlcilcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduJDEoeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lclwiLmNvbmNhdCh2YXJpYW50ID09PSBcImNpcmNsZVwiID8gXCIgY2lyY2xlXCIgOiBcIlwiLCBcIiBcIikuY29uY2F0KGZpbmFsQ2xhc3NOYW1lQm9yZGVyKSwgc3R5bGU6IHN0eWxlIH0sIHJlc3QpLFxuICAgICAgICAgICAgICAgIGlzVWxvYWRpbmcgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyB2aXNpYmxlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1sYWJlbFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEluZmluaXRlTG9hZGVyLCB7IHNpemU6IDUwIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkaW5nTGFiZWwpKSkgOiBzcmMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJbWFnZVByZXZpZXcsIHsgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItaW1hZ2VcIiwgc3JjOiBzcmMsIGFsdDogYWx0LCBvbkVycm9yOiBoYW5kbGVFcnJvciwgc21hcnRJbWdGaXQ6IHNtYXJ0SW1nRml0IH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItbGFiZWxcIiB9LCBlbXB0eUxhYmVsKSksXG4gICAgICAgICAgICAgICAgIXJlYWRPbmx5ICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAhaXNVbG9hZGluZyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWxhYmVsIGhpZGVcIiwgb25DbGljazogaGFuZGxlQ2xpY2sgfSwgc3JjID8gY2hhbmdlTGFiZWwgOiBlbXB0eUxhYmVsKSksXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXRIaWRkZW4sIHsgbXVsdGlwbGU6IGZhbHNlLCBhY2NlcHQ6IGFjY2VwdCB8fCBcImltYWdlLypcIiwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZUlucHV0LCBpbnB1dFJlZjogaW5wdXRSZWYgfSkpKSkpKTtcbiAgICB9XG59O1xuLyoqXG4gKiBjcmVhdGVzIGEgZHluYW1pYyBjc3Mgc2hlZXQgZm9yIGF2YXRhclxuICogQHBhcmFtIGJvcmRlclJhZGl1cyB0aGUgYm9yZGVyIHJhZGl1c1xuICogQHJldHVybnMgYSBkeW5hbWljIGNzcyBzaGVldFxuICovXG4vKiBjb25zdCBtYWtlRHluYW1pY0F2YXRhckNTU1J1bGVzID0gKFxuICBib3JkZXJSYWRpdXM6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogRHluYW1pY1NoZWV0ID0+IHtcbiAgY29uc3Qgc3R5bGVTaGVldDogRHluYW1pY1NoZWV0ID0gRHluYW1pQ1NTLm1ha2VTdHlsZVNoZWV0KHtcbiAgICBpZDogXCJhdmF0YXItc3R5bGVzXCIsXG4gICAgc2hlZXRSdWxlczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1ib3JkZXJcIixcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG4gIHJldHVybiBzdHlsZVNoZWV0O1xufTsgKi9cblxuX19fJGluc2VydFN0eWxlKFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVBvcHBpbnM6MzAwLDQwMCw1MDAsNjAwLDcwMCw5MDApO1xcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIge1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NTgpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgbWluLWhlaWdodDogMTAwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udC1zaXplOiAxNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHdpZHRoOiAzMjBweDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciB7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgd2lkdGg6IDMyMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGhlaWdodDogMTAwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgZ2FwOiA1cHg7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWljb24tY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMDBweDtcXG4gIGhlaWdodDogMTAwcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWljb24tY29udGFpbmVyIC5maWxlLWNhcmQtaWNvbi1sYXllciB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDEwMHB4O1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIgLmZpbGUtY2FyZC1pY29uLWxheWVyIGltZyB7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIgLmZpbGUtY2FyZC1pY29uLWxheWVyLmJsdXIgaW1nIHtcXG4gIGZpbHRlcjogYmx1cig0cHgpO1xcbiAgd2lkdGg6IDIwMCU7XFxuICBoZWlnaHQ6IDIwMCU7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWljb24tY29udGFpbmVyIC5maWxlLWNhcmQtc3RhdHVzLWxheWVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFxuICBwYWRkaW5nOiA1cHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbGluZS1oZWlnaHQ6IDE5cHg7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcXG4gIGNvbG9yOiBibGFjaztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtZGF0YS5kYXJrLW1vZGUge1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtZGF0YSAuZmlsZS1jYXJkLXNpemUge1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGZvbnQtc2l6ZTogMC45cmVtO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhIC5maWxlLWNhcmQtbmFtZSB7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMTsgLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgKi9cXG4gIGxpbmUtY2xhbXA6IDE7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhIC5maWxlLWNhcmQtbmFtZS5ub3QtYWxsb3dlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE4MCwgMTYsIDE2LCAwLjcpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC11cGxvYWQtbGF5ZXItY29udGFpbmVyIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMiksIHJnYmEoMCwgMCwgMCwgMC4zNSksIHJnYmEoMCwgMCwgMCwgMC42MjUpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSk7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjIpLCByZ2JhKDAsIDAsIDAsIDAuMyksIHJnYmEoMCwgMCwgMCwgMC40KSwgcmdiYSgwLCAwLCAwLCAwLjc1KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpKTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgZm9udC1zaXplOiAxZW07XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvIHtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAxMDBweCk7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIHNjcm9sbGJhci13aWR0aDogdGhpbjtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbiAgc2Nyb2xsYmFyLWNvbG9yOiByZ2JhKDEwMCwgMTA4LCAxMjcsIDAuNjYyNzQ1MDk4KSB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm86Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA5cHg7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm86Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAxMDgsIDEyNywgMC42NjI3NDUwOTgpO1xcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcXG4gIGJvcmRlcjogdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvIC5maWxlcy11aS1maWxlLWNhcmQtaW5mby1sYXllci1oZWFkZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgLyogIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogNTtcXG4gIHJpZ2h0OiA1OyAqL1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbyAuaGVhZGluZyB7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgcGFkZGluZzogMCA1cHg7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvIC5sYWJlbCB7XFxuICBwYWRkaW5nOiAwIDVweDtcXG4gIGZvbnQtd2VpZ2h0OiAzOTk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuY2xpY2thYmxlIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLyogLmZpbGVzLXVpLWZpbGUtaWNvbiB7XFxuICBmb250LXNpemU6IDAuN3JlbTtcXG4gIG1pbi13aWR0aDogMTlweDtcXG4gIG1pbi1oZWlnaHQ6IDE5cHg7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAycHggMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjY1KTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICY6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuODUpO1xcbiAgfVxcbiAgJi5kYXJrLW1vZGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NCwgMTYwLCAxNjYsIDAuNjUpO1xcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NCwgMTYwLCAxNjYsIDAuODUpO1xcbiAgICB9XFxuICB9XFxufSAqL1wiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtaWNvbiB7XFxuICBmb250LXNpemU6IDAuN3JlbTtcXG4gIG1pbi13aWR0aDogMTlweDtcXG4gIG1pbi1oZWlnaHQ6IDE5cHg7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAycHggMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjY1KTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaWNvbjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuODUpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pY29uLmRhcmstbW9kZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NCwgMTYwLCAxNjYsIDAuNjUpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pY29uLmRhcmstbW9kZTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NCwgMTYwLCAxNjYsIDAuODUpO1xcbn1cIik7XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlIHtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTIxMjEyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTIge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNykpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi00IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDkpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDkpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTUge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTYge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tNyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi04IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTkge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTAge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMykpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTEge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMykpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTIge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTMge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTUge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTYge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTcge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTgge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMTkge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMjAge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMjEge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMjIge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMjMge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMjQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0wIHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEge1xcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMiB7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0zIHtcXG4gIGJveC1zaGFkb3c6IDBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTQge1xcbiAgYm94LXNoYWRvdzogMHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTUge1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTYge1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi03IHtcXG4gIGJveC1zaGFkb3c6IDBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tOCB7XFxuICBib3gtc2hhZG93OiAwcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTkge1xcbiAgYm94LXNoYWRvdzogMHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xMCB7XFxuICBib3gtc2hhZG93OiAwcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xMSB7XFxuICBib3gtc2hhZG93OiAwcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xMiB7XFxuICBib3gtc2hhZG93OiAwcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xMyB7XFxuICBib3gtc2hhZG93OiAwcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xNCB7XFxuICBib3gtc2hhZG93OiAwcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xNSB7XFxuICBib3gtc2hhZG93OiAwcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xNiB7XFxuICBib3gtc2hhZG93OiAwcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTcge1xcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE4IHtcXG4gIGJveC1zaGFkb3c6IDBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xOSB7XFxuICBib3gtc2hhZG93OiAwcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMjAge1xcbiAgYm94LXNoYWRvdzogMHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yMSB7XFxuICBib3gtc2hhZG93OiAwcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTIyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMjMge1xcbiAgYm94LXNoYWRvdzogMHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yNCB7XFxuICBib3gtc2hhZG93OiAwcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVwiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGUtY2FyZC1yaWdodC1sYXllci1oZWFkZXIge1xcbiAgbWFyZ2luLXRvcDogM3B4O1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IHVuc2V0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgZ2FwOiAycHg7XFxufVxcblxcbi5maWxlLWNhcmQtcmlnaHQtbGF5ZXItZm9vdGVyIHtcXG4gIG1hcmdpbi1ib3R0b206IDNweDtcXG4gIG1hcmdpbi1yaWdodDogM3B4O1xcbiAgbGVmdDogdW5zZXQ7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBnYXA6IDJweDtcXG4gIGJvdHRvbTogMDtcXG4gIHJpZ2h0OiAwO1xcbn1cIik7XG5cbnZhciBGaWxlQ2FyZFJpZ2h0QWN0aW9ucyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBkYXJrTW9kZSA9IHByb3BzLmRhcmtNb2RlLCBkZWxldGVJY29uID0gcHJvcHMuZGVsZXRlSWNvbiwgZG93bmxvYWRJY29uID0gcHJvcHMuZG93bmxvYWRJY29uLCBpbWFnZUljb24gPSBwcm9wcy5pbWFnZUljb24sIGluZm9JY29uID0gcHJvcHMuaW5mb0ljb24sIG9uRGVsZXRlID0gcHJvcHMub25EZWxldGUsIG9uRG93bmxvYWQgPSBwcm9wcy5vbkRvd25sb2FkLCBvbk9wZW5JbmZvID0gcHJvcHMub25PcGVuSW5mbywgb25TZWUgPSBwcm9wcy5vblNlZSwgb25XYXRjaCA9IHByb3BzLm9uV2F0Y2gsIHZpZGVvSWNvbiA9IHByb3BzLnZpZGVvSWNvbiwgaXNBY3RpdmUgPSBwcm9wcy5pc0FjdGl2ZSwgdmlzaWJsZSA9IHByb3BzLnZpc2libGU7XG4gICAgaWYgKHZpc2libGUpXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXJpZ2h0LWxheWVyLWhlYWRlclwiIH0sIGlzQWN0aXZlICYmIGRlbGV0ZUljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY2xhc3NOYW1lOiBkYXJrTW9kZSA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uRGVsZXRlLCBzaXplOiBcInNtYWxsXCIsIGNvbG9yRmlsbDogXCJ0cmFuc3BhcmVudFwiIH0pKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1yaWdodC1sYXllci1mb290ZXJcIiB9LCBpc0FjdGl2ZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBpbWFnZUljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzaWJpbGl0eSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvblNlZSwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICB2aWRlb0ljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUGxheUljb24sIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25XYXRjaCwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICBkb3dubG9hZEljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG93bmxvYWRGaWxlLCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uRG93bmxvYWQsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgaW5mb0ljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5mb0Rpc25leSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIG9uQ2xpY2s6IG9uT3BlbkluZm8sIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBzaXplOiBcIm1pY3JvXCIgfSkpKSkpKSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxudmFyIEZpbGVDYXJkSW5mb0xheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIFxuICAgIC8vdmFsaWQsXG4gICAgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBvbkNsb3NlSW5mbyA9IHByb3BzLm9uQ2xvc2VJbmZvLCBcbiAgICAvLyB1cGxvYWRTdGF0dXMsXG4gICAgbG9jYWxOYW1lID0gcHJvcHMubG9jYWxOYW1lLCBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZCwgbG9jYWxUeXBlID0gcHJvcHMubG9jYWxUeXBlO1xuICAgIHZhciBGaWxlSXRlbUxvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICB2YXIgX2EgPSBGaWxlSXRlbUxvY2FsaXplci5mdWxsSW5mb0xheWVyLCBuYW1lTGFiZWwgPSBfYS5uYW1lLCBzaXplTGFiZWwgPSBfYS5zaXplLCB0eXBlTGFiZWwgPSBfYS50eXBlO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtZmlsZS1pbmZvXCIgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDYW5jZWwsIHsgc3R5bGU6IHsgbWFyZ2luOiAwLCByaWdodDogNSwgdG9wOiAwLCBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiIH0sIGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44KVwiLCBvbkNsaWNrOiBvbkNsb3NlSW5mbywgY29sb3JGaWxsOiBcImJsYWNrXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIG5hbWVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBsb2NhbE5hbWUpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCBzaXplTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgc2l6ZUZvcm1hdHRlZCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIHR5cGVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBsb2NhbFR5cGUpKSk7XG59O1xuXG52YXIgQWJvcnRlZFN0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHNpemUgPSBwcm9wcy5zaXplO1xuICAgIHZhciBGaWxlSXRlbVN0YXR1c0xvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5zdGF0dXM7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERvRGlzdHVyYiwgeyBjb2xvcjogXCIjZjQ0MzM2XCIsIHNpemU6IHNpemUgfHwgNjUgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsXG4gICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLmFib3J0ZWQpKSk7XG59O1xuXG52YXIgRW1wdHlTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0O1xuICAgIHZhciBmaW5hbEhlaWdodCA9ICFoZWlnaHRcbiAgICAgICAgPyBcIjEzMnB4XCJcbiAgICAgICAgOiB0eXBlb2YgaGVpZ2h0ID09PSBcIm51bWJlclwiXG4gICAgICAgICAgICA/IFwiXCIuY29uY2F0KGhlaWdodCwgXCJweFwiKVxuICAgICAgICAgICAgOiBoZWlnaHQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHsgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IGZpbmFsSGVpZ2h0IH0gfSkpKTtcbn07XG5cbnZhciBFcnJvclN0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHNpemUgPSBwcm9wcy5zaXplO1xuICAgIHZhciBGaWxlSXRlbVN0YXR1c0xvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5zdGF0dXM7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC40KVwiLCBzdHlsZToge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJyZ2JhKDI0NCwgNjcsIDU0LCAwLjgpXCIsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxuICAgICAgICAgICAgfSwgc2l6ZTogc2l6ZSB8fCA2NSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCxcbiAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuZXJyb3IpKSk7XG59O1xuXG52YXIgUHJlcGFyaW5nU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9uQ2FuY2VsID0gcHJvcHMub25DYW5jZWwsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5maW5pdGVMb2FkZXIsIHsgb25DbGljazogb25DYW5jZWwsIHNpemU6IHNpemUgfHwgNjUgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnByZXBhcmluZykpKTtcbn07XG5cbnZhciBTdWNjZXNzU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tDaXJjbGUsIHsgY29sb3I6IFwiIzRjYWY1MFwiLCBzaXplOiBzaXplIHx8IDY1IH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLFxuICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5zdWNjZXNzKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwidGV4dC5maWxlcy11aS10ZXh0LWR5bmFtaWMtbG9hZGVyIHtcXG4gIHRleHQtYW5jaG9yOiBtaWRkbGU7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIGZpbGw6IGFsaWNlYmx1ZTtcXG59XCIpO1xuXG52YXIgRHluYW1pY0xvYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgLy9vbkNsaWNrLFxuICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsIFxuICAgIC8vY2xhc3NOYW1lLFxuICAgIHBlcmNlbnRhZ2UgPSBwcm9wcy5wZXJjZW50YWdlLCBoaWRlUGVybmNlbnRhZ2UgPSBwcm9wcy5oaWRlUGVybmNlbnRhZ2UsIHJhZGl1cyA9IHByb3BzLnJhZGl1cywgeCA9IHByb3BzLngsIHkgPSBwcm9wcy55LCB3aWR0aCA9IHByb3BzLndpZHRoLCBvbkNsaWNrID0gcHJvcHMub25DbGljaztcbiAgICAvL2NvbnNvbGUudGFibGUocHJvcHMpO1xuICAgIC8vLy9jb25zb2xlLmxvZyhcInBlcmNlbnRhZ2VcIiwgcGVyY2VudGFnZSk7XG4gICAgdmFyIGZpbmFsUmFkaXVzID0gcmFkaXVzIHx8IDI4O1xuICAgIHZhciBmaW5hbFggPSB4IHx8IDMwO1xuICAgIHZhciBmaW5hbFkgPSB5IHx8IDMwO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgdmFyIGNpcmNsZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBmdW5jdGlvbiBzZXRQcm9ncmVzcyhwZXJjZW50LCBteUNpcmNsZSwgY2lyY3VtZmVyZW5jZSkge1xuICAgICAgICBteUNpcmNsZS5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gXCJcIi5jb25jYXQoY2lyY3VtZmVyZW5jZSAqICgxIC0gcGVyY2VudCAvIDEwMCkpO1xuICAgICAgICAvL215Q2lyY2xlLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBgMGA7XG4gICAgICAgIC8qIGxldCBwY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInBjdFwiKTtcbiAgICAgICAgcGN0LmlubmVySFRNTCA9IHBlcmNlbnQudG9GaXhlZCgwKSArIFwiJVwiOyAqL1xuICAgIH1cbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbXlDaXJjbGUgPSBjaXJjbGVSZWYuY3VycmVudDtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInBlcmNlbnRhZ2UgdXNlRWZmZWN0XCIsIHBlcmNlbnRhZ2UpO1xuICAgICAgICBpZiAobXlDaXJjbGUgIT09IG51bGwgJiZcbiAgICAgICAgICAgIG15Q2lyY2xlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHBlcmNlbnRhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFyIGNpcmN1bWZlcmVuY2UgPSAyICogTWF0aC5QSSAqIG15Q2lyY2xlLnIuYmFzZVZhbC52YWx1ZTtcbiAgICAgICAgICAgIG15Q2lyY2xlLnN0eWxlLnN0cm9rZURhc2hhcnJheSA9IFwiXCIuY29uY2F0KGNpcmN1bWZlcmVuY2UsIFwiIDEwMDBcIik7XG4gICAgICAgICAgICBzZXRQcm9ncmVzcyhwZXJjZW50YWdlID49IDEwMCA/IDEwMCA6IHBlcmNlbnRhZ2UsIG15Q2lyY2xlLCBjaXJjdW1mZXJlbmNlKTtcbiAgICAgICAgfVxuICAgIH0sIFtwZXJjZW50YWdlXSk7XG4gICAgaWYgKHBlcmNlbnRhZ2UgIT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KExvYWRlckNvbnRhaW5lciwgeyBzaXplOiBzaXplIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IFwiZHVpX3N2Z19jaXJjbGVfbG9hZGVyXCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHhtbG5zWGxpbms6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgc3R5bGU6IGZpbmFsU3R5bGUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImNpcmNsZVwiLCB7IHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBcInJvdGF0ZSgtOTBkZWcpXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgc3Ryb2tlOiBjb2xvciB8fCBcIiMxNGZmMDBcIiwgY3g6IFwiXCIuY29uY2F0KGZpbmFsWCksIGN5OiBcIlwiLmNvbmNhdChmaW5hbFkpLCByOiBcIlwiLmNvbmNhdChmaW5hbFJhZGl1cyksIHN0cm9rZVdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCB8fCA4LCBcInB4XCIpLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2xhc3NOYW1lPVwiY2lyY2xlX2xvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJjaXJjbGVcIiwgcmVmOiBjaXJjbGVSZWYsIGZpbGw6IFwibm9uZVwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAhaGlkZVBlcm5jZW50YWdlICYmIHBlcmNlbnRhZ2UgIT09IHVuZGVmaW5lZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInRleHRcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktdGV4dC1keW5hbWljLWxvYWRlclwiLCB4OiBcIlwiLmNvbmNhdChmaW5hbFgpLCB5OiBcIlwiLmNvbmNhdCgoZmluYWxYICogNykgLyA2KSB9LCBcIlwiLmNvbmNhdChwZXJjZW50YWdlLnRvRml4ZWQoMCksIFwiICVcIikpKSksXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICB9IH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjc1KVwiLCBzaXplOiA0NSwgb25DbGljazogb25DbGljayB9KSkpKSkpO1xuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG4gICAgfVxufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmxkcy1jb2xvcmJhciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxufVxcbi5sZHMtY29sb3JiYXIgLmZpbGVzLXVpLXRleHQtZGVmYXVsdC1sb2FkZXIge1xcbiAgZm9udC1zaXplOiAxLjVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgdGV4dC1hbmNob3I6IG1pZGRsZTtcXG59XCIpO1xuXG52YXIgVXBsb2FkaW5nU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemUsIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBwcm9ncmVzcyA9IHByb3BzLnByb2dyZXNzO1xuICAgIHZhciBGaWxlSXRlbVN0YXR1c0xvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5zdGF0dXM7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBwcm9ncmVzcyAhPT0gdW5kZWZpbmVkID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHluYW1pY0xvYWRlciwgeyBzaXplOiA3MCwgeDogMzUsIHk6IDM1LCByYWRpdXM6IDMyLCBwZXJjZW50YWdlOiBwcm9ncmVzcywgd2lkdGg6IDYsIGhpZGVQZXJuY2VudGFnZTogcHJvZ3Jlc3MgPT09IHVuZGVmaW5lZCB8fCBvbkFib3J0ICE9PSB1bmRlZmluZWQsIG9uQ2xpY2s6IG9uQWJvcnQgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5maW5pdGVMb2FkZXIsIHsgb25DbGljazogb25BYm9ydCwgc2l6ZTogc2l6ZSB8fCA3MCB9KSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsXG4gICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnVwbG9hZGluZykpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1maWxlLWNhcmQtdXBsb2FkLWxheWVyIHtcXG4gIHdpZHRoOiAxMDBweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgZm9udC1zaXplOiAxZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QtY2FyZCB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMS41cyBlYXNlO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdC1jYXJkIC5lbGV2YXRpb24taXRlbS1jYXJkIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0LWNhcmQgLmVsZXZhdGlvbi1pdGVtLWNhcmQgc3BhbiB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7IC8qIG51bWJlciBvZiBsaW5lcyB0byBzaG93ICovXFxuICBsaW5lLWNsYW1wOiAyO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG59XCIpO1xuXG52YXIgRmlsZUNhcmRVcGxvYWRMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIG9uQ2FuY2VsID0gcHJvcHMub25DYW5jZWwsIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBwcm9ncmVzcyA9IHByb3BzLnByb2dyZXNzLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb247XG4gICAgdmFyIGVsZXZhdGlvbkNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgbGlzdENvbnRhaW5lclN0b3J5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFt1bmRlZmluZWRdKSwgc3RhdHVzSGlzdG9yeSA9IF9hWzBdLCBzZXRTdGF0dXNIaXN0b3J5ID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0U3RhdHVzSGlzdG9yeShmdW5jdGlvbiAoc3RhdHVzSGlzdG9yeSkge1xuICAgICAgICAgICAgaWYgKHN0YXR1c0hpc3Rvcnlbc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxXSA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHVwbG9hZFN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wU3RhdHVzSGlzdG9yeSA9IF9fc3ByZWFkQXJyYXkkMShbXSwgc3RhdHVzSGlzdG9yeSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGVtcFN0YXR1c0hpc3Rvcnlbc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxXSA9IHVwbG9hZFN0YXR1cztcbiAgICAgICAgICAgICAgICAvL3JlcGxhY2VcbiAgICAgICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheSQxKFtdLCB0ZW1wU3RhdHVzSGlzdG9yeSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheSQxKF9fc3ByZWFkQXJyYXkkMShbXSwgc3RhdHVzSGlzdG9yeSwgdHJ1ZSksIFt1cGxvYWRTdGF0dXNdLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0sIFt1cGxvYWRTdGF0dXNdKTtcbiAgICB2YXIgZWxldmF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGV2YXRpb25Db250YWluZXIgPSBlbGV2YXRpb25Db250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGV2YXRpb25MaXN0ID0gbGlzdENvbnRhaW5lclN0b3J5UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxldmF0aW9uQ29udGFpbmVyID09PSBudWxsIHx8IGN1cnJlbnRFbGV2YXRpb25MaXN0ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdXJyZW50RWxldmF0aW9uTGlzdC5zdHlsZS50b3AgPVxuICAgICAgICAgICAgMCAtIChzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDEpICogMTAwICsgXCJweFwiO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHN0YXR1c0hpc3RvcnkubGVuZ3RoID4gMSlcbiAgICAgICAgICAgIGVsZXZhdGUoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3N0YXR1c0hpc3RvcnkubGVuZ3RoXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1sYXllci1jb250YWluZXJcIiwgcmVmOiBlbGV2YXRpb25Db250YWluZXJSZWYgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24tbGlzdC1jYXJkXCIsIHJlZjogbGlzdENvbnRhaW5lclN0b3J5UmVmIH0sIHN0YXR1c0hpc3RvcnkubWFwKGZ1bmN0aW9uIChzdGF0dXMsIGluZGV4KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJwcmVwYXJpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJlcGFyaW5nU3RhdHVzLCB7IG9uQ2FuY2VsOiBvbkNhbmNlbCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwidXBsb2FkaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZGluZ1N0YXR1cywgeyBvbkFib3J0OiBvbkFib3J0LCBwcm9ncmVzczogcHJvZ3Jlc3MsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEVycm9yU3RhdHVzLCB7IHNpemU6IDYwLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN1Y2Nlc3NTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYWJvcnRlZFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBYm9ydGVkU3RhdHVzLCB7IGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1wdHlTdGF0dXMsIG51bGwpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLXRvb2x0aXAge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcDpob3ZlciB7XFxuICB6LWluZGV4OiAyO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcDpob3ZlciAuZmlsZXMtdWktdG9vbHRpcHRleHQge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB6LWluZGV4OiAyO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkOmhvdmVyIHtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQ6aG92ZXIgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgei1pbmRleDogMjtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDAuOHJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICB3aWR0aDogMjAwcHg7XFxuICBjb2xvcjogI2ZmZjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAyO1xcbiAgbGVmdDogY2FsYyg1MCUgLSAxMDBweCk7XFxuICBsZWZ0OiAwO1xcbiAgbWFyZ2luLXRvcDogNXB4O1xcbiAgdG9wOiAxMDAlO1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0Lm5vdC12YWxpZC1lcnJvciB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjYzYyODI4LCAjZDMyZjJmKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQubm90LXZhbGlkLWVycm9yOjphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNkMzJmMmYgdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0LnN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgIzFiNWUyMCwgIzJlN2QzMik7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0LnN1Y2Nlc3M6OmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzJlN2QzMiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQ6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAxMDAlO1xcbiAgbGVmdDogNTAlO1xcbiAgbWFyZ2luLWxlZnQ6IC01cHg7XFxuICBib3JkZXItd2lkdGg6IDVweDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxufVxcbi5maWxlcy11aS10b29sdGlwIC5maWxlcy11aS10b29sdGlwdGV4dCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHdpZHRoOiAxMzJweDtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDI7XFxuICBsZWZ0OiAwO1xcbiAgb3BhY2l0eTogMDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMXM7XFxufVxcbi5maWxlcy11aS10b29sdGlwIC5maWxlcy11aS10b29sdGlwdGV4dC5ub3QtdmFsaWQtZXJyb3Ige1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI2M2MjgyOCwgI2QzMmYyZik7XFxufVxcbi5maWxlcy11aS10b29sdGlwIC5maWxlcy11aS10b29sdGlwdGV4dC5ub3QtdmFsaWQtZXJyb3I6OmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2QzMmYyZiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0LnN1Y2Nlc3Mge1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgIzFiNWUyMCwgIzJlN2QzMik7XFxufVxcbi5maWxlcy11aS10b29sdGlwIC5maWxlcy11aS10b29sdGlwdGV4dC5zdWNjZXNzOjphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMyZTdkMzIgdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS10b29sdGlwIC5maWxlcy11aS10b29sdGlwdGV4dDo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDEwMCU7XFxuICBsZWZ0OiA1MCU7XFxuICBtYXJnaW4tbGVmdDogLTVweDtcXG4gIGJvcmRlci13aWR0aDogNXB4O1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG59XCIpO1xuXG52YXIgVG9vbHRpcCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBcbiAgICAvL21lc3NhZ2UsXG4gICAgLy9zdHlsZSxcbiAgICAvL2NoaWxkcmVuLFxuICAgIC8vY29sb3IsXG4gICAgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCB2YWxpZCA9IHByb3BzLnZhbGlkLCBlcnJvcnMgPSBwcm9wcy5lcnJvcnMsIFxuICAgIC8vY2xhc3NOYW1lLFxuICAgIHVwbG9hZE1lc3NhZ2UgPSBwcm9wcy51cGxvYWRNZXNzYWdlLCBvcGVuID0gcHJvcHMub3BlbjtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBzdGF0dXNDbGFzc05hbWUgPSBfYVswXSwgc2V0U2F0dXNDbGFzc05hbWUgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBtZXNzYWdlID0gX2JbMF0sIHNldE1lc3NhZ2UgPSBfYlsxXTtcbiAgICB2YXIgaGFuZGxlQ2hhbmdlU3RhdHVzID0gZnVuY3Rpb24gKHVwbG9hZFN0YXR1cywgdmFsaWQpIHtcbiAgICAgICAgLy9oaWdoZXIgcHJpb3JpdHlcbiAgICAgICAgaWYgKHVwbG9hZFN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRNZXNzYWdlKHVwbG9hZE1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKHVwbG9hZFN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgICAgICAgICBzZXRTYXR1c0NsYXNzTmFtZShcInN1Y2Nlc3NcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTYXR1c0NsYXNzTmFtZShcIm5vdC12YWxpZC1lcnJvclwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWxpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTYXR1c0NsYXNzTmFtZShcIm5vdC12YWxpZC1lcnJvclwiKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0TWVzc2FnZShlcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JzLnJlZHVjZShmdW5jdGlvbiAoYWN1bSwgY3Vycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdW0gKz0gXCJcIi5jb25jYXQoY3VyciwgXCIuIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN1bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaGFuZGxlQ2hhbmdlU3RhdHVzKHVwbG9hZFN0YXR1cywgdmFsaWQpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbdXBsb2FkU3RhdHVzLCB2YWxpZF0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgb3BlbiAmJiBtZXNzYWdlICYmIHN0YXR1c0NsYXNzTmFtZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktdG9vbHRpcHRleHQgXCIuY29uY2F0KHN0YXR1c0NsYXNzTmFtZSkgfSwgbWVzc2FnZSkpKSk7XG59O1xuXG52YXIgRG93bmxvYWRIaWRkZW4gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgZG93bmxvYWRVcmwgPSBwcm9wcy5kb3dubG9hZFVybCwgYW5jaG9yUmVmID0gcHJvcHMuYW5jaG9yUmVmLCBmaWxlTmFtZSA9IHByb3BzLmZpbGVOYW1lO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2dCkge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIGlmIChkb3dubG9hZFVybClcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCB7IHJlZjogYW5jaG9yUmVmLCB0YXJnZXQ6IFwiX2JsYW5rXCIsIGhyZWY6IGRvd25sb2FkVXJsLCBkb3dubG9hZDogZmlsZU5hbWUsIGhpZGRlbjogdHJ1ZSwgcmVsOiBcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiwgb25DbGljazogaGFuZGxlQ2xpY2sgfSwgXCJkb3dubG9hZF9maWxlXCIpKTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMzJweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplOiAxNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIge1xcbiAgd2lkdGg6IDEzMnB4O1xcbiAgaGVpZ2h0OiAxMzJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbWFnZS1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyIGltZyB7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXIuYmx1ciBpbWcge1xcbiAgZmlsdGVyOiBibHVyKDRweCk7XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMjAwJTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciAuZmlsZS1tb3NhaWMtbWFpbi1sYXllci1oZWFkZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXIgLmZpbGUtbW9zYWljLW1haW4tbGF5ZXItZm9vdGVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXIgLmZpbGUtbW9zYWljLW1haW4tbGF5ZXItZm9vdGVyIC5maWxlLW1vc2FpYy1mb290ZXItcmlnaHQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgZmxleC1ncm93OiAxO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciAuZmlsZS1tb3NhaWMtbWFpbi1sYXllci1mb290ZXIgLmZpbGUtbW9zYWljLWZvb3Rlci1sZWZ0IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIHNjcm9sbGJhci13aWR0aDogdGhpbjtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wMjg1N2VtO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIHdpZHRoOiBpbmhlcml0O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg1KTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZSAwcztcXG4gIG92ZXJmbG93OiBhdXRvO1xcbiAgY29sb3I6IHdoaXRlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyOjotd2Via2l0LXNjcm9sbGJhciB7XFxuICB3aWR0aDogOXB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDAsIDEwOCwgMTI3LCAwLjY2Mjc0NTA5OCk7XFxuICBib3JkZXItcmFkaXVzOiAyMHB4O1xcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllci1oZWFkZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXIgLmhlYWRpbmcge1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIHBhZGRpbmc6IDAgNXB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyIC5sYWJlbCB7XFxuICBwYWRkaW5nOiAwIDVweDtcXG4gIGZvbnQtd2VpZ2h0OiAzOTk7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtZmlsZS1uYW1lIHtcXG4gIG1hcmdpbi10b3A6IDFweDtcXG4gIGhlaWdodDogMzFweDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgY29sb3I6IGJsYWNrO1xcbiAgZm9udC1zaXplOiAwLjk1ZW07XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbGluZS1oZWlnaHQ6IDE1cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDdyZW07XFxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjsgLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgKi9cXG4gIGxpbmUtY2xhbXA6IDI7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLyogIGRpc3BsYXk6IGZsZXg7XFxuICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgKi9cXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1maWxlLW5hbWUuZGFyay1tb2RlIHtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lci5jbGlja2FibGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4vKiAuZmlsZXMtdWktZmlsZS1pY29uIHtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgbWluLXdpZHRoOiAxOXB4O1xcbiAgbWluLWhlaWdodDogMTlweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuNjUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgJjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC44NSk7XFxuICB9XFxuICAmLmRhcmstbW9kZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC42NSk7XFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC44NSk7XFxuICAgIH1cXG4gIH1cXG59XFxuICovXCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktbGF5ZXItY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XCIpO1xuXG52YXIgTGF5ZXJDb250YWluZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShjbGFzc05hbWUgfHwgXCJcIiwgXCJmaWxlcy11aS1sYXllci1jb250YWluZXJcIik7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IHN0eWxlIH0sIGNoaWxkcmVuKSk7XG59O1xuXG52YXIgRmlsZU1vc2FpY05hbWUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgZmlsZU5hbWUgPSBwcm9wcy5maWxlTmFtZTtcbiAgICBpZiAoZmlsZU5hbWUpXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBmaWxlTmFtZSk7XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICB9XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZmlsZS1tb3NhaWMtdXBsb2FkLWxheWVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgZm9udC1zaXplOiAxZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdCB7XFxuICB0cmFuc2l0aW9uOiBhbGwgMS41cyBlYXNlO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0IC5lbGV2YXRpb24taXRlbSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTMycHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHBhZGRpbmc6IDAgMTBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0IC5lbGV2YXRpb24taXRlbSBzcGFuIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjsgLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgKi9cXG4gIGxpbmUtY2xhbXA6IDI7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbn1cIik7XG5cbnZhciBGaWxlTW9zYWljVXBsb2FkTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLCBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgcHJvZ3Jlc3MgPSBwcm9wcy5wcm9ncmVzcywgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uO1xuICAgIC8vY29uc29sZS5sb2coXCJGaWxlTW9zYWljVXBsb2FkTGF5ZXIgQ0hBTkdFIHByb2dyZXNzXCIsIHByb2dyZXNzLCB1cGxvYWRTdGF0dXMpO1xuICAgIHZhciBlbGV2YXRpb25Db250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGxpc3RDb250YWluZXJTdG9yeVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShbdW5kZWZpbmVkXSksIHN0YXR1c0hpc3RvcnkgPSBfYVswXSwgc2V0U3RhdHVzSGlzdG9yeSA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFN0YXR1c0hpc3RvcnkoZnVuY3Rpb24gKHN0YXR1c0hpc3RvcnkpIHtcbiAgICAgICAgICAgIGlmIChzdGF0dXNIaXN0b3J5W3N0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMV0gPT09IFwicHJlcGFyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICB1cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGVtcFN0YXR1c0hpc3RvcnkgPSBfX3NwcmVhZEFycmF5JDEoW10sIHN0YXR1c0hpc3RvcnksIHRydWUpO1xuICAgICAgICAgICAgICAgIHRlbXBTdGF0dXNIaXN0b3J5W3N0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMV0gPSB1cGxvYWRTdGF0dXM7XG4gICAgICAgICAgICAgICAgLy9yZXBsYWNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkkMShbXSwgdGVtcFN0YXR1c0hpc3RvcnksIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkkMShfX3NwcmVhZEFycmF5JDEoW10sIHN0YXR1c0hpc3RvcnksIHRydWUpLCBbdXBsb2FkU3RhdHVzXSwgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9LCBbdXBsb2FkU3RhdHVzXSk7XG4gICAgdmFyIGVsZXZhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50RWxldmF0aW9uQ29udGFpbmVyID0gZWxldmF0aW9uQ29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHZhciBjdXJyZW50RWxldmF0aW9uTGlzdCA9IGxpc3RDb250YWluZXJTdG9yeVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoY3VycmVudEVsZXZhdGlvbkNvbnRhaW5lciA9PT0gbnVsbCB8fCBjdXJyZW50RWxldmF0aW9uTGlzdCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY3VycmVudEVsZXZhdGlvbkxpc3Quc3R5bGUudG9wID1cbiAgICAgICAgICAgIDAgLSAoc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxKSAqIDEzMiArIFwicHhcIjtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChzdGF0dXNIaXN0b3J5Lmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBlbGV2YXRlKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtzdGF0dXNIaXN0b3J5Lmxlbmd0aF0pO1xuICAgIC8vZGVmYXVsdCBwaGFzZVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24tbGF5ZXItY29udGFpbmVyXCIsIHJlZjogZWxldmF0aW9uQ29udGFpbmVyUmVmIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWxpc3RcIiwgcmVmOiBsaXN0Q29udGFpbmVyU3RvcnlSZWYgfSwgc3RhdHVzSGlzdG9yeS5tYXAoZnVuY3Rpb24gKHN0YXR1cywgaW5kZXgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInByZXBhcmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJlcGFyaW5nU3RhdHVzLCB7IG9uQ2FuY2VsOiBvbkNhbmNlbCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwidXBsb2FkaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWRpbmdTdGF0dXMsIHsgb25BYm9ydDogb25BYm9ydCwgcHJvZ3Jlc3M6IHByb2dyZXNzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXJyb3JTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3VjY2Vzc1N0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJhYm9ydGVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChBYm9ydGVkU3RhdHVzLCB7IGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEVtcHR5U3RhdHVzLCBudWxsKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSkpKTtcbn07XG5cbnZhciBGaWxlTW9zYWljSW1hZ2VMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIC8vLy9jb25zb2xlLmxvZyhcIkZpbGVNb3NhaWNJbWFnZUxheWVyXCIsIHByb3BzKTtcbiAgICB2YXIgaW1hZ2VTb3VyY2UgPSBwcm9wcy5pbWFnZVNvdXJjZSwgdXJsID0gcHJvcHMudXJsLCBmaWxlTmFtZSA9IHByb3BzLmZpbGVOYW1lLCBjYXJkID0gcHJvcHMuY2FyZCwgaXNCbHVyID0gcHJvcHMuaXNCbHVyLCBzbWFydEltZ0ZpdCA9IHByb3BzLnNtYXJ0SW1nRml0O1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGxvY2FsU291cmNlID0gX2FbMF0sIHNldExvY2FsU291cmNlID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBlcnJvciA9IF9iWzBdLCBzZXRFcnJvciA9IF9iWzFdO1xuICAgIC8vYXNzaWduIHRvIGxvY2FsU291cmNlIHRoZSBpbWFnZVNvdXJjZSBvciB0aGUgdXJsIG9mIHRoZSBpbGUgdHlwZVxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldExvY2FsU291cmNlKGltYWdlU291cmNlIHx8IHVybCk7XG4gICAgfSwgW2ltYWdlU291cmNlLCB1cmxdKTtcbiAgICAvKipcbiAgICAgKiBXaGVuIGFuIGVycm9yIG9jY3VycyB3aGVuIHNldHRpbmcgdGhlIHNvdXJjZSwgdGhlIHVybCB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICAgKiBUaGUgdXJsIGFsd2F5cyBpcyBhIHZhbGlkIGltYWdlIHVybFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSk7XG4gICAgICAgIHNldExvY2FsU291cmNlKHVybCk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJGaWxlTW9zYWljSW1hZ2VMYXllciBlcnJvclwiLCB1cmwpO1xuICAgIH07XG4gICAgLy9JZiBibHVyIGlzIHRydWVcbiAgICBpZiAoaXNCbHVyKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgIWNhcmQgJiYgIWVycm9yICYmIGltYWdlU291cmNlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlUHJldmlldywgeyBzcmM6IGxvY2FsU291cmNlLCBhbHQ6IFwiYmx1ciBcIi5jb25jYXQoZmlsZU5hbWUpLCBzbWFydEltZ0ZpdDogZmFsc2UgfSkpKSk7XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbWFnZVByZXZpZXcsIHsgb25FcnJvcjogaGFuZGxlRXJyb3IsIHNyYzogbG9jYWxTb3VyY2UsIHN0eWxlOiB7IGJvcmRlclJhZGl1czogXCIwcHhcIiB9LCBhbHQ6IFwicHJldmlldyBcIi5jb25jYXQoZmlsZU5hbWUpLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXNpemU6IDAuOHJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIHBhZGRpbmc6IDAuNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWVycm9yIHtcXG4gIGNvbG9yOiAjZjQ0MzM2O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtb2sge1xcbiAgY29sb3I6ICM1YzdhMWY7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBjb2xvcjogIzhiNmIxMDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nLnBlcmNlbnRhZ2Uge1xcbiAgcGFkZGluZzogN3B4IDRweCAycHggNXB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtbG9hZGluZyAuYWJvcnQtYnV0dG9uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAtMnB4O1xcbiAgdG9wOiAtMnB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtbG9hZGluZyAudXBsb2FkaW5nLXRleHQudXAge1xcbiAgbWFyZ2luLWJvdHRvbTogLTIycHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC51cGxvYWRpbmctdGV4dC5kb3duIHtcXG4gIG1hcmdpbi10b3A6IC0yMHB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtbG9hZGluZyAudXBsb2FkaW5nLXRleHQgcC5wZXJjZW50YWdlIHtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVwiKTtcblxudmFyIEZpbGVNb3NhaWNTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdmFsaWQgPSBwcm9wcy52YWxpZCwgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHN0eWxlID0gcHJvcHMuc3R5bGU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICBpZiAodXBsb2FkU3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIgZmlsZS1zdGF0dXMtb2tcIiwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENsb3VkRG9uZSwgeyBjb2xvcjogXCIjNGNhZjUwXCIsIHNpemU6IFwic21hbGxcIiwgY2xhc3NOYW1lOiBcInN0YXR1cy1pY29uXCIgfSksXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5zdWNjZXNzKSk7XG4gICAgfVxuICAgIGlmICh1cGxvYWRTdGF0dXMgPT09IFwiZXJyb3JcIiB8fCB1cGxvYWRTdGF0dXMgPT09IFwiYWJvcnRlZFwiKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciBmaWxlLXN0YXR1cy1lcnJvclwiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVXBsb2FkRXJyb3IsIHsgY29sb3I6IFwiI2Y0NDMzNlwiLCBzaXplOiBcInNlbWktbWVkaXVtXCIsIGNsYXNzTmFtZTogXCJzdGF0dXMtaWNvblwiIH0pLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuZXJyb3IpKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkICE9PSB1bmRlZmluZWQgJiYgdmFsaWQgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIgZmlsZS1zdGF0dXMtb2tcIiwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja0NpcmNsZSwgeyBjb2xvcjogXCIjNGNhZjUwXCIsIHNpemU6IFwic21hbGxcIiwgY2xhc3NOYW1lOiBcInN0YXR1cy1pY29uXCIgfSksXG4gICAgICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIudmFsaWQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciBmaWxlLXN0YXR1cy1lcnJvclwiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERvRGlzdHVyYiwgeyBjb2xvcjogXCIjZjQ0MzM2XCIsIHNpemU6IFwic21hbGxcIiwgY2xhc3NOYW1lOiBcInN0YXR1cy1pY29uXCIgfSksXG4gICAgICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuZGVuaWVkKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxudmFyIEZpbGVNb3NhaWNJbmZvTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdmFsaWQgPSBwcm9wcy52YWxpZCwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBvbkNsb3NlSW5mbyA9IHByb3BzLm9uQ2xvc2VJbmZvLCB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIGxvY2FsTmFtZSA9IHByb3BzLmxvY2FsTmFtZSwgc2l6ZUZvcm1hdHRlZCA9IHByb3BzLnNpemVGb3JtYXR0ZWQsIGxvY2FsVHlwZSA9IHByb3BzLmxvY2FsVHlwZTtcbiAgICB2YXIgRmlsZUl0ZW1Mb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgdmFyIF9hID0gRmlsZUl0ZW1Mb2NhbGl6ZXIuZnVsbEluZm9MYXllciwgbmFtZUxhYmVsID0gX2EubmFtZSwgc2l6ZUxhYmVsID0gX2Euc2l6ZSwgdHlwZUxhYmVsID0gX2EudHlwZTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllci1oZWFkZXJcIiB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDYW5jZWxcbiAgICAgICAgICAgIC8vc3R5bGU9e3sgbWFyZ2luOiAwLCByaWdodDogMCwgdG9wOiAwIH19XG4gICAgICAgICAgICAsIHsgXG4gICAgICAgICAgICAgICAgLy9zdHlsZT17eyBtYXJnaW46IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgICAgICAgICBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIiwgb25DbGljazogb25DbG9zZUluZm8sIGNvbG9yRmlsbDogXCJibGFja1wiIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljU3RhdHVzLCB7IHZhbGlkOiB2YWxpZCwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgbmFtZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIGxvY2FsTmFtZSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIHNpemVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBzaXplRm9ybWF0dGVkKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgdHlwZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIGxvY2FsVHlwZSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlc3VpLWZpbGUtaXRlbS1zaXplIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBmb250LXNpemU6IDAuN3JlbTtcXG4gIGJvcmRlcjogMC41cHggc29saWQgd2hlYXQ7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg5KTtcXG4gIHBhZGRpbmc6IDJweCAxLjVweDtcXG4gIGJvcmRlci1yYWRpdXM6IDdweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC43NSk7XFxuICBtaW4td2lkdGg6IDQ1cHg7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxufVxcbi5maWxlc3VpLWZpbGUtaXRlbS1zaXplOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC44NSk7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk3KTtcXG59XCIpO1xuXG52YXIgRmlsZU1vc2FpY1NpemUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZUZvcm1hdHRlZCA9IHByb3BzLnNpemVGb3JtYXR0ZWQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBzaXplRm9ybWF0dGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzdWktZmlsZS1pdGVtLXNpemVcIiB9LCBzaXplRm9ybWF0dGVkKSkpKTtcbn07XG5cbnZhciBGaWxlTW9zYWljTWFpbkxheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGRhcmtNb2RlID0gcHJvcHMuZGFya01vZGUsIGRlbGV0ZUljb24gPSBwcm9wcy5kZWxldGVJY29uLCBkb3dubG9hZEljb24gPSBwcm9wcy5kb3dubG9hZEljb24sIGltYWdlSWNvbiA9IHByb3BzLmltYWdlSWNvbiwgaW5mb0ljb24gPSBwcm9wcy5pbmZvSWNvbiwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25Eb3dubG9hZCA9IHByb3BzLm9uRG93bmxvYWQsIG9uT3BlbkluZm8gPSBwcm9wcy5vbk9wZW5JbmZvLCBvblNlZSA9IHByb3BzLm9uU2VlLCBvbldhdGNoID0gcHJvcHMub25XYXRjaCwgc2l6ZUZvcm1hdHRlZCA9IHByb3BzLnNpemVGb3JtYXR0ZWQsIHZhbGlkID0gcHJvcHMudmFsaWQsIHZpZGVvSWNvbiA9IHByb3BzLnZpZGVvSWNvbiwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIGlzQWN0aXZlID0gcHJvcHMuaXNBY3RpdmU7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtbW9zYWljLW1haW4tbGF5ZXItaGVhZGVyXCIgfSwgaXNBY3RpdmUgJiYgZGVsZXRlSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjbGFzc05hbWU6IGRhcmtNb2RlID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCIgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25EZWxldGUsIHNpemU6IFwic21hbGxcIiwgY29sb3JGaWxsOiBcInRyYW5zcGFyZW50XCIgfSkpKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLW1vc2FpYy1tYWluLWxheWVyLWZvb3RlclwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtbW9zYWljLWZvb3Rlci1sZWZ0XCIgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNTdGF0dXMsIHsgdmFsaWQ6IHZhbGlkLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSksXG4gICAgICAgICAgICAgICAgaXNBY3RpdmUgJiYgc2l6ZUZvcm1hdHRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljU2l6ZSwgeyBzaXplRm9ybWF0dGVkOiBzaXplRm9ybWF0dGVkIH0pKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtbW9zYWljLWZvb3Rlci1yaWdodFwiIH0sIGlzQWN0aXZlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIGltYWdlSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXNpYmlsaXR5LCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uU2VlLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIHZpZGVvSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChQbGF5SWNvbiwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbldhdGNoLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIGRvd25sb2FkSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEb3dubG9hZEZpbGUsIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25Eb3dubG9hZCwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICBpbmZvSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmZvRGlzbmV5LCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgb25DbGljazogb25PcGVuSW5mbywgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIHNpemU6IFwibWljcm9cIiB9KSkpKSkpKSk7XG59O1xuXG52YXIgRmlsZU1vc2FpYyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGZpbGUgPSBwcm9wcy5maWxlLCBwcm9wTmFtZSA9IHByb3BzLm5hbWUsIHByb3BTaXplID0gcHJvcHMuc2l6ZSwgcHJvcFR5cGUgPSBwcm9wcy50eXBlLCBpZCA9IHByb3BzLmlkLCB2YWxpZCA9IHByb3BzLnZhbGlkLCBlcnJvcnMgPSBwcm9wcy5lcnJvcnMsIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgdXBsb2FkTWVzc2FnZSA9IHByb3BzLnVwbG9hZE1lc3NhZ2UsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3MsIHhociA9IHByb3BzLnhociwgbG9jUHJvcHMgPSBwcm9wcy5sb2NhbGl6YXRpb24sIHByZXZpZXcgPSBwcm9wcy5wcmV2aWV3LCBpbWFnZVVybCA9IHByb3BzLmltYWdlVXJsLCB2aWRlb1VybCA9IHByb3BzLnZpZGVvVXJsLCBpbmZvID0gcHJvcHMuaW5mbywgX2EgPSBwcm9wcy5iYWNrZ3JvdW5kQmx1ckltYWdlLCBiYWNrZ3JvdW5kQmx1ckltYWdlID0gX2EgPT09IHZvaWQgMCA/IHRydWUgOiBfYSwgZGFya01vZGVQcm9wID0gcHJvcHMuZGFya01vZGUsIF9iID0gcHJvcHMuYWx3YXlzQWN0aXZlLCBhbHdheXNBY3RpdmUgPSBfYiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9iLCBfYyA9IHByb3BzLnJlc3VsdE9uVG9vbHRpcCwgcmVzdWx0T25Ub29sdGlwID0gX2MgPT09IHZvaWQgMCA/IHRydWUgOiBfYywgZG93bmxvYWRVcmwgPSBwcm9wcy5kb3dubG9hZFVybCwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIG9uRG93bmxvYWQgPSBwcm9wcy5vbkRvd25sb2FkLCBvblNlZSA9IHByb3BzLm9uU2VlLCBvbldhdGNoID0gcHJvcHMub25XYXRjaCwgb25Eb3VibGVDbGljayA9IHByb3BzLm9uRG91YmxlQ2xpY2ssIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBvblJpZ2h0Q2xpY2sgPSBwcm9wcy5vblJpZ2h0Q2xpY2ssIF9kID0gcHJvcHMuc21hcnRJbWdGaXQsIHNtYXJ0SW1nRml0ID0gX2QgPT09IHZvaWQgMCA/IFwib3JpZW50YXRpb25cIiA6IF9kO1xuICAgIC8vY29udGV4dFxuICAgIHZhciBfZSA9IFJlYWN0LnVzZUNvbnRleHQoRmlsZXNVaUNvbnRleHQpLCBkYXJrTW9kZUNvbnRleHQgPSBfZS5kYXJrTW9kZSwgaWNvbnMgPSBfZS5pY29ucywgbG9jQ29udGV4dCA9IF9lLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gbG9jUHJvcHMgIT09IHVuZGVmaW5lZCA/IGxvY1Byb3BzIDogbG9jQ29udGV4dDtcbiAgICB2YXIgZGFya01vZGUgPSBkYXJrTW9kZVByb3AgIT09IHVuZGVmaW5lZCA/IGRhcmtNb2RlUHJvcCA6IGRhcmtNb2RlQ29udGV4dDtcbiAgICAvLy8vY29uc29sZS5sb2coXCJnbG9iYWxDb25maWdcIiwgZGFya01vZGUsIGljb25zKTtcbiAgICAvL2xvY2FsaXplcnNcbiAgICAvL3JlZiBmb3IgYW5jaG9yIGRvd25sb2FkIGVsZW1lbnRcbiAgICB2YXIgZG93bmxvYWRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYWRkQ2xhc3NOYW1lKGFkZENsYXNzTmFtZShcImZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIGZpbGVzLXVpLXRvb2x0aXBcIiwgY2xhc3NOYW1lKSwgb25DbGljayA/IFwiY2xpY2thYmxlXCIgOiB1bmRlZmluZWQpO1xuICAgIHZhciBmaWxlTW9zYWljRmlsZU5hbWVDbGFzc05hbWUgPSBkYXJrTW9kZVxuICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtZmlsZS1uYW1lIGRhcmstbW9kZVwiXG4gICAgICAgIDogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1maWxlLW5hbWVcIjtcbiAgICAvLyBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gZmlsZVxuICAgIHZhciBfZiA9IGdldExvY2FsRmlsZUl0ZW1EYXRhKGZpbGUsIHByb3BOYW1lLCBwcm9wVHlwZSwgcHJvcFNpemUpLCBsb2NhbE5hbWUgPSBfZlswXSwgbG9jYWxUeXBlID0gX2ZbMV0sIGxvY2FsU2l6ZSA9IF9mWzJdO1xuICAgIC8vIGhhbmRsZSBwcm9ncmVzc1xuICAgIHZhciBsb2NhbFByb2dyZXNzID0gdXNlUHJvZ3Jlc3MocHJvZ3Jlc3MsIHhocik7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwiRmlsZU1vc2FpYyBwcm9ncmVzcyBsb2NhbFByb2dyZXNzIFwiICsgbG9jYWxQcm9ncmVzcyk7XG4gICAgLy9Jbml0aWFsaXplIEZpbGUgSXRlbVxuICAgIHZhciBfZyA9IHVzZUZpbGVNb3NhaWNJbml0aWFsaXplcihmaWxlLCBwcm9wTmFtZSwgcHJvcFR5cGUsIHZhbGlkLCBwcmV2aWV3LCBpbWFnZVVybCwgdmlkZW9VcmwsIGljb25zKSwgaXNSZWFkeSA9IF9nWzBdLCBpc0ltYWdlID0gX2dbMV0sIGlzVmlkZW8gPSBfZ1syXSwgdXJsID0gX2dbM10sIGltYWdlU291cmNlID0gX2dbNF0sIHZpZGVvU291cmNlID0gX2dbNV07XG4gICAgLy9UaGUgc2l6ZSBmb3JtYXR0ZWQgYW5kIHJvdW5kZWQgaW4gMiBkZWNpbWFsc1xuICAgIHZhciBzaXplRm9ybWF0dGVkID0gZmlsZVNpemVGb3JtYXRlcihsb2NhbFNpemUpO1xuICAgIC8vYWx3YXlzQWN0aXZlXG4gICAgdmFyIF9oID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzaG93SW5mbyA9IF9oWzBdLCBzZXRTaG93SW5mbyA9IF9oWzFdO1xuICAgIC8qKioqKioqKiogQUxXQVlTIEFDVElWRSBMT0dJQyAgKioqKioqKioqKioqKioqL1xuICAgIC8vc3RhdGUgZm9yIGFjdGlvbk9uSG92ZXJcbiAgICB2YXIgX2ogPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGhvdmVyaW5nID0gX2pbMF0sIHNldEhvdmVyaW5nID0gX2pbMV07XG4gICAgdmFyIGhhbmRsZU9uSG92ZXJFbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGFsd2F5c0FjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SG92ZXJpbmcodHJ1ZSk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlT25Ib3ZlckxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYWx3YXlzQWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRIb3ZlcmluZyhmYWxzZSk7XG4gICAgfTtcbiAgICAvKioqKioqKioqKioqKioqKiogSEFORExFUlMgKioqKioqKioqKi9cbiAgICAvL2RlbGV0ZSBmaWxlIGl0ZW1cbiAgICB2YXIgaGFuZGxlRGVsZXRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25EZWxldGUgPT09IG51bGwgfHwgb25EZWxldGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRGVsZXRlKGlkKTsgfTtcbiAgICAvL29wZW4gaW5mbyBsYXllclxuICAgIHZhciBoYW5kbGVPcGVuSW5mbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFNob3dJbmZvKHRydWUpOyB9O1xuICAgIC8vY2xvc2UgaW5mbyBsYXllclxuICAgIHZhciBoYW5kbGVDbG9zZUluZm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRTaG93SW5mbyhmYWxzZSk7IH07XG4gICAgdmFyIGlzVXBsb2FkaW5nID0gdXNlSXNVcGxvYWRpbmcodXBsb2FkU3RhdHVzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJDaGFuZ2UgaXNVcGxvYWRpbmdcIiwgaXNVcGxvYWRpbmcpO1xuICAgICAgICBpZiAoaXNVcGxvYWRpbmcgJiYgc2hvd0luZm8pIHtcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlSW5mbygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtpc1VwbG9hZGluZ10pO1xuICAgIC8qKioqKioqKioqKioqKiogQ0xJQ0sgKioqKioqKioqKioqKioqL1xuICAgIC8qKlxuICAgICAqIFRPLURPOiBBZGQgZnVuY3Rpb25hbGxpdHkgb24gY2xpY2sgZXZlbnRcbiAgICAgKiBAcGFyYW0gZSBldmVudCBvYmplY3RcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhlKSB7XG4gICAgICAgIC8vYXZvaWQgY2hpbGRyZW4gdG8gdHJpZ2dlciBvbkNsaWNrIHJpcHBsZSBmcm9tIHBhcmVudFxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgfVxuICAgIHZhciBoYW5kbGVEb3VibGVDbGljayA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy9hbGVydChcImRvdWJsZSBjbGljayBvbiBmaWxlXCIpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25Eb3VibGVDbGljayA9PT0gbnVsbCB8fCBvbkRvdWJsZUNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRvdWJsZUNsaWNrKGV2dCk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBoYW5kbGVSaWdodENsaWNrKGV2dCkge1xuICAgICAgICAvLyBhbGVydChcInJpZ2h0IGNsaWNrISEhIVwiKTtcbiAgICAgICAgLy9nZXQgY29vcmRpbmF0ZXNcbiAgICAgICAgLy96aW5kZXhcbiAgICAgICAgLy9jcmVhdGUgbWVudSBjb21wb25lbnRcbiAgICAgICAgLy8gZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uUmlnaHRDbGljayA9PT0gbnVsbCB8fCBvblJpZ2h0Q2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmlnaHRDbGljayhldnQpO1xuICAgIH1cbiAgICAvLyBET1dOTE9BRCBGSUxFXG4gICAgLyoqXG4gICAgICogb25Eb3dubG9hZCwgZm9ybSAxXG4gICAgICogVHJpZ2dlciBkb3dsb2FkIGRpcmVjdGx5IHBlcmZvcm1pbmcgYSBjbGljayBvbiBhbmNob3IgZWxlbWVudFxuICAgICAqL1xuICAgIHZhciBpbm5lckRvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGRvd25sb2FkUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChhbmNob3JFbGVtZW50KSB7XG4gICAgICAgICAgICBhbmNob3JFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIG9uRG93bmxhZCwgZm9ybSAyXG4gICAgICogSGFuZGxlIHRoZSBkb3dubG9hZCB0cmlnZ2VyaW5nIGFuIG91dHNpZGUgZXZlbnRcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkRvd25sb2FkKSB7XG4gICAgICAgICAgICBvbkRvd25sb2FkID09PSBudWxsIHx8IG9uRG93bmxvYWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRG93bmxvYWQoaWQsIGRvd25sb2FkVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG93bmxvYWRVcmwgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaW5uZXJEb3dubG9hZCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlQWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHhociA9PT0gbnVsbCB8fCB4aHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHhoci5hYm9ydCgpO1xuICAgICAgICBvbkFib3J0ID09PSBudWxsIHx8IG9uQWJvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQWJvcnQoaWQpO1xuICAgIH07XG4gICAgaWYgKGlzUmVhZHkpXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBzdHlsZSwgb25DbGljazogaGFuZGxlQ2xpY2ssIG9uTW91c2VFbnRlcjogaGFuZGxlT25Ib3ZlckVudGVyLCBvbk1vdXNlTGVhdmU6IGhhbmRsZU9uSG92ZXJMZWF2ZSwgb25Eb3VibGVDbGljazogaGFuZGxlRG91YmxlQ2xpY2ssIG9uQ29udGV4dE1lbnU6IGhhbmRsZVJpZ2h0Q2xpY2sgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXJDb250YWluZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyIGJsdXJcIiwgdmlzaWJsZTogYmFja2dyb3VuZEJsdXJJbWFnZSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbWFnZUxheWVyLCB7IGltYWdlU291cmNlOiBpbWFnZVNvdXJjZSwgdXJsOiB1cmwsIGZpbGVOYW1lOiBsb2NhbE5hbWUsIGlzQmx1cjogdHJ1ZSwgc21hcnRJbWdGaXQ6IGZhbHNlIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1pbWFnZS1sYXllclwiLCB2aXNpYmxlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY0ltYWdlTGF5ZXIsIHsgaW1hZ2VTb3VyY2U6IGltYWdlU291cmNlLCB1cmw6IHVybCwgZmlsZU5hbWU6IGxvY2FsTmFtZSwgaXNCbHVyOiBmYWxzZSwgc21hcnRJbWdGaXQ6IHNtYXJ0SW1nRml0IH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyXCIsIHZpc2libGU6ICFpc1VwbG9hZGluZyAmJiAhc2hvd0luZm8gfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljTWFpbkxheWVyLCB7IGRlbGV0ZUljb246IG9uRGVsZXRlICE9PSB1bmRlZmluZWQsIG9uRGVsZXRlOiBoYW5kbGVEZWxldGUsIGRhcmtNb2RlOiBkYXJrTW9kZSwgdmFsaWQ6IHZhbGlkLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24sIHNpemVGb3JtYXR0ZWQ6IHNpemVGb3JtYXR0ZWQsIGltYWdlSWNvbjogaXNJbWFnZSAmJiBvblNlZSAhPT0gdW5kZWZpbmVkLCBvblNlZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25TZWUgPT09IG51bGwgfHwgb25TZWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VlKGltYWdlU291cmNlKTsgfSwgdmlkZW9JY29uOiBpc1ZpZGVvICYmIG9uV2F0Y2ggIT09IHVuZGVmaW5lZCwgb25XYXRjaDogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25XYXRjaCA9PT0gbnVsbCB8fCBvbldhdGNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbldhdGNoKHZpZGVvU291cmNlKTsgfSwgZG93bmxvYWRJY29uOiBvbkRvd25sb2FkICE9PSB1bmRlZmluZWQgfHwgZG93bmxvYWRVcmwgIT09IHVuZGVmaW5lZCwgb25Eb3dubG9hZDogaGFuZGxlRG93bmxvYWQsIGluZm9JY29uOiBpbmZvICE9PSB1bmRlZmluZWQsIG9uT3BlbkluZm86IGhhbmRsZU9wZW5JbmZvLCBpc0FjdGl2ZTogYWx3YXlzQWN0aXZlIHx8IGhvdmVyaW5nIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyXCIsIHZpc2libGU6IHNob3dJbmZvLCBvbkNsaWNrOiBoYW5kbGVDbGlja1V0aWwgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW5mb0xheWVyLCB7IG9uQ2xvc2VJbmZvOiBoYW5kbGVDbG9zZUluZm8sIHZhbGlkOiB2YWxpZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24sIGxvY2FsTmFtZTogbG9jYWxOYW1lLCBzaXplRm9ybWF0dGVkOiBzaXplRm9ybWF0dGVkLCBsb2NhbFR5cGU6IGxvY2FsVHlwZSB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtdXBsb2FkLWxheWVyXCIsIHZpc2libGU6IGlzVXBsb2FkaW5nLCBvbkNsaWNrOiBoYW5kbGVDbGlja1V0aWwgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljVXBsb2FkTGF5ZXIsIHsgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIHByb2dyZXNzOiBsb2NhbFByb2dyZXNzLCBvbkNhbmNlbDogb25DYW5jZWwgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNhbmNlbCA9PT0gbnVsbCB8fCBvbkNhbmNlbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DYW5jZWwoaWQpOyB9IDogdW5kZWZpbmVkLCBvbkFib3J0OiBvbkFib3J0ID8gaGFuZGxlQWJvcnQgOiB1bmRlZmluZWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaWxlTW9zYWljRmlsZU5hbWVDbGFzc05hbWUgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNOYW1lLCB7IGZpbGVOYW1lOiBsb2NhbE5hbWUgfSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwLCB7IG9wZW46IHJlc3VsdE9uVG9vbHRpcCwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIHZhbGlkOiB2YWxpZCwgZXJyb3JzOiBlcnJvcnMsIHVwbG9hZE1lc3NhZ2U6IHVwbG9hZE1lc3NhZ2UgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERvd25sb2FkSGlkZGVuLCB7IGZpbGVOYW1lOiBsb2NhbE5hbWUsIGFuY2hvclJlZjogZG93bmxvYWRSZWYsIGRvd25sb2FkVXJsOiBkb3dubG9hZFVybCB9KSkpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbnZhciBzZXRGaW5hbEVsZXZhdGlvbiA9IGZ1bmN0aW9uIChlbGV2YXRpb24pIHtcbiAgICAvLyAgbGV0IGZpbmFsRWxldmF0aW9uOiBudW1iZXIgID0gXCJcIjtcbiAgICB2YXIgZmluYWxFbGV2YXRpb24gPSBOdW1iZXIoZWxldmF0aW9uKTtcbiAgICBpZiAoIWlzTmFOKGZpbmFsRWxldmF0aW9uKSkge1xuICAgICAgICBpZiAoZmluYWxFbGV2YXRpb24gPiAyNCkge1xuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpbmFsRWxldmF0aW9uIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmluYWxFbGV2YXRpb247XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbn07XG52YXIgbWFrZUZpbGVDYXJkQ2xhc3NOYW1lID0gZnVuY3Rpb24gKGVsZXZhdGlvbiwgZGFya01vZGUsIGNsYXNzTmFtZSwgY2xpY2thYmxlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcIkZpbGVDYXJkIG1ha2VGaWxlQ2FyZENsYXNzTmFtZVwiLCBlbGV2YXRpb24sIGRhcmtNb2RlLCBjbGFzc05hbWUpO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IFwiZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIGZpbGVzLXVpLXRvb2x0aXAgY2FyZFwiO1xuICAgIGlmIChlbGV2YXRpb24pIHtcbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgZWxldmF0aW9uLVwiICsgc2V0RmluYWxFbGV2YXRpb24oZWxldmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKGRhcmtNb2RlKSB7XG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGRhcmstbW9kZVwiO1xuICAgIH1cbiAgICBpZiAoY2xpY2thYmxlKVxuICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBjbGlja2FibGVcIjtcbiAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIFwiLmNvbmNhdChjbGFzc05hbWUpO1xuICAgIH1cbiAgICAvL2NvbnNvbGUubG9nKFwiRmlsZUNhcmQgZmluYWxDbGFzc05hbWVcIiwgZmluYWxDbGFzc05hbWUpO1xuICAgIHJldHVybiBmaW5hbENsYXNzTmFtZTtcbn07XG52YXIgRmlsZUNhcmQgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBmaWxlID0gcHJvcHMuZmlsZSwgcHJvcE5hbWUgPSBwcm9wcy5uYW1lLCBwcm9wU2l6ZSA9IHByb3BzLnNpemUsIHByb3BUeXBlID0gcHJvcHMudHlwZSwgaWQgPSBwcm9wcy5pZCwgdmFsaWQgPSBwcm9wcy52YWxpZCwgZXJyb3JzID0gcHJvcHMuZXJyb3JzLCB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIHVwbG9hZE1lc3NhZ2UgPSBwcm9wcy51cGxvYWRNZXNzYWdlLCBwcm9ncmVzcyA9IHByb3BzLnByb2dyZXNzLCB4aHIgPSBwcm9wcy54aHIsIGxvY1Byb3BzID0gcHJvcHMubG9jYWxpemF0aW9uLCBwcmV2aWV3ID0gcHJvcHMucHJldmlldywgaW1hZ2VVcmwgPSBwcm9wcy5pbWFnZVVybCwgdmlkZW9VcmwgPSBwcm9wcy52aWRlb1VybCwgaW5mbyA9IHByb3BzLmluZm8sIF9hID0gcHJvcHMuYmFja2dyb3VuZEJsdXJJbWFnZSwgYmFja2dyb3VuZEJsdXJJbWFnZSA9IF9hID09PSB2b2lkIDAgPyB0cnVlIDogX2EsIGRhcmtNb2RlUHJvcCA9IHByb3BzLmRhcmtNb2RlLCBfYiA9IHByb3BzLmFsd2F5c0FjdGl2ZSwgYWx3YXlzQWN0aXZlID0gX2IgPT09IHZvaWQgMCA/IHRydWUgOiBfYiwgX2MgPSBwcm9wcy5yZXN1bHRPblRvb2x0aXAsIHJlc3VsdE9uVG9vbHRpcCA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2MsIGRvd25sb2FkVXJsID0gcHJvcHMuZG93bmxvYWRVcmwsIG9uRGVsZXRlID0gcHJvcHMub25EZWxldGUsIG9uQ2FuY2VsID0gcHJvcHMub25DYW5jZWwsIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBvbkRvd25sb2FkID0gcHJvcHMub25Eb3dubG9hZCwgb25TZWUgPSBwcm9wcy5vblNlZSwgb25XYXRjaCA9IHByb3BzLm9uV2F0Y2gsIG9uRG91YmxlQ2xpY2sgPSBwcm9wcy5vbkRvdWJsZUNsaWNrLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgb25SaWdodENsaWNrID0gcHJvcHMub25SaWdodENsaWNrLCBfZCA9IHByb3BzLmVsZXZhdGlvbiwgZWxldmF0aW9uID0gX2QgPT09IHZvaWQgMCA/IDQgOiBfZCwgX2UgPSBwcm9wcy5zbWFydEltZ0ZpdCwgc21hcnRJbWdGaXQgPSBfZSA9PT0gdm9pZCAwID8gXCJvcmllbnRhdGlvblwiIDogX2U7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIF9mID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCksIGRhcmtNb2RlQ29udGV4dCA9IF9mLmRhcmtNb2RlLCBpY29ucyA9IF9mLmljb25zLCBsb2NDb250ZXh0ID0gX2YubG9jYWxpemF0aW9uO1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NQcm9wcyAhPT0gdW5kZWZpbmVkID8gbG9jUHJvcHMgOiBsb2NDb250ZXh0O1xuICAgIHZhciBkYXJrTW9kZSA9IGRhcmtNb2RlUHJvcCAhPT0gdW5kZWZpbmVkID8gZGFya01vZGVQcm9wIDogZGFya01vZGVDb250ZXh0O1xuICAgIC8vY29uc29sZS5sb2coXCJnbG9iYWxDb25maWdcIiwgZGFya01vZGUsIGljb25zKTtcbiAgICAvL3JlZiBmb3IgYW5jaG9yIGVsZW1lbnRcbiAgICB2YXIgZG93bmxvYWRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy9jbGFzc05hbWUgY3JlYXRlZFxuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IG1ha2VGaWxlQ2FyZENsYXNzTmFtZShlbGV2YXRpb24sIGRhcmtNb2RlLCBjbGFzc05hbWUsIG9uQ2xpY2sgIT09IHVuZGVmaW5lZCk7XG4gICAgLy8gbG9jYWwgcHJvcGVydGllcyBmcm9tIGZpbGVcbiAgICB2YXIgX2cgPSBnZXRMb2NhbEZpbGVJdGVtRGF0YShmaWxlLCBwcm9wTmFtZSwgcHJvcFR5cGUsIHByb3BTaXplKSwgbG9jYWxOYW1lID0gX2dbMF0sIGxvY2FsVHlwZSA9IF9nWzFdLCBsb2NhbFNpemUgPSBfZ1syXTtcbiAgICAvLyBoYW5kbGUgcHJvZ3Jlc3NcbiAgICB2YXIgbG9jYWxQcm9ncmVzcyA9IHVzZVByb2dyZXNzKHByb2dyZXNzLCB4aHIpO1xuICAgIC8vSW5pdGlhbGl6ZSBGaWxlIEl0ZW1cbiAgICB2YXIgX2ggPSB1c2VGaWxlTW9zYWljSW5pdGlhbGl6ZXIoZmlsZSwgcHJvcE5hbWUsIHByb3BUeXBlLCB2YWxpZCwgcHJldmlldywgaW1hZ2VVcmwsIHZpZGVvVXJsLCBpY29ucyksIGlzUmVhZHkgPSBfaFswXSwgaXNJbWFnZSA9IF9oWzFdLCBpc1ZpZGVvID0gX2hbMl0sIHVybCA9IF9oWzNdLCBpbWFnZVNvdXJjZSA9IF9oWzRdLCB2aWRlb1NvdXJjZSA9IF9oWzVdO1xuICAgIC8vVGhlIHNpemUgZm9ybWF0dGVkIGFuZCByb3VuZGVkIGluIDIgZGVjaW1hbHNcbiAgICB2YXIgc2l6ZUZvcm1hdHRlZCA9IGZpbGVTaXplRm9ybWF0ZXIobG9jYWxTaXplKTtcbiAgICAvL2Fsd2F5c0FjdGl2ZVxuICAgIHZhciBfaiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc2hvd0luZm8gPSBfalswXSwgc2V0U2hvd0luZm8gPSBfalsxXTtcbiAgICAvKioqKioqKioqIEFMV0FZUyBBQ1RJVkUgTE9HSUMgICoqKioqKioqKioqKioqKi9cbiAgICAvL3N0YXRlIGZvciBhY3Rpb25PbkhvdmVyXG4gICAgdmFyIF9rID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBob3ZlcmluZyA9IF9rWzBdLCBzZXRIb3ZlcmluZyA9IF9rWzFdO1xuICAgIHZhciBoYW5kbGVPbkhvdmVyRW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChhbHdheXNBY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldEhvdmVyaW5nKHRydWUpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZU9uSG92ZXJMZWF2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGFsd2F5c0FjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SG92ZXJpbmcoZmFsc2UpO1xuICAgIH07XG4gICAgLyoqKioqKioqKioqKioqKioqIEhBTkRMRVJTICoqKioqKioqKiovXG4gICAgLy9kZWxldGUgZmlsZSBpdGVtXG4gICAgdmFyIGhhbmRsZURlbGV0ZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uRGVsZXRlID09PSBudWxsIHx8IG9uRGVsZXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRlbGV0ZShpZCk7IH07XG4gICAgLy9vcGVuIGluZm8gbGF5ZXJcbiAgICB2YXIgaGFuZGxlT3BlbkluZm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRTaG93SW5mbyh0cnVlKTsgfTtcbiAgICAvL2Nsb3NlIGluZm8gbGF5ZXJcbiAgICB2YXIgaGFuZGxlQ2xvc2VJbmZvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0U2hvd0luZm8oZmFsc2UpOyB9O1xuICAgIHZhciBpc1VwbG9hZGluZyA9IHVzZUlzVXBsb2FkaW5nKHVwbG9hZFN0YXR1cyk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiQ2hhbmdlIGlzVXBsb2FkaW5nXCIsIGlzVXBsb2FkaW5nKTtcbiAgICAgICAgaWYgKGlzVXBsb2FkaW5nICYmIHNob3dJbmZvKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2VJbmZvKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtpc1VwbG9hZGluZ10pO1xuICAgIC8qKioqKioqKioqKioqKiogQ2xpY2sgKioqKioqKioqKioqKioqL1xuICAgIC8qKlxuICAgICAqIFRPLURPOiBBZGQgZnVuY3Rpb25hbGxpdHkgb24gY2xpY2sgZXZlbnRcbiAgICAgKiBAcGFyYW0gZSBldmVudCBvYmplY3RcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhlKSB7XG4gICAgICAgIC8vYXZvaWQgY2hpbGRyZW4gdG8gdHJpZ2dlciBvbkNsaWNrIHJpcHBsZSBmcm9tIHBhcmVudFxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgfVxuICAgIHZhciBoYW5kbGVEb3VibGVDbGljayA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy9hbGVydChcImRvdWJsZSBjbGljayBvbiBmaWxlXCIpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25Eb3VibGVDbGljayA9PT0gbnVsbCB8fCBvbkRvdWJsZUNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRvdWJsZUNsaWNrKGV2dCk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBoYW5kbGVSaWdodENsaWNrKGV2dCkge1xuICAgICAgICAvLyBhbGVydChcInJpZ2h0IGNsaWNrISEhIVwiKTtcbiAgICAgICAgLy9nZXQgY29vcmRpbmF0ZXNcbiAgICAgICAgLy96aW5kZXhcbiAgICAgICAgLy9jcmVhdGUgbWVudSBjb21wb25lbnRcbiAgICAgICAgLy8gZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uUmlnaHRDbGljayA9PT0gbnVsbCB8fCBvblJpZ2h0Q2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmlnaHRDbGljayhldnQpO1xuICAgIH1cbiAgICAvLyBET1dOTE9BRCBGSUxFXG4gICAgLyoqXG4gICAgICogb25Eb3dubG9hZCwgZm9ybSAxXG4gICAgICogVHJpZ2dlciBkb3dsb2FkIGRpcmVjdGx5IHBlcmZvcm1pbmcgYSBjbGljayBvbiBhbmNob3IgZWxlbWVudFxuICAgICAqL1xuICAgIHZhciBpbm5lckRvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGRvd25sb2FkUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChhbmNob3JFbGVtZW50KSB7XG4gICAgICAgICAgICBhbmNob3JFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIG9uRG93bmxhZCwgZm9ybSAyXG4gICAgICogSGFuZGxlIHRoZSBkb3dubG9hZCB0cmlnZ2VyaW5nIGFuIG91dHNpZGUgZXZlbnRcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkRvd25sb2FkKSB7XG4gICAgICAgICAgICBvbkRvd25sb2FkID09PSBudWxsIHx8IG9uRG93bmxvYWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRG93bmxvYWQoaWQsIGRvd25sb2FkVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG93bmxvYWRVcmwgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaW5uZXJEb3dubG9hZCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlQWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHhociA9PT0gbnVsbCB8fCB4aHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHhoci5hYm9ydCgpO1xuICAgICAgICBvbkFib3J0ID09PSBudWxsIHx8IG9uQWJvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQWJvcnQoaWQpO1xuICAgIH07XG4gICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IHN0eWxlLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25Nb3VzZUVudGVyOiBoYW5kbGVPbkhvdmVyRW50ZXIsIG9uTW91c2VMZWF2ZTogaGFuZGxlT25Ib3ZlckxlYXZlLCBvbkRvdWJsZUNsaWNrOiBoYW5kbGVEb3VibGVDbGljaywgb25Db250ZXh0TWVudTogaGFuZGxlUmlnaHRDbGljayB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllckNvbnRhaW5lciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtbWFpbi1sYXllclwiLCB2aXNpYmxlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyQ29udGFpbmVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1sYXllclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pY29uLWxheWVyIGJsdXJcIiwgdmlzaWJsZTogYmFja2dyb3VuZEJsdXJJbWFnZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW1hZ2VMYXllciwgeyBpbWFnZVNvdXJjZTogaW1hZ2VTb3VyY2UsIGZpbGVOYW1lOiBsb2NhbE5hbWUsIHVybDogdXJsLCBpc0JsdXI6IHRydWUsIHNtYXJ0SW1nRml0OiBmYWxzZSB9KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pY29uLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY0ltYWdlTGF5ZXIsIHsgaW1hZ2VTb3VyY2U6IGltYWdlU291cmNlLCB1cmw6IHVybCwgZmlsZU5hbWU6IGxvY2FsTmFtZSwgaXNCbHVyOiBmYWxzZSwgc21hcnRJbWdGaXQ6IHNtYXJ0SW1nRml0IH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXN0YXR1cy1sYXllclwiLCB2aXNpYmxlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNTdGF0dXMsIHsgdmFsaWQ6IHZhbGlkLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBkYXJrTW9kZSA/IFwiZmlsZS1jYXJkLWRhdGEgZGFyay1tb2RlXCIgOiBcImZpbGUtY2FyZC1kYXRhXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1uYW1lXCIgfSwgbG9jYWxOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1zaXplXCIgfSwgc2l6ZUZvcm1hdHRlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtc2l6ZVwiIH0sIHNocmlua1dvcmQobG9jYWxUeXBlKSkpKSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyXCIsIHZpc2libGU6IHNob3dJbmZvLCBvbkNsaWNrOiBoYW5kbGVDbGlja1V0aWwgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlQ2FyZEluZm9MYXllciwgeyBvbkNsb3NlSW5mbzogaGFuZGxlQ2xvc2VJbmZvLCB2YWxpZDogdmFsaWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uLCBsb2NhbE5hbWU6IGxvY2FsTmFtZSwgc2l6ZUZvcm1hdHRlZDogc2l6ZUZvcm1hdHRlZCwgbG9jYWxUeXBlOiBsb2NhbFR5cGUgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC11cGxvYWQtbGF5ZXItY29udGFpbmVyXCIsIHZpc2libGU6IGlzVXBsb2FkaW5nLCBvbkNsaWNrOiBoYW5kbGVDbGlja1V0aWwgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWNhcmQtdXBsb2FkLWxheWVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZUNhcmRVcGxvYWRMYXllciwgeyB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgcHJvZ3Jlc3M6IGxvY2FsUHJvZ3Jlc3MsIG9uQ2FuY2VsOiBvbkNhbmNlbCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2FuY2VsID09PSBudWxsIHx8IG9uQ2FuY2VsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNhbmNlbChpZCk7IH0gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IG9uQWJvcnQgPyBoYW5kbGVBYm9ydCA6IHVuZGVmaW5lZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVDYXJkUmlnaHRBY3Rpb25zLCB7IGRlbGV0ZUljb246IG9uRGVsZXRlICE9PSB1bmRlZmluZWQsIG9uRGVsZXRlOiBoYW5kbGVEZWxldGUsIGRhcmtNb2RlOiBkYXJrTW9kZSwgaW1hZ2VJY29uOiBpc0ltYWdlICYmIG9uU2VlICE9PSB1bmRlZmluZWQsIG9uU2VlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvblNlZSA9PT0gbnVsbCB8fCBvblNlZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWUoaW1hZ2VTb3VyY2UpOyB9LCB2aWRlb0ljb246IGlzVmlkZW8gJiYgb25XYXRjaCAhPT0gdW5kZWZpbmVkLCBvbldhdGNoOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbldhdGNoID09PSBudWxsIHx8IG9uV2F0Y2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uV2F0Y2godmlkZW9Tb3VyY2UpOyB9LCBkb3dubG9hZEljb246IG9uRG93bmxvYWQgIT09IHVuZGVmaW5lZCB8fCBkb3dubG9hZFVybCAhPT0gdW5kZWZpbmVkLCBvbkRvd25sb2FkOiBoYW5kbGVEb3dubG9hZCwgaW5mb0ljb246IGluZm8gIT09IHVuZGVmaW5lZCwgb25PcGVuSW5mbzogaGFuZGxlT3BlbkluZm8sIGlzQWN0aXZlOiBhbHdheXNBY3RpdmUgfHwgaG92ZXJpbmcsIHZpc2libGU6ICFpc1VwbG9hZGluZyAmJiAhc2hvd0luZm8gfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRvb2x0aXAsIHsgb3BlbjogcmVzdWx0T25Ub29sdGlwLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgdmFsaWQ6IHZhbGlkLCBlcnJvcnM6IGVycm9ycywgdXBsb2FkTWVzc2FnZTogdXBsb2FkTWVzc2FnZSB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG93bmxvYWRIaWRkZW4sIHsgZmlsZU5hbWU6IGxvY2FsTmFtZSwgYW5jaG9yUmVmOiBkb3dubG9hZFJlZiwgZG93bmxvYWRVcmw6IGRvd25sb2FkVXJsIH0pKSk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5mdWktZnVsbHNjcmVlbi1jb250YWluZXIge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDB2aDtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNzM0KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMCUpO1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZS1pbi1vdXQ7XFxuICBtYXJnaW46IDAgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDQwMDA7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZnVpLWZ1bGxzY3JlZW4tY29udGFpbmVyLnNob3ctZnMge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCk7XFxufVxcblxcbi5mdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDkwJTtcXG4gIGhlaWdodDogOTAlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAvKiAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xcbiAgICB3aWR0aDogODAlO1xcbiAgICBoZWlnaHQ6IGF1dG87XFxuICB9Ki9cXG59XFxuLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciBpbWcge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IGF1dG87XFxufVxcbi5mdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXIgdmlkZW8ge1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IGF1dG87XFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiA5NjBweCkge1xcbiAgLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB7XFxuICAgIGhlaWdodDogOTAlO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG4gIC5mdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXIgdmlkZW8ge1xcbiAgICBoZWlnaHQ6IGF1dG87XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcbiAgLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciBpbWcge1xcbiAgICBoZWlnaHQ6IGF1dG87XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcbn1cXG5cXG4uYnV0dG9uLWZ1bGwtc2NyZWVuIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbn1cIik7XG5cbnZhciBGdWxsU2NyZWVuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9wZW4gPSBwcm9wcy5vcGVuLCBvbkNsb3NlID0gcHJvcHMub25DbG9zZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbG9zZShlKSB7XG4gICAgICAgIC8vYXZvaWQgY2hpbGRyZW4gdG8gdHJpZ2dlciBvbkNsaWNrIHJpcHBsZSBmcm9tIHBhcmVudFxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBvbkNsb3NlID09PSBudWxsIHx8IG9uQ2xvc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xvc2UoKTtcbiAgICB9XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGhhbmRsZUNsb3NlRXNjID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09IFwiRXNjYXBlXCIpXG4gICAgICAgICAgICAgICAgb25DbG9zZSA9PT0gbnVsbCB8fCBvbkNsb3NlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsb3NlKCk7XG4gICAgICAgIH07XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJhZGRpbmcgbGlzdGVuZXJcIik7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUNsb3NlRXNjKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJyZW1vdmluZyBsaXN0ZW5lclwiKTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUNsb3NlRXNjKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW10pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogb3BlbiA/IFwiZnVpLWZ1bGxzY3JlZW4tY29udGFpbmVyIHNob3ctZnNcIiA6IFwiZnVpLWZ1bGxzY3JlZW4tY29udGFpbmVyXCIsIG9uQ2xpY2s6IGhhbmRsZUNsb3NlIH0sXG4gICAgICAgIG9wZW4gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyXCIsIG9uQ2xpY2s6IGhhbmRsZUNsb3NlIH0sIGNoaWxkcmVuKSksXG4gICAgICAgIG9uQ2xvc2UgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjgpXCIsIG9uQ2xpY2s6IGhhbmRsZUNsb3NlLCBjb2xvckZpbGw6IFwidHJhbnNwYXJlbnRcIiwgY2xhc3NOYW1lOiBcImJ1dHRvbi1mdWxsLXNjcmVlblwiLCBzaXplOiBcImV4dHJhLWxhcmdlXCIgfSkpKSk7XG59O1xuXG52YXIgVmlkZW9QcmV2aWV3ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHZpZGVvU3JjID0gcHJvcHMuc3JjLCBcbiAgICAvKiBhdXRvUGxheSwgY29udHJvbHMsICAqL1xuICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgb3RoZXJzID0gX19yZXN0KHByb3BzLCBbXCJzcmNcIiwgXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiXSk7XG4gICAgdmFyIHZpZGVvUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIHNvdXJjZSA9IF9hWzBdLCBzZXRTb3VyY2UgPSBfYVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvL2lmIG5vdCB1bmRlZmluZWRcbiAgICAgICAgaWYgKCF2aWRlb1NyYykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmlkZW9TcmMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIC8vaWYgYSB1cmwgc3RyaW5nIGlzIGdpdmVuLCBhc3NpZ24gaXQgZGlyZWN0bHlcbiAgICAgICAgICAgIHNldFNvdXJjZSh2aWRlb1NyYyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL2lmIGEgRmlsZSBvYmplY3QgaXMgZ2l2ZW4sIGNoZWNrIGlmIGlzIGEgc3VwcG9ydGVkIGZvcm1hdFxuICAgICAgICAgICAgdmFyIGhlYWRlck1pbWUgPSB2aWRlb1NyYy50eXBlID8gdmlkZW9TcmMudHlwZS5zcGxpdChcIi9cIilbMF0gOiBcIm9jdGV0XCI7XG4gICAgICAgICAgICB2YXIgdGFpbE1pbWUgPSB2aWRlb1NyYy50eXBlID8gdmlkZW9TcmMudHlwZS5zcGxpdChcIi9cIilbMV0gOiBcIm9jdGV0XCI7XG4gICAgICAgICAgICBpZiAoaGVhZGVyTWltZSA9PT0gXCJ2aWRlb1wiICYmIFtcIm1wNFwiLCBcIm9nZ1wiLCBcIndlYm1cIl0uaW5jbHVkZXModGFpbE1pbWUpKSB7XG4gICAgICAgICAgICAgICAgLy9zZXQgdGhlIHZpZGVvIHNvdXJjZSBhbmQgY3JlYXRlIHRoZSB1cmkgc3RyaW5nIGlmIGlzIGEgc3VwcG9ydGVkIHZpZGVvIGZvcm1hdFxuICAgICAgICAgICAgICAgIHZhciBuZXdWaWRlb1NyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwodmlkZW9TcmMpO1xuICAgICAgICAgICAgICAgIHNldFNvdXJjZShuZXdWaWRlb1NyYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbdmlkZW9TcmNdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoc291cmNlICYmIHZpZGVvUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZpZGVvUmVmLmN1cnJlbnQubG9hZCgpO1xuICAgICAgICB9XG4gICAgfSwgW3NvdXJjZV0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgdmlkZW9TcmMgJiYgc291cmNlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidmlkZW9cIiwgX19hc3NpZ24kMSh7IG9uQ2xpY2s6IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LCBcbiAgICAgICAgLy9vbkxvYWRlZE1ldGFkYXRhPXtoYW5kbGVMb2FkZWR9XG4gICAgICAgIGlkOiBcImZpbGVzLXVpLXZpZGVvXCIsIFxuICAgICAgICAvL2NvbnRyb2xzPXtjb250cm9sc31cbiAgICAgICAgcmVmOiB2aWRlb1JlZiwgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJmaWxlc3VpLXZpZGVvLXByZXZpZXdcIiwgXG4gICAgICAgIC8vYXV0b1BsYXk9e2F1dG9wbGF5fVxuICAgICAgICBzcmM6IHNvdXJjZSwgXG4gICAgICAgIC8vd2lkdGg9e1wiMTAwJVwifVxuICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLCBzdHlsZTogc3R5bGUgfSwgb3RoZXJzKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiLCB7IHR5cGU6IFwidmlkZW8vd2VibVwiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIsIHsgdHlwZTogXCJ2aWRlby9vZ2dcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiLCB7IHR5cGU6IFwidmlkZW8vbXA0XCIgfSkpKSkpO1xufTtcblxudmFyIEZpbGVzVWlQcm92aWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjb25maWcgPSBwcm9wcy5jb25maWc7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVzVWlDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBjb25maWcgfHwge30gfSwgY2hpbGRyZW4pKTtcbn07XG5cbmV4cG9ydCB7IEFCT1JURURfRVJST1JfUkVTUE9OU0UsIEF2YXRhciwgRHJvcHpvbmUsIERyb3B6b25lRW5nbGlzaCwgRHJvcHpvbmVGcmVuY2gsIERyb3B6b25lSXRhbGlhbiwgRHJvcHpvbmVMb2NhbGl6ZXIsIERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IsIERyb3B6b25lUG9ydHVndWVzZSwgRHJvcHpvbmVSdXNzaWFuLCBEcm9wem9uZVNpbXBsaWZpZWRDaGluZXNlLCBEcm9wem9uZVNwYW5pc2gsIERyb3B6b25lVHJhZGl0aW9uYWxDaGluZXNlLCBFeHRGaWxlSW5zdGFuY2UsIEZpbGVDYXJkLCBGaWxlSWRHZW5lcmF0b3IsIEZpbGVJbnB1dEJ1dHRvbiwgRmlsZUl0ZW1FbmdsaXNoLCBGaWxlSXRlbUZyZW5jaCwgRmlsZUl0ZW1JdGFsaWFuLCBGaWxlSXRlbUxvY2FsaXplciwgRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3RvciwgRmlsZUl0ZW1Qb3J0dWd1ZXNlLCBGaWxlSXRlbVJ1c3NpYW4sIEZpbGVJdGVtU2ltcGxpZmllZENoaW5lc2UsIEZpbGVJdGVtU3BhbmlzaCwgRmlsZUl0ZW1UcmFkaXRpb25hbENoaW5lc2UsIEZpbGVNb3NhaWMsIEZpbGVzVWlQcm92aWRlciwgRnVsbFNjcmVlbiwgSW1hZ2VQcmV2aWV3LCBKU09OX1BBUlNFX0VSUk9SX1JFU1BPTlNFLCBKc29uUGFyc2VSZXNwb25zZSwgTWF0ZXJpYWxCdXR0b24sIE5BTUVEX0NPTE9SUywgTk9fWEhSX1BST1ZJREVEX0VSUk9SLCBTeW50aGV0aWNGaWxlLCBUSU1FT1VUX0VSUk9SX1JFU1BPTlNFLCBVTkVYUEVDVEVEX0VSUk9SX1JFU1BPTlNFLCBWYWxpZGF0ZUVycm9yRW5nbGlzaCwgVmFsaWRhdGVFcnJvckZyZW5jaCwgVmFsaWRhdGVFcnJvckl0YWxpYW4sIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXIsIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJTZWxlY3RvciwgVmFsaWRhdGVFcnJvclBvcnR1Z3Vlc2UsIFZhbGlkYXRlRXJyb3JSdXNzaWFuLCBWYWxpZGF0ZUVycm9yU2ltcGxpZmllZENoaW5lc2UsIFZhbGlkYXRlRXJyb3JTcGFuaXNoLCBWYWxpZGF0ZUVycm9yVHJhZGl0aW9uYWxDaGluZXNlLCBWaWRlb1ByZXZpZXcsIGFhYywgYWJ3LCBhY2NkYiwgYWRkQ2xhc3NOYW1lLCBhZGRFeHRyYURhdGEsIGFkZEhlYWRlcnMsIGFzdXJlQ29sb3IsIGNsZWFuSW5wdXQsIGNvbG91ck5hbWVUb0hleCwgY29tcGxldGVBc3VyZUNvbG9yLCBjb21wbGV0ZVVwbG9hZFJlc3VsdCwgY3JlYXRlTGlzdE9mTXVsdGlUeXBlRmlsZSwgY3JlYXRlU3ludGhldGljRmlsZSwgY3JlYXRlVXBsb2FkQ29uZmlnLCBkYXJrZXJDb2xvciwgZXh0RmlsZU1vY2ssIGV4dEZpbGVSZWNvbmNpbGF0aW9uLCBmYWtlRnVpVXBsb2FkLCBmaWxlTGlzdFRvRXh0RmlsZUFycmF5LCBmaWxlTGlzdFRvRXh0RmlsZUluc3RhbmNlQXJyYXksIGZpbGVMaXN0dmFsaWRhdG9yLCBmaWxlU2l6ZUZvcm1hdGVyLCBnZXRFeHQsIGdldEltYWdlT3JpZW50YXRpb24sIGdldExvY2FsRmlsZUl0ZW1EYXRhLCBnZXRSYW5kb21JbnQsIGdldFVSTEZpbGVJY28sIGdldFVSTEZpbGVJY29Gcm9tTmFtZUFuZFR5cGUsIGhleENvbG9yVG9SR0IsIGhleFRvZGVjLCBpbnN0YW50UHJlcGFyaW5nVG9VcGxvYWRPbmUsIGlzSGV4Q29sb3IsIGlzVXBsb2FkQWJsZUV4dEZpbGUsIGlzVmFsaWRhdGVBY3RpdmUsIG1ha2VFcnJvclVwbG9hZFJlc3BvbnNlLCBtYWtlU2VydmVyUmVzcG9uc2UsIG1ha2VTdWNjZXNzVXBsb2FkUmVzcG9uc2UsIG1ha2VTeW50aGV0aWNFeHRGaWxlLCBwcmVwVG9VcGxvYWRPbmUsIHByZXBhcmluZ1RvVXBsb2FkT25lLCByZWFkQXNBcnJheUJ1ZmZlciwgcmVhZEFzQmluYXJ5U3RyaW5nLCByZWFkQXNEYXRhVVJMLCByZWFkQXNUZXh0LCByZXNpemVJbWFnZSwgc2FuaXRpemVBcnJFeHRGaWxlLCBzZXBhcmF0ZUFjY2VwdCwgc2V0TmV4dFVwbG9hZFN0YXR1cywgc2V0UHJlcFRvVXBsb2FkaW5nLCBzaHJpbmtXb3JkLCBzbGVlcFByZXBhcmluZywgc2xlZXBUcmFuc2l0aW9uLCB0b1VwbG9hZGFibGVFeHRGaWxlTGlzdCwgdW5hYmxlVG9VcGxvYWRSZXN1bHQsIHVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdCwgdXBsb2FkRXh0RmlsZSwgdXBsb2FkRmlsZSwgdXBsb2FkRm9ybURhdGEsIHVwbG9hZE9uZSwgdXBsb2FkT25lRXh0RmlsZSwgdXNlRmFrZVByb2dyZXNzLCB2YWxpZGF0ZUFjY2VwdCwgdmFsaWRhdGVFeHRGaWxlLCB2YWxpZGF0ZUV4dEZpbGVMaXN0LCB2YWxpZGF0ZUZpbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzLmpzLm1hcFxuIiwiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcHJvcC10eXBlcyAqL1xuaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVJlZixcbiAgdXNlTWVtbyxcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbiAgdXNlQ2FsbGJhY2ssXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRHJvcHpvbmUsIEZpbGVNb3NhaWMgfSBmcm9tIFwiQGZpbGVzLXVpL3JlYWN0XCI7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSBcIi4vTWVzc2FnZVwiO1xuaW1wb3J0IHsgQXdhaXQgfSBmcm9tIFwiLi9Bd2FpdFwiO1xuaW1wb3J0IHsgTG9hZGluZ0luZm8gfSBmcm9tIFwiLi9Mb2FkaW5nSW5mb1wiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgbmV3IGRpcmVjdG9yeSAoZm9sZGVyKS5cbiAqXG4gKiBDb21wb25lbnQgaXMgZWRpdGFibGUgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gaXQgYW5kIGNoYW5nZXMgYmFjayB0byBcInRleHRcIlxuICogd2hlbiB0aGV5IGFyZSBkb25lLlxuICovXG5jb25zdCBTaW5nbGVOZXdEaXIgPSAoeyBuYW1lLCBlZGl0LCBzZXROZXdEaXIsIGlkeCB9KSA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBbX25hbWUsIHNldE5hbWVdID0gdXNlU3RhdGUobmFtZSB8fCBcIlwiKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlZGl0KSB7XG4gICAgICByZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSwgW3JlZiwgZWRpdF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF9uYW1lLmluZGV4T2YoXCIvXCIpID4gLTEpIHtcbiAgICAgIGNvbnN0IGRpcnMgPSBfbmFtZS5zcGxpdChcIi9cIiwgMik7XG4gICAgICBzZXROYW1lKGRpcnNbMF0pO1xuICAgICAgY29uc3QgYWRkID0geyBuYW1lOiBkaXJzWzFdLCBlZGl0OiB0cnVlIH07XG4gICAgICBzZXROZXdEaXIoeyBuYW1lOiBkaXJzWzBdLCBlZGl0OiBmYWxzZSB9LCBpZHgsIGFkZCk7XG4gICAgfVxuICB9LCBbX25hbWUsIHNldE5ld0RpciwgaWR4XSk7XG5cbiAgaWYgKCFlZGl0KSB7XG4gICAgY29uc3Qgb25DbGljayA9ICgpID0+IHtcbiAgICAgIHNldE5ld0Rpcih7IG5hbWU6IF9uYW1lLCBlZGl0OiB0cnVlIH0sIGlkeCk7XG4gICAgfTtcbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1saW5rXCJcbiAgICAgICAgc3R5bGU9e3sgcGFkZGluZ0xlZnQ6IFwiMC4xcmVtXCIsIHBhZGRpbmdSaWdodDogXCIwcmVtXCIgfX1cbiAgICAgID5cbiAgICAgICAge19uYW1lfS9cbiAgICAgIDwvYnV0dG9uPlxuICAgICk7XG4gIH1cblxuICBjb25zdCBvbkNoYW5nZSA9IChlKSA9PiB7XG4gICAgc2V0TmFtZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgb25CbHVyID0gKGUpID0+IHtcbiAgICBpZiAoZS5yZWxhdGVkVGFyZ2V0Py5jbGFzc0xpc3QuY29udGFpbnMoXCJjYW9zZGItZi1jYW5jZWwtbmV3LWRpcmVjdG9yeVwiKSkge1xuICAgICAgc2V0TmV3RGlyKHsgZWRpdDogZmFsc2UgfSwgaWR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TmV3RGlyKHsgbmFtZTogX25hbWUsIGVkaXQ6IGZhbHNlIH0sIGlkeCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbktleURvd24gPSAoZSkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBzZXROZXdEaXIoeyBuYW1lOiBfbmFtZSwgZWRpdDogZmFsc2UgfSwgaWR4KTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICB2YWx1ZT17X25hbWV9XG4gICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICB0aXRsZT1cIkluc2VydCBuZXcgZGlyZWN0b3J5IG5hbWUuIEEgZGlyZWN0b3J5IG5hbWUgbXVzdCBub3QgY29udGFpbiB0aGUgc2xhc2ggJy8nLlwiXG4gICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYW9zZGItZi1jYW5jZWwtbmV3LWRpcmVjdG9yeVwiPlxuICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS14XCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCI+XG4gICAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLWNoZWNrXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbGwgZGlyZWN0b3JpZXMgYmVuZWF0aCB0aGUgZGlyZWN0b3J5QmFzZS5cbiAqL1xuY29uc3QgTmV3RGlycyA9ICh7IHNldERpcmVjdG9yeSwgdmFsdWUgfSkgPT4ge1xuICBjb25zdCBbbmV3RGlycywgc2V0TmV3RGlyc10gPSB1c2VTdGF0ZShcbiAgICB2YWx1ZS5tYXAoKGQpID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGQgfTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBzZXRTaW5nbGVOZXdEaXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZCwgaWR4LCBhZGQpID0+IHtcbiAgICAgIHZhciBfbmV3RGlycyA9IFtdLmNvbmNhdChuZXdEaXJzKTtcbiAgICAgIGlmIChkLm5hbWUpIHtcbiAgICAgICAgX25ld0RpcnNbaWR4XSA9IGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbmV3RGlycyA9IF9uZXdEaXJzLnNsaWNlKDAsIGlkeCkuY29uY2F0KF9uZXdEaXJzLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgX25ld0RpcnMgPSBfbmV3RGlyc1xuICAgICAgICAgIC5zbGljZSgwLCBpZHggKyAxKVxuICAgICAgICAgIC5jb25jYXQoW2FkZF0sIF9uZXdEaXJzLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgIH1cbiAgICAgIHNldE5ld0RpcnMoX25ld0RpcnMpO1xuICAgICAgc2V0RGlyZWN0b3J5KF9uZXdEaXJzLm1hcCgoZCkgPT4gZC5uYW1lKSk7XG4gICAgfSxcbiAgICBbbmV3RGlycywgc2V0TmV3RGlycywgc2V0RGlyZWN0b3J5XSxcbiAgKTtcblxuICBjb25zdCBhZGREaXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgX25ld0RpcnMgPSBuZXdEaXJzLm1hcCgoZCkgPT4ge1xuICAgICAgcmV0dXJuIHsgLi4uZCwgZWRpdDogZmFsc2UgfTtcbiAgICB9KTtcbiAgICBfbmV3RGlycy5wdXNoKHsgZWRpdDogdHJ1ZSB9KTtcbiAgICBzZXROZXdEaXJzKF9uZXdEaXJzKTtcbiAgfSwgW25ld0RpcnMsIHNldE5ld0RpcnNdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7bmV3RGlycy5tYXAoKG5ld0RpciwgaWR4KSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNpbmdsZU5ld0RpclxuICAgICAgICAgICAga2V5PXtgJHtuZXdEaXIubmFtZX0tJHtpZHh9YH1cbiAgICAgICAgICAgIGlkeD17aWR4fVxuICAgICAgICAgICAgbmFtZT17bmV3RGlyLm5hbWV9XG4gICAgICAgICAgICBzZXROZXdEaXI9e3NldFNpbmdsZU5ld0Rpcn1cbiAgICAgICAgICAgIGVkaXQ9e25ld0Rpci5lZGl0fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICAgIHtuZXdEaXJzLmZpbHRlcigoZCkgPT4gZC5lZGl0KS5sZW5ndGggPiAwIHx8IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cIm1zLWF1dG8gYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gYWRkRGlyKCl9XG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1mb2xkZXItcGx1c1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgY29tcGxldGUgZGlyZWN0b3J5IHBhdGggb2YgdGhlIG5ldyBmaWxlIGVudGl0aWVzXG4gKiAoZGlyZWNvdHlCYXNlICsgbmV3IGRpcmVjdG9yaWVzKS5cbiAqL1xuY29uc3QgRGlyZWN0b3J5RmllbGQgPSAoe1xuICBkaXJlY3RvcnlCYXNlLFxuICByZWFkT25seSxcbiAgdmFsdWUsXG4gIHNldERpcmVjdG9yeSxcbiAgbGFiZWwsXG59KSA9PiB7XG4gIGNvbnN0IF9sYWJlbCA9IGxhYmVsIHx8IFwiRGlyZWN0b3J5XCI7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHJvdyBjYW9zZGItZi1maWxlLXVwbG9hZC1kaXJlY3RvcnktaW5wdXRcIj5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJjb2wtc20tMyBjb2wtZm9ybS1sYWJlbFwiPntfbGFiZWx9PC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTkgZC1mbGV4XCI+XG4gICAgICAgIHshZGlyZWN0b3J5QmFzZSB8fCAoXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBcInVuc2V0XCIsIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbC1wbGFpbnRleHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtkaXJlY3RvcnlCYXNlLmpvaW4oXCIvXCIpICsgXCIvXCJ9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICApfVxuICAgICAgICB7cmVhZE9ubHkgfHwgPE5ld0RpcnMgc2V0RGlyZWN0b3J5PXtzZXREaXJlY3Rvcnl9IHZhbHVlPXt2YWx1ZX0gLz59XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8qKlxuICogU2VsZWN0IGEgUmVjb3JkVHlwZSBmcm9tIGEgZHJvdyBkb3duLlxuICovXG5jb25zdCBTZWxlY3QgPSAoeyBvcHRpb25zLCBvbkNoYW5nZSwgdmFsdWUsIGNsYXNzTmFtZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNlbGVjdCBjbGFzc05hbWU9e2NsYXNzTmFtZX0gb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17dmFsdWV9PlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxuICAgICAge29wdGlvbnMubWFwKChvLCBpZHgpID0+IChcbiAgICAgICAgPG9wdGlvbiBrZXk9e2lkeH0gdmFsdWU9e28udmFsdWV9IHRpdGxlPXtvLnRpdGxlfT5cbiAgICAgICAgICB7by5sYWJlbCB8fCBvLnZhbHVlfVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICkpfVxuICAgIDwvc2VsZWN0PlxuICApO1xufTtcblxuLyoqXG4gKiBXcmFwcyB0aGUgU2VsZWN0b3IgYW5kIGhhbmRsZXMgYXN5bmNocm9ub3VzIHJlc29sdXRpb24gb2YgdGhlIGVsaWdpYmxlXG4gKiByZWNvcmQgdHlwZXMuXG4gKi9cbmNvbnN0IFJlY29yZFR5cGVGaWVsZCA9ICh7IG9wdGlvbnMsIHZhbHVlLCBvbkNoYW5nZSwgbGFiZWwgfSkgPT4ge1xuICBjb25zdCBfbGFiZWwgPSBsYWJlbCB8fCBcIlJlY29yZFR5cGVcIjtcbiAgY29uc3QgX3JlYWRPbmx5ID0gIW9wdGlvbnM7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IF9yZWFkT25seSA/IFwiZm9ybS1jb250cm9sLXBsYWludGV4dFwiIDogXCJmb3JtLWNvbnRyb2xcIjtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWItMSByb3cgY2Fvc2RiLWYtZmlsZS11cGxvYWQtcmVjb3JkdHlwZS1zZWxlY3RcIj5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJwZS0xIGNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e19sYWJlbH08L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tOVwiPlxuICAgICAgICB7IV9yZWFkT25seSB8fCAoXG4gICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSByZWFkT25seT17X3JlYWRPbmx5fSB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHtfcmVhZE9ubHkgfHwgKFxuICAgICAgICAgIDxBd2FpdFxuICAgICAgICAgICAgcHJvbWlzZT17UHJvbWlzZS5hbGwoW29wdGlvbnMsIHZhbHVlXSl9XG4gICAgICAgICAgICB0aGVuPXsocmVzb2x2ZWQpID0+IChcbiAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e3Jlc29sdmVkWzBdfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17cmVzb2x2ZWRbMV19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8qKlxuICogU2luZ2xlIGZpbGUgaW4gdGhlIERyb3B6b25lLlxuICovXG5jb25zdCBGaWxlID0gKHsgZmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gIHJldHVybiA8RmlsZU1vc2FpYyB7Li4uZmlsZX0gb25EZWxldGU9e3JlbW92ZUZpbGV9IC8+O1xufTtcblxuLyoqXG4gKiBIYW5kbGUgZmFpbGVkIGZpbGUgdXBsb2FkLlxuICovXG5jb25zdCBGaWxlVXBsb2FkRmFpbGVkID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxNZXNzYWdlIHR5cGU9XCJlcnJvclwiPlxuICAgICAge1wiVGhlIGZpbGUgdXBsb2FkIGZhaWxlZDogXCJ9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9NZXNzYWdlPlxuICApO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgc3VjY2Vzc2Z1bCBmaWxlIHVwbG9hZC5cbiAqL1xuY29uc3QgRmlsZVVwbG9hZFN1Y2Nlc3MgPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtjaGlsZHJlbiB8fCAoXG4gICAgICAgIDxNZXNzYWdlIHR5cGU9XCJzdWNjZXNzXCI+WW91ciBmaWxlcyBoYXZlIGJlZW4gdXBsb2FkZWQuPC9NZXNzYWdlPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8qKlxuICogU2hvdyB0aGUge25hbWUsIGlkLCBsaW5rfSBvZiBzdWNjZXNzZnVsbHkgaW5zZXJ0ZWQgZmlsZXMgb3Ige25hbWUsIGVycm9yfSBvZlxuICogZmFpbGVkIG9uZXMuXG4gKi9cbmNvbnN0IFNpbmdsZUZpbGVSZXNwb25zZSA9ICh7IGRpcmVjdG9yeSwgZmlsZSwgcmVzcG9uc2VFcnJvcnMgfSkgPT4ge1xuICB2YXIgcmVzdWx0O1xuICBpZiAocmVzcG9uc2VFcnJvcnMpIHtcbiAgICByZXN1bHQgPSAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02XCI+e2ZpbGUucGF0aC5yZXBsYWNlQWxsKGRpcmVjdG9yeSwgXCJcIil9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTYgdGV4dC1lbmRcIj5cbiAgICAgICAgICB7ZmlsZS5lcnJvciA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1kYW5nZXJcIj57ZmlsZS5lcnJvcn08L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwidGV4dC1zdWNjZXNzIGJpIGJpLWNoZWNrXCIgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNlwiPntmaWxlLnBhdGgucmVwbGFjZUFsbChkaXJlY3RvcnksIFwiXCIpfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS00XCI+e2ZpbGUuaWR9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTIgdGV4dC1lbmRcIj5cbiAgICAgICAgICA8YSBjbGFzc05hbWU9XCJidG4gY2Fvc2RiLWZzLWJ0bi1maWxlXCIgaHJlZj17ZmlsZS51cmx9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmFkZ2UgY2Fvc2RiLWxhYmVsLWZpbGVcIj5GPC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8bGkgY2xhc3NOYW1lPVwibGlzdC1ncm91cC1pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPntyZXN1bHR9PC9kaXY+XG4gICAgPC9saT5cbiAgKTtcbn07XG5cbi8qKlxuICogSGFuZGxlIHRoZSByZXNwb25zZSBvZiB0aGUgZmlsZSB1cGxvYWQgKHN1Y2Nlc3MgYW5kIGZhaWx1cmUpLlxuICovXG5jb25zdCBoYW5kbGVSZXNwb25zZSA9IChyZXNwb25zZSkgPT4ge1xuICB2YXIgaGVhZGVyID0gcmVzcG9uc2UuaGFzRXJyb3JzID8gKFxuICAgIDxNZXNzYWdlIHR5cGU9XCJlcnJvclwiPlRoZSBmaWxlIHVwbG9hZCBmYWlsZWQuPC9NZXNzYWdlPlxuICApIDogKFxuICAgIDw+XG4gICAgICA8TWVzc2FnZSB0eXBlPVwic3VjY2Vzc1wiPllvdXIgZmlsZXMgaGF2ZSBiZWVuIHVwbG9hZGVkLjwvTWVzc2FnZT5cbiAgICAgIHshcmVzcG9uc2UudXJsIHx8IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi0zXCI+XG4gICAgICAgICAgR28gdG8gZGlyZWN0b3J5OiA8YSBocmVmPXtyZXNwb25zZS51cmx9PntyZXNwb25zZS5kaXJlY3Rvcnl9PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIHtoZWFkZXJ9XG4gICAgICA8dWwgY2xhc3NOYW1lPVwibGlzdC1ncm91cFwiPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwibGlzdC1ncm91cC1pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTZcIj48L2Rpdj5cbiAgICAgICAgICAgIHtyZXNwb25zZS5oYXNFcnJvcnMgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTYgdGV4dC1lbmQgZnctYm9sZFwiPkVycm9yPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTMgZnctYm9sZFwiPklEPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tMyB0ZXh0LWVuZCBmdy1ib2xkXCI+RmlsZSBFbnRpdHk8L2Rpdj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICB7cmVzcG9uc2UubmV3RmlsZXM/Lm1hcCgoZiwgaWR4KSA9PiAoXG4gICAgICAgICAgPFNpbmdsZUZpbGVSZXNwb25zZVxuICAgICAgICAgICAgcmVzcG9uc2VFcnJvcnM9e3Jlc3BvbnNlLmhhc0Vycm9yc31cbiAgICAgICAgICAgIGRpcmVjdG9yeT17cmVzcG9uc2UuZGlyZWN0b3J5fVxuICAgICAgICAgICAgZmlsZT17Zn1cbiAgICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8qKlxuICogQXNzdXJlIHRoYXQgYSBkaXJlY3RvcnkgaXMgYW4gYXJyYXkgW1wiZGlyXCIsXCJzdWJkaXJcIl0sIG5vdCBhIHN0cmluZ1xuICogXCJkaXIvc3ViZGlyXCIuXG4gKi9cbmNvbnN0IHRvRGlyZWN0b3J5QXJyYXkgPSAoZGlyKSA9PiB7XG4gIGlmIChkaXI/LnNwbGl0KSB7XG4gICAgcmV0dXJuIGRpci5zcGxpdChcIi9cIikuZmlsdGVyKCh4KSA9PiB4KTtcbiAgfVxuICByZXR1cm4gZGlyO1xufTtcblxuLyoqXG4gKiBUaGUgRmlsZVVwbG9hZCB3aWRnZXQuXG4gKi9cbmNvbnN0IEZpbGVVcGxvYWQgPSAoe1xuICBmaWxlcyxcbiAgb25DYW5jZWwsXG4gIHJlY29yZFR5cGVTaG93LFxuICByZWNvcmRUeXBlcyxcbiAgZGlyZWN0b3J5QmFzZSxcbiAgZGlyZWN0b3J5LFxuICBkaXJlY3RvcnlSZWFkT25seSxcbiAgZGlyZWN0b3J5U2hvdyxcbiAgcmVjb3JkVHlwZSxcbiAgb25DaGFuZ2UsXG4gIG9uU3VibWl0LFxuICBhY2NlcHQsXG4gIHN0YXRlLFxuICBvbkZpbmlzaCxcbn0pID0+IHtcbiAgY29uc3QgW19maWxlcywgc2V0RmlsZXNdID0gdXNlU3RhdGUoZmlsZXMgfHwgW10pO1xuICBjb25zdCBbX2RpcmVjdG9yeSwgc2V0RGlyZWN0b3J5XSA9IHVzZVN0YXRlKFxuICAgIHRvRGlyZWN0b3J5QXJyYXkoZGlyZWN0b3J5KSB8fCBbXSxcbiAgKTtcbiAgY29uc3QgW19yZWNvcmRUeXBlLCBzZXRSZWNvcmRUeXBlXSA9IHVzZVN0YXRlKHJlY29yZFR5cGUpO1xuICBjb25zdCBbX3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShzdGF0ZSB8fCBcIlJFQURZXCIpO1xuICBjb25zdCBbX2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCBbX3Jlc3VsdHMsIHNldFJlc3VsdHNdID0gdXNlU3RhdGUoKTtcblxuICAvLyBjb252ZW5pZW5jZSBvYmplY3RcbiAgY29uc3QgY29tcGxldGVTdGF0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBmaWxlczogX2ZpbGVzLFxuICAgICAgZGlyZWN0b3J5OiB0b0RpcmVjdG9yeUFycmF5KGRpcmVjdG9yeUJhc2UpLmNvbmNhdChfZGlyZWN0b3J5KSxcbiAgICAgIHJlY29yZFR5cGU6IF9yZWNvcmRUeXBlLFxuICAgIH07XG4gIH0sIFtfZmlsZXMsIF9yZWNvcmRUeXBlLCBfZGlyZWN0b3J5LCBkaXJlY3RvcnlCYXNlXSk7XG5cbiAgLy8gcHJvcGFnYXRlIGNoYW5nZXMgdG8gcGFyZW50IGNvbXBvbmVudCBpZiBuZWNlc3NhcnlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgIG9uQ2hhbmdlKGNvbXBsZXRlU3RhdGUpO1xuICAgIH1cbiAgfSwgW2NvbXBsZXRlU3RhdGUsIG9uQ2hhbmdlXSk7XG5cbiAgY29uc3QgYWN0aW9uQnV0dG9ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogXCJhZnRlclwiLFxuICAgICAgZGVsZXRlQnV0dG9uOiBvbkNhbmNlbCAmJiB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIsXG4gICAgICAgIGNoaWxkcmVuOiBbXCJDYW5jZWxcIl0sXG4gICAgICAgIHJlc2V0U3R5bGVzOiB0cnVlLFxuICAgICAgICBvbkNsaWNrOiBvbkNhbmNlbCxcbiAgICAgIH0sXG4gICAgICB1cGxvYWRCdXR0b246IG9uU3VibWl0ICYmIHtcbiAgICAgICAgZGlzYWJsZWQ6ICFjb21wbGV0ZVN0YXRlLmZpbGVzPy5sZW5ndGggPiAwLFxuICAgICAgICBjbGFzc05hbWU6XG4gICAgICAgICAgY29tcGxldGVTdGF0ZS5maWxlcz8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBcImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICA6IFwiYnRuIGJ0bi1wcmltYXJ5IGRpc2FibGVkXCIsXG4gICAgICAgIHJlc2V0U3R5bGVzOiB0cnVlLFxuICAgICAgICBjaGlsZHJlbjogW1wiVXBsb2FkXCJdLFxuICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgc2V0U3RhdGUoXCJTRU5ESU5HXCIpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG9uU3VibWl0KHtcbiAgICAgICAgICAgICAgLi4uY29tcGxldGVTdGF0ZSxcbiAgICAgICAgICAgICAgcmVjb3JkVHlwZTogYXdhaXQgY29tcGxldGVTdGF0ZS5yZWNvcmRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gaGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgc2V0U3RhdGUoXCJTVUNDRVNTXCIpO1xuICAgICAgICAgICAgc2V0UmVzdWx0cyhyZXN1bHRzKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgc2V0U3RhdGUoXCJGQUlMRURcIik7XG4gICAgICAgICAgICBzZXRFcnJvcig8RmlsZVVwbG9hZEZhaWxlZD57ZXJyb3IubWVzc2FnZX08L0ZpbGVVcGxvYWRGYWlsZWQ+KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sIFtjb21wbGV0ZVN0YXRlLCBvblN1Ym1pdCwgc2V0U3RhdGUsIHNldEVycm9yLCBvbkNhbmNlbF0pO1xuXG4gIGNvbnN0IHVwZGF0ZUZpbGVzID0gdXNlQ2FsbGJhY2soXG4gICAgKGluY29tbWluZ0ZpbGVzKSA9PiB7XG4gICAgICBzZXRGaWxlcyhpbmNvbW1pbmdGaWxlcyk7XG4gICAgfSxcbiAgICBbc2V0RmlsZXNdLFxuICApO1xuICBjb25zdCB1cGRhdGVSZWNvcmRUeXBlID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIHNldFJlY29yZFR5cGUoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW3NldFJlY29yZFR5cGVdLFxuICApO1xuXG4gIGNvbnN0IHJlbW92ZUZpbGUgPSAoaWQpID0+IHtcbiAgICBzZXRGaWxlcyhfZmlsZXMuZmlsdGVyKCh4KSA9PiB4LmlkICE9PSBpZCkpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e3sgbWluV2lkdGg6IFwiNTAwcHhcIiB9fT5cbiAgICAgIHtfc3RhdGUgPT09IFwiU0VORElOR1wiID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPExvYWRpbmdJbmZvIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IChcbiAgICAgICAgZmFsc2VcbiAgICAgICl9XG4gICAgICB7X3N0YXRlID09PSBcIlJFQURZXCIgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgeyhyZWNvcmRUeXBlcyB8fCBfcmVjb3JkVHlwZSkgJiYgcmVjb3JkVHlwZVNob3cgJiYgKFxuICAgICAgICAgICAgPFJlY29yZFR5cGVGaWVsZFxuICAgICAgICAgICAgICBvcHRpb25zPXtyZWNvcmRUeXBlc31cbiAgICAgICAgICAgICAgdmFsdWU9e19yZWNvcmRUeXBlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dXBkYXRlUmVjb3JkVHlwZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7IWRpcmVjdG9yeVNob3cgfHwgKFxuICAgICAgICAgICAgPERpcmVjdG9yeUZpZWxkXG4gICAgICAgICAgICAgIGRpcmVjdG9yeUJhc2U9e3RvRGlyZWN0b3J5QXJyYXkoZGlyZWN0b3J5QmFzZSl9XG4gICAgICAgICAgICAgIHJlYWRPbmx5PXtkaXJlY3RvcnlSZWFkT25seX1cbiAgICAgICAgICAgICAgdmFsdWU9e19kaXJlY3Rvcnl9XG4gICAgICAgICAgICAgIHNldERpcmVjdG9yeT17c2V0RGlyZWN0b3J5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxEcm9wem9uZVxuICAgICAgICAgICAgYWNjZXB0PXthY2NlcHR9XG4gICAgICAgICAgICBhY3Rpb25CdXR0b25zPXthY3Rpb25CdXR0b25zfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3VwZGF0ZUZpbGVzfVxuICAgICAgICAgICAgdmFsdWU9e19maWxlc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7X2ZpbGVzLm1hcCgoZmlsZSkgPT4gKFxuICAgICAgICAgICAgICA8RmlsZSBrZXk9e2ZpbGUuaWR9IGZpbGU9e2ZpbGV9IHJlbW92ZUZpbGU9e3JlbW92ZUZpbGV9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0Ryb3B6b25lPlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIGZhbHNlXG4gICAgICApfVxuICAgICAge19lcnJvcn1cbiAgICAgIHshKF9zdGF0ZSA9PT0gXCJTVUNDRVNTXCIpIHx8IChcbiAgICAgICAgPEZpbGVVcGxvYWRTdWNjZXNzPntfcmVzdWx0c308L0ZpbGVVcGxvYWRTdWNjZXNzPlxuICAgICAgKX1cbiAgICAgIHsoX3N0YXRlID09PSBcIlNVQ0NFU1NcIiB8fCBfc3RhdGUgPT09IFwiRkFJTEVEXCIpICYmIG9uRmluaXNoICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIHRleHQtZW5kXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInJlc2V0XCJcbiAgICAgICAgICAgIHRpdGxlPVwiQ2xvc2UgdGhpcyBmaWxlIHVwbG9hZCBkaWFsb2d1ZS5cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkZpbmlzaH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICBPa1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5GaWxlVXBsb2FkLmRlZmF1bHRQcm9wcyA9IHtcbiAgZGlyZWN0b3J5U2hvdzogdHJ1ZSxcbiAgZGlyZWN0b3J5UmVhZE9ubHk6IGZhbHNlLFxuICByZWNvcmRUeXBlU2hvdzogdHJ1ZSxcbiAgZGlyZWN0b3J5QmFzZTogW10sXG4gIGRpcmVjdG9yeTogW10sXG59O1xuXG5leHBvcnQgeyBGaWxlVXBsb2FkIH07XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vaW5kZXguc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vaW5kZXguc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZXF1aXJlIiwiZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX182MzlfXyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmciLCJhcmdUeXBlIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsImlubmVyIiwiYXBwbHkiLCJ0b1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsImluY2x1ZGVzIiwia2V5IiwiY2FsbCIsImpvaW4iLCJkZWZhdWx0IiwiX19fQ1NTX0xPQURFUl9FWFBPUlRfX18iLCJpZCIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwidGhpcyIsIm1hcCIsIml0ZW0iLCJjb250ZW50IiwibmVlZExheWVyIiwiY29uY2F0IiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsInVuZGVmaW5lZCIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiX2siLCJjc3NNYXBwaW5nIiwiYnRvYSIsImJhc2U2NCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsImRhdGEiLCJzb3VyY2VNYXBwaW5nIiwiY29uZGl0aW9uIiwiZm9ybWF0IiwiYSIsImIiLCJjIiwiZCIsImYiLCJlcnJvciIsIkVycm9yIiwiYXJncyIsImFyZ0luZGV4IiwicmVwbGFjZSIsIm5hbWUiLCJmcmFtZXNUb1BvcCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfbGVuIiwidmFsaWRhdG9ycyIsIl9rZXkiLCJfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIyIiwiX2xlbjIiLCJfa2V5MiIsImZvckVhY2giLCJ2YWxpZGF0b3IiLCJyZXN1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwidmFsaWRhdGUiLCJjaGVja1R5cGUiLCJpc1JlcXVpcmVkIiwicHJvcHMiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsImNvbXBvbmVudE5hbWVTYWZlIiwicHJvcEZ1bGxOYW1lU2FmZSIsImNoYWluZWRDaGVja1R5cGUiLCJiaW5kIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInNlY3JldCIsImVyciIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYWEiLCJjYSIsInAiLCJkYSIsIlNldCIsImVhIiwiZmEiLCJoYSIsImFkZCIsImlhIiwid2luZG93IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiamEiLCJrYSIsImxhIiwibWEiLCJ2IiwiZyIsImFjY2VwdHNCb29sZWFucyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVOYW1lc3BhY2UiLCJtdXN0VXNlUHJvcGVydHkiLCJwcm9wZXJ0eU5hbWUiLCJ0eXBlIiwic2FuaXRpemVVUkwiLCJyZW1vdmVFbXB0eVN0cmluZyIsInoiLCJzcGxpdCIsInRvTG93ZXJDYXNlIiwicmEiLCJzYSIsInRvVXBwZXJDYXNlIiwidGEiLCJzbGljZSIsInBhIiwiaXNOYU4iLCJxYSIsInRlc3QiLCJvYSIsInJlbW92ZUF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZU5TIiwieGxpbmtIcmVmIiwidWEiLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsInZhIiwiU3ltYm9sIiwiZm9yIiwid2EiLCJ5YSIsInphIiwiQWEiLCJCYSIsIkNhIiwiRGEiLCJFYSIsIkZhIiwiR2EiLCJIYSIsIklhIiwiSmEiLCJpdGVyYXRvciIsIkthIiwiTGEiLCJBIiwiYXNzaWduIiwiTWEiLCJzdGFjayIsInRyaW0iLCJtYXRjaCIsIk5hIiwiT2EiLCJwcmVwYXJlU3RhY2tUcmFjZSIsInNldCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJsIiwiaCIsImRpc3BsYXlOYW1lIiwiUGEiLCJ0YWciLCJyZW5kZXIiLCJRYSIsIiQkdHlwZW9mIiwiX2NvbnRleHQiLCJfcGF5bG9hZCIsIl9pbml0IiwiUmEiLCJTYSIsIlRhIiwibm9kZU5hbWUiLCJWYSIsIl92YWx1ZVRyYWNrZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJjb25zdHJ1Y3RvciIsImdldCIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXRWYWx1ZSIsInNldFZhbHVlIiwic3RvcFRyYWNraW5nIiwiVWEiLCJXYSIsImNoZWNrZWQiLCJYYSIsImFjdGl2ZUVsZW1lbnQiLCJib2R5IiwiWWEiLCJkZWZhdWx0Q2hlY2tlZCIsImRlZmF1bHRWYWx1ZSIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsIlphIiwiaW5pdGlhbFZhbHVlIiwiY29udHJvbGxlZCIsImFiIiwiYmIiLCJjYiIsImRiIiwib3duZXJEb2N1bWVudCIsImViIiwiZmIiLCJvcHRpb25zIiwic2VsZWN0ZWQiLCJkZWZhdWx0U2VsZWN0ZWQiLCJkaXNhYmxlZCIsImdiIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZHJlbiIsImhiIiwiaWIiLCJqYiIsInRleHRDb250ZW50Iiwia2IiLCJsYiIsIm1iIiwibmIiLCJuYW1lc3BhY2VVUkkiLCJpbm5lckhUTUwiLCJ2YWx1ZU9mIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGQiLCJNU0FwcCIsImV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uIiwib2IiLCJsYXN0Q2hpbGQiLCJub2RlVHlwZSIsIm5vZGVWYWx1ZSIsInBiIiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJhc3BlY3RSYXRpbyIsImJvcmRlckltYWdlT3V0c2V0IiwiYm9yZGVySW1hZ2VTbGljZSIsImJvcmRlckltYWdlV2lkdGgiLCJib3hGbGV4IiwiYm94RmxleEdyb3VwIiwiYm94T3JkaW5hbEdyb3VwIiwiY29sdW1uQ291bnQiLCJjb2x1bW5zIiwiZmxleCIsImZsZXhHcm93IiwiZmxleFBvc2l0aXZlIiwiZmxleFNocmluayIsImZsZXhOZWdhdGl2ZSIsImZsZXhPcmRlciIsImdyaWRBcmVhIiwiZ3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3BhbiIsImdyaWRSb3dTdGFydCIsImdyaWRDb2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVtblNwYW4iLCJncmlkQ29sdW1uU3RhcnQiLCJmb250V2VpZ2h0IiwibGluZUNsYW1wIiwibGluZUhlaWdodCIsIm9wYWNpdHkiLCJvcmRlciIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsInFiIiwicmIiLCJzYiIsInN0eWxlIiwiaW5kZXhPZiIsInNldFByb3BlcnR5Iiwia2V5cyIsImNoYXJBdCIsInN1YnN0cmluZyIsInRiIiwibWVudWl0ZW0iLCJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJwYXJhbSIsInNvdXJjZSIsInRyYWNrIiwid2JyIiwidWIiLCJ2YiIsImlzIiwid2IiLCJ4YiIsInRhcmdldCIsInNyY0VsZW1lbnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsInBhcmVudE5vZGUiLCJ5YiIsInpiIiwiQWIiLCJCYiIsIkNiIiwic3RhdGVOb2RlIiwiRGIiLCJFYiIsIkZiIiwiR2IiLCJIYiIsIkliIiwiSmIiLCJLYiIsIkxiIiwiTWIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk5iIiwibSIsIm9uRXJyb3IiLCJPYiIsIlBiIiwiUWIiLCJSYiIsIlNiIiwiVGIiLCJWYiIsImFsdGVybmF0ZSIsInJldHVybiIsImZsYWdzIiwiV2IiLCJtZW1vaXplZFN0YXRlIiwiZGVoeWRyYXRlZCIsIlhiIiwiWmIiLCJjaGlsZCIsInNpYmxpbmciLCJjdXJyZW50IiwiWWIiLCIkYiIsImFjIiwidW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayIsImJjIiwidW5zdGFibGVfY2FuY2VsQ2FsbGJhY2siLCJjYyIsInVuc3RhYmxlX3Nob3VsZFlpZWxkIiwiZGMiLCJ1bnN0YWJsZV9yZXF1ZXN0UGFpbnQiLCJCIiwidW5zdGFibGVfbm93IiwiZWMiLCJ1bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCIsImZjIiwidW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHkiLCJnYyIsInVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5IiwiaGMiLCJ1bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSIsImljIiwidW5zdGFibGVfTG93UHJpb3JpdHkiLCJqYyIsInVuc3RhYmxlX0lkbGVQcmlvcml0eSIsImtjIiwibGMiLCJvYyIsIk1hdGgiLCJjbHozMiIsInBjIiwicWMiLCJsb2ciLCJMTjIiLCJyYyIsInNjIiwidGMiLCJ1YyIsInBlbmRpbmdMYW5lcyIsInN1c3BlbmRlZExhbmVzIiwicGluZ2VkTGFuZXMiLCJlbnRhbmdsZWRMYW5lcyIsImVudGFuZ2xlbWVudHMiLCJ2YyIsInhjIiwieWMiLCJ6YyIsIkFjIiwiZXZlbnRUaW1lcyIsIkNjIiwiQyIsIkRjIiwiRWMiLCJGYyIsIkdjIiwiSGMiLCJJYyIsIkpjIiwiS2MiLCJMYyIsIk1jIiwiTmMiLCJPYyIsIk1hcCIsIlBjIiwiUWMiLCJSYyIsIlNjIiwiZGVsZXRlIiwicG9pbnRlcklkIiwiVGMiLCJuYXRpdmVFdmVudCIsImJsb2NrZWRPbiIsImRvbUV2ZW50TmFtZSIsImV2ZW50U3lzdGVtRmxhZ3MiLCJ0YXJnZXRDb250YWluZXJzIiwiVmMiLCJXYyIsInByaW9yaXR5IiwiaXNEZWh5ZHJhdGVkIiwiY29udGFpbmVySW5mbyIsIlhjIiwiWWMiLCJkaXNwYXRjaEV2ZW50Iiwic2hpZnQiLCJaYyIsIiRjIiwiYWQiLCJiZCIsImNkIiwiUmVhY3RDdXJyZW50QmF0Y2hDb25maWciLCJkZCIsImVkIiwidHJhbnNpdGlvbiIsImZkIiwiZ2QiLCJoZCIsIlVjIiwic3RvcFByb3BhZ2F0aW9uIiwiamQiLCJrZCIsImxkIiwibWQiLCJuZCIsIm9kIiwia2V5Q29kZSIsImNoYXJDb2RlIiwicGQiLCJxZCIsInJkIiwiX3JlYWN0TmFtZSIsIl90YXJnZXRJbnN0IiwiY3VycmVudFRhcmdldCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZXR1cm5WYWx1ZSIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwicHJldmVudERlZmF1bHQiLCJjYW5jZWxCdWJibGUiLCJwZXJzaXN0IiwiaXNQZXJzaXN0ZW50Iiwid2QiLCJ4ZCIsInlkIiwic2QiLCJldmVudFBoYXNlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJ0aW1lU3RhbXAiLCJEYXRlIiwibm93IiwiaXNUcnVzdGVkIiwidGQiLCJ1ZCIsInZpZXciLCJkZXRhaWwiLCJ2ZCIsIkFkIiwic2NyZWVuWCIsInNjcmVlblkiLCJjbGllbnRYIiwiY2xpZW50WSIsInBhZ2VYIiwicGFnZVkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiZ2V0TW9kaWZpZXJTdGF0ZSIsInpkIiwiYnV0dG9uIiwiYnV0dG9ucyIsInJlbGF0ZWRUYXJnZXQiLCJmcm9tRWxlbWVudCIsInRvRWxlbWVudCIsIm1vdmVtZW50WCIsIm1vdmVtZW50WSIsIkJkIiwiRGQiLCJkYXRhVHJhbnNmZXIiLCJGZCIsIkhkIiwiYW5pbWF0aW9uTmFtZSIsImVsYXBzZWRUaW1lIiwicHNldWRvRWxlbWVudCIsIklkIiwiY2xpcGJvYXJkRGF0YSIsIkpkIiwiTGQiLCJNZCIsIkVzYyIsIlNwYWNlYmFyIiwiTGVmdCIsIlVwIiwiUmlnaHQiLCJEb3duIiwiRGVsIiwiV2luIiwiTWVudSIsIkFwcHMiLCJTY3JvbGwiLCJNb3pQcmludGFibGVLZXkiLCJOZCIsIk9kIiwiQWx0IiwiQ29udHJvbCIsIk1ldGEiLCJTaGlmdCIsIlBkIiwiUWQiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjb2RlIiwicmVwZWF0IiwibG9jYWxlIiwid2hpY2giLCJSZCIsIlRkIiwid2lkdGgiLCJoZWlnaHQiLCJwcmVzc3VyZSIsInRhbmdlbnRpYWxQcmVzc3VyZSIsInRpbHRYIiwidGlsdFkiLCJ0d2lzdCIsInBvaW50ZXJUeXBlIiwiaXNQcmltYXJ5IiwiVmQiLCJ0b3VjaGVzIiwidGFyZ2V0VG91Y2hlcyIsImNoYW5nZWRUb3VjaGVzIiwiWGQiLCJZZCIsImRlbHRhWCIsIndoZWVsRGVsdGFYIiwiZGVsdGFZIiwid2hlZWxEZWx0YVkiLCJ3aGVlbERlbHRhIiwiZGVsdGFaIiwiZGVsdGFNb2RlIiwiWmQiLCIkZCIsImFlIiwiYmUiLCJkb2N1bWVudE1vZGUiLCJjZSIsImRlIiwiZWUiLCJmZSIsImdlIiwiaGUiLCJpZSIsImxlIiwiY29sb3IiLCJkYXRlIiwiZGF0ZXRpbWUiLCJlbWFpbCIsIm1vbnRoIiwicGFzc3dvcmQiLCJyYW5nZSIsInNlYXJjaCIsInRlbCIsInRleHQiLCJ0aW1lIiwidXJsIiwid2VlayIsIm1lIiwibmUiLCJvZSIsImV2ZW50IiwibGlzdGVuZXJzIiwicGUiLCJxZSIsInJlIiwic2UiLCJ0ZSIsInVlIiwidmUiLCJ3ZSIsInhlIiwieWUiLCJ6ZSIsIm9uaW5wdXQiLCJBZSIsImRldGFjaEV2ZW50IiwiQmUiLCJDZSIsImF0dGFjaEV2ZW50IiwiRGUiLCJFZSIsIkZlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJvZmZzZXQiLCJuZXh0U2libGluZyIsIkxlIiwiY29udGFpbnMiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIsIk1lIiwiSFRNTElGcmFtZUVsZW1lbnQiLCJjb250ZW50V2luZG93IiwiaHJlZiIsIk5lIiwiY29udGVudEVkaXRhYmxlIiwiT2UiLCJmb2N1c2VkRWxlbSIsInNlbGVjdGlvblJhbmdlIiwiZG9jdW1lbnRFbGVtZW50Iiwic3RhcnQiLCJlbmQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsIm1pbiIsImRlZmF1bHRWaWV3IiwiZ2V0U2VsZWN0aW9uIiwiZXh0ZW5kIiwicmFuZ2VDb3VudCIsImFuY2hvck5vZGUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c05vZGUiLCJmb2N1c09mZnNldCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInNldEVuZCIsImxlZnQiLCJzY3JvbGxMZWZ0IiwidG9wIiwic2Nyb2xsVG9wIiwiZm9jdXMiLCJQZSIsIlFlIiwiUmUiLCJTZSIsIlRlIiwiVWUiLCJWZSIsIldlIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uc3RhcnQiLCJ0cmFuc2l0aW9uZW5kIiwiWGUiLCJZZSIsIlplIiwiYW5pbWF0aW9uIiwiJGUiLCJhZiIsImJmIiwiY2YiLCJkZiIsImVmIiwiZmYiLCJnZiIsImhmIiwibGYiLCJtZiIsIm5mIiwiVWIiLCJpbnN0YW5jZSIsImxpc3RlbmVyIiwiRCIsIm9mIiwiaGFzIiwicGYiLCJxZiIsInJmIiwicmFuZG9tIiwic2YiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm4iLCJ0IiwiSiIsIngiLCJ1IiwidyIsIkYiLCJ0ZiIsInVmIiwicGFyZW50V2luZG93IiwidmYiLCJ3ZiIsIm5hIiwieGEiLCIkYSIsImJhIiwiamUiLCJjaGFyIiwia2UiLCJ1bnNoaWZ0IiwieGYiLCJ5ZiIsInpmIiwiQWYiLCJCZiIsIkNmIiwiRGYiLCJFZiIsIl9faHRtbCIsIkZmIiwic2V0VGltZW91dCIsIkdmIiwiY2xlYXJUaW1lb3V0IiwiSGYiLCJQcm9taXNlIiwiSmYiLCJxdWV1ZU1pY3JvdGFzayIsInJlc29sdmUiLCJ0aGVuIiwiY2F0Y2giLCJJZiIsIktmIiwiTGYiLCJNZiIsInByZXZpb3VzU2libGluZyIsIk5mIiwiT2YiLCJQZiIsIlFmIiwiUmYiLCJTZiIsIlRmIiwiVWYiLCJFIiwiRyIsIlZmIiwiSCIsIldmIiwiWGYiLCJZZiIsImNvbnRleHRUeXBlcyIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQiLCJfX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dCIsIlpmIiwiY2hpbGRDb250ZXh0VHlwZXMiLCIkZiIsImFnIiwiYmciLCJnZXRDaGlsZENvbnRleHQiLCJjZyIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0IiwiZGciLCJlZyIsImZnIiwiZ2ciLCJoZyIsImpnIiwia2ciLCJsZyIsIm1nIiwibmciLCJvZyIsInBnIiwicWciLCJyZyIsInNnIiwidGciLCJ1ZyIsInZnIiwid2ciLCJ4ZyIsInlnIiwiSSIsInpnIiwiQWciLCJCZyIsImRlbGV0aW9ucyIsIkNnIiwicGVuZGluZ1Byb3BzIiwib3ZlcmZsb3ciLCJ0cmVlQ29udGV4dCIsInJldHJ5TGFuZSIsIkRnIiwibW9kZSIsIkVnIiwiRmciLCJHZyIsIm1lbW9pemVkUHJvcHMiLCJIZyIsIklnIiwiSmciLCJLZyIsIkxnIiwiZGVmYXVsdFByb3BzIiwiTWciLCJOZyIsIk9nIiwiUGciLCJRZyIsIlJnIiwiX2N1cnJlbnRWYWx1ZSIsIlNnIiwiY2hpbGRMYW5lcyIsIlRnIiwiZGVwZW5kZW5jaWVzIiwiZmlyc3RDb250ZXh0IiwibGFuZXMiLCJVZyIsIlZnIiwiY29udGV4dCIsIm1lbW9pemVkVmFsdWUiLCJuZXh0IiwiV2ciLCJYZyIsIllnIiwiaW50ZXJsZWF2ZWQiLCJaZyIsIiRnIiwiYWgiLCJ1cGRhdGVRdWV1ZSIsImJhc2VTdGF0ZSIsImZpcnN0QmFzZVVwZGF0ZSIsImxhc3RCYXNlVXBkYXRlIiwic2hhcmVkIiwicGVuZGluZyIsImVmZmVjdHMiLCJiaCIsImNoIiwiZXZlbnRUaW1lIiwibGFuZSIsInBheWxvYWQiLCJjYWxsYmFjayIsImRoIiwiSyIsImVoIiwiZmgiLCJnaCIsInEiLCJyIiwieSIsImhoIiwiaWgiLCJqaCIsIkNvbXBvbmVudCIsInJlZnMiLCJraCIsIm5oIiwiaXNNb3VudGVkIiwiX3JlYWN0SW50ZXJuYWxzIiwiZW5xdWV1ZVNldFN0YXRlIiwiTCIsImxoIiwibWgiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZUZvcmNlVXBkYXRlIiwib2giLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsInBoIiwiY29udGV4dFR5cGUiLCJzdGF0ZSIsInVwZGF0ZXIiLCJxaCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsInJoIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUiLCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50RGlkTW91bnQiLCJzaCIsInJlZiIsIl9vd25lciIsIl9zdHJpbmdSZWYiLCJ0aCIsInVoIiwidmgiLCJpbmRleCIsIndoIiwieGgiLCJ5aCIsImltcGxlbWVudGF0aW9uIiwiemgiLCJBaCIsImRvbmUiLCJCaCIsIkNoIiwiRGgiLCJFaCIsIkZoIiwiR2giLCJIaCIsIkloIiwidGFnTmFtZSIsIkpoIiwiS2giLCJMaCIsIk0iLCJNaCIsInJldmVhbE9yZGVyIiwiTmgiLCJPaCIsIl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5IiwiUGgiLCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyIiwiUWgiLCJSaCIsIk4iLCJPIiwiUCIsIlNoIiwiVGgiLCJVaCIsIlZoIiwiUSIsIldoIiwiWGgiLCJZaCIsIlpoIiwiJGgiLCJhaSIsImJpIiwiY2kiLCJiYXNlUXVldWUiLCJxdWV1ZSIsImRpIiwiZWkiLCJmaSIsImxhc3RSZW5kZXJlZFJlZHVjZXIiLCJhY3Rpb24iLCJoYXNFYWdlclN0YXRlIiwiZWFnZXJTdGF0ZSIsImxhc3RSZW5kZXJlZFN0YXRlIiwiZGlzcGF0Y2giLCJnaSIsImhpIiwiaWkiLCJqaSIsImtpIiwiZ2V0U25hcHNob3QiLCJsaSIsIm1pIiwiUiIsIm5pIiwibGFzdEVmZmVjdCIsInN0b3JlcyIsIm9pIiwicGkiLCJxaSIsInJpIiwiY3JlYXRlIiwiZGVzdHJveSIsImRlcHMiLCJzaSIsInRpIiwidWkiLCJ2aSIsIndpIiwieGkiLCJ5aSIsInppIiwiQWkiLCJCaSIsIkNpIiwiRGkiLCJFaSIsIkZpIiwiR2kiLCJIaSIsIklpIiwiSmkiLCJyZWFkQ29udGV4dCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VJbnNlcnRpb25FZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVkdWNlciIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlRGVidWdWYWx1ZSIsInVzZURlZmVycmVkVmFsdWUiLCJ1c2VUcmFuc2l0aW9uIiwidXNlTXV0YWJsZVNvdXJjZSIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwidXNlSWQiLCJ1bnN0YWJsZV9pc05ld1JlY29uY2lsZXIiLCJpZGVudGlmaWVyUHJlZml4IiwiS2kiLCJtZXNzYWdlIiwiZGlnZXN0IiwiTGkiLCJNaSIsImNvbnNvbGUiLCJOaSIsIldlYWtNYXAiLCJPaSIsIlBpIiwiUWkiLCJSaSIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwiU2kiLCJjb21wb25lbnRTdGFjayIsIlRpIiwicGluZ0NhY2hlIiwiVWkiLCJWaSIsIldpIiwiWGkiLCJSZWFjdEN1cnJlbnRPd25lciIsIllpIiwiWmkiLCIkaSIsImFqIiwiYmoiLCJjb21wYXJlIiwiY2oiLCJkaiIsImVqIiwiYmFzZUxhbmVzIiwiY2FjaGVQb29sIiwidHJhbnNpdGlvbnMiLCJmaiIsImdqIiwiaGoiLCJpaiIsImpqIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUiLCJjb21wb25lbnRXaWxsVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwia2oiLCJsaiIsInBlbmRpbmdDb250ZXh0IiwibWoiLCJBaiIsIkJqIiwiQ2oiLCJEaiIsIm5qIiwib2oiLCJwaiIsImZhbGxiYWNrIiwicWoiLCJyaiIsInRqIiwiZGF0YXNldCIsImRnc3QiLCJ1aiIsInZqIiwiX3JlYWN0UmV0cnkiLCJzaiIsInN1YnRyZWVGbGFncyIsIndqIiwieGoiLCJpc0JhY2t3YXJkcyIsInJlbmRlcmluZyIsInJlbmRlcmluZ1N0YXJ0VGltZSIsImxhc3QiLCJ0YWlsIiwidGFpbE1vZGUiLCJ5aiIsIkVqIiwiUyIsIkZqIiwiR2oiLCJ3YXNNdWx0aXBsZSIsIm11bHRpcGxlIiwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiwib25DbGljayIsIm9uY2xpY2siLCJzaXplIiwiY3JlYXRlRWxlbWVudE5TIiwiYXV0b0ZvY3VzIiwiY3JlYXRlVGV4dE5vZGUiLCJUIiwiSGoiLCJJaiIsIkpqIiwiS2oiLCJVIiwiTGoiLCJXZWFrU2V0IiwiViIsIk1qIiwiVyIsIk5qIiwiT2oiLCJRaiIsIlJqIiwiU2oiLCJUaiIsIlVqIiwiVmoiLCJXaiIsImluc2VydEJlZm9yZSIsIl9yZWFjdFJvb3RDb250YWluZXIiLCJYaiIsIlgiLCJZaiIsIlpqIiwiYWsiLCJvbkNvbW1pdEZpYmVyVW5tb3VudCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiYmsiLCJjayIsImRrIiwiZWsiLCJmayIsImlzSGlkZGVuIiwiZ2siLCJoayIsImRpc3BsYXkiLCJpayIsImprIiwia2siLCJsayIsIl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlIiwic3JjIiwiV2siLCJtayIsImNlaWwiLCJuayIsIm9rIiwicGsiLCJZIiwiWiIsInFrIiwicmsiLCJzayIsInRrIiwidWsiLCJJbmZpbml0eSIsInZrIiwid2siLCJ4ayIsInlrIiwiemsiLCJBayIsIkJrIiwiQ2siLCJEayIsIkVrIiwiY2FsbGJhY2tOb2RlIiwiZXhwaXJhdGlvblRpbWVzIiwiZXhwaXJlZExhbmVzIiwid2MiLCJjYWxsYmFja1ByaW9yaXR5IiwiaWciLCJGayIsIkdrIiwiSGsiLCJJayIsIkprIiwiS2siLCJMayIsIk1rIiwiTmsiLCJPayIsIlBrIiwiZmluaXNoZWRXb3JrIiwiZmluaXNoZWRMYW5lcyIsIlFrIiwidGltZW91dEhhbmRsZSIsIlJrIiwiU2siLCJUayIsIlVrIiwiVmsiLCJtdXRhYmxlUmVhZExhbmVzIiwiQmMiLCJQaiIsIm9uQ29tbWl0RmliZXJSb290IiwibWMiLCJvblJlY292ZXJhYmxlRXJyb3IiLCJYayIsIm9uUG9zdENvbW1pdEZpYmVyUm9vdCIsIllrIiwiWmsiLCJhbCIsImlzUmVhY3RDb21wb25lbnQiLCJwZW5kaW5nQ2hpbGRyZW4iLCJibCIsIm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEiLCJjbCIsImNhY2hlIiwicGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyIsImVsIiwiZmwiLCJnbCIsImhsIiwiaWwiLCJqbCIsInpqIiwiJGsiLCJsbCIsInJlcG9ydEVycm9yIiwibWwiLCJfaW50ZXJuYWxSb290IiwibmwiLCJvbCIsInBsIiwicWwiLCJzbCIsInJsIiwidW5tb3VudCIsInVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uIiwic3BsaWNlIiwicXVlcnlTZWxlY3RvckFsbCIsImZvcm0iLCJ0bCIsInVzaW5nQ2xpZW50RW50cnlQb2ludCIsIkV2ZW50cyIsInVsIiwiZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UiLCJidW5kbGVUeXBlIiwidmVyc2lvbiIsInJlbmRlcmVyUGFja2FnZU5hbWUiLCJ2bCIsInJlbmRlcmVyQ29uZmlnIiwib3ZlcnJpZGVIb29rU3RhdGUiLCJvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGgiLCJvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGgiLCJvdmVycmlkZVByb3BzIiwib3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGgiLCJvdmVycmlkZVByb3BzUmVuYW1lUGF0aCIsInNldEVycm9ySGFuZGxlciIsInNldFN1c3BlbnNlSGFuZGxlciIsInNjaGVkdWxlVXBkYXRlIiwiY3VycmVudERpc3BhdGNoZXJSZWYiLCJmaW5kSG9zdEluc3RhbmNlQnlGaWJlciIsImZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaCIsInNjaGVkdWxlUmVmcmVzaCIsInNjaGVkdWxlUm9vdCIsInNldFJlZnJlc2hIYW5kbGVyIiwiZ2V0Q3VycmVudEZpYmVyIiwicmVjb25jaWxlclZlcnNpb24iLCJfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJ3bCIsImlzRGlzYWJsZWQiLCJzdXBwb3J0c0ZpYmVyIiwiaW5qZWN0IiwiY3JlYXRlUG9ydGFsIiwiZGwiLCJjcmVhdGVSb290IiwidW5zdGFibGVfc3RyaWN0TW9kZSIsImZpbmRET01Ob2RlIiwiZmx1c2hTeW5jIiwiaHlkcmF0ZSIsImh5ZHJhdGVSb290IiwiaHlkcmF0ZWRTb3VyY2VzIiwiX2dldFZlcnNpb24iLCJfc291cmNlIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwidW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIiLCJjaGVja0RDRSIsIl9fc2VsZiIsIl9fc291cmNlIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwicG9wIiwic29ydEluZGV4IiwicGVyZm9ybWFuY2UiLCJzZXRJbW1lZGlhdGUiLCJzdGFydFRpbWUiLCJleHBpcmF0aW9uVGltZSIsInByaW9yaXR5TGV2ZWwiLCJuYXZpZ2F0b3IiLCJzY2hlZHVsaW5nIiwiaXNJbnB1dFBlbmRpbmciLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQyIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJwb3N0TWVzc2FnZSIsInVuc3RhYmxlX1Byb2ZpbGluZyIsInVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uIiwidW5zdGFibGVfZm9yY2VGcmFtZVJhdGUiLCJmbG9vciIsInVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlIiwidW5zdGFibGVfbmV4dCIsInVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uIiwidW5zdGFibGVfcnVuV2l0aFByaW9yaXR5IiwiZGVsYXkiLCJ1bnN0YWJsZV93cmFwQ2FsbGJhY2siLCJzdHlsZXNJbkRPTSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwiaWRlbnRpZmllciIsIm1vZHVsZXNUb0RvbSIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImNvdW50IiwiaW5kZXhCeUlkZW50aWZpZXIiLCJjc3MiLCJzb3VyY2VNYXAiLCJyZWZlcmVuY2VzIiwiYWRkRWxlbWVudFN0eWxlIiwiYnlJbmRleCIsImFwaSIsImRvbUFQSSIsInVwZGF0ZSIsIm5ld09iaiIsInJlbW92ZSIsImxhc3RJZGVudGlmaWVycyIsIm5ld0xpc3QiLCJuZXdMYXN0SWRlbnRpZmllcnMiLCJfaSIsIl9pbmRleCIsIm1lbW8iLCJpbnNlcnQiLCJzdHlsZVRhcmdldCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250ZW50RG9jdW1lbnQiLCJoZWFkIiwiZ2V0VGFyZ2V0Iiwic2V0QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJzdHlsZUVsZW1lbnQiLCJub25jZSIsImluc2VydFN0eWxlRWxlbWVudCIsInN0eWxlVGFnVHJhbnNmb3JtIiwicmVtb3ZlU3R5bGVFbGVtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJwcm9wZXJ0aWVzIiwiaXNCcm93c2VyIiwiaXNGaXJlZm94IiwibW96SW5uZXJTY3JlZW5YIiwiZ2V0Q2FyZXRDb29yZGluYXRlcyIsInBvc2l0aW9uIiwiZGVidWciLCJkaXYiLCJjb21wdXRlZCIsImdldENvbXB1dGVkU3R5bGUiLCJjdXJyZW50U3R5bGUiLCJpc0lucHV0Iiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwidmlzaWJpbGl0eSIsInByb3AiLCJzY3JvbGxIZWlnaHQiLCJwYXJzZUludCIsIm92ZXJmbG93WSIsInNwYW4iLCJjb29yZGluYXRlcyIsIm9mZnNldFRvcCIsIm9mZnNldExlZnQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZ2V0dGVyIiwiZGVmaW5pdGlvbiIsIm8iLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJ0b1N0cmluZ1RhZyIsIm5jIiwiSW5mb1NlcnZpY2UiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiT3AiLCJkZXNjIiwiJFN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsIndyaXRhYmxlIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsIkNvbnRpbnVlU2VudGluZWwiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZWplY3QiLCJyZWNvcmQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIm1ldGhvZE5hbWUiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImRvbmVSZXN1bHQiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJpdGVyIiwidmFsIiwicmV2ZXJzZSIsInNraXBUZW1wUmVzZXQiLCJwcmV2Iiwic3RvcCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwiX25leHQiLCJfdGhyb3ciLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiZGVzY3JpcHRvciIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJfdG9QcmltaXRpdmUiLCJNb2NrdXBJbmZvU2VydmljZUltcGwiLCJDb25zdHJ1Y3RvciIsIl9jbGFzc0NhbGxDaGVjayIsInByb3RvUHJvcHMiLCJfbG9nb3V0IiwiX2dldFNlc3Npb25JbmZvIiwiX2xvZ2luIiwiX2NhbGxlZSIsInNsZWVwIiwibXMiLCJfY2FsbGVlMiIsInVzZXJuYW1lIiwiX2NvbnRleHQyIiwicmVhbG0iLCJyb2xlcyIsImV4cGlyZXMiLCJfeCIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwiaGFuZGxlRXJyb3IiLCJTZXJ2ZXJWZXJzaW9uSW5mbyIsIl91c2VTdGF0ZTIiLCJzZXRWZXJzaW9uIiwiZ2V0VmVyc2lvbkluZm8iLCJzZXJ2ZXJWZXJzaW9uIiwibm9CdWlsZCIsImdldFNlcnZlclZlcnNpb25JbmZvIiwiUmVhY3QiLCJjbGFzc05hbWUiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJkZWZhdWx0S2V5Iiwic3Vic3RyIiwidXNlVW5jb250cm9sbGVkIiwiY29uZmlnIiwicmVkdWNlIiwiZmllbGROYW1lIiwiX2V4dGVuZHMyIiwiX3JlZiIsInByb3BzVmFsdWUiLCJyZXN0IiwiaGFuZGxlck5hbWUiLCJfdXNlVW5jb250cm9sbGVkUHJvcCIsInByb3BWYWx1ZSIsImhhbmRsZXIiLCJ3YXNQcm9wUmVmIiwiX3VzZVN0YXRlIiwic3RhdGVWYWx1ZSIsInNldFN0YXRlIiwiaXNQcm9wIiwid2FzUHJvcCIsInVzZVVuY29udHJvbGxlZFByb3AiLCJ1c2VFdmVudENhbGxiYWNrIiwidXNlTW91bnRlZCIsIm1vdW50ZWQiLCJ1c2VQcmV2aW91cyIsImlzUmVhY3ROYXRpdmUiLCJwcm9kdWN0IiwiX2V4Y2x1ZGVkIiwidXNlQnV0dG9uUHJvcHMiLCJyZWwiLCJyb2xlIiwidGFiSW5kZXgiLCJoYW5kbGVDbGljayIsImlzVHJpdmlhbEhyZWYiLCJvbktleURvd24iLCJCdXR0b24iLCJhcyIsImFzUHJvcCIsImJ1dHRvblByb3BzIiwiQW5jaG9yIiwiaGFuZGxlS2V5RG93biIsIlRoZW1lQ29udGV4dCIsInByZWZpeGVzIiwiYnJlYWtwb2ludHMiLCJtaW5CcmVha3BvaW50IiwiQ29uc3VtZXIiLCJQcm92aWRlciIsInVzZUJvb3RzdHJhcFByZWZpeCIsInByZWZpeCIsImRlZmF1bHRQcmVmaXgiLCJfc2V0UHJvdG90eXBlT2YiLCJVTk1PVU5URUQiLCJFWElURUQiLCJFTlRFUklORyIsIkVOVEVSRUQiLCJFWElUSU5HIiwiVHJhbnNpdGlvbiIsIl9SZWFjdCRDb21wb25lbnQiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfdGhpcyIsImluaXRpYWxTdGF0dXMiLCJhcHBlYXIiLCJpc01vdW50aW5nIiwiZW50ZXIiLCJhcHBlYXJTdGF0dXMiLCJpbiIsInVubW91bnRPbkV4aXQiLCJtb3VudE9uRW50ZXIiLCJzdGF0dXMiLCJuZXh0Q2FsbGJhY2siLCJwcmV2U3RhdGUiLCJfcHJvdG8iLCJ1cGRhdGVTdGF0dXMiLCJwcmV2UHJvcHMiLCJuZXh0U3RhdHVzIiwiY2FuY2VsTmV4dENhbGxiYWNrIiwiZ2V0VGltZW91dHMiLCJleGl0IiwidGltZW91dCIsIm1vdW50aW5nIiwibm9kZVJlZiIsImZvcmNlUmVmbG93IiwicGVyZm9ybUVudGVyIiwicGVyZm9ybUV4aXQiLCJfdGhpczIiLCJhcHBlYXJpbmciLCJfcmVmMiIsIm1heWJlTm9kZSIsIm1heWJlQXBwZWFyaW5nIiwidGltZW91dHMiLCJlbnRlclRpbWVvdXQiLCJvbkVudGVyIiwic2FmZVNldFN0YXRlIiwib25FbnRlcmluZyIsIm9uVHJhbnNpdGlvbkVuZCIsIm9uRW50ZXJlZCIsIl90aGlzMyIsIm9uRXhpdCIsIm9uRXhpdGluZyIsIm9uRXhpdGVkIiwiY2FuY2VsIiwibmV4dFN0YXRlIiwic2V0TmV4dENhbGxiYWNrIiwiX3RoaXM0IiwiYWN0aXZlIiwiZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lciIsImFkZEVuZExpc3RlbmVyIiwiX3JlZjMiLCJtYXliZU5leHRDYWxsYmFjayIsIl90aGlzJHByb3BzIiwiY2hpbGRQcm9wcyIsIlRyYW5zaXRpb25Hcm91cENvbnRleHQiLCJwcm9wVHlwZXMiLCJyVXBwZXIiLCJtc1BhdHRlcm4iLCJoeXBoZW5hdGVTdHlsZU5hbWUiLCJoeXBoZW5hdGUiLCJzdXBwb3J0ZWRUcmFuc2Zvcm1zIiwicHJvcGVydHkiLCJ0cmFuc2Zvcm1zIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInBzdWVkb0VsZW1lbnQiLCJkb2MiLCJvd25lcldpbmRvdyIsImlzVHJhbnNmb3JtIiwicmVtb3ZlUHJvcGVydHkiLCJvcHRpb25zU3VwcG9ydGVkIiwib25jZVN1cHBvcnRlZCIsIm9uY2UiLCJjYW5Vc2VET00iLCJldmVudE5hbWUiLCJ3cmFwcGVkSGFuZGxlciIsIl9fb25jZSIsIm9uY2VIYW5kbGVyIiwidHJhbnNpdGlvbkVuZCIsImR1cmF0aW9uIiwicGFkZGluZyIsInN0ciIsIm11bHQiLCJwYXJzZUZsb2F0IiwicmVtb3ZlRW11bGF0ZSIsImNhbGxlZCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwidHJpZ2dlckV2ZW50IiwiZW11bGF0ZVRyYW5zaXRpb25FbmQiLCJ0cmFuc2l0aW9uRW5kTGlzdGVuZXIiLCJ0cmlnZ2VyQnJvd3NlclJlZmxvdyIsIm9mZnNldEhlaWdodCIsInRvRm5SZWYiLCJyZWZBIiwicmVmQiIsIm1lcmdlUmVmcyIsImNoaWxkUmVmIiwibWVyZ2VkUmVmIiwiYXR0YWNoUmVmIiwiY29tcG9uZW50T3JFbGVtZW50Iiwibm9ybWFsaXplIiwiaGFuZGxlRW50ZXIiLCJoYW5kbGVFbnRlcmluZyIsImhhbmRsZUVudGVyZWQiLCJoYW5kbGVFeGl0IiwiaGFuZGxlRXhpdGluZyIsImhhbmRsZUV4aXRlZCIsImhhbmRsZUFkZEVuZExpc3RlbmVyIiwiaW5uZXJQcm9wcyIsImZhZGVTdHlsZXMiLCJGYWRlIiwidHJhbnNpdGlvbkNsYXNzZXMiLCJpc0FwcGVhcmluZyIsInZhcmlhbnQiLCJDbG9zZUJ1dHRvbiIsInJIeXBoZW4iLCJwYXNjYWxDYXNlIiwiXyIsImNociIsImNyZWF0ZVdpdGhCc1ByZWZpeCIsIkJzQ29tcG9uZW50IiwiYnNQcmVmaXgiLCJUYWciLCJyZXNvbHZlZFByZWZpeCIsIkRpdlN0eWxlZEFzSDQiLCJkaXZXaXRoQ2xhc3NOYW1lIiwiQWxlcnRIZWFkaW5nIiwiQWxlcnRMaW5rIiwic2hvdyIsImNsb3NlTGFiZWwiLCJBbGVydCIsInVuY29udHJvbGxlZFByb3BzIiwiY2xvc2VWYXJpYW50Iiwib25DbG9zZSIsImRpc21pc3NpYmxlIiwiaGFuZGxlQ2xvc2UiLCJhbGVydCIsIkxpbmsiLCJIZWFkaW5nIiwiTWVzc2FnZSIsImhlYWRpbmciLCJpY29uIiwic2hvd0ljb24iLCJpY29uQ2xhc3MiLCJzZXRTaG93IiwiRXJyb3JNZXNzYWdlIiwid2FybiIsIkxvYWRpbmdJbmZvIiwidGl0bGUiLCJfbG9naW4yIiwic2VydmljZSIsImxvZ2luIiwiaGFuZGxlU3VibWl0Iiwic2hvd0xvYWRpbmdJbmZvIiwic3VibWl0IiwibG9naW5fcHJvbWlzZSIsIl94MiIsIlRpbWVvdXQiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJwYXVzZSIsIkxvZ2luRm9ybUlucHV0cyIsInNob3dNZXNzYWdlcyIsIm9uQ2hhbmdlIiwib25CbHVyIiwid3JhcHBlZE9uRXJyb3IiLCJfeDMiLCJvblN1Ym1pdCIsInBsYWNlaG9sZGVyIiwiTG9naW5Gb3JtTWVzc2FnZSIsIm1lc3NhZ2VUeXBlIiwic2hvd0lucHV0cyIsIkxvZ2luRm9ybSIsIl9yZWY0Iiwic2V0U2hvd0lucHV0cyIsInRvQXJyYXkiLCJxc2EiLCJzZWxlY3RvciIsInVzZUZvcmNlVXBkYXRlIiwiZmluZCIsInRhciIsImRlcXVhbCIsImZvbyIsImJhciIsImxlbiIsInRtcCIsImdldFRpbWUiLCJSZWdFeHAiLCJBcnJheUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJEYXRhVmlldyIsImJ5dGVMZW5ndGgiLCJnZXRJbnQ4IiwiaXNWaWV3IiwiZ2V0QmFzZVBsYWNlbWVudCIsInBsYWNlbWVudCIsImdldFdpbmRvdyIsImlzRWxlbWVudCIsIkVsZW1lbnQiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJTaGFkb3dSb290IiwibWF4Iiwicm91bmQiLCJnZXRVQVN0cmluZyIsInVhRGF0YSIsInVzZXJBZ2VudERhdGEiLCJicmFuZHMiLCJicmFuZCIsInVzZXJBZ2VudCIsImlzTGF5b3V0Vmlld3BvcnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGVYIiwic2NhbGVZIiwib2Zmc2V0V2lkdGgiLCJ2aXN1YWxWaWV3cG9ydCIsImFkZFZpc3VhbE9mZnNldHMiLCJyaWdodCIsImJvdHRvbSIsImdldExheW91dFJlY3QiLCJhYnMiLCJwYXJlbnQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwiaXNTYW1lTm9kZSIsImhvc3QiLCJnZXROb2RlTmFtZSIsImlzVGFibGVFbGVtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiZ2V0UGFyZW50Tm9kZSIsImFzc2lnbmVkU2xvdCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJvZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJjdXJyZW50Tm9kZSIsInRyYW5zZm9ybSIsInBlcnNwZWN0aXZlIiwiY29udGFpbiIsIndpbGxDaGFuZ2UiLCJmaWx0ZXIiLCJnZXRDb250YWluaW5nQmxvY2siLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJ3aXRoaW4iLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJwYWRkaW5nT2JqZWN0IiwiZXhwYW5kVG9IYXNoTWFwIiwiaGFzaE1hcCIsImF1dG8iLCJiYXNlUGxhY2VtZW50cyIsInZpZXdwb3J0IiwicG9wcGVyIiwidmFyaWF0aW9uUGxhY2VtZW50cyIsImFjYyIsIm1vZGlmaWVyUGhhc2VzIiwiZW5hYmxlZCIsInBoYXNlIiwiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwiYXJyb3dFbGVtZW50IiwiZWxlbWVudHMiLCJhcnJvdyIsInBvcHBlck9mZnNldHMiLCJtb2RpZmllcnNEYXRhIiwiYmFzZVBsYWNlbWVudCIsImF4aXMiLCJyZWN0cyIsInRvUGFkZGluZ09iamVjdCIsImFycm93UmVjdCIsIm1pblByb3AiLCJtYXhQcm9wIiwiZW5kRGlmZiIsInJlZmVyZW5jZSIsInN0YXJ0RGlmZiIsImFycm93T2Zmc2V0UGFyZW50IiwiY2xpZW50U2l6ZSIsImNsaWVudEhlaWdodCIsImNsaWVudFdpZHRoIiwiY2VudGVyVG9SZWZlcmVuY2UiLCJjZW50ZXIiLCJheGlzUHJvcCIsImNlbnRlck9mZnNldCIsImVmZmVjdCIsIl9vcHRpb25zJGVsZW1lbnQiLCJyZXF1aXJlcyIsInJlcXVpcmVzSWZFeGlzdHMiLCJnZXRWYXJpYXRpb24iLCJ1bnNldFNpZGVzIiwibWFwVG9TdHlsZXMiLCJfT2JqZWN0JGFzc2lnbjIiLCJwb3BwZXJSZWN0IiwidmFyaWF0aW9uIiwib2Zmc2V0cyIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiaXNGaXhlZCIsIl9vZmZzZXRzJHgiLCJfb2Zmc2V0cyR5IiwiaGFzWCIsImhhc1kiLCJzaWRlWCIsInNpZGVZIiwid2luIiwiaGVpZ2h0UHJvcCIsIndpZHRoUHJvcCIsIl9PYmplY3QkYXNzaWduIiwiY29tbW9uU3R5bGVzIiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiX3JlZjUiLCJfb3B0aW9ucyRncHVBY2NlbGVyYXQiLCJfb3B0aW9ucyRhZGFwdGl2ZSIsIl9vcHRpb25zJHJvdW5kT2Zmc2V0cyIsInN0cmF0ZWd5Iiwic3R5bGVzIiwiX29wdGlvbnMkc2Nyb2xsIiwic2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwic2Nyb2xsUGFyZW50cyIsInNjcm9sbFBhcmVudCIsImhhc2giLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsIm1hdGNoZWQiLCJnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCIsImdldFdpbmRvd1Njcm9sbCIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwiaXNTY3JvbGxQYXJlbnQiLCJfZ2V0Q29tcHV0ZWRTdHlsZSIsIm92ZXJmbG93WCIsImdldFNjcm9sbFBhcmVudCIsImxpc3RTY3JvbGxQYXJlbnRzIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaXNCb2R5IiwidXBkYXRlZExpc3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJodG1sIiwibGF5b3V0Vmlld3BvcnQiLCJnZXRWaWV3cG9ydFJlY3QiLCJjbGllbnRUb3AiLCJjbGllbnRMZWZ0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aW5TY3JvbGwiLCJzY3JvbGxXaWR0aCIsImRpcmVjdGlvbiIsImdldERvY3VtZW50UmVjdCIsImNvbXB1dGVPZmZzZXRzIiwiY29tbW9uWCIsImNvbW1vblkiLCJtYWluQXhpcyIsImRldGVjdE92ZXJmbG93IiwiX29wdGlvbnMiLCJfb3B0aW9ucyRwbGFjZW1lbnQiLCJfb3B0aW9ucyRzdHJhdGVneSIsIl9vcHRpb25zJGJvdW5kYXJ5IiwiYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJlbGVtZW50Q29udGV4dCIsIl9vcHRpb25zJGFsdEJvdW5kYXJ5IiwiYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRwYWRkaW5nIiwiYWx0Q29udGV4dCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm1haW5DbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjbGlwcGVyRWxlbWVudCIsImdldENsaXBwaW5nUGFyZW50cyIsImZpcnN0Q2xpcHBpbmdQYXJlbnQiLCJjbGlwcGluZ1JlY3QiLCJhY2NSZWN0IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiY29udGV4dEVsZW1lbnQiLCJyZWZlcmVuY2VDbGllbnRSZWN0IiwicG9wcGVyQ2xpZW50UmVjdCIsImVsZW1lbnRDbGllbnRSZWN0Iiwib3ZlcmZsb3dPZmZzZXRzIiwib2Zmc2V0RGF0YSIsIm11bHRpcGx5IiwiX3NraXAiLCJfb3B0aW9ucyRtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsIl9vcHRpb25zJGZsaXBWYXJpYXRpbyIsImZsaXBWYXJpYXRpb25zIiwiYWxsb3dlZEF1dG9QbGFjZW1lbnRzIiwicHJlZmVycmVkUGxhY2VtZW50Iiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsInBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJjb21wdXRlQXV0b1BsYWNlbWVudCIsInJlZmVyZW5jZVJlY3QiLCJjaGVja3NNYXAiLCJtYWtlRmFsbGJhY2tDaGVja3MiLCJmaXJzdEZpdHRpbmdQbGFjZW1lbnQiLCJfYmFzZVBsYWNlbWVudCIsImlzU3RhcnRWYXJpYXRpb24iLCJpc1ZlcnRpY2FsIiwibWFpblZhcmlhdGlvblNpZGUiLCJhbHRWYXJpYXRpb25TaWRlIiwiY2hlY2tzIiwiZXZlcnkiLCJjaGVjayIsIl9sb29wIiwiZml0dGluZ1BsYWNlbWVudCIsImdldFNpZGVPZmZzZXRzIiwicHJldmVudGVkT2Zmc2V0cyIsImlzQW55U2lkZUZ1bGx5Q2xpcHBlZCIsInNvbWUiLCJzaWRlIiwiX29wdGlvbnMkb2Zmc2V0IiwiaW52ZXJ0RGlzdGFuY2UiLCJza2lkZGluZyIsImRpc3RhbmNlIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJfb3B0aW9ucyR0ZXRoZXIiLCJ0ZXRoZXIiLCJfb3B0aW9ucyR0ZXRoZXJPZmZzZXQiLCJ0ZXRoZXJPZmZzZXQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJ0ZXRoZXJPZmZzZXRWYWx1ZSIsIm5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSIsIm9mZnNldE1vZGlmaWVyU3RhdGUiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQiLCJtYWluU2lkZSIsImFsdFNpZGUiLCJhZGRpdGl2ZSIsIm1pbkxlbiIsIm1heExlbiIsImFycm93UGFkZGluZ09iamVjdCIsImFycm93UGFkZGluZ01pbiIsImFycm93UGFkZGluZ01heCIsImFycm93TGVuIiwibWluT2Zmc2V0IiwibWF4T2Zmc2V0IiwiY2xpZW50T2Zmc2V0Iiwib2Zmc2V0TW9kaWZpZXJWYWx1ZSIsInRldGhlck1heCIsInByZXZlbnRlZE9mZnNldCIsIl9vZmZzZXRNb2RpZmllclN0YXRlJDIiLCJfbWFpblNpZGUiLCJfYWx0U2lkZSIsIl9vZmZzZXQiLCJfbWluIiwiX21heCIsImlzT3JpZ2luU2lkZSIsIl9vZmZzZXRNb2RpZmllclZhbHVlIiwiX3RldGhlck1pbiIsIl90ZXRoZXJNYXgiLCJfcHJldmVudGVkT2Zmc2V0Iiwid2l0aGluTWF4Q2xhbXAiLCJnZXRDb21wb3NpdGVSZWN0IiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFBhcmVudElzU2NhbGVkIiwiaXNFbGVtZW50U2NhbGVkIiwibW9kaWZpZXJzIiwidmlzaXRlZCIsIm1vZGlmaWVyIiwiZGVwIiwiZGVwTW9kaWZpZXIiLCJERUZBVUxUX09QVElPTlMiLCJhcmVWYWxpZEVsZW1lbnRzIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsIm9yZGVyZWRNb2RpZmllcnMiLCJlZmZlY3RDbGVhbnVwRm5zIiwiaXNEZXN0cm95ZWQiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJtZXJnZWQiLCJvcmRlck1vZGlmaWVycyIsImV4aXN0aW5nIiwiX3JlZjMkb3B0aW9ucyIsImNsZWFudXBGbiIsImZvcmNlVXBkYXRlIiwiX3N0YXRlJGVsZW1lbnRzIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllMiIsIm9uRmlyc3RVcGRhdGUiLCJwb3BwZXJHZW5lcmF0b3IiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsInBvcHBlckFsdE92ZXJmbG93IiwicmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzIiwicG9wcGVyRXNjYXBlT2Zmc2V0cyIsImlzUmVmZXJlbmNlSGlkZGVuIiwiaGFzUG9wcGVyRXNjYXBlZCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzYWJsZWRBcHBseVN0eWxlc01vZGlmaWVyIiwiYXJpYURlc2NyaWJlZEJ5TW9kaWZpZXIiLCJpZHMiLCJnZXRBdHRyaWJ1dGUiLCJfcG9wcGVyJGdldEF0dHJpYnV0ZSIsIkVNUFRZX01PRElGSUVSUyIsInJlZmVyZW5jZUVsZW1lbnQiLCJwb3BwZXJFbGVtZW50IiwicHJldk1vZGlmaWVycyIsInBvcHBlckluc3RhbmNlUmVmIiwiX3BvcHBlckluc3RhbmNlUmVmJGN1IiwiX3BvcHBlckluc3RhbmNlUmVmJGN1MiIsInBvcHBlclN0YXRlIiwidXBkYXRlTW9kaWZpZXIiLCJuZXh0TW9kaWZpZXJzIiwicyIsImdldFJlZlRhcmdldCIsIkluaXRpYWxUcmlnZ2VyRXZlbnRzIiwiY2xpY2siLCJtb3VzZXVwIiwicG9pbnRlcnVwIiwib25DbGlja091dHNpZGUiLCJjbGlja1RyaWdnZXIiLCJwcmV2ZW50TW91c2VDbGlja091dHNpZGVSZWYiLCJ3YWl0aW5nRm9yVHJpZ2dlciIsImhhbmRsZU1vdXNlQ2FwdHVyZSIsImlzTGVmdENsaWNrRXZlbnQiLCJoYW5kbGVJbml0aWFsTW91c2UiLCJoYW5kbGVNb3VzZSIsImN1cnJlbnRFdmVudCIsInJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIiLCJyZW1vdmVNb3VzZUNhcHR1cmVMaXN0ZW5lciIsInJlbW92ZU1vdXNlTGlzdGVuZXIiLCJtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzIiwidG9Nb2RpZmllckFycmF5IiwidXNlRHJvcGRvd25NZW51IiwiYXR0YWNoQXJyb3dSZWYiLCJoYXNTaG93blJlZiIsImZsaXAiLCJyb290Q2xvc2VFdmVudCIsImZpeGVkIiwicGxhY2VtZW50T3ZlcnJpZGUiLCJwb3BwZXJDb25maWciLCJlbmFibGVFdmVudExpc3RlbmVycyIsInVzZVBvcHBlciIsInNob3VsZFVzZVBvcHBlciIsInNldE1lbnUiLCJtZW51RWxlbWVudCIsInRvZ2dsZUVsZW1lbnQiLCJlbmFibGVFdmVudHMiLCJjb250YWluZXJQYWRkaW5nIiwiX21vZGlmaWVycyRldmVudExpc3RlIiwiX21vZGlmaWVycyRwcmV2ZW50T3ZlIiwiX21vZGlmaWVycyRwcmV2ZW50T3ZlMiIsIl9tb2RpZmllcnMkb2Zmc2V0IiwiX21vZGlmaWVycyRhcnJvdyIsInRvTW9kaWZpZXJNYXAiLCJtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnIiwibWVudVByb3BzIiwibWV0YWRhdGEiLCJoYXNTaG93biIsInRvZ2dsZSIsImFycm93UHJvcHMiLCJEcm9wZG93bk1lbnUiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY2FuVXNlRE9NIiwiQm9vbGVhbiIsIiQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMiLCJpc1JvbGVNZW51IiwiX2VsJGdldEF0dHJpYnV0ZSIsInVzZURyb3Bkb3duVG9nZ2xlIiwiZGVmYXVsdElkIiwiY3R4IiwiY291bnRlciIsIl9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIl9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lciIsImN1cnJlbnRPd25lciIsInByZXZDb21wb25lbnRWYWx1ZSIsIiQ3MDRjZjFkM2I2ODRjYzVjJHZhciR1c2VDb3VudGVyIiwic2V0VG9nZ2xlIiwiRHJvcGRvd25Ub2dnbGUiLCJtYWtlRXZlbnRLZXkiLCJldmVudEtleSIsIk5hdkNvbnRleHQiLCJBVFRSSUJVVEVfUFJFRklYIiwiZGF0YUF0dHIiLCJ1c2VEcm9wZG93bkl0ZW0iLCJvblNlbGVjdEN0eCIsIm5hdkNvbnRleHQiLCJhY3RpdmVLZXkiLCJpc0FjdGl2ZSIsIkRyb3Bkb3duSXRlbSIsImRyb3Bkb3duSXRlbVByb3BzIiwidXNlV2luZG93IiwidXNlUmVmV2l0aFVwZGF0ZSIsIkRyb3Bkb3duIiwiZGVmYXVsdFNob3ciLCJyYXdTaG93Iiwib25TZWxlY3QiLCJvblRvZ2dsZSIsInJhd09uVG9nZ2xlIiwiaXRlbVNlbGVjdG9yIiwiZm9jdXNGaXJzdEl0ZW1PblNob3ciLCJtZW51UmVmIiwidG9nZ2xlUmVmIiwibGFzdFNob3ciLCJsYXN0U291cmNlRXZlbnQiLCJmb2N1c0luRHJvcGRvd24iLCJuZXh0U2hvdyIsIm9yaWdpbmFsRXZlbnQiLCJoYW5kbGVTZWxlY3QiLCJmb2N1c1RvZ2dsZSIsIm1heWJlRm9jdXNGaXJzdCIsImZvY3VzVHlwZSIsImZpcnN0IiwiZ2V0TmV4dEZvY3VzZWRDaGlsZCIsIml0ZW1zIiwiZXZlbnRUYXJnZXQiLCJfbWVudVJlZiRjdXJyZW50IiwiX3RvZ2dsZVJlZiRjdXJyZW50IiwiZnJvbU1lbnUiLCJmcm9tVG9nZ2xlIiwiX21lbnVSZWYkY3VycmVudDIiLCJUb2dnbGUiLCJJdGVtIiwidXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nIiwiZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50IiwiYWxpZ25FbmQiLCJkcm9wRGlyZWN0aW9uIiwiaXNSVEwiLCJhbGlnbiIsInNob3dQcm9wcyIsInJlbmRlck9uTW91bnQiLCJpc05hdmJhciIsIk5hdmJhckNvbnRleHQiLCJjb250ZXh0QWxpZ24iLCJkcm9wIiwiaXNJbnB1dEdyb3VwIiwiSW5wdXRHcm91cENvbnRleHQiLCJhbGlnbkNsYXNzZXMiLCJicmtQb2ludCIsInVzZUlzb21vcnBoaWNFZmZlY3QiLCJjbG9zZSIsImNoaWxkQnNQcmVmaXgiLCJkcm9wZG93bkNvbnRleHQiLCJ0b2dnbGVQcm9wcyIsIkRyb3Bkb3duSGVhZGVyIiwiRHJvcGRvd25EaXZpZGVyIiwiRHJvcGRvd25JdGVtVGV4dCIsInBQcm9wcyIsIm5hdmJhciIsIl80IiwiYXV0b0Nsb3NlIiwiZGlyIiwidXNlSXNSVEwiLCJoYW5kbGVUb2dnbGUiLCJjb250ZXh0VmFsdWUiLCJkaXJlY3Rpb25DbGFzc2VzIiwiZG93biIsInVwIiwiSXRlbVRleHQiLCJEaXZpZGVyIiwiSGVhZGVyIiwidXNlTmF2SXRlbSIsInBhcmVudE9uU2VsZWN0IiwidGFiQ29udGV4dCIsImNvbnRleHRDb250cm9sbGVySWQiLCJnZXRDb250cm9sbGVySWQiLCJjb250ZXh0Q29udHJvbGxlZElkIiwiZ2V0Q29udHJvbGxlZElkIiwiTmF2SXRlbSIsIk5hdkxpbmsiLCJuYXZJdGVtUHJvcHMiLCJOYXZEcm9wZG93biIsIm1lbnVSb2xlIiwicmVuZGVyTWVudU9uTW91bnQiLCJtZW51VmFyaWFudCIsIm5hdkl0ZW1QcmVmaXgiLCJfYXJyYXlMaWtlVG9BcnJheSIsImFyciIsImFycjIiLCJVc2VyQ29tcG9uZW50Iiwib25Mb2dpbiIsIm9uTG9nb3V0IiwiX2FycmF5V2l0aEhvbGVzIiwiX3MiLCJfZSIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJmcm9tIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsImNvbXBvbmVudCIsInNldENvbXBvbmVudCIsInNob3dfY29tcG9uZW50Iiwic2hvd19sb2dpbl9mb3JtIiwibG9nb3V0X2NhbGxiYWNrIiwiX3NlcnZpY2UiLCJsb2dvdXQiLCJ0MCIsInNob3dfc2Vzc2lvbl9pbmZvIiwic2Vzc2lvbl9pbmZvIiwiX1VzZXJDb21wb25lbnQiLCJsb2dpbl9mYWlsIiwibG9naW5fc3VjY2VzcyIsImdldFNlc3Npb25JbmZvIiwiQnJhbmRpbmciLCJFVkVOVF9LRVlfQVRUUiIsIk5hdiIsIm5lZWRzUmVmb2N1c1JlZiIsImxpc3ROb2RlIiwiZ2V0TmV4dEFjdGl2ZVRhYiIsImN1cnJlbnRMaXN0Tm9kZSIsImFjdGl2ZUNoaWxkIiwibmV4dEluZGV4IiwibmV4dEFjdGl2ZUNoaWxkIiwiaW5pdGlhbEJzUHJlZml4IiwiZmlsbCIsImp1c3RpZnkiLCJuYXZiYXJTY3JvbGwiLCJuYXZiYXJCc1ByZWZpeCIsImNhcmRIZWFkZXJCc1ByZWZpeCIsIm5hdmJhckNvbnRleHQiLCJjYXJkSGVhZGVyQ29udGV4dCIsIkNhcmRIZWFkZXJDb250ZXh0IiwiTmF2YmFyQnJhbmQiLCJmdW5jcyIsIk1BUkdJTlMiLCJnZXREZWZhdWx0RGltZW5zaW9uVmFsdWUiLCJkaW1lbnNpb24iLCJlbGVtIiwibWFyZ2lucyIsImNvbGxhcHNlU3R5bGVzIiwiZ2V0RGltZW5zaW9uVmFsdWUiLCJDb2xsYXBzZSIsImNvbXB1dGVkRGltZW5zaW9uIiwiTmF2YmFyQ29sbGFwc2UiLCJleHBhbmRlZCIsIk5hdmJhclRvZ2dsZSIsImxhYmVsIiwibWF0Y2hlcnNCeVdpbmRvdyIsImdldE1hdGNoZXIiLCJxdWVyeSIsInRhcmdldFdpbmRvdyIsIm1hdGNoZXJzIiwibXFsIiwibWF0Y2hNZWRpYSIsInJlZkNvdW50IiwidXNlTWVkaWFRdWVyeSIsIm1hdGNoZXMiLCJzZXRNYXRjaGVzIiwiaGFuZGxlQ2hhbmdlIiwiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsImJyZWFrcG9pbnRWYWx1ZXMiLCJuYW1lcyIsImFuZCIsImJyZWFrcG9pbnRPck1hcCIsImJyZWFrcG9pbnRNYXAiLCJfYnJlYWtwb2ludE1hcCIsImVudHJpZXMiLCJicmVha3BvaW50IiwiZ2V0TmV4dCIsImdldE1heFF1ZXJ5IiwiY3JlYXRlQnJlYWtwb2ludEhvb2siLCJ4cyIsInNtIiwieGwiLCJ4eGwiLCJPUEVOX0RBVEFfQVRUUklCVVRFIiwiaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3ciLCJtb2RhbHMiLCJnZXRTY3JvbGxiYXJXaWR0aCIsImlubmVyV2lkdGgiLCJnZXRCb2R5U2Nyb2xsYmFyV2lkdGgiLCJnZXRFbGVtZW50Iiwic2V0TW9kYWxBdHRyaWJ1dGVzIiwiX21vZGFsIiwicmVtb3ZlTW9kYWxBdHRyaWJ1dGVzIiwic2V0Q29udGFpbmVyU3R5bGUiLCJjb250YWluZXJTdGF0ZSIsInBhZGRpbmdQcm9wIiwiY29udGFpbmVyIiwic2Nyb2xsQmFyV2lkdGgiLCJyZW1vdmVDb250YWluZXJTdHlsZSIsIm1vZGFsIiwibW9kYWxJZHgiLCJpc1RvcE1vZGFsIiwicmVzb2x2ZUNvbnRhaW5lclJlZiIsImluUHJvcCIsImhhc0VudGVyZWRSZWYiLCJjb21iaW5lZFJlZiIsImNsb25lRWxlbWVudCIsIkltcGVyYXRpdmVUcmFuc2l0aW9uIiwiZXhpdGVkIiwic2V0RXhpdGVkIiwib25UcmFuc2l0aW9uIiwiaXNJbml0aWFsUmVmIiwiaGFuZGxlVHJhbnNpdGlvbiIsInN0YWxlIiwiaW5pdGlhbCIsImlzU3RhbGUiLCJyZW5kZXJUcmFuc2l0aW9uIiwicnVuVHJhbnNpdGlvbiIsIm1hbmFnZXIiLCJNb2RhbCIsImZvcndhcmRSZWYiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwib25CYWNrZHJvcENsaWNrIiwib25Fc2NhcGVLZXlEb3duIiwiYmFja2Ryb3BUcmFuc2l0aW9uIiwicnVuQmFja2Ryb3BUcmFuc2l0aW9uIiwiZW5mb3JjZUZvY3VzIiwicmVzdG9yZUZvY3VzIiwicmVzdG9yZUZvY3VzT3B0aW9ucyIsInJlbmRlckRpYWxvZyIsInJlbmRlckJhY2tkcm9wIiwicHJvdmlkZWRNYW5hZ2VyIiwiY29udGFpbmVyUmVmIiwib25TaG93Iiwib25IaWRlIiwib25SZXNvbHZlZCIsInJlc29sdmVkUmVmIiwic2V0UmVmIiwiZWFybHlSZWYiLCJuZXh0UmVmIiwidXNlV2FpdEZvckRPTVJlZiIsInByb3ZpZGVkIiwibW9kYWxNYW5hZ2VyIiwiZ2V0TWFuYWdlciIsImRpYWxvZyIsInNldERpYWxvZ1JlZiIsInNldEJhY2tkcm9wUmVmIiwidXNlTW9kYWxNYW5hZ2VyIiwicHJldlNob3ciLCJsYXN0Rm9jdXNSZWYiLCJoYW5kbGVTaG93IiwicmVtb3ZlS2V5ZG93bkxpc3RlbmVyUmVmIiwiaGFuZGxlRG9jdW1lbnRLZXlEb3duIiwicmVtb3ZlRm9jdXNMaXN0ZW5lclJlZiIsImhhbmRsZUVuZm9yY2VGb2N1cyIsImN1cnJlbnRBY3RpdmVFbGVtZW50IiwiaGFuZGxlSGlkZSIsIl9sYXN0Rm9jdXNSZWYkY3VycmVudCIsInZhbHVlUmVmIiwib25Vbm1vdW50IiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImlzRXNjS2V5IiwiZGlhbG9nUHJvcHMiLCJiYWNrZHJvcEVsZW1lbnQiLCJNYW5hZ2VyIiwidHJhbnNpdGlvblN0eWxlcyIsIk9mZmNhbnZhc1RvZ2dsaW5nIiwiQWJzdHJhY3RNb2RhbEhlYWRlciIsImNsb3NlQnV0dG9uIiwiT2ZmY2FudmFzSGVhZGVyIiwicmVwbGFjZUNsYXNzTmFtZSIsIm9yaWdDbGFzcyIsImNsYXNzVG9SZW1vdmUiLCJTZWxlY3RvciIsIkJvb3RzdHJhcE1vZGFsTWFuYWdlciIsImFkanVzdEFuZFN0b3JlIiwiYWRqdXN0IiwiYWN0dWFsIiwicmVzdG9yZSIsInN1cGVyIiwiY2xhc3NMaXN0IiwiYmFzZVZhbCIsImhhc0NsYXNzIiwibWFyZ2luUHJvcCIsInNoYXJlZE1hbmFnZXIiLCJEaWFsb2dUcmFuc2l0aW9uIiwiQmFja2Ryb3BUcmFuc2l0aW9uIiwiT2ZmY2FudmFzIiwiYXJpYUxhYmVsbGVkYnkiLCJyZXNwb25zaXZlIiwiYmFja2Ryb3BDbGFzc05hbWUiLCJwcm9wc01hbmFnZXIiLCJyZW5kZXJTdGF0aWNOb2RlIiwic2hvd09mZmNhbnZhcyIsInNldFNob3dPZmZjYW52YXMiLCJoaWRlUmVzcG9uc2l2ZU9mZmNhbnZhcyIsIm1vZGFsQ29udGV4dCIsImJhY2tkcm9wUHJvcHMiLCJnZXRTaGFyZWRNYW5hZ2VyIiwiQm9keSIsIk9mZmNhbnZhc0JvZHkiLCJUaXRsZSIsIk9mZmNhbnZhc1RpdGxlIiwiTmF2YmFyT2ZmY2FudmFzIiwiTmF2YmFyVGV4dCIsIk5hdmJhciIsImV4cGFuZCIsInN0aWNreSIsImNvbGxhcHNlT25TZWxlY3QiLCJjb250cm9sbGVkUHJvcHMiLCJoYW5kbGVDb2xsYXBzZSIsImV4cGFuZENsYXNzIiwiQnJhbmQiLCJUZXh0IiwiQ29udGFpbmVyIiwiZmx1aWQiLCJzdWZmaXgiLCJDUUxfV09SRFMiLCJwcmVwYXJlVGVybXMiLCJ0ZXJtcyIsInRlcm0iLCJ0ZXJtX2VzY2FwZWQiLCJvcmlnaW5hbCIsIm5vcm1hbGl6ZWQiLCJlc2NhcGVkIiwicHJlcGFyZUNxbFdvcmRzIiwid29yZHMiLCJ3b3JkIiwiQXV0b0NvbXBsZXRpb24iLCJjcWxfd29yZHMiLCJfY3FsX3dvcmRzIiwiX3Rlcm1zIiwiX3Jlc29sdmVkX3Rlcm1zIiwiX2dldENxbFN1Z2dlc3Rpb25zIiwiX2dldFNlYXJjaFRlcm1TdWdnZXN0aW9ucyIsIl9nZXRUZXJtczIiLCJfZG9fcmVzb2x2ZV90ZXJtczIiLCJfZ2V0U3VnZ2VzdGlvbnMiLCJpc0NxbCIsImZ1bGxRdWVyeSIsImdldENxbFN1Z2dlc3Rpb25zIiwiZ2V0U2VhcmNoVGVybVN1Z2dlc3Rpb25zIiwicmVzb2x2ZWRfdGVybXMiLCJfeDQiLCJfZG9fcmVzb2x2ZV90ZXJtcyIsIl9jYWxsZWU0Iiwid29yZE5vcm1hbGl6ZWQiLCJfY29udGV4dDQiLCJfZ2V0VGVybXMiLCJzdGFydHNXaXRoIiwiX3g1IiwiX3g2IiwiX2NhbGxlZTUiLCJfY29udGV4dDUiLCJ0MSIsIl94NyIsIl94OCIsImlzU2VsZWN0IiwidHJhbnNsYXRvciIsImVxdWFscyIsImFsbG93ZWRfb3BlcmF0b3JzIiwiYm9vbGVhbiIsImludGVnZXIiLCJkb3VibGUiLCJtYWtlX3F1ZXJ5X2ZpbHRlciIsIm9wZXJhdG9yIiwidW5pdCIsIl9kZWZhdWx0IiwicXVvdGVzIiwibWFrZVF1ZXJ5VGVtcGxhdGUiLCJyZWNvcmRfdHlwZSIsInNlYXJjaF90ZXJtcyIsImFjdGl2ZUZpbHRlcnMiLCJmaWx0ZXJfY29ubmVjdG9yIiwic3BsaXR0ZWRfc2VhcmNoX3Rlcm1zIiwic3BsaXRTZWFyY2hUZXJtcyIsInJlcGxhY2VBbGwiLCJmaWx0ZXJzIiwiZGF0YXR5cGUiLCJtYWtlUXVlcnlGaWx0ZXIiLCJfc3BsaXRTZWFyY2hUZXJtc1BhdHRlcm4iLCJfd3JhcFJlZ0V4cCIsImRxIiwic3EiLCJucSIsIm1hdGNoQWxsIiwiY3JlYXRlVGFiIiwicmVjb3JkVHlwZSIsImRlc2NyaXB0aW9uIiwibWFrZVF1ZXJ5Q2FsbGJhY2siLCJmaWx0ZXJEZWZpbml0aW9ucyIsIm1ha2VRdWVyeSIsImdldF90ZXN0X3N1Z2dlc3Rpb25zIiwiX2NhbGxlZTYiLCJmdWxsIiwiX2NvbnRleHQ2IiwiZ2V0U3VnZ2VzdGlvbnMiLCJfeDkiLCJfeDEwIiwiX3gxMSIsIm1ha2VGaWx0ZXJEZWZpbml0aW9ucyIsIlF1ZXJ5Rm9ybUNvbnRleHQiLCJSYW5nZUZpbHRlcklucHV0Iiwib25DaGFuZ2VNaW4iLCJuZXdFIiwib25DaGFuZ2VNYXgiLCJfZXh0ZW5kcyIsInVuaXRFbGVtZW50IiwiRmlsdGVySW5wdXQiLCJzdGVwIiwiaW5wdXR0eXBlIiwiaW5wdXRFbGVtZW50IiwiQ3FsSGludCIsIlF1ZXJ5Rm9ybVNpbmdsZVRhYiIsInRhYiIsInNldEFjdGl2ZVRhYiIsImlzQWN0aXZlVGFiIiwiYWN0aXZhdGVUYWIiLCJBZGRUYWJGaWx0ZXJPcGVyYXRvciIsImZpbHRlcklkeCIsInVwZGF0ZUZpbHRlciIsInJlc3RvcmVPcGVyYXRvciIsInJlc3RvcmVWYWx1ZSIsIl9zbGljZWRUb0FycmF5Iiwic2V0T3BlcmF0b3IiLCJfdXNlU3RhdGU0Iiwib3AiLCJpZHgiLCJGaWx0ZXJTZWxlY3QiLCJmaWwiLCJBZGRGaWx0ZXIiLCJhZGRGaWx0ZXIiLCJGaWx0ZXIiLCJfcmVmNiIsInJlbW92ZUZpbHRlciIsImFjdGl2ZUZpbHRlciIsInJlbW92ZVRoaXMiLCJRdWVyeUZvcm1UYWJGaWx0ZXJzSW5uZXIiLCJfcmVmNyIsInNldEFjdGl2ZUZpbHRlcnMiLCJuZXdBY3RpdmVGaWx0ZXJzIiwiX29iamVjdFNwcmVhZCIsInByb3BlcnR5RmlsdGVyIiwiUXVlcnlGb3JtVGFiRmlsdGVycyIsIl9yZWY4IiwiX3VzZVN0YXRlNiIsInNob3dGaWx0ZXJzIiwic2V0U2hvd0ZpbHRlcnMiLCJRdWVyeUZvcm1UYWJzIiwiX3JlZjkiLCJ0YWJzIiwiYWN0aXZlVGFiIiwiaGFzRmlsdGVycyIsIlF1ZXJ5U3VibWl0QnV0dG9uIiwiX3JlZjEwIiwiaXNTdWJtaXR0ZWQiLCJTaW5nbGVRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW0iLCJfcmVmMTEiLCJzdWdnZXN0aW9uIiwiaXNIaWdobGlnaHRlZCIsIm9uTW91c2VFbnRlciIsIlF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbXMiLCJfcmVmMTIiLCJzdWdnZXN0aW9ucyIsImhpZ2hsaWdodEluZGV4Iiwic2VsZWN0U3VnZ2VzdGlvbiIsInN1ZyIsIlF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zIiwiX3JlZjEzIiwidW5zZWxlY3RTdWdnZXN0aW9ucyIsImdldElucHV0UmVmIiwid29yZFBvcyIsInhPZmZzZXQiLCJpbnB1dFJlZiIsImNvb3JkcyIsImlucHV0V2lkdGgiLCJyaWdodE9mZnNldCIsIm1hcmdpbkxlZnQiLCJvbk1vdXNlTGVhdmUiLCJwYWRkaW5nTGVmdCIsInJlZHVjZXIiLCJjdXJzb3JfcG9zIiwid29yZF9wb3MiLCJvcGVuIiwidW5yZXNvbHZlZF9zdWdnZXN0aW9ucyIsInJlZm9jdXMiLCJvbkNsaWNrVmFsdWUiLCJjdXJzb3JQb3MiLCJvbkNsaWNrQ3Vyc29yUG9zIiwibGFzdEluZGV4T2YiLCJnZXRTdWdnZXN0aW9uc0NhbGxiYWNrIiwiZklzQ3FsIiwiY3Vyc29yUG9zTm9Db21wbGV0aW9uIiwidmFsdWVOb0NvbXBsZXRpb24iLCJjaGFuZ2VJZCIsInVucmVzb2x2ZWRTdWdnZXN0aW9ucyIsIm5ld0hpZ2hsaWdodEluZGV4IiwibmV3VmFsdWUiLCJuZXdDdXJzb3JQb3MiLCJRdWVyeUZvcm1UZXh0RmllbGQiLCJfcmVmMTQiLCJzZXRRdWVyeVN0cmluZyIsInJlc3RvcmVRdWVyeVN0cmluZyIsIl91c2VDb250ZXh0IiwiX3VzZVJlZHVjZXIyIiwib25Gb2N1cyIsIm9uQXJyb3dVcCIsIm9uQXJyb3dEb3duIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJRdWVyeUZvcm0iLCJfcmVmMTUiLCJzdWJtaXRDYWxsYmFjayIsImRlZmF1bHRUYWIiLCJyZXN0b3JlQ2FsbGJhY2siLCJzdG9yZUNhbGxiYWNrIiwiX3JlZjE2IiwicmVzdG9yZUFjdGl2ZUZpbHRlcnMiLCJyZXN0b3JlQWN0aXZlVGFiIiwiX3VzZVN0YXRlOCIsInNldElzU3VibWl0dGVkIiwiX3VzZVN0YXRlMTAiLCJxdWVyeVN0cmluZyIsIl91c2VTdGF0ZTEyIiwiX3VzZVN0YXRlMTQiLCJhY3RpdmVUYWJEZWYiLCJmSXNTZWxlY3QiLCJwYWdlU2l6ZSIsInNldEFjdGl2ZVRhYlJlc2V0RmlsdGVycyIsImF1dG9Db21wbGV0ZSIsImxvY2FsU3RvcmFnZSIsInBhcnNlIiwicmVtb3ZlSXRlbSIsImxhc3RRdWVyeUZvcm1IZWlnaHQiLCJzY3JvbGxEb3duVGltZW91dCIsInRvZ2dsZVF1ZXJ5UGFuZWwiLCJfY29udGFpbmVyJGdldEJvdW5kaW4iLCJRdWVyeVBhbmVsIiwic2Nyb2xsSGFuZGxlciIsIk5hdmlnYXRpb25NYW5hZ2VyIiwiTmF2aWdhdGlvbk1hbmFnZXJJbXBsIiwidXNlcl9jb21wb25lbnQiLCJ1cGRhdGVfbGlzdGVuZXJzIiwibm90aWZ5VXBkYXRlTGlzdGVuZXJzIiwiVG9wTmF2aWdhdGlvbkJhciIsInBhbmVsUmVmIiwiRm9vdGVyTWFuYWdlciIsIl9jcmVhdGVDbGFzcyIsIkZvb3Rlck1hbmFnZXJJbXBsIiwiY29weVJpZ2h0IiwiRm9vdGVyIiwic3BhY2VyIiwiQXdhaXQiLCJsb2FkaW5nIiwidGhlUHJvbWlzZSIsImRvVGhlbiIsImRvQ2F0Y2giLCJfZXJyb3IiLCJwcm9taXNlIiwiQ2hlY2tib3giLCJpY29ucyIsInJlYWRPbmx5IiwiaWNvbkNsYXNzTmFtZU1hcCIsInRydWUiLCJmYWxzZSIsInBhcnRpYWwiLCJDYXJkIiwiX19fJGluc2VydFN0eWxlIiwiX19hc3NpZ24kMSIsIl9fcmVzdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX19hd2FpdGVyJDEiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwiX19nZW5lcmF0b3IkMSIsInRyeXMiLCJvcHMiLCJ2ZXJiIiwiX19zcHJlYWRBcnJheSQxIiwidG8iLCJwYWNrIiwiYXIiLCJmaWxlU2l6ZUZvcm1hdGVyIiwiZmlsZVNpemUiLCJ0b0ZpeGVkIiwiRmlsZUl0ZW1Mb2NhbGl6ZXIiLCJmdWxsSW5mb0xheWVyIiwicHJlcGFyaW5nIiwidXBsb2FkaW5nIiwic3VjY2VzcyIsInZhbGlkIiwiZGVuaWVkIiwiYWJvcnRlZCIsIkZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IiLCJsb2NhbCIsIkRyb3B6b25lTG9jYWxpemVyIiwiZGVmYXVsdExhYmVsIiwidXBsb2FkaW5nTWVzc2FnZSIsImFtb3VudE9mRmlsZXMiLCJ1cGxvYWRGaW5pc2hlZCIsInVwbG9hZGVkIiwibm9GaWxlc01lc3NhZ2UiLCJmb290ZXIiLCJhY2NlcHRBbGwiLCJhY2NlcHRDdXN0b20iLCJhY2NlcHQiLCJoZWFkZXIiLCJ1cGxvYWRGaWxlc01lc3NhZ2UiLCJtYXhTaXplTWVzc2FnZSIsIm1heEZpbGVTaXplIiwidmFsaWRGaWxlc01lc3NhZ2UiLCJudW1iZXJPZlZhbGlkRmlsZXMiLCJtYXhGaWxlcyIsImZha2V1cGxvYWRzdWNjZXNzIiwiZmFrZVVwbG9hZEVycm9yIiwiRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3RvciIsIlZhbGlkYXRlRXJyb3JMb2NhbGl6ZXIiLCJtYXhTaXplRXJyb3IiLCJtYXhTaXplIiwiYWNjZXB0RXJyb3IiLCJtYXhGaWxlQ291bnQiLCJyZWFkQXNEYXRhVVJMIiwiZmlsZSIsIm9uUHJvZ3Jlc3MiLCJyZWFkZXJfMSIsIkZpbGVSZWFkZXIiLCJvbnByb2dyZXNzIiwib25lcnJvciIsIm9ubG9hZCIsImdldEltYWdlT3JpZW50YXRpb24iLCJpbWFnZVNvdXJjZSIsImltZ18xIiwiSW1hZ2UiLCJldiIsIm9jdGV0IiwiZ2V0RXh0IiwiZmlsZU5hbWUiLCJleGVjIiwiREVGX0dFTl9NSU1FIiwibWltZVNlbGVjdG9yIiwibWltZVR5cGUiLCJoZWFkZXJNaW1lIiwidGFpbE1pbWUiLCJhcHBsaWNhdGlvblNlbGVjdG9yIiwiYXVkaW9TZWxlY3RvciIsInZpZGVvU2VsZWN0b3IiLCJ0ZXh0U2VsZWN0b3IiLCJpbWFnZVNlbGVjdG9yIiwiZm9udFNlbGVjdG9yIiwiZXh0ZW5zaW9uU2VsZWN0b3IiLCJleHRlbnNpb24iLCJnZW5lcmljTWltZSIsImNoZWNrSXNDb2RlIiwibWltZVVybExpc3QiLCJhYWMiLCJhY2NkYiIsImFidyIsImFyYyIsImF2aSIsImF6dyIsImJtcCIsImJ6IiwiYnoyIiwiY2RhIiwiY3NoIiwiY3N2IiwiZG9jeCIsImRyYXdpbyIsImVvdCIsImVwdWIiLCJnemlwIiwiZ2lmIiwiaWNhbGVuZGFyIiwiamFyIiwianBlZyIsImphdmFzY3JpcHQiLCJqc29uIiwianNvbmxkIiwibWlkaSIsIm1wMyIsIm1wNCIsIm1wZWciLCJtcGtnIiwibXAydCIsIm9kcCIsIm9kcyIsIm9kdCIsIm9nYSIsIm9ndiIsIm9neCIsIm9wdXMiLCJvdGYiLCJwbmciLCJwZGYiLCJwaHAiLCJwcHR4IiwicHNkIiwicmFyIiwicnRmIiwic2FzcyIsInN3ZiIsInRpZmYiLCJ0dGYiLCJ0eXBlc2NyaXB0IiwidnNkIiwid2F2Iiwid2ViYSIsIndlYm0iLCJ3ZWJwIiwid29mZiIsIndtYSIsIndtdiIsInhodG1sIiwieGxzeCIsInhtbCIsInh1bCIsInppcCIsInNldmVuemlwIiwicHl0aG9uIiwiamF2YSIsInJlYWN0IiwidnVlIiwiZmFsbEJhY2siLCJFeHRGaWxlSW5zdGFuY2UiLCJleHRGaWxlIiwiaW1hZ2VVcmwiLCJlcnJvcnMiLCJ1cGxvYWRNZXNzYWdlIiwidXBsb2FkU3RhdHVzIiwicHJvZ3Jlc3MiLCJ4aHIiLCJleHRyYURhdGEiLCJleHRyYVVwbG9hZERhdGEiLCJzZXJ2ZXJSZXNwb25zZSIsImRvd25sb2FkVXJsIiwidmlkZW9VcmwiLCJ0b0V4dEZpbGUiLCJleHRGaWxlSW5zdGFuY2UiLCJleHRGaWxlQ2xvbmUiLCJleHRGaWxlSW5zdGFuY2VLZXlzIiwiZXh0RmlsZUluc3RhbmNlVmFsdWVzIiwiY3VycmVudFZhbHVlIiwiY3VycktleSIsIl9fYXNzaWduIiwiX19hd2FpdGVyIiwiX19nZW5lcmF0b3IiLCJfX3NwcmVhZEFycmF5IiwiRXh0RmlsZU1hbmFnZXIiLCJnZXROZXh0SWQiLCJuZXh0SWQiLCJzZXRGaWxlTGlzdCIsImV4dEZpbGVzSW5zdGFuY2VzIiwiZmlsZUxpc3RzIiwiY3JlYXRlRmlsZUxpc3RNYXAiLCJyZW1vdmVGaWxlTGlzdE1hcCIsImdldEV4dEZpbGVJbnN0YW5jZUxpc3QiLCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyIsImRyb3B6b25lSWQiLCJsb2NhbEZpbGVzIiwidmFsaWRhdGVGaWxlcyIsImNsZWFuT25VcGxvYWQiLCJyZXN1bHRFeHRMaXN0IiwidGVtTG9jYWxGaWxlcyIsInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nMiIsIkZpbGVJZEdlbmVyYXRvciIsIlN5bnRoZXRpY0ZpbGUiLCJjcmVhdGVGaWxlIiwiRmlsZSIsImNyZWF0ZV9hYWMiLCJjcmVhdGVfYWJ3IiwiY3JlYXRlX2ZyZWVhcmMiLCJjcmVhdGVfYXZpIiwiY3JlYXRlX2F6dyIsImNyZWF0ZV9vY3RldCIsImNyZWF0ZV9ibXAiLCJjcmVhdGVfYnoiLCJjcmVhdGVfYnoyIiwiY3JlYXRlX2NkYSIsImNyZWF0ZV9jc2giLCJjcmVhdGVfY3NzIiwiY3JlYXRlX2NzdiIsImNyZWF0ZV9kb2MiLCJjcmVhdGVfZG9jeCIsImNyZWF0ZV9lb3QiLCJjcmVhdGVfZXB1YiIsImNyZWF0ZV9nemlwIiwiY3JlYXRlX2dpZiIsImNyZWF0ZV9odG0iLCJjcmVhdGVfaHRtbCIsImNyZWF0ZV9pY28iLCJjcmVhdGVfaWNhbGVuZGFyIiwiY3JlYXRlX2phciIsImNyZWF0ZV9qcGVnIiwiY3JlYXRlX2pwZyIsImNyZWF0ZV9qcyIsImNyZWF0ZV9qc29uIiwiY3JlYXRlX2pzb25sZCIsImNyZWF0ZV9taWQiLCJjcmVhdGVfeF9taWQiLCJjcmVhdGVfbWlkaSIsImNyZWF0ZV94X21pZGkiLCJjcmVhdGVfbWpzIiwiY3JlYXRlX21wMyIsImNyZWF0ZV9tcDQiLCJjcmVhdGVfbXBlZyIsImNyZWF0ZV9tcGtnIiwiY3JlYXRlX29kcCIsImNyZWF0ZV9vZHMiLCJjcmVhdGVfb2R0IiwiY3JlYXRlX29nYSIsImNyZWF0ZV9vZ3YiLCJjcmVhdGVfb2d4IiwiY3JlYXRlX29wdXMiLCJjcmVhdGVfb3RmIiwiY3JlYXRlX3BuZyIsImNyZWF0ZV9wZGYiLCJjcmVhdGVfcGhwIiwiY3JlYXRlX3BwdCIsImNyZWF0ZV9wcHR4IiwiY3JlYXRlX3JhciIsImNyZWF0ZV9ydGYiLCJjcmVhdGVfc2giLCJjcmVhdGVfc3ZnIiwiY3JlYXRlX3N3ZiIsImNyZWF0ZV90YXIiLCJjcmVhdGVfdGlmIiwiY3JlYXRlX3RpZmYiLCJjcmVhdGVfdHMiLCJjcmVhdGVfdHRmIiwiY3JlYXRlX3RleHQiLCJjcmVhdGVfdHlwZXNjcmlwdCIsImNyZWF0ZV92c2QiLCJjcmVhdGVfd2F2IiwiY3JlYXRlX3dlYmEiLCJjcmVhdGVfd2VibSIsImNyZWF0ZV93ZWJwIiwiY3JlYXRlX3dvZmYiLCJjcmVhdGVfd29mZjIiLCJjcmVhdGVfeGh0bWwiLCJjcmVhdGVfeGxzeCIsImNyZWF0ZV94bHMiLCJjcmVhdGVfeG1sIiwiY3JlYXRlX3htbF90eHQiLCJjcmVhdGVfeHVsIiwiY3JlYXRlX3ppcCIsImNyZWF0ZV8zZ3AiLCJjcmVhdGVfM2dwMiIsImNyZWF0ZV8zZ3BfYSIsImNyZWF0ZV8zZ3BfdiIsImNyZWF0ZV83eiIsImNyZWF0ZV9weXRob24iLCJjcmVhdGVfamF2YSIsImNyZWF0ZV9yZWFjdCIsImNyZWF0ZV92dWUiLCJjcmVhdGVGaWxlTGlzdE1pc2NlbGFuaW91cyIsImxpc3RGaWxlIiwiZmlsZUxpc3RUb0V4dEZpbGVBcnJheSIsImZpbGVMaXN0IiwiZXh0RmlsZUFycmF5Iiwic2xlZXBQcmVwYXJpbmciLCJwcmVwYXJpbmdUaW1lIiwiZmFrZUZ1aVVwbG9hZCIsImFkZENsYXNzTmFtZSIsImJhc2VDbGFzc05hbWUiLCJ2YWxpZGF0ZUV4dEZpbGVMaXN0IiwiZXh0RmlsZUxpc3QiLCJyZW1haW5pbmdWYWxpZHMiLCJsb2NhbFZhbGlkYXRvclByb3BzIiwibG9jYWxpemF0aW9uIiwiZmlsZUxpc3RSZXN1bHQiLCJyZW1haW5pbmciLCJWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIiLCJtYXhGaWxlRXJyb3JNZXNzZW5nZXIiLCJjdXJyZW50RXh0RmlsZSIsInZhbGlkYXRlRXh0RmlsZSIsInZhbGlkYXRvclByb3BzIiwibG9jYWxFcnJvcnMiLCJleHRGaWxlUmVzdWx0IiwiZXJyb3JzUmVzdWx0IiwibWF4RmlsZVNpemVFcnJvck1lc3NlbmdlciIsImFjY2VwdEl0ZW0iLCJoZWFkZXJNaW1lRmlsZSIsInRhaWxNaW1lRmlsZSIsInZhbGlkYXRlQWNjZXB0Iiwic2VwYXJhdGVBY2NlcHQiLCJpc1ZhbGlkIiwiVElNRU9VVF9FUlJPUl9SRVNQT05TRSIsIkFCT1JURURfRVJST1JfUkVTUE9OU0UiLCJKU09OX1BBUlNFX0VSUk9SX1JFU1BPTlNFIiwiVU5FWFBFQ1RFRF9FUlJPUl9SRVNQT05TRSIsIm1ha2VFcnJvclVwbG9hZFJlc3BvbnNlIiwicmVzcG9uc2VGdWkiLCJ1cGxvYWRGb3JtRGF0YSIsImVuZHBvaW50IiwiaGVhZGVycyIsImZpbmFsTWV0aG9kIiwidXBsb2FkIiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9ubG9hZGVuZCIsIl9hIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlIiwianNvblJlc3BvbnNlIiwiSnNvblBhcnNlUmVzcG9uc2UiLCJoZWFkZXJLZXlzIiwic2V0UmVxdWVzdEhlYWRlciIsImFkZEhlYWRlcnMiLCJzZW5kIiwidXBsb2FkRXh0RmlsZSIsInVwbG9hZExhYmVsIiwidXBsb2FkZXIiLCJsb2NhbE1ldGhvZCIsImZpbGVUb1VwbG9hZCIsImZvcm1EYXRhIiwiZmluYWxFeHRyYURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsImV4dHJhRGF0YUtleXMiLCJhZGRFeHRyYURhdGEiLCJOT19YSFJfUFJPVklERURfRVJST1IiLCJtYWtlU3VjY2Vzc1VwbG9hZFJlc3BvbnNlIiwidG9VcGxvYWRhYmxlRXh0RmlsZUxpc3QiLCJYTUxIdHRwUmVxdWVzdCIsInNsZWVwVHJhbnNpdGlvbiIsInNhbml0aXplQXJyRXh0RmlsZSIsImFyckV4dEZpbGUiLCJkZWxldGVkIiwiTkFNRURfQ09MT1JTIiwiaW5kaWFucmVkIiwibGlnaHRjb3JhbCIsInNhbG1vbiIsImRhcmtzYWxtb24iLCJsaWdodHNhbG1vbiIsImNyaW1zb24iLCJyZWQiLCJmaXJlYnJpY2siLCJkYXJrcmVkIiwicGluayIsImxpZ2h0cGluayIsImhvdHBpbmsiLCJkZWVwcGluayIsIm1lZGl1bXZpb2xldHJlZCIsInBhbGV2aW9sZXRyZWQiLCJjb3JhbCIsInRvbWF0byIsIm9yYW5nZXJlZCIsImRhcmtvcmFuZ2UiLCJvcmFuZ2UiLCJnb2xkIiwieWVsbG93IiwibGlnaHR5ZWxsb3ciLCJsZW1vbmNoaWZmb24iLCJsaWdodGdvbGRlbnJvZHllbGxvdyIsInBhcGF5YXdoaXAiLCJtb2NjYXNpbiIsInBlYWNocHVmZiIsInBhbGVnb2xkZW5yb2QiLCJraGFraSIsImRhcmtraGFraSIsImxhdmVuZGVyIiwidGhpc3RsZSIsInBsdW0iLCJ2aW9sZXQiLCJvcmNoaWQiLCJmdWNoc2lhIiwibWFnZW50YSIsIm1lZGl1bW9yY2hpZCIsIm1lZGl1bXB1cnBsZSIsInJlYmVjY2FwdXJwbGUiLCJibHVldmlvbGV0IiwiZGFya3Zpb2xldCIsImRhcmtvcmNoaWQiLCJkYXJrbWFnZW50YSIsInB1cnBsZSIsImluZGlnbyIsInNsYXRlYmx1ZSIsImRhcmtzbGF0ZWJsdWUiLCJtZWRpdW1zbGF0ZWJsdWUiLCJncmVlbnllbGxvdyIsImNoYXJ0cmV1c2UiLCJsYXduZ3JlZW4iLCJsaW1lIiwibGltZWdyZWVuIiwicGFsZWdyZWVuIiwibGlnaHRncmVlbiIsIm1lZGl1bXNwcmluZ2dyZWVuIiwic3ByaW5nZ3JlZW4iLCJtZWRpdW1zZWFncmVlbiIsInNlYWdyZWVuIiwiZm9yZXN0Z3JlZW4iLCJncmVlbiIsImRhcmtncmVlbiIsInllbGxvd2dyZWVuIiwib2xpdmVkcmFiIiwib2xpdmUiLCJkYXJrb2xpdmVncmVlbiIsIm1lZGl1bWFxdWFtYXJpbmUiLCJkYXJrc2VhZ3JlZW4iLCJsaWdodHNlYWdyZWVuIiwiZGFya2N5YW4iLCJ0ZWFsIiwiYXF1YSIsImN5YW4iLCJsaWdodGN5YW4iLCJwYWxldHVycXVvaXNlIiwiYXF1YW1hcmluZSIsInR1cnF1b2lzZSIsIm1lZGl1bXR1cnF1b2lzZSIsImRhcmt0dXJxdW9pc2UiLCJjYWRldGJsdWUiLCJzdGVlbGJsdWUiLCJsaWdodHN0ZWVsYmx1ZSIsInBvd2RlcmJsdWUiLCJsaWdodGJsdWUiLCJza3libHVlIiwibGlnaHRza3libHVlIiwiZGVlcHNreWJsdWUiLCJkb2RnZXJibHVlIiwiY29ybmZsb3dlcmJsdWUiLCJyb3lhbGJsdWUiLCJibHVlIiwibWVkaXVtYmx1ZSIsImRhcmtibHVlIiwibmF2eSIsIm1pZG5pZ2h0Ymx1ZSIsImNvcm5zaWxrIiwiYmxhbmNoZWRhbG1vbmQiLCJiaXNxdWUiLCJuYXZham93aGl0ZSIsIndoZWF0IiwiYnVybHl3b29kIiwidGFuIiwicm9zeWJyb3duIiwic2FuZHlicm93biIsImdvbGRlbnJvZCIsImRhcmtnb2xkZW5yb2QiLCJwZXJ1IiwiY2hvY29sYXRlIiwic2FkZGxlYnJvd24iLCJzaWVubmEiLCJicm93biIsIm1hcm9vbiIsIndoaXRlIiwic25vdyIsImhvbmV5ZGV3IiwibWludGNyZWFtIiwiYXp1cmUiLCJhbGljZWJsdWUiLCJnaG9zdHdoaXRlIiwid2hpdGVzbW9rZSIsInNlYXNoZWxsIiwiYmVpZ2UiLCJvbGRsYWNlIiwiZmxvcmFsd2hpdGUiLCJpdm9yeSIsImFudGlxdWV3aGl0ZSIsImxpbmVuIiwibGF2ZW5kZXJibHVzaCIsIm1pc3R5cm9zZSIsImdhaW5zYm9ybyIsImxpZ2h0Z3JheSIsInNpbHZlciIsImRhcmtncmF5IiwiZ3JheSIsImRpbWdyYXkiLCJsaWdodHNsYXRlZ3JheSIsInNsYXRlZ3JheSIsImRhcmtzbGF0ZWdyYXkiLCJibGFjayIsImRhcmtlckNvbG9yIiwiY29sb3JJbnB1dCIsInBlcmNlbnRhZ2UiLCJkYXJrZWRDb2xvciIsImNvbXBvbmVudDEiLCJjb21wb25lbnQyIiwiY29tcG9uZW50MyIsImlzSGV4Q29sb3IiLCJjb2xvdXJOYW1lVG9IZXgiLCJoZXhUb2RlYyIsImNvbXBvbmVudHMiLCJoZXhDb2xvclRvUkdCIiwicGVyYyIsImRlZmF1bHRDb2xvciIsInJlc3VsdERlZmF1bHQiLCJoZXhBcnJheSIsImNvbG91ciIsInRvTG9jYWxlTG93ZXJDYXNlIiwiZGVjQXJyYXkiLCJsZXR0ZXIiLCJhc3VyZUNvbG9yIiwiREVGQVVMVF9GT05UX0NPTE9SIiwiY29tcGxldGVBc3VyZUNvbG9yIiwibWVyZ2VQcm9wcyIsImluY29tbWluZ1Byb3BzIiwiSW5wdXRIaWRkZW4iLCJkZWZhdWx0RHJvem9uZVByb3BzIiwiY2xpY2thYmxlIiwiYmVoYXZpb3VyIiwiZHJvcE9uTGF5ZXIiLCJ1cGxvYWRDb25maWciLCJhY3Rpb25CdXR0b25zIiwiREVGQVVMVF9CT1JERVJfUkFESVVTIiwiRHJvcHpvbmVDaGlsZHJlbiIsImlzRW1wdHlBcnJheSIsImhhbmRsZURyb3BVdGlsIiwiZXZ0IiwiaGFuZGxlRHJhZ1V0aWwiLCJkcm9wRWZmZWN0IiwiaGFuZGxlQ2xpY2tVdGlsIiwiYXN1cmVSaXBwbGVDb2xvciIsIkRyb3B6b25lRGlzYWJsZWRMYXllciIsImZpbmFsRGlzYWJsZWRMYXllckNsYXNzTmFtZSIsIm9uRHJvcCIsIm9uRHJhZ092ZXIiLCJwYXJzZVNpemUiLCJzaXplU3RyIiwiQ2FuY2VsIiwiY29sb3JGaWxsIiwiZmluYWxTaXplIiwiZmluYWxTdHlsZSIsImN1cnNvciIsInhtbG5zIiwidmlld0JveCIsIkNoZWNrQ2lyY2xlIiwiQ2xlYW4iLCJlbmFibGVCYWNrZ3JvdW5kIiwiQ2xlYXIiLCJDbG91ZERvbmUiLCJEb0Rpc3R1cmIiLCJEb3dubG9hZEZpbGUiLCJJbmZvRGlzbmV5IiwiUGxheUljb24iLCJVcGxvYWQiLCJVcGxvYWRFcnJvciIsIkR5bmFtaUNTUyIsIlVwbG9hZGluZ1Byb2Nlc3MiLCJzcGluIiwiZmluYWxDbGFzc25hbWUiLCJWaXNpYmlsaXR5IiwiRHJvcHpvbmVIZWFkZXIiLCJvblJlc2V0Iiwib25DbGVhbiIsIm9uVXBsb2FkU3RhcnQiLCJpc1VwbG9hZGluZyIsInVybFByZXNlbnQiLCJib3JkZXJSYWRpdXMiLCJyZXNldFN0eWxlcyIsIl9iIiwiZmlyc3RDbGFzc05hbWUiLCJEcm9wem9uZUhlYWRlckxvY2FsaXplciIsImhhbmRsZUNsZWFuIiwiaGFuZGxlU3RhcnRVcGxvYWRpbmciLCJmaW5hbENsYXNzTmFtZSIsImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsIm1heEZpbGVTaXplTWVzc2VuZ2VyIiwibWF4RmlsZVNpemVGb3JtYXR0ZWQiLCJ2YWxpZEZpbGVTaXplTWVzc2VuZ2VyIiwibWFrZUhlYWRlciIsIkhlYWRlckl0ZW0iLCJEcm9wem9uZUZvb3RlciIsIl9jIiwiYWxsb3dlZFR5cGVzTGFiZWwiLCJjdXN0b21NZXNzYWdlIiwiRHJvcHpvbmVGb290ZXJMb2NhbGl6ZXIiLCJhY2NlcEN1c3RvbU1lc3NlbmdlciIsImJvcmRlckJvdG9tTGVmdFJhZGl1cyIsImJvcmRlckJvdG9tUmlnaHRSYWRpdXMiLCJmcm9tVXBwZXJDYXNlVG9IeXBoZW4iLCJydWxlTGFiZWwiLCJjaGFyYWN0ZXIiLCJjaGFyVXBwZXIiLCJpc3VwcGVyIiwiY3VycmVudENoYXIiLCJwYXJ0cyIsIm1ha2VSYXdSdWxlTGFiZWwiLCJzcGxpdGVkQ2xhc3NOYW1lIiwidG9SYXdTdHlsZVNoZWV0Iiwic2hlZXRSdWxlcyIsInJhd1N0eWxlU2hlZXQiLCJuZXN0ZWRQc2V1ZG9zIiwiaiIsImN1cnJuZXRSYXdSdWxlIiwiY3VycmVudFJ1bGUiLCJydWxlc2tleXMiLCJydWxlcyIsInN0eWxlTGFiZWwiLCJjdXJyZW50S2V5IiwicHNldWRvQ2xhc3NOYW1lIiwic3R5bGVSdWxlIiwiaW5zZXJ0U3R5bGVTaGVldCIsImR5bmFtaWNTaGVldCIsInJlc3VsdF9pZCIsImdldEVsZW1lbnRCeUlkIiwiY29udGV0UmF3IiwicmF3IiwiZWRpdFN0eWxlU2hlZXQiLCJyZW1vdmVTdHlsZVNoZWV0IiwiaHRtbE9iamVjdCIsImV4aXN0U3R5bGVTaGVldCIsIm1ha2VTdHlsZVNoZWV0IiwiTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIiLCJuZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyIiwibWFrZUR5bmFtaWNTdHlsZSIsImlkQ2xhc3NOYW1lIiwidGV4dENvbG9yIiwidGV4dERlY29yYXRpb24iLCJib3JkZXIiLCJGaWxlc1VpQ29udGV4dCIsIk1hdGVyaWFsQnV0dG9uIiwidGV4dFRyYW5zZm9ybSIsImRpc2FibGVSaXBwbGUiLCJkYXJrTW9kZVByb3AiLCJkYXJrTW9kZSIsImRhcmtNb2RlQ29udGV4dCIsIm1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lIiwiaWRTdHlsZXMiLCJzZXRJZFN0eWxlcyIsInN0eWxlSW5qZWN0ZWQiLCJzZXRTdHlsZUluamVjdGVkIiwic2V0RmluYWxDbGFzc05hbWUiLCJpZFN0eWxlIiwiZmluYWxUZXh0RGVjb3JhdGlvbiIsImhhbmRsZUluc2VyU3R5bGUiLCJyZW1vdmVTdHlsZSIsInVzZU1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lIiwiZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlIiwiYnV0dG9uQW5jaG9yRGl2IiwiY2lyY2xlIiwiZGlhbWV0ZXIiLCJjcmVhdGVSaXBwbGVCdXR0b24iLCJEcm9wem9uZUJ1dHRvbnMiLCJjbGVhbkJ1dHRvbiIsImFib3J0QnV0dG9uIiwiY29udGFpbmVyQ2xhc3NOYW1lIiwiY29udGFpbmVyU3R5bGUiLCJkZWxldGVCdXR0b24iLCJ1cGxvYWRCdXR0b24iLCJvbkFib3J0Iiwib25EZWxldGUiLCJvblVwbG9hZCIsImFjdGlvbkJ1dHRvbnNMaXN0IiwidGFpbENsYXNzTmFtZSIsImFjdGlvbkJ1dHRvblByb3BzIiwiRHJvcExheWVyIiwib25EcmFnTGVhdmUiLCJjbGFzc05hbWVMYXllciIsIm1ha2VEeW5hbWljRHJvcHpvbmVTdHlsZVNoZWV0IiwiYmFja2dyb3VuZCIsIm1pbkhlaWdodCIsImJvcmRlckNvbG9yIiwiYm9yZGVyVG9wIiwidXNlRmlsZU1vc2FpY0luaXRpYWxpemVyIiwicHJldmlldyIsImN1c3RvbUljb25zIiwiaXNJbWFnZSIsInNldElzSW1hZ2UiLCJpc1ZpZGVvIiwic2V0SXNWaWRlbyIsInNldFVybCIsInNldEltYWdlU291cmNlIiwidmlkZW9Tb3VyY2UiLCJzZXRWaWRlb1NvdXJjZSIsIl9mIiwiaXNSZWFkeSIsInNldElzUmVhZHkiLCJyZXNwb25zZV8xIiwibWltZVJlc3VtZSIsImV4dGVudGlvbiIsImN1c3RvbVVybCIsImdldFVSTEZpbGVJY28iLCJnZXRVUkxGaWxlSWNvRnJvbU5hbWVBbmRUeXBlIiwiZ2V0SGVhZGVyQW5kVGFpbCIsImluaXQiLCJzcGxpdHRlZFR5cGUiLCJEcm9wem9uZSIsImNsZWFuRmlsZXMiLCJhdXRvQ2xlYW4iLCJmYWtlVXBsb2FkIiwib25VcGxvYWRGaW5pc2giLCJsb2NQcm9wcyIsIm9uRHJhZ0VudGVyIiwiaGVhZGVyQ29uZmlnIiwiZm9vdGVyQ29uZmlnIiwibG9jQ29udGV4dCIsIl9nIiwiX2giLCJhdXRvVXBsb2FkIiwiX2oiLCJhY3Rpb25CdXR0b25zUG9zaXRpb24iLCJzdHlsZUJvcmRlclJhZGl1cyIsImNsZWFuRmlsZXNIZWFkZXIiLCJfbCIsImRlbGV0ZUZpbGVzIiwiZGVsZXRlRmlsZXNIZWFkZXIiLCJfbSIsIm1heEZpbGVTaXplSGVhZGVyIiwiX28iLCJ1cGxvYWRGaWxlcyIsInVwbG9hZEZpbGVzSGVhZGVyIiwiX3AiLCJ1cGxvYWRpbmdJY29uIiwidXBsb2FkaW5nSWNvbkhlZGFlciIsIl9xIiwidmFsaWRGaWxlc0NvdW50IiwidmFsaWRGaWxlc0NvdW50SGVhZGVyIiwiY3VzdG9tSGVhZGVyIiwiY2xhc3NOYW1lSGVhZGVyIiwicmVzZXRTdHlsZXNIZWFkZXIiLCJzdHlsZUhlYWRlciIsImN1c3RvbUZvb3RlciIsIm5vTWlzc2luZ0ZpbGVzTGFiZWwiLCJfdCIsInVwbG9hZFByb2dyZXNzTWVzc2FnZSIsIl91IiwidXBsb2FkUmVzdWx0TWVzc2FnZSIsImZ1aVJpcHBsZVJlZkFicyIsImZ1aVJpcHBsZVJlZlJlbCIsIl92IiwiaXNEcmFnZ2luZyIsInNldElzRHJhZ2dpbmciLCJfdyIsInNldElzVXBsb2FkaW5nIiwibG9jYWxNZXNzYWdlIiwic2V0TG9jYWxNZXNzYWdlIiwidmFsaWRhdGVGaWxlc0ZsYWciLCJpc1ZhbGlkYXRlQWN0aXZlIiwiX3kiLCJzZXRMb2NhbEZpbGVzIiwic2V0TnVtYmVyT2ZWYWxpZEZpbGVzIiwiYXJyT2ZFeHRGaWxlcyIsImV4dEZpbGVJbmRleCIsImZpbmRJbmRleCIsImN1cnJFeHRGaWxlT2JqIiwiZXh0RmlsZW9iaiIsInByZXZTdGF0dXMiLCJuZXh0U3RzdGF1cyIsInNldE5leHRVcGxvYWRTdGF0dXMiLCJ2YWxpZGF0ZWRFeHRGaWxlTGlzdCIsInVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyIiwidXBsb2FkZmlsZXMiLCJhcnJPZkV4dEZpbGVzSW5zdGFuY2VzIiwidG90YWxOdW1iZXIiLCJtaXNzaW5nVXBsb2FkIiwidG90YWxSZWplY3RlZCIsImN1cnJlbnRDb3VudFVwbG9hZCIsInVwbG9hZGluZ01lc3NlbmdlciIsIm5ld0V4dEZpbGVMb2NhbCIsInNlcnZlclJlc3BvbnNlcyIsImN1cnJlbnRFeHRGaWxlSW5zdGFuY2UiLCJ1cGxvYWRSZXNwb25zZSIsImZha2VQcm9ncmVzcyIsInVwbG9hZGVkRmlsZSIsImZpbmlzaFVwbG9hZE1lc3NlbmdlciIsImlzVXBsb2FkQWJsZUV4dEZpbGUiLCJoYW5kbGVGaWxlc0NoYW5nZSIsInVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdCIsImhhbmRsZUFib3J0VXBsb2FkIiwibGlzdEV4dEZpbGVMb2NhbCIsImFib3J0IiwiX3oiLCJmaW5hbERyb3B6b25lSWQiLCJmaW5hbENsYXNzTmFtZUhlYWRlciIsInNldEZpbmFsQ2xhc3NOYW1lSGVhZGVyIiwiZmluYWxDbGFzc05hbWVGb290ZXIiLCJzZXRGaW5hbENsYXNzTmFtZUZvb3RlciIsImZpbmFsQ2xhc3NOYW1lRGlzYWJsZWQiLCJzZXRGaW5hbENsYXNzTmFtZURpc2FibGVkIiwibWFrZUNsYXNzTmFtZSIsInVzZURyb3B6b25lQ2xhc3NOYW1lIiwiZHJvcHpvbmVDbGFzc05hbWUiLCJoZWFkZXJDbGFzc05hbWUiLCJmb290ZXJDbGFzc05hbWUiLCJkaXNhYmxlZExheWVyQ2xhc3NOYW1lIiwiZHJvcExheWVyQ2xhc3NOYW1lIiwiY2xhc3NOYW1lQ3JlYXRlZCIsInNldENsYXNzTmFtZUNyZWF0ZWQiLCJib3JkZXJXaWR0aCIsIm1ha2VEcm9wTGF5ZXJEeW5hbWljU3R5bGUiLCJ1c2VEcm9wTGF5ZXJDbGFzc05hbWUiLCJ2YWxpZGF0ZWRGdWlGaWxlTGlzdCIsImZpbmFsRXh0RmlsZUxpc3QiLCJvdXRlckZ1aVZhbGlkYXRpb24iLCJmdWlGaWxlTGlzdFRvVmFsaWRhdGUiLCJmaW5hbE51bWJlck9mVmFsaWRzIiwiaGFuZGxlRHJhZ0xlYXZlIiwibWFrZVJpcHBsZSIsImZ1aUNvbnRhaW5lckFicyIsImZ1aUNvbnRhaW5lclJlbCIsImNyZWF0ZUZ1aVJpcHBsZUZyb21EaXYiLCJrYW11aSIsImV4dEZpbGVMaXN0T3V0cHV0IiwiZmlsZXMiLCJoYW5kbGVSZXNldCIsImZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXIiLCJmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyQ2xpY2thYmxlIiwiQmFzZVByZXBhcmluZ0xvYWRlciIsInJhZGl1cyIsImZpbmFsUmFkaXVzIiwiZmluYWxYIiwiZmluYWxZIiwieG1sbnNYbGluayIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJjeCIsImN5Iiwic3Ryb2tlIiwicmVwZWF0Q291bnQiLCJkdXIiLCJrZXlUaW1lcyIsIkxvYWRlckNvbnRhaW5lciIsIkluZmluaXRlTG9hZGVyIiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiTGF5ZXIiLCJ2aXNpYmxlIiwib3RoZXJQcm9wcyIsIkltYWdlUHJldmlld0RlZmF1bHRQcm9wcyIsImFsdCIsInNtYXJ0SW1nRml0IiwiSW1hZ2VQcmV2aWV3IiwiZmluYWxIZWlnaHQiLCJmaW5hbFdpZHRoIiwic2V0ZmluYWxEaW1lbnNpb25zIiwic2V0U291cmNlIiwiaGFuZGxlU2V0U3RyU291cmNlIiwibmV3SW1hZ2VTcmMiLCJnZXRTb3VyY2UiLCJBYm9ydGVkU3RhdHVzIiwiRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIiLCJFbXB0eVN0YXR1cyIsIkVycm9yU3RhdHVzIiwiUHJlcGFyaW5nU3RhdHVzIiwib25DYW5jZWwiLCJTdWNjZXNzU3RhdHVzIiwiRHluYW1pY0xvYWRlciIsImhpZGVQZXJuY2VudGFnZSIsImNpcmNsZVJlZiIsIm15Q2lyY2xlIiwiY2lyY3VtZmVyZW5jZSIsIlBJIiwicGVyY2VudCIsInNldFByb2dyZXNzIiwidHJhbnNmb3JtT3JpZ2luIiwiVXBsb2FkaW5nU3RhdHVzIiwiVG9vbHRpcCIsInN0YXR1c0NsYXNzTmFtZSIsInNldFNhdHVzQ2xhc3NOYW1lIiwic2V0TWVzc2FnZSIsImFjdW0iLCJjdXJyIiwiaGFuZGxlQ2hhbmdlU3RhdHVzIiwiRG93bmxvYWRIaWRkZW4iLCJhbmNob3JSZWYiLCJkb3dubG9hZCIsImhpZGRlbiIsIkxheWVyQ29udGFpbmVyIiwiRmlsZU1vc2FpY05hbWUiLCJGaWxlTW9zYWljVXBsb2FkTGF5ZXIiLCJlbGV2YXRpb25Db250YWluZXJSZWYiLCJsaXN0Q29udGFpbmVyU3RvcnlSZWYiLCJzdGF0dXNIaXN0b3J5Iiwic2V0U3RhdHVzSGlzdG9yeSIsInRlbXBTdGF0dXNIaXN0b3J5IiwiY3VycmVudEVsZXZhdGlvbkNvbnRhaW5lciIsImN1cnJlbnRFbGV2YXRpb25MaXN0IiwiRmlsZU1vc2FpY0ltYWdlTGF5ZXIiLCJjYXJkIiwiaXNCbHVyIiwibG9jYWxTb3VyY2UiLCJzZXRMb2NhbFNvdXJjZSIsInNldEVycm9yIiwiRmlsZU1vc2FpY1N0YXR1cyIsIkZpbGVNb3NhaWNJbmZvTGF5ZXIiLCJvbkNsb3NlSW5mbyIsImxvY2FsTmFtZSIsInNpemVGb3JtYXR0ZWQiLCJsb2NhbFR5cGUiLCJuYW1lTGFiZWwiLCJzaXplTGFiZWwiLCJ0eXBlTGFiZWwiLCJGaWxlTW9zYWljU2l6ZSIsIkZpbGVNb3NhaWNNYWluTGF5ZXIiLCJkZWxldGVJY29uIiwiZG93bmxvYWRJY29uIiwiaW1hZ2VJY29uIiwiaW5mb0ljb24iLCJvbkRvd25sb2FkIiwib25PcGVuSW5mbyIsIm9uU2VlIiwib25XYXRjaCIsInZpZGVvSWNvbiIsIkZpbGVNb3NhaWMiLCJwcm9wU2l6ZSIsInByb3BUeXBlIiwiYmFja2dyb3VuZEJsdXJJbWFnZSIsImFsd2F5c0FjdGl2ZSIsInJlc3VsdE9uVG9vbHRpcCIsIm9uRG91YmxlQ2xpY2siLCJvblJpZ2h0Q2xpY2siLCJkb3dubG9hZFJlZiIsImZpbGVNb3NhaWNGaWxlTmFtZUNsYXNzTmFtZSIsImxvY2FsRmlsZU5hbWUiLCJsb2NhbEZpbGVUeXBlIiwibG9jYWxGaWxlU2l6ZSIsImdldExvY2FsRmlsZUl0ZW1EYXRhIiwibG9jYWxTaXplIiwibG9jYWxQcm9ncmVzcyIsInNldExvY2FsUHJvZ3Jlc3MiLCJsb2FkZWQiLCJ0b3RhbCIsInVzZVByb2dyZXNzIiwic2hvd0luZm8iLCJzZXRTaG93SW5mbyIsImhvdmVyaW5nIiwic2V0SG92ZXJpbmciLCJoYW5kbGVDbG9zZUluZm8iLCJsYXN0VXBsb2FkU3RhdHVzIiwic2V0TGFzdFVwbG9hZFN0YXR1cyIsInVzZUlzVXBsb2FkaW5nIiwib25Db250ZXh0TWVudSIsImFuY2hvckVsZW1lbnQiLCJvd25LZXlzIiwiZW51bWVyYWJsZU9ubHkiLCJzeW1ib2xzIiwic3ltIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsIlNpbmdsZU5ld0RpciIsImVkaXQiLCJzZXROZXdEaXIiLCJfbmFtZSIsInNldE5hbWUiLCJkaXJzIiwiX2UkcmVsYXRlZFRhcmdldCIsInBhZGRpbmdSaWdodCIsIk5ld0RpcnMiLCJzZXREaXJlY3RvcnkiLCJuZXdEaXJzIiwic2V0TmV3RGlycyIsInNldFNpbmdsZU5ld0RpciIsIl9uZXdEaXJzIiwiYWRkRGlyIiwibmV3RGlyIiwiRGlyZWN0b3J5RmllbGQiLCJkaXJlY3RvcnlCYXNlIiwiX2xhYmVsIiwiU2VsZWN0IiwiUmVjb3JkVHlwZUZpZWxkIiwiX3JlYWRPbmx5IiwiYWxsIiwicmVzb2x2ZWQiLCJyZW1vdmVGaWxlIiwiRmlsZVVwbG9hZEZhaWxlZCIsIkZpbGVVcGxvYWRTdWNjZXNzIiwiU2luZ2xlRmlsZVJlc3BvbnNlIiwiZGlyZWN0b3J5IiwicmVzcG9uc2VFcnJvcnMiLCJwYXRoIiwiaGFuZGxlUmVzcG9uc2UiLCJfcmVzcG9uc2UkbmV3RmlsZXMiLCJoYXNFcnJvcnMiLCJuZXdGaWxlcyIsInRvRGlyZWN0b3J5QXJyYXkiLCJGaWxlVXBsb2FkIiwicmVjb3JkVHlwZVNob3ciLCJyZWNvcmRUeXBlcyIsImRpcmVjdG9yeVJlYWRPbmx5IiwiZGlyZWN0b3J5U2hvdyIsIm9uRmluaXNoIiwiX2ZpbGVzIiwic2V0RmlsZXMiLCJfZGlyZWN0b3J5IiwiX3JlY29yZFR5cGUiLCJzZXRSZWNvcmRUeXBlIiwiX3N0YXRlIiwiX3VzZVN0YXRlMTYiLCJfcmVzdWx0cyIsInNldFJlc3VsdHMiLCJjb21wbGV0ZVN0YXRlIiwiX2NvbXBsZXRlU3RhdGUkZmlsZXMiLCJfY29tcGxldGVTdGF0ZSRmaWxlczIiLCJfb25DbGljayIsInJlc3VsdHMiLCJ0MiIsInQzIiwidDQiLCJ0NSIsInQ2IiwidDciLCJ1cGRhdGVGaWxlcyIsImluY29tbWluZ0ZpbGVzIiwidXBkYXRlUmVjb3JkVHlwZSIsIm1pbldpZHRoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///787\n')},818:module=>{eval('!function(e,t){ true?module.exports=t():0}(self,(function(){return(()=>{var __webpack_modules__={661:(e,t,o)=>{var r={};r.v1=o(958),t.h=r},958:(e,t,o)=>{var r={};r.web=o(40);var n={caosdb:{}};n.caosdb.info={},n.caosdb.info.v1=o(988),n.caosdb.info.v1.GeneralInfoServiceClient=function(e,t,o){o||(o={}),o.format="text",this.client_=new r.web.GrpcWebClientBase(o),this.hostname_=e},n.caosdb.info.v1.GeneralInfoServicePromiseClient=function(e,t,o){o||(o={}),o.format="text",this.client_=new r.web.GrpcWebClientBase(o),this.hostname_=e};var s=new r.web.MethodDescriptor("/caosdb.info.v1.GeneralInfoService/GetVersionInfo",r.web.MethodType.UNARY,n.caosdb.info.v1.GetVersionInfoRequest,n.caosdb.info.v1.GetVersionInfoResponse,(function(e){return e.serializeBinary()}),n.caosdb.info.v1.GetVersionInfoResponse.deserializeBinary);n.caosdb.info.v1.GeneralInfoServiceClient.prototype.getVersionInfo=function(e,t,o){return this.client_.rpcCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetVersionInfo",e,t||{},s,o)},n.caosdb.info.v1.GeneralInfoServicePromiseClient.prototype.getVersionInfo=function(e,t){return this.client_.unaryCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetVersionInfo",e,t||{},s)};var i=new r.web.MethodDescriptor("/caosdb.info.v1.GeneralInfoService/GetSessionInfo",r.web.MethodType.UNARY,n.caosdb.info.v1.GetSessionInfoRequest,n.caosdb.info.v1.GetSessionInfoResponse,(function(e){return e.serializeBinary()}),n.caosdb.info.v1.GetSessionInfoResponse.deserializeBinary);n.caosdb.info.v1.GeneralInfoServiceClient.prototype.getSessionInfo=function(e,t,o){return this.client_.rpcCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetSessionInfo",e,t||{},i,o)},n.caosdb.info.v1.GeneralInfoServicePromiseClient.prototype.getSessionInfo=function(e,t){return this.client_.unaryCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetSessionInfo",e,t||{},i)},e.exports=n.caosdb.info.v1},988:(e,t,o)=>{var r=o(19),n=r,s=Function("return this")();n.exportSymbol("proto.caosdb.info.v1.GetSessionInfoRequest",null,s),n.exportSymbol("proto.caosdb.info.v1.GetSessionInfoResponse",null,s),n.exportSymbol("proto.caosdb.info.v1.GetVersionInfoRequest",null,s),n.exportSymbol("proto.caosdb.info.v1.GetVersionInfoResponse",null,s),n.exportSymbol("proto.caosdb.info.v1.VersionInfo",null,s),proto.caosdb.info.v1.VersionInfo=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.VersionInfo,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.VersionInfo.displayName="proto.caosdb.info.v1.VersionInfo"),proto.caosdb.info.v1.GetVersionInfoRequest=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetVersionInfoRequest,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetVersionInfoRequest.displayName="proto.caosdb.info.v1.GetVersionInfoRequest"),proto.caosdb.info.v1.GetVersionInfoResponse=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetVersionInfoResponse,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetVersionInfoResponse.displayName="proto.caosdb.info.v1.GetVersionInfoResponse"),proto.caosdb.info.v1.GetSessionInfoRequest=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetSessionInfoRequest,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetSessionInfoRequest.displayName="proto.caosdb.info.v1.GetSessionInfoRequest"),proto.caosdb.info.v1.GetSessionInfoResponse=function(e){r.Message.initialize(this,e,0,-1,proto.caosdb.info.v1.GetSessionInfoResponse.repeatedFields_,null)},n.inherits(proto.caosdb.info.v1.GetSessionInfoResponse,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetSessionInfoResponse.displayName="proto.caosdb.info.v1.GetSessionInfoResponse"),r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.VersionInfo.prototype.toObject=function(e){return proto.caosdb.info.v1.VersionInfo.toObject(e,this)},proto.caosdb.info.v1.VersionInfo.toObject=function(e,t){var o={major:r.Message.getFieldWithDefault(t,1,0),minor:r.Message.getFieldWithDefault(t,2,0),patch:r.Message.getFieldWithDefault(t,3,0),preRelease:r.Message.getFieldWithDefault(t,4,""),build:r.Message.getFieldWithDefault(t,5,"")};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.VersionInfo.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.VersionInfo;return proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)switch(t.getFieldNumber()){case 1:var o=t.readInt32();e.setMajor(o);break;case 2:o=t.readInt32(),e.setMinor(o);break;case 3:o=t.readInt32(),e.setPatch(o);break;case 4:o=t.readString(),e.setPreRelease(o);break;case 5:o=t.readString(),e.setBuild(o);break;default:t.skipField()}return e},proto.caosdb.info.v1.VersionInfo.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter=function(e,t){var o=void 0;0!==(o=e.getMajor())&&t.writeInt32(1,o),0!==(o=e.getMinor())&&t.writeInt32(2,o),0!==(o=e.getPatch())&&t.writeInt32(3,o),(o=e.getPreRelease()).length>0&&t.writeString(4,o),(o=e.getBuild()).length>0&&t.writeString(5,o)},proto.caosdb.info.v1.VersionInfo.prototype.getMajor=function(){return r.Message.getFieldWithDefault(this,1,0)},proto.caosdb.info.v1.VersionInfo.prototype.setMajor=function(e){return r.Message.setProto3IntField(this,1,e)},proto.caosdb.info.v1.VersionInfo.prototype.getMinor=function(){return r.Message.getFieldWithDefault(this,2,0)},proto.caosdb.info.v1.VersionInfo.prototype.setMinor=function(e){return r.Message.setProto3IntField(this,2,e)},proto.caosdb.info.v1.VersionInfo.prototype.getPatch=function(){return r.Message.getFieldWithDefault(this,3,0)},proto.caosdb.info.v1.VersionInfo.prototype.setPatch=function(e){return r.Message.setProto3IntField(this,3,e)},proto.caosdb.info.v1.VersionInfo.prototype.getPreRelease=function(){return r.Message.getFieldWithDefault(this,4,"")},proto.caosdb.info.v1.VersionInfo.prototype.setPreRelease=function(e){return r.Message.setProto3StringField(this,4,e)},proto.caosdb.info.v1.VersionInfo.prototype.getBuild=function(){return r.Message.getFieldWithDefault(this,5,"")},proto.caosdb.info.v1.VersionInfo.prototype.setBuild=function(e){return r.Message.setProto3StringField(this,5,e)},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetVersionInfoRequest.prototype.toObject=function(e){return proto.caosdb.info.v1.GetVersionInfoRequest.toObject(e,this)},proto.caosdb.info.v1.GetVersionInfoRequest.toObject=function(e,t){var o={};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetVersionInfoRequest;return proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)t.getFieldNumber(),t.skipField();return e},proto.caosdb.info.v1.GetVersionInfoRequest.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetVersionInfoRequest.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetVersionInfoRequest.serializeBinaryToWriter=function(e,t){},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetVersionInfoResponse.prototype.toObject=function(e){return proto.caosdb.info.v1.GetVersionInfoResponse.toObject(e,this)},proto.caosdb.info.v1.GetVersionInfoResponse.toObject=function(e,t){var o,r={versionInfo:(o=t.getVersionInfo())&&proto.caosdb.info.v1.VersionInfo.toObject(e,o)};return e&&(r.$jspbMessageInstance=t),r}),proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetVersionInfoResponse;return proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)if(1===t.getFieldNumber()){var o=new proto.caosdb.info.v1.VersionInfo;t.readMessage(o,proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader),e.setVersionInfo(o)}else t.skipField();return e},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetVersionInfoResponse.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetVersionInfoResponse.serializeBinaryToWriter=function(e,t){var o;null!=(o=e.getVersionInfo())&&t.writeMessage(1,o,proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.getVersionInfo=function(){return r.Message.getWrapperField(this,proto.caosdb.info.v1.VersionInfo,1)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.setVersionInfo=function(e){return r.Message.setWrapperField(this,1,e)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.clearVersionInfo=function(){return this.setVersionInfo(void 0)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.hasVersionInfo=function(){return null!=r.Message.getField(this,1)},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetSessionInfoRequest.prototype.toObject=function(e){return proto.caosdb.info.v1.GetSessionInfoRequest.toObject(e,this)},proto.caosdb.info.v1.GetSessionInfoRequest.toObject=function(e,t){var o={};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetSessionInfoRequest;return proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)t.getFieldNumber(),t.skipField();return e},proto.caosdb.info.v1.GetSessionInfoRequest.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetSessionInfoRequest.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetSessionInfoRequest.serializeBinaryToWriter=function(e,t){},proto.caosdb.info.v1.GetSessionInfoResponse.repeatedFields_=[3,5],r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetSessionInfoResponse.prototype.toObject=function(e){return proto.caosdb.info.v1.GetSessionInfoResponse.toObject(e,this)},proto.caosdb.info.v1.GetSessionInfoResponse.toObject=function(e,t){var o,n={realm:r.Message.getFieldWithDefault(t,1,""),username:r.Message.getFieldWithDefault(t,2,""),rolesList:null==(o=r.Message.getRepeatedField(t,3))?void 0:o,expires:r.Message.getFieldWithDefault(t,4,0),permissionsList:null==(o=r.Message.getRepeatedField(t,5))?void 0:o};return e&&(n.$jspbMessageInstance=t),n}),proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetSessionInfoResponse;return proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)switch(t.getFieldNumber()){case 1:var o=t.readString();e.setRealm(o);break;case 2:o=t.readString(),e.setUsername(o);break;case 3:o=t.readString(),e.addRoles(o);break;case 4:o=t.readInt64(),e.setExpires(o);break;case 5:o=t.readString(),e.addPermissions(o);break;default:t.skipField()}return e},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetSessionInfoResponse.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetSessionInfoResponse.serializeBinaryToWriter=function(e,t){var o=void 0;(o=e.getRealm()).length>0&&t.writeString(1,o),(o=e.getUsername()).length>0&&t.writeString(2,o),(o=e.getRolesList()).length>0&&t.writeRepeatedString(3,o),0!==(o=e.getExpires())&&t.writeInt64(4,o),(o=e.getPermissionsList()).length>0&&t.writeRepeatedString(5,o)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getRealm=function(){return r.Message.getFieldWithDefault(this,1,"")},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setRealm=function(e){return r.Message.setProto3StringField(this,1,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getUsername=function(){return r.Message.getFieldWithDefault(this,2,"")},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setUsername=function(e){return r.Message.setProto3StringField(this,2,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getRolesList=function(){return r.Message.getRepeatedField(this,3)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setRolesList=function(e){return r.Message.setField(this,3,e||[])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.addRoles=function(e,t){return r.Message.addToRepeatedField(this,3,e,t)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.clearRolesList=function(){return this.setRolesList([])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getExpires=function(){return r.Message.getFieldWithDefault(this,4,0)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setExpires=function(e){return r.Message.setProto3IntField(this,4,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getPermissionsList=function(){return r.Message.getRepeatedField(this,5)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setPermissionsList=function(e){return r.Message.setField(this,5,e||[])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.addPermissions=function(e,t){return r.Message.addToRepeatedField(this,5,e,t)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.clearPermissionsList=function(){return this.setPermissionsList([])},n.object.extend(t,proto.caosdb.info.v1)},19:function(__unused_webpack_module,exports,__nested_webpack_require_14101__){var $jscomp=$jscomp||{};$jscomp.scope={},$jscomp.findInternal=function(e,t,o){e instanceof String&&(e=String(e));for(var r=e.length,n=0;n<r;n++){var s=e[n];if(t.call(o,s,n,e))return{i:n,v:s}}return{i:-1,v:void 0}},$jscomp.ASSUME_ES5=!1,$jscomp.ASSUME_NO_NATIVE_MAP=!1,$jscomp.ASSUME_NO_NATIVE_SET=!1,$jscomp.SIMPLE_FROUND_POLYFILL=!1,$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,o){e!=Array.prototype&&e!=Object.prototype&&(e[t]=o.value)},$jscomp.getGlobal=function(e){return"undefined"!=typeof window&&window===e?e:void 0!==__nested_webpack_require_14101__.g&&null!=__nested_webpack_require_14101__.g?__nested_webpack_require_14101__.g:e},$jscomp.global=$jscomp.getGlobal(this),$jscomp.polyfill=function(e,t,o,r){if(t){for(o=$jscomp.global,e=e.split("."),r=0;r<e.length-1;r++){var n=e[r];n in o||(o[n]={}),o=o[n]}(t=t(r=o[e=e[e.length-1]]))!=r&&null!=t&&$jscomp.defineProperty(o,e,{configurable:!0,writable:!0,value:t})}},$jscomp.polyfill("Array.prototype.findIndex",(function(e){return e||function(e,t){return $jscomp.findInternal(this,e,t).i}}),"es6","es3"),$jscomp.checkStringArgs=function(e,t,o){if(null==e)throw new TypeError("The \'this\' value for String.prototype."+o+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+o+" must not be a regular expression");return e+""},$jscomp.polyfill("String.prototype.endsWith",(function(e){return e||function(e,t){var o=$jscomp.checkStringArgs(this,e,"endsWith");e+="",void 0===t&&(t=o.length),t=Math.max(0,Math.min(0|t,o.length));for(var r=e.length;0<r&&0<t;)if(o[--t]!=e[--r])return!1;return 0>=r}}),"es6","es3"),$jscomp.polyfill("Array.prototype.find",(function(e){return e||function(e,t){return $jscomp.findInternal(this,e,t).v}}),"es6","es3"),$jscomp.polyfill("String.prototype.startsWith",(function(e){return e||function(e,t){var o=$jscomp.checkStringArgs(this,e,"startsWith");e+="";var r=o.length,n=e.length;t=Math.max(0,Math.min(0|t,o.length));for(var s=0;s<n&&t<r;)if(o[t++]!=e[s++])return!1;return s>=n}}),"es6","es3"),$jscomp.polyfill("String.prototype.repeat",(function(e){return e||function(e){var t=$jscomp.checkStringArgs(this,null,"repeat");if(0>e||1342177279<e)throw new RangeError("Invalid count value");e|=0;for(var o="";e;)1&e&&(o+=t),(e>>>=1)&&(t+=t);return o}}),"es6","es3");var COMPILED=!0,goog=goog||{};goog.global=this||self,goog.isDef=function(e){return void 0!==e},goog.isString=function(e){return"string"==typeof e},goog.isBoolean=function(e){return"boolean"==typeof e},goog.isNumber=function(e){return"number"==typeof e},goog.exportPath_=function(e,t,o){e=e.split("."),o=o||goog.global,e[0]in o||void 0===o.execScript||o.execScript("var "+e[0]);for(var r;e.length&&(r=e.shift());)!e.length&&goog.isDef(t)?o[r]=t:o=o[r]&&o[r]!==Object.prototype[r]?o[r]:o[r]={}},goog.define=function(e,t){if(!COMPILED){var o=goog.global.CLOSURE_UNCOMPILED_DEFINES,r=goog.global.CLOSURE_DEFINES;o&&void 0===o.nodeType&&Object.prototype.hasOwnProperty.call(o,e)?t=o[e]:r&&void 0===r.nodeType&&Object.prototype.hasOwnProperty.call(r,e)&&(t=r[e])}return t},goog.FEATURESET_YEAR=2012,goog.DEBUG=!0,goog.LOCALE="en",goog.TRUSTED_SITE=!0,goog.STRICT_MODE_COMPATIBLE=!1,goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG,goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1,goog.provide=function(e){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(e))throw Error(\'Namespace "\'+e+\'" already declared.\');goog.constructNamespace_(e)},goog.constructNamespace_=function(e,t){if(!COMPILED){delete goog.implicitNamespaces_[e];for(var o=e;(o=o.substring(0,o.lastIndexOf(".")))&&!goog.getObjectByName(o);)goog.implicitNamespaces_[o]=!0}goog.exportPath_(e,t)},goog.getScriptNonce=function(e){return e&&e!=goog.global?goog.getScriptNonce_(e.document):(null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document)),goog.cspNonce_)},goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/,goog.cspNonce_=null,goog.getScriptNonce_=function(e){return(e=e.querySelector&&e.querySelector("script[nonce]"))&&(e=e.nonce||e.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(e)?e:""},goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/,goog.module=function(e){if(!goog.isString(e)||!e||-1==e.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+e+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");if(goog.moduleLoaderState_.moduleName=e,!COMPILED){if(goog.isProvided_(e))throw Error(\'Namespace "\'+e+\'" already declared.\');delete goog.implicitNamespaces_[e]}},goog.module.get=function(e){return goog.module.getInternal_(e)},goog.module.getInternal_=function(e){if(!COMPILED){if(e in goog.loadedModules_)return goog.loadedModules_[e].exports;if(!goog.implicitNamespaces_[e])return null!=(e=goog.getObjectByName(e))?e:null}return null},goog.ModuleType={ES6:"es6",GOOG:"goog"},goog.moduleLoaderState_=null,goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()},goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG},goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var e=goog.global.$jscomp;return!!e&&"function"==typeof e.getCurrentModulePath&&!!e.getCurrentModulePath()},goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0},goog.declareModuleId=function(e){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(e in goog.loadedModules_)throw Error(\'Module with namespace "\'+e+\'" already exists.\')}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=e;else{var t=goog.global.$jscomp;if(!t||"function"!=typeof t.getCurrentModulePath)throw Error(\'Module with namespace "\'+e+\'" has been loaded incorrectly.\');t=t.require(t.getCurrentModulePath()),goog.loadedModules_[e]={exports:t,type:goog.ModuleType.ES6,moduleId:e}}},goog.setTestOnly=function(e){if(goog.DISALLOW_TEST_ONLY_CODE)throw e=e||"",Error("Importing test-only code into non-debug environment"+(e?": "+e:"."))},goog.forwardDeclare=function(e){},COMPILED||(goog.isProvided_=function(e){return e in goog.loadedModules_||!goog.implicitNamespaces_[e]&&goog.isDefAndNotNull(goog.getObjectByName(e))},goog.implicitNamespaces_={"goog.module":!0}),goog.getObjectByName=function(e,t){e=e.split("."),t=t||goog.global;for(var o=0;o<e.length;o++)if(t=t[e[o]],!goog.isDefAndNotNull(t))return null;return t},goog.globalize=function(e,t){for(var o in t=t||goog.global,e)t[o]=e[o]},goog.addDependency=function(e,t,o,r){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(e,t,o,r)},goog.ENABLE_DEBUG_LOADER=!0,goog.logToConsole_=function(e){goog.global.console&&goog.global.console.error(e)},goog.require=function(e){if(!COMPILED){if(goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(e),goog.isProvided_(e)){if(goog.isInModuleLoader_())return goog.module.getInternal_(e)}else if(goog.ENABLE_DEBUG_LOADER){var t=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(e)}finally{goog.moduleLoaderState_=t}}return null}},goog.requireType=function(e){return{}},goog.basePath="",goog.nullFunction=function(){},goog.abstractMethod=function(){throw Error("unimplemented abstract method")},goog.addSingletonGetter=function(e){e.instance_=void 0,e.getInstance=function(){return e.instance_?e.instance_:(goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=e),e.instance_=new e)}},goog.instantiatedSingletons_=[],goog.LOAD_MODULE_USING_EVAL=!0,goog.SEAL_MODULE_EXPORTS=goog.DEBUG,goog.loadedModules_={},goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER,goog.TRANSPILE="detect",goog.ASSUME_ES_MODULES_TRANSPILED=!1,goog.TRANSPILE_TO_LANGUAGE="",goog.TRANSPILER="transpile.js",goog.hasBadLetScoping=null,goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval(\'"use strict";let x = 1; function f() { return typeof x; };f() == "number";\')}catch(e){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping},goog.workaroundSafari10EvalBug=function(e){return"(function(){"+e+"\\n;})();\\n"},goog.loadModule=function(e){var t=goog.moduleLoaderState_;try{if(goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG},goog.isFunction(e))var o=e.call(void 0,{});else{if(!goog.isString(e))throw Error("Invalid module definition");goog.useSafari10Workaround()&&(e=goog.workaroundSafari10EvalBug(e)),o=goog.loadModuleFromSource_.call(void 0,e)}var r=goog.moduleLoaderState_.moduleName;if(!goog.isString(r)||!r)throw Error(\'Invalid module name "\'+r+\'"\');goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(r,o):goog.SEAL_MODULE_EXPORTS&&Object.seal&&"object"==typeof o&&null!=o&&Object.seal(o),goog.loadedModules_[r]={exports:o,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName}}finally{goog.moduleLoaderState_=t}},goog.loadModuleFromSource_=function(a){return eval(a),{}},goog.normalizePath_=function(e){e=e.split("/");for(var t=0;t<e.length;)"."==e[t]?e.splice(t,1):t&&".."==e[t]&&e[t-1]&&".."!=e[t-1]?e.splice(--t,2):t++;return e.join("/")},goog.loadFileSync_=function(e){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(e);try{var t=new goog.global.XMLHttpRequest;return t.open("get",e,!1),t.send(),0==t.status||200==t.status?t.responseText:null}catch(e){return null}},goog.transpile_=function(e,t,o){var r=goog.global.$jscomp;r||(goog.global.$jscomp=r={});var n=r.transpile;if(!n){var s=goog.basePath+goog.TRANSPILER,i=goog.loadFileSync_(s);if(i){if(function(){(0,eval)(i+"\\n//# sourceURL="+s)}.call(goog.global),goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error(\'The transpiler did not properly export the "transpile" method. $gwtExport: \'+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=goog.global.$gwtExport.$jscomp.transpile,n=(r=goog.global.$jscomp).transpile}}return n||(n=r.transpile=function(e,t){return goog.logToConsole_(t+" requires transpilation but no transpiler was found."),e}),n(e,t,o)},goog.typeOf=function(e){var t=typeof e;if("object"==t){if(!e)return"null";if(e instanceof Array)return"array";if(e instanceof Object)return t;var o=Object.prototype.toString.call(e);if("[object Window]"==o)return"object";if("[object Array]"==o||"number"==typeof e.length&&void 0!==e.splice&&void 0!==e.propertyIsEnumerable&&!e.propertyIsEnumerable("splice"))return"array";if("[object Function]"==o||void 0!==e.call&&void 0!==e.propertyIsEnumerable&&!e.propertyIsEnumerable("call"))return"function"}else if("function"==t&&void 0===e.call)return"object";return t},goog.isNull=function(e){return null===e},goog.isDefAndNotNull=function(e){return null!=e},goog.isArray=function(e){return"array"==goog.typeOf(e)},goog.isArrayLike=function(e){var t=goog.typeOf(e);return"array"==t||"object"==t&&"number"==typeof e.length},goog.isDateLike=function(e){return goog.isObject(e)&&"function"==typeof e.getFullYear},goog.isFunction=function(e){return"function"==goog.typeOf(e)},goog.isObject=function(e){var t=typeof e;return"object"==t&&null!=e||"function"==t},goog.getUid=function(e){return e[goog.UID_PROPERTY_]||(e[goog.UID_PROPERTY_]=++goog.uidCounter_)},goog.hasUid=function(e){return!!e[goog.UID_PROPERTY_]},goog.removeUid=function(e){null!==e&&"removeAttribute"in e&&e.removeAttribute(goog.UID_PROPERTY_);try{delete e[goog.UID_PROPERTY_]}catch(e){}},goog.UID_PROPERTY_="closure_uid_"+(1e9*Math.random()>>>0),goog.uidCounter_=0,goog.getHashCode=goog.getUid,goog.removeHashCode=goog.removeUid,goog.cloneObject=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if("function"==typeof e.clone)return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.cloneObject(e[o]);return t}return e},goog.bindNative_=function(e,t,o){return e.call.apply(e.bind,arguments)},goog.bindJs_=function(e,t,o){if(!e)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var o=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(o,r),e.apply(t,o)}}return function(){return e.apply(t,arguments)}},goog.bind=function(e,t,o){return Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_,goog.bind.apply(null,arguments)},goog.partial=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=o.slice();return t.push.apply(t,arguments),e.apply(this,t)}},goog.mixin=function(e,t){for(var o in t)e[o]=t[o]},goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date},goog.globalEval=function(e){if(goog.global.execScript)goog.global.execScript(e,"JavaScript");else{if(!goog.global.eval)throw Error("goog.globalEval not available");if(null==goog.evalWorksForGlobals_){try{goog.global.eval("var _evalTest_ = 1;")}catch(e){}if(void 0!==goog.global._evalTest_){try{delete goog.global._evalTest_}catch(e){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1}if(goog.evalWorksForGlobals_)goog.global.eval(e);else{var t=goog.global.document,o=t.createElement("SCRIPT");o.type="text/javascript",o.defer=!1,o.appendChild(t.createTextNode(e)),t.head.appendChild(o),t.head.removeChild(o)}}},goog.evalWorksForGlobals_=null,goog.getCssName=function(e,t){if("."==String(e).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+e);var o=function(e){return goog.cssNameMapping_[e]||e},r=function(e){e=e.split("-");for(var t=[],r=0;r<e.length;r++)t.push(o(e[r]));return t.join("-")};return r=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?o:r:function(e){return e},e=t?e+"-"+r(t):r(e),goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(e):e},goog.setCssNameMapping=function(e,t){goog.cssNameMapping_=e,goog.cssNameMappingStyle_=t},!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING),goog.getMsg=function(e,t,o){return o&&o.html&&(e=e.replace(/</g,"<")),t&&(e=e.replace(/\\{\\$([^}]+)}/g,(function(e,o){return null!=t&&o in t?t[o]:e}))),e},goog.getMsgWithFallback=function(e,t){return e},goog.exportSymbol=function(e,t,o){goog.exportPath_(e,t,o)},goog.exportProperty=function(e,t,o){e[t]=o},goog.inherits=function(e,t){function o(){}o.prototype=t.prototype,e.superClass_=t.prototype,e.prototype=new o,e.prototype.constructor=e,e.base=function(e,o,r){for(var n=Array(arguments.length-2),s=2;s<arguments.length;s++)n[s-2]=arguments[s];return t.prototype[o].apply(e,n)}},goog.base=function(e,t,o){var r=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!r)throw Error("arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(void 0!==r.superClass_){for(var n=Array(arguments.length-1),s=1;s<arguments.length;s++)n[s-1]=arguments[s];return r.superClass_.constructor.apply(e,n)}if("string"!=typeof t&&"symbol"!=typeof t)throw Error("method names provided to goog.base must be a string or a symbol");for(n=Array(arguments.length-2),s=2;s<arguments.length;s++)n[s-2]=arguments[s];s=!1;for(var i=e.constructor.prototype;i;i=Object.getPrototypeOf(i))if(i[t]===r)s=!0;else if(s)return i[t].apply(e,n);if(e[t]===r)return e.constructor.prototype[t].apply(e,n);throw Error("goog.base called from a method of one name to a method of a different name")},goog.scope=function(e){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");e.call(goog.global)},COMPILED||(goog.global.COMPILED=COMPILED),goog.defineClass=function(e,t){var o=t.constructor,r=t.statics;return o&&o!=Object.prototype.constructor||(o=function(){throw Error("cannot instantiate an interface (no constructor defined).")}),o=goog.defineClass.createSealingConstructor_(o,e),e&&goog.inherits(o,e),delete t.constructor,delete t.statics,goog.defineClass.applyProperties_(o.prototype,t),null!=r&&(r instanceof Function?r(o):goog.defineClass.applyProperties_(o,r)),o},goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG,goog.defineClass.createSealingConstructor_=function(e,t){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return e;var o=!goog.defineClass.isUnsealable_(t),r=function(){var t=e.apply(this,arguments)||this;return t[goog.UID_PROPERTY_]=t[goog.UID_PROPERTY_],this.constructor===r&&o&&Object.seal instanceof Function&&Object.seal(t),t};return r},goog.defineClass.isUnsealable_=function(e){return e&&e.prototype&&e.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]},goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),goog.defineClass.applyProperties_=function(e,t){for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);for(var r=0;r<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;r++)o=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[r],Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])},goog.tagUnsealableClass=function(e){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(e.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)},goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_="goog_defineClass_legacy_unsealable",!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var e=goog.global.document;return null!=e&&"write"in e},goog.isDocumentLoading_=function(){var e=goog.global.document;return e.attachEvent?"complete"!=e.readyState:"loading"==e.readyState},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH)&&goog.isString(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var e=goog.global.document,t=e.currentScript;for(t=(e=t?[t]:e.getElementsByTagName("SCRIPT")).length-1;0<=t;--t){var o=e[t].src,r=o.lastIndexOf("?");if(r=-1==r?o.length:r,"base.js"==o.substr(r-7,7)){goog.basePath=o.substr(0,r-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null,this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(t,o){e?d[t]=!0:o()?(c=t,d[t]=!1):e=d[t]=!0}function b(a){try{return!!eval(a)}catch(e){return!1}}var c="es3",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"";return a("es5",(function(){return b("[1,].length==1")})),a("es6",(function(){return!f.match(/Edge\\/(\\d+)(\\.\\d)*/i)&&b(\'(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()\')})),a("es7",(function(){return b("2 ** 2 == 4")})),a("es8",(function(){return b("async () => 1, true")})),a("es9",(function(){return b("({...rest} = {}), true")})),a("es_next",(function(){return!1})),{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(e,t){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var o=this.createRequiresTranspilation_();this.requiresTranspilation_=o.map,this.transpilationTarget_=this.transpilationTarget_||o.target}if(e in this.requiresTranspilation_)return!!this.requiresTranspilation_[e]||!(!goog.inHtmlDocument_()||"es6"!=t||"noModule"in goog.global.document.createElement("script"));throw Error("Unknown language mode: "+e)},goog.Transpiler.prototype.transpile=function(e,t){return goog.transpile_(e,t,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(e){return e.replace(/<\\/(SCRIPT)/gi,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={},this.idToPath_={},this.written_={},this.loadingDeps_=[],this.depsToLoad_=[],this.paused_=!1,this.factory_=new goog.DependencyFactory(goog.transpiler_),this.deferredCallbacks_={},this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(e,t){function o(){r&&(goog.global.setTimeout(r,0),r=null)}var r=t;if(e.length){t=[];for(var n=0;n<e.length;n++){var s=this.getPathFromDeps_(e[n]);if(!s)throw Error("Unregonized namespace: "+e[n]);t.push(this.dependencies_[s])}s=goog.require;var i=0;for(n=0;n<e.length;n++)s(e[n]),t[n].onLoad((function(){++i==e.length&&o()}))}else o()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{},!1)),this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(e,t){(e=this.getPathFromDeps_(e))&&(t||this.areDepsLoaded_(this.dependencies_[e].requires))&&(t=this.deferredCallbacks_[e])&&(delete this.deferredCallbacks_[e],t())},goog.DebugLoader_.prototype.setDependencyFactory=function(e){this.factory_=e},goog.DebugLoader_.prototype.load_=function(e){if(!this.getPathFromDeps_(e))throw e="goog.require could not find: "+e,goog.logToConsole_(e),Error(e);var t=this,o=[],r=function(e){var n=t.getPathFromDeps_(e);if(!n)throw Error("Bad dependency path or symbol: "+e);if(!t.written_[n]){for(t.written_[n]=!0,e=t.dependencies_[n],n=0;n<e.requires.length;n++)goog.isProvided_(e.requires[n])||r(e.requires[n]);o.push(e)}};r(e),e=!!this.depsToLoad_.length,this.depsToLoad_=this.depsToLoad_.concat(o),this.paused_||e||this.loadDeps_()},goog.DebugLoader_.prototype.loadDeps_=function(){for(var e=this,t=this.paused_;this.depsToLoad_.length&&!t;)!function(){var o=!1,r=e.depsToLoad_.shift(),n=!1;e.loading_(r);var s={pause:function(){if(o)throw Error("Cannot call pause after the call to load.");t=!0},resume:function(){o?e.resume_():t=!1},loaded:function(){if(n)throw Error("Double call to loaded.");n=!0,e.loaded_(r)},pending:function(){for(var t=[],o=0;o<e.loadingDeps_.length;o++)t.push(e.loadingDeps_[o]);return t},setModuleState:function(e){goog.moduleLoaderState_={type:e,moduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(e,t,o){o&&(goog.loadedModules_[o]={exports:t,type:goog.ModuleType.ES6,moduleId:o||""})},registerGoogModuleExports:function(e,t){goog.loadedModules_[e]={exports:t,type:goog.ModuleType.GOOG,moduleId:e}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(t){if(o)throw Error("Cannot register with defer after the call to load.");e.defer_(r,t)},areDepsLoaded:function(){return e.areDepsLoaded_(r.requires)}};try{r.load(s)}finally{o=!0}}();t&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(e){this.loadingDeps_.push(e)},goog.DebugLoader_.prototype.loaded_=function(e){for(var t=0;t<this.loadingDeps_.length;t++)if(this.loadingDeps_[t]==e){this.loadingDeps_.splice(t,1);break}for(t=0;t<this.deferredQueue_.length;t++)if(this.deferredQueue_[t]==e.path){this.deferredQueue_.splice(t,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);e.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(e){for(var t=0;t<e.length;t++){var o=this.getPathFromDeps_(e[t]);if(!o||!(o in this.deferredCallbacks_)&&!goog.isProvided_(e[t]))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(e){return e in this.idToPath_?this.idToPath_[e]:e in this.dependencies_?e:null},goog.DebugLoader_.prototype.defer_=function(e,t){this.deferredCallbacks_[e.path]=t,this.deferredQueue_.push(e.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(e,t,o){},goog.LoadController.prototype.setModuleState=function(e){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(e){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(e,t,o,r,n){this.path=e,this.relativePath=t,this.provides=o,this.requires=r,this.loadFlags=n,this.loaded_=!1,this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var e=this.path,t=e.indexOf("://");return 0<=t&&0<=(t=(e=e.substring(t+3)).indexOf("/"))&&(e=e.substring(t+1)),e},goog.Dependency.prototype.onLoad=function(e){this.loaded_?e():this.loadCallbacks_.push(e)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var e=this.loadCallbacks_;this.loadCallbacks_=[];for(var t=0;t<e.length;t++)e[t]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(e){var t=Math.random().toString(32);return goog.Dependency.callbackMap_[t]=e,t},goog.Dependency.unregisterCallback_=function(e){delete goog.Dependency.callbackMap_[e]},goog.Dependency.callback_=function(e,t){if(!(e in goog.Dependency.callbackMap_))throw Error("Callback key "+e+" does not exist (was base.js loaded more than once?).");for(var o=goog.Dependency.callbackMap_[e],r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);o.apply(void 0,r)},goog.Dependency.prototype.load=function(e){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?e.loaded():e.pause();else if(goog.inHtmlDocument_()){var t=goog.global.document;if("complete"==t.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path))return void e.loaded();throw Error(\'Cannot write "\'+this.path+\'" after document load\')}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var o=goog.Dependency.registerCallback_((function(t){goog.DebugLoader_.IS_OLD_IE_&&"complete"!=t.readyState||(goog.Dependency.unregisterCallback_(o),e.loaded())})),r=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\' nonce="\'+goog.getScriptNonce()+\'"\':"";r=\'<script src="\'+this.path+\'" \'+(goog.DebugLoader_.IS_OLD_IE_?"onreadystatechange":"onload")+"=\\"goog.Dependency.callback_(\'"+o+\'\\\', this)" type="text/javascript" \'+(goog.Dependency.defer_?"defer":"")+r+"><\\/script>",t.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(r):r)}else{var n=t.createElement("script");n.defer=goog.Dependency.defer_,n.async=!1,n.type="text/javascript",(r=goog.getScriptNonce())&&n.setAttribute("nonce",r),goog.DebugLoader_.IS_OLD_IE_?(e.pause(),n.onreadystatechange=function(){"loaded"!=n.readyState&&"complete"!=n.readyState||(e.loaded(),e.resume())}):n.onload=function(){n.onload=null,e.loaded()},n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path,t.head.appendChild(n)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),e.loaded()):e.pause()},goog.Es6ModuleDependency=function(e,t,o,r,n){goog.Dependency.call(this,e,t,o,r,n)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(e){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?e.loaded():e.pause();else if(goog.inHtmlDocument_()){var t=goog.global.document,o=this;if(goog.isDocumentLoading_()){var r=function(e,o){e=o?\'<script type="module" crossorigin>\'+o+"<\\/script>":\'<script type="module" crossorigin src="\'+e+\'"><\\/script>\',t.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(e):e)};goog.Dependency.defer_=!0}else r=function(e,o){var r=t.createElement("script");r.defer=!0,r.async=!1,r.type="module",r.setAttribute("crossorigin",!0);var n=goog.getScriptNonce();n&&r.setAttribute("nonce",n),o?r.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(o):o:r.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(e):e,t.head.appendChild(r)};var n=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(n),e.setModuleState(goog.ModuleType.ES6)}));r(void 0,\'goog.Dependency.callback_("\'+n+\'")\'),r(this.path,void 0);var s=goog.Dependency.registerCallback_((function(t){goog.Dependency.unregisterCallback_(s),e.registerEs6ModuleExports(o.path,t,goog.moduleLoaderState_.moduleName)}));r(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+s+\'", m)\');var i=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(i),e.clearModuleState(),e.loaded()}));r(void 0,\'goog.Dependency.callback_("\'+i+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),e.pause()},goog.TransformedDependency=function(e,t,o,r,n){goog.Dependency.call(this,e,t,o,r,n),this.contents_=null,this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(e){function t(){r.contents_=goog.loadFileSync_(r.path),r.contents_&&(r.contents_=r.transform(r.contents_),r.contents_&&(r.contents_+="\\n//# sourceURL="+r.path))}function o(){if(r.lazyFetch_&&t(),r.contents_){n&&e.setModuleState(goog.ModuleType.ES6);try{var o=r.contents_;if(r.contents_=null,goog.globalEval(o),n)var s=goog.moduleLoaderState_.moduleName}finally{n&&e.clearModuleState()}n&&goog.global.$jscomp.require.ensure([r.getPathName()],(function(){e.registerEs6ModuleExports(r.path,goog.global.$jscomp.require(r.getPathName()),s)})),e.loaded()}}var r=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)t(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,e.loaded()):e.pause();else{var n=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||t();var s=1<e.pending().length,i=s&&goog.DebugLoader_.IS_OLD_IE_;if(s=goog.Dependency.defer_&&(s||goog.isDocumentLoading_()),i||s)e.defer((function(){o()}));else{var a=goog.global.document;if(i=goog.inHtmlDocument_()&&"ActiveXObject"in goog.global,n&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!i){goog.Dependency.defer_=!0,e.pause();var g=a.onreadystatechange;a.onreadystatechange=function(){"interactive"==a.readyState&&(a.onreadystatechange=g,o(),e.resume()),goog.isFunction(g)&&g.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?function(){var e=goog.global.document,t=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(t),o()})),r=\'<script type="text/javascript">\'+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+t+\'");\')+"<\\/script>";e.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(r):r)}():o()}}},goog.TransformedDependency.prototype.transform=function(e){},goog.TranspiledDependency=function(e,t,o,r,n,s){goog.TransformedDependency.call(this,e,t,o,r,n),this.transpiler=s},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(e){return this.transpiler.transpile(e,this.getPathName())},goog.PreTranspiledEs6ModuleDependency=function(e,t,o,r,n){goog.TransformedDependency.call(this,e,t,o,r,n)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(e){return e},goog.GoogModuleDependency=function(e,t,o,r,n,s,i){goog.TransformedDependency.call(this,e,t,o,r,n),this.needsTranspile_=s,this.transpiler_=i},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(e){return this.needsTranspile_&&(e=this.transpiler_.transpile(e,this.getPathName())),goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?"goog.loadModule("+goog.global.JSON.stringify(e+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+e+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(e,t,o,r){t=t||[],e=e.replace(/\\\\/g,"/");var n=goog.normalizePath_(goog.basePath+e);for(r&&"boolean"!=typeof r||(r=r?{module:goog.ModuleType.GOOG}:{}),o=this.factory_.createDependency(n,e,t,o,r,goog.transpiler_.needsTranspile(r.lang||"es3",r.module)),this.dependencies_[n]=o,o=0;o<t.length;o++)this.idToPath_[t[o]]=n;this.idToPath_[e]=n},goog.DependencyFactory=function(e){this.transpiler=e},goog.DependencyFactory.prototype.createDependency=function(e,t,o,r,n,s){return n.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(e,t,o,r,n,s,this.transpiler):s?new goog.TranspiledDependency(e,t,o,r,n,this.transpiler):n.module==goog.ModuleType.ES6?"never"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(e,t,o,r,n):new goog.Es6ModuleDependency(e,t,o,r,n):new goog.Dependency(e,t,o,r,n)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(e){goog.debugLoader_.setDependencyFactory(e)},goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(e,t){goog.debugLoader_.bootstrap(e,t)}),goog.TRUSTED_TYPES_POLICY_NAME="",goog.identity_=function(e){return e},goog.createTrustedTypesPolicy=function(e){var t=null;if("undefined"==typeof TrustedTypes||!TrustedTypes.createPolicy)return t;try{t=TrustedTypes.createPolicy(e,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_,createURL:goog.identity_})}catch(e){goog.logToConsole_(e.message)}return t},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.object={},goog.object.is=function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t},goog.object.forEach=function(e,t,o){for(var r in e)t.call(o,e[r],r,e)},goog.object.filter=function(e,t,o){var r,n={};for(r in e)t.call(o,e[r],r,e)&&(n[r]=e[r]);return n},goog.object.map=function(e,t,o){var r,n={};for(r in e)n[r]=t.call(o,e[r],r,e);return n},goog.object.some=function(e,t,o){for(var r in e)if(t.call(o,e[r],r,e))return!0;return!1},goog.object.every=function(e,t,o){for(var r in e)if(!t.call(o,e[r],r,e))return!1;return!0},goog.object.getCount=function(e){var t,o=0;for(t in e)o++;return o},goog.object.getAnyKey=function(e){for(var t in e)return t},goog.object.getAnyValue=function(e){for(var t in e)return e[t]},goog.object.contains=function(e,t){return goog.object.containsValue(e,t)},goog.object.getValues=function(e){var t,o=[],r=0;for(t in e)o[r++]=e[t];return o},goog.object.getKeys=function(e){var t,o=[],r=0;for(t in e)o[r++]=t;return o},goog.object.getValueByKeys=function(e,t){var o=goog.isArrayLike(t),r=o?t:arguments;for(o=o?0:1;o<r.length;o++){if(null==e)return;e=e[r[o]]}return e},goog.object.containsKey=function(e,t){return null!==e&&t in e},goog.object.containsValue=function(e,t){for(var o in e)if(e[o]==t)return!0;return!1},goog.object.findKey=function(e,t,o){for(var r in e)if(t.call(o,e[r],r,e))return r},goog.object.findValue=function(e,t,o){return(t=goog.object.findKey(e,t,o))&&e[t]},goog.object.isEmpty=function(e){for(var t in e)return!1;return!0},goog.object.clear=function(e){for(var t in e)delete e[t]},goog.object.remove=function(e,t){var o;return(o=t in e)&&delete e[t],o},goog.object.add=function(e,t,o){if(null!==e&&t in e)throw Error(\'The object already contains the key "\'+t+\'"\');goog.object.set(e,t,o)},goog.object.get=function(e,t,o){return null!==e&&t in e?e[t]:o},goog.object.set=function(e,t,o){e[t]=o},goog.object.setIfUndefined=function(e,t,o){return t in e?e[t]:e[t]=o},goog.object.setWithReturnValueIfNotSet=function(e,t,o){return t in e?e[t]:(o=o(),e[t]=o)},goog.object.equals=function(e,t){for(var o in e)if(!(o in t)||e[o]!==t[o])return!1;for(var r in t)if(!(r in e))return!1;return!0},goog.object.clone=function(e){var t,o={};for(t in e)o[t]=e[t];return o},goog.object.unsafeClone=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if(goog.isFunction(e.clone))return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.object.unsafeClone(e[o]);return t}return e},goog.object.transpose=function(e){var t,o={};for(t in e)o[e[t]]=t;return o},goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),goog.object.extend=function(e,t){for(var o,r,n=1;n<arguments.length;n++){for(o in r=arguments[n])e[o]=r[o];for(var s=0;s<goog.object.PROTOTYPE_FIELDS_.length;s++)o=goog.object.PROTOTYPE_FIELDS_[s],Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}},goog.object.create=function(e){var t=arguments.length;if(1==t&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(t%2)throw Error("Uneven number of arguments");for(var o={},r=0;r<t;r+=2)o[arguments[r]]=arguments[r+1];return o},goog.object.createSet=function(e){var t=arguments.length;if(1==t&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var o={},r=0;r<t;r++)o[arguments[r]]=!0;return o},goog.object.createImmutableView=function(e){var t=e;return Object.isFrozen&&!Object.isFrozen(e)&&(t=Object.create(e),Object.freeze(t)),t},goog.object.isImmutableView=function(e){return!!Object.isFrozen&&Object.isFrozen(e)},goog.object.getAllPropertyNames=function(e,t,o){if(!e)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return goog.object.getKeys(e);for(var r={};e&&(e!==Object.prototype||t)&&(e!==Function.prototype||o);){for(var n=Object.getOwnPropertyNames(e),s=0;s<n.length;s++)r[n[s]]=!0;e=Object.getPrototypeOf(e)}return goog.object.getKeys(r)},goog.object.getSuperClass=function(e){return(e=Object.getPrototypeOf(e.prototype))&&e.constructor},goog.debug={},goog.debug.Error=function(e){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var t=Error().stack;t&&(this.stack=t)}e&&(this.message=String(e)),this.reportErrorToServer=!0},goog.inherits(goog.debug.Error,Error),goog.debug.Error.prototype.name="CustomError",goog.dom={},goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},goog.asserts={},goog.asserts.ENABLE_ASSERTS=goog.DEBUG,goog.asserts.AssertionError=function(e,t){goog.debug.Error.call(this,goog.asserts.subs_(e,t)),this.messagePattern=e},goog.inherits(goog.asserts.AssertionError,goog.debug.Error),goog.asserts.AssertionError.prototype.name="AssertionError",goog.asserts.DEFAULT_ERROR_HANDLER=function(e){throw e},goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER,goog.asserts.subs_=function(e,t){for(var o="",r=(e=e.split("%s")).length-1,n=0;n<r;n++)o+=e[n]+(n<t.length?t[n]:"%s");return o+e[r]},goog.asserts.doAssertFailure_=function(e,t,o,r){var n="Assertion failed";if(o){n+=": "+o;var s=r}else e&&(n+=": "+e,s=t);e=new goog.asserts.AssertionError(""+n,s||[]),goog.asserts.errorHandler_(e)},goog.asserts.setErrorHandler=function(e){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=e)},goog.asserts.assert=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!e&&goog.asserts.doAssertFailure_("",null,t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertExists=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&null==e&&goog.asserts.doAssertFailure_("Expected to exist: %s.",[e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.fail=function(e,t){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure"+(e?": "+e:""),Array.prototype.slice.call(arguments,1)))},goog.asserts.assertNumber=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(e)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertString=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isString(e)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertFunction=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(e)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertObject=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isObject(e)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertArray=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isArray(e)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertBoolean=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(e)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertElement=function(e,t,o){return!goog.asserts.ENABLE_ASSERTS||goog.isObject(e)&&e.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertInstanceof=function(e,t,o,r){return!goog.asserts.ENABLE_ASSERTS||e instanceof t||goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.",[goog.asserts.getType_(t),goog.asserts.getType_(e)],o,Array.prototype.slice.call(arguments,3)),e},goog.asserts.assertFinite=function(e,t,o){return!goog.asserts.ENABLE_ASSERTS||"number"==typeof e&&isFinite(e)||goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.",[e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertObjectPrototypeIsIntact=function(){for(var e in Object.prototype)goog.asserts.fail(e+" should not be enumerable in Object.prototype.")},goog.asserts.getType_=function(e){return e instanceof Function?e.displayName||e.name||"unknown type name":e instanceof Object?e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e):null===e?"null":typeof e};var jspb={BinaryConstants:{},ConstBinaryMessage:function(){},BinaryMessage:function(){}};jspb.BinaryConstants.FieldType={INVALID:-1,DOUBLE:1,FLOAT:2,INT64:3,UINT64:4,INT32:5,FIXED64:6,FIXED32:7,BOOL:8,STRING:9,GROUP:10,MESSAGE:11,BYTES:12,UINT32:13,ENUM:14,SFIXED32:15,SFIXED64:16,SINT32:17,SINT64:18,FHASH64:30,VHASH64:31},jspb.BinaryConstants.WireType={INVALID:-1,VARINT:0,FIXED64:1,DELIMITED:2,START_GROUP:3,END_GROUP:4,FIXED32:5},jspb.BinaryConstants.FieldTypeToWireType=function(e){var t=jspb.BinaryConstants.FieldType,o=jspb.BinaryConstants.WireType;switch(e){case t.INT32:case t.INT64:case t.UINT32:case t.UINT64:case t.SINT32:case t.SINT64:case t.BOOL:case t.ENUM:case t.VHASH64:return o.VARINT;case t.DOUBLE:case t.FIXED64:case t.SFIXED64:case t.FHASH64:return o.FIXED64;case t.STRING:case t.MESSAGE:case t.BYTES:return o.DELIMITED;case t.FLOAT:case t.FIXED32:case t.SFIXED32:return o.FIXED32;default:return o.INVALID}},jspb.BinaryConstants.INVALID_FIELD_NUMBER=-1,jspb.BinaryConstants.FLOAT32_EPS=1401298464324817e-60,jspb.BinaryConstants.FLOAT32_MIN=11754943508222875e-54,jspb.BinaryConstants.FLOAT32_MAX=34028234663852886e22,jspb.BinaryConstants.FLOAT64_EPS=5e-324,jspb.BinaryConstants.FLOAT64_MIN=22250738585072014e-324,jspb.BinaryConstants.FLOAT64_MAX=17976931348623157e292,jspb.BinaryConstants.TWO_TO_20=1048576,jspb.BinaryConstants.TWO_TO_23=8388608,jspb.BinaryConstants.TWO_TO_31=2147483648,jspb.BinaryConstants.TWO_TO_32=4294967296,jspb.BinaryConstants.TWO_TO_52=4503599627370496,jspb.BinaryConstants.TWO_TO_63=0x8000000000000000,jspb.BinaryConstants.TWO_TO_64=0x10000000000000000,jspb.BinaryConstants.ZERO_HASH="\\0\\0\\0\\0\\0\\0\\0\\0",goog.array={},goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE,goog.array.ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR,goog.array.peek=function(e){return e[e.length-1]},goog.array.last=goog.array.peek,goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.indexOf.call(e,t,o)}:function(e,t,o){if(o=null==o?0:0>o?Math.max(0,e.length+o):o,goog.isString(e))return goog.isString(t)&&1==t.length?e.indexOf(t,o):-1;for(;o<e.length;o++)if(o in e&&e[o]===t)return o;return-1},goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.lastIndexOf.call(e,t,null==o?e.length-1:o)}:function(e,t,o){if(0>(o=null==o?e.length-1:o)&&(o=Math.max(0,e.length+o)),goog.isString(e))return goog.isString(t)&&1==t.length?e.lastIndexOf(t,o):-1;for(;0<=o;o--)if(o in e&&e[o]===t)return o;return-1},goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(e,t,o){goog.asserts.assert(null!=e.length),Array.prototype.forEach.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)s in n&&t.call(o,n[s],s,e)},goog.array.forEachRight=function(e,t,o){var r=e.length,n=goog.isString(e)?e.split(""):e;for(--r;0<=r;--r)r in n&&t.call(o,n[r],r,e)},goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.filter.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=[],s=0,i=goog.isString(e)?e.split(""):e,a=0;a<r;a++)if(a in i){var g=i[a];t.call(o,g,a,e)&&(n[s++]=g)}return n},goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.map.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=Array(r),s=goog.isString(e)?e.split(""):e,i=0;i<r;i++)i in s&&(n[i]=t.call(o,s[i],i,e));return n},goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(e,t,o,r){return goog.asserts.assert(null!=e.length),r&&(t=goog.bind(t,r)),Array.prototype.reduce.call(e,t,o)}:function(e,t,o,r){var n=o;return goog.array.forEach(e,(function(o,s){n=t.call(r,n,o,s,e)})),n},goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(e,t,o,r){return goog.asserts.assert(null!=e.length),goog.asserts.assert(null!=t),r&&(t=goog.bind(t,r)),Array.prototype.reduceRight.call(e,t,o)}:function(e,t,o,r){var n=o;return goog.array.forEachRight(e,(function(o,s){n=t.call(r,n,o,s,e)})),n},goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.some.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&t.call(o,n[s],s,e))return!0;return!1},goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.every.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&!t.call(o,n[s],s,e))return!1;return!0},goog.array.count=function(e,t,o){var r=0;return goog.array.forEach(e,(function(e,n,s){t.call(o,e,n,s)&&++r}),o),r},goog.array.find=function(e,t,o){return 0>(t=goog.array.findIndex(e,t,o))?null:goog.isString(e)?e.charAt(t):e[t]},goog.array.findIndex=function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&t.call(o,n[s],s,e))return s;return-1},goog.array.findRight=function(e,t,o){return 0>(t=goog.array.findIndexRight(e,t,o))?null:goog.isString(e)?e.charAt(t):e[t]},goog.array.findIndexRight=function(e,t,o){var r=e.length,n=goog.isString(e)?e.split(""):e;for(--r;0<=r;r--)if(r in n&&t.call(o,n[r],r,e))return r;return-1},goog.array.contains=function(e,t){return 0<=goog.array.indexOf(e,t)},goog.array.isEmpty=function(e){return 0==e.length},goog.array.clear=function(e){if(!goog.isArray(e))for(var t=e.length-1;0<=t;t--)delete e[t];e.length=0},goog.array.insert=function(e,t){goog.array.contains(e,t)||e.push(t)},goog.array.insertAt=function(e,t,o){goog.array.splice(e,o,0,t)},goog.array.insertArrayAt=function(e,t,o){goog.partial(goog.array.splice,e,o,0).apply(null,t)},goog.array.insertBefore=function(e,t,o){var r;2==arguments.length||0>(r=goog.array.indexOf(e,o))?e.push(t):goog.array.insertAt(e,t,r)},goog.array.remove=function(e,t){var o;return(o=0<=(t=goog.array.indexOf(e,t)))&&goog.array.removeAt(e,t),o},goog.array.removeLast=function(e,t){return 0<=(t=goog.array.lastIndexOf(e,t))&&(goog.array.removeAt(e,t),!0)},goog.array.removeAt=function(e,t){return goog.asserts.assert(null!=e.length),1==Array.prototype.splice.call(e,t,1).length},goog.array.removeIf=function(e,t,o){return 0<=(t=goog.array.findIndex(e,t,o))&&(goog.array.removeAt(e,t),!0)},goog.array.removeAllIf=function(e,t,o){var r=0;return goog.array.forEachRight(e,(function(n,s){t.call(o,n,s,e)&&goog.array.removeAt(e,s)&&r++})),r},goog.array.concat=function(e){return Array.prototype.concat.apply([],arguments)},goog.array.join=function(e){return Array.prototype.concat.apply([],arguments)},goog.array.toArray=function(e){var t=e.length;if(0<t){for(var o=Array(t),r=0;r<t;r++)o[r]=e[r];return o}return[]},goog.array.clone=goog.array.toArray,goog.array.extend=function(e,t){for(var o=1;o<arguments.length;o++){var r=arguments[o];if(goog.isArrayLike(r)){var n=e.length||0,s=r.length||0;e.length=n+s;for(var i=0;i<s;i++)e[n+i]=r[i]}else e.push(r)}},goog.array.splice=function(e,t,o,r){return goog.asserts.assert(null!=e.length),Array.prototype.splice.apply(e,goog.array.slice(arguments,1))},goog.array.slice=function(e,t,o){return goog.asserts.assert(null!=e.length),2>=arguments.length?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,o)},goog.array.removeDuplicates=function(e,t,o){t=t||e;var r=function(e){return goog.isObject(e)?"o"+goog.getUid(e):(typeof e).charAt(0)+e};o=o||r,r={};for(var n=0,s=0;s<e.length;){var i=e[s++],a=o(i);Object.prototype.hasOwnProperty.call(r,a)||(r[a]=!0,t[n++]=i)}t.length=n},goog.array.binarySearch=function(e,t,o){return goog.array.binarySearch_(e,o||goog.array.defaultCompare,!1,t)},goog.array.binarySelect=function(e,t,o){return goog.array.binarySearch_(e,t,!0,void 0,o)},goog.array.binarySearch_=function(e,t,o,r,n){for(var s,i=0,a=e.length;i<a;){var g=i+a>>1,l=o?t.call(n,e[g],g,e):t(r,e[g]);0<l?i=g+1:(a=g,s=!l)}return s?i:~i},goog.array.sort=function(e,t){e.sort(t||goog.array.defaultCompare)},goog.array.stableSort=function(e,t){for(var o=Array(e.length),r=0;r<e.length;r++)o[r]={index:r,value:e[r]};var n=t||goog.array.defaultCompare;for(goog.array.sort(o,(function(e,t){return n(e.value,t.value)||e.index-t.index})),r=0;r<e.length;r++)e[r]=o[r].value},goog.array.sortByKey=function(e,t,o){var r=o||goog.array.defaultCompare;goog.array.sort(e,(function(e,o){return r(t(e),t(o))}))},goog.array.sortObjectsByKey=function(e,t,o){goog.array.sortByKey(e,(function(e){return e[t]}),o)},goog.array.isSorted=function(e,t,o){t=t||goog.array.defaultCompare;for(var r=1;r<e.length;r++){var n=t(e[r-1],e[r]);if(0<n||0==n&&o)return!1}return!0},goog.array.equals=function(e,t,o){if(!goog.isArrayLike(e)||!goog.isArrayLike(t)||e.length!=t.length)return!1;var r=e.length;o=o||goog.array.defaultCompareEquality;for(var n=0;n<r;n++)if(!o(e[n],t[n]))return!1;return!0},goog.array.compare3=function(e,t,o){o=o||goog.array.defaultCompare;for(var r=Math.min(e.length,t.length),n=0;n<r;n++){var s=o(e[n],t[n]);if(0!=s)return s}return goog.array.defaultCompare(e.length,t.length)},goog.array.defaultCompare=function(e,t){return e>t?1:e<t?-1:0},goog.array.inverseDefaultCompare=function(e,t){return-goog.array.defaultCompare(e,t)},goog.array.defaultCompareEquality=function(e,t){return e===t},goog.array.binaryInsert=function(e,t,o){return 0>(o=goog.array.binarySearch(e,t,o))&&(goog.array.insertAt(e,t,-(o+1)),!0)},goog.array.binaryRemove=function(e,t,o){return 0<=(t=goog.array.binarySearch(e,t,o))&&goog.array.removeAt(e,t)},goog.array.bucket=function(e,t,o){for(var r={},n=0;n<e.length;n++){var s=e[n],i=t.call(o,s,n,e);goog.isDef(i)&&(r[i]||(r[i]=[])).push(s)}return r},goog.array.toObject=function(e,t,o){var r={};return goog.array.forEach(e,(function(n,s){r[t.call(o,n,s,e)]=n})),r},goog.array.range=function(e,t,o){var r=[],n=0,s=e;if(void 0!==t&&(n=e,s=t),0>(o=o||1)*(s-n))return[];if(0<o)for(e=n;e<s;e+=o)r.push(e);else for(e=n;e>s;e+=o)r.push(e);return r},goog.array.repeat=function(e,t){for(var o=[],r=0;r<t;r++)o[r]=e;return o},goog.array.flatten=function(e){for(var t=[],o=0;o<arguments.length;o++){var r=arguments[o];if(goog.isArray(r))for(var n=0;n<r.length;n+=8192){var s=goog.array.slice(r,n,n+8192);s=goog.array.flatten.apply(null,s);for(var i=0;i<s.length;i++)t.push(s[i])}else t.push(r)}return t},goog.array.rotate=function(e,t){return goog.asserts.assert(null!=e.length),e.length&&(0<(t%=e.length)?Array.prototype.unshift.apply(e,e.splice(-t,t)):0>t&&Array.prototype.push.apply(e,e.splice(0,-t))),e},goog.array.moveItem=function(e,t,o){goog.asserts.assert(0<=t&&t<e.length),goog.asserts.assert(0<=o&&o<e.length),t=Array.prototype.splice.call(e,t,1),Array.prototype.splice.call(e,o,0,t[0])},goog.array.zip=function(e){if(!arguments.length)return[];for(var t=[],o=arguments[0].length,r=1;r<arguments.length;r++)arguments[r].length<o&&(o=arguments[r].length);for(r=0;r<o;r++){for(var n=[],s=0;s<arguments.length;s++)n.push(arguments[s][r]);t.push(n)}return t},goog.array.shuffle=function(e,t){t=t||Math.random;for(var o=e.length-1;0<o;o--){var r=Math.floor(t()*(o+1)),n=e[o];e[o]=e[r],e[r]=n}},goog.array.copyByIndex=function(e,t){var o=[];return goog.array.forEach(t,(function(t){o.push(e[t])})),o},goog.array.concatMap=function(e,t,o){return goog.array.concat.apply([],goog.array.map(e,t,o))},goog.crypt={},goog.crypt.stringToByteArray=function(e){for(var t=[],o=0,r=0;r<e.length;r++){var n=e.charCodeAt(r);255<n&&(t[o++]=255&n,n>>=8),t[o++]=n}return t},goog.crypt.byteArrayToString=function(e){if(8192>=e.length)return String.fromCharCode.apply(null,e);for(var t="",o=0;o<e.length;o+=8192){var r=goog.array.slice(e,o,o+8192);t+=String.fromCharCode.apply(null,r)}return t},goog.crypt.byteArrayToHex=function(e,t){return goog.array.map(e,(function(e){return 1<(e=e.toString(16)).length?e:"0"+e})).join(t||"")},goog.crypt.hexToByteArray=function(e){goog.asserts.assert(0==e.length%2,"Key string length must be multiple of 2");for(var t=[],o=0;o<e.length;o+=2)t.push(parseInt(e.substring(o,o+2),16));return t},goog.crypt.stringToUtf8ByteArray=function(e){for(var t=[],o=0,r=0;r<e.length;r++){var n=e.charCodeAt(r);128>n?t[o++]=n:(2048>n?t[o++]=n>>6|192:(55296==(64512&n)&&r+1<e.length&&56320==(64512&e.charCodeAt(r+1))?(n=65536+((1023&n)<<10)+(1023&e.charCodeAt(++r)),t[o++]=n>>18|240,t[o++]=n>>12&63|128):t[o++]=n>>12|224,t[o++]=n>>6&63|128),t[o++]=63&n|128)}return t},goog.crypt.utf8ByteArrayToString=function(e){for(var t=[],o=0,r=0;o<e.length;){var n=e[o++];if(128>n)t[r++]=String.fromCharCode(n);else if(191<n&&224>n){var s=e[o++];t[r++]=String.fromCharCode((31&n)<<6|63&s)}else if(239<n&&365>n){s=e[o++];var i=e[o++];n=((7&n)<<18|(63&s)<<12|(63&i)<<6|63&e[o++])-65536,t[r++]=String.fromCharCode(55296+(n>>10)),t[r++]=String.fromCharCode(56320+(1023&n))}else s=e[o++],i=e[o++],t[r++]=String.fromCharCode((15&n)<<12|(63&s)<<6|63&i)}return t.join("")},goog.crypt.xorByteArray=function(e,t){goog.asserts.assert(e.length==t.length,"XOR array lengths must match");for(var o=[],r=0;r<e.length;r++)o.push(e[r]^t[r]);return o},goog.dom.asserts={},goog.dom.asserts.assertIsLocation=function(e){if(goog.asserts.ENABLE_ASSERTS){var t=goog.dom.asserts.getWindow_(e);t&&(!e||!(e instanceof t.Location)&&e instanceof t.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(e))}return e},goog.dom.asserts.assertIsElementType_=function(e,t){if(goog.asserts.ENABLE_ASSERTS){var o=goog.dom.asserts.getWindow_(e);o&&void 0!==o[t]&&(e&&(e instanceof o[t]||!(e instanceof o.Location||e instanceof o.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",t,goog.dom.asserts.debugStringForType_(e)))}return e},goog.dom.asserts.assertIsHTMLAnchorElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLAnchorElement")},goog.dom.asserts.assertIsHTMLButtonElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLButtonElement")},goog.dom.asserts.assertIsHTMLLinkElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLLinkElement")},goog.dom.asserts.assertIsHTMLImageElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLImageElement")},goog.dom.asserts.assertIsHTMLAudioElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLAudioElement")},goog.dom.asserts.assertIsHTMLVideoElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLVideoElement")},goog.dom.asserts.assertIsHTMLInputElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLInputElement")},goog.dom.asserts.assertIsHTMLTextAreaElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLTextAreaElement")},goog.dom.asserts.assertIsHTMLCanvasElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLCanvasElement")},goog.dom.asserts.assertIsHTMLEmbedElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLEmbedElement")},goog.dom.asserts.assertIsHTMLFormElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLFormElement")},goog.dom.asserts.assertIsHTMLFrameElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLFrameElement")},goog.dom.asserts.assertIsHTMLIFrameElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLIFrameElement")},goog.dom.asserts.assertIsHTMLObjectElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLObjectElement")},goog.dom.asserts.assertIsHTMLScriptElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLScriptElement")},goog.dom.asserts.debugStringForType_=function(e){if(!goog.isObject(e))return void 0===e?"undefined":null===e?"null":typeof e;try{return e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e)}catch(e){return"<object could not be stringified>"}},goog.dom.asserts.getWindow_=function(e){try{var t=e&&e.ownerDocument,o=t&&(t.defaultView||t.parentWindow);if((o=o||goog.global).Element&&o.Location)return o}catch(e){}return null},goog.functions={},goog.functions.constant=function(e){return function(){return e}},goog.functions.FALSE=function(){return!1},goog.functions.TRUE=function(){return!0},goog.functions.NULL=function(){return null},goog.functions.identity=function(e,t){return e},goog.functions.error=function(e){return function(){throw Error(e)}},goog.functions.fail=function(e){return function(){throw e}},goog.functions.lock=function(e,t){return t=t||0,function(){return e.apply(this,Array.prototype.slice.call(arguments,0,t))}},goog.functions.nth=function(e){return function(){return arguments[e]}},goog.functions.partialRight=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=Array.prototype.slice.call(arguments);return t.push.apply(t,o),e.apply(this,t)}},goog.functions.withReturnValue=function(e,t){return goog.functions.sequence(e,goog.functions.constant(t))},goog.functions.equalTo=function(e,t){return function(o){return t?e==o:e===o}},goog.functions.compose=function(e,t){var o=arguments,r=o.length;return function(){var e;r&&(e=o[r-1].apply(this,arguments));for(var t=r-2;0<=t;t--)e=o[t].call(this,e);return e}},goog.functions.sequence=function(e){var t=arguments,o=t.length;return function(){for(var e,r=0;r<o;r++)e=t[r].apply(this,arguments);return e}},goog.functions.and=function(e){var t=arguments,o=t.length;return function(){for(var e=0;e<o;e++)if(!t[e].apply(this,arguments))return!1;return!0}},goog.functions.or=function(e){var t=arguments,o=t.length;return function(){for(var e=0;e<o;e++)if(t[e].apply(this,arguments))return!0;return!1}},goog.functions.not=function(e){return function(){return!e.apply(this,arguments)}},goog.functions.create=function(e,t){var o=function(){};return o.prototype=e.prototype,o=new o,e.apply(o,Array.prototype.slice.call(arguments,1)),o},goog.functions.CACHE_RETURN_VALUE=!0,goog.functions.cacheReturnValue=function(e){var t,o=!1;return function(){return goog.functions.CACHE_RETURN_VALUE?(o||(t=e(),o=!0),t):e()}},goog.functions.once=function(e){var t=e;return function(){if(t){var e=t;t=null,e()}}},goog.functions.debounce=function(e,t,o){var r=0;return function(n){goog.global.clearTimeout(r);var s=arguments;r=goog.global.setTimeout((function(){e.apply(o,s)}),t)}},goog.functions.throttle=function(e,t,o){var r=0,n=!1,s=[],i=function(){r=0,n&&(n=!1,a())},a=function(){r=goog.global.setTimeout(i,t),e.apply(o,s)};return function(e){s=arguments,r?n=!0:a()}},goog.functions.rateLimit=function(e,t,o){var r=0,n=function(){r=0};return function(s){r||(r=goog.global.setTimeout(n,t),e.apply(o,arguments))}},goog.dom.HtmlElement=function(){},goog.dom.TagName=function(e){this.tagName_=e},goog.dom.TagName.prototype.toString=function(){return this.tagName_},goog.dom.TagName.A=new goog.dom.TagName("A"),goog.dom.TagName.ABBR=new goog.dom.TagName("ABBR"),goog.dom.TagName.ACRONYM=new goog.dom.TagName("ACRONYM"),goog.dom.TagName.ADDRESS=new goog.dom.TagName("ADDRESS"),goog.dom.TagName.APPLET=new goog.dom.TagName("APPLET"),goog.dom.TagName.AREA=new goog.dom.TagName("AREA"),goog.dom.TagName.ARTICLE=new goog.dom.TagName("ARTICLE"),goog.dom.TagName.ASIDE=new goog.dom.TagName("ASIDE"),goog.dom.TagName.AUDIO=new goog.dom.TagName("AUDIO"),goog.dom.TagName.B=new goog.dom.TagName("B"),goog.dom.TagName.BASE=new goog.dom.TagName("BASE"),goog.dom.TagName.BASEFONT=new goog.dom.TagName("BASEFONT"),goog.dom.TagName.BDI=new goog.dom.TagName("BDI"),goog.dom.TagName.BDO=new goog.dom.TagName("BDO"),goog.dom.TagName.BIG=new goog.dom.TagName("BIG"),goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName("BLOCKQUOTE"),goog.dom.TagName.BODY=new goog.dom.TagName("BODY"),goog.dom.TagName.BR=new goog.dom.TagName("BR"),goog.dom.TagName.BUTTON=new goog.dom.TagName("BUTTON"),goog.dom.TagName.CANVAS=new goog.dom.TagName("CANVAS"),goog.dom.TagName.CAPTION=new goog.dom.TagName("CAPTION"),goog.dom.TagName.CENTER=new goog.dom.TagName("CENTER"),goog.dom.TagName.CITE=new goog.dom.TagName("CITE"),goog.dom.TagName.CODE=new goog.dom.TagName("CODE"),goog.dom.TagName.COL=new goog.dom.TagName("COL"),goog.dom.TagName.COLGROUP=new goog.dom.TagName("COLGROUP"),goog.dom.TagName.COMMAND=new goog.dom.TagName("COMMAND"),goog.dom.TagName.DATA=new goog.dom.TagName("DATA"),goog.dom.TagName.DATALIST=new goog.dom.TagName("DATALIST"),goog.dom.TagName.DD=new goog.dom.TagName("DD"),goog.dom.TagName.DEL=new goog.dom.TagName("DEL"),goog.dom.TagName.DETAILS=new goog.dom.TagName("DETAILS"),goog.dom.TagName.DFN=new goog.dom.TagName("DFN"),goog.dom.TagName.DIALOG=new goog.dom.TagName("DIALOG"),goog.dom.TagName.DIR=new goog.dom.TagName("DIR"),goog.dom.TagName.DIV=new goog.dom.TagName("DIV"),goog.dom.TagName.DL=new goog.dom.TagName("DL"),goog.dom.TagName.DT=new goog.dom.TagName("DT"),goog.dom.TagName.EM=new goog.dom.TagName("EM"),goog.dom.TagName.EMBED=new goog.dom.TagName("EMBED"),goog.dom.TagName.FIELDSET=new goog.dom.TagName("FIELDSET"),goog.dom.TagName.FIGCAPTION=new goog.dom.TagName("FIGCAPTION"),goog.dom.TagName.FIGURE=new goog.dom.TagName("FIGURE"),goog.dom.TagName.FONT=new goog.dom.TagName("FONT"),goog.dom.TagName.FOOTER=new goog.dom.TagName("FOOTER"),goog.dom.TagName.FORM=new goog.dom.TagName("FORM"),goog.dom.TagName.FRAME=new goog.dom.TagName("FRAME"),goog.dom.TagName.FRAMESET=new goog.dom.TagName("FRAMESET"),goog.dom.TagName.H1=new goog.dom.TagName("H1"),goog.dom.TagName.H2=new goog.dom.TagName("H2"),goog.dom.TagName.H3=new goog.dom.TagName("H3"),goog.dom.TagName.H4=new goog.dom.TagName("H4"),goog.dom.TagName.H5=new goog.dom.TagName("H5"),goog.dom.TagName.H6=new goog.dom.TagName("H6"),goog.dom.TagName.HEAD=new goog.dom.TagName("HEAD"),goog.dom.TagName.HEADER=new goog.dom.TagName("HEADER"),goog.dom.TagName.HGROUP=new goog.dom.TagName("HGROUP"),goog.dom.TagName.HR=new goog.dom.TagName("HR"),goog.dom.TagName.HTML=new goog.dom.TagName("HTML"),goog.dom.TagName.I=new goog.dom.TagName("I"),goog.dom.TagName.IFRAME=new goog.dom.TagName("IFRAME"),goog.dom.TagName.IMG=new goog.dom.TagName("IMG"),goog.dom.TagName.INPUT=new goog.dom.TagName("INPUT"),goog.dom.TagName.INS=new goog.dom.TagName("INS"),goog.dom.TagName.ISINDEX=new goog.dom.TagName("ISINDEX"),goog.dom.TagName.KBD=new goog.dom.TagName("KBD"),goog.dom.TagName.KEYGEN=new goog.dom.TagName("KEYGEN"),goog.dom.TagName.LABEL=new goog.dom.TagName("LABEL"),goog.dom.TagName.LEGEND=new goog.dom.TagName("LEGEND"),goog.dom.TagName.LI=new goog.dom.TagName("LI"),goog.dom.TagName.LINK=new goog.dom.TagName("LINK"),goog.dom.TagName.MAIN=new goog.dom.TagName("MAIN"),goog.dom.TagName.MAP=new goog.dom.TagName("MAP"),goog.dom.TagName.MARK=new goog.dom.TagName("MARK"),goog.dom.TagName.MATH=new goog.dom.TagName("MATH"),goog.dom.TagName.MENU=new goog.dom.TagName("MENU"),goog.dom.TagName.MENUITEM=new goog.dom.TagName("MENUITEM"),goog.dom.TagName.META=new goog.dom.TagName("META"),goog.dom.TagName.METER=new goog.dom.TagName("METER"),goog.dom.TagName.NAV=new goog.dom.TagName("NAV"),goog.dom.TagName.NOFRAMES=new goog.dom.TagName("NOFRAMES"),goog.dom.TagName.NOSCRIPT=new goog.dom.TagName("NOSCRIPT"),goog.dom.TagName.OBJECT=new goog.dom.TagName("OBJECT"),goog.dom.TagName.OL=new goog.dom.TagName("OL"),goog.dom.TagName.OPTGROUP=new goog.dom.TagName("OPTGROUP"),goog.dom.TagName.OPTION=new goog.dom.TagName("OPTION"),goog.dom.TagName.OUTPUT=new goog.dom.TagName("OUTPUT"),goog.dom.TagName.P=new goog.dom.TagName("P"),goog.dom.TagName.PARAM=new goog.dom.TagName("PARAM"),goog.dom.TagName.PICTURE=new goog.dom.TagName("PICTURE"),goog.dom.TagName.PRE=new goog.dom.TagName("PRE"),goog.dom.TagName.PROGRESS=new goog.dom.TagName("PROGRESS"),goog.dom.TagName.Q=new goog.dom.TagName("Q"),goog.dom.TagName.RP=new goog.dom.TagName("RP"),goog.dom.TagName.RT=new goog.dom.TagName("RT"),goog.dom.TagName.RTC=new goog.dom.TagName("RTC"),goog.dom.TagName.RUBY=new goog.dom.TagName("RUBY"),goog.dom.TagName.S=new goog.dom.TagName("S"),goog.dom.TagName.SAMP=new goog.dom.TagName("SAMP"),goog.dom.TagName.SCRIPT=new goog.dom.TagName("SCRIPT"),goog.dom.TagName.SECTION=new goog.dom.TagName("SECTION"),goog.dom.TagName.SELECT=new goog.dom.TagName("SELECT"),goog.dom.TagName.SMALL=new goog.dom.TagName("SMALL"),goog.dom.TagName.SOURCE=new goog.dom.TagName("SOURCE"),goog.dom.TagName.SPAN=new goog.dom.TagName("SPAN"),goog.dom.TagName.STRIKE=new goog.dom.TagName("STRIKE"),goog.dom.TagName.STRONG=new goog.dom.TagName("STRONG"),goog.dom.TagName.STYLE=new goog.dom.TagName("STYLE"),goog.dom.TagName.SUB=new goog.dom.TagName("SUB"),goog.dom.TagName.SUMMARY=new goog.dom.TagName("SUMMARY"),goog.dom.TagName.SUP=new goog.dom.TagName("SUP"),goog.dom.TagName.SVG=new goog.dom.TagName("SVG"),goog.dom.TagName.TABLE=new goog.dom.TagName("TABLE"),goog.dom.TagName.TBODY=new goog.dom.TagName("TBODY"),goog.dom.TagName.TD=new goog.dom.TagName("TD"),goog.dom.TagName.TEMPLATE=new goog.dom.TagName("TEMPLATE"),goog.dom.TagName.TEXTAREA=new goog.dom.TagName("TEXTAREA"),goog.dom.TagName.TFOOT=new goog.dom.TagName("TFOOT"),goog.dom.TagName.TH=new goog.dom.TagName("TH"),goog.dom.TagName.THEAD=new goog.dom.TagName("THEAD"),goog.dom.TagName.TIME=new goog.dom.TagName("TIME"),goog.dom.TagName.TITLE=new goog.dom.TagName("TITLE"),goog.dom.TagName.TR=new goog.dom.TagName("TR"),goog.dom.TagName.TRACK=new goog.dom.TagName("TRACK"),goog.dom.TagName.TT=new goog.dom.TagName("TT"),goog.dom.TagName.U=new goog.dom.TagName("U"),goog.dom.TagName.UL=new goog.dom.TagName("UL"),goog.dom.TagName.VAR=new goog.dom.TagName("VAR"),goog.dom.TagName.VIDEO=new goog.dom.TagName("VIDEO"),goog.dom.TagName.WBR=new goog.dom.TagName("WBR"),goog.dom.tags={},goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},goog.dom.tags.isVoidTag=function(e){return!0===goog.dom.tags.VOID_TAGS_[e]},goog.html={},goog.html.trustedtypes={},goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#html"):null,goog.string={},goog.string.TypedString=function(){},goog.string.Const=function(e,t){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=e===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&t||"",this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_},goog.string.Const.prototype.implementsGoogStringTypedString=!0,goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_},goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"},goog.string.Const.unwrap=function(e){return e instanceof goog.string.Const&&e.constructor===goog.string.Const&&e.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_?e.stringConstValueWithSecurityContract__googStringSecurityPrivate_:(goog.asserts.fail("expected object of type Const, got \'"+e+"\'"),"type_error:Const")},goog.string.Const.from=function(e){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,e)},goog.string.Const.TYPE_MARKER_={},goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={},goog.string.Const.EMPTY=goog.string.Const.from(""),goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_="",this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0,goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeScript.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeScript.fromConstantAndArgs=function(e,t){for(var o=[],r=1;r<arguments.length;r++)o.push(goog.html.SafeScript.stringify_(arguments[r]));return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("("+goog.string.Const.unwrap(e)+")("+o.join(", ")+");")},goog.html.SafeScript.fromJson=function(e){return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(e))},goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()},goog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return"SafeScript{"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+"}"}),goog.html.SafeScript.unwrap=function(e){return goog.html.SafeScript.unwrapTrustedScript(e).toString()},goog.html.SafeScript.unwrapTrustedScript=function(e){return e instanceof goog.html.SafeScript&&e.constructor===goog.html.SafeScript&&e.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeScriptWrappedValue_:(goog.asserts.fail("expected object of type SafeScript, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeScript")},goog.html.SafeScript.stringify_=function(e){return JSON.stringify(e).replace(/</g,"\\\\x3c")},goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(e):e,this},goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(""),goog.fs={},goog.fs.url={},goog.fs.url.createObjectUrl=function(e){return goog.fs.url.getUrlObject_().createObjectURL(e)},goog.fs.url.revokeObjectUrl=function(e){goog.fs.url.getUrlObject_().revokeObjectURL(e)},goog.fs.url.getUrlObject_=function(){var e=goog.fs.url.findUrlObject_();if(null!=e)return e;throw Error("This browser doesn\'t seem to support blob URLs")},goog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&&goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&&goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null},goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()},goog.i18n={},goog.i18n.bidi={},goog.i18n.bidi.FORCE_RTL=!1,goog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||("ar"==goog.LOCALE.substring(0,2).toLowerCase()||"fa"==goog.LOCALE.substring(0,2).toLowerCase()||"he"==goog.LOCALE.substring(0,2).toLowerCase()||"iw"==goog.LOCALE.substring(0,2).toLowerCase()||"ps"==goog.LOCALE.substring(0,2).toLowerCase()||"sd"==goog.LOCALE.substring(0,2).toLowerCase()||"ug"==goog.LOCALE.substring(0,2).toLowerCase()||"ur"==goog.LOCALE.substring(0,2).toLowerCase()||"yi"==goog.LOCALE.substring(0,2).toLowerCase())&&(2==goog.LOCALE.length||"-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))||3<=goog.LOCALE.length&&"ckb"==goog.LOCALE.substring(0,3).toLowerCase()&&(3==goog.LOCALE.length||"-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4))||7<=goog.LOCALE.length&&("-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))&&("adlm"==goog.LOCALE.substring(3,7).toLowerCase()||"arab"==goog.LOCALE.substring(3,7).toLowerCase()||"hebr"==goog.LOCALE.substring(3,7).toLowerCase()||"nkoo"==goog.LOCALE.substring(3,7).toLowerCase()||"rohg"==goog.LOCALE.substring(3,7).toLowerCase()||"thaa"==goog.LOCALE.substring(3,7).toLowerCase())||8<=goog.LOCALE.length&&("-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4))&&("adlm"==goog.LOCALE.substring(4,8).toLowerCase()||"arab"==goog.LOCALE.substring(4,8).toLowerCase()||"hebr"==goog.LOCALE.substring(4,8).toLowerCase()||"nkoo"==goog.LOCALE.substring(4,8).toLowerCase()||"rohg"==goog.LOCALE.substring(4,8).toLowerCase()||"thaa"==goog.LOCALE.substring(4,8).toLowerCase()),goog.i18n.bidi.Format={LRE:"",RLE:"",PDF:"",LRM:"",RLM:""},goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0},goog.i18n.bidi.RIGHT="right",goog.i18n.bidi.LEFT="left",goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT,goog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,goog.i18n.bidi.toDir=function(e,t){return"number"==typeof e?0<e?goog.i18n.bidi.Dir.LTR:0>e?goog.i18n.bidi.Dir.RTL:t?null:goog.i18n.bidi.Dir.NEUTRAL:null==e?null:e?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.ltrChars_="A-Za-zÀ-ÖØ-öø-ʸ̀-ऀ-Ⰰ-\\ud801\\ud804-\\ud839\\ud83c-\\udbff豈-︀--",goog.i18n.bidi.rtlChars_="֑-ۯۺ-ࣿ\\ud802-\\ud803\\ud83a-\\ud83bיִ-﷿ﹰ-ﻼ",goog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g,goog.i18n.bidi.stripHtmlIfNeeded_=function(e,t){return t?e.replace(goog.i18n.bidi.htmlSkipReg_,""):e},goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.hasAnyRtl=function(e,t){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl,goog.i18n.bidi.hasAnyLtr=function(e,t){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.isRtlChar=function(e){return goog.i18n.bidi.rtlRe_.test(e)},goog.i18n.bidi.isLtrChar=function(e){return goog.i18n.bidi.ltrRe_.test(e)},goog.i18n.bidi.isNeutralChar=function(e){return!goog.i18n.bidi.isLtrChar(e)&&!goog.i18n.bidi.isRtlChar(e)},goog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.startsWithRtl=function(e,t){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl,goog.i18n.bidi.startsWithLtr=function(e,t){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr,goog.i18n.bidi.isRequiredLtrRe_=/^http:\\/\\/.*/,goog.i18n.bidi.isNeutralText=function(e,t){return e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t),goog.i18n.bidi.isRequiredLtrRe_.test(e)||!goog.i18n.bidi.hasAnyLtr(e)&&!goog.i18n.bidi.hasAnyRtl(e)},goog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$"),goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$"),goog.i18n.bidi.endsWithLtr=function(e,t){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr,goog.i18n.bidi.endsWithRtl=function(e,t){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl,goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i,goog.i18n.bidi.isRtlLanguage=function(e){return goog.i18n.bidi.rtlLocalesRe_.test(e)},goog.i18n.bidi.bracketGuardTextRe_=/(\\(.*?\\)+)|(\\[.*?\\]+)|(\\{.*?\\}+)|(<.*?>+)/g,goog.i18n.bidi.guardBracketInText=function(e,t){return t=(void 0===t?goog.i18n.bidi.hasAnyRtl(e):t)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM,e.replace(goog.i18n.bidi.bracketGuardTextRe_,t+"$&"+t)},goog.i18n.bidi.enforceRtlInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\\w+/,"$& dir=rtl"):"\\n<span dir=rtl>"+e+"</span>"},goog.i18n.bidi.enforceRtlInText=function(e){return goog.i18n.bidi.Format.RLE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.enforceLtrInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\\w+/,"$& dir=ltr"):"\\n<span dir=ltr>"+e+"</span>"},goog.i18n.bidi.enforceLtrInText=function(e){return goog.i18n.bidi.Format.LRE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.dimensionsRe_=/:\\s*([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)/g,goog.i18n.bidi.leftRe_=/left/gi,goog.i18n.bidi.rightRe_=/right/gi,goog.i18n.bidi.tempRe_=/%%%%/g,goog.i18n.bidi.mirrorCSS=function(e){return e.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)},goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\\u0591-\\u05f2])"/g,goog.i18n.bidi.singleQuoteSubstituteRe_=/([\\u0591-\\u05f2])\'/g,goog.i18n.bidi.normalizeHebrewQuote=function(e){return e.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1״").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1׳")},goog.i18n.bidi.wordSeparatorRe_=/\\s+/,goog.i18n.bidi.hasNumeralsRe_=/[\\d\\u06f0-\\u06f9]/,goog.i18n.bidi.rtlDetectionThreshold_=.4,goog.i18n.bidi.estimateDirection=function(e,t){var o=0,r=0,n=!1;for(e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t).split(goog.i18n.bidi.wordSeparatorRe_),t=0;t<e.length;t++){var s=e[t];goog.i18n.bidi.startsWithRtl(s)?(o++,r++):goog.i18n.bidi.isRequiredLtrRe_.test(s)?n=!0:goog.i18n.bidi.hasAnyLtr(s)?r++:goog.i18n.bidi.hasNumeralsRe_.test(s)&&(n=!0)}return 0==r?n?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:o/r>goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.detectRtlDirectionality=function(e,t){return goog.i18n.bidi.estimateDirection(e,t)==goog.i18n.bidi.Dir.RTL},goog.i18n.bidi.setElementDirAndAlign=function(e,t){e&&(t=goog.i18n.bidi.toDir(t))&&(e.style.textAlign=t==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,e.dir=t==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")},goog.i18n.bidi.setElementDirByTextDirectionality=function(e,t){switch(goog.i18n.bidi.estimateDirection(t)){case goog.i18n.bidi.Dir.LTR:e.dir="ltr";break;case goog.i18n.bidi.Dir.RTL:e.dir="rtl";break;default:e.removeAttribute("dir")}},goog.i18n.bidi.DirectionalString=function(){},goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_="",this.trustedURL_=null,this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0,goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()},goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.html.TrustedResourceUrl.prototype.cloneWithParams=function(e,t){var o=goog.html.TrustedResourceUrl.unwrap(this),r=(o=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(o))[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(o[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",o[2]||"",e)+goog.html.TrustedResourceUrl.stringifyParams_("#",r,t))},goog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"}),goog.html.TrustedResourceUrl.unwrap=function(e){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(e).toString()},goog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(e){return e instanceof goog.html.TrustedResourceUrl&&e.constructor===goog.html.TrustedResourceUrl&&e.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_:(goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:TrustedResourceUrl")},goog.html.TrustedResourceUrl.unwrapTrustedURL=function(e){return e.trustedURL_?e.trustedURL_:goog.html.TrustedResourceUrl.unwrap(e)},goog.html.TrustedResourceUrl.format=function(e,t){var o=goog.string.Const.unwrap(e);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(o))throw Error("Invalid TrustedResourceUrl format: "+o);return e=o.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,(function(e,r){if(!Object.prototype.hasOwnProperty.call(t,r))throw Error(\'Found marker, "\'+r+\'", in format string, "\'+o+\'", but no valid label mapping found in args: \'+JSON.stringify(t));return(e=t[r])instanceof goog.string.Const?goog.string.Const.unwrap(e):encodeURIComponent(String(e))})),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g,goog.html.TrustedResourceUrl.BASE_URL_=/^((https:)?\\/\\/[0-9a-z.:[\\]-]+\\/|\\/[^/\\\\]|[^:/\\\\%]+\\/|[^:/\\\\%]*[?#]|about:blank#)/i,goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/,goog.html.TrustedResourceUrl.formatWithParams=function(e,t,o,r){return goog.html.TrustedResourceUrl.format(e,t).cloneWithParams(o,r)},goog.html.TrustedResourceUrl.fromConstant=function(e){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.TrustedResourceUrl.fromConstants=function(e){for(var t="",o=0;o<e.length;o++)t+=goog.string.Const.unwrap(e[o]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(e){var t=new goog.html.TrustedResourceUrl;return t.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(e):e,goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY&&(t.trustedURL_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(e)),t},goog.html.TrustedResourceUrl.stringifyParams_=function(e,t,o){if(null==o)return t;if(goog.isString(o))return o?e+encodeURIComponent(o):"";for(var r in o){var n=o[r];n=goog.isArray(n)?n:[n];for(var s=0;s<n.length;s++){var i=n[s];null!=i&&(t||(t=e),t+=(t.length>e.length?"&":"")+encodeURIComponent(r)+"="+encodeURIComponent(String(i)))}}return t},goog.string.internal={},goog.string.internal.startsWith=function(e,t){return 0==e.lastIndexOf(t,0)},goog.string.internal.endsWith=function(e,t){var o=e.length-t.length;return 0<=o&&e.indexOf(t,o)==o},goog.string.internal.caseInsensitiveStartsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(0,t.length))},goog.string.internal.caseInsensitiveEndsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(e.length-t.length,t.length))},goog.string.internal.caseInsensitiveEquals=function(e,t){return e.toLowerCase()==t.toLowerCase()},goog.string.internal.isEmptyOrWhitespace=function(e){return/^[\\s\\xa0]*$/.test(e)},goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(e)[1]},goog.string.internal.caseInsensitiveCompare=function(e,t){return(e=String(e).toLowerCase())<(t=String(t).toLowerCase())?-1:e==t?0:1},goog.string.internal.newLineToBr=function(e,t){return e.replace(/(\\r\\n|\\r|\\n)/g,t?"<br />":"<br>")},goog.string.internal.htmlEscape=function(e,t){if(t)e=e.replace(goog.string.internal.AMP_RE_,"&").replace(goog.string.internal.LT_RE_,"<").replace(goog.string.internal.GT_RE_,">").replace(goog.string.internal.QUOT_RE_,""").replace(goog.string.internal.SINGLE_QUOTE_RE_,"'").replace(goog.string.internal.NULL_RE_,"�");else{if(!goog.string.internal.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.internal.AMP_RE_,"&")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.internal.LT_RE_,"<")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.internal.GT_RE_,">")),-1!=e.indexOf(\'"\')&&(e=e.replace(goog.string.internal.QUOT_RE_,""")),-1!=e.indexOf("\'")&&(e=e.replace(goog.string.internal.SINGLE_QUOTE_RE_,"'")),-1!=e.indexOf("\\0")&&(e=e.replace(goog.string.internal.NULL_RE_,"�"))}return e},goog.string.internal.AMP_RE_=/&/g,goog.string.internal.LT_RE_=/</g,goog.string.internal.GT_RE_=/>/g,goog.string.internal.QUOT_RE_=/"/g,goog.string.internal.SINGLE_QUOTE_RE_=/\'/g,goog.string.internal.NULL_RE_=/\\x00/g,goog.string.internal.ALL_RE_=/[\\x00&<>"\']/,goog.string.internal.whitespaceEscape=function(e,t){return goog.string.internal.newLineToBr(e.replace(/ /g,"  "),t)},goog.string.internal.contains=function(e,t){return-1!=e.indexOf(t)},goog.string.internal.caseInsensitiveContains=function(e,t){return goog.string.internal.contains(e.toLowerCase(),t.toLowerCase())},goog.string.internal.compareVersions=function(e,t){var o=0;e=goog.string.internal.trim(String(e)).split("."),t=goog.string.internal.trim(String(t)).split(".");for(var r=Math.max(e.length,t.length),n=0;0==o&&n<r;n++){var s=e[n]||"",i=t[n]||"";do{if(s=/(\\d*)(\\D*)(.*)/.exec(s)||["","","",""],i=/(\\d*)(\\D*)(.*)/.exec(i)||["","","",""],0==s[0].length&&0==i[0].length)break;o=0==s[1].length?0:parseInt(s[1],10);var a=0==i[1].length?0:parseInt(i[1],10);o=goog.string.internal.compareElements_(o,a)||goog.string.internal.compareElements_(0==s[2].length,0==i[2].length)||goog.string.internal.compareElements_(s[2],i[2]),s=s[3],i=i[3]}while(0==o)}return o},goog.string.internal.compareElements_=function(e,t){return e<t?-1:e>t?1:0},goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeUrlWrappedValue_="",this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez",goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0,goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()},goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeUrlWrappedValue_+"}"}),goog.html.SafeUrl.unwrap=function(e){return goog.html.SafeUrl.unwrapTrustedURL(e).toString()},goog.html.SafeUrl.unwrapTrustedURL=function(e){return e instanceof goog.html.SafeUrl&&e.constructor===goog.html.SafeUrl&&e.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeUrlWrappedValue_:(goog.asserts.fail("expected object of type SafeUrl, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeUrl")},goog.html.SafeUrl.fromConstant=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:audio\\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-wav|wav|webm)|image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\\/csv|video\\/(?:mpeg|mp4|ogg|webm|quicktime))(?:;\\w+=(?:\\w+|"[\\w;=]+"))*$/i,goog.html.SafeUrl.isSafeMimeType=function(e){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(e)},goog.html.SafeUrl.fromBlob=function(e){return e=goog.html.SAFE_MIME_TYPE_PATTERN_.test(e.type)?goog.fs.url.createObjectUrl(e):goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.DATA_URL_PATTERN_=/^data:([^,]*);base64,[a-z0-9+\\/]+=*$/i,goog.html.SafeUrl.fromDataUrl=function(e){var t=(e=e.replace(/(%0A|%0D)/g,"")).match(goog.html.DATA_URL_PATTERN_);return t=t&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(t[1]),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t?e:goog.html.SafeUrl.INNOCUOUS_STRING)},goog.html.SafeUrl.fromTelUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"tel:")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SIP_URL_PATTERN_=/^sip[s]?:[+a-z0-9_.!$%&\'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$/i,goog.html.SafeUrl.fromSipUrl=function(e){return goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(e))||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromFacebookMessengerUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"fb-messenger://share")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromWhatsAppUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"whatsapp://send")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromSmsUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.isSmsUrlBodyValid_=function(e){var t=e.indexOf("#");if(0<t&&(e=e.substring(0,t)),!(t=e.match(/[?&]body=/gi)))return!0;if(1<t.length)return!1;if(!(e=e.match(/[?&]body=([^&]*)/)[1]))return!0;try{decodeURIComponent(e)}catch(e){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(e)},goog.html.SafeUrl.fromSshUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"ssh://")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.sanitizeChromeExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeExtensionUrl_=function(e,t,o){return(e=e.exec(t))?(e=e[1],-1==(o instanceof goog.string.Const?[goog.string.Const.unwrap(o)]:o.map((function(e){return goog.string.Const.unwrap(e)}))).indexOf(e)&&(t=goog.html.SafeUrl.INNOCUOUS_STRING)):t=goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.SafeUrl.fromTrustedResourceUrl=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(e))},goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_,goog.html.SafeUrl.sanitize=function(e){return e instanceof goog.html.SafeUrl?e:(e="object"==typeof e&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SAFE_URL_PATTERN_.test(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeUrl.sanitizeAssertUnchanged=function(e,t){return e instanceof goog.html.SafeUrl?e:(e="object"==typeof e&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),t&&/^data:/i.test(e)&&(t=goog.html.SafeUrl.fromDataUrl(e)).getTypedStringValue()==e?t:(goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(e),"%s does not match the safe URL pattern",e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)))},goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(e){var t=new goog.html.SafeUrl;return t.privateDoNotAccessOrElseSafeUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(e):e,t},goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank"),goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_="",this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyle.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeStyle.EMPTY:(goog.asserts.assert(goog.string.internal.endsWith(e,";"),"Last character of style string is not \';\': "+e),goog.asserts.assert(goog.string.internal.contains(e,":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+e),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_},goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return"SafeStyle{"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+"}"}),goog.html.SafeStyle.unwrap=function(e){return e instanceof goog.html.SafeStyle&&e.constructor===goog.html.SafeStyle&&e.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleWrappedValue_:(goog.asserts.fail("expected object of type SafeStyle, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeStyle")},goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_=e,this},goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(""),goog.html.SafeStyle.INNOCUOUS_STRING="zClosurez",goog.html.SafeStyle.create=function(e){var t,o="";for(t in e){if(!/^[-_a-zA-Z0-9]+$/.test(t))throw Error("Name allows only [-_a-zA-Z0-9], got: "+t);var r=e[t];null!=r&&(o+=t+":"+(r=goog.isArray(r)?goog.array.map(r,goog.html.SafeStyle.sanitizePropertyValue_).join(" "):goog.html.SafeStyle.sanitizePropertyValue_(r))+";")}return o?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(o):goog.html.SafeStyle.EMPTY},goog.html.SafeStyle.sanitizePropertyValue_=function(e){if(e instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(e).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';if(e=e instanceof goog.string.Const?goog.string.Const.unwrap(e):goog.html.SafeStyle.sanitizePropertyValueString_(String(e)),/[{;}]/.test(e))throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.",[e]);return e},goog.html.SafeStyle.sanitizePropertyValueString_=function(e){var t=e.replace(goog.html.SafeStyle.FUNCTIONS_RE_,"$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_,"$1").replace(goog.html.SafeStyle.URL_RE_,"url");return goog.html.SafeStyle.VALUE_RE_.test(t)?goog.html.SafeStyle.COMMENT_RE_.test(e)?(goog.asserts.fail("String value disallows comments, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):goog.html.SafeStyle.hasBalancedQuotes_(e)?goog.html.SafeStyle.hasBalancedSquareBrackets_(e)?goog.html.SafeStyle.sanitizeUrl_(e):(goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value requires balanced quotes, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value allows only "+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+" and simple functions, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING)},goog.html.SafeStyle.hasBalancedQuotes_=function(e){for(var t=!0,o=!0,r=0;r<e.length;r++){var n=e.charAt(r);"\'"==n&&o?t=!t:\'"\'==n&&t&&(o=!o)}return t&&o},goog.html.SafeStyle.hasBalancedSquareBrackets_=function(e){for(var t=!0,o=/^[-_a-zA-Z0-9]$/,r=0;r<e.length;r++){var n=e.charAt(r);if("]"==n){if(t)return!1;t=!0}else if("["==n){if(!t)return!1;t=!1}else if(!t&&!o.test(n))return!1}return t},goog.html.SafeStyle.VALUE_ALLOWED_CHARS_="[-,.\\"\'%_!# a-zA-Z0-9\\\\[\\\\]]",goog.html.SafeStyle.VALUE_RE_=new RegExp("^"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+"+$"),goog.html.SafeStyle.URL_RE_=/\\b(url\\([ \\t\\n]*)(\'[ -&(-\\[\\]-~]*\'|"[ !#-\\[\\]-~]*"|[!#-&*-\\[\\]-~]*)([ \\t\\n]*\\))/g,goog.html.SafeStyle.FUNCTIONS_RE_=/\\b(hsl|hsla|rgb|rgba|matrix|calc|minmax|fit-content|repeat|(rotate|scale|translate)(X|Y|Z|3d)?)\\([-+*/0-9a-z.%\\[\\], ]+\\)/g,goog.html.SafeStyle.COMMENT_RE_=/\\/\\*/,goog.html.SafeStyle.sanitizeUrl_=function(e){return e.replace(goog.html.SafeStyle.URL_RE_,(function(e,t,o,r){var n="";return o=o.replace(/^([\'"])(.*)\\1$/,(function(e,t,o){return n=t,o})),e=goog.html.SafeUrl.sanitize(o).getTypedStringValue(),t+n+e+n+r}))},goog.html.SafeStyle.concat=function(e){var t="",o=function(e){goog.isArray(e)?goog.array.forEach(e,o):t+=goog.html.SafeStyle.unwrap(e)};return goog.array.forEach(arguments,o),t?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t):goog.html.SafeStyle.EMPTY},goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_="",this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyleSheet.createRule=function(e,t){if(goog.string.internal.contains(e,"<"))throw Error("Selector does not allow \'<\', got: "+e);var o=e.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(o))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+e);if(!goog.html.SafeStyleSheet.hasBalancedBrackets_(o))throw Error("() and [] in selector must be balanced, got: "+e);return t instanceof goog.html.SafeStyle||(t=goog.html.SafeStyle.create(t)),e=e+"{"+goog.html.SafeStyle.unwrap(t).replace(/</g,"\\\\3C ")+"}",goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeStyleSheet.hasBalancedBrackets_=function(e){for(var t={"(":")","[":"]"},o=[],r=0;r<e.length;r++){var n=e[r];if(t[n])o.push(t[n]);else if(goog.object.contains(t,n)&&o.pop()!=n)return!1}return 0==o.length},goog.html.SafeStyleSheet.concat=function(e){var t="",o=function(e){goog.isArray(e)?goog.array.forEach(e,o):t+=goog.html.SafeStyleSheet.unwrap(e)};return goog.array.forEach(arguments,o),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.SafeStyleSheet.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeStyleSheet.EMPTY:(goog.asserts.assert(!goog.string.internal.contains(e,"<"),"Forbidden \'<\' character in style sheet string: "+e),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_},goog.DEBUG&&(goog.html.SafeStyleSheet.prototype.toString=function(){return"SafeStyleSheet{"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+"}"}),goog.html.SafeStyleSheet.unwrap=function(e){return e instanceof goog.html.SafeStyleSheet&&e.constructor===goog.html.SafeStyleSheet&&e.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_:(goog.asserts.fail("expected object of type SafeStyleSheet, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeStyleSheet")},goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=e,this},goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(""),goog.labs={},goog.labs.userAgent={},goog.labs.userAgent.util={},goog.labs.userAgent.util.getNativeUserAgentString_=function(){var e=goog.labs.userAgent.util.getNavigator_();return e&&(e=e.userAgent)?e:""},goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator},goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_(),goog.labs.userAgent.util.setUserAgent=function(e){goog.labs.userAgent.util.userAgent_=e||goog.labs.userAgent.util.getNativeUserAgentString_()},goog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_},goog.labs.userAgent.util.matchUserAgent=function(e){var t=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.contains(t,e)},goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(e){var t=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.caseInsensitiveContains(t,e)},goog.labs.userAgent.util.extractVersionTuples=function(e){for(var t,o=/(\\w[\\w ]+)\\/([^\\s]+)\\s*(?:\\((.*?)\\))?/g,r=[];t=o.exec(e);)r.push([t[1],t[2],t[3]||void 0]);return r},goog.labs.userAgent.browser={},goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")},goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.browser.matchEdgeHtml_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.browser.matchEdgeChromium_=function(){return goog.labs.userAgent.util.matchUserAgent("Edg/")},goog.labs.userAgent.browser.matchOperaChromium_=function(){return goog.labs.userAgent.util.matchUserAgent("OPR")},goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")||goog.labs.userAgent.util.matchUserAgent("FxiOS")},goog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdgeHtml_()||goog.labs.userAgent.browser.matchEdgeChromium_()||goog.labs.userAgent.browser.matchOperaChromium_()||goog.labs.userAgent.browser.matchFirefox_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))},goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")},goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&!goog.labs.userAgent.browser.matchFirefox_()&&goog.labs.userAgent.util.matchUserAgent("AppleWebKit")},goog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&&!goog.labs.userAgent.browser.matchEdgeHtml_()},goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())},goog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_,goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_,goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdgeHtml_,goog.labs.userAgent.browser.isEdgeChromium=goog.labs.userAgent.browser.matchEdgeChromium_,goog.labs.userAgent.browser.isOperaChromium=goog.labs.userAgent.browser.matchOperaChromium_,goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_,goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_,goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_,goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_,goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_,goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_,goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")},goog.labs.userAgent.browser.getVersion=function(){function e(e){return e=goog.array.find(e,r),o[e]||""}var t=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(t);t=goog.labs.userAgent.util.extractVersionTuples(t);var o={};goog.array.forEach(t,(function(e){o[e[0]]=e[1]}));var r=goog.partial(goog.object.containsKey,o);return goog.labs.userAgent.browser.isOpera()?e(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?e(["Edge"]):goog.labs.userAgent.browser.isEdgeChromium()?e(["Edg"]):goog.labs.userAgent.browser.isChrome()?e(["Chrome","CriOS"]):(t=t[2])&&t[1]||""},goog.labs.userAgent.browser.isVersionOrHigher=function(e){return 0<=goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(),e)},goog.labs.userAgent.browser.getIEVersion_=function(e){var t=/rv: *([\\d\\.]*)/.exec(e);if(t&&t[1])return t[1];t="";var o=/MSIE +([\\d\\.]+)/.exec(e);if(o&&o[1])if(e=/Trident\\/(\\d.\\d)/.exec(e),"7.0"==o[1])if(e&&e[1])switch(e[1]){case"4.0":t="8.0";break;case"5.0":t="9.0";break;case"6.0":t="10.0";break;case"7.0":t="11.0"}else t="7.0";else t=o[1];return t},goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="",this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_,this.dir_=null},goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_},goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0,goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()},goog.DEBUG&&(goog.html.SafeHtml.prototype.toString=function(){return"SafeHtml{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"}),goog.html.SafeHtml.unwrap=function(e){return goog.html.SafeHtml.unwrapTrustedHTML(e).toString()},goog.html.SafeHtml.unwrapTrustedHTML=function(e){return e instanceof goog.html.SafeHtml&&e.constructor===goog.html.SafeHtml&&e.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeHtmlWrappedValue_:(goog.asserts.fail("expected object of type SafeHtml, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeHtml")},goog.html.SafeHtml.htmlEscape=function(e){if(e instanceof goog.html.SafeHtml)return e;var t="object"==typeof e,o=null;return t&&e.implementsGoogI18nBidiDirectionalString&&(o=e.getDirection()),e=t&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(e),o)},goog.html.SafeHtml.htmlEscapePreservingNewlines=function(e){return e instanceof goog.html.SafeHtml?e:(e=goog.html.SafeHtml.htmlEscape(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(e)),e.getDirection()))},goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(e){return e instanceof goog.html.SafeHtml?e:(e=goog.html.SafeHtml.htmlEscape(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(e)),e.getDirection()))},goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape,goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/,goog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.html.SafeHtml.create=function(e,t,o){return goog.html.SafeHtml.verifyTagName(String(e)),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(e),t,o)},goog.html.SafeHtml.verifyTagName=function(e){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(e))throw Error("Invalid tag name <"+e+">.");if(e.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error("Tag name <"+e+"> is not allowed for SafeHtml.")},goog.html.SafeHtml.createIframe=function(e,t,o,r){e&&goog.html.TrustedResourceUrl.unwrap(e);var n={};return n.src=e||null,n.srcdoc=t&&goog.html.SafeHtml.unwrap(t),e=goog.html.SafeHtml.combineAttributes(n,{sandbox:""},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.createSandboxIframe=function(e,t,o,r){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error("The browser does not support sandboxed iframes.");var n={};return n.src=e?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)):null,n.srcdoc=t||null,n.sandbox="",e=goog.html.SafeHtml.combineAttributes(n,{},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype},goog.html.SafeHtml.createScriptSrc=function(e,t){return goog.html.TrustedResourceUrl.unwrap(e),e=goog.html.SafeHtml.combineAttributes({src:e},{},t),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",e)},goog.html.SafeHtml.createScript=function(e,t){for(var o in t){var r=o.toLowerCase();if("language"==r||"src"==r||"text"==r||"type"==r)throw Error(\'Cannot set "\'+r+\'" attribute\')}for(o="",e=goog.array.concat(e),r=0;r<e.length;r++)o+=goog.html.SafeScript.unwrap(e[r]);return e=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",t,e)},goog.html.SafeHtml.createStyle=function(e,t){t=goog.html.SafeHtml.combineAttributes({type:"text/css"},{},t);var o="";e=goog.array.concat(e);for(var r=0;r<e.length;r++)o+=goog.html.SafeStyleSheet.unwrap(e[r]);return e=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",t,e)},goog.html.SafeHtml.createMetaRefresh=function(e,t){return e=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)),(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&&goog.string.internal.contains(e,";")&&(e="\'"+e.replace(/\'/g,"%27")+"\'"),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",{"http-equiv":"refresh",content:(t||0)+"; url="+e})},goog.html.SafeHtml.getAttrNameAndValue_=function(e,t,o){if(o instanceof goog.string.Const)o=goog.string.Const.unwrap(o);else if("style"==t.toLowerCase())o=goog.html.SafeHtml.getStyleValue_(o);else{if(/^on/i.test(t))throw Error(\'Attribute "\'+t+\'" requires goog.string.Const value, "\'+o+\'" given.\');if(t.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(o instanceof goog.html.TrustedResourceUrl)o=goog.html.TrustedResourceUrl.unwrap(o);else if(o instanceof goog.html.SafeUrl)o=goog.html.SafeUrl.unwrap(o);else{if(!goog.isString(o))throw Error(\'Attribute "\'+t+\'" on tag "\'+e+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+o+\'" given.\');o=goog.html.SafeUrl.sanitize(o).getTypedStringValue()}}return o.implementsGoogStringTypedString&&(o=o.getTypedStringValue()),goog.asserts.assert(goog.isString(o)||goog.isNumber(o),"String or number value expected, got "+typeof o+" with value: "+o),t+\'="\'+goog.string.internal.htmlEscape(String(o))+\'"\'},goog.html.SafeHtml.getStyleValue_=function(e){if(!goog.isObject(e))throw Error(\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof e+" given: "+e);return e instanceof goog.html.SafeStyle||(e=goog.html.SafeStyle.create(e)),goog.html.SafeStyle.unwrap(e)},goog.html.SafeHtml.createWithDir=function(e,t,o,r){return(t=goog.html.SafeHtml.create(t,o,r)).dir_=e,t},goog.html.SafeHtml.join=function(e,t){var o=(e=goog.html.SafeHtml.htmlEscape(e)).getDirection(),r=[],n=function(e){goog.isArray(e)?goog.array.forEach(e,n):(e=goog.html.SafeHtml.htmlEscape(e),r.push(goog.html.SafeHtml.unwrap(e)),e=e.getDirection(),o==goog.i18n.bidi.Dir.NEUTRAL?o=e:e!=goog.i18n.bidi.Dir.NEUTRAL&&o!=e&&(o=null))};return goog.array.forEach(t,n),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(r.join(goog.html.SafeHtml.unwrap(e)),o)},goog.html.SafeHtml.concat=function(e){return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY,Array.prototype.slice.call(arguments))},goog.html.SafeHtml.concatWithDir=function(e,t){var o=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));return o.dir_=e,o},goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(e,t){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(e,t)},goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e,t){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(e):e,this.dir_=t,this},goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(e,t,o){var r=null,n="<"+e+goog.html.SafeHtml.stringifyAttributes(e,t);return goog.isDefAndNotNull(o)?goog.isArray(o)||(o=[o]):o=[],goog.dom.tags.isVoidTag(e.toLowerCase())?(goog.asserts.assert(!o.length,"Void tag <"+e+"> does not allow content."),n+=">"):(r=goog.html.SafeHtml.concat(o),n+=">"+goog.html.SafeHtml.unwrap(r)+"</"+e+">",r=r.getDirection()),(e=t&&t.dir)&&(r=/^(ltr|rtl|auto)$/i.test(e)?goog.i18n.bidi.Dir.NEUTRAL:null),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(n,r)},goog.html.SafeHtml.stringifyAttributes=function(e,t){var o="";if(t)for(var r in t){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(r))throw Error(\'Invalid attribute name "\'+r+\'".\');var n=t[r];goog.isDefAndNotNull(n)&&(o+=" "+goog.html.SafeHtml.getAttrNameAndValue_(e,r,n))}return o},goog.html.SafeHtml.combineAttributes=function(e,t,o){var r,n={};for(r in e)goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=e[r];for(r in t)goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=t[r];for(r in o){var s=r.toLowerCase();if(s in e)throw Error(\'Cannot override "\'+s+\'" attribute, got "\'+r+\'" with value "\'+o[r]+\'"\');s in t&&delete n[s],n[r]=o[r]}return n},goog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>",goog.i18n.bidi.Dir.NEUTRAL),goog.html.uncheckedconversions={},goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(e,t,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(t,o||null)},goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.dom.safe={},goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"},goog.dom.safe.insertAdjacentHtml=function(e,t,o){e.insertAdjacentHTML(t,goog.html.SafeHtml.unwrapTrustedHTML(o))},goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue((function(){if(goog.DEBUG&&"undefined"==typeof document)return!1;var e=document.createElement("div"),t=document.createElement("div");return t.appendChild(document.createElement("div")),e.appendChild(t),!(goog.DEBUG&&!e.firstChild||(t=e.firstChild.firstChild,e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY),t.parentElement))})),goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(e,t){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;e.lastChild;)e.removeChild(e.lastChild);e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setInnerHtml=function(e,t){if(goog.asserts.ENABLE_ASSERTS){var o=e.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[o])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+e.tagName+".")}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(e,t)},goog.dom.safe.setOuterHtml=function(e,t){e.outerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setFormElementAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLFormElement(e).action=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setButtonFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLButtonElement(e).formAction=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setInputFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLInputElement(e).formAction=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setStyle=function(e,t){e.style.cssText=goog.html.SafeStyle.unwrap(t)},goog.dom.safe.documentWrite=function(e,t){e.write(goog.html.SafeHtml.unwrapTrustedHTML(t))},goog.dom.safe.setAnchorHref=function(e,t){goog.dom.asserts.assertIsHTMLAnchorElement(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setImageSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLImageElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:image\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setAudioSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLAudioElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:audio\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setVideoSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLVideoElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:video\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setEmbedSrc=function(e,t){goog.dom.asserts.assertIsHTMLEmbedElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setFrameSrc=function(e,t){goog.dom.asserts.assertIsHTMLFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)},goog.dom.safe.setIframeSrc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)},goog.dom.safe.setIframeSrcdoc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.srcdoc=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setLinkHrefAndRel=function(e,t,o){goog.dom.asserts.assertIsHTMLLinkElement(e),e.rel=o,goog.string.internal.caseInsensitiveContains(o,"stylesheet")?(goog.asserts.assert(t instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),e.href=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)):e.href=t instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrapTrustedURL(t):t instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrapTrustedURL(t):goog.html.SafeUrl.unwrapTrustedURL(goog.html.SafeUrl.sanitizeAssertUnchanged(t))},goog.dom.safe.setObjectData=function(e,t){goog.dom.asserts.assertIsHTMLObjectElement(e),e.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setScriptSrc=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t),(t=goog.getScriptNonce())&&e.setAttribute("nonce",t)},goog.dom.safe.setScriptContent=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.text=goog.html.SafeScript.unwrapTrustedScript(t),(t=goog.getScriptNonce())&&e.setAttribute("nonce",t)},goog.dom.safe.setLocationHref=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.assignLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.assign(goog.html.SafeUrl.unwrapTrustedURL(t))},goog.dom.safe.replaceLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.replace(goog.html.SafeUrl.unwrapTrustedURL(t))},goog.dom.safe.openInWindow=function(e,t,o,r,n){return e=e instanceof goog.html.SafeUrl?e:goog.html.SafeUrl.sanitizeAssertUnchanged(e),(t||goog.global).open(goog.html.SafeUrl.unwrapTrustedURL(e),o?goog.string.Const.unwrap(o):"",r,n)},goog.dom.safe.parseFromStringHtml=function(e,t){return goog.dom.safe.parseFromString(e,t,"text/html")},goog.dom.safe.parseFromString=function(e,t,o){return e.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(t),o)},goog.dom.safe.createImageFromBlob=function(e){if(!/^image\\/.*/g.test(e.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var t=goog.global.URL.createObjectURL(e);return(e=new goog.global.Image).onload=function(){goog.global.URL.revokeObjectURL(t)},goog.dom.safe.setImageSrc(e,goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."),t)),e},goog.string.DETECT_DOUBLE_ESCAPING=!1,goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1,goog.string.Unicode={NBSP:" "},goog.string.startsWith=goog.string.internal.startsWith,goog.string.endsWith=goog.string.internal.endsWith,goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith,goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith,goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals,goog.string.subs=function(e,t){for(var o=e.split("%s"),r="",n=Array.prototype.slice.call(arguments,1);n.length&&1<o.length;)r+=o.shift()+n.shift();return r+o.join("%s")},goog.string.collapseWhitespace=function(e){return e.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")},goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace,goog.string.isEmptyString=function(e){return 0==e.length},goog.string.isEmpty=goog.string.isEmptyOrWhitespace,goog.string.isEmptyOrWhitespaceSafe=function(e){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(e))},goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe,goog.string.isBreakingWhitespace=function(e){return!/[^\\t\\n\\r ]/.test(e)},goog.string.isAlpha=function(e){return!/[^a-zA-Z]/.test(e)},goog.string.isNumeric=function(e){return!/[^0-9]/.test(e)},goog.string.isAlphaNumeric=function(e){return!/[^a-zA-Z0-9]/.test(e)},goog.string.isSpace=function(e){return" "==e},goog.string.isUnicodeChar=function(e){return 1==e.length&&" "<=e&&"~">=e||""<=e&&"�">=e},goog.string.stripNewlines=function(e){return e.replace(/(\\r\\n|\\r|\\n)+/g," ")},goog.string.canonicalizeNewlines=function(e){return e.replace(/(\\r\\n|\\r|\\n)/g,"\\n")},goog.string.normalizeWhitespace=function(e){return e.replace(/\\xa0|\\s/g," ")},goog.string.normalizeSpaces=function(e){return e.replace(/\\xa0|[ \\t]+/g," ")},goog.string.collapseBreakingSpaces=function(e){return e.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")},goog.string.trim=goog.string.internal.trim,goog.string.trimLeft=function(e){return e.replace(/^[\\s\\xa0]+/,"")},goog.string.trimRight=function(e){return e.replace(/[\\s\\xa0]+$/,"")},goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare,goog.string.numberAwareCompare_=function(e,t,o){if(e==t)return 0;if(!e)return-1;if(!t)return 1;for(var r=e.toLowerCase().match(o),n=t.toLowerCase().match(o),s=Math.min(r.length,n.length),i=0;i<s;i++){o=r[i];var a=n[i];if(o!=a)return e=parseInt(o,10),!isNaN(e)&&(t=parseInt(a,10),!isNaN(t)&&e-t)?e-t:o<a?-1:1}return r.length!=n.length?r.length-n.length:e<t?-1:1},goog.string.intAwareCompare=function(e,t){return goog.string.numberAwareCompare_(e,t,/\\d+|\\D+/g)},goog.string.floatAwareCompare=function(e,t){return goog.string.numberAwareCompare_(e,t,/\\d+|\\.\\d+|\\D+/g)},goog.string.numerateCompare=goog.string.floatAwareCompare,goog.string.urlEncode=function(e){return encodeURIComponent(String(e))},goog.string.urlDecode=function(e){return decodeURIComponent(e.replace(/\\+/g," "))},goog.string.newLineToBr=goog.string.internal.newLineToBr,goog.string.htmlEscape=function(e,t){return e=goog.string.internal.htmlEscape(e,t),goog.string.DETECT_DOUBLE_ESCAPING&&(e=e.replace(goog.string.E_RE_,"e")),e},goog.string.E_RE_=/e/g,goog.string.unescapeEntities=function(e){return goog.string.contains(e,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(e):goog.string.unescapePureXmlEntities_(e):e},goog.string.unescapeEntitiesWithDocument=function(e,t){return goog.string.contains(e,"&")?goog.string.unescapeEntitiesUsingDom_(e,t):e},goog.string.unescapeEntitiesUsingDom_=function(e,t){var o={"&":"&","<":"<",">":">",""":\'"\'},r=t?t.createElement("div"):goog.global.document.createElement("div");return e.replace(goog.string.HTML_ENTITY_PATTERN_,(function(e,t){var n=o[e];return n||("#"==t.charAt(0)&&(t=Number("0"+t.substr(1)),isNaN(t)||(n=String.fromCharCode(t))),n||(goog.dom.safe.setInnerHtml(r,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),e+" ")),n=r.firstChild.nodeValue.slice(0,-1)),o[e]=n)}))},goog.string.unescapePureXmlEntities_=function(e){return e.replace(/&([^;]+);/g,(function(e,t){switch(t){case"amp":return"&";case"lt":return"<";case"gt":return">";case"quot":return\'"\';default:return"#"!=t.charAt(0)||(t=Number("0"+t.substr(1)),isNaN(t))?e:String.fromCharCode(t)}}))},goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g,goog.string.whitespaceEscape=function(e,t){return goog.string.newLineToBr(e.replace(/ /g,"  "),t)},goog.string.preserveSpaces=function(e){return e.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)},goog.string.stripQuotes=function(e,t){for(var o=t.length,r=0;r<o;r++){var n=1==o?t:t.charAt(r);if(e.charAt(0)==n&&e.charAt(e.length-1)==n)return e.substring(1,e.length-1)}return e},goog.string.truncate=function(e,t,o){return o&&(e=goog.string.unescapeEntities(e)),e.length>t&&(e=e.substring(0,t-3)+"..."),o&&(e=goog.string.htmlEscape(e)),e},goog.string.truncateMiddle=function(e,t,o,r){if(o&&(e=goog.string.unescapeEntities(e)),r&&e.length>t){r>t&&(r=t);var n=e.length-r;e=e.substring(0,t-r)+"..."+e.substring(n)}else e.length>t&&(r=Math.floor(t/2),n=e.length-r,e=e.substring(0,r+t%2)+"..."+e.substring(n));return o&&(e=goog.string.htmlEscape(e)),e},goog.string.specialEscapeChars_={"\\0":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"},goog.string.jsEscapeCache_={"\'":"\\\\\'"},goog.string.quote=function(e){e=String(e);for(var t=[\'"\'],o=0;o<e.length;o++){var r=e.charAt(o),n=r.charCodeAt(0);t[o+1]=goog.string.specialEscapeChars_[r]||(31<n&&127>n?r:goog.string.escapeChar(r))}return t.push(\'"\'),t.join("")},goog.string.escapeString=function(e){for(var t=[],o=0;o<e.length;o++)t[o]=goog.string.escapeChar(e.charAt(o));return t.join("")},goog.string.escapeChar=function(e){if(e in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[e];if(e in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[e]=goog.string.specialEscapeChars_[e];var t=e.charCodeAt(0);if(31<t&&127>t)var o=e;else 256>t?(o="\\\\x",(16>t||256<t)&&(o+="0")):(o="\\\\u",4096>t&&(o+="0")),o+=t.toString(16).toUpperCase();return goog.string.jsEscapeCache_[e]=o},goog.string.contains=goog.string.internal.contains,goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains,goog.string.countOf=function(e,t){return e&&t?e.split(t).length-1:0},goog.string.removeAt=function(e,t,o){var r=e;return 0<=t&&t<e.length&&0<o&&(r=e.substr(0,t)+e.substr(t+o,e.length-t-o)),r},goog.string.remove=function(e,t){return e.replace(t,"")},goog.string.removeAll=function(e,t){return t=new RegExp(goog.string.regExpEscape(t),"g"),e.replace(t,"")},goog.string.replaceAll=function(e,t,o){return t=new RegExp(goog.string.regExpEscape(t),"g"),e.replace(t,o.replace(/\\$/g,"$$$$"))},goog.string.regExpEscape=function(e){return String(e).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")},goog.string.repeat=String.prototype.repeat?function(e,t){return e.repeat(t)}:function(e,t){return Array(t+1).join(e)},goog.string.padNumber=function(e,t,o){return-1==(o=(e=goog.isDef(o)?e.toFixed(o):String(e)).indexOf("."))&&(o=e.length),goog.string.repeat("0",Math.max(0,t-o))+e},goog.string.makeSafe=function(e){return null==e?"":String(e)},goog.string.buildString=function(e){return Array.prototype.join.call(arguments,"")},goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)},goog.string.compareVersions=goog.string.internal.compareVersions,goog.string.hashCode=function(e){for(var t=0,o=0;o<e.length;++o)t=31*t+e.charCodeAt(o)>>>0;return t},goog.string.uniqueStringCounter_=2147483648*Math.random()|0,goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++},goog.string.toNumber=function(e){var t=Number(e);return 0==t&&goog.string.isEmptyOrWhitespace(e)?NaN:t},goog.string.isLowerCamelCase=function(e){return/^[a-z]+([A-Z][a-z]*)*$/.test(e)},goog.string.isUpperCamelCase=function(e){return/^([A-Z][a-z]*)+$/.test(e)},goog.string.toCamelCase=function(e){return String(e).replace(/\\-([a-z])/g,(function(e,t){return t.toUpperCase()}))},goog.string.toSelectorCase=function(e){return String(e).replace(/([A-Z])/g,"-$1").toLowerCase()},goog.string.toTitleCase=function(e,t){return t=goog.isString(t)?goog.string.regExpEscape(t):"\\\\s",e.replace(new RegExp("(^"+(t?"|["+t+"]+":"")+")([a-z])","g"),(function(e,t,o){return t+o.toUpperCase()}))},goog.string.capitalize=function(e){return String(e.charAt(0)).toUpperCase()+String(e.substr(1)).toLowerCase()},goog.string.parseInt=function(e){return isFinite(e)&&(e=String(e)),goog.isString(e)?/^\\s*-?0x/i.test(e)?parseInt(e,16):parseInt(e,10):NaN},goog.string.splitLimit=function(e,t,o){e=e.split(t);for(var r=[];0<o&&e.length;)r.push(e.shift()),o--;return e.length&&r.push(e.join(t)),r},goog.string.lastComponent=function(e,t){if(!t)return e;"string"==typeof t&&(t=[t]);for(var o=-1,r=0;r<t.length;r++)if(""!=t[r]){var n=e.lastIndexOf(t[r]);n>o&&(o=n)}return-1==o?e:e.slice(o+1)},goog.string.editDistance=function(e,t){var o=[],r=[];if(e==t)return 0;if(!e.length||!t.length)return Math.max(e.length,t.length);for(var n=0;n<t.length+1;n++)o[n]=n;for(n=0;n<e.length;n++){r[0]=n+1;for(var s=0;s<t.length;s++)r[s+1]=Math.min(r[s]+1,o[s+1]+1,o[s]+Number(e[n]!=t[s]));for(s=0;s<o.length;s++)o[s]=r[s]}return r[t.length]},goog.labs.userAgent.engine={},goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")},goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent();if(e){e=goog.labs.userAgent.util.extractVersionTuples(e);var t,o=goog.labs.userAgent.engine.getEngineTuple_(e);if(o)return"Gecko"==o[0]?goog.labs.userAgent.engine.getVersionForKey_(e,"Firefox"):o[1];if((e=e[0])&&(t=e[2])&&(t=/Trident\\/([^\\s;]+)/.exec(t)))return t[1]}return""},goog.labs.userAgent.engine.getEngineTuple_=function(e){if(!goog.labs.userAgent.engine.isEdge())return e[1];for(var t=0;t<e.length;t++){var o=e[t];if("Edge"==o[0])return o}},goog.labs.userAgent.engine.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),e)},goog.labs.userAgent.engine.getVersionForKey_=function(e,t){return(e=goog.array.find(e,(function(e){return t==e[0]})))&&e[1]||""},goog.labs.userAgent.platform={},goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent("Android")},goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent("iPod")},goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent("iPhone")&&!goog.labs.userAgent.util.matchUserAgent("iPod")&&!goog.labs.userAgent.util.matchUserAgent("iPad")},goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent("iPad")},goog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()},goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent("Macintosh")},goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent("Linux")},goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent("Windows")},goog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent("CrOS")},goog.labs.userAgent.platform.isChromecast=function(){return goog.labs.userAgent.util.matchUserAgent("CrKey")},goog.labs.userAgent.platform.isKaiOS=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS")},goog.labs.userAgent.platform.isGo2Phone=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("GAFP")},goog.labs.userAgent.platform.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent(),t="";return goog.labs.userAgent.platform.isWindows()?t=(e=(t=/Windows (?:NT|Phone) ([0-9.]+)/).exec(e))?e[1]:"0.0":goog.labs.userAgent.platform.isIos()?t=(e=(t=/(?:iPhone|iPod|iPad|CPU)\\s+OS\\s+(\\S+)/).exec(e))&&e[1].replace(/_/g,"."):goog.labs.userAgent.platform.isMacintosh()?t=(e=(t=/Mac OS X ([0-9_.]+)/).exec(e))?e[1].replace(/_/g,"."):"10":goog.labs.userAgent.platform.isKaiOS()?t=(e=(t=/(?:KaiOS)\\/(\\S+)/i).exec(e))&&e[1]:goog.labs.userAgent.platform.isAndroid()?t=(e=(t=/Android\\s+([^\\);]+)(\\)|;)/).exec(e))&&e[1]:goog.labs.userAgent.platform.isChromeOS()&&(t=(e=(t=/(?:CrOS\\s+(?:i686|x86_64)\\s+([0-9.]+))/).exec(e))&&e[1]),t||""},goog.labs.userAgent.platform.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),e)},goog.reflect={},goog.reflect.object=function(e,t){return t},goog.reflect.objectProperty=function(e,t){return e},goog.reflect.sinkValue=function(e){return goog.reflect.sinkValue[" "](e),e},goog.reflect.sinkValue[" "]=goog.nullFunction,goog.reflect.canAccessProperty=function(e,t){try{return goog.reflect.sinkValue(e[t]),!0}catch(e){}return!1},goog.reflect.cache=function(e,t,o,r){return r=r?r(t):t,Object.prototype.hasOwnProperty.call(e,r)?e[r]:e[r]=o(t)},goog.userAgent={},goog.userAgent.ASSUME_IE=!1,goog.userAgent.ASSUME_EDGE=!1,goog.userAgent.ASSUME_GECKO=!1,goog.userAgent.ASSUME_WEBKIT=!1,goog.userAgent.ASSUME_MOBILE_WEBKIT=!1,goog.userAgent.ASSUME_OPERA=!1,goog.userAgent.ASSUME_ANY_VERSION=!1,goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA,goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()},goog.userAgent.getNavigatorTyped=function(){return goog.global.navigator||null},goog.userAgent.getNavigator=function(){return goog.userAgent.getNavigatorTyped()},goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera(),goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE(),goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge(),goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE,goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko(),goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit(),goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent("Mobile")},goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_(),goog.userAgent.SAFARI=goog.userAgent.WEBKIT,goog.userAgent.determinePlatform_=function(){var e=goog.userAgent.getNavigatorTyped();return e&&e.platform||""},goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_(),goog.userAgent.ASSUME_MAC=!1,goog.userAgent.ASSUME_WINDOWS=!1,goog.userAgent.ASSUME_LINUX=!1,goog.userAgent.ASSUME_X11=!1,goog.userAgent.ASSUME_ANDROID=!1,goog.userAgent.ASSUME_IPHONE=!1,goog.userAgent.ASSUME_IPAD=!1,goog.userAgent.ASSUME_IPOD=!1,goog.userAgent.ASSUME_KAIOS=!1,goog.userAgent.ASSUME_GO2PHONE=!1,goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD,goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh(),goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows(),goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()},goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_(),goog.userAgent.isX11_=function(){var e=goog.userAgent.getNavigatorTyped();return!!e&&goog.string.contains(e.appVersion||"","X11")},goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_(),goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid(),goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone(),goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad(),goog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod(),goog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos(),goog.userAgent.KAIOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_KAIOS:goog.labs.userAgent.platform.isKaiOS(),goog.userAgent.GO2PHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_GO2PHONE:goog.labs.userAgent.platform.isGo2Phone(),goog.userAgent.determineVersion_=function(){var e="",t=goog.userAgent.getVersionRegexResult_();return t&&(e=t?t[1]:""),goog.userAgent.IE&&null!=(t=goog.userAgent.getDocumentMode_())&&t>parseFloat(e)?String(t):e},goog.userAgent.getVersionRegexResult_=function(){var e=goog.userAgent.getUserAgentString();return goog.userAgent.GECKO?/rv:([^\\);]+)(\\)|;)/.exec(e):goog.userAgent.EDGE?/Edge\\/([\\d\\.]+)/.exec(e):goog.userAgent.IE?/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(e):goog.userAgent.WEBKIT?/WebKit\\/(\\S+)/.exec(e):goog.userAgent.OPERA?/(?:Version)[ \\/]?(\\S+)/.exec(e):void 0},goog.userAgent.getDocumentMode_=function(){var e=goog.global.document;return e?e.documentMode:void 0},goog.userAgent.VERSION=goog.userAgent.determineVersion_(),goog.userAgent.compare=function(e,t){return goog.string.compareVersions(e,t)},goog.userAgent.isVersionOrHigherCache_={},goog.userAgent.isVersionOrHigher=function(e){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,e,(function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,e)}))},goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher,goog.userAgent.isDocumentModeOrHigher=function(e){return Number(goog.userAgent.DOCUMENT_MODE)>=e},goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher,goog.userAgent.DOCUMENT_MODE=function(){if(goog.global.document&&goog.userAgent.IE)return goog.userAgent.getDocumentMode_()}(),goog.userAgent.product={},goog.userAgent.product.ASSUME_FIREFOX=!1,goog.userAgent.product.ASSUME_IPHONE=!1,goog.userAgent.product.ASSUME_IPAD=!1,goog.userAgent.product.ASSUME_ANDROID=!1,goog.userAgent.product.ASSUME_CHROME=!1,goog.userAgent.product.ASSUME_SAFARI=!1,goog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI,goog.userAgent.product.OPERA=goog.userAgent.OPERA,goog.userAgent.product.IE=goog.userAgent.IE,goog.userAgent.product.EDGE=goog.userAgent.EDGE,goog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.labs.userAgent.browser.isFirefox(),goog.userAgent.product.isIphoneOrIpod_=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpod()},goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.isIphoneOrIpod_(),goog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad(),goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.labs.userAgent.browser.isAndroidBrowser(),goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.labs.userAgent.browser.isChrome(),goog.userAgent.product.isSafariDesktop_=function(){return goog.labs.userAgent.browser.isSafari()&&!goog.labs.userAgent.platform.isIos()},goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.isSafariDesktop_(),goog.crypt.base64={},goog.crypt.base64.DEFAULT_ALPHABET_COMMON_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",goog.crypt.base64.ENCODED_VALS=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+"+/=",goog.crypt.base64.ENCODED_VALS_WEBSAFE=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+"-_.",goog.crypt.base64.Alphabet={DEFAULT:0,NO_PADDING:1,WEBSAFE:2,WEBSAFE_DOT_PADDING:3,WEBSAFE_NO_PADDING:4},goog.crypt.base64.paddingChars_="=.",goog.crypt.base64.isPadding_=function(e){return goog.string.contains(goog.crypt.base64.paddingChars_,e)},goog.crypt.base64.byteToCharMaps_={};goog.crypt.base64.charToByteMap_=null,goog.crypt.base64.ASSUME_NATIVE_SUPPORT_=goog.userAgent.GECKO||goog.userAgent.WEBKIT&&!goog.userAgent.product.SAFARI||goog.userAgent.OPERA,goog.crypt.base64.HAS_NATIVE_ENCODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||"function"==typeof goog.global.btoa,goog.crypt.base64.HAS_NATIVE_DECODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||!goog.userAgent.product.SAFARI&&!goog.userAgent.IE&&"function"==typeof goog.global.atob,goog.crypt.base64.encodeByteArray=function(e,t){goog.asserts.assert(goog.isArrayLike(e),"encodeByteArray takes an array as a parameter"),void 0===t&&(t=goog.crypt.base64.Alphabet.DEFAULT),goog.crypt.base64.init_(),t=goog.crypt.base64.byteToCharMaps_[t];for(var o=[],r=0;r<e.length;r+=3){var n=e[r],s=r+1<e.length,i=s?e[r+1]:0,a=r+2<e.length,g=a?e[r+2]:0,l=n>>2;n=(3&n)<<4|i>>4,i=(15&i)<<2|g>>6,g&=63,a||(g=64,s||(i=64)),o.push(t[l],t[n],t[i]||"",t[g]||"")}return o.join("")},goog.crypt.base64.encodeString=function(e,t){return goog.crypt.base64.HAS_NATIVE_ENCODE_&&!t?goog.global.btoa(e):goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(e),t)},goog.crypt.base64.decodeString=function(e,t){if(goog.crypt.base64.HAS_NATIVE_DECODE_&&!t)return goog.global.atob(e);var o="";return goog.crypt.base64.decodeStringInternal_(e,(function(e){o+=String.fromCharCode(e)})),o},goog.crypt.base64.decodeStringToByteArray=function(e,t){var o=[];return goog.crypt.base64.decodeStringInternal_(e,(function(e){o.push(e)})),o},goog.crypt.base64.decodeStringToUint8Array=function(e){goog.asserts.assert(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10"),"Browser does not support typed arrays");var t=e.length,o=3*t/4;o%3?o=Math.floor(o):goog.crypt.base64.isPadding_(e[t-1])&&(o=goog.crypt.base64.isPadding_(e[t-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return goog.crypt.base64.decodeStringInternal_(e,(function(e){r[n++]=e})),r.subarray(0,n)},goog.crypt.base64.decodeStringInternal_=function(e,t){function o(t){for(;r<e.length;){var o=e.charAt(r++),n=goog.crypt.base64.charToByteMap_[o];if(null!=n)return n;if(!goog.string.isEmptyOrWhitespace(o))throw Error("Unknown base64 encoding at char: "+o)}return t}goog.crypt.base64.init_();for(var r=0;;){var n=o(-1),s=o(0),i=o(64),a=o(64);if(64===a&&-1===n)break;t(n<<2|s>>4),64!=i&&(t(s<<4&240|i>>2),64!=a&&t(i<<6&192|a))}},goog.crypt.base64.init_=function(){if(!goog.crypt.base64.charToByteMap_){goog.crypt.base64.charToByteMap_={};for(var e=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(""),t=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=e.concat(t[o].split(""));goog.crypt.base64.byteToCharMaps_[o]=r;for(var n=0;n<r.length;n++){var s=r[n],i=goog.crypt.base64.charToByteMap_[s];void 0===i?goog.crypt.base64.charToByteMap_[s]=n:goog.asserts.assert(i===n)}}}},jspb.utils={},jspb.utils.split64Low=0,jspb.utils.split64High=0,jspb.utils.splitUint64=function(e){var t=e>>>0;e=Math.floor((e-t)/jspb.BinaryConstants.TWO_TO_32)>>>0,jspb.utils.split64Low=t,jspb.utils.split64High=e},jspb.utils.splitInt64=function(e){var t=0>e,o=(e=Math.abs(e))>>>0;e=Math.floor((e-o)/jspb.BinaryConstants.TWO_TO_32),e>>>=0,t&&(e=~e>>>0,4294967295<(o=1+(~o>>>0))&&(o=0,4294967295<++e&&(e=0))),jspb.utils.split64Low=o,jspb.utils.split64High=e},jspb.utils.splitZigzag64=function(e){var t=0>e;e=2*Math.abs(e),jspb.utils.splitUint64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;t&&(0==e?0==o?o=e=4294967295:(o--,e=4294967295):e--),jspb.utils.split64Low=e,jspb.utils.split64High=o},jspb.utils.splitFloat32=function(e){var t=0>e?1:0;if(0===(e=t?-e:e))0<1/e?(jspb.utils.split64High=0,jspb.utils.split64Low=0):(jspb.utils.split64High=0,jspb.utils.split64Low=2147483648);else if(isNaN(e))jspb.utils.split64High=0,jspb.utils.split64Low=2147483647;else if(e>jspb.BinaryConstants.FLOAT32_MAX)jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|2139095040)>>>0;else if(e<jspb.BinaryConstants.FLOAT32_MIN)e=Math.round(e/Math.pow(2,-149)),jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|e)>>>0;else{var o=Math.floor(Math.log(e)/Math.LN2);e*=Math.pow(2,-o),16777216<=(e=Math.round(e*jspb.BinaryConstants.TWO_TO_23))&&++o,jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|o+127<<23|8388607&e)>>>0}},jspb.utils.splitFloat64=function(e){var t=0>e?1:0;if(0===(e=t?-e:e))jspb.utils.split64High=0<1/e?0:2147483648,jspb.utils.split64Low=0;else if(isNaN(e))jspb.utils.split64High=2147483647,jspb.utils.split64Low=4294967295;else if(e>jspb.BinaryConstants.FLOAT64_MAX)jspb.utils.split64High=(t<<31|2146435072)>>>0,jspb.utils.split64Low=0;else if(e<jspb.BinaryConstants.FLOAT64_MIN){var o=e/Math.pow(2,-1074);e=o/jspb.BinaryConstants.TWO_TO_32,jspb.utils.split64High=(t<<31|e)>>>0,jspb.utils.split64Low=o>>>0}else{var r=0;if(2<=(o=e))for(;2<=o&&1023>r;)r++,o/=2;else for(;1>o&&-1022<r;)o*=2,r--;e=(o=e*Math.pow(2,-r))*jspb.BinaryConstants.TWO_TO_20&1048575,o=o*jspb.BinaryConstants.TWO_TO_52>>>0,jspb.utils.split64High=(t<<31|r+1023<<20|e)>>>0,jspb.utils.split64Low=o}},jspb.utils.splitHash64=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),r=e.charCodeAt(2),n=e.charCodeAt(3),s=e.charCodeAt(4),i=e.charCodeAt(5),a=e.charCodeAt(6);e=e.charCodeAt(7),jspb.utils.split64Low=t+(o<<8)+(r<<16)+(n<<24)>>>0,jspb.utils.split64High=s+(i<<8)+(a<<16)+(e<<24)>>>0},jspb.utils.joinUint64=function(e,t){return t*jspb.BinaryConstants.TWO_TO_32+(e>>>0)},jspb.utils.joinInt64=function(e,t){var o=2147483648&t;return o&&(t=~t>>>0,0==(e=1+~e>>>0)&&(t=t+1>>>0)),e=jspb.utils.joinUint64(e,t),o?-e:e},jspb.utils.toZigzag64=function(e,t,o){var r=t>>31;return o(e<<1^r,(t<<1|e>>>31)^r)},jspb.utils.joinZigzag64=function(e,t){return jspb.utils.fromZigzag64(e,t,jspb.utils.joinInt64)},jspb.utils.fromZigzag64=function(e,t,o){var r=-(1&e);return o((e>>>1|t<<31)^r,t>>>1^r)},jspb.utils.joinFloat32=function(e,t){t=2*(e>>31)+1;var o=e>>>23&255;return e&=8388607,255==o?e?NaN:1/0*t:0==o?t*Math.pow(2,-149)*e:t*Math.pow(2,o-150)*(e+Math.pow(2,23))},jspb.utils.joinFloat64=function(e,t){var o=2*(t>>31)+1,r=t>>>20&2047;return e=jspb.BinaryConstants.TWO_TO_32*(1048575&t)+e,2047==r?e?NaN:1/0*o:0==r?o*Math.pow(2,-1074)*e:o*Math.pow(2,r-1075)*(e+jspb.BinaryConstants.TWO_TO_52)},jspb.utils.joinHash64=function(e,t){return String.fromCharCode(e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255,t>>>0&255,t>>>8&255,t>>>16&255,t>>>24&255)},jspb.utils.DIGITS="0123456789abcdef".split(""),jspb.utils.ZERO_CHAR_CODE_=48,jspb.utils.A_CHAR_CODE_=97,jspb.utils.joinUnsignedDecimalString=function(e,t){function o(e,t){return e=e?String(e):"",t?"0000000".slice(e.length)+e:e}if(2097151>=t)return""+jspb.utils.joinUint64(e,t);var r=(e>>>24|t<<8)>>>0&16777215;return e=(16777215&e)+6777216*r+6710656*(t=t>>16&65535),r+=8147497*t,t*=2,1e7<=e&&(r+=Math.floor(e/1e7),e%=1e7),1e7<=r&&(t+=Math.floor(r/1e7),r%=1e7),o(t,0)+o(r,t)+o(e,1)},jspb.utils.joinSignedDecimalString=function(e,t){var o=2147483648&t;return o&&(t=~t+(0==(e=1+~e>>>0)?1:0)>>>0),e=jspb.utils.joinUnsignedDecimalString(e,t),o?"-"+e:e},jspb.utils.hash64ToDecimalString=function(e,t){jspb.utils.splitHash64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;return t?jspb.utils.joinSignedDecimalString(e,o):jspb.utils.joinUnsignedDecimalString(e,o)},jspb.utils.hash64ArrayToDecimalStrings=function(e,t){for(var o=Array(e.length),r=0;r<e.length;r++)o[r]=jspb.utils.hash64ToDecimalString(e[r],t);return o},jspb.utils.decimalStringToHash64=function(e){function t(e,t){for(var o=0;8>o&&(1!==e||0<t);o++)t=e*r[o]+t,r[o]=255&t,t>>>=8}goog.asserts.assert(0<e.length);var o=!1;"-"===e[0]&&(o=!0,e=e.slice(1));for(var r=[0,0,0,0,0,0,0,0],n=0;n<e.length;n++)t(10,e.charCodeAt(n)-jspb.utils.ZERO_CHAR_CODE_);return o&&(function(){for(var e=0;8>e;e++)r[e]=255&~r[e]}(),t(1,1)),goog.crypt.byteArrayToString(r)},jspb.utils.splitDecimalString=function(e){jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(e))},jspb.utils.toHexDigit_=function(e){return String.fromCharCode(10>e?jspb.utils.ZERO_CHAR_CODE_+e:jspb.utils.A_CHAR_CODE_-10+e)},jspb.utils.fromHexCharCode_=function(e){return e>=jspb.utils.A_CHAR_CODE_?e-jspb.utils.A_CHAR_CODE_+10:e-jspb.utils.ZERO_CHAR_CODE_},jspb.utils.hash64ToHexString=function(e){var t=Array(18);t[0]="0",t[1]="x";for(var o=0;8>o;o++){var r=e.charCodeAt(7-o);t[2*o+2]=jspb.utils.toHexDigit_(r>>4),t[2*o+3]=jspb.utils.toHexDigit_(15&r)}return t.join("")},jspb.utils.hexStringToHash64=function(e){e=e.toLowerCase(),goog.asserts.assert(18==e.length),goog.asserts.assert("0"==e[0]),goog.asserts.assert("x"==e[1]);for(var t="",o=0;8>o;o++){var r=jspb.utils.fromHexCharCode_(e.charCodeAt(2*o+2)),n=jspb.utils.fromHexCharCode_(e.charCodeAt(2*o+3));t=String.fromCharCode(16*r+n)+t}return t},jspb.utils.hash64ToNumber=function(e,t){jspb.utils.splitHash64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;return t?jspb.utils.joinInt64(e,o):jspb.utils.joinUint64(e,o)},jspb.utils.numberToHash64=function(e){return jspb.utils.splitInt64(e),jspb.utils.joinHash64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.utils.countVarints=function(e,t,o){for(var r=0,n=t;n<o;n++)r+=e[n]>>7;return o-t-r},jspb.utils.countVarintFields=function(e,t,o,r){var n=0;if(128>(r=8*r+jspb.BinaryConstants.WireType.VARINT))for(;t<o&&e[t++]==r;)for(n++;;){var s=e[t++];if(0==(128&s))break}else for(;t<o;){for(s=r;128<s;){if(e[t]!=(127&s|128))return n;t++,s>>=7}if(e[t++]!=s)break;for(n++;0!=(128&(s=e[t++])););}return n},jspb.utils.countFixedFields_=function(e,t,o,r,n){var s=0;if(128>r)for(;t<o&&e[t++]==r;)s++,t+=n;else for(;t<o;){for(var i=r;128<i;){if(e[t++]!=(127&i|128))return s;i>>=7}if(e[t++]!=i)break;s++,t+=n}return s},jspb.utils.countFixed32Fields=function(e,t,o,r){return jspb.utils.countFixedFields_(e,t,o,8*r+jspb.BinaryConstants.WireType.FIXED32,4)},jspb.utils.countFixed64Fields=function(e,t,o,r){return jspb.utils.countFixedFields_(e,t,o,8*r+jspb.BinaryConstants.WireType.FIXED64,8)},jspb.utils.countDelimitedFields=function(e,t,o,r){var n=0;for(r=8*r+jspb.BinaryConstants.WireType.DELIMITED;t<o;){for(var s=r;128<s;){if(e[t++]!=(127&s|128))return n;s>>=7}if(e[t++]!=s)break;n++;for(var i=0,a=1;i+=(127&(s=e[t++]))*a,a*=128,0!=(128&s););t+=i}return n},jspb.utils.debugBytesToTextFormat=function(e){var t=\'"\';if(e){e=jspb.utils.byteSourceToUint8Array(e);for(var o=0;o<e.length;o++)t+="\\\\x",16>e[o]&&(t+="0"),t+=e[o].toString(16)}return t+\'"\'},jspb.utils.debugScalarToTextFormat=function(e){return"string"==typeof e?goog.string.quote(e):e.toString()},jspb.utils.stringToByteArray=function(e){for(var t=new Uint8Array(e.length),o=0;o<e.length;o++){var r=e.charCodeAt(o);if(255<r)throw Error("Conversion error: string contains codepoint outside of byte range");t[o]=r}return t},jspb.utils.byteSourceToUint8Array=function(e){return e.constructor===Uint8Array?e:e.constructor===ArrayBuffer||"undefined"!=typeof Buffer&&e.constructor===Buffer||e.constructor===Array?new Uint8Array(e):e.constructor===String?goog.crypt.base64.decodeStringToUint8Array(e):(goog.asserts.fail("Type not convertible to Uint8Array."),new Uint8Array(0))},jspb.BinaryDecoder=function(e,t,o){this.bytes_=null,this.cursor_=this.end_=this.start_=0,this.error_=!1,e&&this.setBlock(e,t,o)},jspb.BinaryDecoder.instanceCache_=[],jspb.BinaryDecoder.alloc=function(e,t,o){if(jspb.BinaryDecoder.instanceCache_.length){var r=jspb.BinaryDecoder.instanceCache_.pop();return e&&r.setBlock(e,t,o),r}return new jspb.BinaryDecoder(e,t,o)},jspb.BinaryDecoder.prototype.free=function(){this.clear(),100>jspb.BinaryDecoder.instanceCache_.length&&jspb.BinaryDecoder.instanceCache_.push(this)},jspb.BinaryDecoder.prototype.clone=function(){return jspb.BinaryDecoder.alloc(this.bytes_,this.start_,this.end_-this.start_)},jspb.BinaryDecoder.prototype.clear=function(){this.bytes_=null,this.cursor_=this.end_=this.start_=0,this.error_=!1},jspb.BinaryDecoder.prototype.getBuffer=function(){return this.bytes_},jspb.BinaryDecoder.prototype.setBlock=function(e,t,o){this.bytes_=jspb.utils.byteSourceToUint8Array(e),this.start_=void 0!==t?t:0,this.end_=void 0!==o?this.start_+o:this.bytes_.length,this.cursor_=this.start_},jspb.BinaryDecoder.prototype.getEnd=function(){return this.end_},jspb.BinaryDecoder.prototype.setEnd=function(e){this.end_=e},jspb.BinaryDecoder.prototype.reset=function(){this.cursor_=this.start_},jspb.BinaryDecoder.prototype.getCursor=function(){return this.cursor_},jspb.BinaryDecoder.prototype.setCursor=function(e){this.cursor_=e},jspb.BinaryDecoder.prototype.advance=function(e){this.cursor_+=e,goog.asserts.assert(this.cursor_<=this.end_)},jspb.BinaryDecoder.prototype.atEnd=function(){return this.cursor_==this.end_},jspb.BinaryDecoder.prototype.pastEnd=function(){return this.cursor_>this.end_},jspb.BinaryDecoder.prototype.getError=function(){return this.error_||0>this.cursor_||this.cursor_>this.end_},jspb.BinaryDecoder.prototype.readSplitVarint64=function(e){for(var t=128,o=0,r=0,n=0;4>n&&128<=t;n++)o|=(127&(t=this.bytes_[this.cursor_++]))<<7*n;if(128<=t&&(o|=(127&(t=this.bytes_[this.cursor_++]))<<28,r|=(127&t)>>4),128<=t)for(n=0;5>n&&128<=t;n++)r|=(127&(t=this.bytes_[this.cursor_++]))<<7*n+3;if(128>t)return e(o>>>0,r>>>0);goog.asserts.fail("Failed to read varint, encoding is invalid."),this.error_=!0},jspb.BinaryDecoder.prototype.readSplitZigzagVarint64=function(e){return this.readSplitVarint64((function(t,o){return jspb.utils.fromZigzag64(t,o,e)}))},jspb.BinaryDecoder.prototype.readSplitFixed64=function(e){var t=this.bytes_,o=this.cursor_;this.cursor_+=8;for(var r=0,n=0,s=o+7;s>=o;s--)r=r<<8|t[s],n=n<<8|t[s+4];return e(r,n)},jspb.BinaryDecoder.prototype.skipVarint=function(){for(;128&this.bytes_[this.cursor_];)this.cursor_++;this.cursor_++},jspb.BinaryDecoder.prototype.unskipVarint=function(e){for(;128<e;)this.cursor_--,e>>>=7;this.cursor_--},jspb.BinaryDecoder.prototype.readUnsignedVarint32=function(){var e=this.bytes_,t=e[this.cursor_+0],o=127&t;return 128>t?(this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+1]))<<7,128>t?(this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+2]))<<14,128>t?(this.cursor_+=3,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+3]))<<21,128>t?(this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(15&(t=e[this.cursor_+4]))<<28,128>t?(this.cursor_+=5,goog.asserts.assert(this.cursor_<=this.end_),o>>>0):(this.cursor_+=5,128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&goog.asserts.assert(!1),goog.asserts.assert(this.cursor_<=this.end_),o)))))},jspb.BinaryDecoder.prototype.readSignedVarint32=jspb.BinaryDecoder.prototype.readUnsignedVarint32,jspb.BinaryDecoder.prototype.readUnsignedVarint32String=function(){return this.readUnsignedVarint32().toString()},jspb.BinaryDecoder.prototype.readSignedVarint32String=function(){return this.readSignedVarint32().toString()},jspb.BinaryDecoder.prototype.readZigzagVarint32=function(){var e=this.readUnsignedVarint32();return e>>>1^-(1&e)},jspb.BinaryDecoder.prototype.readUnsignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinUint64)},jspb.BinaryDecoder.prototype.readUnsignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString)},jspb.BinaryDecoder.prototype.readSignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinInt64)},jspb.BinaryDecoder.prototype.readSignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinSignedDecimalString)},jspb.BinaryDecoder.prototype.readZigzagVarint64=function(){return this.readSplitVarint64(jspb.utils.joinZigzag64)},jspb.BinaryDecoder.prototype.readZigzagVarintHash64=function(){return this.readSplitZigzagVarint64(jspb.utils.joinHash64)},jspb.BinaryDecoder.prototype.readZigzagVarint64String=function(){return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString)},jspb.BinaryDecoder.prototype.readUint8=function(){var e=this.bytes_[this.cursor_+0];return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),e},jspb.BinaryDecoder.prototype.readUint16=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1];return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),e<<0|t<<8},jspb.BinaryDecoder.prototype.readUint32=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1],o=this.bytes_[this.cursor_+2],r=this.bytes_[this.cursor_+3];return this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),(e<<0|t<<8|o<<16|r<<24)>>>0},jspb.BinaryDecoder.prototype.readUint64=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinUint64(e,t)},jspb.BinaryDecoder.prototype.readUint64String=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinUnsignedDecimalString(e,t)},jspb.BinaryDecoder.prototype.readInt8=function(){var e=this.bytes_[this.cursor_+0];return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),e<<24>>24},jspb.BinaryDecoder.prototype.readInt16=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1];return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),(e<<0|t<<8)<<16>>16},jspb.BinaryDecoder.prototype.readInt32=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1],o=this.bytes_[this.cursor_+2],r=this.bytes_[this.cursor_+3];return this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),e<<0|t<<8|o<<16|r<<24},jspb.BinaryDecoder.prototype.readInt64=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinInt64(e,t)},jspb.BinaryDecoder.prototype.readInt64String=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinSignedDecimalString(e,t)},jspb.BinaryDecoder.prototype.readFloat=function(){var e=this.readUint32();return jspb.utils.joinFloat32(e,0)},jspb.BinaryDecoder.prototype.readDouble=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinFloat64(e,t)},jspb.BinaryDecoder.prototype.readBool=function(){return!!this.bytes_[this.cursor_++]},jspb.BinaryDecoder.prototype.readEnum=function(){return this.readSignedVarint32()},jspb.BinaryDecoder.prototype.readString=function(e){var t=this.bytes_,o=this.cursor_;e=o+e;for(var r=[],n="";o<e;){var s=t[o++];if(128>s)r.push(s);else{if(192>s)continue;if(224>s){var i=t[o++];r.push((31&s)<<6|63&i)}else if(240>s){i=t[o++];var a=t[o++];r.push((15&s)<<12|(63&i)<<6|63&a)}else 248>s&&(s=(7&s)<<18|(63&(i=t[o++]))<<12|(63&(a=t[o++]))<<6|63&t[o++],s-=65536,r.push(55296+(s>>10&1023),56320+(1023&s)))}8192<=r.length&&(n+=String.fromCharCode.apply(null,r),r.length=0)}return n+=goog.crypt.byteArrayToString(r),this.cursor_=o,n},jspb.BinaryDecoder.prototype.readStringWithLength=function(){var e=this.readUnsignedVarint32();return this.readString(e)},jspb.BinaryDecoder.prototype.readBytes=function(e){if(0>e||this.cursor_+e>this.bytes_.length)return this.error_=!0,goog.asserts.fail("Invalid byte length!"),new Uint8Array(0);var t=this.bytes_.subarray(this.cursor_,this.cursor_+e);return this.cursor_+=e,goog.asserts.assert(this.cursor_<=this.end_),t},jspb.BinaryDecoder.prototype.readVarintHash64=function(){return this.readSplitVarint64(jspb.utils.joinHash64)},jspb.BinaryDecoder.prototype.readFixedHash64=function(){var e=this.bytes_,t=this.cursor_,o=e[t+0],r=e[t+1],n=e[t+2],s=e[t+3],i=e[t+4],a=e[t+5],g=e[t+6];return e=e[t+7],this.cursor_+=8,String.fromCharCode(o,r,n,s,i,a,g,e)},jspb.BinaryReader=function(e,t,o){this.decoder_=jspb.BinaryDecoder.alloc(e,t,o),this.fieldCursor_=this.decoder_.getCursor(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID,this.error_=!1,this.readCallbacks_=null},jspb.BinaryReader.instanceCache_=[],jspb.BinaryReader.alloc=function(e,t,o){if(jspb.BinaryReader.instanceCache_.length){var r=jspb.BinaryReader.instanceCache_.pop();return e&&r.decoder_.setBlock(e,t,o),r}return new jspb.BinaryReader(e,t,o)},jspb.BinaryReader.prototype.alloc=jspb.BinaryReader.alloc,jspb.BinaryReader.prototype.free=function(){this.decoder_.clear(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID,this.error_=!1,this.readCallbacks_=null,100>jspb.BinaryReader.instanceCache_.length&&jspb.BinaryReader.instanceCache_.push(this)},jspb.BinaryReader.prototype.getFieldCursor=function(){return this.fieldCursor_},jspb.BinaryReader.prototype.getCursor=function(){return this.decoder_.getCursor()},jspb.BinaryReader.prototype.getBuffer=function(){return this.decoder_.getBuffer()},jspb.BinaryReader.prototype.getFieldNumber=function(){return this.nextField_},jspb.BinaryReader.prototype.getWireType=function(){return this.nextWireType_},jspb.BinaryReader.prototype.isDelimited=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED},jspb.BinaryReader.prototype.isEndGroup=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP},jspb.BinaryReader.prototype.getError=function(){return this.error_||this.decoder_.getError()},jspb.BinaryReader.prototype.setBlock=function(e,t,o){this.decoder_.setBlock(e,t,o),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID},jspb.BinaryReader.prototype.reset=function(){this.decoder_.reset(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID},jspb.BinaryReader.prototype.advance=function(e){this.decoder_.advance(e)},jspb.BinaryReader.prototype.nextField=function(){if(this.decoder_.atEnd())return!1;if(this.getError())return goog.asserts.fail("Decoder hit an error"),!1;this.fieldCursor_=this.decoder_.getCursor();var e=this.decoder_.readUnsignedVarint32(),t=e>>>3;return(e&=7)!=jspb.BinaryConstants.WireType.VARINT&&e!=jspb.BinaryConstants.WireType.FIXED32&&e!=jspb.BinaryConstants.WireType.FIXED64&&e!=jspb.BinaryConstants.WireType.DELIMITED&&e!=jspb.BinaryConstants.WireType.START_GROUP&&e!=jspb.BinaryConstants.WireType.END_GROUP?(goog.asserts.fail("Invalid wire type: %s (at position %s)",e,this.fieldCursor_),this.error_=!0,!1):(this.nextField_=t,this.nextWireType_=e,!0)},jspb.BinaryReader.prototype.unskipHeader=function(){this.decoder_.unskipVarint(this.nextField_<<3|this.nextWireType_)},jspb.BinaryReader.prototype.skipMatchingFields=function(){var e=this.nextField_;for(this.unskipHeader();this.nextField()&&this.getFieldNumber()==e;)this.skipField();this.decoder_.atEnd()||this.unskipHeader()},jspb.BinaryReader.prototype.skipVarintField=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.VARINT?(goog.asserts.fail("Invalid wire type for skipVarintField"),this.skipField()):this.decoder_.skipVarint()},jspb.BinaryReader.prototype.skipDelimitedField=function(){if(this.nextWireType_!=jspb.BinaryConstants.WireType.DELIMITED)goog.asserts.fail("Invalid wire type for skipDelimitedField"),this.skipField();else{var e=this.decoder_.readUnsignedVarint32();this.decoder_.advance(e)}},jspb.BinaryReader.prototype.skipFixed32Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED32?(goog.asserts.fail("Invalid wire type for skipFixed32Field"),this.skipField()):this.decoder_.advance(4)},jspb.BinaryReader.prototype.skipFixed64Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED64?(goog.asserts.fail("Invalid wire type for skipFixed64Field"),this.skipField()):this.decoder_.advance(8)},jspb.BinaryReader.prototype.skipGroup=function(){for(var e=this.nextField_;;){if(!this.nextField()){goog.asserts.fail("Unmatched start-group tag: stream EOF"),this.error_=!0;break}if(this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP){this.nextField_!=e&&(goog.asserts.fail("Unmatched end-group tag"),this.error_=!0);break}this.skipField()}},jspb.BinaryReader.prototype.skipField=function(){switch(this.nextWireType_){case jspb.BinaryConstants.WireType.VARINT:this.skipVarintField();break;case jspb.BinaryConstants.WireType.FIXED64:this.skipFixed64Field();break;case jspb.BinaryConstants.WireType.DELIMITED:this.skipDelimitedField();break;case jspb.BinaryConstants.WireType.FIXED32:this.skipFixed32Field();break;case jspb.BinaryConstants.WireType.START_GROUP:this.skipGroup();break;default:goog.asserts.fail("Invalid wire encoding for field.")}},jspb.BinaryReader.prototype.registerReadCallback=function(e,t){null===this.readCallbacks_&&(this.readCallbacks_={}),goog.asserts.assert(!this.readCallbacks_[e]),this.readCallbacks_[e]=t},jspb.BinaryReader.prototype.runReadCallback=function(e){return goog.asserts.assert(null!==this.readCallbacks_),e=this.readCallbacks_[e],goog.asserts.assert(e),e(this)},jspb.BinaryReader.prototype.readAny=function(e){this.nextWireType_=jspb.BinaryConstants.FieldTypeToWireType(e);var t=jspb.BinaryConstants.FieldType;switch(e){case t.DOUBLE:return this.readDouble();case t.FLOAT:return this.readFloat();case t.INT64:return this.readInt64();case t.UINT64:return this.readUint64();case t.INT32:return this.readInt32();case t.FIXED64:return this.readFixed64();case t.FIXED32:return this.readFixed32();case t.BOOL:return this.readBool();case t.STRING:return this.readString();case t.GROUP:goog.asserts.fail("Group field type not supported in readAny()");case t.MESSAGE:goog.asserts.fail("Message field type not supported in readAny()");case t.BYTES:return this.readBytes();case t.UINT32:return this.readUint32();case t.ENUM:return this.readEnum();case t.SFIXED32:return this.readSfixed32();case t.SFIXED64:return this.readSfixed64();case t.SINT32:return this.readSint32();case t.SINT64:return this.readSint64();case t.FHASH64:return this.readFixedHash64();case t.VHASH64:return this.readVarintHash64();default:goog.asserts.fail("Invalid field type in readAny()")}return 0},jspb.BinaryReader.prototype.readMessage=function(e,t){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var o=this.decoder_.getEnd(),r=this.decoder_.readUnsignedVarint32();r=this.decoder_.getCursor()+r,this.decoder_.setEnd(r),t(e,this),this.decoder_.setCursor(r),this.decoder_.setEnd(o)},jspb.BinaryReader.prototype.readGroup=function(e,t,o){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.START_GROUP),goog.asserts.assert(this.nextField_==e),o(t,this),this.error_||this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP||(goog.asserts.fail("Group submessage did not end with an END_GROUP tag"),this.error_=!0)},jspb.BinaryReader.prototype.getFieldDecoder=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32(),t=this.decoder_.getCursor(),o=t+e;return e=jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(),t,e),this.decoder_.setCursor(o),e},jspb.BinaryReader.prototype.readInt32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint32()},jspb.BinaryReader.prototype.readInt32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint32String()},jspb.BinaryReader.prototype.readInt64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64()},jspb.BinaryReader.prototype.readInt64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64String()},jspb.BinaryReader.prototype.readUint32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint32()},jspb.BinaryReader.prototype.readUint32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint32String()},jspb.BinaryReader.prototype.readUint64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint64()},jspb.BinaryReader.prototype.readUint64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint64String()},jspb.BinaryReader.prototype.readSint32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint32()},jspb.BinaryReader.prototype.readSint64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint64()},jspb.BinaryReader.prototype.readSint64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint64String()},jspb.BinaryReader.prototype.readFixed32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readUint32()},jspb.BinaryReader.prototype.readFixed64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readUint64()},jspb.BinaryReader.prototype.readFixed64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readUint64String()},jspb.BinaryReader.prototype.readSfixed32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readInt32()},jspb.BinaryReader.prototype.readSfixed32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readInt32().toString()},jspb.BinaryReader.prototype.readSfixed64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readInt64()},jspb.BinaryReader.prototype.readSfixed64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readInt64String()},jspb.BinaryReader.prototype.readFloat=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readFloat()},jspb.BinaryReader.prototype.readDouble=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readDouble()},jspb.BinaryReader.prototype.readBool=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),!!this.decoder_.readUnsignedVarint32()},jspb.BinaryReader.prototype.readEnum=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64()},jspb.BinaryReader.prototype.readString=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32();return this.decoder_.readString(e)},jspb.BinaryReader.prototype.readBytes=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32();return this.decoder_.readBytes(e)},jspb.BinaryReader.prototype.readVarintHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readVarintHash64()},jspb.BinaryReader.prototype.readSintHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarintHash64()},jspb.BinaryReader.prototype.readSplitVarint64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSplitVarint64(e)},jspb.BinaryReader.prototype.readSplitZigzagVarint64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSplitVarint64((function(t,o){return jspb.utils.fromZigzag64(t,o,e)}))},jspb.BinaryReader.prototype.readFixedHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readFixedHash64()},jspb.BinaryReader.prototype.readSplitFixed64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readSplitFixed64(e)},jspb.BinaryReader.prototype.readPackedField_=function(e){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var t=this.decoder_.readUnsignedVarint32();t=this.decoder_.getCursor()+t;for(var o=[];this.decoder_.getCursor()<t;)o.push(e.call(this.decoder_));return o},jspb.BinaryReader.prototype.readPackedInt32=function(){return this.readPackedField_(this.decoder_.readSignedVarint32)},jspb.BinaryReader.prototype.readPackedInt32String=function(){return this.readPackedField_(this.decoder_.readSignedVarint32String)},jspb.BinaryReader.prototype.readPackedInt64=function(){return this.readPackedField_(this.decoder_.readSignedVarint64)},jspb.BinaryReader.prototype.readPackedInt64String=function(){return this.readPackedField_(this.decoder_.readSignedVarint64String)},jspb.BinaryReader.prototype.readPackedUint32=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32)},jspb.BinaryReader.prototype.readPackedUint32String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32String)},jspb.BinaryReader.prototype.readPackedUint64=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64)},jspb.BinaryReader.prototype.readPackedUint64String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64String)},jspb.BinaryReader.prototype.readPackedSint32=function(){return this.readPackedField_(this.decoder_.readZigzagVarint32)},jspb.BinaryReader.prototype.readPackedSint64=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64)},jspb.BinaryReader.prototype.readPackedSint64String=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64String)},jspb.BinaryReader.prototype.readPackedFixed32=function(){return this.readPackedField_(this.decoder_.readUint32)},jspb.BinaryReader.prototype.readPackedFixed64=function(){return this.readPackedField_(this.decoder_.readUint64)},jspb.BinaryReader.prototype.readPackedFixed64String=function(){return this.readPackedField_(this.decoder_.readUint64String)},jspb.BinaryReader.prototype.readPackedSfixed32=function(){return this.readPackedField_(this.decoder_.readInt32)},jspb.BinaryReader.prototype.readPackedSfixed64=function(){return this.readPackedField_(this.decoder_.readInt64)},jspb.BinaryReader.prototype.readPackedSfixed64String=function(){return this.readPackedField_(this.decoder_.readInt64String)},jspb.BinaryReader.prototype.readPackedFloat=function(){return this.readPackedField_(this.decoder_.readFloat)},jspb.BinaryReader.prototype.readPackedDouble=function(){return this.readPackedField_(this.decoder_.readDouble)},jspb.BinaryReader.prototype.readPackedBool=function(){return this.readPackedField_(this.decoder_.readBool)},jspb.BinaryReader.prototype.readPackedEnum=function(){return this.readPackedField_(this.decoder_.readEnum)},jspb.BinaryReader.prototype.readPackedVarintHash64=function(){return this.readPackedField_(this.decoder_.readVarintHash64)},jspb.BinaryReader.prototype.readPackedFixedHash64=function(){return this.readPackedField_(this.decoder_.readFixedHash64)},jspb.BinaryEncoder=function(){this.buffer_=[]},jspb.BinaryEncoder.prototype.length=function(){return this.buffer_.length},jspb.BinaryEncoder.prototype.end=function(){var e=this.buffer_;return this.buffer_=[],e},jspb.BinaryEncoder.prototype.writeSplitVarint64=function(e,t){for(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(t==Math.floor(t)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32);0<t||127<e;)this.buffer_.push(127&e|128),e=(e>>>7|t<<25)>>>0,t>>>=7;this.buffer_.push(e)},jspb.BinaryEncoder.prototype.writeSplitFixed64=function(e,t){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(t==Math.floor(t)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUint32(e),this.writeUint32(t)},jspb.BinaryEncoder.prototype.writeUnsignedVarint32=function(e){for(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32);127<e;)this.buffer_.push(127&e|128),e>>>=7;this.buffer_.push(e)},jspb.BinaryEncoder.prototype.writeSignedVarint32=function(e){if(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),0<=e)this.writeUnsignedVarint32(e);else{for(var t=0;9>t;t++)this.buffer_.push(127&e|128),e>>=7;this.buffer_.push(1)}},jspb.BinaryEncoder.prototype.writeUnsignedVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_64),jspb.utils.splitInt64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeSignedVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitInt64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeZigzagVarint32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.writeUnsignedVarint32((e<<1^e>>31)>>>0)},jspb.BinaryEncoder.prototype.writeZigzagVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitZigzag64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeZigzagVarint64String=function(e){this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(e))},jspb.BinaryEncoder.prototype.writeZigzagVarintHash64=function(e){var t=this;jspb.utils.splitHash64(e),jspb.utils.toZigzag64(jspb.utils.split64Low,jspb.utils.split64High,(function(e,o){t.writeSplitVarint64(e>>>0,o>>>0)}))},jspb.BinaryEncoder.prototype.writeUint8=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&256>e),this.buffer_.push(e>>>0&255)},jspb.BinaryEncoder.prototype.writeUint16=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&65536>e),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255)},jspb.BinaryEncoder.prototype.writeUint32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255),this.buffer_.push(e>>>16&255),this.buffer_.push(e>>>24&255)},jspb.BinaryEncoder.prototype.writeUint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_64),jspb.utils.splitUint64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeInt8=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(-128<=e&&128>e),this.buffer_.push(e>>>0&255)},jspb.BinaryEncoder.prototype.writeInt16=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(-32768<=e&&32768>e),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255)},jspb.BinaryEncoder.prototype.writeInt32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255),this.buffer_.push(e>>>16&255),this.buffer_.push(e>>>24&255)},jspb.BinaryEncoder.prototype.writeInt64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitInt64(e),this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeInt64String=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(+e>=-jspb.BinaryConstants.TWO_TO_63&&+e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(e)),this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeFloat=function(e){goog.asserts.assert(1/0===e||-1/0===e||isNaN(e)||e>=-jspb.BinaryConstants.FLOAT32_MAX&&e<=jspb.BinaryConstants.FLOAT32_MAX),jspb.utils.splitFloat32(e),this.writeUint32(jspb.utils.split64Low)},jspb.BinaryEncoder.prototype.writeDouble=function(e){goog.asserts.assert(1/0===e||-1/0===e||isNaN(e)||e>=-jspb.BinaryConstants.FLOAT64_MAX&&e<=jspb.BinaryConstants.FLOAT64_MAX),jspb.utils.splitFloat64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeBool=function(e){goog.asserts.assert("boolean"==typeof e||"number"==typeof e),this.buffer_.push(e?1:0)},jspb.BinaryEncoder.prototype.writeEnum=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32(e)},jspb.BinaryEncoder.prototype.writeBytes=function(e){this.buffer_.push.apply(this.buffer_,e)},jspb.BinaryEncoder.prototype.writeVarintHash64=function(e){jspb.utils.splitHash64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeFixedHash64=function(e){jspb.utils.splitHash64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeString=function(e){for(var t=this.buffer_.length,o=0;o<e.length;o++){var r=e.charCodeAt(o);if(128>r)this.buffer_.push(r);else if(2048>r)this.buffer_.push(r>>6|192),this.buffer_.push(63&r|128);else if(65536>r)if(55296<=r&&56319>=r&&o+1<e.length){var n=e.charCodeAt(o+1);56320<=n&&57343>=n&&(r=1024*(r-55296)+n-56320+65536,this.buffer_.push(r>>18|240),this.buffer_.push(r>>12&63|128),this.buffer_.push(r>>6&63|128),this.buffer_.push(63&r|128),o++)}else this.buffer_.push(r>>12|224),this.buffer_.push(r>>6&63|128),this.buffer_.push(63&r|128)}return this.buffer_.length-t},jspb.arith={},jspb.arith.UInt64=function(e,t){this.lo=e,this.hi=t},jspb.arith.UInt64.prototype.cmp=function(e){return this.hi<e.hi||this.hi==e.hi&&this.lo<e.lo?-1:this.hi==e.hi&&this.lo==e.lo?0:1},jspb.arith.UInt64.prototype.rightShift=function(){return new jspb.arith.UInt64((this.lo>>>1|(1&this.hi)<<31)>>>0,this.hi>>>1>>>0)},jspb.arith.UInt64.prototype.leftShift=function(){return new jspb.arith.UInt64(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)},jspb.arith.UInt64.prototype.msb=function(){return!!(2147483648&this.hi)},jspb.arith.UInt64.prototype.lsb=function(){return!!(1&this.lo)},jspb.arith.UInt64.prototype.zero=function(){return 0==this.lo&&0==this.hi},jspb.arith.UInt64.prototype.add=function(e){return new jspb.arith.UInt64((this.lo+e.lo&4294967295)>>>0>>>0,((this.hi+e.hi&4294967295)>>>0)+(4294967296<=this.lo+e.lo?1:0)>>>0)},jspb.arith.UInt64.prototype.sub=function(e){return new jspb.arith.UInt64((this.lo-e.lo&4294967295)>>>0>>>0,((this.hi-e.hi&4294967295)>>>0)-(0>this.lo-e.lo?1:0)>>>0)},jspb.arith.UInt64.mul32x32=function(e,t){var o=65535&e,r=65535&t,n=t>>>16;for(t=o*r+65536*(o*n&65535)+65536*((e>>>=16)*r&65535),o=e*n+(o*n>>>16)+(e*r>>>16);4294967296<=t;)t-=4294967296,o+=1;return new jspb.arith.UInt64(t>>>0,o>>>0)},jspb.arith.UInt64.prototype.mul=function(e){var t=jspb.arith.UInt64.mul32x32(this.lo,e);return(e=jspb.arith.UInt64.mul32x32(this.hi,e)).hi=e.lo,e.lo=0,t.add(e)},jspb.arith.UInt64.prototype.div=function(e){if(0==e)return[];var t=new jspb.arith.UInt64(0,0),o=new jspb.arith.UInt64(this.lo,this.hi);e=new jspb.arith.UInt64(e,0);for(var r=new jspb.arith.UInt64(1,0);!e.msb();)e=e.leftShift(),r=r.leftShift();for(;!r.zero();)0>=e.cmp(o)&&(t=t.add(r),o=o.sub(e)),e=e.rightShift(),r=r.rightShift();return[t,o]},jspb.arith.UInt64.prototype.toString=function(){for(var e="",t=this;!t.zero();){var o=(t=t.div(10))[0];e=t[1].lo+e,t=o}return""==e&&(e="0"),e},jspb.arith.UInt64.fromString=function(e){for(var t=new jspb.arith.UInt64(0,0),o=new jspb.arith.UInt64(0,0),r=0;r<e.length;r++){if("0">e[r]||"9"<e[r])return null;var n=parseInt(e[r],10);o.lo=n,t=t.mul(10).add(o)}return t},jspb.arith.UInt64.prototype.clone=function(){return new jspb.arith.UInt64(this.lo,this.hi)},jspb.arith.Int64=function(e,t){this.lo=e,this.hi=t},jspb.arith.Int64.prototype.add=function(e){return new jspb.arith.Int64((this.lo+e.lo&4294967295)>>>0>>>0,((this.hi+e.hi&4294967295)>>>0)+(4294967296<=this.lo+e.lo?1:0)>>>0)},jspb.arith.Int64.prototype.sub=function(e){return new jspb.arith.Int64((this.lo-e.lo&4294967295)>>>0>>>0,((this.hi-e.hi&4294967295)>>>0)-(0>this.lo-e.lo?1:0)>>>0)},jspb.arith.Int64.prototype.clone=function(){return new jspb.arith.Int64(this.lo,this.hi)},jspb.arith.Int64.prototype.toString=function(){var e=0!=(2147483648&this.hi),t=new jspb.arith.UInt64(this.lo,this.hi);return e&&(t=new jspb.arith.UInt64(0,0).sub(t)),(e?"-":"")+t.toString()},jspb.arith.Int64.fromString=function(e){var t=0<e.length&&"-"==e[0];return t&&(e=e.substring(1)),null===(e=jspb.arith.UInt64.fromString(e))?null:(t&&(e=new jspb.arith.UInt64(0,0).sub(e)),new jspb.arith.Int64(e.lo,e.hi))},jspb.BinaryWriter=function(){this.blocks_=[],this.totalLength_=0,this.encoder_=new jspb.BinaryEncoder,this.bookmarks_=[]},jspb.BinaryWriter.prototype.appendUint8Array_=function(e){var t=this.encoder_.end();this.blocks_.push(t),this.blocks_.push(e),this.totalLength_+=t.length+e.length},jspb.BinaryWriter.prototype.beginDelimited_=function(e){return this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),e=this.encoder_.end(),this.blocks_.push(e),this.totalLength_+=e.length,e.push(this.totalLength_),e},jspb.BinaryWriter.prototype.endDelimited_=function(e){var t=e.pop();for(t=this.totalLength_+this.encoder_.length()-t,goog.asserts.assert(0<=t);127<t;)e.push(127&t|128),t>>>=7,this.totalLength_++;e.push(t),this.totalLength_++},jspb.BinaryWriter.prototype.writeSerializedMessage=function(e,t,o){this.appendUint8Array_(e.subarray(t,o))},jspb.BinaryWriter.prototype.maybeWriteSerializedMessage=function(e,t,o){null!=e&&null!=t&&null!=o&&this.writeSerializedMessage(e,t,o)},jspb.BinaryWriter.prototype.reset=function(){this.blocks_=[],this.encoder_.end(),this.totalLength_=0,this.bookmarks_=[]},jspb.BinaryWriter.prototype.getResultBuffer=function(){goog.asserts.assert(0==this.bookmarks_.length);for(var e=new Uint8Array(this.totalLength_+this.encoder_.length()),t=this.blocks_,o=t.length,r=0,n=0;n<o;n++){var s=t[n];e.set(s,r),r+=s.length}return t=this.encoder_.end(),e.set(t,r),r+=t.length,goog.asserts.assert(r==e.length),this.blocks_=[e],e},jspb.BinaryWriter.prototype.getResultBase64String=function(e){return goog.crypt.base64.encodeByteArray(this.getResultBuffer(),e)},jspb.BinaryWriter.prototype.beginSubMessage=function(e){this.bookmarks_.push(this.beginDelimited_(e))},jspb.BinaryWriter.prototype.endSubMessage=function(){goog.asserts.assert(0<=this.bookmarks_.length),this.endDelimited_(this.bookmarks_.pop())},jspb.BinaryWriter.prototype.writeFieldHeader_=function(e,t){goog.asserts.assert(1<=e&&e==Math.floor(e)),this.encoder_.writeUnsignedVarint32(8*e+t)},jspb.BinaryWriter.prototype.writeAny=function(e,t,o){var r=jspb.BinaryConstants.FieldType;switch(e){case r.DOUBLE:this.writeDouble(t,o);break;case r.FLOAT:this.writeFloat(t,o);break;case r.INT64:this.writeInt64(t,o);break;case r.UINT64:this.writeUint64(t,o);break;case r.INT32:this.writeInt32(t,o);break;case r.FIXED64:this.writeFixed64(t,o);break;case r.FIXED32:this.writeFixed32(t,o);break;case r.BOOL:this.writeBool(t,o);break;case r.STRING:this.writeString(t,o);break;case r.GROUP:goog.asserts.fail("Group field type not supported in writeAny()");break;case r.MESSAGE:goog.asserts.fail("Message field type not supported in writeAny()");break;case r.BYTES:this.writeBytes(t,o);break;case r.UINT32:this.writeUint32(t,o);break;case r.ENUM:this.writeEnum(t,o);break;case r.SFIXED32:this.writeSfixed32(t,o);break;case r.SFIXED64:this.writeSfixed64(t,o);break;case r.SINT32:this.writeSint32(t,o);break;case r.SINT64:this.writeSint64(t,o);break;case r.FHASH64:this.writeFixedHash64(t,o);break;case r.VHASH64:this.writeVarintHash64(t,o);break;default:goog.asserts.fail("Invalid field type in writeAny()")}},jspb.BinaryWriter.prototype.writeUnsignedVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint32(t))},jspb.BinaryWriter.prototype.writeSignedVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(t))},jspb.BinaryWriter.prototype.writeUnsignedVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint64(t))},jspb.BinaryWriter.prototype.writeSignedVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint64(t))},jspb.BinaryWriter.prototype.writeZigzagVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint32(t))},jspb.BinaryWriter.prototype.writeZigzagVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64(t))},jspb.BinaryWriter.prototype.writeZigzagVarint64String_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64String(t))},jspb.BinaryWriter.prototype.writeZigzagVarintHash64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarintHash64(t))},jspb.BinaryWriter.prototype.writeInt32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeInt32String=function(e,t){null!=t&&(t=parseInt(t,10),goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeInt64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeSignedVarint64_(e,t))},jspb.BinaryWriter.prototype.writeInt64String=function(e,t){null!=t&&(t=jspb.arith.Int64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeUint32=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeUint32String=function(e,t){null!=t&&(t=parseInt(t,10),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeUint64=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_64),this.writeUnsignedVarint64_(e,t))},jspb.BinaryWriter.prototype.writeUint64String=function(e,t){null!=t&&(t=jspb.arith.UInt64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeSint32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeZigzagVarint32_(e,t))},jspb.BinaryWriter.prototype.writeSint64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeZigzagVarint64_(e,t))},jspb.BinaryWriter.prototype.writeSintHash64=function(e,t){null!=t&&this.writeZigzagVarintHash64_(e,t)},jspb.BinaryWriter.prototype.writeSint64String=function(e,t){null!=t&&this.writeZigzagVarint64String_(e,t)},jspb.BinaryWriter.prototype.writeFixed32=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeUint32(t))},jspb.BinaryWriter.prototype.writeFixed64=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_64),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeUint64(t))},jspb.BinaryWriter.prototype.writeFixed64String=function(e,t){null!=t&&(t=jspb.arith.UInt64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeSfixed32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeInt32(t))},jspb.BinaryWriter.prototype.writeSfixed64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeInt64(t))},jspb.BinaryWriter.prototype.writeSfixed64String=function(e,t){null!=t&&(t=jspb.arith.Int64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeFloat=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeFloat(t))},jspb.BinaryWriter.prototype.writeDouble=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeDouble(t))},jspb.BinaryWriter.prototype.writeBool=function(e,t){null!=t&&(goog.asserts.assert("boolean"==typeof t||"number"==typeof t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeBool(t))},jspb.BinaryWriter.prototype.writeEnum=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(t))},jspb.BinaryWriter.prototype.writeString=function(e,t){null!=t&&(e=this.beginDelimited_(e),this.encoder_.writeString(t),this.endDelimited_(e))},jspb.BinaryWriter.prototype.writeBytes=function(e,t){null!=t&&(t=jspb.utils.byteSourceToUint8Array(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(t.length),this.appendUint8Array_(t))},jspb.BinaryWriter.prototype.writeMessage=function(e,t,o){null!=t&&(e=this.beginDelimited_(e),o(t,this),this.endDelimited_(e))},jspb.BinaryWriter.prototype.writeMessageSet=function(e,t,o){null!=t&&(this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.START_GROUP),this.writeFieldHeader_(2,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(e),e=this.beginDelimited_(3),o(t,this),this.endDelimited_(e),this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.END_GROUP))},jspb.BinaryWriter.prototype.writeGroup=function(e,t,o){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.START_GROUP),o(t,this),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.END_GROUP))},jspb.BinaryWriter.prototype.writeFixedHash64=function(e,t){null!=t&&(goog.asserts.assert(8==t.length),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeFixedHash64(t))},jspb.BinaryWriter.prototype.writeVarintHash64=function(e,t){null!=t&&(goog.asserts.assert(8==t.length),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeVarintHash64(t))},jspb.BinaryWriter.prototype.writeSplitFixed64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t,o)},jspb.BinaryWriter.prototype.writeSplitVarint64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t,o)},jspb.BinaryWriter.prototype.writeSplitZigzagVarint64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT);var r=this.encoder_;jspb.utils.toZigzag64(t,o,(function(e,t){r.writeSplitVarint64(e>>>0,t>>>0)}))},jspb.BinaryWriter.prototype.writeRepeatedInt32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSignedVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedInt32String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeInt32String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedInt64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSignedVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSplitFixed64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitFixed64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitVarint64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitZigzagVarint64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedInt64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeInt64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUnsignedVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint32String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUint32String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUnsignedVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUint64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint64String_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSintHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarintHash64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed32(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed32(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFloat=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFloat(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedDouble=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeDouble(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedBool=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeBool(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedEnum=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeEnum(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedString=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeString(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedBytes=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeBytes(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedMessage=function(e,t,o){if(null!=t)for(var r=0;r<t.length;r++){var n=this.beginDelimited_(e);o(t[r],this),this.endDelimited_(n)}},jspb.BinaryWriter.prototype.writeRepeatedGroup=function(e,t,o){if(null!=t)for(var r=0;r<t.length;r++)this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.START_GROUP),o(t[r],this),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.END_GROUP)},jspb.BinaryWriter.prototype.writeRepeatedFixedHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixedHash64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedVarintHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeVarintHash64(e,t[o])},jspb.BinaryWriter.prototype.writePackedInt32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt32String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint32(parseInt(t[o],10));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitFixed64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=0;n<t.length;n++)this.encoder_.writeSplitFixed64(o(t[n]),r(t[n]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitVarint64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=0;n<t.length;n++)this.encoder_.writeSplitVarint64(o(t[n]),r(t[n]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=this.encoder_,s=0;s<t.length;s++)jspb.utils.toZigzag64(o(t[s]),r(t[s]),(function(e,t){n.writeSplitVarint64(e>>>0,t>>>0)}));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++){var r=jspb.arith.Int64.fromString(t[o]);this.encoder_.writeSplitVarint64(r.lo,r.hi)}this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint32String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint32(parseInt(t[o],10));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++){var r=jspb.arith.UInt64.fromString(t[o]);this.encoder_.writeSplitVarint64(r.lo,r.hi)}this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(t[o]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSintHash64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarintHash64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedFixed32=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeUint32(t[e])},jspb.BinaryWriter.prototype.writePackedFixed64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeUint64(t[e])},jspb.BinaryWriter.prototype.writePackedFixed64String=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++){var o=jspb.arith.UInt64.fromString(t[e]);this.encoder_.writeSplitFixed64(o.lo,o.hi)}},jspb.BinaryWriter.prototype.writePackedSfixed32=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeInt32(t[e])},jspb.BinaryWriter.prototype.writePackedSfixed64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeInt64(t[e])},jspb.BinaryWriter.prototype.writePackedSfixed64String=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeInt64String(t[e])},jspb.BinaryWriter.prototype.writePackedFloat=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeFloat(t[e])},jspb.BinaryWriter.prototype.writePackedDouble=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeDouble(t[e])},jspb.BinaryWriter.prototype.writePackedBool=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(t.length),e=0;e<t.length;e++)this.encoder_.writeBool(t[e])},jspb.BinaryWriter.prototype.writePackedEnum=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeEnum(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedFixedHash64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeFixedHash64(t[e])},jspb.BinaryWriter.prototype.writePackedVarintHash64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeVarintHash64(t[o]);this.endDelimited_(e)}},jspb.Map=function(e,t){this.arr_=e,this.valueCtor_=t,this.map_={},this.arrClean=!0,0<this.arr_.length&&this.loadFromArray_()},jspb.Map.prototype.loadFromArray_=function(){for(var e=0;e<this.arr_.length;e++){var t=this.arr_[e],o=t[0];this.map_[o.toString()]=new jspb.Map.Entry_(o,t[1])}this.arrClean=!0},jspb.Map.prototype.toArray=function(){if(this.arrClean){if(this.valueCtor_){var e,t=this.map_;for(e in t)if(Object.prototype.hasOwnProperty.call(t,e)){var o=t[e].valueWrapper;o&&o.toArray()}}}else{for(this.arr_.length=0,(t=this.stringKeys_()).sort(),e=0;e<t.length;e++){var r=this.map_[t[e]];(o=r.valueWrapper)&&o.toArray(),this.arr_.push([r.key,r.value])}this.arrClean=!0}return this.arr_},jspb.Map.prototype.toObject=function(e,t){for(var o=this.toArray(),r=[],n=0;n<o.length;n++){var s=this.map_[o[n][0].toString()];this.wrapEntry_(s);var i=s.valueWrapper;i?(goog.asserts.assert(t),r.push([s.key,t(e,i)])):r.push([s.key,s.value])}return r},jspb.Map.fromObject=function(e,t,o){t=new jspb.Map([],t);for(var r=0;r<e.length;r++){var n=e[r][0],s=o(e[r][1]);t.set(n,s)}return t},jspb.Map.ArrayIteratorIterable_=function(e){this.idx_=0,this.arr_=e},jspb.Map.ArrayIteratorIterable_.prototype.next=function(){return this.idx_<this.arr_.length?{done:!1,value:this.arr_[this.idx_++]}:{done:!0,value:void 0}},"undefined"!=typeof Symbol&&(jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator]=function(){return this}),jspb.Map.prototype.getLength=function(){return this.stringKeys_().length},jspb.Map.prototype.clear=function(){this.map_={},this.arrClean=!1},jspb.Map.prototype.del=function(e){e=e.toString();var t=this.map_.hasOwnProperty(e);return delete this.map_[e],this.arrClean=!1,t},jspb.Map.prototype.getEntryList=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++){var r=this.map_[t[o]];e.push([r.key,r.value])}return e},jspb.Map.prototype.entries=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++){var r=this.map_[t[o]];e.push([r.key,this.wrapEntry_(r)])}return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.keys=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++)e.push(this.map_[t[o]].key);return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.values=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++)e.push(this.wrapEntry_(this.map_[t[o]]));return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.forEach=function(e,t){var o=this.stringKeys_();o.sort();for(var r=0;r<o.length;r++){var n=this.map_[o[r]];e.call(t,this.wrapEntry_(n),n.key,this)}},jspb.Map.prototype.set=function(e,t){var o=new jspb.Map.Entry_(e);return this.valueCtor_?(o.valueWrapper=t,o.value=t.toArray()):o.value=t,this.map_[e.toString()]=o,this.arrClean=!1,this},jspb.Map.prototype.wrapEntry_=function(e){return this.valueCtor_?(e.valueWrapper||(e.valueWrapper=new this.valueCtor_(e.value)),e.valueWrapper):e.value},jspb.Map.prototype.get=function(e){if(e=this.map_[e.toString()])return this.wrapEntry_(e)},jspb.Map.prototype.has=function(e){return e.toString()in this.map_},jspb.Map.prototype.serializeBinary=function(e,t,o,r,n){var s=this.stringKeys_();s.sort();for(var i=0;i<s.length;i++){var a=this.map_[s[i]];t.beginSubMessage(e),o.call(t,1,a.key),this.valueCtor_?r.call(t,2,this.wrapEntry_(a),n):r.call(t,2,a.value),t.endSubMessage()}},jspb.Map.deserializeBinary=function(e,t,o,r,n,s,i){for(;t.nextField()&&!t.isEndGroup();){var a=t.getFieldNumber();1==a?s=o.call(t):2==a&&(e.valueCtor_?(goog.asserts.assert(n),i||(i=new e.valueCtor_),r.call(t,i,n)):i=r.call(t))}goog.asserts.assert(null!=s),goog.asserts.assert(null!=i),e.set(s,i)},jspb.Map.prototype.stringKeys_=function(){var e,t=this.map_,o=[];for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&o.push(e);return o},jspb.Map.Entry_=function(e,t){this.key=e,this.value=t,this.valueWrapper=void 0},jspb.ExtensionFieldInfo=function(e,t,o,r,n){this.fieldIndex=e,this.fieldName=t,this.ctor=o,this.toObjectFn=r,this.isRepeated=n},jspb.ExtensionFieldBinaryInfo=function(e,t,o,r,n,s){this.fieldInfo=e,this.binaryReaderFn=t,this.binaryWriterFn=o,this.binaryMessageSerializeFn=r,this.binaryMessageDeserializeFn=n,this.isPacked=s},jspb.ExtensionFieldInfo.prototype.isMessageType=function(){return!!this.ctor},jspb.Message=function(){},jspb.Message.GENERATE_TO_OBJECT=!0,jspb.Message.GENERATE_FROM_OBJECT=!goog.DISALLOW_TEST_ONLY_CODE,jspb.Message.GENERATE_TO_STRING=!0,jspb.Message.ASSUME_LOCAL_ARRAYS=!1,jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS=!0,jspb.Message.SUPPORTS_UINT8ARRAY_="function"==typeof Uint8Array,jspb.Message.prototype.getJsPbMessageId=function(){return this.messageId_},jspb.Message.getIndex_=function(e,t){return t+e.arrayIndexOffset_},jspb.Message.hiddenES6Property_=function(){},jspb.Message.getFieldNumber_=function(e,t){return t-e.arrayIndexOffset_},jspb.Message.initialize=function(e,t,o,r,n,s){if(e.wrappers_=null,t||(t=o?[o]:[]),e.messageId_=o?String(o):void 0,e.arrayIndexOffset_=0===o?-1:0,e.array=t,jspb.Message.initPivotAndExtensionObject_(e,r),e.convertedPrimitiveFields_={},jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS||(e.repeatedFields=n),n)for(t=0;t<n.length;t++)(o=n[t])<e.pivot_?(o=jspb.Message.getIndex_(e,o),e.array[o]=e.array[o]||jspb.Message.EMPTY_LIST_SENTINEL_):(jspb.Message.maybeInitEmptyExtensionObject_(e),e.extensionObject_[o]=e.extensionObject_[o]||jspb.Message.EMPTY_LIST_SENTINEL_);if(s&&s.length)for(t=0;t<s.length;t++)jspb.Message.computeOneofCase(e,s[t])},jspb.Message.EMPTY_LIST_SENTINEL_=goog.DEBUG&&Object.freeze?Object.freeze([]):[],jspb.Message.isArray_=function(e){return jspb.Message.ASSUME_LOCAL_ARRAYS?e instanceof Array:Array.isArray(e)},jspb.Message.isExtensionObject_=function(e){return!(null===e||"object"!=typeof e||jspb.Message.isArray_(e)||jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array)},jspb.Message.initPivotAndExtensionObject_=function(e,t){var o=e.array.length,r=-1;if(o&&(r=o-1,o=e.array[r],jspb.Message.isExtensionObject_(o)))return e.pivot_=jspb.Message.getFieldNumber_(e,r),void(e.extensionObject_=o);-1<t?(e.pivot_=Math.max(t,jspb.Message.getFieldNumber_(e,r+1)),e.extensionObject_=null):e.pivot_=Number.MAX_VALUE},jspb.Message.maybeInitEmptyExtensionObject_=function(e){var t=jspb.Message.getIndex_(e,e.pivot_);e.array[t]||(e.extensionObject_=e.array[t]={})},jspb.Message.toObjectList=function(e,t,o){for(var r=[],n=0;n<e.length;n++)r[n]=t.call(e[n],o,e[n]);return r},jspb.Message.toObjectExtension=function(e,t,o,r,n){for(var s in o){var i=o[s],a=r.call(e,i);if(null!=a){for(var g in i.fieldName)if(i.fieldName.hasOwnProperty(g))break;t[g]=i.toObjectFn?i.isRepeated?jspb.Message.toObjectList(a,i.toObjectFn,n):i.toObjectFn(n,a):a}}},jspb.Message.serializeBinaryExtensions=function(e,t,o,r){for(var n in o){var s=o[n],i=s.fieldInfo;if(!s.binaryWriterFn)throw Error("Message extension present that was generated without binary serialization support");var a=r.call(e,i);if(null!=a)if(i.isMessageType()){if(!s.binaryMessageSerializeFn)throw Error("Message extension present holding submessage without binary support enabled, and message is being serialized to binary format");s.binaryWriterFn.call(t,i.fieldIndex,a,s.binaryMessageSerializeFn)}else s.binaryWriterFn.call(t,i.fieldIndex,a)}},jspb.Message.readBinaryExtension=function(e,t,o,r,n){var s=o[t.getFieldNumber()];if(s){if(o=s.fieldInfo,!s.binaryReaderFn)throw Error("Deserializing extension whose generated code does not support binary format");if(o.isMessageType()){var i=new o.ctor;s.binaryReaderFn.call(t,i,s.binaryMessageDeserializeFn)}else i=s.binaryReaderFn.call(t);o.isRepeated&&!s.isPacked?(t=r.call(e,o))?t.push(i):n.call(e,o,[i]):n.call(e,o,i)}else t.skipField()},jspb.Message.getField=function(e,t){if(t<e.pivot_){t=jspb.Message.getIndex_(e,t);var o=e.array[t];return o===jspb.Message.EMPTY_LIST_SENTINEL_?e.array[t]=[]:o}if(e.extensionObject_)return(o=e.extensionObject_[t])===jspb.Message.EMPTY_LIST_SENTINEL_?e.extensionObject_[t]=[]:o},jspb.Message.getRepeatedField=function(e,t){return jspb.Message.getField(e,t)},jspb.Message.getOptionalFloatingPointField=function(e,t){return null==(e=jspb.Message.getField(e,t))?e:+e},jspb.Message.getBooleanField=function(e,t){return null==(e=jspb.Message.getField(e,t))?e:!!e},jspb.Message.getRepeatedFloatingPointField=function(e,t){var o=jspb.Message.getRepeatedField(e,t);if(e.convertedPrimitiveFields_||(e.convertedPrimitiveFields_={}),!e.convertedPrimitiveFields_[t]){for(var r=0;r<o.length;r++)o[r]=+o[r];e.convertedPrimitiveFields_[t]=!0}return o},jspb.Message.getRepeatedBooleanField=function(e,t){var o=jspb.Message.getRepeatedField(e,t);if(e.convertedPrimitiveFields_||(e.convertedPrimitiveFields_={}),!e.convertedPrimitiveFields_[t]){for(var r=0;r<o.length;r++)o[r]=!!o[r];e.convertedPrimitiveFields_[t]=!0}return o},jspb.Message.bytesAsB64=function(e){return null==e||"string"==typeof e?e:jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array?goog.crypt.base64.encodeByteArray(e):(goog.asserts.fail("Cannot coerce to b64 string: "+goog.typeOf(e)),null)},jspb.Message.bytesAsU8=function(e){return null==e||e instanceof Uint8Array?e:"string"==typeof e?goog.crypt.base64.decodeStringToUint8Array(e):(goog.asserts.fail("Cannot coerce to Uint8Array: "+goog.typeOf(e)),null)},jspb.Message.bytesListAsB64=function(e){return jspb.Message.assertConsistentTypes_(e),e.length&&"string"!=typeof e[0]?goog.array.map(e,jspb.Message.bytesAsB64):e},jspb.Message.bytesListAsU8=function(e){return jspb.Message.assertConsistentTypes_(e),!e.length||e[0]instanceof Uint8Array?e:goog.array.map(e,jspb.Message.bytesAsU8)},jspb.Message.assertConsistentTypes_=function(e){if(goog.DEBUG&&e&&1<e.length){var t=goog.typeOf(e[0]);goog.array.forEach(e,(function(e){goog.typeOf(e)!=t&&goog.asserts.fail("Inconsistent type in JSPB repeated field array. Got "+goog.typeOf(e)+" expected "+t)}))}},jspb.Message.getFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getField(e,t))?o:e},jspb.Message.getBooleanFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getBooleanField(e,t))?o:e},jspb.Message.getFloatingPointFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getOptionalFloatingPointField(e,t))?o:e},jspb.Message.getFieldProto3=jspb.Message.getFieldWithDefault,jspb.Message.getMapField=function(e,t,o,r){if(e.wrappers_||(e.wrappers_={}),t in e.wrappers_)return e.wrappers_[t];var n=jspb.Message.getField(e,t);if(!n){if(o)return;n=[],jspb.Message.setField(e,t,n)}return e.wrappers_[t]=new jspb.Map(n,r)},jspb.Message.setField=function(e,t,o){return goog.asserts.assertInstanceof(e,jspb.Message),t<e.pivot_?e.array[jspb.Message.getIndex_(e,t)]=o:(jspb.Message.maybeInitEmptyExtensionObject_(e),e.extensionObject_[t]=o),e},jspb.Message.setProto3IntField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3FloatField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3BooleanField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,!1)},jspb.Message.setProto3StringField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"")},jspb.Message.setProto3BytesField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"")},jspb.Message.setProto3EnumField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3StringIntField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"0")},jspb.Message.setFieldIgnoringDefault_=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),o!==r?jspb.Message.setField(e,t,o):t<e.pivot_?e.array[jspb.Message.getIndex_(e,t)]=null:(jspb.Message.maybeInitEmptyExtensionObject_(e),delete e.extensionObject_[t]),e},jspb.Message.addToRepeatedField=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),t=jspb.Message.getRepeatedField(e,t),null!=r?t.splice(r,0,o):t.push(o),e},jspb.Message.setOneofField=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),(o=jspb.Message.computeOneofCase(e,o))&&o!==t&&void 0!==r&&(e.wrappers_&&o in e.wrappers_&&(e.wrappers_[o]=void 0),jspb.Message.setField(e,o,void 0)),jspb.Message.setField(e,t,r)},jspb.Message.computeOneofCase=function(e,t){for(var o,r,n=0;n<t.length;n++){var s=t[n],i=jspb.Message.getField(e,s);null!=i&&(o=s,r=i,jspb.Message.setField(e,s,void 0))}return o?(jspb.Message.setField(e,o,r),o):0},jspb.Message.getWrapperField=function(e,t,o,r){if(e.wrappers_||(e.wrappers_={}),!e.wrappers_[o]){var n=jspb.Message.getField(e,o);(r||n)&&(e.wrappers_[o]=new t(n))}return e.wrappers_[o]},jspb.Message.getRepeatedWrapperField=function(e,t,o){return jspb.Message.wrapRepeatedField_(e,t,o),(t=e.wrappers_[o])==jspb.Message.EMPTY_LIST_SENTINEL_&&(t=e.wrappers_[o]=[]),t},jspb.Message.wrapRepeatedField_=function(e,t,o){if(e.wrappers_||(e.wrappers_={}),!e.wrappers_[o]){for(var r=jspb.Message.getRepeatedField(e,o),n=[],s=0;s<r.length;s++)n[s]=new t(r[s]);e.wrappers_[o]=n}},jspb.Message.setWrapperField=function(e,t,o){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={});var r=o?o.toArray():o;return e.wrappers_[t]=o,jspb.Message.setField(e,t,r)},jspb.Message.setOneofWrapperField=function(e,t,o,r){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={});var n=r?r.toArray():r;return e.wrappers_[t]=r,jspb.Message.setOneofField(e,t,o,n)},jspb.Message.setRepeatedWrapperField=function(e,t,o){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={}),o=o||[];for(var r=[],n=0;n<o.length;n++)r[n]=o[n].toArray();return e.wrappers_[t]=o,jspb.Message.setField(e,t,r)},jspb.Message.addToRepeatedWrapperField=function(e,t,o,r,n){jspb.Message.wrapRepeatedField_(e,r,t);var s=e.wrappers_[t];return s||(s=e.wrappers_[t]=[]),o=o||new r,e=jspb.Message.getRepeatedField(e,t),null!=n?(s.splice(n,0,o),e.splice(n,0,o.toArray())):(s.push(o),e.push(o.toArray())),o},jspb.Message.toMap=function(e,t,o,r){for(var n={},s=0;s<e.length;s++)n[t.call(e[s])]=o?o.call(e[s],r,e[s]):e[s];return n},jspb.Message.prototype.syncMapFields_=function(){if(this.wrappers_)for(var e in this.wrappers_){var t=this.wrappers_[e];if(Array.isArray(t))for(var o=0;o<t.length;o++)t[o]&&t[o].toArray();else t&&t.toArray()}},jspb.Message.prototype.toArray=function(){return this.syncMapFields_(),this.array},jspb.Message.GENERATE_TO_STRING&&(jspb.Message.prototype.toString=function(){return this.syncMapFields_(),this.array.toString()}),jspb.Message.prototype.getExtension=function(e){if(this.extensionObject_){this.wrappers_||(this.wrappers_={});var t=e.fieldIndex;if(e.isRepeated){if(e.isMessageType())return this.wrappers_[t]||(this.wrappers_[t]=goog.array.map(this.extensionObject_[t]||[],(function(t){return new e.ctor(t)}))),this.wrappers_[t]}else if(e.isMessageType())return!this.wrappers_[t]&&this.extensionObject_[t]&&(this.wrappers_[t]=new e.ctor(this.extensionObject_[t])),this.wrappers_[t];return this.extensionObject_[t]}},jspb.Message.prototype.setExtension=function(e,t){this.wrappers_||(this.wrappers_={}),jspb.Message.maybeInitEmptyExtensionObject_(this);var o=e.fieldIndex;return e.isRepeated?(t=t||[],e.isMessageType()?(this.wrappers_[o]=t,this.extensionObject_[o]=goog.array.map(t,(function(e){return e.toArray()}))):this.extensionObject_[o]=t):e.isMessageType()?(this.wrappers_[o]=t,this.extensionObject_[o]=t?t.toArray():t):this.extensionObject_[o]=t,this},jspb.Message.difference=function(e,t){if(!(e instanceof t.constructor))throw Error("Messages have different types.");var o=e.toArray();t=t.toArray();var r=[],n=0,s=o.length>t.length?o.length:t.length;for(e.getJsPbMessageId()&&(r[0]=e.getJsPbMessageId(),n=1);n<s;n++)jspb.Message.compareFields(o[n],t[n])||(r[n]=t[n]);return new e.constructor(r)},jspb.Message.equals=function(e,t){return e==t||!(!e||!t)&&e instanceof t.constructor&&jspb.Message.compareFields(e.toArray(),t.toArray())},jspb.Message.compareExtensions=function(e,t){e=e||{},t=t||{};var o,r={};for(o in e)r[o]=0;for(o in t)r[o]=0;for(o in r)if(!jspb.Message.compareFields(e[o],t[o]))return!1;return!0},jspb.Message.compareFields=function(e,t){if(e==t)return!0;if(!goog.isObject(e)||!goog.isObject(t))return!!("number"==typeof e&&isNaN(e)||"number"==typeof t&&isNaN(t))&&String(e)==String(t);if(e.constructor!=t.constructor)return!1;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&e.constructor===Uint8Array){if(e.length!=t.length)return!1;for(var o=0;o<e.length;o++)if(e[o]!=t[o])return!1;return!0}if(e.constructor===Array){var r=void 0,n=void 0,s=Math.max(e.length,t.length);for(o=0;o<s;o++){var i=e[o],a=t[o];if(i&&i.constructor==Object&&(goog.asserts.assert(void 0===r),goog.asserts.assert(o===e.length-1),r=i,i=void 0),a&&a.constructor==Object&&(goog.asserts.assert(void 0===n),goog.asserts.assert(o===t.length-1),n=a,a=void 0),!jspb.Message.compareFields(i,a))return!1}return!r&&!n||(r=r||{},n=n||{},jspb.Message.compareExtensions(r,n))}if(e.constructor===Object)return jspb.Message.compareExtensions(e,t);throw Error("Invalid type in JSPB array")},jspb.Message.prototype.cloneMessage=function(){return jspb.Message.cloneMessage(this)},jspb.Message.prototype.clone=function(){return jspb.Message.cloneMessage(this)},jspb.Message.clone=function(e){return jspb.Message.cloneMessage(e)},jspb.Message.cloneMessage=function(e){return new e.constructor(jspb.Message.clone_(e.toArray()))},jspb.Message.copyInto=function(e,t){goog.asserts.assertInstanceof(e,jspb.Message),goog.asserts.assertInstanceof(t,jspb.Message),goog.asserts.assert(e.constructor==t.constructor,"Copy source and target message should have the same type."),e=jspb.Message.clone(e);for(var o=t.toArray(),r=e.toArray(),n=o.length=0;n<r.length;n++)o[n]=r[n];t.wrappers_=e.wrappers_,t.extensionObject_=e.extensionObject_},jspb.Message.clone_=function(e){if(Array.isArray(e)){for(var t=Array(e.length),o=0;o<e.length;o++){var r=e[o];null!=r&&(t[o]="object"==typeof r?jspb.Message.clone_(goog.asserts.assert(r)):r)}return t}if(jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array)return new Uint8Array(e);for(o in t={},e)null!=(r=e[o])&&(t[o]="object"==typeof r?jspb.Message.clone_(goog.asserts.assert(r)):r);return t},jspb.Message.registerMessageType=function(e,t){t.messageId=e},jspb.Message.messageSetExtensions={},jspb.Message.messageSetExtensionsBinary={},jspb.Export={},exports.Map=jspb.Map,exports.Message=jspb.Message,exports.BinaryReader=jspb.BinaryReader,exports.BinaryWriter=jspb.BinaryWriter,exports.ExtensionFieldInfo=jspb.ExtensionFieldInfo,exports.ExtensionFieldBinaryInfo=jspb.ExtensionFieldBinaryInfo,exports.exportSymbol=goog.exportSymbol,exports.inherits=goog.inherits,exports.object={extend:goog.object.extend},exports.typeOf=goog.typeOf},40:function(e,t,o){var r;function n(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}}var s="function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,o){e!=Array.prototype&&e!=Object.prototype&&(e[t]=o.value)},i=function(e){e=["object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof o.g&&o.g,e];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")}(this);function a(){a=function(){},i.Symbol||(i.Symbol=u)}function g(e,t){this.a=e,s(this,"description",{configurable:!0,writable:!0,value:t})}g.prototype.toString=function(){return this.a};var l,u=(l=0,function e(t){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new g("jscomp_symbol_"+(t||"")+"_"+l++,t)});function c(){a();var e=i.Symbol.iterator;e||(e=i.Symbol.iterator=i.Symbol("Symbol.iterator")),"function"!=typeof Array.prototype[e]&&s(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return function(e){return c(),(e={next:e})[i.Symbol.iterator]=function(){return this},e}(n(this))}}),c=function(){}}function p(e){var t="undefined"!=typeof Symbol&&Symbol.iterator&&e[Symbol.iterator];return t?t.call(e):{next:n(e)}}var f,d="function"==typeof Object.create?Object.create:function(e){function t(){}return t.prototype=e,new t};if("function"==typeof Object.setPrototypeOf)f=Object.setPrototypeOf;else{var h;e:{var y={};try{y.__proto__={V:!0},h=y.V;break e}catch(ee){}h=!1}f=h?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null}var _=f;function b(e,t){if(e.prototype=d(t.prototype),e.prototype.constructor=e,_)_(e,t);else for(var o in t)if("prototype"!=o)if(Object.defineProperties){var r=Object.getOwnPropertyDescriptor(t,o);r&&Object.defineProperty(e,o,r)}else e[o]=t[o];e.O=t.prototype}function m(e,t){if(t){var o=i;e=e.split(".");for(var r=0;r<e.length-1;r++){var n=e[r];n in o||(o[n]={}),o=o[n]}(t=t(r=o[e=e[e.length-1]]))!=r&&null!=t&&s(o,e,{configurable:!0,writable:!0,value:t})}}m("Array.prototype.keys",(function(e){return e||function(){return function(e,t){c(),e instanceof String&&(e+="");var o=0,r={next:function(){if(o<e.length){var n=o++;return{value:t(n,e[n]),done:!1}}return r.next=function(){return{done:!0,value:void 0}},r.next()}};return r[Symbol.iterator]=function(){return r},r}(this,(function(e){return e}))}})),m("Array.prototype.find",(function(e){return e||function(e,t){e:{var o=this;o instanceof String&&(o=String(o));for(var r=o.length,n=0;n<r;n++){var s=o[n];if(e.call(t,s,n,o)){e=s;break e}}e=void 0}return e}})),m("Object.is",(function(e){return e||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}})),m("Array.prototype.includes",(function(e){return e||function(e,t){var o=this;o instanceof String&&(o=String(o));var r=o.length;for(0>(t=t||0)&&(t=Math.max(t+r,0));t<r;t++){var n=o[t];if(n===e||Object.is(n,e))return!0}return!1}})),m("Promise",(function(e){function t(e){this.b=0,this.c=void 0,this.a=[];var t=this.f();try{e(t.resolve,t.reject)}catch(e){t.reject(e)}}function o(){this.a=null}function r(e){return e instanceof t?e:new t((function(t){t(e)}))}if(e)return e;o.prototype.b=function(e){if(null==this.a){this.a=[];var t=this;this.c((function(){t.g()}))}this.a.push(e)};var n=i.setTimeout;o.prototype.c=function(e){n(e,0)},o.prototype.g=function(){for(;this.a&&this.a.length;){var e=this.a;this.a=[];for(var t=0;t<e.length;++t){var o=e[t];e[t]=null;try{o()}catch(e){this.f(e)}}}this.a=null},o.prototype.f=function(e){this.c((function(){throw e}))},t.prototype.f=function(){function e(e){return function(r){o||(o=!0,e.call(t,r))}}var t=this,o=!1;return{resolve:e(this.s),reject:e(this.g)}},t.prototype.s=function(e){if(e===this)this.g(new TypeError("A Promise cannot resolve to itself"));else if(e instanceof t)this.v(e);else{e:switch(typeof e){case"object":var o=null!=e;break e;case"function":o=!0;break e;default:o=!1}o?this.m(e):this.h(e)}},t.prototype.m=function(e){var t=void 0;try{t=e.then}catch(e){return void this.g(e)}"function"==typeof t?this.w(t,e):this.h(e)},t.prototype.g=function(e){this.i(2,e)},t.prototype.h=function(e){this.i(1,e)},t.prototype.i=function(e,t){if(0!=this.b)throw Error("Cannot settle("+e+", "+t+"): Promise already settled in state"+this.b);this.b=e,this.c=t,this.l()},t.prototype.l=function(){if(null!=this.a){for(var e=0;e<this.a.length;++e)s.b(this.a[e]);this.a=null}};var s=new o;return t.prototype.v=function(e){var t=this.f();e.F(t.resolve,t.reject)},t.prototype.w=function(e,t){var o=this.f();try{e.call(t,o.resolve,o.reject)}catch(e){o.reject(e)}},t.prototype.then=function(e,o){function r(e,t){return"function"==typeof e?function(t){try{n(e(t))}catch(e){s(e)}}:t}var n,s,i=new t((function(e,t){n=e,s=t}));return this.F(r(e,n),r(o,s)),i},t.prototype.catch=function(e){return this.then(void 0,e)},t.prototype.F=function(e,t){function o(){switch(r.b){case 1:e(r.c);break;case 2:t(r.c);break;default:throw Error("Unexpected state: "+r.b)}}var r=this;null==this.a?s.b(o):this.a.push(o)},t.resolve=r,t.reject=function(e){return new t((function(t,o){o(e)}))},t.race=function(e){return new t((function(t,o){for(var n=p(e),s=n.next();!s.done;s=n.next())r(s.value).F(t,o)}))},t.all=function(e){var o=p(e),n=o.next();return n.done?r([]):new t((function(e,t){function s(t){return function(o){i[t]=o,0==--a&&e(i)}}var i=[],a=0;do{i.push(void 0),a++,r(n.value).F(s(i.length-1),t),n=o.next()}while(!n.done)}))},t}));var S=S||{},E=this||self;function T(e,t){e=e.split("."),t=t||E;for(var o=0;o<e.length;o++)if(null==(t=t[e[o]]))return null;return t}function A(){}function v(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var I="closure_uid_"+(1e9*Math.random()>>>0),R=0;function O(e,t,o){return e.call.apply(e.bind,arguments)}function j(e,t,o){if(!e)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var o=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(o,r),e.apply(t,o)}}return function(){return e.apply(t,arguments)}}function w(e,t,o){return(w=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?O:j).apply(null,arguments)}function N(e,t){function o(){}o.prototype=t.prototype,e.O=t.prototype,e.prototype=new o,e.prototype.constructor=e}function C(){this.a={}}function U(e,t,o,r){this.f=e,this.c=t,this.b=o,this.a=r}function M(e,t,o,r){o=void 0===o?{}:o,this.c=e,this.a=o,this.b=t,this.f=void 0===r?null:r}function L(e,t,o){o=void 0===o?{}:o;var r=void 0===r?new C:r;return new U(t,e,o,r)}function D(e,t,o){o=void 0===o?{}:o,t=Error.call(this,t),this.message=t.message,"stack"in t&&(this.stack=t.stack),this.code=e,this.metadata=o}function B(e){this.a=e}function P(e){if(Error.captureStackTrace)Error.captureStackTrace(this,P);else{var t=Error().stack;t&&(this.stack=t)}e&&(this.message=String(e))}function F(e,t){for(var o="",r=(e=e.split("%s")).length-1,n=0;n<r;n++)o+=e[n]+(n<t.length?t[n]:"%s");P.call(this,o+e[r])}function x(){this.l=null,this.i=[],this.m=0,this.b=W,this.f=this.a=this.h=0,this.c=null,this.g=0}C.prototype.get=function(e){return this.a[e]},C.prototype.G=function(){return Object.keys(this.a)},U.prototype.getRequestMessage=function(){return this.f},U.prototype.getMethodDescriptor=function(){return this.c},U.prototype.getMetadata=function(){return this.b},U.prototype.getCallOptions=function(){return this.a},M.prototype.getResponseMessage=function(){return this.c},M.prototype.getMetadata=function(){return this.a},M.prototype.getMethodDescriptor=function(){return this.b},M.prototype.getStatus=function(){return this.f},b(D,Error),D.prototype.name="RpcError",B.prototype.on=function(e,t){return"data"==e||"error"==e?this:this.a.on(e,t)},B.prototype.removeListener=function(e,t){return this.a.removeListener(e,t)},B.prototype.cancel=function(){this.a.cancel()},N(P,Error),P.prototype.name="CustomError",N(F,P),F.prototype.name="AssertionError";var W=0,H=128;function V(e,t,o,r){throw e.b=3,e.l="The stream is broken @"+e.m+"/"+o+". Error: "+r+". With input:\\n"+t,Error(e.l)}var G,k=Array.prototype.indexOf?function(e,t){return Array.prototype.indexOf.call(e,t,void 0)}:function(e,t){if("string"==typeof e)return"string"!=typeof t||1!=t.length?-1:e.indexOf(t,0);for(var o=0;o<e.length;o++)if(o in e&&e[o]===t)return o;return-1},Y=String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(e)[1]};function z(e,t){return-1!=e.indexOf(t)}function K(e,t){return e<t?-1:e>t?1:0}e:{var X=E.navigator;if(X){var q=X.userAgent;if(q){G=q;break e}}G=""}var $="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Z(e){var t=1;e=e.split(":");for(var o=[];0<t&&e.length;)o.push(e.shift()),t--;return e.length&&o.push(e.join(":")),o}function J(e){return J[" "](e),e}J[" "]=A;var Q,ee,te=z(G,"Opera"),oe=z(G,"Trident")||z(G,"MSIE"),re=z(G,"Edge"),ne=z(G,"Gecko")&&!(z(G.toLowerCase(),"webkit")&&!z(G,"Edge"))&&!(z(G,"Trident")||z(G,"MSIE"))&&!z(G,"Edge"),se=z(G.toLowerCase(),"webkit")&&!z(G,"Edge");e:{var ie="",ae=(ee=G,ne?/rv:([^\\);]+)(\\)|;)/.exec(ee):re?/Edge\\/([\\d\\.]+)/.exec(ee):oe?/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(ee):se?/WebKit\\/(\\S+)/.exec(ee):te?/(?:Version)[ \\/]?(\\S+)/.exec(ee):void 0);if(ae&&(ie=ae?ae[1]:""),oe){var ge,le=E.document;if(null!=(ge=le?le.documentMode:void 0)&&ge>parseFloat(ie)){Q=String(ge);break e}}Q=ie}var ue={};function ce(){return function(e){var t=ue;return Object.prototype.hasOwnProperty.call(t,9)?t[9]:t[9]=function(){for(var e=0,t=Y(String(Q)).split("."),o=Y("9").split("."),r=Math.max(t.length,o.length),n=0;0==e&&n<r;n++){var s=t[n]||"",i=o[n]||"";do{if(s=/(\\d*)(\\D*)(.*)/.exec(s)||["","","",""],i=/(\\d*)(\\D*)(.*)/.exec(i)||["","","",""],0==s[0].length&&0==i[0].length)break;e=K(0==s[1].length?0:parseInt(s[1],10),0==i[1].length?0:parseInt(i[1],10))||K(0==s[2].length,0==i[2].length)||K(s[2],i[2]),s=s[3],i=i[3]}while(0==e)}return 0<=e}()}()}function pe(){0!=fe&&(Object.prototype.hasOwnProperty.call(this,I)&&this[I]||(this[I]=++R)),this.K=this.K}var fe=0;pe.prototype.K=!1;var de=Object.freeze||function(e){return e};function he(e,t){this.type=e,this.a=this.target=t,this.defaultPrevented=!1}he.prototype.b=function(){this.defaultPrevented=!0};var ye=function(){if(!E.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{E.addEventListener("test",A,t),E.removeEventListener("test",A,t)}catch(e){}return e}();function _e(e,t){if(he.call(this,e?e.type:""),this.relatedTarget=this.a=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.pointerId=0,this.pointerType="",this.c=null,e){var o=this.type=e.type,r=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.a=t,t=e.relatedTarget){if(ne){e:{try{J(t.nodeName);var n=!0;break e}catch(e){}n=!1}n||(t=null)}}else"mouseover"==o?t=e.fromElement:"mouseout"==o&&(t=e.toElement);this.relatedTarget=t,r?(this.clientX=void 0!==r.clientX?r.clientX:r.pageX,this.clientY=void 0!==r.clientY?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0),this.button=e.button,this.key=e.key||"",this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.pointerId=e.pointerId||0,this.pointerType="string"==typeof e.pointerType?e.pointerType:be[e.pointerType]||"",this.c=e,e.defaultPrevented&&_e.O.b.call(this)}}N(_e,he);var be=de({2:"touch",3:"pen",4:"mouse"});_e.prototype.b=function(){_e.O.b.call(this);var e=this.c;e.preventDefault?e.preventDefault():e.returnValue=!1};var me="closure_listenable_"+(1e6*Math.random()|0),Se=0;function Ee(e,t,o,r,n){this.listener=e,this.proxy=null,this.src=t,this.type=o,this.capture=!!r,this.H=n,this.key=++Se,this.A=this.D=!1}function Te(e){e.A=!0,e.listener=null,e.proxy=null,e.src=null,e.H=null}function Ae(e){this.src=e,this.a={},this.b=0}function ve(e,t){var o=t.type;if(o in e.a){var r,n=e.a[o],s=k(n,t);(r=0<=s)&&Array.prototype.splice.call(n,s,1),r&&(Te(t),0==e.a[o].length&&(delete e.a[o],e.b--))}}function Ie(e,t,o,r){for(var n=0;n<e.length;++n){var s=e[n];if(!s.A&&s.listener==t&&s.capture==!!o&&s.H==r)return n}return-1}Ae.prototype.add=function(e,t,o,r,n){var s=e.toString();(e=this.a[s])||(e=this.a[s]=[],this.b++);var i=Ie(e,t,r,n);return-1<i?(t=e[i],o||(t.D=!1)):((t=new Ee(t,this.src,s,!!r,n)).D=o,e.push(t)),t},Ae.prototype.remove=function(e,t,o,r){if(!((e=e.toString())in this.a))return!1;var n=this.a[e];return-1<(t=Ie(n,t,o,r))&&(Te(n[t]),Array.prototype.splice.call(n,t,1),0==n.length&&(delete this.a[e],this.b--),!0)};var Re="closure_lm_"+(1e6*Math.random()|0),Oe={};function je(e,t,o,r,n){if(r&&r.once)Ne(e,t,o,r,n);else if(Array.isArray(t))for(var s=0;s<t.length;s++)je(e,t[s],o,r,n);else o=Pe(o),e&&e[me]?e.f.add(String(t),o,!1,v(r)?!!r.capture:!!r,n):we(e,t,o,!1,r,n)}function we(e,t,o,r,n,s){if(!t)throw Error("Invalid event type");var i=v(n)?!!n.capture:!!n,a=De(e);if(a||(e[Re]=a=new Ae(e)),!(o=a.add(t,o,r,i,s)).proxy)if(r=function(){var e=Le;return function t(o){return e.call(t.src,t.listener,o)}}(),o.proxy=r,r.src=e,r.listener=o,e.addEventListener)ye||(n=i),void 0===n&&(n=!1),e.addEventListener(t.toString(),r,n);else if(e.attachEvent)e.attachEvent(Me(t.toString()),r);else{if(!e.addListener||!e.removeListener)throw Error("addEventListener and attachEvent are unavailable.");e.addListener(r)}}function Ne(e,t,o,r,n){if(Array.isArray(t))for(var s=0;s<t.length;s++)Ne(e,t[s],o,r,n);else o=Pe(o),e&&e[me]?e.f.add(String(t),o,!0,v(r)?!!r.capture:!!r,n):we(e,t,o,!0,r,n)}function Ce(e,t,o,r,n){if(Array.isArray(t))for(var s=0;s<t.length;s++)Ce(e,t[s],o,r,n);else r=v(r)?!!r.capture:!!r,o=Pe(o),e&&e[me]?e.f.remove(String(t),o,r,n):e&&(e=De(e))&&(t=e.a[t.toString()],e=-1,t&&(e=Ie(t,o,r,n)),(o=-1<e?t[e]:null)&&Ue(o))}function Ue(e){if("number"!=typeof e&&e&&!e.A){var t=e.src;if(t&&t[me])ve(t.f,e);else{var o=e.type,r=e.proxy;t.removeEventListener?t.removeEventListener(o,r,e.capture):t.detachEvent?t.detachEvent(Me(o),r):t.addListener&&t.removeListener&&t.removeListener(r),(o=De(t))?(ve(o,e),0==o.b&&(o.src=null,t[Re]=null)):Te(e)}}}function Me(e){return e in Oe?Oe[e]:Oe[e]="on"+e}function Le(e,t){if(e.A)e=!0;else{t=new _e(t,this);var o=e.listener,r=e.H||e.src;e.D&&Ue(e),e=o.call(r,t)}return e}function De(e){return(e=e[Re])instanceof Ae?e:null}var Be="__closure_events_fn_"+(1e9*Math.random()>>>0);function Pe(e){return"function"==typeof e?e:(e[Be]||(e[Be]=function(t){return e.handleEvent(t)}),e[Be])}function Fe(){pe.call(this),this.f=new Ae(this),this.U=this}function xe(e,t){e=e.U;var o=t.type||t;if("string"==typeof t)t=new he(t,e);else if(t instanceof he)t.target=t.target||e;else{var r=t;!function(e,t){for(var o,r,n=1;n<arguments.length;n++){for(o in r=arguments[n])e[o]=r[o];for(var s=0;s<$.length;s++)o=$[s],Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}}(t=new he(o,e),r)}We(e=t.a=e,o,!0,t),We(e,o,!1,t)}function We(e,t,o,r){if(t=e.f.a[String(t)]){t=t.concat();for(var n=!0,s=0;s<t.length;++s){var i=t[s];if(i&&!i.A&&i.capture==o){var a=i.listener,g=i.H||i.src;i.D&&ve(e.f,i),n=!1!==a.call(g,r)&&n}}}}function He(e,t,o){if("function"==typeof e)o&&(e=w(e,o));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=w(e.handleEvent,e)}return 2147483647<Number(t)?-1:E.setTimeout(e,t||0)}function Ve(e,t){this.name=e,this.value=t}N(Fe,pe),Fe.prototype[me]=!0,Fe.prototype.addEventListener=function(e,t,o,r){je(this,e,t,o,r)},Fe.prototype.removeEventListener=function(e,t,o,r){Ce(this,e,t,o,r)},Ve.prototype.toString=function(){return this.name};var Ge,ke,Ye,ze=new Ve("OFF",1/0),Ke=new Ve("SEVERE",1e3),Xe=new Ve("CONFIG",700),qe=new Ve("FINE",500);function $e(){this.clear()}function Ze(e,t,o){this.reset(e||ze,t,o,void 0,void 0)}function Je(e,t){this.a=null,this.f=[],this.b=(void 0===t?null:t)||null,this.c=[],this.g={a:function(){return e}}}function Qe(e){return e.a?e.a:e.b?Qe(e.b):(function(e,t){throw new F("Failure"+(e?": "+e:""),Array.prototype.slice.call(arguments,1))}("Root logger has no level set."),ze)}function et(){this.entries={};var e=new Je("");e.a=Xe,this.entries[""]=e}function tt(e,t,o){var r=e.entries[t];if(r)return void 0!==o&&(r.a=o),r;r=tt(e,t.substr(0,t.lastIndexOf(".")));var n=new Je(t,r);return e.entries[t]=n,r.c.push(n),void 0!==o&&(n.a=o),n}function ot(){return ke||(ke=new et),ke}function rt(e,t,o){var r;(r=e)&&(r=e&&t)&&(r=(r=t.value)>=(e?Qe(tt(ot(),e.a())):ze).value),r&&(t=t||ze,r=tt(ot(),e.a()),"function"==typeof o&&(o=o()),Ge||(Ge=new $e),function(e,t){for(;e;)e.f.forEach((function(e){e(t)})),e=e.b}(r,e=new Ze(t,o,e.a())))}function nt(e,t){e&&rt(e,qe,t)}function st(){}function it(e){var t;return(t=e.a)||(t={},lt(e)&&(t[0]=!0,t[1]=!0),t=e.a=t),t}function at(){}function gt(e){return(e=lt(e))?new ActiveXObject(e):new XMLHttpRequest}function lt(e){if(!e.b&&"undefined"==typeof XMLHttpRequest&&"undefined"!=typeof ActiveXObject){for(var t=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],o=0;o<t.length;o++){var r=t[o];try{return new ActiveXObject(r),e.b=r}catch(e){}}throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed")}return e.b}function ut(e,t){this.b=e[E.Symbol.iterator](),this.c=t,this.f=0}$e.prototype.clear=function(){},Ze.prototype.reset=function(){},st.prototype.a=null,N(at,st),Ye=new at,a(),c(),ut.prototype[Symbol.iterator]=function(){return this},ut.prototype.next=function(){var e=this.b.next();return{value:e.done?void 0:this.c.call(void 0,e.value,this.f++),done:e.done}},a(),c(),a(),c();var ct="StopIteration"in E?E.StopIteration:{message:"StopIteration",stack:""};function pt(){}function ft(e){if(e instanceof ht||e instanceof yt||e instanceof _t)return e;if("function"==typeof e.next)return new ht((function(){return dt(e)}));if(a(),c(),"function"==typeof e[Symbol.iterator])return a(),c(),new ht((function(){return e[Symbol.iterator]()}));if("function"==typeof e.u)return new ht((function(){return dt(e.u())}));throw Error("Not an iterator or iterable.")}function dt(e){if(!(e instanceof pt))return e;var t=!1;return{next:function(){for(var o;!t;)try{o=e.a();break}catch(e){if(e!==ct)throw e;t=!0}return{value:o,done:t}}}}function ht(e){this.b=e}function yt(e){this.b=e}function _t(e){ht.call(this,(function(){return e})),this.f=e}function bt(e,t){this.o={},this.j=[],this.B=this.size=0;var o=arguments.length;if(1<o){if(o%2)throw Error("Uneven number of arguments");for(var r=0;r<o;r+=2)this.set(arguments[r],arguments[r+1])}else e&&this.addAll(e)}function mt(e){if(e.size!=e.j.length){for(var t=0,o=0;t<e.j.length;){var r=e.j[t];St(e.o,r)&&(e.j[o++]=r),t++}e.j.length=o}if(e.size!=e.j.length){var n={};for(o=t=0;t<e.j.length;)St(n,r=e.j[t])||(e.j[o++]=r,n[r]=1),t++;e.j.length=o}}function St(e,t){return Object.prototype.hasOwnProperty.call(e,t)}pt.prototype.next=function(){return pt.prototype.a.call(this)},pt.prototype.a=function(){throw ct},pt.prototype.u=function(){return this},a(),c(),ht.prototype.u=function(){return new yt(this.b())},ht.prototype[Symbol.iterator]=function(){return new _t(this.b())},ht.prototype.c=function(){return new _t(this.b())},a(),c(),b(yt,pt),yt.prototype.a=function(){var e=this.b.next();if(e.done)throw ct;return e.value},yt.prototype.next=function(){return yt.prototype.a.call(this)},yt.prototype[Symbol.iterator]=function(){return new _t(this.b)},yt.prototype.c=function(){return new _t(this.b)},b(_t,ht),_t.prototype.next=function(){return this.f.next()},(r=bt.prototype).G=function(){return mt(this),this.j.concat()},r.has=function(e){return St(this.o,e)},r.clear=function(){this.o={},this.B=this.size=this.j.length=0},r.remove=function(e){return this.delete(e)},r.delete=function(e){return!!St(this.o,e)&&(delete this.o[e],--this.size,this.B++,this.j.length>2*this.size&&mt(this),!0)},r.get=function(e,t){return St(this.o,e)?this.o[e]:t},r.set=function(e,t){St(this.o,e)||(this.size+=1,this.j.push(e),this.B++),this.o[e]=t},r.addAll=function(e){if(e instanceof bt)for(var t=e.G(),o=0;o<t.length;o++)this.set(t[o],e.get(t[o]));else for(t in e)this.set(t,e[t])},r.forEach=function(e,t){for(var o=this.G(),r=0;r<o.length;r++){var n=o[r],s=this.get(n);e.call(t,s,n,this)}},r.clone=function(){return new bt(this)},r.keys=function(){return ft(this.u(!0)).c()},r.values=function(){return ft(this.u(!1)).c()},r.entries=function(){var e=this;return function(e,t){return new ut(e,t)}(this.keys(),(function(t){return[t,e.get(t)]}))},r.u=function(e){mt(this);var t=0,o=this.B,r=this,n=new pt;return n.a=function(){if(o!=r.B)throw Error("The map has changed since the iterator was created");if(t>=r.j.length)throw ct;var n=r.j[t++];return e?n:r.o[n]},n.next=n.a.bind(n),n};var Et=/^(?:([^:/?#.]+):)?(?:\\/\\/(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$/;function Tt(e){Fe.call(this),this.headers=new bt,this.C=e||null,this.c=!1,this.J=this.a=null,this.P=this.v="",this.g=0,this.l="",this.i=this.N=this.s=this.L=!1,this.h=0,this.w=null,this.m=At,this.I=this.M=!1}N(Tt,Fe);var At="";Tt.prototype.b=tt(ot(),"goog.net.XhrIo",void 0).g;var vt=/^https?$/i,It=["POST","PUT"];function Rt(e,t){e.c=!1,e.a&&(e.i=!0,e.a.abort(),e.i=!1),e.l=t,e.g=5,Ot(e),wt(e)}function Ot(e){e.L||(e.L=!0,xe(e,"complete"),xe(e,"error"))}function jt(e){if(e.c&&void 0!==S)if(e.J[1]&&4==Ct(e)&&2==e.getStatus())nt(e.b,Mt(e,"Local request error detected and ignored"));else if(e.s&&4==Ct(e))He(e.R,0,e);else if(xe(e,"readystatechange"),4==Ct(e)){nt(e.b,Mt(e,"Request complete")),e.c=!1;try{var t,o=e.getStatus();e:switch(o){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var r=!0;break e;default:r=!1}if(!(t=r)){var n;if(n=0===o){var s=String(e.v).match(Et)[1]||null;if(!s&&E.self&&E.self.location){var i=E.self.location.protocol;s=i.substr(0,i.length-1)}n=!vt.test(s?s.toLowerCase():"")}t=n}if(t)xe(e,"complete"),xe(e,"success");else{e.g=6;try{var a=2<Ct(e)?e.a.statusText:""}catch(t){nt(e.b,"Can not get status: "+t.message),a=""}e.l=a+" ["+e.getStatus()+"]",Ot(e)}}finally{wt(e)}}}function wt(e){if(e.a){Nt(e);var t=e.a,o=e.J[0]?A:null;e.a=null,e.J=null,xe(e,"ready");try{t.onreadystatechange=o}catch(t){(e=e.b)&&rt(e,Ke,"Problem encountered resetting onreadystatechange: "+t.message)}}}function Nt(e){e.a&&e.I&&(e.a.ontimeout=null),e.w&&(E.clearTimeout(e.w),e.w=null)}function Ct(e){return e.a?e.a.readyState:0}function Ut(e,t){if(e.a&&4==Ct(e))return null===(e=e.a.getResponseHeader(t))?void 0:e}function Mt(e,t){return t+" ["+e.P+" "+e.v+" "+e.getStatus()+"]"}(r=Tt.prototype).T=function(){void 0!==S&&this.a&&(this.l="Timed out after "+this.h+"ms, aborting",this.g=8,nt(this.b,Mt(this,this.l)),xe(this,"timeout"),this.abort(8))},r.abort=function(e){this.a&&this.c&&(nt(this.b,Mt(this,"Aborting")),this.c=!1,this.i=!0,this.a.abort(),this.i=!1,this.g=e||7,xe(this,"complete"),xe(this,"abort"),wt(this))},r.R=function(){this.K||(this.N||this.s||this.i?jt(this):this.W())},r.W=function(){jt(this)},r.getStatus=function(){try{return 2<Ct(this)?this.a.status:-1}catch(e){return-1}};var Lt={},Dt=null;function Bt(){if(!Dt){Dt={};for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),t=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=e.concat(t[o].split(""));Lt[o]=r;for(var n=0;n<r.length;n++){var s=r[n];void 0===Dt[s]&&(Dt[s]=n)}}}}var Pt=["content-type","grpc-status","grpc-message"];function Ft(e){this.a=e.Z,this.m=null,this.b=[],this.h=[],this.g=[],this.f=[],this.c=[],this.l=!1,this.i=0,this.s=new x;var t=this;je(this.a,"readystatechange",(function(){var e=t.a;if(e=e.a?e.a.getResponseHeader("Content-Type"):null){if(0==(e=e.toLowerCase()).lastIndexOf("application/grpc-web-text",0)){e=t.a;try{var o=e.a?e.a.responseText:""}catch(t){nt(e.b,"Can not get responseText: "+t.message),o=""}if(o=(e=o||"").length-e.length%4,0==(e=e.substr(t.i,o-t.i)).length)return;t.i=o,e=function(e){var t=e.length,o=3*t/4;o%3?o=Math.floor(o):z("=.",e[t-1])&&(o=z("=.",e[t-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return function(e,t){function o(t){for(;r<e.length;){var o=e.charAt(r++),n=Dt[o];if(null!=n)return n;if(!/^[\\s\\xa0]*$/.test(o))throw Error("Unknown base64 encoding at char: "+o)}return t}Bt();for(var r=0;;){var n=o(-1),s=o(0),i=o(64),a=o(64);if(64===a&&-1===n)break;t(n<<2|s>>4),64!=i&&(t(s<<4&240|i>>2),64!=a&&t(i<<6&192|a))}}(e,(function(e){r[n++]=e})),r.subarray(0,n)}(e)}else{if(0!=e.lastIndexOf("application/grpc",0))return void Wt(t,new D(2,"Unknown Content-type received."));e=new Uint8Array(function(e){try{if(!e.a)return null;if("response"in e.a)return e.a.response;switch(e.m){case At:case"text":return e.a.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.a)return e.a.mozResponseArrayBuffer}var t=e.b;return t&&rt(t,Ke,"Response type "+e.m+" is not supported on this browser"),null}catch(t){return nt(e.b,"Can not get response: "+t.message),null}}(t.a))}o=null;try{o=function(e,t){function o(e){a.f++,a.a=(a.a<<8)+e,4==a.f&&(a.b=2,a.g=0,"undefined"!=typeof Uint8Array?a.c=new Uint8Array(a.a):a.c=Array(a.a),0==a.a&&n())}function r(e){a.c[a.g++]=e,a.g==a.a&&n()}function n(){var e={};e[a.h]=a.c,a.i.push(e),a.b=W}var s,i,a=e,g=0;for(s=t instanceof Uint8Array||t instanceof Array?t:new Uint8Array(t);g<s.length;){switch(a.b){case 3:V(a,s,g,"stream already broken");break;case W:0==(i=s[g])||i==H?a.h=i:V(a,s,g,"invalid frame byte"),a.b=1,a.a=0,a.f=0;break;case 1:o(s[g]);break;case 2:r(s[g]);break;default:throw Error("unexpected parser state: "+a.b)}a.m++,g++}return e=a.i,a.i=[],0<e.length?e:null}(t.s,e)}catch(e){Wt(t,new D(2,"Error in parsing response body"))}if(o)for(e=0;e<o.length;e++){if(0 in o[e]){var r=o[e][0];if(r){var n=void 0;try{n=t.m(r)}catch(e){Wt(t,new D(13,"Error when deserializing response data: "+n))}if(n){r=t;for(var s=0;s<r.b.length;s++)r.b[s](n)}}}if(H in o[e]&&0<o[e][H].length){for(r="",n=0;n<o[e][H].length;n++)r+=String.fromCharCode(o[e][H][n]);for(r=r.trim().split("\\r\\n"),n={},s=0;s<r.length;s++){var i=r[s].indexOf(":");n[r[s].substring(0,i).trim()]=r[s].substring(i+1).trim()}r=n,n=0,s="","grpc-status"in r&&(n=Number(r["grpc-status"]),delete r["grpc-status"]),"grpc-message"in r&&(s=r["grpc-message"],delete r["grpc-message"]),Wt(t,new D(n,s,r))}}}})),je(this.a,"complete",(function(){var e=t.a.g,o=2,r="",n={},s=function(e){var t={};e=(e.a&&4==Ct(e)&&e.a.getAllResponseHeaders()||"").split("\\r\\n");for(var o=0;o<e.length;o++)if(!/^[\\s\\xa0]*$/.test(e[o])){var r=Z(e[o]),n=r[0];if("string"==typeof(r=r[1])){r=r.trim();var s=t[n]||[];t[n]=s,s.push(r)}}return function(e,t){var o,r={};for(o in e)r[o]=t.call(void 0,e[o],o,e);return r}(t,(function(e){return e.join(", ")}))}(t.a);if(Object.keys(s).forEach((function(e){Pt.includes(e)||(n[e]=s[e])})),function(e,t){for(var o=0;o<e.g.length;o++)e.g[o](t)}(t,n),0!=e){switch(e){case 7:o=10;break;case 8:o=4;break;case 6:o=function(e){switch(e){case 200:return 0;case 400:return 3;case 401:return 16;case 403:return 7;case 404:return 5;case 409:return 10;case 412:return 9;case 429:return 8;case 499:return 1;case 500:default:return 2;case 501:return 12;case 503:return 14;case 504:return 4}}(t.a.getStatus());break;default:o=14}10==o&&t.l||Wt(t,new D(o,function(e){switch(e){case 0:return"No Error";case 1:return"Access denied to content document";case 2:return"File not found";case 3:return"Firefox silently errored";case 4:return"Application custom error";case 5:return"An exception occurred";case 6:return"Http response at 400 or 500 level";case 7:return"Request was aborted";case 8:return"Request timed out";case 9:return"The resource is not available offline";default:return"Unrecognized error code"}}(e)))}else e=!1,"grpc-status"in s&&(o=Number(Ut(t.a,"grpc-status")),"grpc-message"in s&&(r=Ut(t.a,"grpc-message")),0!=o&&(Wt(t,new D(o,r||"",s)),e=!0)),e||function(e){for(var t=0;t<e.c.length;t++)e.c[t]()}(t)}))}function xt(e,t){-1<(t=e.indexOf(t))&&e.splice(t,1)}function Wt(e,t){if(0!=t.code)for(var o=new D(t.code,decodeURIComponent(t.message||""),t.metadata),r=0;r<e.f.length;r++)e.f[r](o);for(t={code:t.code,details:decodeURIComponent(t.message||""),metadata:t.metadata},o=0;o<e.h.length;o++)e.h[o](t)}function Ht(e,t){e=void 0===e?{}:e,this.a=e.format||T("format",e)||"text",this.g=e.aa||T("suppressCorsPreflight",e)||!1,this.f=e.withCredentials||T("withCredentials",e)||!1,this.b=e.$||T("streamInterceptors",e)||[],this.h=e.ba||T("unaryInterceptors",e)||[],this.c=t||null}function Vt(e,t,o){var r=t.getMethodDescriptor(),n=o+r.name;(o=e.c?e.c:new Tt).M=e.f;var s=new Ft({Z:o});s.m=r.b;var i=t.getMetadata();for(a in i)o.headers.set(a,i[a]);if("text"==e.a?(o.headers.set("Content-Type","application/grpc-web-text"),o.headers.set("Accept","application/grpc-web-text")):o.headers.set("Content-Type","application/grpc-web+proto"),o.headers.set("X-User-Agent","grpc-web-javascript/0.1"),o.headers.set("X-Grpc-Web","1"),o.headers.has("deadline")){var a=Number(o.headers.get("deadline"));a=Math.ceil(a-(new Date).getTime()),o.headers.delete("deadline"),1/0===a&&(a=0),0<a&&(o.headers.set("grpc-timeout",a+"m"),o.h=Math.max(0,Math.max(1e3,Math.ceil(1.1*a))))}if(e.g){a={};for(var g=p((i=o.headers).keys()),l=g.next();!l.done;l=g.next())a[l=l.value]=i.get(l);o.headers.clear();e:{for(u in a){var u=!1;break e}u=!0}u||(a=function(e){var t="";return function(e,t){for(var o in e)t.call(void 0,e[o],o,e)}(e,(function(e,o){t+=o,t+=":",t+=e,t+="\\r\\n"})),t}(a),"string"==typeof n?(u=encodeURIComponent("$httpHeaders"),(u+=a=null!=a?"="+encodeURIComponent(String(a)):"")&&(0>(a=n.indexOf("#"))&&(a=n.length),0>(i=n.indexOf("?"))||i>a?(i=a,g=""):g=n.substring(i+1,a),a=(n=[n.substr(0,i),g,n.substr(a)])[1],n[1]=u?a?a+"&"+u:u:a,n=n[0]+(n[1]?"?"+n[1]:"")+n[2])):n.a("$httpHeaders",a))}for(r=(t=(0,r.a)(t.getRequestMessage())).length,u=[0,0,0,0],a=new Uint8Array(5+r),i=3;0<=i;i--)u[i]=r%256,r>>>=8;if(a.set(new Uint8Array(u),1),a.set(t,5),t=a,"text"==e.a){var c;for(e=t,void 0===c&&(c=0),Bt(),c=Lt[c],t=Array(Math.floor(e.length/3)),r=c[64]||"",u=a=0;a<e.length-2;a+=3){l=e[a];var f=e[a+1];g=e[a+2],i=c[l>>2],l=c[(3&l)<<4|f>>4],f=c[(15&f)<<2|g>>6],g=c[63&g],t[u++]=i+l+f+g}switch(i=0,g=r,e.length-a){case 2:g=c[(15&(i=e[a+1]))<<2]||r;case 1:e=e[a],t[u]=c[e>>2]+c[(3&e)<<4|i>>4]+g+r}t=t.join("")}else"binary"==e.a&&(o.m="arraybuffer");return function(e,t,o){if(e.a)throw Error("[goog.net.XhrIo] Object is active with another request="+e.v+"; newUri="+t);e.v=t,e.l="",e.g=0,e.P="POST",e.L=!1,e.c=!0,e.a=e.C?gt(e.C):gt(Ye),e.J=e.C?it(e.C):it(Ye),e.a.onreadystatechange=w(e.R,e);try{nt(e.b,Mt(e,"Opening Xhr")),e.N=!0,e.a.open("POST",String(t),!0),e.N=!1}catch(t){return nt(e.b,Mt(e,"Error opening Xhr: "+t.message)),void Rt(e,t)}t=o||"";var r=(o=e.headers.clone()).G().find((function(e){return"content-type"==e.toLowerCase()})),n=E.FormData&&t instanceof E.FormData;!(0<=k(It,"POST"))||r||n||o.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),o.forEach((function(e,t){this.a.setRequestHeader(t,e)}),e),e.m&&(e.a.responseType=e.m),"withCredentials"in e.a&&e.a.withCredentials!==e.M&&(e.a.withCredentials=e.M);try{Nt(e),0<e.h&&(e.I=function(e){return oe&&ce()&&"number"==typeof e.timeout&&void 0!==e.ontimeout}(e.a),nt(e.b,Mt(e,"Will abort after "+e.h+"ms if incomplete, xhr2 "+e.I)),e.I?(e.a.timeout=e.h,e.a.ontimeout=w(e.T,e)):e.w=He(e.T,e.h,e)),nt(e.b,Mt(e,"Sending request")),e.s=!0,e.a.send(t),e.s=!1}catch(t){nt(e.b,Mt(e,"Send error: "+t.message)),Rt(e,t)}}(o,n,t),s}function Gt(e,t,o){var r=!1,n=null,s=!1;e.on("data",(function(e){r=!0,n=e})),e.on("error",(function(e){0==e.code||s||(s=!0,t(e,null))})),e.on("status",(function(e){0==e.code||s?o&&t(null,null,e):(s=!0,t({code:e.code,message:e.details,metadata:e.metadata},null))})),o&&e.on("metadata",(function(e){t(null,null,null,e)})),e.on("end",(function(){s||(r?t(null,n):t({code:2,message:"Incomplete response"})),o&&t(null,null)}))}function kt(e,t){var o=e;return t.forEach((function(e){var t=o;o=function(o){return e.intercept(o,t)}})),o}Ft.prototype.on=function(e,t){return"data"==e?this.b.push(t):"status"==e?this.h.push(t):"metadata"==e?this.g.push(t):"end"==e?this.c.push(t):"error"==e&&this.f.push(t),this},Ft.prototype.removeListener=function(e,t){return"data"==e?xt(this.b,t):"status"==e?xt(this.h,t):"metadata"==e?xt(this.g,t):"end"==e?xt(this.c,t):"error"==e&&xt(this.f,t),this},Ft.prototype.cancel=function(){this.l=!0,this.a.abort()},Ft.prototype.cancel=Ft.prototype.cancel,Ft.prototype.removeListener=Ft.prototype.removeListener,Ft.prototype.on=Ft.prototype.on,Ht.prototype.X=function(e,t,o,r,n){var s=this,i=e.substr(0,e.length-r.name.length);return Gt(e=kt((function(e){return Vt(s,e,i)}),this.b).call(this,L(r,t,o)),n,!1),new B(e)},Ht.prototype.S=function(e,t,o,r){var n=this,s=e.substr(0,e.length-r.name.length);return kt((function(e){return new Promise((function(t,o){var r,i,a;Gt(Vt(n,e,s),(function(n,s,g,l){n?o(n):s?a=s:g?i=g:l?r=l:(n=e.getMethodDescriptor(),t(new M(a,n,s=void 0===(s=r)?{}:s,void 0===i?null:i)))}),!0)}))}),this.h).call(this,L(r,t,o)).then((function(e){return e.getResponseMessage()}))},Ht.prototype.unaryCall=function(e,t,o,r){return this.S(e,t,o,r)},Ht.prototype.Y=function(e,t,o,r){var n=this,s=e.substr(0,e.length-r.name.length);return kt((function(e){return Vt(n,e,s)}),this.b).call(this,L(r,t,o))},Ht.prototype.serverStreaming=Ht.prototype.Y,Ht.prototype.unaryCall=Ht.prototype.unaryCall,Ht.prototype.thenableCall=Ht.prototype.S,Ht.prototype.rpcCall=Ht.prototype.X,e.exports.GrpcWebClientBase=Ht,e.exports.StatusCode={OK:0,CANCELLED:1,UNKNOWN:2,INVALID_ARGUMENT:3,DEADLINE_EXCEEDED:4,NOT_FOUND:5,ALREADY_EXISTS:6,PERMISSION_DENIED:7,UNAUTHENTICATED:16,RESOURCE_EXHAUSTED:8,FAILED_PRECONDITION:9,ABORTED:10,OUT_OF_RANGE:11,UNIMPLEMENTED:12,INTERNAL:13,UNAVAILABLE:14,DATA_LOSS:15},e.exports.MethodDescriptor=function(e,t,o,r,n,s){this.name=e,this.a=n,this.b=s},e.exports.MethodType={UNARY:"unary",SERVER_STREAMING:"server_streaming",BIDI_STREAMING:"bidi_streaming"}}},__webpack_module_cache__={};function __nested_webpack_require_282909__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(o.exports,o,o.exports,__nested_webpack_require_282909__),o.exports}__nested_webpack_require_282909__.d=(e,t)=>{for(var o in t)__nested_webpack_require_282909__.o(t,o)&&!__nested_webpack_require_282909__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},__nested_webpack_require_282909__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__nested_webpack_require_282909__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_282909__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};return(()=>{"use strict";function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}__nested_webpack_require_282909__.r(__webpack_exports__),__nested_webpack_require_282909__.d(__webpack_exports__,{InfoService:()=>c,SessionInfo:()=>r,VersionInfo:()=>t});var t=function(){function t(e){var o=e.major,r=e.minor,n=e.patch,s=e.preRelease,i=e.build;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.major=o,this.minor=r,this.patch=n,this.preRelease=s,this.build=i}var o,r;return o=t,(r=[{key:"noBuild",value:function(){var e=new t(this);return e.build=void 0,e}},{key:"noPreRelease",value:function(){var e=new t(this);return e.preRelease=void 0,e}},{key:"toString",value:function(){var e="".concat(this.major,".").concat(this.minor,".").concat(this.patch);return this.preRelease&&(e+="-".concat(this.preRelease)),this.build&&(e+="+".concat(this.build)),e}}])&&e(o.prototype,r),t}();function o(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var r=function(){function e(t){var o=t.realm,r=t.username,n=t.roles,s=t.permissions,i=t.expires;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.realm=o,this.username=r,this.roles=n||[],this.permissions=s||[],this.expires=i}var t,r;return t=e,(r=[{key:"implies",value:function(e){if(!this.permissions)return!1;for(var t=e.split(":"),o=["*",e],r=1;r<t.length;r++)o.push(t.slice(0,r).join(":")+"*");return this.permissions.filter((function(e){return o.indexOf(e)>-1})).length>0}}])&&o(t.prototype,r),e}(),n=__nested_webpack_require_282909__(661);function s(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?s(Object(o),!0).forEach((function(t){a(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):s(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function g(e,t,o,r,n,s,i){try{var a=e[s](i),g=a.value}catch(e){return void o(e)}a.done?t(g):Promise.resolve(g).then(r,n)}function l(e){return function(){var t=this,o=arguments;return new Promise((function(r,n){var s=e.apply(t,o);function i(e){g(s,r,n,i,a,"next",e)}function a(e){g(s,r,n,i,a,"throw",e)}i(void 0)}))}}function u(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var c=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.uri=t||"/api"}var o,s,a,g,c,p,f;return o=e,s=[{key:"getVersionInfo",value:(f=l(regeneratorRuntime.mark((function e(){var o,r,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new n.h.v1.GeneralInfoServicePromiseClient(this.uri,null,null),r=new n.h.v1.GetVersionInfoRequest,e.next=4,o.getVersionInfo(r,{});case 4:return s=e.sent,e.abrupt("return",new t(s.getVersionInfo().toObject()));case 6:case"end":return e.stop()}}),e,this)}))),function(){return f.apply(this,arguments)})},{key:"_getSessionInfo",value:(p=l(regeneratorRuntime.mark((function e(t,o){var s,a,g,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s={},t&&(s.authentication="Basic "+btoa("".concat(t,":").concat(o))),a=new n.h.v1.GeneralInfoServicePromiseClient(this.uri,null,null),g=new n.h.v1.GetSessionInfoRequest,e.next=6,a.getSessionInfo(g,s);case 6:return l=e.sent,e.abrupt("return",new r(i(i({},l.toObject()),{},{roles:l.getRolesList(),permissions:l.getPermissionsList()})));case 8:case"end":return e.stop()}}),e,this)}))),function(e,t){return p.apply(this,arguments)})},{key:"getSessionInfo",value:(c=l(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getSessionInfo();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(){return c.apply(this,arguments)})},{key:"login",value:(g=l(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getSessionInfo(t,o);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(e,t){return g.apply(this,arguments)})},{key:"logout",value:(a=l(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._getSessionInfo("logout","");case 3:throw e.sent,new Error("Logout did not proceed correctly. Something went wrong and it looks like a programming error in the webui. Please report");case 7:if(e.prev=7,e.t0=e.catch(0),16!==e.t0.code){e.next=12;break}return e.abrupt("return",!0);case 12:throw e.t0;case 13:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return a.apply(this,arguments)})}],s&&u(o.prototype,s),e}()})(),__webpack_exports__})()}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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YW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlL2Rpc3QvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZS5qcz83ODEzIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuQ2Fvc0RCSW5mb1NlcnZpY2U9dCgpOmUuQ2Fvc0RCSW5mb1NlcnZpY2U9dCgpfShzZWxmLChmdW5jdGlvbigpe3JldHVybigoKT0+e3ZhciBfX3dlYnBhY2tfbW9kdWxlc19fPXs2NjE6KGUsdCxvKT0+e3ZhciByPXt9O3IudjE9byg5NTgpLHQuaD1yfSw5NTg6KGUsdCxvKT0+e3ZhciByPXt9O3Iud2ViPW8oNDApO3ZhciBuPXtjYW9zZGI6e319O24uY2Fvc2RiLmluZm89e30sbi5jYW9zZGIuaW5mby52MT1vKDk4OCksbi5jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2VDbGllbnQ9ZnVuY3Rpb24oZSx0LG8pe298fChvPXt9KSxvLmZvcm1hdD1cInRleHRcIix0aGlzLmNsaWVudF89bmV3IHIud2ViLkdycGNXZWJDbGllbnRCYXNlKG8pLHRoaXMuaG9zdG5hbWVfPWV9LG4uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlUHJvbWlzZUNsaWVudD1mdW5jdGlvbihlLHQsbyl7b3x8KG89e30pLG8uZm9ybWF0PVwidGV4dFwiLHRoaXMuY2xpZW50Xz1uZXcgci53ZWIuR3JwY1dlYkNsaWVudEJhc2UobyksdGhpcy5ob3N0bmFtZV89ZX07dmFyIHM9bmV3IHIud2ViLk1ldGhvZERlc2NyaXB0b3IoXCIvY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlL0dldFZlcnNpb25JbmZvXCIsci53ZWIuTWV0aG9kVHlwZS5VTkFSWSxuLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdCxuLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlcmlhbGl6ZUJpbmFyeSgpfSksbi5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5KTtuLmNhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZUNsaWVudC5wcm90b3R5cGUuZ2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0aGlzLmNsaWVudF8ucnBjQ2FsbCh0aGlzLmhvc3RuYW1lXytcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0VmVyc2lvbkluZm9cIixlLHR8fHt9LHMsbyl9LG4uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlUHJvbWlzZUNsaWVudC5wcm90b3R5cGUuZ2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jbGllbnRfLnVuYXJ5Q2FsbCh0aGlzLmhvc3RuYW1lXytcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0VmVyc2lvbkluZm9cIixlLHR8fHt9LHMpfTt2YXIgaT1uZXcgci53ZWIuTWV0aG9kRGVzY3JpcHRvcihcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0U2Vzc2lvbkluZm9cIixyLndlYi5NZXRob2RUeXBlLlVOQVJZLG4uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LG4uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWFsaXplQmluYXJ5KCl9KSxuLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnkpO24uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlQ2xpZW50LnByb3RvdHlwZS5nZXRTZXNzaW9uSW5mbz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfK1wiL2Nhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZS9HZXRTZXNzaW9uSW5mb1wiLGUsdHx8e30saSxvKX0sbi5jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2VQcm9taXNlQ2xpZW50LnByb3RvdHlwZS5nZXRTZXNzaW9uSW5mbz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNsaWVudF8udW5hcnlDYWxsKHRoaXMuaG9zdG5hbWVfK1wiL2Nhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZS9HZXRTZXNzaW9uSW5mb1wiLGUsdHx8e30saSl9LGUuZXhwb3J0cz1uLmNhb3NkYi5pbmZvLnYxfSw5ODg6KGUsdCxvKT0+e3ZhciByPW8oMTkpLG49cixzPUZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdFwiLG51bGwscyksbi5leHBvcnRTeW1ib2woXCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlXCIsbnVsbCxzKSxuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdFwiLG51bGwscyksbi5leHBvcnRTeW1ib2woXCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlXCIsbnVsbCxzKSxuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvXCIsbnVsbCxzKSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbz1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxudWxsLG51bGwpfSxuLmluaGVyaXRzKHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLHIuTWVzc2FnZSksbi5ERUJVRyYmIUNPTVBJTEVEJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mb1wiKSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Q9ZnVuY3Rpb24oZSl7ci5NZXNzYWdlLmluaXRpYWxpemUodGhpcyxlLDAsLTEsbnVsbCxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Qsci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QuZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3RcIikscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZT1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxudWxsLG51bGwpfSxuLmluaGVyaXRzKHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2Usci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLmRpc3BsYXlOYW1lPVwicHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZVwiKSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3Q9ZnVuY3Rpb24oZSl7ci5NZXNzYWdlLmluaXRpYWxpemUodGhpcyxlLDAsLTEsbnVsbCxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3Qsci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3RcIikscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZT1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnJlcGVhdGVkRmllbGRzXyxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLHIuTWVzc2FnZSksbi5ERUJVRyYmIUNPTVBJTEVEJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5kaXNwbGF5TmFtZT1cInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2VcIiksci5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCYmKHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8udG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8udG9PYmplY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbz17bWFqb3I6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCwxLDApLG1pbm9yOnIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHQsMiwwKSxwYXRjaDpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDMsMCkscHJlUmVsZWFzZTpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDQsXCJcIiksYnVpbGQ6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCw1LFwiXCIpfTtyZXR1cm4gZSYmKG8uJGpzcGJNZXNzYWdlSW5zdGFuY2U9dCksb30pLHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbztyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG8sdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOylzd2l0Y2godC5nZXRGaWVsZE51bWJlcigpKXtjYXNlIDE6dmFyIG89dC5yZWFkSW50MzIoKTtlLnNldE1ham9yKG8pO2JyZWFrO2Nhc2UgMjpvPXQucmVhZEludDMyKCksZS5zZXRNaW5vcihvKTticmVhaztjYXNlIDM6bz10LnJlYWRJbnQzMigpLGUuc2V0UGF0Y2gobyk7YnJlYWs7Y2FzZSA0Om89dC5yZWFkU3RyaW5nKCksZS5zZXRQcmVSZWxlYXNlKG8pO2JyZWFrO2Nhc2UgNTpvPXQucmVhZFN0cmluZygpLGUuc2V0QnVpbGQobyk7YnJlYWs7ZGVmYXVsdDp0LnNraXBGaWVsZCgpfXJldHVybiBlfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHIuQmluYXJ5V3JpdGVyO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG89dm9pZCAwOzAhPT0obz1lLmdldE1ham9yKCkpJiZ0LndyaXRlSW50MzIoMSxvKSwwIT09KG89ZS5nZXRNaW5vcigpKSYmdC53cml0ZUludDMyKDIsbyksMCE9PShvPWUuZ2V0UGF0Y2goKSkmJnQud3JpdGVJbnQzMigzLG8pLChvPWUuZ2V0UHJlUmVsZWFzZSgpKS5sZW5ndGg+MCYmdC53cml0ZVN0cmluZyg0LG8pLChvPWUuZ2V0QnVpbGQoKSkubGVuZ3RoPjAmJnQud3JpdGVTdHJpbmcoNSxvKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldE1ham9yPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsMSwwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLnNldE1ham9yPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuZ2V0TWlub3I9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywyLDApfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2V0TWlub3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLDIsZSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS5nZXRQYXRjaD1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDMsMCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS5zZXRQYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsMyxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldFByZVJlbGVhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcyw0LFwiXCIpfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2V0UHJlUmVsZWFzZT1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsNCxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldEJ1aWxkPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsNSxcIlwiKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLnNldEJ1aWxkPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcyw1LGUpfSxyLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnRvT2JqZWN0KGUsdGhpcyl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC50b09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciBvPXt9O3JldHVybiBlJiYoby4kanNwYk1lc3NhZ2VJbnN0YW5jZT10KSxvfSkscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Q7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobyx0KX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOyl0LmdldEZpZWxkTnVtYmVyKCksdC5za2lwRmllbGQoKTtyZXR1cm4gZX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgci5CaW5hcnlXcml0ZXI7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcj1mdW5jdGlvbihlLHQpe30sci5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCYmKHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnRvT2JqZWN0KGUsdGhpcyl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UudG9PYmplY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbyxyPXt2ZXJzaW9uSW5mbzoobz10LmdldFZlcnNpb25JbmZvKCkpJiZwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby50b09iamVjdChlLG8pfTtyZXR1cm4gZSYmKHIuJGpzcGJNZXNzYWdlSW5zdGFuY2U9dCkscn0pLHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHIuQmluYXJ5UmVhZGVyKGUpLG89bmV3IHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2U7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG8sdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Lm5leHRGaWVsZCgpJiYhdC5pc0VuZEdyb3VwKCk7KWlmKDE9PT10LmdldEZpZWxkTnVtYmVyKCkpe3ZhciBvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbzt0LnJlYWRNZXNzYWdlKG8scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKSxlLnNldFZlcnNpb25JbmZvKG8pfWVsc2UgdC5za2lwRmllbGQoKTtyZXR1cm4gZX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHIuQmluYXJ5V3JpdGVyO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsZSksZS5nZXRSZXN1bHRCdWZmZXIoKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcj1mdW5jdGlvbihlLHQpe3ZhciBvO251bGwhPShvPWUuZ2V0VmVyc2lvbkluZm8oKSkmJnQud3JpdGVNZXNzYWdlKDEsbyxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmdldFZlcnNpb25JbmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQodGhpcyxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbywxKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSl7cmV0dXJuIHIuTWVzc2FnZS5zZXRXcmFwcGVyRmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5jbGVhclZlcnNpb25JbmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0VmVyc2lvbkluZm8odm9pZCAwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuaGFzVmVyc2lvbkluZm89ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9ci5NZXNzYWdlLmdldEZpZWxkKHRoaXMsMSl9LHIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QudG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnRvT2JqZWN0PWZ1bmN0aW9uKGUsdCl7dmFyIG89e307cmV0dXJuIGUmJihvLiRqc3BiTWVzc2FnZUluc3RhbmNlPXQpLG99KSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHIuQmluYXJ5UmVhZGVyKGUpLG89bmV3IHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdDtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihvLHQpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Lm5leHRGaWVsZCgpJiYhdC5pc0VuZEdyb3VwKCk7KXQuZ2V0RmllbGROdW1iZXIoKSx0LnNraXBGaWVsZCgpO3JldHVybiBlfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbigpe3ZhciBlPW5ldyByLkJpbmFyeVdyaXRlcjtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsZSksZS5nZXRSZXN1bHRCdWZmZXIoKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyPWZ1bmN0aW9uKGUsdCl7fSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnJlcGVhdGVkRmllbGRzXz1bMyw1XSxyLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUudG9PYmplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UudG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS50b09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciBvLG49e3JlYWxtOnIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHQsMSxcIlwiKSx1c2VybmFtZTpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDIsXCJcIikscm9sZXNMaXN0Om51bGw9PShvPXIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHQsMykpP3ZvaWQgMDpvLGV4cGlyZXM6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCw0LDApLHBlcm1pc3Npb25zTGlzdDpudWxsPT0obz1yLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZCh0LDUpKT92b2lkIDA6b307cmV0dXJuIGUmJihuLiRqc3BiTWVzc2FnZUluc3RhbmNlPXQpLG59KSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihvLHQpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOylzd2l0Y2godC5nZXRGaWVsZE51bWJlcigpKXtjYXNlIDE6dmFyIG89dC5yZWFkU3RyaW5nKCk7ZS5zZXRSZWFsbShvKTticmVhaztjYXNlIDI6bz10LnJlYWRTdHJpbmcoKSxlLnNldFVzZXJuYW1lKG8pO2JyZWFrO2Nhc2UgMzpvPXQucmVhZFN0cmluZygpLGUuYWRkUm9sZXMobyk7YnJlYWs7Y2FzZSA0Om89dC5yZWFkSW50NjQoKSxlLnNldEV4cGlyZXMobyk7YnJlYWs7Y2FzZSA1Om89dC5yZWFkU3RyaW5nKCksZS5hZGRQZXJtaXNzaW9ucyhvKTticmVhaztkZWZhdWx0OnQuc2tpcEZpZWxkKCl9cmV0dXJuIGV9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbigpe3ZhciBlPW5ldyByLkJpbmFyeVdyaXRlcjtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbz12b2lkIDA7KG89ZS5nZXRSZWFsbSgpKS5sZW5ndGg+MCYmdC53cml0ZVN0cmluZygxLG8pLChvPWUuZ2V0VXNlcm5hbWUoKSkubGVuZ3RoPjAmJnQud3JpdGVTdHJpbmcoMixvKSwobz1lLmdldFJvbGVzTGlzdCgpKS5sZW5ndGg+MCYmdC53cml0ZVJlcGVhdGVkU3RyaW5nKDMsbyksMCE9PShvPWUuZ2V0RXhwaXJlcygpKSYmdC53cml0ZUludDY0KDQsbyksKG89ZS5nZXRQZXJtaXNzaW9uc0xpc3QoKSkubGVuZ3RoPjAmJnQud3JpdGVSZXBlYXRlZFN0cmluZyg1LG8pfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRSZWFsbT1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDEsXCJcIil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFJlYWxtPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRVc2VybmFtZT1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDIsXCJcIil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFVzZXJuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywyLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRSb2xlc0xpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldFJlcGVhdGVkRmllbGQodGhpcywzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0Um9sZXNMaXN0PWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0RmllbGQodGhpcywzLGV8fFtdKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuYWRkUm9sZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRGaWVsZCh0aGlzLDMsZSx0KX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuY2xlYXJSb2xlc0xpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXRSb2xlc0xpc3QoW10pfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRFeHBpcmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsNCwwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0RXhwaXJlcz1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsNCxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuZ2V0UGVybWlzc2lvbnNMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHRoaXMsNSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFBlcm1pc3Npb25zTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldEZpZWxkKHRoaXMsNSxlfHxbXSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmFkZFBlcm1pc3Npb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQodGhpcyw1LGUsdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmNsZWFyUGVybWlzc2lvbnNMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0UGVybWlzc2lvbnNMaXN0KFtdKX0sbi5vYmplY3QuZXh0ZW5kKHQscHJvdG8uY2Fvc2RiLmluZm8udjEpfSwxOTpmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e30sJGpzY29tcC5maW5kSW50ZXJuYWw9ZnVuY3Rpb24oZSx0LG8pe2UgaW5zdGFuY2VvZiBTdHJpbmcmJihlPVN0cmluZyhlKSk7Zm9yKHZhciByPWUubGVuZ3RoLG49MDtuPHI7bisrKXt2YXIgcz1lW25dO2lmKHQuY2FsbChvLHMsbixlKSlyZXR1cm57aTpuLHY6c319cmV0dXJue2k6LTEsdjp2b2lkIDB9fSwkanNjb21wLkFTU1VNRV9FUzU9ITEsJGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMSwkanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExLCRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMSwkanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxvKXtlIT1BcnJheS5wcm90b3R5cGUmJmUhPU9iamVjdC5wcm90b3R5cGUmJihlW3RdPW8udmFsdWUpfSwkanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3c9PT1lP2U6dm9pZCAwIT09X193ZWJwYWNrX3JlcXVpcmVfXy5nJiZudWxsIT1fX3dlYnBhY2tfcmVxdWlyZV9fLmc/X193ZWJwYWNrX3JlcXVpcmVfXy5nOmV9LCRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpLCRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZSx0LG8scil7aWYodCl7Zm9yKG89JGpzY29tcC5nbG9iYWwsZT1lLnNwbGl0KFwiLlwiKSxyPTA7cjxlLmxlbmd0aC0xO3IrKyl7dmFyIG49ZVtyXTtuIGluIG98fChvW25dPXt9KSxvPW9bbl19KHQ9dChyPW9bZT1lW2UubGVuZ3RoLTFdXSkpIT1yJiZudWxsIT10JiYkanNjb21wLmRlZmluZVByb3BlcnR5KG8sZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19LCRqc2NvbXAucG9seWZpbGwoXCJBcnJheS5wcm90b3R5cGUuZmluZEluZGV4XCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3JldHVybiAkanNjb21wLmZpbmRJbnRlcm5hbCh0aGlzLGUsdCkuaX19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzPWZ1bmN0aW9uKGUsdCxvKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgJ3RoaXMnIHZhbHVlIGZvciBTdHJpbmcucHJvdG90eXBlLlwiK28rXCIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWRcIik7aWYodCBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5cIitvK1wiIG11c3Qgbm90IGJlIGEgcmVndWxhciBleHByZXNzaW9uXCIpO3JldHVybiBlK1wiXCJ9LCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3ZhciBvPSRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzKHRoaXMsZSxcImVuZHNXaXRoXCIpO2UrPVwiXCIsdm9pZCAwPT09dCYmKHQ9by5sZW5ndGgpLHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigwfHQsby5sZW5ndGgpKTtmb3IodmFyIHI9ZS5sZW5ndGg7MDxyJiYwPHQ7KWlmKG9bLS10XSE9ZVstLXJdKXJldHVybiExO3JldHVybiAwPj1yfX0pLFwiZXM2XCIsXCJlczNcIiksJGpzY29tcC5wb2x5ZmlsbChcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3JldHVybiAkanNjb21wLmZpbmRJbnRlcm5hbCh0aGlzLGUsdCkudn19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGhcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV8fGZ1bmN0aW9uKGUsdCl7dmFyIG89JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxlLFwic3RhcnRzV2l0aFwiKTtlKz1cIlwiO3ZhciByPW8ubGVuZ3RoLG49ZS5sZW5ndGg7dD1NYXRoLm1heCgwLE1hdGgubWluKDB8dCxvLmxlbmd0aCkpO2Zvcih2YXIgcz0wO3M8biYmdDxyOylpZihvW3QrK10hPWVbcysrXSlyZXR1cm4hMTtyZXR1cm4gcz49bn19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLnJlcGVhdFwiLChmdW5jdGlvbihlKXtyZXR1cm4gZXx8ZnVuY3Rpb24oZSl7dmFyIHQ9JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxudWxsLFwicmVwZWF0XCIpO2lmKDA+ZXx8MTM0MjE3NzI3OTxlKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBjb3VudCB2YWx1ZVwiKTtlfD0wO2Zvcih2YXIgbz1cIlwiO2U7KTEmZSYmKG8rPXQpLChlPj4+PTEpJiYodCs9dCk7cmV0dXJuIG99fSksXCJlczZcIixcImVzM1wiKTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmLGdvb2cuaXNEZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9LGdvb2cuaXNTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9LGdvb2cuaXNCb29sZWFuPWZ1bmN0aW9uKGUpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgZX0sZ29vZy5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX0sZ29vZy5leHBvcnRQYXRoXz1mdW5jdGlvbihlLHQsbyl7ZT1lLnNwbGl0KFwiLlwiKSxvPW98fGdvb2cuZ2xvYmFsLGVbMF1pbiBvfHx2b2lkIDA9PT1vLmV4ZWNTY3JpcHR8fG8uZXhlY1NjcmlwdChcInZhciBcIitlWzBdKTtmb3IodmFyIHI7ZS5sZW5ndGgmJihyPWUuc2hpZnQoKSk7KSFlLmxlbmd0aCYmZ29vZy5pc0RlZih0KT9vW3JdPXQ6bz1vW3JdJiZvW3JdIT09T2JqZWN0LnByb3RvdHlwZVtyXT9vW3JdOm9bcl09e319LGdvb2cuZGVmaW5lPWZ1bmN0aW9uKGUsdCl7aWYoIUNPTVBJTEVEKXt2YXIgbz1nb29nLmdsb2JhbC5DTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyxyPWdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUztvJiZ2b2lkIDA9PT1vLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyxlKT90PW9bZV06ciYmdm9pZCAwPT09ci5ub2RlVHlwZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsZSkmJih0PXJbZV0pfXJldHVybiB0fSxnb29nLkZFQVRVUkVTRVRfWUVBUj0yMDEyLGdvb2cuREVCVUc9ITAsZ29vZy5MT0NBTEU9XCJlblwiLGdvb2cuVFJVU1RFRF9TSVRFPSEwLGdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRT0hMSxnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRyxnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITEsZ29vZy5wcm92aWRlPWZ1bmN0aW9uKGUpe2lmKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSl0aHJvdyBFcnJvcihcImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuXCIpO2lmKCFDT01QSUxFRCYmZ29vZy5pc1Byb3ZpZGVkXyhlKSl0aHJvdyBFcnJvcignTmFtZXNwYWNlIFwiJytlKydcIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlKX0sZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGUsdCl7aWYoIUNPTVBJTEVEKXtkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2VdO2Zvcih2YXIgbz1lOyhvPW8uc3Vic3RyaW5nKDAsby5sYXN0SW5kZXhPZihcIi5cIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG8pOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bb109ITB9Z29vZy5leHBvcnRQYXRoXyhlLHQpfSxnb29nLmdldFNjcmlwdE5vbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlIT1nb29nLmdsb2JhbD9nb29nLmdldFNjcmlwdE5vbmNlXyhlLmRvY3VtZW50KToobnVsbD09PWdvb2cuY3NwTm9uY2VfJiYoZ29vZy5jc3BOb25jZV89Z29vZy5nZXRTY3JpcHROb25jZV8oZ29vZy5nbG9iYWwuZG9jdW1lbnQpKSxnb29nLmNzcE5vbmNlXyl9LGdvb2cuTk9OQ0VfUEFUVEVSTl89L15bXFx3Ky9fLV0rWz1dezAsMn0kLyxnb29nLmNzcE5vbmNlXz1udWxsLGdvb2cuZ2V0U2NyaXB0Tm9uY2VfPWZ1bmN0aW9uKGUpe3JldHVybihlPWUucXVlcnlTZWxlY3RvciYmZS5xdWVyeVNlbGVjdG9yKFwic2NyaXB0W25vbmNlXVwiKSkmJihlPWUubm9uY2V8fGUuZ2V0QXR0cmlidXRlKFwibm9uY2VcIikpJiZnb29nLk5PTkNFX1BBVFRFUk5fLnRlc3QoZSk/ZTpcIlwifSxnb29nLlZBTElEX01PRFVMRV9SRV89L15bYS16QS1aXyRdW2EtekEtWjAtOS5fJF0qJC8sZ29vZy5tb2R1bGU9ZnVuY3Rpb24oZSl7aWYoIWdvb2cuaXNTdHJpbmcoZSl8fCFlfHwtMT09ZS5zZWFyY2goZ29vZy5WQUxJRF9NT0RVTEVfUkVfKSl0aHJvdyBFcnJvcihcIkludmFsaWQgbW9kdWxlIGlkZW50aWZpZXJcIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJNb2R1bGUgXCIrZStcIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS5cIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl0aHJvdyBFcnJvcihcImdvb2cubW9kdWxlIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuXCIpO2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU9ZSwhQ09NUElMRUQpe2lmKGdvb2cuaXNQcm92aWRlZF8oZSkpdGhyb3cgRXJyb3IoJ05hbWVzcGFjZSBcIicrZSsnXCIgYWxyZWFkeSBkZWNsYXJlZC4nKTtkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2VdfX0sZ29vZy5tb2R1bGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oZSl9LGdvb2cubW9kdWxlLmdldEludGVybmFsXz1mdW5jdGlvbihlKXtpZighQ09NUElMRUQpe2lmKGUgaW4gZ29vZy5sb2FkZWRNb2R1bGVzXylyZXR1cm4gZ29vZy5sb2FkZWRNb2R1bGVzX1tlXS5leHBvcnRzO2lmKCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZV0pcmV0dXJuIG51bGwhPShlPWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGUpKT9lOm51bGx9cmV0dXJuIG51bGx9LGdvb2cuTW9kdWxlVHlwZT17RVM2OlwiZXM2XCIsR09PRzpcImdvb2dcIn0sZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89bnVsbCxnb29nLmlzSW5Nb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCl8fGdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKX0sZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4hIWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlPT1nb29nLk1vZHVsZVR5cGUuR09PR30sZ29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlPT1nb29nLk1vZHVsZVR5cGUuRVM2KXJldHVybiEwO3ZhciBlPWdvb2cuZ2xvYmFsLiRqc2NvbXA7cmV0dXJuISFlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmdldEN1cnJlbnRNb2R1bGVQYXRoJiYhIWUuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKX0sZ29vZy5tb2R1bGUuZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZT1mdW5jdGlvbigpe2lmKCFDT01QSUxFRCYmIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGVcIik7aWYoIUNPTVBJTEVEJiYhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl0aHJvdyBFcnJvcihcImdvb2cubW9kdWxlIG11c3QgYmUgY2FsbGVkIHByaW9yIHRvIGdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UuXCIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9LGdvb2cuZGVjbGFyZU1vZHVsZUlkPWZ1bmN0aW9uKGUpe2lmKCFDT01QSUxFRCl7aWYoIWdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKSl0aHJvdyBFcnJvcihcImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlXCIpO2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKFwiZ29vZy5kZWNsYXJlTW9kdWxlSWQgbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UgcGVyIG1vZHVsZS5cIik7aWYoZSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgXCInK2UrJ1wiIGFscmVhZHkgZXhpc3RzLicpfWlmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfKWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU9ZTtlbHNle3ZhciB0PWdvb2cuZ2xvYmFsLiRqc2NvbXA7aWYoIXR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSBcIicrZSsnXCIgaGFzIGJlZW4gbG9hZGVkIGluY29ycmVjdGx5LicpO3Q9dC5yZXF1aXJlKHQuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKSksZ29vZy5sb2FkZWRNb2R1bGVzX1tlXT17ZXhwb3J0czp0LHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkVTNixtb2R1bGVJZDplfX19LGdvb2cuc2V0VGVzdE9ubHk9ZnVuY3Rpb24oZSl7aWYoZ29vZy5ESVNBTExPV19URVNUX09OTFlfQ09ERSl0aHJvdyBlPWV8fFwiXCIsRXJyb3IoXCJJbXBvcnRpbmcgdGVzdC1vbmx5IGNvZGUgaW50byBub24tZGVidWcgZW52aXJvbm1lbnRcIisoZT9cIjogXCIrZTpcIi5cIikpfSxnb29nLmZvcndhcmREZWNsYXJlPWZ1bmN0aW9uKGUpe30sQ09NUElMRUR8fChnb29nLmlzUHJvdmlkZWRfPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluIGdvb2cubG9hZGVkTW9kdWxlc198fCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZV0mJmdvb2cuaXNEZWZBbmROb3ROdWxsKGdvb2cuZ2V0T2JqZWN0QnlOYW1lKGUpKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXtcImdvb2cubW9kdWxlXCI6ITB9KSxnb29nLmdldE9iamVjdEJ5TmFtZT1mdW5jdGlvbihlLHQpe2U9ZS5zcGxpdChcIi5cIiksdD10fHxnb29nLmdsb2JhbDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZih0PXRbZVtvXV0sIWdvb2cuaXNEZWZBbmROb3ROdWxsKHQpKXJldHVybiBudWxsO3JldHVybiB0fSxnb29nLmdsb2JhbGl6ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0PXR8fGdvb2cuZ2xvYmFsLGUpdFtvXT1lW29dfSxnb29nLmFkZERlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scil7IUNPTVBJTEVEJiZnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEJiZnb29nLmRlYnVnTG9hZGVyXy5hZGREZXBlbmRlbmN5KGUsdCxvLHIpfSxnb29nLkVOQUJMRV9ERUJVR19MT0FERVI9ITAsZ29vZy5sb2dUb0NvbnNvbGVfPWZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNvbnNvbGUmJmdvb2cuZ2xvYmFsLmNvbnNvbGUuZXJyb3IoZSl9LGdvb2cucmVxdWlyZT1mdW5jdGlvbihlKXtpZighQ09NUElMRUQpe2lmKGdvb2cuRU5BQkxFX0RFQlVHX0xPQURFUiYmZ29vZy5kZWJ1Z0xvYWRlcl8ucmVxdWVzdGVkKGUpLGdvb2cuaXNQcm92aWRlZF8oZSkpe2lmKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSlyZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKGUpfWVsc2UgaWYoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKXt2YXIgdD1nb29nLm1vZHVsZUxvYWRlclN0YXRlXztnb29nLm1vZHVsZUxvYWRlclN0YXRlXz1udWxsO3RyeXtnb29nLmRlYnVnTG9hZGVyXy5sb2FkXyhlKX1maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPXR9fXJldHVybiBudWxsfX0sZ29vZy5yZXF1aXJlVHlwZT1mdW5jdGlvbihlKXtyZXR1cm57fX0sZ29vZy5iYXNlUGF0aD1cIlwiLGdvb2cubnVsbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7fSxnb29nLmFic3RyYWN0TWV0aG9kPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJ1bmltcGxlbWVudGVkIGFic3RyYWN0IG1ldGhvZFwiKX0sZ29vZy5hZGRTaW5nbGV0b25HZXR0ZXI9ZnVuY3Rpb24oZSl7ZS5pbnN0YW5jZV89dm9pZCAwLGUuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gZS5pbnN0YW5jZV8/ZS5pbnN0YW5jZV86KGdvb2cuREVCVUcmJihnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfW2dvb2cuaW5zdGFudGlhdGVkU2luZ2xldG9uc18ubGVuZ3RoXT1lKSxlLmluc3RhbmNlXz1uZXcgZSl9fSxnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfPVtdLGdvb2cuTE9BRF9NT0RVTEVfVVNJTkdfRVZBTD0hMCxnb29nLlNFQUxfTU9EVUxFX0VYUE9SVFM9Z29vZy5ERUJVRyxnb29nLmxvYWRlZE1vZHVsZXNfPXt9LGdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQ9IUNPTVBJTEVEJiZnb29nLkVOQUJMRV9ERUJVR19MT0FERVIsZ29vZy5UUkFOU1BJTEU9XCJkZXRlY3RcIixnb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ9ITEsZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0U9XCJcIixnb29nLlRSQU5TUElMRVI9XCJ0cmFuc3BpbGUuanNcIixnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbCxnb29nLnVzZVNhZmFyaTEwV29ya2Fyb3VuZD1mdW5jdGlvbigpe2lmKG51bGw9PWdvb2cuaGFzQmFkTGV0U2NvcGluZyl7dHJ5e3ZhciBhPSFldmFsKCdcInVzZSBzdHJpY3RcIjtsZXQgeCA9IDE7IGZ1bmN0aW9uIGYoKSB7IHJldHVybiB0eXBlb2YgeDsgfTtmKCkgPT0gXCJudW1iZXJcIjsnKX1jYXRjaChlKXthPSExfWdvb2cuaGFzQmFkTGV0U2NvcGluZz1hfXJldHVybiBnb29nLmhhc0JhZExldFNjb3Bpbmd9LGdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1Zz1mdW5jdGlvbihlKXtyZXR1cm5cIihmdW5jdGlvbigpe1wiK2UrXCJcXG47fSkoKTtcXG5cIn0sZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGUpe3ZhciB0PWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZTpcIlwiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITEsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PR30sZ29vZy5pc0Z1bmN0aW9uKGUpKXZhciBvPWUuY2FsbCh2b2lkIDAse30pO2Vsc2V7aWYoIWdvb2cuaXNTdHJpbmcoZSkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIG1vZHVsZSBkZWZpbml0aW9uXCIpO2dvb2cudXNlU2FmYXJpMTBXb3JrYXJvdW5kKCkmJihlPWdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1ZyhlKSksbz1nb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXy5jYWxsKHZvaWQgMCxlKX12YXIgcj1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lO2lmKCFnb29nLmlzU3RyaW5nKHIpfHwhcil0aHJvdyBFcnJvcignSW52YWxpZCBtb2R1bGUgbmFtZSBcIicrcisnXCInKTtnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhyLG8pOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmT2JqZWN0LnNlYWwmJlwib2JqZWN0XCI9PXR5cGVvZiBvJiZudWxsIT1vJiZPYmplY3Quc2VhbChvKSxnb29nLmxvYWRlZE1vZHVsZXNfW3JdPXtleHBvcnRzOm8sdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfX1maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPXR9fSxnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhKXtyZXR1cm4gZXZhbChhKSx7fX0sZ29vZy5ub3JtYWxpemVQYXRoXz1mdW5jdGlvbihlKXtlPWUuc3BsaXQoXCIvXCIpO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7KVwiLlwiPT1lW3RdP2Uuc3BsaWNlKHQsMSk6dCYmXCIuLlwiPT1lW3RdJiZlW3QtMV0mJlwiLi5cIiE9ZVt0LTFdP2Uuc3BsaWNlKC0tdCwyKTp0Kys7cmV0dXJuIGUuam9pbihcIi9cIil9LGdvb2cubG9hZEZpbGVTeW5jXz1mdW5jdGlvbihlKXtpZihnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKXJldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKGUpO3RyeXt2YXIgdD1uZXcgZ29vZy5nbG9iYWwuWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbihcImdldFwiLGUsITEpLHQuc2VuZCgpLDA9PXQuc3RhdHVzfHwyMDA9PXQuc3RhdHVzP3QucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fSxnb29nLnRyYW5zcGlsZV89ZnVuY3Rpb24oZSx0LG8pe3ZhciByPWdvb2cuZ2xvYmFsLiRqc2NvbXA7cnx8KGdvb2cuZ2xvYmFsLiRqc2NvbXA9cj17fSk7dmFyIG49ci50cmFuc3BpbGU7aWYoIW4pe3ZhciBzPWdvb2cuYmFzZVBhdGgrZ29vZy5UUkFOU1BJTEVSLGk9Z29vZy5sb2FkRmlsZVN5bmNfKHMpO2lmKGkpe2lmKGZ1bmN0aW9uKCl7KDAsZXZhbCkoaStcIlxcbi8vIyBzb3VyY2VVUkw9XCIrcyl9LmNhbGwoZ29vZy5nbG9iYWwpLGdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQmJmdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQuJGpzY29tcCYmIWdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQuJGpzY29tcC50cmFuc3BpbGUpdGhyb3cgRXJyb3IoJ1RoZSB0cmFuc3BpbGVyIGRpZCBub3QgcHJvcGVybHkgZXhwb3J0IHRoZSBcInRyYW5zcGlsZVwiIG1ldGhvZC4gJGd3dEV4cG9ydDogJytKU09OLnN0cmluZ2lmeShnb29nLmdsb2JhbC4kZ3d0RXhwb3J0KSk7Z29vZy5nbG9iYWwuJGpzY29tcC50cmFuc3BpbGU9Z29vZy5nbG9iYWwuJGd3dEV4cG9ydC4kanNjb21wLnRyYW5zcGlsZSxuPShyPWdvb2cuZ2xvYmFsLiRqc2NvbXApLnRyYW5zcGlsZX19cmV0dXJuIG58fChuPXIudHJhbnNwaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cubG9nVG9Db25zb2xlXyh0K1wiIHJlcXVpcmVzIHRyYW5zcGlsYXRpb24gYnV0IG5vIHRyYW5zcGlsZXIgd2FzIGZvdW5kLlwiKSxlfSksbihlLHQsbyl9LGdvb2cudHlwZU9mPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO2lmKFwib2JqZWN0XCI9PXQpe2lmKCFlKXJldHVyblwibnVsbFwiO2lmKGUgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm5cImFycmF5XCI7aWYoZSBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gdDt2YXIgbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7aWYoXCJbb2JqZWN0IFdpbmRvd11cIj09bylyZXR1cm5cIm9iamVjdFwiO2lmKFwiW29iamVjdCBBcnJheV1cIj09b3x8XCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoJiZ2b2lkIDAhPT1lLnNwbGljZSYmdm9pZCAwIT09ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmIWUucHJvcGVydHlJc0VudW1lcmFibGUoXCJzcGxpY2VcIikpcmV0dXJuXCJhcnJheVwiO2lmKFwiW29iamVjdCBGdW5jdGlvbl1cIj09b3x8dm9pZCAwIT09ZS5jYWxsJiZ2b2lkIDAhPT1lLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhZS5wcm9wZXJ0eUlzRW51bWVyYWJsZShcImNhbGxcIikpcmV0dXJuXCJmdW5jdGlvblwifWVsc2UgaWYoXCJmdW5jdGlvblwiPT10JiZ2b2lkIDA9PT1lLmNhbGwpcmV0dXJuXCJvYmplY3RcIjtyZXR1cm4gdH0sZ29vZy5pc051bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfSxnb29nLmlzRGVmQW5kTm90TnVsbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0sZ29vZy5pc0FycmF5PWZ1bmN0aW9uKGUpe3JldHVyblwiYXJyYXlcIj09Z29vZy50eXBlT2YoZSl9LGdvb2cuaXNBcnJheUxpa2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Z29vZy50eXBlT2YoZSk7cmV0dXJuXCJhcnJheVwiPT10fHxcIm9iamVjdFwiPT10JiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGh9LGdvb2cuaXNEYXRlTGlrZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pc09iamVjdChlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5nZXRGdWxsWWVhcn0sZ29vZy5pc0Z1bmN0aW9uPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09Z29vZy50eXBlT2YoZSl9LGdvb2cuaXNPYmplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuXCJvYmplY3RcIj09dCYmbnVsbCE9ZXx8XCJmdW5jdGlvblwiPT10fSxnb29nLmdldFVpZD1mdW5jdGlvbihlKXtyZXR1cm4gZVtnb29nLlVJRF9QUk9QRVJUWV9dfHwoZVtnb29nLlVJRF9QUk9QRVJUWV9dPSsrZ29vZy51aWRDb3VudGVyXyl9LGdvb2cuaGFzVWlkPWZ1bmN0aW9uKGUpe3JldHVybiEhZVtnb29nLlVJRF9QUk9QRVJUWV9dfSxnb29nLnJlbW92ZVVpZD1mdW5jdGlvbihlKXtudWxsIT09ZSYmXCJyZW1vdmVBdHRyaWJ1dGVcImluIGUmJmUucmVtb3ZlQXR0cmlidXRlKGdvb2cuVUlEX1BST1BFUlRZXyk7dHJ5e2RlbGV0ZSBlW2dvb2cuVUlEX1BST1BFUlRZX119Y2F0Y2goZSl7fX0sZ29vZy5VSURfUFJPUEVSVFlfPVwiY2xvc3VyZV91aWRfXCIrKDFlOSpNYXRoLnJhbmRvbSgpPj4+MCksZ29vZy51aWRDb3VudGVyXz0wLGdvb2cuZ2V0SGFzaENvZGU9Z29vZy5nZXRVaWQsZ29vZy5yZW1vdmVIYXNoQ29kZT1nb29nLnJlbW92ZVVpZCxnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGUpe3ZhciB0PWdvb2cudHlwZU9mKGUpO2lmKFwib2JqZWN0XCI9PXR8fFwiYXJyYXlcIj09dCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jbG9uZSlyZXR1cm4gZS5jbG9uZSgpO2Zvcih2YXIgbyBpbiB0PVwiYXJyYXlcIj09dD9bXTp7fSxlKXRbb109Z29vZy5jbG9uZU9iamVjdChlW29dKTtyZXR1cm4gdH1yZXR1cm4gZX0sZ29vZy5iaW5kTmF0aXZlXz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGUuY2FsbC5hcHBseShlLmJpbmQsYXJndW1lbnRzKX0sZ29vZy5iaW5kSnNfPWZ1bmN0aW9uKGUsdCxvKXtpZighZSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KG8sciksZS5hcHBseSh0LG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fSxnb29nLmJpbmQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCYmLTEhPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLnRvU3RyaW5nKCkuaW5kZXhPZihcIm5hdGl2ZSBjb2RlXCIpP2dvb2cuYmluZD1nb29nLmJpbmROYXRpdmVfOmdvb2cuYmluZD1nb29nLmJpbmRKc18sZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ29vZy5wYXJ0aWFsPWZ1bmN0aW9uKGUsdCl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW8uc2xpY2UoKTtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsYXJndW1lbnRzKSxlLmFwcGx5KHRoaXMsdCl9fSxnb29nLm1peGluPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvIGluIHQpZVtvXT10W29dfSxnb29nLm5vdz1nb29nLlRSVVNURURfU0lURSYmRGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxnb29nLmdsb2JhbEV2YWw9ZnVuY3Rpb24oZSl7aWYoZ29vZy5nbG9iYWwuZXhlY1NjcmlwdClnb29nLmdsb2JhbC5leGVjU2NyaXB0KGUsXCJKYXZhU2NyaXB0XCIpO2Vsc2V7aWYoIWdvb2cuZ2xvYmFsLmV2YWwpdGhyb3cgRXJyb3IoXCJnb29nLmdsb2JhbEV2YWwgbm90IGF2YWlsYWJsZVwiKTtpZihudWxsPT1nb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfKXt0cnl7Z29vZy5nbG9iYWwuZXZhbChcInZhciBfZXZhbFRlc3RfID0gMTtcIil9Y2F0Y2goZSl7fWlmKHZvaWQgMCE9PWdvb2cuZ2xvYmFsLl9ldmFsVGVzdF8pe3RyeXtkZWxldGUgZ29vZy5nbG9iYWwuX2V2YWxUZXN0X31jYXRjaChlKXt9Z29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXz0hMH1lbHNlIGdvb2cuZXZhbFdvcmtzRm9yR2xvYmFsc189ITF9aWYoZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXylnb29nLmdsb2JhbC5ldmFsKGUpO2Vsc2V7dmFyIHQ9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbz10LmNyZWF0ZUVsZW1lbnQoXCJTQ1JJUFRcIik7by50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIsby5kZWZlcj0hMSxvLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoZSkpLHQuaGVhZC5hcHBlbmRDaGlsZChvKSx0LmhlYWQucmVtb3ZlQ2hpbGQobyl9fX0sZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXz1udWxsLGdvb2cuZ2V0Q3NzTmFtZT1mdW5jdGlvbihlLHQpe2lmKFwiLlwiPT1TdHJpbmcoZSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoIFwiLlwiLiBZb3UgcGFzc2VkOiAnK2UpO3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmNzc05hbWVNYXBwaW5nX1tlXXx8ZX0scj1mdW5jdGlvbihlKXtlPWUuc3BsaXQoXCItXCIpO2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDtyKyspdC5wdXNoKG8oZVtyXSkpO3JldHVybiB0LmpvaW4oXCItXCIpfTtyZXR1cm4gcj1nb29nLmNzc05hbWVNYXBwaW5nXz9cIkJZX1dIT0xFXCI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/bzpyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxlPXQ/ZStcIi1cIityKHQpOnIoZSksZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4/Z29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4oZSk6ZX0sZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihlLHQpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWUsZ29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz10fSwhQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyksZ29vZy5nZXRNc2c9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBvJiZvLmh0bWwmJihlPWUucmVwbGFjZSgvPC9nLFwiJmx0O1wiKSksdCYmKGU9ZS5yZXBsYWNlKC9cXHtcXCQoW159XSspfS9nLChmdW5jdGlvbihlLG8pe3JldHVybiBudWxsIT10JiZvIGluIHQ/dFtvXTplfSkpKSxlfSxnb29nLmdldE1zZ1dpdGhGYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiBlfSxnb29nLmV4cG9ydFN5bWJvbD1mdW5jdGlvbihlLHQsbyl7Z29vZy5leHBvcnRQYXRoXyhlLHQsbyl9LGdvb2cuZXhwb3J0UHJvcGVydHk9ZnVuY3Rpb24oZSx0LG8pe2VbdF09b30sZ29vZy5pbmhlcml0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5zdXBlckNsYXNzXz10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgbyxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuYmFzZT1mdW5jdGlvbihlLG8scil7Zm9yKHZhciBuPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMikscz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspbltzLTJdPWFyZ3VtZW50c1tzXTtyZXR1cm4gdC5wcm90b3R5cGVbb10uYXBwbHkoZSxuKX19LGdvb2cuYmFzZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9YXJndW1lbnRzLmNhbGxlZS5jYWxsZXI7aWYoZ29vZy5TVFJJQ1RfTU9ERV9DT01QQVRJQkxFfHxnb29nLkRFQlVHJiYhcil0aHJvdyBFcnJvcihcImFyZ3VtZW50cy5jYWxsZXIgbm90IGRlZmluZWQuICBnb29nLmJhc2UoKSBjYW5ub3QgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlIGNvZGUuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtQ1wiKTtpZih2b2lkIDAhPT1yLnN1cGVyQ2xhc3NfKXtmb3IodmFyIG49QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKyluW3MtMV09YXJndW1lbnRzW3NdO3JldHVybiByLnN1cGVyQ2xhc3NfLmNvbnN0cnVjdG9yLmFwcGx5KGUsbil9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQmJlwic3ltYm9sXCIhPXR5cGVvZiB0KXRocm93IEVycm9yKFwibWV0aG9kIG5hbWVzIHByb3ZpZGVkIHRvIGdvb2cuYmFzZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgc3ltYm9sXCIpO2ZvcihuPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMikscz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspbltzLTJdPWFyZ3VtZW50c1tzXTtzPSExO2Zvcih2YXIgaT1lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtpO2k9T2JqZWN0LmdldFByb3RvdHlwZU9mKGkpKWlmKGlbdF09PT1yKXM9ITA7ZWxzZSBpZihzKXJldHVybiBpW3RdLmFwcGx5KGUsbik7aWYoZVt0XT09PXIpcmV0dXJuIGUuY29uc3RydWN0b3IucHJvdG90eXBlW3RdLmFwcGx5KGUsbik7dGhyb3cgRXJyb3IoXCJnb29nLmJhc2UgY2FsbGVkIGZyb20gYSBtZXRob2Qgb2Ygb25lIG5hbWUgdG8gYSBtZXRob2Qgb2YgYSBkaWZmZXJlbnQgbmFtZVwiKX0sZ29vZy5zY29wZT1mdW5jdGlvbihlKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLlwiKTtlLmNhbGwoZ29vZy5nbG9iYWwpfSxDT01QSUxFRHx8KGdvb2cuZ2xvYmFsLkNPTVBJTEVEPUNPTVBJTEVEKSxnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG89dC5jb25zdHJ1Y3RvcixyPXQuc3RhdGljcztyZXR1cm4gbyYmbyE9T2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcnx8KG89ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcImNhbm5vdCBpbnN0YW50aWF0ZSBhbiBpbnRlcmZhY2UgKG5vIGNvbnN0cnVjdG9yIGRlZmluZWQpLlwiKX0pLG89Z29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfKG8sZSksZSYmZ29vZy5pbmhlcml0cyhvLGUpLGRlbGV0ZSB0LmNvbnN0cnVjdG9yLGRlbGV0ZSB0LnN0YXRpY3MsZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKG8ucHJvdG90eXBlLHQpLG51bGwhPXImJihyIGluc3RhbmNlb2YgRnVuY3Rpb24/cihvKTpnb29nLmRlZmluZUNsYXNzLmFwcGx5UHJvcGVydGllc18obyxyKSksb30sZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUz1nb29nLkRFQlVHLGdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihlLHQpe2lmKCFnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTKXJldHVybiBlO3ZhciBvPSFnb29nLmRlZmluZUNsYXNzLmlzVW5zZWFsYWJsZV8odCkscj1mdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0W2dvb2cuVUlEX1BST1BFUlRZX109dFtnb29nLlVJRF9QUk9QRVJUWV9dLHRoaXMuY29uc3RydWN0b3I9PT1yJiZvJiZPYmplY3Quc2VhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZPYmplY3Quc2VhbCh0KSx0fTtyZXR1cm4gcn0sZ29vZy5kZWZpbmVDbGFzcy5pc1Vuc2VhbGFibGVfPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnByb3RvdHlwZSYmZS5wcm90b3R5cGVbZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZX119LGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfPVwiY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mXCIuc3BsaXQoXCIgXCIpLGdvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtmb3IodmFyIHI9MDtyPGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfLmxlbmd0aDtyKyspbz1nb29nLmRlZmluZUNsYXNzLk9CSkVDVF9QUk9UT1RZUEVfRklFTERTX1tyXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSl9LGdvb2cudGFnVW5zZWFsYWJsZUNsYXNzPWZ1bmN0aW9uKGUpeyFDT01QSUxFRCYmZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUyYmKGUucHJvdG90eXBlW2dvb2cuVU5TRUFMQUJMRV9DT05TVFJVQ1RPUl9QUk9QRVJUWV9dPSEwKX0sZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZXz1cImdvb2dfZGVmaW5lQ2xhc3NfbGVnYWN5X3Vuc2VhbGFibGVcIiwhQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmluSHRtbERvY3VtZW50Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBudWxsIT1lJiZcIndyaXRlXCJpbiBlfSxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBlLmF0dGFjaEV2ZW50P1wiY29tcGxldGVcIiE9ZS5yZWFkeVN0YXRlOlwibG9hZGluZ1wiPT1lLnJlYWR5U3RhdGV9LGdvb2cuZmluZEJhc2VQYXRoXz1mdW5jdGlvbigpe2lmKGdvb2cuaXNEZWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEgpJiZnb29nLmlzU3RyaW5nKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIKSlnb29nLmJhc2VQYXRoPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGU9Z29vZy5nbG9iYWwuZG9jdW1lbnQsdD1lLmN1cnJlbnRTY3JpcHQ7Zm9yKHQ9KGU9dD9bdF06ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIlNDUklQVFwiKSkubGVuZ3RoLTE7MDw9dDstLXQpe3ZhciBvPWVbdF0uc3JjLHI9by5sYXN0SW5kZXhPZihcIj9cIik7aWYocj0tMT09cj9vLmxlbmd0aDpyLFwiYmFzZS5qc1wiPT1vLnN1YnN0cihyLTcsNykpe2dvb2cuYmFzZVBhdGg9by5zdWJzdHIoMCxyLTcpO2JyZWFrfX19fSxnb29nLmZpbmRCYXNlUGF0aF8oKSxnb29nLlRyYW5zcGlsZXI9ZnVuY3Rpb24oKXt0aGlzLnJlcXVpcmVzVHJhbnNwaWxhdGlvbl89bnVsbCx0aGlzLnRyYW5zcGlsYXRpb25UYXJnZXRfPWdvb2cuVFJBTlNQSUxFX1RPX0xBTkdVQUdFfSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl89ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKHQsbyl7ZT9kW3RdPSEwOm8oKT8oYz10LGRbdF09ITEpOmU9ZFt0XT0hMH1mdW5jdGlvbiBiKGEpe3RyeXtyZXR1cm4hIWV2YWwoYSl9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciBjPVwiZXMzXCIsZD17ZXMzOiExfSxlPSExLGY9Z29vZy5nbG9iYWwubmF2aWdhdG9yJiZnb29nLmdsb2JhbC5uYXZpZ2F0b3IudXNlckFnZW50P2dvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtyZXR1cm4gYShcImVzNVwiLChmdW5jdGlvbigpe3JldHVybiBiKFwiWzEsXS5sZW5ndGg9PTFcIil9KSksYShcImVzNlwiLChmdW5jdGlvbigpe3JldHVybiFmLm1hdGNoKC9FZGdlXFwvKFxcZCspKFxcLlxcZCkqL2kpJiZiKCcoKCk9PntcInVzZSBzdHJpY3RcIjtjbGFzcyBYe2NvbnN0cnVjdG9yKCl7aWYobmV3LnRhcmdldCE9U3RyaW5nKXRocm93IDE7dGhpcy54PTQyfX1sZXQgcT1SZWZsZWN0LmNvbnN0cnVjdChYLFtdLFN0cmluZyk7aWYocS54IT00Mnx8IShxIGluc3RhbmNlb2YgU3RyaW5nKSl0aHJvdyAxO2Zvcihjb25zdCBhIG9mWzIsM10pe2lmKGE9PTIpY29udGludWU7ZnVuY3Rpb24gZih6PXthfSl7bGV0IGE9MDtyZXR1cm4gei5hfXtmdW5jdGlvbiBmKCl7cmV0dXJuIDA7fX1yZXR1cm4gZigpPT0zfX0pKCknKX0pKSxhKFwiZXM3XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGIoXCIyICoqIDIgPT0gNFwiKX0pKSxhKFwiZXM4XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGIoXCJhc3luYyAoKSA9PiAxLCB0cnVlXCIpfSkpLGEoXCJlczlcIiwoZnVuY3Rpb24oKXtyZXR1cm4gYihcIih7Li4ucmVzdH0gPSB7fSksIHRydWVcIil9KSksYShcImVzX25leHRcIiwoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKSx7dGFyZ2V0OmMsbWFwOmR9fSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLm5lZWRzVHJhbnNwaWxlPWZ1bmN0aW9uKGUsdCl7aWYoXCJhbHdheXNcIj09Z29vZy5UUkFOU1BJTEUpcmV0dXJuITA7aWYoXCJuZXZlclwiPT1nb29nLlRSQU5TUElMRSlyZXR1cm4hMTtpZighdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fKXt2YXIgbz10aGlzLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl8oKTt0aGlzLnJlcXVpcmVzVHJhbnNwaWxhdGlvbl89by5tYXAsdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0Xz10aGlzLnRyYW5zcGlsYXRpb25UYXJnZXRffHxvLnRhcmdldH1pZihlIGluIHRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uXylyZXR1cm4hIXRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uX1tlXXx8ISghZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8XCJlczZcIiE9dHx8XCJub01vZHVsZVwiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSk7dGhyb3cgRXJyb3IoXCJVbmtub3duIGxhbmd1YWdlIG1vZGU6IFwiK2UpfSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLnRyYW5zcGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLnRyYW5zcGlsZV8oZSx0LHRoaXMudHJhbnNwaWxhdGlvblRhcmdldF8pfSxnb29nLnRyYW5zcGlsZXJfPW5ldyBnb29nLlRyYW5zcGlsZXIsZ29vZy5wcm90ZWN0U2NyaXB0VGFnXz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC88XFwvKFNDUklQVCkvZ2ksXCJcXFxceDNjLyQxXCIpfSxnb29nLkRlYnVnTG9hZGVyXz1mdW5jdGlvbigpe3RoaXMuZGVwZW5kZW5jaWVzXz17fSx0aGlzLmlkVG9QYXRoXz17fSx0aGlzLndyaXR0ZW5fPXt9LHRoaXMubG9hZGluZ0RlcHNfPVtdLHRoaXMuZGVwc1RvTG9hZF89W10sdGhpcy5wYXVzZWRfPSExLHRoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkoZ29vZy50cmFuc3BpbGVyXyksdGhpcy5kZWZlcnJlZENhbGxiYWNrc189e30sdGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXtyJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChyLDApLHI9bnVsbCl9dmFyIHI9dDtpZihlLmxlbmd0aCl7dD1bXTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGVbbl0pO2lmKCFzKXRocm93IEVycm9yKFwiVW5yZWdvbml6ZWQgbmFtZXNwYWNlOiBcIitlW25dKTt0LnB1c2godGhpcy5kZXBlbmRlbmNpZXNfW3NdKX1zPWdvb2cucmVxdWlyZTt2YXIgaT0wO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspcyhlW25dKSx0W25dLm9uTG9hZCgoZnVuY3Rpb24oKXsrK2k9PWUubGVuZ3RoJiZvKCl9KSl9ZWxzZSBvKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCtcImRlcHMuanNcIiksXCJkZXBzLmpzXCIsW10sW10se30sITEpKSx0aGlzLmxvYWREZXBzXygpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUucmVxdWVzdGVkPWZ1bmN0aW9uKGUsdCl7KGU9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGUpKSYmKHR8fHRoaXMuYXJlRGVwc0xvYWRlZF8odGhpcy5kZXBlbmRlbmNpZXNfW2VdLnJlcXVpcmVzKSkmJih0PXRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2VdKSYmKGRlbGV0ZSB0aGlzLmRlZmVycmVkQ2FsbGJhY2tzX1tlXSx0KCkpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dGhpcy5mYWN0b3J5Xz1lfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZF89ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhlKSl0aHJvdyBlPVwiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiBcIitlLGdvb2cubG9nVG9Db25zb2xlXyhlKSxFcnJvcihlKTt2YXIgdD10aGlzLG89W10scj1mdW5jdGlvbihlKXt2YXIgbj10LmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIW4pdGhyb3cgRXJyb3IoXCJCYWQgZGVwZW5kZW5jeSBwYXRoIG9yIHN5bWJvbDogXCIrZSk7aWYoIXQud3JpdHRlbl9bbl0pe2Zvcih0LndyaXR0ZW5fW25dPSEwLGU9dC5kZXBlbmRlbmNpZXNfW25dLG49MDtuPGUucmVxdWlyZXMubGVuZ3RoO24rKylnb29nLmlzUHJvdmlkZWRfKGUucmVxdWlyZXNbbl0pfHxyKGUucmVxdWlyZXNbbl0pO28ucHVzaChlKX19O3IoZSksZT0hIXRoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoLHRoaXMuZGVwc1RvTG9hZF89dGhpcy5kZXBzVG9Mb2FkXy5jb25jYXQobyksdGhpcy5wYXVzZWRffHxlfHx0aGlzLmxvYWREZXBzXygpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnBhdXNlZF87dGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgmJiF0OykhZnVuY3Rpb24oKXt2YXIgbz0hMSxyPWUuZGVwc1RvTG9hZF8uc2hpZnQoKSxuPSExO2UubG9hZGluZ18ocik7dmFyIHM9e3BhdXNlOmZ1bmN0aW9uKCl7aWYobyl0aHJvdyBFcnJvcihcIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuXCIpO3Q9ITB9LHJlc3VtZTpmdW5jdGlvbigpe28/ZS5yZXN1bWVfKCk6dD0hMX0sbG9hZGVkOmZ1bmN0aW9uKCl7aWYobil0aHJvdyBFcnJvcihcIkRvdWJsZSBjYWxsIHRvIGxvYWRlZC5cIik7bj0hMCxlLmxvYWRlZF8ocil9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbz0wO288ZS5sb2FkaW5nRGVwc18ubGVuZ3RoO28rKyl0LnB1c2goZS5sb2FkaW5nRGVwc19bb10pO3JldHVybiB0fSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihlKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTplLG1vZHVsZU5hbWU6XCJcIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExfX0scmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzOmZ1bmN0aW9uKGUsdCxvKXtvJiYoZ29vZy5sb2FkZWRNb2R1bGVzX1tvXT17ZXhwb3J0czp0LHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkVTNixtb2R1bGVJZDpvfHxcIlwifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZSx0KXtnb29nLmxvYWRlZE1vZHVsZXNfW2VdPXtleHBvcnRzOnQsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDplfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKHQpe2lmKG8pdGhyb3cgRXJyb3IoXCJDYW5ub3QgcmVnaXN0ZXIgd2l0aCBkZWZlciBhZnRlciB0aGUgY2FsbCB0byBsb2FkLlwiKTtlLmRlZmVyXyhyLHQpfSxhcmVEZXBzTG9hZGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXJlRGVwc0xvYWRlZF8oci5yZXF1aXJlcyl9fTt0cnl7ci5sb2FkKHMpfWZpbmFsbHl7bz0hMH19KCk7dCYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihlKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGUpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDt0KyspaWYodGhpcy5sb2FkaW5nRGVwc19bdF09PWUpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZSh0LDEpO2JyZWFrfWZvcih0PTA7dDx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDt0KyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1t0XT09ZS5wYXRoKXt0aGlzLmRlZmVycmVkUXVldWVfLnNwbGljZSh0LDEpO2JyZWFrfWlmKHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aD09dGhpcy5kZWZlcnJlZFF1ZXVlXy5sZW5ndGgmJiF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aClmb3IoO3RoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoOyl0aGlzLnJlcXVlc3RlZCh0aGlzLmRlZmVycmVkUXVldWVfLnNoaWZ0KCksITApO2UubG9hZGVkKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG89dGhpcy5nZXRQYXRoRnJvbURlcHNfKGVbdF0pO2lmKCFvfHwhKG8gaW4gdGhpcy5kZWZlcnJlZENhbGxiYWNrc18pJiYhZ29vZy5pc1Byb3ZpZGVkXyhlW3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW4gdGhpcy5pZFRvUGF0aF8/dGhpcy5pZFRvUGF0aF9bZV06ZSBpbiB0aGlzLmRlcGVuZGVuY2llc18/ZTpudWxsfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuZGVmZXJfPWZ1bmN0aW9uKGUsdCl7dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bZS5wYXRoXT10LHRoaXMuZGVmZXJyZWRRdWV1ZV8ucHVzaChlLnBhdGgpfSxnb29nLkxvYWRDb250cm9sbGVyPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBlbmRpbmc9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cz1mdW5jdGlvbihlLHQsbyl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5zZXRNb2R1bGVTdGF0ZT1mdW5jdGlvbihlKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFyTW9kdWxlU3RhdGU9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmRlZmVyPWZ1bmN0aW9uKGUpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZD1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7dGhpcy5wYXRoPWUsdGhpcy5yZWxhdGl2ZVBhdGg9dCx0aGlzLnByb3ZpZGVzPW8sdGhpcy5yZXF1aXJlcz1yLHRoaXMubG9hZEZsYWdzPW4sdGhpcy5sb2FkZWRfPSExLHRoaXMubG9hZENhbGxiYWNrc189W119LGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUuZ2V0UGF0aE5hbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhdGgsdD1lLmluZGV4T2YoXCI6Ly9cIik7cmV0dXJuIDA8PXQmJjA8PSh0PShlPWUuc3Vic3RyaW5nKHQrMykpLmluZGV4T2YoXCIvXCIpKSYmKGU9ZS5zdWJzdHJpbmcodCsxKSksZX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oZSl7dGhpcy5sb2FkZWRfP2UoKTp0aGlzLmxvYWRDYWxsYmFja3NfLnB1c2goZSl9LGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7dGhpcy5sb2FkZWRfPSEwO3ZhciBlPXRoaXMubG9hZENhbGxiYWNrc187dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdKCl9LGdvb2cuRGVwZW5kZW5jeS5kZWZlcl89ITEsZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwXz17fSxnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzMik7cmV0dXJuIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bdF09ZSx0fSxnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXz1mdW5jdGlvbihlKXtkZWxldGUgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1tlXX0sZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKSl0aHJvdyBFcnJvcihcIkNhbGxiYWNrIGtleSBcIitlK1wiIGRvZXMgbm90IGV4aXN0ICh3YXMgYmFzZS5qcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2U/KS5cIik7Zm9yKHZhciBvPWdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bZV0scj1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKylyLnB1c2goYXJndW1lbnRzW25dKTtvLmFwcGx5KHZvaWQgMCxyKX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVClnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQodGhpcy5wYXRoKT9lLmxvYWRlZCgpOmUucGF1c2UoKTtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciB0PWdvb2cuZ2xvYmFsLmRvY3VtZW50O2lmKFwiY29tcGxldGVcIj09dC5yZWFkeVN0YXRlJiYhZ29vZy5FTkFCTEVfQ0hST01FX0FQUF9TQUZFX1NDUklQVF9MT0FESU5HKXtpZigvXFxiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSlyZXR1cm4gdm9pZCBlLmxvYWRlZCgpO3Rocm93IEVycm9yKCdDYW5ub3Qgd3JpdGUgXCInK3RoaXMucGF0aCsnXCIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpfWlmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBvPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24odCl7Z29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXyYmXCJjb21wbGV0ZVwiIT10LnJlYWR5U3RhdGV8fChnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhvKSxlLmxvYWRlZCgpKX0pKSxyPSFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfJiZnb29nLmdldFNjcmlwdE5vbmNlKCk/JyBub25jZT1cIicrZ29vZy5nZXRTY3JpcHROb25jZSgpKydcIic6XCJcIjtyPSc8c2NyaXB0IHNyYz1cIicrdGhpcy5wYXRoKydcIiAnKyhnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfP1wib25yZWFkeXN0YXRlY2hhbmdlXCI6XCJvbmxvYWRcIikrXCI9XFxcImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJ1wiK28rJ1xcJywgdGhpcylcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgJysoZ29vZy5EZXBlbmRlbmN5LmRlZmVyXz9cImRlZmVyXCI6XCJcIikrcitcIj48XFwvc2NyaXB0PlwiLHQud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChyKTpyKX1lbHNle3ZhciBuPXQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtuLmRlZmVyPWdvb2cuRGVwZW5kZW5jeS5kZWZlcl8sbi5hc3luYz0hMSxuLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiwocj1nb29nLmdldFNjcmlwdE5vbmNlKCkpJiZuLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsciksZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXz8oZS5wYXVzZSgpLG4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7XCJsb2FkZWRcIiE9bi5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPW4ucmVhZHlTdGF0ZXx8KGUubG9hZGVkKCksZS5yZXN1bWUoKSl9KTpuLm9ubG9hZD1mdW5jdGlvbigpe24ub25sb2FkPW51bGwsZS5sb2FkZWQoKX0sbi5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoLHQuaGVhZC5hcHBlbmRDaGlsZChuKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oXCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuXCIpLFwiZGVwcy5qc1wiPT10aGlzLnJlbGF0aXZlUGF0aD8oZ29vZy5sb2dUb0NvbnNvbGVfKFwiQ29uc2lkZXIgc2V0dGluZyBDTE9TVVJFX0lNUE9SVF9TQ1JJUFQgYmVmb3JlIGxvYWRpbmcgYmFzZS5qcywgb3Igc2V0dGluZyBDTE9TVVJFX05PX0RFUFMgdG8gdHJ1ZS5cIiksZS5sb2FkZWQoKSk6ZS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scixuKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGUsdCxvLHIsbil9LGdvb2cuaW5oZXJpdHMoZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVClnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQodGhpcy5wYXRoKT9lLmxvYWRlZCgpOmUucGF1c2UoKTtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciB0PWdvb2cuZ2xvYmFsLmRvY3VtZW50LG89dGhpcztpZihnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKXt2YXIgcj1mdW5jdGlvbihlLG8pe2U9bz8nPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgY3Jvc3NvcmlnaW4+JytvK1wiPFxcL3NjcmlwdD5cIjonPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgY3Jvc3NvcmlnaW4gc3JjPVwiJytlKydcIj48XFwvc2NyaXB0PicsdC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKGUpOmUpfTtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2Ugcj1mdW5jdGlvbihlLG8pe3ZhciByPXQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtyLmRlZmVyPSEwLHIuYXN5bmM9ITEsci50eXBlPVwibW9kdWxlXCIsci5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCEwKTt2YXIgbj1nb29nLmdldFNjcmlwdE5vbmNlKCk7biYmci5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLG4pLG8/ci50ZXh0Q29udGVudD1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVTY3JpcHQobyk6bzpyLnNyYz1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVTY3JpcHRVUkwoZSk6ZSx0LmhlYWQuYXBwZW5kQ2hpbGQocil9O3ZhciBuPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhuKSxlLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSkpO3Iodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKFwiJytuKydcIiknKSxyKHRoaXMucGF0aCx2b2lkIDApO3ZhciBzPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24odCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18ocyksZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHMoby5wYXRoLHQsZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl9KSk7cih2b2lkIDAsJ2ltcG9ydCAqIGFzIG0gZnJvbSBcIicrdGhpcy5wYXRoKydcIjsgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcIicrcysnXCIsIG0pJyk7dmFyIGk9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKChmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGkpLGUuY2xlYXJNb2R1bGVTdGF0ZSgpLGUubG9hZGVkKCl9KSk7cih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oXCInK2krJ1wiKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKFwiQ2Fubm90IHVzZSBkZWZhdWx0IGRlYnVnIGxvYWRlciBvdXRzaWRlIG9mIEhUTUwgZG9jdW1lbnRzLlwiKSxlLnBhdXNlKCl9LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7Z29vZy5EZXBlbmRlbmN5LmNhbGwodGhpcyxlLHQsbyxyLG4pLHRoaXMuY29udGVudHNfPW51bGwsdGhpcy5sYXp5RmV0Y2hfPSFnb29nLmluSHRtbERvY3VtZW50XygpfHwhKFwibm9Nb2R1bGVcImluIGdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3IuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhyLnBhdGgpLHIuY29udGVudHNfJiYoci5jb250ZW50c189ci50cmFuc2Zvcm0oci5jb250ZW50c18pLHIuY29udGVudHNfJiYoci5jb250ZW50c18rPVwiXFxuLy8jIHNvdXJjZVVSTD1cIityLnBhdGgpKX1mdW5jdGlvbiBvKCl7aWYoci5sYXp5RmV0Y2hfJiZ0KCksci5jb250ZW50c18pe24mJmUuc2V0TW9kdWxlU3RhdGUoZ29vZy5Nb2R1bGVUeXBlLkVTNik7dHJ5e3ZhciBvPXIuY29udGVudHNfO2lmKHIuY29udGVudHNfPW51bGwsZ29vZy5nbG9iYWxFdmFsKG8pLG4pdmFyIHM9Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZX1maW5hbGx5e24mJmUuY2xlYXJNb2R1bGVTdGF0ZSgpfW4mJmdvb2cuZ2xvYmFsLiRqc2NvbXAucmVxdWlyZS5lbnN1cmUoW3IuZ2V0UGF0aE5hbWUoKV0sKGZ1bmN0aW9uKCl7ZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHMoci5wYXRoLGdvb2cuZ2xvYmFsLiRqc2NvbXAucmVxdWlyZShyLmdldFBhdGhOYW1lKCkpLHMpfSkpLGUubG9hZGVkKCl9fXZhciByPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKXQoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKFwiXCIsdGhpcy5jb250ZW50c18pPyh0aGlzLmNvbnRlbnRzXz1udWxsLGUubG9hZGVkKCkpOmUucGF1c2UoKTtlbHNle3ZhciBuPXRoaXMubG9hZEZsYWdzLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNjt0aGlzLmxhenlGZXRjaF98fHQoKTt2YXIgcz0xPGUucGVuZGluZygpLmxlbmd0aCxpPXMmJmdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV87aWYocz1nb29nLkRlcGVuZGVuY3kuZGVmZXJfJiYoc3x8Z29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSksaXx8cyllLmRlZmVyKChmdW5jdGlvbigpe28oKX0pKTtlbHNle3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50O2lmKGk9Z29vZy5pbkh0bWxEb2N1bWVudF8oKSYmXCJBY3RpdmVYT2JqZWN0XCJpbiBnb29nLmdsb2JhbCxuJiZnb29nLmluSHRtbERvY3VtZW50XygpJiZnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpJiYhaSl7Z29vZy5EZXBlbmRlbmN5LmRlZmVyXz0hMCxlLnBhdXNlKCk7dmFyIGc9YS5vbnJlYWR5c3RhdGVjaGFuZ2U7YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtcImludGVyYWN0aXZlXCI9PWEucmVhZHlTdGF0ZSYmKGEub25yZWFkeXN0YXRlY2hhbmdlPWcsbygpLGUucmVzdW1lKCkpLGdvb2cuaXNGdW5jdGlvbihnKSYmZy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19ZWxzZSFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfJiZnb29nLmluSHRtbERvY3VtZW50XygpJiZnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpP2Z1bmN0aW9uKCl7dmFyIGU9Z29vZy5nbG9iYWwuZG9jdW1lbnQsdD1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18odCksbygpfSkpLHI9JzxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPicrZ29vZy5wcm90ZWN0U2NyaXB0VGFnXygnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcIicrdCsnXCIpOycpK1wiPFxcL3NjcmlwdD5cIjtlLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwocik6cil9KCk6bygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7fSxnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbixzKXtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeS5jYWxsKHRoaXMsZSx0LG8scixuKSx0aGlzLnRyYW5zcGlsZXI9c30sZ29vZy5pbmhlcml0cyhnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KSxnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHJhbnNwaWxlci50cmFuc3BpbGUoZSx0aGlzLmdldFBhdGhOYW1lKCkpfSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGUsdCxvLHIsbil9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbixzLGkpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxlLHQsbyxyLG4pLHRoaXMubmVlZHNUcmFuc3BpbGVfPXMsdGhpcy50cmFuc3BpbGVyXz1pfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZWVkc1RyYW5zcGlsZV8mJihlPXRoaXMudHJhbnNwaWxlcl8udHJhbnNwaWxlKGUsdGhpcy5nZXRQYXRoTmFtZSgpKSksZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLkpTT04pP1wiZ29vZy5sb2FkTW9kdWxlKFwiK2dvb2cuZ2xvYmFsLkpTT04uc3RyaW5naWZ5KGUrXCJcXG4vLyMgc291cmNlVVJMPVwiK3RoaXMucGF0aCtcIlxcblwiKStcIik7XCI6J2dvb2cubG9hZE1vZHVsZShmdW5jdGlvbihleHBvcnRzKSB7XCJ1c2Ugc3RyaWN0XCI7JytlK1wiXFxuO3JldHVybiBleHBvcnRzfSk7XFxuLy8jIHNvdXJjZVVSTD1cIit0aGlzLnBhdGgrXCJcXG5cIn0sZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXz0hKGdvb2cuZ2xvYmFsLmF0b2J8fCFnb29nLmdsb2JhbC5kb2N1bWVudHx8IWdvb2cuZ2xvYmFsLmRvY3VtZW50LmFsbCksZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmFkZERlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scil7dD10fHxbXSxlPWUucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTt2YXIgbj1nb29nLm5vcm1hbGl6ZVBhdGhfKGdvb2cuYmFzZVBhdGgrZSk7Zm9yKHImJlwiYm9vbGVhblwiIT10eXBlb2Ygcnx8KHI9cj97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSksbz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3kobixlLHQsbyxyLGdvb2cudHJhbnNwaWxlcl8ubmVlZHNUcmFuc3BpbGUoci5sYW5nfHxcImVzM1wiLHIubW9kdWxlKSksdGhpcy5kZXBlbmRlbmNpZXNfW25dPW8sbz0wO288dC5sZW5ndGg7bysrKXRoaXMuaWRUb1BhdGhfW3Rbb11dPW47dGhpcy5pZFRvUGF0aF9bZV09bn0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zcGlsZXI9ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihlLHQsbyxyLG4scyl7cmV0dXJuIG4ubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuR09PRz9uZXcgZ29vZy5Hb29nTW9kdWxlRGVwZW5kZW5jeShlLHQsbyxyLG4scyx0aGlzLnRyYW5zcGlsZXIpOnM/bmV3IGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3koZSx0LG8scixuLHRoaXMudHJhbnNwaWxlcik6bi5tb2R1bGU9PWdvb2cuTW9kdWxlVHlwZS5FUzY/XCJuZXZlclwiPT1nb29nLlRSQU5TUElMRSYmZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEP25ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGUsdCxvLHIsbik6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShlLHQsbyxyLG4pOm5ldyBnb29nLkRlcGVuZGVuY3koZSx0LG8scixuKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oZSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoZSl9LGdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQU3x8Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCksZ29vZy5ib290c3RyYXA9ZnVuY3Rpb24oZSx0KXtnb29nLmRlYnVnTG9hZGVyXy5ib290c3RyYXAoZSx0KX0pLGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT1cIlwiLGdvb2cuaWRlbnRpdHlfPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBUcnVzdGVkVHlwZXN8fCFUcnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KXJldHVybiB0O3RyeXt0PVRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koZSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlfLGNyZWF0ZVVSTDpnb29nLmlkZW50aXR5X30pfWNhdGNoKGUpe2dvb2cubG9nVG9Db25zb2xlXyhlLm1lc3NhZ2UpfXJldHVybiB0fSxnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FK1wiI2Jhc2VcIik6bnVsbCxnb29nLm9iamVjdD17fSxnb29nLm9iamVjdC5pcz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT0xL3Q6ZSE9ZSYmdCE9dH0sZ29vZy5vYmplY3QuZm9yRWFjaD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpdC5jYWxsKG8sZVtyXSxyLGUpfSxnb29nLm9iamVjdC5maWx0ZXI9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSl0LmNhbGwobyxlW3JdLHIsZSkmJihuW3JdPWVbcl0pO3JldHVybiBufSxnb29nLm9iamVjdC5tYXA9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSluW3JdPXQuY2FsbChvLGVbcl0scixlKTtyZXR1cm4gbn0sZ29vZy5vYmplY3Quc29tZT1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpaWYodC5jYWxsKG8sZVtyXSxyLGUpKXJldHVybiEwO3JldHVybiExfSxnb29nLm9iamVjdC5ldmVyeT1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpaWYoIXQuY2FsbChvLGVbcl0scixlKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ29vZy5vYmplY3QuZ2V0Q291bnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbz0wO2Zvcih0IGluIGUpbysrO3JldHVybiBvfSxnb29nLm9iamVjdC5nZXRBbnlLZXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpcmV0dXJuIHR9LGdvb2cub2JqZWN0LmdldEFueVZhbHVlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKXJldHVybiBlW3RdfSxnb29nLm9iamVjdC5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLm9iamVjdC5jb250YWluc1ZhbHVlKGUsdCl9LGdvb2cub2JqZWN0LmdldFZhbHVlcz1mdW5jdGlvbihlKXt2YXIgdCxvPVtdLHI9MDtmb3IodCBpbiBlKW9bcisrXT1lW3RdO3JldHVybiBvfSxnb29nLm9iamVjdC5nZXRLZXlzPWZ1bmN0aW9uKGUpe3ZhciB0LG89W10scj0wO2Zvcih0IGluIGUpb1tyKytdPXQ7cmV0dXJuIG99LGdvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5pc0FycmF5TGlrZSh0KSxyPW8/dDphcmd1bWVudHM7Zm9yKG89bz8wOjE7bzxyLmxlbmd0aDtvKyspe2lmKG51bGw9PWUpcmV0dXJuO2U9ZVtyW29dXX1yZXR1cm4gZX0sZ29vZy5vYmplY3QuY29udGFpbnNLZXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9PWUmJnQgaW4gZX0sZ29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiBlKWlmKGVbb109PXQpcmV0dXJuITA7cmV0dXJuITF9LGdvb2cub2JqZWN0LmZpbmRLZXk9ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgciBpbiBlKWlmKHQuY2FsbChvLGVbcl0scixlKSlyZXR1cm4gcn0sZ29vZy5vYmplY3QuZmluZFZhbHVlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4odD1nb29nLm9iamVjdC5maW5kS2V5KGUsdCxvKSkmJmVbdF19LGdvb2cub2JqZWN0LmlzRW1wdHk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdvb2cub2JqZWN0LmNsZWFyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWRlbGV0ZSBlW3RdfSxnb29nLm9iamVjdC5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbztyZXR1cm4obz10IGluIGUpJiZkZWxldGUgZVt0XSxvfSxnb29nLm9iamVjdC5hZGQ9ZnVuY3Rpb24oZSx0LG8pe2lmKG51bGwhPT1lJiZ0IGluIGUpdGhyb3cgRXJyb3IoJ1RoZSBvYmplY3QgYWxyZWFkeSBjb250YWlucyB0aGUga2V5IFwiJyt0KydcIicpO2dvb2cub2JqZWN0LnNldChlLHQsbyl9LGdvb2cub2JqZWN0LmdldD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGwhPT1lJiZ0IGluIGU/ZVt0XTpvfSxnb29nLm9iamVjdC5zZXQ9ZnVuY3Rpb24oZSx0LG8pe2VbdF09b30sZ29vZy5vYmplY3Quc2V0SWZVbmRlZmluZWQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0IGluIGU/ZVt0XTplW3RdPW99LGdvb2cub2JqZWN0LnNldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gdCBpbiBlP2VbdF06KG89bygpLGVbdF09byl9LGdvb2cub2JqZWN0LmVxdWFscz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiBlKWlmKCEobyBpbiB0KXx8ZVtvXSE9PXRbb10pcmV0dXJuITE7Zm9yKHZhciByIGluIHQpaWYoIShyIGluIGUpKXJldHVybiExO3JldHVybiEwfSxnb29nLm9iamVjdC5jbG9uZT1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O2Zvcih0IGluIGUpb1t0XT1lW3RdO3JldHVybiBvfSxnb29nLm9iamVjdC51bnNhZmVDbG9uZT1mdW5jdGlvbihlKXt2YXIgdD1nb29nLnR5cGVPZihlKTtpZihcIm9iamVjdFwiPT10fHxcImFycmF5XCI9PXQpe2lmKGdvb2cuaXNGdW5jdGlvbihlLmNsb25lKSlyZXR1cm4gZS5jbG9uZSgpO2Zvcih2YXIgbyBpbiB0PVwiYXJyYXlcIj09dD9bXTp7fSxlKXRbb109Z29vZy5vYmplY3QudW5zYWZlQ2xvbmUoZVtvXSk7cmV0dXJuIHR9cmV0dXJuIGV9LGdvb2cub2JqZWN0LnRyYW5zcG9zZT1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O2Zvcih0IGluIGUpb1tlW3RdXT10O3JldHVybiBvfSxnb29nLm9iamVjdC5QUk9UT1RZUEVfRklFTERTXz1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKSxnb29nLm9iamVjdC5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7Zm9yKG8gaW4gcj1hcmd1bWVudHNbbl0pZVtvXT1yW29dO2Zvcih2YXIgcz0wO3M8Z29vZy5vYmplY3QuUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO3MrKylvPWdvb2cub2JqZWN0LlBST1RPVFlQRV9GSUVMRFNfW3NdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG8pJiYoZVtvXT1yW29dKX19LGdvb2cub2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PXQmJmdvb2cuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBnb29nLm9iamVjdC5jcmVhdGUuYXBwbHkobnVsbCxhcmd1bWVudHNbMF0pO2lmKHQlMil0aHJvdyBFcnJvcihcIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO2Zvcih2YXIgbz17fSxyPTA7cjx0O3IrPTIpb1thcmd1bWVudHNbcl1dPWFyZ3VtZW50c1tyKzFdO3JldHVybiBvfSxnb29nLm9iamVjdC5jcmVhdGVTZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDtpZigxPT10JiZnb29nLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gZ29vZy5vYmplY3QuY3JlYXRlU2V0LmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtmb3IodmFyIG89e30scj0wO3I8dDtyKyspb1thcmd1bWVudHNbcl1dPSEwO3JldHVybiBvfSxnb29nLm9iamVjdC5jcmVhdGVJbW11dGFibGVWaWV3PWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIE9iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihlKSYmKHQ9T2JqZWN0LmNyZWF0ZShlKSxPYmplY3QuZnJlZXplKHQpKSx0fSxnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9ZnVuY3Rpb24oZSl7cmV0dXJuISFPYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihlKX0sZ29vZy5vYmplY3QuZ2V0QWxsUHJvcGVydHlOYW1lcz1mdW5jdGlvbihlLHQsbyl7aWYoIWUpcmV0dXJuW107aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHwhT2JqZWN0LmdldFByb3RvdHlwZU9mKXJldHVybiBnb29nLm9iamVjdC5nZXRLZXlzKGUpO2Zvcih2YXIgcj17fTtlJiYoZSE9PU9iamVjdC5wcm90b3R5cGV8fHQpJiYoZSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8byk7KXtmb3IodmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkscz0wO3M8bi5sZW5ndGg7cysrKXJbbltzXV09ITA7ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9cmV0dXJuIGdvb2cub2JqZWN0LmdldEtleXMocil9LGdvb2cub2JqZWN0LmdldFN1cGVyQ2xhc3M9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUucHJvdG90eXBlKSkmJmUuY29uc3RydWN0b3J9LGdvb2cuZGVidWc9e30sZ29vZy5kZWJ1Zy5FcnJvcj1mdW5jdGlvbihlKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGdvb2cuZGVidWcuRXJyb3IpO2Vsc2V7dmFyIHQ9RXJyb3IoKS5zdGFjazt0JiYodGhpcy5zdGFjaz10KX1lJiYodGhpcy5tZXNzYWdlPVN0cmluZyhlKSksdGhpcy5yZXBvcnRFcnJvclRvU2VydmVyPSEwfSxnb29nLmluaGVyaXRzKGdvb2cuZGVidWcuRXJyb3IsRXJyb3IpLGdvb2cuZGVidWcuRXJyb3IucHJvdG90eXBlLm5hbWU9XCJDdXN0b21FcnJvclwiLGdvb2cuZG9tPXt9LGdvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9LGdvb2cuYXNzZXJ0cz17fSxnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRyxnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3I9ZnVuY3Rpb24oZSx0KXtnb29nLmRlYnVnLkVycm9yLmNhbGwodGhpcyxnb29nLmFzc2VydHMuc3Vic18oZSx0KSksdGhpcy5tZXNzYWdlUGF0dGVybj1lfSxnb29nLmluaGVyaXRzKGdvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvcixnb29nLmRlYnVnLkVycm9yKSxnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLm5hbWU9XCJBc3NlcnRpb25FcnJvclwiLGdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI9ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZ29vZy5hc3NlcnRzLmVycm9ySGFuZGxlcl89Z29vZy5hc3NlcnRzLkRFRkFVTFRfRVJST1JfSEFORExFUixnb29nLmFzc2VydHMuc3Vic189ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89XCJcIixyPShlPWUuc3BsaXQoXCIlc1wiKSkubGVuZ3RoLTEsbj0wO248cjtuKyspbys9ZVtuXSsobjx0Lmxlbmd0aD90W25dOlwiJXNcIik7cmV0dXJuIG8rZVtyXX0sZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV89ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49XCJBc3NlcnRpb24gZmFpbGVkXCI7aWYobyl7bis9XCI6IFwiK287dmFyIHM9cn1lbHNlIGUmJihuKz1cIjogXCIrZSxzPXQpO2U9bmV3IGdvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvcihcIlwiK24sc3x8W10pLGdvb2cuYXNzZXJ0cy5lcnJvckhhbmRsZXJfKGUpfSxnb29nLmFzc2VydHMuc2V0RXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmKGdvb2cuYXNzZXJ0cy5lcnJvckhhbmRsZXJfPWUpfSxnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJcIixudWxsLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1lJiZnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkIHRvIGV4aXN0OiAlcy5cIixbZV0sdCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpLGV9LGdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGUsdCl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZnb29nLmFzc2VydHMuZXJyb3JIYW5kbGVyXyhuZXcgZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yKFwiRmFpbHVyZVwiKyhlP1wiOiBcIitlOlwiXCIpLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSkpfSxnb29nLmFzc2VydHMuYXNzZXJ0TnVtYmVyPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc051bWJlcihlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBudW1iZXIgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc1N0cmluZyhlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFnb29nLmlzRnVuY3Rpb24oZSkmJmdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0T2JqZWN0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0QXJyYXk9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFnb29nLmlzQXJyYXkoZSkmJmdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgYXJyYXkgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0Qm9vbGVhbj1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIWdvb2cuaXNCb29sZWFuKGUpJiZnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkIGJvb2xlYW4gYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChlKSYmZS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8Z29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBFbGVtZW50IGJ1dCBnb3QgJXM6ICVzLlwiLFtnb29nLnR5cGVPZihlKSxlXSx0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8ZSBpbnN0YW5jZW9mIHR8fGdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgaW5zdGFuY2VvZiAlcyBidXQgZ290ICVzLlwiLFtnb29nLmFzc2VydHMuZ2V0VHlwZV8odCksZ29vZy5hc3NlcnRzLmdldFR5cGVfKGUpXSxvLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8XCJudW1iZXJcIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpfHxnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LlwiLFtlXSx0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdFByb3RvdHlwZUlzSW50YWN0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIE9iamVjdC5wcm90b3R5cGUpZ29vZy5hc3NlcnRzLmZhaWwoZStcIiBzaG91bGQgbm90IGJlIGVudW1lcmFibGUgaW4gT2JqZWN0LnByb3RvdHlwZS5cIil9LGdvb2cuYXNzZXJ0cy5nZXRUeXBlXz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJ1bmtub3duIHR5cGUgbmFtZVwiOmUgaW5zdGFuY2VvZiBPYmplY3Q/ZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk6bnVsbD09PWU/XCJudWxsXCI6dHlwZW9mIGV9O3ZhciBqc3BiPXtCaW5hcnlDb25zdGFudHM6e30sQ29uc3RCaW5hcnlNZXNzYWdlOmZ1bmN0aW9uKCl7fSxCaW5hcnlNZXNzYWdlOmZ1bmN0aW9uKCl7fX07anNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlPXtJTlZBTElEOi0xLERPVUJMRToxLEZMT0FUOjIsSU5UNjQ6MyxVSU5UNjQ6NCxJTlQzMjo1LEZJWEVENjQ6NixGSVhFRDMyOjcsQk9PTDo4LFNUUklORzo5LEdST1VQOjEwLE1FU1NBR0U6MTEsQllURVM6MTIsVUlOVDMyOjEzLEVOVU06MTQsU0ZJWEVEMzI6MTUsU0ZJWEVENjQ6MTYsU0lOVDMyOjE3LFNJTlQ2NDoxOCxGSEFTSDY0OjMwLFZIQVNINjQ6MzF9LGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlPXtJTlZBTElEOi0xLFZBUklOVDowLEZJWEVENjQ6MSxERUxJTUlURUQ6MixTVEFSVF9HUk9VUDozLEVORF9HUk9VUDo0LEZJWEVEMzI6NX0sanNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlVG9XaXJlVHlwZT1mdW5jdGlvbihlKXt2YXIgdD1qc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGUsbz1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZTtzd2l0Y2goZSl7Y2FzZSB0LklOVDMyOmNhc2UgdC5JTlQ2NDpjYXNlIHQuVUlOVDMyOmNhc2UgdC5VSU5UNjQ6Y2FzZSB0LlNJTlQzMjpjYXNlIHQuU0lOVDY0OmNhc2UgdC5CT09MOmNhc2UgdC5FTlVNOmNhc2UgdC5WSEFTSDY0OnJldHVybiBvLlZBUklOVDtjYXNlIHQuRE9VQkxFOmNhc2UgdC5GSVhFRDY0OmNhc2UgdC5TRklYRUQ2NDpjYXNlIHQuRkhBU0g2NDpyZXR1cm4gby5GSVhFRDY0O2Nhc2UgdC5TVFJJTkc6Y2FzZSB0Lk1FU1NBR0U6Y2FzZSB0LkJZVEVTOnJldHVybiBvLkRFTElNSVRFRDtjYXNlIHQuRkxPQVQ6Y2FzZSB0LkZJWEVEMzI6Y2FzZSB0LlNGSVhFRDMyOnJldHVybiBvLkZJWEVEMzI7ZGVmYXVsdDpyZXR1cm4gby5JTlZBTElEfX0sanNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVI9LTEsanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQzMl9FUFM9MTQwMTI5ODQ2NDMyNDgxN2UtNjAsanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQzMl9NSU49MTE3NTQ5NDM1MDgyMjI4NzVlLTU0LGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYPTM0MDI4MjM0NjYzODUyODg2ZTIyLGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfRVBTPTVlLTMyNCxqc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01JTj0yMjI1MDczODU4NTA3MjAxNGUtMzI0LGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUFYPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5Mixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjA9MTA0ODU3Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjM9ODM4ODYwOCxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzE9MjE0NzQ4MzY0OCxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzI9NDI5NDk2NzI5Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNTI9NDUwMzU5OTYyNzM3MDQ5Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjM9MHg4MDAwMDAwMDAwMDAwMDAwLGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182ND0weDEwMDAwMDAwMDAwMDAwMDAwLGpzcGIuQmluYXJ5Q29uc3RhbnRzLlpFUk9fSEFTSD1cIlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFwiLGdvb2cuYXJyYXk9e30sZ29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUz1nb29nLlRSVVNURURfU0lURSxnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVIsZ29vZy5hcnJheS5wZWVrPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfSxnb29nLmFycmF5Lmxhc3Q9Z29vZy5hcnJheS5wZWVrLGdvb2cuYXJyYXkuaW5kZXhPZj1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvKXtpZihvPW51bGw9PW8/MDowPm8/TWF0aC5tYXgoMCxlLmxlbmd0aCtvKTpvLGdvb2cuaXNTdHJpbmcoZSkpcmV0dXJuIGdvb2cuaXNTdHJpbmcodCkmJjE9PXQubGVuZ3RoP2UuaW5kZXhPZih0LG8pOi0xO2Zvcig7bzxlLmxlbmd0aDtvKyspaWYobyBpbiBlJiZlW29dPT09dClyZXR1cm4gbztyZXR1cm4tMX0sZ29vZy5hcnJheS5sYXN0SW5kZXhPZj1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKT9mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxudWxsPT1vP2UubGVuZ3RoLTE6byl9OmZ1bmN0aW9uKGUsdCxvKXtpZigwPihvPW51bGw9PW8/ZS5sZW5ndGgtMTpvKSYmKG89TWF0aC5tYXgoMCxlLmxlbmd0aCtvKSksZ29vZy5pc1N0cmluZyhlKSlyZXR1cm4gZ29vZy5pc1N0cmluZyh0KSYmMT09dC5sZW5ndGg/ZS5sYXN0SW5kZXhPZih0LG8pOi0xO2Zvcig7MDw9bztvLS0paWYobyBpbiBlJiZlW29dPT09dClyZXR1cm4gbztyZXR1cm4tMX0sZ29vZy5hcnJheS5mb3JFYWNoPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oZSx0LG8pe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspcyBpbiBuJiZ0LmNhbGwobyxuW3NdLHMsZSl9LGdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1lLmxlbmd0aCxuPWdvb2cuaXNTdHJpbmcoZSk/ZS5zcGxpdChcIlwiKTplO2ZvcigtLXI7MDw9cjstLXIpciBpbiBuJiZ0LmNhbGwobyxuW3JdLHIsZSl9LGdvb2cuYXJyYXkuZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZmlsdGVyKT9mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj1bXSxzPTAsaT1nb29nLmlzU3RyaW5nKGUpP2Uuc3BsaXQoXCJcIik6ZSxhPTA7YTxyO2ErKylpZihhIGluIGkpe3ZhciBnPWlbYV07dC5jYWxsKG8sZyxhLGUpJiYobltzKytdPWcpfXJldHVybiBufSxnb29nLmFycmF5Lm1hcD1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49QXJyYXkocikscz1nb29nLmlzU3RyaW5nKGUpP2Uuc3BsaXQoXCJcIik6ZSxpPTA7aTxyO2krKylpIGluIHMmJihuW2ldPXQuY2FsbChvLHNbaV0saSxlKSk7cmV0dXJuIG59LGdvb2cuYXJyYXkucmVkdWNlPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlKT9mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksciYmKHQ9Z29vZy5iaW5kKHQscikpLEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPW87cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaChlLChmdW5jdGlvbihvLHMpe249dC5jYWxsKHIsbixvLHMsZSl9KSksbn0sZ29vZy5hcnJheS5yZWR1Y2VSaWdodD1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0KT9mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT10KSxyJiYodD1nb29nLmJpbmQodCxyKSksQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0LmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyxyKXt2YXIgbj1vO3JldHVybiBnb29nLmFycmF5LmZvckVhY2hSaWdodChlLChmdW5jdGlvbihvLHMpe249dC5jYWxsKHIsbixvLHMsZSl9KSksbn0sZ29vZy5hcnJheS5zb21lPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGUsdCxvKX06ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgcj1lLmxlbmd0aCxuPWdvb2cuaXNTdHJpbmcoZSk/ZS5zcGxpdChcIlwiKTplLHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmdC5jYWxsKG8sbltzXSxzLGUpKXJldHVybiEwO3JldHVybiExfSxnb29nLmFycmF5LmV2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZXZlcnkpP2Z1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspaWYocyBpbiBuJiYhdC5jYWxsKG8sbltzXSxzLGUpKXJldHVybiExO3JldHVybiEwfSxnb29nLmFycmF5LmNvdW50PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj0wO3JldHVybiBnb29nLmFycmF5LmZvckVhY2goZSwoZnVuY3Rpb24oZSxuLHMpe3QuY2FsbChvLGUsbixzKSYmKytyfSksbykscn0sZ29vZy5hcnJheS5maW5kPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4odD1nb29nLmFycmF5LmZpbmRJbmRleChlLHQsbykpP251bGw6Z29vZy5pc1N0cmluZyhlKT9lLmNoYXJBdCh0KTplW3RdfSxnb29nLmFycmF5LmZpbmRJbmRleD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspaWYocyBpbiBuJiZ0LmNhbGwobyxuW3NdLHMsZSkpcmV0dXJuIHM7cmV0dXJuLTF9LGdvb2cuYXJyYXkuZmluZFJpZ2h0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4odD1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0KGUsdCxvKSk/bnVsbDpnb29nLmlzU3RyaW5nKGUpP2UuY2hhckF0KHQpOmVbdF19LGdvb2cuYXJyYXkuZmluZEluZGV4UmlnaHQ9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmU7Zm9yKC0tcjswPD1yO3ItLSlpZihyIGluIG4mJnQuY2FsbChvLG5bcl0scixlKSlyZXR1cm4gcjtyZXR1cm4tMX0sZ29vZy5hcnJheS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiAwPD1nb29nLmFycmF5LmluZGV4T2YoZSx0KX0sZ29vZy5hcnJheS5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiAwPT1lLmxlbmd0aH0sZ29vZy5hcnJheS5jbGVhcj1mdW5jdGlvbihlKXtpZighZ29vZy5pc0FycmF5KGUpKWZvcih2YXIgdD1lLmxlbmd0aC0xOzA8PXQ7dC0tKWRlbGV0ZSBlW3RdO2UubGVuZ3RoPTB9LGdvb2cuYXJyYXkuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7Z29vZy5hcnJheS5jb250YWlucyhlLHQpfHxlLnB1c2godCl9LGdvb2cuYXJyYXkuaW5zZXJ0QXQ9ZnVuY3Rpb24oZSx0LG8pe2dvb2cuYXJyYXkuc3BsaWNlKGUsbywwLHQpfSxnb29nLmFycmF5Lmluc2VydEFycmF5QXQ9ZnVuY3Rpb24oZSx0LG8pe2dvb2cucGFydGlhbChnb29nLmFycmF5LnNwbGljZSxlLG8sMCkuYXBwbHkobnVsbCx0KX0sZ29vZy5hcnJheS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSx0LG8pe3ZhciByOzI9PWFyZ3VtZW50cy5sZW5ndGh8fDA+KHI9Z29vZy5hcnJheS5pbmRleE9mKGUsbykpP2UucHVzaCh0KTpnb29nLmFycmF5Lmluc2VydEF0KGUsdCxyKX0sZ29vZy5hcnJheS5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbztyZXR1cm4obz0wPD0odD1nb29nLmFycmF5LmluZGV4T2YoZSx0KSkpJiZnb29nLmFycmF5LnJlbW92ZUF0KGUsdCksb30sZ29vZy5hcnJheS5yZW1vdmVMYXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA8PSh0PWdvb2cuYXJyYXkubGFzdEluZGV4T2YoZSx0KSkmJihnb29nLmFycmF5LnJlbW92ZUF0KGUsdCksITApfSxnb29nLmFycmF5LnJlbW92ZUF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLDE9PUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChlLHQsMSkubGVuZ3RofSxnb29nLmFycmF5LnJlbW92ZUlmPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMDw9KHQ9Z29vZy5hcnJheS5maW5kSW5kZXgoZSx0LG8pKSYmKGdvb2cuYXJyYXkucmVtb3ZlQXQoZSx0KSwhMCl9LGdvb2cuYXJyYXkucmVtb3ZlQWxsSWY9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPTA7cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0KGUsKGZ1bmN0aW9uKG4scyl7dC5jYWxsKG8sbixzLGUpJiZnb29nLmFycmF5LnJlbW92ZUF0KGUscykmJnIrK30pKSxyfSxnb29nLmFycmF5LmNvbmNhdD1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfSxnb29nLmFycmF5LmpvaW49ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX0sZ29vZy5hcnJheS50b0FycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKDA8dCl7Zm9yKHZhciBvPUFycmF5KHQpLHI9MDtyPHQ7cisrKW9bcl09ZVtyXTtyZXR1cm4gb31yZXR1cm5bXX0sZ29vZy5hcnJheS5jbG9uZT1nb29nLmFycmF5LnRvQXJyYXksZ29vZy5hcnJheS5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYoZ29vZy5pc0FycmF5TGlrZShyKSl7dmFyIG49ZS5sZW5ndGh8fDAscz1yLmxlbmd0aHx8MDtlLmxlbmd0aD1uK3M7Zm9yKHZhciBpPTA7aTxzO2krKyllW24raV09cltpXX1lbHNlIGUucHVzaChyKX19LGdvb2cuYXJyYXkuc3BsaWNlPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGUsZ29vZy5hcnJheS5zbGljZShhcmd1bWVudHMsMSkpfSxnb29nLmFycmF5LnNsaWNlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsdCxvKX0sZ29vZy5hcnJheS5yZW1vdmVEdXBsaWNhdGVzPWZ1bmN0aW9uKGUsdCxvKXt0PXR8fGU7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZSk/XCJvXCIrZ29vZy5nZXRVaWQoZSk6KHR5cGVvZiBlKS5jaGFyQXQoMCkrZX07bz1vfHxyLHI9e307Zm9yKHZhciBuPTAscz0wO3M8ZS5sZW5ndGg7KXt2YXIgaT1lW3MrK10sYT1vKGkpO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLGEpfHwoclthXT0hMCx0W24rK109aSl9dC5sZW5ndGg9bn0sZ29vZy5hcnJheS5iaW5hcnlTZWFyY2g9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFycmF5LmJpbmFyeVNlYXJjaF8oZSxvfHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlLCExLHQpfSxnb29nLmFycmF5LmJpbmFyeVNlbGVjdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXJyYXkuYmluYXJ5U2VhcmNoXyhlLHQsITAsdm9pZCAwLG8pfSxnb29nLmFycmF5LmJpbmFyeVNlYXJjaF89ZnVuY3Rpb24oZSx0LG8scixuKXtmb3IodmFyIHMsaT0wLGE9ZS5sZW5ndGg7aTxhOyl7dmFyIGc9aSthPj4xLGw9bz90LmNhbGwobixlW2ddLGcsZSk6dChyLGVbZ10pOzA8bD9pPWcrMTooYT1nLHM9IWwpfXJldHVybiBzP2k6fml9LGdvb2cuYXJyYXkuc29ydD1mdW5jdGlvbihlLHQpe2Uuc29ydCh0fHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlKX0sZ29vZy5hcnJheS5zdGFibGVTb3J0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPUFycmF5KGUubGVuZ3RoKSxyPTA7cjxlLmxlbmd0aDtyKyspb1tyXT17aW5kZXg6cix2YWx1ZTplW3JdfTt2YXIgbj10fHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlO2Zvcihnb29nLmFycmF5LnNvcnQobywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlLnZhbHVlLHQudmFsdWUpfHxlLmluZGV4LXQuaW5kZXh9KSkscj0wO3I8ZS5sZW5ndGg7cisrKWVbcl09b1tyXS52YWx1ZX0sZ29vZy5hcnJheS5zb3J0QnlLZXk9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPW98fGdvb2cuYXJyYXkuZGVmYXVsdENvbXBhcmU7Z29vZy5hcnJheS5zb3J0KGUsKGZ1bmN0aW9uKGUsbyl7cmV0dXJuIHIodChlKSx0KG8pKX0pKX0sZ29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PWZ1bmN0aW9uKGUsdCxvKXtnb29nLmFycmF5LnNvcnRCeUtleShlLChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLG8pfSxnb29nLmFycmF5LmlzU29ydGVkPWZ1bmN0aW9uKGUsdCxvKXt0PXR8fGdvb2cuYXJyYXkuZGVmYXVsdENvbXBhcmU7Zm9yKHZhciByPTE7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXQoZVtyLTFdLGVbcl0pO2lmKDA8bnx8MD09biYmbylyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5hcnJheS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG8pe2lmKCFnb29nLmlzQXJyYXlMaWtlKGUpfHwhZ29vZy5pc0FycmF5TGlrZSh0KXx8ZS5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO3ZhciByPWUubGVuZ3RoO289b3x8Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5O2Zvcih2YXIgbj0wO248cjtuKyspaWYoIW8oZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ29vZy5hcnJheS5jb21wYXJlMz1mdW5jdGlvbihlLHQsbyl7bz1vfHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlO2Zvcih2YXIgcj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCksbj0wO248cjtuKyspe3ZhciBzPW8oZVtuXSx0W25dKTtpZigwIT1zKXJldHVybiBzfXJldHVybiBnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlKGUubGVuZ3RoLHQubGVuZ3RoKX0sZ29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPnQ/MTplPHQ/LTE6MH0sZ29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tZ29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZShlLHQpfSxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlRXF1YWxpdHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR9LGdvb2cuYXJyYXkuYmluYXJ5SW5zZXJ0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4obz1nb29nLmFycmF5LmJpbmFyeVNlYXJjaChlLHQsbykpJiYoZ29vZy5hcnJheS5pbnNlcnRBdChlLHQsLShvKzEpKSwhMCl9LGdvb2cuYXJyYXkuYmluYXJ5UmVtb3ZlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMDw9KHQ9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2goZSx0LG8pKSYmZ29vZy5hcnJheS5yZW1vdmVBdChlLHQpfSxnb29nLmFycmF5LmJ1Y2tldD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHM9ZVtuXSxpPXQuY2FsbChvLHMsbixlKTtnb29nLmlzRGVmKGkpJiYocltpXXx8KHJbaV09W10pKS5wdXNoKHMpfXJldHVybiByfSxnb29nLmFycmF5LnRvT2JqZWN0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj17fTtyZXR1cm4gZ29vZy5hcnJheS5mb3JFYWNoKGUsKGZ1bmN0aW9uKG4scyl7clt0LmNhbGwobyxuLHMsZSldPW59KSkscn0sZ29vZy5hcnJheS5yYW5nZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9W10sbj0wLHM9ZTtpZih2b2lkIDAhPT10JiYobj1lLHM9dCksMD4obz1vfHwxKSoocy1uKSlyZXR1cm5bXTtpZigwPG8pZm9yKGU9bjtlPHM7ZSs9bylyLnB1c2goZSk7ZWxzZSBmb3IoZT1uO2U+cztlKz1vKXIucHVzaChlKTtyZXR1cm4gcn0sZ29vZy5hcnJheS5yZXBlYXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89W10scj0wO3I8dDtyKyspb1tyXT1lO3JldHVybiBvfSxnb29nLmFycmF5LmZsYXR0ZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYoZ29vZy5pc0FycmF5KHIpKWZvcih2YXIgbj0wO248ci5sZW5ndGg7bis9ODE5Mil7dmFyIHM9Z29vZy5hcnJheS5zbGljZShyLG4sbis4MTkyKTtzPWdvb2cuYXJyYXkuZmxhdHRlbi5hcHBseShudWxsLHMpO2Zvcih2YXIgaT0wO2k8cy5sZW5ndGg7aSsrKXQucHVzaChzW2ldKX1lbHNlIHQucHVzaChyKX1yZXR1cm4gdH0sZ29vZy5hcnJheS5yb3RhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksZS5sZW5ndGgmJigwPCh0JT1lLmxlbmd0aCk/QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZSxlLnNwbGljZSgtdCx0KSk6MD50JiZBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLGUuc3BsaWNlKDAsLXQpKSksZX0sZ29vZy5hcnJheS5tb3ZlSXRlbT1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGUubGVuZ3RoKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PW8mJm88ZS5sZW5ndGgpLHQ9QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGUsdCwxKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoZSxvLDAsdFswXSl9LGdvb2cuYXJyYXkuemlwPWZ1bmN0aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgdD1bXSxvPWFyZ3VtZW50c1swXS5sZW5ndGgscj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspYXJndW1lbnRzW3JdLmxlbmd0aDxvJiYobz1hcmd1bWVudHNbcl0ubGVuZ3RoKTtmb3Iocj0wO3I8bztyKyspe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyluLnB1c2goYXJndW1lbnRzW3NdW3JdKTt0LnB1c2gobil9cmV0dXJuIHR9LGdvb2cuYXJyYXkuc2h1ZmZsZT1mdW5jdGlvbihlLHQpe3Q9dHx8TWF0aC5yYW5kb207Zm9yKHZhciBvPWUubGVuZ3RoLTE7MDxvO28tLSl7dmFyIHI9TWF0aC5mbG9vcih0KCkqKG8rMSkpLG49ZVtvXTtlW29dPWVbcl0sZVtyXT1ufX0sZ29vZy5hcnJheS5jb3B5QnlJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBvPVtdO3JldHVybiBnb29nLmFycmF5LmZvckVhY2godCwoZnVuY3Rpb24odCl7by5wdXNoKGVbdF0pfSkpLG99LGdvb2cuYXJyYXkuY29uY2F0TWFwPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hcnJheS5jb25jYXQuYXBwbHkoW10sZ29vZy5hcnJheS5tYXAoZSx0LG8pKX0sZ29vZy5jcnlwdD17fSxnb29nLmNyeXB0LnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxvPTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lLmNoYXJDb2RlQXQocik7MjU1PG4mJih0W28rK109MjU1Jm4sbj4+PTgpLHRbbysrXT1ufXJldHVybiB0fSxnb29nLmNyeXB0LmJ5dGVBcnJheVRvU3RyaW5nPWZ1bmN0aW9uKGUpe2lmKDgxOTI+PWUubGVuZ3RoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Zm9yKHZhciB0PVwiXCIsbz0wO288ZS5sZW5ndGg7bys9ODE5Mil7dmFyIHI9Z29vZy5hcnJheS5zbGljZShlLG8sbys4MTkyKTt0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscil9cmV0dXJuIHR9LGdvb2cuY3J5cHQuYnl0ZUFycmF5VG9IZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hcnJheS5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIDE8KGU9ZS50b1N0cmluZygxNikpLmxlbmd0aD9lOlwiMFwiK2V9KSkuam9pbih0fHxcIlwiKX0sZ29vZy5jcnlwdC5oZXhUb0J5dGVBcnJheT1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA9PWUubGVuZ3RoJTIsXCJLZXkgc3RyaW5nIGxlbmd0aCBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7Zm9yKHZhciB0PVtdLG89MDtvPGUubGVuZ3RoO28rPTIpdC5wdXNoKHBhcnNlSW50KGUuc3Vic3RyaW5nKG8sbysyKSwxNikpO3JldHVybiB0fSxnb29nLmNyeXB0LnN0cmluZ1RvVXRmOEJ5dGVBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbz0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZS5jaGFyQ29kZUF0KHIpOzEyOD5uP3RbbysrXT1uOigyMDQ4Pm4/dFtvKytdPW4+PjZ8MTkyOig1NTI5Nj09KDY0NTEyJm4pJiZyKzE8ZS5sZW5ndGgmJjU2MzIwPT0oNjQ1MTImZS5jaGFyQ29kZUF0KHIrMSkpPyhuPTY1NTM2KygoMTAyMyZuKTw8MTApKygxMDIzJmUuY2hhckNvZGVBdCgrK3IpKSx0W28rK109bj4+MTh8MjQwLHRbbysrXT1uPj4xMiY2M3wxMjgpOnRbbysrXT1uPj4xMnwyMjQsdFtvKytdPW4+PjYmNjN8MTI4KSx0W28rK109NjMmbnwxMjgpfXJldHVybiB0fSxnb29nLmNyeXB0LnV0ZjhCeXRlQXJyYXlUb1N0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbz0wLHI9MDtvPGUubGVuZ3RoOyl7dmFyIG49ZVtvKytdO2lmKDEyOD5uKXRbcisrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO2Vsc2UgaWYoMTkxPG4mJjIyND5uKXt2YXIgcz1lW28rK107dFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fDYzJnMpfWVsc2UgaWYoMjM5PG4mJjM2NT5uKXtzPWVbbysrXTt2YXIgaT1lW28rK107bj0oKDcmbik8PDE4fCg2MyZzKTw8MTJ8KDYzJmkpPDw2fDYzJmVbbysrXSktNjU1MzYsdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKG4+PjEwKSksdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTYzMjArKDEwMjMmbikpfWVsc2Ugcz1lW28rK10saT1lW28rK10sdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1Jm4pPDwxMnwoNjMmcyk8PDZ8NjMmaSl9cmV0dXJuIHQuam9pbihcIlwiKX0sZ29vZy5jcnlwdC54b3JCeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KGUubGVuZ3RoPT10Lmxlbmd0aCxcIlhPUiBhcnJheSBsZW5ndGhzIG11c3QgbWF0Y2hcIik7Zm9yKHZhciBvPVtdLHI9MDtyPGUubGVuZ3RoO3IrKylvLnB1c2goZVtyXV50W3JdKTtyZXR1cm4gb30sZ29vZy5kb20uYXNzZXJ0cz17fSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb249ZnVuY3Rpb24oZSl7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTKXt2YXIgdD1nb29nLmRvbS5hc3NlcnRzLmdldFdpbmRvd18oZSk7dCYmKCFlfHwhKGUgaW5zdGFuY2VvZiB0LkxvY2F0aW9uKSYmZSBpbnN0YW5jZW9mIHQuRWxlbWVudCkmJmdvb2cuYXNzZXJ0cy5mYWlsKFwiQXJndW1lbnQgaXMgbm90IGEgTG9jYXRpb24gKG9yIGEgbm9uLUVsZW1lbnQgbW9jayk7IGdvdDogJXNcIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oZSkpfXJldHVybiBlfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfPWZ1bmN0aW9uKGUsdCl7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTKXt2YXIgbz1nb29nLmRvbS5hc3NlcnRzLmdldFdpbmRvd18oZSk7byYmdm9pZCAwIT09b1t0XSYmKGUmJihlIGluc3RhbmNlb2Ygb1t0XXx8IShlIGluc3RhbmNlb2Ygby5Mb2NhdGlvbnx8ZSBpbnN0YW5jZW9mIG8uRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbChcIkFyZ3VtZW50IGlzIG5vdCBhICVzIChvciBhIG5vbi1FbGVtZW50LCBub24tTG9jYXRpb24gbW9jayk7IGdvdDogJXNcIix0LGdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXyhlKSkpfXJldHVybiBlfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxBbmNob3JFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxCdXR0b25FbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTExpbmtFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MTGlua0VsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW1hZ2VFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MSW1hZ2VFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTEF1ZGlvRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxWaWRlb0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxWaWRlb0VsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MSW5wdXRFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFRleHRBcmVhRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTFRleHRBcmVhRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxDYW52YXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MQ2FudmFzRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxFbWJlZEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRm9ybUVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxGb3JtRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxGcmFtZUVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTElGcmFtZUVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTE9iamVjdEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTFNjcmlwdEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihlKXtpZighZ29vZy5pc09iamVjdChlKSlyZXR1cm4gdm9pZCAwPT09ZT9cInVuZGVmaW5lZFwiOm51bGw9PT1lP1wibnVsbFwiOnR5cGVvZiBlO3RyeXtyZXR1cm4gZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9Y2F0Y2goZSl7cmV0dXJuXCI8b2JqZWN0IGNvdWxkIG5vdCBiZSBzdHJpbmdpZmllZD5cIn19LGdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9ZSYmZS5vd25lckRvY3VtZW50LG89dCYmKHQuZGVmYXVsdFZpZXd8fHQucGFyZW50V2luZG93KTtpZigobz1vfHxnb29nLmdsb2JhbCkuRWxlbWVudCYmby5Mb2NhdGlvbilyZXR1cm4gb31jYXRjaChlKXt9cmV0dXJuIG51bGx9LGdvb2cuZnVuY3Rpb25zPXt9LGdvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0sZ29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfSxnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV9LGdvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGUpfX0sZ29vZy5mdW5jdGlvbnMuZmFpbD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBlfX0sZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLHQpKX19LGdvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2VdfX0sZ29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGUsdCl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHQucHVzaC5hcHBseSh0LG8pLGUuYXBwbHkodGhpcyx0KX19LGdvb2cuZnVuY3Rpb25zLndpdGhSZXR1cm5WYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmZ1bmN0aW9ucy5zZXF1ZW5jZShlLGdvb2cuZnVuY3Rpb25zLmNvbnN0YW50KHQpKX0sZ29vZy5mdW5jdGlvbnMuZXF1YWxUbz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gdD9lPT1vOmU9PT1vfX0sZ29vZy5mdW5jdGlvbnMuY29tcG9zZT1mdW5jdGlvbihlLHQpe3ZhciBvPWFyZ3VtZW50cyxyPW8ubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe3ZhciBlO3ImJihlPW9bci0xXS5hcHBseSh0aGlzLGFyZ3VtZW50cykpO2Zvcih2YXIgdD1yLTI7MDw9dDt0LS0pZT1vW3RdLmNhbGwodGhpcyxlKTtyZXR1cm4gZX19LGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxvPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZSxyPTA7cjxvO3IrKyllPXRbcl0uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlfX0sZ29vZy5mdW5jdGlvbnMuYW5kPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxvPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bztlKyspaWYoIXRbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiExO3JldHVybiEwfX0sZ29vZy5mdW5jdGlvbnMub3I9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLG89dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxvO2UrKylpZih0W2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19LGdvb2cuZnVuY3Rpb25zLm5vdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxnb29nLmZ1bmN0aW9ucy5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbz1mdW5jdGlvbigpe307cmV0dXJuIG8ucHJvdG90eXBlPWUucHJvdG90eXBlLG89bmV3IG8sZS5hcHBseShvLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksb30sZ29vZy5mdW5jdGlvbnMuQ0FDSEVfUkVUVVJOX1ZBTFVFPSEwLGdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQsbz0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5mdW5jdGlvbnMuQ0FDSEVfUkVUVVJOX1ZBTFVFPyhvfHwodD1lKCksbz0hMCksdCk6ZSgpfX0sZ29vZy5mdW5jdGlvbnMub25jZT1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmdW5jdGlvbigpe2lmKHQpe3ZhciBlPXQ7dD1udWxsLGUoKX19fSxnb29nLmZ1bmN0aW9ucy5kZWJvdW5jZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MDtyZXR1cm4gZnVuY3Rpb24obil7Z29vZy5nbG9iYWwuY2xlYXJUaW1lb3V0KHIpO3ZhciBzPWFyZ3VtZW50cztyPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5hcHBseShvLHMpfSksdCl9fSxnb29nLmZ1bmN0aW9ucy50aHJvdHRsZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MCxuPSExLHM9W10saT1mdW5jdGlvbigpe3I9MCxuJiYobj0hMSxhKCkpfSxhPWZ1bmN0aW9uKCl7cj1nb29nLmdsb2JhbC5zZXRUaW1lb3V0KGksdCksZS5hcHBseShvLHMpfTtyZXR1cm4gZnVuY3Rpb24oZSl7cz1hcmd1bWVudHMscj9uPSEwOmEoKX19LGdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MCxuPWZ1bmN0aW9uKCl7cj0wfTtyZXR1cm4gZnVuY3Rpb24ocyl7cnx8KHI9Z29vZy5nbG9iYWwuc2V0VGltZW91dChuLHQpLGUuYXBwbHkobyxhcmd1bWVudHMpKX19LGdvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fSxnb29nLmRvbS5UYWdOYW1lPWZ1bmN0aW9uKGUpe3RoaXMudGFnTmFtZV89ZX0sZ29vZy5kb20uVGFnTmFtZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWdOYW1lX30sZ29vZy5kb20uVGFnTmFtZS5BPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQVwiKSxnb29nLmRvbS5UYWdOYW1lLkFCQlI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBQkJSXCIpLGdvb2cuZG9tLlRhZ05hbWUuQUNST05ZTT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFDUk9OWU1cIiksZ29vZy5kb20uVGFnTmFtZS5BRERSRVNTPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQUREUkVTU1wiKSxnb29nLmRvbS5UYWdOYW1lLkFQUExFVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFQUExFVFwiKSxnb29nLmRvbS5UYWdOYW1lLkFSRUE9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBUkVBXCIpLGdvb2cuZG9tLlRhZ05hbWUuQVJUSUNMRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFSVElDTEVcIiksZ29vZy5kb20uVGFnTmFtZS5BU0lERT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFTSURFXCIpLGdvb2cuZG9tLlRhZ05hbWUuQVVESU89bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBVURJT1wiKSxnb29nLmRvbS5UYWdOYW1lLkI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJCXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkFTRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJBU0VcIiksZ29vZy5kb20uVGFnTmFtZS5CQVNFRk9OVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJBU0VGT05UXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkRJPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQkRJXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkRPPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQkRPXCIpLGdvb2cuZG9tLlRhZ05hbWUuQklHPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQklHXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJMT0NLUVVPVEVcIiksZ29vZy5kb20uVGFnTmFtZS5CT0RZPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQk9EWVwiKSxnb29nLmRvbS5UYWdOYW1lLkJSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQlJcIiksZ29vZy5kb20uVGFnTmFtZS5CVVRUT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJCVVRUT05cIiksZ29vZy5kb20uVGFnTmFtZS5DQU5WQVM9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDQU5WQVNcIiksZ29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQ0FQVElPTlwiKSxnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNFTlRFUlwiKSxnb29nLmRvbS5UYWdOYW1lLkNJVEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDSVRFXCIpLGdvb2cuZG9tLlRhZ05hbWUuQ09ERT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPREVcIiksZ29vZy5kb20uVGFnTmFtZS5DT0w9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDT0xcIiksZ29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPTEdST1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPTU1BTkRcIiksZ29vZy5kb20uVGFnTmFtZS5EQVRBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREFUQVwiKSxnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREFUQUxJU1RcIiksZ29vZy5kb20uVGFnTmFtZS5ERD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkREXCIpLGdvb2cuZG9tLlRhZ05hbWUuREVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREVMXCIpLGdvb2cuZG9tLlRhZ05hbWUuREVUQUlMUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkRFVEFJTFNcIiksZ29vZy5kb20uVGFnTmFtZS5ERk49bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJERk5cIiksZ29vZy5kb20uVGFnTmFtZS5ESUFMT0c9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESUFMT0dcIiksZ29vZy5kb20uVGFnTmFtZS5ESVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESVJcIiksZ29vZy5kb20uVGFnTmFtZS5ESVY9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESVZcIiksZ29vZy5kb20uVGFnTmFtZS5ETD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkRMXCIpLGdvb2cuZG9tLlRhZ05hbWUuRFQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJEVFwiKSxnb29nLmRvbS5UYWdOYW1lLkVNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRU1cIiksZ29vZy5kb20uVGFnTmFtZS5FTUJFRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkVNQkVEXCIpLGdvb2cuZG9tLlRhZ05hbWUuRklFTERTRVQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGSUVMRFNFVFwiKSxnb29nLmRvbS5UYWdOYW1lLkZJR0NBUFRJT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGSUdDQVBUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuRklHVVJFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRklHVVJFXCIpLGdvb2cuZG9tLlRhZ05hbWUuRk9OVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkZPTlRcIiksZ29vZy5kb20uVGFnTmFtZS5GT09URVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGT09URVJcIiksZ29vZy5kb20uVGFnTmFtZS5GT1JNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRk9STVwiKSxnb29nLmRvbS5UYWdOYW1lLkZSQU1FPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRlJBTUVcIiksZ29vZy5kb20uVGFnTmFtZS5GUkFNRVNFVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkZSQU1FU0VUXCIpLGdvb2cuZG9tLlRhZ05hbWUuSDE9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIMVwiKSxnb29nLmRvbS5UYWdOYW1lLkgyPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSDJcIiksZ29vZy5kb20uVGFnTmFtZS5IMz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkgzXCIpLGdvb2cuZG9tLlRhZ05hbWUuSDQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJINFwiKSxnb29nLmRvbS5UYWdOYW1lLkg1PW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSDVcIiksZ29vZy5kb20uVGFnTmFtZS5INj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkg2XCIpLGdvb2cuZG9tLlRhZ05hbWUuSEVBRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhFQURcIiksZ29vZy5kb20uVGFnTmFtZS5IRUFERVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIRUFERVJcIiksZ29vZy5kb20uVGFnTmFtZS5IR1JPVVA9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIR1JPVVBcIiksZ29vZy5kb20uVGFnTmFtZS5IUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhSXCIpLGdvb2cuZG9tLlRhZ05hbWUuSFRNTD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhUTUxcIiksZ29vZy5kb20uVGFnTmFtZS5JPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSVwiKSxnb29nLmRvbS5UYWdOYW1lLklGUkFNRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIklGUkFNRVwiKSxnb29nLmRvbS5UYWdOYW1lLklNRz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIklNR1wiKSxnb29nLmRvbS5UYWdOYW1lLklOUFVUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSU5QVVRcIiksZ29vZy5kb20uVGFnTmFtZS5JTlM9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJJTlNcIiksZ29vZy5kb20uVGFnTmFtZS5JU0lOREVYPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSVNJTkRFWFwiKSxnb29nLmRvbS5UYWdOYW1lLktCRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIktCRFwiKSxnb29nLmRvbS5UYWdOYW1lLktFWUdFTj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIktFWUdFTlwiKSxnb29nLmRvbS5UYWdOYW1lLkxBQkVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTEFCRUxcIiksZ29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJMRUdFTkRcIiksZ29vZy5kb20uVGFnTmFtZS5MST1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkxJXCIpLGdvb2cuZG9tLlRhZ05hbWUuTElOSz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkxJTktcIiksZ29vZy5kb20uVGFnTmFtZS5NQUlOPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUFJTlwiKSxnb29nLmRvbS5UYWdOYW1lLk1BUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk1BUFwiKSxnb29nLmRvbS5UYWdOYW1lLk1BUks9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJNQVJLXCIpLGdvb2cuZG9tLlRhZ05hbWUuTUFUSD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk1BVEhcIiksZ29vZy5kb20uVGFnTmFtZS5NRU5VPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVOVVwiKSxnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVOVUlURU1cIiksZ29vZy5kb20uVGFnTmFtZS5NRVRBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVUQVwiKSxnb29nLmRvbS5UYWdOYW1lLk1FVEVSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVURVJcIiksZ29vZy5kb20uVGFnTmFtZS5OQVY9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJOQVZcIiksZ29vZy5kb20uVGFnTmFtZS5OT0ZSQU1FUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk5PRlJBTUVTXCIpLGdvb2cuZG9tLlRhZ05hbWUuTk9TQ1JJUFQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJOT1NDUklQVFwiKSxnb29nLmRvbS5UYWdOYW1lLk9CSkVDVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk9CSkVDVFwiKSxnb29nLmRvbS5UYWdOYW1lLk9MPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT0xcIiksZ29vZy5kb20uVGFnTmFtZS5PUFRHUk9VUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk9QVEdST1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuT1BUSU9OPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT1BUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuT1VUUFVUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT1VUUFVUXCIpLGdvb2cuZG9tLlRhZ05hbWUuUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBcIiksZ29vZy5kb20uVGFnTmFtZS5QQVJBTT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBBUkFNXCIpLGdvb2cuZG9tLlRhZ05hbWUuUElDVFVSRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBJQ1RVUkVcIiksZ29vZy5kb20uVGFnTmFtZS5QUkU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJQUkVcIiksZ29vZy5kb20uVGFnTmFtZS5QUk9HUkVTUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBST0dSRVNTXCIpLGdvb2cuZG9tLlRhZ05hbWUuUT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlFcIiksZ29vZy5kb20uVGFnTmFtZS5SUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlJQXCIpLGdvb2cuZG9tLlRhZ05hbWUuUlQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJSVFwiKSxnb29nLmRvbS5UYWdOYW1lLlJUQz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlJUQ1wiKSxnb29nLmRvbS5UYWdOYW1lLlJVQlk9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJSVUJZXCIpLGdvb2cuZG9tLlRhZ05hbWUuUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNcIiksZ29vZy5kb20uVGFnTmFtZS5TQU1QPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU0FNUFwiKSxnb29nLmRvbS5UYWdOYW1lLlNDUklQVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNDUklQVFwiKSxnb29nLmRvbS5UYWdOYW1lLlNFQ1RJT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTRUNUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuU0VMRUNUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU0VMRUNUXCIpLGdvb2cuZG9tLlRhZ05hbWUuU01BTEw9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTTUFMTFwiKSxnb29nLmRvbS5UYWdOYW1lLlNPVVJDRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNPVVJDRVwiKSxnb29nLmRvbS5UYWdOYW1lLlNQQU49bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTUEFOXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RSSUtFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1RSSUtFXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RST05HPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1RST05HXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RZTEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTVFlMRVwiKSxnb29nLmRvbS5UYWdOYW1lLlNVQj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNVQlwiKSxnb29nLmRvbS5UYWdOYW1lLlNVTU1BUlk9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTVU1NQVJZXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1VQPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1ZHPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1ZHXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEFCTEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUQUJMRVwiKSxnb29nLmRvbS5UYWdOYW1lLlRCT0RZPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEJPRFlcIiksZ29vZy5kb20uVGFnTmFtZS5URD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlREXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJURU1QTEFURVwiKSxnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEVYVEFSRUFcIiksZ29vZy5kb20uVGFnTmFtZS5URk9PVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlRGT09UXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEg9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUSFwiKSxnb29nLmRvbS5UYWdOYW1lLlRIRUFEPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEhFQURcIiksZ29vZy5kb20uVGFnTmFtZS5USU1FPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVElNRVwiKSxnb29nLmRvbS5UYWdOYW1lLlRJVExFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVElUTEVcIiksZ29vZy5kb20uVGFnTmFtZS5UUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlRSXCIpLGdvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUUkFDS1wiKSxnb29nLmRvbS5UYWdOYW1lLlRUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVFRcIiksZ29vZy5kb20uVGFnTmFtZS5VPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVVwiKSxnb29nLmRvbS5UYWdOYW1lLlVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVUxcIiksZ29vZy5kb20uVGFnTmFtZS5WQVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJWQVJcIiksZ29vZy5kb20uVGFnTmFtZS5WSURFTz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlZJREVPXCIpLGdvb2cuZG9tLlRhZ05hbWUuV0JSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiV0JSXCIpLGdvb2cuZG9tLnRhZ3M9e30sZ29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sZ29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bZV19LGdvb2cuaHRtbD17fSxnb29nLmh0bWwudHJ1c3RlZHR5cGVzPXt9LGdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrXCIjaHRtbFwiKTpudWxsLGdvb2cuc3RyaW5nPXt9LGdvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fSxnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihlLHQpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1lPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJnR8fFwiXCIsdGhpcy5TVFJJTkdfQ09OU1RfVFlQRV9NQVJLRVJfX0dPT0dfU1RSSU5HX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuc3RyaW5nLkNvbnN0LlRZUEVfTUFSS0VSX30sZ29vZy5zdHJpbmcuQ29uc3QucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5zdHJpbmcuQ29uc3QucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJpbmdDb25zdFZhbHVlV2l0aFNlY3VyaXR5Q29udHJhY3RfX2dvb2dTdHJpbmdTZWN1cml0eVByaXZhdGVffSxnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIkNvbnN0e1wiK3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXytcIn1cIn0sZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3QmJmUuY29uc3RydWN0b3I9PT1nb29nLnN0cmluZy5Db25zdCYmZS5TVFJJTkdfQ09OU1RfVFlQRV9NQVJLRVJfX0dPT0dfU1RSSU5HX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5zdHJpbmcuQ29uc3QuVFlQRV9NQVJLRVJfP2Uuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBDb25zdCwgZ290ICdcIitlK1wiJ1wiKSxcInR5cGVfZXJyb3I6Q29uc3RcIil9LGdvb2cuc3RyaW5nLkNvbnN0LmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBnb29nLnN0cmluZy5Db25zdChnb29nLnN0cmluZy5Db25zdC5HT09HX1NUUklOR19DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXyxlKX0sZ29vZy5zdHJpbmcuQ29uc3QuVFlQRV9NQVJLRVJfPXt9LGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfPXt9LGdvb2cuc3RyaW5nLkNvbnN0LkVNUFRZPWdvb2cuc3RyaW5nLkNvbnN0LmZyb20oXCJcIiksZ29vZy5odG1sLlNhZmVTY3JpcHQ9ZnVuY3Rpb24oKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTY3JpcHRXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy5TQUZFX1NDUklQVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVTY3JpcHQuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVffSxnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMCxnb29nLmh0bWwuU2FmZVNjcmlwdC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVTY3JpcHQuZnJvbUNvbnN0YW50PWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpKS5sZW5ndGg/Z29vZy5odG1sLlNhZmVTY3JpcHQuRU1QVFk6Z29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5mcm9tQ29uc3RhbnRBbmRBcmdzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW8ucHVzaChnb29nLmh0bWwuU2FmZVNjcmlwdC5zdHJpbmdpZnlfKGFyZ3VtZW50c1tyXSkpO3JldHVybiBnb29nLmh0bWwuU2FmZVNjcmlwdC5jcmVhdGVTYWZlU2NyaXB0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCIoXCIrZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpK1wiKShcIitvLmpvaW4oXCIsIFwiKStcIik7XCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5mcm9tSnNvbj1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuaHRtbC5TYWZlU2NyaXB0LnN0cmluZ2lmeV8oZSkpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTY3JpcHRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuREVCVUcmJihnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlNhZmVTY3JpcHR7XCIrdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXytcIn1cIn0pLGdvb2cuaHRtbC5TYWZlU2NyaXB0LnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVTY3JpcHQudW53cmFwVHJ1c3RlZFNjcmlwdChlKS50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC51bndyYXBUcnVzdGVkU2NyaXB0PWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTY3JpcHQmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZVNjcmlwdCYmZS5TQUZFX1NDUklQVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLmh0bWwuU2FmZVNjcmlwdC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBTYWZlU2NyaXB0LCBnb3QgJ1wiK2UrXCInIG9mIHR5cGUgXCIrZ29vZy50eXBlT2YoZSkpLFwidHlwZV9lcnJvcjpTYWZlU2NyaXB0XCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5zdHJpbmdpZnlfPWZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKC88L2csXCJcXFxceDNjXCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5jcmVhdGVTYWZlU2NyaXB0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oZSl7cmV0dXJuKG5ldyBnb29nLmh0bWwuU2FmZVNjcmlwdCkuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXyhlKX0sZ29vZy5odG1sLlNhZmVTY3JpcHQucHJvdG90eXBlLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QUklWQVRFX0RPX05PVF9BQ0NFU1NfT1JfRUxTRV9QT0xJQ1k/Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QUklWQVRFX0RPX05PVF9BQ0NFU1NfT1JfRUxTRV9QT0xJQ1kuY3JlYXRlU2NyaXB0KGUpOmUsdGhpc30sZ29vZy5odG1sLlNhZmVTY3JpcHQuRU1QVFk9Z29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cuZnM9e30sZ29vZy5mcy51cmw9e30sZ29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfKCkuY3JlYXRlT2JqZWN0VVJMKGUpfSxnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmw9ZnVuY3Rpb24oZSl7Z29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLnJldm9rZU9iamVjdFVSTChlKX0sZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfKCk7aWYobnVsbCE9ZSlyZXR1cm4gZTt0aHJvdyBFcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHNcIil9LGdvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuaXNEZWYoZ29vZy5nbG9iYWwuVVJMKSYmZ29vZy5pc0RlZihnb29nLmdsb2JhbC5VUkwuY3JlYXRlT2JqZWN0VVJMKT9nb29nLmdsb2JhbC5VUkw6Z29vZy5pc0RlZihnb29nLmdsb2JhbC53ZWJraXRVUkwpJiZnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwpP2dvb2cuZ2xvYmFsLndlYmtpdFVSTDpnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLmNyZWF0ZU9iamVjdFVSTCk/Z29vZy5nbG9iYWw6bnVsbH0sZ29vZy5mcy51cmwuYnJvd3NlclN1cHBvcnRzT2JqZWN0VXJscz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpfSxnb29nLmkxOG49e30sZ29vZy5pMThuLmJpZGk9e30sZ29vZy5pMThuLmJpZGkuRk9SQ0VfUlRMPSExLGdvb2cuaTE4bi5iaWRpLklTX1JUTD1nb29nLmkxOG4uYmlkaS5GT1JDRV9SVEx8fChcImFyXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwiZmFcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJoZVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpfHxcIml3XCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwicHNcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJzZFwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpfHxcInVnXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwidXJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJ5aVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpKSYmKDI9PWdvb2cuTE9DQUxFLmxlbmd0aHx8XCItXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygyLDMpfHxcIl9cIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDIsMykpfHwzPD1nb29nLkxPQ0FMRS5sZW5ndGgmJlwiY2tiXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDMpLnRvTG93ZXJDYXNlKCkmJigzPT1nb29nLkxPQ0FMRS5sZW5ndGh8fFwiLVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw0KXx8XCJfXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDQpKXx8Nzw9Z29vZy5MT0NBTEUubGVuZ3RoJiYoXCItXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygyLDMpfHxcIl9cIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDIsMykpJiYoXCJhZGxtXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDcpLnRvTG93ZXJDYXNlKCl8fFwiYXJhYlwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw3KS50b0xvd2VyQ2FzZSgpfHxcImhlYnJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDMsNykudG9Mb3dlckNhc2UoKXx8XCJua29vXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDcpLnRvTG93ZXJDYXNlKCl8fFwicm9oZ1wiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw3KS50b0xvd2VyQ2FzZSgpfHxcInRoYWFcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDMsNykudG9Mb3dlckNhc2UoKSl8fDg8PWdvb2cuTE9DQUxFLmxlbmd0aCYmKFwiLVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw0KXx8XCJfXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDQpKSYmKFwiYWRsbVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoNCw4KS50b0xvd2VyQ2FzZSgpfHxcImFyYWJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDQsOCkudG9Mb3dlckNhc2UoKXx8XCJoZWJyXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZyg0LDgpLnRvTG93ZXJDYXNlKCl8fFwibmtvb1wiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoNCw4KS50b0xvd2VyQ2FzZSgpfHxcInJvaGdcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDQsOCkudG9Mb3dlckNhc2UoKXx8XCJ0aGFhXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZyg0LDgpLnRvTG93ZXJDYXNlKCkpLGdvb2cuaTE4bi5iaWRpLkZvcm1hdD17TFJFOlwi4oCqXCIsUkxFOlwi4oCrXCIsUERGOlwi4oCsXCIsTFJNOlwi4oCOXCIsUkxNOlwi4oCPXCJ9LGdvb2cuaTE4bi5iaWRpLkRpcj17TFRSOjEsUlRMOi0xLE5FVVRSQUw6MH0sZ29vZy5pMThuLmJpZGkuUklHSFQ9XCJyaWdodFwiLGdvb2cuaTE4bi5iaWRpLkxFRlQ9XCJsZWZ0XCIsZ29vZy5pMThuLmJpZGkuSTE4Tl9SSUdIVD1nb29nLmkxOG4uYmlkaS5JU19SVEw/Z29vZy5pMThuLmJpZGkuTEVGVDpnb29nLmkxOG4uYmlkaS5SSUdIVCxnb29nLmkxOG4uYmlkaS5JMThOX0xFRlQ9Z29vZy5pMThuLmJpZGkuSVNfUlRMP2dvb2cuaTE4bi5iaWRpLlJJR0hUOmdvb2cuaTE4bi5iaWRpLkxFRlQsZ29vZy5pMThuLmJpZGkudG9EaXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT8wPGU/Z29vZy5pMThuLmJpZGkuRGlyLkxUUjowPmU/Z29vZy5pMThuLmJpZGkuRGlyLlJUTDp0P251bGw6Z29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUw6bnVsbD09ZT9udWxsOmU/Z29vZy5pMThuLmJpZGkuRGlyLlJUTDpnb29nLmkxOG4uYmlkaS5EaXIuTFRSfSxnb29nLmkxOG4uYmlkaS5sdHJDaGFyc189XCJBLVphLXrDgC3DlsOYLcO2w7gtyrjMgC3WkOCkgC3hv7/igI7isIAtXFx1ZDgwMVxcdWQ4MDQtXFx1ZDgzOVxcdWQ4M2MtXFx1ZGJmZu+kgC3vrJzvuIAt77mv77u9Le+/v1wiLGdvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXz1cItaRLduv27ot4KO/4oCPXFx1ZDgwMi1cXHVkODAzXFx1ZDgzYS1cXHVkODNi76ydLe+3v++5sC3vu7xcIixnb29nLmkxOG4uYmlkaS5odG1sU2tpcFJlZ189LzxbXj5dKj58JlteO10rOy9nLGdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXz1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZShnb29nLmkxOG4uYmlkaS5odG1sU2tpcFJlZ18sXCJcIik6ZX0sZ29vZy5pMThuLmJpZGkucnRsQ2hhclJlZ189bmV3IFJlZ0V4cChcIltcIitnb29nLmkxOG4uYmlkaS5ydGxDaGFyc18rXCJdXCIpLGdvb2cuaTE4bi5iaWRpLmx0ckNoYXJSZWdfPW5ldyBSZWdFeHAoXCJbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5oYXNBbnlSdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsQ2hhclJlZ18udGVzdChnb29nLmkxOG4uYmlkaS5zdHJpcEh0bWxJZk5lZWRlZF8oZSx0KSl9LGdvb2cuaTE4bi5iaWRpLmhhc1J0bENoYXI9Z29vZy5pMThuLmJpZGkuaGFzQW55UnRsLGdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cj1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJDaGFyUmVnXy50ZXN0KGdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXyhlLHQpKX0sZ29vZy5pMThuLmJpZGkubHRyUmVfPW5ldyBSZWdFeHAoXCJeW1wiK2dvb2cuaTE4bi5iaWRpLmx0ckNoYXJzXytcIl1cIiksZ29vZy5pMThuLmJpZGkucnRsUmVfPW5ldyBSZWdFeHAoXCJeW1wiK2dvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXytcIl1cIiksZ29vZy5pMThuLmJpZGkuaXNSdGxDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmkxOG4uYmlkaS5ydGxSZV8udGVzdChlKX0sZ29vZy5pMThuLmJpZGkuaXNMdHJDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJSZV8udGVzdChlKX0sZ29vZy5pMThuLmJpZGkuaXNOZXV0cmFsQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4hZ29vZy5pMThuLmJpZGkuaXNMdHJDaGFyKGUpJiYhZ29vZy5pMThuLmJpZGkuaXNSdGxDaGFyKGUpfSxnb29nLmkxOG4uYmlkaS5sdHJEaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiXlteXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXSpbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5ydGxEaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiXlteXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXSpbXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5zdGFydHNXaXRoUnRsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLnJ0bERpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc1J0bFRleHQ9Z29vZy5pMThuLmJpZGkuc3RhcnRzV2l0aFJ0bCxnb29nLmkxOG4uYmlkaS5zdGFydHNXaXRoTHRyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLmx0ckRpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc0x0clRleHQ9Z29vZy5pMThuLmJpZGkuc3RhcnRzV2l0aEx0cixnb29nLmkxOG4uYmlkaS5pc1JlcXVpcmVkTHRyUmVfPS9eaHR0cDpcXC9cXC8uKi8sZ29vZy5pMThuLmJpZGkuaXNOZXV0cmFsVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXyhlLHQpLGdvb2cuaTE4bi5iaWRpLmlzUmVxdWlyZWRMdHJSZV8udGVzdChlKXx8IWdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cihlKSYmIWdvb2cuaTE4bi5iaWRpLmhhc0FueVJ0bChlKX0sZ29vZy5pMThuLmJpZGkubHRyRXhpdERpckNoZWNrUmVfPW5ldyBSZWdFeHAoXCJbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVteXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXSokXCIpLGdvb2cuaTE4bi5iaWRpLnJ0bEV4aXREaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiW1wiK2dvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXytcIl1bXlwiK2dvb2cuaTE4bi5iaWRpLmx0ckNoYXJzXytcIl0qJFwiKSxnb29nLmkxOG4uYmlkaS5lbmRzV2l0aEx0cj1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJFeGl0RGlyQ2hlY2tSZV8udGVzdChnb29nLmkxOG4uYmlkaS5zdHJpcEh0bWxJZk5lZWRlZF8oZSx0KSl9LGdvb2cuaTE4bi5iaWRpLmlzTHRyRXhpdFRleHQ9Z29vZy5pMThuLmJpZGkuZW5kc1dpdGhMdHIsZ29vZy5pMThuLmJpZGkuZW5kc1dpdGhSdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsRXhpdERpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc1J0bEV4aXRUZXh0PWdvb2cuaTE4bi5iaWRpLmVuZHNXaXRoUnRsLGdvb2cuaTE4bi5iaWRpLnJ0bExvY2FsZXNSZV89L14oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pL2ksZ29vZy5pMThuLmJpZGkuaXNSdGxMYW5ndWFnZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsTG9jYWxlc1JlXy50ZXN0KGUpfSxnb29nLmkxOG4uYmlkaS5icmFja2V0R3VhcmRUZXh0UmVfPS8oXFwoLio/XFwpKyl8KFxcWy4qP1xcXSspfChcXHsuKj9cXH0rKXwoPC4qPz4rKS9nLGdvb2cuaTE4bi5iaWRpLmd1YXJkQnJhY2tldEluVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0PSh2b2lkIDA9PT10P2dvb2cuaTE4bi5iaWRpLmhhc0FueVJ0bChlKTp0KT9nb29nLmkxOG4uYmlkaS5Gb3JtYXQuUkxNOmdvb2cuaTE4bi5iaWRpLkZvcm1hdC5MUk0sZS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLmJyYWNrZXRHdWFyZFRleHRSZV8sdCtcIiQmXCIrdCl9LGdvb2cuaTE4bi5iaWRpLmVuZm9yY2VSdGxJbkh0bWw9ZnVuY3Rpb24oZSl7cmV0dXJuXCI8XCI9PWUuY2hhckF0KDApP2UucmVwbGFjZSgvPFxcdysvLFwiJCYgZGlyPXJ0bFwiKTpcIlxcbjxzcGFuIGRpcj1ydGw+XCIrZStcIjwvc3Bhbj5cIn0sZ29vZy5pMThuLmJpZGkuZW5mb3JjZVJ0bEluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRm9ybWF0LlJMRStlK2dvb2cuaTE4bi5iaWRpLkZvcm1hdC5QREZ9LGdvb2cuaTE4bi5iaWRpLmVuZm9yY2VMdHJJbkh0bWw9ZnVuY3Rpb24oZSl7cmV0dXJuXCI8XCI9PWUuY2hhckF0KDApP2UucmVwbGFjZSgvPFxcdysvLFwiJCYgZGlyPWx0clwiKTpcIlxcbjxzcGFuIGRpcj1sdHI+XCIrZStcIjwvc3Bhbj5cIn0sZ29vZy5pMThuLmJpZGkuZW5mb3JjZUx0ckluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRm9ybWF0LkxSRStlK2dvb2cuaTE4bi5iaWRpLkZvcm1hdC5QREZ9LGdvb2cuaTE4bi5iaWRpLmRpbWVuc2lvbnNSZV89LzpcXHMqKFsuXFxkXVsuXFx3XSopXFxzKyhbLlxcZF1bLlxcd10qKVxccysoWy5cXGRdWy5cXHddKilcXHMrKFsuXFxkXVsuXFx3XSopL2csZ29vZy5pMThuLmJpZGkubGVmdFJlXz0vbGVmdC9naSxnb29nLmkxOG4uYmlkaS5yaWdodFJlXz0vcmlnaHQvZ2ksZ29vZy5pMThuLmJpZGkudGVtcFJlXz0vJSUlJS9nLGdvb2cuaTE4bi5iaWRpLm1pcnJvckNTUz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLmRpbWVuc2lvbnNSZV8sXCI6JDEgJDQgJDMgJDJcIikucmVwbGFjZShnb29nLmkxOG4uYmlkaS5sZWZ0UmVfLFwiJSUlJVwiKS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLnJpZ2h0UmVfLGdvb2cuaTE4bi5iaWRpLkxFRlQpLnJlcGxhY2UoZ29vZy5pMThuLmJpZGkudGVtcFJlXyxnb29nLmkxOG4uYmlkaS5SSUdIVCl9LGdvb2cuaTE4bi5iaWRpLmRvdWJsZVF1b3RlU3Vic3RpdHV0ZVJlXz0vKFtcXHUwNTkxLVxcdTA1ZjJdKVwiL2csZ29vZy5pMThuLmJpZGkuc2luZ2xlUXVvdGVTdWJzdGl0dXRlUmVfPS8oW1xcdTA1OTEtXFx1MDVmMl0pJy9nLGdvb2cuaTE4bi5iaWRpLm5vcm1hbGl6ZUhlYnJld1F1b3RlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoZ29vZy5pMThuLmJpZGkuZG91YmxlUXVvdGVTdWJzdGl0dXRlUmVfLFwiJDHXtFwiKS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLnNpbmdsZVF1b3RlU3Vic3RpdHV0ZVJlXyxcIiQx17NcIil9LGdvb2cuaTE4bi5iaWRpLndvcmRTZXBhcmF0b3JSZV89L1xccysvLGdvb2cuaTE4bi5iaWRpLmhhc051bWVyYWxzUmVfPS9bXFxkXFx1MDZmMC1cXHUwNmY5XS8sZ29vZy5pMThuLmJpZGkucnRsRGV0ZWN0aW9uVGhyZXNob2xkXz0uNCxnb29nLmkxOG4uYmlkaS5lc3RpbWF0ZURpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBvPTAscj0wLG49ITE7Zm9yKGU9Z29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkuc3BsaXQoZ29vZy5pMThuLmJpZGkud29yZFNlcGFyYXRvclJlXyksdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcz1lW3RdO2dvb2cuaTE4bi5iaWRpLnN0YXJ0c1dpdGhSdGwocyk/KG8rKyxyKyspOmdvb2cuaTE4bi5iaWRpLmlzUmVxdWlyZWRMdHJSZV8udGVzdChzKT9uPSEwOmdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cihzKT9yKys6Z29vZy5pMThuLmJpZGkuaGFzTnVtZXJhbHNSZV8udGVzdChzKSYmKG49ITApfXJldHVybiAwPT1yP24/Z29vZy5pMThuLmJpZGkuRGlyLkxUUjpnb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTDpvL3I+Z29vZy5pMThuLmJpZGkucnRsRGV0ZWN0aW9uVGhyZXNob2xkXz9nb29nLmkxOG4uYmlkaS5EaXIuUlRMOmdvb2cuaTE4bi5iaWRpLkRpci5MVFJ9LGdvb2cuaTE4bi5iaWRpLmRldGVjdFJ0bERpcmVjdGlvbmFsaXR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLmVzdGltYXRlRGlyZWN0aW9uKGUsdCk9PWdvb2cuaTE4bi5iaWRpLkRpci5SVEx9LGdvb2cuaTE4bi5iaWRpLnNldEVsZW1lbnREaXJBbmRBbGlnbj1mdW5jdGlvbihlLHQpe2UmJih0PWdvb2cuaTE4bi5iaWRpLnRvRGlyKHQpKSYmKGUuc3R5bGUudGV4dEFsaWduPXQ9PWdvb2cuaTE4bi5iaWRpLkRpci5SVEw/Z29vZy5pMThuLmJpZGkuUklHSFQ6Z29vZy5pMThuLmJpZGkuTEVGVCxlLmRpcj10PT1nb29nLmkxOG4uYmlkaS5EaXIuUlRMP1wicnRsXCI6XCJsdHJcIil9LGdvb2cuaTE4bi5iaWRpLnNldEVsZW1lbnREaXJCeVRleHREaXJlY3Rpb25hbGl0eT1mdW5jdGlvbihlLHQpe3N3aXRjaChnb29nLmkxOG4uYmlkaS5lc3RpbWF0ZURpcmVjdGlvbih0KSl7Y2FzZSBnb29nLmkxOG4uYmlkaS5EaXIuTFRSOmUuZGlyPVwibHRyXCI7YnJlYWs7Y2FzZSBnb29nLmkxOG4uYmlkaS5EaXIuUlRMOmUuZGlyPVwicnRsXCI7YnJlYWs7ZGVmYXVsdDplLnJlbW92ZUF0dHJpYnV0ZShcImRpclwiKX19LGdvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nPWZ1bmN0aW9uKCl7fSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy50cnVzdGVkVVJMXz1udWxsLHRoaXMuVFJVU1RFRF9SRVNPVVJDRV9VUkxfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVffSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwucHJvdG90eXBlLmltcGxlbWVudHNHb29nSTE4bkJpZGlEaXJlY3Rpb25hbFN0cmluZz0hMCxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRGlyLkxUUn0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcykscj0obz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMobykpWzNdfHxcIlwiO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG9bMV0rZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfKFwiP1wiLG9bMl18fFwiXCIsZSkrZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfKFwiI1wiLHIsdCkpfSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlRydXN0ZWRSZXNvdXJjZVVybHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVRydXN0ZWRSZXNvdXJjZVVybFdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGUpLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJiZlLlRSVVNURURfUkVTT1VSQ0VfVVJMX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfP2UucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBUcnVzdGVkUmVzb3VyY2VVcmwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybFwiKX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRydXN0ZWRVUkxfP2UudHJ1c3RlZFVSTF86Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoZSl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuZm9ybWF0PWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpO2lmKCFnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkJBU0VfVVJMXy50ZXN0KG8pKXRocm93IEVycm9yKFwiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiBcIitvKTtyZXR1cm4gZT1vLnJlcGxhY2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5GT1JNQVRfTUFSS0VSXywoZnVuY3Rpb24oZSxyKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgXCInK3IrJ1wiLCBpbiBmb3JtYXQgc3RyaW5nLCBcIicrbysnXCIsIGJ1dCBubyB2YWxpZCBsYWJlbCBtYXBwaW5nIGZvdW5kIGluIGFyZ3M6ICcrSlNPTi5zdHJpbmdpZnkodCkpO3JldHVybihlPXRbcl0paW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdD9nb29nLnN0cmluZy5Db25zdC51bndyYXAoZSk6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSl9KSksZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5GT1JNQVRfTUFSS0VSXz0vJXsoXFx3Kyl9L2csZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF89L14oKGh0dHBzOik/XFwvXFwvWzAtOWEtei46W1xcXS1dK1xcL3xcXC9bXi9cXFxcXXxbXjovXFxcXCVdK1xcL3xbXjovXFxcXCVdKls/I118YWJvdXQ6YmxhbmsjKS9pLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVVJMX1BBUkFNX1BBUlNFUl89L14oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChlLHQpLmNsb25lV2l0aFBhcmFtcyhvLHIpfSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpfSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVwiXCIsbz0wO288ZS5sZW5ndGg7bysrKXQrPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlW29dKTtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybDtyZXR1cm4gdC5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZP2dvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZLmNyZWF0ZVNjcmlwdFVSTChlKTplLGdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZJiYodC50cnVzdGVkVVJMXz1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWS5jcmVhdGVVUkwoZSkpLHR9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXz1mdW5jdGlvbihlLHQsbyl7aWYobnVsbD09bylyZXR1cm4gdDtpZihnb29nLmlzU3RyaW5nKG8pKXJldHVybiBvP2UrZW5jb2RlVVJJQ29tcG9uZW50KG8pOlwiXCI7Zm9yKHZhciByIGluIG8pe3ZhciBuPW9bcl07bj1nb29nLmlzQXJyYXkobik/bjpbbl07Zm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBpPW5bc107bnVsbCE9aSYmKHR8fCh0PWUpLHQrPSh0Lmxlbmd0aD5lLmxlbmd0aD9cIiZcIjpcIlwiKStlbmNvZGVVUklDb21wb25lbnQocikrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpKSkpfX1yZXR1cm4gdH0sZ29vZy5zdHJpbmcuaW50ZXJuYWw9e30sZ29vZy5zdHJpbmcuaW50ZXJuYWwuc3RhcnRzV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiAwPT1lLmxhc3RJbmRleE9mKHQsMCl9LGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG89ZS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIDA8PW8mJmUuaW5kZXhPZih0LG8pPT1vfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUodCxlLnN1YnN0cigwLHQubGVuZ3RoKSl9LGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVuZHNXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUodCxlLnN1YnN0cihlLmxlbmd0aC10Lmxlbmd0aCx0Lmxlbmd0aCkpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpPT10LnRvTG93ZXJDYXNlKCl9LGdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuL15bXFxzXFx4YTBdKiQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoZSlbMV19LGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZT1TdHJpbmcoZSkudG9Mb3dlckNhc2UoKSk8KHQ9U3RyaW5nKHQpLnRvTG93ZXJDYXNlKCkpPy0xOmU9PXQ/MDoxfSxnb29nLnN0cmluZy5pbnRlcm5hbC5uZXdMaW5lVG9Ccj1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikvZyx0P1wiPGJyIC8+XCI6XCI8YnI+XCIpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlPWZ1bmN0aW9uKGUsdCl7aWYodCllPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5BTVBfUkVfLFwiJmFtcDtcIikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5MVF9SRV8sXCImbHQ7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLFwiJmd0O1wiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfLFwiJnF1b3Q7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXyxcIiYjMzk7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sXCImIzA7XCIpO2Vsc2V7aWYoIWdvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV8udGVzdChlKSlyZXR1cm4gZTstMSE9ZS5pbmRleE9mKFwiJlwiKSYmKGU9ZS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkFNUF9SRV8sXCImYW1wO1wiKSksLTEhPWUuaW5kZXhPZihcIjxcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5MVF9SRV8sXCImbHQ7XCIpKSwtMSE9ZS5pbmRleE9mKFwiPlwiKSYmKGU9ZS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXyxcIiZndDtcIikpLC0xIT1lLmluZGV4T2YoJ1wiJykmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXyxcIiZxdW90O1wiKSksLTEhPWUuaW5kZXhPZihcIidcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLFwiJiMzOTtcIikpLC0xIT1lLmluZGV4T2YoXCJcXDBcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXyxcIiYjMDtcIikpfXJldHVybiBlfSxnb29nLnN0cmluZy5pbnRlcm5hbC5BTVBfUkVfPS8mL2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfPS88L2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfPS8+L2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV89L1wiL2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nLGdvb2cuc3RyaW5nLmludGVybmFsLk5VTExfUkVfPS9cXHgwMC9nLGdvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tcXHgwMCY8PlwiJ10vLGdvb2cuc3RyaW5nLmludGVybmFsLndoaXRlc3BhY2VFc2NhcGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnIoZS5yZXBsYWNlKC8gIC9nLFwiICYjMTYwO1wiKSx0KX0sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMSE9ZS5pbmRleE9mKHQpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLnRvTG93ZXJDYXNlKCksdC50b0xvd2VyQ2FzZSgpKX0sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIG89MDtlPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGUpKS5zcGxpdChcIi5cIiksdD1nb29nLnN0cmluZy5pbnRlcm5hbC50cmltKFN0cmluZyh0KSkuc3BsaXQoXCIuXCIpO2Zvcih2YXIgcj1NYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCksbj0wOzA9PW8mJm48cjtuKyspe3ZhciBzPWVbbl18fFwiXCIsaT10W25dfHxcIlwiO2Rve2lmKHM9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMocyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXSxpPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGkpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl0sMD09c1swXS5sZW5ndGgmJjA9PWlbMF0ubGVuZ3RoKWJyZWFrO289MD09c1sxXS5sZW5ndGg/MDpwYXJzZUludChzWzFdLDEwKTt2YXIgYT0wPT1pWzFdLmxlbmd0aD8wOnBhcnNlSW50KGlbMV0sMTApO289Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXyhvLGEpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKDA9PXNbMl0ubGVuZ3RoLDA9PWlbMl0ubGVuZ3RoKXx8Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXyhzWzJdLGlbMl0pLHM9c1szXSxpPWlbM119d2hpbGUoMD09byl9cmV0dXJuIG99LGdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c189ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9LGdvb2cuaHRtbC5TYWZlVXJsPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXz1cIlwiLHRoaXMuU0FGRV9VUkxfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuaHRtbC5TYWZlVXJsLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORz1cImFib3V0OmludmFsaWQjekNsb3N1cmV6XCIsZ29vZy5odG1sLlNhZmVVcmwucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVVcmwucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dJMThuQmlkaURpcmVjdGlvbmFsU3RyaW5nPSEwLGdvb2cuaHRtbC5TYWZlVXJsLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRGlyLkxUUn0sZ29vZy5ERUJVRyYmKGdvb2cuaHRtbC5TYWZlVXJsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiU2FmZVVybHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfK1wifVwifSksZ29vZy5odG1sLlNhZmVVcmwudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKGUpLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCYmZS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5TYWZlVXJsJiZlLlNBRkVfVVJMX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5TYWZlVXJsLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz9lLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfOihnb29nLmFzc2VydHMuZmFpbChcImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlNhZmVVcmxcIil9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSl9LGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXz0vXig/OmF1ZGlvXFwvKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LXdhdnx3YXZ8d2VibSl8aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnB8eC1pY29uKXx0ZXh0XFwvY3N2fHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm18cXVpY2t0aW1lKSkoPzo7XFx3Kz0oPzpcXHcrfFwiW1xcdzs9XStcIikpKiQvaSxnb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNBRkVfTUlNRV9UWVBFX1BBVFRFUk5fLnRlc3QoZSl9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21CbG9iPWZ1bmN0aW9uKGUpe3JldHVybiBlPWdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGUudHlwZSk/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGUpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcsZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl89L15kYXRhOihbXixdKik7YmFzZTY0LFthLXowLTkrXFwvXSs9KiQvaSxnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihlKXt2YXIgdD0oZT1lLnJlcGxhY2UoLyglMEF8JTBEKS9nLFwiXCIpKS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pO3JldHVybiB0PXQmJmdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KHRbMV0pLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0P2U6Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyl9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgoZSxcInRlbDpcIil8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNJUF9VUkxfUEFUVEVSTl89L15zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQvaSxnb29nLmh0bWwuU2FmZVVybC5mcm9tU2lwVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChlKSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbUZhY2Vib29rTWVzc2VuZ2VyVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGUsXCJmYi1tZXNzZW5nZXI6Ly9zaGFyZVwiKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgoZSxcIndoYXRzYXBwOi8vc2VuZFwiKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVVybC5mcm9tU21zVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGUsXCJzbXM6XCIpJiZnb29nLmh0bWwuU2FmZVVybC5pc1Ntc1VybEJvZHlWYWxpZF8oZSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5kZXhPZihcIiNcIik7aWYoMDx0JiYoZT1lLnN1YnN0cmluZygwLHQpKSwhKHQ9ZS5tYXRjaCgvWz8mXWJvZHk9L2dpKSkpcmV0dXJuITA7aWYoMTx0Lmxlbmd0aClyZXR1cm4hMTtpZighKGU9ZS5tYXRjaCgvWz8mXWJvZHk9KFteJl0qKS8pWzFdKSlyZXR1cm4hMDt0cnl7ZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKGUpe3JldHVybiExfXJldHVybi9eKD86W2EtejAtOVxcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChlKX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChlLFwic3NoOi8vXCIpfHwoZT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKSxnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZSl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQ2hyb21lRXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXmNocm9tZS1leHRlbnNpb246XFwvXFwvKFteXFwvXSspXFwvLyxlLHQpfSxnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUZpcmVmb3hFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9ebW96LWV4dGVuc2lvbjpcXC9cXC8oW15cXC9dKylcXC8vLGUsdCl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcXC9cXC8oW15cXC9dKylcXC8vLGUsdCl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuKGU9ZS5leGVjKHQpKT8oZT1lWzFdLC0xPT0obyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAobyldOm8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpfSkpKS5pbmRleE9mKGUpJiYodD1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKSk6dD1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbVRydXN0ZWRSZXNvdXJjZVVybD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGUpKX0sZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pLGdvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/ZTooZT1cIm9iamVjdFwiPT10eXBlb2YgZSYmZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2UuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhlKSxnb29nLmh0bWwuU0FGRV9VUkxfUEFUVEVSTl8udGVzdChlKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpKX0sZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2U6KGU9XCJvYmplY3RcIj09dHlwZW9mIGUmJmUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9lLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoZSksdCYmL15kYXRhOi9pLnRlc3QoZSkmJih0PWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGUpKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk9PWU/dDooZ29vZy5hc3NlcnRzLmFzc2VydChnb29nLmh0bWwuU0FGRV9VUkxfUEFUVEVSTl8udGVzdChlKSxcIiVzIGRvZXMgbm90IG1hdGNoIHRoZSBzYWZlIFVSTCBwYXR0ZXJuXCIsZSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKSkpfSxnb29nLmh0bWwuU2FmZVVybC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBnb29nLmh0bWwuU2FmZVVybDtyZXR1cm4gdC5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXz1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWT9nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWS5jcmVhdGVVUkwoZSk6ZSx0fSxnb29nLmh0bWwuU2FmZVVybC5BQk9VVF9CTEFOSz1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJhYm91dDpibGFua1wiKSxnb29nLmh0bWwuU2FmZVN0eWxlPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy5TQUZFX1NUWUxFX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz1nb29nLmh0bWwuU2FmZVN0eWxlLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMCxnb29nLmh0bWwuU2FmZVN0eWxlLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz17fSxnb29nLmh0bWwuU2FmZVN0eWxlLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSkubGVuZ3RoP2dvb2cuaHRtbC5TYWZlU3R5bGUuRU1QVFk6KGdvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5zdHJpbmcuaW50ZXJuYWwuZW5kc1dpdGgoZSxcIjtcIiksXCJMYXN0IGNoYXJhY3RlciBvZiBzdHlsZSBzdHJpbmcgaXMgbm90ICc7JzogXCIrZSksZ29vZy5hc3NlcnRzLmFzc2VydChnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLFwiOlwiKSxcIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFxcXCJuYW1lOiB2YWx1ZVxcXCIgcGFpcjogXCIrZSksZ29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKSl9LGdvb2cuaHRtbC5TYWZlU3R5bGUucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVffSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlNhZmVTdHlsZXtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuU2FmZVN0eWxlLnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlU3R5bGUmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZVN0eWxlJiZlLlNBRkVfU1RZTEVfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5odG1sLlNhZmVTdHlsZS5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfOihnb29nLmFzc2VydHMuZmFpbChcImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZSwgZ290ICdcIitlK1wiJyBvZiB0eXBlIFwiK2dvb2cudHlwZU9mKGUpKSxcInR5cGVfZXJyb3I6U2FmZVN0eWxlXCIpfSxnb29nLmh0bWwuU2FmZVN0eWxlLmNyZWF0ZVNhZmVTdHlsZVNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3JldHVybihuZXcgZ29vZy5odG1sLlNhZmVTdHlsZSkuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXyhlKX0sZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfPWUsdGhpc30sZ29vZy5odG1sLlNhZmVTdHlsZS5FTVBUWT1nb29nLmh0bWwuU2FmZVN0eWxlLmNyZWF0ZVNhZmVTdHlsZVNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cuaHRtbC5TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORz1cInpDbG9zdXJlelwiLGdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG89XCJcIjtmb3IodCBpbiBlKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QodCkpdGhyb3cgRXJyb3IoXCJOYW1lIGFsbG93cyBvbmx5IFstX2EtekEtWjAtOV0sIGdvdDogXCIrdCk7dmFyIHI9ZVt0XTtudWxsIT1yJiYobys9dCtcIjpcIisocj1nb29nLmlzQXJyYXkocik/Z29vZy5hcnJheS5tYXAocixnb29nLmh0bWwuU2FmZVN0eWxlLnNhbml0aXplUHJvcGVydHlWYWx1ZV8pLmpvaW4oXCIgXCIpOmdvb2cuaHRtbC5TYWZlU3R5bGUuc2FuaXRpemVQcm9wZXJ0eVZhbHVlXyhyKSkrXCI7XCIpfXJldHVybiBvP2dvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2Uobyk6Z29vZy5odG1sLlNhZmVTdHlsZS5FTVBUWX0sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVByb3BlcnR5VmFsdWVfPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4ndXJsKFwiJytnb29nLmh0bWwuU2FmZVVybC51bndyYXAoZSkucmVwbGFjZSgvPC9nLFwiJTNjXCIpLnJlcGxhY2UoL1tcXFxcXCJdL2csXCJcXFxcJCZcIikrJ1wiKSc7aWYoZT1lIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpOmdvb2cuaHRtbC5TYWZlU3R5bGUuc2FuaXRpemVQcm9wZXJ0eVZhbHVlU3RyaW5nXyhTdHJpbmcoZSkpLC9bezt9XS8udGVzdChlKSl0aHJvdyBuZXcgZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yKFwiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuXCIsW2VdKTtyZXR1cm4gZX0sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmdfPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShnb29nLmh0bWwuU2FmZVN0eWxlLkZVTkNUSU9OU19SRV8sXCIkMVwiKS5yZXBsYWNlKGdvb2cuaHRtbC5TYWZlU3R5bGUuRlVOQ1RJT05TX1JFXyxcIiQxXCIpLnJlcGxhY2UoZ29vZy5odG1sLlNhZmVTdHlsZS5VUkxfUkVfLFwidXJsXCIpO3JldHVybiBnb29nLmh0bWwuU2FmZVN0eWxlLlZBTFVFX1JFXy50ZXN0KHQpP2dvb2cuaHRtbC5TYWZlU3R5bGUuQ09NTUVOVF9SRV8udGVzdChlKT8oZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6IFwiK2UpLGdvb2cuaHRtbC5TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORyk6Z29vZy5odG1sLlNhZmVTdHlsZS5oYXNCYWxhbmNlZFF1b3Rlc18oZSk/Z29vZy5odG1sLlNhZmVTdHlsZS5oYXNCYWxhbmNlZFNxdWFyZUJyYWNrZXRzXyhlKT9nb29nLmh0bWwuU2FmZVN0eWxlLnNhbml0aXplVXJsXyhlKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiBcIitlKSxnb29nLmh0bWwuU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkcpOihnb29nLmFzc2VydHMuZmFpbChcIlN0cmluZyB2YWx1ZSByZXF1aXJlcyBiYWxhbmNlZCBxdW90ZXMsIGdvdDogXCIrZSksZ29vZy5odG1sLlNhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgXCIrZ29vZy5odG1sLlNhZmVTdHlsZS5WQUxVRV9BTExPV0VEX0NIQVJTXytcIiBhbmQgc2ltcGxlIGZ1bmN0aW9ucywgZ290OiBcIitlKSxnb29nLmh0bWwuU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkcpfSxnb29nLmh0bWwuU2FmZVN0eWxlLmhhc0JhbGFuY2VkUXVvdGVzXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ITAsbz0hMCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWUuY2hhckF0KHIpO1wiJ1wiPT1uJiZvP3Q9IXQ6J1wiJz09biYmdCYmKG89IW8pfXJldHVybiB0JiZvfSxnb29nLmh0bWwuU2FmZVN0eWxlLmhhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHNfPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMCxvPS9eWy1fYS16QS1aMC05XSQvLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZS5jaGFyQXQocik7aWYoXCJdXCI9PW4pe2lmKHQpcmV0dXJuITE7dD0hMH1lbHNlIGlmKFwiW1wiPT1uKXtpZighdClyZXR1cm4hMTt0PSExfWVsc2UgaWYoIXQmJiFvLnRlc3QobikpcmV0dXJuITF9cmV0dXJuIHR9LGdvb2cuaHRtbC5TYWZlU3R5bGUuVkFMVUVfQUxMT1dFRF9DSEFSU189XCJbLSwuXFxcIiclXyEjIGEtekEtWjAtOVxcXFxbXFxcXF1dXCIsZ29vZy5odG1sLlNhZmVTdHlsZS5WQUxVRV9SRV89bmV3IFJlZ0V4cChcIl5cIitnb29nLmh0bWwuU2FmZVN0eWxlLlZBTFVFX0FMTE9XRURfQ0hBUlNfK1wiKyRcIiksZ29vZy5odG1sLlNhZmVTdHlsZS5VUkxfUkVfPS9cXGIodXJsXFwoWyBcXHRcXG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXFx0XFxuXSpcXCkpL2csZ29vZy5odG1sLlNhZmVTdHlsZS5GVU5DVElPTlNfUkVfPS9cXGIoaHNsfGhzbGF8cmdifHJnYmF8bWF0cml4fGNhbGN8bWlubWF4fGZpdC1jb250ZW50fHJlcGVhdHwocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPylcXChbLSsqLzAtOWEtei4lXFxbXFxdLCBdK1xcKS9nLGdvb2cuaHRtbC5TYWZlU3R5bGUuQ09NTUVOVF9SRV89L1xcL1xcKi8sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVVybF89ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShnb29nLmh0bWwuU2FmZVN0eWxlLlVSTF9SRV8sKGZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPVwiXCI7cmV0dXJuIG89by5yZXBsYWNlKC9eKFsnXCJdKSguKilcXDEkLywoZnVuY3Rpb24oZSx0LG8pe3JldHVybiBuPXQsb30pKSxlPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKG8pLmdldFR5cGVkU3RyaW5nVmFsdWUoKSx0K24rZStuK3J9KSl9LGdvb2cuaHRtbC5TYWZlU3R5bGUuY29uY2F0PWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCIsbz1mdW5jdGlvbihlKXtnb29nLmlzQXJyYXkoZSk/Z29vZy5hcnJheS5mb3JFYWNoKGUsbyk6dCs9Z29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAoZSl9O3JldHVybiBnb29nLmFycmF5LmZvckVhY2goYXJndW1lbnRzLG8pLHQ/Z29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KTpnb29nLmh0bWwuU2FmZVN0eWxlLkVNUFRZfSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQ9ZnVuY3Rpb24oKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1cIlwiLHRoaXMuU0FGRV9TVFlMRV9TSEVFVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwLGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LmNyZWF0ZVJ1bGU9ZnVuY3Rpb24oZSx0KXtpZihnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLFwiPFwiKSl0aHJvdyBFcnJvcihcIlNlbGVjdG9yIGRvZXMgbm90IGFsbG93ICc8JywgZ290OiBcIitlKTt2YXIgbz1lLnJlcGxhY2UoLygnfFwiKSgoPyFcXDEpW15cXHJcXG5cXGZcXFxcXXxcXFxcW1xcc1xcU10pKlxcMS9nLFwiXCIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXF0oKT1eJHxdKyQvLnRlc3QobykpdGhyb3cgRXJyb3IoXCJTZWxlY3RvciBhbGxvd3Mgb25seSBbLV9hLXpBLVowLTkjLjoqICw+K35bXFxcXF0oKT1eJHxdIGFuZCBzdHJpbmdzLCBnb3Q6IFwiK2UpO2lmKCFnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuaGFzQmFsYW5jZWRCcmFja2V0c18obykpdGhyb3cgRXJyb3IoXCIoKSBhbmQgW10gaW4gc2VsZWN0b3IgbXVzdCBiZSBiYWxhbmNlZCwgZ290OiBcIitlKTtyZXR1cm4gdCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlU3R5bGV8fCh0PWdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlKHQpKSxlPWUrXCJ7XCIrZ29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAodCkucmVwbGFjZSgvPC9nLFwiXFxcXDNDIFwiKStcIn1cIixnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0Lmhhc0JhbGFuY2VkQnJhY2tldHNfPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD17XCIoXCI6XCIpXCIsXCJbXCI6XCJdXCJ9LG89W10scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO2lmKHRbbl0pby5wdXNoKHRbbl0pO2Vsc2UgaWYoZ29vZy5vYmplY3QuY29udGFpbnModCxuKSYmby5wb3AoKSE9bilyZXR1cm4hMX1yZXR1cm4gMD09by5sZW5ndGh9LGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jb25jYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIixvPWZ1bmN0aW9uKGUpe2dvb2cuaXNBcnJheShlKT9nb29nLmFycmF5LmZvckVhY2goZSxvKTp0Kz1nb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQudW53cmFwKGUpfTtyZXR1cm4gZ29vZy5hcnJheS5mb3JFYWNoKGFyZ3VtZW50cyxvKSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSkubGVuZ3RoP2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5FTVBUWTooZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMoZSxcIjxcIiksXCJGb3JiaWRkZW4gJzwnIGNoYXJhY3RlciBpbiBzdHlsZSBzaGVldCBzdHJpbmc6IFwiK2UpLGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpKX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiU2FmZVN0eWxlU2hlZXR7XCIrdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVTaGVldFdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JiZlLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JiZlLlNBRkVfU1RZTEVfU0hFRVRfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz9lLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBTYWZlU3R5bGVTaGVldCwgZ290ICdcIitlK1wiJyBvZiB0eXBlIFwiK2dvb2cudHlwZU9mKGUpKSxcInR5cGVfZXJyb3I6U2FmZVN0eWxlU2hlZXRcIil9LGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3JldHVybihuZXcgZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0KS5pbml0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VfKGUpfSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQucHJvdG90eXBlLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfPWUsdGhpc30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LkVNUFRZPWdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cubGFicz17fSxnb29nLmxhYnMudXNlckFnZW50PXt9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbD17fSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0TmF0aXZlVXNlckFnZW50U3RyaW5nXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXZpZ2F0b3JfKCk7cmV0dXJuIGUmJihlPWUudXNlckFnZW50KT9lOlwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXZpZ2F0b3JfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn0sZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnVzZXJBZ2VudF89Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZ18oKSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuc2V0VXNlckFnZW50PWZ1bmN0aW9uKGUpe2dvb2cubGFicy51c2VyQWdlbnQudXRpbC51c2VyQWdlbnRfPWV8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmdfKCl9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnVzZXJBZ2VudF99LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudD1mdW5jdGlvbihlKXt2YXIgdD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKHQsZSl9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldFVzZXJBZ2VudCgpO3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyh0LGUpfSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG89LyhcXHdbXFx3IF0rKVxcLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/L2cscj1bXTt0PW8uZXhlYyhlKTspci5wdXNoKFt0WzFdLHRbMl0sdFszXXx8dm9pZCAwXSk7cmV0dXJuIHJ9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiT3BlcmFcIil9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaElFXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJUcmlkZW50XCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJNU0lFXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hFZGdlSHRtbF89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiRWRnZVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUNocm9taXVtXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJFZGcvXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYUNocm9taXVtXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJPUFJcIil9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEZpcmVmb3hfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkZpcmVmb3hcIil8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkZ4aU9TXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hTYWZhcmlfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIlNhZmFyaVwiKSYmIShnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hDaHJvbWVfKCl8fGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaENvYXN0XygpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUh0bWxfKCl8fGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEVkZ2VDaHJvbWl1bV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoT3BlcmFDaHJvbWl1bV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRmlyZWZveF8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzU2lsaygpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJBbmRyb2lkXCIpKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ29hc3RfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkNvYXN0XCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hJb3NXZWJ2aWV3Xz1mdW5jdGlvbigpe3JldHVybihnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGFkXCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGhvbmVcIikpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoU2FmYXJpXygpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXygpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ29hc3RfKCkmJiFnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hGaXJlZm94XygpJiZnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJBcHBsZVdlYktpdFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXz1mdW5jdGlvbigpe3JldHVybihnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDaHJvbWVcIil8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkNyaU9TXCIpKSYmIWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEVkZ2VIdG1sXygpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hBbmRyb2lkQnJvd3Nlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiQW5kcm9pZFwiKSYmIShnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDaHJvbWUoKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRmlyZWZveCgpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYSgpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrKCkpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYT1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUU9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoSUVfLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0VkZ2U9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUh0bWxfLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0VkZ2VDaHJvbWl1bT1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hFZGdlQ2hyb21pdW1fLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhQ2hyb21pdW09Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoT3BlcmFDaHJvbWl1bV8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRmlyZWZveD1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hGaXJlZm94Xyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoU2FmYXJpXyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hDb2FzdF8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hJb3NXZWJ2aWV3Xyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDaHJvbWU9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNBbmRyb2lkQnJvd3Nlcj1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hBbmRyb2lkQnJvd3Nlcl8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzU2lsaz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJTaWxrXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU9Z29vZy5hcnJheS5maW5kKGUsciksb1tlXXx8XCJcIn12YXIgdD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7aWYoZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUUoKSlyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmdldElFVmVyc2lvbl8odCk7dD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXModCk7dmFyIG89e307Z29vZy5hcnJheS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUpe29bZVswXV09ZVsxXX0pKTt2YXIgcj1nb29nLnBhcnRpYWwoZ29vZy5vYmplY3QuY29udGFpbnNLZXksbyk7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhKCk/ZShbXCJWZXJzaW9uXCIsXCJPcGVyYVwiXSk6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZSgpP2UoW1wiRWRnZVwiXSk6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZUNocm9taXVtKCk/ZShbXCJFZGdcIl0pOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0Nocm9tZSgpP2UoW1wiQ2hyb21lXCIsXCJDcmlPU1wiXSk6KHQ9dFsyXSkmJnRbMV18fFwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc1ZlcnNpb25PckhpZ2hlcj1mdW5jdGlvbihlKXtyZXR1cm4gMDw9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uKCksZSl9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRJRVZlcnNpb25fPWZ1bmN0aW9uKGUpe3ZhciB0PS9ydjogKihbXFxkXFwuXSopLy5leGVjKGUpO2lmKHQmJnRbMV0pcmV0dXJuIHRbMV07dD1cIlwiO3ZhciBvPS9NU0lFICsoW1xcZFxcLl0rKS8uZXhlYyhlKTtpZihvJiZvWzFdKWlmKGU9L1RyaWRlbnRcXC8oXFxkLlxcZCkvLmV4ZWMoZSksXCI3LjBcIj09b1sxXSlpZihlJiZlWzFdKXN3aXRjaChlWzFdKXtjYXNlXCI0LjBcIjp0PVwiOC4wXCI7YnJlYWs7Y2FzZVwiNS4wXCI6dD1cIjkuMFwiO2JyZWFrO2Nhc2VcIjYuMFwiOnQ9XCIxMC4wXCI7YnJlYWs7Y2FzZVwiNy4wXCI6dD1cIjExLjBcIn1lbHNlIHQ9XCI3LjBcIjtlbHNlIHQ9b1sxXTtyZXR1cm4gdH0sZ29vZy5odG1sLlNhZmVIdG1sPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlSHRtbFdyYXBwZWRWYWx1ZV89XCJcIix0aGlzLlNBRkVfSFRNTF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVIdG1sLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXyx0aGlzLmRpcl89bnVsbH0sZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ0kxOG5CaWRpRGlyZWN0aW9uYWxTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXJffSxnb29nLmh0bWwuU2FmZUh0bWwucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuREVCVUcmJihnb29nLmh0bWwuU2FmZUh0bWwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJTYWZlSHRtbHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXytcIn1cIn0pLGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChlKS50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZUh0bWwmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZUh0bWwmJmUuU0FGRV9IVE1MX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5TYWZlSHRtbC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlSHRtbFdyYXBwZWRWYWx1ZV86KGdvb2cuYXNzZXJ0cy5mYWlsKFwiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCIpfSxnb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZT1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVIdG1sKXJldHVybiBlO3ZhciB0PVwib2JqZWN0XCI9PXR5cGVvZiBlLG89bnVsbDtyZXR1cm4gdCYmZS5pbXBsZW1lbnRzR29vZ0kxOG5CaWRpRGlyZWN0aW9uYWxTdHJpbmcmJihvPWUuZ2V0RGlyZWN0aW9uKCkpLGU9dCYmZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2UuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhlKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGUpLG8pfSxnb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlSHRtbD9lOihlPWdvb2cuaHRtbC5TYWZlSHRtbC5odG1sRXNjYXBlKGUpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGUuZ2V0RGlyZWN0aW9uKCkpKX0sZ29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZUh0bWw/ZTooZT1nb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGUuZ2V0RGlyZWN0aW9uKCkpKX0sZ29vZy5odG1sLlNhZmVIdG1sLmZyb209Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUsZ29vZy5odG1sLlNhZmVIdG1sLlZBTElEX05BTUVTX0lOX1RBR189L15bYS16QS1aMC05LV0rJC8sZ29vZy5odG1sLlNhZmVIdG1sLlVSTF9BVFRSSUJVVEVTXz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sZ29vZy5odG1sLlNhZmVIdG1sLk5PVF9BTExPV0VEX1RBR19OQU1FU189e0FQUExFVDohMCxCQVNFOiEwLEVNQkVEOiEwLElGUkFNRTohMCxMSU5LOiEwLE1BVEg6ITAsTUVUQTohMCxPQkpFQ1Q6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlSHRtbC52ZXJpZnlUYWdOYW1lKFN0cmluZyhlKSksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGUpLHQsbyl9LGdvb2cuaHRtbC5TYWZlSHRtbC52ZXJpZnlUYWdOYW1lPWZ1bmN0aW9uKGUpe2lmKCFnb29nLmh0bWwuU2FmZUh0bWwuVkFMSURfTkFNRVNfSU5fVEFHXy50ZXN0KGUpKXRocm93IEVycm9yKFwiSW52YWxpZCB0YWcgbmFtZSA8XCIrZStcIj4uXCIpO2lmKGUudG9VcHBlckNhc2UoKWluIGdvb2cuaHRtbC5TYWZlSHRtbC5OT1RfQUxMT1dFRF9UQUdfTkFNRVNfKXRocm93IEVycm9yKFwiVGFnIG5hbWUgPFwiK2UrXCI+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5cIil9LGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVJZnJhbWU9ZnVuY3Rpb24oZSx0LG8scil7ZSYmZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoZSk7dmFyIG49e307cmV0dXJuIG4uc3JjPWV8fG51bGwsbi5zcmNkb2M9dCYmZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcCh0KSxlPWdvb2cuaHRtbC5TYWZlSHRtbC5jb21iaW5lQXR0cmlidXRlcyhuLHtzYW5kYm94OlwiXCJ9LG8pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiaWZyYW1lXCIsZSxyKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhbmRib3hJZnJhbWU9ZnVuY3Rpb24oZSx0LG8scil7aWYoIWdvb2cuaHRtbC5TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IoXCJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLlwiKTt2YXIgbj17fTtyZXR1cm4gbi5zcmM9ZT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoZSkpOm51bGwsbi5zcmNkb2M9dHx8bnVsbCxuLnNhbmRib3g9XCJcIixlPWdvb2cuaHRtbC5TYWZlSHRtbC5jb21iaW5lQXR0cmlidXRlcyhuLHt9LG8pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiaWZyYW1lXCIsZSxyKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNhblVzZVNhbmRib3hJZnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5nbG9iYWwuSFRNTElGcmFtZUVsZW1lbnQmJlwic2FuZGJveFwiaW4gZ29vZy5nbG9iYWwuSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2NyaXB0U3JjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGUpLGU9Z29vZy5odG1sLlNhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHtzcmM6ZX0se30sdCksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJzY3JpcHRcIixlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNjcmlwdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0KXt2YXIgcj1vLnRvTG93ZXJDYXNlKCk7aWYoXCJsYW5ndWFnZVwiPT1yfHxcInNyY1wiPT1yfHxcInRleHRcIj09cnx8XCJ0eXBlXCI9PXIpdGhyb3cgRXJyb3IoJ0Nhbm5vdCBzZXQgXCInK3IrJ1wiIGF0dHJpYnV0ZScpfWZvcihvPVwiXCIsZT1nb29nLmFycmF5LmNvbmNhdChlKSxyPTA7cjxlLmxlbmd0aDtyKyspbys9Z29vZy5odG1sLlNhZmVTY3JpcHQudW53cmFwKGVbcl0pO3JldHVybiBlPWdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG8sZ29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUwpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwic2NyaXB0XCIsdCxlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVN0eWxlPWZ1bmN0aW9uKGUsdCl7dD1nb29nLmh0bWwuU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3R5cGU6XCJ0ZXh0L2Nzc1wifSx7fSx0KTt2YXIgbz1cIlwiO2U9Z29vZy5hcnJheS5jb25jYXQoZSk7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspbys9Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnVud3JhcChlW3JdKTtyZXR1cm4gZT1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShvLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcInN0eWxlXCIsdCxlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZU1ldGFSZWZyZXNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGUpKSwoZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUUoKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZSgpKSYmZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMoZSxcIjtcIikmJihlPVwiJ1wiK2UucmVwbGFjZSgvJy9nLFwiJTI3XCIpK1wiJ1wiKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcIm1ldGFcIix7XCJodHRwLWVxdWl2XCI6XCJyZWZyZXNoXCIsY29udGVudDoodHx8MCkrXCI7IHVybD1cIitlfSl9LGdvb2cuaHRtbC5TYWZlSHRtbC5nZXRBdHRyTmFtZUFuZFZhbHVlXz1mdW5jdGlvbihlLHQsbyl7aWYobyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0KW89Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKG8pO2Vsc2UgaWYoXCJzdHlsZVwiPT10LnRvTG93ZXJDYXNlKCkpbz1nb29nLmh0bWwuU2FmZUh0bWwuZ2V0U3R5bGVWYWx1ZV8obyk7ZWxzZXtpZigvXm9uL2kudGVzdCh0KSl0aHJvdyBFcnJvcignQXR0cmlidXRlIFwiJyt0KydcIiByZXF1aXJlcyBnb29nLnN0cmluZy5Db25zdCB2YWx1ZSwgXCInK28rJ1wiIGdpdmVuLicpO2lmKHQudG9Mb3dlckNhc2UoKWluIGdvb2cuaHRtbC5TYWZlSHRtbC5VUkxfQVRUUklCVVRFU18paWYobyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpbz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChvKTtlbHNlIGlmKG8gaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClvPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChvKTtlbHNle2lmKCFnb29nLmlzU3RyaW5nKG8pKXRocm93IEVycm9yKCdBdHRyaWJ1dGUgXCInK3QrJ1wiIG9uIHRhZyBcIicrZSsnXCIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlIFwiJytvKydcIiBnaXZlbi4nKTtvPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKG8pLmdldFR5cGVkU3RyaW5nVmFsdWUoKX19cmV0dXJuIG8uaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZyYmKG89by5nZXRUeXBlZFN0cmluZ1ZhbHVlKCkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5pc1N0cmluZyhvKXx8Z29vZy5pc051bWJlcihvKSxcIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCBcIit0eXBlb2YgbytcIiB3aXRoIHZhbHVlOiBcIitvKSx0Kyc9XCInK2dvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoU3RyaW5nKG8pKSsnXCInfSxnb29nLmh0bWwuU2FmZUh0bWwuZ2V0U3R5bGVWYWx1ZV89ZnVuY3Rpb24oZSl7aWYoIWdvb2cuaXNPYmplY3QoZSkpdGhyb3cgRXJyb3IoJ1RoZSBcInN0eWxlXCIgYXR0cmlidXRlIHJlcXVpcmVzIGdvb2cuaHRtbC5TYWZlU3R5bGUgb3IgbWFwIG9mIHN0eWxlIHByb3BlcnRpZXMsICcrdHlwZW9mIGUrXCIgZ2l2ZW46IFwiK2UpO3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTdHlsZXx8KGU9Z29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGUoZSkpLGdvb2cuaHRtbC5TYWZlU3R5bGUudW53cmFwKGUpfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlV2l0aERpcj1mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4odD1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlKHQsbyxyKSkuZGlyXz1lLHR9LGdvb2cuaHRtbC5TYWZlSHRtbC5qb2luPWZ1bmN0aW9uKGUsdCl7dmFyIG89KGU9Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUoZSkpLmdldERpcmVjdGlvbigpLHI9W10sbj1mdW5jdGlvbihlKXtnb29nLmlzQXJyYXkoZSk/Z29vZy5hcnJheS5mb3JFYWNoKGUsbik6KGU9Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUoZSksci5wdXNoKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGU9ZS5nZXREaXJlY3Rpb24oKSxvPT1nb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTD9vPWU6ZSE9Z29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUwmJm8hPWUmJihvPW51bGwpKX07cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaCh0LG4pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHIuam9pbihnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwKGUpKSxvKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNvbmNhdD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVIdG1sLmpvaW4oZ29vZy5odG1sLlNhZmVIdG1sLkVNUFRZLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxnb29nLmh0bWwuU2FmZUh0bWwuY29uY2F0V2l0aERpcj1mdW5jdGlvbihlLHQpe3ZhciBvPWdvb2cuaHRtbC5TYWZlSHRtbC5jb25jYXQoZ29vZy5hcnJheS5zbGljZShhcmd1bWVudHMsMSkpO3JldHVybiBvLmRpcl89ZSxvfSxnb29nLmh0bWwuU2FmZUh0bWwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPXt9LGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBnb29nLmh0bWwuU2FmZUh0bWwpLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV8oZSx0KX0sZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5pbml0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VfPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZP2dvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZLmNyZWF0ZUhUTUwoZSk6ZSx0aGlzLmRpcl89dCx0aGlzfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9bnVsbCxuPVwiPFwiK2UrZ29vZy5odG1sLlNhZmVIdG1sLnN0cmluZ2lmeUF0dHJpYnV0ZXMoZSx0KTtyZXR1cm4gZ29vZy5pc0RlZkFuZE5vdE51bGwobyk/Z29vZy5pc0FycmF5KG8pfHwobz1bb10pOm89W10sZ29vZy5kb20udGFncy5pc1ZvaWRUYWcoZS50b0xvd2VyQ2FzZSgpKT8oZ29vZy5hc3NlcnRzLmFzc2VydCghby5sZW5ndGgsXCJWb2lkIHRhZyA8XCIrZStcIj4gZG9lcyBub3QgYWxsb3cgY29udGVudC5cIiksbis9XCI+XCIpOihyPWdvb2cuaHRtbC5TYWZlSHRtbC5jb25jYXQobyksbis9XCI+XCIrZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcChyKStcIjwvXCIrZStcIj5cIixyPXIuZ2V0RGlyZWN0aW9uKCkpLChlPXQmJnQuZGlyKSYmKHI9L14obHRyfHJ0bHxhdXRvKSQvaS50ZXN0KGUpP2dvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMOm51bGwpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG4scil9LGdvb2cuaHRtbC5TYWZlSHRtbC5zdHJpbmdpZnlBdHRyaWJ1dGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG89XCJcIjtpZih0KWZvcih2YXIgciBpbiB0KXtpZighZ29vZy5odG1sLlNhZmVIdG1sLlZBTElEX05BTUVTX0lOX1RBR18udGVzdChyKSl0aHJvdyBFcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSBcIicrcisnXCIuJyk7dmFyIG49dFtyXTtnb29nLmlzRGVmQW5kTm90TnVsbChuKSYmKG8rPVwiIFwiK2dvb2cuaHRtbC5TYWZlSHRtbC5nZXRBdHRyTmFtZUFuZFZhbHVlXyhlLHIsbikpfXJldHVybiBvfSxnb29nLmh0bWwuU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSlnb29nLmFzc2VydHMuYXNzZXJ0KHIudG9Mb3dlckNhc2UoKT09cixcIk11c3QgYmUgbG93ZXIgY2FzZVwiKSxuW3JdPWVbcl07Zm9yKHIgaW4gdClnb29nLmFzc2VydHMuYXNzZXJ0KHIudG9Mb3dlckNhc2UoKT09cixcIk11c3QgYmUgbG93ZXIgY2FzZVwiKSxuW3JdPXRbcl07Zm9yKHIgaW4gbyl7dmFyIHM9ci50b0xvd2VyQ2FzZSgpO2lmKHMgaW4gZSl0aHJvdyBFcnJvcignQ2Fubm90IG92ZXJyaWRlIFwiJytzKydcIiBhdHRyaWJ1dGUsIGdvdCBcIicrcisnXCIgd2l0aCB2YWx1ZSBcIicrb1tyXSsnXCInKTtzIGluIHQmJmRlbGV0ZSBuW3NdLG5bcl09b1tyXX1yZXR1cm4gbn0sZ29vZy5odG1sLlNhZmVIdG1sLkRPQ1RZUEVfSFRNTD1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcIjwhRE9DVFlQRSBodG1sPlwiLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwuU2FmZUh0bWwuRU1QVFk9Z29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJcIixnb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTCksZ29vZy5odG1sLlNhZmVIdG1sLkJSPWdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiPGJyPlwiLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnM9e30sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVIdG1sRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCxvfHxudWxsKX0sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTY3JpcHRGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHQpfSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMuc2FmZVN0eWxlRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpLFwibXVzdCBwcm92aWRlIGp1c3RpZmljYXRpb25cIiksZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpLFwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCl9LGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSxcIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpKSxcIm11c3QgcHJvdmlkZSBub24tZW1wdHkganVzdGlmaWNhdGlvblwiKSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVVcmxGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHQpfSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMudHJ1c3RlZFJlc291cmNlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpLFwibXVzdCBwcm92aWRlIGp1c3RpZmljYXRpb25cIiksZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpLFwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCl9LGdvb2cuZG9tLnNhZmU9e30sZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjpcImFmdGVyYmVnaW5cIixBRlRFUkVORDpcImFmdGVyZW5kXCIsQkVGT1JFQkVHSU46XCJiZWZvcmViZWdpblwiLEJFRk9SRUVORDpcImJlZm9yZWVuZFwifSxnb29nLmRvbS5zYWZlLmluc2VydEFkamFjZW50SHRtbD1mdW5jdGlvbihlLHQsbyl7ZS5pbnNlcnRBZGphY2VudEhUTUwodCxnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobykpfSxnb29nLmRvbS5zYWZlLlNFVF9JTk5FUl9IVE1MX0RJU0FMTE9XRURfVEFHU189e01BVEg6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH0sZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoKGZ1bmN0aW9uKCl7aWYoZ29vZy5ERUJVRyYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiB0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGUuYXBwZW5kQ2hpbGQodCksIShnb29nLkRFQlVHJiYhZS5maXJzdENoaWxkfHwodD1lLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCxlLmlubmVySFRNTD1nb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoZ29vZy5odG1sLlNhZmVIdG1sLkVNUFRZKSx0LnBhcmVudEVsZW1lbnQpKX0pKSxnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGUsdCl7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDtlLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmxhc3RDaGlsZCk7ZS5pbm5lckhUTUw9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldElubmVySHRtbD1mdW5jdGlvbihlLHQpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIG89ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCk7aWYoZ29vZy5kb20uc2FmZS5TRVRfSU5ORVJfSFRNTF9ESVNBTExPV0VEX1RBR1NfW29dKXRocm93IEVycm9yKFwiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgXCIrZS50YWdOYW1lK1wiLlwiKX1nb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlKGUsdCl9LGdvb2cuZG9tLnNhZmUuc2V0T3V0ZXJIdG1sPWZ1bmN0aW9uKGUsdCl7ZS5vdXRlckhUTUw9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGUsdCl7dD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGUpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpfSxnb29nLmRvbS5zYWZlLnNldEJ1dHRvbkZvcm1BY3Rpb249ZnVuY3Rpb24oZSx0KXt0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MQnV0dG9uRWxlbWVudChlKS5mb3JtQWN0aW9uPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SW5wdXRGb3JtQWN0aW9uPWZ1bmN0aW9uKGUsdCl7dD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElucHV0RWxlbWVudChlKS5mb3JtQWN0aW9uPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0U3R5bGU9ZnVuY3Rpb24oZSx0KXtlLnN0eWxlLmNzc1RleHQ9Z29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAodCl9LGdvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihlLHQpe2Uud3JpdGUoZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpKX0sZ29vZy5kb20uc2FmZS5zZXRBbmNob3JIcmVmPWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50KGUpLHQ9dCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP3Q6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQodCksZS5ocmVmPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SW1hZ2VTcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEltYWdlRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTppbWFnZVxcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0QXVkaW9TcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTphdWRpb1xcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTp2aWRlb1xcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0RW1iZWRTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEVtYmVkRWxlbWVudChlKSxlLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0RnJhbWVTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZyYW1lRWxlbWVudChlKSxlLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SWZyYW1lU3JjPWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJRnJhbWVFbGVtZW50KGUpLGUuc3JjPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoZSksZS5zcmNkb2M9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldExpbmtIcmVmQW5kUmVsPWZ1bmN0aW9uKGUsdCxvKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTExpbmtFbGVtZW50KGUpLGUucmVsPW8sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29udGFpbnMobyxcInN0eWxlc2hlZXRcIik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQodCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlIFwicmVsXCIgY29udGFpbnMgXCJzdHlsZXNoZWV0XCInKSxlLmhyZWY9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMKHQpKTplLmhyZWY9dCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmw/Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMKHQpOnQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9nb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQodCkpfSxnb29nLmRvbS5zYWZlLnNldE9iamVjdERhdGE9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTE9iamVjdEVsZW1lbnQoZSksZS5kYXRhPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQoZSksZS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKHQpLCh0PWdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSkmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX0sZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGUpLGUudGV4dD1nb29nLmh0bWwuU2FmZVNjcmlwdC51bndyYXBUcnVzdGVkU2NyaXB0KHQpLCh0PWdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSkmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX0sZ29vZy5kb20uc2FmZS5zZXRMb2NhdGlvbkhyZWY9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oZSksdD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxlLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwVHJ1c3RlZFVSTCh0KX0sZ29vZy5kb20uc2FmZS5hc3NpZ25Mb2NhdGlvbj1mdW5jdGlvbihlLHQpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihlKSx0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGUuYXNzaWduKGdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCkpfSxnb29nLmRvbS5zYWZlLnJlcGxhY2VMb2NhdGlvbj1mdW5jdGlvbihlLHQpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihlKSx0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGUucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpKX0sZ29vZy5kb20uc2FmZS5vcGVuSW5XaW5kb3c9ZnVuY3Rpb24oZSx0LG8scixuKXtyZXR1cm4gZT1lIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/ZTpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChlKSwodHx8Z29vZy5nbG9iYWwpLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwVHJ1c3RlZFVSTChlKSxvP2dvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChvKTpcIlwiLHIsbil9LGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nSHRtbD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmRvbS5zYWZlLnBhcnNlRnJvbVN0cmluZyhlLHQsXCJ0ZXh0L2h0bWxcIil9LGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZS5wYXJzZUZyb21TdHJpbmcoZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpLG8pfSxnb29nLmRvbS5zYWZlLmNyZWF0ZUltYWdlRnJvbUJsb2I9ZnVuY3Rpb24oZSl7aWYoIS9eaW1hZ2VcXC8uKi9nLnRlc3QoZS50eXBlKSl0aHJvdyBFcnJvcihcImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLlwiKTt2YXIgdD1nb29nLmdsb2JhbC5VUkwuY3JlYXRlT2JqZWN0VVJMKGUpO3JldHVybihlPW5ldyBnb29nLmdsb2JhbC5JbWFnZSkub25sb2FkPWZ1bmN0aW9uKCl7Z29vZy5nbG9iYWwuVVJMLnJldm9rZU9iamVjdFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRJbWFnZVNyYyhlLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0KGdvb2cuc3RyaW5nLkNvbnN0LmZyb20oXCJJbWFnZSBibG9iIFVSTC5cIiksdCkpLGV9LGdvb2cuc3RyaW5nLkRFVEVDVF9ET1VCTEVfRVNDQVBJTkc9ITEsZ29vZy5zdHJpbmcuRk9SQ0VfTk9OX0RPTV9IVE1MX1VORVNDQVBJTkc9ITEsZ29vZy5zdHJpbmcuVW5pY29kZT17TkJTUDpcIsKgXCJ9LGdvb2cuc3RyaW5nLnN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuc3RhcnRzV2l0aCxnb29nLnN0cmluZy5lbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aCxnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgsZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGgsZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlRXF1YWxzPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscyxnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPWUuc3BsaXQoXCIlc1wiKSxyPVwiXCIsbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7bi5sZW5ndGgmJjE8by5sZW5ndGg7KXIrPW8uc2hpZnQoKStuLnNoaWZ0KCk7cmV0dXJuIHIrby5qb2luKFwiJXNcIil9LGdvb2cuc3RyaW5nLmNvbGxhcHNlV2hpdGVzcGFjZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxzXFx4YTBdKy9nLFwiIFwiKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfSxnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlPWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UsZ29vZy5zdHJpbmcuaXNFbXB0eVN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gMD09ZS5sZW5ndGh9LGdvb2cuc3RyaW5nLmlzRW1wdHk9Z29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZSxnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShlKSl9LGdvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlLGdvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiEvW15cXHRcXG5cXHIgXS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3JldHVybiEvW14wLTldLy50ZXN0KGUpfSxnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihlKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihlKXtyZXR1cm5cIiBcIj09ZX0sZ29vZy5zdHJpbmcuaXNVbmljb2RlQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gMT09ZS5sZW5ndGgmJlwiIFwiPD1lJiZcIn5cIj49ZXx8XCLCgFwiPD1lJiZcIu+/vVwiPj1lfSxnb29nLnN0cmluZy5zdHJpcE5ld2xpbmVzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikrL2csXCIgXCIpfSxnb29nLnN0cmluZy5jYW5vbmljYWxpemVOZXdsaW5lcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXFxyXFxufFxccnxcXG4pL2csXCJcXG5cIil9LGdvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx4YTB8XFxzL2csXCIgXCIpfSxnb29nLnN0cmluZy5ub3JtYWxpemVTcGFjZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx4YTB8WyBcXHRdKy9nLFwiIFwiKX0sZ29vZy5zdHJpbmcuY29sbGFwc2VCcmVha2luZ1NwYWNlcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFx0XFxyXFxuIF0rL2csXCIgXCIpLnJlcGxhY2UoL15bXFx0XFxyXFxuIF0rfFtcXHRcXHJcXG4gXSskL2csXCJcIil9LGdvb2cuc3RyaW5nLnRyaW09Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbSxnb29nLnN0cmluZy50cmltTGVmdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW1xcc1xceGEwXSsvLFwiXCIpfSxnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1xcc1xceGEwXSskLyxcIlwiKX0sZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZT1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb21wYXJlLGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oZSx0LG8pe2lmKGU9PXQpcmV0dXJuIDA7aWYoIWUpcmV0dXJuLTE7aWYoIXQpcmV0dXJuIDE7Zm9yKHZhciByPWUudG9Mb3dlckNhc2UoKS5tYXRjaChvKSxuPXQudG9Mb3dlckNhc2UoKS5tYXRjaChvKSxzPU1hdGgubWluKHIubGVuZ3RoLG4ubGVuZ3RoKSxpPTA7aTxzO2krKyl7bz1yW2ldO3ZhciBhPW5baV07aWYobyE9YSlyZXR1cm4gZT1wYXJzZUludChvLDEwKSwhaXNOYU4oZSkmJih0PXBhcnNlSW50KGEsMTApLCFpc05hTih0KSYmZS10KT9lLXQ6bzxhPy0xOjF9cmV0dXJuIHIubGVuZ3RoIT1uLmxlbmd0aD9yLmxlbmd0aC1uLmxlbmd0aDplPHQ/LTE6MX0sZ29vZy5zdHJpbmcuaW50QXdhcmVDb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV8oZSx0LC9cXGQrfFxcRCsvZyl9LGdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV8oZSx0LC9cXGQrfFxcLlxcZCt8XFxEKy9nKX0sZ29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlLGdvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSl9LGdvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUucmVwbGFjZSgvXFwrL2csXCIgXCIpKX0sZ29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnIsZ29vZy5zdHJpbmcuaHRtbEVzY2FwZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoZSx0KSxnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoZT1lLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sXCImIzEwMTtcIikpLGV9LGdvb2cuc3RyaW5nLkVfUkVfPS9lL2csZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllcz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoZSxcIiZcIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiZcImRvY3VtZW50XCJpbiBnb29nLmdsb2JhbD9nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzVXNpbmdEb21fKGUpOmdvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXyhlKTplfSxnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzV2l0aERvY3VtZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLmNvbnRhaW5zKGUsXCImXCIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oZSx0KTplfSxnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzVXNpbmdEb21fPWZ1bmN0aW9uKGUsdCl7dmFyIG89e1wiJmFtcDtcIjpcIiZcIixcIiZsdDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiZxdW90O1wiOidcIid9LHI9dD90LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik6Z29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gZS5yZXBsYWNlKGdvb2cuc3RyaW5nLkhUTUxfRU5USVRZX1BBVFRFUk5fLChmdW5jdGlvbihlLHQpe3ZhciBuPW9bZV07cmV0dXJuIG58fChcIiNcIj09dC5jaGFyQXQoMCkmJih0PU51bWJlcihcIjBcIit0LnN1YnN0cigxKSksaXNOYU4odCl8fChuPVN0cmluZy5mcm9tQ2hhckNvZGUodCkpKSxufHwoZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwocixnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMuc2FmZUh0bWxGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3QoZ29vZy5zdHJpbmcuQ29uc3QuZnJvbShcIlNpbmdsZSBIVE1MIGVudGl0eS5cIiksZStcIiBcIikpLG49ci5maXJzdENoaWxkLm5vZGVWYWx1ZS5zbGljZSgwLC0xKSksb1tlXT1uKX0pKX0sZ29vZy5zdHJpbmcudW5lc2NhcGVQdXJlWG1sRW50aXRpZXNfPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLChmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlXCJhbXBcIjpyZXR1cm5cIiZcIjtjYXNlXCJsdFwiOnJldHVyblwiPFwiO2Nhc2VcImd0XCI6cmV0dXJuXCI+XCI7Y2FzZVwicXVvdFwiOnJldHVybidcIic7ZGVmYXVsdDpyZXR1cm5cIiNcIiE9dC5jaGFyQXQoMCl8fCh0PU51bWJlcihcIjBcIit0LnN1YnN0cigxKSksaXNOYU4odCkpP2U6U3RyaW5nLmZyb21DaGFyQ29kZSh0KX19KSl9LGdvb2cuc3RyaW5nLkhUTUxfRU5USVRZX1BBVFRFUk5fPS8mKFteO1xcczwmXSspOz8vZyxnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGUucmVwbGFjZSgvICAvZyxcIiAmIzE2MDtcIiksdCl9LGdvb2cuc3RyaW5nLnByZXNlcnZlU3BhY2VzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhefFtcXG4gXSkgL2csXCIkMVwiK2dvb2cuc3RyaW5nLlVuaWNvZGUuTkJTUCl9LGdvb2cuc3RyaW5nLnN0cmlwUXVvdGVzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPXQubGVuZ3RoLHI9MDtyPG87cisrKXt2YXIgbj0xPT1vP3Q6dC5jaGFyQXQocik7aWYoZS5jaGFyQXQoMCk9PW4mJmUuY2hhckF0KGUubGVuZ3RoLTEpPT1uKXJldHVybiBlLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpfXJldHVybiBlfSxnb29nLnN0cmluZy50cnVuY2F0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG8mJihlPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoZSkpLGUubGVuZ3RoPnQmJihlPWUuc3Vic3RyaW5nKDAsdC0zKStcIi4uLlwiKSxvJiYoZT1nb29nLnN0cmluZy5odG1sRXNjYXBlKGUpKSxlfSxnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihlLHQsbyxyKXtpZihvJiYoZT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGUpKSxyJiZlLmxlbmd0aD50KXtyPnQmJihyPXQpO3ZhciBuPWUubGVuZ3RoLXI7ZT1lLnN1YnN0cmluZygwLHQtcikrXCIuLi5cIitlLnN1YnN0cmluZyhuKX1lbHNlIGUubGVuZ3RoPnQmJihyPU1hdGguZmxvb3IodC8yKSxuPWUubGVuZ3RoLXIsZT1lLnN1YnN0cmluZygwLHIrdCUyKStcIi4uLlwiK2Uuc3Vic3RyaW5nKG4pKTtyZXR1cm4gbyYmKGU9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShlKSksZX0sZ29vZy5zdHJpbmcuc3BlY2lhbEVzY2FwZUNoYXJzXz17XCJcXDBcIjpcIlxcXFwwXCIsXCJcXGJcIjpcIlxcXFxiXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXHJcIjpcIlxcXFxyXCIsXCJcXHRcIjpcIlxcXFx0XCIsXCJcXHZcIjpcIlxcXFx4MEJcIiwnXCInOidcXFxcXCInLFwiXFxcXFwiOlwiXFxcXFxcXFxcIixcIjxcIjpcIlxcXFx1MDAzQ1wifSxnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlXz17XCInXCI6XCJcXFxcJ1wifSxnb29nLnN0cmluZy5xdW90ZT1mdW5jdGlvbihlKXtlPVN0cmluZyhlKTtmb3IodmFyIHQ9WydcIiddLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHI9ZS5jaGFyQXQobyksbj1yLmNoYXJDb2RlQXQoMCk7dFtvKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bcl18fCgzMTxuJiYxMjc+bj9yOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIocikpfXJldHVybiB0LnB1c2goJ1wiJyksdC5qb2luKFwiXCIpfSxnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG89MDtvPGUubGVuZ3RoO28rKyl0W29dPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZS5jaGFyQXQobykpO3JldHVybiB0LmpvaW4oXCJcIil9LGdvb2cuc3RyaW5nLmVzY2FwZUNoYXI9ZnVuY3Rpb24oZSl7aWYoZSBpbiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlXylyZXR1cm4gZ29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV9bZV07aWYoZSBpbiBnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1tlXT1nb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfW2VdO3ZhciB0PWUuY2hhckNvZGVBdCgwKTtpZigzMTx0JiYxMjc+dCl2YXIgbz1lO2Vsc2UgMjU2PnQ/KG89XCJcXFxceFwiLCgxNj50fHwyNTY8dCkmJihvKz1cIjBcIikpOihvPVwiXFxcXHVcIiw0MDk2PnQmJihvKz1cIjBcIikpLG8rPXQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2VdPW99LGdvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zLGdvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zLGdvb2cuc3RyaW5nLmNvdW50T2Y9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmdD9lLnNwbGl0KHQpLmxlbmd0aC0xOjB9LGdvb2cuc3RyaW5nLnJlbW92ZUF0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1lO3JldHVybiAwPD10JiZ0PGUubGVuZ3RoJiYwPG8mJihyPWUuc3Vic3RyKDAsdCkrZS5zdWJzdHIodCtvLGUubGVuZ3RoLXQtbykpLHJ9LGdvb2cuc3RyaW5nLnJlbW92ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UodCxcIlwiKX0sZ29vZy5zdHJpbmcucmVtb3ZlQWxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUodCksXCJnXCIpLGUucmVwbGFjZSh0LFwiXCIpfSxnb29nLnN0cmluZy5yZXBsYWNlQWxsPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gdD1uZXcgUmVnRXhwKGdvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZSh0KSxcImdcIiksZS5yZXBsYWNlKHQsby5yZXBsYWNlKC9cXCQvZyxcIiQkJCRcIikpfSxnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKC8oWy0oKVxcW1xcXXt9Kz8qLiRcXF58LDojPCFcXFxcXSkvZyxcIlxcXFwkMVwiKS5yZXBsYWNlKC9cXHgwOC9nLFwiXFxcXHgwOFwiKX0sZ29vZy5zdHJpbmcucmVwZWF0PVN0cmluZy5wcm90b3R5cGUucmVwZWF0P2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwZWF0KHQpfTpmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheSh0KzEpLmpvaW4oZSl9LGdvb2cuc3RyaW5nLnBhZE51bWJlcj1mdW5jdGlvbihlLHQsbyl7cmV0dXJuLTE9PShvPShlPWdvb2cuaXNEZWYobyk/ZS50b0ZpeGVkKG8pOlN0cmluZyhlKSkuaW5kZXhPZihcIi5cIikpJiYobz1lLmxlbmd0aCksZ29vZy5zdHJpbmcucmVwZWF0KFwiMFwiLE1hdGgubWF4KDAsdC1vKSkrZX0sZ29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/XCJcIjpTdHJpbmcoZSl9LGdvb2cuc3RyaW5nLmJ1aWxkU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGFyZ3VtZW50cyxcIlwiKX0sZ29vZy5zdHJpbmcuZ2V0UmFuZG9tU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMjE0NzQ4MzY0OCpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikrTWF0aC5hYnMoTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpXmdvb2cubm93KCkpLnRvU3RyaW5nKDM2KX0sZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucyxnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxvPTA7bzxlLmxlbmd0aDsrK28pdD0zMSp0K2UuY2hhckNvZGVBdChvKT4+PjA7cmV0dXJuIHR9LGdvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfPTIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKXwwLGdvb2cuc3RyaW5nLmNyZWF0ZVVuaXF1ZVN0cmluZz1mdW5jdGlvbigpe3JldHVyblwiZ29vZ19cIitnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXysrfSxnb29nLnN0cmluZy50b051bWJlcj1mdW5jdGlvbihlKXt2YXIgdD1OdW1iZXIoZSk7cmV0dXJuIDA9PXQmJmdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2UoZSk/TmFOOnR9LGdvb2cuc3RyaW5nLmlzTG93ZXJDYW1lbENhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuL15bYS16XSsoW0EtWl1bYS16XSopKiQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLmlzVXBwZXJDYW1lbENhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW0EtWl1bYS16XSopKyQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLnRvQ2FtZWxDYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvXFwtKFthLXpdKS9nLChmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KSl9LGdvb2cuc3RyaW5nLnRvU2VsZWN0b3JDYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvKFtBLVpdKS9nLFwiLSQxXCIpLnRvTG93ZXJDYXNlKCl9LGdvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9Z29vZy5pc1N0cmluZyh0KT9nb29nLnN0cmluZy5yZWdFeHBFc2NhcGUodCk6XCJcXFxcc1wiLGUucmVwbGFjZShuZXcgUmVnRXhwKFwiKF5cIisodD9cInxbXCIrdCtcIl0rXCI6XCJcIikrXCIpKFthLXpdKVwiLFwiZ1wiKSwoZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0K28udG9VcHBlckNhc2UoKX0pKX0sZ29vZy5zdHJpbmcuY2FwaXRhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUuY2hhckF0KDApKS50b1VwcGVyQ2FzZSgpK1N0cmluZyhlLnN1YnN0cigxKSkudG9Mb3dlckNhc2UoKX0sZ29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGlzRmluaXRlKGUpJiYoZT1TdHJpbmcoZSkpLGdvb2cuaXNTdHJpbmcoZSk/L15cXHMqLT8weC9pLnRlc3QoZSk/cGFyc2VJbnQoZSwxNik6cGFyc2VJbnQoZSwxMCk6TmFOfSxnb29nLnN0cmluZy5zcGxpdExpbWl0PWZ1bmN0aW9uKGUsdCxvKXtlPWUuc3BsaXQodCk7Zm9yKHZhciByPVtdOzA8byYmZS5sZW5ndGg7KXIucHVzaChlLnNoaWZ0KCkpLG8tLTtyZXR1cm4gZS5sZW5ndGgmJnIucHVzaChlLmpvaW4odCkpLHJ9LGdvb2cuc3RyaW5nLmxhc3RDb21wb25lbnQ9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9W3RdKTtmb3IodmFyIG89LTEscj0wO3I8dC5sZW5ndGg7cisrKWlmKFwiXCIhPXRbcl0pe3ZhciBuPWUubGFzdEluZGV4T2YodFtyXSk7bj5vJiYobz1uKX1yZXR1cm4tMT09bz9lOmUuc2xpY2UobysxKX0sZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG89W10scj1bXTtpZihlPT10KXJldHVybiAwO2lmKCFlLmxlbmd0aHx8IXQubGVuZ3RoKXJldHVybiBNYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCsxO24rKylvW25dPW47Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7clswXT1uKzE7Zm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspcltzKzFdPU1hdGgubWluKHJbc10rMSxvW3MrMV0rMSxvW3NdK051bWJlcihlW25dIT10W3NdKSk7Zm9yKHM9MDtzPG8ubGVuZ3RoO3MrKylvW3NdPXJbc119cmV0dXJuIHJbdC5sZW5ndGhdfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZT17fSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc1ByZXN0bz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJQcmVzdG9cIil9LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVHJpZGVudD1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJUcmlkZW50XCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJNU0lFXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiRWRnZVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNXZWJLaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZShcIldlYktpdFwiKSYmIWdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzRWRnZSgpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0dlY2tvPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkdlY2tvXCIpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNXZWJLaXQoKSYmIWdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVHJpZGVudCgpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNFZGdlKCl9LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmdldFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7aWYoZSl7ZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXMoZSk7dmFyIHQsbz1nb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5nZXRFbmdpbmVUdXBsZV8oZSk7aWYobylyZXR1cm5cIkdlY2tvXCI9PW9bMF0/Z29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0VmVyc2lvbkZvcktleV8oZSxcIkZpcmVmb3hcIik6b1sxXTtpZigoZT1lWzBdKSYmKHQ9ZVsyXSkmJih0PS9UcmlkZW50XFwvKFteXFxzO10rKS8uZXhlYyh0KSkpcmV0dXJuIHRbMV19cmV0dXJuXCJcIn0sZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0RW5naW5lVHVwbGVfPWZ1bmN0aW9uKGUpe2lmKCFnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2UoKSlyZXR1cm4gZVsxXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG89ZVt0XTtpZihcIkVkZ2VcIj09b1swXSlyZXR1cm4gb319LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVmVyc2lvbk9ySGlnaGVyPWZ1bmN0aW9uKGUpe3JldHVybiAwPD1nb29nLnN0cmluZy5jb21wYXJlVmVyc2lvbnMoZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0VmVyc2lvbigpLGUpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5nZXRWZXJzaW9uRm9yS2V5Xz1mdW5jdGlvbihlLHQpe3JldHVybihlPWdvb2cuYXJyYXkuZmluZChlLChmdW5jdGlvbihlKXtyZXR1cm4gdD09ZVswXX0pKSkmJmVbMV18fFwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm09e30sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0FuZHJvaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiQW5kcm9pZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwb2Q9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBvZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwaG9uZT1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGhvbmVcIikmJiFnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUG9kXCIpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBhZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBhZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lvcz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBob25lKCl8fGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJcGFkKCl8fGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJcG9kKCl9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNNYWNpbnRvc2g9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTWFjaW50b3NoXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzTGludXg9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTGludXhcIil9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNXaW5kb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIldpbmRvd3NcIil9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNDaHJvbWVPUz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDck9TXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lY2FzdD1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDcktleVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0thaU9TPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoXCJLYWlPU1wiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0dvMlBob25lPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoXCJHQUZQXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmdldFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCksdD1cIlwiO3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzV2luZG93cygpP3Q9KGU9KHQ9L1dpbmRvd3MgKD86TlR8UGhvbmUpIChbMC05Ll0rKS8pLmV4ZWMoZSkpP2VbMV06XCIwLjBcIjpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSW9zKCk/dD0oZT0odD0vKD86aVBob25lfGlQb2R8aVBhZHxDUFUpXFxzK09TXFxzKyhcXFMrKS8pLmV4ZWMoZSkpJiZlWzFdLnJlcGxhY2UoL18vZyxcIi5cIik6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc01hY2ludG9zaCgpP3Q9KGU9KHQ9L01hYyBPUyBYIChbMC05Xy5dKykvKS5leGVjKGUpKT9lWzFdLnJlcGxhY2UoL18vZyxcIi5cIik6XCIxMFwiOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNLYWlPUygpP3Q9KGU9KHQ9Lyg/OkthaU9TKVxcLyhcXFMrKS9pKS5leGVjKGUpKSYmZVsxXTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQW5kcm9pZCgpP3Q9KGU9KHQ9L0FuZHJvaWRcXHMrKFteXFwpO10rKShcXCl8OykvKS5leGVjKGUpKSYmZVsxXTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lT1MoKSYmKHQ9KGU9KHQ9Lyg/OkNyT1NcXHMrKD86aTY4Nnx4ODZfNjQpXFxzKyhbMC05Ll0rKSkvKS5leGVjKGUpKSYmZVsxXSksdHx8XCJcIn0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc1ZlcnNpb25PckhpZ2hlcj1mdW5jdGlvbihlKXtyZXR1cm4gMDw9Z29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zKGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uZ2V0VmVyc2lvbigpLGUpfSxnb29nLnJlZmxlY3Q9e30sZ29vZy5yZWZsZWN0Lm9iamVjdD1mdW5jdGlvbihlLHQpe3JldHVybiB0fSxnb29nLnJlZmxlY3Qub2JqZWN0UHJvcGVydHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX0sZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZVtcIiBcIl0oZSksZX0sZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZVtcIiBcIl09Z29vZy5udWxsRnVuY3Rpb24sZ29vZy5yZWZsZWN0LmNhbkFjY2Vzc1Byb3BlcnR5PWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiBnb29nLnJlZmxlY3Quc2lua1ZhbHVlKGVbdF0pLCEwfWNhdGNoKGUpe31yZXR1cm4hMX0sZ29vZy5yZWZsZWN0LmNhY2hlPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiByPXI/cih0KTp0LE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpP2Vbcl06ZVtyXT1vKHQpfSxnb29nLnVzZXJBZ2VudD17fSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSUU9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX0VER0U9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX0dFQ0tPPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9XRUJLSVQ9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX01PQklMRV9XRUJLSVQ9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX09QRVJBPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9BTllfVkVSU0lPTj0hMSxnb29nLnVzZXJBZ2VudC5CUk9XU0VSX0tOT1dOXz1nb29nLnVzZXJBZ2VudC5BU1NVTUVfSUV8fGdvb2cudXNlckFnZW50LkFTU1VNRV9FREdFfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfR0VDS098fGdvb2cudXNlckFnZW50LkFTU1VNRV9NT0JJTEVfV0VCS0lUfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfV0VCS0lUfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfT1BFUkEsZ29vZy51c2VyQWdlbnQuZ2V0VXNlckFnZW50U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnQoKX0sZ29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5nbG9iYWwubmF2aWdhdG9yfHxudWxsfSxnb29nLnVzZXJBZ2VudC5nZXROYXZpZ2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQoKX0sZ29vZy51c2VyQWdlbnQuT1BFUkE9Z29vZy51c2VyQWdlbnQuQlJPV1NFUl9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX09QRVJBOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhKCksZ29vZy51c2VyQWdlbnQuSUU9Z29vZy51c2VyQWdlbnQuQlJPV1NFUl9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lFOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFKCksZ29vZy51c2VyQWdlbnQuRURHRT1nb29nLnVzZXJBZ2VudC5CUk9XU0VSX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfRURHRTpnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2UoKSxnb29nLnVzZXJBZ2VudC5FREdFX09SX0lFPWdvb2cudXNlckFnZW50LkVER0V8fGdvb2cudXNlckFnZW50LklFLGdvb2cudXNlckFnZW50LkdFQ0tPPWdvb2cudXNlckFnZW50LkJST1dTRVJfS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9HRUNLTzpnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0dlY2tvKCksZ29vZy51c2VyQWdlbnQuV0VCS0lUPWdvb2cudXNlckFnZW50LkJST1dTRVJfS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9XRUJLSVR8fGdvb2cudXNlckFnZW50LkFTU1VNRV9NT0JJTEVfV0VCS0lUOmdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzV2ViS2l0KCksZ29vZy51c2VyQWdlbnQuaXNNb2JpbGVfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cudXNlckFnZW50LldFQktJVCYmZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTW9iaWxlXCIpfSxnb29nLnVzZXJBZ2VudC5NT0JJTEU9Z29vZy51c2VyQWdlbnQuQVNTVU1FX01PQklMRV9XRUJLSVR8fGdvb2cudXNlckFnZW50LmlzTW9iaWxlXygpLGdvb2cudXNlckFnZW50LlNBRkFSST1nb29nLnVzZXJBZ2VudC5XRUJLSVQsZ29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lUGxhdGZvcm1fPWZ1bmN0aW9uKCl7dmFyIGU9Z29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQoKTtyZXR1cm4gZSYmZS5wbGF0Zm9ybXx8XCJcIn0sZ29vZy51c2VyQWdlbnQuUExBVEZPUk09Z29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lUGxhdGZvcm1fKCksZ29vZy51c2VyQWdlbnQuQVNTVU1FX01BQz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfV0lORE9XUz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfTElOVVg9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX1gxMT0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5EUk9JRD0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBIT05FPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9JUEFEPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9JUE9EPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9LQUlPUz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfR08yUEhPTkU9ITEsZ29vZy51c2VyQWdlbnQuUExBVEZPUk1fS05PV05fPWdvb2cudXNlckFnZW50LkFTU1VNRV9NQUN8fGdvb2cudXNlckFnZW50LkFTU1VNRV9XSU5ET1dTfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfTElOVVh8fGdvb2cudXNlckFnZW50LkFTU1VNRV9YMTF8fGdvb2cudXNlckFnZW50LkFTU1VNRV9BTkRST0lEfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBIT05FfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBBRHx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQT0QsZ29vZy51c2VyQWdlbnQuTUFDPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfTUFDOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNNYWNpbnRvc2goKSxnb29nLnVzZXJBZ2VudC5XSU5ET1dTPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfV0lORE9XUzpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzV2luZG93cygpLGdvb2cudXNlckFnZW50LmlzTGVnYWN5TGludXhfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNMaW51eCgpfHxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lT1MoKX0sZ29vZy51c2VyQWdlbnQuTElOVVg9Z29vZy51c2VyQWdlbnQuUExBVEZPUk1fS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9MSU5VWDpnb29nLnVzZXJBZ2VudC5pc0xlZ2FjeUxpbnV4XygpLGdvb2cudXNlckFnZW50LmlzWDExXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cudXNlckFnZW50LmdldE5hdmlnYXRvclR5cGVkKCk7cmV0dXJuISFlJiZnb29nLnN0cmluZy5jb250YWlucyhlLmFwcFZlcnNpb258fFwiXCIsXCJYMTFcIil9LGdvb2cudXNlckFnZW50LlgxMT1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX1gxMTpnb29nLnVzZXJBZ2VudC5pc1gxMV8oKSxnb29nLnVzZXJBZ2VudC5BTkRST0lEPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5EUk9JRDpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQW5kcm9pZCgpLGdvb2cudXNlckFnZW50LklQSE9ORT1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQSE9ORTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBob25lKCksZ29vZy51c2VyQWdlbnQuSVBBRD1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQQUQ6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQoKSxnb29nLnVzZXJBZ2VudC5JUE9EPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBPRDpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBvZCgpLGdvb2cudXNlckFnZW50LklPUz1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQSE9ORXx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQQUR8fGdvb2cudXNlckFnZW50LkFTU1VNRV9JUE9EOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJb3MoKSxnb29nLnVzZXJBZ2VudC5LQUlPUz1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0tBSU9TOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNLYWlPUygpLGdvb2cudXNlckFnZW50LkdPMlBIT05FPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfR08yUEhPTkU6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0dvMlBob25lKCksZ29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lVmVyc2lvbl89ZnVuY3Rpb24oKXt2YXIgZT1cIlwiLHQ9Z29vZy51c2VyQWdlbnQuZ2V0VmVyc2lvblJlZ2V4UmVzdWx0XygpO3JldHVybiB0JiYoZT10P3RbMV06XCJcIiksZ29vZy51c2VyQWdlbnQuSUUmJm51bGwhPSh0PWdvb2cudXNlckFnZW50LmdldERvY3VtZW50TW9kZV8oKSkmJnQ+cGFyc2VGbG9hdChlKT9TdHJpbmcodCk6ZX0sZ29vZy51c2VyQWdlbnQuZ2V0VmVyc2lvblJlZ2V4UmVzdWx0Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cudXNlckFnZW50LmdldFVzZXJBZ2VudFN0cmluZygpO3JldHVybiBnb29nLnVzZXJBZ2VudC5HRUNLTz8vcnY6KFteXFwpO10rKShcXCl8OykvLmV4ZWMoZSk6Z29vZy51c2VyQWdlbnQuRURHRT8vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGUpOmdvb2cudXNlckFnZW50LklFPy9cXGIoPzpNU0lFfHJ2KVs6IF0oW15cXCk7XSspKFxcKXw7KS8uZXhlYyhlKTpnb29nLnVzZXJBZ2VudC5XRUJLSVQ/L1dlYktpdFxcLyhcXFMrKS8uZXhlYyhlKTpnb29nLnVzZXJBZ2VudC5PUEVSQT8vKD86VmVyc2lvbilbIFxcL10/KFxcUyspLy5leGVjKGUpOnZvaWQgMH0sZ29vZy51c2VyQWdlbnQuZ2V0RG9jdW1lbnRNb2RlXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBlP2UuZG9jdW1lbnRNb2RlOnZvaWQgMH0sZ29vZy51c2VyQWdlbnQuVkVSU0lPTj1nb29nLnVzZXJBZ2VudC5kZXRlcm1pbmVWZXJzaW9uXygpLGdvb2cudXNlckFnZW50LmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zKGUsdCl9LGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyQ2FjaGVfPXt9LGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5ZX1ZFUlNJT058fGdvb2cucmVmbGVjdC5jYWNoZShnb29nLnVzZXJBZ2VudC5pc1ZlcnNpb25PckhpZ2hlckNhY2hlXyxlLChmdW5jdGlvbigpe3JldHVybiAwPD1nb29nLnN0cmluZy5jb21wYXJlVmVyc2lvbnMoZ29vZy51c2VyQWdlbnQuVkVSU0lPTixlKX0pKX0sZ29vZy51c2VyQWdlbnQuaXNWZXJzaW9uPWdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyLGdvb2cudXNlckFnZW50LmlzRG9jdW1lbnRNb2RlT3JIaWdoZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIE51bWJlcihnb29nLnVzZXJBZ2VudC5ET0NVTUVOVF9NT0RFKT49ZX0sZ29vZy51c2VyQWdlbnQuaXNEb2N1bWVudE1vZGU9Z29vZy51c2VyQWdlbnQuaXNEb2N1bWVudE1vZGVPckhpZ2hlcixnb29nLnVzZXJBZ2VudC5ET0NVTUVOVF9NT0RFPWZ1bmN0aW9uKCl7aWYoZ29vZy5nbG9iYWwuZG9jdW1lbnQmJmdvb2cudXNlckFnZW50LklFKXJldHVybiBnb29nLnVzZXJBZ2VudC5nZXREb2N1bWVudE1vZGVfKCl9KCksZ29vZy51c2VyQWdlbnQucHJvZHVjdD17fSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9GSVJFRk9YPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQSE9ORT0hMSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9JUEFEPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0FORFJPSUQ9ITEsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfQ0hST01FPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSST0hMSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fPWdvb2cudXNlckFnZW50LkFTU1VNRV9JRXx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0VER0V8fGdvb2cudXNlckFnZW50LkFTU1VNRV9PUEVSQXx8Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfRklSRUZPWHx8Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfSVBIT05FfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9JUEFEfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9BTkRST0lEfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9DSFJPTUV8fGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSSSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0Lk9QRVJBPWdvb2cudXNlckFnZW50Lk9QRVJBLGdvb2cudXNlckFnZW50LnByb2R1Y3QuSUU9Z29vZy51c2VyQWdlbnQuSUUsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5FREdFPWdvb2cudXNlckFnZW50LkVER0UsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5GSVJFRk9YPWdvb2cudXNlckFnZW50LnByb2R1Y3QuUFJPRFVDVF9LTk9XTl8/Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfRklSRUZPWDpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94KCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc0lwaG9uZU9ySXBvZF89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwaG9uZSgpfHxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBvZCgpfSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LklQSE9ORT1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQSE9ORTpnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzSXBob25lT3JJcG9kXygpLGdvb2cudXNlckFnZW50LnByb2R1Y3QuSVBBRD1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQQUQ6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQoKSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFORFJPSUQ9Z29vZy51c2VyQWdlbnQucHJvZHVjdC5QUk9EVUNUX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9BTkRST0lEOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0FuZHJvaWRCcm93c2VyKCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5DSFJPTUU9Z29vZy51c2VyQWdlbnQucHJvZHVjdC5QUk9EVUNUX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9DSFJPTUU6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lKCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1NhZmFyaURlc2t0b3BfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc1NhZmFyaSgpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lvcygpfSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSST1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSSTpnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzU2FmYXJpRGVza3RvcF8oKSxnb29nLmNyeXB0LmJhc2U2ND17fSxnb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl89XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLGdvb2cuY3J5cHQuYmFzZTY0LkVOQ09ERURfVkFMUz1nb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl8rXCIrLz1cIixnb29nLmNyeXB0LmJhc2U2NC5FTkNPREVEX1ZBTFNfV0VCU0FGRT1nb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl8rXCItXy5cIixnb29nLmNyeXB0LmJhc2U2NC5BbHBoYWJldD17REVGQVVMVDowLE5PX1BBRERJTkc6MSxXRUJTQUZFOjIsV0VCU0FGRV9ET1RfUEFERElORzozLFdFQlNBRkVfTk9fUEFERElORzo0fSxnb29nLmNyeXB0LmJhc2U2NC5wYWRkaW5nQ2hhcnNfPVwiPS5cIixnb29nLmNyeXB0LmJhc2U2NC5pc1BhZGRpbmdfPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhnb29nLmNyeXB0LmJhc2U2NC5wYWRkaW5nQ2hhcnNfLGUpfSxnb29nLmNyeXB0LmJhc2U2NC5ieXRlVG9DaGFyTWFwc189e307Z29vZy5jcnlwdC5iYXNlNjQuY2hhclRvQnl0ZU1hcF89bnVsbCxnb29nLmNyeXB0LmJhc2U2NC5BU1NVTUVfTkFUSVZFX1NVUFBPUlRfPWdvb2cudXNlckFnZW50LkdFQ0tPfHxnb29nLnVzZXJBZ2VudC5XRUJLSVQmJiFnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSSXx8Z29vZy51c2VyQWdlbnQuT1BFUkEsZ29vZy5jcnlwdC5iYXNlNjQuSEFTX05BVElWRV9FTkNPREVfPWdvb2cuY3J5cHQuYmFzZTY0LkFTU1VNRV9OQVRJVkVfU1VQUE9SVF98fFwiZnVuY3Rpb25cIj09dHlwZW9mIGdvb2cuZ2xvYmFsLmJ0b2EsZ29vZy5jcnlwdC5iYXNlNjQuSEFTX05BVElWRV9ERUNPREVfPWdvb2cuY3J5cHQuYmFzZTY0LkFTU1VNRV9OQVRJVkVfU1VQUE9SVF98fCFnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSSSYmIWdvb2cudXNlckFnZW50LklFJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBnb29nLmdsb2JhbC5hdG9iLGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZUJ5dGVBcnJheT1mdW5jdGlvbihlLHQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5pc0FycmF5TGlrZShlKSxcImVuY29kZUJ5dGVBcnJheSB0YWtlcyBhbiBhcnJheSBhcyBhIHBhcmFtZXRlclwiKSx2b2lkIDA9PT10JiYodD1nb29nLmNyeXB0LmJhc2U2NC5BbHBoYWJldC5ERUZBVUxUKSxnb29nLmNyeXB0LmJhc2U2NC5pbml0XygpLHQ9Z29vZy5jcnlwdC5iYXNlNjQuYnl0ZVRvQ2hhck1hcHNfW3RdO2Zvcih2YXIgbz1bXSxyPTA7cjxlLmxlbmd0aDtyKz0zKXt2YXIgbj1lW3JdLHM9cisxPGUubGVuZ3RoLGk9cz9lW3IrMV06MCxhPXIrMjxlLmxlbmd0aCxnPWE/ZVtyKzJdOjAsbD1uPj4yO249KDMmbik8PDR8aT4+NCxpPSgxNSZpKTw8MnxnPj42LGcmPTYzLGF8fChnPTY0LHN8fChpPTY0KSksby5wdXNoKHRbbF0sdFtuXSx0W2ldfHxcIlwiLHRbZ118fFwiXCIpfXJldHVybiBvLmpvaW4oXCJcIil9LGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZVN0cmluZz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmNyeXB0LmJhc2U2NC5IQVNfTkFUSVZFX0VOQ09ERV8mJiF0P2dvb2cuZ2xvYmFsLmJ0b2EoZSk6Z29vZy5jcnlwdC5iYXNlNjQuZW5jb2RlQnl0ZUFycmF5KGdvb2cuY3J5cHQuc3RyaW5nVG9CeXRlQXJyYXkoZSksdCl9LGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZz1mdW5jdGlvbihlLHQpe2lmKGdvb2cuY3J5cHQuYmFzZTY0LkhBU19OQVRJVkVfREVDT0RFXyYmIXQpcmV0dXJuIGdvb2cuZ2xvYmFsLmF0b2IoZSk7dmFyIG89XCJcIjtyZXR1cm4gZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nSW50ZXJuYWxfKGUsKGZ1bmN0aW9uKGUpe28rPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSksb30sZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nVG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbz1bXTtyZXR1cm4gZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nSW50ZXJuYWxfKGUsKGZ1bmN0aW9uKGUpe28ucHVzaChlKX0pKSxvfSxnb29nLmNyeXB0LmJhc2U2NC5kZWNvZGVTdHJpbmdUb1VpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy51c2VyQWdlbnQuSUV8fGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyKFwiMTBcIiksXCJCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzXCIpO3ZhciB0PWUubGVuZ3RoLG89Myp0LzQ7byUzP289TWF0aC5mbG9vcihvKTpnb29nLmNyeXB0LmJhc2U2NC5pc1BhZGRpbmdfKGVbdC0xXSkmJihvPWdvb2cuY3J5cHQuYmFzZTY0LmlzUGFkZGluZ18oZVt0LTJdKT9vLTI6by0xKTt2YXIgcj1uZXcgVWludDhBcnJheShvKSxuPTA7cmV0dXJuIGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ0ludGVybmFsXyhlLChmdW5jdGlvbihlKXtyW24rK109ZX0pKSxyLnN1YmFycmF5KDAsbil9LGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ0ludGVybmFsXz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8odCl7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocisrKSxuPWdvb2cuY3J5cHQuYmFzZTY0LmNoYXJUb0J5dGVNYXBfW29dO2lmKG51bGwhPW4pcmV0dXJuIG47aWYoIWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2UobykpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitvKX1yZXR1cm4gdH1nb29nLmNyeXB0LmJhc2U2NC5pbml0XygpO2Zvcih2YXIgcj0wOzspe3ZhciBuPW8oLTEpLHM9bygwKSxpPW8oNjQpLGE9byg2NCk7aWYoNjQ9PT1hJiYtMT09PW4pYnJlYWs7dChuPDwyfHM+PjQpLDY0IT1pJiYodChzPDw0JjI0MHxpPj4yKSw2NCE9YSYmdChpPDw2JjE5MnxhKSl9fSxnb29nLmNyeXB0LmJhc2U2NC5pbml0Xz1mdW5jdGlvbigpe2lmKCFnb29nLmNyeXB0LmJhc2U2NC5jaGFyVG9CeXRlTWFwXyl7Z29vZy5jcnlwdC5iYXNlNjQuY2hhclRvQnl0ZU1hcF89e307Zm9yKHZhciBlPWdvb2cuY3J5cHQuYmFzZTY0LkRFRkFVTFRfQUxQSEFCRVRfQ09NTU9OXy5zcGxpdChcIlwiKSx0PVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxvPTA7NT5vO28rKyl7dmFyIHI9ZS5jb25jYXQodFtvXS5zcGxpdChcIlwiKSk7Z29vZy5jcnlwdC5iYXNlNjQuYnl0ZVRvQ2hhck1hcHNfW29dPXI7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBzPXJbbl0saT1nb29nLmNyeXB0LmJhc2U2NC5jaGFyVG9CeXRlTWFwX1tzXTt2b2lkIDA9PT1pP2dvb2cuY3J5cHQuYmFzZTY0LmNoYXJUb0J5dGVNYXBfW3NdPW46Z29vZy5hc3NlcnRzLmFzc2VydChpPT09bil9fX19LGpzcGIudXRpbHM9e30sanNwYi51dGlscy5zcGxpdDY0TG93PTAsanNwYi51dGlscy5zcGxpdDY0SGlnaD0wLGpzcGIudXRpbHMuc3BsaXRVaW50NjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT4+PjA7ZT1NYXRoLmZsb29yKChlLXQpL2pzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMik+Pj4wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz10LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9ZX0sanNwYi51dGlscy5zcGxpdEludDY0PWZ1bmN0aW9uKGUpe3ZhciB0PTA+ZSxvPShlPU1hdGguYWJzKGUpKT4+PjA7ZT1NYXRoLmZsb29yKChlLW8pL2pzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksZT4+Pj0wLHQmJihlPX5lPj4+MCw0Mjk0OTY3Mjk1PChvPTErKH5vPj4+MCkpJiYobz0wLDQyOTQ5NjcyOTU8KytlJiYoZT0wKSkpLGpzcGIudXRpbHMuc3BsaXQ2NExvdz1vLGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9ZX0sanNwYi51dGlscy5zcGxpdFppZ3phZzY0PWZ1bmN0aW9uKGUpe3ZhciB0PTA+ZTtlPTIqTWF0aC5hYnMoZSksanNwYi51dGlscy5zcGxpdFVpbnQ2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3QmJigwPT1lPzA9PW8/bz1lPTQyOTQ5NjcyOTU6KG8tLSxlPTQyOTQ5NjcyOTUpOmUtLSksanNwYi51dGlscy5zcGxpdDY0TG93PWUsanNwYi51dGlscy5zcGxpdDY0SGlnaD1vfSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQzMj1mdW5jdGlvbihlKXt2YXIgdD0wPmU/MTowO2lmKDA9PT0oZT10Py1lOmUpKTA8MS9lPyhqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PTApOihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PTIxNDc0ODM2NDgpO2Vsc2UgaWYoaXNOYU4oZSkpanNwYi51dGlscy5zcGxpdDY0SGlnaD0wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz0yMTQ3NDgzNjQ3O2Vsc2UgaWYoZT5qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDMyX01BWClqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PSh0PDwzMXwyMTM5MDk1MDQwKT4+PjA7ZWxzZSBpZihlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUlOKWU9TWF0aC5yb3VuZChlL01hdGgucG93KDIsLTE0OSkpLGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9MCxqc3BiLnV0aWxzLnNwbGl0NjRMb3c9KHQ8PDMxfGUpPj4+MDtlbHNle3ZhciBvPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpO2UqPU1hdGgucG93KDIsLW8pLDE2Nzc3MjE2PD0oZT1NYXRoLnJvdW5kKGUqanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIzKSkmJisrbyxqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PSh0PDwzMXxvKzEyNzw8MjN8ODM4ODYwNyZlKT4+PjB9fSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQ2ND1mdW5jdGlvbihlKXt2YXIgdD0wPmU/MTowO2lmKDA9PT0oZT10Py1lOmUpKWpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9MDwxL2U/MDoyMTQ3NDgzNjQ4LGpzcGIudXRpbHMuc3BsaXQ2NExvdz0wO2Vsc2UgaWYoaXNOYU4oZSkpanNwYi51dGlscy5zcGxpdDY0SGlnaD0yMTQ3NDgzNjQ3LGpzcGIudXRpbHMuc3BsaXQ2NExvdz00Mjk0OTY3Mjk1O2Vsc2UgaWYoZT5qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01BWClqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPSh0PDwzMXwyMTQ2NDM1MDcyKT4+PjAsanNwYi51dGlscy5zcGxpdDY0TG93PTA7ZWxzZSBpZihlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUlOKXt2YXIgbz1lL01hdGgucG93KDIsLTEwNzQpO2U9by9qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIsanNwYi51dGlscy5zcGxpdDY0SGlnaD0odDw8MzF8ZSk+Pj4wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz1vPj4+MH1lbHNle3ZhciByPTA7aWYoMjw9KG89ZSkpZm9yKDsyPD1vJiYxMDIzPnI7KXIrKyxvLz0yO2Vsc2UgZm9yKDsxPm8mJi0xMDIyPHI7KW8qPTIsci0tO2U9KG89ZSpNYXRoLnBvdygyLC1yKSkqanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIwJjEwNDg1NzUsbz1vKmpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT181Mj4+PjAsanNwYi51dGlscy5zcGxpdDY0SGlnaD0odDw8MzF8cisxMDIzPDwyMHxlKT4+PjAsanNwYi51dGlscy5zcGxpdDY0TG93PW99fSxqc3BiLnV0aWxzLnNwbGl0SGFzaDY0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgwKSxvPWUuY2hhckNvZGVBdCgxKSxyPWUuY2hhckNvZGVBdCgyKSxuPWUuY2hhckNvZGVBdCgzKSxzPWUuY2hhckNvZGVBdCg0KSxpPWUuY2hhckNvZGVBdCg1KSxhPWUuY2hhckNvZGVBdCg2KTtlPWUuY2hhckNvZGVBdCg3KSxqc3BiLnV0aWxzLnNwbGl0NjRMb3c9dCsobzw8OCkrKHI8PDE2KSsobjw8MjQpPj4+MCxqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPXMrKGk8PDgpKyhhPDwxNikrKGU8PDI0KT4+PjB9LGpzcGIudXRpbHMuam9pblVpbnQ2ND1mdW5jdGlvbihlLHQpe3JldHVybiB0KmpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMisoZT4+PjApfSxqc3BiLnV0aWxzLmpvaW5JbnQ2ND1mdW5jdGlvbihlLHQpe3ZhciBvPTIxNDc0ODM2NDgmdDtyZXR1cm4gbyYmKHQ9fnQ+Pj4wLDA9PShlPTErfmU+Pj4wKSYmKHQ9dCsxPj4+MCkpLGU9anNwYi51dGlscy5qb2luVWludDY0KGUsdCksbz8tZTplfSxqc3BiLnV0aWxzLnRvWmlnemFnNjQ9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPXQ+PjMxO3JldHVybiBvKGU8PDFeciwodDw8MXxlPj4+MzEpXnIpfSxqc3BiLnV0aWxzLmpvaW5aaWd6YWc2ND1mdW5jdGlvbihlLHQpe3JldHVybiBqc3BiLnV0aWxzLmZyb21aaWd6YWc2NChlLHQsanNwYi51dGlscy5qb2luSW50NjQpfSxqc3BiLnV0aWxzLmZyb21aaWd6YWc2ND1mdW5jdGlvbihlLHQsbyl7dmFyIHI9LSgxJmUpO3JldHVybiBvKChlPj4+MXx0PDwzMSlecix0Pj4+MV5yKX0sanNwYi51dGlscy5qb2luRmxvYXQzMj1mdW5jdGlvbihlLHQpe3Q9MiooZT4+MzEpKzE7dmFyIG89ZT4+PjIzJjI1NTtyZXR1cm4gZSY9ODM4ODYwNywyNTU9PW8/ZT9OYU46MS8wKnQ6MD09bz90Kk1hdGgucG93KDIsLTE0OSkqZTp0Kk1hdGgucG93KDIsby0xNTApKihlK01hdGgucG93KDIsMjMpKX0sanNwYi51dGlscy5qb2luRmxvYXQ2ND1mdW5jdGlvbihlLHQpe3ZhciBvPTIqKHQ+PjMxKSsxLHI9dD4+PjIwJjIwNDc7cmV0dXJuIGU9anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKigxMDQ4NTc1JnQpK2UsMjA0Nz09cj9lP05hTjoxLzAqbzowPT1yP28qTWF0aC5wb3coMiwtMTA3NCkqZTpvKk1hdGgucG93KDIsci0xMDc1KSooZStqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNTIpfSxqc3BiLnV0aWxzLmpvaW5IYXNoNjQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4+MCYyNTUsZT4+PjgmMjU1LGU+Pj4xNiYyNTUsZT4+PjI0JjI1NSx0Pj4+MCYyNTUsdD4+PjgmMjU1LHQ+Pj4xNiYyNTUsdD4+PjI0JjI1NSl9LGpzcGIudXRpbHMuRElHSVRTPVwiMDEyMzQ1Njc4OWFiY2RlZlwiLnNwbGl0KFwiXCIpLGpzcGIudXRpbHMuWkVST19DSEFSX0NPREVfPTQ4LGpzcGIudXRpbHMuQV9DSEFSX0NPREVfPTk3LGpzcGIudXRpbHMuam9pblVuc2lnbmVkRGVjaW1hbFN0cmluZz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZT1lP1N0cmluZyhlKTpcIlwiLHQ/XCIwMDAwMDAwXCIuc2xpY2UoZS5sZW5ndGgpK2U6ZX1pZigyMDk3MTUxPj10KXJldHVyblwiXCIranNwYi51dGlscy5qb2luVWludDY0KGUsdCk7dmFyIHI9KGU+Pj4yNHx0PDw4KT4+PjAmMTY3NzcyMTU7cmV0dXJuIGU9KDE2Nzc3MjE1JmUpKzY3NzcyMTYqcis2NzEwNjU2Kih0PXQ+PjE2JjY1NTM1KSxyKz04MTQ3NDk3KnQsdCo9MiwxZTc8PWUmJihyKz1NYXRoLmZsb29yKGUvMWU3KSxlJT0xZTcpLDFlNzw9ciYmKHQrPU1hdGguZmxvb3Ioci8xZTcpLHIlPTFlNyksbyh0LDApK28ocix0KStvKGUsMSl9LGpzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbz0yMTQ3NDgzNjQ4JnQ7cmV0dXJuIG8mJih0PX50KygwPT0oZT0xK35lPj4+MCk/MTowKT4+PjApLGU9anNwYi51dGlscy5qb2luVW5zaWduZWREZWNpbWFsU3RyaW5nKGUsdCksbz9cIi1cIitlOmV9LGpzcGIudXRpbHMuaGFzaDY0VG9EZWNpbWFsU3RyaW5nPWZ1bmN0aW9uKGUsdCl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3JldHVybiB0P2pzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmcoZSxvKTpqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcoZSxvKX0sanNwYi51dGlscy5oYXNoNjRBcnJheVRvRGVjaW1hbFN0cmluZ3M9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89QXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKylvW3JdPWpzcGIudXRpbHMuaGFzaDY0VG9EZWNpbWFsU3RyaW5nKGVbcl0sdCk7cmV0dXJuIG99LGpzcGIudXRpbHMuZGVjaW1hbFN0cmluZ1RvSGFzaDY0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIG89MDs4Pm8mJigxIT09ZXx8MDx0KTtvKyspdD1lKnJbb10rdCxyW29dPTI1NSZ0LHQ+Pj49OH1nb29nLmFzc2VydHMuYXNzZXJ0KDA8ZS5sZW5ndGgpO3ZhciBvPSExO1wiLVwiPT09ZVswXSYmKG89ITAsZT1lLnNsaWNlKDEpKTtmb3IodmFyIHI9WzAsMCwwLDAsMCwwLDAsMF0sbj0wO248ZS5sZW5ndGg7bisrKXQoMTAsZS5jaGFyQ29kZUF0KG4pLWpzcGIudXRpbHMuWkVST19DSEFSX0NPREVfKTtyZXR1cm4gbyYmKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7OD5lO2UrKylyW2VdPTI1NSZ+cltlXX0oKSx0KDEsMSkpLGdvb2cuY3J5cHQuYnl0ZUFycmF5VG9TdHJpbmcocil9LGpzcGIudXRpbHMuc3BsaXREZWNpbWFsU3RyaW5nPWZ1bmN0aW9uKGUpe2pzcGIudXRpbHMuc3BsaXRIYXNoNjQoanNwYi51dGlscy5kZWNpbWFsU3RyaW5nVG9IYXNoNjQoZSkpfSxqc3BiLnV0aWxzLnRvSGV4RGlnaXRfPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDEwPmU/anNwYi51dGlscy5aRVJPX0NIQVJfQ09ERV8rZTpqc3BiLnV0aWxzLkFfQ0hBUl9DT0RFXy0xMCtlKX0sanNwYi51dGlscy5mcm9tSGV4Q2hhckNvZGVfPWZ1bmN0aW9uKGUpe3JldHVybiBlPj1qc3BiLnV0aWxzLkFfQ0hBUl9DT0RFXz9lLWpzcGIudXRpbHMuQV9DSEFSX0NPREVfKzEwOmUtanNwYi51dGlscy5aRVJPX0NIQVJfQ09ERV99LGpzcGIudXRpbHMuaGFzaDY0VG9IZXhTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkoMTgpO3RbMF09XCIwXCIsdFsxXT1cInhcIjtmb3IodmFyIG89MDs4Pm87bysrKXt2YXIgcj1lLmNoYXJDb2RlQXQoNy1vKTt0WzIqbysyXT1qc3BiLnV0aWxzLnRvSGV4RGlnaXRfKHI+PjQpLHRbMipvKzNdPWpzcGIudXRpbHMudG9IZXhEaWdpdF8oMTUmcil9cmV0dXJuIHQuam9pbihcIlwiKX0sanNwYi51dGlscy5oZXhTdHJpbmdUb0hhc2g2ND1mdW5jdGlvbihlKXtlPWUudG9Mb3dlckNhc2UoKSxnb29nLmFzc2VydHMuYXNzZXJ0KDE4PT1lLmxlbmd0aCksZ29vZy5hc3NlcnRzLmFzc2VydChcIjBcIj09ZVswXSksZ29vZy5hc3NlcnRzLmFzc2VydChcInhcIj09ZVsxXSk7Zm9yKHZhciB0PVwiXCIsbz0wOzg+bztvKyspe3ZhciByPWpzcGIudXRpbHMuZnJvbUhleENoYXJDb2RlXyhlLmNoYXJDb2RlQXQoMipvKzIpKSxuPWpzcGIudXRpbHMuZnJvbUhleENoYXJDb2RlXyhlLmNoYXJDb2RlQXQoMipvKzMpKTt0PVN0cmluZy5mcm9tQ2hhckNvZGUoMTYqcituKSt0fXJldHVybiB0fSxqc3BiLnV0aWxzLmhhc2g2NFRvTnVtYmVyPWZ1bmN0aW9uKGUsdCl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3JldHVybiB0P2pzcGIudXRpbHMuam9pbkludDY0KGUsbyk6anNwYi51dGlscy5qb2luVWludDY0KGUsbyl9LGpzcGIudXRpbHMubnVtYmVyVG9IYXNoNjQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSxqc3BiLnV0aWxzLmpvaW5IYXNoNjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLnV0aWxzLmNvdW50VmFyaW50cz1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPTAsbj10O248bztuKyspcis9ZVtuXT4+NztyZXR1cm4gby10LXJ9LGpzcGIudXRpbHMuY291bnRWYXJpbnRGaWVsZHM9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49MDtpZigxMjg+KHI9OCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCkpZm9yKDt0PG8mJmVbdCsrXT09cjspZm9yKG4rKzs7KXt2YXIgcz1lW3QrK107aWYoMD09KDEyOCZzKSlicmVha31lbHNlIGZvcig7dDxvOyl7Zm9yKHM9cjsxMjg8czspe2lmKGVbdF0hPSgxMjcmc3wxMjgpKXJldHVybiBuO3QrKyxzPj49N31pZihlW3QrK10hPXMpYnJlYWs7Zm9yKG4rKzswIT0oMTI4JihzPWVbdCsrXSkpOyk7fXJldHVybiBufSxqc3BiLnV0aWxzLmNvdW50Rml4ZWRGaWVsZHNfPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9MDtpZigxMjg+cilmb3IoO3Q8byYmZVt0KytdPT1yOylzKyssdCs9bjtlbHNlIGZvcig7dDxvOyl7Zm9yKHZhciBpPXI7MTI4PGk7KXtpZihlW3QrK10hPSgxMjcmaXwxMjgpKXJldHVybiBzO2k+Pj03fWlmKGVbdCsrXSE9aSlicmVhaztzKyssdCs9bn1yZXR1cm4gc30sanNwYi51dGlscy5jb3VudEZpeGVkMzJGaWVsZHM9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIGpzcGIudXRpbHMuY291bnRGaXhlZEZpZWxkc18oZSx0LG8sOCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIsNCl9LGpzcGIudXRpbHMuY291bnRGaXhlZDY0RmllbGRzPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBqc3BiLnV0aWxzLmNvdW50Rml4ZWRGaWVsZHNfKGUsdCxvLDgqcitqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0LDgpfSxqc3BiLnV0aWxzLmNvdW50RGVsaW1pdGVkRmllbGRzPWZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPTA7Zm9yKHI9OCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRDt0PG87KXtmb3IodmFyIHM9cjsxMjg8czspe2lmKGVbdCsrXSE9KDEyNyZzfDEyOCkpcmV0dXJuIG47cz4+PTd9aWYoZVt0KytdIT1zKWJyZWFrO24rKztmb3IodmFyIGk9MCxhPTE7aSs9KDEyNyYocz1lW3QrK10pKSphLGEqPTEyOCwwIT0oMTI4JnMpOyk7dCs9aX1yZXR1cm4gbn0sanNwYi51dGlscy5kZWJ1Z0J5dGVzVG9UZXh0Rm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PSdcIic7aWYoZSl7ZT1qc3BiLnV0aWxzLmJ5dGVTb3VyY2VUb1VpbnQ4QXJyYXkoZSk7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspdCs9XCJcXFxceFwiLDE2PmVbb10mJih0Kz1cIjBcIiksdCs9ZVtvXS50b1N0cmluZygxNil9cmV0dXJuIHQrJ1wiJ30sanNwYi51dGlscy5kZWJ1Z1NjYWxhclRvVGV4dEZvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9nb29nLnN0cmluZy5xdW90ZShlKTplLnRvU3RyaW5nKCl9LGpzcGIudXRpbHMuc3RyaW5nVG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKSxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWUuY2hhckNvZGVBdChvKTtpZigyNTU8cil0aHJvdyBFcnJvcihcIkNvbnZlcnNpb24gZXJyb3I6IHN0cmluZyBjb250YWlucyBjb2RlcG9pbnQgb3V0c2lkZSBvZiBieXRlIHJhbmdlXCIpO3Rbb109cn1yZXR1cm4gdH0sanNwYi51dGlscy5ieXRlU291cmNlVG9VaW50OEFycmF5PWZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yPT09VWludDhBcnJheT9lOmUuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcnx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJ1ZmZlciYmZS5jb25zdHJ1Y3Rvcj09PUJ1ZmZlcnx8ZS5jb25zdHJ1Y3Rvcj09PUFycmF5P25ldyBVaW50OEFycmF5KGUpOmUuY29uc3RydWN0b3I9PT1TdHJpbmc/Z29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nVG9VaW50OEFycmF5KGUpOihnb29nLmFzc2VydHMuZmFpbChcIlR5cGUgbm90IGNvbnZlcnRpYmxlIHRvIFVpbnQ4QXJyYXkuXCIpLG5ldyBVaW50OEFycmF5KDApKX0sanNwYi5CaW5hcnlEZWNvZGVyPWZ1bmN0aW9uKGUsdCxvKXt0aGlzLmJ5dGVzXz1udWxsLHRoaXMuY3Vyc29yXz10aGlzLmVuZF89dGhpcy5zdGFydF89MCx0aGlzLmVycm9yXz0hMSxlJiZ0aGlzLnNldEJsb2NrKGUsdCxvKX0sanNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfPVtdLGpzcGIuQmluYXJ5RGVjb2Rlci5hbGxvYz1mdW5jdGlvbihlLHQsbyl7aWYoanNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfLmxlbmd0aCl7dmFyIHI9anNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfLnBvcCgpO3JldHVybiBlJiZyLnNldEJsb2NrKGUsdCxvKSxyfXJldHVybiBuZXcganNwYi5CaW5hcnlEZWNvZGVyKGUsdCxvKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5mcmVlPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpLDEwMD5qc3BiLkJpbmFyeURlY29kZXIuaW5zdGFuY2VDYWNoZV8ubGVuZ3RoJiZqc3BiLkJpbmFyeURlY29kZXIuaW5zdGFuY2VDYWNoZV8ucHVzaCh0aGlzKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBqc3BiLkJpbmFyeURlY29kZXIuYWxsb2ModGhpcy5ieXRlc18sdGhpcy5zdGFydF8sdGhpcy5lbmRfLXRoaXMuc3RhcnRfKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYnl0ZXNfPW51bGwsdGhpcy5jdXJzb3JfPXRoaXMuZW5kXz10aGlzLnN0YXJ0Xz0wLHRoaXMuZXJyb3JfPSExfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ5dGVzX30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5zZXRCbG9jaz1mdW5jdGlvbihlLHQsbyl7dGhpcy5ieXRlc189anNwYi51dGlscy5ieXRlU291cmNlVG9VaW50OEFycmF5KGUpLHRoaXMuc3RhcnRfPXZvaWQgMCE9PXQ/dDowLHRoaXMuZW5kXz12b2lkIDAhPT1vP3RoaXMuc3RhcnRfK286dGhpcy5ieXRlc18ubGVuZ3RoLHRoaXMuY3Vyc29yXz10aGlzLnN0YXJ0X30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5nZXRFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnNldEVuZD1mdW5jdGlvbihlKXt0aGlzLmVuZF89ZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY3Vyc29yXz10aGlzLnN0YXJ0X30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJzb3JffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnNldEN1cnNvcj1mdW5jdGlvbihlKXt0aGlzLmN1cnNvcl89ZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMuY3Vyc29yXys9ZSxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5hdEVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnNvcl89PXRoaXMuZW5kX30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5wYXN0RW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3Vyc29yXz50aGlzLmVuZF99LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcl98fDA+dGhpcy5jdXJzb3JffHx0aGlzLmN1cnNvcl8+dGhpcy5lbmRffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTcGxpdFZhcmludDY0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xMjgsbz0wLHI9MCxuPTA7ND5uJiYxMjg8PXQ7bisrKW98PSgxMjcmKHQ9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKytdKSk8PDcqbjtpZigxMjg8PXQmJihvfD0oMTI3Jih0PXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysrXSkpPDwyOCxyfD0oMTI3JnQpPj40KSwxMjg8PXQpZm9yKG49MDs1Pm4mJjEyODw9dDtuKyspcnw9KDEyNyYodD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rK10pKTw8NypuKzM7aWYoMTI4PnQpcmV0dXJuIGUobz4+PjAscj4+PjApO2dvb2cuYXNzZXJ0cy5mYWlsKFwiRmFpbGVkIHRvIHJlYWQgdmFyaW50LCBlbmNvZGluZyBpcyBpbnZhbGlkLlwiKSx0aGlzLmVycm9yXz0hMH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NCgoZnVuY3Rpb24odCxvKXtyZXR1cm4ganNwYi51dGlscy5mcm9tWmlnemFnNjQodCxvLGUpfSkpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTcGxpdEZpeGVkNjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlc18sbz10aGlzLmN1cnNvcl87dGhpcy5jdXJzb3JfKz04O2Zvcih2YXIgcj0wLG49MCxzPW8rNztzPj1vO3MtLSlyPXI8PDh8dFtzXSxuPW48PDh8dFtzKzRdO3JldHVybiBlKHIsbil9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUuc2tpcFZhcmludD1mdW5jdGlvbigpe2Zvcig7MTI4JnRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yX107KXRoaXMuY3Vyc29yXysrO3RoaXMuY3Vyc29yXysrfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnVuc2tpcFZhcmludD1mdW5jdGlvbihlKXtmb3IoOzEyODxlOyl0aGlzLmN1cnNvcl8tLSxlPj4+PTc7dGhpcy5jdXJzb3JfLS19LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzXyx0PWVbdGhpcy5jdXJzb3JfKzBdLG89MTI3JnQ7cmV0dXJuIDEyOD50Pyh0aGlzLmN1cnNvcl8rPTEsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbyk6KG98PSgxMjcmKHQ9ZVt0aGlzLmN1cnNvcl8rMV0pKTw8NywxMjg+dD8odGhpcy5jdXJzb3JfKz0yLGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLG8pOihvfD0oMTI3Jih0PWVbdGhpcy5jdXJzb3JfKzJdKSk8PDE0LDEyOD50Pyh0aGlzLmN1cnNvcl8rPTMsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbyk6KG98PSgxMjcmKHQ9ZVt0aGlzLmN1cnNvcl8rM10pKTw8MjEsMTI4PnQ/KHRoaXMuY3Vyc29yXys9NCxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSxvKToob3w9KDE1Jih0PWVbdGhpcy5jdXJzb3JfKzRdKSk8PDI4LDEyOD50Pyh0aGlzLmN1cnNvcl8rPTUsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbz4+PjApOih0aGlzLmN1cnNvcl8rPTUsMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmZ29vZy5hc3NlcnRzLmFzc2VydCghMSksZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbykpKSkpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTaWduZWRWYXJpbnQzMj1qc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVbnNpZ25lZFZhcmludDMyLGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50MzJTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkVW5zaWduZWRWYXJpbnQzMigpLnRvU3RyaW5nKCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFNpZ25lZFZhcmludDMyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNpZ25lZFZhcmludDMyKCkudG9TdHJpbmcoKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7cmV0dXJuIGU+Pj4xXi0oMSZlKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVW5zaWduZWRWYXJpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFZhcmludDY0KGpzcGIudXRpbHMuam9pblVpbnQ2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTaWduZWRWYXJpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFZhcmludDY0KGpzcGIudXRpbHMuam9pbkludDY0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU2lnbmVkVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5TaWduZWREZWNpbWFsU3RyaW5nKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5aaWd6YWc2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0KGpzcGIudXRpbHMuam9pbkhhc2g2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludDY0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNwbGl0WmlnemFnVmFyaW50NjQoanNwYi51dGlscy5qb2luU2lnbmVkRGVjaW1hbFN0cmluZyl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVpbnQ4PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzBdO3JldHVybiB0aGlzLmN1cnNvcl8rPTEsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzBdLHQ9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzFdO3JldHVybiB0aGlzLmN1cnNvcl8rPTIsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksZTw8MHx0PDw4fSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMF0sdD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMV0sbz10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMl0scj10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rM107cmV0dXJuIHRoaXMuY3Vyc29yXys9NCxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSwoZTw8MHx0PDw4fG88PDE2fHI8PDI0KT4+PjB9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVpbnQ2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVpbnQzMigpLHQ9dGhpcy5yZWFkVWludDMyKCk7cmV0dXJuIGpzcGIudXRpbHMuam9pblVpbnQ2NChlLHQpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcoZSx0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyswXTtyZXR1cm4gdGhpcy5jdXJzb3JfKz0xLGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLGU8PDI0Pj4yNH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50MTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMF0sdD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMV07cmV0dXJuIHRoaXMuY3Vyc29yXys9Mixnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSwoZTw8MHx0PDw4KTw8MTY+PjE2fSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRJbnQzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyswXSx0PXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysxXSxvPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysyXSxyPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyszXTtyZXR1cm4gdGhpcy5jdXJzb3JfKz00LGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLGU8PDB8dDw8OHxvPDwxNnxyPDwyNH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50NjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5JbnQ2NChlLHQpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRJbnQ2NFN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVpbnQzMigpLHQ9dGhpcy5yZWFkVWludDMyKCk7cmV0dXJuIGpzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmcoZSx0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKTtyZXR1cm4ganNwYi51dGlscy5qb2luRmxvYXQzMihlLDApfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWREb3VibGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5GbG9hdDY0KGUsdCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZEJvb2w9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysrXX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRW51bT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlc18sbz10aGlzLmN1cnNvcl87ZT1vK2U7Zm9yKHZhciByPVtdLG49XCJcIjtvPGU7KXt2YXIgcz10W28rK107aWYoMTI4PnMpci5wdXNoKHMpO2Vsc2V7aWYoMTkyPnMpY29udGludWU7aWYoMjI0PnMpe3ZhciBpPXRbbysrXTtyLnB1c2goKDMxJnMpPDw2fDYzJmkpfWVsc2UgaWYoMjQwPnMpe2k9dFtvKytdO3ZhciBhPXRbbysrXTtyLnB1c2goKDE1JnMpPDwxMnwoNjMmaSk8PDZ8NjMmYSl9ZWxzZSAyNDg+cyYmKHM9KDcmcyk8PDE4fCg2MyYoaT10W28rK10pKTw8MTJ8KDYzJihhPXRbbysrXSkpPDw2fDYzJnRbbysrXSxzLT02NTUzNixyLnB1c2goNTUyOTYrKHM+PjEwJjEwMjMpLDU2MzIwKygxMDIzJnMpKSl9ODE5Mjw9ci5sZW5ndGgmJihuKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsciksci5sZW5ndGg9MCl9cmV0dXJuIG4rPWdvb2cuY3J5cHQuYnl0ZUFycmF5VG9TdHJpbmcociksdGhpcy5jdXJzb3JfPW8sbn0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU3RyaW5nV2l0aExlbmd0aD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVuc2lnbmVkVmFyaW50MzIoKTtyZXR1cm4gdGhpcy5yZWFkU3RyaW5nKGUpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRCeXRlcz1mdW5jdGlvbihlKXtpZigwPmV8fHRoaXMuY3Vyc29yXytlPnRoaXMuYnl0ZXNfLmxlbmd0aClyZXR1cm4gdGhpcy5lcnJvcl89ITAsZ29vZy5hc3NlcnRzLmZhaWwoXCJJbnZhbGlkIGJ5dGUgbGVuZ3RoIVwiKSxuZXcgVWludDhBcnJheSgwKTt2YXIgdD10aGlzLmJ5dGVzXy5zdWJhcnJheSh0aGlzLmN1cnNvcl8sdGhpcy5jdXJzb3JfK2UpO3JldHVybiB0aGlzLmN1cnNvcl8rPWUsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksdH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVmFyaW50SGFzaDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNwbGl0VmFyaW50NjQoanNwYi51dGlscy5qb2luSGFzaDY0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzXyx0PXRoaXMuY3Vyc29yXyxvPWVbdCswXSxyPWVbdCsxXSxuPWVbdCsyXSxzPWVbdCszXSxpPWVbdCs0XSxhPWVbdCs1XSxnPWVbdCs2XTtyZXR1cm4gZT1lW3QrN10sdGhpcy5jdXJzb3JfKz04LFN0cmluZy5mcm9tQ2hhckNvZGUobyxyLG4scyxpLGEsZyxlKX0sanNwYi5CaW5hcnlSZWFkZXI9ZnVuY3Rpb24oZSx0LG8pe3RoaXMuZGVjb2Rlcl89anNwYi5CaW5hcnlEZWNvZGVyLmFsbG9jKGUsdCxvKSx0aGlzLmZpZWxkQ3Vyc29yXz10aGlzLmRlY29kZXJfLmdldEN1cnNvcigpLHRoaXMubmV4dEZpZWxkXz1qc3BiLkJpbmFyeUNvbnN0YW50cy5JTlZBTElEX0ZJRUxEX05VTUJFUix0aGlzLm5leHRXaXJlVHlwZV89anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuSU5WQUxJRCx0aGlzLmVycm9yXz0hMSx0aGlzLnJlYWRDYWxsYmFja3NfPW51bGx9LGpzcGIuQmluYXJ5UmVhZGVyLmluc3RhbmNlQ2FjaGVfPVtdLGpzcGIuQmluYXJ5UmVhZGVyLmFsbG9jPWZ1bmN0aW9uKGUsdCxvKXtpZihqc3BiLkJpbmFyeVJlYWRlci5pbnN0YW5jZUNhY2hlXy5sZW5ndGgpe3ZhciByPWpzcGIuQmluYXJ5UmVhZGVyLmluc3RhbmNlQ2FjaGVfLnBvcCgpO3JldHVybiBlJiZyLmRlY29kZXJfLnNldEJsb2NrKGUsdCxvKSxyfXJldHVybiBuZXcganNwYi5CaW5hcnlSZWFkZXIoZSx0LG8pfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuYWxsb2M9anNwYi5CaW5hcnlSZWFkZXIuYWxsb2MsanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLmZyZWU9ZnVuY3Rpb24oKXt0aGlzLmRlY29kZXJfLmNsZWFyKCksdGhpcy5uZXh0RmllbGRfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLklOVkFMSURfRklFTERfTlVNQkVSLHRoaXMubmV4dFdpcmVUeXBlXz1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5JTlZBTElELHRoaXMuZXJyb3JfPSExLHRoaXMucmVhZENhbGxiYWNrc189bnVsbCwxMDA+anNwYi5CaW5hcnlSZWFkZXIuaW5zdGFuY2VDYWNoZV8ubGVuZ3RoJiZqc3BiLkJpbmFyeVJlYWRlci5pbnN0YW5jZUNhY2hlXy5wdXNoKHRoaXMpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWVsZEN1cnNvcl99LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY29kZXJfLmdldEJ1ZmZlcigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGROdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0RmllbGRffSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0V2lyZVR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0V2lyZVR5cGVffSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuaXNEZWxpbWl0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5pc0VuZEdyb3VwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcl98fHRoaXMuZGVjb2Rlcl8uZ2V0RXJyb3IoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNldEJsb2NrPWZ1bmN0aW9uKGUsdCxvKXt0aGlzLmRlY29kZXJfLnNldEJsb2NrKGUsdCxvKSx0aGlzLm5leHRGaWVsZF89anNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVIsdGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLklOVkFMSUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZGVjb2Rlcl8ucmVzZXQoKSx0aGlzLm5leHRGaWVsZF89anNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVIsdGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLklOVkFMSUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMuZGVjb2Rlcl8uYWR2YW5jZShlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLm5leHRGaWVsZD1mdW5jdGlvbigpe2lmKHRoaXMuZGVjb2Rlcl8uYXRFbmQoKSlyZXR1cm4hMTtpZih0aGlzLmdldEVycm9yKCkpcmV0dXJuIGdvb2cuYXNzZXJ0cy5mYWlsKFwiRGVjb2RlciBoaXQgYW4gZXJyb3JcIiksITE7dGhpcy5maWVsZEN1cnNvcl89dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKTt2YXIgZT10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCksdD1lPj4+MztyZXR1cm4oZSY9NykhPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQzMiYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEJiZlIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5TVEFSVF9HUk9VUCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQPyhnb29nLmFzc2VydHMuZmFpbChcIkludmFsaWQgd2lyZSB0eXBlOiAlcyAoYXQgcG9zaXRpb24gJXMpXCIsZSx0aGlzLmZpZWxkQ3Vyc29yXyksdGhpcy5lcnJvcl89ITAsITEpOih0aGlzLm5leHRGaWVsZF89dCx0aGlzLm5leHRXaXJlVHlwZV89ZSwhMCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS51bnNraXBIZWFkZXI9ZnVuY3Rpb24oKXt0aGlzLmRlY29kZXJfLnVuc2tpcFZhcmludCh0aGlzLm5leHRGaWVsZF88PDN8dGhpcy5uZXh0V2lyZVR5cGVfKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBNYXRjaGluZ0ZpZWxkcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubmV4dEZpZWxkXztmb3IodGhpcy51bnNraXBIZWFkZXIoKTt0aGlzLm5leHRGaWVsZCgpJiZ0aGlzLmdldEZpZWxkTnVtYmVyKCk9PWU7KXRoaXMuc2tpcEZpZWxkKCk7dGhpcy5kZWNvZGVyXy5hdEVuZCgpfHx0aGlzLnVuc2tpcEhlYWRlcigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuc2tpcFZhcmludEZpZWxkPWZ1bmN0aW9uKCl7dGhpcy5uZXh0V2lyZVR5cGVfIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQ/KGdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBWYXJpbnRGaWVsZFwiKSx0aGlzLnNraXBGaWVsZCgpKTp0aGlzLmRlY29kZXJfLnNraXBWYXJpbnQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBEZWxpbWl0ZWRGaWVsZD1mdW5jdGlvbigpe2lmKHRoaXMubmV4dFdpcmVUeXBlXyE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKWdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBEZWxpbWl0ZWRGaWVsZFwiKSx0aGlzLnNraXBGaWVsZCgpO2Vsc2V7dmFyIGU9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpO3RoaXMuZGVjb2Rlcl8uYWR2YW5jZShlKX19LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5za2lwRml4ZWQzMkZpZWxkPWZ1bmN0aW9uKCl7dGhpcy5uZXh0V2lyZVR5cGVfIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyPyhnb29nLmFzc2VydHMuZmFpbChcIkludmFsaWQgd2lyZSB0eXBlIGZvciBza2lwRml4ZWQzMkZpZWxkXCIpLHRoaXMuc2tpcEZpZWxkKCkpOnRoaXMuZGVjb2Rlcl8uYWR2YW5jZSg0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBGaXhlZDY0RmllbGQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRXaXJlVHlwZV8hPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQ/KGdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBGaXhlZDY0RmllbGRcIiksdGhpcy5za2lwRmllbGQoKSk6dGhpcy5kZWNvZGVyXy5hZHZhbmNlKDgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuc2tpcEdyb3VwPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMubmV4dEZpZWxkXzs7KXtpZighdGhpcy5uZXh0RmllbGQoKSl7Z29vZy5hc3NlcnRzLmZhaWwoXCJVbm1hdGNoZWQgc3RhcnQtZ3JvdXAgdGFnOiBzdHJlYW0gRU9GXCIpLHRoaXMuZXJyb3JfPSEwO2JyZWFrfWlmKHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQKXt0aGlzLm5leHRGaWVsZF8hPWUmJihnb29nLmFzc2VydHMuZmFpbChcIlVubWF0Y2hlZCBlbmQtZ3JvdXAgdGFnXCIpLHRoaXMuZXJyb3JfPSEwKTticmVha310aGlzLnNraXBGaWVsZCgpfX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBGaWVsZD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLm5leHRXaXJlVHlwZV8pe2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UOnRoaXMuc2tpcFZhcmludEZpZWxkKCk7YnJlYWs7Y2FzZSBqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0OnRoaXMuc2tpcEZpeGVkNjRGaWVsZCgpO2JyZWFrO2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEOnRoaXMuc2tpcERlbGltaXRlZEZpZWxkKCk7YnJlYWs7Y2FzZSBqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyOnRoaXMuc2tpcEZpeGVkMzJGaWVsZCgpO2JyZWFrO2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuU1RBUlRfR1JPVVA6dGhpcy5za2lwR3JvdXAoKTticmVhaztkZWZhdWx0Omdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIGVuY29kaW5nIGZvciBmaWVsZC5cIil9fSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVnaXN0ZXJSZWFkQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtudWxsPT09dGhpcy5yZWFkQ2FsbGJhY2tzXyYmKHRoaXMucmVhZENhbGxiYWNrc189e30pLGdvb2cuYXNzZXJ0cy5hc3NlcnQoIXRoaXMucmVhZENhbGxiYWNrc19bZV0pLHRoaXMucmVhZENhbGxiYWNrc19bZV09dH0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJ1blJlYWRDYWxsYmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT09dGhpcy5yZWFkQ2FsbGJhY2tzXyksZT10aGlzLnJlYWRDYWxsYmFja3NfW2VdLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZSksZSh0aGlzKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRBbnk9ZnVuY3Rpb24oZSl7dGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZpZWxkVHlwZVRvV2lyZVR5cGUoZSk7dmFyIHQ9anNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlO3N3aXRjaChlKXtjYXNlIHQuRE9VQkxFOnJldHVybiB0aGlzLnJlYWREb3VibGUoKTtjYXNlIHQuRkxPQVQ6cmV0dXJuIHRoaXMucmVhZEZsb2F0KCk7Y2FzZSB0LklOVDY0OnJldHVybiB0aGlzLnJlYWRJbnQ2NCgpO2Nhc2UgdC5VSU5UNjQ6cmV0dXJuIHRoaXMucmVhZFVpbnQ2NCgpO2Nhc2UgdC5JTlQzMjpyZXR1cm4gdGhpcy5yZWFkSW50MzIoKTtjYXNlIHQuRklYRUQ2NDpyZXR1cm4gdGhpcy5yZWFkRml4ZWQ2NCgpO2Nhc2UgdC5GSVhFRDMyOnJldHVybiB0aGlzLnJlYWRGaXhlZDMyKCk7Y2FzZSB0LkJPT0w6cmV0dXJuIHRoaXMucmVhZEJvb2woKTtjYXNlIHQuU1RSSU5HOnJldHVybiB0aGlzLnJlYWRTdHJpbmcoKTtjYXNlIHQuR1JPVVA6Z29vZy5hc3NlcnRzLmZhaWwoXCJHcm91cCBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gcmVhZEFueSgpXCIpO2Nhc2UgdC5NRVNTQUdFOmdvb2cuYXNzZXJ0cy5mYWlsKFwiTWVzc2FnZSBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gcmVhZEFueSgpXCIpO2Nhc2UgdC5CWVRFUzpyZXR1cm4gdGhpcy5yZWFkQnl0ZXMoKTtjYXNlIHQuVUlOVDMyOnJldHVybiB0aGlzLnJlYWRVaW50MzIoKTtjYXNlIHQuRU5VTTpyZXR1cm4gdGhpcy5yZWFkRW51bSgpO2Nhc2UgdC5TRklYRUQzMjpyZXR1cm4gdGhpcy5yZWFkU2ZpeGVkMzIoKTtjYXNlIHQuU0ZJWEVENjQ6cmV0dXJuIHRoaXMucmVhZFNmaXhlZDY0KCk7Y2FzZSB0LlNJTlQzMjpyZXR1cm4gdGhpcy5yZWFkU2ludDMyKCk7Y2FzZSB0LlNJTlQ2NDpyZXR1cm4gdGhpcy5yZWFkU2ludDY0KCk7Y2FzZSB0LkZIQVNINjQ6cmV0dXJuIHRoaXMucmVhZEZpeGVkSGFzaDY0KCk7Y2FzZSB0LlZIQVNINjQ6cmV0dXJuIHRoaXMucmVhZFZhcmludEhhc2g2NCgpO2RlZmF1bHQ6Z29vZy5hc3NlcnRzLmZhaWwoXCJJbnZhbGlkIGZpZWxkIHR5cGUgaW4gcmVhZEFueSgpXCIpfXJldHVybiAwfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZE1lc3NhZ2U9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgbz10aGlzLmRlY29kZXJfLmdldEVuZCgpLHI9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpO3I9dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKStyLHRoaXMuZGVjb2Rlcl8uc2V0RW5kKHIpLHQoZSx0aGlzKSx0aGlzLmRlY29kZXJfLnNldEN1cnNvcihyKSx0aGlzLmRlY29kZXJfLnNldEVuZChvKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRHcm91cD1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dEZpZWxkXz09ZSksbyh0LHRoaXMpLHRoaXMuZXJyb3JffHx0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkVORF9HUk9VUHx8KGdvb2cuYXNzZXJ0cy5mYWlsKFwiR3JvdXAgc3VibWVzc2FnZSBkaWQgbm90IGVuZCB3aXRoIGFuIEVORF9HUk9VUCB0YWdcIiksdGhpcy5lcnJvcl89ITApfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGREZWNvZGVyPWZ1bmN0aW9uKCl7Z29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCk7dmFyIGU9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpLHQ9dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKSxvPXQrZTtyZXR1cm4gZT1qc3BiLkJpbmFyeURlY29kZXIuYWxsb2ModGhpcy5kZWNvZGVyXy5nZXRCdWZmZXIoKSx0LGUpLHRoaXMuZGVjb2Rlcl8uc2V0Q3Vyc29yKG8pLGV9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50MzIoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRJbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRTaWduZWRWYXJpbnQzMlN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50NjRTdHJpbmcoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFVpbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyU3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50NjQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQzMj1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQ2ND1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQ2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkMzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQ2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNmaXhlZDMyPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyKSx0aGlzLmRlY29kZXJfLnJlYWRJbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNmaXhlZDMyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyKSx0aGlzLmRlY29kZXJfLnJlYWRJbnQzMigpLnRvU3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0U3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZGVjb2Rlcl8ucmVhZEZsb2F0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRG91YmxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmRlY29kZXJfLnJlYWREb3VibGUoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRCb29sPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLCEhdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEVudW09ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50NjQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgZT10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7cmV0dXJuIHRoaXMuZGVjb2Rlcl8ucmVhZFN0cmluZyhlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRCeXRlcz1mdW5jdGlvbigpe2dvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpO3ZhciBlPXRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50MzIoKTtyZXR1cm4gdGhpcy5kZWNvZGVyXy5yZWFkQnl0ZXMoZSl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkVmFyaW50SGFzaDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFZhcmludEhhc2g2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnRIYXNoNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50SGFzaDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRWYXJpbnQ2ND1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU3BsaXRWYXJpbnQ2NChlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRTcGxpdFZhcmludDY0KChmdW5jdGlvbih0LG8pe3JldHVybiBqc3BiLnV0aWxzLmZyb21aaWd6YWc2NCh0LG8sZSl9KSl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEZpeGVkSGFzaDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRGaXhlZDY0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5kZWNvZGVyXy5yZWFkU3BsaXRGaXhlZDY0KGUpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZpZWxkXz1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgdD10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7dD10aGlzLmRlY29kZXJfLmdldEN1cnNvcigpK3Q7Zm9yKHZhciBvPVtdO3RoaXMuZGVjb2Rlcl8uZ2V0Q3Vyc29yKCk8dDspby5wdXNoKGUuY2FsbCh0aGlzLmRlY29kZXJfKSk7cmV0dXJuIG99LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkSW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDMyKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRJbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50MzJTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRTaWduZWRWYXJpbnQ2NCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkSW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDY0U3RyaW5nKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50MzIpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFVpbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMlN0cmluZyl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQzMj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50MzIpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50NjQpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZpeGVkMzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQzMil9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkRml4ZWQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVWludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRVaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNmaXhlZDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRJbnQzMil9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkU2ZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkSW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZsb2F0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRGbG9hdCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkRG91YmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWREb3VibGUpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEJvb2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEJvb2wpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEVudW09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEVudW0pfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFZhcmludEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVmFyaW50SGFzaDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkRml4ZWRIYXNoNjQpfSxqc3BiLkJpbmFyeUVuY29kZXI9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlcl89W119LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmZmVyXy5sZW5ndGh9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5idWZmZXJfO3JldHVybiB0aGlzLmJ1ZmZlcl89W10sZX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0KXtmb3IoZ29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KHQ9PU1hdGguZmxvb3IodCkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9dCYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpOzA8dHx8MTI3PGU7KXRoaXMuYnVmZmVyXy5wdXNoKDEyNyZlfDEyOCksZT0oZT4+Pjd8dDw8MjUpPj4+MCx0Pj4+PTc7dGhpcy5idWZmZXJfLnB1c2goZSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTcGxpdEZpeGVkNjQ9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQodD09TWF0aC5mbG9vcih0KSksZ29vZy5hc3NlcnRzLmFzc2VydCgwPD1lJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksdGhpcy53cml0ZVVpbnQzMihlKSx0aGlzLndyaXRlVWludDMyKHQpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVW5zaWduZWRWYXJpbnQzMj1mdW5jdGlvbihlKXtmb3IoZ29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PWUmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKTsxMjc8ZTspdGhpcy5idWZmZXJfLnB1c2goMTI3JmV8MTI4KSxlPj4+PTc7dGhpcy5idWZmZXJfLnB1c2goZSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQzMj1mdW5jdGlvbihlKXtpZihnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLDA8PWUpdGhpcy53cml0ZVVuc2lnbmVkVmFyaW50MzIoZSk7ZWxzZXtmb3IodmFyIHQ9MDs5PnQ7dCsrKXRoaXMuYnVmZmVyXy5wdXNoKDEyNyZlfDEyOCksZT4+PTc7dGhpcy5idWZmZXJfLnB1c2goMSl9fSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVW5zaWduZWRWYXJpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjQpLGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSx0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSx0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMj1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLHRoaXMud3JpdGVVbnNpZ25lZFZhcmludDMyKChlPDwxXmU+PjMxKT4+PjApfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KGU+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzKSxqc3BiLnV0aWxzLnNwbGl0WmlnemFnNjQoZSksdGhpcy53cml0ZVNwbGl0VmFyaW50NjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZVppZ3phZ1ZhcmludEhhc2g2NChqc3BiLnV0aWxzLmRlY2ltYWxTdHJpbmdUb0hhc2g2NChlKSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztqc3BiLnV0aWxzLnNwbGl0SGFzaDY0KGUpLGpzcGIudXRpbHMudG9aaWd6YWc2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCwoZnVuY3Rpb24oZSxvKXt0LndyaXRlU3BsaXRWYXJpbnQ2NChlPj4+MCxvPj4+MCl9KSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVVaW50OD1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmMjU2PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVVaW50MTY9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PWUmJjY1NTM2PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVVpbnQzMj1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+MTYmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+MjQmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjQpLGpzcGIudXRpbHMuc3BsaXRVaW50NjQoZSksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRMb3cpLHRoaXMud3JpdGVVaW50MzIoanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydCgtMTI4PD1lJiYxMjg+ZSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjAmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUludDE2PWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydCgtMzI3Njg8PWUmJjMyNzY4PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUludDMyPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydChlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjAmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+OCYyNTUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4xNiYyNTUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4yNCYyNTUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlSW50NjQ9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KGU+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzKSxqc3BiLnV0aWxzLnNwbGl0SW50NjQoZSksdGhpcy53cml0ZVNwbGl0Rml4ZWQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVJbnQ2NFN0cmluZz1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoK2U+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJitlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyksanNwYi51dGlscy5zcGxpdEhhc2g2NChqc3BiLnV0aWxzLmRlY2ltYWxTdHJpbmdUb0hhc2g2NChlKSksdGhpcy53cml0ZVNwbGl0Rml4ZWQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVGbG9hdD1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KDEvMD09PWV8fC0xLzA9PT1lfHxpc05hTihlKXx8ZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYJiZlPD1qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDMyX01BWCksanNwYi51dGlscy5zcGxpdEZsb2F0MzIoZSksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRMb3cpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlRG91YmxlPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMS8wPT09ZXx8LTEvMD09PWV8fGlzTmFOKGUpfHxlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQ2NF9NQVgmJmU8PWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUFYKSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQ2NChlKSx0aGlzLndyaXRlVWludDMyKGpzcGIudXRpbHMuc3BsaXQ2NExvdyksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoKX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUJvb2w9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChcImJvb2xlYW5cIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKSx0aGlzLmJ1ZmZlcl8ucHVzaChlPzE6MCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVFbnVtPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydChlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZVNpZ25lZFZhcmludDMyKGUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlQnl0ZXM9ZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJfLnB1c2guYXBwbHkodGhpcy5idWZmZXJfLGUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVmFyaW50SGFzaDY0PWZ1bmN0aW9uKGUpe2pzcGIudXRpbHMuc3BsaXRIYXNoNjQoZSksdGhpcy53cml0ZVNwbGl0VmFyaW50NjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oZSl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSx0aGlzLndyaXRlVWludDMyKGpzcGIudXRpbHMuc3BsaXQ2NExvdyksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoKX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5idWZmZXJfLmxlbmd0aCxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWUuY2hhckNvZGVBdChvKTtpZigxMjg+cil0aGlzLmJ1ZmZlcl8ucHVzaChyKTtlbHNlIGlmKDIwNDg+cil0aGlzLmJ1ZmZlcl8ucHVzaChyPj42fDE5MiksdGhpcy5idWZmZXJfLnB1c2goNjMmcnwxMjgpO2Vsc2UgaWYoNjU1MzY+cilpZig1NTI5Njw9ciYmNTYzMTk+PXImJm8rMTxlLmxlbmd0aCl7dmFyIG49ZS5jaGFyQ29kZUF0KG8rMSk7NTYzMjA8PW4mJjU3MzQzPj1uJiYocj0xMDI0KihyLTU1Mjk2KStuLTU2MzIwKzY1NTM2LHRoaXMuYnVmZmVyXy5wdXNoKHI+PjE4fDI0MCksdGhpcy5idWZmZXJfLnB1c2gocj4+MTImNjN8MTI4KSx0aGlzLmJ1ZmZlcl8ucHVzaChyPj42JjYzfDEyOCksdGhpcy5idWZmZXJfLnB1c2goNjMmcnwxMjgpLG8rKyl9ZWxzZSB0aGlzLmJ1ZmZlcl8ucHVzaChyPj4xMnwyMjQpLHRoaXMuYnVmZmVyXy5wdXNoKHI+PjYmNjN8MTI4KSx0aGlzLmJ1ZmZlcl8ucHVzaCg2MyZyfDEyOCl9cmV0dXJuIHRoaXMuYnVmZmVyXy5sZW5ndGgtdH0sanNwYi5hcml0aD17fSxqc3BiLmFyaXRoLlVJbnQ2ND1mdW5jdGlvbihlLHQpe3RoaXMubG89ZSx0aGlzLmhpPXR9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGk8ZS5oaXx8dGhpcy5oaT09ZS5oaSYmdGhpcy5sbzxlLmxvPy0xOnRoaXMuaGk9PWUuaGkmJnRoaXMubG89PWUubG8/MDoxfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbigpe3JldHVybiBuZXcganNwYi5hcml0aC5VSW50NjQoKHRoaXMubG8+Pj4xfCgxJnRoaXMuaGkpPDwzMSk+Pj4wLHRoaXMuaGk+Pj4xPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5sZWZ0U2hpZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG88PDE+Pj4wLCh0aGlzLmhpPDwxfHRoaXMubG8+Pj4zMSk+Pj4wKX0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLm1zYj1mdW5jdGlvbigpe3JldHVybiEhKDIxNDc0ODM2NDgmdGhpcy5oaSl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5sc2I9ZnVuY3Rpb24oKXtyZXR1cm4hISgxJnRoaXMubG8pfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUuemVybz1mdW5jdGlvbigpe3JldHVybiAwPT10aGlzLmxvJiYwPT10aGlzLmhpfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5VSW50NjQoKHRoaXMubG8rZS5sbyY0Mjk0OTY3Mjk1KT4+PjA+Pj4wLCgodGhpcy5oaStlLmhpJjQyOTQ5NjcyOTUpPj4+MCkrKDQyOTQ5NjcyOTY8PXRoaXMubG8rZS5sbz8xOjApPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgodGhpcy5sby1lLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpLWUuaGkmNDI5NDk2NzI5NSk+Pj4wKS0oMD50aGlzLmxvLWUubG8/MTowKT4+PjApfSxqc3BiLmFyaXRoLlVJbnQ2NC5tdWwzMngzMj1mdW5jdGlvbihlLHQpe3ZhciBvPTY1NTM1JmUscj02NTUzNSZ0LG49dD4+PjE2O2Zvcih0PW8qcis2NTUzNioobypuJjY1NTM1KSs2NTUzNiooKGU+Pj49MTYpKnImNjU1MzUpLG89ZSpuKyhvKm4+Pj4xNikrKGUqcj4+PjE2KTs0Mjk0OTY3Mjk2PD10Oyl0LT00Mjk0OTY3Mjk2LG8rPTE7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCh0Pj4+MCxvPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7dmFyIHQ9anNwYi5hcml0aC5VSW50NjQubXVsMzJ4MzIodGhpcy5sbyxlKTtyZXR1cm4oZT1qc3BiLmFyaXRoLlVJbnQ2NC5tdWwzMngzMih0aGlzLmhpLGUpKS5oaT1lLmxvLGUubG89MCx0LmFkZChlKX0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLmRpdj1mdW5jdGlvbihlKXtpZigwPT1lKXJldHVybltdO3ZhciB0PW5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgwLDApLG89bmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG8sdGhpcy5oaSk7ZT1uZXcganNwYi5hcml0aC5VSW50NjQoZSwwKTtmb3IodmFyIHI9bmV3IGpzcGIuYXJpdGguVUludDY0KDEsMCk7IWUubXNiKCk7KWU9ZS5sZWZ0U2hpZnQoKSxyPXIubGVmdFNoaWZ0KCk7Zm9yKDshci56ZXJvKCk7KTA+PWUuY21wKG8pJiYodD10LmFkZChyKSxvPW8uc3ViKGUpKSxlPWUucmlnaHRTaGlmdCgpLHI9ci5yaWdodFNoaWZ0KCk7cmV0dXJuW3Qsb119LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1cIlwiLHQ9dGhpczshdC56ZXJvKCk7KXt2YXIgbz0odD10LmRpdigxMCkpWzBdO2U9dFsxXS5sbytlLHQ9b31yZXR1cm5cIlwiPT1lJiYoZT1cIjBcIiksZX0sanNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IGpzcGIuYXJpdGguVUludDY0KDAsMCksbz1uZXcganNwYi5hcml0aC5VSW50NjQoMCwwKSxyPTA7cjxlLmxlbmd0aDtyKyspe2lmKFwiMFwiPmVbcl18fFwiOVwiPGVbcl0pcmV0dXJuIG51bGw7dmFyIG49cGFyc2VJbnQoZVtyXSwxMCk7by5sbz1uLHQ9dC5tdWwoMTApLmFkZChvKX1yZXR1cm4gdH0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCh0aGlzLmxvLHRoaXMuaGkpfSxqc3BiLmFyaXRoLkludDY0PWZ1bmN0aW9uKGUsdCl7dGhpcy5sbz1lLHRoaXMuaGk9dH0sanNwYi5hcml0aC5JbnQ2NC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCgodGhpcy5sbytlLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpK2UuaGkmNDI5NDk2NzI5NSk+Pj4wKSsoNDI5NDk2NzI5Njw9dGhpcy5sbytlLmxvPzE6MCk+Pj4wKX0sanNwYi5hcml0aC5JbnQ2NC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCgodGhpcy5sby1lLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpLWUuaGkmNDI5NDk2NzI5NSk+Pj4wKS0oMD50aGlzLmxvLWUubG8/MTowKT4+PjApfSxqc3BiLmFyaXRoLkludDY0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCh0aGlzLmxvLHRoaXMuaGkpfSxqc3BiLmFyaXRoLkludDY0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTAhPSgyMTQ3NDgzNjQ4JnRoaXMuaGkpLHQ9bmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG8sdGhpcy5oaSk7cmV0dXJuIGUmJih0PW5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgwLDApLnN1Yih0KSksKGU/XCItXCI6XCJcIikrdC50b1N0cmluZygpfSxqc3BiLmFyaXRoLkludDY0LmZyb21TdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9MDxlLmxlbmd0aCYmXCItXCI9PWVbMF07cmV0dXJuIHQmJihlPWUuc3Vic3RyaW5nKDEpKSxudWxsPT09KGU9anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyhlKSk/bnVsbDoodCYmKGU9bmV3IGpzcGIuYXJpdGguVUludDY0KDAsMCkuc3ViKGUpKSxuZXcganNwYi5hcml0aC5JbnQ2NChlLmxvLGUuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXI9ZnVuY3Rpb24oKXt0aGlzLmJsb2Nrc189W10sdGhpcy50b3RhbExlbmd0aF89MCx0aGlzLmVuY29kZXJfPW5ldyBqc3BiLkJpbmFyeUVuY29kZXIsdGhpcy5ib29rbWFya3NfPVtdfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuYXBwZW5kVWludDhBcnJheV89ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbmNvZGVyXy5lbmQoKTt0aGlzLmJsb2Nrc18ucHVzaCh0KSx0aGlzLmJsb2Nrc18ucHVzaChlKSx0aGlzLnRvdGFsTGVuZ3RoXys9dC5sZW5ndGgrZS5sZW5ndGh9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5iZWdpbkRlbGltaXRlZF89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLGU9dGhpcy5lbmNvZGVyXy5lbmQoKSx0aGlzLmJsb2Nrc18ucHVzaChlKSx0aGlzLnRvdGFsTGVuZ3RoXys9ZS5sZW5ndGgsZS5wdXNoKHRoaXMudG90YWxMZW5ndGhfKSxlfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuZW5kRGVsaW1pdGVkXz1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcCgpO2Zvcih0PXRoaXMudG90YWxMZW5ndGhfK3RoaXMuZW5jb2Rlcl8ubGVuZ3RoKCktdCxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQpOzEyNzx0OyllLnB1c2goMTI3JnR8MTI4KSx0Pj4+PTcsdGhpcy50b3RhbExlbmd0aF8rKztlLnB1c2godCksdGhpcy50b3RhbExlbmd0aF8rK30sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2VyaWFsaXplZE1lc3NhZ2U9ZnVuY3Rpb24oZSx0LG8pe3RoaXMuYXBwZW5kVWludDhBcnJheV8oZS5zdWJhcnJheSh0LG8pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLm1heWJlV3JpdGVTZXJpYWxpemVkTWVzc2FnZT1mdW5jdGlvbihlLHQsbyl7bnVsbCE9ZSYmbnVsbCE9dCYmbnVsbCE9byYmdGhpcy53cml0ZVNlcmlhbGl6ZWRNZXNzYWdlKGUsdCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5ibG9ja3NfPVtdLHRoaXMuZW5jb2Rlcl8uZW5kKCksdGhpcy50b3RhbExlbmd0aF89MCx0aGlzLmJvb2ttYXJrc189W119LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5nZXRSZXN1bHRCdWZmZXI9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA9PXRoaXMuYm9va21hcmtzXy5sZW5ndGgpO2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLnRvdGFsTGVuZ3RoXyt0aGlzLmVuY29kZXJfLmxlbmd0aCgpKSx0PXRoaXMuYmxvY2tzXyxvPXQubGVuZ3RoLHI9MCxuPTA7bjxvO24rKyl7dmFyIHM9dFtuXTtlLnNldChzLHIpLHIrPXMubGVuZ3RofXJldHVybiB0PXRoaXMuZW5jb2Rlcl8uZW5kKCksZS5zZXQodCxyKSxyKz10Lmxlbmd0aCxnb29nLmFzc2VydHMuYXNzZXJ0KHI9PWUubGVuZ3RoKSx0aGlzLmJsb2Nrc189W2VdLGV9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5nZXRSZXN1bHRCYXNlNjRTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZUJ5dGVBcnJheSh0aGlzLmdldFJlc3VsdEJ1ZmZlcigpLGUpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuYmVnaW5TdWJNZXNzYWdlPWZ1bmN0aW9uKGUpe3RoaXMuYm9va21hcmtzXy5wdXNoKHRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLmVuZFN1Yk1lc3NhZ2U9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXRoaXMuYm9va21hcmtzXy5sZW5ndGgpLHRoaXMuZW5kRGVsaW1pdGVkXyh0aGlzLmJvb2ttYXJrc18ucG9wKCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGaWVsZEhlYWRlcl89ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KDE8PWUmJmU9PU1hdGguZmxvb3IoZSkpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqZSt0KX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlQW55PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1qc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGU7c3dpdGNoKGUpe2Nhc2Ugci5ET1VCTEU6dGhpcy53cml0ZURvdWJsZSh0LG8pO2JyZWFrO2Nhc2Ugci5GTE9BVDp0aGlzLndyaXRlRmxvYXQodCxvKTticmVhaztjYXNlIHIuSU5UNjQ6dGhpcy53cml0ZUludDY0KHQsbyk7YnJlYWs7Y2FzZSByLlVJTlQ2NDp0aGlzLndyaXRlVWludDY0KHQsbyk7YnJlYWs7Y2FzZSByLklOVDMyOnRoaXMud3JpdGVJbnQzMih0LG8pO2JyZWFrO2Nhc2Ugci5GSVhFRDY0OnRoaXMud3JpdGVGaXhlZDY0KHQsbyk7YnJlYWs7Y2FzZSByLkZJWEVEMzI6dGhpcy53cml0ZUZpeGVkMzIodCxvKTticmVhaztjYXNlIHIuQk9PTDp0aGlzLndyaXRlQm9vbCh0LG8pO2JyZWFrO2Nhc2Ugci5TVFJJTkc6dGhpcy53cml0ZVN0cmluZyh0LG8pO2JyZWFrO2Nhc2Ugci5HUk9VUDpnb29nLmFzc2VydHMuZmFpbChcIkdyb3VwIGZpZWxkIHR5cGUgbm90IHN1cHBvcnRlZCBpbiB3cml0ZUFueSgpXCIpO2JyZWFrO2Nhc2Ugci5NRVNTQUdFOmdvb2cuYXNzZXJ0cy5mYWlsKFwiTWVzc2FnZSBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gd3JpdGVBbnkoKVwiKTticmVhaztjYXNlIHIuQllURVM6dGhpcy53cml0ZUJ5dGVzKHQsbyk7YnJlYWs7Y2FzZSByLlVJTlQzMjp0aGlzLndyaXRlVWludDMyKHQsbyk7YnJlYWs7Y2FzZSByLkVOVU06dGhpcy53cml0ZUVudW0odCxvKTticmVhaztjYXNlIHIuU0ZJWEVEMzI6dGhpcy53cml0ZVNmaXhlZDMyKHQsbyk7YnJlYWs7Y2FzZSByLlNGSVhFRDY0OnRoaXMud3JpdGVTZml4ZWQ2NCh0LG8pO2JyZWFrO2Nhc2Ugci5TSU5UMzI6dGhpcy53cml0ZVNpbnQzMih0LG8pO2JyZWFrO2Nhc2Ugci5TSU5UNjQ6dGhpcy53cml0ZVNpbnQ2NCh0LG8pO2JyZWFrO2Nhc2Ugci5GSEFTSDY0OnRoaXMud3JpdGVGaXhlZEhhc2g2NCh0LG8pO2JyZWFrO2Nhc2Ugci5WSEFTSDY0OnRoaXMud3JpdGVWYXJpbnRIYXNoNjQodCxvKTticmVhaztkZWZhdWx0Omdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCBmaWVsZCB0eXBlIGluIHdyaXRlQW55KClcIil9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDMyXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpZ25lZFZhcmludDMyXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50MzIodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDY0Xz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQ2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpZ25lZFZhcmludDY0Xz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMl89ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludDMyKHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjRfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnQ2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVppZ3phZ1ZhcmludDY0U3RyaW5nXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlWmlnemFnVmFyaW50NjRTdHJpbmcodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KHQ+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxKSx0aGlzLndyaXRlU2lnbmVkVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMlN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PXBhcnNlSW50KHQsMTApLGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLHRoaXMud3JpdGVTaWduZWRWYXJpbnQzMl8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLHRoaXMud3JpdGVTaWduZWRWYXJpbnQ2NF8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHQ9anNwYi5hcml0aC5JbnQ2NC5mcm9tU3RyaW5nKHQpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHQubG8sdC5oaSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVaW50MzI9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksdGhpcy53cml0ZVVuc2lnbmVkVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVaW50MzJTdHJpbmc9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodD1wYXJzZUludCh0LDEwKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKSx0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQzMl8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzY0KSx0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQ2NF8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIuYXJpdGguVUludDY0LmZyb21TdHJpbmcodCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0VmFyaW50NjQodC5sbyx0LmhpKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpbnQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KHQ+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxKSx0aGlzLndyaXRlWmlnemFnVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVTaW50NjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyksdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0XyhlLHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2ludEhhc2g2ND1mdW5jdGlvbihlLHQpe251bGwhPXQmJnRoaXMud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfKGUsdCl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJnRoaXMud3JpdGVaaWd6YWdWYXJpbnQ2NFN0cmluZ18oZSx0KX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRml4ZWQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQzMiksdGhpcy5lbmNvZGVyXy53cml0ZVVpbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUZpeGVkNjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182NCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVaW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHQ9anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NCh0LmxvLHQuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2ZpeGVkMzI9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZW5jb2Rlcl8ud3JpdGVJbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNmaXhlZDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmVuY29kZXJfLndyaXRlSW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIuYXJpdGguSW50NjQuZnJvbVN0cmluZyh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NCh0LmxvLHQuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRmxvYXQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZW5jb2Rlcl8ud3JpdGVGbG9hdCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZURvdWJsZT1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZURvdWJsZSh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUJvb2w9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydChcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlQm9vbCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUVudW09ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNpZ25lZFZhcmludDMyKHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGU9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSksdGhpcy5lbmNvZGVyXy53cml0ZVN0cmluZyh0KSx0aGlzLmVuZERlbGltaXRlZF8oZSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVCeXRlcz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIudXRpbHMuYnl0ZVNvdXJjZVRvVWludDhBcnJheSh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMih0Lmxlbmd0aCksdGhpcy5hcHBlbmRVaW50OEFycmF5Xyh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZU1lc3NhZ2U9ZnVuY3Rpb24oZSx0LG8pe251bGwhPXQmJihlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpLG8odCx0aGlzKSx0aGlzLmVuZERlbGltaXRlZF8oZSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVNZXNzYWdlU2V0PWZ1bmN0aW9uKGUsdCxvKXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXygxLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKDIsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50MzIoZSksZT10aGlzLmJlZ2luRGVsaW1pdGVkXygzKSxvKHQsdGhpcyksdGhpcy5lbmREZWxpbWl0ZWRfKGUpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oMSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5FTkRfR1JPVVApKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlR3JvdXA9ZnVuY3Rpb24oZSx0LG8pe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuU1RBUlRfR1JPVVApLG8odCx0aGlzKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUZpeGVkSGFzaDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoOD09dC5sZW5ndGgpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmVuY29kZXJfLndyaXRlRml4ZWRIYXNoNjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVWYXJpbnRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCg4PT10Lmxlbmd0aCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVZhcmludEhhc2g2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNwbGl0Rml4ZWQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdEZpeGVkNjQodCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3BsaXRWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0VmFyaW50NjQodCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCk7dmFyIHI9dGhpcy5lbmNvZGVyXztqc3BiLnV0aWxzLnRvWmlnemFnNjQodCxvLChmdW5jdGlvbihlLHQpe3Iud3JpdGVTcGxpdFZhcmludDY0KGU+Pj4wLHQ+Pj4wKX0pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNpZ25lZFZhcmludDMyXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEludDMyU3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlSW50MzJTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNpZ25lZFZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0Rml4ZWQ2ND1mdW5jdGlvbihlLHQsbyxyKXtpZihudWxsIT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRoaXMud3JpdGVTcGxpdEZpeGVkNjQoZSxvKHRbbl0pLHIodFtuXSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChlLG8odFtuXSkscih0W25dKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyxyKXtpZihudWxsIT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRoaXMud3JpdGVTcGxpdFppZ3phZ1ZhcmludDY0KGUsbyh0W25dKSxyKHRbbl0pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUludDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkVWludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQzMl8oZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50MzJTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVVaW50MzJTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50NjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVVbnNpZ25lZFZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVVpbnQ2NFN0cmluZyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDMyXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0U3RyaW5nXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUZpeGVkMzIoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRGaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlRml4ZWQ2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGaXhlZDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ZpeGVkMzI9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVTZml4ZWQzMihlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNmaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlU2ZpeGVkNjQoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNmaXhlZDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRmxvYXQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGbG9hdChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZERvdWJsZT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZURvdWJsZShlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEJvb2w9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVCb29sKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRW51bT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUVudW0oZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRCeXRlcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUJ5dGVzKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkTWVzc2FnZT1mdW5jdGlvbihlLHQsbyl7aWYobnVsbCE9dClmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7byh0W3JdLHRoaXMpLHRoaXMuZW5kRGVsaW1pdGVkXyhuKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkR3JvdXA9ZnVuY3Rpb24oZSx0LG8pe2lmKG51bGwhPXQpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSxvKHRbcl0sdGhpcyksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkVORF9HUk9VUCl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGaXhlZEhhc2g2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFZhcmludEhhc2g2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVZhcmludEhhc2g2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVTaWduZWRWYXJpbnQzMih0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQzMlN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVTaWduZWRWYXJpbnQzMihwYXJzZUludCh0W29dLDEwKSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkSW50NjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50NjQodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkU3BsaXRGaXhlZDY0PWZ1bmN0aW9uKGUsdCxvLHIpe2lmKG51bGwhPXQpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NChvKHRbbl0pLHIodFtuXSkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLmVuY29kZXJfLndyaXRlU3BsaXRWYXJpbnQ2NChvKHRbbl0pLHIodFtuXSkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0WmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG49dGhpcy5lbmNvZGVyXyxzPTA7czx0Lmxlbmd0aDtzKyspanNwYi51dGlscy50b1ppZ3phZzY0KG8odFtzXSkscih0W3NdKSwoZnVuY3Rpb24oZSx0KXtuLndyaXRlU3BsaXRWYXJpbnQ2NChlPj4+MCx0Pj4+MCl9KSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkSW50NjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9anNwYi5hcml0aC5JbnQ2NC5mcm9tU3RyaW5nKHRbb10pO3RoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHIubG8sci5oaSl9dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkVWludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkVWludDMyU3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIocGFyc2VJbnQodFtvXSwxMCkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDY0KHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj1qc3BiLmFyaXRoLlVJbnQ2NC5mcm9tU3RyaW5nKHRbb10pO3RoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHIubG8sci5oaSl9dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkU2ludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludDMyKHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnQ2NCh0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50NjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLmVuY29kZXJfLndyaXRlWmlnemFnVmFyaW50SGFzaDY0KGpzcGIudXRpbHMuZGVjaW1hbFN0cmluZ1RvSGFzaDY0KHRbb10pKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50SGFzaDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludEhhc2g2NCh0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDQqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlVWludDMyKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlVWludDY0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG89anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyh0W2VdKTt0aGlzLmVuY29kZXJfLndyaXRlU3BsaXRGaXhlZDY0KG8ubG8sby5oaSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig0KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDMyKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig4KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDY0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig4KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDY0U3RyaW5nKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGbG9hdD1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig0KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUZsb2F0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWREb3VibGU9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aClmb3IodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCksdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIoOCp0Lmxlbmd0aCksZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuZW5jb2Rlcl8ud3JpdGVEb3VibGUodFtlXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZEJvb2w9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aClmb3IodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCksdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIodC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlQm9vbCh0W2VdKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkRW51bT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVFbnVtKHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZEZpeGVkSGFzaDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlRml4ZWRIYXNoNjQodFtlXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFZhcmludEhhc2g2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVWYXJpbnRIYXNoNjQodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5NYXA9ZnVuY3Rpb24oZSx0KXt0aGlzLmFycl89ZSx0aGlzLnZhbHVlQ3Rvcl89dCx0aGlzLm1hcF89e30sdGhpcy5hcnJDbGVhbj0hMCwwPHRoaXMuYXJyXy5sZW5ndGgmJnRoaXMubG9hZEZyb21BcnJheV8oKX0sanNwYi5NYXAucHJvdG90eXBlLmxvYWRGcm9tQXJyYXlfPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmFycl8ubGVuZ3RoO2UrKyl7dmFyIHQ9dGhpcy5hcnJfW2VdLG89dFswXTt0aGlzLm1hcF9bby50b1N0cmluZygpXT1uZXcganNwYi5NYXAuRW50cnlfKG8sdFsxXSl9dGhpcy5hcnJDbGVhbj0hMH0sanNwYi5NYXAucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtpZih0aGlzLmFyckNsZWFuKXtpZih0aGlzLnZhbHVlQ3Rvcl8pe3ZhciBlLHQ9dGhpcy5tYXBfO2ZvcihlIGluIHQpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkpe3ZhciBvPXRbZV0udmFsdWVXcmFwcGVyO28mJm8udG9BcnJheSgpfX19ZWxzZXtmb3IodGhpcy5hcnJfLmxlbmd0aD0wLCh0PXRoaXMuc3RyaW5nS2V5c18oKSkuc29ydCgpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5tYXBfW3RbZV1dOyhvPXIudmFsdWVXcmFwcGVyKSYmby50b0FycmF5KCksdGhpcy5hcnJfLnB1c2goW3Iua2V5LHIudmFsdWVdKX10aGlzLmFyckNsZWFuPSEwfXJldHVybiB0aGlzLmFycl99LGpzcGIuTWFwLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbz10aGlzLnRvQXJyYXkoKSxyPVtdLG49MDtuPG8ubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5tYXBfW29bbl1bMF0udG9TdHJpbmcoKV07dGhpcy53cmFwRW50cnlfKHMpO3ZhciBpPXMudmFsdWVXcmFwcGVyO2k/KGdvb2cuYXNzZXJ0cy5hc3NlcnQodCksci5wdXNoKFtzLmtleSx0KGUsaSldKSk6ci5wdXNoKFtzLmtleSxzLnZhbHVlXSl9cmV0dXJuIHJ9LGpzcGIuTWFwLmZyb21PYmplY3Q9ZnVuY3Rpb24oZSx0LG8pe3Q9bmV3IGpzcGIuTWFwKFtdLHQpO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdWzBdLHM9byhlW3JdWzFdKTt0LnNldChuLHMpfXJldHVybiB0fSxqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfPWZ1bmN0aW9uKGUpe3RoaXMuaWR4Xz0wLHRoaXMuYXJyXz1lfSxqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR4Xzx0aGlzLmFycl8ubGVuZ3RoP3tkb25lOiExLHZhbHVlOnRoaXMuYXJyX1t0aGlzLmlkeF8rK119Ontkb25lOiEwLHZhbHVlOnZvaWQgMH19LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJihqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxqc3BiLk1hcC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nS2V5c18oKS5sZW5ndGh9LGpzcGIuTWFwLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubWFwXz17fSx0aGlzLmFyckNsZWFuPSExfSxqc3BiLk1hcC5wcm90b3R5cGUuZGVsPWZ1bmN0aW9uKGUpe2U9ZS50b1N0cmluZygpO3ZhciB0PXRoaXMubWFwXy5oYXNPd25Qcm9wZXJ0eShlKTtyZXR1cm4gZGVsZXRlIHRoaXMubWFwX1tlXSx0aGlzLmFyckNsZWFuPSExLHR9LGpzcGIuTWFwLnByb3RvdHlwZS5nZXRFbnRyeUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PXRoaXMuc3RyaW5nS2V5c18oKTt0LnNvcnQoKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dGhpcy5tYXBfW3Rbb11dO2UucHVzaChbci5rZXksci52YWx1ZV0pfXJldHVybiBlfSxqc3BiLk1hcC5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zdHJpbmdLZXlzXygpO3Quc29ydCgpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj10aGlzLm1hcF9bdFtvXV07ZS5wdXNoKFtyLmtleSx0aGlzLndyYXBFbnRyeV8ocildKX1yZXR1cm4gbmV3IGpzcGIuTWFwLkFycmF5SXRlcmF0b3JJdGVyYWJsZV8oZSl9LGpzcGIuTWFwLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLnN0cmluZ0tleXNfKCk7dC5zb3J0KCk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspZS5wdXNoKHRoaXMubWFwX1t0W29dXS5rZXkpO3JldHVybiBuZXcganNwYi5NYXAuQXJyYXlJdGVyYXRvckl0ZXJhYmxlXyhlKX0sanNwYi5NYXAucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zdHJpbmdLZXlzXygpO3Quc29ydCgpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKWUucHVzaCh0aGlzLndyYXBFbnRyeV8odGhpcy5tYXBfW3Rbb11dKSk7cmV0dXJuIG5ldyBqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfKGUpfSxqc3BiLk1hcC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe3ZhciBvPXRoaXMuc3RyaW5nS2V5c18oKTtvLnNvcnQoKTtmb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5tYXBfW29bcl1dO2UuY2FsbCh0LHRoaXMud3JhcEVudHJ5XyhuKSxuLmtleSx0aGlzKX19LGpzcGIuTWFwLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbz1uZXcganNwYi5NYXAuRW50cnlfKGUpO3JldHVybiB0aGlzLnZhbHVlQ3Rvcl8/KG8udmFsdWVXcmFwcGVyPXQsby52YWx1ZT10LnRvQXJyYXkoKSk6by52YWx1ZT10LHRoaXMubWFwX1tlLnRvU3RyaW5nKCldPW8sdGhpcy5hcnJDbGVhbj0hMSx0aGlzfSxqc3BiLk1hcC5wcm90b3R5cGUud3JhcEVudHJ5Xz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy52YWx1ZUN0b3JfPyhlLnZhbHVlV3JhcHBlcnx8KGUudmFsdWVXcmFwcGVyPW5ldyB0aGlzLnZhbHVlQ3Rvcl8oZS52YWx1ZSkpLGUudmFsdWVXcmFwcGVyKTplLnZhbHVlfSxqc3BiLk1hcC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe2lmKGU9dGhpcy5tYXBfW2UudG9TdHJpbmcoKV0pcmV0dXJuIHRoaXMud3JhcEVudHJ5XyhlKX0sanNwYi5NYXAucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gZS50b1N0cmluZygpaW4gdGhpcy5tYXBffSxqc3BiLk1hcC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9dGhpcy5zdHJpbmdLZXlzXygpO3Muc29ydCgpO2Zvcih2YXIgaT0wO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT10aGlzLm1hcF9bc1tpXV07dC5iZWdpblN1Yk1lc3NhZ2UoZSksby5jYWxsKHQsMSxhLmtleSksdGhpcy52YWx1ZUN0b3JfP3IuY2FsbCh0LDIsdGhpcy53cmFwRW50cnlfKGEpLG4pOnIuY2FsbCh0LDIsYS52YWx1ZSksdC5lbmRTdWJNZXNzYWdlKCl9fSxqc3BiLk1hcC5kZXNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbihlLHQsbyxyLG4scyxpKXtmb3IoO3QubmV4dEZpZWxkKCkmJiF0LmlzRW5kR3JvdXAoKTspe3ZhciBhPXQuZ2V0RmllbGROdW1iZXIoKTsxPT1hP3M9by5jYWxsKHQpOjI9PWEmJihlLnZhbHVlQ3Rvcl8/KGdvb2cuYXNzZXJ0cy5hc3NlcnQobiksaXx8KGk9bmV3IGUudmFsdWVDdG9yXyksci5jYWxsKHQsaSxuKSk6aT1yLmNhbGwodCkpfWdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9cyksZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1pKSxlLnNldChzLGkpfSxqc3BiLk1hcC5wcm90b3R5cGUuc3RyaW5nS2V5c189ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMubWFwXyxvPVtdO2ZvcihlIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm8ucHVzaChlKTtyZXR1cm4gb30sanNwYi5NYXAuRW50cnlfPWZ1bmN0aW9uKGUsdCl7dGhpcy5rZXk9ZSx0aGlzLnZhbHVlPXQsdGhpcy52YWx1ZVdyYXBwZXI9dm9pZCAwfSxqc3BiLkV4dGVuc2lvbkZpZWxkSW5mbz1mdW5jdGlvbihlLHQsbyxyLG4pe3RoaXMuZmllbGRJbmRleD1lLHRoaXMuZmllbGROYW1lPXQsdGhpcy5jdG9yPW8sdGhpcy50b09iamVjdEZuPXIsdGhpcy5pc1JlcGVhdGVkPW59LGpzcGIuRXh0ZW5zaW9uRmllbGRCaW5hcnlJbmZvPWZ1bmN0aW9uKGUsdCxvLHIsbixzKXt0aGlzLmZpZWxkSW5mbz1lLHRoaXMuYmluYXJ5UmVhZGVyRm49dCx0aGlzLmJpbmFyeVdyaXRlckZuPW8sdGhpcy5iaW5hcnlNZXNzYWdlU2VyaWFsaXplRm49cix0aGlzLmJpbmFyeU1lc3NhZ2VEZXNlcmlhbGl6ZUZuPW4sdGhpcy5pc1BhY2tlZD1zfSxqc3BiLkV4dGVuc2lvbkZpZWxkSW5mby5wcm90b3R5cGUuaXNNZXNzYWdlVHlwZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jdG9yfSxqc3BiLk1lc3NhZ2U9ZnVuY3Rpb24oKXt9LGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1Q9ITAsanNwYi5NZXNzYWdlLkdFTkVSQVRFX0ZST01fT0JKRUNUPSFnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFLGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19TVFJJTkc9ITAsanNwYi5NZXNzYWdlLkFTU1VNRV9MT0NBTF9BUlJBWVM9ITEsanNwYi5NZXNzYWdlLlNFUklBTElaRV9FTVBUWV9UUkFJTElOR19GSUVMRFM9ITAsanNwYi5NZXNzYWdlLlNVUFBPUlRTX1VJTlQ4QVJSQVlfPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksanNwYi5NZXNzYWdlLnByb3RvdHlwZS5nZXRKc1BiTWVzc2FnZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUlkX30sanNwYi5NZXNzYWdlLmdldEluZGV4Xz1mdW5jdGlvbihlLHQpe3JldHVybiB0K2UuYXJyYXlJbmRleE9mZnNldF99LGpzcGIuTWVzc2FnZS5oaWRkZW5FUzZQcm9wZXJ0eV89ZnVuY3Rpb24oKXt9LGpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lLmFycmF5SW5kZXhPZmZzZXRffSxqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZT1mdW5jdGlvbihlLHQsbyxyLG4scyl7aWYoZS53cmFwcGVyc189bnVsbCx0fHwodD1vP1tvXTpbXSksZS5tZXNzYWdlSWRfPW8/U3RyaW5nKG8pOnZvaWQgMCxlLmFycmF5SW5kZXhPZmZzZXRfPTA9PT1vPy0xOjAsZS5hcnJheT10LGpzcGIuTWVzc2FnZS5pbml0UGl2b3RBbmRFeHRlbnNpb25PYmplY3RfKGUsciksZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfPXt9LGpzcGIuTWVzc2FnZS5TRVJJQUxJWkVfRU1QVFlfVFJBSUxJTkdfRklFTERTfHwoZS5yZXBlYXRlZEZpZWxkcz1uKSxuKWZvcih0PTA7dDxuLmxlbmd0aDt0KyspKG89blt0XSk8ZS5waXZvdF8/KG89anNwYi5NZXNzYWdlLmdldEluZGV4XyhlLG8pLGUuYXJyYXlbb109ZS5hcnJheVtvXXx8anNwYi5NZXNzYWdlLkVNUFRZX0xJU1RfU0VOVElORUxfKTooanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0XyhlKSxlLmV4dGVuc2lvbk9iamVjdF9bb109ZS5leHRlbnNpb25PYmplY3RfW29dfHxqc3BiLk1lc3NhZ2UuRU1QVFlfTElTVF9TRU5USU5FTF8pO2lmKHMmJnMubGVuZ3RoKWZvcih0PTA7dDxzLmxlbmd0aDt0KyspanNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2UoZSxzW3RdKX0sanNwYi5NZXNzYWdlLkVNUFRZX0xJU1RfU0VOVElORUxfPWdvb2cuREVCVUcmJk9iamVjdC5mcmVlemU/T2JqZWN0LmZyZWV6ZShbXSk6W10sanNwYi5NZXNzYWdlLmlzQXJyYXlfPWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuQVNTVU1FX0xPQ0FMX0FSUkFZUz9lIGluc3RhbmNlb2YgQXJyYXk6QXJyYXkuaXNBcnJheShlKX0sanNwYi5NZXNzYWdlLmlzRXh0ZW5zaW9uT2JqZWN0Xz1mdW5jdGlvbihlKXtyZXR1cm4hKG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZXx8anNwYi5NZXNzYWdlLmlzQXJyYXlfKGUpfHxqc3BiLk1lc3NhZ2UuU1VQUE9SVFNfVUlOVDhBUlJBWV8mJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5KX0sanNwYi5NZXNzYWdlLmluaXRQaXZvdEFuZEV4dGVuc2lvbk9iamVjdF89ZnVuY3Rpb24oZSx0KXt2YXIgbz1lLmFycmF5Lmxlbmd0aCxyPS0xO2lmKG8mJihyPW8tMSxvPWUuYXJyYXlbcl0sanNwYi5NZXNzYWdlLmlzRXh0ZW5zaW9uT2JqZWN0XyhvKSkpcmV0dXJuIGUucGl2b3RfPWpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl8oZSxyKSx2b2lkKGUuZXh0ZW5zaW9uT2JqZWN0Xz1vKTstMTx0PyhlLnBpdm90Xz1NYXRoLm1heCh0LGpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl8oZSxyKzEpKSxlLmV4dGVuc2lvbk9iamVjdF89bnVsbCk6ZS5waXZvdF89TnVtYmVyLk1BWF9WQUxVRX0sanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0Xz1mdW5jdGlvbihlKXt2YXIgdD1qc3BiLk1lc3NhZ2UuZ2V0SW5kZXhfKGUsZS5waXZvdF8pO2UuYXJyYXlbdF18fChlLmV4dGVuc2lvbk9iamVjdF89ZS5hcnJheVt0XT17fSl9LGpzcGIuTWVzc2FnZS50b09iamVjdExpc3Q9ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgcj1bXSxuPTA7bjxlLmxlbmd0aDtuKyspcltuXT10LmNhbGwoZVtuXSxvLGVbbl0pO3JldHVybiByfSxqc3BiLk1lc3NhZ2UudG9PYmplY3RFeHRlbnNpb249ZnVuY3Rpb24oZSx0LG8scixuKXtmb3IodmFyIHMgaW4gbyl7dmFyIGk9b1tzXSxhPXIuY2FsbChlLGkpO2lmKG51bGwhPWEpe2Zvcih2YXIgZyBpbiBpLmZpZWxkTmFtZSlpZihpLmZpZWxkTmFtZS5oYXNPd25Qcm9wZXJ0eShnKSlicmVhazt0W2ddPWkudG9PYmplY3RGbj9pLmlzUmVwZWF0ZWQ/anNwYi5NZXNzYWdlLnRvT2JqZWN0TGlzdChhLGkudG9PYmplY3RGbixuKTppLnRvT2JqZWN0Rm4obixhKTphfX19LGpzcGIuTWVzc2FnZS5zZXJpYWxpemVCaW5hcnlFeHRlbnNpb25zPWZ1bmN0aW9uKGUsdCxvLHIpe2Zvcih2YXIgbiBpbiBvKXt2YXIgcz1vW25dLGk9cy5maWVsZEluZm87aWYoIXMuYmluYXJ5V3JpdGVyRm4pdGhyb3cgRXJyb3IoXCJNZXNzYWdlIGV4dGVuc2lvbiBwcmVzZW50IHRoYXQgd2FzIGdlbmVyYXRlZCB3aXRob3V0IGJpbmFyeSBzZXJpYWxpemF0aW9uIHN1cHBvcnRcIik7dmFyIGE9ci5jYWxsKGUsaSk7aWYobnVsbCE9YSlpZihpLmlzTWVzc2FnZVR5cGUoKSl7aWYoIXMuYmluYXJ5TWVzc2FnZVNlcmlhbGl6ZUZuKXRocm93IEVycm9yKFwiTWVzc2FnZSBleHRlbnNpb24gcHJlc2VudCBob2xkaW5nIHN1Ym1lc3NhZ2Ugd2l0aG91dCBiaW5hcnkgc3VwcG9ydCBlbmFibGVkLCBhbmQgbWVzc2FnZSBpcyBiZWluZyBzZXJpYWxpemVkIHRvIGJpbmFyeSBmb3JtYXRcIik7cy5iaW5hcnlXcml0ZXJGbi5jYWxsKHQsaS5maWVsZEluZGV4LGEscy5iaW5hcnlNZXNzYWdlU2VyaWFsaXplRm4pfWVsc2Ugcy5iaW5hcnlXcml0ZXJGbi5jYWxsKHQsaS5maWVsZEluZGV4LGEpfX0sanNwYi5NZXNzYWdlLnJlYWRCaW5hcnlFeHRlbnNpb249ZnVuY3Rpb24oZSx0LG8scixuKXt2YXIgcz1vW3QuZ2V0RmllbGROdW1iZXIoKV07aWYocyl7aWYobz1zLmZpZWxkSW5mbywhcy5iaW5hcnlSZWFkZXJGbil0aHJvdyBFcnJvcihcIkRlc2VyaWFsaXppbmcgZXh0ZW5zaW9uIHdob3NlIGdlbmVyYXRlZCBjb2RlIGRvZXMgbm90IHN1cHBvcnQgYmluYXJ5IGZvcm1hdFwiKTtpZihvLmlzTWVzc2FnZVR5cGUoKSl7dmFyIGk9bmV3IG8uY3RvcjtzLmJpbmFyeVJlYWRlckZuLmNhbGwodCxpLHMuYmluYXJ5TWVzc2FnZURlc2VyaWFsaXplRm4pfWVsc2UgaT1zLmJpbmFyeVJlYWRlckZuLmNhbGwodCk7by5pc1JlcGVhdGVkJiYhcy5pc1BhY2tlZD8odD1yLmNhbGwoZSxvKSk/dC5wdXNoKGkpOm4uY2FsbChlLG8sW2ldKTpuLmNhbGwoZSxvLGkpfWVsc2UgdC5za2lwRmllbGQoKX0sanNwYi5NZXNzYWdlLmdldEZpZWxkPWZ1bmN0aW9uKGUsdCl7aWYodDxlLnBpdm90Xyl7dD1qc3BiLk1lc3NhZ2UuZ2V0SW5kZXhfKGUsdCk7dmFyIG89ZS5hcnJheVt0XTtyZXR1cm4gbz09PWpzcGIuTWVzc2FnZS5FTVBUWV9MSVNUX1NFTlRJTkVMXz9lLmFycmF5W3RdPVtdOm99aWYoZS5leHRlbnNpb25PYmplY3RfKXJldHVybihvPWUuZXh0ZW5zaW9uT2JqZWN0X1t0XSk9PT1qc3BiLk1lc3NhZ2UuRU1QVFlfTElTVF9TRU5USU5FTF8/ZS5leHRlbnNpb25PYmplY3RfW3RdPVtdOm99LGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpfSxqc3BiLk1lc3NhZ2UuZ2V0T3B0aW9uYWxGbG9hdGluZ1BvaW50RmllbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09KGU9anNwYi5NZXNzYWdlLmdldEZpZWxkKGUsdCkpP2U6K2V9LGpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09KGU9anNwYi5NZXNzYWdlLmdldEZpZWxkKGUsdCkpP2U6ISFlfSxqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGbG9hdGluZ1BvaW50RmllbGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbz1qc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChlLHQpO2lmKGUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzX3x8KGUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzXz17fSksIWUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzX1t0XSl7Zm9yKHZhciByPTA7cjxvLmxlbmd0aDtyKyspb1tyXT0rb1tyXTtlLmNvbnZlcnRlZFByaW1pdGl2ZUZpZWxkc19bdF09ITB9cmV0dXJuIG99LGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEJvb2xlYW5GaWVsZD1mdW5jdGlvbihlLHQpe3ZhciBvPWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsdCk7aWYoZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNffHwoZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfPXt9KSwhZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfW3RdKXtmb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKylvW3JdPSEhb1tyXTtlLmNvbnZlcnRlZFByaW1pdGl2ZUZpZWxkc19bdF09ITB9cmV0dXJuIG99LGpzcGIuTWVzc2FnZS5ieXRlc0FzQjY0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxcInN0cmluZ1wiPT10eXBlb2YgZT9lOmpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/Z29vZy5jcnlwdC5iYXNlNjQuZW5jb2RlQnl0ZUFycmF5KGUpOihnb29nLmFzc2VydHMuZmFpbChcIkNhbm5vdCBjb2VyY2UgdG8gYjY0IHN0cmluZzogXCIrZ29vZy50eXBlT2YoZSkpLG51bGwpfSxqc3BiLk1lc3NhZ2UuYnl0ZXNBc1U4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxlIGluc3RhbmNlb2YgVWludDhBcnJheT9lOlwic3RyaW5nXCI9PXR5cGVvZiBlP2dvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ1RvVWludDhBcnJheShlKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJDYW5ub3QgY29lcmNlIHRvIFVpbnQ4QXJyYXk6IFwiK2dvb2cudHlwZU9mKGUpKSxudWxsKX0sanNwYi5NZXNzYWdlLmJ5dGVzTGlzdEFzQjY0PWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuYXNzZXJ0Q29uc2lzdGVudFR5cGVzXyhlKSxlLmxlbmd0aCYmXCJzdHJpbmdcIiE9dHlwZW9mIGVbMF0/Z29vZy5hcnJheS5tYXAoZSxqc3BiLk1lc3NhZ2UuYnl0ZXNBc0I2NCk6ZX0sanNwYi5NZXNzYWdlLmJ5dGVzTGlzdEFzVTg9ZnVuY3Rpb24oZSl7cmV0dXJuIGpzcGIuTWVzc2FnZS5hc3NlcnRDb25zaXN0ZW50VHlwZXNfKGUpLCFlLmxlbmd0aHx8ZVswXWluc3RhbmNlb2YgVWludDhBcnJheT9lOmdvb2cuYXJyYXkubWFwKGUsanNwYi5NZXNzYWdlLmJ5dGVzQXNVOCl9LGpzcGIuTWVzc2FnZS5hc3NlcnRDb25zaXN0ZW50VHlwZXNfPWZ1bmN0aW9uKGUpe2lmKGdvb2cuREVCVUcmJmUmJjE8ZS5sZW5ndGgpe3ZhciB0PWdvb2cudHlwZU9mKGVbMF0pO2dvb2cuYXJyYXkuZm9yRWFjaChlLChmdW5jdGlvbihlKXtnb29nLnR5cGVPZihlKSE9dCYmZ29vZy5hc3NlcnRzLmZhaWwoXCJJbmNvbnNpc3RlbnQgdHlwZSBpbiBKU1BCIHJlcGVhdGVkIGZpZWxkIGFycmF5LiBHb3QgXCIrZ29vZy50eXBlT2YoZSkrXCIgZXhwZWN0ZWQgXCIrdCl9KSl9fSxqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGw9PShlPWpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpKT9vOmV9LGpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGRXaXRoRGVmYXVsdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGw9PShlPWpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGQoZSx0KSk/bzplfSxqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBudWxsPT0oZT1qc3BiLk1lc3NhZ2UuZ2V0T3B0aW9uYWxGbG9hdGluZ1BvaW50RmllbGQoZSx0KSk/bzplfSxqc3BiLk1lc3NhZ2UuZ2V0RmllbGRQcm90bzM9anNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQsanNwYi5NZXNzYWdlLmdldE1hcEZpZWxkPWZ1bmN0aW9uKGUsdCxvLHIpe2lmKGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pLHQgaW4gZS53cmFwcGVyc18pcmV0dXJuIGUud3JhcHBlcnNfW3RdO3ZhciBuPWpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpO2lmKCFuKXtpZihvKXJldHVybjtuPVtdLGpzcGIuTWVzc2FnZS5zZXRGaWVsZChlLHQsbil9cmV0dXJuIGUud3JhcHBlcnNfW3RdPW5ldyBqc3BiLk1hcChuLHIpfSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksdDxlLnBpdm90Xz9lLmFycmF5W2pzcGIuTWVzc2FnZS5nZXRJbmRleF8oZSx0KV09bzooanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0XyhlKSxlLmV4dGVuc2lvbk9iamVjdF9bdF09byksZX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbywwKX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0Zsb2F0RmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBqc3BiLk1lc3NhZ2Uuc2V0RmllbGRJZ25vcmluZ0RlZmF1bHRfKGUsdCxvLDApfSxqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zQm9vbGVhbkZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbywhMSl9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdGaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sXCJcIil9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNCeXRlc0ZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbyxcIlwiKX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0VudW1GaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sMCl9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdJbnRGaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sXCIwXCIpfSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGRJZ25vcmluZ0RlZmF1bHRfPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksbyE9PXI/anNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxvKTp0PGUucGl2b3RfP2UuYXJyYXlbanNwYi5NZXNzYWdlLmdldEluZGV4XyhlLHQpXT1udWxsOihqc3BiLk1lc3NhZ2UubWF5YmVJbml0RW1wdHlFeHRlbnNpb25PYmplY3RfKGUpLGRlbGV0ZSBlLmV4dGVuc2lvbk9iamVjdF9bdF0pLGV9LGpzcGIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRJbnN0YW5jZW9mKGUsanNwYi5NZXNzYWdlKSx0PWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsdCksbnVsbCE9cj90LnNwbGljZShyLDAsbyk6dC5wdXNoKG8pLGV9LGpzcGIuTWVzc2FnZS5zZXRPbmVvZkZpZWxkPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksKG89anNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2UoZSxvKSkmJm8hPT10JiZ2b2lkIDAhPT1yJiYoZS53cmFwcGVyc18mJm8gaW4gZS53cmFwcGVyc18mJihlLndyYXBwZXJzX1tvXT12b2lkIDApLGpzcGIuTWVzc2FnZS5zZXRGaWVsZChlLG8sdm9pZCAwKSksanNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxyKX0sanNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2U9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl0saT1qc3BiLk1lc3NhZ2UuZ2V0RmllbGQoZSxzKTtudWxsIT1pJiYobz1zLHI9aSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSxzLHZvaWQgMCkpfXJldHVybiBvPyhqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSxvLHIpLG8pOjB9LGpzcGIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7aWYoZS53cmFwcGVyc198fChlLndyYXBwZXJzXz17fSksIWUud3JhcHBlcnNfW29dKXt2YXIgbj1qc3BiLk1lc3NhZ2UuZ2V0RmllbGQoZSxvKTsocnx8bikmJihlLndyYXBwZXJzX1tvXT1uZXcgdChuKSl9cmV0dXJuIGUud3JhcHBlcnNfW29dfSxqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBqc3BiLk1lc3NhZ2Uud3JhcFJlcGVhdGVkRmllbGRfKGUsdCxvKSwodD1lLndyYXBwZXJzX1tvXSk9PWpzcGIuTWVzc2FnZS5FTVBUWV9MSVNUX1NFTlRJTkVMXyYmKHQ9ZS53cmFwcGVyc19bb109W10pLHR9LGpzcGIuTWVzc2FnZS53cmFwUmVwZWF0ZWRGaWVsZF89ZnVuY3Rpb24oZSx0LG8pe2lmKGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pLCFlLndyYXBwZXJzX1tvXSl7Zm9yKHZhciByPWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsbyksbj1bXSxzPTA7czxyLmxlbmd0aDtzKyspbltzXT1uZXcgdChyW3NdKTtlLndyYXBwZXJzX1tvXT1ufX0sanNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZD1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2YoZSxqc3BiLk1lc3NhZ2UpLGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pO3ZhciByPW8/by50b0FycmF5KCk6bztyZXR1cm4gZS53cmFwcGVyc19bdF09byxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSx0LHIpfSxqc3BiLk1lc3NhZ2Uuc2V0T25lb2ZXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7Z29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2YoZSxqc3BiLk1lc3NhZ2UpLGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pO3ZhciBuPXI/ci50b0FycmF5KCk6cjtyZXR1cm4gZS53cmFwcGVyc19bdF09cixqc3BiLk1lc3NhZ2Uuc2V0T25lb2ZGaWVsZChlLHQsbyxuKX0sanNwYi5NZXNzYWdlLnNldFJlcGVhdGVkV3JhcHBlckZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksZS53cmFwcGVyc198fChlLndyYXBwZXJzXz17fSksbz1vfHxbXTtmb3IodmFyIHI9W10sbj0wO248by5sZW5ndGg7bisrKXJbbl09b1tuXS50b0FycmF5KCk7cmV0dXJuIGUud3JhcHBlcnNfW3RdPW8sanNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxyKX0sanNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scixuKXtqc3BiLk1lc3NhZ2Uud3JhcFJlcGVhdGVkRmllbGRfKGUscix0KTt2YXIgcz1lLndyYXBwZXJzX1t0XTtyZXR1cm4gc3x8KHM9ZS53cmFwcGVyc19bdF09W10pLG89b3x8bmV3IHIsZT1qc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChlLHQpLG51bGwhPW4/KHMuc3BsaWNlKG4sMCxvKSxlLnNwbGljZShuLDAsby50b0FycmF5KCkpKToocy5wdXNoKG8pLGUucHVzaChvLnRvQXJyYXkoKSkpLG99LGpzcGIuTWVzc2FnZS50b01hcD1mdW5jdGlvbihlLHQsbyxyKXtmb3IodmFyIG49e30scz0wO3M8ZS5sZW5ndGg7cysrKW5bdC5jYWxsKGVbc10pXT1vP28uY2FsbChlW3NdLHIsZVtzXSk6ZVtzXTtyZXR1cm4gbn0sanNwYi5NZXNzYWdlLnByb3RvdHlwZS5zeW5jTWFwRmllbGRzXz1mdW5jdGlvbigpe2lmKHRoaXMud3JhcHBlcnNfKWZvcih2YXIgZSBpbiB0aGlzLndyYXBwZXJzXyl7dmFyIHQ9dGhpcy53cmFwcGVyc19bZV07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0W29dJiZ0W29dLnRvQXJyYXkoKTtlbHNlIHQmJnQudG9BcnJheSgpfX0sanNwYi5NZXNzYWdlLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3luY01hcEZpZWxkc18oKSx0aGlzLmFycmF5fSxqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fU1RSSU5HJiYoanNwYi5NZXNzYWdlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN5bmNNYXBGaWVsZHNfKCksdGhpcy5hcnJheS50b1N0cmluZygpfSksanNwYi5NZXNzYWdlLnByb3RvdHlwZS5nZXRFeHRlbnNpb249ZnVuY3Rpb24oZSl7aWYodGhpcy5leHRlbnNpb25PYmplY3RfKXt0aGlzLndyYXBwZXJzX3x8KHRoaXMud3JhcHBlcnNfPXt9KTt2YXIgdD1lLmZpZWxkSW5kZXg7aWYoZS5pc1JlcGVhdGVkKXtpZihlLmlzTWVzc2FnZVR5cGUoKSlyZXR1cm4gdGhpcy53cmFwcGVyc19bdF18fCh0aGlzLndyYXBwZXJzX1t0XT1nb29nLmFycmF5Lm1hcCh0aGlzLmV4dGVuc2lvbk9iamVjdF9bdF18fFtdLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUuY3Rvcih0KX0pKSksdGhpcy53cmFwcGVyc19bdF19ZWxzZSBpZihlLmlzTWVzc2FnZVR5cGUoKSlyZXR1cm4hdGhpcy53cmFwcGVyc19bdF0mJnRoaXMuZXh0ZW5zaW9uT2JqZWN0X1t0XSYmKHRoaXMud3JhcHBlcnNfW3RdPW5ldyBlLmN0b3IodGhpcy5leHRlbnNpb25PYmplY3RfW3RdKSksdGhpcy53cmFwcGVyc19bdF07cmV0dXJuIHRoaXMuZXh0ZW5zaW9uT2JqZWN0X1t0XX19LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuc2V0RXh0ZW5zaW9uPWZ1bmN0aW9uKGUsdCl7dGhpcy53cmFwcGVyc198fCh0aGlzLndyYXBwZXJzXz17fSksanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0Xyh0aGlzKTt2YXIgbz1lLmZpZWxkSW5kZXg7cmV0dXJuIGUuaXNSZXBlYXRlZD8odD10fHxbXSxlLmlzTWVzc2FnZVR5cGUoKT8odGhpcy53cmFwcGVyc19bb109dCx0aGlzLmV4dGVuc2lvbk9iamVjdF9bb109Z29vZy5hcnJheS5tYXAodCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9BcnJheSgpfSkpKTp0aGlzLmV4dGVuc2lvbk9iamVjdF9bb109dCk6ZS5pc01lc3NhZ2VUeXBlKCk/KHRoaXMud3JhcHBlcnNfW29dPXQsdGhpcy5leHRlbnNpb25PYmplY3RfW29dPXQ/dC50b0FycmF5KCk6dCk6dGhpcy5leHRlbnNpb25PYmplY3RfW29dPXQsdGhpc30sanNwYi5NZXNzYWdlLmRpZmZlcmVuY2U9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yKSl0aHJvdyBFcnJvcihcIk1lc3NhZ2VzIGhhdmUgZGlmZmVyZW50IHR5cGVzLlwiKTt2YXIgbz1lLnRvQXJyYXkoKTt0PXQudG9BcnJheSgpO3ZhciByPVtdLG49MCxzPW8ubGVuZ3RoPnQubGVuZ3RoP28ubGVuZ3RoOnQubGVuZ3RoO2ZvcihlLmdldEpzUGJNZXNzYWdlSWQoKSYmKHJbMF09ZS5nZXRKc1BiTWVzc2FnZUlkKCksbj0xKTtuPHM7bisrKWpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzKG9bbl0sdFtuXSl8fChyW25dPXRbbl0pO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihyKX0sanNwYi5NZXNzYWdlLmVxdWFscz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT10fHwhKCFlfHwhdCkmJmUgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yJiZqc3BiLk1lc3NhZ2UuY29tcGFyZUZpZWxkcyhlLnRvQXJyYXkoKSx0LnRvQXJyYXkoKSl9LGpzcGIuTWVzc2FnZS5jb21wYXJlRXh0ZW5zaW9ucz1mdW5jdGlvbihlLHQpe2U9ZXx8e30sdD10fHx7fTt2YXIgbyxyPXt9O2ZvcihvIGluIGUpcltvXT0wO2ZvcihvIGluIHQpcltvXT0wO2ZvcihvIGluIHIpaWYoIWpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzKGVbb10sdFtvXSkpcmV0dXJuITE7cmV0dXJuITB9LGpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzPWZ1bmN0aW9uKGUsdCl7aWYoZT09dClyZXR1cm4hMDtpZighZ29vZy5pc09iamVjdChlKXx8IWdvb2cuaXNPYmplY3QodCkpcmV0dXJuISEoXCJudW1iZXJcIj09dHlwZW9mIGUmJmlzTmFOKGUpfHxcIm51bWJlclwiPT10eXBlb2YgdCYmaXNOYU4odCkpJiZTdHJpbmcoZSk9PVN0cmluZyh0KTtpZihlLmNvbnN0cnVjdG9yIT10LmNvbnN0cnVjdG9yKXJldHVybiExO2lmKGpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZihlW29dIT10W29dKXJldHVybiExO3JldHVybiEwfWlmKGUuY29uc3RydWN0b3I9PT1BcnJheSl7dmFyIHI9dm9pZCAwLG49dm9pZCAwLHM9TWF0aC5tYXgoZS5sZW5ndGgsdC5sZW5ndGgpO2ZvcihvPTA7bzxzO28rKyl7dmFyIGk9ZVtvXSxhPXRbb107aWYoaSYmaS5jb25zdHJ1Y3Rvcj09T2JqZWN0JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh2b2lkIDA9PT1yKSxnb29nLmFzc2VydHMuYXNzZXJ0KG89PT1lLmxlbmd0aC0xKSxyPWksaT12b2lkIDApLGEmJmEuY29uc3RydWN0b3I9PU9iamVjdCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodm9pZCAwPT09biksZ29vZy5hc3NlcnRzLmFzc2VydChvPT09dC5sZW5ndGgtMSksbj1hLGE9dm9pZCAwKSwhanNwYi5NZXNzYWdlLmNvbXBhcmVGaWVsZHMoaSxhKSlyZXR1cm4hMX1yZXR1cm4hciYmIW58fChyPXJ8fHt9LG49bnx8e30sanNwYi5NZXNzYWdlLmNvbXBhcmVFeHRlbnNpb25zKHIsbikpfWlmKGUuY29uc3RydWN0b3I9PT1PYmplY3QpcmV0dXJuIGpzcGIuTWVzc2FnZS5jb21wYXJlRXh0ZW5zaW9ucyhlLHQpO3Rocm93IEVycm9yKFwiSW52YWxpZCB0eXBlIGluIEpTUEIgYXJyYXlcIil9LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuY2xvbmVNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIGpzcGIuTWVzc2FnZS5jbG9uZU1lc3NhZ2UodGhpcyl9LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4ganNwYi5NZXNzYWdlLmNsb25lTWVzc2FnZSh0aGlzKX0sanNwYi5NZXNzYWdlLmNsb25lPWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuY2xvbmVNZXNzYWdlKGUpfSxqc3BiLk1lc3NhZ2UuY2xvbmVNZXNzYWdlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZS5jb25zdHJ1Y3Rvcihqc3BiLk1lc3NhZ2UuY2xvbmVfKGUudG9BcnJheSgpKSl9LGpzcGIuTWVzc2FnZS5jb3B5SW50bz1mdW5jdGlvbihlLHQpe2dvb2cuYXNzZXJ0cy5hc3NlcnRJbnN0YW5jZW9mKGUsanNwYi5NZXNzYWdlKSxnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZih0LGpzcGIuTWVzc2FnZSksZ29vZy5hc3NlcnRzLmFzc2VydChlLmNvbnN0cnVjdG9yPT10LmNvbnN0cnVjdG9yLFwiQ29weSBzb3VyY2UgYW5kIHRhcmdldCBtZXNzYWdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHR5cGUuXCIpLGU9anNwYi5NZXNzYWdlLmNsb25lKGUpO2Zvcih2YXIgbz10LnRvQXJyYXkoKSxyPWUudG9BcnJheSgpLG49by5sZW5ndGg9MDtuPHIubGVuZ3RoO24rKylvW25dPXJbbl07dC53cmFwcGVyc189ZS53cmFwcGVyc18sdC5leHRlbnNpb25PYmplY3RfPWUuZXh0ZW5zaW9uT2JqZWN0X30sanNwYi5NZXNzYWdlLmNsb25lXz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9QXJyYXkoZS5sZW5ndGgpLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHI9ZVtvXTtudWxsIT1yJiYodFtvXT1cIm9iamVjdFwiPT10eXBlb2Ygcj9qc3BiLk1lc3NhZ2UuY2xvbmVfKGdvb2cuYXNzZXJ0cy5hc3NlcnQocikpOnIpfXJldHVybiB0fWlmKGpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGUpO2ZvcihvIGluIHQ9e30sZSludWxsIT0ocj1lW29dKSYmKHRbb109XCJvYmplY3RcIj09dHlwZW9mIHI/anNwYi5NZXNzYWdlLmNsb25lXyhnb29nLmFzc2VydHMuYXNzZXJ0KHIpKTpyKTtyZXR1cm4gdH0sanNwYi5NZXNzYWdlLnJlZ2lzdGVyTWVzc2FnZVR5cGU9ZnVuY3Rpb24oZSx0KXt0Lm1lc3NhZ2VJZD1lfSxqc3BiLk1lc3NhZ2UubWVzc2FnZVNldEV4dGVuc2lvbnM9e30sanNwYi5NZXNzYWdlLm1lc3NhZ2VTZXRFeHRlbnNpb25zQmluYXJ5PXt9LGpzcGIuRXhwb3J0PXt9LGV4cG9ydHMuTWFwPWpzcGIuTWFwLGV4cG9ydHMuTWVzc2FnZT1qc3BiLk1lc3NhZ2UsZXhwb3J0cy5CaW5hcnlSZWFkZXI9anNwYi5CaW5hcnlSZWFkZXIsZXhwb3J0cy5CaW5hcnlXcml0ZXI9anNwYi5CaW5hcnlXcml0ZXIsZXhwb3J0cy5FeHRlbnNpb25GaWVsZEluZm89anNwYi5FeHRlbnNpb25GaWVsZEluZm8sZXhwb3J0cy5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm89anNwYi5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm8sZXhwb3J0cy5leHBvcnRTeW1ib2w9Z29vZy5leHBvcnRTeW1ib2wsZXhwb3J0cy5pbmhlcml0cz1nb29nLmluaGVyaXRzLGV4cG9ydHMub2JqZWN0PXtleHRlbmQ6Z29vZy5vYmplY3QuZXh0ZW5kfSxleHBvcnRzLnR5cGVPZj1nb29nLnR5cGVPZn0sNDA6ZnVuY3Rpb24oZSx0LG8pe3ZhciByO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdDxlLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTplW3QrK119Ontkb25lOiEwfX19dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxvKXtlIT1BcnJheS5wcm90b3R5cGUmJmUhPU9iamVjdC5wcm90b3R5cGUmJihlW3RdPW8udmFsdWUpfSxpPWZ1bmN0aW9uKGUpe2U9W1wib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2Ygby5nJiZvLmcsZV07Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciByPWVbdF07aWYociYmci5NYXRoPT1NYXRoKXJldHVybiByfXRocm93IEVycm9yKFwiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdFwiKX0odGhpcyk7ZnVuY3Rpb24gYSgpe2E9ZnVuY3Rpb24oKXt9LGkuU3ltYm9sfHwoaS5TeW1ib2w9dSl9ZnVuY3Rpb24gZyhlLHQpe3RoaXMuYT1lLHModGhpcyxcImRlc2NyaXB0aW9uXCIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSl9Zy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgbCx1PShsPTAsZnVuY3Rpb24gZSh0KXtpZih0aGlzIGluc3RhbmNlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpO3JldHVybiBuZXcgZyhcImpzY29tcF9zeW1ib2xfXCIrKHR8fFwiXCIpK1wiX1wiK2wrKyx0KX0pO2Z1bmN0aW9uIGMoKXthKCk7dmFyIGU9aS5TeW1ib2wuaXRlcmF0b3I7ZXx8KGU9aS5TeW1ib2wuaXRlcmF0b3I9aS5TeW1ib2woXCJTeW1ib2wuaXRlcmF0b3JcIikpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIEFycmF5LnByb3RvdHlwZVtlXSYmcyhBcnJheS5wcm90b3R5cGUsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBjKCksKGU9e25leHQ6ZX0pW2kuU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlfShuKHRoaXMpKX19KSxjPWZ1bmN0aW9uKCl7fX1mdW5jdGlvbiBwKGUpe3ZhciB0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmZVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiB0P3QuY2FsbChlKTp7bmV4dDpuKGUpfX12YXIgZixkPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZT1lLG5ldyB0fTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YpZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgaDtlOnt2YXIgeT17fTt0cnl7eS5fX3Byb3RvX189e1Y6ITB9LGg9eS5WO2JyZWFrIGV9Y2F0Y2goZWUpe31oPSExfWY9aD9mdW5jdGlvbihlLHQpe2lmKGUuX19wcm90b19fPXQsZS5fX3Byb3RvX18hPT10KXRocm93IG5ldyBUeXBlRXJyb3IoZStcIiBpcyBub3QgZXh0ZW5zaWJsZVwiKTtyZXR1cm4gZX06bnVsbH12YXIgXz1mO2Z1bmN0aW9uIGIoZSx0KXtpZihlLnByb3RvdHlwZT1kKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLF8pXyhlLHQpO2Vsc2UgZm9yKHZhciBvIGluIHQpaWYoXCJwcm90b3R5cGVcIiE9bylpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pO3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8scil9ZWxzZSBlW29dPXRbb107ZS5PPXQucHJvdG90eXBlfWZ1bmN0aW9uIG0oZSx0KXtpZih0KXt2YXIgbz1pO2U9ZS5zcGxpdChcIi5cIik7Zm9yKHZhciByPTA7cjxlLmxlbmd0aC0xO3IrKyl7dmFyIG49ZVtyXTtuIGluIG98fChvW25dPXt9KSxvPW9bbl19KHQ9dChyPW9bZT1lW2UubGVuZ3RoLTFdXSkpIT1yJiZudWxsIT10JiZzKG8sZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19bShcIkFycmF5LnByb3RvdHlwZS5rZXlzXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe2MoKSxlIGluc3RhbmNlb2YgU3RyaW5nJiYoZSs9XCJcIik7dmFyIG89MCxyPXtuZXh0OmZ1bmN0aW9uKCl7aWYobzxlLmxlbmd0aCl7dmFyIG49bysrO3JldHVybnt2YWx1ZTp0KG4sZVtuXSksZG9uZTohMX19cmV0dXJuIHIubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19LHIubmV4dCgpfX07cmV0dXJuIHJbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiByfSxyfSh0aGlzLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKX19KSksbShcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe2U6e3ZhciBvPXRoaXM7byBpbnN0YW5jZW9mIFN0cmluZyYmKG89U3RyaW5nKG8pKTtmb3IodmFyIHI9by5sZW5ndGgsbj0wO248cjtuKyspe3ZhciBzPW9bbl07aWYoZS5jYWxsKHQscyxuLG8pKXtlPXM7YnJlYWsgZX19ZT12b2lkIDB9cmV0dXJuIGV9fSkpLG0oXCJPYmplY3QuaXNcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT1lJiZ0IT10fX0pKSxtKFwiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3ZhciBvPXRoaXM7byBpbnN0YW5jZW9mIFN0cmluZyYmKG89U3RyaW5nKG8pKTt2YXIgcj1vLmxlbmd0aDtmb3IoMD4odD10fHwwKSYmKHQ9TWF0aC5tYXgodCtyLDApKTt0PHI7dCsrKXt2YXIgbj1vW3RdO2lmKG49PT1lfHxPYmplY3QuaXMobixlKSlyZXR1cm4hMH1yZXR1cm4hMX19KSksbShcIlByb21pc2VcIiwoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLmI9MCx0aGlzLmM9dm9pZCAwLHRoaXMuYT1bXTt2YXIgdD10aGlzLmYoKTt0cnl7ZSh0LnJlc29sdmUsdC5yZWplY3QpfWNhdGNoKGUpe3QucmVqZWN0KGUpfX1mdW5jdGlvbiBvKCl7dGhpcy5hPW51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQ/ZTpuZXcgdCgoZnVuY3Rpb24odCl7dChlKX0pKX1pZihlKXJldHVybiBlO28ucHJvdG90eXBlLmI9ZnVuY3Rpb24oZSl7aWYobnVsbD09dGhpcy5hKXt0aGlzLmE9W107dmFyIHQ9dGhpczt0aGlzLmMoKGZ1bmN0aW9uKCl7dC5nKCl9KSl9dGhpcy5hLnB1c2goZSl9O3ZhciBuPWkuc2V0VGltZW91dDtvLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGUpe24oZSwwKX0sby5wcm90b3R5cGUuZz1mdW5jdGlvbigpe2Zvcig7dGhpcy5hJiZ0aGlzLmEubGVuZ3RoOyl7dmFyIGU9dGhpcy5hO3RoaXMuYT1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIG89ZVt0XTtlW3RdPW51bGw7dHJ5e28oKX1jYXRjaChlKXt0aGlzLmYoZSl9fX10aGlzLmE9bnVsbH0sby5wcm90b3R5cGUuZj1mdW5jdGlvbihlKXt0aGlzLmMoKGZ1bmN0aW9uKCl7dGhyb3cgZX0pKX0sdC5wcm90b3R5cGUuZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe298fChvPSEwLGUuY2FsbCh0LHIpKX19dmFyIHQ9dGhpcyxvPSExO3JldHVybntyZXNvbHZlOmUodGhpcy5zKSxyZWplY3Q6ZSh0aGlzLmcpfX0sdC5wcm90b3R5cGUucz1mdW5jdGlvbihlKXtpZihlPT09dGhpcyl0aGlzLmcobmV3IFR5cGVFcnJvcihcIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGZcIikpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHQpdGhpcy52KGUpO2Vsc2V7ZTpzd2l0Y2godHlwZW9mIGUpe2Nhc2VcIm9iamVjdFwiOnZhciBvPW51bGwhPWU7YnJlYWsgZTtjYXNlXCJmdW5jdGlvblwiOm89ITA7YnJlYWsgZTtkZWZhdWx0Om89ITF9bz90aGlzLm0oZSk6dGhpcy5oKGUpfX0sdC5wcm90b3R5cGUubT1mdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7dHJ5e3Q9ZS50aGVufWNhdGNoKGUpe3JldHVybiB2b2lkIHRoaXMuZyhlKX1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3RoaXMudyh0LGUpOnRoaXMuaChlKX0sdC5wcm90b3R5cGUuZz1mdW5jdGlvbihlKXt0aGlzLmkoMixlKX0sdC5wcm90b3R5cGUuaD1mdW5jdGlvbihlKXt0aGlzLmkoMSxlKX0sdC5wcm90b3R5cGUuaT1mdW5jdGlvbihlLHQpe2lmKDAhPXRoaXMuYil0aHJvdyBFcnJvcihcIkNhbm5vdCBzZXR0bGUoXCIrZStcIiwgXCIrdCtcIik6IFByb21pc2UgYWxyZWFkeSBzZXR0bGVkIGluIHN0YXRlXCIrdGhpcy5iKTt0aGlzLmI9ZSx0aGlzLmM9dCx0aGlzLmwoKX0sdC5wcm90b3R5cGUubD1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuYSl7Zm9yKHZhciBlPTA7ZTx0aGlzLmEubGVuZ3RoOysrZSlzLmIodGhpcy5hW2VdKTt0aGlzLmE9bnVsbH19O3ZhciBzPW5ldyBvO3JldHVybiB0LnByb3RvdHlwZS52PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZigpO2UuRih0LnJlc29sdmUsdC5yZWplY3QpfSx0LnByb3RvdHlwZS53PWZ1bmN0aW9uKGUsdCl7dmFyIG89dGhpcy5mKCk7dHJ5e2UuY2FsbCh0LG8ucmVzb2x2ZSxvLnJlamVjdCl9Y2F0Y2goZSl7by5yZWplY3QoZSl9fSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsbyl7ZnVuY3Rpb24gcihlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZnVuY3Rpb24odCl7dHJ5e24oZSh0KSl9Y2F0Y2goZSl7cyhlKX19OnR9dmFyIG4scyxpPW5ldyB0KChmdW5jdGlvbihlLHQpe249ZSxzPXR9KSk7cmV0dXJuIHRoaXMuRihyKGUsbikscihvLHMpKSxpfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxlKX0sdC5wcm90b3R5cGUuRj1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXtzd2l0Y2goci5iKXtjYXNlIDE6ZShyLmMpO2JyZWFrO2Nhc2UgMjp0KHIuYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcIlVuZXhwZWN0ZWQgc3RhdGU6IFwiK3IuYil9fXZhciByPXRoaXM7bnVsbD09dGhpcy5hP3MuYihvKTp0aGlzLmEucHVzaChvKX0sdC5yZXNvbHZlPXIsdC5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG8pe28oZSl9KSl9LHQucmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbyl7Zm9yKHZhciBuPXAoZSkscz1uLm5leHQoKTshcy5kb25lO3M9bi5uZXh0KCkpcihzLnZhbHVlKS5GKHQsbyl9KSl9LHQuYWxsPWZ1bmN0aW9uKGUpe3ZhciBvPXAoZSksbj1vLm5leHQoKTtyZXR1cm4gbi5kb25lP3IoW10pOm5ldyB0KChmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lbdF09bywwPT0tLWEmJmUoaSl9fXZhciBpPVtdLGE9MDtkb3tpLnB1c2godm9pZCAwKSxhKysscihuLnZhbHVlKS5GKHMoaS5sZW5ndGgtMSksdCksbj1vLm5leHQoKX13aGlsZSghbi5kb25lKX0pKX0sdH0pKTt2YXIgUz1TfHx7fSxFPXRoaXN8fHNlbGY7ZnVuY3Rpb24gVChlLHQpe2U9ZS5zcGxpdChcIi5cIiksdD10fHxFO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKWlmKG51bGw9PSh0PXRbZVtvXV0pKXJldHVybiBudWxsO3JldHVybiB0fWZ1bmN0aW9uIEEoKXt9ZnVuY3Rpb24gdihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm5cIm9iamVjdFwiPT10JiZudWxsIT1lfHxcImZ1bmN0aW9uXCI9PXR9dmFyIEk9XCJjbG9zdXJlX3VpZF9cIisoMWU5Kk1hdGgucmFuZG9tKCk+Pj4wKSxSPTA7ZnVuY3Rpb24gTyhlLHQsbyl7cmV0dXJuIGUuY2FsbC5hcHBseShlLmJpbmQsYXJndW1lbnRzKX1mdW5jdGlvbiBqKGUsdCxvKXtpZighZSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KG8sciksZS5hcHBseSh0LG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHcoZSx0LG8pe3JldHVybih3PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiYtMSE9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmcoKS5pbmRleE9mKFwibmF0aXZlIGNvZGVcIik/TzpqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTihlLHQpe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5PPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyBvLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gQygpe3RoaXMuYT17fX1mdW5jdGlvbiBVKGUsdCxvLHIpe3RoaXMuZj1lLHRoaXMuYz10LHRoaXMuYj1vLHRoaXMuYT1yfWZ1bmN0aW9uIE0oZSx0LG8scil7bz12b2lkIDA9PT1vP3t9Om8sdGhpcy5jPWUsdGhpcy5hPW8sdGhpcy5iPXQsdGhpcy5mPXZvaWQgMD09PXI/bnVsbDpyfWZ1bmN0aW9uIEwoZSx0LG8pe289dm9pZCAwPT09bz97fTpvO3ZhciByPXZvaWQgMD09PXI/bmV3IEM6cjtyZXR1cm4gbmV3IFUodCxlLG8scil9ZnVuY3Rpb24gRChlLHQsbyl7bz12b2lkIDA9PT1vP3t9Om8sdD1FcnJvci5jYWxsKHRoaXMsdCksdGhpcy5tZXNzYWdlPXQubWVzc2FnZSxcInN0YWNrXCJpbiB0JiYodGhpcy5zdGFjaz10LnN0YWNrKSx0aGlzLmNvZGU9ZSx0aGlzLm1ldGFkYXRhPW99ZnVuY3Rpb24gQihlKXt0aGlzLmE9ZX1mdW5jdGlvbiBQKGUpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsUCk7ZWxzZXt2YXIgdD1FcnJvcigpLnN0YWNrO3QmJih0aGlzLnN0YWNrPXQpfWUmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGUpKX1mdW5jdGlvbiBGKGUsdCl7Zm9yKHZhciBvPVwiXCIscj0oZT1lLnNwbGl0KFwiJXNcIikpLmxlbmd0aC0xLG49MDtuPHI7bisrKW8rPWVbbl0rKG48dC5sZW5ndGg/dFtuXTpcIiVzXCIpO1AuY2FsbCh0aGlzLG8rZVtyXSl9ZnVuY3Rpb24geCgpe3RoaXMubD1udWxsLHRoaXMuaT1bXSx0aGlzLm09MCx0aGlzLmI9Vyx0aGlzLmY9dGhpcy5hPXRoaXMuaD0wLHRoaXMuYz1udWxsLHRoaXMuZz0wfUMucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hW2VdfSxDLnByb3RvdHlwZS5HPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYSl9LFUucHJvdG90eXBlLmdldFJlcXVlc3RNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZn0sVS5wcm90b3R5cGUuZ2V0TWV0aG9kRGVzY3JpcHRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN9LFUucHJvdG90eXBlLmdldE1ldGFkYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn0sVS5wcm90b3R5cGUuZ2V0Q2FsbE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfSxNLnByb3RvdHlwZS5nZXRSZXNwb25zZU1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jfSxNLnByb3RvdHlwZS5nZXRNZXRhZGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9LE0ucHJvdG90eXBlLmdldE1ldGhvZERlc2NyaXB0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ifSxNLnByb3RvdHlwZS5nZXRTdGF0dXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mfSxiKEQsRXJyb3IpLEQucHJvdG90eXBlLm5hbWU9XCJScGNFcnJvclwiLEIucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJkYXRhXCI9PWV8fFwiZXJyb3JcIj09ZT90aGlzOnRoaXMuYS5vbihlLHQpfSxCLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmEucmVtb3ZlTGlzdGVuZXIoZSx0KX0sQi5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5hLmNhbmNlbCgpfSxOKFAsRXJyb3IpLFAucHJvdG90eXBlLm5hbWU9XCJDdXN0b21FcnJvclwiLE4oRixQKSxGLnByb3RvdHlwZS5uYW1lPVwiQXNzZXJ0aW9uRXJyb3JcIjt2YXIgVz0wLEg9MTI4O2Z1bmN0aW9uIFYoZSx0LG8scil7dGhyb3cgZS5iPTMsZS5sPVwiVGhlIHN0cmVhbSBpcyBicm9rZW4gQFwiK2UubStcIi9cIitvK1wiLiBFcnJvcjogXCIrcitcIi4gV2l0aCBpbnB1dDpcXG5cIit0LEVycm9yKGUubCl9dmFyIEcsaz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9mdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCx2b2lkIDApfTpmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0fHwxIT10Lmxlbmd0aD8tMTplLmluZGV4T2YodCwwKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZihvIGluIGUmJmVbb109PT10KXJldHVybiBvO3JldHVybi0xfSxZPVN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoZSlbMV19O2Z1bmN0aW9uIHooZSx0KXtyZXR1cm4tMSE9ZS5pbmRleE9mKHQpfWZ1bmN0aW9uIEsoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9ZTp7dmFyIFg9RS5uYXZpZ2F0b3I7aWYoWCl7dmFyIHE9WC51c2VyQWdlbnQ7aWYocSl7Rz1xO2JyZWFrIGV9fUc9XCJcIn12YXIgJD1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiBaKGUpe3ZhciB0PTE7ZT1lLnNwbGl0KFwiOlwiKTtmb3IodmFyIG89W107MDx0JiZlLmxlbmd0aDspby5wdXNoKGUuc2hpZnQoKSksdC0tO3JldHVybiBlLmxlbmd0aCYmby5wdXNoKGUuam9pbihcIjpcIikpLG99ZnVuY3Rpb24gSihlKXtyZXR1cm4gSltcIiBcIl0oZSksZX1KW1wiIFwiXT1BO3ZhciBRLGVlLHRlPXooRyxcIk9wZXJhXCIpLG9lPXooRyxcIlRyaWRlbnRcIil8fHooRyxcIk1TSUVcIikscmU9eihHLFwiRWRnZVwiKSxuZT16KEcsXCJHZWNrb1wiKSYmISh6KEcudG9Mb3dlckNhc2UoKSxcIndlYmtpdFwiKSYmIXooRyxcIkVkZ2VcIikpJiYhKHooRyxcIlRyaWRlbnRcIil8fHooRyxcIk1TSUVcIikpJiYheihHLFwiRWRnZVwiKSxzZT16KEcudG9Mb3dlckNhc2UoKSxcIndlYmtpdFwiKSYmIXooRyxcIkVkZ2VcIik7ZTp7dmFyIGllPVwiXCIsYWU9KGVlPUcsbmU/L3J2OihbXlxcKTtdKykoXFwpfDspLy5leGVjKGVlKTpyZT8vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGVlKTpvZT8vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoZWUpOnNlPy9XZWJLaXRcXC8oXFxTKykvLmV4ZWMoZWUpOnRlPy8oPzpWZXJzaW9uKVsgXFwvXT8oXFxTKykvLmV4ZWMoZWUpOnZvaWQgMCk7aWYoYWUmJihpZT1hZT9hZVsxXTpcIlwiKSxvZSl7dmFyIGdlLGxlPUUuZG9jdW1lbnQ7aWYobnVsbCE9KGdlPWxlP2xlLmRvY3VtZW50TW9kZTp2b2lkIDApJiZnZT5wYXJzZUZsb2F0KGllKSl7UT1TdHJpbmcoZ2UpO2JyZWFrIGV9fVE9aWV9dmFyIHVlPXt9O2Z1bmN0aW9uIGNlKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXVlO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCw5KT90WzldOnRbOV09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PVkoU3RyaW5nKFEpKS5zcGxpdChcIi5cIiksbz1ZKFwiOVwiKS5zcGxpdChcIi5cIikscj1NYXRoLm1heCh0Lmxlbmd0aCxvLmxlbmd0aCksbj0wOzA9PWUmJm48cjtuKyspe3ZhciBzPXRbbl18fFwiXCIsaT1vW25dfHxcIlwiO2Rve2lmKHM9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMocyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXSxpPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGkpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl0sMD09c1swXS5sZW5ndGgmJjA9PWlbMF0ubGVuZ3RoKWJyZWFrO2U9SygwPT1zWzFdLmxlbmd0aD8wOnBhcnNlSW50KHNbMV0sMTApLDA9PWlbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoaVsxXSwxMCkpfHxLKDA9PXNbMl0ubGVuZ3RoLDA9PWlbMl0ubGVuZ3RoKXx8SyhzWzJdLGlbMl0pLHM9c1szXSxpPWlbM119d2hpbGUoMD09ZSl9cmV0dXJuIDA8PWV9KCl9KCl9ZnVuY3Rpb24gcGUoKXswIT1mZSYmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLEkpJiZ0aGlzW0ldfHwodGhpc1tJXT0rK1IpKSx0aGlzLks9dGhpcy5LfXZhciBmZT0wO3BlLnByb3RvdHlwZS5LPSExO3ZhciBkZT1PYmplY3QuZnJlZXplfHxmdW5jdGlvbihlKXtyZXR1cm4gZX07ZnVuY3Rpb24gaGUoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLmE9dGhpcy50YXJnZXQ9dCx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITF9aGUucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9O3ZhciB5ZT1mdW5jdGlvbigpe2lmKCFFLmFkZEV2ZW50TGlzdGVuZXJ8fCFPYmplY3QuZGVmaW5lUHJvcGVydHkpcmV0dXJuITE7dmFyIGU9ITEsdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe2U9ITB9fSk7dHJ5e0UuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixBLHQpLEUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixBLHQpfWNhdGNoKGUpe31yZXR1cm4gZX0oKTtmdW5jdGlvbiBfZShlLHQpe2lmKGhlLmNhbGwodGhpcyxlP2UudHlwZTpcIlwiKSx0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5hPXRoaXMudGFyZ2V0PW51bGwsdGhpcy5idXR0b249dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPTAsdGhpcy5rZXk9XCJcIix0aGlzLm1ldGFLZXk9dGhpcy5zaGlmdEtleT10aGlzLmFsdEtleT10aGlzLmN0cmxLZXk9ITEsdGhpcy5wb2ludGVySWQ9MCx0aGlzLnBvaW50ZXJUeXBlPVwiXCIsdGhpcy5jPW51bGwsZSl7dmFyIG89dGhpcy50eXBlPWUudHlwZSxyPWUuY2hhbmdlZFRvdWNoZXMmJmUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoP2UuY2hhbmdlZFRvdWNoZXNbMF06bnVsbDtpZih0aGlzLnRhcmdldD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50LHRoaXMuYT10LHQ9ZS5yZWxhdGVkVGFyZ2V0KXtpZihuZSl7ZTp7dHJ5e0oodC5ub2RlTmFtZSk7dmFyIG49ITA7YnJlYWsgZX1jYXRjaChlKXt9bj0hMX1ufHwodD1udWxsKX19ZWxzZVwibW91c2VvdmVyXCI9PW8/dD1lLmZyb21FbGVtZW50OlwibW91c2VvdXRcIj09byYmKHQ9ZS50b0VsZW1lbnQpO3RoaXMucmVsYXRlZFRhcmdldD10LHI/KHRoaXMuY2xpZW50WD12b2lkIDAhPT1yLmNsaWVudFg/ci5jbGllbnRYOnIucGFnZVgsdGhpcy5jbGllbnRZPXZvaWQgMCE9PXIuY2xpZW50WT9yLmNsaWVudFk6ci5wYWdlWSx0aGlzLnNjcmVlblg9ci5zY3JlZW5YfHwwLHRoaXMuc2NyZWVuWT1yLnNjcmVlbll8fDApOih0aGlzLmNsaWVudFg9dm9pZCAwIT09ZS5jbGllbnRYP2UuY2xpZW50WDplLnBhZ2VYLHRoaXMuY2xpZW50WT12b2lkIDAhPT1lLmNsaWVudFk/ZS5jbGllbnRZOmUucGFnZVksdGhpcy5zY3JlZW5YPWUuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9ZS5zY3JlZW5ZfHwwKSx0aGlzLmJ1dHRvbj1lLmJ1dHRvbix0aGlzLmtleT1lLmtleXx8XCJcIix0aGlzLmN0cmxLZXk9ZS5jdHJsS2V5LHRoaXMuYWx0S2V5PWUuYWx0S2V5LHRoaXMuc2hpZnRLZXk9ZS5zaGlmdEtleSx0aGlzLm1ldGFLZXk9ZS5tZXRhS2V5LHRoaXMucG9pbnRlcklkPWUucG9pbnRlcklkfHwwLHRoaXMucG9pbnRlclR5cGU9XCJzdHJpbmdcIj09dHlwZW9mIGUucG9pbnRlclR5cGU/ZS5wb2ludGVyVHlwZTpiZVtlLnBvaW50ZXJUeXBlXXx8XCJcIix0aGlzLmM9ZSxlLmRlZmF1bHRQcmV2ZW50ZWQmJl9lLk8uYi5jYWxsKHRoaXMpfX1OKF9lLGhlKTt2YXIgYmU9ZGUoezI6XCJ0b3VjaFwiLDM6XCJwZW5cIiw0OlwibW91c2VcIn0pO19lLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7X2UuTy5iLmNhbGwodGhpcyk7dmFyIGU9dGhpcy5jO2UucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITF9O3ZhciBtZT1cImNsb3N1cmVfbGlzdGVuYWJsZV9cIisoMWU2Kk1hdGgucmFuZG9tKCl8MCksU2U9MDtmdW5jdGlvbiBFZShlLHQsbyxyLG4pe3RoaXMubGlzdGVuZXI9ZSx0aGlzLnByb3h5PW51bGwsdGhpcy5zcmM9dCx0aGlzLnR5cGU9byx0aGlzLmNhcHR1cmU9ISFyLHRoaXMuSD1uLHRoaXMua2V5PSsrU2UsdGhpcy5BPXRoaXMuRD0hMX1mdW5jdGlvbiBUZShlKXtlLkE9ITAsZS5saXN0ZW5lcj1udWxsLGUucHJveHk9bnVsbCxlLnNyYz1udWxsLGUuSD1udWxsfWZ1bmN0aW9uIEFlKGUpe3RoaXMuc3JjPWUsdGhpcy5hPXt9LHRoaXMuYj0wfWZ1bmN0aW9uIHZlKGUsdCl7dmFyIG89dC50eXBlO2lmKG8gaW4gZS5hKXt2YXIgcixuPWUuYVtvXSxzPWsobix0KTsocj0wPD1zKSYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG4scywxKSxyJiYoVGUodCksMD09ZS5hW29dLmxlbmd0aCYmKGRlbGV0ZSBlLmFbb10sZS5iLS0pKX19ZnVuY3Rpb24gSWUoZSx0LG8scil7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBzPWVbbl07aWYoIXMuQSYmcy5saXN0ZW5lcj09dCYmcy5jYXB0dXJlPT0hIW8mJnMuSD09cilyZXR1cm4gbn1yZXR1cm4tMX1BZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9ZS50b1N0cmluZygpOyhlPXRoaXMuYVtzXSl8fChlPXRoaXMuYVtzXT1bXSx0aGlzLmIrKyk7dmFyIGk9SWUoZSx0LHIsbik7cmV0dXJuLTE8aT8odD1lW2ldLG98fCh0LkQ9ITEpKTooKHQ9bmV3IEVlKHQsdGhpcy5zcmMscywhIXIsbikpLkQ9byxlLnB1c2godCkpLHR9LEFlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSx0LG8scil7aWYoISgoZT1lLnRvU3RyaW5nKCkpaW4gdGhpcy5hKSlyZXR1cm4hMTt2YXIgbj10aGlzLmFbZV07cmV0dXJuLTE8KHQ9SWUobix0LG8scikpJiYoVGUoblt0XSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG4sdCwxKSwwPT1uLmxlbmd0aCYmKGRlbGV0ZSB0aGlzLmFbZV0sdGhpcy5iLS0pLCEwKX07dmFyIFJlPVwiY2xvc3VyZV9sbV9cIisoMWU2Kk1hdGgucmFuZG9tKCl8MCksT2U9e307ZnVuY3Rpb24gamUoZSx0LG8scixuKXtpZihyJiZyLm9uY2UpTmUoZSx0LG8scixuKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspamUoZSx0W3NdLG8scixuKTtlbHNlIG89UGUobyksZSYmZVttZV0/ZS5mLmFkZChTdHJpbmcodCksbywhMSx2KHIpPyEhci5jYXB0dXJlOiEhcixuKTp3ZShlLHQsbywhMSxyLG4pfWZ1bmN0aW9uIHdlKGUsdCxvLHIsbixzKXtpZighdCl0aHJvdyBFcnJvcihcIkludmFsaWQgZXZlbnQgdHlwZVwiKTt2YXIgaT12KG4pPyEhbi5jYXB0dXJlOiEhbixhPURlKGUpO2lmKGF8fChlW1JlXT1hPW5ldyBBZShlKSksIShvPWEuYWRkKHQsbyxyLGkscykpLnByb3h5KWlmKHI9ZnVuY3Rpb24oKXt2YXIgZT1MZTtyZXR1cm4gZnVuY3Rpb24gdChvKXtyZXR1cm4gZS5jYWxsKHQuc3JjLHQubGlzdGVuZXIsbyl9fSgpLG8ucHJveHk9cixyLnNyYz1lLHIubGlzdGVuZXI9byxlLmFkZEV2ZW50TGlzdGVuZXIpeWV8fChuPWkpLHZvaWQgMD09PW4mJihuPSExKSxlLmFkZEV2ZW50TGlzdGVuZXIodC50b1N0cmluZygpLHIsbik7ZWxzZSBpZihlLmF0dGFjaEV2ZW50KWUuYXR0YWNoRXZlbnQoTWUodC50b1N0cmluZygpKSxyKTtlbHNle2lmKCFlLmFkZExpc3RlbmVyfHwhZS5yZW1vdmVMaXN0ZW5lcil0aHJvdyBFcnJvcihcImFkZEV2ZW50TGlzdGVuZXIgYW5kIGF0dGFjaEV2ZW50IGFyZSB1bmF2YWlsYWJsZS5cIik7ZS5hZGRMaXN0ZW5lcihyKX19ZnVuY3Rpb24gTmUoZSx0LG8scixuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKU5lKGUsdFtzXSxvLHIsbik7ZWxzZSBvPVBlKG8pLGUmJmVbbWVdP2UuZi5hZGQoU3RyaW5nKHQpLG8sITAsdihyKT8hIXIuY2FwdHVyZTohIXIsbik6d2UoZSx0LG8sITAscixuKX1mdW5jdGlvbiBDZShlLHQsbyxyLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspQ2UoZSx0W3NdLG8scixuKTtlbHNlIHI9dihyKT8hIXIuY2FwdHVyZTohIXIsbz1QZShvKSxlJiZlW21lXT9lLmYucmVtb3ZlKFN0cmluZyh0KSxvLHIsbik6ZSYmKGU9RGUoZSkpJiYodD1lLmFbdC50b1N0cmluZygpXSxlPS0xLHQmJihlPUllKHQsbyxyLG4pKSwobz0tMTxlP3RbZV06bnVsbCkmJlVlKG8pKX1mdW5jdGlvbiBVZShlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSYmZSYmIWUuQSl7dmFyIHQ9ZS5zcmM7aWYodCYmdFttZV0pdmUodC5mLGUpO2Vsc2V7dmFyIG89ZS50eXBlLHI9ZS5wcm94eTt0LnJlbW92ZUV2ZW50TGlzdGVuZXI/dC5yZW1vdmVFdmVudExpc3RlbmVyKG8scixlLmNhcHR1cmUpOnQuZGV0YWNoRXZlbnQ/dC5kZXRhY2hFdmVudChNZShvKSxyKTp0LmFkZExpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyKHIpLChvPURlKHQpKT8odmUobyxlKSwwPT1vLmImJihvLnNyYz1udWxsLHRbUmVdPW51bGwpKTpUZShlKX19fWZ1bmN0aW9uIE1lKGUpe3JldHVybiBlIGluIE9lP09lW2VdOk9lW2VdPVwib25cIitlfWZ1bmN0aW9uIExlKGUsdCl7aWYoZS5BKWU9ITA7ZWxzZXt0PW5ldyBfZSh0LHRoaXMpO3ZhciBvPWUubGlzdGVuZXIscj1lLkh8fGUuc3JjO2UuRCYmVWUoZSksZT1vLmNhbGwocix0KX1yZXR1cm4gZX1mdW5jdGlvbiBEZShlKXtyZXR1cm4oZT1lW1JlXSlpbnN0YW5jZW9mIEFlP2U6bnVsbH12YXIgQmU9XCJfX2Nsb3N1cmVfZXZlbnRzX2ZuX1wiKygxZTkqTWF0aC5yYW5kb20oKT4+PjApO2Z1bmN0aW9uIFBlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTooZVtCZV18fChlW0JlXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5oYW5kbGVFdmVudCh0KX0pLGVbQmVdKX1mdW5jdGlvbiBGZSgpe3BlLmNhbGwodGhpcyksdGhpcy5mPW5ldyBBZSh0aGlzKSx0aGlzLlU9dGhpc31mdW5jdGlvbiB4ZShlLHQpe2U9ZS5VO3ZhciBvPXQudHlwZXx8dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl0PW5ldyBoZSh0LGUpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIGhlKXQudGFyZ2V0PXQudGFyZ2V0fHxlO2Vsc2V7dmFyIHI9dDshZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7Zm9yKG8gaW4gcj1hcmd1bWVudHNbbl0pZVtvXT1yW29dO2Zvcih2YXIgcz0wO3M8JC5sZW5ndGg7cysrKW89JFtzXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixvKSYmKGVbb109cltvXSl9fSh0PW5ldyBoZShvLGUpLHIpfVdlKGU9dC5hPWUsbywhMCx0KSxXZShlLG8sITEsdCl9ZnVuY3Rpb24gV2UoZSx0LG8scil7aWYodD1lLmYuYVtTdHJpbmcodCldKXt0PXQuY29uY2F0KCk7Zm9yKHZhciBuPSEwLHM9MDtzPHQubGVuZ3RoOysrcyl7dmFyIGk9dFtzXTtpZihpJiYhaS5BJiZpLmNhcHR1cmU9PW8pe3ZhciBhPWkubGlzdGVuZXIsZz1pLkh8fGkuc3JjO2kuRCYmdmUoZS5mLGkpLG49ITEhPT1hLmNhbGwoZyxyKSYmbn19fX1mdW5jdGlvbiBIZShlLHQsbyl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlvJiYoZT13KGUsbykpO2Vsc2V7aWYoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuaGFuZGxlRXZlbnQpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGxpc3RlbmVyIGFyZ3VtZW50XCIpO2U9dyhlLmhhbmRsZUV2ZW50LGUpfXJldHVybiAyMTQ3NDgzNjQ3PE51bWJlcih0KT8tMTpFLnNldFRpbWVvdXQoZSx0fHwwKX1mdW5jdGlvbiBWZShlLHQpe3RoaXMubmFtZT1lLHRoaXMudmFsdWU9dH1OKEZlLHBlKSxGZS5wcm90b3R5cGVbbWVdPSEwLEZlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxvLHIpe2plKHRoaXMsZSx0LG8scil9LEZlLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxvLHIpe0NlKHRoaXMsZSx0LG8scil9LFZlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9O3ZhciBHZSxrZSxZZSx6ZT1uZXcgVmUoXCJPRkZcIiwxLzApLEtlPW5ldyBWZShcIlNFVkVSRVwiLDFlMyksWGU9bmV3IFZlKFwiQ09ORklHXCIsNzAwKSxxZT1uZXcgVmUoXCJGSU5FXCIsNTAwKTtmdW5jdGlvbiAkZSgpe3RoaXMuY2xlYXIoKX1mdW5jdGlvbiBaZShlLHQsbyl7dGhpcy5yZXNldChlfHx6ZSx0LG8sdm9pZCAwLHZvaWQgMCl9ZnVuY3Rpb24gSmUoZSx0KXt0aGlzLmE9bnVsbCx0aGlzLmY9W10sdGhpcy5iPSh2b2lkIDA9PT10P251bGw6dCl8fG51bGwsdGhpcy5jPVtdLHRoaXMuZz17YTpmdW5jdGlvbigpe3JldHVybiBlfX19ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUuYT9lLmE6ZS5iP1FlKGUuYik6KGZ1bmN0aW9uKGUsdCl7dGhyb3cgbmV3IEYoXCJGYWlsdXJlXCIrKGU/XCI6IFwiK2U6XCJcIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0oXCJSb290IGxvZ2dlciBoYXMgbm8gbGV2ZWwgc2V0LlwiKSx6ZSl9ZnVuY3Rpb24gZXQoKXt0aGlzLmVudHJpZXM9e307dmFyIGU9bmV3IEplKFwiXCIpO2UuYT1YZSx0aGlzLmVudHJpZXNbXCJcIl09ZX1mdW5jdGlvbiB0dChlLHQsbyl7dmFyIHI9ZS5lbnRyaWVzW3RdO2lmKHIpcmV0dXJuIHZvaWQgMCE9PW8mJihyLmE9bykscjtyPXR0KGUsdC5zdWJzdHIoMCx0Lmxhc3RJbmRleE9mKFwiLlwiKSkpO3ZhciBuPW5ldyBKZSh0LHIpO3JldHVybiBlLmVudHJpZXNbdF09bixyLmMucHVzaChuKSx2b2lkIDAhPT1vJiYobi5hPW8pLG59ZnVuY3Rpb24gb3QoKXtyZXR1cm4ga2V8fChrZT1uZXcgZXQpLGtlfWZ1bmN0aW9uIHJ0KGUsdCxvKXt2YXIgcjsocj1lKSYmKHI9ZSYmdCkmJihyPShyPXQudmFsdWUpPj0oZT9RZSh0dChvdCgpLGUuYSgpKSk6emUpLnZhbHVlKSxyJiYodD10fHx6ZSxyPXR0KG90KCksZS5hKCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG8mJihvPW8oKSksR2V8fChHZT1uZXcgJGUpLGZ1bmN0aW9uKGUsdCl7Zm9yKDtlOyllLmYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh0KX0pKSxlPWUuYn0ocixlPW5ldyBaZSh0LG8sZS5hKCkpKSl9ZnVuY3Rpb24gbnQoZSx0KXtlJiZydChlLHFlLHQpfWZ1bmN0aW9uIHN0KCl7fWZ1bmN0aW9uIGl0KGUpe3ZhciB0O3JldHVybih0PWUuYSl8fCh0PXt9LGx0KGUpJiYodFswXT0hMCx0WzFdPSEwKSx0PWUuYT10KSx0fWZ1bmN0aW9uIGF0KCl7fWZ1bmN0aW9uIGd0KGUpe3JldHVybihlPWx0KGUpKT9uZXcgQWN0aXZlWE9iamVjdChlKTpuZXcgWE1MSHR0cFJlcXVlc3R9ZnVuY3Rpb24gbHQoZSl7aWYoIWUuYiYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgQWN0aXZlWE9iamVjdCl7Zm9yKHZhciB0PVtcIk1TWE1MMi5YTUxIVFRQLjYuMFwiLFwiTVNYTUwyLlhNTEhUVFAuMy4wXCIsXCJNU1hNTDIuWE1MSFRUUFwiLFwiTWljcm9zb2Z0LlhNTEhUVFBcIl0sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj10W29dO3RyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QociksZS5iPXJ9Y2F0Y2goZSl7fX10aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBjcmVhdGUgQWN0aXZlWE9iamVjdC4gQWN0aXZlWCBtaWdodCBiZSBkaXNhYmxlZCwgb3IgTVNYTUwgbWlnaHQgbm90IGJlIGluc3RhbGxlZFwiKX1yZXR1cm4gZS5ifWZ1bmN0aW9uIHV0KGUsdCl7dGhpcy5iPWVbRS5TeW1ib2wuaXRlcmF0b3JdKCksdGhpcy5jPXQsdGhpcy5mPTB9JGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7fSxaZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt9LHN0LnByb3RvdHlwZS5hPW51bGwsTihhdCxzdCksWWU9bmV3IGF0LGEoKSxjKCksdXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdXQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmIubmV4dCgpO3JldHVybnt2YWx1ZTplLmRvbmU/dm9pZCAwOnRoaXMuYy5jYWxsKHZvaWQgMCxlLnZhbHVlLHRoaXMuZisrKSxkb25lOmUuZG9uZX19LGEoKSxjKCksYSgpLGMoKTt2YXIgY3Q9XCJTdG9wSXRlcmF0aW9uXCJpbiBFP0UuU3RvcEl0ZXJhdGlvbjp7bWVzc2FnZTpcIlN0b3BJdGVyYXRpb25cIixzdGFjazpcIlwifTtmdW5jdGlvbiBwdCgpe31mdW5jdGlvbiBmdChlKXtpZihlIGluc3RhbmNlb2YgaHR8fGUgaW5zdGFuY2VvZiB5dHx8ZSBpbnN0YW5jZW9mIF90KXJldHVybiBlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUubmV4dClyZXR1cm4gbmV3IGh0KChmdW5jdGlvbigpe3JldHVybiBkdChlKX0pKTtpZihhKCksYygpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXSlyZXR1cm4gYSgpLGMoKSxuZXcgaHQoKGZ1bmN0aW9uKCl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpfSkpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUudSlyZXR1cm4gbmV3IGh0KChmdW5jdGlvbigpe3JldHVybiBkdChlLnUoKSl9KSk7dGhyb3cgRXJyb3IoXCJOb3QgYW4gaXRlcmF0b3Igb3IgaXRlcmFibGUuXCIpfWZ1bmN0aW9uIGR0KGUpe2lmKCEoZSBpbnN0YW5jZW9mIHB0KSlyZXR1cm4gZTt2YXIgdD0hMTtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2Zvcih2YXIgbzshdDspdHJ5e289ZS5hKCk7YnJlYWt9Y2F0Y2goZSl7aWYoZSE9PWN0KXRocm93IGU7dD0hMH1yZXR1cm57dmFsdWU6byxkb25lOnR9fX19ZnVuY3Rpb24gaHQoZSl7dGhpcy5iPWV9ZnVuY3Rpb24geXQoZSl7dGhpcy5iPWV9ZnVuY3Rpb24gX3QoZSl7aHQuY2FsbCh0aGlzLChmdW5jdGlvbigpe3JldHVybiBlfSkpLHRoaXMuZj1lfWZ1bmN0aW9uIGJ0KGUsdCl7dGhpcy5vPXt9LHRoaXMuaj1bXSx0aGlzLkI9dGhpcy5zaXplPTA7dmFyIG89YXJndW1lbnRzLmxlbmd0aDtpZigxPG8pe2lmKG8lMil0aHJvdyBFcnJvcihcIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO2Zvcih2YXIgcj0wO3I8bztyKz0yKXRoaXMuc2V0KGFyZ3VtZW50c1tyXSxhcmd1bWVudHNbcisxXSl9ZWxzZSBlJiZ0aGlzLmFkZEFsbChlKX1mdW5jdGlvbiBtdChlKXtpZihlLnNpemUhPWUuai5sZW5ndGgpe2Zvcih2YXIgdD0wLG89MDt0PGUuai5sZW5ndGg7KXt2YXIgcj1lLmpbdF07U3QoZS5vLHIpJiYoZS5qW28rK109ciksdCsrfWUuai5sZW5ndGg9b31pZihlLnNpemUhPWUuai5sZW5ndGgpe3ZhciBuPXt9O2ZvcihvPXQ9MDt0PGUuai5sZW5ndGg7KVN0KG4scj1lLmpbdF0pfHwoZS5qW28rK109cixuW3JdPTEpLHQrKztlLmoubGVuZ3RoPW99fWZ1bmN0aW9uIFN0KGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfXB0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHB0LnByb3RvdHlwZS5hLmNhbGwodGhpcyl9LHB0LnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dGhyb3cgY3R9LHB0LnByb3RvdHlwZS51PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGEoKSxjKCksaHQucHJvdG90eXBlLnU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHl0KHRoaXMuYigpKX0saHQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYigpKX0saHQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYigpKX0sYSgpLGMoKSxiKHl0LHB0KSx5dC5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYi5uZXh0KCk7aWYoZS5kb25lKXRocm93IGN0O3JldHVybiBlLnZhbHVlfSx5dC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3JldHVybiB5dC5wcm90b3R5cGUuYS5jYWxsKHRoaXMpfSx5dC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiBuZXcgX3QodGhpcy5iKX0seXQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYil9LGIoX3QsaHQpLF90LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZi5uZXh0KCl9LChyPWJ0LnByb3RvdHlwZSkuRz1mdW5jdGlvbigpe3JldHVybiBtdCh0aGlzKSx0aGlzLmouY29uY2F0KCl9LHIuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBTdCh0aGlzLm8sZSl9LHIuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm89e30sdGhpcy5CPXRoaXMuc2l6ZT10aGlzLmoubGVuZ3RoPTB9LHIucmVtb3ZlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRlbGV0ZShlKX0sci5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuISFTdCh0aGlzLm8sZSkmJihkZWxldGUgdGhpcy5vW2VdLC0tdGhpcy5zaXplLHRoaXMuQisrLHRoaXMuai5sZW5ndGg+Mip0aGlzLnNpemUmJm10KHRoaXMpLCEwKX0sci5nZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU3QodGhpcy5vLGUpP3RoaXMub1tlXTp0fSxyLnNldD1mdW5jdGlvbihlLHQpe1N0KHRoaXMubyxlKXx8KHRoaXMuc2l6ZSs9MSx0aGlzLmoucHVzaChlKSx0aGlzLkIrKyksdGhpcy5vW2VdPXR9LHIuYWRkQWxsPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBidClmb3IodmFyIHQ9ZS5HKCksbz0wO288dC5sZW5ndGg7bysrKXRoaXMuc2V0KHRbb10sZS5nZXQodFtvXSkpO2Vsc2UgZm9yKHQgaW4gZSl0aGlzLnNldCh0LGVbdF0pfSxyLmZvckVhY2g9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89dGhpcy5HKCkscj0wO3I8by5sZW5ndGg7cisrKXt2YXIgbj1vW3JdLHM9dGhpcy5nZXQobik7ZS5jYWxsKHQscyxuLHRoaXMpfX0sci5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYnQodGhpcyl9LHIua2V5cz1mdW5jdGlvbigpe3JldHVybiBmdCh0aGlzLnUoITApKS5jKCl9LHIudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGZ0KHRoaXMudSghMSkpLmMoKX0sci5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHV0KGUsdCl9KHRoaXMua2V5cygpLChmdW5jdGlvbih0KXtyZXR1cm5bdCxlLmdldCh0KV19KSl9LHIudT1mdW5jdGlvbihlKXttdCh0aGlzKTt2YXIgdD0wLG89dGhpcy5CLHI9dGhpcyxuPW5ldyBwdDtyZXR1cm4gbi5hPWZ1bmN0aW9uKCl7aWYobyE9ci5CKXRocm93IEVycm9yKFwiVGhlIG1hcCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWRcIik7aWYodD49ci5qLmxlbmd0aCl0aHJvdyBjdDt2YXIgbj1yLmpbdCsrXTtyZXR1cm4gZT9uOnIub1tuXX0sbi5uZXh0PW4uYS5iaW5kKG4pLG59O3ZhciBFdD0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87ZnVuY3Rpb24gVHQoZSl7RmUuY2FsbCh0aGlzKSx0aGlzLmhlYWRlcnM9bmV3IGJ0LHRoaXMuQz1lfHxudWxsLHRoaXMuYz0hMSx0aGlzLko9dGhpcy5hPW51bGwsdGhpcy5QPXRoaXMudj1cIlwiLHRoaXMuZz0wLHRoaXMubD1cIlwiLHRoaXMuaT10aGlzLk49dGhpcy5zPXRoaXMuTD0hMSx0aGlzLmg9MCx0aGlzLnc9bnVsbCx0aGlzLm09QXQsdGhpcy5JPXRoaXMuTT0hMX1OKFR0LEZlKTt2YXIgQXQ9XCJcIjtUdC5wcm90b3R5cGUuYj10dChvdCgpLFwiZ29vZy5uZXQuWGhySW9cIix2b2lkIDApLmc7dmFyIHZ0PS9eaHR0cHM/JC9pLEl0PVtcIlBPU1RcIixcIlBVVFwiXTtmdW5jdGlvbiBSdChlLHQpe2UuYz0hMSxlLmEmJihlLmk9ITAsZS5hLmFib3J0KCksZS5pPSExKSxlLmw9dCxlLmc9NSxPdChlKSx3dChlKX1mdW5jdGlvbiBPdChlKXtlLkx8fChlLkw9ITAseGUoZSxcImNvbXBsZXRlXCIpLHhlKGUsXCJlcnJvclwiKSl9ZnVuY3Rpb24ganQoZSl7aWYoZS5jJiZ2b2lkIDAhPT1TKWlmKGUuSlsxXSYmND09Q3QoZSkmJjI9PWUuZ2V0U3RhdHVzKCkpbnQoZS5iLE10KGUsXCJMb2NhbCByZXF1ZXN0IGVycm9yIGRldGVjdGVkIGFuZCBpZ25vcmVkXCIpKTtlbHNlIGlmKGUucyYmND09Q3QoZSkpSGUoZS5SLDAsZSk7ZWxzZSBpZih4ZShlLFwicmVhZHlzdGF0ZWNoYW5nZVwiKSw0PT1DdChlKSl7bnQoZS5iLE10KGUsXCJSZXF1ZXN0IGNvbXBsZXRlXCIpKSxlLmM9ITE7dHJ5e3ZhciB0LG89ZS5nZXRTdGF0dXMoKTtlOnN3aXRjaChvKXtjYXNlIDIwMDpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwNDpjYXNlIDIwNjpjYXNlIDMwNDpjYXNlIDEyMjM6dmFyIHI9ITA7YnJlYWsgZTtkZWZhdWx0OnI9ITF9aWYoISh0PXIpKXt2YXIgbjtpZihuPTA9PT1vKXt2YXIgcz1TdHJpbmcoZS52KS5tYXRjaChFdClbMV18fG51bGw7aWYoIXMmJkUuc2VsZiYmRS5zZWxmLmxvY2F0aW9uKXt2YXIgaT1FLnNlbGYubG9jYXRpb24ucHJvdG9jb2w7cz1pLnN1YnN0cigwLGkubGVuZ3RoLTEpfW49IXZ0LnRlc3Qocz9zLnRvTG93ZXJDYXNlKCk6XCJcIil9dD1ufWlmKHQpeGUoZSxcImNvbXBsZXRlXCIpLHhlKGUsXCJzdWNjZXNzXCIpO2Vsc2V7ZS5nPTY7dHJ5e3ZhciBhPTI8Q3QoZSk/ZS5hLnN0YXR1c1RleHQ6XCJcIn1jYXRjaCh0KXtudChlLmIsXCJDYW4gbm90IGdldCBzdGF0dXM6IFwiK3QubWVzc2FnZSksYT1cIlwifWUubD1hK1wiIFtcIitlLmdldFN0YXR1cygpK1wiXVwiLE90KGUpfX1maW5hbGx5e3d0KGUpfX19ZnVuY3Rpb24gd3QoZSl7aWYoZS5hKXtOdChlKTt2YXIgdD1lLmEsbz1lLkpbMF0/QTpudWxsO2UuYT1udWxsLGUuSj1udWxsLHhlKGUsXCJyZWFkeVwiKTt0cnl7dC5vbnJlYWR5c3RhdGVjaGFuZ2U9b31jYXRjaCh0KXsoZT1lLmIpJiZydChlLEtlLFwiUHJvYmxlbSBlbmNvdW50ZXJlZCByZXNldHRpbmcgb25yZWFkeXN0YXRlY2hhbmdlOiBcIit0Lm1lc3NhZ2UpfX19ZnVuY3Rpb24gTnQoZSl7ZS5hJiZlLkkmJihlLmEub250aW1lb3V0PW51bGwpLGUudyYmKEUuY2xlYXJUaW1lb3V0KGUudyksZS53PW51bGwpfWZ1bmN0aW9uIEN0KGUpe3JldHVybiBlLmE/ZS5hLnJlYWR5U3RhdGU6MH1mdW5jdGlvbiBVdChlLHQpe2lmKGUuYSYmND09Q3QoZSkpcmV0dXJuIG51bGw9PT0oZT1lLmEuZ2V0UmVzcG9uc2VIZWFkZXIodCkpP3ZvaWQgMDplfWZ1bmN0aW9uIE10KGUsdCl7cmV0dXJuIHQrXCIgW1wiK2UuUCtcIiBcIitlLnYrXCIgXCIrZS5nZXRTdGF0dXMoKStcIl1cIn0ocj1UdC5wcm90b3R5cGUpLlQ9ZnVuY3Rpb24oKXt2b2lkIDAhPT1TJiZ0aGlzLmEmJih0aGlzLmw9XCJUaW1lZCBvdXQgYWZ0ZXIgXCIrdGhpcy5oK1wibXMsIGFib3J0aW5nXCIsdGhpcy5nPTgsbnQodGhpcy5iLE10KHRoaXMsdGhpcy5sKSkseGUodGhpcyxcInRpbWVvdXRcIiksdGhpcy5hYm9ydCg4KSl9LHIuYWJvcnQ9ZnVuY3Rpb24oZSl7dGhpcy5hJiZ0aGlzLmMmJihudCh0aGlzLmIsTXQodGhpcyxcIkFib3J0aW5nXCIpKSx0aGlzLmM9ITEsdGhpcy5pPSEwLHRoaXMuYS5hYm9ydCgpLHRoaXMuaT0hMSx0aGlzLmc9ZXx8Nyx4ZSh0aGlzLFwiY29tcGxldGVcIikseGUodGhpcyxcImFib3J0XCIpLHd0KHRoaXMpKX0sci5SPWZ1bmN0aW9uKCl7dGhpcy5LfHwodGhpcy5OfHx0aGlzLnN8fHRoaXMuaT9qdCh0aGlzKTp0aGlzLlcoKSl9LHIuVz1mdW5jdGlvbigpe2p0KHRoaXMpfSxyLmdldFN0YXR1cz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gMjxDdCh0aGlzKT90aGlzLmEuc3RhdHVzOi0xfWNhdGNoKGUpe3JldHVybi0xfX07dmFyIEx0PXt9LER0PW51bGw7ZnVuY3Rpb24gQnQoKXtpZighRHQpe0R0PXt9O2Zvcih2YXIgZT1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksdD1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0sbz0wOzU+bztvKyspe3ZhciByPWUuY29uY2F0KHRbb10uc3BsaXQoXCJcIikpO0x0W29dPXI7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBzPXJbbl07dm9pZCAwPT09RHRbc10mJihEdFtzXT1uKX19fX12YXIgUHQ9W1wiY29udGVudC10eXBlXCIsXCJncnBjLXN0YXR1c1wiLFwiZ3JwYy1tZXNzYWdlXCJdO2Z1bmN0aW9uIEZ0KGUpe3RoaXMuYT1lLlosdGhpcy5tPW51bGwsdGhpcy5iPVtdLHRoaXMuaD1bXSx0aGlzLmc9W10sdGhpcy5mPVtdLHRoaXMuYz1bXSx0aGlzLmw9ITEsdGhpcy5pPTAsdGhpcy5zPW5ldyB4O3ZhciB0PXRoaXM7amUodGhpcy5hLFwicmVhZHlzdGF0ZWNoYW5nZVwiLChmdW5jdGlvbigpe3ZhciBlPXQuYTtpZihlPWUuYT9lLmEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIik6bnVsbCl7aWYoMD09KGU9ZS50b0xvd2VyQ2FzZSgpKS5sYXN0SW5kZXhPZihcImFwcGxpY2F0aW9uL2dycGMtd2ViLXRleHRcIiwwKSl7ZT10LmE7dHJ5e3ZhciBvPWUuYT9lLmEucmVzcG9uc2VUZXh0OlwiXCJ9Y2F0Y2godCl7bnQoZS5iLFwiQ2FuIG5vdCBnZXQgcmVzcG9uc2VUZXh0OiBcIit0Lm1lc3NhZ2UpLG89XCJcIn1pZihvPShlPW98fFwiXCIpLmxlbmd0aC1lLmxlbmd0aCU0LDA9PShlPWUuc3Vic3RyKHQuaSxvLXQuaSkpLmxlbmd0aClyZXR1cm47dC5pPW8sZT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxvPTMqdC80O28lMz9vPU1hdGguZmxvb3Iobyk6eihcIj0uXCIsZVt0LTFdKSYmKG89eihcIj0uXCIsZVt0LTJdKT9vLTI6by0xKTt2YXIgcj1uZXcgVWludDhBcnJheShvKSxuPTA7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyh0KXtmb3IoO3I8ZS5sZW5ndGg7KXt2YXIgbz1lLmNoYXJBdChyKyspLG49RHRbb107aWYobnVsbCE9bilyZXR1cm4gbjtpZighL15bXFxzXFx4YTBdKiQvLnRlc3QobykpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitvKX1yZXR1cm4gdH1CdCgpO2Zvcih2YXIgcj0wOzspe3ZhciBuPW8oLTEpLHM9bygwKSxpPW8oNjQpLGE9byg2NCk7aWYoNjQ9PT1hJiYtMT09PW4pYnJlYWs7dChuPDwyfHM+PjQpLDY0IT1pJiYodChzPDw0JjI0MHxpPj4yKSw2NCE9YSYmdChpPDw2JjE5MnxhKSl9fShlLChmdW5jdGlvbihlKXtyW24rK109ZX0pKSxyLnN1YmFycmF5KDAsbil9KGUpfWVsc2V7aWYoMCE9ZS5sYXN0SW5kZXhPZihcImFwcGxpY2F0aW9uL2dycGNcIiwwKSlyZXR1cm4gdm9pZCBXdCh0LG5ldyBEKDIsXCJVbmtub3duIENvbnRlbnQtdHlwZSByZWNlaXZlZC5cIikpO2U9bmV3IFVpbnQ4QXJyYXkoZnVuY3Rpb24oZSl7dHJ5e2lmKCFlLmEpcmV0dXJuIG51bGw7aWYoXCJyZXNwb25zZVwiaW4gZS5hKXJldHVybiBlLmEucmVzcG9uc2U7c3dpdGNoKGUubSl7Y2FzZSBBdDpjYXNlXCJ0ZXh0XCI6cmV0dXJuIGUuYS5yZXNwb25zZVRleHQ7Y2FzZVwiYXJyYXlidWZmZXJcIjppZihcIm1velJlc3BvbnNlQXJyYXlCdWZmZXJcImluIGUuYSlyZXR1cm4gZS5hLm1velJlc3BvbnNlQXJyYXlCdWZmZXJ9dmFyIHQ9ZS5iO3JldHVybiB0JiZydCh0LEtlLFwiUmVzcG9uc2UgdHlwZSBcIitlLm0rXCIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGJyb3dzZXJcIiksbnVsbH1jYXRjaCh0KXtyZXR1cm4gbnQoZS5iLFwiQ2FuIG5vdCBnZXQgcmVzcG9uc2U6IFwiK3QubWVzc2FnZSksbnVsbH19KHQuYSkpfW89bnVsbDt0cnl7bz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oZSl7YS5mKyssYS5hPShhLmE8PDgpK2UsND09YS5mJiYoYS5iPTIsYS5nPTAsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/YS5jPW5ldyBVaW50OEFycmF5KGEuYSk6YS5jPUFycmF5KGEuYSksMD09YS5hJiZuKCkpfWZ1bmN0aW9uIHIoZSl7YS5jW2EuZysrXT1lLGEuZz09YS5hJiZuKCl9ZnVuY3Rpb24gbigpe3ZhciBlPXt9O2VbYS5oXT1hLmMsYS5pLnB1c2goZSksYS5iPVd9dmFyIHMsaSxhPWUsZz0wO2ZvcihzPXQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGluc3RhbmNlb2YgQXJyYXk/dDpuZXcgVWludDhBcnJheSh0KTtnPHMubGVuZ3RoOyl7c3dpdGNoKGEuYil7Y2FzZSAzOlYoYSxzLGcsXCJzdHJlYW0gYWxyZWFkeSBicm9rZW5cIik7YnJlYWs7Y2FzZSBXOjA9PShpPXNbZ10pfHxpPT1IP2EuaD1pOlYoYSxzLGcsXCJpbnZhbGlkIGZyYW1lIGJ5dGVcIiksYS5iPTEsYS5hPTAsYS5mPTA7YnJlYWs7Y2FzZSAxOm8oc1tnXSk7YnJlYWs7Y2FzZSAyOnIoc1tnXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcInVuZXhwZWN0ZWQgcGFyc2VyIHN0YXRlOiBcIithLmIpfWEubSsrLGcrK31yZXR1cm4gZT1hLmksYS5pPVtdLDA8ZS5sZW5ndGg/ZTpudWxsfSh0LnMsZSl9Y2F0Y2goZSl7V3QodCxuZXcgRCgyLFwiRXJyb3IgaW4gcGFyc2luZyByZXNwb25zZSBib2R5XCIpKX1pZihvKWZvcihlPTA7ZTxvLmxlbmd0aDtlKyspe2lmKDAgaW4gb1tlXSl7dmFyIHI9b1tlXVswXTtpZihyKXt2YXIgbj12b2lkIDA7dHJ5e249dC5tKHIpfWNhdGNoKGUpe1d0KHQsbmV3IEQoMTMsXCJFcnJvciB3aGVuIGRlc2VyaWFsaXppbmcgcmVzcG9uc2UgZGF0YTogXCIrbikpfWlmKG4pe3I9dDtmb3IodmFyIHM9MDtzPHIuYi5sZW5ndGg7cysrKXIuYltzXShuKX19fWlmKEggaW4gb1tlXSYmMDxvW2VdW0hdLmxlbmd0aCl7Zm9yKHI9XCJcIixuPTA7bjxvW2VdW0hdLmxlbmd0aDtuKyspcis9U3RyaW5nLmZyb21DaGFyQ29kZShvW2VdW0hdW25dKTtmb3Iocj1yLnRyaW0oKS5zcGxpdChcIlxcclxcblwiKSxuPXt9LHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGk9cltzXS5pbmRleE9mKFwiOlwiKTtuW3Jbc10uc3Vic3RyaW5nKDAsaSkudHJpbSgpXT1yW3NdLnN1YnN0cmluZyhpKzEpLnRyaW0oKX1yPW4sbj0wLHM9XCJcIixcImdycGMtc3RhdHVzXCJpbiByJiYobj1OdW1iZXIocltcImdycGMtc3RhdHVzXCJdKSxkZWxldGUgcltcImdycGMtc3RhdHVzXCJdKSxcImdycGMtbWVzc2FnZVwiaW4gciYmKHM9cltcImdycGMtbWVzc2FnZVwiXSxkZWxldGUgcltcImdycGMtbWVzc2FnZVwiXSksV3QodCxuZXcgRChuLHMscikpfX19fSkpLGplKHRoaXMuYSxcImNvbXBsZXRlXCIsKGZ1bmN0aW9uKCl7dmFyIGU9dC5hLmcsbz0yLHI9XCJcIixuPXt9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZT0oZS5hJiY0PT1DdChlKSYmZS5hLmdldEFsbFJlc3BvbnNlSGVhZGVycygpfHxcIlwiKS5zcGxpdChcIlxcclxcblwiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZighL15bXFxzXFx4YTBdKiQvLnRlc3QoZVtvXSkpe3ZhciByPVooZVtvXSksbj1yWzBdO2lmKFwic3RyaW5nXCI9PXR5cGVvZihyPXJbMV0pKXtyPXIudHJpbSgpO3ZhciBzPXRbbl18fFtdO3Rbbl09cyxzLnB1c2gocil9fXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBvLHI9e307Zm9yKG8gaW4gZSlyW29dPXQuY2FsbCh2b2lkIDAsZVtvXSxvLGUpO3JldHVybiByfSh0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5qb2luKFwiLCBcIil9KSl9KHQuYSk7aWYoT2JqZWN0LmtleXMocykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7UHQuaW5jbHVkZXMoZSl8fChuW2VdPXNbZV0pfSkpLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPTA7bzxlLmcubGVuZ3RoO28rKyllLmdbb10odCl9KHQsbiksMCE9ZSl7c3dpdGNoKGUpe2Nhc2UgNzpvPTEwO2JyZWFrO2Nhc2UgODpvPTQ7YnJlYWs7Y2FzZSA2Om89ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UgMjAwOnJldHVybiAwO2Nhc2UgNDAwOnJldHVybiAzO2Nhc2UgNDAxOnJldHVybiAxNjtjYXNlIDQwMzpyZXR1cm4gNztjYXNlIDQwNDpyZXR1cm4gNTtjYXNlIDQwOTpyZXR1cm4gMTA7Y2FzZSA0MTI6cmV0dXJuIDk7Y2FzZSA0Mjk6cmV0dXJuIDg7Y2FzZSA0OTk6cmV0dXJuIDE7Y2FzZSA1MDA6ZGVmYXVsdDpyZXR1cm4gMjtjYXNlIDUwMTpyZXR1cm4gMTI7Y2FzZSA1MDM6cmV0dXJuIDE0O2Nhc2UgNTA0OnJldHVybiA0fX0odC5hLmdldFN0YXR1cygpKTticmVhaztkZWZhdWx0Om89MTR9MTA9PW8mJnQubHx8V3QodCxuZXcgRChvLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuXCJObyBFcnJvclwiO2Nhc2UgMTpyZXR1cm5cIkFjY2VzcyBkZW5pZWQgdG8gY29udGVudCBkb2N1bWVudFwiO2Nhc2UgMjpyZXR1cm5cIkZpbGUgbm90IGZvdW5kXCI7Y2FzZSAzOnJldHVyblwiRmlyZWZveCBzaWxlbnRseSBlcnJvcmVkXCI7Y2FzZSA0OnJldHVyblwiQXBwbGljYXRpb24gY3VzdG9tIGVycm9yXCI7Y2FzZSA1OnJldHVyblwiQW4gZXhjZXB0aW9uIG9jY3VycmVkXCI7Y2FzZSA2OnJldHVyblwiSHR0cCByZXNwb25zZSBhdCA0MDAgb3IgNTAwIGxldmVsXCI7Y2FzZSA3OnJldHVyblwiUmVxdWVzdCB3YXMgYWJvcnRlZFwiO2Nhc2UgODpyZXR1cm5cIlJlcXVlc3QgdGltZWQgb3V0XCI7Y2FzZSA5OnJldHVyblwiVGhlIHJlc291cmNlIGlzIG5vdCBhdmFpbGFibGUgb2ZmbGluZVwiO2RlZmF1bHQ6cmV0dXJuXCJVbnJlY29nbml6ZWQgZXJyb3IgY29kZVwifX0oZSkpKX1lbHNlIGU9ITEsXCJncnBjLXN0YXR1c1wiaW4gcyYmKG89TnVtYmVyKFV0KHQuYSxcImdycGMtc3RhdHVzXCIpKSxcImdycGMtbWVzc2FnZVwiaW4gcyYmKHI9VXQodC5hLFwiZ3JwYy1tZXNzYWdlXCIpKSwwIT1vJiYoV3QodCxuZXcgRChvLHJ8fFwiXCIscykpLGU9ITApKSxlfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUuYy5sZW5ndGg7dCsrKWUuY1t0XSgpfSh0KX0pKX1mdW5jdGlvbiB4dChlLHQpey0xPCh0PWUuaW5kZXhPZih0KSkmJmUuc3BsaWNlKHQsMSl9ZnVuY3Rpb24gV3QoZSx0KXtpZigwIT10LmNvZGUpZm9yKHZhciBvPW5ldyBEKHQuY29kZSxkZWNvZGVVUklDb21wb25lbnQodC5tZXNzYWdlfHxcIlwiKSx0Lm1ldGFkYXRhKSxyPTA7cjxlLmYubGVuZ3RoO3IrKyllLmZbcl0obyk7Zm9yKHQ9e2NvZGU6dC5jb2RlLGRldGFpbHM6ZGVjb2RlVVJJQ29tcG9uZW50KHQubWVzc2FnZXx8XCJcIiksbWV0YWRhdGE6dC5tZXRhZGF0YX0sbz0wO288ZS5oLmxlbmd0aDtvKyspZS5oW29dKHQpfWZ1bmN0aW9uIEh0KGUsdCl7ZT12b2lkIDA9PT1lP3t9OmUsdGhpcy5hPWUuZm9ybWF0fHxUKFwiZm9ybWF0XCIsZSl8fFwidGV4dFwiLHRoaXMuZz1lLmFhfHxUKFwic3VwcHJlc3NDb3JzUHJlZmxpZ2h0XCIsZSl8fCExLHRoaXMuZj1lLndpdGhDcmVkZW50aWFsc3x8VChcIndpdGhDcmVkZW50aWFsc1wiLGUpfHwhMSx0aGlzLmI9ZS4kfHxUKFwic3RyZWFtSW50ZXJjZXB0b3JzXCIsZSl8fFtdLHRoaXMuaD1lLmJhfHxUKFwidW5hcnlJbnRlcmNlcHRvcnNcIixlKXx8W10sdGhpcy5jPXR8fG51bGx9ZnVuY3Rpb24gVnQoZSx0LG8pe3ZhciByPXQuZ2V0TWV0aG9kRGVzY3JpcHRvcigpLG49bytyLm5hbWU7KG89ZS5jP2UuYzpuZXcgVHQpLk09ZS5mO3ZhciBzPW5ldyBGdCh7WjpvfSk7cy5tPXIuYjt2YXIgaT10LmdldE1ldGFkYXRhKCk7Zm9yKGEgaW4gaSlvLmhlYWRlcnMuc2V0KGEsaVthXSk7aWYoXCJ0ZXh0XCI9PWUuYT8oby5oZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLFwiYXBwbGljYXRpb24vZ3JwYy13ZWItdGV4dFwiKSxvLmhlYWRlcnMuc2V0KFwiQWNjZXB0XCIsXCJhcHBsaWNhdGlvbi9ncnBjLXdlYi10ZXh0XCIpKTpvLmhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsXCJhcHBsaWNhdGlvbi9ncnBjLXdlYitwcm90b1wiKSxvLmhlYWRlcnMuc2V0KFwiWC1Vc2VyLUFnZW50XCIsXCJncnBjLXdlYi1qYXZhc2NyaXB0LzAuMVwiKSxvLmhlYWRlcnMuc2V0KFwiWC1HcnBjLVdlYlwiLFwiMVwiKSxvLmhlYWRlcnMuaGFzKFwiZGVhZGxpbmVcIikpe3ZhciBhPU51bWJlcihvLmhlYWRlcnMuZ2V0KFwiZGVhZGxpbmVcIikpO2E9TWF0aC5jZWlsKGEtKG5ldyBEYXRlKS5nZXRUaW1lKCkpLG8uaGVhZGVycy5kZWxldGUoXCJkZWFkbGluZVwiKSwxLzA9PT1hJiYoYT0wKSwwPGEmJihvLmhlYWRlcnMuc2V0KFwiZ3JwYy10aW1lb3V0XCIsYStcIm1cIiksby5oPU1hdGgubWF4KDAsTWF0aC5tYXgoMWUzLE1hdGguY2VpbCgxLjEqYSkpKSl9aWYoZS5nKXthPXt9O2Zvcih2YXIgZz1wKChpPW8uaGVhZGVycykua2V5cygpKSxsPWcubmV4dCgpOyFsLmRvbmU7bD1nLm5leHQoKSlhW2w9bC52YWx1ZV09aS5nZXQobCk7by5oZWFkZXJzLmNsZWFyKCk7ZTp7Zm9yKHUgaW4gYSl7dmFyIHU9ITE7YnJlYWsgZX11PSEwfXV8fChhPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvIGluIGUpdC5jYWxsKHZvaWQgMCxlW29dLG8sZSl9KGUsKGZ1bmN0aW9uKGUsbyl7dCs9byx0Kz1cIjpcIix0Kz1lLHQrPVwiXFxyXFxuXCJ9KSksdH0oYSksXCJzdHJpbmdcIj09dHlwZW9mIG4/KHU9ZW5jb2RlVVJJQ29tcG9uZW50KFwiJGh0dHBIZWFkZXJzXCIpLCh1Kz1hPW51bGwhPWE/XCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSk6XCJcIikmJigwPihhPW4uaW5kZXhPZihcIiNcIikpJiYoYT1uLmxlbmd0aCksMD4oaT1uLmluZGV4T2YoXCI/XCIpKXx8aT5hPyhpPWEsZz1cIlwiKTpnPW4uc3Vic3RyaW5nKGkrMSxhKSxhPShuPVtuLnN1YnN0cigwLGkpLGcsbi5zdWJzdHIoYSldKVsxXSxuWzFdPXU/YT9hK1wiJlwiK3U6dTphLG49blswXSsoblsxXT9cIj9cIituWzFdOlwiXCIpK25bMl0pKTpuLmEoXCIkaHR0cEhlYWRlcnNcIixhKSl9Zm9yKHI9KHQ9KDAsci5hKSh0LmdldFJlcXVlc3RNZXNzYWdlKCkpKS5sZW5ndGgsdT1bMCwwLDAsMF0sYT1uZXcgVWludDhBcnJheSg1K3IpLGk9MzswPD1pO2ktLSl1W2ldPXIlMjU2LHI+Pj49ODtpZihhLnNldChuZXcgVWludDhBcnJheSh1KSwxKSxhLnNldCh0LDUpLHQ9YSxcInRleHRcIj09ZS5hKXt2YXIgYztmb3IoZT10LHZvaWQgMD09PWMmJihjPTApLEJ0KCksYz1MdFtjXSx0PUFycmF5KE1hdGguZmxvb3IoZS5sZW5ndGgvMykpLHI9Y1s2NF18fFwiXCIsdT1hPTA7YTxlLmxlbmd0aC0yO2ErPTMpe2w9ZVthXTt2YXIgZj1lW2ErMV07Zz1lW2ErMl0saT1jW2w+PjJdLGw9Y1soMyZsKTw8NHxmPj40XSxmPWNbKDE1JmYpPDwyfGc+PjZdLGc9Y1s2MyZnXSx0W3UrK109aStsK2YrZ31zd2l0Y2goaT0wLGc9cixlLmxlbmd0aC1hKXtjYXNlIDI6Zz1jWygxNSYoaT1lW2ErMV0pKTw8Ml18fHI7Y2FzZSAxOmU9ZVthXSx0W3VdPWNbZT4+Ml0rY1soMyZlKTw8NHxpPj40XStnK3J9dD10LmpvaW4oXCJcIil9ZWxzZVwiYmluYXJ5XCI9PWUuYSYmKG8ubT1cImFycmF5YnVmZmVyXCIpO3JldHVybiBmdW5jdGlvbihlLHQsbyl7aWYoZS5hKXRocm93IEVycm9yKFwiW2dvb2cubmV0LlhocklvXSBPYmplY3QgaXMgYWN0aXZlIHdpdGggYW5vdGhlciByZXF1ZXN0PVwiK2UuditcIjsgbmV3VXJpPVwiK3QpO2Uudj10LGUubD1cIlwiLGUuZz0wLGUuUD1cIlBPU1RcIixlLkw9ITEsZS5jPSEwLGUuYT1lLkM/Z3QoZS5DKTpndChZZSksZS5KPWUuQz9pdChlLkMpOml0KFllKSxlLmEub25yZWFkeXN0YXRlY2hhbmdlPXcoZS5SLGUpO3RyeXtudChlLmIsTXQoZSxcIk9wZW5pbmcgWGhyXCIpKSxlLk49ITAsZS5hLm9wZW4oXCJQT1NUXCIsU3RyaW5nKHQpLCEwKSxlLk49ITF9Y2F0Y2godCl7cmV0dXJuIG50KGUuYixNdChlLFwiRXJyb3Igb3BlbmluZyBYaHI6IFwiK3QubWVzc2FnZSkpLHZvaWQgUnQoZSx0KX10PW98fFwiXCI7dmFyIHI9KG89ZS5oZWFkZXJzLmNsb25lKCkpLkcoKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm5cImNvbnRlbnQtdHlwZVwiPT1lLnRvTG93ZXJDYXNlKCl9KSksbj1FLkZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRS5Gb3JtRGF0YTshKDA8PWsoSXQsXCJQT1NUXCIpKXx8cnx8bnx8by5zZXQoXCJDb250ZW50LVR5cGVcIixcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04XCIpLG8uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt0aGlzLmEuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksZSksZS5tJiYoZS5hLnJlc3BvbnNlVHlwZT1lLm0pLFwid2l0aENyZWRlbnRpYWxzXCJpbiBlLmEmJmUuYS53aXRoQ3JlZGVudGlhbHMhPT1lLk0mJihlLmEud2l0aENyZWRlbnRpYWxzPWUuTSk7dHJ5e050KGUpLDA8ZS5oJiYoZS5JPWZ1bmN0aW9uKGUpe3JldHVybiBvZSYmY2UoKSYmXCJudW1iZXJcIj09dHlwZW9mIGUudGltZW91dCYmdm9pZCAwIT09ZS5vbnRpbWVvdXR9KGUuYSksbnQoZS5iLE10KGUsXCJXaWxsIGFib3J0IGFmdGVyIFwiK2UuaCtcIm1zIGlmIGluY29tcGxldGUsIHhocjIgXCIrZS5JKSksZS5JPyhlLmEudGltZW91dD1lLmgsZS5hLm9udGltZW91dD13KGUuVCxlKSk6ZS53PUhlKGUuVCxlLmgsZSkpLG50KGUuYixNdChlLFwiU2VuZGluZyByZXF1ZXN0XCIpKSxlLnM9ITAsZS5hLnNlbmQodCksZS5zPSExfWNhdGNoKHQpe250KGUuYixNdChlLFwiU2VuZCBlcnJvcjogXCIrdC5tZXNzYWdlKSksUnQoZSx0KX19KG8sbix0KSxzfWZ1bmN0aW9uIEd0KGUsdCxvKXt2YXIgcj0hMSxuPW51bGwscz0hMTtlLm9uKFwiZGF0YVwiLChmdW5jdGlvbihlKXtyPSEwLG49ZX0pKSxlLm9uKFwiZXJyb3JcIiwoZnVuY3Rpb24oZSl7MD09ZS5jb2RlfHxzfHwocz0hMCx0KGUsbnVsbCkpfSkpLGUub24oXCJzdGF0dXNcIiwoZnVuY3Rpb24oZSl7MD09ZS5jb2RlfHxzP28mJnQobnVsbCxudWxsLGUpOihzPSEwLHQoe2NvZGU6ZS5jb2RlLG1lc3NhZ2U6ZS5kZXRhaWxzLG1ldGFkYXRhOmUubWV0YWRhdGF9LG51bGwpKX0pKSxvJiZlLm9uKFwibWV0YWRhdGFcIiwoZnVuY3Rpb24oZSl7dChudWxsLG51bGwsbnVsbCxlKX0pKSxlLm9uKFwiZW5kXCIsKGZ1bmN0aW9uKCl7c3x8KHI/dChudWxsLG4pOnQoe2NvZGU6MixtZXNzYWdlOlwiSW5jb21wbGV0ZSByZXNwb25zZVwifSkpLG8mJnQobnVsbCxudWxsKX0pKX1mdW5jdGlvbiBrdChlLHQpe3ZhciBvPWU7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bztvPWZ1bmN0aW9uKG8pe3JldHVybiBlLmludGVyY2VwdChvLHQpfX0pKSxvfUZ0LnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe3JldHVyblwiZGF0YVwiPT1lP3RoaXMuYi5wdXNoKHQpOlwic3RhdHVzXCI9PWU/dGhpcy5oLnB1c2godCk6XCJtZXRhZGF0YVwiPT1lP3RoaXMuZy5wdXNoKHQpOlwiZW5kXCI9PWU/dGhpcy5jLnB1c2godCk6XCJlcnJvclwiPT1lJiZ0aGlzLmYucHVzaCh0KSx0aGlzfSxGdC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cImRhdGFcIj09ZT94dCh0aGlzLmIsdCk6XCJzdGF0dXNcIj09ZT94dCh0aGlzLmgsdCk6XCJtZXRhZGF0YVwiPT1lP3h0KHRoaXMuZyx0KTpcImVuZFwiPT1lP3h0KHRoaXMuYyx0KTpcImVycm9yXCI9PWUmJnh0KHRoaXMuZix0KSx0aGlzfSxGdC5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5sPSEwLHRoaXMuYS5hYm9ydCgpfSxGdC5wcm90b3R5cGUuY2FuY2VsPUZ0LnByb3RvdHlwZS5jYW5jZWwsRnQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPUZ0LnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixGdC5wcm90b3R5cGUub249RnQucHJvdG90eXBlLm9uLEh0LnByb3RvdHlwZS5YPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9dGhpcyxpPWUuc3Vic3RyKDAsZS5sZW5ndGgtci5uYW1lLmxlbmd0aCk7cmV0dXJuIEd0KGU9a3QoKGZ1bmN0aW9uKGUpe3JldHVybiBWdChzLGUsaSl9KSx0aGlzLmIpLmNhbGwodGhpcyxMKHIsdCxvKSksbiwhMSksbmV3IEIoZSl9LEh0LnByb3RvdHlwZS5TPWZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPXRoaXMscz1lLnN1YnN0cigwLGUubGVuZ3RoLXIubmFtZS5sZW5ndGgpO3JldHVybiBrdCgoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG8pe3ZhciByLGksYTtHdChWdChuLGUscyksKGZ1bmN0aW9uKG4scyxnLGwpe24/byhuKTpzP2E9czpnP2k9ZzpsP3I9bDoobj1lLmdldE1ldGhvZERlc2NyaXB0b3IoKSx0KG5ldyBNKGEsbixzPXZvaWQgMD09PShzPXIpP3t9OnMsdm9pZCAwPT09aT9udWxsOmkpKSl9KSwhMCl9KSl9KSx0aGlzLmgpLmNhbGwodGhpcyxMKHIsdCxvKSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UmVzcG9uc2VNZXNzYWdlKCl9KSl9LEh0LnByb3RvdHlwZS51bmFyeUNhbGw9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIHRoaXMuUyhlLHQsbyxyKX0sSHQucHJvdG90eXBlLlk9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49dGhpcyxzPWUuc3Vic3RyKDAsZS5sZW5ndGgtci5uYW1lLmxlbmd0aCk7cmV0dXJuIGt0KChmdW5jdGlvbihlKXtyZXR1cm4gVnQobixlLHMpfSksdGhpcy5iKS5jYWxsKHRoaXMsTChyLHQsbykpfSxIdC5wcm90b3R5cGUuc2VydmVyU3RyZWFtaW5nPUh0LnByb3RvdHlwZS5ZLEh0LnByb3RvdHlwZS51bmFyeUNhbGw9SHQucHJvdG90eXBlLnVuYXJ5Q2FsbCxIdC5wcm90b3R5cGUudGhlbmFibGVDYWxsPUh0LnByb3RvdHlwZS5TLEh0LnByb3RvdHlwZS5ycGNDYWxsPUh0LnByb3RvdHlwZS5YLGUuZXhwb3J0cy5HcnBjV2ViQ2xpZW50QmFzZT1IdCxlLmV4cG9ydHMuU3RhdHVzQ29kZT17T0s6MCxDQU5DRUxMRUQ6MSxVTktOT1dOOjIsSU5WQUxJRF9BUkdVTUVOVDozLERFQURMSU5FX0VYQ0VFREVEOjQsTk9UX0ZPVU5EOjUsQUxSRUFEWV9FWElTVFM6NixQRVJNSVNTSU9OX0RFTklFRDo3LFVOQVVUSEVOVElDQVRFRDoxNixSRVNPVVJDRV9FWEhBVVNURUQ6OCxGQUlMRURfUFJFQ09ORElUSU9OOjksQUJPUlRFRDoxMCxPVVRfT0ZfUkFOR0U6MTEsVU5JTVBMRU1FTlRFRDoxMixJTlRFUk5BTDoxMyxVTkFWQUlMQUJMRToxNCxEQVRBX0xPU1M6MTV9LGUuZXhwb3J0cy5NZXRob2REZXNjcmlwdG9yPWZ1bmN0aW9uKGUsdCxvLHIsbixzKXt0aGlzLm5hbWU9ZSx0aGlzLmE9bix0aGlzLmI9c30sZS5leHBvcnRzLk1ldGhvZFR5cGU9e1VOQVJZOlwidW5hcnlcIixTRVJWRVJfU1RSRUFNSU5HOlwic2VydmVyX3N0cmVhbWluZ1wiLEJJRElfU1RSRUFNSU5HOlwiYmlkaV9zdHJlYW1pbmdcIn19fSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhlKXt2YXIgdD1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBvPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1tlXT17ZXhwb3J0czp7fX07cmV0dXJuIF9fd2VicGFja19tb2R1bGVzX19bZV0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyksby5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgbyBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LG8pJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsbykmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8se2VudW1lcmFibGU6ITAsZ2V0OnRbb119KX0sX193ZWJwYWNrX3JlcXVpcmVfXy5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksX193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxfX3dlYnBhY2tfcmVxdWlyZV9fLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9O3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9O3JldHVybigoKT0+e1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dFtvXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fV9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKSxfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7SW5mb1NlcnZpY2U6KCk9PmMsU2Vzc2lvbkluZm86KCk9PnIsVmVyc2lvbkluZm86KCk9PnR9KTt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG89ZS5tYWpvcixyPWUubWlub3Isbj1lLnBhdGNoLHM9ZS5wcmVSZWxlYXNlLGk9ZS5idWlsZDshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMubWFqb3I9byx0aGlzLm1pbm9yPXIsdGhpcy5wYXRjaD1uLHRoaXMucHJlUmVsZWFzZT1zLHRoaXMuYnVpbGQ9aX12YXIgbyxyO3JldHVybiBvPXQsKHI9W3trZXk6XCJub0J1aWxkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzKTtyZXR1cm4gZS5idWlsZD12b2lkIDAsZX19LHtrZXk6XCJub1ByZVJlbGVhc2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMpO3JldHVybiBlLnByZVJlbGVhc2U9dm9pZCAwLGV9fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPVwiXCIuY29uY2F0KHRoaXMubWFqb3IsXCIuXCIpLmNvbmNhdCh0aGlzLm1pbm9yLFwiLlwiKS5jb25jYXQodGhpcy5wYXRjaCk7cmV0dXJuIHRoaXMucHJlUmVsZWFzZSYmKGUrPVwiLVwiLmNvbmNhdCh0aGlzLnByZVJlbGVhc2UpKSx0aGlzLmJ1aWxkJiYoZSs9XCIrXCIuY29uY2F0KHRoaXMuYnVpbGQpKSxlfX1dKSYmZShvLnByb3RvdHlwZSxyKSx0fSgpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dFtvXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgbz10LnJlYWxtLHI9dC51c2VybmFtZSxuPXQucm9sZXMscz10LnBlcm1pc3Npb25zLGk9dC5leHBpcmVzOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5yZWFsbT1vLHRoaXMudXNlcm5hbWU9cix0aGlzLnJvbGVzPW58fFtdLHRoaXMucGVybWlzc2lvbnM9c3x8W10sdGhpcy5leHBpcmVzPWl9dmFyIHQscjtyZXR1cm4gdD1lLChyPVt7a2V5OlwiaW1wbGllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnBlcm1pc3Npb25zKXJldHVybiExO2Zvcih2YXIgdD1lLnNwbGl0KFwiOlwiKSxvPVtcIipcIixlXSxyPTE7cjx0Lmxlbmd0aDtyKyspby5wdXNoKHQuc2xpY2UoMCxyKS5qb2luKFwiOlwiKStcIipcIik7cmV0dXJuIHRoaXMucGVybWlzc2lvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gby5pbmRleE9mKGUpPi0xfSkpLmxlbmd0aD4wfX1dKSYmbyh0LnByb3RvdHlwZSxyKSxlfSgpLG49X193ZWJwYWNrX3JlcXVpcmVfXyg2NjEpO2Z1bmN0aW9uIHMoZSx0KXt2YXIgbz1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG8ucHVzaC5hcHBseShvLHIpfXJldHVybiBvfWZ1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG89bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cyhPYmplY3QobyksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EoZSx0LG9bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOnMoT2JqZWN0KG8pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobyx0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYShlLHQsbyl7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpvLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1vLGV9ZnVuY3Rpb24gZyhlLHQsbyxyLG4scyxpKXt0cnl7dmFyIGE9ZVtzXShpKSxnPWEudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgbyhlKX1hLmRvbmU/dChnKTpQcm9taXNlLnJlc29sdmUoZykudGhlbihyLG4pfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7dmFyIHM9ZS5hcHBseSh0LG8pO2Z1bmN0aW9uIGkoZSl7ZyhzLHIsbixpLGEsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gYShlKXtnKHMscixuLGksYSxcInRocm93XCIsZSl9aSh2b2lkIDApfSkpfX1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciByPXRbb107ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnVyaT10fHxcIi9hcGlcIn12YXIgbyxzLGEsZyxjLHAsZjtyZXR1cm4gbz1lLHM9W3trZXk6XCJnZXRWZXJzaW9uSW5mb1wiLHZhbHVlOihmPWwocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbyxyLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbz1uZXcgbi5oLnYxLkdlbmVyYWxJbmZvU2VydmljZVByb21pc2VDbGllbnQodGhpcy51cmksbnVsbCxudWxsKSxyPW5ldyBuLmgudjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LGUubmV4dD00LG8uZ2V0VmVyc2lvbkluZm8ocix7fSk7Y2FzZSA0OnJldHVybiBzPWUuc2VudCxlLmFicnVwdChcInJldHVyblwiLG5ldyB0KHMuZ2V0VmVyc2lvbkluZm8oKS50b09iamVjdCgpKSk7Y2FzZSA2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OlwiX2dldFNlc3Npb25JbmZvXCIsdmFsdWU6KHA9bChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG8pe3ZhciBzLGEsZyxsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHM9e30sdCYmKHMuYXV0aGVudGljYXRpb249XCJCYXNpYyBcIitidG9hKFwiXCIuY29uY2F0KHQsXCI6XCIpLmNvbmNhdChvKSkpLGE9bmV3IG4uaC52MS5HZW5lcmFsSW5mb1NlcnZpY2VQcm9taXNlQ2xpZW50KHRoaXMudXJpLG51bGwsbnVsbCksZz1uZXcgbi5oLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdCxlLm5leHQ9NixhLmdldFNlc3Npb25JbmZvKGcscyk7Y2FzZSA2OnJldHVybiBsPWUuc2VudCxlLmFicnVwdChcInJldHVyblwiLG5ldyByKGkoaSh7fSxsLnRvT2JqZWN0KCkpLHt9LHtyb2xlczpsLmdldFJvbGVzTGlzdCgpLHBlcm1pc3Npb25zOmwuZ2V0UGVybWlzc2lvbnNMaXN0KCl9KSkpO2Nhc2UgODpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleTpcImdldFNlc3Npb25JbmZvXCIsdmFsdWU6KGM9bChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2dldFNlc3Npb25JbmZvKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLGUuc2VudCk7Y2FzZSAzOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OlwibG9naW5cIix2YWx1ZTooZz1sKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQsbyl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZ2V0U2Vzc2lvbkluZm8odCxvKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsZS5zZW50KTtjYXNlIDM6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6XCJsb2dvdXRcIix2YWx1ZTooYT1sKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsdGhpcy5fZ2V0U2Vzc2lvbkluZm8oXCJsb2dvdXRcIixcIlwiKTtjYXNlIDM6dGhyb3cgZS5zZW50LG5ldyBFcnJvcihcIkxvZ291dCBkaWQgbm90IHByb2NlZWQgY29ycmVjdGx5LiBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgaXQgbG9va3MgbGlrZSBhIHByb2dyYW1taW5nIGVycm9yIGluIHRoZSB3ZWJ1aS4gUGxlYXNlIHJlcG9ydFwiKTtjYXNlIDc6aWYoZS5wcmV2PTcsZS50MD1lLmNhdGNoKDApLDE2IT09ZS50MC5jb2RlKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsITApO2Nhc2UgMTI6dGhyb3cgZS50MDtjYXNlIDEzOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMsW1swLDddXSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSxzJiZ1KG8ucHJvdG90eXBlLHMpLGV9KCl9KSgpLF9fd2VicGFja19leHBvcnRzX199KSgpfSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///818\n')},799:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\nvar aa=__webpack_require__(526),ca=__webpack_require__(851);function p(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c<arguments.length;c++)b+="&args[]="+encodeURIComponent(arguments[c]);return"Minified React error #"+a+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+"Capture",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case "function":case "symbol":return!0;case "boolean":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return"data-"!==a&&"aria-"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||"undefined"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n["checked","multiple","muted","selected"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||"o"!==b[0]&&"O"!==b[0]||"n"!==b[1]&&"N"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,""+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:"":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?"":""+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for("react.element"),wa=Symbol.for("react.portal"),ya=Symbol.for("react.fragment"),za=Symbol.for("react.strict_mode"),Aa=Symbol.for("react.profiler"),Ba=Symbol.for("react.provider"),Ca=Symbol.for("react.context"),Da=Symbol.for("react.forward_ref"),Ea=Symbol.for("react.suspense"),Fa=Symbol.for("react.suspense_list"),Ga=Symbol.for("react.memo"),Ha=Symbol.for("react.lazy");Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");\nvar Ia=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden");Symbol.for("react.cache");Symbol.for("react.tracing_marker");var Ja=Symbol.iterator;function Ka(a){if(null===a||"object"!==typeof a)return null;a=Ja&&a[Ja]||a["@@iterator"];return"function"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||""}return"\\n"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return"";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,"props",{set:function(){throw Error();}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&"string"===typeof l.stack){for(var e=l.stack.split("\\n"),\nf=d.stack.split("\\n"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k="\\n"+e[g].replace(" at new "," at ");a.displayName&&k.includes("<anonymous>")&&(k=k.replace("<anonymous>",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:"")?Ma(a):""}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma("Lazy");case 13:return Ma("Suspense");case 19:return Ma("SuspenseList");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return""}}\nfunction Qa(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case ya:return"Fragment";case wa:return"Portal";case Aa:return"Profiler";case za:return"StrictMode";case Ea:return"Suspense";case Fa:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||"Context")+".Consumer";case Ba:return(a._context.displayName||"Context")+".Provider";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||"",a=""!==a?"ForwardRef("+a+")":"ForwardRef");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||"Memo";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return"Cache";case 9:return(b.displayName||"Context")+".Consumer";case 10:return(b._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return a=b.render,a=a.displayName||a.name||"",b.displayName||(""!==a?"ForwardRef("+a+")":"ForwardRef");case 7:return"Fragment";case 5:return b;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Qa(b);case 8:return b===za?"StrictMode":"Mode";case 22:return"Offscreen";\ncase 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"===typeof b)return b.displayName||b.name||null;if("string"===typeof b)return b}return null}function Sa(a){switch(typeof a){case "boolean":case "number":case "string":case "undefined":return a;case "object":return a;default:return""}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&"input"===a.toLowerCase()&&("checkbox"===b||"radio"===b)}\nfunction Ua(a){var b=Ta(a)?"checked":"value",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=""+a[b];if(!a.hasOwnProperty(b)&&"undefined"!==typeof c&&"function"===typeof c.get&&"function"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=""+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=""+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d="";a&&(d=Ta(a)?a.checked?"true":"false":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?"":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:"checkbox"===b.type||"radio"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,"checked",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if("number"===d){if(0===c&&""===a.value||a.value!=c)a.value=""+c}else a.value!==""+c&&(a.value=""+c);else if("submit"===d||"reset"===d){a.removeAttribute("value");return}b.hasOwnProperty("value")?cb(a,b.type,c):b.hasOwnProperty("defaultValue")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty("value")||b.hasOwnProperty("defaultValue")){var d=b.type;if(!("submit"!==d&&"reset"!==d||void 0!==b.value&&null!==b.value))return;b=""+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;""!==c&&(a.name="");a.defaultChecked=!!a._wrapperState.initialChecked;""!==c&&(a.name=c)}\nfunction cb(a,b,c){if("number"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+c&&(a.defaultValue=""+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b="");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&""!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}\nfunction lb(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?kb(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}\nvar mb,nb=function(a){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if("http://www.w3.org/2000/svg"!==a.namespaceURI||"innerHTML"in a)a.innerHTML=b;else{mb=mb||document.createElement("div");mb.innerHTML="<svg>"+b.valueOf().toString()+"</svg>";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=["Webkit","ms","Moz","O"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(""+b).trim():b+"px"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=rb(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if("object"!==typeof b.dangerouslySetInnerHTML||!("__html"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&"object"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if("function"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case "onClick":case "onClickCapture":case "onDoubleClick":case "onDoubleClickCapture":case "onMouseDown":case "onMouseDownCapture":case "onMouseMove":case "onMouseMoveCapture":case "onMouseUp":case "onMouseUpCapture":case "onMouseEnter":(d=!d.disabled)||(a=a.type,d=!("button"===a||"input"===a||"select"===a||"textarea"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&"function"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,"passive",{get:function(){Lb=!0}});window.addEventListener("test",Mb,Mb);window.removeEventListener("test",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&"function"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");\nfunction Sc(a,b){switch(a){case "focusin":case "focusout":Lc=null;break;case "dragenter":case "dragleave":Mc=null;break;case "mouseover":case "mouseout":Nc=null;break;case "pointerover":case "pointerout":Oc.delete(b.pointerId);break;case "gotpointercapture":case "lostpointercapture":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case "focusin":return Lc=Tc(Lc,a,b,c,d,e),!0;case "dragenter":return Mc=Tc(Mc,a,b,c,d,e),!0;case "mouseover":return Nc=Tc(Nc,a,b,c,d,e),!0;case "pointerover":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case "gotpointercapture":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case "cancel":case "click":case "close":case "contextmenu":case "copy":case "cut":case "auxclick":case "dblclick":case "dragend":case "dragstart":case "drop":case "focusin":case "focusout":case "input":case "invalid":case "keydown":case "keypress":case "keyup":case "mousedown":case "mouseup":case "paste":case "pause":case "play":case "pointercancel":case "pointerdown":case "pointerup":case "ratechange":case "reset":case "resize":case "seeked":case "submit":case "touchcancel":case "touchend":case "touchstart":case "volumechange":case "change":case "selectionchange":case "textInput":case "compositionstart":case "compositionend":case "compositionupdate":case "beforeblur":case "afterblur":case "beforeinput":case "blur":case "fullscreenchange":case "focus":case "hashchange":case "popstate":case "select":case "selectstart":return 1;case "drag":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "mousemove":case "mouseout":case "mouseover":case "pointermove":case "pointerout":case "pointerover":case "scroll":case "toggle":case "touchmove":case "wheel":case "mouseenter":case "mouseleave":case "pointerenter":case "pointerleave":return 4;\ncase "message":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e="value"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;"charCode"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():"unknown"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():"unknown"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if("movementX"in\na)return a.movementX;a!==yd&&(yd&&"mousemove"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return"movementY"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:"Escape",\nSpacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Nd={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",\n119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Od={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if("Unidentified"!==b)return b}return"keypress"===a.type?(a=od(a),13===a?"Enter":String.fromCharCode(a)):"keydown"===a.type||"keyup"===a.type?Nd[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return"keypress"===a.type?od(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===\na.type?od(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&"CompositionEvent"in window,be=null;ia&&"documentMode"in document&&(be=document.documentMode);var ce=ia&&"TextEvent"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case "keyup":return-1!==$d.indexOf(b.keyCode);case "keydown":return 229!==b.keyCode;case "keypress":case "mousedown":case "focusout":return!0;default:return!1}}function he(a){a=a.detail;return"object"===typeof a&&"data"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case "compositionend":return he(b);case "keypress":if(32!==b.which)return null;fe=!0;return ee;case "textInput":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return"compositionend"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case "paste":return null;case "keypress":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case "compositionend":return de&&"ko"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return"input"===b?!!le[a.type]:"textarea"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,"onChange");0<b.length&&(c=new td("onChange","change",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if("change"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye="oninput"in document;if(!ye){var ze=document.createElement("div");ze.setAttribute("oninput","return;");ye="function"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent("onpropertychange",Be),qe=pe=null)}function Be(a){if("value"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){"focusin"===a?(Ae(),pe=b,qe=c,pe.attachEvent("onpropertychange",Be)):"focusout"===a&&Ae()}function De(a){if("selectionchange"===a||"keyup"===a||"keydown"===a)return te(qe)}function Ee(a,b){if("click"===a)return te(b)}function Fe(a,b){if("input"===a||"change"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He="function"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if("object"!==typeof a||null===a||"object"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,"selectionStart"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,"onSelect"),0<d.length&&(b=new td("onSelect","select",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c["Webkit"+a]="webkit"+b;c["Moz"+a]="moz"+b;return c}var We={animationend:Ve("Animation","AnimationEnd"),animationiteration:Ve("Animation","AnimationIteration"),animationstart:Ve("Animation","AnimationStart"),transitionend:Ve("Transition","TransitionEnd")},Xe={},Ye={};\nia&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),"TransitionEvent"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze("animationend"),af=Ze("animationiteration"),bf=Ze("animationstart"),cf=Ze("transitionend"),df=new Map,ef="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,"on"+kf)}ff($e,"onAnimationEnd");ff(af,"onAnimationIteration");ff(bf,"onAnimationStart");ff("dblclick","onDoubleClick");ff("focusin","onFocus");ff("focusout","onBlur");ff(cf,"onTransitionEnd");ha("onMouseEnter",["mouseout","mouseover"]);ha("onMouseLeave",["mouseout","mouseover"]);ha("onPointerEnter",["pointerout","pointerover"]);\nha("onPointerLeave",["pointerout","pointerover"]);fa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));fa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));fa("onBeforeInput",["compositionend","keypress","textInput","paste"]);fa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));fa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));\nfa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var lf="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),mf=new Set("cancel close invalid load scroll toggle".split(" ").concat(lf));\nfunction nf(a,b,c){var d=a.type||"unknown-event";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+"__bubble";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf="_reactListening"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){"selectionchange"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf("selectionchange",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||"touchstart"!==b&&"touchmove"!==b&&"wheel"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case "keypress":if(0===od(c))break a;case "keydown":case "keyup":k=Rd;break;case "focusin":n="focus";k=Fd;break;case "focusout":n="blur";k=Fd;break;case "beforeblur":case "afterblur":k=Fd;break;case "click":if(2===c.button)break a;case "auxclick":case "dblclick":case "mousedown":case "mousemove":case "mouseup":case "mouseout":case "mouseover":case "contextmenu":k=Bd;break;case "drag":case "dragend":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "dragstart":case "drop":k=\nDd;break;case "touchcancel":case "touchend":case "touchmove":case "touchstart":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case "scroll":k=vd;break;case "wheel":k=Zd;break;case "copy":case "cut":case "paste":k=Jd;break;case "gotpointercapture":case "lostpointercapture":case "pointercancel":case "pointerdown":case "pointermove":case "pointerout":case "pointerover":case "pointerup":k=Td}var t=0!==(b&4),J=!t&&"scroll"===a,x=t?null!==h?h+"Capture":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h="mouseover"===a||"pointerover"===a;k="mouseout"===a||"pointerout"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F="onMouseLeave";x="onMouseEnter";w="mouse";if("pointerout"===a||"pointerover"===a)t=Td,F="onPointerLeave",x="onPointerEnter",w="pointer";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+"leave",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+"enter",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if("select"===k||"input"===k&&"file"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&"input"===k.toLowerCase()&&("checkbox"===h.type||"radio"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);"focusout"===a&&(xa=h._wrapperState)&&\nxa.controlled&&"number"===h.type&&cb(h,"number",h.value)}xa=d?ue(d):window;switch(a){case "focusin":if(me(xa)||"true"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case "focusout":Se=Re=Qe=null;break;case "mousedown":Te=!0;break;case "contextmenu":case "mouseup":case "dragend":Te=!1;Ue(g,c,e);break;case "selectionchange":if(Pe)break;case "keydown":case "keyup":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case "compositionstart":var ba="onCompositionStart";break b;case "compositionend":ba="onCompositionEnd";\nbreak b;case "compositionupdate":ba="onCompositionUpdate";break b}ba=void 0}else ie?ge(a,c)&&(ba="onCompositionEnd"):"keydown"===a&&229===c.keyCode&&(ba="onCompositionStart");ba&&(de&&"ko"!==c.locale&&(ie||"onCompositionStart"!==ba?"onCompositionEnd"===ba&&ie&&($a=nd()):(kd=e,ld="value"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,"onBeforeInput"),\n0<d.length&&(e=new Ld("onBeforeInput","beforeinput",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+"Capture",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return("string"===typeof a?a:""+a).replace(xf,"\\n").replace(yf,"")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return"textarea"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff="function"===typeof setTimeout?setTimeout:void 0,Gf="function"===typeof clearTimeout?clearTimeout:void 0,Hf="function"===typeof Promise?Promise:void 0,Jf="function"===typeof queueMicrotask?queueMicrotask:"undefined"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,"/$"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else"$"!==c&&"$?"!==c&&"$!"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if("$"===b||"$!"===b||"$?"===b)break;if("/$"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if("$"===c||"$!"===c||"$?"===c){if(0===b)return a;b--}else"/$"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of="__reactFiber$"+Nf,Pf="__reactProps$"+Nf,uf="__reactContainer$"+Nf,of="__reactEvents$"+Nf,Qf="__reactListeners$"+Nf,Rf="__reactHandles$"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||"Unknown",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg="";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType="DELETED";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b="head"!==b&&"body"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if("/$"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else"$"!==c&&"$!"!==c&&"$?"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if("function"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r="function"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if("function"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return"function"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;"object"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;"function"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);"function"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;"object"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;"function"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);"function"===typeof b.getDerivedStateFromProps||"function"===typeof e.getSnapshotBeforeUpdate||"function"!==typeof e.UNSAFE_componentWillMount&&"function"!==typeof e.componentWillMount||(b=e.state,\n"function"===typeof e.componentWillMount&&e.componentWillMount(),"function"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);"function"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&"function"!==typeof a&&"object"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=""+a;if(null!==b&&null!==b.ref&&"function"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if("string"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,"[object Object]"===a?"object with keys {"+Object.keys(b).join(", ")+"}":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||"object"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if("string"===typeof b&&""!==b||"number"===typeof b)return b=xh(""+b,a.mode,c),b.return=a,b;if("object"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if("string"===typeof c&&""!==c||"number"===typeof c)return null!==e?null:h(a,b,""+c,d);if("object"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if("string"===typeof d&&""!==d||"number"===typeof d)return a=a.get(c)||null,h(b,a,""+d,e);if("object"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if("function"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){"object"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if("object"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||"object"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return"string"===typeof f&&""!==f||"number"===typeof f?(f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,"");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||"$?"===c.data||"$!"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return"function"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=":"+b+"R"+c;c=Uh++;0<c&&(b+="H"+c.toString(32));b+=":"}else c=Vh++,b=":"+b+"r"+c.toString(32)+":";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c="",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e="\\nError generating stack: "+f.message+"\\n"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni="function"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if("function"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&"function"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);"function"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:""})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if("function"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if("hidden"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;"object"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q="function"===typeof m||"function"===typeof g.getSnapshotBeforeUpdate;q||"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?("function"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||"function"!==typeof g.UNSAFE_componentWillMount&&"function"!==typeof g.componentWillMount||("function"===typeof g.componentWillMount&&g.componentWillMount(),"function"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),"function"===typeof g.componentDidMount&&(b.flags|=4194308)):\n("function"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):("function"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;"object"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m="function"===typeof y||"function"===typeof g.getSnapshotBeforeUpdate)||\n"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?("function"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||"function"!==typeof g.UNSAFE_componentWillUpdate&&"function"!==typeof g.componentWillUpdate||("function"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),"function"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),"function"===typeof g.componentDidUpdate&&(b.flags|=4),"function"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&"function"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:"$!"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:"hidden",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:"hidden",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:"visible",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:"visible",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:"visible",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if("$!"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if("$?"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case "forwards":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case "backwards":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case "together":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case "input":e=Ya(a,e);d=Ya(a,d);f=[];break;case "select":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case "textarea":e=gb(a,e);d=gb(a,d);f=[];break;default:"function"!==typeof e.onClick&&"function"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if("style"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]="")}else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if("style"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]="");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else"dangerouslySetInnerHTML"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):"children"===l?"string"!==typeof k&&"number"!==typeof k||(f=f||[]).push(l,""+k):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(ea.hasOwnProperty(l)?(null!=k&&"onScroll"===l&&D("scroll",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push("style",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case "hidden":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case "collapsed":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case "dialog":D("cancel",d);D("close",d);break;case "iframe":case "object":case "embed":D("load",d);break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],d);break;case "source":D("error",d);break;case "img":case "image":case "link":D("error",\nd);D("load",d);break;case "details":D("toggle",d);break;case "input":Za(d,f);D("invalid",d);break;case "select":d._wrapperState={wasMultiple:!!f.multiple};D("invalid",d);break;case "textarea":hb(d,f),D("invalid",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];"children"===g?"string"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=["children",h]):"number"===typeof h&&d.textContent!==""+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=["children",""+h]):ea.hasOwnProperty(g)&&null!=h&&"onScroll"===g&&D("scroll",d)}switch(c){case "input":Va(d);db(d,f,!0);break;case "textarea":Va(d);jb(d);break;case "select":case "option":break;default:"function"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;"http://www.w3.org/1999/xhtml"===a&&(a=kb(c));"http://www.w3.org/1999/xhtml"===a?"script"===c?(a=g.createElement("div"),a.innerHTML="<script>\\x3c/script>",a=a.removeChild(a.firstChild)):\n"string"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),"select"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case "dialog":D("cancel",a);D("close",a);e=d;break;case "iframe":case "object":case "embed":D("load",a);e=d;break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case "source":D("error",a);e=d;break;case "img":case "image":case "link":D("error",\na);D("load",a);e=d;break;case "details":D("toggle",a);e=d;break;case "input":Za(a,d);e=Ya(a,d);D("invalid",a);break;case "option":e=d;break;case "select":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D("invalid",a);break;case "textarea":hb(a,d);e=gb(a,d);D("invalid",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];"style"===f?sb(a,k):"dangerouslySetInnerHTML"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):"children"===f?"string"===typeof k?("textarea"!==\nc||""!==k)&&ob(a,k):"number"===typeof k&&ob(a,""+k):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(ea.hasOwnProperty(f)?null!=k&&"onScroll"===f&&D("scroll",a):null!=k&&ta(a,f,k,g))}switch(c){case "input":Va(a);db(a,d,!1);break;case "textarea":Va(a);jb(a);break;case "option":null!=d.value&&a.setAttribute("value",""+Sa(d.value));break;case "select":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:"function"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case "button":case "input":case "select":case "textarea":d=!!d.autoFocus;break a;case "img":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if("string"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&"hidden"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj="function"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if("function"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if("selectionStart"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent="":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}"function"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&"function"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,"function"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,"")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{"input"===h&&"radio"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];"style"===m?sb(e,q):"dangerouslySetInnerHTML"===m?nb(e,q):"children"===m?ob(e,q):ta(e,m,q,l)}switch(h){case "input":bb(e,f);break;case "textarea":ib(e,f);break;case "select":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:"",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if("function"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,"function"===typeof f.setProperty?f.setProperty("display","none","important"):f.display="none"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty("display")?k.display:null,h.style.display=\nrb("display",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?"":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,""),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case "button":case "input":case "select":case "textarea":k.autoFocus&&c.focus();break;case "img":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if("function"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&"object"===typeof k&&"function"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&("function"===typeof w.getDerivedStateFromError||null!==u&&"function"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&"function"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if("function"===typeof b.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;"object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,""));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if("function"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)bj(a)&&(g=1);else if("string"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,""));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:""+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll="function"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||" react-mount-point-unstable "!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if("function"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,"",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if("function"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,"",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if("function"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case "input":bb(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+\'][type="radio"]\');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case "textarea":ib(a,c);break;case "select":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d="",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if("function"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(",");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f="",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version="18.2.0-next-9e3b772b8-20220608";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QXNELHVLQUF1Syx5Q0FBeUMsZ0JBQWdCLE1BQU0sYUFBYSxXQUFXO0FBQ3RYLEdBQUcsa0JBQWtCLGNBQWMsaUJBQWlCLDhCQUE4QiwwQkFBMEIsOEJBQThCLGFBQWEsNkJBQTZCLDRDQUE0Qyw2QkFBNkIsMkJBQTJCLFdBQVcsRUFBRSxVQUFVLCtCQUErQjtBQUM5VSwyQ0FBMkMsbUJBQW1CLDhCQUE4QiwwREFBMEQsdUJBQXVCLGVBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanM/Yjk1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLypcbiBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKSxjYT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHAoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGRhPW5ldyBTZXQsZWE9e307ZnVuY3Rpb24gZmEoYSxiKXtoYShhLGIpO2hhKGErXCJDYXB0dXJlXCIsYil9XG5mdW5jdGlvbiBoYShhLGIpe2VhW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKylkYS5hZGQoYlthXSl9XG52YXIgaWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGphPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksa2E9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGxhPVxue30sbWE9e307ZnVuY3Rpb24gb2EoYSl7aWYoamEuY2FsbChtYSxhKSlyZXR1cm4hMDtpZihqYS5jYWxsKGxhLGEpKXJldHVybiExO2lmKGthLnRlc3QoYSkpcmV0dXJuIG1hW2FdPSEwO2xhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHBhKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gcWEoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8cGEoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiB2KGEsYixjLGQsZSxmLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z312YXIgej17fTtcblwiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDAsITEsYSxudWxsLCExLCExKX0pO1tbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YVswXTt6W2JdPW5ldyB2KGIsMSwhMSxhWzFdLG51bGwsITEsITEpfSk7W1wiY29udGVudEVkaXRhYmxlXCIsXCJkcmFnZ2FibGVcIixcInNwZWxsQ2hlY2tcIixcInZhbHVlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJhdXRvUmV2ZXJzZVwiLFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFwiZm9jdXNhYmxlXCIsXCJwcmVzZXJ2ZUFscGhhXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYSxudWxsLCExLCExKX0pO1wiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCEwLGEsbnVsbCwhMSwhMSl9KTtbXCJjYXB0dXJlXCIsXCJkb3dubG9hZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDYsITEsYSxudWxsLCExLCExKX0pO1tcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIHJhPS9bXFwtOl0oW2Etel0pL2c7ZnVuY3Rpb24gc2EoYSl7cmV0dXJuIGFbMV0udG9VcHBlckNhc2UoKX1cblwiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsXG5zYSk7eltiXT1uZXcgdihiLDEsITEsYSxudWxsLCExLCExKX0pO1wieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCExLCExKX0pO1tcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsITEsITEpfSk7W1widGFiSW5kZXhcIixcImNyb3NzT3JpZ2luXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG56LnhsaW5rSHJlZj1uZXcgdihcInhsaW5rSHJlZlwiLDEsITEsXCJ4bGluazpocmVmXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITAsITEpO1tcInNyY1wiLFwiaHJlZlwiLFwiYWN0aW9uXCIsXCJmb3JtQWN0aW9uXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7XG5mdW5jdGlvbiB0YShhLGIsYyxkKXt2YXIgZT16Lmhhc093blByb3BlcnR5KGIpP3pbYl06bnVsbDtpZihudWxsIT09ZT8wIT09ZS50eXBlOmR8fCEoMjxiLmxlbmd0aCl8fFwib1wiIT09YlswXSYmXCJPXCIhPT1iWzBdfHxcIm5cIiE9PWJbMV0mJlwiTlwiIT09YlsxXSlxYShiLGMsZSxkKSYmKGM9bnVsbCksZHx8bnVsbD09PWU/b2EoYikmJihudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLFwiXCIrYykpOmUubXVzdFVzZVByb3BlcnR5P2FbZS5wcm9wZXJ0eU5hbWVdPW51bGw9PT1jPzM9PT1lLnR5cGU/ITE6XCJcIjpjOihiPWUuYXR0cmlidXRlTmFtZSxkPWUuYXR0cmlidXRlTmFtZXNwYWNlLG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOihlPWUudHlwZSxjPTM9PT1lfHw0PT09ZSYmITA9PT1jP1wiXCI6XCJcIitjLGQ/YS5zZXRBdHRyaWJ1dGVOUyhkLGIsYyk6YS5zZXRBdHRyaWJ1dGUoYixjKSkpfVxudmFyIHVhPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELHZhPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLHdhPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikseWE9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHphPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxBYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksQmE9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLENhPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLERhPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxFYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksRmE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksR2E9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksSGE9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik7U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlXCIpO1xudmFyIElhPVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmxlZ2FjeV9oaWRkZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmNhY2hlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC50cmFjaW5nX21hcmtlclwiKTt2YXIgSmE9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEthKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1KYSYmYVtKYV18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH12YXIgQT1PYmplY3QuYXNzaWduLExhO2Z1bmN0aW9uIE1hKGEpe2lmKHZvaWQgMD09PUxhKXRyeXt0aHJvdyBFcnJvcigpO31jYXRjaChjKXt2YXIgYj1jLnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO0xhPWImJmJbMV18fFwiXCJ9cmV0dXJuXCJcXG5cIitMYSthfXZhciBOYT0hMTtcbmZ1bmN0aW9uIE9hKGEsYil7aWYoIWF8fE5hKXJldHVyblwiXCI7TmE9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZihiKWlmKGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwicHJvcHNcIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9fSksXCJvYmplY3RcIj09PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KGIsW10pfWNhdGNoKGwpe3ZhciBkPWx9UmVmbGVjdC5jb25zdHJ1Y3QoYSxbXSxiKX1lbHNle3RyeXtiLmNhbGwoKX1jYXRjaChsKXtkPWx9YS5jYWxsKGIucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpO31jYXRjaChsKXtkPWx9YSgpfX1jYXRjaChsKXtpZihsJiZkJiZcInN0cmluZ1wiPT09dHlwZW9mIGwuc3RhY2spe2Zvcih2YXIgZT1sLnN0YWNrLnNwbGl0KFwiXFxuXCIpLFxuZj1kLnN0YWNrLnNwbGl0KFwiXFxuXCIpLGc9ZS5sZW5ndGgtMSxoPWYubGVuZ3RoLTE7MTw9ZyYmMDw9aCYmZVtnXSE9PWZbaF07KWgtLTtmb3IoOzE8PWcmJjA8PWg7Zy0tLGgtLSlpZihlW2ddIT09ZltoXSl7aWYoMSE9PWd8fDEhPT1oKXtkbyBpZihnLS0saC0tLDA+aHx8ZVtnXSE9PWZbaF0pe3ZhciBrPVwiXFxuXCIrZVtnXS5yZXBsYWNlKFwiIGF0IG5ldyBcIixcIiBhdCBcIik7YS5kaXNwbGF5TmFtZSYmay5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpJiYoaz1rLnJlcGxhY2UoXCI8YW5vbnltb3VzPlwiLGEuZGlzcGxheU5hbWUpKTtyZXR1cm4ga313aGlsZSgxPD1nJiYwPD1oKX1icmVha319fWZpbmFsbHl7TmE9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9Y31yZXR1cm4oYT1hP2EuZGlzcGxheU5hbWV8fGEubmFtZTpcIlwiKT9NYShhKTpcIlwifVxuZnVuY3Rpb24gUGEoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDU6cmV0dXJuIE1hKGEudHlwZSk7Y2FzZSAxNjpyZXR1cm4gTWEoXCJMYXp5XCIpO2Nhc2UgMTM6cmV0dXJuIE1hKFwiU3VzcGVuc2VcIik7Y2FzZSAxOTpyZXR1cm4gTWEoXCJTdXNwZW5zZUxpc3RcIik7Y2FzZSAwOmNhc2UgMjpjYXNlIDE1OnJldHVybiBhPU9hKGEudHlwZSwhMSksYTtjYXNlIDExOnJldHVybiBhPU9hKGEudHlwZS5yZW5kZXIsITEpLGE7Y2FzZSAxOnJldHVybiBhPU9hKGEudHlwZSwhMCksYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gUWEoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSB3YTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgQWE6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgemE6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSBFYTpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBGYTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwifWlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBDYTpyZXR1cm4oYS5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSBCYTpyZXR1cm4oYS5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSBEYTp2YXIgYj1hLnJlbmRlcjthPWEuZGlzcGxheU5hbWU7YXx8KGE9Yi5kaXNwbGF5TmFtZXx8XG5iLm5hbWV8fFwiXCIsYT1cIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7cmV0dXJuIGE7Y2FzZSBHYTpyZXR1cm4gYj1hLmRpc3BsYXlOYW1lfHxudWxsLG51bGwhPT1iP2I6UWEoYS50eXBlKXx8XCJNZW1vXCI7Y2FzZSBIYTpiPWEuX3BheWxvYWQ7YT1hLl9pbml0O3RyeXtyZXR1cm4gUWEoYShiKSl9Y2F0Y2goYyl7fX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJhKGEpe3ZhciBiPWEudHlwZTtzd2l0Y2goYS50YWcpe2Nhc2UgMjQ6cmV0dXJuXCJDYWNoZVwiO2Nhc2UgOTpyZXR1cm4oYi5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSAxMDpyZXR1cm4oYi5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSAxODpyZXR1cm5cIkRlaHlkcmF0ZWRGcmFnbWVudFwiO2Nhc2UgMTE6cmV0dXJuIGE9Yi5yZW5kZXIsYT1hLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwiXCIsYi5kaXNwbGF5TmFtZXx8KFwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtjYXNlIDc6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgNTpyZXR1cm4gYjtjYXNlIDQ6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIDM6cmV0dXJuXCJSb290XCI7Y2FzZSA2OnJldHVyblwiVGV4dFwiO2Nhc2UgMTY6cmV0dXJuIFFhKGIpO2Nhc2UgODpyZXR1cm4gYj09PXphP1wiU3RyaWN0TW9kZVwiOlwiTW9kZVwiO2Nhc2UgMjI6cmV0dXJuXCJPZmZzY3JlZW5cIjtcbmNhc2UgMTI6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgMjE6cmV0dXJuXCJTY29wZVwiO2Nhc2UgMTM6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgMTk6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIjtjYXNlIDI1OnJldHVyblwiVHJhY2luZ01hcmtlclwiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBiLmRpc3BsYXlOYW1lfHxiLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKXJldHVybiBifXJldHVybiBudWxsfWZ1bmN0aW9uIFNhKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSBcImJvb2xlYW5cIjpjYXNlIFwibnVtYmVyXCI6Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJ1bmRlZmluZWRcIjpyZXR1cm4gYTtjYXNlIFwib2JqZWN0XCI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFRhKGEpe3ZhciBiPWEudHlwZTtyZXR1cm4oYT1hLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09YS50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09Ynx8XCJyYWRpb1wiPT09Yil9XG5mdW5jdGlvbiBVYShhKXt2YXIgYj1UYShhKT9cImNoZWNrZWRcIjpcInZhbHVlXCIsYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEuY29uc3RydWN0b3IucHJvdG90eXBlLGIpLGQ9XCJcIithW2JdO2lmKCFhLmhhc093blByb3BlcnR5KGIpJiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmdldCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuc2V0KXt2YXIgZT1jLmdldCxmPWMuc2V0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYSl7ZD1cIlwiK2E7Zi5jYWxsKHRoaXMsYSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7ZW51bWVyYWJsZTpjLmVudW1lcmFibGV9KTtyZXR1cm57Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7ZD1cIlwiK2F9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2EuX3ZhbHVlVHJhY2tlcj1cbm51bGw7ZGVsZXRlIGFbYl19fX19ZnVuY3Rpb24gVmEoYSl7YS5fdmFsdWVUcmFja2VyfHwoYS5fdmFsdWVUcmFja2VyPVVhKGEpKX1mdW5jdGlvbiBXYShhKXtpZighYSlyZXR1cm4hMTt2YXIgYj1hLl92YWx1ZVRyYWNrZXI7aWYoIWIpcmV0dXJuITA7dmFyIGM9Yi5nZXRWYWx1ZSgpO3ZhciBkPVwiXCI7YSYmKGQ9VGEoYSk/YS5jaGVja2VkP1widHJ1ZVwiOlwiZmFsc2VcIjphLnZhbHVlKTthPWQ7cmV0dXJuIGEhPT1jPyhiLnNldFZhbHVlKGEpLCEwKTohMX1mdW5jdGlvbiBYYShhKXthPWF8fChcInVuZGVmaW5lZFwiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYS5hY3RpdmVFbGVtZW50fHxhLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19XG5mdW5jdGlvbiBZYShhLGIpe3ZhciBjPWIuY2hlY2tlZDtyZXR1cm4gQSh7fSxiLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT1jP2M6YS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gWmEoYSxiKXt2YXIgYz1udWxsPT1iLmRlZmF1bHRWYWx1ZT9cIlwiOmIuZGVmYXVsdFZhbHVlLGQ9bnVsbCE9Yi5jaGVja2VkP2IuY2hlY2tlZDpiLmRlZmF1bHRDaGVja2VkO2M9U2EobnVsbCE9Yi52YWx1ZT9iLnZhbHVlOmMpO2EuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6ZCxpbml0aWFsVmFsdWU6Yyxjb250cm9sbGVkOlwiY2hlY2tib3hcIj09PWIudHlwZXx8XCJyYWRpb1wiPT09Yi50eXBlP251bGwhPWIuY2hlY2tlZDpudWxsIT1iLnZhbHVlfX1mdW5jdGlvbiBhYihhLGIpe2I9Yi5jaGVja2VkO251bGwhPWImJnRhKGEsXCJjaGVja2VkXCIsYiwhMSl9XG5mdW5jdGlvbiBiYihhLGIpe2FiKGEsYik7dmFyIGM9U2EoYi52YWx1ZSksZD1iLnR5cGU7aWYobnVsbCE9YylpZihcIm51bWJlclwiPT09ZCl7aWYoMD09PWMmJlwiXCI9PT1hLnZhbHVlfHxhLnZhbHVlIT1jKWEudmFsdWU9XCJcIitjfWVsc2UgYS52YWx1ZSE9PVwiXCIrYyYmKGEudmFsdWU9XCJcIitjKTtlbHNlIGlmKFwic3VibWl0XCI9PT1kfHxcInJlc2V0XCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpO3JldHVybn1iLmhhc093blByb3BlcnR5KFwidmFsdWVcIik/Y2IoYSxiLnR5cGUsYyk6Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSYmY2IoYSxiLnR5cGUsU2EoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9XG5mdW5jdGlvbiBkYihhLGIsYyl7aWYoYi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpfHxiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpKXt2YXIgZD1iLnR5cGU7aWYoIShcInN1Ym1pdFwiIT09ZCYmXCJyZXNldFwiIT09ZHx8dm9pZCAwIT09Yi52YWx1ZSYmbnVsbCE9PWIudmFsdWUpKXJldHVybjtiPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtjfHxiPT09YS52YWx1ZXx8KGEudmFsdWU9Yik7YS5kZWZhdWx0VmFsdWU9Yn1jPWEubmFtZTtcIlwiIT09YyYmKGEubmFtZT1cIlwiKTthLmRlZmF1bHRDaGVja2VkPSEhYS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkO1wiXCIhPT1jJiYoYS5uYW1lPWMpfVxuZnVuY3Rpb24gY2IoYSxiLGMpe2lmKFwibnVtYmVyXCIhPT1ifHxYYShhLm93bmVyRG9jdW1lbnQpIT09YSludWxsPT1jP2EuZGVmYXVsdFZhbHVlPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTphLmRlZmF1bHRWYWx1ZSE9PVwiXCIrYyYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrYyl9dmFyIGViPUFycmF5LmlzQXJyYXk7XG5mdW5jdGlvbiBmYihhLGIsYyxkKXthPWEub3B0aW9ucztpZihiKXtiPXt9O2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWJbXCIkXCIrY1tlXV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyllPWIuaGFzT3duUHJvcGVydHkoXCIkXCIrYVtjXS52YWx1ZSksYVtjXS5zZWxlY3RlZCE9PWUmJihhW2NdLnNlbGVjdGVkPWUpLGUmJmQmJihhW2NdLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtjPVwiXCIrU2EoYyk7Yj1udWxsO2ZvcihlPTA7ZTxhLmxlbmd0aDtlKyspe2lmKGFbZV0udmFsdWU9PT1jKXthW2VdLnNlbGVjdGVkPSEwO2QmJihhW2VdLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufW51bGwhPT1ifHxhW2VdLmRpc2FibGVkfHwoYj1hW2VdKX1udWxsIT09YiYmKGIuc2VsZWN0ZWQ9ITApfX1cbmZ1bmN0aW9uIGdiKGEsYil7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl0aHJvdyBFcnJvcihwKDkxKSk7cmV0dXJuIEEoe30sYix7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1iLnZhbHVlO2lmKG51bGw9PWMpe2M9Yi5jaGlsZHJlbjtiPWIuZGVmYXVsdFZhbHVlO2lmKG51bGwhPWMpe2lmKG51bGwhPWIpdGhyb3cgRXJyb3IocCg5MikpO2lmKGViKGMpKXtpZigxPGMubGVuZ3RoKXRocm93IEVycm9yKHAoOTMpKTtjPWNbMF19Yj1jfW51bGw9PWImJihiPVwiXCIpO2M9Yn1hLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpTYShjKX19XG5mdW5jdGlvbiBpYihhLGIpe3ZhciBjPVNhKGIudmFsdWUpLGQ9U2EoYi5kZWZhdWx0VmFsdWUpO251bGwhPWMmJihjPVwiXCIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09YyYmKGEuZGVmYXVsdFZhbHVlPWMpKTtudWxsIT1kJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitkKX1mdW5jdGlvbiBqYihhKXt2YXIgYj1hLnRleHRDb250ZW50O2I9PT1hLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiZcIlwiIT09YiYmbnVsbCE9PWImJihhLnZhbHVlPWIpfWZ1bmN0aW9uIGtiKGEpe3N3aXRjaChhKXtjYXNlIFwic3ZnXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO2Nhc2UgXCJtYXRoXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7ZGVmYXVsdDpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIn19XG5mdW5jdGlvbiBsYihhLGIpe3JldHVybiBudWxsPT1hfHxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/a2IoYik6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YSYmXCJmb3JlaWduT2JqZWN0XCI9PT1iP1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiOmF9XG52YXIgbWIsbmI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiE9PWEubmFtZXNwYWNlVVJJfHxcImlubmVySFRNTFwiaW4gYSlhLmlubmVySFRNTD1iO2Vsc2V7bWI9bWJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bWIuaW5uZXJIVE1MPVwiPHN2Zz5cIitiLnZhbHVlT2YoKS50b1N0cmluZygpK1wiPC9zdmc+XCI7Zm9yKGI9bWIuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2IuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpfX0pO1xuZnVuY3Rpb24gb2IoYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9YjtyZXR1cm59fWEudGV4dENvbnRlbnQ9Yn1cbnZhciBwYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLFxuem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxxYj1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07T2JqZWN0LmtleXMocGIpLmZvckVhY2goZnVuY3Rpb24oYSl7cWIuZm9yRWFjaChmdW5jdGlvbihiKXtiPWIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxKTtwYltiXT1wYlthXX0pfSk7ZnVuY3Rpb24gcmIoYSxiLGMpe3JldHVybiBudWxsPT1ifHxcImJvb2xlYW5cIj09PXR5cGVvZiBifHxcIlwiPT09Yj9cIlwiOmN8fFwibnVtYmVyXCIhPT10eXBlb2YgYnx8MD09PWJ8fHBiLmhhc093blByb3BlcnR5KGEpJiZwYlthXT8oXCJcIitiKS50cmltKCk6YitcInB4XCJ9XG5mdW5jdGlvbiBzYihhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKFwiLS1cIiksZT1yYihjLGJbY10sZCk7XCJmbG9hdFwiPT09YyYmKGM9XCJjc3NGbG9hdFwiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fXZhciB0Yj1BKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO1xuZnVuY3Rpb24gdWIoYSxiKXtpZihiKXtpZih0YlthXSYmKG51bGwhPWIuY2hpbGRyZW58fG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoMTM3LGEpKTtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1iLmNoaWxkcmVuKXRocm93IEVycm9yKHAoNjApKTtpZihcIm9iamVjdFwiIT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fCEoXCJfX2h0bWxcImluIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoNjEpKTt9aWYobnVsbCE9Yi5zdHlsZSYmXCJvYmplY3RcIiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKHAoNjIpKTt9fVxuZnVuY3Rpb24gdmIoYSxiKXtpZigtMT09PWEuaW5kZXhPZihcIi1cIikpcmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBiLmlzO3N3aXRjaChhKXtjYXNlIFwiYW5ub3RhdGlvbi14bWxcIjpjYXNlIFwiY29sb3ItcHJvZmlsZVwiOmNhc2UgXCJmb250LWZhY2VcIjpjYXNlIFwiZm9udC1mYWNlLXNyY1wiOmNhc2UgXCJmb250LWZhY2UtdXJpXCI6Y2FzZSBcImZvbnQtZmFjZS1mb3JtYXRcIjpjYXNlIFwiZm9udC1mYWNlLW5hbWVcIjpjYXNlIFwibWlzc2luZy1nbHlwaFwiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB3Yj1udWxsO2Z1bmN0aW9uIHhiKGEpe2E9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8d2luZG93O2EuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihhPWEuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpO3JldHVybiAzPT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YX12YXIgeWI9bnVsbCx6Yj1udWxsLEFiPW51bGw7XG5mdW5jdGlvbiBCYihhKXtpZihhPUNiKGEpKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgeWIpdGhyb3cgRXJyb3IocCgyODApKTt2YXIgYj1hLnN0YXRlTm9kZTtiJiYoYj1EYihiKSx5YihhLnN0YXRlTm9kZSxhLnR5cGUsYikpfX1mdW5jdGlvbiBFYihhKXt6Yj9BYj9BYi5wdXNoKGEpOkFiPVthXTp6Yj1hfWZ1bmN0aW9uIEZiKCl7aWYoemIpe3ZhciBhPXpiLGI9QWI7QWI9emI9bnVsbDtCYihhKTtpZihiKWZvcihhPTA7YTxiLmxlbmd0aDthKyspQmIoYlthXSl9fWZ1bmN0aW9uIEdiKGEsYil7cmV0dXJuIGEoYil9ZnVuY3Rpb24gSGIoKXt9dmFyIEliPSExO2Z1bmN0aW9uIEpiKGEsYixjKXtpZihJYilyZXR1cm4gYShiLGMpO0liPSEwO3RyeXtyZXR1cm4gR2IoYSxiLGMpfWZpbmFsbHl7aWYoSWI9ITEsbnVsbCE9PXpifHxudWxsIT09QWIpSGIoKSxGYigpfX1cbmZ1bmN0aW9uIEtiKGEsYil7dmFyIGM9YS5zdGF0ZU5vZGU7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7dmFyIGQ9RGIoYyk7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgXCJvbkNsaWNrXCI6Y2FzZSBcIm9uQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tcIjpjYXNlIFwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlIFwib25Nb3VzZURvd25cIjpjYXNlIFwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlVXBcIjpjYXNlIFwib25Nb3VzZVVwQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRW50ZXJcIjooZD0hZC5kaXNhYmxlZCl8fChhPWEudHlwZSxkPSEoXCJidXR0b25cIj09PWF8fFwiaW5wdXRcIj09PWF8fFwic2VsZWN0XCI9PT1hfHxcInRleHRhcmVhXCI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJlwiZnVuY3Rpb25cIiE9PVxudHlwZW9mIGMpdGhyb3cgRXJyb3IocCgyMzEsYix0eXBlb2YgYykpO3JldHVybiBjfXZhciBMYj0hMTtpZihpYSl0cnl7dmFyIE1iPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNYixcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7TGI9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKX1jYXRjaChhKXtMYj0hMX1mdW5jdGlvbiBOYihhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2gobSl7dGhpcy5vbkVycm9yKG0pfX12YXIgT2I9ITEsUGI9bnVsbCxRYj0hMSxSYj1udWxsLFNiPXtvbkVycm9yOmZ1bmN0aW9uKGEpe09iPSEwO1BiPWF9fTtmdW5jdGlvbiBUYihhLGIsYyxkLGUsZixnLGgsayl7T2I9ITE7UGI9bnVsbDtOYi5hcHBseShTYixhcmd1bWVudHMpfVxuZnVuY3Rpb24gVWIoYSxiLGMsZCxlLGYsZyxoLGspe1RiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihPYil7aWYoT2Ipe3ZhciBsPVBiO09iPSExO1BiPW51bGx9ZWxzZSB0aHJvdyBFcnJvcihwKDE5OCkpO1FifHwoUWI9ITAsUmI9bCl9fWZ1bmN0aW9uIFZiKGEpe3ZhciBiPWEsYz1hO2lmKGEuYWx0ZXJuYXRlKWZvcig7Yi5yZXR1cm47KWI9Yi5yZXR1cm47ZWxzZXthPWI7ZG8gYj1hLDAhPT0oYi5mbGFncyY0MDk4KSYmKGM9Yi5yZXR1cm4pLGE9Yi5yZXR1cm47d2hpbGUoYSl9cmV0dXJuIDM9PT1iLnRhZz9jOm51bGx9ZnVuY3Rpb24gV2IoYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9YS5tZW1vaXplZFN0YXRlO251bGw9PT1iJiYoYT1hLmFsdGVybmF0ZSxudWxsIT09YSYmKGI9YS5tZW1vaXplZFN0YXRlKSk7aWYobnVsbCE9PWIpcmV0dXJuIGIuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBYYihhKXtpZihWYihhKSE9PWEpdGhyb3cgRXJyb3IocCgxODgpKTt9XG5mdW5jdGlvbiBZYihhKXt2YXIgYj1hLmFsdGVybmF0ZTtpZighYil7Yj1WYihhKTtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBiIT09YT9udWxsOmF9Zm9yKHZhciBjPWEsZD1iOzspe3ZhciBlPWMucmV0dXJuO2lmKG51bGw9PT1lKWJyZWFrO3ZhciBmPWUuYWx0ZXJuYXRlO2lmKG51bGw9PT1mKXtkPWUucmV0dXJuO2lmKG51bGwhPT1kKXtjPWQ7Y29udGludWV9YnJlYWt9aWYoZS5jaGlsZD09PWYuY2hpbGQpe2ZvcihmPWUuY2hpbGQ7Zjspe2lmKGY9PT1jKXJldHVybiBYYihlKSxhO2lmKGY9PT1kKXJldHVybiBYYihlKSxiO2Y9Zi5zaWJsaW5nfXRocm93IEVycm9yKHAoMTg4KSk7fWlmKGMucmV0dXJuIT09ZC5yZXR1cm4pYz1lLGQ9ZjtlbHNle2Zvcih2YXIgZz0hMSxoPWUuY2hpbGQ7aDspe2lmKGg9PT1jKXtnPSEwO2M9ZTtkPWY7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1lO2M9ZjticmVha31oPWguc2libGluZ31pZighZyl7Zm9yKGg9Zi5jaGlsZDtoOyl7aWYoaD09PVxuYyl7Zz0hMDtjPWY7ZD1lO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZjtjPWU7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpdGhyb3cgRXJyb3IocCgxODkpKTt9fWlmKGMuYWx0ZXJuYXRlIT09ZCl0aHJvdyBFcnJvcihwKDE5MCkpO31pZigzIT09Yy50YWcpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYy5zdGF0ZU5vZGUuY3VycmVudD09PWM/YTpifWZ1bmN0aW9uIFpiKGEpe2E9WWIoYSk7cmV0dXJuIG51bGwhPT1hPyRiKGEpOm51bGx9ZnVuY3Rpb24gJGIoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGE7Zm9yKGE9YS5jaGlsZDtudWxsIT09YTspe3ZhciBiPSRiKGEpO2lmKG51bGwhPT1iKXJldHVybiBiO2E9YS5zaWJsaW5nfXJldHVybiBudWxsfVxudmFyIGFjPWNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssYmM9Y2EudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssY2M9Y2EudW5zdGFibGVfc2hvdWxkWWllbGQsZGM9Y2EudW5zdGFibGVfcmVxdWVzdFBhaW50LEI9Y2EudW5zdGFibGVfbm93LGVjPWNhLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGZjPWNhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGdjPWNhLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGhjPWNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGljPWNhLnVuc3RhYmxlX0xvd1ByaW9yaXR5LGpjPWNhLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxrYz1udWxsLGxjPW51bGw7ZnVuY3Rpb24gbWMoYSl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Db21taXRGaWJlclJvb3Qoa2MsYSx2b2lkIDAsMTI4PT09KGEuY3VycmVudC5mbGFncyYxMjgpKX1jYXRjaChiKXt9fVxudmFyIG9jPU1hdGguY2x6MzI/TWF0aC5jbHozMjpuYyxwYz1NYXRoLmxvZyxxYz1NYXRoLkxOMjtmdW5jdGlvbiBuYyhhKXthPj4+PTA7cmV0dXJuIDA9PT1hPzMyOjMxLShwYyhhKS9xY3wwKXwwfXZhciByYz02NCxzYz00MTk0MzA0O1xuZnVuY3Rpb24gdGMoYSl7c3dpdGNoKGEmLWEpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBhJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gYSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O1xuZGVmYXVsdDpyZXR1cm4gYX19ZnVuY3Rpb24gdWMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcztpZigwPT09YylyZXR1cm4gMDt2YXIgZD0wLGU9YS5zdXNwZW5kZWRMYW5lcyxmPWEucGluZ2VkTGFuZXMsZz1jJjI2ODQzNTQ1NTtpZigwIT09Zyl7dmFyIGg9ZyZ+ZTswIT09aD9kPXRjKGgpOihmJj1nLDAhPT1mJiYoZD10YyhmKSkpfWVsc2UgZz1jJn5lLDAhPT1nP2Q9dGMoZyk6MCE9PWYmJihkPXRjKGYpKTtpZigwPT09ZClyZXR1cm4gMDtpZigwIT09YiYmYiE9PWQmJjA9PT0oYiZlKSYmKGU9ZCYtZCxmPWImLWIsZT49Znx8MTY9PT1lJiYwIT09KGYmNDE5NDI0MCkpKXJldHVybiBiOzAhPT0oZCY0KSYmKGR8PWMmMTYpO2I9YS5lbnRhbmdsZWRMYW5lcztpZigwIT09Yilmb3IoYT1hLmVudGFuZ2xlbWVudHMsYiY9ZDswPGI7KWM9MzEtb2MoYiksZT0xPDxjLGR8PWFbY10sYiY9fmU7cmV0dXJuIGR9XG5mdW5jdGlvbiB2YyhhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gYisyNTA7Y2FzZSA4OmNhc2UgMTY6Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBiKzVFMztjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybi0xO2Nhc2UgMTM0MjE3NzI4OmNhc2UgMjY4NDM1NDU2OmNhc2UgNTM2ODcwOTEyOmNhc2UgMTA3Mzc0MTgyNDpyZXR1cm4tMTtkZWZhdWx0OnJldHVybi0xfX1cbmZ1bmN0aW9uIHdjKGEsYil7Zm9yKHZhciBjPWEuc3VzcGVuZGVkTGFuZXMsZD1hLnBpbmdlZExhbmVzLGU9YS5leHBpcmF0aW9uVGltZXMsZj1hLnBlbmRpbmdMYW5lczswPGY7KXt2YXIgZz0zMS1vYyhmKSxoPTE8PGcsaz1lW2ddO2lmKC0xPT09ayl7aWYoMD09PShoJmMpfHwwIT09KGgmZCkpZVtnXT12YyhoLGIpfWVsc2Ugazw9YiYmKGEuZXhwaXJlZExhbmVzfD1oKTtmJj1+aH19ZnVuY3Rpb24geGMoYSl7YT1hLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNTtyZXR1cm4gMCE9PWE/YTphJjEwNzM3NDE4MjQ/MTA3Mzc0MTgyNDowfWZ1bmN0aW9uIHljKCl7dmFyIGE9cmM7cmM8PD0xOzA9PT0ocmMmNDE5NDI0MCkmJihyYz02NCk7cmV0dXJuIGF9ZnVuY3Rpb24gemMoYSl7Zm9yKHZhciBiPVtdLGM9MDszMT5jO2MrKyliLnB1c2goYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBBYyhhLGIsYyl7YS5wZW5kaW5nTGFuZXN8PWI7NTM2ODcwOTEyIT09YiYmKGEuc3VzcGVuZGVkTGFuZXM9MCxhLnBpbmdlZExhbmVzPTApO2E9YS5ldmVudFRpbWVzO2I9MzEtb2MoYik7YVtiXT1jfWZ1bmN0aW9uIEJjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXMmfmI7YS5wZW5kaW5nTGFuZXM9YjthLnN1c3BlbmRlZExhbmVzPTA7YS5waW5nZWRMYW5lcz0wO2EuZXhwaXJlZExhbmVzJj1iO2EubXV0YWJsZVJlYWRMYW5lcyY9YjthLmVudGFuZ2xlZExhbmVzJj1iO2I9YS5lbnRhbmdsZW1lbnRzO3ZhciBkPWEuZXZlbnRUaW1lcztmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGM7KXt2YXIgZT0zMS1vYyhjKSxmPTE8PGU7YltlXT0wO2RbZV09LTE7YVtlXT0tMTtjJj1+Zn19XG5mdW5jdGlvbiBDYyhhLGIpe3ZhciBjPWEuZW50YW5nbGVkTGFuZXN8PWI7Zm9yKGE9YS5lbnRhbmdsZW1lbnRzO2M7KXt2YXIgZD0zMS1vYyhjKSxlPTE8PGQ7ZSZifGFbZF0mYiYmKGFbZF18PWIpO2MmPX5lfX12YXIgQz0wO2Z1bmN0aW9uIERjKGEpe2EmPS1hO3JldHVybiAxPGE/NDxhPzAhPT0oYSYyNjg0MzU0NTUpPzE2OjUzNjg3MDkxMjo0OjF9dmFyIEVjLEZjLEdjLEhjLEljLEpjPSExLEtjPVtdLExjPW51bGwsTWM9bnVsbCxOYz1udWxsLE9jPW5ldyBNYXAsUGM9bmV3IE1hcCxRYz1bXSxSYz1cIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCBzdWJtaXRcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBTYyhhLGIpe3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOkxjPW51bGw7YnJlYWs7Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnbGVhdmVcIjpNYz1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwibW91c2VvdXRcIjpOYz1udWxsO2JyZWFrO2Nhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVyb3V0XCI6T2MuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6UGMuZGVsZXRlKGIucG9pbnRlcklkKX19XG5mdW5jdGlvbiBUYyhhLGIsYyxkLGUsZil7aWYobnVsbD09PWF8fGEubmF0aXZlRXZlbnQhPT1mKXJldHVybiBhPXtibG9ja2VkT246Yixkb21FdmVudE5hbWU6YyxldmVudFN5c3RlbUZsYWdzOmQsbmF0aXZlRXZlbnQ6Zix0YXJnZXRDb250YWluZXJzOltlXX0sbnVsbCE9PWImJihiPUNiKGIpLG51bGwhPT1iJiZGYyhiKSksYTthLmV2ZW50U3lzdGVtRmxhZ3N8PWQ7Yj1hLnRhcmdldENvbnRhaW5lcnM7bnVsbCE9PWUmJi0xPT09Yi5pbmRleE9mKGUpJiZiLnB1c2goZSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBVYyhhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlIFwiZm9jdXNpblwiOnJldHVybiBMYz1UYyhMYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJkcmFnZW50ZXJcIjpyZXR1cm4gTWM9VGMoTWMsYSxiLGMsZCxlKSwhMDtjYXNlIFwibW91c2VvdmVyXCI6cmV0dXJuIE5jPVRjKE5jLGEsYixjLGQsZSksITA7Y2FzZSBcInBvaW50ZXJvdmVyXCI6dmFyIGY9ZS5wb2ludGVySWQ7T2Muc2V0KGYsVGMoT2MuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpO3JldHVybiEwO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOnJldHVybiBmPWUucG9pbnRlcklkLFBjLnNldChmLFRjKFBjLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKSwhMH1yZXR1cm4hMX1cbmZ1bmN0aW9uIFZjKGEpe3ZhciBiPVdjKGEudGFyZ2V0KTtpZihudWxsIT09Yil7dmFyIGM9VmIoYik7aWYobnVsbCE9PWMpaWYoYj1jLnRhZywxMz09PWIpe2lmKGI9V2IoYyksbnVsbCE9PWIpe2EuYmxvY2tlZE9uPWI7SWMoYS5wcmlvcml0eSxmdW5jdGlvbigpe0djKGMpfSk7cmV0dXJufX1lbHNlIGlmKDM9PT1iJiZjLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXthLmJsb2NrZWRPbj0zPT09Yy50YWc/Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19YS5ibG9ja2VkT249bnVsbH1cbmZ1bmN0aW9uIFhjKGEpe2lmKG51bGwhPT1hLmJsb2NrZWRPbilyZXR1cm4hMTtmb3IodmFyIGI9YS50YXJnZXRDb250YWluZXJzOzA8Yi5sZW5ndGg7KXt2YXIgYz1ZYyhhLmRvbUV2ZW50TmFtZSxhLmV2ZW50U3lzdGVtRmxhZ3MsYlswXSxhLm5hdGl2ZUV2ZW50KTtpZihudWxsPT09Yyl7Yz1hLm5hdGl2ZUV2ZW50O3ZhciBkPW5ldyBjLmNvbnN0cnVjdG9yKGMudHlwZSxjKTt3Yj1kO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZCk7d2I9bnVsbH1lbHNlIHJldHVybiBiPUNiKGMpLG51bGwhPT1iJiZGYyhiKSxhLmJsb2NrZWRPbj1jLCExO2Iuc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBaYyhhLGIsYyl7WGMoYSkmJmMuZGVsZXRlKGIpfWZ1bmN0aW9uICRjKCl7SmM9ITE7bnVsbCE9PUxjJiZYYyhMYykmJihMYz1udWxsKTtudWxsIT09TWMmJlhjKE1jKSYmKE1jPW51bGwpO251bGwhPT1OYyYmWGMoTmMpJiYoTmM9bnVsbCk7T2MuZm9yRWFjaChaYyk7UGMuZm9yRWFjaChaYyl9XG5mdW5jdGlvbiBhZChhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsSmN8fChKYz0hMCxjYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKGNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LCRjKSkpfVxuZnVuY3Rpb24gYmQoYSl7ZnVuY3Rpb24gYihiKXtyZXR1cm4gYWQoYixhKX1pZigwPEtjLmxlbmd0aCl7YWQoS2NbMF0sYSk7Zm9yKHZhciBjPTE7YzxLYy5sZW5ndGg7YysrKXt2YXIgZD1LY1tjXTtkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKX19bnVsbCE9PUxjJiZhZChMYyxhKTtudWxsIT09TWMmJmFkKE1jLGEpO251bGwhPT1OYyYmYWQoTmMsYSk7T2MuZm9yRWFjaChiKTtQYy5mb3JFYWNoKGIpO2ZvcihjPTA7YzxRYy5sZW5ndGg7YysrKWQ9UWNbY10sZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCk7Zm9yKDswPFFjLmxlbmd0aCYmKGM9UWNbMF0sbnVsbD09PWMuYmxvY2tlZE9uKTspVmMoYyksbnVsbD09PWMuYmxvY2tlZE9uJiZRYy5zaGlmdCgpfXZhciBjZD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxkZD0hMDtcbmZ1bmN0aW9uIGVkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz0xLGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19ZnVuY3Rpb24gZ2QoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTQsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1cbmZ1bmN0aW9uIGZkKGEsYixjLGQpe2lmKGRkKXt2YXIgZT1ZYyhhLGIsYyxkKTtpZihudWxsPT09ZSloZChhLGIsZCxpZCxjKSxTYyhhLGQpO2Vsc2UgaWYoVWMoZSxhLGIsYyxkKSlkLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoU2MoYSxkKSxiJjQmJi0xPFJjLmluZGV4T2YoYSkpe2Zvcig7bnVsbCE9PWU7KXt2YXIgZj1DYihlKTtudWxsIT09ZiYmRWMoZik7Zj1ZYyhhLGIsYyxkKTtudWxsPT09ZiYmaGQoYSxiLGQsaWQsYyk7aWYoZj09PWUpYnJlYWs7ZT1mfW51bGwhPT1lJiZkLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgaGQoYSxiLGQsbnVsbCxjKX19dmFyIGlkPW51bGw7XG5mdW5jdGlvbiBZYyhhLGIsYyxkKXtpZD1udWxsO2E9eGIoZCk7YT1XYyhhKTtpZihudWxsIT09YSlpZihiPVZiKGEpLG51bGw9PT1iKWE9bnVsbDtlbHNlIGlmKGM9Yi50YWcsMTM9PT1jKXthPVdiKGIpO2lmKG51bGwhPT1hKXJldHVybiBhO2E9bnVsbH1lbHNlIGlmKDM9PT1jKXtpZihiLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiAzPT09Yi50YWc/Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2E9bnVsbH1lbHNlIGIhPT1hJiYoYT1udWxsKTtpZD1hO3JldHVybiBudWxsfVxuZnVuY3Rpb24gamQoYSl7c3dpdGNoKGEpe2Nhc2UgXCJjYW5jZWxcIjpjYXNlIFwiY2xpY2tcIjpjYXNlIFwiY2xvc2VcIjpjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOmNhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcImludmFsaWRcIjpjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJrZXl1cFwiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJwYXN0ZVwiOmNhc2UgXCJwYXVzZVwiOmNhc2UgXCJwbGF5XCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcnVwXCI6Y2FzZSBcInJhdGVjaGFuZ2VcIjpjYXNlIFwicmVzZXRcIjpjYXNlIFwicmVzaXplXCI6Y2FzZSBcInNlZWtlZFwiOmNhc2UgXCJzdWJtaXRcIjpjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2hzdGFydFwiOmNhc2UgXCJ2b2x1bWVjaGFuZ2VcIjpjYXNlIFwiY2hhbmdlXCI6Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmNhc2UgXCJ0ZXh0SW5wdXRcIjpjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOmNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmNhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmNhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOmNhc2UgXCJiZWZvcmVpbnB1dFwiOmNhc2UgXCJibHVyXCI6Y2FzZSBcImZ1bGxzY3JlZW5jaGFuZ2VcIjpjYXNlIFwiZm9jdXNcIjpjYXNlIFwiaGFzaGNoYW5nZVwiOmNhc2UgXCJwb3BzdGF0ZVwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwic2VsZWN0c3RhcnRcIjpyZXR1cm4gMTtjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJzY3JvbGxcIjpjYXNlIFwidG9nZ2xlXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ3aGVlbFwiOmNhc2UgXCJtb3VzZWVudGVyXCI6Y2FzZSBcIm1vdXNlbGVhdmVcIjpjYXNlIFwicG9pbnRlcmVudGVyXCI6Y2FzZSBcInBvaW50ZXJsZWF2ZVwiOnJldHVybiA0O1xuY2FzZSBcIm1lc3NhZ2VcIjpzd2l0Y2goZWMoKSl7Y2FzZSBmYzpyZXR1cm4gMTtjYXNlIGdjOnJldHVybiA0O2Nhc2UgaGM6Y2FzZSBpYzpyZXR1cm4gMTY7Y2FzZSBqYzpyZXR1cm4gNTM2ODcwOTEyO2RlZmF1bHQ6cmV0dXJuIDE2fWRlZmF1bHQ6cmV0dXJuIDE2fX12YXIga2Q9bnVsbCxsZD1udWxsLG1kPW51bGw7ZnVuY3Rpb24gbmQoKXtpZihtZClyZXR1cm4gbWQ7dmFyIGEsYj1sZCxjPWIubGVuZ3RoLGQsZT1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxmPWUubGVuZ3RoO2ZvcihhPTA7YTxjJiZiW2FdPT09ZVthXTthKyspO3ZhciBnPWMtYTtmb3IoZD0xO2Q8PWcmJmJbYy1kXT09PWVbZi1kXTtkKyspO3JldHVybiBtZD1lLnNsaWNlKGEsMTxkPzEtZDp2b2lkIDApfVxuZnVuY3Rpb24gb2QoYSl7dmFyIGI9YS5rZXlDb2RlO1wiY2hhckNvZGVcImluIGE/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9ZnVuY3Rpb24gcGQoKXtyZXR1cm4hMH1mdW5jdGlvbiBxZCgpe3JldHVybiExfVxuZnVuY3Rpb24gcmQoYSl7ZnVuY3Rpb24gYihiLGQsZSxmLGcpe3RoaXMuX3JlYWN0TmFtZT1iO3RoaXMuX3RhcmdldEluc3Q9ZTt0aGlzLnR5cGU9ZDt0aGlzLm5hdGl2ZUV2ZW50PWY7dGhpcy50YXJnZXQ9Zzt0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYoYj1hW2NdLHRoaXNbY109Yj9iKGYpOmZbY10pO3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1mLmRlZmF1bHRQcmV2ZW50ZWQ/Zi5kZWZhdWx0UHJldmVudGVkOiExPT09Zi5yZXR1cm5WYWx1ZSk/cGQ6cWQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1xZDtyZXR1cm4gdGhpc31BKGIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiZcbihhLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1wZCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uP2Euc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5jYW5jZWxCdWJibGUmJihhLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wZCl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpwZH0pO3JldHVybiBifVxudmFyIHNkPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LHRkPXJkKHNkKSx1ZD1BKHt9LHNkLHt2aWV3OjAsZGV0YWlsOjB9KSx2ZD1yZCh1ZCksd2QseGQseWQsQWQ9QSh7fSx1ZCx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5yZWxhdGVkVGFyZ2V0P2EuZnJvbUVsZW1lbnQ9PT1hLnNyY0VsZW1lbnQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudDphLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihhKXtpZihcIm1vdmVtZW50WFwiaW5cbmEpcmV0dXJuIGEubW92ZW1lbnRYO2EhPT15ZCYmKHlkJiZcIm1vdXNlbW92ZVwiPT09YS50eXBlPyh3ZD1hLnNjcmVlblgteWQuc2NyZWVuWCx4ZD1hLnNjcmVlblkteWQuc2NyZWVuWSk6eGQ9d2Q9MCx5ZD1hKTtyZXR1cm4gd2R9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtyZXR1cm5cIm1vdmVtZW50WVwiaW4gYT9hLm1vdmVtZW50WTp4ZH19KSxCZD1yZChBZCksQ2Q9QSh7fSxBZCx7ZGF0YVRyYW5zZmVyOjB9KSxEZD1yZChDZCksRWQ9QSh7fSx1ZCx7cmVsYXRlZFRhcmdldDowfSksRmQ9cmQoRWQpLEdkPUEoe30sc2Qse2FuaW1hdGlvbk5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLEhkPXJkKEdkKSxJZD1BKHt9LHNkLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGEpe3JldHVyblwiY2xpcGJvYXJkRGF0YVwiaW4gYT9hLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksSmQ9cmQoSWQpLEtkPUEoe30sc2Qse2RhdGE6MH0pLExkPXJkKEtkKSxNZD17RXNjOlwiRXNjYXBlXCIsXG5TcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSxOZD17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIiwxMTY6XCJGNVwiLDExNzpcIkY2XCIsMTE4OlwiRjdcIixcbjExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0sT2Q9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIFBkKGEpe3ZhciBiPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIGIuZ2V0TW9kaWZpZXJTdGF0ZT9iLmdldE1vZGlmaWVyU3RhdGUoYSk6KGE9T2RbYV0pPyEhYlthXTohMX1mdW5jdGlvbiB6ZCgpe3JldHVybiBQZH1cbnZhciBRZD1BKHt9LHVkLHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPU1kW2Eua2V5XXx8YS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PWIpcmV0dXJuIGJ9cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlPyhhPW9kKGEpLDEzPT09YT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShhKSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9OZFthLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOnpkLGNoYXJDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT9vZChhKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PVxuYS50eXBlP29kKGEpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9fSksUmQ9cmQoUWQpLFNkPUEoe30sQWQse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSksVGQ9cmQoU2QpLFVkPUEoe30sdWQse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZH0pLFZkPXJkKFVkKSxXZD1BKHt9LHNkLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLFhkPXJkKFdkKSxZZD1BKHt9LEFkLHtkZWx0YVg6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVhcImluIGE/YS5kZWx0YVg6XCJ3aGVlbERlbHRhWFwiaW4gYT8tYS53aGVlbERlbHRhWDowfSxcbmRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWVwiaW4gYT9hLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBhPy1hLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksWmQ9cmQoWWQpLCRkPVs5LDEzLDI3LDMyXSxhZT1pYSYmXCJDb21wb3NpdGlvbkV2ZW50XCJpbiB3aW5kb3csYmU9bnVsbDtpYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYoYmU9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgY2U9aWEmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFiZSxkZT1pYSYmKCFhZXx8YmUmJjg8YmUmJjExPj1iZSksZWU9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksZmU9ITE7XG5mdW5jdGlvbiBnZShhLGIpe3N3aXRjaChhKXtjYXNlIFwia2V5dXBcIjpyZXR1cm4tMSE9PSRkLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlIFwia2V5ZG93blwiOnJldHVybiAyMjkhPT1iLmtleUNvZGU7Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJmb2N1c291dFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGhlKGEpe2E9YS5kZXRhaWw7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZcImRhdGFcImluIGE/YS5kYXRhOm51bGx9dmFyIGllPSExO2Z1bmN0aW9uIGplKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBoZShiKTtjYXNlIFwia2V5cHJlc3NcIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7ZmU9ITA7cmV0dXJuIGVlO2Nhc2UgXCJ0ZXh0SW5wdXRcIjpyZXR1cm4gYT1iLmRhdGEsYT09PWVlJiZmZT9udWxsOmE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBrZShhLGIpe2lmKGllKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWF8fCFhZSYmZ2UoYSxiKT8oYT1uZCgpLG1kPWxkPWtkPW51bGwsaWU9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSBcInBhc3RlXCI6cmV0dXJuIG51bGw7Y2FzZSBcImtleXByZXNzXCI6aWYoIShiLmN0cmxLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpfHxiLmN0cmxLZXkmJmIuYWx0S2V5KXtpZihiLmNoYXImJjE8Yi5jaGFyLmxlbmd0aClyZXR1cm4gYi5jaGFyO2lmKGIud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYi53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGRlJiZcImtvXCIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbnZhciBsZT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBtZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09Yj8hIWxlW2EudHlwZV06XCJ0ZXh0YXJlYVwiPT09Yj8hMDohMX1mdW5jdGlvbiBuZShhLGIsYyxkKXtFYihkKTtiPW9lKGIsXCJvbkNoYW5nZVwiKTswPGIubGVuZ3RoJiYoYz1uZXcgdGQoXCJvbkNoYW5nZVwiLFwiY2hhbmdlXCIsbnVsbCxjLGQpLGEucHVzaCh7ZXZlbnQ6YyxsaXN0ZW5lcnM6Yn0pKX12YXIgcGU9bnVsbCxxZT1udWxsO2Z1bmN0aW9uIHJlKGEpe3NlKGEsMCl9ZnVuY3Rpb24gdGUoYSl7dmFyIGI9dWUoYSk7aWYoV2EoYikpcmV0dXJuIGF9XG5mdW5jdGlvbiB2ZShhLGIpe2lmKFwiY2hhbmdlXCI9PT1hKXJldHVybiBifXZhciB3ZT0hMTtpZihpYSl7dmFyIHhlO2lmKGlhKXt2YXIgeWU9XCJvbmlucHV0XCJpbiBkb2N1bWVudDtpZigheWUpe3ZhciB6ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3plLnNldEF0dHJpYnV0ZShcIm9uaW5wdXRcIixcInJldHVybjtcIik7eWU9XCJmdW5jdGlvblwiPT09dHlwZW9mIHplLm9uaW5wdXR9eGU9eWV9ZWxzZSB4ZT0hMTt3ZT14ZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBBZSgpe3BlJiYocGUuZGV0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpLHFlPXBlPW51bGwpfWZ1bmN0aW9uIEJlKGEpe2lmKFwidmFsdWVcIj09PWEucHJvcGVydHlOYW1lJiZ0ZShxZSkpe3ZhciBiPVtdO25lKGIscWUsYSx4YihhKSk7SmIocmUsYil9fVxuZnVuY3Rpb24gQ2UoYSxiLGMpe1wiZm9jdXNpblwiPT09YT8oQWUoKSxwZT1iLHFlPWMscGUuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpKTpcImZvY3Vzb3V0XCI9PT1hJiZBZSgpfWZ1bmN0aW9uIERlKGEpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1hfHxcImtleXVwXCI9PT1hfHxcImtleWRvd25cIj09PWEpcmV0dXJuIHRlKHFlKX1mdW5jdGlvbiBFZShhLGIpe2lmKFwiY2xpY2tcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEZlKGEsYil7aWYoXCJpbnB1dFwiPT09YXx8XCJjaGFuZ2VcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEdlKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn12YXIgSGU9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6R2U7XG5mdW5jdGlvbiBJZShhLGIpe2lmKEhlKGEsYikpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhfHxudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBifHxudWxsPT09YilyZXR1cm4hMTt2YXIgYz1PYmplY3Qua2V5cyhhKSxkPU9iamVjdC5rZXlzKGIpO2lmKGMubGVuZ3RoIT09ZC5sZW5ndGgpcmV0dXJuITE7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTtpZighamEuY2FsbChiLGUpfHwhSGUoYVtlXSxiW2VdKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBKZShhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9XG5mdW5jdGlvbiBLZShhLGIpe3ZhciBjPUplKGEpO2E9MDtmb3IodmFyIGQ7Yzspe2lmKDM9PT1jLm5vZGVUeXBlKXtkPWErYy50ZXh0Q29udGVudC5sZW5ndGg7aWYoYTw9YiYmZD49YilyZXR1cm57bm9kZTpjLG9mZnNldDpiLWF9O2E9ZH1hOntmb3IoO2M7KXtpZihjLm5leHRTaWJsaW5nKXtjPWMubmV4dFNpYmxpbmc7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPXZvaWQgMH1jPUplKGMpfX1mdW5jdGlvbiBMZShhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP0xlKGEsYi5wYXJlbnROb2RlKTpcImNvbnRhaW5zXCJpbiBhP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KTohMTohMX1cbmZ1bmN0aW9uIE1lKCl7Zm9yKHZhciBhPXdpbmRvdyxiPVhhKCk7YiBpbnN0YW5jZW9mIGEuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIGM9XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChkKXtjPSExfWlmKGMpYT1iLmNvbnRlbnRXaW5kb3c7ZWxzZSBicmVhaztiPVhhKGEuZG9jdW1lbnQpfXJldHVybiBifWZ1bmN0aW9uIE5lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYiYmKFwiaW5wdXRcIj09PWImJihcInRleHRcIj09PWEudHlwZXx8XCJzZWFyY2hcIj09PWEudHlwZXx8XCJ0ZWxcIj09PWEudHlwZXx8XCJ1cmxcIj09PWEudHlwZXx8XCJwYXNzd29yZFwiPT09YS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09Ynx8XCJ0cnVlXCI9PT1hLmNvbnRlbnRFZGl0YWJsZSl9XG5mdW5jdGlvbiBPZShhKXt2YXIgYj1NZSgpLGM9YS5mb2N1c2VkRWxlbSxkPWEuc2VsZWN0aW9uUmFuZ2U7aWYoYiE9PWMmJmMmJmMub3duZXJEb2N1bWVudCYmTGUoYy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjKSl7aWYobnVsbCE9PWQmJk5lKGMpKWlmKGI9ZC5zdGFydCxhPWQuZW5kLHZvaWQgMD09PWEmJihhPWIpLFwic2VsZWN0aW9uU3RhcnRcImluIGMpYy5zZWxlY3Rpb25TdGFydD1iLGMuc2VsZWN0aW9uRW5kPU1hdGgubWluKGEsYy52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoYT0oYj1jLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmYi5kZWZhdWx0Vmlld3x8d2luZG93LGEuZ2V0U2VsZWN0aW9uKXthPWEuZ2V0U2VsZWN0aW9uKCk7dmFyIGU9Yy50ZXh0Q29udGVudC5sZW5ndGgsZj1NYXRoLm1pbihkLnN0YXJ0LGUpO2Q9dm9pZCAwPT09ZC5lbmQ/ZjpNYXRoLm1pbihkLmVuZCxlKTshYS5leHRlbmQmJmY+ZCYmKGU9ZCxkPWYsZj1lKTtlPUtlKGMsZik7dmFyIGc9S2UoYyxcbmQpO2UmJmcmJigxIT09YS5yYW5nZUNvdW50fHxhLmFuY2hvck5vZGUhPT1lLm5vZGV8fGEuYW5jaG9yT2Zmc2V0IT09ZS5vZmZzZXR8fGEuZm9jdXNOb2RlIT09Zy5ub2RlfHxhLmZvY3VzT2Zmc2V0IT09Zy5vZmZzZXQpJiYoYj1iLmNyZWF0ZVJhbmdlKCksYi5zZXRTdGFydChlLm5vZGUsZS5vZmZzZXQpLGEucmVtb3ZlQWxsUmFuZ2VzKCksZj5kPyhhLmFkZFJhbmdlKGIpLGEuZXh0ZW5kKGcubm9kZSxnLm9mZnNldCkpOihiLnNldEVuZChnLm5vZGUsZy5vZmZzZXQpLGEuYWRkUmFuZ2UoYikpKX1iPVtdO2ZvcihhPWM7YT1hLnBhcmVudE5vZGU7KTE9PT1hLm5vZGVUeXBlJiZiLnB1c2goe2VsZW1lbnQ6YSxsZWZ0OmEuc2Nyb2xsTGVmdCx0b3A6YS5zY3JvbGxUb3B9KTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5mb2N1cyYmYy5mb2N1cygpO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEuZWxlbWVudC5zY3JvbGxMZWZ0PWEubGVmdCxhLmVsZW1lbnQuc2Nyb2xsVG9wPWEudG9wfX1cbnZhciBQZT1pYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFFlPW51bGwsUmU9bnVsbCxTZT1udWxsLFRlPSExO1xuZnVuY3Rpb24gVWUoYSxiLGMpe3ZhciBkPWMud2luZG93PT09Yz9jLmRvY3VtZW50Ojk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50O1RlfHxudWxsPT1RZXx8UWUhPT1YYShkKXx8KGQ9UWUsXCJzZWxlY3Rpb25TdGFydFwiaW4gZCYmTmUoZCk/ZD17c3RhcnQ6ZC5zZWxlY3Rpb25TdGFydCxlbmQ6ZC5zZWxlY3Rpb25FbmR9OihkPShkLm93bmVyRG9jdW1lbnQmJmQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSxkPXthbmNob3JOb2RlOmQuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6ZC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOmQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OmQuZm9jdXNPZmZzZXR9KSxTZSYmSWUoU2UsZCl8fChTZT1kLGQ9b2UoUmUsXCJvblNlbGVjdFwiKSwwPGQubGVuZ3RoJiYoYj1uZXcgdGQoXCJvblNlbGVjdFwiLFwic2VsZWN0XCIsbnVsbCxiLGMpLGEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6ZH0pLGIudGFyZ2V0PVFlKSkpfVxuZnVuY3Rpb24gVmUoYSxiKXt2YXIgYz17fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbXCJXZWJraXRcIithXT1cIndlYmtpdFwiK2I7Y1tcIk1velwiK2FdPVwibW96XCIrYjtyZXR1cm4gY312YXIgV2U9e2FuaW1hdGlvbmVuZDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9uZW5kOlZlKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sWGU9e30sWWU9e307XG5pYSYmKFllPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIFdlLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIFdlLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gWmUoYSl7aWYoWGVbYV0pcmV0dXJuIFhlW2FdO2lmKCFXZVthXSlyZXR1cm4gYTt2YXIgYj1XZVthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBZZSlyZXR1cm4gWGVbYV09YltjXTtyZXR1cm4gYX12YXIgJGU9WmUoXCJhbmltYXRpb25lbmRcIiksYWY9WmUoXCJhbmltYXRpb25pdGVyYXRpb25cIiksYmY9WmUoXCJhbmltYXRpb25zdGFydFwiKSxjZj1aZShcInRyYW5zaXRpb25lbmRcIiksZGY9bmV3IE1hcCxlZj1cImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsXCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gZmYoYSxiKXtkZi5zZXQoYSxiKTtmYShiLFthXSl9Zm9yKHZhciBnZj0wO2dmPGVmLmxlbmd0aDtnZisrKXt2YXIgaGY9ZWZbZ2ZdLGpmPWhmLnRvTG93ZXJDYXNlKCksa2Y9aGZbMF0udG9VcHBlckNhc2UoKStoZi5zbGljZSgxKTtmZihqZixcIm9uXCIra2YpfWZmKCRlLFwib25BbmltYXRpb25FbmRcIik7ZmYoYWYsXCJvbkFuaW1hdGlvbkl0ZXJhdGlvblwiKTtmZihiZixcIm9uQW5pbWF0aW9uU3RhcnRcIik7ZmYoXCJkYmxjbGlja1wiLFwib25Eb3VibGVDbGlja1wiKTtmZihcImZvY3VzaW5cIixcIm9uRm9jdXNcIik7ZmYoXCJmb2N1c291dFwiLFwib25CbHVyXCIpO2ZmKGNmLFwib25UcmFuc2l0aW9uRW5kXCIpO2hhKFwib25Nb3VzZUVudGVyXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvbk1vdXNlTGVhdmVcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uUG9pbnRlckVudGVyXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO1xuaGEoXCJvblBvaW50ZXJMZWF2ZVwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtmYShcIm9uQ2hhbmdlXCIsXCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvblNlbGVjdFwiLFwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQmVmb3JlSW5wdXRcIixbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl0pO2ZhKFwib25Db21wb3NpdGlvbkVuZFwiLFwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO2ZhKFwib25Db21wb3NpdGlvblN0YXJ0XCIsXCJjb21wb3NpdGlvbnN0YXJ0IGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtcbmZhKFwib25Db21wb3NpdGlvblVwZGF0ZVwiLFwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO3ZhciBsZj1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nXCIuc3BsaXQoXCIgXCIpLG1mPW5ldyBTZXQoXCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGVcIi5zcGxpdChcIiBcIikuY29uY2F0KGxmKSk7XG5mdW5jdGlvbiBuZihhLGIsYyl7dmFyIGQ9YS50eXBlfHxcInVua25vd24tZXZlbnRcIjthLmN1cnJlbnRUYXJnZXQ9YztVYihkLGIsdm9pZCAwLGEpO2EuY3VycmVudFRhcmdldD1udWxsfVxuZnVuY3Rpb24gc2UoYSxiKXtiPTAhPT0oYiY0KTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPWQuZXZlbnQ7ZD1kLmxpc3RlbmVyczthOnt2YXIgZj12b2lkIDA7aWYoYilmb3IodmFyIGc9ZC5sZW5ndGgtMTswPD1nO2ctLSl7dmFyIGg9ZFtnXSxrPWguaW5zdGFuY2UsbD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfWVsc2UgZm9yKGc9MDtnPGQubGVuZ3RoO2crKyl7aD1kW2ddO2s9aC5pbnN0YW5jZTtsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9fX1pZihRYil0aHJvdyBhPVJiLFFiPSExLFJiPW51bGwsYTt9XG5mdW5jdGlvbiBEKGEsYil7dmFyIGM9YltvZl07dm9pZCAwPT09YyYmKGM9YltvZl09bmV3IFNldCk7dmFyIGQ9YStcIl9fYnViYmxlXCI7Yy5oYXMoZCl8fChwZihiLGEsMiwhMSksYy5hZGQoZCkpfWZ1bmN0aW9uIHFmKGEsYixjKXt2YXIgZD0wO2ImJihkfD00KTtwZihjLGEsZCxiKX12YXIgcmY9XCJfcmVhY3RMaXN0ZW5pbmdcIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBzZihhKXtpZighYVtyZl0pe2FbcmZdPSEwO2RhLmZvckVhY2goZnVuY3Rpb24oYil7XCJzZWxlY3Rpb25jaGFuZ2VcIiE9PWImJihtZi5oYXMoYil8fHFmKGIsITEsYSkscWYoYiwhMCxhKSl9KTt2YXIgYj05PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudDtudWxsPT09Ynx8YltyZl18fChiW3JmXT0hMCxxZihcInNlbGVjdGlvbmNoYW5nZVwiLCExLGIpKX19XG5mdW5jdGlvbiBwZihhLGIsYyxkKXtzd2l0Y2goamQoYikpe2Nhc2UgMTp2YXIgZT1lZDticmVhaztjYXNlIDQ6ZT1nZDticmVhaztkZWZhdWx0OmU9ZmR9Yz1lLmJpbmQobnVsbCxiLGMsYSk7ZT12b2lkIDA7IUxifHxcInRvdWNoc3RhcnRcIiE9PWImJlwidG91Y2htb3ZlXCIhPT1iJiZcIndoZWVsXCIhPT1ifHwoZT0hMCk7ZD92b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse2NhcHR1cmU6ITAscGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMCk6dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKX1cbmZ1bmN0aW9uIGhkKGEsYixjLGQsZSl7dmFyIGY9ZDtpZigwPT09KGImMSkmJjA9PT0oYiYyKSYmbnVsbCE9PWQpYTpmb3IoOzspe2lmKG51bGw9PT1kKXJldHVybjt2YXIgZz1kLnRhZztpZigzPT09Z3x8ND09PWcpe3ZhciBoPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoaD09PWV8fDg9PT1oLm5vZGVUeXBlJiZoLnBhcmVudE5vZGU9PT1lKWJyZWFrO2lmKDQ9PT1nKWZvcihnPWQucmV0dXJuO251bGwhPT1nOyl7dmFyIGs9Zy50YWc7aWYoMz09PWt8fDQ9PT1rKWlmKGs9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxrPT09ZXx8OD09PWsubm9kZVR5cGUmJmsucGFyZW50Tm9kZT09PWUpcmV0dXJuO2c9Zy5yZXR1cm59Zm9yKDtudWxsIT09aDspe2c9V2MoaCk7aWYobnVsbD09PWcpcmV0dXJuO2s9Zy50YWc7aWYoNT09PWt8fDY9PT1rKXtkPWY9Zztjb250aW51ZSBhfWg9aC5wYXJlbnROb2RlfX1kPWQucmV0dXJufUpiKGZ1bmN0aW9uKCl7dmFyIGQ9ZixlPXhiKGMpLGc9W107XG5hOnt2YXIgaD1kZi5nZXQoYSk7aWYodm9pZCAwIT09aCl7dmFyIGs9dGQsbj1hO3N3aXRjaChhKXtjYXNlIFwia2V5cHJlc3NcIjppZigwPT09b2QoYykpYnJlYWsgYTtjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOms9UmQ7YnJlYWs7Y2FzZSBcImZvY3VzaW5cIjpuPVwiZm9jdXNcIjtrPUZkO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOm49XCJibHVyXCI7az1GZDticmVhaztjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjprPUZkO2JyZWFrO2Nhc2UgXCJjbGlja1wiOmlmKDI9PT1jLmJ1dHRvbilicmVhayBhO2Nhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6az1CZDticmVhaztjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjprPVxuRGQ7YnJlYWs7Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6az1WZDticmVhaztjYXNlICRlOmNhc2UgYWY6Y2FzZSBiZjprPUhkO2JyZWFrO2Nhc2UgY2Y6az1YZDticmVhaztjYXNlIFwic2Nyb2xsXCI6az12ZDticmVhaztjYXNlIFwid2hlZWxcIjprPVpkO2JyZWFrO2Nhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJwYXN0ZVwiOms9SmQ7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcnVwXCI6az1UZH12YXIgdD0wIT09KGImNCksSj0hdCYmXCJzY3JvbGxcIj09PWEseD10P251bGwhPT1oP2grXCJDYXB0dXJlXCI6bnVsbDpoO3Q9W107Zm9yKHZhciB3PWQsdTtudWxsIT09XG53Oyl7dT13O3ZhciBGPXUuc3RhdGVOb2RlOzU9PT11LnRhZyYmbnVsbCE9PUYmJih1PUYsbnVsbCE9PXgmJihGPUtiKHcseCksbnVsbCE9RiYmdC5wdXNoKHRmKHcsRix1KSkpKTtpZihKKWJyZWFrO3c9dy5yZXR1cm59MDx0Lmxlbmd0aCYmKGg9bmV3IGsoaCxuLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOnR9KSl9fWlmKDA9PT0oYiY3KSl7YTp7aD1cIm1vdXNlb3ZlclwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YTtrPVwibW91c2VvdXRcIj09PWF8fFwicG9pbnRlcm91dFwiPT09YTtpZihoJiZjIT09d2ImJihuPWMucmVsYXRlZFRhcmdldHx8Yy5mcm9tRWxlbWVudCkmJihXYyhuKXx8blt1Zl0pKWJyZWFrIGE7aWYoa3x8aCl7aD1lLndpbmRvdz09PWU/ZTooaD1lLm93bmVyRG9jdW1lbnQpP2guZGVmYXVsdFZpZXd8fGgucGFyZW50V2luZG93OndpbmRvdztpZihrKXtpZihuPWMucmVsYXRlZFRhcmdldHx8Yy50b0VsZW1lbnQsaz1kLG49bj9XYyhuKTpudWxsLG51bGwhPT1cbm4mJihKPVZiKG4pLG4hPT1KfHw1IT09bi50YWcmJjYhPT1uLnRhZykpbj1udWxsfWVsc2Ugaz1udWxsLG49ZDtpZihrIT09bil7dD1CZDtGPVwib25Nb3VzZUxlYXZlXCI7eD1cIm9uTW91c2VFbnRlclwiO3c9XCJtb3VzZVwiO2lmKFwicG9pbnRlcm91dFwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YSl0PVRkLEY9XCJvblBvaW50ZXJMZWF2ZVwiLHg9XCJvblBvaW50ZXJFbnRlclwiLHc9XCJwb2ludGVyXCI7Sj1udWxsPT1rP2g6dWUoayk7dT1udWxsPT1uP2g6dWUobik7aD1uZXcgdChGLHcrXCJsZWF2ZVwiLGssYyxlKTtoLnRhcmdldD1KO2gucmVsYXRlZFRhcmdldD11O0Y9bnVsbDtXYyhlKT09PWQmJih0PW5ldyB0KHgsdytcImVudGVyXCIsbixjLGUpLHQudGFyZ2V0PXUsdC5yZWxhdGVkVGFyZ2V0PUosRj10KTtKPUY7aWYoayYmbiliOnt0PWs7eD1uO3c9MDtmb3IodT10O3U7dT12Zih1KSl3Kys7dT0wO2ZvcihGPXg7RjtGPXZmKEYpKXUrKztmb3IoOzA8dy11Oyl0PXZmKHQpLHctLTtmb3IoOzA8dS13Oyl4PVxudmYoeCksdS0tO2Zvcig7dy0tOyl7aWYodD09PXh8fG51bGwhPT14JiZ0PT09eC5hbHRlcm5hdGUpYnJlYWsgYjt0PXZmKHQpO3g9dmYoeCl9dD1udWxsfWVsc2UgdD1udWxsO251bGwhPT1rJiZ3ZihnLGgsayx0LCExKTtudWxsIT09biYmbnVsbCE9PUomJndmKGcsSixuLHQsITApfX19YTp7aD1kP3VlKGQpOndpbmRvdztrPWgubm9kZU5hbWUmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihcInNlbGVjdFwiPT09a3x8XCJpbnB1dFwiPT09ayYmXCJmaWxlXCI9PT1oLnR5cGUpdmFyIG5hPXZlO2Vsc2UgaWYobWUoaCkpaWYod2UpbmE9RmU7ZWxzZXtuYT1EZTt2YXIgeGE9Q2V9ZWxzZShrPWgubm9kZU5hbWUpJiZcImlucHV0XCI9PT1rLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1oLnR5cGV8fFwicmFkaW9cIj09PWgudHlwZSkmJihuYT1FZSk7aWYobmEmJihuYT1uYShhLGQpKSl7bmUoZyxuYSxjLGUpO2JyZWFrIGF9eGEmJnhhKGEsaCxkKTtcImZvY3Vzb3V0XCI9PT1hJiYoeGE9aC5fd3JhcHBlclN0YXRlKSYmXG54YS5jb250cm9sbGVkJiZcIm51bWJlclwiPT09aC50eXBlJiZjYihoLFwibnVtYmVyXCIsaC52YWx1ZSl9eGE9ZD91ZShkKTp3aW5kb3c7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6aWYobWUoeGEpfHxcInRydWVcIj09PXhhLmNvbnRlbnRFZGl0YWJsZSlRZT14YSxSZT1kLFNlPW51bGw7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6U2U9UmU9UWU9bnVsbDticmVhaztjYXNlIFwibW91c2Vkb3duXCI6VGU9ITA7YnJlYWs7Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwiZHJhZ2VuZFwiOlRlPSExO1VlKGcsYyxlKTticmVhaztjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6aWYoUGUpYnJlYWs7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjpVZShnLGMsZSl9dmFyICRhO2lmKGFlKWI6e3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOnZhciBiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiO2JyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6YmE9XCJvbkNvbXBvc2l0aW9uRW5kXCI7XG5icmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmJhPVwib25Db21wb3NpdGlvblVwZGF0ZVwiO2JyZWFrIGJ9YmE9dm9pZCAwfWVsc2UgaWU/Z2UoYSxjKSYmKGJhPVwib25Db21wb3NpdGlvbkVuZFwiKTpcImtleWRvd25cIj09PWEmJjIyOT09PWMua2V5Q29kZSYmKGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCIpO2JhJiYoZGUmJlwia29cIiE9PWMubG9jYWxlJiYoaWV8fFwib25Db21wb3NpdGlvblN0YXJ0XCIhPT1iYT9cIm9uQ29tcG9zaXRpb25FbmRcIj09PWJhJiZpZSYmKCRhPW5kKCkpOihrZD1lLGxkPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGllPSEwKSkseGE9b2UoZCxiYSksMDx4YS5sZW5ndGgmJihiYT1uZXcgTGQoYmEsYSxudWxsLGMsZSksZy5wdXNoKHtldmVudDpiYSxsaXN0ZW5lcnM6eGF9KSwkYT9iYS5kYXRhPSRhOigkYT1oZShjKSxudWxsIT09JGEmJihiYS5kYXRhPSRhKSkpKTtpZigkYT1jZT9qZShhLGMpOmtlKGEsYykpZD1vZShkLFwib25CZWZvcmVJbnB1dFwiKSxcbjA8ZC5sZW5ndGgmJihlPW5ldyBMZChcIm9uQmVmb3JlSW5wdXRcIixcImJlZm9yZWlucHV0XCIsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6ZH0pLGUuZGF0YT0kYSl9c2UoZyxiKX0pfWZ1bmN0aW9uIHRmKGEsYixjKXtyZXR1cm57aW5zdGFuY2U6YSxsaXN0ZW5lcjpiLGN1cnJlbnRUYXJnZXQ6Y319ZnVuY3Rpb24gb2UoYSxiKXtmb3IodmFyIGM9YitcIkNhcHR1cmVcIixkPVtdO251bGwhPT1hOyl7dmFyIGU9YSxmPWUuc3RhdGVOb2RlOzU9PT1lLnRhZyYmbnVsbCE9PWYmJihlPWYsZj1LYihhLGMpLG51bGwhPWYmJmQudW5zaGlmdCh0ZihhLGYsZSkpLGY9S2IoYSxiKSxudWxsIT1mJiZkLnB1c2godGYoYSxmLGUpKSk7YT1hLnJldHVybn1yZXR1cm4gZH1mdW5jdGlvbiB2ZihhKXtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtkbyBhPWEucmV0dXJuO3doaWxlKGEmJjUhPT1hLnRhZyk7cmV0dXJuIGE/YTpudWxsfVxuZnVuY3Rpb24gd2YoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yi5fcmVhY3ROYW1lLGc9W107bnVsbCE9PWMmJmMhPT1kOyl7dmFyIGg9YyxrPWguYWx0ZXJuYXRlLGw9aC5zdGF0ZU5vZGU7aWYobnVsbCE9PWsmJms9PT1kKWJyZWFrOzU9PT1oLnRhZyYmbnVsbCE9PWwmJihoPWwsZT8oaz1LYihjLGYpLG51bGwhPWsmJmcudW5zaGlmdCh0ZihjLGssaCkpKTplfHwoaz1LYihjLGYpLG51bGwhPWsmJmcucHVzaCh0ZihjLGssaCkpKSk7Yz1jLnJldHVybn0wIT09Zy5sZW5ndGgmJmEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6Z30pfXZhciB4Zj0vXFxyXFxuPy9nLHlmPS9cXHUwMDAwfFxcdUZGRkQvZztmdW5jdGlvbiB6ZihhKXtyZXR1cm4oXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6XCJcIithKS5yZXBsYWNlKHhmLFwiXFxuXCIpLnJlcGxhY2UoeWYsXCJcIil9ZnVuY3Rpb24gQWYoYSxiLGMpe2I9emYoYik7aWYoemYoYSkhPT1iJiZjKXRocm93IEVycm9yKHAoNDI1KSk7fWZ1bmN0aW9uIEJmKCl7fVxudmFyIENmPW51bGwsRGY9bnVsbDtmdW5jdGlvbiBFZihhLGIpe3JldHVyblwidGV4dGFyZWFcIj09PWF8fFwibm9zY3JpcHRcIj09PWF8fFwic3RyaW5nXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJudW1iZXJcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm9iamVjdFwiPT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH1cbnZhciBGZj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxHZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsSGY9XCJmdW5jdGlvblwiPT09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsSmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHF1ZXVlTWljcm90YXNrP3F1ZXVlTWljcm90YXNrOlwidW5kZWZpbmVkXCIhPT10eXBlb2YgSGY/ZnVuY3Rpb24oYSl7cmV0dXJuIEhmLnJlc29sdmUobnVsbCkudGhlbihhKS5jYXRjaChJZil9OkZmO2Z1bmN0aW9uIElmKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30pfVxuZnVuY3Rpb24gS2YoYSxiKXt2YXIgYz1iLGQ9MDtkb3t2YXIgZT1jLm5leHRTaWJsaW5nO2EucmVtb3ZlQ2hpbGQoYyk7aWYoZSYmOD09PWUubm9kZVR5cGUpaWYoYz1lLmRhdGEsXCIvJFwiPT09Yyl7aWYoMD09PWQpe2EucmVtb3ZlQ2hpbGQoZSk7YmQoYik7cmV0dXJufWQtLX1lbHNlXCIkXCIhPT1jJiZcIiQ/XCIhPT1jJiZcIiQhXCIhPT1jfHxkKys7Yz1lfXdoaWxlKGMpO2JkKGIpfWZ1bmN0aW9uIExmKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrO2lmKDg9PT1iKXtiPWEuZGF0YTtpZihcIiRcIj09PWJ8fFwiJCFcIj09PWJ8fFwiJD9cIj09PWIpYnJlYWs7aWYoXCIvJFwiPT09YilyZXR1cm4gbnVsbH19cmV0dXJuIGF9XG5mdW5jdGlvbiBNZihhKXthPWEucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiJFwiPT09Y3x8XCIkIVwiPT09Y3x8XCIkP1wiPT09Yyl7aWYoMD09PWIpcmV0dXJuIGE7Yi0tfWVsc2VcIi8kXCI9PT1jJiZiKyt9YT1hLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgTmY9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksT2Y9XCJfX3JlYWN0RmliZXIkXCIrTmYsUGY9XCJfX3JlYWN0UHJvcHMkXCIrTmYsdWY9XCJfX3JlYWN0Q29udGFpbmVyJFwiK05mLG9mPVwiX19yZWFjdEV2ZW50cyRcIitOZixRZj1cIl9fcmVhY3RMaXN0ZW5lcnMkXCIrTmYsUmY9XCJfX3JlYWN0SGFuZGxlcyRcIitOZjtcbmZ1bmN0aW9uIFdjKGEpe3ZhciBiPWFbT2ZdO2lmKGIpcmV0dXJuIGI7Zm9yKHZhciBjPWEucGFyZW50Tm9kZTtjOyl7aWYoYj1jW3VmXXx8Y1tPZl0pe2M9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWIuY2hpbGR8fG51bGwhPT1jJiZudWxsIT09Yy5jaGlsZClmb3IoYT1NZihhKTtudWxsIT09YTspe2lmKGM9YVtPZl0pcmV0dXJuIGM7YT1NZihhKX1yZXR1cm4gYn1hPWM7Yz1hLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ2IoYSl7YT1hW09mXXx8YVt1Zl07cmV0dXJuIWF8fDUhPT1hLnRhZyYmNiE9PWEudGFnJiYxMyE9PWEudGFnJiYzIT09YS50YWc/bnVsbDphfWZ1bmN0aW9uIHVlKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihwKDMzKSk7fWZ1bmN0aW9uIERiKGEpe3JldHVybiBhW1BmXXx8bnVsbH12YXIgU2Y9W10sVGY9LTE7ZnVuY3Rpb24gVWYoYSl7cmV0dXJue2N1cnJlbnQ6YX19XG5mdW5jdGlvbiBFKGEpezA+VGZ8fChhLmN1cnJlbnQ9U2ZbVGZdLFNmW1RmXT1udWxsLFRmLS0pfWZ1bmN0aW9uIEcoYSxiKXtUZisrO1NmW1RmXT1hLmN1cnJlbnQ7YS5jdXJyZW50PWJ9dmFyIFZmPXt9LEg9VWYoVmYpLFdmPVVmKCExKSxYZj1WZjtmdW5jdGlvbiBZZihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIFZmO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9YixhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWUpO3JldHVybiBlfVxuZnVuY3Rpb24gWmYoYSl7YT1hLmNoaWxkQ29udGV4dFR5cGVzO3JldHVybiBudWxsIT09YSYmdm9pZCAwIT09YX1mdW5jdGlvbiAkZigpe0UoV2YpO0UoSCl9ZnVuY3Rpb24gYWcoYSxiLGMpe2lmKEguY3VycmVudCE9PVZmKXRocm93IEVycm9yKHAoMTY4KSk7RyhILGIpO0coV2YsYyl9ZnVuY3Rpb24gYmcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2I9Yi5jaGlsZENvbnRleHRUeXBlcztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZC5nZXRDaGlsZENvbnRleHQpcmV0dXJuIGM7ZD1kLmdldENoaWxkQ29udGV4dCgpO2Zvcih2YXIgZSBpbiBkKWlmKCEoZSBpbiBiKSl0aHJvdyBFcnJvcihwKDEwOCxSYShhKXx8XCJVbmtub3duXCIsZSkpO3JldHVybiBBKHt9LGMsZCl9XG5mdW5jdGlvbiBjZyhhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8VmY7WGY9SC5jdXJyZW50O0coSCxhKTtHKFdmLFdmLmN1cnJlbnQpO3JldHVybiEwfWZ1bmN0aW9uIGRnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcihwKDE2OSkpO2M/KGE9YmcoYSxiLFhmKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsRShXZiksRShIKSxHKEgsYSkpOkUoV2YpO0coV2YsYyl9dmFyIGVnPW51bGwsZmc9ITEsZ2c9ITE7ZnVuY3Rpb24gaGcoYSl7bnVsbD09PWVnP2VnPVthXTplZy5wdXNoKGEpfWZ1bmN0aW9uIGlnKGEpe2ZnPSEwO2hnKGEpfVxuZnVuY3Rpb24gamcoKXtpZighZ2cmJm51bGwhPT1lZyl7Z2c9ITA7dmFyIGE9MCxiPUM7dHJ5e3ZhciBjPWVnO2ZvcihDPTE7YTxjLmxlbmd0aDthKyspe3ZhciBkPWNbYV07ZG8gZD1kKCEwKTt3aGlsZShudWxsIT09ZCl9ZWc9bnVsbDtmZz0hMX1jYXRjaChlKXt0aHJvdyBudWxsIT09ZWcmJihlZz1lZy5zbGljZShhKzEpKSxhYyhmYyxqZyksZTt9ZmluYWxseXtDPWIsZ2c9ITF9fXJldHVybiBudWxsfXZhciBrZz1bXSxsZz0wLG1nPW51bGwsbmc9MCxvZz1bXSxwZz0wLHFnPW51bGwscmc9MSxzZz1cIlwiO2Z1bmN0aW9uIHRnKGEsYil7a2dbbGcrK109bmc7a2dbbGcrK109bWc7bWc9YTtuZz1ifVxuZnVuY3Rpb24gdWcoYSxiLGMpe29nW3BnKytdPXJnO29nW3BnKytdPXNnO29nW3BnKytdPXFnO3FnPWE7dmFyIGQ9cmc7YT1zZzt2YXIgZT0zMi1vYyhkKS0xO2QmPX4oMTw8ZSk7Yys9MTt2YXIgZj0zMi1vYyhiKStlO2lmKDMwPGYpe3ZhciBnPWUtZSU1O2Y9KGQmKDE8PGcpLTEpLnRvU3RyaW5nKDMyKTtkPj49ZztlLT1nO3JnPTE8PDMyLW9jKGIpK2V8Yzw8ZXxkO3NnPWYrYX1lbHNlIHJnPTE8PGZ8Yzw8ZXxkLHNnPWF9ZnVuY3Rpb24gdmcoYSl7bnVsbCE9PWEucmV0dXJuJiYodGcoYSwxKSx1ZyhhLDEsMCkpfWZ1bmN0aW9uIHdnKGEpe2Zvcig7YT09PW1nOyltZz1rZ1stLWxnXSxrZ1tsZ109bnVsbCxuZz1rZ1stLWxnXSxrZ1tsZ109bnVsbDtmb3IoO2E9PT1xZzspcWc9b2dbLS1wZ10sb2dbcGddPW51bGwsc2c9b2dbLS1wZ10sb2dbcGddPW51bGwscmc9b2dbLS1wZ10sb2dbcGddPW51bGx9dmFyIHhnPW51bGwseWc9bnVsbCxJPSExLHpnPW51bGw7XG5mdW5jdGlvbiBBZyhhLGIpe3ZhciBjPUJnKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9XCJERUxFVEVEXCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2I9YS5kZWxldGlvbnM7bnVsbD09PWI/KGEuZGVsZXRpb25zPVtjXSxhLmZsYWdzfD0xNik6Yi5wdXNoKGMpfVxuZnVuY3Rpb24gQ2coYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTp2YXIgYz1hLnR5cGU7Yj0xIT09Yi5ub2RlVHlwZXx8Yy50b0xvd2VyQ2FzZSgpIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6YjtyZXR1cm4gbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1MZihiLmZpcnN0Q2hpbGQpLCEwKTohMTtjYXNlIDY6cmV0dXJuIGI9XCJcIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1udWxsLCEwKTohMTtjYXNlIDEzOnJldHVybiBiPTghPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYz1udWxsIT09cWc/e2lkOnJnLG92ZXJmbG93OnNnfTpudWxsLGEubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDpiLHRyZWVDb250ZXh0OmMscmV0cnlMYW5lOjEwNzM3NDE4MjR9LGM9QmcoMTgsbnVsbCxudWxsLDApLGMuc3RhdGVOb2RlPWIsYy5yZXR1cm49YSxhLmNoaWxkPWMseGc9YSx5Zz1cbm51bGwsITApOiExO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIERnKGEpe3JldHVybiAwIT09KGEubW9kZSYxKSYmMD09PShhLmZsYWdzJjEyOCl9ZnVuY3Rpb24gRWcoYSl7aWYoSSl7dmFyIGI9eWc7aWYoYil7dmFyIGM9YjtpZighQ2coYSxiKSl7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTtiPUxmKGMubmV4dFNpYmxpbmcpO3ZhciBkPXhnO2ImJkNnKGEsYik/QWcoZCxjKTooYS5mbGFncz1hLmZsYWdzJi00MDk3fDIsST0hMSx4Zz1hKX19ZWxzZXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2EuZmxhZ3M9YS5mbGFncyYtNDA5N3wyO0k9ITE7eGc9YX19fWZ1bmN0aW9uIEZnKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTMhPT1hLnRhZzspYT1hLnJldHVybjt4Zz1hfVxuZnVuY3Rpb24gR2coYSl7aWYoYSE9PXhnKXJldHVybiExO2lmKCFJKXJldHVybiBGZyhhKSxJPSEwLCExO3ZhciBiOyhiPTMhPT1hLnRhZykmJiEoYj01IT09YS50YWcpJiYoYj1hLnR5cGUsYj1cImhlYWRcIiE9PWImJlwiYm9keVwiIT09YiYmIUVmKGEudHlwZSxhLm1lbW9pemVkUHJvcHMpKTtpZihiJiYoYj15Zykpe2lmKERnKGEpKXRocm93IEhnKCksRXJyb3IocCg0MTgpKTtmb3IoO2I7KUFnKGEsYiksYj1MZihiLm5leHRTaWJsaW5nKX1GZyhhKTtpZigxMz09PWEudGFnKXthPWEubWVtb2l6ZWRTdGF0ZTthPW51bGwhPT1hP2EuZGVoeWRyYXRlZDpudWxsO2lmKCFhKXRocm93IEVycm9yKHAoMzE3KSk7YTp7YT1hLm5leHRTaWJsaW5nO2ZvcihiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIvJFwiPT09Yyl7aWYoMD09PWIpe3lnPUxmKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2VcIiRcIiE9PWMmJlwiJCFcIiE9PWMmJlwiJD9cIiE9PWN8fGIrK31hPWEubmV4dFNpYmxpbmd9eWc9XG5udWxsfX1lbHNlIHlnPXhnP0xmKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIEhnKCl7Zm9yKHZhciBhPXlnO2E7KWE9TGYoYS5uZXh0U2libGluZyl9ZnVuY3Rpb24gSWcoKXt5Zz14Zz1udWxsO0k9ITF9ZnVuY3Rpb24gSmcoYSl7bnVsbD09PXpnP3pnPVthXTp6Zy5wdXNoKGEpfXZhciBLZz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztmdW5jdGlvbiBMZyhhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPUEoe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKTtyZXR1cm4gYn1yZXR1cm4gYn12YXIgTWc9VWYobnVsbCksTmc9bnVsbCxPZz1udWxsLFBnPW51bGw7ZnVuY3Rpb24gUWcoKXtQZz1PZz1OZz1udWxsfWZ1bmN0aW9uIFJnKGEpe3ZhciBiPU1nLmN1cnJlbnQ7RShNZyk7YS5fY3VycmVudFZhbHVlPWJ9XG5mdW5jdGlvbiBTZyhhLGIsYyl7Zm9yKDtudWxsIT09YTspe3ZhciBkPWEuYWx0ZXJuYXRlOyhhLmNoaWxkTGFuZXMmYikhPT1iPyhhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWQmJihkLmNoaWxkTGFuZXN8PWIpKTpudWxsIT09ZCYmKGQuY2hpbGRMYW5lcyZiKSE9PWImJihkLmNoaWxkTGFuZXN8PWIpO2lmKGE9PT1jKWJyZWFrO2E9YS5yZXR1cm59fWZ1bmN0aW9uIFRnKGEsYil7Tmc9YTtQZz1PZz1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKDAhPT0oYS5sYW5lcyZiKSYmKFVnPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1cbmZ1bmN0aW9uIFZnKGEpe3ZhciBiPWEuX2N1cnJlbnRWYWx1ZTtpZihQZyE9PWEpaWYoYT17Y29udGV4dDphLG1lbW9pemVkVmFsdWU6YixuZXh0Om51bGx9LG51bGw9PT1PZyl7aWYobnVsbD09PU5nKXRocm93IEVycm9yKHAoMzA4KSk7T2c9YTtOZy5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmF9fWVsc2UgT2c9T2cubmV4dD1hO3JldHVybiBifXZhciBXZz1udWxsO2Z1bmN0aW9uIFhnKGEpe251bGw9PT1XZz9XZz1bYV06V2cucHVzaChhKX1mdW5jdGlvbiBZZyhhLGIsYyxkKXt2YXIgZT1iLmludGVybGVhdmVkO251bGw9PT1lPyhjLm5leHQ9YyxYZyhiKSk6KGMubmV4dD1lLm5leHQsZS5uZXh0PWMpO2IuaW50ZXJsZWF2ZWQ9YztyZXR1cm4gWmcoYSxkKX1cbmZ1bmN0aW9uIFpnKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc/Yy5zdGF0ZU5vZGU6bnVsbH12YXIgJGc9ITE7ZnVuY3Rpb24gYWgoYSl7YS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1cbmZ1bmN0aW9uIGJoKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9PT1hJiYoYi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTphLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTphLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDphLnNoYXJlZCxlZmZlY3RzOmEuZWZmZWN0c30pfWZ1bmN0aW9uIGNoKGEsYil7cmV0dXJue2V2ZW50VGltZTphLGxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fVxuZnVuY3Rpb24gZGgoYSxiLGMpe3ZhciBkPWEudXBkYXRlUXVldWU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7ZD1kLnNoYXJlZDtpZigwIT09KEsmMikpe3ZhciBlPWQucGVuZGluZztudWxsPT09ZT9iLm5leHQ9YjooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5wZW5kaW5nPWI7cmV0dXJuIFpnKGEsYyl9ZT1kLmludGVybGVhdmVkO251bGw9PT1lPyhiLm5leHQ9YixYZyhkKSk6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QuaW50ZXJsZWF2ZWQ9YjtyZXR1cm4gWmcoYSxjKX1mdW5jdGlvbiBlaChhLGIsYyl7Yj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iJiYoYj1iLnNoYXJlZCwwIT09KGMmNDE5NDI0MCkpKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxuZnVuY3Rpb24gZmgoYSxiKXt2YXIgYz1hLnVwZGF0ZVF1ZXVlLGQ9YS5hbHRlcm5hdGU7aWYobnVsbCE9PWQmJihkPWQudXBkYXRlUXVldWUsYz09PWQpKXt2YXIgZT1udWxsLGY9bnVsbDtjPWMuZmlyc3RCYXNlVXBkYXRlO2lmKG51bGwhPT1jKXtkb3t2YXIgZz17ZXZlbnRUaW1lOmMuZXZlbnRUaW1lLGxhbmU6Yy5sYW5lLHRhZzpjLnRhZyxwYXlsb2FkOmMucGF5bG9hZCxjYWxsYmFjazpjLmNhbGxiYWNrLG5leHQ6bnVsbH07bnVsbD09PWY/ZT1mPWc6Zj1mLm5leHQ9ZztjPWMubmV4dH13aGlsZShudWxsIT09Yyk7bnVsbD09PWY/ZT1mPWI6Zj1mLm5leHQ9Yn1lbHNlIGU9Zj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9XG5iO2MubGFzdEJhc2VVcGRhdGU9Yn1cbmZ1bmN0aW9uIGdoKGEsYixjLGQpe3ZhciBlPWEudXBkYXRlUXVldWU7JGc9ITE7dmFyIGY9ZS5maXJzdEJhc2VVcGRhdGUsZz1lLmxhc3RCYXNlVXBkYXRlLGg9ZS5zaGFyZWQucGVuZGluZztpZihudWxsIT09aCl7ZS5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBrPWgsbD1rLm5leHQ7ay5uZXh0PW51bGw7bnVsbD09PWc/Zj1sOmcubmV4dD1sO2c9azt2YXIgbT1hLmFsdGVybmF0ZTtudWxsIT09bSYmKG09bS51cGRhdGVRdWV1ZSxoPW0ubGFzdEJhc2VVcGRhdGUsaCE9PWcmJihudWxsPT09aD9tLmZpcnN0QmFzZVVwZGF0ZT1sOmgubmV4dD1sLG0ubGFzdEJhc2VVcGRhdGU9aykpfWlmKG51bGwhPT1mKXt2YXIgcT1lLmJhc2VTdGF0ZTtnPTA7bT1sPWs9bnVsbDtoPWY7ZG97dmFyIHI9aC5sYW5lLHk9aC5ldmVudFRpbWU7aWYoKGQmcik9PT1yKXtudWxsIT09bSYmKG09bS5uZXh0PXtldmVudFRpbWU6eSxsYW5lOjAsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssXG5uZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9aDtyPWI7eT1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuKXtxPW4uY2FsbCh5LHEscik7YnJlYWsgYX1xPW47YnJlYWsgYTtjYXNlIDM6bi5mbGFncz1uLmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOm49dC5wYXlsb2FkO3I9XCJmdW5jdGlvblwiPT09dHlwZW9mIG4/bi5jYWxsKHkscSxyKTpuO2lmKG51bGw9PT1yfHx2b2lkIDA9PT1yKWJyZWFrIGE7cT1BKHt9LHEscik7YnJlYWsgYTtjYXNlIDI6JGc9ITB9fW51bGwhPT1oLmNhbGxiYWNrJiYwIT09aC5sYW5lJiYoYS5mbGFnc3w9NjQscj1lLmVmZmVjdHMsbnVsbD09PXI/ZS5lZmZlY3RzPVtoXTpyLnB1c2goaCkpfWVsc2UgeT17ZXZlbnRUaW1lOnksbGFuZTpyLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PW0/KGw9bT15LGs9cSk6bT1tLm5leHQ9eSxnfD1yO1xuaD1oLm5leHQ7aWYobnVsbD09PWgpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2Ugcj1oLGg9ci5uZXh0LHIubmV4dD1udWxsLGUubGFzdEJhc2VVcGRhdGU9cixlLnNoYXJlZC5wZW5kaW5nPW51bGx9d2hpbGUoMSk7bnVsbD09PW0mJihrPXEpO2UuYmFzZVN0YXRlPWs7ZS5maXJzdEJhc2VVcGRhdGU9bDtlLmxhc3RCYXNlVXBkYXRlPW07Yj1lLnNoYXJlZC5pbnRlcmxlYXZlZDtpZihudWxsIT09Yil7ZT1iO2RvIGd8PWUubGFuZSxlPWUubmV4dDt3aGlsZShlIT09Yil9ZWxzZSBudWxsPT09ZiYmKGUuc2hhcmVkLmxhbmVzPTApO2hofD1nO2EubGFuZXM9ZzthLm1lbW9pemVkU3RhdGU9cX19XG5mdW5jdGlvbiBpaChhLGIsYyl7YT1iLmVmZmVjdHM7Yi5lZmZlY3RzPW51bGw7aWYobnVsbCE9PWEpZm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXSxlPWQuY2FsbGJhY2s7aWYobnVsbCE9PWUpe2QuY2FsbGJhY2s9bnVsbDtkPWM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IocCgxOTEsZSkpO2UuY2FsbChkKX19fXZhciBqaD0obmV3IGFhLkNvbXBvbmVudCkucmVmcztmdW5jdGlvbiBraChhLGIsYyxkKXtiPWEubWVtb2l6ZWRTdGF0ZTtjPWMoZCxiKTtjPW51bGw9PT1jfHx2b2lkIDA9PT1jP2I6QSh7fSxiLGMpO2EubWVtb2l6ZWRTdGF0ZT1jOzA9PT1hLmxhbmVzJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9XG52YXIgbmg9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLl9yZWFjdEludGVybmFscyk/VmIoYSk9PT1hOiExfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9TCgpLGU9bGgoYSksZj1jaChkLGUpO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPWRoKGEsZixlKTtudWxsIT09YiYmKG1oKGIsYSxlLGQpLGVoKGIsYSxlKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9TCgpLGU9bGgoYSksZj1jaChkLGUpO2YudGFnPTE7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYil7YT1hLl9yZWFjdEludGVybmFsczt2YXIgYz1MKCksZD1cbmxoKGEpLGU9Y2goYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtiPWRoKGEsZSxkKTtudWxsIT09YiYmKG1oKGIsYSxkLGMpLGVoKGIsYSxkKSl9fTtmdW5jdGlvbiBvaChhLGIsYyxkLGUsZixnKXthPWEuc3RhdGVOb2RlO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFJZShjLGQpfHwhSWUoZSxmKTohMH1cbmZ1bmN0aW9uIHBoKGEsYixjKXt2YXIgZD0hMSxlPVZmO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9mPVZnKGYpOihlPVpmKGIpP1hmOkguY3VycmVudCxkPWIuY29udGV4dFR5cGVzLGY9KGQ9bnVsbCE9PWQmJnZvaWQgMCE9PWQpP1lmKGEsZSk6VmYpO2I9bmV3IGIoYyxmKTthLm1lbW9pemVkU3RhdGU9bnVsbCE9PWIuc3RhdGUmJnZvaWQgMCE9PWIuc3RhdGU/Yi5zdGF0ZTpudWxsO2IudXBkYXRlcj1uaDthLnN0YXRlTm9kZT1iO2IuX3JlYWN0SW50ZXJuYWxzPWE7ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1mKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHFoKGEsYixjLGQpe2E9Yi5zdGF0ZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO2Iuc3RhdGUhPT1hJiZuaC5lbnF1ZXVlUmVwbGFjZVN0YXRlKGIsYi5zdGF0ZSxudWxsKX1cbmZ1bmN0aW9uIHJoKGEsYixjLGQpe3ZhciBlPWEuc3RhdGVOb2RlO2UucHJvcHM9YztlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtlLnJlZnM9amg7YWgoYSk7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1WZyhmKTooZj1aZihiKT9YZjpILmN1cnJlbnQsZS5jb250ZXh0PVlmKGEsZikpO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2Y9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJihraChhLGIsZixjKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHwoYj1lLnN0YXRlLFxuXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1lLnN0YXRlJiZuaC5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKSxnaChhLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00MTk0MzA4KX1cbmZ1bmN0aW9uIHNoKGEsYixjKXthPWMucmVmO2lmKG51bGwhPT1hJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmXCJvYmplY3RcIiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09Yy50YWcpdGhyb3cgRXJyb3IocCgzMDkpKTt2YXIgZD1jLnN0YXRlTm9kZX1pZighZCl0aHJvdyBFcnJvcihwKDE0NyxhKSk7dmFyIGU9ZCxmPVwiXCIrYTtpZihudWxsIT09YiYmbnVsbCE9PWIucmVmJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1mKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWUucmVmcztiPT09amgmJihiPWUucmVmcz17fSk7bnVsbD09PWE/ZGVsZXRlIGJbZl06YltmXT1hfTtiLl9zdHJpbmdSZWY9ZjtyZXR1cm4gYn1pZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IocCgyODQpKTtpZighYy5fb3duZXIpdGhyb3cgRXJyb3IocCgyOTAsYSkpO31yZXR1cm4gYX1cbmZ1bmN0aW9uIHRoKGEsYil7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7dGhyb3cgRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09YT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGIpLmpvaW4oXCIsIFwiKStcIn1cIjphKSk7fWZ1bmN0aW9uIHVoKGEpe3ZhciBiPWEuX2luaXQ7cmV0dXJuIGIoYS5fcGF5bG9hZCl9XG5mdW5jdGlvbiB2aChhKXtmdW5jdGlvbiBiKGIsYyl7aWYoYSl7dmFyIGQ9Yi5kZWxldGlvbnM7bnVsbD09PWQ/KGIuZGVsZXRpb25zPVtjXSxiLmZsYWdzfD0xNik6ZC5wdXNoKGMpfX1mdW5jdGlvbiBjKGMsZCl7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09ZDspYihjLGQpLGQ9ZC5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGQoYSxiKXtmb3IoYT1uZXcgTWFwO251bGwhPT1iOyludWxsIT09Yi5rZXk/YS5zZXQoYi5rZXksYik6YS5zZXQoYi5pbmRleCxiKSxiPWIuc2libGluZztyZXR1cm4gYX1mdW5jdGlvbiBlKGEsYil7YT13aChhLGIpO2EuaW5kZXg9MDthLnNpYmxpbmc9bnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBmKGIsYyxkKXtiLmluZGV4PWQ7aWYoIWEpcmV0dXJuIGIuZmxhZ3N8PTEwNDg1NzYsYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmZsYWdzfD0yLGMpOmQ7Yi5mbGFnc3w9MjtyZXR1cm4gY31mdW5jdGlvbiBnKGIpe2EmJlxubnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFnc3w9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gaChhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPXhoKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGsoYSxiLGMsZCl7dmFyIGY9Yy50eXBlO2lmKGY9PT15YSlyZXR1cm4gbShhLGIsYy5wcm9wcy5jaGlsZHJlbixkLGMua2V5KTtpZihudWxsIT09YiYmKGIuZWxlbWVudFR5cGU9PT1mfHxcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLiQkdHlwZW9mPT09SGEmJnVoKGYpPT09Yi50eXBlKSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9c2goYSxiLGMpLGQucmV0dXJuPWEsZDtkPXloKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPXNoKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIGwoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8XG5iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PWMuaW1wbGVtZW50YXRpb24pcmV0dXJuIGI9emgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIG0oYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPUFoKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiJiZcIlwiIT09Ynx8XCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBiPXhoKFwiXCIrYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjPXloKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLFxuYy5yZWY9c2goYSxudWxsLGIpLGMucmV0dXJuPWEsYztjYXNlIHdhOnJldHVybiBiPXpoKGIsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtjYXNlIEhhOnZhciBkPWIuX2luaXQ7cmV0dXJuIHEoYSxkKGIuX3BheWxvYWQpLGMpfWlmKGViKGIpfHxLYShiKSlyZXR1cm4gYj1BaChiLGEubW9kZSxjLG51bGwpLGIucmV0dXJuPWEsYjt0aChhLGIpfXJldHVybiBudWxsfWZ1bmN0aW9uIHIoYSxiLGMsZCl7dmFyIGU9bnVsbCE9PWI/Yi5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMmJlwiXCIhPT1jfHxcIm51bWJlclwiPT09dHlwZW9mIGMpcmV0dXJuIG51bGwhPT1lP251bGw6aChhLGIsXCJcIitjLGQpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjLmtleT09PWU/ayhhLGIsYyxkKTpudWxsO2Nhc2Ugd2E6cmV0dXJuIGMua2V5PT09ZT9sKGEsYixjLGQpOm51bGw7Y2FzZSBIYTpyZXR1cm4gZT1jLl9pbml0LHIoYSxcbmIsZShjLl9wYXlsb2FkKSxkKX1pZihlYihjKXx8S2EoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bShhLGIsYyxkLG51bGwpO3RoKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24geShhLGIsYyxkLGUpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZCYmXCJcIiE9PWR8fFwibnVtYmVyXCI9PT10eXBlb2YgZClyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxoKGIsYSxcIlwiK2QsZSk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGsoYixhLGQsZSk7Y2FzZSB3YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsbChiLGEsZCxlKTtjYXNlIEhhOnZhciBmPWQuX2luaXQ7cmV0dXJuIHkoYSxiLGMsZihkLl9wYXlsb2FkKSxlKX1pZihlYihkKXx8S2EoZCkpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsbShiLGEsZCxlLG51bGwpO3RoKGIsZCl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBuKGUsZyxoLGspe2Zvcih2YXIgbD1udWxsLG09bnVsbCx1PWcsdz1nPTAseD1udWxsO251bGwhPT11JiZ3PGgubGVuZ3RoO3crKyl7dS5pbmRleD53Pyh4PXUsdT1udWxsKTp4PXUuc2libGluZzt2YXIgbj1yKGUsdSxoW3ddLGspO2lmKG51bGw9PT1uKXtudWxsPT09dSYmKHU9eCk7YnJlYWt9YSYmdSYmbnVsbD09PW4uYWx0ZXJuYXRlJiZiKGUsdSk7Zz1mKG4sZyx3KTtudWxsPT09bT9sPW46bS5zaWJsaW5nPW47bT1uO3U9eH1pZih3PT09aC5sZW5ndGgpcmV0dXJuIGMoZSx1KSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PXUpe2Zvcig7dzxoLmxlbmd0aDt3KyspdT1xKGUsaFt3XSxrKSxudWxsIT09dSYmKGc9Zih1LGcsdyksbnVsbD09PW0/bD11Om0uc2libGluZz11LG09dSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IodT1kKGUsdSk7dzxoLmxlbmd0aDt3KyspeD15KHUsZSx3LGhbd10sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJnUuZGVsZXRlKG51bGw9PT1cbngua2V5P3c6eC5rZXkpLGc9Zih4LGcsdyksbnVsbD09PW0/bD14Om0uc2libGluZz14LG09eCk7YSYmdS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIHQoZSxnLGgsayl7dmFyIGw9S2EoaCk7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IocCgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT1oKXRocm93IEVycm9yKHAoMTUxKSk7Zm9yKHZhciB1PWw9bnVsbCxtPWcsdz1nPTAseD1udWxsLG49aC5uZXh0KCk7bnVsbCE9PW0mJiFuLmRvbmU7dysrLG49aC5uZXh0KCkpe20uaW5kZXg+dz8oeD1tLG09bnVsbCk6eD1tLnNpYmxpbmc7dmFyIHQ9cihlLG0sbi52YWx1ZSxrKTtpZihudWxsPT09dCl7bnVsbD09PW0mJihtPXgpO2JyZWFrfWEmJm0mJm51bGw9PT10LmFsdGVybmF0ZSYmYihlLG0pO2c9Zih0LGcsdyk7bnVsbD09PXU/bD10OnUuc2libGluZz10O3U9dDttPXh9aWYobi5kb25lKXJldHVybiBjKGUsXG5tKSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PW0pe2Zvcig7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXEoZSxuLnZhbHVlLGspLG51bGwhPT1uJiYoZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcihtPWQoZSxtKTshbi5kb25lO3crKyxuPWgubmV4dCgpKW49eShtLGUsdyxuLnZhbHVlLGspLG51bGwhPT1uJiYoYSYmbnVsbCE9PW4uYWx0ZXJuYXRlJiZtLmRlbGV0ZShudWxsPT09bi5rZXk/dzpuLmtleSksZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTthJiZtLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gSihhLGQsZixoKXtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT15YSYmbnVsbD09PWYua2V5JiYoZj1mLnByb3BzLmNoaWxkcmVuKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mKXtzd2l0Y2goZi4kJHR5cGVvZil7Y2FzZSB2YTphOntmb3IodmFyIGs9XG5mLmtleSxsPWQ7bnVsbCE9PWw7KXtpZihsLmtleT09PWspe2s9Zi50eXBlO2lmKGs9PT15YSl7aWYoNz09PWwudGFnKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzLmNoaWxkcmVuKTtkLnJldHVybj1hO2E9ZDticmVhayBhfX1lbHNlIGlmKGwuZWxlbWVudFR5cGU9PT1rfHxcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rJiZrLiQkdHlwZW9mPT09SGEmJnVoKGspPT09bC50eXBlKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzKTtkLnJlZj1zaChhLGwsZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsbCk7YnJlYWt9ZWxzZSBiKGEsbCk7bD1sLnNpYmxpbmd9Zi50eXBlPT09eWE/KGQ9QWgoZi5wcm9wcy5jaGlsZHJlbixhLm1vZGUsaCxmLmtleSksZC5yZXR1cm49YSxhPWQpOihoPXloKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwsYS5tb2RlLGgpLGgucmVmPXNoKGEsZCxmKSxoLnJldHVybj1hLGE9aCl9cmV0dXJuIGcoYSk7Y2FzZSB3YTphOntmb3IobD1mLmtleTtudWxsIT09XG5kOyl7aWYoZC5rZXk9PT1sKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPWQuc2libGluZ31kPXpoKGYsYS5tb2RlLGgpO2QucmV0dXJuPWE7YT1kfXJldHVybiBnKGEpO2Nhc2UgSGE6cmV0dXJuIGw9Zi5faW5pdCxKKGEsZCxsKGYuX3BheWxvYWQpLGgpfWlmKGViKGYpKXJldHVybiBuKGEsZCxmLGgpO2lmKEthKGYpKXJldHVybiB0KGEsZCxmLGgpO3RoKGEsZil9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBmJiZcIlwiIT09Znx8XCJudW1iZXJcIj09PXR5cGVvZiBmPyhmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmKSxkLnJldHVybj1hLGE9ZCk6XG4oYyhhLGQpLGQ9eGgoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSkpOmMoYSxkKX1yZXR1cm4gSn12YXIgQmg9dmgoITApLENoPXZoKCExKSxEaD17fSxFaD1VZihEaCksRmg9VWYoRGgpLEdoPVVmKERoKTtmdW5jdGlvbiBIaChhKXtpZihhPT09RGgpdGhyb3cgRXJyb3IocCgxNzQpKTtyZXR1cm4gYX1mdW5jdGlvbiBJaChhLGIpe0coR2gsYik7RyhGaCxhKTtHKEVoLERoKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOmxiKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDphPTg9PT1hP2IucGFyZW50Tm9kZTpiLGI9YS5uYW1lc3BhY2VVUkl8fG51bGwsYT1hLnRhZ05hbWUsYj1sYihiLGEpfUUoRWgpO0coRWgsYil9ZnVuY3Rpb24gSmgoKXtFKEVoKTtFKEZoKTtFKEdoKX1cbmZ1bmN0aW9uIEtoKGEpe0hoKEdoLmN1cnJlbnQpO3ZhciBiPUhoKEVoLmN1cnJlbnQpO3ZhciBjPWxiKGIsYS50eXBlKTtiIT09YyYmKEcoRmgsYSksRyhFaCxjKSl9ZnVuY3Rpb24gTGgoYSl7RmguY3VycmVudD09PWEmJihFKEVoKSxFKEZoKSl9dmFyIE09VWYoMCk7XG5mdW5jdGlvbiBNaChhKXtmb3IodmFyIGI9YTtudWxsIT09Yjspe2lmKDEzPT09Yi50YWcpe3ZhciBjPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGw9PT1jfHxcIiQ/XCI9PT1jLmRhdGF8fFwiJCFcIj09PWMuZGF0YSkpcmV0dXJuIGJ9ZWxzZSBpZigxOT09PWIudGFnJiZ2b2lkIDAhPT1iLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpe2lmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBifWVsc2UgaWYobnVsbCE9PWIuY2hpbGQpe2IuY2hpbGQucmV0dXJuPWI7Yj1iLmNoaWxkO2NvbnRpbnVlfWlmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiBudWxsO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ31yZXR1cm4gbnVsbH12YXIgTmg9W107XG5mdW5jdGlvbiBPaCgpe2Zvcih2YXIgYT0wO2E8TmgubGVuZ3RoO2ErKylOaFthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO05oLmxlbmd0aD0wfXZhciBQaD11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLFFoPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFJoPTAsTj1udWxsLE89bnVsbCxQPW51bGwsU2g9ITEsVGg9ITEsVWg9MCxWaD0wO2Z1bmN0aW9uIFEoKXt0aHJvdyBFcnJvcihwKDMyMSkpO31mdW5jdGlvbiBXaChhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFIZShhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfVxuZnVuY3Rpb24gWGgoYSxiLGMsZCxlLGYpe1JoPWY7Tj1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7UGguY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9ZaDpaaDthPWMoZCxlKTtpZihUaCl7Zj0wO2Rve1RoPSExO1VoPTA7aWYoMjU8PWYpdGhyb3cgRXJyb3IocCgzMDEpKTtmKz0xO1A9Tz1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtQaC5jdXJyZW50PSRoO2E9YyhkLGUpfXdoaWxlKFRoKX1QaC5jdXJyZW50PWFpO2I9bnVsbCE9PU8mJm51bGwhPT1PLm5leHQ7Umg9MDtQPU89Tj1udWxsO1NoPSExO2lmKGIpdGhyb3cgRXJyb3IocCgzMDApKTtyZXR1cm4gYX1mdW5jdGlvbiBiaSgpe3ZhciBhPTAhPT1VaDtVaD0wO3JldHVybiBhfVxuZnVuY3Rpb24gY2koKXt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtudWxsPT09UD9OLm1lbW9pemVkU3RhdGU9UD1hOlA9UC5uZXh0PWE7cmV0dXJuIFB9ZnVuY3Rpb24gZGkoKXtpZihudWxsPT09Tyl7dmFyIGE9Ti5hbHRlcm5hdGU7YT1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGE9Ty5uZXh0O3ZhciBiPW51bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZTpQLm5leHQ7aWYobnVsbCE9PWIpUD1iLE89YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzEwKSk7Tz1hO2E9e21lbW9pemVkU3RhdGU6Ty5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpPLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ty5iYXNlUXVldWUscXVldWU6Ty5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YX1yZXR1cm4gUH1cbmZ1bmN0aW9uIGVpKGEsYil7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpifVxuZnVuY3Rpb24gZmkoYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1PLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2Y9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7dmFyIGg9Zz1udWxsLGs9bnVsbCxsPWY7ZG97dmFyIG09bC5sYW5lO2lmKChSaCZtKT09PW0pbnVsbCE9PWsmJihrPWsubmV4dD17bGFuZTowLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxkPWwuaGFzRWFnZXJTdGF0ZT9sLmVhZ2VyU3RhdGU6YShkLGwuYWN0aW9uKTtlbHNle3ZhciBxPXtsYW5lOm0sYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLFxuZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09az8oaD1rPXEsZz1kKTprPWsubmV4dD1xO04ubGFuZXN8PW07aGh8PW19bD1sLm5leHR9d2hpbGUobnVsbCE9PWwmJmwhPT1mKTtudWxsPT09az9nPWQ6ay5uZXh0PWg7SGUoZCxiLm1lbW9pemVkU3RhdGUpfHwoVWc9ITApO2IubWVtb2l6ZWRTdGF0ZT1kO2IuYmFzZVN0YXRlPWc7Yi5iYXNlUXVldWU9aztjLmxhc3RSZW5kZXJlZFN0YXRlPWR9YT1jLmludGVybGVhdmVkO2lmKG51bGwhPT1hKXtlPWE7ZG8gZj1lLmxhbmUsTi5sYW5lc3w9ZixoaHw9ZixlPWUubmV4dDt3aGlsZShlIT09YSl9ZWxzZSBudWxsPT09ZSYmKGMubGFuZXM9MCk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIGdpKGEpe3ZhciBiPWRpKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9Yy5kaXNwYXRjaCxlPWMucGVuZGluZyxmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSl7Yy5wZW5kaW5nPW51bGw7dmFyIGc9ZT1lLm5leHQ7ZG8gZj1hKGYsZy5hY3Rpb24pLGc9Zy5uZXh0O3doaWxlKGchPT1lKTtIZShmLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7bnVsbD09PWIuYmFzZVF1ZXVlJiYoYi5iYXNlU3RhdGU9Zik7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1mfXJldHVybltmLGRdfWZ1bmN0aW9uIGhpKCl7fVxuZnVuY3Rpb24gaWkoYSxiKXt2YXIgYz1OLGQ9ZGkoKSxlPWIoKSxmPSFIZShkLm1lbW9pemVkU3RhdGUsZSk7ZiYmKGQubWVtb2l6ZWRTdGF0ZT1lLFVnPSEwKTtkPWQucXVldWU7amkoa2kuYmluZChudWxsLGMsZCxhKSxbYV0pO2lmKGQuZ2V0U25hcHNob3QhPT1ifHxmfHxudWxsIT09UCYmUC5tZW1vaXplZFN0YXRlLnRhZyYxKXtjLmZsYWdzfD0yMDQ4O2xpKDksbWkuYmluZChudWxsLGMsZCxlLGIpLHZvaWQgMCxudWxsKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShjLGIsZSl9cmV0dXJuIGV9ZnVuY3Rpb24gbmkoYSxiLGMpe2EuZmxhZ3N8PTE2Mzg0O2E9e2dldFNuYXBzaG90OmIsdmFsdWU6Y307Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE4udXBkYXRlUXVldWU9YixiLnN0b3Jlcz1bYV0pOihjPWIuc3RvcmVzLG51bGw9PT1jP2Iuc3RvcmVzPVthXTpjLnB1c2goYSkpfVxuZnVuY3Rpb24gbWkoYSxiLGMsZCl7Yi52YWx1ZT1jO2IuZ2V0U25hcHNob3Q9ZDtvaShiKSYmcGkoYSl9ZnVuY3Rpb24ga2koYSxiLGMpe3JldHVybiBjKGZ1bmN0aW9uKCl7b2koYikmJnBpKGEpfSl9ZnVuY3Rpb24gb2koYSl7dmFyIGI9YS5nZXRTbmFwc2hvdDthPWEudmFsdWU7dHJ5e3ZhciBjPWIoKTtyZXR1cm4hSGUoYSxjKX1jYXRjaChkKXtyZXR1cm4hMH19ZnVuY3Rpb24gcGkoYSl7dmFyIGI9WmcoYSwxKTtudWxsIT09YiYmbWgoYixhLDEsLTEpfVxuZnVuY3Rpb24gcWkoYSl7dmFyIGI9Y2koKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSYmKGE9YSgpKTtiLm1lbW9pemVkU3RhdGU9Yi5iYXNlU3RhdGU9YTthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjplaSxsYXN0UmVuZGVyZWRTdGF0ZTphfTtiLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPXJpLmJpbmQobnVsbCxOLGEpO3JldHVybltiLm1lbW9pemVkU3RhdGUsYV19XG5mdW5jdGlvbiBsaShhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE4udXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihjPWIubGFzdEVmZmVjdCxudWxsPT09Yz9iLmxhc3RFZmZlY3Q9YS5uZXh0PWE6KGQ9Yy5uZXh0LGMubmV4dD1hLGEubmV4dD1kLGIubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9ZnVuY3Rpb24gc2koKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIHRpKGEsYixjLGQpe3ZhciBlPWNpKCk7Ti5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9bGkoMXxiLGMsdm9pZCAwLHZvaWQgMD09PWQ/bnVsbDpkKX1cbmZ1bmN0aW9uIHVpKGEsYixjLGQpe3ZhciBlPWRpKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU8pe3ZhciBnPU8ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmV2goZCxnLmRlcHMpKXtlLm1lbW9pemVkU3RhdGU9bGkoYixjLGYsZCk7cmV0dXJufX1OLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyxmLGQpfWZ1bmN0aW9uIHZpKGEsYil7cmV0dXJuIHRpKDgzOTA2NTYsOCxhLGIpfWZ1bmN0aW9uIGppKGEsYil7cmV0dXJuIHVpKDIwNDgsOCxhLGIpfWZ1bmN0aW9uIHdpKGEsYil7cmV0dXJuIHVpKDQsMixhLGIpfWZ1bmN0aW9uIHhpKGEsYil7cmV0dXJuIHVpKDQsNCxhLGIpfVxuZnVuY3Rpb24geWkoYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYT1hKCksYihhKSxmdW5jdGlvbigpe2IobnVsbCl9O2lmKG51bGwhPT1iJiZ2b2lkIDAhPT1iKXJldHVybiBhPWEoKSxiLmN1cnJlbnQ9YSxmdW5jdGlvbigpe2IuY3VycmVudD1udWxsfX1mdW5jdGlvbiB6aShhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHVpKDQsNCx5aS5iaW5kKG51bGwsYixhKSxjKX1mdW5jdGlvbiBBaSgpe31mdW5jdGlvbiBCaShhLGIpe3ZhciBjPWRpKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZXaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1cbmZ1bmN0aW9uIENpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIERpKGEsYixjKXtpZigwPT09KFJoJjIxKSlyZXR1cm4gYS5iYXNlU3RhdGUmJihhLmJhc2VTdGF0ZT0hMSxVZz0hMCksYS5tZW1vaXplZFN0YXRlPWM7SGUoYyxiKXx8KGM9eWMoKSxOLmxhbmVzfD1jLGhofD1jLGEuYmFzZVN0YXRlPSEwKTtyZXR1cm4gYn1mdW5jdGlvbiBFaShhLGIpe3ZhciBjPUM7Qz0wIT09YyYmND5jP2M6NDthKCEwKTt2YXIgZD1RaC50cmFuc2l0aW9uO1FoLnRyYW5zaXRpb249e307dHJ5e2EoITEpLGIoKX1maW5hbGx5e0M9YyxRaC50cmFuc2l0aW9uPWR9fWZ1bmN0aW9uIEZpKCl7cmV0dXJuIGRpKCkubWVtb2l6ZWRTdGF0ZX1cbmZ1bmN0aW9uIEdpKGEsYixjKXt2YXIgZD1saChhKTtjPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGMpO2Vsc2UgaWYoYz1ZZyhhLGIsYyxkKSxudWxsIT09Yyl7dmFyIGU9TCgpO21oKGMsYSxkLGUpO0ppKGMsYixkKX19XG5mdW5jdGlvbiByaShhLGIsYyl7dmFyIGQ9bGgoYSksZT17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoSGkoYSkpSWkoYixlKTtlbHNle3ZhciBmPWEuYWx0ZXJuYXRlO2lmKDA9PT1hLmxhbmVzJiYobnVsbD09PWZ8fDA9PT1mLmxhbmVzKSYmKGY9Yi5sYXN0UmVuZGVyZWRSZWR1Y2VyLG51bGwhPT1mKSl0cnl7dmFyIGc9Yi5sYXN0UmVuZGVyZWRTdGF0ZSxoPWYoZyxjKTtlLmhhc0VhZ2VyU3RhdGU9ITA7ZS5lYWdlclN0YXRlPWg7aWYoSGUoaCxnKSl7dmFyIGs9Yi5pbnRlcmxlYXZlZDtudWxsPT09az8oZS5uZXh0PWUsWGcoYikpOihlLm5leHQ9ay5uZXh0LGsubmV4dD1lKTtiLmludGVybGVhdmVkPWU7cmV0dXJufX1jYXRjaChsKXt9ZmluYWxseXt9Yz1ZZyhhLGIsZSxkKTtudWxsIT09YyYmKGU9TCgpLG1oKGMsYSxkLGUpLEppKGMsYixkKSl9fVxuZnVuY3Rpb24gSGkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7cmV0dXJuIGE9PT1OfHxudWxsIT09YiYmYj09PU59ZnVuY3Rpb24gSWkoYSxiKXtUaD1TaD0hMDt2YXIgYz1hLnBlbmRpbmc7bnVsbD09PWM/Yi5uZXh0PWI6KGIubmV4dD1jLm5leHQsYy5uZXh0PWIpO2EucGVuZGluZz1ifWZ1bmN0aW9uIEppKGEsYixjKXtpZigwIT09KGMmNDE5NDI0MCkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG52YXIgYWk9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOlEsdXNlQ29udGV4dDpRLHVzZUVmZmVjdDpRLHVzZUltcGVyYXRpdmVIYW5kbGU6USx1c2VJbnNlcnRpb25FZmZlY3Q6USx1c2VMYXlvdXRFZmZlY3Q6USx1c2VNZW1vOlEsdXNlUmVkdWNlcjpRLHVzZVJlZjpRLHVzZVN0YXRlOlEsdXNlRGVidWdWYWx1ZTpRLHVzZURlZmVycmVkVmFsdWU6USx1c2VUcmFuc2l0aW9uOlEsdXNlTXV0YWJsZVNvdXJjZTpRLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlEsdXNlSWQ6USx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFloPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe2NpKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OnZpLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiB0aSg0MTk0MzA4LFxuNCx5aS5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRpKDQxOTQzMDgsNCxhLGIpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNCwyLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz1jaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jaSgpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTtkLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPUdpLmJpbmQobnVsbCxOLGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgYj1cbmNpKCk7YT17Y3VycmVudDphfTtyZXR1cm4gYi5tZW1vaXplZFN0YXRlPWF9LHVzZVN0YXRlOnFpLHVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gY2koKS5tZW1vaXplZFN0YXRlPWF9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1xaSghMSksYj1hWzBdO2E9RWkuYmluZChudWxsLGFbMV0pO2NpKCkubWVtb2l6ZWRTdGF0ZT1hO3JldHVybltiLGFdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TixlPWNpKCk7aWYoSSl7aWYodm9pZCAwPT09Yyl0aHJvdyBFcnJvcihwKDQwNykpO2M9YygpfWVsc2V7Yz1iKCk7aWYobnVsbD09PVIpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KFJoJjMwKXx8bmkoZCxiLGMpfWUubWVtb2l6ZWRTdGF0ZT1jO3ZhciBmPXt2YWx1ZTpjLGdldFNuYXBzaG90OmJ9O2UucXVldWU9Zjt2aShraS5iaW5kKG51bGwsZCxcbmYsYSksW2FdKTtkLmZsYWdzfD0yMDQ4O2xpKDksbWkuYmluZChudWxsLGQsZixjLGIpLHZvaWQgMCxudWxsKTtyZXR1cm4gY30sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgYT1jaSgpLGI9Ui5pZGVudGlmaWVyUHJlZml4O2lmKEkpe3ZhciBjPXNnO3ZhciBkPXJnO2M9KGQmfigxPDwzMi1vYyhkKS0xKSkudG9TdHJpbmcoMzIpK2M7Yj1cIjpcIitiK1wiUlwiK2M7Yz1VaCsrOzA8YyYmKGIrPVwiSFwiK2MudG9TdHJpbmcoMzIpKTtiKz1cIjpcIn1lbHNlIGM9VmgrKyxiPVwiOlwiK2IrXCJyXCIrYy50b1N0cmluZygzMikrXCI6XCI7cmV0dXJuIGEubWVtb2l6ZWRTdGF0ZT1ifSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFpoPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpCaSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDpqaSx1c2VJbXBlcmF0aXZlSGFuZGxlOnppLHVzZUluc2VydGlvbkVmZmVjdDp3aSx1c2VMYXlvdXRFZmZlY3Q6eGksdXNlTWVtbzpDaSx1c2VSZWR1Y2VyOmZpLHVzZVJlZjpzaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBmaShlaSl9LFxudXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPWRpKCk7cmV0dXJuIERpKGIsTy5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9ZmkoZWkpWzBdLGI9ZGkoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOmhpLHVzZVN5bmNFeHRlcm5hbFN0b3JlOmlpLHVzZUlkOkZpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sJGg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6Z2ksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGdpKGVpKX0sdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPWRpKCk7cmV0dXJuIG51bGw9PT1cbk8/Yi5tZW1vaXplZFN0YXRlPWE6RGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1naShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfTtmdW5jdGlvbiBLaShhLGIpe3RyeXt2YXIgYz1cIlwiLGQ9YjtkbyBjKz1QYShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT1cIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiK2YubWVzc2FnZStcIlxcblwiK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZSxkaWdlc3Q6bnVsbH19ZnVuY3Rpb24gTGkoYSxiLGMpe3JldHVybnt2YWx1ZTphLHNvdXJjZTpudWxsLHN0YWNrOm51bGwhPWM/YzpudWxsLGRpZ2VzdDpudWxsIT1iP2I6bnVsbH19XG5mdW5jdGlvbiBNaShhLGIpe3RyeXtjb25zb2xlLmVycm9yKGIudmFsdWUpfWNhdGNoKGMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBjO30pfX12YXIgTmk9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gT2koYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7UGl8fChQaT0hMCxRaT1kKTtNaShhLGIpfTtyZXR1cm4gY31cbmZ1bmN0aW9uIFJpKGEsYixjKXtjPWNoKC0xLGMpO2MudGFnPTM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGU9Yi52YWx1ZTtjLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZChlKX07Yy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYil9fXZhciBmPWEuc3RhdGVOb2RlO251bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaShhLGIpO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PVNpP1NpPW5ldyBTZXQoW3RoaXNdKTpTaS5hZGQodGhpcykpO3ZhciBjPWIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChiLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09Yz9jOlwiXCJ9KX0pO3JldHVybiBjfVxuZnVuY3Rpb24gVGkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO2lmKG51bGw9PT1kKXtkPWEucGluZ0NhY2hlPW5ldyBOaTt2YXIgZT1uZXcgU2V0O2Quc2V0KGIsZSl9ZWxzZSBlPWQuZ2V0KGIpLHZvaWQgMD09PWUmJihlPW5ldyBTZXQsZC5zZXQoYixlKSk7ZS5oYXMoYyl8fChlLmFkZChjKSxhPVVpLmJpbmQobnVsbCxhLGIsYyksYi50aGVuKGEsYSkpfWZ1bmN0aW9uIFZpKGEpe2Rve3ZhciBiO2lmKGI9MTM9PT1hLnRhZyliPWEubWVtb2l6ZWRTdGF0ZSxiPW51bGwhPT1iP251bGwhPT1iLmRlaHlkcmF0ZWQ/ITA6ITE6ITA7aWYoYilyZXR1cm4gYTthPWEucmV0dXJufXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFdpKGEsYixjLGQsZSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIGE9PT1iP2EuZmxhZ3N8PTY1NTM2OihhLmZsYWdzfD0xMjgsYy5mbGFnc3w9MTMxMDcyLGMuZmxhZ3MmPS01MjgwNSwxPT09Yy50YWcmJihudWxsPT09Yy5hbHRlcm5hdGU/Yy50YWc9MTc6KGI9Y2goLTEsMSksYi50YWc9MixkaChjLGIsMSkpKSxjLmxhbmVzfD0xKSxhO2EuZmxhZ3N8PTY1NTM2O2EubGFuZXM9ZTtyZXR1cm4gYX12YXIgWGk9dWEuUmVhY3RDdXJyZW50T3duZXIsVWc9ITE7ZnVuY3Rpb24gWWkoYSxiLGMsZCl7Yi5jaGlsZD1udWxsPT09YT9DaChiLG51bGwsYyxkKTpCaChiLGEuY2hpbGQsYyxkKX1cbmZ1bmN0aW9uIFppKGEsYixjLGQsZSl7Yz1jLnJlbmRlcjt2YXIgZj1iLnJlZjtUZyhiLGUpO2Q9WGgoYSxiLGMsZCxmLGUpO2M9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmMmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGQsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBhaihhLGIsYyxkLGUpe2lmKG51bGw9PT1hKXt2YXIgZj1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJiFiaihmKSYmdm9pZCAwPT09Zi5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9ZixjaihhLGIsZixkLGUpO2E9eWgoYy50eXBlLG51bGwsZCxiLGIubW9kZSxlKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9Zj1hLmNoaWxkO2lmKDA9PT0oYS5sYW5lcyZlKSl7dmFyIGc9Zi5tZW1vaXplZFByb3BzO2M9Yy5jb21wYXJlO2M9bnVsbCE9PWM/YzpJZTtpZihjKGcsZCkmJmEucmVmPT09Yi5yZWYpcmV0dXJuICRpKGEsYixlKX1iLmZsYWdzfD0xO2E9d2goZixkKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBjaihhLGIsYyxkLGUpe2lmKG51bGwhPT1hKXt2YXIgZj1hLm1lbW9pemVkUHJvcHM7aWYoSWUoZixkKSYmYS5yZWY9PT1iLnJlZilpZihVZz0hMSxiLnBlbmRpbmdQcm9wcz1kPWYsMCE9PShhLmxhbmVzJmUpKTAhPT0oYS5mbGFncyYxMzEwNzIpJiYoVWc9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcywkaShhLGIsZSl9cmV0dXJuIGRqKGEsYixjLGQsZSl9XG5mdW5jdGlvbiBlaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLmNoaWxkcmVuLGY9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGw7aWYoXCJoaWRkZW5cIj09PWQubW9kZSlpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LEcoZmosZ2opLGdqfD1jO2Vsc2V7aWYoMD09PShjJjEwNzM3NDE4MjQpKXJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sYi51cGRhdGVRdWV1ZT1udWxsLEcoZmosZ2opLGdqfD1hLG51bGw7Yi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfTtkPW51bGwhPT1mP2YuYmFzZUxhbmVzOmM7Ryhmaixnaik7Z2p8PWR9ZWxzZSBudWxsIT09XG5mPyhkPWYuYmFzZUxhbmVzfGMsYi5tZW1vaXplZFN0YXRlPW51bGwpOmQ9YyxHKGZqLGdqKSxnanw9ZDtZaShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBoaihhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mn1mdW5jdGlvbiBkaihhLGIsYyxkLGUpe3ZhciBmPVpmKGMpP1hmOkguY3VycmVudDtmPVlmKGIsZik7VGcoYixlKTtjPVhoKGEsYixjLGQsZixlKTtkPWJpKCk7aWYobnVsbCE9PWEmJiFVZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLCRpKGEsYixlKTtJJiZkJiZ2ZyhiKTtiLmZsYWdzfD0xO1lpKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gaWooYSxiLGMsZCxlKXtpZihaZihjKSl7dmFyIGY9ITA7Y2coYil9ZWxzZSBmPSExO1RnKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKWpqKGEsYikscGgoYixjLGQpLHJoKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBsJiZudWxsIT09bD9sPVZnKGwpOihsPVpmKGMpP1hmOkguY3VycmVudCxsPVlmKGIsbCkpO3ZhciBtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHE9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO3F8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHxcbihoIT09ZHx8ayE9PWwpJiZxaChiLGcsZCxsKTskZz0hMTt2YXIgcj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2doKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8V2YuY3VycmVudHx8JGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBtJiYoa2goYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPSRnfHxvaChiLGMsaCxkLHIsayxsKSk/KHF8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSk6XG4oXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGQ9ITEpfWVsc2V7Zz1iLnN0YXRlTm9kZTtiaChhLGIpO2g9Yi5tZW1vaXplZFByb3BzO2w9Yi50eXBlPT09Yi5lbGVtZW50VHlwZT9oOkxnKGIudHlwZSxoKTtnLnByb3BzPWw7cT1iLnBlbmRpbmdQcm9wcztyPWcuY29udGV4dDtrPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09az9rPVZnKGspOihrPVpmKGMpP1hmOkguY3VycmVudCxrPVlmKGIsaykpO3ZhciB5PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB5fHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFxuXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09cXx8ciE9PWspJiZxaChiLGcsZCxrKTskZz0hMTtyPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7dmFyIG49Yi5tZW1vaXplZFN0YXRlO2ghPT1xfHxyIT09bnx8V2YuY3VycmVudHx8JGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiB5JiYoa2goYixjLHksZCksbj1iLm1lbW9pemVkU3RhdGUpLChsPSRnfHxvaChiLGMsbCxkLHIsbixrKXx8ITEpPyhtfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLG4sayksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlxuZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShkLG4saykpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZSYmKGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MTAyNCkpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1uKSxnLnByb3BzPWQsZy5zdGF0ZT1uLGcuY29udGV4dD1rLGQ9bCk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PVxuYS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxkPSExKX1yZXR1cm4ga2ooYSxiLGMsZCxmLGUpfVxuZnVuY3Rpb24ga2ooYSxiLGMsZCxlLGYpe2hqKGEsYik7dmFyIGc9MCE9PShiLmZsYWdzJjEyOCk7aWYoIWQmJiFnKXJldHVybiBlJiZkZyhiLGMsITEpLCRpKGEsYixmKTtkPWIuc3RhdGVOb2RlO1hpLmN1cnJlbnQ9Yjt2YXIgaD1nJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpkLnJlbmRlcigpO2IuZmxhZ3N8PTE7bnVsbCE9PWEmJmc/KGIuY2hpbGQ9QmgoYixhLmNoaWxkLG51bGwsZiksYi5jaGlsZD1CaChiLG51bGwsaCxmKSk6WWkoYSxiLGgsZik7Yi5tZW1vaXplZFN0YXRlPWQuc3RhdGU7ZSYmZGcoYixjLCEwKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBsaihhKXt2YXIgYj1hLnN0YXRlTm9kZTtiLnBlbmRpbmdDb250ZXh0P2FnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJmFnKGEsYi5jb250ZXh0LCExKTtJaChhLGIuY29udGFpbmVySW5mbyl9XG5mdW5jdGlvbiBtaihhLGIsYyxkLGUpe0lnKCk7SmcoZSk7Yi5mbGFnc3w9MjU2O1lpKGEsYixjLGQpO3JldHVybiBiLmNoaWxkfXZhciBuaj17ZGVoeWRyYXRlZDpudWxsLHRyZWVDb250ZXh0Om51bGwscmV0cnlMYW5lOjB9O2Z1bmN0aW9uIG9qKGEpe3JldHVybntiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfX1cbmZ1bmN0aW9uIHBqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPU0uY3VycmVudCxmPSExLGc9MCE9PShiLmZsYWdzJjEyOCksaDsoaD1nKXx8KGg9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU/ITE6MCE9PShlJjIpKTtpZihoKWY9ITAsYi5mbGFncyY9LTEyOTtlbHNlIGlmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlKWV8PTE7RyhNLGUmMSk7aWYobnVsbD09PWEpe0VnKGIpO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiYoYT1hLmRlaHlkcmF0ZWQsbnVsbCE9PWEpKXJldHVybiAwPT09KGIubW9kZSYxKT9iLmxhbmVzPTE6XCIkIVwiPT09YS5kYXRhP2IubGFuZXM9ODpiLmxhbmVzPTEwNzM3NDE4MjQsbnVsbDtnPWQuY2hpbGRyZW47YT1kLmZhbGxiYWNrO3JldHVybiBmPyhkPWIubW9kZSxmPWIuY2hpbGQsZz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmd9LDA9PT0oZCYxKSYmbnVsbCE9PWY/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPVxuZyk6Zj1xaihnLGQsMCxudWxsKSxhPUFoKGEsZCxjLG51bGwpLGYucmV0dXJuPWIsYS5yZXR1cm49YixmLnNpYmxpbmc9YSxiLmNoaWxkPWYsYi5jaGlsZC5tZW1vaXplZFN0YXRlPW9qKGMpLGIubWVtb2l6ZWRTdGF0ZT1uaixhKTpyaihiLGcpfWU9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lJiYoaD1lLmRlaHlkcmF0ZWQsbnVsbCE9PWgpKXJldHVybiBzaihhLGIsZyxkLGgsZSxjKTtpZihmKXtmPWQuZmFsbGJhY2s7Zz1iLm1vZGU7ZT1hLmNoaWxkO2g9ZS5zaWJsaW5nO3ZhciBrPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn07MD09PShnJjEpJiZiLmNoaWxkIT09ZT8oZD1iLmNoaWxkLGQuY2hpbGRMYW5lcz0wLGQucGVuZGluZ1Byb3BzPWssYi5kZWxldGlvbnM9bnVsbCk6KGQ9d2goZSxrKSxkLnN1YnRyZWVGbGFncz1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCk7bnVsbCE9PWg/Zj13aChoLGYpOihmPUFoKGYsZyxjLG51bGwpLGYuZmxhZ3N8PTIpO2YucmV0dXJuPVxuYjtkLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDtkPWY7Zj1iLmNoaWxkO2c9YS5jaGlsZC5tZW1vaXplZFN0YXRlO2c9bnVsbD09PWc/b2ooYyk6e2Jhc2VMYW5lczpnLmJhc2VMYW5lc3xjLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9O2YubWVtb2l6ZWRTdGF0ZT1nO2YuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmM7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBkfWY9YS5jaGlsZDthPWYuc2libGluZztkPXdoKGYse21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0pOzA9PT0oYi5tb2RlJjEpJiYoZC5sYW5lcz1jKTtkLnJldHVybj1iO2Quc2libGluZz1udWxsO251bGwhPT1hJiYoYz1iLmRlbGV0aW9ucyxudWxsPT09Yz8oYi5kZWxldGlvbnM9W2FdLGIuZmxhZ3N8PTE2KTpjLnB1c2goYSkpO2IuY2hpbGQ9ZDtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gZH1cbmZ1bmN0aW9uIHJqKGEsYil7Yj1xaih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpifSxhLm1vZGUsMCxudWxsKTtiLnJldHVybj1hO3JldHVybiBhLmNoaWxkPWJ9ZnVuY3Rpb24gdGooYSxiLGMsZCl7bnVsbCE9PWQmJkpnKGQpO0JoKGIsYS5jaGlsZCxudWxsLGMpO2E9cmooYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbik7YS5mbGFnc3w9MjtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYX1cbmZ1bmN0aW9uIHNqKGEsYixjLGQsZSxmLGcpe2lmKGMpe2lmKGIuZmxhZ3MmMjU2KXJldHVybiBiLmZsYWdzJj0tMjU3LGQ9TGkoRXJyb3IocCg0MjIpKSksdGooYSxiLGcsZCk7aWYobnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gYi5jaGlsZD1hLmNoaWxkLGIuZmxhZ3N8PTEyOCxudWxsO2Y9ZC5mYWxsYmFjaztlPWIubW9kZTtkPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59LGUsMCxudWxsKTtmPUFoKGYsZSxnLG51bGwpO2YuZmxhZ3N8PTI7ZC5yZXR1cm49YjtmLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDswIT09KGIubW9kZSYxKSYmQmgoYixhLmNoaWxkLG51bGwsZyk7Yi5jaGlsZC5tZW1vaXplZFN0YXRlPW9qKGcpO2IubWVtb2l6ZWRTdGF0ZT1uajtyZXR1cm4gZn1pZigwPT09KGIubW9kZSYxKSlyZXR1cm4gdGooYSxiLGcsbnVsbCk7aWYoXCIkIVwiPT09ZS5kYXRhKXtkPWUubmV4dFNpYmxpbmcmJmUubmV4dFNpYmxpbmcuZGF0YXNldDtcbmlmKGQpdmFyIGg9ZC5kZ3N0O2Q9aDtmPUVycm9yKHAoNDE5KSk7ZD1MaShmLGQsdm9pZCAwKTtyZXR1cm4gdGooYSxiLGcsZCl9aD0wIT09KGcmYS5jaGlsZExhbmVzKTtpZihVZ3x8aCl7ZD1SO2lmKG51bGwhPT1kKXtzd2l0Y2goZyYtZyl7Y2FzZSA0OmU9MjticmVhaztjYXNlIDE2OmU9ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6ZT0zMjticmVhaztjYXNlIDUzNjg3MDkxMjplPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0OmU9MH1lPTAhPT0oZSYoZC5zdXNwZW5kZWRMYW5lc3xnKSk/MDplO1xuMCE9PWUmJmUhPT1mLnJldHJ5TGFuZSYmKGYucmV0cnlMYW5lPWUsWmcoYSxlKSxtaChkLGEsZSwtMSkpfXVqKCk7ZD1MaShFcnJvcihwKDQyMSkpKTtyZXR1cm4gdGooYSxiLGcsZCl9aWYoXCIkP1wiPT09ZS5kYXRhKXJldHVybiBiLmZsYWdzfD0xMjgsYi5jaGlsZD1hLmNoaWxkLGI9dmouYmluZChudWxsLGEpLGUuX3JlYWN0UmV0cnk9YixudWxsO2E9Zi50cmVlQ29udGV4dDt5Zz1MZihlLm5leHRTaWJsaW5nKTt4Zz1iO0k9ITA7emc9bnVsbDtudWxsIT09YSYmKG9nW3BnKytdPXJnLG9nW3BnKytdPXNnLG9nW3BnKytdPXFnLHJnPWEuaWQsc2c9YS5vdmVyZmxvdyxxZz1iKTtiPXJqKGIsZC5jaGlsZHJlbik7Yi5mbGFnc3w9NDA5NjtyZXR1cm4gYn1mdW5jdGlvbiB3aihhLGIsYyl7YS5sYW5lc3w9Yjt2YXIgZD1hLmFsdGVybmF0ZTtudWxsIT09ZCYmKGQubGFuZXN8PWIpO1NnKGEucmV0dXJuLGIsYyl9XG5mdW5jdGlvbiB4aihhLGIsYyxkLGUpe3ZhciBmPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09Zj9hLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOmIscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpkLHRhaWw6Yyx0YWlsTW9kZTplfTooZi5pc0JhY2t3YXJkcz1iLGYucmVuZGVyaW5nPW51bGwsZi5yZW5kZXJpbmdTdGFydFRpbWU9MCxmLmxhc3Q9ZCxmLnRhaWw9YyxmLnRhaWxNb2RlPWUpfVxuZnVuY3Rpb24geWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5yZXZlYWxPcmRlcixmPWQudGFpbDtZaShhLGIsZC5jaGlsZHJlbixjKTtkPU0uY3VycmVudDtpZigwIT09KGQmMikpZD1kJjF8MixiLmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZ3aihhLGMsYik7ZWxzZSBpZigxOT09PWEudGFnKXdqKGEsYyxiKTtlbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1iKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfWQmPTF9RyhNLGQpO2lmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT1cbm51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWE9Yy5hbHRlcm5hdGUsbnVsbCE9PWEmJm51bGw9PT1NaChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO3hqKGIsITEsZSxjLGYpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXthPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1hJiZudWxsPT09TWgoYSkpe2IuY2hpbGQ9ZTticmVha31hPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1hfXhqKGIsITAsYyxudWxsLGYpO2JyZWFrO2Nhc2UgXCJ0b2dldGhlclwiOnhqKGIsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDpiLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGpqKGEsYil7MD09PShiLm1vZGUmMSkmJm51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT1udWxsLGIuZmxhZ3N8PTIpfWZ1bmN0aW9uICRpKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtoaHw9Yi5sYW5lcztpZigwPT09KGMmYi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IocCgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9d2goYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPXdoKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiB6aihhLGIsYyl7c3dpdGNoKGIudGFnKXtjYXNlIDM6bGooYik7SWcoKTticmVhaztjYXNlIDU6S2goYik7YnJlYWs7Y2FzZSAxOlpmKGIudHlwZSkmJmNnKGIpO2JyZWFrO2Nhc2UgNDpJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIGQ9Yi50eXBlLl9jb250ZXh0LGU9Yi5tZW1vaXplZFByb3BzLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZTticmVhaztjYXNlIDEzOmQ9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kKXtpZihudWxsIT09ZC5kZWh5ZHJhdGVkKXJldHVybiBHKE0sTS5jdXJyZW50JjEpLGIuZmxhZ3N8PTEyOCxudWxsO2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBwaihhLGIsYyk7RyhNLE0uY3VycmVudCYxKTthPSRpKGEsYixjKTtyZXR1cm4gbnVsbCE9PWE/YS5zaWJsaW5nOm51bGx9RyhNLE0uY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJlxuYi5jaGlsZExhbmVzKTtpZigwIT09KGEuZmxhZ3MmMTI4KSl7aWYoZClyZXR1cm4geWooYSxiLGMpO2IuZmxhZ3N8PTEyOH1lPWIubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGUucmVuZGVyaW5nPW51bGwsZS50YWlsPW51bGwsZS5sYXN0RWZmZWN0PW51bGwpO0coTSxNLmN1cnJlbnQpO2lmKGQpYnJlYWs7ZWxzZSByZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGIubGFuZXM9MCxlaihhLGIsYyl9cmV0dXJuICRpKGEsYixjKX12YXIgQWosQmosQ2osRGo7XG5Baj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07Qmo9ZnVuY3Rpb24oKXt9O1xuQ2o9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5tZW1vaXplZFByb3BzO2lmKGUhPT1kKXthPWIuc3RhdGVOb2RlO0hoKEVoLmN1cnJlbnQpO3ZhciBmPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmU9WWEoYSxlKTtkPVlhKGEsZCk7Zj1bXTticmVhaztjYXNlIFwic2VsZWN0XCI6ZT1BKHt9LGUse3ZhbHVlOnZvaWQgMH0pO2Q9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtmPVtdO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmU9Z2IoYSxlKTtkPWdiKGEsZCk7Zj1bXTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLm9uQ2xpY2smJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXViKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGUpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmUuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWVbbF0paWYoXCJzdHlsZVwiPT09bCl7dmFyIGg9ZVtsXTtmb3IoZyBpbiBoKWguaGFzT3duUHJvcGVydHkoZykmJlxuKGN8fChjPXt9KSxjW2ddPVwiXCIpfWVsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sJiZcImNoaWxkcmVuXCIhPT1sJiZcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJlwiYXV0b0ZvY3VzXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/Znx8KGY9W10pOihmPWZ8fFtdKS5wdXNoKGwsbnVsbCkpO2ZvcihsIGluIGQpe3ZhciBrPWRbbF07aD1udWxsIT1lP2VbbF06dm9pZCAwO2lmKGQuaGFzT3duUHJvcGVydHkobCkmJmshPT1oJiYobnVsbCE9a3x8bnVsbCE9aCkpaWYoXCJzdHlsZVwiPT09bClpZihoKXtmb3IoZyBpbiBoKSFoLmhhc093blByb3BlcnR5KGcpfHxrJiZrLmhhc093blByb3BlcnR5KGcpfHwoY3x8KGM9e30pLGNbZ109XCJcIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGZ8fChmPVtdKSxmLnB1c2gobCxcbmMpKSxjPWs7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWw/KGs9az9rLl9faHRtbDp2b2lkIDAsaD1oP2guX19odG1sOnZvaWQgMCxudWxsIT1rJiZoIT09ayYmKGY9Znx8W10pLnB1c2gobCxrKSk6XCJjaGlsZHJlblwiPT09bD9cInN0cmluZ1wiIT09dHlwZW9mIGsmJlwibnVtYmVyXCIhPT10eXBlb2Yga3x8KGY9Znx8W10pLnB1c2gobCxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpPyhudWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1sJiZEKFwic2Nyb2xsXCIsYSksZnx8aD09PWt8fChmPVtdKSk6KGY9Znx8W10pLnB1c2gobCxrKSl9YyYmKGY9Znx8W10pLnB1c2goXCJzdHlsZVwiLGMpO3ZhciBsPWY7aWYoYi51cGRhdGVRdWV1ZT1sKWIuZmxhZ3N8PTR9fTtEaj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmKGIuZmxhZ3N8PTQpfTtcbmZ1bmN0aW9uIEVqKGEsYil7aWYoIUkpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgXCJoaWRkZW5cIjpiPWEudGFpbDtmb3IodmFyIGM9bnVsbDtudWxsIT09YjspbnVsbCE9PWIuYWx0ZXJuYXRlJiYoYz1iKSxiPWIuc2libGluZztudWxsPT09Yz9hLnRhaWw9bnVsbDpjLnNpYmxpbmc9bnVsbDticmVhaztjYXNlIFwiY29sbGFwc2VkXCI6Yz1hLnRhaWw7Zm9yKHZhciBkPW51bGw7bnVsbCE9PWM7KW51bGwhPT1jLmFsdGVybmF0ZSYmKGQ9YyksYz1jLnNpYmxpbmc7bnVsbD09PWQ/Ynx8bnVsbD09PWEudGFpbD9hLnRhaWw9bnVsbDphLnRhaWwuc2libGluZz1udWxsOmQuc2libGluZz1udWxsfX1cbmZ1bmN0aW9uIFMoYSl7dmFyIGI9bnVsbCE9PWEuYWx0ZXJuYXRlJiZhLmFsdGVybmF0ZS5jaGlsZD09PWEuY2hpbGQsYz0wLGQ9MDtpZihiKWZvcih2YXIgZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCxkfD1lLmZsYWdzJjE0NjgwMDY0LGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7ZWxzZSBmb3IoZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyxkfD1lLmZsYWdzLGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7YS5zdWJ0cmVlRmxhZ3N8PWQ7YS5jaGlsZExhbmVzPWM7cmV0dXJuIGJ9XG5mdW5jdGlvbiBGaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHM7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDI6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gUyhiKSxudWxsO2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAzOmQ9Yi5zdGF0ZU5vZGU7SmgoKTtFKFdmKTtFKEgpO09oKCk7ZC5wZW5kaW5nQ29udGV4dCYmKGQuY29udGV4dD1kLnBlbmRpbmdDb250ZXh0LGQucGVuZGluZ0NvbnRleHQ9bnVsbCk7aWYobnVsbD09PWF8fG51bGw9PT1hLmNoaWxkKUdnKGIpP2IuZmxhZ3N8PTQ6bnVsbD09PWF8fGEubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PT0oYi5mbGFncyYyNTYpfHwoYi5mbGFnc3w9MTAyNCxudWxsIT09emcmJihHaih6Zyksemc9bnVsbCkpO0JqKGEsYik7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDU6TGgoYik7dmFyIGU9SGgoR2guY3VycmVudCk7XG5jPWIudHlwZTtpZihudWxsIT09YSYmbnVsbCE9Yi5zdGF0ZU5vZGUpQ2ooYSxiLGMsZCxlKSxhLnJlZiE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO1MoYik7cmV0dXJuIG51bGx9YT1IaChFaC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIudHlwZTt2YXIgZj1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtkW1BmXT1mO2E9MCE9PShiLm1vZGUmMSk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsZCk7RChcImNsb3NlXCIsZCk7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sZCk7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGQpO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuZCk7RChcImxvYWRcIixkKTticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixkKTticmVhaztjYXNlIFwiaW5wdXRcIjpaYShkLGYpO0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmQuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFmLm11bHRpcGxlfTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGQsZiksRChcImludmFsaWRcIixkKX11YihjLGYpO2U9bnVsbDtmb3IodmFyIGcgaW4gZilpZihmLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1mW2ddO1wiY2hpbGRyZW5cIj09PWc/XCJzdHJpbmdcIj09PXR5cGVvZiBoP2QudGV4dENvbnRlbnQhPT1oJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxoLGEpLGU9W1wiY2hpbGRyZW5cIixoXSk6XCJudW1iZXJcIj09PXR5cGVvZiBoJiZkLnRleHRDb250ZW50IT09XCJcIitoJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxcbmgsYSksZT1bXCJjaGlsZHJlblwiLFwiXCIraF0pOmVhLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1oJiZcIm9uU2Nyb2xsXCI9PT1nJiZEKFwic2Nyb2xsXCIsZCl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGQpO2RiKGQsZiwhMCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoZCk7amIoZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9QmYpfWQ9ZTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hJiYoYT1rYihjKSk7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP1wic2NyaXB0XCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudChcImRpdlwiKSxhLmlubmVySFRNTD1cIjxzY3JpcHQ+XFx4M2Mvc2NyaXB0PlwiLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpKTpcblwic3RyaW5nXCI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLFwic2VsZWN0XCI9PT1jJiYoZz1hLGQubXVsdGlwbGU/Zy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW09mXT1iO2FbUGZdPWQ7QWooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2E6e2c9dmIoYyxkKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixhKTtEKFwiY2xvc2VcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGEpO2U9ZDticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuYSk7RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGEsZCk7ZT1ZYShhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOmU9ZDticmVhaztjYXNlIFwic2VsZWN0XCI6YS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWQubXVsdGlwbGV9O2U9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGEsZCk7ZT1nYihhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7ZGVmYXVsdDplPWR9dWIoYyxlKTtoPWU7Zm9yKGYgaW4gaClpZihoLmhhc093blByb3BlcnR5KGYpKXt2YXIgaz1oW2ZdO1wic3R5bGVcIj09PWY/c2IoYSxrKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1mPyhrPWs/ay5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJm5iKGEsaykpOlwiY2hpbGRyZW5cIj09PWY/XCJzdHJpbmdcIj09PXR5cGVvZiBrPyhcInRleHRhcmVhXCIhPT1cbmN8fFwiXCIhPT1rKSYmb2IoYSxrKTpcIm51bWJlclwiPT09dHlwZW9mIGsmJm9iKGEsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09ZiYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWYmJlwiYXV0b0ZvY3VzXCIhPT1mJiYoZWEuaGFzT3duUHJvcGVydHkoZik/bnVsbCE9ayYmXCJvblNjcm9sbFwiPT09ZiYmRChcInNjcm9sbFwiLGEpOm51bGwhPWsmJnRhKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoYSk7ZGIoYSxkLCExKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShhKTtqYihhKTticmVhaztjYXNlIFwib3B0aW9uXCI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrU2EoZC52YWx1ZSkpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9mYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmZmIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsXG4hMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX1zd2l0Y2goYyl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjpkPSEhZC5hdXRvRm9jdXM7YnJlYWsgYTtjYXNlIFwiaW1nXCI6ZD0hMDticmVhayBhO2RlZmF1bHQ6ZD0hMX19ZCYmKGIuZmxhZ3N8PTQpfW51bGwhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKX1TKGIpO3JldHVybiBudWxsO2Nhc2UgNjppZihhJiZudWxsIT1iLnN0YXRlTm9kZSlEaihhLGIsYS5tZW1vaXplZFByb3BzLGQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtjPUhoKEdoLmN1cnJlbnQpO0hoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7aWYoZj1kLm5vZGVWYWx1ZSE9PWMpaWYoYT1cbnhnLG51bGwhPT1hKXN3aXRjaChhLnRhZyl7Y2FzZSAzOkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpO2JyZWFrO2Nhc2UgNTohMCE9PWEubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpfWYmJihiLmZsYWdzfD00KX1lbHNlIGQ9KDk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShkKSxkW09mXT1iLGIuc3RhdGVOb2RlPWR9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDEzOkUoTSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYoSSYmbnVsbCE9PXlnJiYwIT09KGIubW9kZSYxKSYmMD09PShiLmZsYWdzJjEyOCkpSGcoKSxJZygpLGIuZmxhZ3N8PTk4NTYwLGY9ITE7ZWxzZSBpZihmPUdnKGIpLG51bGwhPT1kJiZudWxsIT09ZC5kZWh5ZHJhdGVkKXtpZihudWxsPT09XG5hKXtpZighZil0aHJvdyBFcnJvcihwKDMxOCkpO2Y9Yi5tZW1vaXplZFN0YXRlO2Y9bnVsbCE9PWY/Zi5kZWh5ZHJhdGVkOm51bGw7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTcpKTtmW09mXT1ifWVsc2UgSWcoKSwwPT09KGIuZmxhZ3MmMTI4KSYmKGIubWVtb2l6ZWRTdGF0ZT1udWxsKSxiLmZsYWdzfD00O1MoYik7Zj0hMX1lbHNlIG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSxmPSEwO2lmKCFmKXJldHVybiBiLmZsYWdzJjY1NTM2P2I6bnVsbH1pZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtkIT09KG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlKSYmZCYmKGIuY2hpbGQuZmxhZ3N8PTgxOTIsMCE9PShiLm1vZGUmMSkmJihudWxsPT09YXx8MCE9PShNLmN1cnJlbnQmMSk/MD09PVQmJihUPTMpOnVqKCkpKTtudWxsIT09Yi51cGRhdGVRdWV1ZSYmKGIuZmxhZ3N8PTQpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLFxuQmooYSxiKSxudWxsPT09YSYmc2YoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksUyhiKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFJnKGIudHlwZS5fY29udGV4dCksUyhiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMTk6RShNKTtmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09ZilyZXR1cm4gUyhiKSxudWxsO2Q9MCE9PShiLmZsYWdzJjEyOCk7Zz1mLnJlbmRlcmluZztpZihudWxsPT09ZylpZihkKUVqKGYsITEpO2Vsc2V7aWYoMCE9PVR8fG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7Zz1NaChhKTtpZihudWxsIT09Zyl7Yi5mbGFnc3w9MTI4O0VqKGYsITEpO2Q9Zy51cGRhdGVRdWV1ZTtudWxsIT09ZCYmKGIudXBkYXRlUXVldWU9ZCxiLmZsYWdzfD00KTtiLnN1YnRyZWVGbGFncz0wO2Q9Yztmb3IoYz1iLmNoaWxkO251bGwhPT1jOylmPWMsYT1kLGYuZmxhZ3MmPTE0NjgwMDY2LFxuZz1mLmFsdGVybmF0ZSxudWxsPT09Zz8oZi5jaGlsZExhbmVzPTAsZi5sYW5lcz1hLGYuY2hpbGQ9bnVsbCxmLnN1YnRyZWVGbGFncz0wLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9Zy5sYW5lcyxmLmNoaWxkPWcuY2hpbGQsZi5zdWJ0cmVlRmxhZ3M9MCxmLmRlbGV0aW9ucz1udWxsLGYubWVtb2l6ZWRQcm9wcz1nLm1lbW9pemVkUHJvcHMsZi5tZW1vaXplZFN0YXRlPWcubWVtb2l6ZWRTdGF0ZSxmLnVwZGF0ZVF1ZXVlPWcudXBkYXRlUXVldWUsZi50eXBlPWcudHlwZSxhPWcuZGVwZW5kZW5jaWVzLGYuZGVwZW5kZW5jaWVzPW51bGw9PT1hP251bGw6e2xhbmVzOmEubGFuZXMsZmlyc3RDb250ZXh0OmEuZmlyc3RDb250ZXh0fSksYz1jLnNpYmxpbmc7RyhNLE0uY3VycmVudCYxfDIpO3JldHVybiBiLmNoaWxkfWE9XG5hLnNpYmxpbmd9bnVsbCE9PWYudGFpbCYmQigpPkhqJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRWooZiwhMSksYi5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFkKWlmKGE9TWgoZyksbnVsbCE9PWEpe2lmKGIuZmxhZ3N8PTEyOCxkPSEwLGM9YS51cGRhdGVRdWV1ZSxudWxsIT09YyYmKGIudXBkYXRlUXVldWU9YyxiLmZsYWdzfD00KSxFaihmLCEwKSxudWxsPT09Zi50YWlsJiZcImhpZGRlblwiPT09Zi50YWlsTW9kZSYmIWcuYWx0ZXJuYXRlJiYhSSlyZXR1cm4gUyhiKSxudWxsfWVsc2UgMipCKCktZi5yZW5kZXJpbmdTdGFydFRpbWU+SGomJjEwNzM3NDE4MjQhPT1jJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRWooZiwhMSksYi5sYW5lcz00MTk0MzA0KTtmLmlzQmFja3dhcmRzPyhnLnNpYmxpbmc9Yi5jaGlsZCxiLmNoaWxkPWcpOihjPWYubGFzdCxudWxsIT09Yz9jLnNpYmxpbmc9ZzpiLmNoaWxkPWcsZi5sYXN0PWcpfWlmKG51bGwhPT1mLnRhaWwpcmV0dXJuIGI9Zi50YWlsLGYucmVuZGVyaW5nPVxuYixmLnRhaWw9Yi5zaWJsaW5nLGYucmVuZGVyaW5nU3RhcnRUaW1lPUIoKSxiLnNpYmxpbmc9bnVsbCxjPU0uY3VycmVudCxHKE0sZD9jJjF8MjpjJjEpLGI7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIElqKCksZD1udWxsIT09Yi5tZW1vaXplZFN0YXRlLG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlIT09ZCYmKGIuZmxhZ3N8PTgxOTIpLGQmJjAhPT0oYi5tb2RlJjEpPzAhPT0oZ2omMTA3Mzc0MTgyNCkmJihTKGIpLGIuc3VidHJlZUZsYWdzJjYmJihiLmZsYWdzfD04MTkyKSk6UyhiKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7Y2FzZSAyNTpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO31cbmZ1bmN0aW9uIEpqKGEsYil7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksYT1iLmZsYWdzLGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAzOnJldHVybiBKaCgpLEUoV2YpLEUoSCksT2goKSxhPWIuZmxhZ3MsMCE9PShhJjY1NTM2KSYmMD09PShhJjEyOCk/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSA1OnJldHVybiBMaChiKSxudWxsO2Nhc2UgMTM6RShNKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7aWYobnVsbD09PWIuYWx0ZXJuYXRlKXRocm93IEVycm9yKHAoMzQwKSk7SWcoKX1hPWIuZmxhZ3M7cmV0dXJuIGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAxOTpyZXR1cm4gRShNKSxudWxsO2Nhc2UgNDpyZXR1cm4gSmgoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFJnKGIudHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIElqKCksXG5udWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIEtqPSExLFU9ITEsTGo9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsVj1udWxsO2Z1bmN0aW9uIE1qKGEsYil7dmFyIGM9YS5yZWY7aWYobnVsbCE9PWMpaWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMpdHJ5e2MobnVsbCl9Y2F0Y2goZCl7VyhhLGIsZCl9ZWxzZSBjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBOaihhLGIsYyl7dHJ5e2MoKX1jYXRjaChkKXtXKGEsYixkKX19dmFyIE9qPSExO1xuZnVuY3Rpb24gUGooYSxiKXtDZj1kZDthPU1lKCk7aWYoTmUoYSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGEpdmFyIGM9e3N0YXJ0OmEuc2VsZWN0aW9uU3RhcnQsZW5kOmEuc2VsZWN0aW9uRW5kfTtlbHNlIGE6e2M9KGM9YS5vd25lckRvY3VtZW50KSYmYy5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciBkPWMuZ2V0U2VsZWN0aW9uJiZjLmdldFNlbGVjdGlvbigpO2lmKGQmJjAhPT1kLnJhbmdlQ291bnQpe2M9ZC5hbmNob3JOb2RlO3ZhciBlPWQuYW5jaG9yT2Zmc2V0LGY9ZC5mb2N1c05vZGU7ZD1kLmZvY3VzT2Zmc2V0O3RyeXtjLm5vZGVUeXBlLGYubm9kZVR5cGV9Y2F0Y2goRil7Yz1udWxsO2JyZWFrIGF9dmFyIGc9MCxoPS0xLGs9LTEsbD0wLG09MCxxPWEscj1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIHk7Oyl7cSE9PWN8fDAhPT1lJiYzIT09cS5ub2RlVHlwZXx8KGg9ZytlKTtxIT09Znx8MCE9PWQmJjMhPT1xLm5vZGVUeXBlfHwoaz1nK2QpOzM9PT1xLm5vZGVUeXBlJiYoZys9XG5xLm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oeT1xLmZpcnN0Q2hpbGQpKWJyZWFrO3I9cTtxPXl9Zm9yKDs7KXtpZihxPT09YSlicmVhayBiO3I9PT1jJiYrK2w9PT1lJiYoaD1nKTtyPT09ZiYmKyttPT09ZCYmKGs9Zyk7aWYobnVsbCE9PSh5PXEubmV4dFNpYmxpbmcpKWJyZWFrO3E9cjtyPXEucGFyZW50Tm9kZX1xPXl9Yz0tMT09PWh8fC0xPT09az9udWxsOntzdGFydDpoLGVuZDprfX1lbHNlIGM9bnVsbH1jPWN8fHtzdGFydDowLGVuZDowfX1lbHNlIGM9bnVsbDtEZj17Zm9jdXNlZEVsZW06YSxzZWxlY3Rpb25SYW5nZTpjfTtkZD0hMTtmb3IoVj1iO251bGwhPT1WOylpZihiPVYsYT1iLmNoaWxkLDAhPT0oYi5zdWJ0cmVlRmxhZ3MmMTAyOCkmJm51bGwhPT1hKWEucmV0dXJuPWIsVj1hO2Vsc2UgZm9yKDtudWxsIT09Vjspe2I9Vjt0cnl7dmFyIG49Yi5hbHRlcm5hdGU7aWYoMCE9PShiLmZsYWdzJjEwMjQpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpicmVhaztcbmNhc2UgMTppZihudWxsIT09bil7dmFyIHQ9bi5tZW1vaXplZFByb3BzLEo9bi5tZW1vaXplZFN0YXRlLHg9Yi5zdGF0ZU5vZGUsdz14LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKGIuZWxlbWVudFR5cGU9PT1iLnR5cGU/dDpMZyhiLnR5cGUsdCksSik7eC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT13fWJyZWFrO2Nhc2UgMzp2YXIgdT1iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOzE9PT11Lm5vZGVUeXBlP3UudGV4dENvbnRlbnQ9XCJcIjo5PT09dS5ub2RlVHlwZSYmdS5kb2N1bWVudEVsZW1lbnQmJnUucmVtb3ZlQ2hpbGQodS5kb2N1bWVudEVsZW1lbnQpO2JyZWFrO2Nhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO319Y2F0Y2goRil7VyhiLGIucmV0dXJuLEYpfWE9Yi5zaWJsaW5nO2lmKG51bGwhPT1hKXthLnJldHVybj1iLnJldHVybjtWPWE7YnJlYWt9Vj1iLnJldHVybn1uPU9qO09qPSExO3JldHVybiBufVxuZnVuY3Rpb24gUWooYSxiLGMpe3ZhciBkPWIudXBkYXRlUXVldWU7ZD1udWxsIT09ZD9kLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09ZCl7dmFyIGU9ZD1kLm5leHQ7ZG97aWYoKGUudGFnJmEpPT09YSl7dmFyIGY9ZS5kZXN0cm95O2UuZGVzdHJveT12b2lkIDA7dm9pZCAwIT09ZiYmTmooYixjLGYpfWU9ZS5uZXh0fXdoaWxlKGUhPT1kKX19ZnVuY3Rpb24gUmooYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5jcmVhdGU7Yy5kZXN0cm95PWQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fWZ1bmN0aW9uIFNqKGEpe3ZhciBiPWEucmVmO2lmKG51bGwhPT1iKXt2YXIgYz1hLnN0YXRlTm9kZTtzd2l0Y2goYS50YWcpe2Nhc2UgNTphPWM7YnJlYWs7ZGVmYXVsdDphPWN9XCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpiLmN1cnJlbnQ9YX19XG5mdW5jdGlvbiBUaihhKXt2YXIgYj1hLmFsdGVybmF0ZTtudWxsIT09YiYmKGEuYWx0ZXJuYXRlPW51bGwsVGooYikpO2EuY2hpbGQ9bnVsbDthLmRlbGV0aW9ucz1udWxsO2Euc2libGluZz1udWxsOzU9PT1hLnRhZyYmKGI9YS5zdGF0ZU5vZGUsbnVsbCE9PWImJihkZWxldGUgYltPZl0sZGVsZXRlIGJbUGZdLGRlbGV0ZSBiW29mXSxkZWxldGUgYltRZl0sZGVsZXRlIGJbUmZdKSk7YS5zdGF0ZU5vZGU9bnVsbDthLnJldHVybj1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5tZW1vaXplZFByb3BzPW51bGw7YS5tZW1vaXplZFN0YXRlPW51bGw7YS5wZW5kaW5nUHJvcHM9bnVsbDthLnN0YXRlTm9kZT1udWxsO2EudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBVaihhKXtyZXR1cm4gNT09PWEudGFnfHwzPT09YS50YWd8fDQ9PT1hLnRhZ31cbmZ1bmN0aW9uIFZqKGEpe2E6Zm9yKDs7KXtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fFVqKGEucmV0dXJuKSlyZXR1cm4gbnVsbDthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47Zm9yKGE9YS5zaWJsaW5nOzUhPT1hLnRhZyYmNiE9PWEudGFnJiYxOCE9PWEudGFnOyl7aWYoYS5mbGFncyYyKWNvbnRpbnVlIGE7aWYobnVsbD09PWEuY2hpbGR8fDQ9PT1hLnRhZyljb250aW51ZSBhO2Vsc2UgYS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGR9aWYoIShhLmZsYWdzJjIpKXJldHVybiBhLnN0YXRlTm9kZX19XG5mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj84PT09Yy5ub2RlVHlwZT9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yy5pbnNlcnRCZWZvcmUoYSxiKTooOD09PWMubm9kZVR5cGU/KGI9Yy5wYXJlbnROb2RlLGIuaW5zZXJ0QmVmb3JlKGEsYykpOihiPWMsYi5hcHBlbmRDaGlsZChhKSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsbnVsbCE9PWMmJnZvaWQgMCE9PWN8fG51bGwhPT1iLm9uY2xpY2t8fChiLm9uY2xpY2s9QmYpKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoV2ooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylXaihhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBYaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj9jLmluc2VydEJlZm9yZShhLGIpOmMuYXBwZW5kQ2hpbGQoYSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFhqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspWGooYSxiLGMpLGE9YS5zaWJsaW5nfXZhciBYPW51bGwsWWo9ITE7ZnVuY3Rpb24gWmooYSxiLGMpe2ZvcihjPWMuY2hpbGQ7bnVsbCE9PWM7KWFrKGEsYixjKSxjPWMuc2libGluZ31cbmZ1bmN0aW9uIGFrKGEsYixjKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtsYy5vbkNvbW1pdEZpYmVyVW5tb3VudChrYyxjKX1jYXRjaChoKXt9c3dpdGNoKGMudGFnKXtjYXNlIDU6VXx8TWooYyxiKTtjYXNlIDY6dmFyIGQ9WCxlPVlqO1g9bnVsbDtaaihhLGIsYyk7WD1kO1lqPWU7bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpOmEucmVtb3ZlQ2hpbGQoYykpOlgucmVtb3ZlQ2hpbGQoYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4Om51bGwhPT1YJiYoWWo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP0tmKGEucGFyZW50Tm9kZSxjKToxPT09YS5ub2RlVHlwZSYmS2YoYSxjKSxiZChhKSk6S2YoWCxjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpkPVg7ZT1ZajtYPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7XG5aaihhLGIsYyk7WD1kO1lqPWU7YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFVJiYoZD1jLnVwZGF0ZVF1ZXVlLG51bGwhPT1kJiYoZD1kLmxhc3RFZmZlY3QsbnVsbCE9PWQpKSl7ZT1kPWQubmV4dDtkb3t2YXIgZj1lLGc9Zi5kZXN0cm95O2Y9Zi50YWc7dm9pZCAwIT09ZyYmKDAhPT0oZiYyKT9OaihjLGIsZyk6MCE9PShmJjQpJiZOaihjLGIsZykpO2U9ZS5uZXh0fXdoaWxlKGUhPT1kKX1aaihhLGIsYyk7YnJlYWs7Y2FzZSAxOmlmKCFVJiYoTWooYyxiKSxkPWMuc3RhdGVOb2RlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudFdpbGxVbm1vdW50KSl0cnl7ZC5wcm9wcz1jLm1lbW9pemVkUHJvcHMsZC5zdGF0ZT1jLm1lbW9pemVkU3RhdGUsZC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGgpe1coYyxiLGgpfVpqKGEsYixjKTticmVhaztjYXNlIDIxOlpqKGEsYixjKTticmVhaztjYXNlIDIyOmMubW9kZSYxPyhVPShkPVUpfHxudWxsIT09XG5jLm1lbW9pemVkU3RhdGUsWmooYSxiLGMpLFU9ZCk6WmooYSxiLGMpO2JyZWFrO2RlZmF1bHQ6WmooYSxiLGMpfX1mdW5jdGlvbiBiayhhKXt2YXIgYj1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbD09PWMmJihjPWEuc3RhdGVOb2RlPW5ldyBMaik7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWNrLmJpbmQobnVsbCxhLGIpO2MuaGFzKGIpfHwoYy5hZGQoYiksYi50aGVuKGQsZCkpfSl9fVxuZnVuY3Rpb24gZGsoYSxiKXt2YXIgYz1iLmRlbGV0aW9ucztpZihudWxsIT09Yylmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTt0cnl7dmFyIGY9YSxnPWIsaD1nO2E6Zm9yKDtudWxsIT09aDspe3N3aXRjaChoLnRhZyl7Y2FzZSA1Olg9aC5zdGF0ZU5vZGU7WWo9ITE7YnJlYWsgYTtjYXNlIDM6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGE7Y2FzZSA0Olg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDticmVhayBhfWg9aC5yZXR1cm59aWYobnVsbD09PVgpdGhyb3cgRXJyb3IocCgxNjApKTthayhmLGcsZSk7WD1udWxsO1lqPSExO3ZhciBrPWUuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5yZXR1cm49bnVsbCk7ZS5yZXR1cm49bnVsbH1jYXRjaChsKXtXKGUsYixsKX19aWYoYi5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKGI9Yi5jaGlsZDtudWxsIT09YjspZWsoYixhKSxiPWIuc2libGluZ31cbmZ1bmN0aW9uIGVrKGEsYil7dmFyIGM9YS5hbHRlcm5hdGUsZD1hLmZsYWdzO3N3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXt0cnl7UWooMyxhLGEucmV0dXJuKSxSaigzLGEpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX10cnl7UWooNSxhLGEucmV0dXJuKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMTpkayhiLGEpO2ZrKGEpO2QmNTEyJiZudWxsIT09YyYmTWooYyxjLnJldHVybik7YnJlYWs7Y2FzZSA1OmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTtpZihhLmZsYWdzJjMyKXt2YXIgZT1hLnN0YXRlTm9kZTt0cnl7b2IoZSxcIlwiKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWlmKGQmNCYmKGU9YS5zdGF0ZU5vZGUsbnVsbCE9ZSkpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcyxnPW51bGwhPT1jP2MubWVtb2l6ZWRQcm9wczpmLGg9YS50eXBlLGs9YS51cGRhdGVRdWV1ZTtcbmEudXBkYXRlUXVldWU9bnVsbDtpZihudWxsIT09ayl0cnl7XCJpbnB1dFwiPT09aCYmXCJyYWRpb1wiPT09Zi50eXBlJiZudWxsIT1mLm5hbWUmJmFiKGUsZik7dmIoaCxnKTt2YXIgbD12YihoLGYpO2ZvcihnPTA7ZzxrLmxlbmd0aDtnKz0yKXt2YXIgbT1rW2ddLHE9a1tnKzFdO1wic3R5bGVcIj09PW0/c2IoZSxxKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1tP25iKGUscSk6XCJjaGlsZHJlblwiPT09bT9vYihlLHEpOnRhKGUsbSxxLGwpfXN3aXRjaChoKXtjYXNlIFwiaW5wdXRcIjpiYihlLGYpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGUsZik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOnZhciByPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFmLm11bHRpcGxlO3ZhciB5PWYudmFsdWU7bnVsbCE9eT9mYihlLCEhZi5tdWx0aXBsZSx5LCExKTpyIT09ISFmLm11bHRpcGxlJiYobnVsbCE9Zi5kZWZhdWx0VmFsdWU/ZmIoZSwhIWYubXVsdGlwbGUsXG5mLmRlZmF1bHRWYWx1ZSwhMCk6ZmIoZSwhIWYubXVsdGlwbGUsZi5tdWx0aXBsZT9bXTpcIlwiLCExKSl9ZVtQZl09Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgNjpkayhiLGEpO2ZrKGEpO2lmKGQmNCl7aWYobnVsbD09PWEuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTYyKSk7ZT1hLnN0YXRlTm9kZTtmPWEubWVtb2l6ZWRQcm9wczt0cnl7ZS5ub2RlVmFsdWU9Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzpkayhiLGEpO2ZrKGEpO2lmKGQmNCYmbnVsbCE9PWMmJmMubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e2JkKGIuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfWJyZWFrO2Nhc2UgNDpkayhiLGEpO2ZrKGEpO2JyZWFrO2Nhc2UgMTM6ZGsoYixhKTtmayhhKTtlPWEuY2hpbGQ7ZS5mbGFncyY4MTkyJiYoZj1udWxsIT09ZS5tZW1vaXplZFN0YXRlLGUuc3RhdGVOb2RlLmlzSGlkZGVuPWYsIWZ8fFxubnVsbCE9PWUuYWx0ZXJuYXRlJiZudWxsIT09ZS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZXx8KGdrPUIoKSkpO2QmNCYmYmsoYSk7YnJlYWs7Y2FzZSAyMjptPW51bGwhPT1jJiZudWxsIT09Yy5tZW1vaXplZFN0YXRlO2EubW9kZSYxPyhVPShsPVUpfHxtLGRrKGIsYSksVT1sKTpkayhiLGEpO2ZrKGEpO2lmKGQmODE5Mil7bD1udWxsIT09YS5tZW1vaXplZFN0YXRlO2lmKChhLnN0YXRlTm9kZS5pc0hpZGRlbj1sKSYmIW0mJjAhPT0oYS5tb2RlJjEpKWZvcihWPWEsbT1hLmNoaWxkO251bGwhPT1tOyl7Zm9yKHE9Vj1tO251bGwhPT1WOyl7cj1WO3k9ci5jaGlsZDtzd2l0Y2goci50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpRaig0LHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpNaihyLHIucmV0dXJuKTt2YXIgbj1yLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbi5jb21wb25lbnRXaWxsVW5tb3VudCl7ZD1yO2M9ci5yZXR1cm47dHJ5e2I9ZCxuLnByb3BzPVxuYi5tZW1vaXplZFByb3BzLG4uc3RhdGU9Yi5tZW1vaXplZFN0YXRlLG4uY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh0KXtXKGQsYyx0KX19YnJlYWs7Y2FzZSA1Ok1qKHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMjI6aWYobnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSl7aGsocSk7Y29udGludWV9fW51bGwhPT15Pyh5LnJldHVybj1yLFY9eSk6aGsocSl9bT1tLnNpYmxpbmd9YTpmb3IobT1udWxsLHE9YTs7KXtpZig1PT09cS50YWcpe2lmKG51bGw9PT1tKXttPXE7dHJ5e2U9cS5zdGF0ZU5vZGUsbD8oZj1lLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooaD1xLnN0YXRlTm9kZSxrPXEubWVtb2l6ZWRQcm9wcy5zdHlsZSxnPXZvaWQgMCE9PWsmJm51bGwhPT1rJiZrLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9rLmRpc3BsYXk6bnVsbCxoLnN0eWxlLmRpc3BsYXk9XG5yYihcImRpc3BsYXlcIixnKSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX19ZWxzZSBpZig2PT09cS50YWcpe2lmKG51bGw9PT1tKXRyeXtxLnN0YXRlTm9kZS5ub2RlVmFsdWU9bD9cIlwiOnEubWVtb2l6ZWRQcm9wc31jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWVsc2UgaWYoKDIyIT09cS50YWcmJjIzIT09cS50YWd8fG51bGw9PT1xLm1lbW9pemVkU3RhdGV8fHE9PT1hKSYmbnVsbCE9PXEuY2hpbGQpe3EuY2hpbGQucmV0dXJuPXE7cT1xLmNoaWxkO2NvbnRpbnVlfWlmKHE9PT1hKWJyZWFrIGE7Zm9yKDtudWxsPT09cS5zaWJsaW5nOyl7aWYobnVsbD09PXEucmV0dXJufHxxLnJldHVybj09PWEpYnJlYWsgYTttPT09cSYmKG09bnVsbCk7cT1xLnJldHVybn1tPT09cSYmKG09bnVsbCk7cS5zaWJsaW5nLnJldHVybj1xLnJldHVybjtxPXEuc2libGluZ319YnJlYWs7Y2FzZSAxOTpkayhiLGEpO2ZrKGEpO2QmNCYmYmsoYSk7YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OmRrKGIsXG5hKSxmayhhKX19ZnVuY3Rpb24gZmsoYSl7dmFyIGI9YS5mbGFncztpZihiJjIpe3RyeXthOntmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZihVaihjKSl7dmFyIGQ9YzticmVhayBhfWM9Yy5yZXR1cm59dGhyb3cgRXJyb3IocCgxNjApKTt9c3dpdGNoKGQudGFnKXtjYXNlIDU6dmFyIGU9ZC5zdGF0ZU5vZGU7ZC5mbGFncyYzMiYmKG9iKGUsXCJcIiksZC5mbGFncyY9LTMzKTt2YXIgZj1WaihhKTtYaihhLGYsZSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgZz1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGg9VmooYSk7V2ooYSxoLGcpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjEpKTt9fWNhdGNoKGspe1coYSxhLnJldHVybixrKX1hLmZsYWdzJj0tM31iJjQwOTYmJihhLmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gaWsoYSxiLGMpe1Y9YTtqayhhLGIsYyl9XG5mdW5jdGlvbiBqayhhLGIsYyl7Zm9yKHZhciBkPTAhPT0oYS5tb2RlJjEpO251bGwhPT1WOyl7dmFyIGU9VixmPWUuY2hpbGQ7aWYoMjI9PT1lLnRhZyYmZCl7dmFyIGc9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZXx8S2o7aWYoIWcpe3ZhciBoPWUuYWx0ZXJuYXRlLGs9bnVsbCE9PWgmJm51bGwhPT1oLm1lbW9pemVkU3RhdGV8fFU7aD1Lajt2YXIgbD1VO0tqPWc7aWYoKFU9aykmJiFsKWZvcihWPWU7bnVsbCE9PVY7KWc9VixrPWcuY2hpbGQsMjI9PT1nLnRhZyYmbnVsbCE9PWcubWVtb2l6ZWRTdGF0ZT9rayhlKTpudWxsIT09az8oay5yZXR1cm49ZyxWPWspOmtrKGUpO2Zvcig7bnVsbCE9PWY7KVY9ZixqayhmLGIsYyksZj1mLnNpYmxpbmc7Vj1lO0tqPWg7VT1sfWxrKGEsYixjKX1lbHNlIDAhPT0oZS5zdWJ0cmVlRmxhZ3MmODc3MikmJm51bGwhPT1mPyhmLnJldHVybj1lLFY9Zik6bGsoYSxiLGMpfX1cbmZ1bmN0aW9uIGxrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKDAhPT0oYi5mbGFncyY4NzcyKSl7dmFyIGM9Yi5hbHRlcm5hdGU7dHJ5e2lmKDAhPT0oYi5mbGFncyY4NzcyKSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6VXx8UmooNSxiKTticmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoYi5mbGFncyY0JiYhVSlpZihudWxsPT09YylkLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgZT1iLmVsZW1lbnRUeXBlPT09Yi50eXBlP2MubWVtb2l6ZWRQcm9wczpMZyhiLnR5cGUsYy5tZW1vaXplZFByb3BzKTtkLmNvbXBvbmVudERpZFVwZGF0ZShlLGMubWVtb2l6ZWRTdGF0ZSxkLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgZj1iLnVwZGF0ZVF1ZXVlO251bGwhPT1mJiZpaChiLGYsZCk7YnJlYWs7Y2FzZSAzOnZhciBnPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWcpe2M9bnVsbDtpZihudWxsIT09Yi5jaGlsZClzd2l0Y2goYi5jaGlsZC50YWcpe2Nhc2UgNTpjPVxuYi5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOmM9Yi5jaGlsZC5zdGF0ZU5vZGV9aWgoYixnLGMpfWJyZWFrO2Nhc2UgNTp2YXIgaD1iLnN0YXRlTm9kZTtpZihudWxsPT09YyYmYi5mbGFncyY0KXtjPWg7dmFyIGs9Yi5tZW1vaXplZFByb3BzO3N3aXRjaChiLnR5cGUpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ay5hdXRvRm9jdXMmJmMuZm9jdXMoKTticmVhaztjYXNlIFwiaW1nXCI6ay5zcmMmJihjLnNyYz1rLnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKG51bGw9PT1iLm1lbW9pemVkU3RhdGUpe3ZhciBsPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1sKXt2YXIgbT1sLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW0pe3ZhciBxPW0uZGVoeWRyYXRlZDtudWxsIT09cSYmYmQocSl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztcbmRlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9VXx8Yi5mbGFncyY1MTImJlNqKGIpfWNhdGNoKHIpe1coYixiLnJldHVybixyKX19aWYoYj09PWEpe1Y9bnVsbDticmVha31jPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fWZ1bmN0aW9uIGhrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19XG5mdW5jdGlvbiBrayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9Vjt0cnl7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBjPWIucmV0dXJuO3RyeXtSaig0LGIpfWNhdGNoKGspe1coYixjLGspfWJyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRNb3VudCl7dmFyIGU9Yi5yZXR1cm47dHJ5e2QuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChrKXtXKGIsZSxrKX19dmFyIGY9Yi5yZXR1cm47dHJ5e1NqKGIpfWNhdGNoKGspe1coYixmLGspfWJyZWFrO2Nhc2UgNTp2YXIgZz1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGcsayl9fX1jYXRjaChrKXtXKGIsYi5yZXR1cm4sayl9aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgaD1iLnNpYmxpbmc7aWYobnVsbCE9PWgpe2gucmV0dXJuPWIucmV0dXJuO1Y9aDticmVha31WPWIucmV0dXJufX1cbnZhciBtaz1NYXRoLmNlaWwsbms9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixvaz11YS5SZWFjdEN1cnJlbnRPd25lcixwaz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxLPTAsUj1udWxsLFk9bnVsbCxaPTAsZ2o9MCxmaj1VZigwKSxUPTAscWs9bnVsbCxoaD0wLHJrPTAsc2s9MCx0az1udWxsLHVrPW51bGwsZ2s9MCxIaj1JbmZpbml0eSx2az1udWxsLFBpPSExLFFpPW51bGwsU2k9bnVsbCx3az0hMSx4az1udWxsLHlrPTAsems9MCxBaz1udWxsLEJrPS0xLENrPTA7ZnVuY3Rpb24gTCgpe3JldHVybiAwIT09KEsmNik/QigpOi0xIT09Qms/Qms6Qms9QigpfVxuZnVuY3Rpb24gbGgoYSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIDE7aWYoMCE9PShLJjIpJiYwIT09WilyZXR1cm4gWiYtWjtpZihudWxsIT09S2cudHJhbnNpdGlvbilyZXR1cm4gMD09PUNrJiYoQ2s9eWMoKSksQ2s7YT1DO2lmKDAhPT1hKXJldHVybiBhO2E9d2luZG93LmV2ZW50O2E9dm9pZCAwPT09YT8xNjpqZChhLnR5cGUpO3JldHVybiBhfWZ1bmN0aW9uIG1oKGEsYixjLGQpe2lmKDUwPHprKXRocm93IHprPTAsQWs9bnVsbCxFcnJvcihwKDE4NSkpO0FjKGEsYyxkKTtpZigwPT09KEsmMil8fGEhPT1SKWE9PT1SJiYoMD09PShLJjIpJiYocmt8PWMpLDQ9PT1UJiZEayhhLFopKSxFayhhLGQpLDE9PT1jJiYwPT09SyYmMD09PShiLm1vZGUmMSkmJihIaj1CKCkrNTAwLGZnJiZqZygpKX1cbmZ1bmN0aW9uIEVrKGEsYil7dmFyIGM9YS5jYWxsYmFja05vZGU7d2MoYSxiKTt2YXIgZD11YyhhLGE9PT1SP1o6MCk7aWYoMD09PWQpbnVsbCE9PWMmJmJjKGMpLGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihiPWQmLWQsYS5jYWxsYmFja1ByaW9yaXR5IT09Yil7bnVsbCE9YyYmYmMoYyk7aWYoMT09PWIpMD09PWEudGFnP2lnKEZrLmJpbmQobnVsbCxhKSk6aGcoRmsuYmluZChudWxsLGEpKSxKZihmdW5jdGlvbigpezA9PT0oSyY2KSYmamcoKX0pLGM9bnVsbDtlbHNle3N3aXRjaChEYyhkKSl7Y2FzZSAxOmM9ZmM7YnJlYWs7Y2FzZSA0OmM9Z2M7YnJlYWs7Y2FzZSAxNjpjPWhjO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmM9amM7YnJlYWs7ZGVmYXVsdDpjPWhjfWM9R2soYyxIay5iaW5kKG51bGwsYSkpfWEuY2FsbGJhY2tQcmlvcml0eT1iO2EuY2FsbGJhY2tOb2RlPWN9fVxuZnVuY3Rpb24gSGsoYSxiKXtCaz0tMTtDaz0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO3ZhciBjPWEuY2FsbGJhY2tOb2RlO2lmKElrKCkmJmEuY2FsbGJhY2tOb2RlIT09YylyZXR1cm4gbnVsbDt2YXIgZD11YyhhLGE9PT1SP1o6MCk7aWYoMD09PWQpcmV0dXJuIG51bGw7aWYoMCE9PShkJjMwKXx8MCE9PShkJmEuZXhwaXJlZExhbmVzKXx8YiliPUprKGEsZCk7ZWxzZXtiPWQ7dmFyIGU9SztLfD0yO3ZhciBmPUtrKCk7aWYoUiE9PWF8fFohPT1iKXZrPW51bGwsSGo9QigpKzUwMCxMayhhLGIpO2RvIHRyeXtNaygpO2JyZWFrfWNhdGNoKGgpe05rKGEsaCl9d2hpbGUoMSk7UWcoKTtuay5jdXJyZW50PWY7Sz1lO251bGwhPT1ZP2I9MDooUj1udWxsLFo9MCxiPVQpfWlmKDAhPT1iKXsyPT09YiYmKGU9eGMoYSksMCE9PWUmJihkPWUsYj1PayhhLGUpKSk7aWYoMT09PWIpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7aWYoNj09PWIpRGsoYSxkKTtcbmVsc2V7ZT1hLmN1cnJlbnQuYWx0ZXJuYXRlO2lmKDA9PT0oZCYzMCkmJiFQayhlKSYmKGI9SmsoYSxkKSwyPT09YiYmKGY9eGMoYSksMCE9PWYmJihkPWYsYj1PayhhLGYpKSksMT09PWIpKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGQpLEVrKGEsQigpKSxjO2EuZmluaXNoZWRXb3JrPWU7YS5maW5pc2hlZExhbmVzPWQ7c3dpdGNoKGIpe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IocCgzNDUpKTtjYXNlIDI6UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSAzOkRrKGEsZCk7aWYoKGQmMTMwMDIzNDI0KT09PWQmJihiPWdrKzUwMC1CKCksMTA8Yikpe2lmKDAhPT11YyhhLDApKWJyZWFrO2U9YS5zdXNwZW5kZWRMYW5lcztpZigoZSZkKSE9PWQpe0woKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmU7YnJlYWt9YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxiKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDQ6RGsoYSxkKTtpZigoZCY0MTk0MjQwKT09PVxuZClicmVhaztiPWEuZXZlbnRUaW1lcztmb3IoZT0tMTswPGQ7KXt2YXIgZz0zMS1vYyhkKTtmPTE8PGc7Zz1iW2ddO2c+ZSYmKGU9Zyk7ZCY9fmZ9ZD1lO2Q9QigpLWQ7ZD0oMTIwPmQ/MTIwOjQ4MD5kPzQ4MDoxMDgwPmQ/MTA4MDoxOTIwPmQ/MTkyMDozRTM+ZD8zRTM6NDMyMD5kPzQzMjA6MTk2MCptayhkLzE5NjApKS1kO2lmKDEwPGQpe2EudGltZW91dEhhbmRsZT1GZihRay5iaW5kKG51bGwsYSx1ayx2ayksZCk7YnJlYWt9UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSA1OlFrKGEsdWssdmspO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMjkpKTt9fX1FayhhLEIoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yz9Iay5iaW5kKG51bGwsYSk6bnVsbH1cbmZ1bmN0aW9uIE9rKGEsYil7dmFyIGM9dGs7YS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoTGsoYSxiKS5mbGFnc3w9MjU2KTthPUprKGEsYik7MiE9PWEmJihiPXVrLHVrPWMsbnVsbCE9PWImJkdqKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBHaihhKXtudWxsPT09dWs/dWs9YTp1ay5wdXNoLmFwcGx5KHVrLGEpfVxuZnVuY3Rpb24gUGsoYSl7Zm9yKHZhciBiPWE7Oyl7aWYoYi5mbGFncyYxNjM4NCl7dmFyIGM9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YyYmKGM9Yy5zdG9yZXMsbnVsbCE9PWMpKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLGY9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e2lmKCFIZShmKCksZSkpcmV0dXJuITF9Y2F0Y2goZyl7cmV0dXJuITF9fX1jPWIuY2hpbGQ7aWYoYi5zdWJ0cmVlRmxhZ3MmMTYzODQmJm51bGwhPT1jKWMucmV0dXJuPWIsYj1jO2Vsc2V7aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuITA7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfX1yZXR1cm4hMH1cbmZ1bmN0aW9uIERrKGEsYil7YiY9fnNrO2ImPX5yazthLnN1c3BlbmRlZExhbmVzfD1iO2EucGluZ2VkTGFuZXMmPX5iO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yjspe3ZhciBjPTMxLW9jKGIpLGQ9MTw8YzthW2NdPS0xO2ImPX5kfX1mdW5jdGlvbiBGayhhKXtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtJaygpO3ZhciBiPXVjKGEsMCk7aWYoMD09PShiJjEpKXJldHVybiBFayhhLEIoKSksbnVsbDt2YXIgYz1KayhhLGIpO2lmKDAhPT1hLnRhZyYmMj09PWMpe3ZhciBkPXhjKGEpOzAhPT1kJiYoYj1kLGM9T2soYSxkKSl9aWYoMT09PWMpdGhyb3cgYz1xayxMayhhLDApLERrKGEsYiksRWsoYSxCKCkpLGM7aWYoNj09PWMpdGhyb3cgRXJyb3IocCgzNDUpKTthLmZpbmlzaGVkV29yaz1hLmN1cnJlbnQuYWx0ZXJuYXRlO2EuZmluaXNoZWRMYW5lcz1iO1FrKGEsdWssdmspO0VrKGEsQigpKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJrKGEsYil7dmFyIGM9SztLfD0xO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e0s9YywwPT09SyYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfX1mdW5jdGlvbiBTayhhKXtudWxsIT09eGsmJjA9PT14ay50YWcmJjA9PT0oSyY2KSYmSWsoKTt2YXIgYj1LO0t8PTE7dmFyIGM9cGsudHJhbnNpdGlvbixkPUM7dHJ5e2lmKHBrLnRyYW5zaXRpb249bnVsbCxDPTEsYSlyZXR1cm4gYSgpfWZpbmFsbHl7Qz1kLHBrLnRyYW5zaXRpb249YyxLPWIsMD09PShLJjYpJiZqZygpfX1mdW5jdGlvbiBJaigpe2dqPWZqLmN1cnJlbnQ7RShmail9XG5mdW5jdGlvbiBMayhhLGIpe2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7dmFyIGM9YS50aW1lb3V0SGFuZGxlOy0xIT09YyYmKGEudGltZW91dEhhbmRsZT0tMSxHZihjKSk7aWYobnVsbCE9PVkpZm9yKGM9WS5yZXR1cm47bnVsbCE9PWM7KXt2YXIgZD1jO3dnKGQpO3N3aXRjaChkLnRhZyl7Y2FzZSAxOmQ9ZC50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPT1kJiZ2b2lkIDAhPT1kJiYkZigpO2JyZWFrO2Nhc2UgMzpKaCgpO0UoV2YpO0UoSCk7T2goKTticmVhaztjYXNlIDU6TGgoZCk7YnJlYWs7Y2FzZSA0OkpoKCk7YnJlYWs7Y2FzZSAxMzpFKE0pO2JyZWFrO2Nhc2UgMTk6RShNKTticmVhaztjYXNlIDEwOlJnKGQudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOklqKCl9Yz1jLnJldHVybn1SPWE7WT1hPXdoKGEuY3VycmVudCxudWxsKTtaPWdqPWI7VD0wO3FrPW51bGw7c2s9cms9aGg9MDt1az10az1udWxsO2lmKG51bGwhPT1XZyl7Zm9yKGI9XG4wO2I8V2cubGVuZ3RoO2IrKylpZihjPVdnW2JdLGQ9Yy5pbnRlcmxlYXZlZCxudWxsIT09ZCl7Yy5pbnRlcmxlYXZlZD1udWxsO3ZhciBlPWQubmV4dCxmPWMucGVuZGluZztpZihudWxsIT09Zil7dmFyIGc9Zi5uZXh0O2YubmV4dD1lO2QubmV4dD1nfWMucGVuZGluZz1kfVdnPW51bGx9cmV0dXJuIGF9XG5mdW5jdGlvbiBOayhhLGIpe2Rve3ZhciBjPVk7dHJ5e1FnKCk7UGguY3VycmVudD1haTtpZihTaCl7Zm9yKHZhciBkPU4ubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZDspe3ZhciBlPWQucXVldWU7bnVsbCE9PWUmJihlLnBlbmRpbmc9bnVsbCk7ZD1kLm5leHR9U2g9ITF9Umg9MDtQPU89Tj1udWxsO1RoPSExO1VoPTA7b2suY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe1Q9MTtxaz1iO1k9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPVo7aC5mbGFnc3w9MzI3Njg7aWYobnVsbCE9PWsmJlwib2JqZWN0XCI9PT10eXBlb2YgayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsudGhlbil7dmFyIGw9ayxtPWgscT1tLnRhZztpZigwPT09KG0ubW9kZSYxKSYmKDA9PT1xfHwxMT09PXF8fDE1PT09cSkpe3ZhciByPW0uYWx0ZXJuYXRlO3I/KG0udXBkYXRlUXVldWU9ci51cGRhdGVRdWV1ZSxtLm1lbW9pemVkU3RhdGU9ci5tZW1vaXplZFN0YXRlLFxubS5sYW5lcz1yLmxhbmVzKToobS51cGRhdGVRdWV1ZT1udWxsLG0ubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgeT1WaShnKTtpZihudWxsIT09eSl7eS5mbGFncyY9LTI1NztXaSh5LGcsaCxmLGIpO3kubW9kZSYxJiZUaShmLGwsYik7Yj15O2s9bDt2YXIgbj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1uKXt2YXIgdD1uZXcgU2V0O3QuYWRkKGspO2IudXBkYXRlUXVldWU9dH1lbHNlIG4uYWRkKGspO2JyZWFrIGF9ZWxzZXtpZigwPT09KGImMSkpe1RpKGYsbCxiKTt1aigpO2JyZWFrIGF9az1FcnJvcihwKDQyNikpfX1lbHNlIGlmKEkmJmgubW9kZSYxKXt2YXIgSj1WaShnKTtpZihudWxsIT09Sil7MD09PShKLmZsYWdzJjY1NTM2KSYmKEouZmxhZ3N8PTI1Nik7V2koSixnLGgsZixiKTtKZyhLaShrLGgpKTticmVhayBhfX1mPWs9S2koayxoKTs0IT09VCYmKFQ9Mik7bnVsbD09PXRrP3RrPVtmXTp0ay5wdXNoKGYpO2Y9Zztkb3tzd2l0Y2goZi50YWcpe2Nhc2UgMzpmLmZsYWdzfD02NTUzNjtcbmImPS1iO2YubGFuZXN8PWI7dmFyIHg9T2koZixrLGIpO2ZoKGYseCk7YnJlYWsgYTtjYXNlIDE6aD1rO3ZhciB3PWYudHlwZSx1PWYuc3RhdGVOb2RlO2lmKDA9PT0oZi5mbGFncyYxMjgpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHcuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09dSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHUuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09U2l8fCFTaS5oYXModSkpKSl7Zi5mbGFnc3w9NjU1MzY7YiY9LWI7Zi5sYW5lc3w9Yjt2YXIgRj1SaShmLGgsYik7ZmgoZixGKTticmVhayBhfX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKX1UayhjKX1jYXRjaChuYSl7Yj1uYTtZPT09YyYmbnVsbCE9PWMmJihZPWM9Yy5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfWZ1bmN0aW9uIEtrKCl7dmFyIGE9bmsuY3VycmVudDtuay5jdXJyZW50PWFpO3JldHVybiBudWxsPT09YT9haTphfVxuZnVuY3Rpb24gdWooKXtpZigwPT09VHx8Mz09PVR8fDI9PT1UKVQ9NDtudWxsPT09Unx8MD09PShoaCYyNjg0MzU0NTUpJiYwPT09KHJrJjI2ODQzNTQ1NSl8fERrKFIsWil9ZnVuY3Rpb24gSmsoYSxiKXt2YXIgYz1LO0t8PTI7dmFyIGQ9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxMayhhLGIpO2RvIHRyeXtVaygpO2JyZWFrfWNhdGNoKGUpe05rKGEsZSl9d2hpbGUoMSk7UWcoKTtLPWM7bmsuY3VycmVudD1kO2lmKG51bGwhPT1ZKXRocm93IEVycm9yKHAoMjYxKSk7Uj1udWxsO1o9MDtyZXR1cm4gVH1mdW5jdGlvbiBVaygpe2Zvcig7bnVsbCE9PVk7KVZrKFkpfWZ1bmN0aW9uIE1rKCl7Zm9yKDtudWxsIT09WSYmIWNjKCk7KVZrKFkpfWZ1bmN0aW9uIFZrKGEpe3ZhciBiPVdrKGEuYWx0ZXJuYXRlLGEsZ2opO2EubWVtb2l6ZWRQcm9wcz1hLnBlbmRpbmdQcm9wcztudWxsPT09Yj9UayhhKTpZPWI7b2suY3VycmVudD1udWxsfVxuZnVuY3Rpb24gVGsoYSl7dmFyIGI9YTtkb3t2YXIgYz1iLmFsdGVybmF0ZTthPWIucmV0dXJuO2lmKDA9PT0oYi5mbGFncyYzMjc2OCkpe2lmKGM9RmooYyxiLGdqKSxudWxsIT09Yyl7WT1jO3JldHVybn19ZWxzZXtjPUpqKGMsYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTMyNzY3O1k9YztyZXR1cm59aWYobnVsbCE9PWEpYS5mbGFnc3w9MzI3NjgsYS5zdWJ0cmVlRmxhZ3M9MCxhLmRlbGV0aW9ucz1udWxsO2Vsc2V7VD02O1k9bnVsbDtyZXR1cm59fWI9Yi5zaWJsaW5nO2lmKG51bGwhPT1iKXtZPWI7cmV0dXJufVk9Yj1hfXdoaWxlKG51bGwhPT1iKTswPT09VCYmKFQ9NSl9ZnVuY3Rpb24gUWsoYSxiLGMpe3ZhciBkPUMsZT1way50cmFuc2l0aW9uO3RyeXtway50cmFuc2l0aW9uPW51bGwsQz0xLFhrKGEsYixjLGQpfWZpbmFsbHl7cGsudHJhbnNpdGlvbj1lLEM9ZH1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFhrKGEsYixjLGQpe2RvIElrKCk7d2hpbGUobnVsbCE9PXhrKTtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtjPWEuZmluaXNoZWRXb3JrO3ZhciBlPWEuZmluaXNoZWRMYW5lcztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IocCgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO2EuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBmPWMubGFuZXN8Yy5jaGlsZExhbmVzO0JjKGEsZik7YT09PVImJihZPVI9bnVsbCxaPTApOzA9PT0oYy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJjA9PT0oYy5mbGFncyYyMDY0KXx8d2t8fCh3az0hMCxHayhoYyxmdW5jdGlvbigpe0lrKCk7cmV0dXJuIG51bGx9KSk7Zj0wIT09KGMuZmxhZ3MmMTU5OTApO2lmKDAhPT0oYy5zdWJ0cmVlRmxhZ3MmMTU5OTApfHxmKXtmPXBrLnRyYW5zaXRpb247cGsudHJhbnNpdGlvbj1udWxsO1xudmFyIGc9QztDPTE7dmFyIGg9SztLfD00O29rLmN1cnJlbnQ9bnVsbDtQaihhLGMpO2VrKGMsYSk7T2UoRGYpO2RkPSEhQ2Y7RGY9Q2Y9bnVsbDthLmN1cnJlbnQ9YztpayhjLGEsZSk7ZGMoKTtLPWg7Qz1nO3BrLnRyYW5zaXRpb249Zn1lbHNlIGEuY3VycmVudD1jO3drJiYod2s9ITEseGs9YSx5az1lKTtmPWEucGVuZGluZ0xhbmVzOzA9PT1mJiYoU2k9bnVsbCk7bWMoYy5zdGF0ZU5vZGUsZCk7RWsoYSxCKCkpO2lmKG51bGwhPT1iKWZvcihkPWEub25SZWNvdmVyYWJsZUVycm9yLGM9MDtjPGIubGVuZ3RoO2MrKyllPWJbY10sZChlLnZhbHVlLHtjb21wb25lbnRTdGFjazplLnN0YWNrLGRpZ2VzdDplLmRpZ2VzdH0pO2lmKFBpKXRocm93IFBpPSExLGE9UWksUWk9bnVsbCxhOzAhPT0oeWsmMSkmJjAhPT1hLnRhZyYmSWsoKTtmPWEucGVuZGluZ0xhbmVzOzAhPT0oZiYxKT9hPT09QWs/emsrKzooems9MCxBaz1hKTp6az0wO2pnKCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBJaygpe2lmKG51bGwhPT14ayl7dmFyIGE9RGMoeWspLGI9cGsudHJhbnNpdGlvbixjPUM7dHJ5e3BrLnRyYW5zaXRpb249bnVsbDtDPTE2PmE/MTY6YTtpZihudWxsPT09eGspdmFyIGQ9ITE7ZWxzZXthPXhrO3hrPW51bGw7eWs9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMzEpKTt2YXIgZT1LO0t8PTQ7Zm9yKFY9YS5jdXJyZW50O251bGwhPT1WOyl7dmFyIGY9VixnPWYuY2hpbGQ7aWYoMCE9PShWLmZsYWdzJjE2KSl7dmFyIGg9Zi5kZWxldGlvbnM7aWYobnVsbCE9PWgpe2Zvcih2YXIgaz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbD1oW2tdO2ZvcihWPWw7bnVsbCE9PVY7KXt2YXIgbT1WO3N3aXRjaChtLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig4LG0sZil9dmFyIHE9bS5jaGlsZDtpZihudWxsIT09cSlxLnJldHVybj1tLFY9cTtlbHNlIGZvcig7bnVsbCE9PVY7KXttPVY7dmFyIHI9bS5zaWJsaW5nLHk9bS5yZXR1cm47VGoobSk7aWYobT09PVxubCl7Vj1udWxsO2JyZWFrfWlmKG51bGwhPT1yKXtyLnJldHVybj15O1Y9cjticmVha31WPXl9fX12YXIgbj1mLmFsdGVybmF0ZTtpZihudWxsIT09bil7dmFyIHQ9bi5jaGlsZDtpZihudWxsIT09dCl7bi5jaGlsZD1udWxsO2Rve3ZhciBKPXQuc2libGluZzt0LnNpYmxpbmc9bnVsbDt0PUp9d2hpbGUobnVsbCE9PXQpfX1WPWZ9fWlmKDAhPT0oZi5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1nKWcucmV0dXJuPWYsVj1nO2Vsc2UgYjpmb3IoO251bGwhPT1WOyl7Zj1WO2lmKDAhPT0oZi5mbGFncyYyMDQ4KSlzd2l0Y2goZi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UWooOSxmLGYucmV0dXJuKX12YXIgeD1mLnNpYmxpbmc7aWYobnVsbCE9PXgpe3gucmV0dXJuPWYucmV0dXJuO1Y9eDticmVhayBifVY9Zi5yZXR1cm59fXZhciB3PWEuY3VycmVudDtmb3IoVj13O251bGwhPT1WOyl7Zz1WO3ZhciB1PWcuY2hpbGQ7aWYoMCE9PShnLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PVxudSl1LnJldHVybj1nLFY9dTtlbHNlIGI6Zm9yKGc9dztudWxsIT09Vjspe2g9VjtpZigwIT09KGguZmxhZ3MmMjA0OCkpdHJ5e3N3aXRjaChoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpSaig5LGgpfX1jYXRjaChuYSl7VyhoLGgucmV0dXJuLG5hKX1pZihoPT09Zyl7Vj1udWxsO2JyZWFrIGJ9dmFyIEY9aC5zaWJsaW5nO2lmKG51bGwhPT1GKXtGLnJldHVybj1oLnJldHVybjtWPUY7YnJlYWsgYn1WPWgucmV0dXJufX1LPWU7amcoKTtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Qb3N0Q29tbWl0RmliZXJSb290KGtjLGEpfWNhdGNoKG5hKXt9ZD0hMH1yZXR1cm4gZH1maW5hbGx5e0M9Yyxway50cmFuc2l0aW9uPWJ9fXJldHVybiExfWZ1bmN0aW9uIFlrKGEsYixjKXtiPUtpKGMsYik7Yj1PaShhLGIsMSk7YT1kaChhLGIsMSk7Yj1MKCk7bnVsbCE9PWEmJihBYyhhLDEsYiksRWsoYSxiKSl9XG5mdW5jdGlvbiBXKGEsYixjKXtpZigzPT09YS50YWcpWWsoYSxhLGMpO2Vsc2UgZm9yKDtudWxsIT09Yjspe2lmKDM9PT1iLnRhZyl7WWsoYixhLGMpO2JyZWFrfWVsc2UgaWYoMT09PWIudGFnKXt2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09U2l8fCFTaS5oYXMoZCkpKXthPUtpKGMsYSk7YT1SaShiLGEsMSk7Yj1kaChiLGEsMSk7YT1MKCk7bnVsbCE9PWImJihBYyhiLDEsYSksRWsoYixhKSk7YnJlYWt9fWI9Yi5yZXR1cm59fVxuZnVuY3Rpb24gVWkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO251bGwhPT1kJiZkLmRlbGV0ZShiKTtiPUwoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmM7Uj09PWEmJihaJmMpPT09YyYmKDQ9PT1UfHwzPT09VCYmKFomMTMwMDIzNDI0KT09PVomJjUwMD5CKCktZ2s/TGsoYSwwKTpza3w9Yyk7RWsoYSxiKX1mdW5jdGlvbiBaayhhLGIpezA9PT1iJiYoMD09PShhLm1vZGUmMSk/Yj0xOihiPXNjLHNjPDw9MSwwPT09KHNjJjEzMDAyMzQyNCkmJihzYz00MTk0MzA0KSkpO3ZhciBjPUwoKTthPVpnKGEsYik7bnVsbCE9PWEmJihBYyhhLGIsYyksRWsoYSxjKSl9ZnVuY3Rpb24gdmooYSl7dmFyIGI9YS5tZW1vaXplZFN0YXRlLGM9MDtudWxsIT09YiYmKGM9Yi5yZXRyeUxhbmUpO1prKGEsYyl9XG5mdW5jdGlvbiBjayhhLGIpe3ZhciBjPTA7c3dpdGNoKGEudGFnKXtjYXNlIDEzOnZhciBkPWEuc3RhdGVOb2RlO3ZhciBlPWEubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGM9ZS5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6ZD1hLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzE0KSk7fW51bGwhPT1kJiZkLmRlbGV0ZShiKTtaayhhLGMpfXZhciBXaztcbldrPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8V2YuY3VycmVudClVZz0hMDtlbHNle2lmKDA9PT0oYS5sYW5lcyZjKSYmMD09PShiLmZsYWdzJjEyOCkpcmV0dXJuIFVnPSExLHpqKGEsYixjKTtVZz0wIT09KGEuZmxhZ3MmMTMxMDcyKT8hMDohMX1lbHNlIFVnPSExLEkmJjAhPT0oYi5mbGFncyYxMDQ4NTc2KSYmdWcoYixuZyxiLmluZGV4KTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6dmFyIGQ9Yi50eXBlO2pqKGEsYik7YT1iLnBlbmRpbmdQcm9wczt2YXIgZT1ZZihiLEguY3VycmVudCk7VGcoYixjKTtlPVhoKG51bGwsYixkLGEsZSxjKTt2YXIgZj1iaSgpO2IuZmxhZ3N8PTE7XCJvYmplY3RcIj09PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mPyhiLnRhZz0xLGIubWVtb2l6ZWRTdGF0ZT1udWxsLGIudXBkYXRlUXVldWU9XG5udWxsLFpmKGQpPyhmPSEwLGNnKGIpKTpmPSExLGIubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGwsYWgoYiksZS51cGRhdGVyPW5oLGIuc3RhdGVOb2RlPWUsZS5fcmVhY3RJbnRlcm5hbHM9YixyaChiLGQsYSxjKSxiPWtqKG51bGwsYixkLCEwLGYsYykpOihiLnRhZz0wLEkmJmYmJnZnKGIpLFlpKG51bGwsYixlLGMpLGI9Yi5jaGlsZCk7cmV0dXJuIGI7Y2FzZSAxNjpkPWIuZWxlbWVudFR5cGU7YTp7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO2U9ZC5faW5pdDtkPWUoZC5fcGF5bG9hZCk7Yi50eXBlPWQ7ZT1iLnRhZz0kayhkKTthPUxnKGQsYSk7c3dpdGNoKGUpe2Nhc2UgMDpiPWRqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE6Yj1paihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxMTpiPVppKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE0OmI9YWoobnVsbCxiLGQsTGcoZC50eXBlLGEpLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgzMDYsXG5kLFwiXCIpKTt9cmV0dXJuIGI7Y2FzZSAwOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGRqKGEsYixkLGUsYyk7Y2FzZSAxOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGlqKGEsYixkLGUsYyk7Y2FzZSAzOmE6e2xqKGIpO2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzg3KSk7ZD1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRTdGF0ZTtlPWYuZWxlbWVudDtiaChhLGIpO2doKGIsZCxudWxsLGMpO3ZhciBnPWIubWVtb2l6ZWRTdGF0ZTtkPWcuZWxlbWVudDtpZihmLmlzRGVoeWRyYXRlZClpZihmPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmcuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpnLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc30sYi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9XG5mLGIubWVtb2l6ZWRTdGF0ZT1mLGIuZmxhZ3MmMjU2KXtlPUtpKEVycm9yKHAoNDIzKSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBpZihkIT09ZSl7ZT1LaShFcnJvcihwKDQyNCkpLGIpO2I9bWooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgZm9yKHlnPUxmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCkseGc9YixJPSEwLHpnPW51bGwsYz1DaChiLG51bGwsZCxjKSxiLmNoaWxkPWM7YzspYy5mbGFncz1jLmZsYWdzJi0zfDQwOTYsYz1jLnNpYmxpbmc7ZWxzZXtJZygpO2lmKGQ9PT1lKXtiPSRpKGEsYixjKTticmVhayBhfVlpKGEsYixkLGMpfWI9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIEtoKGIpLG51bGw9PT1hJiZFZyhiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLEVmKGQsZSk/Zz1udWxsOm51bGwhPT1mJiZFZihkLGYpJiYoYi5mbGFnc3w9MzIpLFxuaGooYSxiKSxZaShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkVnKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gcGooYSxiLGMpO2Nhc2UgNDpyZXR1cm4gSWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9QmgoYixudWxsLGQsYyk6WWkoYSxiLGQsYyksYi5jaGlsZDtjYXNlIDExOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLFppKGEsYixkLGUsYyk7Y2FzZSA3OnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTA6YTp7ZD1iLnR5cGUuX2NvbnRleHQ7ZT1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRQcm9wcztcbmc9ZS52YWx1ZTtHKE1nLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWc7aWYobnVsbCE9PWYpaWYoSGUoZi52YWx1ZSxnKSl7aWYoZi5jaGlsZHJlbj09PWUuY2hpbGRyZW4mJiFXZi5jdXJyZW50KXtiPSRpKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihmPWIuY2hpbGQsbnVsbCE9PWYmJihmLnJldHVybj1iKTtudWxsIT09Zjspe3ZhciBoPWYuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1oKXtnPWYuY2hpbGQ7Zm9yKHZhciBrPWguZmlyc3RDb250ZXh0O251bGwhPT1rOyl7aWYoay5jb250ZXh0PT09ZCl7aWYoMT09PWYudGFnKXtrPWNoKC0xLGMmLWMpO2sudGFnPTI7dmFyIGw9Zi51cGRhdGVRdWV1ZTtpZihudWxsIT09bCl7bD1sLnNoYXJlZDt2YXIgbT1sLnBlbmRpbmc7bnVsbD09PW0/ay5uZXh0PWs6KGsubmV4dD1tLm5leHQsbS5uZXh0PWspO2wucGVuZGluZz1rfX1mLmxhbmVzfD1jO2s9Zi5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLmxhbmVzfD1jKTtTZyhmLnJldHVybixcbmMsYik7aC5sYW5lc3w9YzticmVha31rPWsubmV4dH19ZWxzZSBpZigxMD09PWYudGFnKWc9Zi50eXBlPT09Yi50eXBlP251bGw6Zi5jaGlsZDtlbHNlIGlmKDE4PT09Zi50YWcpe2c9Zi5yZXR1cm47aWYobnVsbD09PWcpdGhyb3cgRXJyb3IocCgzNDEpKTtnLmxhbmVzfD1jO2g9Zy5hbHRlcm5hdGU7bnVsbCE9PWgmJihoLmxhbmVzfD1jKTtTZyhnLGMsYik7Zz1mLnNpYmxpbmd9ZWxzZSBnPWYuY2hpbGQ7aWYobnVsbCE9PWcpZy5yZXR1cm49ZjtlbHNlIGZvcihnPWY7bnVsbCE9PWc7KXtpZihnPT09Yil7Zz1udWxsO2JyZWFrfWY9Zy5zaWJsaW5nO2lmKG51bGwhPT1mKXtmLnJldHVybj1nLnJldHVybjtnPWY7YnJlYWt9Zz1nLnJldHVybn1mPWd9WWkoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZD1iLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixUZyhiLGMpLGU9VmcoZSksZD1kKGUpLGIuZmxhZ3N8PTEsWWkoYSxiLGQsYyksXG5iLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGQ9Yi50eXBlLGU9TGcoZCxiLnBlbmRpbmdQcm9wcyksZT1MZyhkLnR5cGUsZSksYWooYSxiLGQsZSxjKTtjYXNlIDE1OnJldHVybiBjaihhLGIsYi50eXBlLGIucGVuZGluZ1Byb3BzLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksamooYSxiKSxiLnRhZz0xLFpmKGQpPyhhPSEwLGNnKGIpKTphPSExLFRnKGIsYykscGgoYixkLGUpLHJoKGIsZCxlLGMpLGtqKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4geWooYSxiLGMpO2Nhc2UgMjI6cmV0dXJuIGVqKGEsYixjKX10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO307ZnVuY3Rpb24gR2soYSxiKXtyZXR1cm4gYWMoYSxiKX1cbmZ1bmN0aW9uIGFsKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wO3RoaXMuZGVsZXRpb25zPW51bGw7dGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIEJnKGEsYixjLGQpe3JldHVybiBuZXcgYWwoYSxiLGMsZCl9ZnVuY3Rpb24gYmooYSl7YT1hLnByb3RvdHlwZTtyZXR1cm4hKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1cbmZ1bmN0aW9uICRrKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBiaihhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGEpcmV0dXJuIDExO2lmKGE9PT1HYSlyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiB3aChhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPUJnKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCk7Yy5mbGFncz1hLmZsYWdzJjE0NjgwMDY0O2MuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXM7Yy5sYW5lcz1hLmxhbmVzO2MuY2hpbGQ9YS5jaGlsZDtjLm1lbW9pemVkUHJvcHM9YS5tZW1vaXplZFByb3BzO2MubWVtb2l6ZWRTdGF0ZT1hLm1lbW9pemVkU3RhdGU7Yy51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlO2I9YS5kZXBlbmRlbmNpZXM7Yy5kZXBlbmRlbmNpZXM9bnVsbD09PWI/bnVsbDp7bGFuZXM6Yi5sYW5lcyxmaXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHR9O1xuYy5zaWJsaW5nPWEuc2libGluZztjLmluZGV4PWEuaW5kZXg7Yy5yZWY9YS5yZWY7cmV0dXJuIGN9XG5mdW5jdGlvbiB5aChhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpYmooYSkmJihnPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKWc9NTtlbHNlIGE6c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuIEFoKGMuY2hpbGRyZW4sZSxmLGIpO2Nhc2UgemE6Zz04O2V8PTg7YnJlYWs7Y2FzZSBBYTpyZXR1cm4gYT1CZygxMixjLGIsZXwyKSxhLmVsZW1lbnRUeXBlPUFhLGEubGFuZXM9ZixhO2Nhc2UgRWE6cmV0dXJuIGE9QmcoMTMsYyxiLGUpLGEuZWxlbWVudFR5cGU9RWEsYS5sYW5lcz1mLGE7Y2FzZSBGYTpyZXR1cm4gYT1CZygxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1GYSxhLmxhbmVzPWYsYTtjYXNlIElhOnJldHVybiBxaihjLGUsZixiKTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQmE6Zz0xMDticmVhayBhO2Nhc2UgQ2E6Zz05O2JyZWFrIGE7Y2FzZSBEYTpnPTExO1xuYnJlYWsgYTtjYXNlIEdhOmc9MTQ7YnJlYWsgYTtjYXNlIEhhOmc9MTY7ZD1udWxsO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpKTt9Yj1CZyhnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIEFoKGEsYixjLGQpe2E9QmcoNyxhLGQsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIHFqKGEsYixjLGQpe2E9QmcoMjIsYSxkLGIpO2EuZWxlbWVudFR5cGU9SWE7YS5sYW5lcz1jO2Euc3RhdGVOb2RlPXtpc0hpZGRlbjohMX07cmV0dXJuIGF9ZnVuY3Rpb24geGgoYSxiLGMpe2E9QmcoNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfVxuZnVuY3Rpb24gemgoYSxiLGMpe2I9QmcoNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiBibChhLGIsYyxkLGUpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5jYWxsYmFja1ByaW9yaXR5PTA7dGhpcy5ldmVudFRpbWVzPXpjKDApO3RoaXMuZXhwaXJhdGlvblRpbWVzPXpjKC0xKTt0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTA7dGhpcy5lbnRhbmdsZW1lbnRzPXpjKDApO3RoaXMuaWRlbnRpZmllclByZWZpeD1kO3RoaXMub25SZWNvdmVyYWJsZUVycm9yPWU7dGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVxubnVsbH1mdW5jdGlvbiBjbChhLGIsYyxkLGUsZixnLGgsayl7YT1uZXcgYmwoYSxiLGMsaCxrKTsxPT09Yj8oYj0xLCEwPT09ZiYmKGJ8PTgpKTpiPTA7Zj1CZygzLG51bGwsbnVsbCxiKTthLmN1cnJlbnQ9ZjtmLnN0YXRlTm9kZT1hO2YubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDpjLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9O2FoKGYpO3JldHVybiBhfWZ1bmN0aW9uIGRsKGEsYixjKXt2YXIgZD0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6d2Esa2V5Om51bGw9PWQ/bnVsbDpcIlwiK2QsY2hpbGRyZW46YSxjb250YWluZXJJbmZvOmIsaW1wbGVtZW50YXRpb246Y319XG5mdW5jdGlvbiBlbChhKXtpZighYSlyZXR1cm4gVmY7YT1hLl9yZWFjdEludGVybmFsczthOntpZihWYihhKSE9PWF8fDEhPT1hLnRhZyl0aHJvdyBFcnJvcihwKDE3MCkpO3ZhciBiPWE7ZG97c3dpdGNoKGIudGFnKXtjYXNlIDM6Yj1iLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGE7Y2FzZSAxOmlmKFpmKGIudHlwZSkpe2I9Yi5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgYX19Yj1iLnJldHVybn13aGlsZShudWxsIT09Yik7dGhyb3cgRXJyb3IocCgxNzEpKTt9aWYoMT09PWEudGFnKXt2YXIgYz1hLnR5cGU7aWYoWmYoYykpcmV0dXJuIGJnKGEsYyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGZsKGEsYixjLGQsZSxmLGcsaCxrKXthPWNsKGMsZCwhMCxhLGUsZixnLGgsayk7YS5jb250ZXh0PWVsKG51bGwpO2M9YS5jdXJyZW50O2Q9TCgpO2U9bGgoYyk7Zj1jaChkLGUpO2YuY2FsbGJhY2s9dm9pZCAwIT09YiYmbnVsbCE9PWI/YjpudWxsO2RoKGMsZixlKTthLmN1cnJlbnQubGFuZXM9ZTtBYyhhLGUsZCk7RWsoYSxkKTtyZXR1cm4gYX1mdW5jdGlvbiBnbChhLGIsYyxkKXt2YXIgZT1iLmN1cnJlbnQsZj1MKCksZz1saChlKTtjPWVsKGMpO251bGw9PT1iLmNvbnRleHQ/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9Y2goZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9ZCk7YT1kaChlLGIsZyk7bnVsbCE9PWEmJihtaChhLGUsZyxmKSxlaChhLGUsZykpO3JldHVybiBnfVxuZnVuY3Rpb24gaGwoYSl7YT1hLmN1cnJlbnQ7aWYoIWEuY2hpbGQpcmV0dXJuIG51bGw7c3dpdGNoKGEuY2hpbGQudGFnKXtjYXNlIDU6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlO2RlZmF1bHQ6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBpbChhLGIpe2E9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXt2YXIgYz1hLnJldHJ5TGFuZTthLnJldHJ5TGFuZT0wIT09YyYmYzxiP2M6Yn19ZnVuY3Rpb24gamwoYSxiKXtpbChhLGIpOyhhPWEuYWx0ZXJuYXRlKSYmaWwoYSxiKX1mdW5jdGlvbiBrbCgpe3JldHVybiBudWxsfXZhciBsbD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcihhKX07ZnVuY3Rpb24gbWwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5ubC5wcm90b3R5cGUucmVuZGVyPW1sLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoNDA5KSk7Z2woYSxiLG51bGwsbnVsbCl9O25sLnByb3RvdHlwZS51bm1vdW50PW1sLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1hKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgYj1hLmNvbnRhaW5lckluZm87U2soZnVuY3Rpb24oKXtnbChudWxsLGEsbnVsbCxudWxsKX0pO2JbdWZdPW51bGx9fTtmdW5jdGlvbiBubChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1IYygpO2E9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDphLHByaW9yaXR5OmJ9O2Zvcih2YXIgYz0wO2M8UWMubGVuZ3RoJiYwIT09YiYmYjxRY1tjXS5wcmlvcml0eTtjKyspO1FjLnNwbGljZShjLDAsYSk7MD09PWMmJlZjKGEpfX07ZnVuY3Rpb24gb2woYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUpfWZ1bmN0aW9uIHBsKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlJiYoOCE9PWEubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09YS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBxbCgpe31cbmZ1bmN0aW9uIHJsKGEsYixjLGQsZSl7aWYoZSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBmPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWhsKGcpO2YuY2FsbChhKX19dmFyIGc9ZmwoYixkLGEsMCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1nO2FbdWZdPWcuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soKTtyZXR1cm4gZ31mb3IoO2U9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBoPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWhsKGspO2guY2FsbChhKX19dmFyIGs9Y2woYSwwLCExLG51bGwsbnVsbCwhMSwhMSxcIlwiLHFsKTthLl9yZWFjdFJvb3RDb250YWluZXI9azthW3VmXT1rLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1NrKGZ1bmN0aW9uKCl7Z2woYixrLGMsZCl9KTtyZXR1cm4ga31cbmZ1bmN0aW9uIHNsKGEsYixjLGQsZSl7dmFyIGY9Yy5fcmVhY3RSb290Q29udGFpbmVyO2lmKGYpe3ZhciBnPWY7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBoPWU7ZT1mdW5jdGlvbigpe3ZhciBhPWhsKGcpO2guY2FsbChhKX19Z2woYixnLGEsZSl9ZWxzZSBnPXJsKGMsYixhLGUsZCk7cmV0dXJuIGhsKGcpfUVjPWZ1bmN0aW9uKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAzOnZhciBiPWEuc3RhdGVOb2RlO2lmKGIuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIGM9dGMoYi5wZW5kaW5nTGFuZXMpOzAhPT1jJiYoQ2MoYixjfDEpLEVrKGIsQigpKSwwPT09KEsmNikmJihIaj1CKCkrNTAwLGpnKCkpKX1icmVhaztjYXNlIDEzOlNrKGZ1bmN0aW9uKCl7dmFyIGI9WmcoYSwxKTtpZihudWxsIT09Yil7dmFyIGM9TCgpO21oKGIsYSwxLGMpfX0pLGpsKGEsMSl9fTtcbkZjPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPVpnKGEsMTM0MjE3NzI4KTtpZihudWxsIT09Yil7dmFyIGM9TCgpO21oKGIsYSwxMzQyMTc3MjgsYyl9amwoYSwxMzQyMTc3MjgpfX07R2M9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9bGgoYSksYz1aZyhhLGIpO2lmKG51bGwhPT1jKXt2YXIgZD1MKCk7bWgoYyxhLGIsZCl9amwoYSxiKX19O0hjPWZ1bmN0aW9uKCl7cmV0dXJuIEN9O0ljPWZ1bmN0aW9uKGEsYil7dmFyIGM9Qzt0cnl7cmV0dXJuIEM9YSxiKCl9ZmluYWxseXtDPWN9fTtcbnliPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6YmIoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPURiKGQpO2lmKCFlKXRocm93IEVycm9yKHAoOTApKTtXYShkKTtiYihkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJmZiKGEsISFjLm11bHRpcGxlLGIsITEpfX07R2I9Ums7SGI9U2s7XG52YXIgdGw9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W0NiLHVlLERiLEViLEZiLFJrXX0sdWw9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOldjLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTguMi4wXCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifTtcbnZhciB2bD17YnVuZGxlVHlwZTp1bC5idW5kbGVUeXBlLHZlcnNpb246dWwudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOnVsLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dWwucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihhKXthPVpiKGEpO3JldHVybiBudWxsPT09YT9udWxsOmEuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp1bC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8XG5rbCxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsLHJlY29uY2lsZXJWZXJzaW9uOlwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCJ9O2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXt2YXIgd2w9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCF3bC5pc0Rpc2FibGVkJiZ3bC5zdXBwb3J0c0ZpYmVyKXRyeXtrYz13bC5pbmplY3QodmwpLGxjPXdsfWNhdGNoKGEpe319ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD10bDtcbmV4cG9ydHMuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGEsYil7dmFyIGM9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIGRsKGEsYixudWxsLGMpfTtleHBvcnRzLmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oYSxiKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCgyOTkpKTt2YXIgYz0hMSxkPVwiXCIsZT1sbDtudWxsIT09YiYmdm9pZCAwIT09YiYmKCEwPT09Yi51bnN0YWJsZV9zdHJpY3RNb2RlJiYoYz0hMCksdm9pZCAwIT09Yi5pZGVudGlmaWVyUHJlZml4JiYoZD1iLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWIub25SZWNvdmVyYWJsZUVycm9yJiYoZT1iLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9Y2woYSwxLCExLG51bGwsbnVsbCxjLCExLGQsZSk7YVt1Zl09Yi5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtyZXR1cm4gbmV3IG1sKGIpfTtcbmV4cG9ydHMuZmluZERPTU5vZGU9ZnVuY3Rpb24oYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZigxPT09YS5ub2RlVHlwZSlyZXR1cm4gYTt2YXIgYj1hLl9yZWFjdEludGVybmFscztpZih2b2lkIDA9PT1iKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IocCgxODgpKTthPU9iamVjdC5rZXlzKGEpLmpvaW4oXCIsXCIpO3Rocm93IEVycm9yKHAoMjY4LGEpKTt9YT1aYihiKTthPW51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGU7cmV0dXJuIGF9O2V4cG9ydHMuZmx1c2hTeW5jPWZ1bmN0aW9uKGEpe3JldHVybiBTayhhKX07ZXhwb3J0cy5oeWRyYXRlPWZ1bmN0aW9uKGEsYixjKXtpZighcGwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gc2wobnVsbCxhLGIsITAsYyl9O1xuZXhwb3J0cy5oeWRyYXRlUm9vdD1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoNDA1KSk7dmFyIGQ9bnVsbCE9YyYmYy5oeWRyYXRlZFNvdXJjZXN8fG51bGwsZT0hMSxmPVwiXCIsZz1sbDtudWxsIT09YyYmdm9pZCAwIT09YyYmKCEwPT09Yy51bnN0YWJsZV9zdHJpY3RNb2RlJiYoZT0hMCksdm9pZCAwIT09Yy5pZGVudGlmaWVyUHJlZml4JiYoZj1jLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWMub25SZWNvdmVyYWJsZUVycm9yJiYoZz1jLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9ZmwoYixudWxsLGEsMSxudWxsIT1jP2M6bnVsbCxlLCExLGYsZyk7YVt1Zl09Yi5jdXJyZW50O3NmKGEpO2lmKGQpZm9yKGE9MDthPGQubGVuZ3RoO2ErKyljPWRbYV0sZT1jLl9nZXRWZXJzaW9uLGU9ZShjLl9zb3VyY2UpLG51bGw9PWIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT9iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W2MsZV06Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2goYyxcbmUpO3JldHVybiBuZXcgbmwoYil9O2V4cG9ydHMucmVuZGVyPWZ1bmN0aW9uKGEsYixjKXtpZighcGwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gc2wobnVsbCxhLGIsITEsYyl9O2V4cG9ydHMudW5tb3VudENvbXBvbmVudEF0Tm9kZT1mdW5jdGlvbihhKXtpZighcGwoYSkpdGhyb3cgRXJyb3IocCg0MCkpO3JldHVybiBhLl9yZWFjdFJvb3RDb250YWluZXI/KFNrKGZ1bmN0aW9uKCl7c2wobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbDthW3VmXT1udWxsfSl9KSwhMCk6ITF9O2V4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9Ums7XG5leHBvcnRzLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFwbChjKSl0aHJvdyBFcnJvcihwKDIwMCkpO2lmKG51bGw9PWF8fHZvaWQgMD09PWEuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKHAoMzgpKTtyZXR1cm4gc2woYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///799\n')},470:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar m = __webpack_require__(961);\nif (true) {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else { var i; }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcwLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxHQUFXO0FBQzNCLElBQUksSUFBcUM7QUFDekMsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxLQUFLLFVBa0JOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9jbGllbnQuanM/ZTQ2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///470\n")},961:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (false) {}\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (true) {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = __webpack_require__(799);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYxLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDLEVBQUUsRUFTMUM7QUFDSDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUNBQTZEO0FBQy9ELEVBQUUsS0FBSyxFQUVOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcz9lZjA3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///961\n")},218:(__unused_webpack_module,exports)=>{"use strict";eval('/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return"function"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return"object"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={"=":"=0",":":"=2"};return"$"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return"object"===typeof a&&null!==a&&null!=a.key?escape(""+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if("undefined"===k||"boolean"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=""===d?"."+Q(h,0):d,I(c)?(e="",null!=a&&(e=a.replace(P,"$&/")+"/"),R(c,b,e,"",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?"":(""+c.key).replace(P,"$&/")+"/")+a)),b.push(c)),1;h=0;d=""===d?".":d+":";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),"function"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if("object"===k)throw b=String(a),Error("Objects are not valid as a React child (found: "+("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,"","",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=""+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version="18.2.0";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLHFXQUFxVyxjQUFjLDZDQUE2QywyQkFBMkI7QUFDeGMsT0FBTyxxQkFBcUIsU0FBUyxnQ0FBZ0MsaUNBQWlDLDhCQUE4QixzQkFBc0Isa0JBQWtCLGFBQWEsZUFBZSxZQUFZLGtCQUFrQjtBQUN0TyxtQ0FBbUMsNExBQTRMLG1EQUFtRCxvQ0FBb0MsdURBQXVELGNBQWMsd0JBQXdCLGtCQUFrQixhQUFhLGVBQWUsWUFBWSxrQkFBa0I7QUFDL2QsZ0JBQWdCLGlCQUFpQiwwQkFBMEIseURBQXlELGFBQWEsSUFBSTtBQUNySSxrQkFBa0IsVUFBVSxlQUFlLDRIQUE0SCx5QkFBeUIsc0JBQXNCLGFBQWEsdUJBQXVCLElBQUksd0JBQXdCLGFBQWEsNEVBQTRFLE9BQU87QUFDdFgsZ0JBQWdCLE9BQU8sc0VBQXNFLGNBQWMsb0RBQW9ELG1CQUFtQixPQUFPLG1CQUFtQix3Q0FBd0MsWUFBWSxFQUFFLGFBQWEsZ0JBQWdCO0FBQy9SLHNCQUFzQixlQUFlLHlDQUF5QyxTQUFTLGlCQUFpQixlQUFlLGlDQUFpQyxNQUFNLGlDQUFpQyxvQkFBb0IsbUhBQW1ILFNBQVMsMkdBQTJHLElBQUksbUJBQW1CLG9CQUFvQixXQUFXLEtBQUs7QUFDcmYsS0FBSyxlQUFlLGdCQUFnQix5REFBeUQsbUJBQW1CLHdDQUF3Qyx5SUFBeUksOEJBQThCLGtGQUFrRjtBQUNqWixrQkFBa0Isb0JBQW9CLGFBQWEsd0JBQXdCLHVCQUF1QixFQUFFLFNBQVMsY0FBYyxtQkFBbUIsZ0JBQWdCLE1BQU0sbUJBQW1CLHlEQUF5RCxhQUFhLHlEQUF5RCxFQUFFLDBDQUEwQywwQ0FBMEM7QUFDNVksT0FBTyxhQUFhLElBQUksZ0JBQWdCLElBQUksd0VBQXdFLGdCQUFnQixFQUFFLDhCQUE4QixlQUFlLHdCQUF3QixJQUFJLG1CQUFtQixRQUFRLGVBQWUsSUFBSSxFQUFFLFNBQVMscUJBQXFCLHVCQUF1QixTQUFTLE1BQU0sa0JBQWtCLDhGQUE4RixXQUFXLGlCQUFpQixHQUFHLGdCQUFnQjtBQUNsZSxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyxrQkFBa0IsR0FBRyxnQkFBZ0IsR0FBRywwREFBMEQ7QUFDN0ksb0JBQW9CLGlCQUFpQiw0SEFBNEgsVUFBVSxxQ0FBcUMsWUFBWSxzQ0FBc0MsNkJBQTZCLHlEQUF5RCx5RkFBeUYseUJBQXlCLHNCQUFzQixhQUFhO0FBQzdlLFlBQVksSUFBSSx3QkFBd0IsYUFBYSxPQUFPLHNEQUFzRCxxQkFBcUIsYUFBYSxHQUFHLDRIQUE0SCxZQUFZLHVCQUF1QixxQkFBcUIscUJBQXFCLEdBQUcscUJBQXFCLGFBQWEscUJBQXFCLFNBQVMsVUFBVSxpQkFBaUIsWUFBWSxPQUFPO0FBQ2pkLGtCQUFrQixhQUFhLE9BQU8sc0JBQXNCLHNCQUFzQixHQUFHLFlBQVksYUFBYSxPQUFPLHFCQUFxQixxQkFBcUIsV0FBVyxZQUFZLGVBQWUsT0FBTyw4Q0FBOEMsdUJBQXVCLGFBQWEsbUJBQW1CLGdCQUFnQixJQUFJLElBQUksUUFBUSxpQkFBaUIsb0JBQW9CLFlBQVk7QUFDbFksbUJBQW1CLGVBQWUsbUNBQW1DLGtCQUFrQixhQUFhLGdDQUFnQyxxQkFBcUIsY0FBYyx3QkFBd0IsYUFBYSxzQ0FBc0MsaUJBQWlCLGVBQWUsaUNBQWlDLGFBQWEsWUFBWSwwQkFBMEIsMkJBQTJCLGlCQUFpQjtBQUNsWiwwQkFBMEIsZUFBZSwwQ0FBMEMsdUJBQXVCLGVBQWUsdUNBQXVDLGVBQWUsZUFBZSwrQkFBK0Isa0JBQWtCLGlCQUFpQixvQ0FBb0MsY0FBYyxhQUFhLDRCQUE0QixnQkFBZ0IsYUFBYSw4QkFBOEIsNEJBQTRCLGlCQUFpQjtBQUNuYyxxQkFBcUIsWUFBWSxrQ0FBa0MsZUFBZSIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanM/ZDEzOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGw9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHA9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIikseD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHo9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEEoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPXomJmFbel18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1cbnZhciBCPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPU9iamVjdC5hc3NpZ24sRD17fTtmdW5jdGlvbiBFKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fTtcbkUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihcInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0UucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGU9RS5wcm90b3R5cGU7ZnVuY3Rpb24gRyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfXZhciBIPUcucHJvdG90eXBlPW5ldyBGO1xuSC5jb25zdHJ1Y3Rvcj1HO0MoSCxFLnByb3RvdHlwZSk7SC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgST1BcnJheS5pc0FycmF5LEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLPXtjdXJyZW50Om51bGx9LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGUpe3ZhciBkLGM9e30saz1udWxsLGg9bnVsbDtpZihudWxsIT1iKWZvcihkIGluIHZvaWQgMCE9PWIucmVmJiYoaD1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihrPVwiXCIrYi5rZXkpLGIpSi5jYWxsKGIsZCkmJiFMLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1iW2RdKTt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpYy5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxnKXtmb3IodmFyIGY9QXJyYXkoZyksbT0wO208ZzttKyspZlttXT1hcmd1bWVudHNbbSsyXTtjLmNoaWxkcmVuPWZ9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGQgaW4gZz1hLmRlZmF1bHRQcm9wcyxnKXZvaWQgMD09PWNbZF0mJihjW2RdPWdbZF0pO3JldHVybnskJHR5cGVvZjpsLHR5cGU6YSxrZXk6ayxyZWY6aCxwcm9wczpjLF9vd25lcjpLLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09bH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2EucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZztmdW5jdGlvbiBRKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKFwiXCIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfVxuZnVuY3Rpb24gUihhLGIsZSxkLGMpe3ZhciBrPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1rfHxcImJvb2xlYW5cIj09PWspYT1udWxsO3ZhciBoPSExO2lmKG51bGw9PT1hKWg9ITA7ZWxzZSBzd2l0Y2goayl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBsOmNhc2UgbjpoPSEwfX1pZihoKXJldHVybiBoPWEsYz1jKGgpLGE9XCJcIj09PWQ/XCIuXCIrUShoLDApOmQsSShjKT8oZT1cIlwiLG51bGwhPWEmJihlPWEucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSxSKGMsYixlLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KSk6bnVsbCE9YyYmKE8oYykmJihjPU4oYyxlKyghYy5rZXl8fGgmJmgua2V5PT09Yy5rZXk/XCJcIjooXCJcIitjLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSthKSksYi5wdXNoKGMpKSwxO2g9MDtkPVwiXCI9PT1kP1wiLlwiOmQrXCI6XCI7aWYoSShhKSlmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7az1cbmFbZ107dmFyIGY9ZCtRKGssZyk7aCs9UihrLGIsZSxmLGMpfWVsc2UgaWYoZj1BKGEpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxnPTA7IShrPWEubmV4dCgpKS5kb25lOylrPWsudmFsdWUsZj1kK1EoayxnKyspLGgrPVIoayxiLGUsZixjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1rKXRocm93IGI9U3RyaW5nKGEpLEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PWI/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhhKS5qb2luKFwiLCBcIikrXCJ9XCI6YikrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpO3JldHVybiBofVxuZnVuY3Rpb24gUyhhLGIsZSl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZD1bXSxjPTA7UihhLGQsXCJcIixcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gZH1mdW5jdGlvbiBUKGEpe2lmKC0xPT09YS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7Yi50aGVuKGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1ifSxmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yn0pOy0xPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTAsYS5fcmVzdWx0PWIpfWlmKDE9PT1hLl9zdGF0dXMpcmV0dXJuIGEuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGEuX3Jlc3VsdDt9XG52YXIgVT17Y3VycmVudDpudWxsfSxWPXt0cmFuc2l0aW9uOm51bGx9LFc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpWLFJlYWN0Q3VycmVudE93bmVyOkt9O2V4cG9ydHMuQ2hpbGRyZW49e21hcDpTLGZvckVhY2g6ZnVuY3Rpb24oYSxiLGUpe1MoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX0sY291bnQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtTKGEsZnVuY3Rpb24oKXtiKyt9KTtyZXR1cm4gYn0sdG9BcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gUyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBhfX07ZXhwb3J0cy5Db21wb25lbnQ9RTtleHBvcnRzLkZyYWdtZW50PXA7XG5leHBvcnRzLlByb2ZpbGVyPXI7ZXhwb3J0cy5QdXJlQ29tcG9uZW50PUc7ZXhwb3J0cy5TdHJpY3RNb2RlPXE7ZXhwb3J0cy5TdXNwZW5zZT13O2V4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9VztcbmV4cG9ydHMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixlKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcihcIlJlYWN0LmNsb25lRWxlbWVudCguLi4pOiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiK2ErXCIuXCIpO3ZhciBkPUMoe30sYS5wcm9wcyksYz1hLmtleSxrPWEucmVmLGg9YS5fb3duZXI7aWYobnVsbCE9Yil7dm9pZCAwIT09Yi5yZWYmJihrPWIucmVmLGg9Sy5jdXJyZW50KTt2b2lkIDAhPT1iLmtleSYmKGM9XCJcIitiLmtleSk7aWYoYS50eXBlJiZhLnR5cGUuZGVmYXVsdFByb3BzKXZhciBnPWEudHlwZS5kZWZhdWx0UHJvcHM7Zm9yKGYgaW4gYilKLmNhbGwoYixmKSYmIUwuaGFzT3duUHJvcGVydHkoZikmJihkW2ZdPXZvaWQgMD09PWJbZl0mJnZvaWQgMCE9PWc/Z1tmXTpiW2ZdKX12YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZC5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxmKXtnPUFycmF5KGYpO1xuZm9yKHZhciBtPTA7bTxmO20rKylnW21dPWFyZ3VtZW50c1ttKzJdO2QuY2hpbGRyZW49Z31yZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YyxyZWY6ayxwcm9wczpkLF9vd25lcjpofX07ZXhwb3J0cy5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGEpe2E9eyQkdHlwZW9mOnUsX2N1cnJlbnRWYWx1ZTphLF9jdXJyZW50VmFsdWUyOmEsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9kZWZhdWx0VmFsdWU6bnVsbCxfZ2xvYmFsTmFtZTpudWxsfTthLlByb3ZpZGVyPXskJHR5cGVvZjp0LF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPWF9O2V4cG9ydHMuY3JlYXRlRWxlbWVudD1NO2V4cG9ydHMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1NLmJpbmQobnVsbCxhKTtiLnR5cGU9YTtyZXR1cm4gYn07ZXhwb3J0cy5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX07XG5leHBvcnRzLmZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnYscmVuZGVyOmF9fTtleHBvcnRzLmlzVmFsaWRFbGVtZW50PU87ZXhwb3J0cy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp5LF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6YX0sX2luaXQ6VH19O2V4cG9ydHMubWVtbz1mdW5jdGlvbihhLGIpe3JldHVybnskJHR5cGVvZjp4LHR5cGU6YSxjb21wYXJlOnZvaWQgMD09PWI/bnVsbDpifX07ZXhwb3J0cy5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9Vi50cmFuc2l0aW9uO1YudHJhbnNpdGlvbj17fTt0cnl7YSgpfWZpbmFsbHl7Vi50cmFuc2l0aW9uPWJ9fTtleHBvcnRzLnVuc3RhYmxlX2FjdD1mdW5jdGlvbigpe3Rocm93IEVycm9yKFwiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC5cIik7fTtcbmV4cG9ydHMudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNhbGxiYWNrKGEsYil9O2V4cG9ydHMudXNlQ29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNvbnRleHQoYSl9O2V4cG9ydHMudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe307ZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShhKX07ZXhwb3J0cy51c2VFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VJZCgpfTtleHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShhLGIsZSl9O1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTGF5b3V0RWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlUmVkdWNlcihhLGIsZSl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlU3RhdGUoYSl9O2V4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoYSxiLGUpfTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfTtleHBvcnRzLnZlcnNpb249XCIxOC4yLjBcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///218\n')},526:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nif (true) {\n module.exports = __webpack_require__(218);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTI2LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksSUFBcUM7QUFDekMsRUFBRSx5Q0FBeUQ7QUFDM0QsRUFBRSxLQUFLLEVBRU4iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvcmVhY3QvaW5kZXguanM/Y2E3OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///526\n")},390:module=>{eval('/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n "use strict";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === "function" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || "@@iterator";\n var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";\n var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, "");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there\'s no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don\'t have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: "normal", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: "throw", arg: err };\n }\n }\n\n var GenStateSuspendedStart = "suspendedStart";\n var GenStateSuspendedYield = "suspendedYield";\n var GenStateExecuting = "executing";\n var GenStateCompleted = "completed";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don\'t natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n "constructor",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n "GeneratorFunction"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n ["next", "throw", "return"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === "function" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === "GeneratorFunction"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, "GeneratorFunction");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, "__await")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === "throw") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === "object" &&\n hasOwn.call(value, "__await")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke("next", value, resolve, reject);\n }, function(err) {\n invoke("throw", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke("throw", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, "_invoke", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error("Generator is already running");\n }\n\n if (state === GenStateCompleted) {\n if (method === "throw") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === "next") {\n // Setting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === "throw") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === "return") {\n context.abrupt("return", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === "normal") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === "throw") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = "throw";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: ["return"] must be used for ES3 parsing compatibility.\n if (methodName === "throw" && delegate.iterator["return"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = "return";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === "throw") {\n // If maybeInvokeDelegate(context) changed context.method from\n // "return" to "throw", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== "return") {\n context.method = "throw";\n context.arg = new TypeError(\n "The iterator does not provide a \'" + methodName + "\' method");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === "throw") {\n context.method = "throw";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = "throw";\n context.arg = new TypeError("iterator result is not an object");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was "throw" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was "next", forget context.arg since it has been\n // "consumed" by the delegate iterator. If context.method was\n // "return", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== "return") {\n context.method = "next";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, "Generator");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers\' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn\'t happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, "toString", function() {\n return "[object Generator]";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = "normal";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: "root" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === "function") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = "next";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === "t" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === "throw") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = "throw";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = "next";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === "root") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle("end");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, "catchLoc");\n var hasFinally = hasOwn.call(entry, "finallyLoc");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error("try statement without catch or finally");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, "finallyLoc") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === "break" ||\n type === "continue") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = "next";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === "throw") {\n throw record.arg;\n }\n\n if (record.type === "break" ||\n record.type === "continue") {\n this.next = record.arg;\n } else if (record.type === "return") {\n this.rval = this.arg = record.arg;\n this.method = "return";\n this.next = "end";\n } else if (record.type === "normal" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n "catch": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === "throw") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error("illegal catch attempt");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === "next") {\n // Deliberately forget the last sent value so that we don\'t\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : 0\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you\'ve misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you\'re not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === "object") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function("r", "regeneratorRuntime = r")(runtime);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkwLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUUsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLGlEQUFpRDs7QUFFNUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixNQUFNO0FBQ04sZUFBZTtBQUNmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyx1REFBdUQ7QUFDN0Y7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLFdBQVc7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQyxnQkFBZ0I7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyxjQUFjO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxtQkFBbUI7QUFDcEQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUEsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsS0FBMEIsb0JBQW9CLENBQUU7QUFDbEQ7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz9iNjY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZnVuY3Rpb24gKG9iaiwga2V5LCBkZXNjKSB7IG9ialtrZXldID0gZGVzYy52YWx1ZTsgfTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLCBcIl9pbnZva2VcIiwgeyB2YWx1ZTogbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB9KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgZGVmaW5lKEl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBkZWZpbmVQcm9wZXJ0eShHcCwgXCJjb25zdHJ1Y3RvclwiLCB7IHZhbHVlOiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICBkZWZpbmVQcm9wZXJ0eShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICBcImNvbnN0cnVjdG9yXCIsXG4gICAgeyB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb24sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9XG4gICk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKFxuICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLFxuICAgIHRvU3RyaW5nVGFnU3ltYm9sLFxuICAgIFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICApO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIGRlZmluZShwcm90b3R5cGUsIG1ldGhvZCwgZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBleHBvcnRzLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGRlZmluZShnZW5GdW4sIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBleHBvcnRzLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIC8vIElmIGEgcmVqZWN0ZWQgUHJvbWlzZSB3YXMgeWllbGRlZCwgdGhyb3cgdGhlIHJlamVjdGlvbiBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSBoYW5kbGVkIHRoZXJlLlxuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VJbXBsKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIl9pbnZva2VcIiwgeyB2YWx1ZTogZW5xdWV1ZSB9KTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIGRlZmluZShBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSwgYXN5bmNJdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2ROYW1lID0gY29udGV4dC5tZXRob2Q7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW21ldGhvZE5hbWVdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QsIG9yIGEgbWlzc2luZyAubmV4dCBtZWh0b2QsIGFsd2F5cyB0ZXJtaW5hdGUgdGhlXG4gICAgICAvLyB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgaWYgKG1ldGhvZE5hbWUgPT09IFwidGhyb3dcIiAmJiBkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXSkge1xuICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWV0aG9kTmFtZSAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBtZXRob2ROYW1lICsgXCInIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIGRlZmluZShHcCwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICBkZWZpbmUoR3AsIFwidG9TdHJpbmdcIiwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24odmFsKSB7XG4gICAgdmFyIG9iamVjdCA9IE9iamVjdCh2YWwpO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xuXG4gIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgLy8gb3Igbm90LCByZXR1cm4gdGhlIHJ1bnRpbWUgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIGRlY2xhcmUgdGhlIHZhcmlhYmxlXG4gIC8vIHJlZ2VuZXJhdG9yUnVudGltZSBpbiB0aGUgb3V0ZXIgc2NvcGUsIHdoaWNoIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZVxuICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICByZXR1cm4gZXhwb3J0cztcblxufShcbiAgLy8gSWYgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlLCB1c2UgbW9kdWxlLmV4cG9ydHNcbiAgLy8gYXMgdGhlIHJlZ2VuZXJhdG9yUnVudGltZSBuYW1lc3BhY2UuIE90aGVyd2lzZSBjcmVhdGUgYSBuZXcgZW1wdHlcbiAgLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuICAvLyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIHZhcmlhYmxlIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLlxuICB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiID8gbW9kdWxlLmV4cG9ydHMgOiB7fVxuKSk7XG5cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAvLyBhc3NpZ25tZW50IHNob3VsZCBhbHdheXMgd29yayB1bmxlc3Mgc29tZXRoaW5nIGlzIG1pc2NvbmZpZ3VyZWQuIEp1c3RcbiAgLy8gaW4gY2FzZSBydW50aW1lLmpzIGFjY2lkZW50YWxseSBydW5zIGluIHN0cmljdCBtb2RlLCBpbiBtb2Rlcm4gZW5naW5lc1xuICAvLyB3ZSBjYW4gZXhwbGljaXRseSBhY2Nlc3MgZ2xvYmFsVGhpcy4gSW4gb2xkZXIgZW5naW5lcyB3ZSBjYW4gZXNjYXBlXG4gIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAvLyBpZiBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGZvcmJpZHMgdXNpbmcgRnVuY3Rpb24sIGJ1dCBpbiB0aGF0IGNhc2VcbiAgLy8gdGhlIHByb3BlciBzb2x1dGlvbiBpcyB0byBmaXggdGhlIGFjY2lkZW50YWwgc3RyaWN0IG1vZGUgcHJvYmxlbS4gSWZcbiAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgLy8gQ1NQIHRvIGZvcmJpZCBGdW5jdGlvbiwgYW5kIHlvdSdyZSBub3Qgd2lsbGluZyB0byBmaXggZWl0aGVyIG9mIHRob3NlXG4gIC8vIHByb2JsZW1zLCBwbGVhc2UgZGV0YWlsIHlvdXIgdW5pcXVlIHByZWRpY2FtZW50IGluIGEgR2l0SHViIGlzc3VlLlxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///390\n')},196:(__unused_webpack_module,exports)=>{"use strict";eval('/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if("object"===typeof performance&&"function"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D="function"===typeof setTimeout?setTimeout:null,E="function"===typeof clearTimeout?clearTimeout:null,F="undefined"!==typeof setImmediate?setImmediate:null;\n"undefined"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if("function"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();"function"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if("function"===typeof F)S=function(){F(R)};else if("undefined"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLGdCQUFnQixlQUFlLFVBQVUsT0FBTyxJQUFJLEVBQUUscUJBQXFCLDhCQUE4QixjQUFjLGNBQWMsOEJBQThCLGNBQWMsNEJBQTRCLHFCQUFxQixVQUFVLE9BQU8saUNBQWlDLElBQUksRUFBRSxvQ0FBb0Msa0VBQWtFLHdDQUF3QyxjQUFjO0FBQ25jLGdCQUFnQiw4QkFBOEIseUJBQXlCLHVFQUF1RSxrQkFBa0Isb0JBQW9CLFlBQVksZ0JBQWdCLEtBQUsscUJBQXFCLG9CQUFvQixZQUFZLGtCQUFrQjtBQUM1Uiw0S0FBNEssY0FBYyxlQUFlLFNBQVMsRUFBRSwwQkFBMEIsZ0VBQWdFLFdBQVcsUUFBUSxjQUFjLEtBQUssS0FBSywrQkFBK0IsS0FBSyxXQUFXO0FBQ3hZLGdCQUFnQixLQUFLLG9CQUFvQixLQUFLLFFBQVEsSUFBSSxLQUFLLFdBQVcsMkNBQTJDLEVBQUUsaUJBQWlCLDBCQUEwQixnQkFBZ0Isa0JBQWtCLDZCQUE2Qix5QkFBeUIsa0RBQWtELEtBQUssVUFBVSxPQUFPLHFCQUFxQixLQUFLLFdBQVcsNkJBQTZCLEtBQUssU0FBUyxRQUFRLGlCQUFpQjtBQUMzYSxhQUFhLHdDQUF3QyxhQUFhLGFBQWEsNkJBQTZCLElBQUksU0FBUyxJQUFJLFVBQVUsUUFBUSxxQkFBcUIsVUFBVSxNQUFNLHNDQUFzQyxNQUFNLDZDQUE2QyxtQ0FBbUMsb0JBQW9CLGFBQWEscUJBQXFCLGtCQUFrQixRQUFRLGNBQWMsSUFBSSxjQUFjLGdCQUFnQixlQUFlLDBCQUEwQjtBQUN6ZCw2QkFBNkIsR0FBRyxrQ0FBa0MsR0FBRyw0QkFBNEIsR0FBRywrQkFBK0IsR0FBRywwQkFBMEIsTUFBTSxxQ0FBcUMsR0FBRywrQkFBK0IsYUFBYSxpQkFBaUIsa0NBQWtDLFlBQVk7QUFDelQsK0JBQStCLGFBQWEsdUtBQXVLLHdDQUF3QyxZQUFZLFVBQVUscUNBQXFDLFlBQVksYUFBYSxxQkFBcUIsYUFBYSxVQUFVLDZCQUE2QixNQUFNLFlBQVksUUFBUSxJQUFJLElBQUksV0FBVyxRQUFRLE1BQU0sK0JBQStCO0FBQ2xmLDZCQUE2QixjQUFjLGdDQUFnQyxlQUFlLFVBQVUseUNBQXlDLFlBQVksUUFBUSxJQUFJLElBQUksV0FBVyxRQUFRO0FBQzVMLGlDQUFpQyxpQkFBaUIsNkJBQTZCLCtFQUErRSxVQUFVLGdCQUFnQixNQUFNLGFBQWEsTUFBTSxvQkFBb0IsTUFBTSxhQUFhLE1BQU0sY0FBYyxNQUFNLEdBQUcsNkVBQTZFLHlIQUF5SDtBQUMzZCw0QkFBNEIsR0FBRyw2QkFBNkIsYUFBYSxRQUFRLGtCQUFrQixRQUFRLElBQUksSUFBSSwrQkFBK0IsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcz9mODE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///196\n')},851:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nif (true) {\n module.exports = __webpack_require__(196);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUxLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksSUFBcUM7QUFDekMsRUFBRSx5Q0FBNkQ7QUFDL0QsRUFBRSxLQUFLLEVBRU4iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzPzk1YjYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///851\n")}},__webpack_module_cache__={};function __webpack_require__(F){var l=__webpack_module_cache__[F];if(void 0!==l)return l.exports;var Q=__webpack_module_cache__[F]={exports:{}};return __webpack_modules__[F](Q,Q.exports,__webpack_require__),Q.exports}__webpack_require__.n=F=>{var l=F&&F.__esModule?()=>F.default:()=>F;return __webpack_require__.d(l,{a:l}),l},__webpack_require__.d=(F,l)=>{for(var Q in l)__webpack_require__.o(l,Q)&&!__webpack_require__.o(F,Q)&&Object.defineProperty(F,Q,{enumerable:!0,get:l[Q]})},__webpack_require__.o=(F,l)=>Object.prototype.hasOwnProperty.call(F,l),__webpack_require__.r=F=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(F,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(F,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(557);window.CaosDBWebui2=__webpack_exports__})(); \ No newline at end of file +(()=>{var __webpack_modules__={557:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(526);\n/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(470);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(390);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(787);\n/* harmony import */ var _indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3__);\nfunction _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }\nfunction _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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a \'" + methodName + "\' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction 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); } }\nfunction _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); }); }; }\n\n\n\n\nvar get_filesystem_body = function get_filesystem_body() {\n return document.querySelector("#caosdb-f-filesystem .card-body");\n};\nvar get_filesystem_header = function get_filesystem_header() {\n return document.querySelector("#caosdb-f-filesystem .card-header");\n};\n\n/**\n * Return an array of the currently shown directory (file system view).\n */\nvar get_current_directory = function get_current_directory() {\n var header = get_filesystem_header();\n if (!header) {\n return [];\n }\n return Array.from(header.getElementsByClassName("caosdb-fs-cwd")).map(function (el) {\n return el.textContent;\n });\n};\n\n/**\n * Construct the XML payload for file insertion.\n */\nvar create_file_upload_request_xml = function create_file_upload_request_xml(files, targetDirectory, recordType) {\n var _parent = recordType ? "<Parent id=\\"".concat(recordType, "\\"/>") : "";\n var request = "<Request>" + files.map(function (f, idx) {\n return "<File upload=\\"".concat(idx, "-").concat(f.name, "\\" path=\\"").concat(targetDirectory).concat(f.name, "\\">").concat(_parent, "</File>");\n }) + "</Request>";\n return request;\n};\n\n/**\n * Put all the XML payload and the files into a form data object (for upload).\n */\nvar create_form_data = function create_form_data(xml, files) {\n var formData = new FormData();\n formData.append("FileRepresentation", xml);\n files.forEach(function (f, idx) {\n var name = "".concat(idx, "-").concat(f.name);\n formData.append(name, f.file, name);\n });\n return formData;\n};\n\n/**\n * Split up the link to the file in the entity view. The two new links point to\n * the file (for download) and to the parent directory (for browsing the file\n * system).\n */\nvar split_parent_dir = function split_parent_dir(node) {\n repair_uri(node, "href");\n var path_old = node.getAttribute("href").substring(connection.getFileSystemPath().length).split("/");\n if (path_old.length > 1) {\n var parent_dir = path_old.slice(0, path_old.length - 1);\n var parent_dir_node = node.cloneNode();\n parent_dir_node.setAttribute("href", connection.getFileSystemPath() + parent_dir.join("/") + "/");\n parent_dir_node.textContent = parent_dir.join("/") + "/";\n parent_dir_node.title = "Go to parent directory.";\n node.before(parent_dir_node);\n node.dataset.entityPath = node.textContent;\n node.textContent = node.textContent.split("/").slice(-1)[0];\n node.title = "Download this file";\n }\n};\n\n/**\n * Repairs broken links (e.g. when files have strange names)\n */\nvar repair_uri = function repair_uri(node, attr) {\n var path_old = node.getAttribute(attr).substring(connection.getFileSystemPath().length).split("/");\n var path_new = path_old.map(encodeURIComponent);\n node.setAttribute(attr, connection.getFileSystemPath() + path_new.join("/"));\n};\n\n/**\n * Perform the actual AJAX request (returns Promise).\n */\nvar uploadRequest = function uploadRequest(formData) {\n return $.ajax({\n url: connection.getBasePath() + "Entity/",\n method: "POST",\n dataType: "xml",\n contentType: false,\n processData: false,\n data: formData\n });\n};\n\n/**\n * This onSubmit implementation works for the legacy REST API.\n */\nvar defaultOnSubmit = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) {\n var _document$querySelect;\n var files, directory, recordType, xml, formData, response, iterator, newFiles, next, hasErrors, _response$evaluate, _response$evaluate2, _response$evaluate3, error, path, id, _response$evaluate4;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n (_document$querySelect = document.querySelector("#collapseFileUpload~ul")) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.remove();\n files = data.files, directory = data.directory, recordType = data.recordType;\n directory = directory || [];\n directory = directory.length > 0 ? "/" + directory.join("/") + "/" : "/";\n xml = create_file_upload_request_xml(files, directory, recordType);\n formData = create_form_data(xml, files);\n _context.next = 8;\n return uploadRequest(formData);\n case 8:\n response = _context.sent;\n iterator = response.evaluate("/Response/File", response, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE);\n newFiles = [];\n next = iterator.iterateNext();\n hasErrors = false;\n while (next) {\n error = (_response$evaluate = response.evaluate("Error", next, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE)) === null || _response$evaluate === void 0 ? void 0 : _response$evaluate.iterateNext();\n path = (_response$evaluate2 = response.evaluate("@path", next, null, XPathResult.STRING_TYPE)) === null || _response$evaluate2 === void 0 ? void 0 : _response$evaluate2.stringValue;\n id = (_response$evaluate3 = response.evaluate("@id", next, null, XPathResult.STRING_TYPE)) === null || _response$evaluate3 === void 0 ? void 0 : _response$evaluate3.stringValue;\n if (error) {\n hasErrors = true;\n error = (_response$evaluate4 = response.evaluate("@description", error, null, XPathResult.STRING_TYPE)) === null || _response$evaluate4 === void 0 ? void 0 : _response$evaluate4.stringValue;\n }\n newFiles.push({\n error: error,\n id: id,\n path: path,\n url: !id || connection.getBasePath() + "Entity/" + id\n });\n next = iterator.iterateNext();\n }\n return _context.abrupt("return", {\n hasErrors: hasErrors,\n url: connection.getBasePath() + "FileSystem/" + directory,\n directory: directory,\n newFiles: newFiles\n });\n case 15:\n case "end":\n return _context.stop();\n }\n }, _callee);\n }));\n return function defaultOnSubmit(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Suitable for our purpose here means: Permission to USE:AS_PARENT is granted\n * and the RecordType doesn\'t have any obligatory properties.\n */\nvar findSuitableRecordTypes = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n var response, iterator, results, n, _response$evaluate5, _response$evaluate6, _response$evaluate7, hasUsePermission, hasObligatoryProperties;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return connection.get("Entity/?query=FIND RECORDTYPE");\n case 2:\n response = _context2.sent;\n iterator = response.evaluate("/Response/RecordType", response, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE);\n results = [];\n case 5:\n if (false) {}\n n = iterator.iterateNext();\n if (n) {\n _context2.next = 9;\n break;\n }\n return _context2.abrupt("break", 18);\n case 9:\n hasUsePermission = response.evaluate("Permissions/Permission[@name=\'USE:AS_PARENT\']", n, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE).iterateNext();\n if (hasUsePermission) {\n _context2.next = 12;\n break;\n }\n return _context2.abrupt("continue", 5);\n case 12:\n hasObligatoryProperties = response.evaluate("Property[@importance=\'OBLIGATORY\']", n, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE).iterateNext();\n if (!hasObligatoryProperties) {\n _context2.next = 15;\n break;\n }\n return _context2.abrupt("continue", 5);\n case 15:\n results.push({\n name: (_response$evaluate5 = response.evaluate("@name", n, null, XPathResult.STRING_TYPE)) === null || _response$evaluate5 === void 0 ? void 0 : _response$evaluate5.stringValue,\n id: (_response$evaluate6 = response.evaluate("@id", n, null, XPathResult.STRING_TYPE)) === null || _response$evaluate6 === void 0 ? void 0 : _response$evaluate6.stringValue,\n description: (_response$evaluate7 = response.evaluate("@description", n, null, XPathResult.STRING_TYPE)) === null || _response$evaluate7 === void 0 ? void 0 : _response$evaluate7.stringValue\n });\n _context2.next = 5;\n break;\n case 18:\n return _context2.abrupt("return", results);\n case 19:\n case "end":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function findSuitableRecordTypes() {\n return _ref2.apply(this, arguments);\n };\n}();\nvar file_upload = {\n get_record_types: function () {\n var _get_record_types = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return findSuitableRecordTypes();\n case 2:\n return _context3.abrupt("return", _context3.sent);\n case 3:\n case "end":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function get_record_types() {\n return _get_record_types.apply(this, arguments);\n }\n return get_record_types;\n }(),\n create_file_upload_widget: function create_file_upload_widget(container, config) {\n var root = react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot(container);\n var _config = config || {};\n if (!_config.hasOwnProperty("onSubmit")) {\n _config.onSubmit = defaultOnSubmit;\n }\n if (!_config.hasOwnProperty("recordTypes")) {\n _config.recordTypes = this.get_record_types().then(function (results) {\n return results.map(function (rt) {\n return {\n label: rt.name,\n value: rt.id,\n title: rt.description\n };\n });\n });\n }\n root.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.StrictMode, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("form", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_indiscale_caosdb_webui_core_components__WEBPACK_IMPORTED_MODULE_3__.FileUpload, _config))));\n },\n /**\n * This is the "+" button shown in the file system view.\n */\n create_upload_button: function create_upload_button() {\n var button = $("\\n <button class=\\"py-0 px-1 ms-2 btn btn-primary\\" type=\\"button\\" data-bs-toggle=\\"collapse\\" data-bs-target=\\"#collapseFileUpload\\" aria-expanded=\\"false\\" aria-controls=\\"collapseFileUpload\\">\\n <span class=\\"bi bi-plus-lg\\"/>\\n </button>");\n var _onClick = function _onClick() {\n button[0].classList.add("d-none");\n };\n button.on("click", _onClick);\n return button[0];\n },\n init_file_upload: function init_file_upload() {\n var _get_filesystem_heade;\n var container = $("<div class=\\"row collapse mb-5\\" id=\\"collapseFileUpload\\"/>");\n var filesystem_header = (_get_filesystem_heade = get_filesystem_header()) === null || _get_filesystem_heade === void 0 ? void 0 : _get_filesystem_heade.querySelector("div.text-end");\n var filesystem_body = get_filesystem_body();\n if (filesystem_body && filesystem_header) {\n var button = this.create_upload_button();\n filesystem_header.appendChild(button);\n $(filesystem_body).prepend(container);\n var config = {\n directoryReadOnly: false,\n directoryBase: get_current_directory(),\n onCancel: function onCancel() {\n button.click();\n button.classList.remove("d-none");\n },\n onFinish: function onFinish() {\n window.location.reload();\n }\n };\n this.create_file_upload_widget(container[0], config);\n }\n },\n repair_file_system_links: function repair_file_system_links() {\n // entity view\n document.querySelectorAll(".caosdb-entity-heading-attr a").forEach(split_parent_dir);\n\n // filesystem view\n document.querySelectorAll("img.entity-image-preview").forEach(function (node) {\n return repair_uri(node, "src");\n });\n document.querySelectorAll("a.caosdb-fs-file").forEach(function (node) {\n return repair_uri(node, "href");\n });\n document.querySelectorAll("a.caosdb-fs-dir").forEach(function (node) {\n return repair_uri(node, "href");\n });\n },\n init: function () {\n var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n this.init_file_upload();\n this.repair_file_system_links();\n\n // this object can be used to create a widget, e.g. for creating custom\n // upload forms.\n window.caosdb_file_upload_widget = this;\n case 3:\n case "end":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n function init() {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n};\n$(document).ready(function () {\n var build = window.BUILD_MODULE_EXT_FILE_UPLOAD || "${BUILD_MODULE_EXT_FILE_UPLOAD}";\n if (build === "ENABLED") {\n caosdb_modules.register(file_upload);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTU3LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxPQUFBLFNBQUFBLE9BQUEsT0FBQUMsRUFBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsTUFBQSxHQUFBSCxFQUFBLENBQUFJLGNBQUEsRUFBQUMsY0FBQSxHQUFBSixNQUFBLENBQUFJLGNBQUEsY0FBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLElBQUEsSUFBQUYsR0FBQSxDQUFBQyxHQUFBLElBQUFDLElBQUEsQ0FBQUMsS0FBQSxLQUFBQyxPQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsY0FBQSxHQUFBRixPQUFBLENBQUFHLFFBQUEsa0JBQUFDLG1CQUFBLEdBQUFKLE9BQUEsQ0FBQUssYUFBQSx1QkFBQUMsaUJBQUEsR0FBQU4sT0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBWixHQUFBLEVBQUFDLEdBQUEsRUFBQUUsS0FBQSxXQUFBUixNQUFBLENBQUFJLGNBQUEsQ0FBQUMsR0FBQSxFQUFBQyxHQUFBLElBQUFFLEtBQUEsRUFBQUEsS0FBQSxFQUFBVSxVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBZixHQUFBLENBQUFDLEdBQUEsV0FBQVcsTUFBQSxtQkFBQUksR0FBQSxJQUFBSixNQUFBLFlBQUFBLE9BQUFaLEdBQUEsRUFBQUMsR0FBQSxFQUFBRSxLQUFBLFdBQUFILEdBQUEsQ0FBQUMsR0FBQSxJQUFBRSxLQUFBLGdCQUFBYyxLQUFBQyxPQUFBLEVBQUFDLE9BQUEsRUFBQUMsSUFBQSxFQUFBQyxXQUFBLFFBQUFDLGNBQUEsR0FBQUgsT0FBQSxJQUFBQSxPQUFBLENBQUF2QixTQUFBLFlBQUEyQixTQUFBLEdBQUFKLE9BQUEsR0FBQUksU0FBQSxFQUFBQyxTQUFBLEdBQUE3QixNQUFBLENBQUE4QixNQUFBLENBQUFILGNBQUEsQ0FBQTFCLFNBQUEsR0FBQThCLE9BQUEsT0FBQUMsT0FBQSxDQUFBTixXQUFBLGdCQUFBdEIsY0FBQSxDQUFBeUIsU0FBQSxlQUFBckIsS0FBQSxFQUFBeUIsZ0JBQUEsQ0FBQVYsT0FBQSxFQUFBRSxJQUFBLEVBQUFNLE9BQUEsTUFBQUYsU0FBQSxhQUFBSyxTQUFBQyxFQUFBLEVBQUE5QixHQUFBLEVBQUErQixHQUFBLG1CQUFBQyxJQUFBLFlBQUFELEdBQUEsRUFBQUQsRUFBQSxDQUFBRyxJQUFBLENBQUFqQyxHQUFBLEVBQUErQixHQUFBLGNBQUFmLEdBQUEsYUFBQWdCLElBQUEsV0FBQUQsR0FBQSxFQUFBZixHQUFBLFFBQUF2QixPQUFBLENBQUF3QixJQUFBLEdBQUFBLElBQUEsTUFBQWlCLGdCQUFBLGdCQUFBWCxVQUFBLGNBQUFZLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLGlCQUFBLE9BQUF6QixNQUFBLENBQUF5QixpQkFBQSxFQUFBL0IsY0FBQSxxQ0FBQWdDLFFBQUEsR0FBQTNDLE1BQUEsQ0FBQTRDLGNBQUEsRUFBQUMsdUJBQUEsR0FBQUYsUUFBQSxJQUFBQSxRQUFBLENBQUFBLFFBQUEsQ0FBQUcsTUFBQSxRQUFBRCx1QkFBQSxJQUFBQSx1QkFBQSxLQUFBOUMsRUFBQSxJQUFBRyxNQUFBLENBQUFvQyxJQUFBLENBQUFPLHVCQUFBLEVBQUFsQyxjQUFBLE1BQUErQixpQkFBQSxHQUFBRyx1QkFBQSxPQUFBRSxFQUFBLEdBQUFOLDBCQUFBLENBQUF4QyxTQUFBLEdBQUEyQixTQUFBLENBQUEzQixTQUFBLEdBQUFELE1BQUEsQ0FBQThCLE1BQUEsQ0FBQVksaUJBQUEsWUFBQU0sc0JBQUEvQyxTQUFBLGdDQUFBZ0QsT0FBQSxXQUFBQyxNQUFBLElBQUFqQyxNQUFBLENBQUFoQixTQUFBLEVBQUFpRCxNQUFBLFlBQUFkLEdBQUEsZ0JBQUFlLE9BQUEsQ0FBQUQsTUFBQSxFQUFBZCxHQUFBLHNCQUFBZ0IsY0FBQXZCLFNBQUEsRUFBQXdCLFdBQUEsYUFBQUMsT0FBQUosTUFBQSxFQUFBZCxHQUFBLEVBQUFtQixPQUFBLEVBQUFDLE1BQUEsUUFBQUMsTUFBQSxHQUFBdkIsUUFBQSxDQUFBTCxTQUFBLENBQUFxQixNQUFBLEdBQUFyQixTQUFBLEVBQUFPLEdBQUEsbUJBQUFxQixNQUFBLENBQUFwQixJQUFBLFFBQUFxQixNQUFBLEdBQUFELE1BQUEsQ0FBQXJCLEdBQUEsRUFBQTVCLEtBQUEsR0FBQWtELE1BQUEsQ0FBQWxELEtBQUEsU0FBQUEsS0FBQSxnQkFBQW1ELE9BQUEsQ0FBQW5ELEtBQUEsS0FBQU4sTUFBQSxDQUFBb0MsSUFBQSxDQUFBOUIsS0FBQSxlQUFBNkMsV0FBQSxDQUFBRSxPQUFBLENBQUEvQyxLQUFBLENBQUFvRCxPQUFBLEVBQUFDLElBQUEsV0FBQXJELEtBQUEsSUFBQThDLE1BQUEsU0FBQTlDLEtBQUEsRUFBQStDLE9BQUEsRUFBQUMsTUFBQSxnQkFBQW5DLEdBQUEsSUFBQWlDLE1BQUEsVUFBQWpDLEdBQUEsRUFBQWtDLE9BQUEsRUFBQUMsTUFBQSxRQUFBSCxXQUFBLENBQUFFLE9BQUEsQ0FBQS9DLEtBQUEsRUFBQXFELElBQUEsV0FBQUMsU0FBQSxJQUFBSixNQUFBLENBQUFsRCxLQUFBLEdBQUFzRCxTQUFBLEVBQUFQLE9BQUEsQ0FBQUcsTUFBQSxnQkFBQUssS0FBQSxXQUFBVCxNQUFBLFVBQUFTLEtBQUEsRUFBQVIsT0FBQSxFQUFBQyxNQUFBLFNBQUFBLE1BQUEsQ0FBQUMsTUFBQSxDQUFBckIsR0FBQSxTQUFBNEIsZUFBQSxFQUFBNUQsY0FBQSxvQkFBQUksS0FBQSxXQUFBQSxNQUFBMEMsTUFBQSxFQUFBZCxHQUFBLGFBQUE2QiwyQkFBQSxlQUFBWixXQUFBLFdBQUFFLE9BQUEsRUFBQUMsTUFBQSxJQUFBRixNQUFBLENBQUFKLE1BQUEsRUFBQWQsR0FBQSxFQUFBbUIsT0FBQSxFQUFBQyxNQUFBLGdCQUFBUSxlQUFBLEdBQUFBLGVBQUEsR0FBQUEsZUFBQSxDQUFBSCxJQUFBLENBQUFJLDBCQUFBLEVBQUFBLDBCQUFBLElBQUFBLDBCQUFBLHFCQUFBaEMsaUJBQUFWLE9BQUEsRUFBQUUsSUFBQSxFQUFBTSxPQUFBLFFBQUFtQyxLQUFBLHNDQUFBaEIsTUFBQSxFQUFBZCxHQUFBLHdCQUFBOEIsS0FBQSxZQUFBQyxLQUFBLHNEQUFBRCxLQUFBLG9CQUFBaEIsTUFBQSxRQUFBZCxHQUFBLFNBQUFnQyxVQUFBLFdBQUFyQyxPQUFBLENBQUFtQixNQUFBLEdBQUFBLE1BQUEsRUFBQW5CLE9BQUEsQ0FBQUssR0FBQSxHQUFBQSxHQUFBLFVBQUFpQyxRQUFBLEdBQUF0QyxPQUFBLENBQUFzQyxRQUFBLE1BQUFBLFFBQUEsUUFBQUMsY0FBQSxHQUFBQyxtQkFBQSxDQUFBRixRQUFBLEVBQUF0QyxPQUFBLE9BQUF1QyxjQUFBLFFBQUFBLGNBQUEsS0FBQS9CLGdCQUFBLG1CQUFBK0IsY0FBQSxxQkFBQXZDLE9BQUEsQ0FBQW1CLE1BQUEsRUFBQW5CLE9BQUEsQ0FBQXlDLElBQUEsR0FBQXpDLE9BQUEsQ0FBQTBDLEtBQUEsR0FBQTFDLE9BQUEsQ0FBQUssR0FBQSxzQkFBQUwsT0FBQSxDQUFBbUIsTUFBQSw2QkFBQWdCLEtBQUEsUUFBQUEsS0FBQSxnQkFBQW5DLE9BQUEsQ0FBQUssR0FBQSxFQUFBTCxPQUFBLENBQUEyQyxpQkFBQSxDQUFBM0MsT0FBQSxDQUFBSyxHQUFBLHVCQUFBTCxPQUFBLENBQUFtQixNQUFBLElBQUFuQixPQUFBLENBQUE0QyxNQUFBLFdBQUE1QyxPQUFBLENBQUFLLEdBQUEsR0FBQThCLEtBQUEsb0JBQUFULE1BQUEsR0FBQXZCLFFBQUEsQ0FBQVgsT0FBQSxFQUFBRSxJQUFBLEVBQUFNLE9BQUEsb0JBQUEwQixNQUFBLENBQUFwQixJQUFBLFFBQUE2QixLQUFBLEdBQUFuQyxPQUFBLENBQUE2QyxJQUFBLG1DQUFBbkIsTUFBQSxDQUFBckIsR0FBQSxLQUFBRyxnQkFBQSxxQkFBQS9CLEtBQUEsRUFBQWlELE1BQUEsQ0FBQXJCLEdBQUEsRUFBQXdDLElBQUEsRUFBQTdDLE9BQUEsQ0FBQTZDLElBQUEsa0JBQUFuQixNQUFBLENBQUFwQixJQUFBLEtBQUE2QixLQUFBLGdCQUFBbkMsT0FBQSxDQUFBbUIsTUFBQSxZQUFBbkIsT0FBQSxDQUFBSyxHQUFBLEdBQUFxQixNQUFBLENBQUFyQixHQUFBLG1CQUFBbUMsb0JBQUFGLFFBQUEsRUFBQXRDLE9BQUEsUUFBQThDLFVBQUEsR0FBQTlDLE9BQUEsQ0FBQW1CLE1BQUEsRUFBQUEsTUFBQSxHQUFBbUIsUUFBQSxDQUFBekQsUUFBQSxDQUFBaUUsVUFBQSxPQUFBQyxTQUFBLEtBQUE1QixNQUFBLFNBQUFuQixPQUFBLENBQUFzQyxRQUFBLHFCQUFBUSxVQUFBLElBQUFSLFFBQUEsQ0FBQXpELFFBQUEsZUFBQW1CLE9BQUEsQ0FBQW1CLE1BQUEsYUFBQW5CLE9BQUEsQ0FBQUssR0FBQSxHQUFBMEMsU0FBQSxFQUFBUCxtQkFBQSxDQUFBRixRQUFBLEVBQUF0QyxPQUFBLGVBQUFBLE9BQUEsQ0FBQW1CLE1BQUEsa0JBQUEyQixVQUFBLEtBQUE5QyxPQUFBLENBQUFtQixNQUFBLFlBQUFuQixPQUFBLENBQUFLLEdBQUEsT0FBQTJDLFNBQUEsdUNBQUFGLFVBQUEsaUJBQUF0QyxnQkFBQSxNQUFBa0IsTUFBQSxHQUFBdkIsUUFBQSxDQUFBZ0IsTUFBQSxFQUFBbUIsUUFBQSxDQUFBekQsUUFBQSxFQUFBbUIsT0FBQSxDQUFBSyxHQUFBLG1CQUFBcUIsTUFBQSxDQUFBcEIsSUFBQSxTQUFBTixPQUFBLENBQUFtQixNQUFBLFlBQUFuQixPQUFBLENBQUFLLEdBQUEsR0FBQXFCLE1BQUEsQ0FBQXJCLEdBQUEsRUFBQUwsT0FBQSxDQUFBc0MsUUFBQSxTQUFBOUIsZ0JBQUEsTUFBQXlDLElBQUEsR0FBQXZCLE1BQUEsQ0FBQXJCLEdBQUEsU0FBQTRDLElBQUEsR0FBQUEsSUFBQSxDQUFBSixJQUFBLElBQUE3QyxPQUFBLENBQUFzQyxRQUFBLENBQUFZLFVBQUEsSUFBQUQsSUFBQSxDQUFBeEUsS0FBQSxFQUFBdUIsT0FBQSxDQUFBbUQsSUFBQSxHQUFBYixRQUFBLENBQUFjLE9BQUEsZUFBQXBELE9BQUEsQ0FBQW1CLE1BQUEsS0FBQW5CLE9BQUEsQ0FBQW1CLE1BQUEsV0FBQW5CLE9BQUEsQ0FBQUssR0FBQSxHQUFBMEMsU0FBQSxHQUFBL0MsT0FBQSxDQUFBc0MsUUFBQSxTQUFBOUIsZ0JBQUEsSUFBQXlDLElBQUEsSUFBQWpELE9BQUEsQ0FBQW1CLE1BQUEsWUFBQW5CLE9BQUEsQ0FBQUssR0FBQSxPQUFBMkMsU0FBQSxzQ0FBQWhELE9BQUEsQ0FBQXNDLFFBQUEsU0FBQTlCLGdCQUFBLGNBQUE2QyxhQUFBQyxJQUFBLFFBQUFDLEtBQUEsS0FBQUMsTUFBQSxFQUFBRixJQUFBLFlBQUFBLElBQUEsS0FBQUMsS0FBQSxDQUFBRSxRQUFBLEdBQUFILElBQUEsV0FBQUEsSUFBQSxLQUFBQyxLQUFBLENBQUFHLFVBQUEsR0FBQUosSUFBQSxLQUFBQyxLQUFBLENBQUFJLFFBQUEsR0FBQUwsSUFBQSxXQUFBTSxVQUFBLENBQUFDLElBQUEsQ0FBQU4sS0FBQSxjQUFBTyxjQUFBUCxLQUFBLFFBQUE3QixNQUFBLEdBQUE2QixLQUFBLENBQUFRLFVBQUEsUUFBQXJDLE1BQUEsQ0FBQXBCLElBQUEsb0JBQUFvQixNQUFBLENBQUFyQixHQUFBLEVBQUFrRCxLQUFBLENBQUFRLFVBQUEsR0FBQXJDLE1BQUEsYUFBQXpCLFFBQUFOLFdBQUEsU0FBQWlFLFVBQUEsTUFBQUosTUFBQSxhQUFBN0QsV0FBQSxDQUFBdUIsT0FBQSxDQUFBbUMsWUFBQSxjQUFBVyxLQUFBLGlCQUFBakQsT0FBQWtELFFBQUEsUUFBQUEsUUFBQSxRQUFBQyxjQUFBLEdBQUFELFFBQUEsQ0FBQXJGLGNBQUEsT0FBQXNGLGNBQUEsU0FBQUEsY0FBQSxDQUFBM0QsSUFBQSxDQUFBMEQsUUFBQSw0QkFBQUEsUUFBQSxDQUFBZCxJQUFBLFNBQUFjLFFBQUEsT0FBQUUsS0FBQSxDQUFBRixRQUFBLENBQUFHLE1BQUEsU0FBQUMsQ0FBQSxPQUFBbEIsSUFBQSxZQUFBQSxLQUFBLGFBQUFrQixDQUFBLEdBQUFKLFFBQUEsQ0FBQUcsTUFBQSxPQUFBakcsTUFBQSxDQUFBb0MsSUFBQSxDQUFBMEQsUUFBQSxFQUFBSSxDQUFBLFVBQUFsQixJQUFBLENBQUExRSxLQUFBLEdBQUF3RixRQUFBLENBQUFJLENBQUEsR0FBQWxCLElBQUEsQ0FBQU4sSUFBQSxPQUFBTSxJQUFBLFNBQUFBLElBQUEsQ0FBQTFFLEtBQUEsR0FBQXNFLFNBQUEsRUFBQUksSUFBQSxDQUFBTixJQUFBLE9BQUFNLElBQUEsWUFBQUEsSUFBQSxDQUFBQSxJQUFBLEdBQUFBLElBQUEsZUFBQUEsSUFBQSxFQUFBZCxVQUFBLGVBQUFBLFdBQUEsYUFBQTVELEtBQUEsRUFBQXNFLFNBQUEsRUFBQUYsSUFBQSxpQkFBQXBDLGlCQUFBLENBQUF2QyxTQUFBLEdBQUF3QywwQkFBQSxFQUFBckMsY0FBQSxDQUFBMkMsRUFBQSxtQkFBQXZDLEtBQUEsRUFBQWlDLDBCQUFBLEVBQUF0QixZQUFBLFNBQUFmLGNBQUEsQ0FBQXFDLDBCQUFBLG1CQUFBakMsS0FBQSxFQUFBZ0MsaUJBQUEsRUFBQXJCLFlBQUEsU0FBQXFCLGlCQUFBLENBQUE2RCxXQUFBLEdBQUFwRixNQUFBLENBQUF3QiwwQkFBQSxFQUFBMUIsaUJBQUEsd0JBQUFqQixPQUFBLENBQUF3RyxtQkFBQSxhQUFBQyxNQUFBLFFBQUFDLElBQUEsd0JBQUFELE1BQUEsSUFBQUEsTUFBQSxDQUFBRSxXQUFBLFdBQUFELElBQUEsS0FBQUEsSUFBQSxLQUFBaEUsaUJBQUEsNkJBQUFnRSxJQUFBLENBQUFILFdBQUEsSUFBQUcsSUFBQSxDQUFBRSxJQUFBLE9BQUE1RyxPQUFBLENBQUE2RyxJQUFBLGFBQUFKLE1BQUEsV0FBQXZHLE1BQUEsQ0FBQTRHLGNBQUEsR0FBQTVHLE1BQUEsQ0FBQTRHLGNBQUEsQ0FBQUwsTUFBQSxFQUFBOUQsMEJBQUEsS0FBQThELE1BQUEsQ0FBQU0sU0FBQSxHQUFBcEUsMEJBQUEsRUFBQXhCLE1BQUEsQ0FBQXNGLE1BQUEsRUFBQXhGLGlCQUFBLHlCQUFBd0YsTUFBQSxDQUFBdEcsU0FBQSxHQUFBRCxNQUFBLENBQUE4QixNQUFBLENBQUFpQixFQUFBLEdBQUF3RCxNQUFBLEtBQUF6RyxPQUFBLENBQUFnSCxLQUFBLGFBQUExRSxHQUFBLGFBQUF3QixPQUFBLEVBQUF4QixHQUFBLE9BQUFZLHFCQUFBLENBQUFJLGFBQUEsQ0FBQW5ELFNBQUEsR0FBQWdCLE1BQUEsQ0FBQW1DLGFBQUEsQ0FBQW5ELFNBQUEsRUFBQVksbUJBQUEsaUNBQUFmLE9BQUEsQ0FBQXNELGFBQUEsR0FBQUEsYUFBQSxFQUFBdEQsT0FBQSxDQUFBaUgsS0FBQSxhQUFBeEYsT0FBQSxFQUFBQyxPQUFBLEVBQUFDLElBQUEsRUFBQUMsV0FBQSxFQUFBMkIsV0FBQSxlQUFBQSxXQUFBLEtBQUFBLFdBQUEsR0FBQTJELE9BQUEsT0FBQUMsSUFBQSxPQUFBN0QsYUFBQSxDQUFBOUIsSUFBQSxDQUFBQyxPQUFBLEVBQUFDLE9BQUEsRUFBQUMsSUFBQSxFQUFBQyxXQUFBLEdBQUEyQixXQUFBLFVBQUF2RCxPQUFBLENBQUF3RyxtQkFBQSxDQUFBOUUsT0FBQSxJQUFBeUYsSUFBQSxHQUFBQSxJQUFBLENBQUEvQixJQUFBLEdBQUFyQixJQUFBLFdBQUFILE1BQUEsV0FBQUEsTUFBQSxDQUFBa0IsSUFBQSxHQUFBbEIsTUFBQSxDQUFBbEQsS0FBQSxHQUFBeUcsSUFBQSxDQUFBL0IsSUFBQSxXQUFBbEMscUJBQUEsQ0FBQUQsRUFBQSxHQUFBOUIsTUFBQSxDQUFBOEIsRUFBQSxFQUFBaEMsaUJBQUEsZ0JBQUFFLE1BQUEsQ0FBQThCLEVBQUEsRUFBQXBDLGNBQUEsaUNBQUFNLE1BQUEsQ0FBQThCLEVBQUEsNkRBQUFqRCxPQUFBLENBQUFvSCxJQUFBLGFBQUFDLEdBQUEsUUFBQUMsTUFBQSxHQUFBcEgsTUFBQSxDQUFBbUgsR0FBQSxHQUFBRCxJQUFBLGdCQUFBNUcsR0FBQSxJQUFBOEcsTUFBQSxFQUFBRixJQUFBLENBQUF0QixJQUFBLENBQUF0RixHQUFBLFVBQUE0RyxJQUFBLENBQUFHLE9BQUEsYUFBQW5DLEtBQUEsV0FBQWdDLElBQUEsQ0FBQWYsTUFBQSxTQUFBN0YsR0FBQSxHQUFBNEcsSUFBQSxDQUFBSSxHQUFBLFFBQUFoSCxHQUFBLElBQUE4RyxNQUFBLFNBQUFsQyxJQUFBLENBQUExRSxLQUFBLEdBQUFGLEdBQUEsRUFBQTRFLElBQUEsQ0FBQU4sSUFBQSxPQUFBTSxJQUFBLFdBQUFBLElBQUEsQ0FBQU4sSUFBQSxPQUFBTSxJQUFBLFFBQUFwRixPQUFBLENBQUFnRCxNQUFBLEdBQUFBLE1BQUEsRUFBQWQsT0FBQSxDQUFBL0IsU0FBQSxLQUFBd0csV0FBQSxFQUFBekUsT0FBQSxFQUFBK0QsS0FBQSxXQUFBQSxNQUFBd0IsYUFBQSxhQUFBQyxJQUFBLFdBQUF0QyxJQUFBLFdBQUFWLElBQUEsUUFBQUMsS0FBQSxHQUFBSyxTQUFBLE9BQUFGLElBQUEsWUFBQVAsUUFBQSxjQUFBbkIsTUFBQSxnQkFBQWQsR0FBQSxHQUFBMEMsU0FBQSxPQUFBYSxVQUFBLENBQUExQyxPQUFBLENBQUE0QyxhQUFBLElBQUEwQixhQUFBLFdBQUFiLElBQUEsa0JBQUFBLElBQUEsQ0FBQWUsTUFBQSxPQUFBdkgsTUFBQSxDQUFBb0MsSUFBQSxPQUFBb0UsSUFBQSxNQUFBUixLQUFBLEVBQUFRLElBQUEsQ0FBQWdCLEtBQUEsY0FBQWhCLElBQUEsSUFBQTVCLFNBQUEsTUFBQTZDLElBQUEsV0FBQUEsS0FBQSxTQUFBL0MsSUFBQSxXQUFBZ0QsVUFBQSxRQUFBakMsVUFBQSxJQUFBRyxVQUFBLGtCQUFBOEIsVUFBQSxDQUFBdkYsSUFBQSxRQUFBdUYsVUFBQSxDQUFBeEYsR0FBQSxjQUFBeUYsSUFBQSxLQUFBbkQsaUJBQUEsV0FBQUEsa0JBQUFvRCxTQUFBLGFBQUFsRCxJQUFBLFFBQUFrRCxTQUFBLE1BQUEvRixPQUFBLGtCQUFBZ0csT0FBQUMsR0FBQSxFQUFBQyxNQUFBLFdBQUF4RSxNQUFBLENBQUFwQixJQUFBLFlBQUFvQixNQUFBLENBQUFyQixHQUFBLEdBQUEwRixTQUFBLEVBQUEvRixPQUFBLENBQUFtRCxJQUFBLEdBQUE4QyxHQUFBLEVBQUFDLE1BQUEsS0FBQWxHLE9BQUEsQ0FBQW1CLE1BQUEsV0FBQW5CLE9BQUEsQ0FBQUssR0FBQSxHQUFBMEMsU0FBQSxLQUFBbUQsTUFBQSxhQUFBN0IsQ0FBQSxRQUFBVCxVQUFBLENBQUFRLE1BQUEsTUFBQUMsQ0FBQSxTQUFBQSxDQUFBLFFBQUFkLEtBQUEsUUFBQUssVUFBQSxDQUFBUyxDQUFBLEdBQUEzQyxNQUFBLEdBQUE2QixLQUFBLENBQUFRLFVBQUEsaUJBQUFSLEtBQUEsQ0FBQUMsTUFBQSxTQUFBd0MsTUFBQSxhQUFBekMsS0FBQSxDQUFBQyxNQUFBLFNBQUFpQyxJQUFBLFFBQUFVLFFBQUEsR0FBQWhJLE1BQUEsQ0FBQW9DLElBQUEsQ0FBQWdELEtBQUEsZUFBQTZDLFVBQUEsR0FBQWpJLE1BQUEsQ0FBQW9DLElBQUEsQ0FBQWdELEtBQUEscUJBQUE0QyxRQUFBLElBQUFDLFVBQUEsYUFBQVgsSUFBQSxHQUFBbEMsS0FBQSxDQUFBRSxRQUFBLFNBQUF1QyxNQUFBLENBQUF6QyxLQUFBLENBQUFFLFFBQUEsZ0JBQUFnQyxJQUFBLEdBQUFsQyxLQUFBLENBQUFHLFVBQUEsU0FBQXNDLE1BQUEsQ0FBQXpDLEtBQUEsQ0FBQUcsVUFBQSxjQUFBeUMsUUFBQSxhQUFBVixJQUFBLEdBQUFsQyxLQUFBLENBQUFFLFFBQUEsU0FBQXVDLE1BQUEsQ0FBQXpDLEtBQUEsQ0FBQUUsUUFBQSxxQkFBQTJDLFVBQUEsWUFBQWhFLEtBQUEscURBQUFxRCxJQUFBLEdBQUFsQyxLQUFBLENBQUFHLFVBQUEsU0FBQXNDLE1BQUEsQ0FBQXpDLEtBQUEsQ0FBQUcsVUFBQSxZQUFBZCxNQUFBLFdBQUFBLE9BQUF0QyxJQUFBLEVBQUFELEdBQUEsYUFBQWdFLENBQUEsUUFBQVQsVUFBQSxDQUFBUSxNQUFBLE1BQUFDLENBQUEsU0FBQUEsQ0FBQSxRQUFBZCxLQUFBLFFBQUFLLFVBQUEsQ0FBQVMsQ0FBQSxPQUFBZCxLQUFBLENBQUFDLE1BQUEsU0FBQWlDLElBQUEsSUFBQXRILE1BQUEsQ0FBQW9DLElBQUEsQ0FBQWdELEtBQUEsd0JBQUFrQyxJQUFBLEdBQUFsQyxLQUFBLENBQUFHLFVBQUEsUUFBQTJDLFlBQUEsR0FBQTlDLEtBQUEsYUFBQThDLFlBQUEsaUJBQUEvRixJQUFBLG1CQUFBQSxJQUFBLEtBQUErRixZQUFBLENBQUE3QyxNQUFBLElBQUFuRCxHQUFBLElBQUFBLEdBQUEsSUFBQWdHLFlBQUEsQ0FBQTNDLFVBQUEsS0FBQTJDLFlBQUEsY0FBQTNFLE1BQUEsR0FBQTJFLFlBQUEsR0FBQUEsWUFBQSxDQUFBdEMsVUFBQSxjQUFBckMsTUFBQSxDQUFBcEIsSUFBQSxHQUFBQSxJQUFBLEVBQUFvQixNQUFBLENBQUFyQixHQUFBLEdBQUFBLEdBQUEsRUFBQWdHLFlBQUEsU0FBQWxGLE1BQUEsZ0JBQUFnQyxJQUFBLEdBQUFrRCxZQUFBLENBQUEzQyxVQUFBLEVBQUFsRCxnQkFBQSxTQUFBOEYsUUFBQSxDQUFBNUUsTUFBQSxNQUFBNEUsUUFBQSxXQUFBQSxTQUFBNUUsTUFBQSxFQUFBaUMsUUFBQSxvQkFBQWpDLE1BQUEsQ0FBQXBCLElBQUEsUUFBQW9CLE1BQUEsQ0FBQXJCLEdBQUEscUJBQUFxQixNQUFBLENBQUFwQixJQUFBLG1CQUFBb0IsTUFBQSxDQUFBcEIsSUFBQSxRQUFBNkMsSUFBQSxHQUFBekIsTUFBQSxDQUFBckIsR0FBQSxnQkFBQXFCLE1BQUEsQ0FBQXBCLElBQUEsU0FBQXdGLElBQUEsUUFBQXpGLEdBQUEsR0FBQXFCLE1BQUEsQ0FBQXJCLEdBQUEsT0FBQWMsTUFBQSxrQkFBQWdDLElBQUEseUJBQUF6QixNQUFBLENBQUFwQixJQUFBLElBQUFxRCxRQUFBLFVBQUFSLElBQUEsR0FBQVEsUUFBQSxHQUFBbkQsZ0JBQUEsS0FBQStGLE1BQUEsV0FBQUEsT0FBQTdDLFVBQUEsYUFBQVcsQ0FBQSxRQUFBVCxVQUFBLENBQUFRLE1BQUEsTUFBQUMsQ0FBQSxTQUFBQSxDQUFBLFFBQUFkLEtBQUEsUUFBQUssVUFBQSxDQUFBUyxDQUFBLE9BQUFkLEtBQUEsQ0FBQUcsVUFBQSxLQUFBQSxVQUFBLGNBQUE0QyxRQUFBLENBQUEvQyxLQUFBLENBQUFRLFVBQUEsRUFBQVIsS0FBQSxDQUFBSSxRQUFBLEdBQUFHLGFBQUEsQ0FBQVAsS0FBQSxHQUFBL0MsZ0JBQUEseUJBQUFnRyxPQUFBaEQsTUFBQSxhQUFBYSxDQUFBLFFBQUFULFVBQUEsQ0FBQVEsTUFBQSxNQUFBQyxDQUFBLFNBQUFBLENBQUEsUUFBQWQsS0FBQSxRQUFBSyxVQUFBLENBQUFTLENBQUEsT0FBQWQsS0FBQSxDQUFBQyxNQUFBLEtBQUFBLE1BQUEsUUFBQTlCLE1BQUEsR0FBQTZCLEtBQUEsQ0FBQVEsVUFBQSxrQkFBQXJDLE1BQUEsQ0FBQXBCLElBQUEsUUFBQW1HLE1BQUEsR0FBQS9FLE1BQUEsQ0FBQXJCLEdBQUEsRUFBQXlELGFBQUEsQ0FBQVAsS0FBQSxZQUFBa0QsTUFBQSxnQkFBQXJFLEtBQUEsOEJBQUFzRSxhQUFBLFdBQUFBLGNBQUF6QyxRQUFBLEVBQUFmLFVBQUEsRUFBQUUsT0FBQSxnQkFBQWQsUUFBQSxLQUFBekQsUUFBQSxFQUFBa0MsTUFBQSxDQUFBa0QsUUFBQSxHQUFBZixVQUFBLEVBQUFBLFVBQUEsRUFBQUUsT0FBQSxFQUFBQSxPQUFBLG9CQUFBakMsTUFBQSxVQUFBZCxHQUFBLEdBQUEwQyxTQUFBLEdBQUF2QyxnQkFBQSxPQUFBekMsT0FBQTtBQUFBLFNBQUE0SSxtQkFBQUMsR0FBQSxFQUFBcEYsT0FBQSxFQUFBQyxNQUFBLEVBQUFvRixLQUFBLEVBQUFDLE1BQUEsRUFBQXZJLEdBQUEsRUFBQThCLEdBQUEsY0FBQTRDLElBQUEsR0FBQTJELEdBQUEsQ0FBQXJJLEdBQUEsRUFBQThCLEdBQUEsT0FBQTVCLEtBQUEsR0FBQXdFLElBQUEsQ0FBQXhFLEtBQUEsV0FBQXVELEtBQUEsSUFBQVAsTUFBQSxDQUFBTyxLQUFBLGlCQUFBaUIsSUFBQSxDQUFBSixJQUFBLElBQUFyQixPQUFBLENBQUEvQyxLQUFBLFlBQUF3RyxPQUFBLENBQUF6RCxPQUFBLENBQUEvQyxLQUFBLEVBQUFxRCxJQUFBLENBQUErRSxLQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBQyxrQkFBQTNHLEVBQUEsNkJBQUFWLElBQUEsU0FBQXNILElBQUEsR0FBQUMsU0FBQSxhQUFBaEMsT0FBQSxXQUFBekQsT0FBQSxFQUFBQyxNQUFBLFFBQUFtRixHQUFBLEdBQUF4RyxFQUFBLENBQUE4RyxLQUFBLENBQUF4SCxJQUFBLEVBQUFzSCxJQUFBLFlBQUFILE1BQUFwSSxLQUFBLElBQUFrSSxrQkFBQSxDQUFBQyxHQUFBLEVBQUFwRixPQUFBLEVBQUFDLE1BQUEsRUFBQW9GLEtBQUEsRUFBQUMsTUFBQSxVQUFBckksS0FBQSxjQUFBcUksT0FBQXhILEdBQUEsSUFBQXFILGtCQUFBLENBQUFDLEdBQUEsRUFBQXBGLE9BQUEsRUFBQUMsTUFBQSxFQUFBb0YsS0FBQSxFQUFBQyxNQUFBLFdBQUF4SCxHQUFBLEtBQUF1SCxLQUFBLENBQUE5RCxTQUFBO0FBRDBCO0FBQ2M7QUFDSDtBQUNnQztBQUVyRSxJQUFNdUUsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBQSxFQUFTO0VBQ2hDLE9BQU9DLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLGlDQUFpQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBLEVBQVM7RUFDbEMsT0FBT0YsUUFBUSxDQUFDQyxhQUFhLENBQUMsbUNBQW1DLENBQUM7QUFDcEUsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxJQUFNRSxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBLEVBQVM7RUFDbEMsSUFBTUMsTUFBTSxHQUFHRixxQkFBcUIsRUFBRTtFQUN0QyxJQUFJLENBQUNFLE1BQU0sRUFBRTtJQUNYLE9BQU8sRUFBRTtFQUNYO0VBQ0EsT0FBT0MsS0FBSyxDQUFDQyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0csc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUNuRSxVQUFDQyxFQUFFO0lBQUEsT0FBS0EsRUFBRSxDQUFDQyxXQUFXO0VBQUEsRUFDdkI7QUFDSCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLElBQU1DLDhCQUE4QixHQUFHLFNBQWpDQSw4QkFBOEJBLENBQUlDLEtBQUssRUFBRUMsZUFBZSxFQUFFQyxVQUFVLEVBQUs7RUFDN0UsSUFBTUMsT0FBTyxHQUFHRCxVQUFVLG1CQUFBRSxNQUFBLENBQWtCRixVQUFVLFlBQVEsRUFBRTtFQUNoRSxJQUFNRyxPQUFPLEdBQ1gsV0FBVyxHQUNYTCxLQUFLLENBQUNKLEdBQUcsQ0FBQyxVQUFDVSxDQUFDLEVBQUVDLEdBQUcsRUFBSztJQUNwQix5QkFBQUgsTUFBQSxDQUF3QkcsR0FBRyxPQUFBSCxNQUFBLENBQUlFLENBQUMsQ0FBQzlELElBQUksZ0JBQUE0RCxNQUFBLENBQVdILGVBQWUsRUFBQUcsTUFBQSxDQUFHRSxDQUFDLENBQUM5RCxJQUFJLFNBQUE0RCxNQUFBLENBQUtELE9BQU87RUFDdEYsQ0FBQyxDQUFDLEdBQ0YsWUFBWTtFQUVkLE9BQU9FLE9BQU87QUFDaEIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxJQUFNRyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJQyxHQUFHLEVBQUVULEtBQUssRUFBSztFQUN2QyxJQUFNVSxRQUFRLEdBQUcsSUFBSUMsUUFBUSxFQUFFO0VBQy9CRCxRQUFRLENBQUNFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRUgsR0FBRyxDQUFDO0VBQzFDVCxLQUFLLENBQUNqSCxPQUFPLENBQUMsVUFBQ3VILENBQUMsRUFBRUMsR0FBRyxFQUFLO0lBQ3hCLElBQU0vRCxJQUFJLE1BQUE0RCxNQUFBLENBQU1HLEdBQUcsT0FBQUgsTUFBQSxDQUFJRSxDQUFDLENBQUM5RCxJQUFJLENBQUU7SUFDL0JrRSxRQUFRLENBQUNFLE1BQU0sQ0FBQ3BFLElBQUksRUFBRThELENBQUMsQ0FBQ08sSUFBSSxFQUFFckUsSUFBSSxDQUFDO0VBQ3JDLENBQUMsQ0FBQztFQUNGLE9BQU9rRSxRQUFRO0FBQ2pCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1JLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUlDLElBQUksRUFBSztFQUNqQ0MsVUFBVSxDQUFDRCxJQUFJLEVBQUUsTUFBTSxDQUFDO0VBQ3hCLElBQU1FLFFBQVEsR0FBR0YsSUFBSSxDQUNsQkcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUNwQkMsU0FBUyxDQUFDQyxVQUFVLENBQUNDLGlCQUFpQixFQUFFLENBQUNwRixNQUFNLENBQUMsQ0FDaERxRixLQUFLLENBQUMsR0FBRyxDQUFDO0VBQ2IsSUFBSUwsUUFBUSxDQUFDaEYsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN2QixJQUFNc0YsVUFBVSxHQUFHTixRQUFRLENBQUN6RCxLQUFLLENBQUMsQ0FBQyxFQUFFeUQsUUFBUSxDQUFDaEYsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RCxJQUFNdUYsZUFBZSxHQUFHVCxJQUFJLENBQUNVLFNBQVMsRUFBRTtJQUN4Q0QsZUFBZSxDQUFDRSxZQUFZLENBQzFCLE1BQU0sRUFDTk4sVUFBVSxDQUFDQyxpQkFBaUIsRUFBRSxHQUFHRSxVQUFVLENBQUNJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQzVEO0lBQ0RILGVBQWUsQ0FBQzFCLFdBQVcsR0FBR3lCLFVBQVUsQ0FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUc7SUFDeERILGVBQWUsQ0FBQ0ksS0FBSyxHQUFHLHlCQUF5QjtJQUNqRGIsSUFBSSxDQUFDYyxNQUFNLENBQUNMLGVBQWUsQ0FBQztJQUM1QlQsSUFBSSxDQUFDZSxPQUFPLENBQUNDLFVBQVUsR0FBR2hCLElBQUksQ0FBQ2pCLFdBQVc7SUFDMUNpQixJQUFJLENBQUNqQixXQUFXLEdBQUdpQixJQUFJLENBQUNqQixXQUFXLENBQUN3QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM5RCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0R1RCxJQUFJLENBQUNhLEtBQUssR0FBRyxvQkFBb0I7RUFDbkM7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLElBQU1aLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJRCxJQUFJLEVBQUVpQixJQUFJLEVBQUs7RUFDakMsSUFBTWYsUUFBUSxHQUFHRixJQUFJLENBQ2xCRyxZQUFZLENBQUNjLElBQUksQ0FBQyxDQUNsQmIsU0FBUyxDQUFDQyxVQUFVLENBQUNDLGlCQUFpQixFQUFFLENBQUNwRixNQUFNLENBQUMsQ0FDaERxRixLQUFLLENBQUMsR0FBRyxDQUFDO0VBQ2IsSUFBTVcsUUFBUSxHQUFHaEIsUUFBUSxDQUFDckIsR0FBRyxDQUFDc0Msa0JBQWtCLENBQUM7RUFDakRuQixJQUFJLENBQUNXLFlBQVksQ0FBQ00sSUFBSSxFQUFFWixVQUFVLENBQUNDLGlCQUFpQixFQUFFLEdBQUdZLFFBQVEsQ0FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlFLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsSUFBTVEsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJekIsUUFBUSxFQUFLO0VBQ2xDLE9BQU8wQixDQUFDLENBQUNDLElBQUksQ0FBQztJQUNaQyxHQUFHLEVBQUVsQixVQUFVLENBQUNtQixXQUFXLEVBQUUsR0FBRyxTQUFTO0lBQ3pDdkosTUFBTSxFQUFFLE1BQU07SUFDZHdKLFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLFdBQVcsRUFBRSxLQUFLO0lBQ2xCQyxXQUFXLEVBQUUsS0FBSztJQUNsQkMsSUFBSSxFQUFFakM7RUFDUixDQUFDLENBQUM7QUFDSixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLElBQU1rQyxlQUFlO0VBQUEsSUFBQUMsSUFBQSxHQUFBakUsaUJBQUEsZUFBQWpKLG1CQUFBLEdBQUE4RyxJQUFBLENBQUcsU0FBQXFHLFFBQU9ILElBQUk7SUFBQSxJQUFBSSxxQkFBQTtJQUFBLElBQUEvQyxLQUFBLEVBQUFnRCxTQUFBLEVBQUE5QyxVQUFBLEVBQUFPLEdBQUEsRUFBQUMsUUFBQSxFQUFBdUMsUUFBQSxFQUFBdk0sUUFBQSxFQUFBd00sUUFBQSxFQUFBbEksSUFBQSxFQUFBbUksU0FBQSxFQUFBQyxrQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxtQkFBQSxFQUFBekosS0FBQSxFQUFBMEosSUFBQSxFQUFBQyxFQUFBLEVBQUFDLG1CQUFBO0lBQUEsT0FBQTlOLG1CQUFBLEdBQUF5QixJQUFBLFVBQUFzTSxTQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQXJHLElBQUEsR0FBQXFHLFFBQUEsQ0FBQTNJLElBQUE7UUFBQTtVQUNqQyxDQUFBK0gscUJBQUEsR0FBQTNELFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLHdCQUF3QixDQUFDLGNBQUEwRCxxQkFBQSx1QkFBaERBLHFCQUFBLENBQWtEYSxNQUFNLEVBQUU7VUFDcEQ1RCxLQUFLLEdBQTRCMkMsSUFBSSxDQUFyQzNDLEtBQUssRUFBRWdELFNBQVMsR0FBaUJMLElBQUksQ0FBOUJLLFNBQVMsRUFBRTlDLFVBQVUsR0FBS3lDLElBQUksQ0FBbkJ6QyxVQUFVO1VBQ2xDOEMsU0FBUyxHQUFHQSxTQUFTLElBQUksRUFBRTtVQUMzQkEsU0FBUyxHQUFHQSxTQUFTLENBQUMvRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRytHLFNBQVMsQ0FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRztVQUVsRWxCLEdBQUcsR0FBR1YsOEJBQThCLENBQUNDLEtBQUssRUFBRWdELFNBQVMsRUFBRTlDLFVBQVUsQ0FBQztVQUNsRVEsUUFBUSxHQUFHRixnQkFBZ0IsQ0FBQ0MsR0FBRyxFQUFFVCxLQUFLLENBQUM7VUFBQTJELFFBQUEsQ0FBQTNJLElBQUE7VUFBQSxPQUN0Qm1ILGFBQWEsQ0FBQ3pCLFFBQVEsQ0FBQztRQUFBO1VBQXhDdUMsUUFBUSxHQUFBVSxRQUFBLENBQUFySixJQUFBO1VBRVI1RCxRQUFRLEdBQUd1TSxRQUFRLENBQUNZLFFBQVEsQ0FDaEMsZ0JBQWdCLEVBQ2hCWixRQUFRLEVBQ1IsSUFBSSxFQUNKYSxXQUFXLENBQUNDLDRCQUE0QixDQUN6QztVQUNLYixRQUFRLEdBQUcsRUFBRTtVQUVmbEksSUFBSSxHQUFHdEUsUUFBUSxDQUFDc04sV0FBVyxFQUFFO1VBQzdCYixTQUFTLEdBQUcsS0FBSztVQUNyQixPQUFPbkksSUFBSSxFQUFFO1lBQ1BuQixLQUFLLElBQUF1SixrQkFBQSxHQUFHSCxRQUFRLENBQ2pCWSxRQUFRLENBQUMsT0FBTyxFQUFFN0ksSUFBSSxFQUFFLElBQUksRUFBRThJLFdBQVcsQ0FBQ0MsNEJBQTRCLENBQUMsY0FBQVgsa0JBQUEsdUJBRDlEQSxrQkFBQSxDQUVSWSxXQUFXLEVBQUU7WUFDWFQsSUFBSSxJQUFBRixtQkFBQSxHQUFHSixRQUFRLENBQUNZLFFBQVEsQ0FDNUIsT0FBTyxFQUNQN0ksSUFBSSxFQUNKLElBQUksRUFDSjhJLFdBQVcsQ0FBQ0csV0FBVyxDQUN4QixjQUFBWixtQkFBQSx1QkFMWUEsbUJBQUEsQ0FLVmEsV0FBVztZQUNSVixFQUFFLElBQUFGLG1CQUFBLEdBQUdMLFFBQVEsQ0FBQ1ksUUFBUSxDQUMxQixLQUFLLEVBQ0w3SSxJQUFJLEVBQ0osSUFBSSxFQUNKOEksV0FBVyxDQUFDRyxXQUFXLENBQ3hCLGNBQUFYLG1CQUFBLHVCQUxVQSxtQkFBQSxDQUtSWSxXQUFXO1lBQ2QsSUFBSXJLLEtBQUssRUFBRTtjQUNUc0osU0FBUyxHQUFHLElBQUk7Y0FDaEJ0SixLQUFLLElBQUE0SixtQkFBQSxHQUFHUixRQUFRLENBQUNZLFFBQVEsQ0FDdkIsY0FBYyxFQUNkaEssS0FBSyxFQUNMLElBQUksRUFDSmlLLFdBQVcsQ0FBQ0csV0FBVyxDQUN4QixjQUFBUixtQkFBQSx1QkFMT0EsbUJBQUEsQ0FLTFMsV0FBVztZQUNoQjtZQUNBaEIsUUFBUSxDQUFDeEgsSUFBSSxDQUFDO2NBQ1o3QixLQUFLLEVBQUVBLEtBQUs7Y0FDWjJKLEVBQUUsRUFBRUEsRUFBRTtjQUNORCxJQUFJLEVBQUVBLElBQUk7Y0FDVmpCLEdBQUcsRUFBRSxDQUFDa0IsRUFBRSxJQUFJcEMsVUFBVSxDQUFDbUIsV0FBVyxFQUFFLEdBQUcsU0FBUyxHQUFHaUI7WUFDckQsQ0FBQyxDQUFDO1lBQ0Z4SSxJQUFJLEdBQUd0RSxRQUFRLENBQUNzTixXQUFXLEVBQUU7VUFDL0I7VUFBQyxPQUFBTCxRQUFBLENBQUFsSixNQUFBLFdBQ007WUFDTDBJLFNBQVMsRUFBRUEsU0FBUztZQUNwQmIsR0FBRyxFQUFFbEIsVUFBVSxDQUFDbUIsV0FBVyxFQUFFLEdBQUcsYUFBYSxHQUFHUyxTQUFTO1lBQ3pEQSxTQUFTLEVBQUVBLFNBQVM7WUFDcEJFLFFBQVEsRUFBRUE7VUFDWixDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFTLFFBQUEsQ0FBQWxHLElBQUE7TUFBQTtJQUFBLEdBQUFxRixPQUFBO0VBQUEsQ0FDRjtFQUFBLGdCQTNES0YsZUFBZUEsQ0FBQXVCLEVBQUE7SUFBQSxPQUFBdEIsSUFBQSxDQUFBOUQsS0FBQSxPQUFBRCxTQUFBO0VBQUE7QUFBQSxHQTJEcEI7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNc0YsdUJBQXVCO0VBQUEsSUFBQUMsS0FBQSxHQUFBekYsaUJBQUEsZUFBQWpKLG1CQUFBLEdBQUE4RyxJQUFBLENBQUcsU0FBQTZILFNBQUE7SUFBQSxJQUFBckIsUUFBQSxFQUFBdk0sUUFBQSxFQUFBNk4sT0FBQSxFQUFBQyxDQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBLEVBQUFDLGdCQUFBLEVBQUFDLHVCQUFBO0lBQUEsT0FBQWxQLG1CQUFBLEdBQUF5QixJQUFBLFVBQUEwTixVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXpILElBQUEsR0FBQXlILFNBQUEsQ0FBQS9KLElBQUE7UUFBQTtVQUFBK0osU0FBQSxDQUFBL0osSUFBQTtVQUFBLE9BQ1BvRyxVQUFVLENBQUM0RCxHQUFHLENBQUMsK0JBQStCLENBQUM7UUFBQTtVQUFoRS9CLFFBQVEsR0FBQThCLFNBQUEsQ0FBQXpLLElBQUE7VUFDUjVELFFBQVEsR0FBR3VNLFFBQVEsQ0FBQ1ksUUFBUSxDQUNoQyxzQkFBc0IsRUFDdEJaLFFBQVEsRUFDUixJQUFJLEVBQ0phLFdBQVcsQ0FBQ0MsNEJBQTRCLENBQ3pDO1VBQ0tRLE9BQU8sR0FBRyxFQUFFO1FBQUE7VUFBQSxTQUdQLEVBQUUsRUFBRjtVQUNUQyxDQUFDLEdBQUc5TixRQUFRLENBQUNzTixXQUFXLEVBQUU7VUFBQyxJQUN0QlEsQ0FBQztZQUFBTyxTQUFBLENBQUEvSixJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUErSixTQUFBLENBQUF0SyxNQUFBO1FBQUE7VUFHQW1LLGdCQUFnQixHQUFHM0IsUUFBUSxDQUM5QlksUUFBUSxDQUNQLCtDQUErQyxFQUMvQ1csQ0FBQyxFQUNELElBQUksRUFDSlYsV0FBVyxDQUFDQyw0QkFBNEIsQ0FDekMsQ0FDQUMsV0FBVyxFQUFFO1VBQUEsSUFDWFksZ0JBQWdCO1lBQUFHLFNBQUEsQ0FBQS9KLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQStKLFNBQUEsQ0FBQXRLLE1BQUE7UUFBQTtVQUdmb0ssdUJBQXVCLEdBQUc1QixRQUFRLENBQ3JDWSxRQUFRLENBQ1Asb0NBQW9DLEVBQ3BDVyxDQUFDLEVBQ0QsSUFBSSxFQUNKVixXQUFXLENBQUNDLDRCQUE0QixDQUN6QyxDQUNBQyxXQUFXLEVBQUU7VUFBQSxLQUNaYSx1QkFBdUI7WUFBQUUsU0FBQSxDQUFBL0osSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBK0osU0FBQSxDQUFBdEssTUFBQTtRQUFBO1VBRzNCOEosT0FBTyxDQUFDN0ksSUFBSSxDQUFDO1lBQ1hjLElBQUksR0FBQWlJLG1CQUFBLEdBQUV4QixRQUFRLENBQUNZLFFBQVEsQ0FBQyxPQUFPLEVBQUVXLENBQUMsRUFBRSxJQUFJLEVBQUVWLFdBQVcsQ0FBQ0csV0FBVyxDQUFDLGNBQUFRLG1CQUFBLHVCQUE1REEsbUJBQUEsQ0FDRlAsV0FBVztZQUNmVixFQUFFLEdBQUFrQixtQkFBQSxHQUFFekIsUUFBUSxDQUFDWSxRQUFRLENBQUMsS0FBSyxFQUFFVyxDQUFDLEVBQUUsSUFBSSxFQUFFVixXQUFXLENBQUNHLFdBQVcsQ0FBQyxjQUFBUyxtQkFBQSx1QkFBMURBLG1CQUFBLENBQ0FSLFdBQVc7WUFDZmUsV0FBVyxHQUFBTixtQkFBQSxHQUFFMUIsUUFBUSxDQUFDWSxRQUFRLENBQzVCLGNBQWMsRUFDZFcsQ0FBQyxFQUNELElBQUksRUFDSlYsV0FBVyxDQUFDRyxXQUFXLENBQ3hCLGNBQUFVLG1CQUFBLHVCQUxZQSxtQkFBQSxDQUtWVDtVQUNMLENBQUMsQ0FBQztVQUFDYSxTQUFBLENBQUEvSixJQUFBO1VBQUE7UUFBQTtVQUFBLE9BQUErSixTQUFBLENBQUF0SyxNQUFBLFdBRUU4SixPQUFPO1FBQUE7UUFBQTtVQUFBLE9BQUFRLFNBQUEsQ0FBQXRILElBQUE7TUFBQTtJQUFBLEdBQUE2RyxRQUFBO0VBQUEsQ0FDZjtFQUFBLGdCQXBES0YsdUJBQXVCQSxDQUFBO0lBQUEsT0FBQUMsS0FBQSxDQUFBdEYsS0FBQSxPQUFBRCxTQUFBO0VBQUE7QUFBQSxHQW9ENUI7QUFFRCxJQUFNb0csV0FBVyxHQUFHO0VBQ2xCQyxnQkFBZ0I7SUFBQSxJQUFBQyxpQkFBQSxHQUFBeEcsaUJBQUEsZUFBQWpKLG1CQUFBLEdBQUE4RyxJQUFBLENBQUUsU0FBQTRJLFNBQUE7TUFBQSxPQUFBMVAsbUJBQUEsR0FBQXlCLElBQUEsVUFBQWtPLFVBQUFDLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBakksSUFBQSxHQUFBaUksU0FBQSxDQUFBdkssSUFBQTtVQUFBO1lBQUF1SyxTQUFBLENBQUF2SyxJQUFBO1lBQUEsT0FLSG9KLHVCQUF1QixFQUFFO1VBQUE7WUFBQSxPQUFBbUIsU0FBQSxDQUFBOUssTUFBQSxXQUFBOEssU0FBQSxDQUFBakwsSUFBQTtVQUFBO1VBQUE7WUFBQSxPQUFBaUwsU0FBQSxDQUFBOUgsSUFBQTtRQUFBO01BQUEsR0FBQTRILFFBQUE7SUFBQSxDQUN2QztJQUFBLFNBQUFGLGlCQUFBO01BQUEsT0FBQUMsaUJBQUEsQ0FBQXJHLEtBQUEsT0FBQUQsU0FBQTtJQUFBO0lBQUEsT0FBQXFHLGdCQUFBO0VBQUE7RUFDREsseUJBQXlCLEVBQUUsU0FBQUEsMEJBQVVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFO0lBQ3RELElBQU1DLElBQUksR0FBRzFHLHdEQUFtQixDQUFDd0csU0FBUyxDQUFDO0lBQzNDLElBQU1JLE9BQU8sR0FBR0gsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUNHLE9BQU8sQ0FBQzVQLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtNQUN2QzRQLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHbEQsZUFBZTtJQUNwQztJQUVBLElBQUksQ0FBQ2lELE9BQU8sQ0FBQzVQLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtNQUMxQzRQLE9BQU8sQ0FBQ0UsV0FBVyxHQUFHLElBQUksQ0FBQ1osZ0JBQWdCLEVBQUUsQ0FBQ3hMLElBQUksQ0FBQyxVQUFDNEssT0FBTztRQUFBLE9BQ3pEQSxPQUFPLENBQUMzRSxHQUFHLENBQUMsVUFBQ29HLEVBQUUsRUFBSztVQUNsQixPQUFPO1lBQUVDLEtBQUssRUFBRUQsRUFBRSxDQUFDeEosSUFBSTtZQUFFbEcsS0FBSyxFQUFFMFAsRUFBRSxDQUFDeEMsRUFBRTtZQUFFNUIsS0FBSyxFQUFFb0UsRUFBRSxDQUFDZjtVQUFZLENBQUM7UUFDaEUsQ0FBQyxDQUFDO01BQUEsRUFDSDtJQUNIO0lBRUFVLElBQUksQ0FBQ08sTUFBTSxlQUNUbEgsZ0RBQUEsQ0FBQ0EsNkNBQWdCLHFCQUNmQSxnREFBQSw0QkFDRUEsZ0RBQUEsQ0FBQ0UsK0VBQVUsRUFBSzJHLE9BQU8sQ0FBSSxDQUN0QixDQUNVLENBQ3BCO0VBQ0gsQ0FBQztFQUVEO0FBQ0Y7QUFDQTtFQUNFUSxvQkFBb0IsRUFBRSxTQUFBQSxxQkFBQSxFQUFNO0lBQzFCLElBQU1DLE1BQU0sR0FBR2xFLENBQUMsdVFBR0g7SUFFYixJQUFNbUUsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUEsRUFBUztNQUNyQkQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDRSxTQUFTLENBQUNDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUNESCxNQUFNLENBQUNJLEVBQUUsQ0FBQyxPQUFPLEVBQUVILFFBQVEsQ0FBQztJQUM1QixPQUFPRCxNQUFNLENBQUMsQ0FBQyxDQUFDO0VBQ2xCLENBQUM7RUFFREssZ0JBQWdCLEVBQUUsU0FBQUEsaUJBQUEsRUFBWTtJQUFBLElBQUFDLHFCQUFBO0lBQzVCLElBQU1uQixTQUFTLEdBQUdyRCxDQUFDLGdFQUVsQjtJQUNELElBQU15RSxpQkFBaUIsSUFBQUQscUJBQUEsR0FDckJ0SCxxQkFBcUIsRUFBRSxjQUFBc0gscUJBQUEsdUJBQXZCQSxxQkFBQSxDQUF5QnZILGFBQWEsQ0FBQyxjQUFjLENBQUM7SUFDeEQsSUFBTXlILGVBQWUsR0FBRzNILG1CQUFtQixFQUFFO0lBRTdDLElBQUkySCxlQUFlLElBQUlELGlCQUFpQixFQUFFO01BQ3hDLElBQU1QLE1BQU0sR0FBRyxJQUFJLENBQUNELG9CQUFvQixFQUFFO01BQzFDUSxpQkFBaUIsQ0FBQ0UsV0FBVyxDQUFDVCxNQUFNLENBQUM7TUFFckNsRSxDQUFDLENBQUMwRSxlQUFlLENBQUMsQ0FBQ0UsT0FBTyxDQUFDdkIsU0FBUyxDQUFDO01BRXJDLElBQU1DLE1BQU0sR0FBRztRQUNidUIsaUJBQWlCLEVBQUUsS0FBSztRQUN4QkMsYUFBYSxFQUFFM0gscUJBQXFCLEVBQUU7UUFDdEM0SCxRQUFRLEVBQUUsU0FBQUEsU0FBQSxFQUFNO1VBQ2RiLE1BQU0sQ0FBQ2MsS0FBSyxFQUFFO1VBQ2RkLE1BQU0sQ0FBQ0UsU0FBUyxDQUFDNUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0R5RCxRQUFRLEVBQUUsU0FBQUEsU0FBQSxFQUFNO1VBQ2RDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxNQUFNLEVBQUU7UUFDMUI7TUFDRixDQUFDO01BQ0QsSUFBSSxDQUFDaEMseUJBQXlCLENBQUNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRUMsTUFBTSxDQUFDO0lBQ3REO0VBQ0YsQ0FBQztFQUVEK0Isd0JBQXdCLEVBQUUsU0FBQUEseUJBQUEsRUFBWTtJQUNwQztJQUNBckksUUFBUSxDQUNMc0ksZ0JBQWdCLENBQUMsK0JBQStCLENBQUMsQ0FDakQzTyxPQUFPLENBQUMrSCxnQkFBZ0IsQ0FBQzs7SUFFNUI7SUFDQTFCLFFBQVEsQ0FDTHNJLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDLENBQzVDM08sT0FBTyxDQUFDLFVBQUNnSSxJQUFJO01BQUEsT0FBS0MsVUFBVSxDQUFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDO0lBQUEsRUFBQztJQUM3QzNCLFFBQVEsQ0FDTHNJLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQ3BDM08sT0FBTyxDQUFDLFVBQUNnSSxJQUFJO01BQUEsT0FBS0MsVUFBVSxDQUFDRCxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQUEsRUFBQztJQUM5QzNCLFFBQVEsQ0FDTHNJLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQ25DM08sT0FBTyxDQUFDLFVBQUNnSSxJQUFJO01BQUEsT0FBS0MsVUFBVSxDQUFDRCxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQUEsRUFBQztFQUNoRCxDQUFDO0VBRUQ0RyxJQUFJO0lBQUEsSUFBQUMsS0FBQSxHQUFBaEosaUJBQUEsZUFBQWpKLG1CQUFBLEdBQUE4RyxJQUFBLENBQUUsU0FBQW9MLFNBQUE7TUFBQSxPQUFBbFMsbUJBQUEsR0FBQXlCLElBQUEsVUFBQTBRLFVBQUFDLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBekssSUFBQSxHQUFBeUssU0FBQSxDQUFBL00sSUFBQTtVQUFBO1lBQ0osSUFBSSxDQUFDMkwsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDYyx3QkFBd0IsRUFBRTs7WUFFL0I7WUFDQTtZQUNBSCxNQUFNLENBQUNVLHlCQUF5QixHQUFHLElBQUk7VUFBQztVQUFBO1lBQUEsT0FBQUQsU0FBQSxDQUFBdEssSUFBQTtRQUFBO01BQUEsR0FBQW9LLFFBQUE7SUFBQSxDQUN6QztJQUFBLFNBQUFGLEtBQUE7TUFBQSxPQUFBQyxLQUFBLENBQUE3SSxLQUFBLE9BQUFELFNBQUE7SUFBQTtJQUFBLE9BQUE2SSxJQUFBO0VBQUE7QUFDSCxDQUFDO0FBRUR2RixDQUFDLENBQUNoRCxRQUFRLENBQUMsQ0FBQzZJLEtBQUssQ0FBQyxZQUFZO0VBQzVCLElBQU1DLEtBQUssR0FBR1osTUFBTSxDQUFDYSw0QkFBNEIsSUFBSSxpQ0FBaUM7RUFDdEYsSUFBSUQsS0FBSyxLQUFLLFNBQVMsRUFBRTtJQUN2QkUsY0FBYyxDQUFDQyxRQUFRLENBQUNuRCxXQUFXLENBQUM7RUFDdEM7QUFDRixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9zcmMvZmlsZS11cGxvYWQuanM/ZGQ2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbS9jbGllbnRcIjtcbmltcG9ydCBcInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZVwiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gXCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1jb3JlLWNvbXBvbmVudHNcIjtcblxuY29uc3QgZ2V0X2ZpbGVzeXN0ZW1fYm9keSA9ICgpID0+IHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2Fvc2RiLWYtZmlsZXN5c3RlbSAuY2FyZC1ib2R5XCIpO1xufTtcblxuY29uc3QgZ2V0X2ZpbGVzeXN0ZW1faGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjYW9zZGItZi1maWxlc3lzdGVtIC5jYXJkLWhlYWRlclwiKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGFycmF5IG9mIHRoZSBjdXJyZW50bHkgc2hvd24gZGlyZWN0b3J5IChmaWxlIHN5c3RlbSB2aWV3KS5cbiAqL1xuY29uc3QgZ2V0X2N1cnJlbnRfZGlyZWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBoZWFkZXIgPSBnZXRfZmlsZXN5c3RlbV9oZWFkZXIoKTtcbiAgaWYgKCFoZWFkZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIEFycmF5LmZyb20oaGVhZGVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjYW9zZGItZnMtY3dkXCIpKS5tYXAoXG4gICAgKGVsKSA9PiBlbC50ZXh0Q29udGVudCxcbiAgKTtcbn07XG5cbi8qKlxuICogQ29uc3RydWN0IHRoZSBYTUwgcGF5bG9hZCBmb3IgZmlsZSBpbnNlcnRpb24uXG4gKi9cbmNvbnN0IGNyZWF0ZV9maWxlX3VwbG9hZF9yZXF1ZXN0X3htbCA9IChmaWxlcywgdGFyZ2V0RGlyZWN0b3J5LCByZWNvcmRUeXBlKSA9PiB7XG4gIGNvbnN0IF9wYXJlbnQgPSByZWNvcmRUeXBlID8gYDxQYXJlbnQgaWQ9XCIke3JlY29yZFR5cGV9XCIvPmAgOiBcIlwiO1xuICBjb25zdCByZXF1ZXN0ID1cbiAgICBcIjxSZXF1ZXN0PlwiICtcbiAgICBmaWxlcy5tYXAoKGYsIGlkeCkgPT4ge1xuICAgICAgcmV0dXJuIGA8RmlsZSB1cGxvYWQ9XCIke2lkeH0tJHtmLm5hbWV9XCIgcGF0aD1cIiR7dGFyZ2V0RGlyZWN0b3J5fSR7Zi5uYW1lfVwiPiR7X3BhcmVudH08L0ZpbGU+YDtcbiAgICB9KSArXG4gICAgXCI8L1JlcXVlc3Q+XCI7XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuXG4vKipcbiAqIFB1dCBhbGwgdGhlIFhNTCBwYXlsb2FkIGFuZCB0aGUgZmlsZXMgaW50byBhIGZvcm0gZGF0YSBvYmplY3QgKGZvciB1cGxvYWQpLlxuICovXG5jb25zdCBjcmVhdGVfZm9ybV9kYXRhID0gKHhtbCwgZmlsZXMpID0+IHtcbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgZm9ybURhdGEuYXBwZW5kKFwiRmlsZVJlcHJlc2VudGF0aW9uXCIsIHhtbCk7XG4gIGZpbGVzLmZvckVhY2goKGYsIGlkeCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSBgJHtpZHh9LSR7Zi5uYW1lfWA7XG4gICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIGYuZmlsZSwgbmFtZSk7XG4gIH0pO1xuICByZXR1cm4gZm9ybURhdGE7XG59O1xuXG4vKipcbiAqIFNwbGl0IHVwIHRoZSBsaW5rIHRvIHRoZSBmaWxlIGluIHRoZSBlbnRpdHkgdmlldy4gVGhlIHR3byBuZXcgbGlua3MgcG9pbnQgdG9cbiAqIHRoZSBmaWxlIChmb3IgZG93bmxvYWQpIGFuZCB0byB0aGUgcGFyZW50IGRpcmVjdG9yeSAoZm9yIGJyb3dzaW5nIHRoZSBmaWxlXG4gKiBzeXN0ZW0pLlxuICovXG5jb25zdCBzcGxpdF9wYXJlbnRfZGlyID0gKG5vZGUpID0+IHtcbiAgcmVwYWlyX3VyaShub2RlLCBcImhyZWZcIik7XG4gIGNvbnN0IHBhdGhfb2xkID0gbm9kZVxuICAgIC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpXG4gICAgLnN1YnN0cmluZyhjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkubGVuZ3RoKVxuICAgIC5zcGxpdChcIi9cIik7XG4gIGlmIChwYXRoX29sZC5sZW5ndGggPiAxKSB7XG4gICAgY29uc3QgcGFyZW50X2RpciA9IHBhdGhfb2xkLnNsaWNlKDAsIHBhdGhfb2xkLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IHBhcmVudF9kaXJfbm9kZSA9IG5vZGUuY2xvbmVOb2RlKCk7XG4gICAgcGFyZW50X2Rpcl9ub2RlLnNldEF0dHJpYnV0ZShcbiAgICAgIFwiaHJlZlwiLFxuICAgICAgY29ubmVjdGlvbi5nZXRGaWxlU3lzdGVtUGF0aCgpICsgcGFyZW50X2Rpci5qb2luKFwiL1wiKSArIFwiL1wiLFxuICAgICk7XG4gICAgcGFyZW50X2Rpcl9ub2RlLnRleHRDb250ZW50ID0gcGFyZW50X2Rpci5qb2luKFwiL1wiKSArIFwiL1wiO1xuICAgIHBhcmVudF9kaXJfbm9kZS50aXRsZSA9IFwiR28gdG8gcGFyZW50IGRpcmVjdG9yeS5cIjtcbiAgICBub2RlLmJlZm9yZShwYXJlbnRfZGlyX25vZGUpO1xuICAgIG5vZGUuZGF0YXNldC5lbnRpdHlQYXRoID0gbm9kZS50ZXh0Q29udGVudDtcbiAgICBub2RlLnRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudC5zcGxpdChcIi9cIikuc2xpY2UoLTEpWzBdO1xuICAgIG5vZGUudGl0bGUgPSBcIkRvd25sb2FkIHRoaXMgZmlsZVwiO1xuICB9XG59O1xuXG4vKipcbiAqIFJlcGFpcnMgYnJva2VuIGxpbmtzIChlLmcuIHdoZW4gZmlsZXMgaGF2ZSBzdHJhbmdlIG5hbWVzKVxuICovXG5jb25zdCByZXBhaXJfdXJpID0gKG5vZGUsIGF0dHIpID0+IHtcbiAgY29uc3QgcGF0aF9vbGQgPSBub2RlXG4gICAgLmdldEF0dHJpYnV0ZShhdHRyKVxuICAgIC5zdWJzdHJpbmcoY29ubmVjdGlvbi5nZXRGaWxlU3lzdGVtUGF0aCgpLmxlbmd0aClcbiAgICAuc3BsaXQoXCIvXCIpO1xuICBjb25zdCBwYXRoX25ldyA9IHBhdGhfb2xkLm1hcChlbmNvZGVVUklDb21wb25lbnQpO1xuICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCBjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkgKyBwYXRoX25ldy5qb2luKFwiL1wiKSk7XG59O1xuXG4vKipcbiAqIFBlcmZvcm0gdGhlIGFjdHVhbCBBSkFYIHJlcXVlc3QgKHJldHVybnMgUHJvbWlzZSkuXG4gKi9cbmNvbnN0IHVwbG9hZFJlcXVlc3QgPSAoZm9ybURhdGEpID0+IHtcbiAgcmV0dXJuICQuYWpheCh7XG4gICAgdXJsOiBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkVudGl0eS9cIixcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGRhdGFUeXBlOiBcInhtbFwiLFxuICAgIGNvbnRlbnRUeXBlOiBmYWxzZSxcbiAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG4gICAgZGF0YTogZm9ybURhdGEsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBUaGlzIG9uU3VibWl0IGltcGxlbWVudGF0aW9uIHdvcmtzIGZvciB0aGUgbGVnYWN5IFJFU1QgQVBJLlxuICovXG5jb25zdCBkZWZhdWx0T25TdWJtaXQgPSBhc3luYyAoZGF0YSkgPT4ge1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2NvbGxhcHNlRmlsZVVwbG9hZH51bFwiKT8ucmVtb3ZlKCk7XG4gIHZhciB7IGZpbGVzLCBkaXJlY3RvcnksIHJlY29yZFR5cGUgfSA9IGRhdGE7XG4gIGRpcmVjdG9yeSA9IGRpcmVjdG9yeSB8fCBbXTtcbiAgZGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmxlbmd0aCA+IDAgPyBcIi9cIiArIGRpcmVjdG9yeS5qb2luKFwiL1wiKSArIFwiL1wiIDogXCIvXCI7XG5cbiAgY29uc3QgeG1sID0gY3JlYXRlX2ZpbGVfdXBsb2FkX3JlcXVlc3RfeG1sKGZpbGVzLCBkaXJlY3RvcnksIHJlY29yZFR5cGUpO1xuICBjb25zdCBmb3JtRGF0YSA9IGNyZWF0ZV9mb3JtX2RhdGEoeG1sLCBmaWxlcyk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdXBsb2FkUmVxdWVzdChmb3JtRGF0YSk7XG5cbiAgY29uc3QgaXRlcmF0b3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICBcIi9SZXNwb25zZS9GaWxlXCIsXG4gICAgcmVzcG9uc2UsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICApO1xuICBjb25zdCBuZXdGaWxlcyA9IFtdO1xuXG4gIHZhciBuZXh0ID0gaXRlcmF0b3IuaXRlcmF0ZU5leHQoKTtcbiAgdmFyIGhhc0Vycm9ycyA9IGZhbHNlO1xuICB3aGlsZSAobmV4dCkge1xuICAgIHZhciBlcnJvciA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXCJFcnJvclwiLCBuZXh0LCBudWxsLCBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFKVxuICAgICAgPy5pdGVyYXRlTmV4dCgpO1xuICAgIGNvbnN0IHBhdGggPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgIFwiQHBhdGhcIixcbiAgICAgIG5leHQsXG4gICAgICBudWxsLFxuICAgICAgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUsXG4gICAgKT8uc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgaWQgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgIFwiQGlkXCIsXG4gICAgICBuZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICk/LnN0cmluZ1ZhbHVlO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgIGVycm9yID0gcmVzcG9uc2UuZXZhbHVhdGUoXG4gICAgICAgIFwiQGRlc2NyaXB0aW9uXCIsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBudWxsLFxuICAgICAgICBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSxcbiAgICAgICk/LnN0cmluZ1ZhbHVlO1xuICAgIH1cbiAgICBuZXdGaWxlcy5wdXNoKHtcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgIGlkOiBpZCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICB1cmw6ICFpZCB8fCBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkVudGl0eS9cIiArIGlkLFxuICAgIH0pO1xuICAgIG5leHQgPSBpdGVyYXRvci5pdGVyYXRlTmV4dCgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgaGFzRXJyb3JzOiBoYXNFcnJvcnMsXG4gICAgdXJsOiBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkZpbGVTeXN0ZW0vXCIgKyBkaXJlY3RvcnksXG4gICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksXG4gICAgbmV3RmlsZXM6IG5ld0ZpbGVzLFxuICB9O1xufTtcblxuLyoqXG4gKiBTdWl0YWJsZSBmb3Igb3VyIHB1cnBvc2UgaGVyZSBtZWFuczogUGVybWlzc2lvbiB0byBVU0U6QVNfUEFSRU5UIGlzIGdyYW50ZWRcbiAqIGFuZCB0aGUgUmVjb3JkVHlwZSBkb2Vzbid0IGhhdmUgYW55IG9ibGlnYXRvcnkgcHJvcGVydGllcy5cbiAqL1xuY29uc3QgZmluZFN1aXRhYmxlUmVjb3JkVHlwZXMgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY29ubmVjdGlvbi5nZXQoXCJFbnRpdHkvP3F1ZXJ5PUZJTkQgUkVDT1JEVFlQRVwiKTtcbiAgY29uc3QgaXRlcmF0b3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICBcIi9SZXNwb25zZS9SZWNvcmRUeXBlXCIsXG4gICAgcmVzcG9uc2UsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICApO1xuICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgdmFyIG47XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbiA9IGl0ZXJhdG9yLml0ZXJhdGVOZXh0KCk7XG4gICAgaWYgKCFuKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgaGFzVXNlUGVybWlzc2lvbiA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXG4gICAgICAgIFwiUGVybWlzc2lvbnMvUGVybWlzc2lvbltAbmFtZT0nVVNFOkFTX1BBUkVOVCddXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsXG4gICAgICApXG4gICAgICAuaXRlcmF0ZU5leHQoKTtcbiAgICBpZiAoIWhhc1VzZVBlcm1pc3Npb24pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBoYXNPYmxpZ2F0b3J5UHJvcGVydGllcyA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXG4gICAgICAgIFwiUHJvcGVydHlbQGltcG9ydGFuY2U9J09CTElHQVRPUlknXVwiLFxuICAgICAgICBuLFxuICAgICAgICBudWxsLFxuICAgICAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICAgICAgKVxuICAgICAgLml0ZXJhdGVOZXh0KCk7XG4gICAgaWYgKGhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgIG5hbWU6IHJlc3BvbnNlLmV2YWx1YXRlKFwiQG5hbWVcIiwgbiwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpXG4gICAgICAgID8uc3RyaW5nVmFsdWUsXG4gICAgICBpZDogcmVzcG9uc2UuZXZhbHVhdGUoXCJAaWRcIiwgbiwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpXG4gICAgICAgID8uc3RyaW5nVmFsdWUsXG4gICAgICBkZXNjcmlwdGlvbjogcmVzcG9uc2UuZXZhbHVhdGUoXG4gICAgICAgIFwiQGRlc2NyaXB0aW9uXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICAgKT8uc3RyaW5nVmFsdWUsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5jb25zdCBmaWxlX3VwbG9hZCA9IHtcbiAgZ2V0X3JlY29yZF90eXBlczogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIC8vIFRPRE8gYWRkIHBlcm1pc3Npb25zIHRvIEdSUEMgQVBJLCB0aGVuIHVzZSB0aGlzIGFnYWluXG4gICAgLy9jb25zdCBzZXJ2aWNlID0gbmV3IFRyYW5zYWN0aW9uU2VydmljZSgpO1xuICAgIC8vY29uc3QgcmVzdWx0cyA9IGF3YWl0IHNlcnZpY2UuZXhlY3V0ZVF1ZXJ5KFwiRklORCBSRUNPUkRUWVBFXCIpO1xuICAgIC8vY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgcmV0dXJuIGF3YWl0IGZpbmRTdWl0YWJsZVJlY29yZFR5cGVzKCk7XG4gIH0sXG4gIGNyZWF0ZV9maWxlX3VwbG9hZF93aWRnZXQ6IGZ1bmN0aW9uIChjb250YWluZXIsIGNvbmZpZykge1xuICAgIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGNvbnRhaW5lcik7XG4gICAgY29uc3QgX2NvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICBpZiAoIV9jb25maWcuaGFzT3duUHJvcGVydHkoXCJvblN1Ym1pdFwiKSkge1xuICAgICAgX2NvbmZpZy5vblN1Ym1pdCA9IGRlZmF1bHRPblN1Ym1pdDtcbiAgICB9XG5cbiAgICBpZiAoIV9jb25maWcuaGFzT3duUHJvcGVydHkoXCJyZWNvcmRUeXBlc1wiKSkge1xuICAgICAgX2NvbmZpZy5yZWNvcmRUeXBlcyA9IHRoaXMuZ2V0X3JlY29yZF90eXBlcygpLnRoZW4oKHJlc3VsdHMpID0+XG4gICAgICAgIHJlc3VsdHMubWFwKChydCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBydC5uYW1lLCB2YWx1ZTogcnQuaWQsIHRpdGxlOiBydC5kZXNjcmlwdGlvbiB9O1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcm9vdC5yZW5kZXIoXG4gICAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgICAgPGZvcm0+XG4gICAgICAgICAgPEZpbGVVcGxvYWQgey4uLl9jb25maWd9IC8+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvUmVhY3QuU3RyaWN0TW9kZT4sXG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogVGhpcyBpcyB0aGUgXCIrXCIgYnV0dG9uIHNob3duIGluIHRoZSBmaWxlIHN5c3RlbSB2aWV3LlxuICAgKi9cbiAgY3JlYXRlX3VwbG9hZF9idXR0b246ICgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSAkKGBcbiAgICAgIDxidXR0b24gY2xhc3M9XCJweS0wIHB4LTEgbXMtMiBidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiIGRhdGEtYnMtdGFyZ2V0PVwiI2NvbGxhcHNlRmlsZVVwbG9hZFwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUZpbGVVcGxvYWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1wbHVzLWxnXCIvPlxuICAgICAgPC9idXR0b24+YCk7XG5cbiAgICBjb25zdCBfb25DbGljayA9ICgpID0+IHtcbiAgICAgIGJ1dHRvblswXS5jbGFzc0xpc3QuYWRkKFwiZC1ub25lXCIpO1xuICAgIH07XG4gICAgYnV0dG9uLm9uKFwiY2xpY2tcIiwgX29uQ2xpY2spO1xuICAgIHJldHVybiBidXR0b25bMF07XG4gIH0sXG5cbiAgaW5pdF9maWxlX3VwbG9hZDogZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9ICQoXG4gICAgICBgPGRpdiBjbGFzcz1cInJvdyBjb2xsYXBzZSBtYi01XCIgaWQ9XCJjb2xsYXBzZUZpbGVVcGxvYWRcIi8+YCxcbiAgICApO1xuICAgIGNvbnN0IGZpbGVzeXN0ZW1faGVhZGVyID1cbiAgICAgIGdldF9maWxlc3lzdGVtX2hlYWRlcigpPy5xdWVyeVNlbGVjdG9yKFwiZGl2LnRleHQtZW5kXCIpO1xuICAgIGNvbnN0IGZpbGVzeXN0ZW1fYm9keSA9IGdldF9maWxlc3lzdGVtX2JvZHkoKTtcblxuICAgIGlmIChmaWxlc3lzdGVtX2JvZHkgJiYgZmlsZXN5c3RlbV9oZWFkZXIpIHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuY3JlYXRlX3VwbG9hZF9idXR0b24oKTtcbiAgICAgIGZpbGVzeXN0ZW1faGVhZGVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cbiAgICAgICQoZmlsZXN5c3RlbV9ib2R5KS5wcmVwZW5kKGNvbnRhaW5lcik7XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgZGlyZWN0b3J5UmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICBkaXJlY3RvcnlCYXNlOiBnZXRfY3VycmVudF9kaXJlY3RvcnkoKSxcbiAgICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgICBidXR0b24uY2xpY2soKTtcbiAgICAgICAgICBidXR0b24uY2xhc3NMaXN0LnJlbW92ZShcImQtbm9uZVwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GaW5pc2g6ICgpID0+IHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgdGhpcy5jcmVhdGVfZmlsZV91cGxvYWRfd2lkZ2V0KGNvbnRhaW5lclswXSwgY29uZmlnKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVwYWlyX2ZpbGVfc3lzdGVtX2xpbmtzOiBmdW5jdGlvbiAoKSB7XG4gICAgLy8gZW50aXR5IHZpZXdcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuY2Fvc2RiLWVudGl0eS1oZWFkaW5nLWF0dHIgYVwiKVxuICAgICAgLmZvckVhY2goc3BsaXRfcGFyZW50X2Rpcik7XG5cbiAgICAvLyBmaWxlc3lzdGVtIHZpZXdcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWcuZW50aXR5LWltYWdlLXByZXZpZXdcIilcbiAgICAgIC5mb3JFYWNoKChub2RlKSA9PiByZXBhaXJfdXJpKG5vZGUsIFwic3JjXCIpKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhLmNhb3NkYi1mcy1maWxlXCIpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gcmVwYWlyX3VyaShub2RlLCBcImhyZWZcIikpO1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcImEuY2Fvc2RiLWZzLWRpclwiKVxuICAgICAgLmZvckVhY2goKG5vZGUpID0+IHJlcGFpcl91cmkobm9kZSwgXCJocmVmXCIpKTtcbiAgfSxcblxuICBpbml0OiBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0X2ZpbGVfdXBsb2FkKCk7XG4gICAgdGhpcy5yZXBhaXJfZmlsZV9zeXN0ZW1fbGlua3MoKTtcblxuICAgIC8vIHRoaXMgb2JqZWN0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHdpZGdldCwgZS5nLiBmb3IgY3JlYXRpbmcgY3VzdG9tXG4gICAgLy8gdXBsb2FkIGZvcm1zLlxuICAgIHdpbmRvdy5jYW9zZGJfZmlsZV91cGxvYWRfd2lkZ2V0ID0gdGhpcztcbiAgfSxcbn07XG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYnVpbGQgPSB3aW5kb3cuQlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRCB8fCBcIiR7QlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRH1cIlxuICBpZiAoYnVpbGQgPT09IFwiRU5BQkxFRFwiKSB7XG4gICAgY2Fvc2RiX21vZHVsZXMucmVnaXN0ZXIoZmlsZV91cGxvYWQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsImRlc2MiLCJ2YWx1ZSIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwic2VsZiIsInRyeUxvY3NMaXN0IiwicHJvdG9HZW5lcmF0b3IiLCJHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJjcmVhdGUiLCJjb250ZXh0IiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwidHlwZSIsImNhbGwiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInRoZW4iLCJ1bndyYXBwZWQiLCJlcnJvciIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiZG9uZSIsIm1ldGhvZE5hbWUiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJsZW5ndGgiLCJpIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsImtleXMiLCJ2YWwiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJSZWFjdCIsIlJlYWN0RE9NIiwiRmlsZVVwbG9hZCIsImdldF9maWxlc3lzdGVtX2JvZHkiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRfZmlsZXN5c3RlbV9oZWFkZXIiLCJnZXRfY3VycmVudF9kaXJlY3RvcnkiLCJoZWFkZXIiLCJBcnJheSIsImZyb20iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwibWFwIiwiZWwiLCJ0ZXh0Q29udGVudCIsImNyZWF0ZV9maWxlX3VwbG9hZF9yZXF1ZXN0X3htbCIsImZpbGVzIiwidGFyZ2V0RGlyZWN0b3J5IiwicmVjb3JkVHlwZSIsIl9wYXJlbnQiLCJjb25jYXQiLCJyZXF1ZXN0IiwiZiIsImlkeCIsImNyZWF0ZV9mb3JtX2RhdGEiLCJ4bWwiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiZmlsZSIsInNwbGl0X3BhcmVudF9kaXIiLCJub2RlIiwicmVwYWlyX3VyaSIsInBhdGhfb2xkIiwiZ2V0QXR0cmlidXRlIiwic3Vic3RyaW5nIiwiY29ubmVjdGlvbiIsImdldEZpbGVTeXN0ZW1QYXRoIiwic3BsaXQiLCJwYXJlbnRfZGlyIiwicGFyZW50X2Rpcl9ub2RlIiwiY2xvbmVOb2RlIiwic2V0QXR0cmlidXRlIiwiam9pbiIsInRpdGxlIiwiYmVmb3JlIiwiZGF0YXNldCIsImVudGl0eVBhdGgiLCJhdHRyIiwicGF0aF9uZXciLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1cGxvYWRSZXF1ZXN0IiwiJCIsImFqYXgiLCJ1cmwiLCJnZXRCYXNlUGF0aCIsImRhdGFUeXBlIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImRhdGEiLCJkZWZhdWx0T25TdWJtaXQiLCJfcmVmIiwiX2NhbGxlZSIsIl9kb2N1bWVudCRxdWVyeVNlbGVjdCIsImRpcmVjdG9yeSIsInJlc3BvbnNlIiwibmV3RmlsZXMiLCJoYXNFcnJvcnMiLCJfcmVzcG9uc2UkZXZhbHVhdGUiLCJfcmVzcG9uc2UkZXZhbHVhdGUyIiwiX3Jlc3BvbnNlJGV2YWx1YXRlMyIsInBhdGgiLCJpZCIsIl9yZXNwb25zZSRldmFsdWF0ZTQiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicmVtb3ZlIiwiZXZhbHVhdGUiLCJYUGF0aFJlc3VsdCIsIlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUiLCJpdGVyYXRlTmV4dCIsIlNUUklOR19UWVBFIiwic3RyaW5nVmFsdWUiLCJfeCIsImZpbmRTdWl0YWJsZVJlY29yZFR5cGVzIiwiX3JlZjIiLCJfY2FsbGVlMiIsInJlc3VsdHMiLCJuIiwiX3Jlc3BvbnNlJGV2YWx1YXRlNSIsIl9yZXNwb25zZSRldmFsdWF0ZTYiLCJfcmVzcG9uc2UkZXZhbHVhdGU3IiwiaGFzVXNlUGVybWlzc2lvbiIsImhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0IiwiZGVzY3JpcHRpb24iLCJmaWxlX3VwbG9hZCIsImdldF9yZWNvcmRfdHlwZXMiLCJfZ2V0X3JlY29yZF90eXBlcyIsIl9jYWxsZWUzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiY3JlYXRlX2ZpbGVfdXBsb2FkX3dpZGdldCIsImNvbnRhaW5lciIsImNvbmZpZyIsInJvb3QiLCJjcmVhdGVSb290IiwiX2NvbmZpZyIsIm9uU3VibWl0IiwicmVjb3JkVHlwZXMiLCJydCIsImxhYmVsIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIlN0cmljdE1vZGUiLCJjcmVhdGVfdXBsb2FkX2J1dHRvbiIsImJ1dHRvbiIsIl9vbkNsaWNrIiwiY2xhc3NMaXN0IiwiYWRkIiwib24iLCJpbml0X2ZpbGVfdXBsb2FkIiwiX2dldF9maWxlc3lzdGVtX2hlYWRlIiwiZmlsZXN5c3RlbV9oZWFkZXIiLCJmaWxlc3lzdGVtX2JvZHkiLCJhcHBlbmRDaGlsZCIsInByZXBlbmQiLCJkaXJlY3RvcnlSZWFkT25seSIsImRpcmVjdG9yeUJhc2UiLCJvbkNhbmNlbCIsImNsaWNrIiwib25GaW5pc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCIsInJlcGFpcl9maWxlX3N5c3RlbV9saW5rcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbml0IiwiX2luaXQiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImNhb3NkYl9maWxlX3VwbG9hZF93aWRnZXQiLCJyZWFkeSIsImJ1aWxkIiwiQlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRCIsImNhb3NkYl9tb2R1bGVzIiwicmVnaXN0ZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///557\n')},787:(module,__unused_webpack_exports,__webpack_require__)=>{eval('/*! For license information please see caosdb-webui-core-components.js.LICENSE.txt */\n!function(e,t){ true?module.exports=t(__webpack_require__(526),function(){try{return __webpack_require__(818)}catch(e){}}()):0}(self,(function(e,t){return function(){var n={184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var i=a.apply(null,n);i&&e.push(i)}}else if("object"===o){if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]")){e.push(n.toString());continue}for(var l in n)r.call(n,l)&&n[l]&&e.push(l)}}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()},550:function(e,t,n){"use strict";var r=n(537),a=n.n(r),o=n(645),i=n.n(o)()(a());i.push([e.id,".caosdb-f-query-cql-hint{border-radius:2rem;background-color:#d9d9d9;color:#262626;padding:.1rem .4rem}.caosdb-f-query-form-sug{display:none}nav .navbar-collapse{align-items:start;flex-wrap:wrap}nav .navbar-collapse form{display:flex;flex-direction:column}.caosdb-f-query-panel.condensed:focus-within,.caosdb-f-query-panel{margin-top:.5rem;width:100%;order:1}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form,.caosdb-f-query-panel .caosdb-f-query-form{order:unset;height:44px;padding-left:2rem;padding-top:.5rem;padding-right:2rem;padding-bottom:.5rem;border:1px solid #ddd;background-color:#fff;border-radius:2rem}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form:hover,.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus,.caosdb-f-query-panel .caosdb-f-query-form:hover,.caosdb-f-query-panel .caosdb-f-query-form.focus{box-shadow:0 1px 6px rgba(32,33,36,.28)}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug{margin-top:.5rem;background-color:#fff;display:inline-block;max-height:200px;position:absolute;overflow-y:auto;box-shadow:0 4px 6px rgba(32,33,36,.28);padding:0px}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li{padding-left:.5rem;padding-right:.5rem;height:24px;list-style-type:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li.highlight,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li.highlight{background-color:#d9d9d9}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li:hover,.caosdb-f-query-panel .caosdb-f-query-form.focus.open ol.caosdb-f-query-form-sug li:hover{background-color:#d9d9d9}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form.focus.submit.open .caosdb-f-query-form-sug,.caosdb-f-query-panel .caosdb-f-query-form.focus.submit.open .caosdb-f-query-form-sug{display:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form button,.caosdb-f-query-panel .caosdb-f-query-form button{background-color:inherit;border:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input,.caosdb-f-query-panel .caosdb-f-query-form input{border:none}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input:focus,.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-form input:focus-visible,.caosdb-f-query-panel .caosdb-f-query-form input:focus,.caosdb-f-query-panel .caosdb-f-query-form input:focus-visible{outline:none}.caosdb-f-query-panel.condensed:focus-within form,.caosdb-f-query-panel form{flex-direction:column}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-list,.caosdb-f-query-panel .caosdb-f-query-tab-list{margin-top:.5rem;padding-left:1rem;padding-right:1rem}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-filters,.caosdb-f-query-panel .caosdb-f-query-tab-filters{display:flex;flex-direction:row;flex-wrap:wrap}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab-filters input.form-control,.caosdb-f-query-panel .caosdb-f-query-tab-filters input.form-control{display:unset;width:unset}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab,.caosdb-f-query-panel .caosdb-f-query-tab{height:44px;margin-right:1rem;padding:6px;background-color:unset;border:none;border-bottom:.2rem solid rgba(0,0,0,0)}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-tab.active,.caosdb-f-query-panel .caosdb-f-query-tab.active{border-bottom:.2rem solid gray}.caosdb-f-query-panel.condensed:focus-within .caosdb-f-query-filter-property-selector,.caosdb-f-query-panel .caosdb-f-query-filter-property-selector{flex-basis:100%}@media(min-width: 992px){.caosdb-f-query-panel .caosdb-f-query-tab-filters{display:grid;grid-template-columns:max-content max-content auto max-content;grid-column-gap:.5rem;padding:.2rem 0rem}.caosdb-f-query-panel .caosdb-f-query-tab-filters input.form-control{display:unset;width:unset}.caosdb-f-query-panel.condensed{margin-top:0;width:unset;order:unset}.caosdb-f-query-panel.condensed form{flex-direction:row}.caosdb-f-query-panel.condensed .caosdb-f-query-filters-toggle{display:none}.caosdb-f-query-panel.condensed .caosdb-f-query-tab-list{margin-top:0rem}.caosdb-f-query-panel.condensed .caosdb-f-query-tab{height:38px}.caosdb-f-query-panel.condensed .caosdb-f-query-tab-filters{display:none}.caosdb-f-query-panel.condensed .caosdb-f-query-form{height:38px;order:1;padding-left:1rem;padding-top:.3rem;padding-right:1rem;padding-bottom:.3rem}.caosdb-f-query-panel.condensed .caosdb-f-query-form .caosdb-f-query-form-sug{display:none}}.user-component .alert{padding-top:.375rem;padding-bottom:.375rem;font-size:1rem;margin:0}header{border-bottom:1px solid rgba(0,0,0,.15);border-radius:0}footer{color:#878787}footer .nav{border-bottom:1px solid #a0a0a0}footer .nav-link{color:#878787 !important}footer .nav-link:hover{color:#6d6d6d !important}footer .footer-body{border-top:1px solid #bababa;background-color:#d3d3d3;min-height:20rem}footer .footer-border{height:3rem;box-shadow:0px -5px 7px -5px rgba(0,0,0,.4) inset;-webkit-box-shadow:0px -5px 7px -5px rgba(0,0,0,.4) inset;-moz-box-shadow:0px -5px 6px -7px rgba(0,0,0,.4) inset}.caosdb-checkbox{cursor:pointer}.caosdb-checkbox .caosdb-checkbox-icon{font-size:1.3em}.caosdb-checkbox .caosdb-check-box-input{display:none}.caosdb-checkbox.read-only{cursor:auto}.color-light-green{color:#b4e600}.minicard{border:1px solid red;width:400px;display:flex}.minicard .minicard-title{background-color:red}","",{version:3,sources:["webpack://./src/components/QueryForm.scss","webpack://./node_modules/bootstrap/scss/mixins/_breakpoints.scss","webpack://./src/index.scss"],names:[],mappings:"AAIA,yBACE,kBAAA,CACA,wBAAA,CACA,aAAA,CACA,mBAAA,CAGF,yBACE,YAAA,CAGF,qBACE,iBAAA,CACA,cAAA,CAEA,0BACE,YAAA,CACA,qBAAA,CAIJ,mEAEE,gBAAA,CACA,UAAA,CACA,OAAA,CAEA,6GACE,WAAA,CACA,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,oBAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CAEA,kPAEE,uCAAA,CAKE,yLACE,gBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,eAAA,CACA,uCAAA,CACA,WAAA,CAEA,+LACE,kBAAA,CACA,mBAAA,CACA,WAAA,CACA,oBAAA,CACA,mNACE,wBAAA,CAEF,2MACE,wBAAA,CAOJ,mMACE,YAAA,CAMR,2HACE,wBAAA,CACA,WAAA,CAGF,yHACE,WAAA,CAEA,0RAEE,YAAA,CAKN,6EACE,qBAAA,CAGF,qHACE,gBAAA,CACA,iBAAA,CACA,kBAAA,CAGF,2HACE,YAAA,CACA,kBAAA,CACA,cAAA,CAEA,iKACE,aAAA,CACA,WAAA,CAIJ,2GACE,WAAA,CACA,iBAAA,CACA,WAAA,CACA,sBAAA,CACA,WAAA,CACA,uCAAA,CACA,yHACE,8BAAA,CAIJ,qJACE,eAAA,CCpEA,yBD0EA,kDACE,YAAA,CACA,8DAAA,CACA,qBAAA,CACA,kBAAA,CAEA,qEACE,aAAA,CACA,WAAA,CAKN,gCACE,YAAA,CACA,WAAA,CACA,WAAA,CAEA,qCACE,kBAAA,CAGF,+DACE,YAAA,CAGF,yDACE,eAAA,CAGF,oDACE,WAAA,CAGF,4DACE,YAAA,CAGF,qDACE,WAAA,CACA,OAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,oBAAA,CAEA,8EACE,YAAA,CAAA,CEpLR,uBACE,mBAAA,CACA,sBAAA,CACA,cAAA,CACA,QAAA,CAGF,OACE,uCAAA,CACA,eAAA,CAGF,OACE,aAAA,CAEA,YACE,+BAAA,CAEF,iBACE,wBAAA,CAEF,uBACE,wBAAA,CAEF,oBACE,4BAAA,CACA,wBA5BgB,CA6BhB,gBAAA,CAEF,sBACE,WAAA,CACA,iDAAA,CACA,yDAAA,CACA,sDAAA,CAIJ,iBASE,cAAA,CARA,uCACE,eAAA,CAGF,yCACE,YAAA,CAKF,2BACE,WAAA,CAIJ,mBACE,aAAA,CAGF,UACE,oBAAA,CACA,WAAA,CACA,YAAA,CAEA,0BACE,oBAAA",sourcesContent:[\'@import "bootstrap/scss/functions";\\n@import "bootstrap/scss/variables";\\n@import "bootstrap/scss/mixins";\\n\\n.caosdb-f-query-cql-hint {\\n border-radius: 2rem;\\n background-color: darken(white, 15%);\\n color: lighten(black, 15%);\\n padding: 0.1rem 0.4rem;\\n}\\n\\n.caosdb-f-query-form-sug {\\n display: none;\\n}\\n\\nnav .navbar-collapse {\\n align-items: start;\\n flex-wrap: wrap;\\n\\n form {\\n display: flex;\\n flex-direction: column;\\n }\\n}\\n\\n.caosdb-f-query-panel.condensed:focus-within,\\n.caosdb-f-query-panel {\\n margin-top: 0.5rem;\\n width: 100%;\\n order: 1;\\n\\n .caosdb-f-query-form {\\n order: unset;\\n height: 44px;\\n padding-left: 2rem;\\n padding-top: 0.5rem;\\n padding-right: 2rem;\\n padding-bottom: 0.5rem;\\n border: 1px solid #ddd;\\n background-color: white;\\n border-radius: 2rem;\\n\\n &:hover,\\n &.focus {\\n box-shadow: 0 1px 6px rgba(32, 33, 36, 0.28);\\n }\\n\\n &.focus {\\n &.open {\\n ol.caosdb-f-query-form-sug {\\n margin-top: 0.5rem;\\n background-color: white;\\n display: inline-block;\\n max-height: 200px;\\n position: absolute;\\n overflow-y: auto;\\n box-shadow: 0 4px 6px rgba(32, 33, 36, 0.28);\\n padding: 0px;\\n\\n li {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n height: 24px;\\n list-style-type: none;\\n &.highlight {\\n background-color: darken(white, 15%);\\n }\\n &:hover {\\n background-color: darken(white, 15%);\\n }\\n }\\n }\\n }\\n &.submit {\\n &.open {\\n .caosdb-f-query-form-sug {\\n display: none;\\n }\\n }\\n }\\n }\\n\\n button {\\n background-color: inherit;\\n border: none;\\n }\\n\\n input {\\n border: none;\\n\\n &:focus,\\n &:focus-visible {\\n outline: none;\\n }\\n }\\n }\\n\\n form {\\n flex-direction: column;\\n }\\n\\n .caosdb-f-query-tab-list {\\n margin-top: 0.5rem;\\n padding-left: 1rem;\\n padding-right: 1rem;\\n }\\n\\n .caosdb-f-query-tab-filters {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n\\n input.form-control {\\n display: unset;\\n width: unset;\\n }\\n }\\n\\n .caosdb-f-query-tab {\\n height: 44px;\\n margin-right: 1rem;\\n padding: 6px;\\n background-color: unset;\\n border: none;\\n border-bottom: 0.2rem solid transparent;\\n &.active {\\n border-bottom: 0.2rem solid gray;\\n }\\n }\\n\\n .caosdb-f-query-filter-property-selector {\\n flex-basis: 100%;\\n }\\n}\\n\\n@include media-breakpoint-up(lg) {\\n .caosdb-f-query-panel {\\n .caosdb-f-query-tab-filters {\\n display: grid;\\n grid-template-columns: max-content max-content auto max-content;\\n grid-column-gap: 0.5rem;\\n padding: 0.2rem 0rem;\\n\\n input.form-control {\\n display: unset;\\n width: unset;\\n }\\n }\\n }\\n\\n .caosdb-f-query-panel.condensed {\\n margin-top: 0;\\n width: unset;\\n order: unset;\\n\\n form {\\n flex-direction: row;\\n }\\n\\n .caosdb-f-query-filters-toggle {\\n display: none;\\n }\\n\\n .caosdb-f-query-tab-list {\\n margin-top: 0rem;\\n }\\n\\n .caosdb-f-query-tab {\\n height: 38px;\\n }\\n\\n .caosdb-f-query-tab-filters {\\n display: none;\\n }\\n\\n .caosdb-f-query-form {\\n height: 38px;\\n order: 1;\\n padding-left: 1rem;\\n padding-top: 0.3rem;\\n padding-right: 1rem;\\n padding-bottom: 0.3rem;\\n\\n .caosdb-f-query-form-sug {\\n display: none;\\n }\\n }\\n }\\n}\\n\',\'// Breakpoint viewport sizes and media queries.\\n//\\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\\n//\\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\\n//\\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\\n\\n// Name of the next breakpoint, or null for the last breakpoint.\\n//\\n// >> breakpoint-next(sm)\\n// md\\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// md\\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\\n// md\\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\\n $n: index($breakpoint-names, $name);\\n @if not $n {\\n @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";\\n }\\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\\n}\\n\\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\\n//\\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// 576px\\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\\n $min: map-get($breakpoints, $name);\\n @return if($min != 0, $min, null);\\n}\\n\\n// Maximum breakpoint width.\\n// The maximum value is reduced by 0.02px to work around the limitations of\\n// `min-` and `max-` prefixes and viewports with fractional widths.\\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\\n//\\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// 767.98px\\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\\n $max: map-get($breakpoints, $name);\\n @return if($max and $max > 0, $max - .02, null);\\n}\\n\\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\\n// Useful for making responsive utilities.\\n//\\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// "" (Returns a blank string)\\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\\n// "-sm"\\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\\n @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");\\n}\\n\\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\\n// Makes the @content apply to the given breakpoint and wider.\\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($name, $breakpoints);\\n @if $min {\\n @media (min-width: $min) {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\\n// Makes the @content apply to the given breakpoint and narrower.\\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\\n $max: breakpoint-max($name, $breakpoints);\\n @if $max {\\n @media (max-width: $max) {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Media that spans multiple breakpoint widths.\\n// Makes the @content apply between the min and max breakpoints\\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($lower, $breakpoints);\\n $max: breakpoint-max($upper, $breakpoints);\\n\\n @if $min != null and $max != null {\\n @media (min-width: $min) and (max-width: $max) {\\n @content;\\n }\\n } @else if $max == null {\\n @include media-breakpoint-up($lower, $breakpoints) {\\n @content;\\n }\\n } @else if $min == null {\\n @include media-breakpoint-down($upper, $breakpoints) {\\n @content;\\n }\\n }\\n}\\n\\n// Media between the breakpoint\\\'s minimum and maximum widths.\\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($name, $breakpoints);\\n $next: breakpoint-next($name, $breakpoints);\\n $max: breakpoint-max($next, $breakpoints);\\n\\n @if $min != null and $max != null {\\n @media (min-width: $min) and (max-width: $max) {\\n @content;\\n }\\n } @else if $max == null {\\n @include media-breakpoint-up($name, $breakpoints) {\\n @content;\\n }\\n } @else if $min == null {\\n @include media-breakpoint-down($next, $breakpoints) {\\n @content;\\n }\\n }\\n}\\n\',\'@import "./components/QueryForm";\\n\\n$footer-body-color: lightgray;\\n\\n.user-component .alert {\\n padding-top: 0.375rem;\\n padding-bottom: 0.375rem;\\n font-size: 1rem;\\n margin: 0;\\n}\\n\\nheader {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n}\\n\\nfooter {\\n color: darken($footer-body-color, 30%);\\n\\n .nav {\\n border-bottom: 1px solid darken($footer-body-color, 20%);\\n }\\n .nav-link {\\n color: darken($footer-body-color, 30%) !important;\\n }\\n .nav-link:hover {\\n color: darken($footer-body-color, 40%) !important;\\n }\\n .footer-body {\\n border-top: 1px solid darken($footer-body-color, 10%);\\n background-color: $footer-body-color;\\n min-height: 20rem;\\n }\\n .footer-border {\\n height: 3rem;\\n box-shadow: 0px -5px 7px -5px rgba(0, 0, 0, 0.4) inset;\\n -webkit-box-shadow: 0px -5px 7px -5px rgba(0, 0, 0, 0.4) inset;\\n -moz-box-shadow: 0px -5px 6px -7px rgba(0, 0, 0, 0.4) inset;\\n }\\n}\\n\\n.caosdb-checkbox {\\n .caosdb-checkbox-icon {\\n font-size: 1.3em;\\n }\\n\\n .caosdb-check-box-input {\\n display: none;\\n }\\n\\n cursor: pointer;\\n\\n &.read-only {\\n cursor: auto;\\n }\\n}\\n\\n.color-light-green {\\n color: #b4e600;\\n}\\n\\n.minicard {\\n border: 1px solid red;\\n width: 400px;\\n display: flex;\\n\\n .minicard-title {\\n background-color: red;\\n }\\n}\\n\'],sourceRoot:""}]),t.Z=i},645:function(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,a,o){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l<this.length;l++){var s=this[l][0];null!=s&&(i[s]=!0)}for(var c=0;c<e.length;c++){var u=[].concat(e[c]);r&&i[u[0]]||(void 0!==o&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),a&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=a):u[4]="".concat(a)),t.push(u))}},t}},537:function(e){"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),a="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(a," */");return[t].concat([o]).join("\\n")}return[t].join("\\n")}},143:function(e){"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},391:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];function r(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];var a=null;return t.forEach((function(e){if(null==a){var t=e.apply(void 0,n);null!=t&&(a=t)}})),a}return(0,a.default)(r)};var r,a=(r=n(613))&&r.__esModule?r:{default:r};e.exports=t.default},613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(t,n,r,a,o,i){var l=a||"<<anonymous>>",s=i||r;if(null==n[r])return t?new Error("Required "+o+" `"+s+"` was not specified in `"+l+"`."):null;for(var c=arguments.length,u=Array(c>6?c-6:0),f=6;f<c;f++)u[f-6]=arguments[f];return e.apply(void 0,[n,r,l,o,s].concat(u))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n},e.exports=t.default},703:function(e,t,n){"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},697:function(e,t,n){e.exports=n(703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},448:function(e,t,n){"use strict";var r=n(639),a=n(142);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,p={},m={};function h(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function y(e,t,n,r){var a=g.hasOwnProperty(t)?g[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(m,e)||!f.call(p,e)&&(d.test(e)?m[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,b);g[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,b);g[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var x=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for("react.element"),E=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),N=Symbol.for("react.context"),F=Symbol.for("react.forward_ref"),O=Symbol.for("react.suspense"),_=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),z=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var T=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var P=Symbol.iterator;function j(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=P&&e[P]||e["@@iterator"])?e:null}var D,R=Object.assign;function M(e){if(void 0===D)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);D=t&&t[1]||""}return"\\n"+D+e}var I=!1;function B(e,t){if(!e||I)return"";I=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&"string"==typeof t.stack){for(var a=t.stack.split("\\n"),o=r.stack.split("\\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{I=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function q(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return B(e.type,!1);case 11:return B(e.type.render,!1);case 1:return B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case k:return"Fragment";case E:return"Portal";case S:return"Profiler";case C:return"StrictMode";case O:return"Suspense";case _:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case N:return(e.displayName||"Context")+".Consumer";case A:return(e._context.displayName||"Context")+".Provider";case F:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case z:t=e._payload,e=e._init;try{return U(e(t))}catch(e){}}return null}function $(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===C?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function G(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Y(e,t){var n=t.checked;return R({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function X(e,t){null!=(t=t.checked)&&y(e,"checked",t,!1)}function Z(e,t){X(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return R({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,fe=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function he(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=he(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(pe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ve=R({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ve[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ye(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xe=null;function we(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ee=null,ke=null,Ce=null;function Se(e){if(e=ya(e)){if("function"!=typeof Ee)throw Error(o(280));var t=e.stateNode;t&&(t=wa(t),Ee(e.stateNode,e.type,t))}}function Ae(e){ke?Ce?Ce.push(e):Ce=[e]:ke=e}function Ne(){if(ke){var e=ke,t=Ce;if(Ce=ke=null,Se(e),t)for(e=0;e<t.length;e++)Se(t[e])}}function Fe(e,t){return e(t)}function Oe(){}var _e=!1;function Le(e,t,n){if(_e)return e(t,n);_e=!0;try{return Fe(e,t,n)}finally{_e=!1,(null!==ke||null!==Ce)&&(Oe(),Ne())}}function ze(e,t){var n=e.stateNode;if(null===n)return null;var r=wa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Te=!1;if(u)try{var Pe={};Object.defineProperty(Pe,"passive",{get:function(){Te=!0}}),window.addEventListener("test",Pe,Pe),window.removeEventListener("test",Pe,Pe)}catch(ue){Te=!1}function je(e,t,n,r,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(e){this.onError(e)}}var De=!1,Re=null,Me=!1,Ie=null,Be={onError:function(e){De=!0,Re=e}};function qe(e,t,n,r,a,o,i,l,s){De=!1,Re=null,je.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function $e(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return He(a),e;if(i===r)return He(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?Ve(e):null}function Ve(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ve(e);if(null!==t)return t;e=e.sibling}return null}var Ge=a.unstable_scheduleCallback,Qe=a.unstable_cancelCallback,Ye=a.unstable_shouldYield,Ke=a.unstable_requestPaint,Xe=a.unstable_now,Ze=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null,it=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2,ct=64,ut=4194304;function ft(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=ft(l):0!=(o&=i)&&(r=ft(o))}else 0!=(i=n&~a)?r=ft(i):0!==o&&(r=ft(o));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&0!=(4194240&o)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function mt(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function ht(){var e=ct;return 0==(4194240&(ct<<=1))&&(ct=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function vt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var yt=0;function xt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var wt,Et,kt,Ct,St,At=!1,Nt=[],Ft=null,Ot=null,_t=null,Lt=new Map,zt=new Map,Tt=[],Pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function jt(e,t){switch(e){case"focusin":case"focusout":Ft=null;break;case"dragenter":case"dragleave":Ot=null;break;case"mouseover":case"mouseout":_t=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":zt.delete(t.pointerId)}}function Dt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&null!==(t=ya(t))&&Et(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Rt(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=$e(n)))return e.blockedOn=t,void St(e.priority,(function(){kt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Yt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=ya(n))&&Et(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);xe=r,n.target.dispatchEvent(r),xe=null,t.shift()}return!0}function It(e,t,n){Mt(e)&&n.delete(t)}function Bt(){At=!1,null!==Ft&&Mt(Ft)&&(Ft=null),null!==Ot&&Mt(Ot)&&(Ot=null),null!==_t&&Mt(_t)&&(_t=null),Lt.forEach(It),zt.forEach(It)}function qt(e,t){e.blockedOn===t&&(e.blockedOn=null,At||(At=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return qt(t,e)}if(0<Nt.length){qt(Nt[0],e);for(var n=1;n<Nt.length;n++){var r=Nt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Ft&&qt(Ft,e),null!==Ot&&qt(Ot,e),null!==_t&&qt(_t,e),Lt.forEach(t),zt.forEach(t),n=0;n<Tt.length;n++)(r=Tt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Tt.length&&null===(n=Tt[0]).blockedOn;)Rt(n),null===n.blockedOn&&Tt.shift()}var $t=x.ReactCurrentBatchConfig,Ht=!0;function Wt(e,t,n,r){var a=yt,o=$t.transition;$t.transition=null;try{yt=1,Gt(e,t,n,r)}finally{yt=a,$t.transition=o}}function Vt(e,t,n,r){var a=yt,o=$t.transition;$t.transition=null;try{yt=4,Gt(e,t,n,r)}finally{yt=a,$t.transition=o}}function Gt(e,t,n,r){if(Ht){var a=Yt(e,t,n,r);if(null===a)Hr(e,t,r,Qt,n),jt(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Ft=Dt(Ft,e,t,n,r,a),!0;case"dragenter":return Ot=Dt(Ot,e,t,n,r,a),!0;case"mouseover":return _t=Dt(_t,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Lt.set(o,Dt(Lt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,zt.set(o,Dt(zt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(jt(e,r),4&t&&-1<Pt.indexOf(e)){for(;null!==a;){var o=ya(a);if(null!==o&&wt(o),null===(o=Yt(e,t,n,r))&&Hr(e,t,r,Qt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Qt=null;function Yt(e,t,n,r){if(Qt=null,null!==(e=ba(e=we(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=$e(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Qt=e,null}function Kt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Ze()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Xt=null,Zt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Zt,r=n.length,a="value"in Xt?Xt.value:Xt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return R(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=an(cn),fn=R({},cn,{view:0,detail:0}),dn=an(fn),pn=R({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Sn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),mn=an(pn),hn=an(R({},pn,{dataTransfer:0})),gn=an(R({},fn,{relatedTarget:0})),vn=an(R({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=R({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),yn=an(bn),xn=an(R({},cn,{data:0})),wn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},kn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=kn[e])&&!!t[e]}function Sn(){return Cn}var An=R({},fn,{key:function(e){if(e.key){var t=wn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Sn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Nn=an(An),Fn=an(R({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),On=an(R({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Sn})),_n=an(R({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=R({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),zn=an(Ln),Tn=[9,13,27,32],Pn=u&&"CompositionEvent"in window,jn=null;u&&"documentMode"in document&&(jn=document.documentMode);var Dn=u&&"TextEvent"in window&&!jn,Rn=u&&(!Pn||jn&&8<jn&&11>=jn),Mn=String.fromCharCode(32),In=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Tn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1,$n={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!$n[e.type]:"textarea"===t}function Wn(e,t,n,r){Ae(r),0<(t=Vr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Gn=null;function Qn(e){Mr(e,0)}function Yn(e){if(G(xa(e)))return e}function Kn(e,t){if("change"===e)return t}var Xn=!1;if(u){var Zn;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Zn=Jn}else Zn=!1;Xn=Zn&&(!document.documentMode||9<document.documentMode)}function tr(){Vn&&(Vn.detachEvent("onpropertychange",nr),Gn=Vn=null)}function nr(e){if("value"===e.propertyName&&Yn(Gn)){var t=[];Wn(t,Gn,e,we(e)),Le(Qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Gn=n,(Vn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Gn)}function or(e,t){if("click"===e)return Yn(t)}function ir(e,t){if("input"===e||"change"===e)return Yn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!f.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&fr(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=ur(n,o);var i=ur(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var hr=u&&"documentMode"in document&&11>=document.documentMode,gr=null,vr=null,br=null,yr=!1;function xr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;yr||null==gr||gr!==Q(r)||(r="selectionStart"in(r=gr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Vr(vr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Er={animationend:wr("Animation","AnimationEnd"),animationiteration:wr("Animation","AnimationIteration"),animationstart:wr("Animation","AnimationStart"),transitionend:wr("Transition","TransitionEnd")},kr={},Cr={};function Sr(e){if(kr[e])return kr[e];if(!Er[e])return e;var t,n=Er[e];for(t in n)if(n.hasOwnProperty(t)&&t in Cr)return kr[e]=n[t];return e}u&&(Cr=document.createElement("div").style,"AnimationEvent"in window||(delete Er.animationend.animation,delete Er.animationiteration.animation,delete Er.animationstart.animation),"TransitionEvent"in window||delete Er.transitionend.transition);var Ar=Sr("animationend"),Nr=Sr("animationiteration"),Fr=Sr("animationstart"),Or=Sr("transitionend"),_r=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function zr(e,t){_r.set(e,t),s(t,[e])}for(var Tr=0;Tr<Lr.length;Tr++){var Pr=Lr[Tr];zr(Pr.toLowerCase(),"on"+(Pr[0].toUpperCase()+Pr.slice(1)))}zr(Ar,"onAnimationEnd"),zr(Nr,"onAnimationIteration"),zr(Fr,"onAnimationStart"),zr("dblclick","onDoubleClick"),zr("focusin","onFocus"),zr("focusout","onBlur"),zr(Or,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var jr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Dr=new Set("cancel close invalid load scroll toggle".split(" ").concat(jr));function Rr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,c){if(qe.apply(this,arguments),De){if(!De)throw Error(o(198));var u=Re;De=!1,Re=null,Me||(Me=!0,Ie=u)}}(r,t,void 0,e),e.currentTarget=null}function Mr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Rr(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Rr(a,l,c),o=s}}}if(Me)throw e=Ie,Me=!1,Ie=null,e}function Ir(e,t){var n=t[ha];void 0===n&&(n=t[ha]=new Set);var r=e+"__bubble";n.has(r)||($r(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),$r(n,e,r,t)}var qr="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[qr]){e[qr]=!0,i.forEach((function(t){"selectionchange"!==t&&(Dr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[qr]||(t[qr]=!0,Br("selectionchange",!1,t))}}function $r(e,t,n,r){switch(Kt(t)){case 1:var a=Wt;break;case 4:a=Vt;break;default:a=Gt}n=a.bind(null,t,n,e),a=void 0,!Te||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=o,a=we(n),i=[];e:{var l=_r.get(e);if(void 0!==l){var s=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=Nn;break;case"focusin":c="focus",s=gn;break;case"focusout":c="blur",s=gn;break;case"beforeblur":case"afterblur":s=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=hn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=On;break;case Ar:case Nr:case Fr:s=vn;break;case Or:s=_n;break;case"scroll":s=dn;break;case"wheel":s=zn;break;case"copy":case"cut":case"paste":s=yn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Fn}var u=0!=(4&t),f=!u&&"scroll"===e,d=u?null!==l?l+"Capture":null:l;u=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==d&&null!=(h=ze(m,d))&&u.push(Wr(m,h,p))),f)break;m=m.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===xe||!(c=n.relatedTarget||n.fromElement)||!ba(c)&&!c[ma])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?ba(c):null)&&(c!==(f=Ue(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=mn,h="onMouseLeave",d="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Fn,h="onPointerLeave",d="onPointerEnter",m="pointer"),f=null==s?l:xa(s),p=null==c?l:xa(c),(l=new u(h,m+"leave",s,n,a)).target=f,l.relatedTarget=p,h=null,ba(a)===r&&((u=new u(d,m+"enter",c,n,a)).target=p,u.relatedTarget=f,h=u),f=h,s&&c)e:{for(d=c,m=0,p=u=s;p;p=Gr(p))m++;for(p=0,h=d;h;h=Gr(h))p++;for(;0<m-p;)u=Gr(u),m--;for(;0<p-m;)d=Gr(d),p--;for(;m--;){if(u===d||null!==d&&u===d.alternate)break e;u=Gr(u),d=Gr(d)}u=null}else u=null;null!==s&&Qr(i,l,s,u,!1),null!==c&&null!==f&&Qr(i,f,c,u,!0)}if("select"===(s=(l=r?xa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Kn;else if(Hn(l))if(Xn)g=ir;else{g=ar;var v=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=or);switch(g&&(g=g(e,r))?Wn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ee(l,"number",l.value)),v=r?xa(r):window,e){case"focusin":(Hn(v)||"true"===v.contentEditable)&&(gr=v,vr=r,br=null);break;case"focusout":br=vr=gr=null;break;case"mousedown":yr=!0;break;case"contextmenu":case"mouseup":case"dragend":yr=!1,xr(i,n,a);break;case"selectionchange":if(hr)break;case"keydown":case"keyup":xr(i,n,a)}var b;if(Pn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Un?Bn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Rn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==y?"onCompositionEnd"===y&&Un&&(b=en()):(Zt="value"in(Xt=a)?Xt.value:Xt.textContent,Un=!0)),0<(v=Vr(r,y)).length&&(y=new xn(y,e,null,n,a),i.push({event:y,listeners:v}),(b||null!==(b=qn(n)))&&(y.data=b))),(b=Dn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(In=!0,Mn);case"textInput":return(e=t.data)===Mn&&In?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!Pn&&Bn(e,t)?(e=en(),Jt=Zt=Xt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Rn&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(r=Vr(r,"onBeforeInput")).length&&(a=new xn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b)}Mr(i,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Vr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=ze(e,n))&&r.unshift(Wr(e,o,a)),null!=(o=ze(e,t))&&r.push(Wr(e,o,a))),e=e.return}return r}function Gr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Qr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=ze(n,o))&&i.unshift(Wr(n,s,l)):a||null!=(s=ze(n,o))&&i.push(Wr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Yr=/\\r\\n?/g,Kr=/\\u0000|\\uFFFD/g;function Xr(e){return("string"==typeof e?e:""+e).replace(Yr,"\\n").replace(Kr,"")}function Zr(e,t,n){if(t=Xr(t),Xr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout((function(){throw e}))}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ca(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ua(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var fa=Math.random().toString(36).slice(2),da="__reactFiber$"+fa,pa="__reactProps$"+fa,ma="__reactContainer$"+fa,ha="__reactEvents$"+fa,ga="__reactListeners$"+fa,va="__reactHandles$"+fa;function ba(e){var t=e[da];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ma]||n[da]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ua(e);null!==e;){if(n=e[da])return n;e=ua(e)}return t}n=(e=n).parentNode}return null}function ya(e){return!(e=e[da]||e[ma])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function xa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function wa(e){return e[pa]||null}var Ea=[],ka=-1;function Ca(e){return{current:e}}function Sa(e){0>ka||(e.current=Ea[ka],Ea[ka]=null,ka--)}function Aa(e,t){ka++,Ea[ka]=e.current,e.current=t}var Na={},Fa=Ca(Na),Oa=Ca(!1),_a=Na;function La(e,t){var n=e.type.contextTypes;if(!n)return Na;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function za(e){return null!=e.childContextTypes}function Ta(){Sa(Oa),Sa(Fa)}function Pa(e,t,n){if(Fa.current!==Na)throw Error(o(168));Aa(Fa,t),Aa(Oa,n)}function ja(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,$(e)||"Unknown",a));return R({},n,r)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Na,_a=Fa.current,Aa(Fa,e),Aa(Oa,Oa.current),!0}function Ra(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=ja(e,t,_a),r.__reactInternalMemoizedMergedChildContext=e,Sa(Oa),Sa(Fa),Aa(Fa,e)):Sa(Oa),Aa(Oa,n)}var Ma=null,Ia=!1,Ba=!1;function qa(e){null===Ma?Ma=[e]:Ma.push(e)}function Ua(){if(!Ba&&null!==Ma){Ba=!0;var e=0,t=yt;try{var n=Ma;for(yt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Ma=null,Ia=!1}catch(t){throw null!==Ma&&(Ma=Ma.slice(e+1)),Ge(Je,Ua),t}finally{yt=t,Ba=!1}}return null}var $a=[],Ha=0,Wa=null,Va=0,Ga=[],Qa=0,Ya=null,Ka=1,Xa="";function Za(e,t){$a[Ha++]=Va,$a[Ha++]=Wa,Wa=e,Va=t}function Ja(e,t,n){Ga[Qa++]=Ka,Ga[Qa++]=Xa,Ga[Qa++]=Ya,Ya=e;var r=Ka;e=Xa;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Ka=1<<32-it(t)+a|n<<a|r,Xa=o+e}else Ka=1<<o|n<<a|r,Xa=e}function eo(e){null!==e.return&&(Za(e,1),Ja(e,1,0))}function to(e){for(;e===Wa;)Wa=$a[--Ha],$a[Ha]=null,Va=$a[--Ha],$a[Ha]=null;for(;e===Ya;)Ya=Ga[--Qa],Ga[Qa]=null,Xa=Ga[--Qa],Ga[Qa]=null,Ka=Ga[--Qa],Ga[Qa]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=Lc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ca(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ya?{id:Ka,overflow:Xa}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Lc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function co(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ca(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function uo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function fo(e){if(e!==no)return!1;if(!ao)return uo(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw po(),Error(o(418));for(;t;)io(e,t),t=ca(t.nextSibling)}if(uo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ca(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ca(e.stateNode.nextSibling):null;return!0}function po(){for(var e=ro;e;)e=ca(e.nextSibling)}function mo(){ro=no=null,ao=!1}function ho(e){null===oo?oo=[e]:oo.push(e)}var go=x.ReactCurrentBatchConfig;function vo(e,t){if(e&&e.defaultProps){for(var n in t=R({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var bo=Ca(null),yo=null,xo=null,wo=null;function Eo(){wo=xo=yo=null}function ko(e){var t=bo.current;Sa(bo),e._currentValue=t}function Co(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function So(e,t){yo=e,wo=xo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(xl=!0),e.firstContext=null)}function Ao(e){var t=e._currentValue;if(wo!==e)if(e={context:e,memoizedValue:t,next:null},null===xo){if(null===yo)throw Error(o(308));xo=e,yo.dependencies={lanes:0,firstContext:e}}else xo=xo.next=e;return t}var No=null;function Fo(e){null===No?No=[e]:No.push(e)}function Oo(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,Fo(t)):(n.next=a.next,a.next=n),t.interleaved=n,_o(e,r)}function _o(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Lo=!1;function zo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function To(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Po(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function jo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Fs)){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,_o(e,n)}return null===(a=r.interleaved)?(t.next=t,Fo(r)):(t.next=a.next,a.next=t),r.interleaved=t,_o(e,n)}function Do(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Ro(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Mo(e,t,n,r){var a=e.updateQueue;Lo=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?o=c:i.next=c,i=s;var u=e.alternate;null!==u&&(l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s)}if(null!==o){var f=a.baseState;for(i=0,u=c=s=null,l=o;;){var d=l.lane,p=l.eventTime;if((r&d)===d){null!==u&&(u=u.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,h=l;switch(d=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,d);break e}f=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(d="function"==typeof(m=h.payload)?m.call(p,f,d):m))break e;f=R({},f,d);break e;case 2:Lo=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(d=a.effects)?a.effects=[l]:d.push(l))}else p={eventTime:p,lane:d,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=p,s=f):u=u.next=p,i|=d;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(d=l).next,d.next=null,a.lastBaseUpdate=d,a.shared.pending=null}}if(null===u&&(s=f),a.baseState=s,a.firstBaseUpdate=c,a.lastBaseUpdate=u,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Ds|=i,e.lanes=i,e.memoizedState=f}}function Io(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Bo=(new r.Component).refs;function qo(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:R({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Uo={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ec(),a=tc(e),o=Po(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=jo(e,o,a))&&(nc(t,e,a,r),Do(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ec(),a=tc(e),o=Po(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=jo(e,o,a))&&(nc(t,e,a,r),Do(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ec(),r=tc(e),a=Po(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=jo(e,a,r))&&(nc(t,e,r,n),Do(t,e,r))}};function $o(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!(t.prototype&&t.prototype.isPureReactComponent&&sr(n,r)&&sr(a,o))}function Ho(e,t,n){var r=!1,a=Na,o=t.contextType;return"object"==typeof o&&null!==o?o=Ao(o):(a=za(t)?_a:Fa.current,o=(r=null!=(r=t.contextTypes))?La(e,a):Na),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Uo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function Wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Uo.enqueueReplaceState(t,t.state,null)}function Vo(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=Bo,zo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=Ao(o):(o=za(t)?_a:Fa.current,a.context=La(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(qo(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&Uo.enqueueReplaceState(a,a.state,null),Mo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function Go(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;t===Bo&&(t=a.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Qo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Yo(e){return(0,e._init)(e._payload)}function Ko(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Tc(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Rc(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){var o=n.type;return o===k?f(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===z&&Yo(o)===t.type)?((r=a(t,n.props)).ref=Go(e,t,n),r.return=e,r):((r=Pc(n.type,n.key,n.props,null,e.mode,r)).ref=Go(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Mc(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function f(e,t,n,r,o){return null===t||7!==t.tag?((t=jc(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Rc(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case w:return(n=Pc(t.type,t.key,t.props,null,e.mode,n)).ref=Go(e,null,t),n.return=e,n;case E:return(t=Mc(t,e.mode,n)).return=e,t;case z:return d(e,(0,t._init)(t._payload),n)}if(te(t)||j(t))return(t=jc(t,e.mode,n,null)).return=e,t;Qo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case w:return n.key===a?c(e,t,n,r):null;case E:return n.key===a?u(e,t,n,r):null;case z:return p(e,t,(a=n._init)(n._payload),r)}if(te(n)||j(n))return null!==a?null:f(e,t,n,r,null);Qo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case w:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case E:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case z:return m(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||j(r))return f(t,e=e.get(n)||null,r,a,null);Qo(t,r)}return null}function h(a,o,l,s){for(var c=null,u=null,f=o,h=o=0,g=null;null!==f&&h<l.length;h++){f.index>h?(g=f,f=null):g=f.sibling;var v=p(a,f,l[h],s);if(null===v){null===f&&(f=g);break}e&&f&&null===v.alternate&&t(a,f),o=i(v,o,h),null===u?c=v:u.sibling=v,u=v,f=g}if(h===l.length)return n(a,f),ao&&Za(a,h),c;if(null===f){for(;h<l.length;h++)null!==(f=d(a,l[h],s))&&(o=i(f,o,h),null===u?c=f:u.sibling=f,u=f);return ao&&Za(a,h),c}for(f=r(a,f);h<l.length;h++)null!==(g=m(f,a,h,l[h],s))&&(e&&null!==g.alternate&&f.delete(null===g.key?h:g.key),o=i(g,o,h),null===u?c=g:u.sibling=g,u=g);return e&&f.forEach((function(e){return t(a,e)})),ao&&Za(a,h),c}function g(a,l,s,c){var u=j(s);if("function"!=typeof u)throw Error(o(150));if(null==(s=u.call(s)))throw Error(o(151));for(var f=u=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(a,h,b.value,c);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=i(y,l,g),null===f?u=y:f.sibling=y,f=y,h=v}if(b.done)return n(a,h),ao&&Za(a,g),u;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=d(a,b.value,c))&&(l=i(b,l,g),null===f?u=b:f.sibling=b,f=b);return ao&&Za(a,g),u}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,c))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=i(b,l,g),null===f?u=b:f.sibling=b,f=b);return e&&h.forEach((function(e){return t(a,e)})),ao&&Za(a,g),u}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===k&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case w:e:{for(var c=i.key,u=o;null!==u;){if(u.key===c){if((c=i.type)===k){if(7===u.tag){n(r,u.sibling),(o=a(u,i.props.children)).return=r,r=o;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===z&&Yo(c)===u.type){n(r,u.sibling),(o=a(u,i.props)).ref=Go(r,u,i),o.return=r,r=o;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===k?((o=jc(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=Pc(i.type,i.key,i.props,null,r.mode,s)).ref=Go(r,o,i),s.return=r,r=s)}return l(r);case E:e:{for(u=i.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=Mc(i,r.mode,s)).return=r,r=o}return l(r);case z:return e(r,o,(u=i._init)(i._payload),s)}if(te(i))return h(r,o,i,s);if(j(i))return g(r,o,i,s);Qo(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Rc(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var Xo=Ko(!0),Zo=Ko(!1),Jo={},ei=Ca(Jo),ti=Ca(Jo),ni=Ca(Jo);function ri(e){if(e===Jo)throw Error(o(174));return e}function ai(e,t){switch(Aa(ni,t),Aa(ti,e),Aa(ei,Jo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Sa(ei),Aa(ei,t)}function oi(){Sa(ei),Sa(ti),Sa(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=se(t,e.type);t!==n&&(Aa(ti,e),Aa(ei,n))}function li(e){ti.current===e&&(Sa(ei),Sa(ti))}var si=Ca(0);function ci(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ui=[];function fi(){for(var e=0;e<ui.length;e++)ui[e]._workInProgressVersionPrimary=null;ui.length=0}var di=x.ReactCurrentDispatcher,pi=x.ReactCurrentBatchConfig,mi=0,hi=null,gi=null,vi=null,bi=!1,yi=!1,xi=0,wi=0;function Ei(){throw Error(o(321))}function ki(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Ci(e,t,n,r,a,i){if(mi=i,hi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,di.current=null===e||null===e.memoizedState?ll:sl,e=n(r,a),yi){i=0;do{if(yi=!1,xi=0,25<=i)throw Error(o(301));i+=1,vi=gi=null,t.updateQueue=null,di.current=cl,e=n(r,a)}while(yi)}if(di.current=il,t=null!==gi&&null!==gi.next,mi=0,vi=gi=hi=null,bi=!1,t)throw Error(o(300));return e}function Si(){var e=0!==xi;return xi=0,e}function Ai(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===vi?hi.memoizedState=vi=e:vi=vi.next=e,vi}function Ni(){if(null===gi){var e=hi.alternate;e=null!==e?e.memoizedState:null}else e=gi.next;var t=null===vi?hi.memoizedState:vi.next;if(null!==t)vi=t,gi=e;else{if(null===e)throw Error(o(310));e={memoizedState:(gi=e).memoizedState,baseState:gi.baseState,baseQueue:gi.baseQueue,queue:gi.queue,next:null},null===vi?hi.memoizedState=vi=e:vi=vi.next=e}return vi}function Fi(e,t){return"function"==typeof t?t(e):t}function Oi(e){var t=Ni(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=gi,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,c=null,u=i;do{var f=u.lane;if((mi&f)===f)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var d={lane:f,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(s=c=d,l=r):c=c.next=d,hi.lanes|=f,Ds|=f}u=u.next}while(null!==u&&u!==i);null===c?l=r:c.next=s,lr(r,t.memoizedState)||(xl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,hi.lanes|=i,Ds|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function _i(e){var t=Ni(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(xl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Li(){}function zi(e,t){var n=hi,r=Ni(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,xl=!0),r=r.queue,Hi(ji.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==vi&&1&vi.memoizedState.tag){if(n.flags|=2048,Ii(9,Pi.bind(null,n,r,a,t),void 0,null),null===Os)throw Error(o(349));0!=(30&mi)||Ti(n,t,a)}return a}function Ti(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Pi(e,t,n,r){t.value=n,t.getSnapshot=r,Di(t)&&Ri(e)}function ji(e,t,n){return n((function(){Di(t)&&Ri(e)}))}function Di(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(e){return!0}}function Ri(e){var t=_o(e,1);null!==t&&nc(t,e,1,-1)}function Mi(e){var t=Ai();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Fi,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,hi,e),[t.memoizedState,e]}function Ii(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=hi.updateQueue)?(t={lastEffect:null,stores:null},hi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Bi(){return Ni().memoizedState}function qi(e,t,n,r){var a=Ai();hi.flags|=e,a.memoizedState=Ii(1|t,n,void 0,void 0===r?null:r)}function Ui(e,t,n,r){var a=Ni();r=void 0===r?null:r;var o=void 0;if(null!==gi){var i=gi.memoizedState;if(o=i.destroy,null!==r&&ki(r,i.deps))return void(a.memoizedState=Ii(t,n,o,r))}hi.flags|=e,a.memoizedState=Ii(1|t,n,o,r)}function $i(e,t){return qi(8390656,8,e,t)}function Hi(e,t){return Ui(2048,8,e,t)}function Wi(e,t){return Ui(4,2,e,t)}function Vi(e,t){return Ui(4,4,e,t)}function Gi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Qi(e,t,n){return n=null!=n?n.concat([e]):null,Ui(4,4,Gi.bind(null,t,e),n)}function Yi(){}function Ki(e,t){var n=Ni();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ki(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Xi(e,t){var n=Ni();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ki(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Zi(e,t,n){return 0==(21&mi)?(e.baseState&&(e.baseState=!1,xl=!0),e.memoizedState=n):(lr(n,t)||(n=ht(),hi.lanes|=n,Ds|=n,e.baseState=!0),t)}function Ji(e,t){var n=yt;yt=0!==n&&4>n?n:4,e(!0);var r=pi.transition;pi.transition={};try{e(!1),t()}finally{yt=n,pi.transition=r}}function el(){return Ni().memoizedState}function tl(e,t,n){var r=tc(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e)?al(t,n):null!==(n=Oo(e,t,n,r))&&(nc(n,e,r,ec()),ol(n,t,r))}function nl(e,t,n){var r=tc(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))al(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,Fo(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(e){}null!==(n=Oo(e,t,a,r))&&(nc(n,e,r,a=ec()),ol(n,t,r))}}function rl(e){var t=e.alternate;return e===hi||null!==t&&t===hi}function al(e,t){yi=bi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ol(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var il={readContext:Ao,useCallback:Ei,useContext:Ei,useEffect:Ei,useImperativeHandle:Ei,useInsertionEffect:Ei,useLayoutEffect:Ei,useMemo:Ei,useReducer:Ei,useRef:Ei,useState:Ei,useDebugValue:Ei,useDeferredValue:Ei,useTransition:Ei,useMutableSource:Ei,useSyncExternalStore:Ei,useId:Ei,unstable_isNewReconciler:!1},ll={readContext:Ao,useCallback:function(e,t){return Ai().memoizedState=[e,void 0===t?null:t],e},useContext:Ao,useEffect:$i,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,qi(4194308,4,Gi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qi(4194308,4,e,t)},useInsertionEffect:function(e,t){return qi(4,2,e,t)},useMemo:function(e,t){var n=Ai();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ai();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,hi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ai().memoizedState=e},useState:Mi,useDebugValue:Yi,useDeferredValue:function(e){return Ai().memoizedState=e},useTransition:function(){var e=Mi(!1),t=e[0];return e=Ji.bind(null,e[1]),Ai().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=hi,a=Ai();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===Os)throw Error(o(349));0!=(30&mi)||Ti(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,$i(ji.bind(null,r,i,e),[e]),r.flags|=2048,Ii(9,Pi.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ai(),t=Os.identifierPrefix;if(ao){var n=Xa;t=":"+t+"R"+(n=(Ka&~(1<<32-it(Ka)-1)).toString(32)+n),0<(n=xi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=wi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},sl={readContext:Ao,useCallback:Ki,useContext:Ao,useEffect:Hi,useImperativeHandle:Qi,useInsertionEffect:Wi,useLayoutEffect:Vi,useMemo:Xi,useReducer:Oi,useRef:Bi,useState:function(){return Oi(Fi)},useDebugValue:Yi,useDeferredValue:function(e){return Zi(Ni(),gi.memoizedState,e)},useTransition:function(){return[Oi(Fi)[0],Ni().memoizedState]},useMutableSource:Li,useSyncExternalStore:zi,useId:el,unstable_isNewReconciler:!1},cl={readContext:Ao,useCallback:Ki,useContext:Ao,useEffect:Hi,useImperativeHandle:Qi,useInsertionEffect:Wi,useLayoutEffect:Vi,useMemo:Xi,useReducer:_i,useRef:Bi,useState:function(){return _i(Fi)},useDebugValue:Yi,useDeferredValue:function(e){var t=Ni();return null===gi?t.memoizedState=e:Zi(t,gi.memoizedState,e)},useTransition:function(){return[_i(Fi)[0],Ni().memoizedState]},useMutableSource:Li,useSyncExternalStore:zi,useId:el,unstable_isNewReconciler:!1};function ul(e,t){try{var n="",r=t;do{n+=q(r),r=r.return}while(r);var a=n}catch(e){a="\\nError generating stack: "+e.message+"\\n"+e.stack}return{value:e,source:t,stack:a,digest:null}}function fl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function ml(e,t,n){(n=Po(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hs||(Hs=!0,Ws=r),dl(0,t)},n}function hl(e,t,n){(n=Po(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){dl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Vs?Vs=new Set([this]):Vs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=Sc.bind(null,e,t,n),t.then(e,e))}function vl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function bl(e,t,n,r,a){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Po(-1,1)).tag=2,jo(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=a,e)}var yl=x.ReactCurrentOwner,xl=!1;function wl(e,t,n,r){t.child=null===e?Zo(t,null,n,r):Xo(t,e.child,n,r)}function El(e,t,n,r,a){n=n.render;var o=t.ref;return So(t,a),r=Ci(e,t,n,r,o,a),n=Si(),null===e||xl?(ao&&n&&eo(t),t.flags|=1,wl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hl(e,t,a))}function kl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||zc(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Pc(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Cl(e,t,o,r,a))}if(o=e.child,0==(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Hl(e,t,a)}return t.flags|=1,(e=Tc(o,r)).ref=t.ref,e.return=t,t.child=e}function Cl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(xl=!1,t.pendingProps=r=o,0==(e.lanes&a))return t.lanes=e.lanes,Hl(e,t,a);0!=(131072&e.flags)&&(xl=!0)}}return Nl(e,t,n,r,a)}function Sl(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Aa(Ts,zs),zs|=n;else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Aa(Ts,zs),zs|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Aa(Ts,zs),zs|=r}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Aa(Ts,zs),zs|=r;return wl(e,t,a,n),t.child}function Al(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Nl(e,t,n,r,a){var o=za(n)?_a:Fa.current;return o=La(t,o),So(t,a),n=Ci(e,t,n,r,o,a),r=Si(),null===e||xl?(ao&&r&&eo(t),t.flags|=1,wl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Hl(e,t,a))}function Fl(e,t,n,r,a){if(za(n)){var o=!0;Da(t)}else o=!1;if(So(t,a),null===t.stateNode)$l(e,t),Ho(t,n,r),Vo(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;c="object"==typeof c&&null!==c?Ao(c):La(t,c=za(n)?_a:Fa.current);var u=n.getDerivedStateFromProps,f="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;f||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&Wo(t,i,r,c),Lo=!1;var d=t.memoizedState;i.state=d,Mo(t,r,i,a),s=t.memoizedState,l!==r||d!==s||Oa.current||Lo?("function"==typeof u&&(qo(t,n,u,r),s=t.memoizedState),(l=Lo||$o(t,n,l,r,d,s,c))?(f||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,To(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:vo(t.type,l),i.props=c,f=t.pendingProps,d=i.context,s="object"==typeof(s=n.contextType)&&null!==s?Ao(s):La(t,s=za(n)?_a:Fa.current);var p=n.getDerivedStateFromProps;(u="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==f||d!==s)&&Wo(t,i,r,s),Lo=!1,d=t.memoizedState,i.state=d,Mo(t,r,i,a);var m=t.memoizedState;l!==f||d!==m||Oa.current||Lo?("function"==typeof p&&(qo(t,n,p,r),m=t.memoizedState),(c=Lo||$o(t,n,c,r,d,m,s)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return Ol(e,t,n,r,o,a)}function Ol(e,t,n,r,a,o){Al(e,t);var i=0!=(128&t.flags);if(!r&&!i)return a&&Ra(t,n,!1),Hl(e,t,o);r=t.stateNode,yl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Xo(t,e.child,null,o),t.child=Xo(t,null,l,o)):wl(e,t,l,o),t.memoizedState=r.state,a&&Ra(t,n,!0),t.child}function _l(e){var t=e.stateNode;t.pendingContext?Pa(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Pa(0,t.context,!1),ai(e,t.containerInfo)}function Ll(e,t,n,r,a){return mo(),ho(a),t.flags|=256,wl(e,t,n,r),t.child}var zl,Tl,Pl,jl={dehydrated:null,treeContext:null,retryLane:0};function Dl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Rl(e,t,n){var r,a=t.pendingProps,i=si.current,l=!1,s=0!=(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&0!=(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Aa(si,1&i),null===e)return co(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},0==(1&a)&&null!==l?(l.childLanes=0,l.pendingProps=s):l=Dc(s,a,0,null),e=jc(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Dl(n),t.memoizedState=jl,e):Ml(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,Il(e,t,l,r=fl(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Dc({mode:"visible",children:r.children},a,0,null),(i=jc(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&t.mode)&&Xo(t,e.child,null,l),t.child.memoizedState=Dl(l),t.memoizedState=jl,i);if(0==(1&t.mode))return Il(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,Il(e,t,l,r=fl(i=Error(o(419)),r,void 0))}if(s=0!=(l&e.childLanes),xl||s){if(null!==(r=Os)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!=(a&(r.suspendedLanes|l))?0:a)&&a!==i.retryLane&&(i.retryLane=a,_o(e,a),nc(r,e,a,-1))}return hc(),Il(e,t,l,r=fl(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=Nc.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ca(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Ga[Qa++]=Ka,Ga[Qa++]=Xa,Ga[Qa++]=Ya,Ka=e.id,Xa=e.overflow,Ya=t),(t=Ml(t,r.children)).flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:a.children};return 0==(1&s)&&t.child!==i?((a=t.child).childLanes=0,a.pendingProps=c,t.deletions=null):(a=Tc(i,c)).subtreeFlags=14680064&i.subtreeFlags,null!==r?l=Tc(r,l):(l=jc(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Dl(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=jl,a}return e=(l=e.child).sibling,a=Tc(l,{mode:"visible",children:a.children}),0==(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Ml(e,t){return(t=Dc({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Il(e,t,n,r){return null!==r&&ho(r),Xo(t,e.child,null,n),(e=Ml(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Bl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Co(e.return,t,n)}function ql(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function Ul(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(wl(e,t,r.children,n),0!=(2&(r=si.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Bl(e,n,t);else if(19===e.tag)Bl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Aa(si,r),0==(1&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ci(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),ql(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ci(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}ql(t,!0,n,null,o);break;case"together":ql(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function $l(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ds|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Tc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Tc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Wl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Vl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Gl(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vl(t),null;case 1:case 17:return za(t.type)&&Ta(),Vl(t),null;case 3:return r=t.stateNode,oi(),Sa(Oa),Sa(Fa),fi(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fo(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==oo&&(ic(oo),oo=null))),Vl(t),null;case 5:li(t);var a=ri(ni.current);if(n=t.type,null!==e&&null!=t.stateNode)Tl(e,t,n,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Vl(t),null}if(e=ri(ei.current),fo(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[da]=t,r[pa]=i,e=0!=(1&t.mode),n){case"dialog":Ir("cancel",r),Ir("close",r);break;case"iframe":case"object":case"embed":Ir("load",r);break;case"video":case"audio":for(a=0;a<jr.length;a++)Ir(jr[a],r);break;case"source":Ir("error",r);break;case"img":case"image":case"link":Ir("error",r),Ir("load",r);break;case"details":Ir("toggle",r);break;case"input":K(r,i),Ir("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Ir("invalid",r);break;case"textarea":ae(r,i),Ir("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var c=i[s];"children"===s?"string"==typeof c?r.textContent!==c&&(!0!==i.suppressHydrationWarning&&Zr(r.textContent,c,e),a=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(!0!==i.suppressHydrationWarning&&Zr(r.textContent,c,e),a=["children",""+c]):l.hasOwnProperty(s)&&null!=c&&"onScroll"===s&&Ir("scroll",r)}switch(n){case"input":V(r),J(r,i,!0);break;case"textarea":V(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[da]=t,e[pa]=r,zl(e,t),t.stateNode=e;e:{switch(s=ye(n,r),n){case"dialog":Ir("cancel",e),Ir("close",e),a=r;break;case"iframe":case"object":case"embed":Ir("load",e),a=r;break;case"video":case"audio":for(a=0;a<jr.length;a++)Ir(jr[a],e);a=r;break;case"source":Ir("error",e),a=r;break;case"img":case"image":case"link":Ir("error",e),Ir("load",e),a=r;break;case"details":Ir("toggle",e),a=r;break;case"input":K(e,r),a=Y(e,r),Ir("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=R({},r,{value:void 0}),Ir("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),Ir("invalid",e)}for(i in be(n,a),c=a)if(c.hasOwnProperty(i)){var u=c[i];"style"===i?ge(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&fe(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&de(e,u):"number"==typeof u&&de(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=u&&"onScroll"===i&&Ir("scroll",e):null!=u&&y(e,i,u,s))}switch(n){case"input":V(e),J(e,r,!1);break;case"textarea":V(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Vl(t),null;case 6:if(e&&null!=t.stateNode)Pl(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=ri(ni.current),ri(ei.current),fo(t)){if(r=t.stateNode,n=t.memoizedProps,r[da]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Zr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Zr(r.nodeValue,n,0!=(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[da]=t,t.stateNode=r}return Vl(t),null;case 13:if(Sa(si),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&0!=(1&t.mode)&&0==(128&t.flags))po(),mo(),t.flags|=98560,i=!1;else if(i=fo(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[da]=t}else mo(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Vl(t),i=!1}else null!==oo&&(ic(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&si.current)?0===Ps&&(Ps=3):hc())),null!==t.updateQueue&&(t.flags|=4),Vl(t),null);case 4:return oi(),null===e&&Ur(t.stateNode.containerInfo),Vl(t),null;case 10:return ko(t.type._context),Vl(t),null;case 19:if(Sa(si),null===(i=t.memoizedState))return Vl(t),null;if(r=0!=(128&t.flags),null===(s=i.rendering))if(r)Wl(i,!1);else{if(0!==Ps||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(s=ci(e))){for(t.flags|=128,Wl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Aa(si,1&si.current|2),t.child}e=e.sibling}null!==i.tail&&Xe()>Us&&(t.flags|=128,r=!0,Wl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ci(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Wl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return Vl(t),null}else 2*Xe()-i.renderingStartTime>Us&&1073741824!==n&&(t.flags|=128,r=!0,Wl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Xe(),t.sibling=null,n=si.current,Aa(si,r?1&n|2:1&n),t):(Vl(t),null);case 22:case 23:return fc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&zs)&&(Vl(t),6&t.subtreeFlags&&(t.flags|=8192)):Vl(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Ql(e,t){switch(to(t),t.tag){case 1:return za(t.type)&&Ta(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return oi(),Sa(Oa),Sa(Fa),fi(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return li(t),null;case 13:if(Sa(si),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));mo()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Sa(si),null;case 4:return oi(),null;case 10:return ko(t.type._context),null;case 22:case 23:return fc(),null;default:return null}}zl=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Tl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,ri(ei.current);var o,i=null;switch(n){case"input":a=Y(e,a),r=Y(e,r),i=[];break;case"select":a=R({},a,{value:void 0}),r=R({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(u in be(n,r),n=null,a)if(!r.hasOwnProperty(u)&&a.hasOwnProperty(u)&&null!=a[u])if("style"===u){var s=a[u];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(l.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(s=null!=a?a[u]:void 0,r.hasOwnProperty(u)&&c!==s&&(null!=c||null!=s))if("style"===u)if(s){for(o in s)!s.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&s[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(l.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&Ir("scroll",e),i||s===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Pl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Yl=!1,Kl=!1,Xl="function"==typeof WeakSet?WeakSet:Set,Zl=null;function Jl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){Cc(e,t,n)}else n.current=null}function es(e,t,n){try{n()}catch(n){Cc(e,t,n)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&es(t,n,o)}a=a.next}while(a!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function as(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function os(e){var t=e.alternate;null!==t&&(e.alternate=null,os(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[da],delete t[pa],delete t[ha],delete t[ga],delete t[va]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function is(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||is(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cs(e,t,n),e=e.sibling;null!==e;)cs(e,t,n),e=e.sibling}var us=null,fs=!1;function ds(e,t,n){for(n=n.child;null!==n;)ps(e,t,n),n=n.sibling}function ps(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(e){}switch(n.tag){case 5:Kl||Jl(n,t);case 6:var r=us,a=fs;us=null,ds(e,t,n),fs=a,null!==(us=r)&&(fs?(e=us,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):us.removeChild(n.stateNode));break;case 18:null!==us&&(fs?(e=us,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(us,n.stateNode));break;case 4:r=us,a=fs,us=n.stateNode.containerInfo,fs=!0,ds(e,t,n),us=r,fs=a;break;case 0:case 11:case 14:case 15:if(!Kl&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(0!=(2&o)||0!=(4&o))&&es(n,t,i),a=a.next}while(a!==r)}ds(e,t,n);break;case 1:if(!Kl&&(Jl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Cc(n,t,e)}ds(e,t,n);break;case 21:ds(e,t,n);break;case 22:1&n.mode?(Kl=(r=Kl)||null!==n.memoizedState,ds(e,t,n),Kl=r):ds(e,t,n);break;default:ds(e,t,n)}}function ms(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xl),t.forEach((function(t){var r=Fc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function hs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:us=s.stateNode,fs=!1;break e;case 3:case 4:us=s.stateNode.containerInfo,fs=!0;break e}s=s.return}if(null===us)throw Error(o(160));ps(i,l,a),us=null,fs=!1;var c=a.alternate;null!==c&&(c.return=null),a.return=null}catch(e){Cc(a,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gs(t,e),t=t.sibling}function gs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(hs(t,e),vs(e),4&r){try{ns(3,e,e.return),rs(3,e)}catch(t){Cc(e,e.return,t)}try{ns(5,e,e.return)}catch(t){Cc(e,e.return,t)}}break;case 1:hs(t,e),vs(e),512&r&&null!==n&&Jl(n,n.return);break;case 5:if(hs(t,e),vs(e),512&r&&null!==n&&Jl(n,n.return),32&e.flags){var a=e.stateNode;try{de(a,"")}catch(t){Cc(e,e.return,t)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===s&&"radio"===i.type&&null!=i.name&&X(a,i),ye(s,l);var u=ye(s,i);for(l=0;l<c.length;l+=2){var f=c[l],d=c[l+1];"style"===f?ge(a,d):"dangerouslySetInnerHTML"===f?fe(a,d):"children"===f?de(a,d):y(a,f,d,u)}switch(s){case"input":Z(a,i);break;case"textarea":oe(a,i);break;case"select":var p=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var m=i.value;null!=m?ne(a,!!i.multiple,m,!1):p!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[pa]=i}catch(t){Cc(e,e.return,t)}}break;case 6:if(hs(t,e),vs(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(t){Cc(e,e.return,t)}}break;case 3:if(hs(t,e),vs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(t){Cc(e,e.return,t)}break;case 4:default:hs(t,e),vs(e);break;case 13:hs(t,e),vs(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||(qs=Xe())),4&r&&ms(e);break;case 22:if(f=null!==n&&null!==n.memoizedState,1&e.mode?(Kl=(u=Kl)||f,hs(t,e),Kl=u):hs(t,e),vs(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!f&&0!=(1&e.mode))for(Zl=e,f=e.child;null!==f;){for(d=Zl=f;null!==Zl;){switch(m=(p=Zl).child,p.tag){case 0:case 11:case 14:case 15:ns(4,p,p.return);break;case 1:Jl(p,p.return);var h=p.stateNode;if("function"==typeof h.componentWillUnmount){r=p,n=p.return;try{t=r,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(e){Cc(r,n,e)}}break;case 5:Jl(p,p.return);break;case 22:if(null!==p.memoizedState){ws(d);continue}}null!==m?(m.return=p,Zl=m):ws(d)}f=f.sibling}e:for(f=null,d=e;;){if(5===d.tag){if(null===f){f=d;try{a=d.stateNode,u?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=d.stateNode,l=null!=(c=d.memoizedProps.style)&&c.hasOwnProperty("display")?c.display:null,s.style.display=he("display",l))}catch(t){Cc(e,e.return,t)}}}else if(6===d.tag){if(null===f)try{d.stateNode.nodeValue=u?"":d.memoizedProps}catch(t){Cc(e,e.return,t)}}else if((22!==d.tag&&23!==d.tag||null===d.memoizedState||d===e)&&null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;f===d&&(f=null),d=d.return}f===d&&(f=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:hs(t,e),vs(e),4&r&&ms(e);case 21:}}function vs(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(is(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(de(a,""),r.flags&=-33),cs(e,ls(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;ss(e,ls(e),i);break;default:throw Error(o(161))}}catch(t){Cc(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bs(e,t,n){Zl=e,ys(e,t,n)}function ys(e,t,n){for(var r=0!=(1&e.mode);null!==Zl;){var a=Zl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Yl;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Kl;l=Yl;var c=Kl;if(Yl=i,(Kl=s)&&!c)for(Zl=a;null!==Zl;)s=(i=Zl).child,22===i.tag&&null!==i.memoizedState?Es(a):null!==s?(s.return=i,Zl=s):Es(a);for(;null!==o;)Zl=o,ys(o,t,n),o=o.sibling;Zl=a,Yl=l,Kl=c}xs(e)}else 0!=(8772&a.subtreeFlags)&&null!==o?(o.return=a,Zl=o):xs(e)}}function xs(e){for(;null!==Zl;){var t=Zl;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Kl||rs(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Kl)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:vo(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Io(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Io(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var f=u.memoizedState;if(null!==f){var d=f.dehydrated;null!==d&&Ut(d)}}}break;default:throw Error(o(163))}Kl||512&t.flags&&as(t)}catch(e){Cc(t,t.return,e)}}if(t===e){Zl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Zl=n;break}Zl=t.return}}function ws(e){for(;null!==Zl;){var t=Zl;if(t===e){Zl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Zl=n;break}Zl=t.return}}function Es(e){for(;null!==Zl;){var t=Zl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rs(4,t)}catch(e){Cc(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(e){Cc(t,a,e)}}var o=t.return;try{as(t)}catch(e){Cc(t,o,e)}break;case 5:var i=t.return;try{as(t)}catch(e){Cc(t,i,e)}}}catch(e){Cc(t,t.return,e)}if(t===e){Zl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Zl=l;break}Zl=t.return}}var ks,Cs=Math.ceil,Ss=x.ReactCurrentDispatcher,As=x.ReactCurrentOwner,Ns=x.ReactCurrentBatchConfig,Fs=0,Os=null,_s=null,Ls=0,zs=0,Ts=Ca(0),Ps=0,js=null,Ds=0,Rs=0,Ms=0,Is=null,Bs=null,qs=0,Us=1/0,$s=null,Hs=!1,Ws=null,Vs=null,Gs=!1,Qs=null,Ys=0,Ks=0,Xs=null,Zs=-1,Js=0;function ec(){return 0!=(6&Fs)?Xe():-1!==Zs?Zs:Zs=Xe()}function tc(e){return 0==(1&e.mode)?1:0!=(2&Fs)&&0!==Ls?Ls&-Ls:null!==go.transition?(0===Js&&(Js=ht()),Js):0!==(e=yt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function nc(e,t,n,r){if(50<Ks)throw Ks=0,Xs=null,Error(o(185));vt(e,n,r),0!=(2&Fs)&&e===Os||(e===Os&&(0==(2&Fs)&&(Rs|=n),4===Ps&&lc(e,Ls)),rc(e,r),1===n&&0===Fs&&0==(1&t.mode)&&(Us=Xe()+500,Ia&&Ua()))}function rc(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?0!=(l&n)&&0==(l&r)||(a[i]=pt(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=dt(e,e===Os?Ls:0);if(0===r)null!==n&&Qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Qe(n),1===t)0===e.tag?function(e){Ia=!0,qa(e)}(sc.bind(null,e)):qa(sc.bind(null,e)),ia((function(){0==(6&Fs)&&Ua()})),n=null;else{switch(xt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Oc(n,ac.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function ac(e,t){if(Zs=-1,Js=0,0!=(6&Fs))throw Error(o(327));var n=e.callbackNode;if(Ec()&&e.callbackNode!==n)return null;var r=dt(e,e===Os?Ls:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=gc(e,r);else{t=r;var a=Fs;Fs|=2;var i=mc();for(Os===e&&Ls===t||($s=null,Us=Xe()+500,dc(e,t));;)try{bc();break}catch(t){pc(e,t)}Eo(),Ss.current=i,Fs=a,null!==_s?t=0:(Os=null,Ls=0,t=Ps)}if(0!==t){if(2===t&&0!==(a=mt(e))&&(r=a,t=oc(e,a)),1===t)throw n=js,dc(e,0),lc(e,r),rc(e,Xe()),n;if(6===t)lc(e,r);else{if(a=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)&&(2===(t=gc(e,r))&&0!==(i=mt(e))&&(r=i,t=oc(e,i)),1===t))throw n=js,dc(e,0),lc(e,r),rc(e,Xe()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:wc(e,Bs,$s);break;case 3:if(lc(e,r),(130023424&r)===r&&10<(t=qs+500-Xe())){if(0!==dt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){ec(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(wc.bind(null,e,Bs,$s),t);break}wc(e,Bs,$s);break;case 4:if(lc(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Xe()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Cs(r/1960))-r)){e.timeoutHandle=ra(wc.bind(null,e,Bs,$s),r);break}wc(e,Bs,$s);break;default:throw Error(o(329))}}}return rc(e,Xe()),e.callbackNode===n?ac.bind(null,e):null}function oc(e,t){var n=Is;return e.current.memoizedState.isDehydrated&&(dc(e,t).flags|=256),2!==(e=gc(e,t))&&(t=Bs,Bs=n,null!==t&&ic(t)),e}function ic(e){null===Bs?Bs=e:Bs.push.apply(Bs,e)}function lc(e,t){for(t&=~Ms,t&=~Rs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function sc(e){if(0!=(6&Fs))throw Error(o(327));Ec();var t=dt(e,0);if(0==(1&t))return rc(e,Xe()),null;var n=gc(e,t);if(0!==e.tag&&2===n){var r=mt(e);0!==r&&(t=r,n=oc(e,r))}if(1===n)throw n=js,dc(e,0),lc(e,t),rc(e,Xe()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,wc(e,Bs,$s),rc(e,Xe()),null}function cc(e,t){var n=Fs;Fs|=1;try{return e(t)}finally{0===(Fs=n)&&(Us=Xe()+500,Ia&&Ua())}}function uc(e){null!==Qs&&0===Qs.tag&&0==(6&Fs)&&Ec();var t=Fs;Fs|=1;var n=Ns.transition,r=yt;try{if(Ns.transition=null,yt=1,e)return e()}finally{yt=r,Ns.transition=n,0==(6&(Fs=t))&&Ua()}}function fc(){zs=Ts.current,Sa(Ts)}function dc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==_s)for(n=_s.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ta();break;case 3:oi(),Sa(Oa),Sa(Fa),fi();break;case 5:li(r);break;case 4:oi();break;case 13:case 19:Sa(si);break;case 10:ko(r.type._context);break;case 22:case 23:fc()}n=n.return}if(Os=e,_s=e=Tc(e.current,null),Ls=zs=t,Ps=0,js=null,Ms=Rs=Ds=0,Bs=Is=null,null!==No){for(t=0;t<No.length;t++)if(null!==(r=(n=No[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}No=null}return e}function pc(e,t){for(;;){var n=_s;try{if(Eo(),di.current=il,bi){for(var r=hi.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}bi=!1}if(mi=0,vi=gi=hi=null,yi=!1,xi=0,As.current=null,null===n||null===n.return){Ps=1,js=t,_s=null;break}e:{var i=e,l=n.return,s=n,c=t;if(t=Ls,s.flags|=32768,null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=c,f=s,d=f.tag;if(0==(1&f.mode)&&(0===d||11===d||15===d)){var p=f.alternate;p?(f.updateQueue=p.updateQueue,f.memoizedState=p.memoizedState,f.lanes=p.lanes):(f.updateQueue=null,f.memoizedState=null)}var m=vl(l);if(null!==m){m.flags&=-257,bl(m,l,s,0,t),1&m.mode&&gl(i,u,t),c=u;var h=(t=m).updateQueue;if(null===h){var g=new Set;g.add(c),t.updateQueue=g}else h.add(c);break e}if(0==(1&t)){gl(i,u,t),hc();break e}c=Error(o(426))}else if(ao&&1&s.mode){var v=vl(l);if(null!==v){0==(65536&v.flags)&&(v.flags|=256),bl(v,l,s,0,t),ho(ul(c,s));break e}}i=c=ul(c,s),4!==Ps&&(Ps=2),null===Is?Is=[i]:Is.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Ro(i,ml(0,c,t));break e;case 1:s=c;var b=i.type,y=i.stateNode;if(0==(128&i.flags)&&("function"==typeof b.getDerivedStateFromError||null!==y&&"function"==typeof y.componentDidCatch&&(null===Vs||!Vs.has(y)))){i.flags|=65536,t&=-t,i.lanes|=t,Ro(i,hl(i,s,t));break e}}i=i.return}while(null!==i)}xc(n)}catch(e){t=e,_s===n&&null!==n&&(_s=n=n.return);continue}break}}function mc(){var e=Ss.current;return Ss.current=il,null===e?il:e}function hc(){0!==Ps&&3!==Ps&&2!==Ps||(Ps=4),null===Os||0==(268435455&Ds)&&0==(268435455&Rs)||lc(Os,Ls)}function gc(e,t){var n=Fs;Fs|=2;var r=mc();for(Os===e&&Ls===t||($s=null,dc(e,t));;)try{vc();break}catch(t){pc(e,t)}if(Eo(),Fs=n,Ss.current=r,null!==_s)throw Error(o(261));return Os=null,Ls=0,Ps}function vc(){for(;null!==_s;)yc(_s)}function bc(){for(;null!==_s&&!Ye();)yc(_s)}function yc(e){var t=ks(e.alternate,e,zs);e.memoizedProps=e.pendingProps,null===t?xc(e):_s=t,As.current=null}function xc(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Gl(n,t,zs)))return void(_s=n)}else{if(null!==(n=Ql(n,t)))return n.flags&=32767,void(_s=n);if(null===e)return Ps=6,void(_s=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(_s=t);_s=t=e}while(null!==t);0===Ps&&(Ps=5)}function wc(e,t,n){var r=yt,a=Ns.transition;try{Ns.transition=null,yt=1,function(e,t,n,r){do{Ec()}while(null!==Qs);if(0!=(6&Fs))throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===Os&&(_s=Os=null,Ls=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Gs||(Gs=!0,Oc(tt,(function(){return Ec(),null}))),i=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||i){i=Ns.transition,Ns.transition=null;var l=yt;yt=1;var s=Fs;Fs|=4,As.current=null,function(e,t){if(ea=Ht,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(e){n=null;break e}var l=0,s=-1,c=-1,u=0,f=0,d=e,p=null;t:for(;;){for(var m;d!==n||0!==a&&3!==d.nodeType||(s=l+a),d!==i||0!==r&&3!==d.nodeType||(c=l+r),3===d.nodeType&&(l+=d.nodeValue.length),null!==(m=d.firstChild);)p=d,d=m;for(;;){if(d===e)break t;if(p===n&&++u===a&&(s=l),p===i&&++f===r&&(c=l),null!==(m=d.nextSibling))break;p=(d=p).parentNode}d=m}n=-1===s||-1===c?null:{start:s,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Zl=t;null!==Zl;)if(e=(t=Zl).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Zl=e;else for(;null!==Zl;){t=Zl;try{var h=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==h){var g=h.memoizedProps,v=h.memoizedState,b=t.stateNode,y=b.getSnapshotBeforeUpdate(t.elementType===t.type?g:vo(t.type,g),v);b.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var x=t.stateNode.containerInfo;1===x.nodeType?x.textContent="":9===x.nodeType&&x.documentElement&&x.removeChild(x.documentElement);break;default:throw Error(o(163))}}catch(e){Cc(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Zl=e;break}Zl=t.return}h=ts,ts=!1}(e,n),gs(n,e),mr(ta),Ht=!!ea,ta=ea=null,e.current=n,bs(n,e,a),Ke(),Fs=s,yt=l,Ns.transition=i}else e.current=n;if(Gs&&(Gs=!1,Qs=e,Ys=a),0===(i=e.pendingLanes)&&(Vs=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,128==(128&e.current.flags))}catch(e){}}(n.stateNode),rc(e,Xe()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((a=t[n]).value,{componentStack:a.stack,digest:a.digest});if(Hs)throw Hs=!1,e=Ws,Ws=null,e;0!=(1&Ys)&&0!==e.tag&&Ec(),0!=(1&(i=e.pendingLanes))?e===Xs?Ks++:(Ks=0,Xs=e):Ks=0,Ua()}(e,t,n,r)}finally{Ns.transition=a,yt=r}return null}function Ec(){if(null!==Qs){var e=xt(Ys),t=Ns.transition,n=yt;try{if(Ns.transition=null,yt=16>e?16:e,null===Qs)var r=!1;else{if(e=Qs,Qs=null,Ys=0,0!=(6&Fs))throw Error(o(331));var a=Fs;for(Fs|=4,Zl=e.current;null!==Zl;){var i=Zl,l=i.child;if(0!=(16&Zl.flags)){var s=i.deletions;if(null!==s){for(var c=0;c<s.length;c++){var u=s[c];for(Zl=u;null!==Zl;){var f=Zl;switch(f.tag){case 0:case 11:case 15:ns(8,f,i)}var d=f.child;if(null!==d)d.return=f,Zl=d;else for(;null!==Zl;){var p=(f=Zl).sibling,m=f.return;if(os(f),f===u){Zl=null;break}if(null!==p){p.return=m,Zl=p;break}Zl=m}}}var h=i.alternate;if(null!==h){var g=h.child;if(null!==g){h.child=null;do{var v=g.sibling;g.sibling=null,g=v}while(null!==g)}}Zl=i}}if(0!=(2064&i.subtreeFlags)&&null!==l)l.return=i,Zl=l;else e:for(;null!==Zl;){if(0!=(2048&(i=Zl).flags))switch(i.tag){case 0:case 11:case 15:ns(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Zl=b;break e}Zl=i.return}}var y=e.current;for(Zl=y;null!==Zl;){var x=(l=Zl).child;if(0!=(2064&l.subtreeFlags)&&null!==x)x.return=l,Zl=x;else e:for(l=y;null!==Zl;){if(0!=(2048&(s=Zl).flags))try{switch(s.tag){case 0:case 11:case 15:rs(9,s)}}catch(e){Cc(s,s.return,e)}if(s===l){Zl=null;break e}var w=s.sibling;if(null!==w){w.return=s.return,Zl=w;break e}Zl=s.return}}if(Fs=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(e){}r=!0}return r}finally{yt=n,Ns.transition=t}}return!1}function kc(e,t,n){e=jo(e,t=ml(0,t=ul(n,t),1),1),t=ec(),null!==e&&(vt(e,1,t),rc(e,t))}function Cc(e,t,n){if(3===e.tag)kc(e,e,n);else for(;null!==t;){if(3===t.tag){kc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Vs||!Vs.has(r))){t=jo(t,e=hl(t,e=ul(n,e),1),1),e=ec(),null!==t&&(vt(t,1,e),rc(t,e));break}}t=t.return}}function Sc(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ec(),e.pingedLanes|=e.suspendedLanes&n,Os===e&&(Ls&n)===n&&(4===Ps||3===Ps&&(130023424&Ls)===Ls&&500>Xe()-qs?dc(e,0):Ms|=n),rc(e,t)}function Ac(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ut,0==(130023424&(ut<<=1))&&(ut=4194304)));var n=ec();null!==(e=_o(e,t))&&(vt(e,t,n),rc(e,n))}function Nc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ac(e,n)}function Fc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Ac(e,n)}function Oc(e,t){return Ge(e,t)}function _c(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lc(e,t,n,r){return new _c(e,t,n,r)}function zc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Tc(e,t){var n=e.alternate;return null===n?((n=Lc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Pc(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)zc(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case k:return jc(n.children,a,i,t);case C:l=8,a|=8;break;case S:return(e=Lc(12,n,t,2|a)).elementType=S,e.lanes=i,e;case O:return(e=Lc(13,n,t,a)).elementType=O,e.lanes=i,e;case _:return(e=Lc(19,n,t,a)).elementType=_,e.lanes=i,e;case T:return Dc(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case A:l=10;break e;case N:l=9;break e;case F:l=11;break e;case L:l=14;break e;case z:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Lc(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function jc(e,t,n,r){return(e=Lc(7,e,r,t)).lanes=n,e}function Dc(e,t,n,r){return(e=Lc(22,e,r,t)).elementType=T,e.lanes=n,e.stateNode={isHidden:!1},e}function Rc(e,t,n){return(e=Lc(6,e,null,t)).lanes=n,e}function Mc(e,t,n){return(t=Lc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ic(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Bc(e,t,n,r,a,o,i,l,s){return e=new Ic(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Lc(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},zo(o),e}function qc(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:E,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Uc(e){if(!e)return Na;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(za(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(za(n))return ja(e,n,t)}return t}function $c(e,t,n,r,a,o,i,l,s){return(e=Bc(n,r,!0,e,0,o,0,l,s)).context=Uc(null),n=e.current,(o=Po(r=ec(),a=tc(n))).callback=null!=t?t:null,jo(n,o,a),e.current.lanes=a,vt(e,a,r),rc(e,r),e}function Hc(e,t,n,r){var a=t.current,o=ec(),i=tc(a);return n=Uc(n),null===t.context?t.context=n:t.pendingContext=n,(t=Po(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=jo(a,t,i))&&(nc(e,a,i,o),Do(e,a,i)),i}function Wc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Vc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Gc(e,t){Vc(e,t),(e=e.alternate)&&Vc(e,t)}ks=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Oa.current)xl=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return xl=!1,function(e,t,n){switch(t.tag){case 3:_l(t),mo();break;case 5:ii(t);break;case 1:za(t.type)&&Da(t);break;case 4:ai(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Aa(bo,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Aa(si,1&si.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Rl(e,t,n):(Aa(si,1&si.current),null!==(e=Hl(e,t,n))?e.sibling:null);Aa(si,1&si.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return Ul(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Aa(si,si.current),r)break;return null;case 22:case 23:return t.lanes=0,Sl(e,t,n)}return Hl(e,t,n)}(e,t,n);xl=0!=(131072&e.flags)}else xl=!1,ao&&0!=(1048576&t.flags)&&Ja(t,Va,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;$l(e,t),e=t.pendingProps;var a=La(t,Fa.current);So(t,n),a=Ci(null,t,r,e,a,n);var i=Si();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,za(r)?(i=!0,Da(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,zo(t),a.updater=Uo,t.stateNode=a,a._reactInternals=t,Vo(t,r,e,n),t=Ol(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),wl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch($l(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return zc(e)?1:0;if(null!=e){if((e=e.$$typeof)===F)return 11;if(e===L)return 14}return 2}(r),e=vo(r,e),a){case 0:t=Nl(null,t,r,e,n);break e;case 1:t=Fl(null,t,r,e,n);break e;case 11:t=El(null,t,r,e,n);break e;case 14:t=kl(null,t,r,vo(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,Nl(e,t,r,a=t.elementType===r?a:vo(r,a),n);case 1:return r=t.type,a=t.pendingProps,Fl(e,t,r,a=t.elementType===r?a:vo(r,a),n);case 3:e:{if(_l(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,To(e,t),Mo(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ll(e,t,r,n,a=ul(Error(o(423)),t));break e}if(r!==a){t=Ll(e,t,r,n,a=ul(Error(o(424)),t));break e}for(ro=ca(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=Zo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(mo(),r===a){t=Hl(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&&co(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),Al(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&co(t),null;case 13:return Rl(e,t,n);case 4:return ai(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Xo(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,El(e,t,r,a=t.elementType===r?a:vo(r,a),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,Aa(bo,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!Oa.current){t=Hl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var c=s.firstContext;null!==c;){if(c.context===r){if(1===i.tag){(c=Po(-1,n&-n)).tag=2;var u=i.updateQueue;if(null!==u){var f=(u=u.shared).pending;null===f?c.next=c:(c.next=f.next,f.next=c),u.pending=c}}i.lanes|=n,null!==(c=i.alternate)&&(c.lanes|=n),Co(i.return,n,t),s.lanes|=n;break}c=c.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),Co(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}wl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,So(t,n),r=r(a=Ao(a)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return a=vo(r=t.type,t.pendingProps),kl(e,t,r,a=vo(r.type,a),n);case 15:return Cl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:vo(r,a),$l(e,t),t.tag=1,za(r)?(e=!0,Da(t)):e=!1,So(t,n),Ho(t,r,a),Vo(t,r,a,n),Ol(null,t,r,!0,e,n);case 19:return Ul(e,t,n);case 22:return Sl(e,t,n)}throw Error(o(156,t.tag))};var Qc="function"==typeof reportError?reportError:function(e){console.error(e)};function Yc(e){this._internalRoot=e}function Kc(e){this._internalRoot=e}function Xc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Jc(){}function eu(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=Wc(i);l.call(e)}}Hc(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Wc(i);o.call(e)}}var i=$c(t,r,e,0,null,!1,0,"",Jc);return e._reactRootContainer=i,e[ma]=i.current,Ur(8===e.nodeType?e.parentNode:e),uc(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=Wc(s);l.call(e)}}var s=Bc(e,0,!1,null,0,!1,0,"",Jc);return e._reactRootContainer=s,e[ma]=s.current,Ur(8===e.nodeType?e.parentNode:e),uc((function(){Hc(t,s,n,r)})),s}(n,t,e,a,r);return Wc(i)}Kc.prototype.render=Yc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Hc(e,t,null,null)},Kc.prototype.unmount=Yc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;uc((function(){Hc(null,e,null,null)})),t[ma]=null}},Kc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Ct();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Tt.length&&0!==t&&t<Tt[n].priority;n++);Tt.splice(n,0,e),0===n&&Rt(e)}},wt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&&(bt(t,1|n),rc(t,Xe()),0==(6&Fs)&&(Us=Xe()+500,Ua()))}break;case 13:uc((function(){var t=_o(e,1);if(null!==t){var n=ec();nc(t,e,1,n)}})),Gc(e,1)}},Et=function(e){if(13===e.tag){var t=_o(e,134217728);null!==t&&nc(t,e,134217728,ec()),Gc(e,134217728)}},kt=function(e){if(13===e.tag){var t=tc(e),n=_o(e,t);null!==n&&nc(n,e,t,ec()),Gc(e,t)}},Ct=function(){return yt},St=function(e,t){var n=yt;try{return yt=e,t()}finally{yt=n}},Ee=function(e,t,n){switch(t){case"input":if(Z(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+\'][type="radio"]\'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=wa(r);if(!a)throw Error(o(90));G(r),Z(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Fe=cc,Oe=uc;var tu={usingClientEntryPoint:!1,Events:[ya,xa,wa,Ae,Ne,cc]},nu={findFiberByHostInstance:ba,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},ru={bundleType:nu.bundleType,version:nu.version,rendererPackageName:nu.rendererPackageName,rendererConfig:nu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:x.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var au=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!au.isDisabled&&au.supportsFiber)try{at=au.inject(ru),ot=au}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tu,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Xc(t))throw Error(o(200));return qc(e,t,null,n)},t.createRoot=function(e,t){if(!Xc(e))throw Error(o(299));var n=!1,r="",a=Qc;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=Bc(e,1,!1,null,0,n,0,r,a),e[ma]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Yc(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return uc(e)},t.hydrate=function(e,t,n){if(!Zc(t))throw Error(o(200));return eu(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Xc(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Qc;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=$c(t,null,e,1,null!=n?n:null,a,0,i,l),e[ma]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Kc(t)},t.render=function(e,t,n){if(!Zc(t))throw Error(o(200));return eu(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zc(e))throw Error(o(40));return!!e._reactRootContainer&&(uc((function(){eu(null,null,e,!1,(function(){e._reactRootContainer=null,e[ma]=null}))})),!0)},t.unstable_batchedUpdates=cc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zc(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return eu(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},935:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},203:function(e,t){"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],c=l+1,u=e[c];if(0>o(s,n))c<a&&0>o(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else{if(!(c<a&&0>o(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var c=[],u=[],f=1,d=null,p=3,m=!1,h=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,y="undefined"!=typeof setImmediate?setImmediate:null;function x(e){for(var t=r(u);null!==t;){if(null===t.callback)a(u);else{if(!(t.startTime<=e))break;a(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function w(e){if(g=!1,x(e),!h)if(null!==r(c))h=!0,T(E);else{var t=r(u);null!==t&&P(w,t.startTime-e)}}function E(e,n){h=!1,g&&(g=!1,b(A),A=-1),m=!0;var o=p;try{for(x(n),d=r(c);null!==d&&(!(d.expirationTime>n)||e&&!O());){var i=d.callback;if("function"==typeof i){d.callback=null,p=d.priorityLevel;var l=i(d.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?d.callback=l:d===r(c)&&a(c),x(n)}else a(c);d=r(c)}if(null!==d)var s=!0;else{var f=r(u);null!==f&&P(w,f.startTime-n),s=!1}return s}finally{d=null,p=o,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var k,C=!1,S=null,A=-1,N=5,F=-1;function O(){return!(t.unstable_now()-F<N)}function _(){if(null!==S){var e=t.unstable_now();F=e;var n=!0;try{n=S(!0,e)}finally{n?k():(C=!1,S=null)}}else C=!1}if("function"==typeof y)k=function(){y(_)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,z=L.port2;L.port1.onmessage=_,k=function(){z.postMessage(null)}}else k=function(){v(_,0)};function T(e){S=e,C||(C=!0,k())}function P(e,n){A=v((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){h||m||(h=!0,T(E))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):N=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch(o="object"==typeof o&&null!==o&&"number"==typeof(o=o.delay)&&0<o?i+o:i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:f++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(u,e),null===r(c)&&e===r(u)&&(g?(b(A),A=-1):g=!0,P(w,o-i))):(e.sortIndex=l,n(c,e),h||m||(h=!0,T(E))),e},t.unstable_shouldYield=O,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},142:function(e,t,n){"use strict";e.exports=n(203)},251:function(e,t,n){"use strict";var r=n(639),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},893:function(e,t,n){"use strict";e.exports=n(251)},379:function(e){"use strict";var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var o={},i=[],l=0;l<e.length;l++){var s=e[l],c=r.base?s[0]+r.base:s[0],u=o[c]||0,f="".concat(c," ").concat(u);o[c]=u+1;var d=n(f),p={css:s[1],media:s[2],sourceMap:s[3],supports:s[4],layer:s[5]};if(-1!==d)t[d].references++,t[d].updater(p);else{var m=a(p,r);r.byIndex=l,t.splice(l,0,{identifier:f,updater:m,references:1})}i.push(f)}return i}function a(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,a){var o=r(e=e||[],a=a||{});return function(e){e=e||[];for(var i=0;i<o.length;i++){var l=n(o[i]);t[l].references--}for(var s=r(e,a),c=0;c<o.length;c++){var u=n(o[c]);0===t[u].references&&(t[u].updater(),t.splice(u,1))}o=s}}},569:function(e){"use strict";var t={};e.exports=function(e,n){var r=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!r)throw new Error("Couldn\'t find a style target. This probably means that the value for the \'insert\' parameter is invalid.");r.appendChild(n)}},216:function(e){"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:function(e,t,n){"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:function(e){"use strict";e.exports=function(e){var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var a=void 0!==n.layer;a&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,a&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:function(e){"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},496:function(e){!function(){var t=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],n="undefined"!=typeof window,r=n&&null!=window.mozInnerScreenX;function a(e,a,o){if(!n)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");var i=o&&o.debug||!1;if(i){var l=document.querySelector("#input-textarea-caret-position-mirror-div");l&&l.parentNode.removeChild(l)}var s=document.createElement("div");s.id="input-textarea-caret-position-mirror-div",document.body.appendChild(s);var c=s.style,u=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,f="INPUT"===e.nodeName;c.whiteSpace="pre-wrap",f||(c.wordWrap="break-word"),c.position="absolute",i||(c.visibility="hidden"),t.forEach((function(e){f&&"lineHeight"===e?c.lineHeight=u.height:c[e]=u[e]})),r?e.scrollHeight>parseInt(u.height)&&(c.overflowY="scroll"):c.overflow="hidden",s.textContent=e.value.substring(0,a),f&&(s.textContent=s.textContent.replace(/\\s/g," "));var d=document.createElement("span");d.textContent=e.value.substring(a)||".",s.appendChild(d);var p={top:d.offsetTop+parseInt(u.borderTopWidth),left:d.offsetLeft+parseInt(u.borderLeftWidth),height:parseInt(u.lineHeight)};return i?d.style.backgroundColor="#aaa":document.body.removeChild(s),p}void 0!==e.exports?e.exports=a:n&&(window.getCaretCoordinates=a)}()},473:function(e){"use strict";e.exports=function(){}},189:function(e){"use strict";if(void 0===t){var n=new Error("Cannot find module \'undefined\'");throw n.code="MODULE_NOT_FOUND",n}e.exports=t},639:function(t){"use strict";t.exports=e}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={id:e,exports:{}};return n[e](o,o.exports,a),o.exports}a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nc=void 0;var o={};return function(){"use strict";a.r(o),a.d(o,{Await:function(){return ui},Branding:function(){return Dr},Card:function(){return pi},Checkbox:function(){return di},ErrorMessage:function(){return Pe},FileUpload:function(){return oc},Footer:function(){return oi},FooterManager:function(){return ai},Header:function(){return ei},LoadingInfo:function(){return je},LoginForm:function(){return Ge},Message:function(){return Te},NavigationManager:function(){return Zo},QueryForm:function(){return Wo},QueryPanel:function(){return Yo},ServerVersionInfo:function(){return p},TopNavigationBar:function(){return Jo},UserComponent:function(){return jr},createTab:function(){return vo},makeQueryTemplate:function(){return mo},toggleQueryPanel:function(){return Qo}});var e,t=a(639),n=a.n(t);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function i(){i=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function f(e,t,n,r){var o=t&&t.prototype instanceof m?t:m,i=Object.create(o.prototype),l=new N(r||[]);return a(i,"_invoke",{value:k(e,n,l)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=f;var p={};function m(){}function h(){}function g(){}var v={};u(v,l,(function(){return this}));var b=Object.getPrototypeOf,y=b&&b(b(F([])));y&&y!==t&&n.call(y,l)&&(v=y);var x=g.prototype=m.prototype=Object.create(v);function w(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function o(a,i,l,s){var c=d(e[a],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==r(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){o("next",e,l,s)}),(function(e){o("throw",e,l,s)})):t.resolve(f).then((function(e){u.value=e,l(u)}),(function(e){return o("throw",e,l,s)}))}s(c.arg)}var i;a(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function k(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=C(i,n);if(l){if(l===p)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=d(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===p)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function C(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),p;var a=d(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,p;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function F(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:O}}function O(){return{value:void 0,done:!0}}return h.prototype=g,a(x,"constructor",{value:g,configurable:!0}),a(g,"constructor",{value:h,configurable:!0}),h.displayName=u(g,c,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,u(e,c,"GeneratorFunction")),e.prototype=Object.create(x),e},e.awrap=function(e){return{__await:e}},w(E.prototype),u(E.prototype,s,(function(){return this})),e.AsyncIterator=E,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new E(f(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},w(x),u(x,c,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=F,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(A),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,p):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),A(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;A(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:F(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}function l(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){l(o,r,a,i,s,"next",e)}function s(e){l(o,r,a,i,s,"throw",e)}i(void 0)}))}}function c(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,(void 0,o=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!==r(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(a.key),"symbol"===r(o)?o:String(o)),a)}var o}var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,r,a,o;return t=e,n=[{key:"getSessionInfo",value:(a=s(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:throw{message:"Please log in!"};case 3:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"sleep",value:function(e){return new Promise((function(t){return setTimeout(t,e)}))}},{key:"login",value:(o=s(i().mark((function e(t){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:if("error"!=t){e.next=4;break}throw{message:"Login failed! Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!"};case 4:return e.abrupt("return",{realm:"MockRealm",username:t,roles:[],expires:6e4});case 5:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"logout",value:(r=s(i().mark((function e(){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sleep(3e3);case 2:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})}],n&&c(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();try{e=a(189).InfoService}catch(t){console.log("Providing mockup implementation for InfoService"),e=u}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function d(e){return"Could not retrieve Server Version Info: "+e.message}function p(){var r,a,o=(r=(0,t.useState)(null),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[0],l=o[1];return null===i&&(i=function(t){return(new e).getVersionInfo().then((function(e){return e.noBuild().toString()})).catch(d).then(t),"..."}(l)),n().createElement("div",{className:"caosdb-comp-server-version-info"},i)}var m=a(697),h=a.n(m),g=a(184),v=a.n(g);function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},b.apply(this,arguments)}function y(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}function x(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function w(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}function E(e,n){return Object.keys(n).reduce((function(r,a){var o,i=r,l=i[x(a)],s=i[a],c=y(i,[x(a),a].map(w)),u=n[a],f=function(e,n,r){var a=(0,t.useRef)(void 0!==e),o=(0,t.useState)(n),i=o[0],l=o[1],s=void 0!==e,c=a.current;return a.current=s,!s&&c&&i!==n&&l(n),[s?e:i,(0,t.useCallback)((function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];r&&r.apply(void 0,[e].concat(n)),l(e)}),[r])]}(s,l,e[u]),d=f[0],p=f[1];return b({},c,((o={})[a]=d,o[u]=p,o))}),e)}a(143);function k(e){var n=function(e){var n=(0,t.useRef)(e);return(0,t.useEffect)((function(){n.current=e}),[e]),n}(e);return(0,t.useCallback)((function(){return n.current&&n.current.apply(n,arguments)}),[n])}function C(){var e=(0,t.useRef)(!0),n=(0,t.useRef)((function(){return e.current}));return(0,t.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),n.current}function S(e){var n=(0,t.useRef)(null);return(0,t.useEffect)((function(){n.current=e})),n.current}var A=void 0!==a.g&&a.g.navigator&&"ReactNative"===a.g.navigator.product,N="undefined"!=typeof document||A?t.useLayoutEffect:t.useEffect;new WeakMap;var F=a(893);const O=["as","disabled"];function _({tagName:e,disabled:t,href:n,target:r,rel:a,role:o,onClick:i,tabIndex:l=0,type:s}){e||(e=null!=n||null!=r||null!=a?"a":"button");const c={tagName:e};if("button"===e)return[{type:s||"button",disabled:t},c];const u=r=>{(t||"a"===e&&function(e){return!e||"#"===e.trim()}(n))&&r.preventDefault(),t?r.stopPropagation():null==i||i(r)};return"a"===e&&(n||(n="#"),t&&(n=void 0)),[{role:null!=o?o:"button",disabled:void 0,tabIndex:t?void 0:l,href:n,target:"a"===e?r:void 0,"aria-disabled":t||void 0,rel:"a"===e?a:void 0,onClick:u,onKeyDown:e=>{" "===e.key&&(e.preventDefault(),u(e))}},c]}const L=t.forwardRef(((e,t)=>{let{as:n,disabled:r}=e,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,O);const[o,{tagName:i}]=_(Object.assign({tagName:n,disabled:r},a));return(0,F.jsx)(i,Object.assign({},a,o,{ref:t}))}));L.displayName="Button";var z=L;const T=["onKeyDown"],P=t.forwardRef(((e,t)=>{let{onKeyDown:n}=e,r=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,T);const[a]=_(Object.assign({tagName:"a"},r)),o=k((e=>{a.onKeyDown(e),null==n||n(e)}));return(i=r.href)&&"#"!==i.trim()&&"button"!==r.role?(0,F.jsx)("a",Object.assign({ref:t},r,{onKeyDown:n})):(0,F.jsx)("a",Object.assign({ref:t},r,a,{onKeyDown:o}));var i}));P.displayName="Anchor";var j=P;const D=t.createContext({prefixes:{},breakpoints:["xxl","xl","lg","md","sm","xs"],minBreakpoint:"xs"}),{Consumer:R,Provider:M}=D;function I(e,n){const{prefixes:r}=(0,t.useContext)(D);return e||r[n]||n}function B(e,t){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},B(e,t)}var q=a(935),U=n().createContext(null),$="unmounted",H="exited",W="entering",V="entered",G="exiting",Q=function(e){var t,r;function a(t,n){var r;r=e.call(this,t,n)||this;var a,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(a=H,r.appearStatus=W):a=V:a=t.unmountOnExit||t.mountOnEnter?$:H,r.state={status:a},r.nextCallback=null,r}r=e,(t=a).prototype=Object.create(r.prototype),t.prototype.constructor=t,B(t,r),a.getDerivedStateFromProps=function(e,t){return e.in&&t.status===$?{status:H}:null};var o=a.prototype;return o.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},o.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==W&&n!==V&&(t=W):n!==W&&n!==V||(t=G)}this.updateStatus(!1,t)},o.componentWillUnmount=function(){this.cancelNextCallback()},o.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},o.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===W){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:q.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===H&&this.setState({status:$})},o.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,a=this.props.nodeRef?[r]:[q.findDOMNode(this),r],o=a[0],i=a[1],l=this.getTimeouts(),s=r?l.appear:l.enter;e||n?(this.props.onEnter(o,i),this.safeSetState({status:W},(function(){t.props.onEntering(o,i),t.onTransitionEnd(s,(function(){t.safeSetState({status:V},(function(){t.props.onEntered(o,i)}))}))}))):this.safeSetState({status:V},(function(){t.props.onEntered(o)}))},o.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:q.findDOMNode(this);t?(this.props.onExit(r),this.safeSetState({status:G},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:H},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:H},(function(){e.props.onExited(r)}))},o.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},o.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},o.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},o.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:q.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var a=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=a[0],i=a[1];this.props.addEndListener(o,i)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},o.render=function(){var e=this.state.status;if(e===$)return null;var t=this.props,r=t.children,a=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,y(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return n().createElement(U.Provider,{value:null},"function"==typeof r?r(e,a):n().cloneElement(n().Children.only(r),a))},a}(n().Component);function Y(){}Q.contextType=U,Q.propTypes={},Q.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Y,onEntering:Y,onEntered:Y,onExit:Y,onExiting:Y,onExited:Y},Q.UNMOUNTED=$,Q.EXITED=H,Q.ENTERING=W,Q.ENTERED=V,Q.EXITING=G;var K=Q;function X(e){return e&&e.ownerDocument||document}var Z=/([A-Z])/g,J=/^ms-/;function ee(e){return function(e){return e.replace(Z,"-$1").toLowerCase()}(e).replace(J,"-ms-")}var te=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i,ne=function(e,t){var n="",r="";if("string"==typeof t)return e.style.getPropertyValue(ee(t))||function(e,t){return function(e){var t=X(e);return t&&t.defaultView||window}(e).getComputedStyle(e,t)}(e).getPropertyValue(ee(t));Object.keys(t).forEach((function(a){var o=t[a];o||0===o?function(e){return!(!e||!te.test(e))}(a)?r+=a+"("+o+") ":n+=ee(a)+": "+o+";":e.style.removeProperty(ee(a))})),r&&(n+="transform: "+r+";"),e.style.cssText+=";"+n},re=!("undefined"==typeof window||!window.document||!window.document.createElement),ae=!1,oe=!1;try{var ie={get passive(){return ae=!0},get once(){return oe=ae=!0}};re&&(window.addEventListener("test",ie,ie),window.removeEventListener("test",ie,!0))}catch(e){}var le=function(e,t,n,r){if(r&&"boolean"!=typeof r&&!oe){var a=r.once,o=r.capture,i=n;!oe&&a&&(i=n.__once||function e(r){this.removeEventListener(t,e,o),n.call(this,r)},n.__once=i),e.addEventListener(t,i,ae?r:o)}e.addEventListener(t,n,r)},se=function(e,t,n,r){return le(e,t,n,r),function(){!function(e,t,n,r){var a=r&&"boolean"!=typeof r?r.capture:r;e.removeEventListener(t,n,a),n.__once&&e.removeEventListener(t,n.__once,a)}(e,t,n,r)}};function ce(e,t,n,r){var a,o;null==n&&(o=-1===(a=ne(e,"transitionDuration")||"").indexOf("ms")?1e3:1,n=parseFloat(a)*o||0);var i=function(e,t,n){void 0===n&&(n=5);var r=!1,a=setTimeout((function(){r||function(e,t,n,r){if(void 0===n&&(n=!1),void 0===r&&(r=!0),e){var a=document.createEvent("HTMLEvents");a.initEvent("transitionend",n,r),e.dispatchEvent(a)}}(e,0,!0)}),t+n),o=se(e,"transitionend",(function(){r=!0}),{once:!0});return function(){clearTimeout(a),o()}}(e,n,r),l=se(e,"transitionend",t);return function(){i(),l()}}function ue(e,t){const n=ne(e,t)||"",r=-1===n.indexOf("ms")?1e3:1;return parseFloat(n)*r}function fe(e,t){const n=ue(e,"transitionDuration"),r=ue(e,"transitionDelay"),a=ce(e,(n=>{n.target===e&&(a(),t(n))}),n+r)}function de(e){e.offsetHeight}var pe=function(e){return e&&"function"!=typeof e?function(t){e.current=t}:e},me=function(e,n){return(0,t.useMemo)((function(){return function(e,t){var n=pe(e),r=pe(t);return function(e){n&&n(e),r&&r(e)}}(e,n)}),[e,n])},he=n().forwardRef((({onEnter:e,onEntering:r,onEntered:a,onExit:o,onExiting:i,onExited:l,addEndListener:s,children:c,childRef:u,...f},d)=>{const p=(0,t.useRef)(null),m=me(p,u),h=e=>{var t;m((t=e)&&"setState"in t?q.findDOMNode(t):null!=t?t:null)},g=e=>t=>{e&&p.current&&e(p.current,t)},v=(0,t.useCallback)(g(e),[e]),b=(0,t.useCallback)(g(r),[r]),y=(0,t.useCallback)(g(a),[a]),x=(0,t.useCallback)(g(o),[o]),w=(0,t.useCallback)(g(i),[i]),E=(0,t.useCallback)(g(l),[l]),k=(0,t.useCallback)(g(s),[s]);return(0,F.jsx)(K,{ref:d,...f,onEnter:v,onEntered:y,onEntering:b,onExit:x,onExited:E,onExiting:w,addEndListener:k,nodeRef:p,children:"function"==typeof c?(e,t)=>c(e,{...t,ref:h}):n().cloneElement(c,{ref:h})})}));const ge={[W]:"show",[V]:"show"},ve=t.forwardRef((({className:e,children:n,transitionClasses:r={},...a},o)=>{const i=(0,t.useCallback)(((e,t)=>{de(e),null==a.onEnter||a.onEnter(e,t)}),[a]);return(0,F.jsx)(he,{ref:o,addEndListener:fe,...a,onEnter:i,childRef:n.ref,children:(a,o)=>t.cloneElement(n,{...o,className:v()("fade",e,n.props.className,ge[a],r[a])})})}));ve.defaultProps={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1},ve.displayName="Fade";var be=ve;const ye={"aria-label":h().string,onClick:h().func,variant:h().oneOf(["white"])},xe=t.forwardRef((({className:e,variant:t,...n},r)=>(0,F.jsx)("button",{ref:r,type:"button",className:v()("btn-close",t&&`btn-close-${t}`,e),...n})));xe.displayName="CloseButton",xe.propTypes=ye,xe.defaultProps={"aria-label":"Close"};var we=xe,Ee=e=>t.forwardRef(((t,n)=>(0,F.jsx)("div",{...t,ref:n,className:v()(t.className,e)}))),ke=/-(.)/g;const Ce=e=>{return e[0].toUpperCase()+(t=e,t.replace(ke,(function(e,t){return t.toUpperCase()}))).slice(1);var t};function Se(e,{displayName:n=Ce(e),Component:r,defaultProps:a}={}){const o=t.forwardRef((({className:t,bsPrefix:n,as:a=r||"div",...o},i)=>{const l=I(n,e);return(0,F.jsx)(a,{ref:i,className:v()(t,l),...o})}));return o.defaultProps=a,o.displayName=n,o}const Ae=Ee("h4");Ae.displayName="DivStyledAsH4";const Ne=Se("alert-heading",{Component:Ae}),Fe=Se("alert-link",{Component:j}),Oe={variant:"primary",show:!0,transition:be,closeLabel:"Close alert"},_e=t.forwardRef(((e,t)=>{const{bsPrefix:n,show:r,closeLabel:a,closeVariant:o,className:i,children:l,variant:s,onClose:c,dismissible:u,transition:f,...d}=E(e,{show:"onClose"}),p=I(n,"alert"),m=k((e=>{c&&c(!1,e)})),h=!0===f?be:f,g=(0,F.jsxs)("div",{role:"alert",...h?void 0:d,ref:t,className:v()(i,p,s&&`${p}-${s}`,u&&`${p}-dismissible`),children:[u&&(0,F.jsx)(we,{onClick:m,"aria-label":a,variant:o}),l]});return h?(0,F.jsx)(h,{unmountOnExit:!0,...d,ref:void 0,in:r,children:g}):r?g:null}));_e.displayName="Alert",_e.defaultProps=Oe;var Le=Object.assign(_e,{Link:Fe,Heading:Ne});function ze(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Te=function(e){var r,a,o=e.heading,i=e.icon,l=e.type,s=e.dismissible,c=e.children,u=e.className,f="primary",d=void 0===i||i,p="bi bi-exclamation-circle",m=(r=(0,t.useState)(!0),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return ze(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ze(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=m[0],g=m[1];return h?("error"===l?(f="danger",p="bi bi-exclamation-triangle-fill"):"warning"===l?(f="warning",p="bi bi-exclamation-triangle"):"success"===l&&(f="success",p="bi bi-check-circle"),i=d&&(i||n().createElement("i",{className:"".concat(p," me-2 m-0")})),n().createElement(Le,{className:u,variant:f,onClose:function(){return g(!1)},dismissible:s},o&&n().createElement(Le.Heading,null,i,o),n().createElement("div",{className:"d-flex align-items-center m-0"},!o&&i,n().createElement("div",null,c)))):n().createElement(n().Fragment,null)};Te.propTypes={heading:h().node,icon:h().node,type:h().oneOf(["error","warning","success","info"]),dismissible:h().bool,children:h().oneOfType([h().arrayOf(h().node),h().node]),className:h().string};var Pe=function(e){var t,r=e.heading,a=e.error;return console.warn(a),r=r||"Error",t="string"==typeof a||a instanceof String?a:a.message&&("string"==typeof a.message||a.message instanceof String)?a.message:JSON.stringify(a),n().createElement(Te,{className:"mt-3 mx-3",heading:r,type:"error",dismissible:!0},t)};Pe.propTypes={heading:h().node,error:h().oneOfType([h().string,h().instanceOf(Error)])};var je=function(e){var t=e.className,r=e.size,a=e.color,o=e.title,i="spinner-border";return t&&(i+=" "+t),"sm"===r&&(i+=" spinner-border-sm"),"primary"===a?i+=" text-primary":"secondary"===a&&(i+=" text-secondary"),n().createElement("span",{title:o,className:i,role:"status","aria-hidden":"true"})};function De(e){return De="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(e)}function Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Me(){Me=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==De(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Ie(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==De(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==De(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===De(a)?a:String(a)),r)}var a}function Be(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function qe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){Be(o,r,a,i,l,"next",e)}function l(e){Be(o,r,a,i,l,"throw",e)}i(void 0)}))}}function Ue(){return(Ue=qe(Me().mark((function t(n,r){var a;return Me().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new e,t.next=3,a.login(n,r);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function $e(e,t,n){return function(r){r.preventDefault(),e();var a=r.target.username.value,o=r.target.password.value;r.target.submit.disabled=!0;var i=function(e,t){return Ue.apply(this,arguments)}(a,o).catch((function(e){throw r.target.submit.disabled=!1,e}));t&&(i=i.then(t)),n&&i.catch(n)}}je.propTypes={className:h().string,size:h().oneOf(["sm"]),color:h().oneOf(["primary","secondary"]),title:h().string},je.defaultProps={title:"Loading..."};var He=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.cb=t,n=Number.isInteger(n)?n:1e4,this.timeout=setTimeout(this.cb,n)}var t,n;return t=e,(n=[{key:"reset",value:function(e){this.pause(),this.cb&&(e=Number.isInteger(e)?e:2e4,this.timeout=setTimeout(this.cb,e))}},{key:"pause",value:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}},{key:"stop",value:function(){this.pause(),this.cb=void 0}}])&&Ie(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),We=function(e){var t=e.then,r=e.onError,a=e.showMessages,o=e.showLoadingInfo,i=new He(a),l=function(){return i.pause()},s=function(){return i.reset()},c=function(){var e=qe(Me().mark((function e(t){return Me().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a(),!r){e.next=5;break}return e.next=4,r(t);case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return n().createElement("form",{className:"m-0",onSubmit:$e(o,t,c)},n().createElement("div",{className:"row g-3"},n().createElement("div",{className:"col-sm-5"},n().createElement("input",{onChange:l,onBlur:s,name:"username",className:"form-control",placeholder:"Username","aria-label":"Username"})),n().createElement("div",{className:"col-sm-5"},n().createElement("input",{onChange:l,onBlur:s,name:"password",className:"form-control",type:"password",placeholder:"Password","aria-label":"Password"})),n().createElement("div",{className:"col-sm-1"},n().createElement("button",{onClick:function(){return i.stop()},className:"btn btn-secondary navbar-btn d-inline-block",name:"submit",type:"submit"},"Login"))))};We.propTypes={then:h().func.isRequired,onError:h().func,showMessages:h().func.isRequired,showLoadingInfo:h().func.isRequired};var Ve=function(e){var t=e.message,r=e.messageType,a=e.showInputs;return t=t?n().createElement("div",{className:"col-sm-auto"},n().createElement(Te,{type:r},t)):void 0,n().createElement("div",{className:"align-items-center row g-3"},t,n().createElement("div",{className:"col-sm-1"},n().createElement("button",{className:"btn btn-secondary navbar-btn d-inline-block",name:"show",type:"button",onClick:a},"Login")))};Ve.propTypes={message:h().node,messageType:h().oneOf(["error","warning","success","info"]),showInputs:h().func.isRequired};var Ge=function(e){var r,a,o=e.then,i=e.onError,l=e.message,s=e.messageType,c=(r=(0,t.useState)("messages"),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return Re(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Re(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],f=c[1];return"inputs"===u?n().createElement(We,{then:o,onError:i,showMessages:function(){return f("messages")},showLoadingInfo:function(){return f("loading")}}):"loading"===u?n().createElement(je,{size:"sm"}):n().createElement(Ve,{message:l,messageType:s,showInputs:function(){return f("inputs")}})};Ge.propTypes={then:h().func.isRequired,onError:h().func,message:h().node,messageType:h().oneOf(["error","warning","success","info"])};var Qe=Function.prototype.bind.call(Function.prototype.call,[].slice);function Ye(e,t){return Qe(e.querySelectorAll(t))}function Ke(){return(0,t.useReducer)((function(e){return!e}),!1)[1]}var Xe=t.createContext(null),Ze=Object.prototype.hasOwnProperty;function Je(e,t,n){for(n of e.keys())if(et(n,t))return n}function et(e,t){var n,r,a;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((r=e.length)===t.length)for(;r--&&et(e[r],t[r]););return-1===r}if(n===Set){if(e.size!==t.size)return!1;for(r of e){if((a=r)&&"object"==typeof a&&!(a=Je(t,a)))return!1;if(!t.has(a))return!1}return!0}if(n===Map){if(e.size!==t.size)return!1;for(r of e){if((a=r[0])&&"object"==typeof a&&!(a=Je(t,a)))return!1;if(!et(r[1],t.get(a)))return!1}return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((r=e.byteLength)===t.byteLength)for(;r--&&e.getInt8(r)===t.getInt8(r););return-1===r}if(ArrayBuffer.isView(e)){if((r=e.byteLength)===t.byteLength)for(;r--&&e[r]===t[r];);return-1===r}if(!n||"object"==typeof e){for(n in r=0,e){if(Ze.call(e,n)&&++r&&!Ze.call(t,n))return!1;if(!(n in t)||!et(e[n],t[n]))return!1}return Object.keys(t).length===r}}return e!=e&&t!=t}function tt(e){return e.split("-")[0]}function nt(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function rt(e){return e instanceof nt(e).Element||e instanceof Element}function at(e){return e instanceof nt(e).HTMLElement||e instanceof HTMLElement}function ot(e){return"undefined"!=typeof ShadowRoot&&(e instanceof nt(e).ShadowRoot||e instanceof ShadowRoot)}var it=Math.max,lt=Math.min,st=Math.round;function ct(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function ut(){return!/^((?!chrome|android).)*safari/i.test(ct())}function ft(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),a=1,o=1;t&&at(e)&&(a=e.offsetWidth>0&&st(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&st(r.height)/e.offsetHeight||1);var i=(rt(e)?nt(e):window).visualViewport,l=!ut()&&n,s=(r.left+(l&&i?i.offsetLeft:0))/a,c=(r.top+(l&&i?i.offsetTop:0))/o,u=r.width/a,f=r.height/o;return{width:u,height:f,top:c,right:s+u,bottom:c+f,left:s,x:s,y:c}}function dt(e){var t=ft(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function pt(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&ot(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function mt(e){return e?(e.nodeName||"").toLowerCase():null}function ht(e){return nt(e).getComputedStyle(e)}function gt(e){return["table","td","th"].indexOf(mt(e))>=0}function vt(e){return((rt(e)?e.ownerDocument:e.document)||window.document).documentElement}function bt(e){return"html"===mt(e)?e:e.assignedSlot||e.parentNode||(ot(e)?e.host:null)||vt(e)}function yt(e){return at(e)&&"fixed"!==ht(e).position?e.offsetParent:null}function xt(e){for(var t=nt(e),n=yt(e);n&>(n)&&"static"===ht(n).position;)n=yt(n);return n&&("html"===mt(n)||"body"===mt(n)&&"static"===ht(n).position)?t:n||function(e){var t=/firefox/i.test(ct());if(/Trident/i.test(ct())&&at(e)&&"fixed"===ht(e).position)return null;var n=bt(e);for(ot(n)&&(n=n.host);at(n)&&["html","body"].indexOf(mt(n))<0;){var r=ht(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}function wt(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Et(e,t,n){return it(e,lt(t,n))}function kt(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ct(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var St="top",At="bottom",Nt="right",Ft="left",Ot="auto",_t=[St,At,Nt,Ft],Lt="start",zt="end",Tt="viewport",Pt="popper",jt=_t.reduce((function(e,t){return e.concat([t+"-"+Lt,t+"-"+zt])}),[]),Dt=[].concat(_t,[Ot]).reduce((function(e,t){return e.concat([t,t+"-"+Lt,t+"-"+zt])}),[]),Rt=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],Mt={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,a=e.options,o=n.elements.arrow,i=n.modifiersData.popperOffsets,l=tt(n.placement),s=wt(l),c=[Ft,Nt].indexOf(l)>=0?"height":"width";if(o&&i){var u=function(e,t){return kt("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ct(e,_t))}(a.padding,n),f=dt(o),d="y"===s?St:Ft,p="y"===s?At:Nt,m=n.rects.reference[c]+n.rects.reference[s]-i[s]-n.rects.popper[c],h=i[s]-n.rects.reference[s],g=xt(o),v=g?"y"===s?g.clientHeight||0:g.clientWidth||0:0,b=m/2-h/2,y=u[d],x=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Et(y,w,x),k=s;n.modifiersData[r]=((t={})[k]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&pt(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function It(e){return e.split("-")[1]}var Bt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function qt(e){var t,n=e.popper,r=e.popperRect,a=e.placement,o=e.variation,i=e.offsets,l=e.position,s=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=i.x,p=void 0===d?0:d,m=i.y,h=void 0===m?0:m,g="function"==typeof u?u({x:p,y:h}):{x:p,y:h};p=g.x,h=g.y;var v=i.hasOwnProperty("x"),b=i.hasOwnProperty("y"),y=Ft,x=St,w=window;if(c){var E=xt(n),k="clientHeight",C="clientWidth";E===nt(n)&&"static"!==ht(E=vt(n)).position&&"absolute"===l&&(k="scrollHeight",C="scrollWidth"),(a===St||(a===Ft||a===Nt)&&o===zt)&&(x=At,h-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[k])-r.height,h*=s?1:-1),a!==Ft&&(a!==St&&a!==At||o!==zt)||(y=Nt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[C])-r.width,p*=s?1:-1)}var S,A=Object.assign({position:l},c&&Bt),N=!0===u?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:st(t*r)/r||0,y:st(n*r)/r||0}}({x:p,y:h}):{x:p,y:h};return p=N.x,h=N.y,s?Object.assign({},A,((S={})[x]=b?"0":"",S[y]=v?"0":"",S.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+h+"px)":"translate3d("+p+"px, "+h+"px, 0)",S)):Object.assign({},A,((t={})[x]=b?h+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Ut={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,a=void 0===r||r,o=n.adaptive,i=void 0===o||o,l=n.roundOffsets,s=void 0===l||l,c={placement:tt(t.placement),variation:It(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:a,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,qt(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,qt(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},$t={passive:!0},Ht={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,o=void 0===a||a,i=r.resize,l=void 0===i||i,s=nt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach((function(e){e.addEventListener("scroll",n.update,$t)})),l&&s.addEventListener("resize",n.update,$t),function(){o&&c.forEach((function(e){e.removeEventListener("scroll",n.update,$t)})),l&&s.removeEventListener("resize",n.update,$t)}},data:{}},Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function Vt(e){return e.replace(/left|right|bottom|top/g,(function(e){return Wt[e]}))}var Gt={start:"end",end:"start"};function Qt(e){return e.replace(/start|end/g,(function(e){return Gt[e]}))}function Yt(e){var t=nt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Kt(e){return ft(vt(e)).left+Yt(e).scrollLeft}function Xt(e){var t=ht(e),n=t.overflow,r=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+r)}function Zt(e){return["html","body","#document"].indexOf(mt(e))>=0?e.ownerDocument.body:at(e)&&Xt(e)?e:Zt(bt(e))}function Jt(e,t){var n;void 0===t&&(t=[]);var r=Zt(e),a=r===(null==(n=e.ownerDocument)?void 0:n.body),o=nt(r),i=a?[o].concat(o.visualViewport||[],Xt(r)?r:[]):r,l=t.concat(i);return a?l:l.concat(Jt(bt(i)))}function en(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function tn(e,t,n){return t===Tt?en(function(e,t){var n=nt(e),r=vt(e),a=n.visualViewport,o=r.clientWidth,i=r.clientHeight,l=0,s=0;if(a){o=a.width,i=a.height;var c=ut();(c||!c&&"fixed"===t)&&(l=a.offsetLeft,s=a.offsetTop)}return{width:o,height:i,x:l+Kt(e),y:s}}(e,n)):rt(t)?function(e,t){var n=ft(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):en(function(e){var t,n=vt(e),r=Yt(e),a=null==(t=e.ownerDocument)?void 0:t.body,o=it(n.scrollWidth,n.clientWidth,a?a.scrollWidth:0,a?a.clientWidth:0),i=it(n.scrollHeight,n.clientHeight,a?a.scrollHeight:0,a?a.clientHeight:0),l=-r.scrollLeft+Kt(e),s=-r.scrollTop;return"rtl"===ht(a||n).direction&&(l+=it(n.clientWidth,a?a.clientWidth:0)-o),{width:o,height:i,x:l,y:s}}(vt(e)))}function nn(e){var t,n=e.reference,r=e.element,a=e.placement,o=a?tt(a):null,i=a?It(a):null,l=n.x+n.width/2-r.width/2,s=n.y+n.height/2-r.height/2;switch(o){case St:t={x:l,y:n.y-r.height};break;case At:t={x:l,y:n.y+n.height};break;case Nt:t={x:n.x+n.width,y:s};break;case Ft:t={x:n.x-r.width,y:s};break;default:t={x:n.x,y:n.y}}var c=o?wt(o):null;if(null!=c){var u="y"===c?"height":"width";switch(i){case Lt:t[c]=t[c]-(n[u]/2-r[u]/2);break;case zt:t[c]=t[c]+(n[u]/2-r[u]/2)}}return t}function rn(e,t){void 0===t&&(t={});var n=t,r=n.placement,a=void 0===r?e.placement:r,o=n.strategy,i=void 0===o?e.strategy:o,l=n.boundary,s=void 0===l?"clippingParents":l,c=n.rootBoundary,u=void 0===c?Tt:c,f=n.elementContext,d=void 0===f?Pt:f,p=n.altBoundary,m=void 0!==p&&p,h=n.padding,g=void 0===h?0:h,v=kt("number"!=typeof g?g:Ct(g,_t)),b=d===Pt?"reference":Pt,y=e.rects.popper,x=e.elements[m?b:d],w=function(e,t,n,r){var a="clippingParents"===t?function(e){var t=Jt(bt(e)),n=["absolute","fixed"].indexOf(ht(e).position)>=0&&at(e)?xt(e):e;return rt(n)?t.filter((function(e){return rt(e)&&pt(e,n)&&"body"!==mt(e)})):[]}(e):[].concat(t),o=[].concat(a,[n]),i=o[0],l=o.reduce((function(t,n){var a=tn(e,n,r);return t.top=it(a.top,t.top),t.right=lt(a.right,t.right),t.bottom=lt(a.bottom,t.bottom),t.left=it(a.left,t.left),t}),tn(e,i,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}(rt(x)?x:x.contextElement||vt(e.elements.popper),s,u,i),E=ft(e.elements.reference),k=nn({reference:E,element:y,strategy:"absolute",placement:a}),C=en(Object.assign({},y,k)),S=d===Pt?C:E,A={top:w.top-S.top+v.top,bottom:S.bottom-w.bottom+v.bottom,left:w.left-S.left+v.left,right:S.right-w.right+v.right},N=e.modifiersData.offset;if(d===Pt&&N){var F=N[a];Object.keys(A).forEach((function(e){var t=[Nt,At].indexOf(e)>=0?1:-1,n=[St,At].indexOf(e)>=0?"y":"x";A[e]+=F[n]*t}))}return A}var an={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var a=n.mainAxis,o=void 0===a||a,i=n.altAxis,l=void 0===i||i,s=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,m=void 0===p||p,h=n.allowedAutoPlacements,g=t.options.placement,v=tt(g),b=s||(v!==g&&m?function(e){if(tt(e)===Ot)return[];var t=Vt(e);return[Qt(e),t,Qt(t)]}(g):[Vt(g)]),y=[g].concat(b).reduce((function(e,n){return e.concat(tt(n)===Ot?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,a=n.boundary,o=n.rootBoundary,i=n.padding,l=n.flipVariations,s=n.allowedAutoPlacements,c=void 0===s?Dt:s,u=It(r),f=u?l?jt:jt.filter((function(e){return It(e)===u})):_t,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=rn(e,{placement:n,boundary:a,rootBoundary:o,padding:i})[tt(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:m,allowedAutoPlacements:h}):n)}),[]),x=t.rects.reference,w=t.rects.popper,E=new Map,k=!0,C=y[0],S=0;S<y.length;S++){var A=y[S],N=tt(A),F=It(A)===Lt,O=[St,At].indexOf(N)>=0,_=O?"width":"height",L=rn(t,{placement:A,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),z=O?F?Nt:Ft:F?At:St;x[_]>w[_]&&(z=Vt(z));var T=Vt(z),P=[];if(o&&P.push(L[N]<=0),l&&P.push(L[z]<=0,L[T]<=0),P.every((function(e){return e}))){C=A,k=!1;break}E.set(A,P)}if(k)for(var j=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},D=m?3:1;D>0&&"break"!==j(D);D--);t.placement!==C&&(t.modifiersData[r]._skip=!0,t.placement=C,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function on(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ln(e){return[St,Nt,At,Ft].some((function(t){return e[t]>=0}))}var sn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,a=n.offset,o=void 0===a?[0,0]:a,i=Dt.reduce((function(e,n){return e[n]=function(e,t,n){var r=tt(e),a=[Ft,St].indexOf(r)>=0?-1:1,o="function"==typeof n?n(Object.assign({},t,{placement:e})):n,i=o[0],l=o[1];return i=i||0,l=(l||0)*a,[Ft,Nt].indexOf(r)>=0?{x:l,y:i}:{x:i,y:l}}(n,t.rects,o),e}),{}),l=i[t.placement],s=l.x,c=l.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=i}},cn={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,a=n.mainAxis,o=void 0===a||a,i=n.altAxis,l=void 0!==i&&i,s=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,m=n.tetherOffset,h=void 0===m?0:m,g=rn(t,{boundary:s,rootBoundary:c,padding:f,altBoundary:u}),v=tt(t.placement),b=It(t.placement),y=!b,x=wt(v),w="x"===x?"y":"x",E=t.modifiersData.popperOffsets,k=t.rects.reference,C=t.rects.popper,S="function"==typeof h?h(Object.assign({},t.rects,{placement:t.placement})):h,A="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),N=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,F={x:0,y:0};if(E){if(o){var O,_="y"===x?St:Ft,L="y"===x?At:Nt,z="y"===x?"height":"width",T=E[x],P=T+g[_],j=T-g[L],D=p?-C[z]/2:0,R=b===Lt?k[z]:C[z],M=b===Lt?-C[z]:-k[z],I=t.elements.arrow,B=p&&I?dt(I):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},U=q[_],$=q[L],H=Et(0,k[z],B[z]),W=y?k[z]/2-D-H-U-A.mainAxis:R-H-U-A.mainAxis,V=y?-k[z]/2+D+H+$+A.mainAxis:M+H+$+A.mainAxis,G=t.elements.arrow&&xt(t.elements.arrow),Q=G?"y"===x?G.clientTop||0:G.clientLeft||0:0,Y=null!=(O=null==N?void 0:N[x])?O:0,K=T+V-Y,X=Et(p?lt(P,T+W-Y-Q):P,T,p?it(j,K):j);E[x]=X,F[x]=X-T}if(l){var Z,J="x"===x?St:Ft,ee="x"===x?At:Nt,te=E[w],ne="y"===w?"height":"width",re=te+g[J],ae=te-g[ee],oe=-1!==[St,Ft].indexOf(v),ie=null!=(Z=null==N?void 0:N[w])?Z:0,le=oe?re:te-k[ne]-C[ne]-ie+A.altAxis,se=oe?te+k[ne]+C[ne]-ie-A.altAxis:ae,ce=p&&oe?function(e,t,n){var r=Et(e,t,n);return r>n?n:r}(le,te,se):Et(p?le:re,te,p?se:ae);E[w]=ce,F[w]=ce-te}t.modifiersData[r]=F}},requiresIfExists:["offset"]};function un(e,t,n){void 0===n&&(n=!1);var r,a,o=at(t),i=at(t)&&function(e){var t=e.getBoundingClientRect(),n=st(t.width)/e.offsetWidth||1,r=st(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),l=vt(t),s=ft(e,i,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(o||!o&&!n)&&(("body"!==mt(t)||Xt(l))&&(c=(r=t)!==nt(r)&&at(r)?{scrollLeft:(a=r).scrollLeft,scrollTop:a.scrollTop}:Yt(r)),at(t)?((u=ft(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):l&&(u.x=Kt(l))),{x:s.left+c.scrollLeft-u.x,y:s.top+c.scrollTop-u.y,width:s.width,height:s.height}}function fn(e){var t=new Map,n=new Set,r=[];function a(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&a(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||a(e)})),r}var dn={placement:"bottom",modifiers:[],strategy:"absolute"};function pn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}const mn=function(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,a=t.defaultOptions,o=void 0===a?dn:a;return function(e,t,n){void 0===n&&(n=o);var a,i,l={placement:"bottom",orderedModifiers:[],options:Object.assign({},dn,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},s=[],c=!1,u={state:l,setOptions:function(n){var a="function"==typeof n?n(l.options):n;f(),l.options=Object.assign({},o,l.options,a),l.scrollParents={reference:rt(e)?Jt(e):e.contextElement?Jt(e.contextElement):[],popper:Jt(t)};var i,c,d=function(e){var t=fn(e);return Rt.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((i=[].concat(r,l.options.modifiers),c=i.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(c).map((function(e){return c[e]}))));return l.orderedModifiers=d.filter((function(e){return e.enabled})),l.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,a=e.effect;if("function"==typeof a){var o=a({state:l,name:t,instance:u,options:r});s.push(o||function(){})}})),u.update()},forceUpdate:function(){if(!c){var e=l.elements,t=e.reference,n=e.popper;if(pn(t,n)){l.rects={reference:un(t,xt(n),"fixed"===l.options.strategy),popper:dt(n)},l.reset=!1,l.placement=l.options.placement,l.orderedModifiers.forEach((function(e){return l.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<l.orderedModifiers.length;r++)if(!0!==l.reset){var a=l.orderedModifiers[r],o=a.fn,i=a.options,s=void 0===i?{}:i,f=a.name;"function"==typeof o&&(l=o({state:l,options:s,name:f,instance:u})||l)}else l.reset=!1,r=-1}}},update:(a=function(){return new Promise((function(e){u.forceUpdate(),e(l)}))},function(){return i||(i=new Promise((function(e){Promise.resolve().then((function(){i=void 0,e(a())}))}))),i}),destroy:function(){f(),c=!0}};if(!pn(e,t))return u;function f(){s.forEach((function(e){return e()})),s=[]}return u.setOptions(n).then((function(e){!c&&n.onFirstUpdate&&n.onFirstUpdate(e)})),u}}({defaultModifiers:[{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,a=t.rects.popper,o=t.modifiersData.preventOverflow,i=rn(t,{elementContext:"reference"}),l=rn(t,{altBoundary:!0}),s=on(i,r),c=on(l,a,o),u=ln(s),f=ln(c);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=nn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},Ut,Ht,sn,an,cn,Mt]}),hn=["enabled","placement","strategy","modifiers"],gn={name:"applyStyles",enabled:!1,phase:"afterWrite",fn:()=>{}},vn={name:"ariaDescribedBy",enabled:!0,phase:"afterWrite",effect:({state:e})=>()=>{const{reference:t,popper:n}=e.elements;if("removeAttribute"in t){const e=(t.getAttribute("aria-describedby")||"").split(",").filter((e=>e.trim()!==n.id));e.length?t.setAttribute("aria-describedby",e.join(",")):t.removeAttribute("aria-describedby")}},fn:({state:e})=>{var t;const{popper:n,reference:r}=e.elements,a=null==(t=n.getAttribute("role"))?void 0:t.toLowerCase();if(n.id&&"tooltip"===a&&"setAttribute"in r){const e=r.getAttribute("aria-describedby");if(e&&-1!==e.split(",").indexOf(n.id))return;r.setAttribute("aria-describedby",e?`${e},${n.id}`:n.id)}}},bn=[];var yn=function(e,n,r={}){let{enabled:a=!0,placement:o="bottom",strategy:i="absolute",modifiers:l=bn}=r,s=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(r,hn);const c=(0,t.useRef)(l),u=(0,t.useRef)(),f=(0,t.useCallback)((()=>{var e;null==(e=u.current)||e.update()}),[]),d=(0,t.useCallback)((()=>{var e;null==(e=u.current)||e.forceUpdate()}),[]),[p,m]=(v=(0,t.useState)({placement:o,update:f,forceUpdate:d,attributes:{},styles:{popper:{},arrow:{}}}),b=C(),[v[0],(0,t.useCallback)((function(e){if(b())return v[1](e)}),[b,v[1]])]),h=(0,t.useMemo)((()=>({name:"updateStateModifier",enabled:!0,phase:"write",requires:["computeStyles"],fn:({state:e})=>{const t={},n={};Object.keys(e.elements).forEach((r=>{t[r]=e.styles[r],n[r]=e.attributes[r]})),m({state:e,styles:t,attributes:n,update:f,forceUpdate:d,placement:e.placement})}})),[f,d,m]),g=(0,t.useMemo)((()=>(et(c.current,l)||(c.current=l),c.current)),[l]);var v,b;return(0,t.useEffect)((()=>{u.current&&a&&u.current.setOptions({placement:o,strategy:i,modifiers:[...g,h,gn]})}),[i,o,h,a,g]),(0,t.useEffect)((()=>{if(a&&null!=e&&null!=n)return u.current=mn(e,n,Object.assign({},s,{placement:o,strategy:i,modifiers:[...g,vn,h]})),()=>{null!=u.current&&(u.current.destroy(),u.current=void 0,m((e=>Object.assign({},e,{attributes:{},styles:{popper:{}}}))))}}),[a,e,n]),p};function xn(e,t){return e.contains?e.contains(t):e.compareDocumentPosition?e===t||!!(16&e.compareDocumentPosition(t)):void 0}var wn=a(473),En=a.n(wn);const kn=()=>{},Cn=e=>e&&("current"in e?e.current:e),Sn={click:"mousedown",mouseup:"mousedown",pointerup:"pointerdown"};function An(e={}){return Array.isArray(e)?e:Object.keys(e).map((t=>(e[t].name=t,e[t])))}const Nn=["children"],Fn=()=>{};function On(e={}){const n=(0,t.useContext)(Xe),[r,a]=(0,t.useState)(null),o=(0,t.useRef)(!1),{flip:i,offset:l,rootCloseEvent:s,fixed:c=!1,placement:u,popperConfig:f={},enableEventListeners:d=!0,usePopper:p=!!n}=e,m=null==(null==n?void 0:n.show)?!!e.show:n.show;m&&!o.current&&(o.current=!0);const{placement:h,setMenu:g,menuElement:v,toggleElement:b}=n||{},y=yn(b,v,function({enabled:e,enableEvents:t,placement:n,flip:r,offset:a,fixed:o,containerPadding:i,arrowElement:l,popperConfig:s={}}){var c,u,f,d,p;const m=function(e){const t={};return Array.isArray(e)?(null==e||e.forEach((e=>{t[e.name]=e})),t):e||t}(s.modifiers);return Object.assign({},s,{placement:n,enabled:e,strategy:o?"fixed":s.strategy,modifiers:An(Object.assign({},m,{eventListeners:{enabled:t,options:null==(c=m.eventListeners)?void 0:c.options},preventOverflow:Object.assign({},m.preventOverflow,{options:i?Object.assign({padding:i},null==(u=m.preventOverflow)?void 0:u.options):null==(f=m.preventOverflow)?void 0:f.options}),offset:{options:Object.assign({offset:a},null==(d=m.offset)?void 0:d.options)},arrow:Object.assign({},m.arrow,{enabled:!!l,options:Object.assign({},null==(p=m.arrow)?void 0:p.options,{element:l})}),flip:Object.assign({enabled:!!r},m.flip)}))})}({placement:u||h||"bottom-start",enabled:p,enableEvents:null==d?m:d,offset:l,flip:i,fixed:c,arrowElement:r,popperConfig:f})),x=Object.assign({ref:g||Fn,"aria-labelledby":null==b?void 0:b.id},y.attributes.popper,{style:y.styles.popper}),w={show:m,placement:h,hasShown:o.current,toggle:null==n?void 0:n.toggle,popper:p?y:null,arrowProps:p?Object.assign({ref:a},y.attributes.arrow,{style:y.styles.arrow}):{}};return function(e,n=kn,{disabled:r,clickTrigger:a="click"}={}){const o=(0,t.useRef)(!1),i=(0,t.useRef)(!1),l=(0,t.useCallback)((t=>{const n=Cn(e);var r;En()(!!n,"ClickOutside captured a close event but does not have a ref to compare it to. useClickOutside(), should be passed a ref that resolves to a DOM node"),o.current=!n||!!((r=t).metaKey||r.altKey||r.ctrlKey||r.shiftKey)||!function(e){return 0===e.button}(t)||!!xn(n,t.target)||i.current,i.current=!1}),[e]),s=k((t=>{const n=Cn(e);n&&xn(n,t.target)&&(i.current=!0)})),c=k((e=>{o.current||n(e)}));(0,t.useEffect)((()=>{if(r||null==e)return;const t=X(Cn(e));let n=(t.defaultView||window).event,o=null;Sn[a]&&(o=se(t,Sn[a],s,!0));const i=se(t,a,l,!0),u=se(t,a,(e=>{e!==n?c(e):n=void 0}));let f=[];return"ontouchstart"in t.documentElement&&(f=[].slice.call(t.body.children).map((e=>se(e,"mousemove",kn)))),()=>{null==o||o(),i(),u(),f.forEach((e=>e()))}}),[e,r,a,l,s,c])}(v,(e=>{null==n||n.toggle(!1,e)}),{clickTrigger:s,disabled:!m}),[x,w]}function _n(e){let{children:t}=e,n=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,Nn);const[r,a]=On(n);return(0,F.jsx)(F.Fragment,{children:t(r,a)})}_n.displayName="DropdownMenu",_n.defaultProps={usePopper:!0};var Ln=_n;const zn={prefix:String(Math.round(1e10*Math.random())),current:0},Tn=t.createContext(zn);let Pn=Boolean("undefined"!=typeof window&&window.document&&window.document.createElement),jn=new WeakMap;const Dn=e=>{var t;return"menu"===(null==(t=e.getAttribute("role"))?void 0:t.toLowerCase())},Rn=()=>{};function Mn(){const e=function(e){let n=(0,t.useContext)(Tn);n!==zn||Pn||console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let r=function(e=!1){let n=(0,t.useContext)(Tn),r=(0,t.useRef)(null);if(null===r.current&&!e){var a,o;let e=null===(a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)||void 0===a||null===(o=a.ReactCurrentOwner)||void 0===o?void 0:o.current;if(e){let t=jn.get(e);null==t?jn.set(e,{id:n.current,state:e.memoizedState}):e.memoizedState!==t.state&&(n.current=t.id,jn.delete(e))}r.current=++n.current}return r.current}(!1);return`react-aria${n.prefix}-${r}`}(),{show:n=!1,toggle:r=Rn,setToggle:a,menuElement:o}=(0,t.useContext)(Xe)||{},i=(0,t.useCallback)((e=>{r(!n,e)}),[n,r]),l={id:e,ref:a||Rn,onClick:i,"aria-expanded":!!n};return o&&Dn(o)&&(l["aria-haspopup"]=!0),[l,{show:n,toggle:r}]}function In({children:e}){const[t,n]=Mn();return(0,F.jsx)(F.Fragment,{children:e(t,n)})}In.displayName="DropdownToggle";var Bn=In;const qn=(e,t=null)=>null!=e?String(e):t||null;var Un=t.createContext(null);const $n=t.createContext(null);$n.displayName="NavContext";var Hn=$n;function Wn(e){return`data-rr-ui-${e}`}const Vn=["eventKey","disabled","onClick","active","as"];function Gn({key:e,href:n,active:r,disabled:a,onClick:o}){const i=(0,t.useContext)(Un),l=(0,t.useContext)(Hn),{activeKey:s}=l||{},c=qn(e,n),u=null==r&&null!=e?qn(s)===c:r;return[{onClick:k((e=>{a||(null==o||o(e),i&&!e.isPropagationStopped()&&i(c,e))})),"aria-disabled":a||void 0,"aria-selected":u,[Wn("dropdown-item")]:""},{isActive:u}]}const Qn=t.forwardRef(((e,t)=>{let{eventKey:n,disabled:r,onClick:a,active:o,as:i=z}=e,l=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,Vn);const[s]=Gn({key:n,href:l.href,disabled:r,onClick:a,active:o});return(0,F.jsx)(i,Object.assign({},l,{ref:t},s))}));Qn.displayName="DropdownItem";var Yn=Qn;const Kn=(0,t.createContext)(re?window:void 0);function Xn(){return(0,t.useContext)(Kn)}function Zn(){const e=Ke(),n=(0,t.useRef)(null),r=(0,t.useCallback)((t=>{n.current=t,e()}),[e]);return[n,r]}function Jn({defaultShow:e,show:n,onSelect:r,onToggle:a,itemSelector:o=`* [${Wn("dropdown-item")}]`,focusFirstItemOnShow:i,placement:l="bottom-start",children:s}){const c=Xn(),[u,f]=function(e,n,r){const a=(0,t.useRef)(void 0!==e),[o,i]=(0,t.useState)(n),l=void 0!==e,s=a.current;return a.current=l,!l&&s&&o!==n&&i(n),[l?e:o,(0,t.useCallback)(((e,...t)=>{r&&r(e,...t),i(e)}),[r])]}(n,e,a),[d,p]=Zn(),m=d.current,[h,g]=Zn(),v=h.current,b=S(u),y=(0,t.useRef)(null),x=(0,t.useRef)(!1),w=(0,t.useContext)(Un),E=(0,t.useCallback)(((e,t,n=(null==t?void 0:t.type))=>{f(e,{originalEvent:t,source:n})}),[f]),C=k(((e,t)=>{null==r||r(e,t),E(!1,t,"select"),t.isPropagationStopped()||null==w||w(e,t)})),A=(0,t.useMemo)((()=>({toggle:E,placement:l,show:u,menuElement:m,toggleElement:v,setMenu:p,setToggle:g})),[E,l,u,m,v,p,g]);m&&b&&!u&&(x.current=m.contains(m.ownerDocument.activeElement));const N=k((()=>{v&&v.focus&&v.focus()})),O=k((()=>{const e=y.current;let t=i;if(null==t&&(t=!(!d.current||!Dn(d.current))&&"keyboard"),!1===t||"keyboard"===t&&!/^key.+$/.test(e))return;const n=Ye(d.current,o)[0];n&&n.focus&&n.focus()}));(0,t.useEffect)((()=>{u?O():x.current&&(x.current=!1,N())}),[u,x,N,O]),(0,t.useEffect)((()=>{y.current=null}));const _=(e,t)=>{if(!d.current)return null;const n=Ye(d.current,o);let r=n.indexOf(e)+t;return r=Math.max(0,Math.min(r,n.length)),n[r]};return function(e,n,r,a){void 0===a&&(a=!1);var o=k((e=>{var t,n;const{key:r}=e,a=e.target,o=null==(t=d.current)?void 0:t.contains(a),i=null==(n=h.current)?void 0:n.contains(a);if(/input|textarea/i.test(a.tagName)&&(" "===r||"Escape"!==r&&o||"Escape"===r&&"search"===a.type))return;if(!o&&!i)return;if(!("Tab"!==r||d.current&&u))return;y.current=e.type;const l={originalEvent:e,source:e.type};switch(r){case"ArrowUp":{const t=_(a,-1);return t&&t.focus&&t.focus(),void e.preventDefault()}case"ArrowDown":if(e.preventDefault(),u){const e=_(a,1);e&&e.focus&&e.focus()}else f(!0,l);return;case"Tab":le(a.ownerDocument,"keyup",(e=>{var t;("Tab"!==e.key||e.target)&&null!=(t=d.current)&&t.contains(e.target)||f(!1,l)}),{once:!0});break;case"Escape":"Escape"===r&&(e.preventDefault(),e.stopPropagation()),f(!1,l)}}));(0,t.useEffect)((function(){var t="function"==typeof e?e():e;return t.addEventListener(n,o,a),function(){return t.removeEventListener(n,o,a)}}),[e])}((0,t.useCallback)((()=>c.document),[c]),"keydown"),(0,F.jsx)(Un.Provider,{value:C,children:(0,F.jsx)(Xe.Provider,{value:A,children:s})})}Kn.Provider,Jn.displayName="Dropdown",Jn.Menu=Ln,Jn.Toggle=Bn,Jn.Item=Yn;var er=Jn;const tr=t.createContext({});tr.displayName="DropdownContext";var nr=tr;const rr=t.forwardRef((({bsPrefix:e,className:t,eventKey:n,disabled:r=!1,onClick:a,active:o,as:i=j,...l},s)=>{const c=I(e,"dropdown-item"),[u,f]=Gn({key:n,href:l.href,disabled:r,onClick:a,active:o});return(0,F.jsx)(i,{...l,...u,ref:s,className:v()(t,c,f.isActive&&"active",r&&"disabled")})}));rr.displayName="DropdownItem";var ar=rr;const or=t.createContext(null);or.displayName="InputGroupContext";var ir=or;const lr=t.createContext(null);lr.displayName="NavbarContext";var sr=lr;function cr(e,t){return e}function ur(e,t,n){let r=e?n?"bottom-start":"bottom-end":n?"bottom-end":"bottom-start";return"up"===t?r=e?n?"top-start":"top-end":n?"top-end":"top-start":"end"===t?r=e?n?"left-end":"right-end":n?"left-start":"right-start":"start"===t?r=e?n?"right-end":"left-end":n?"right-start":"left-start":"down-centered"===t?r="bottom":"up-centered"===t&&(r="top"),r}const fr=t.forwardRef((({bsPrefix:e,className:n,align:r,rootCloseEvent:a,flip:o,show:i,renderOnMount:l,as:s="div",popperConfig:c,variant:u,...f},d)=>{let p=!1;const m=(0,t.useContext)(sr),h=I(e,"dropdown-menu"),{align:g,drop:b,isRTL:y}=(0,t.useContext)(nr);r=r||g;const x=(0,t.useContext)(ir),w=[];if(r)if("object"==typeof r){const e=Object.keys(r);if(e.length){const t=e[0],n=r[t];p="start"===n,w.push(`${h}-${t}-${n}`)}}else"end"===r&&(p=!0);const E=ur(p,b,y),[k,{hasShown:C,popper:S,show:A,toggle:O}]=On({flip:o,rootCloseEvent:a,show:i,usePopper:!m&&0===w.length,offset:[0,2],popperConfig:c,placement:E});if(k.ref=me(cr(d),k.ref),N((()=>{A&&(null==S||S.update())}),[A]),!C&&!l&&!x)return null;"string"!=typeof s&&(k.show=A,k.close=()=>null==O?void 0:O(!1),k.align=r);let _=f.style;return null!=S&&S.placement&&(_={...f.style,...k.style},f["x-placement"]=S.placement),(0,F.jsx)(s,{...f,...k,style:_,...(w.length||m)&&{"data-bs-popper":"static"},className:v()(n,h,A&&"show",p&&`${h}-end`,u&&`${h}-${u}`,...w)})}));fr.displayName="DropdownMenu",fr.defaultProps={flip:!0};var dr=fr;const pr=t.forwardRef((({as:e,bsPrefix:t,variant:n,size:r,active:a,className:o,...i},l)=>{const s=I(t,"btn"),[c,{tagName:u}]=_({tagName:e,...i}),f=u;return(0,F.jsx)(f,{...c,...i,ref:l,className:v()(o,s,a&&"active",n&&`${s}-${n}`,r&&`${s}-${r}`,i.href&&i.disabled&&"disabled")})}));pr.displayName="Button",pr.defaultProps={variant:"primary",active:!1,disabled:!1};var mr=pr;const hr=t.forwardRef((({bsPrefix:e,split:n,className:r,childBsPrefix:a,as:o=mr,...i},l)=>{const s=I(e,"dropdown-toggle"),c=(0,t.useContext)(Xe);void 0!==a&&(i.bsPrefix=a);const[u]=Mn();return u.ref=me(u.ref,cr(l)),(0,F.jsx)(o,{className:v()(r,s,n&&`${s}-split`,(null==c?void 0:c.show)&&"show"),...u,...i})}));hr.displayName="DropdownToggle";var gr=hr;const vr=Se("dropdown-header",{defaultProps:{role:"heading"}}),br=Se("dropdown-divider",{Component:"hr",defaultProps:{role:"separator"}}),yr=Se("dropdown-item-text",{Component:"span"}),xr=t.forwardRef(((e,n)=>{const{bsPrefix:r,drop:a,show:o,className:i,align:l,onSelect:s,onToggle:c,focusFirstItemOnShow:u,as:f="div",navbar:d,autoClose:p,...m}=E(e,{show:"onToggle"}),h=(0,t.useContext)(ir),g=I(r,"dropdown"),b=function(){const{dir:e}=(0,t.useContext)(D);return"rtl"===e}(),y=k(((e,t)=>{var n;t.originalEvent.currentTarget!==document||"keydown"===t.source&&"Escape"!==t.originalEvent.key||(t.source="rootClose"),n=t.source,(!1===p?"click"===n:"inside"===p?"rootClose"!==n:"outside"!==p||"select"!==n)&&(null==c||c(e,t))})),x=ur("end"===l,a,b),w=(0,t.useMemo)((()=>({align:l,drop:a,isRTL:b})),[l,a,b]),C={down:g,"down-centered":`${g}-center`,up:"dropup","up-centered":"dropup-center dropup",end:"dropend",start:"dropstart"};return(0,F.jsx)(nr.Provider,{value:w,children:(0,F.jsx)(er,{placement:x,show:o,onSelect:s,onToggle:y,focusFirstItemOnShow:u,itemSelector:`.${g}-item:not(.disabled):not(:disabled)`,children:h?m.children:(0,F.jsx)(f,{...m,ref:n,className:v()(i,o&&"show",C[a])})})})}));xr.displayName="Dropdown",xr.defaultProps={navbar:!1,align:"start",autoClose:!0,drop:"down"};var wr=Object.assign(xr,{Toggle:gr,Menu:dr,Item:ar,ItemText:yr,Divider:br,Header:vr}),Er=t.createContext(null);const kr=["as","active","eventKey"];function Cr({key:e,onClick:n,active:r,id:a,role:o,disabled:i}){const l=(0,t.useContext)(Un),s=(0,t.useContext)(Hn),c=(0,t.useContext)(Er);let u=r;const f={role:o};if(s){o||"tablist"!==s.role||(f.role="tab");const t=s.getControllerId(null!=e?e:null),n=s.getControlledId(null!=e?e:null);f[Wn("event-key")]=e,f.id=t||a,u=null==r&&null!=e?s.activeKey===e:r,!u&&(null!=c&&c.unmountOnExit||null!=c&&c.mountOnEnter)||(f["aria-controls"]=n)}return"tab"===f.role&&(f["aria-selected"]=u,u||(f.tabIndex=-1),i&&(f.tabIndex=-1,f["aria-disabled"]=!0)),f.onClick=k((t=>{i||(null==n||n(t),null!=e&&l&&!t.isPropagationStopped()&&l(e,t))})),[f,{isActive:u}]}const Sr=t.forwardRef(((e,t)=>{let{as:n=z,active:r,eventKey:a}=e,o=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,kr);const[i,l]=Cr(Object.assign({key:qn(a,o.href),active:r},o));return i[Wn("active")]=l.isActive,(0,F.jsx)(n,Object.assign({},o,i,{ref:t}))}));Sr.displayName="NavItem";var Ar=Sr;const Nr=t.forwardRef((({bsPrefix:e,className:t,as:n=j,active:r,eventKey:a,...o},i)=>{e=I(e,"nav-link");const[l,s]=Cr({key:qn(a,o.href),active:r,...o});return(0,F.jsx)(n,{...o,...l,ref:i,className:v()(t,e,o.disabled&&"disabled",s.isActive&&"active")})}));Nr.displayName="NavLink",Nr.defaultProps={disabled:!1};var Fr=Nr;const Or=t.forwardRef((({id:e,title:t,children:n,bsPrefix:r,className:a,rootCloseEvent:o,menuRole:i,disabled:l,active:s,renderMenuOnMount:c,menuVariant:u,...f},d)=>{const p=I(void 0,"nav-item");return(0,F.jsxs)(wr,{ref:d,...f,className:v()(a,p),children:[(0,F.jsx)(wr.Toggle,{id:e,eventKey:null,active:s,disabled:l,childBsPrefix:r,as:Fr,children:t}),(0,F.jsx)(wr.Menu,{role:i,renderOnMount:c,rootCloseEvent:o,variant:u,children:n})]})}));Or.displayName="NavDropdown";var _r=Object.assign(Or,{Item:wr.Item,ItemText:wr.ItemText,Divider:wr.Divider,Header:wr.Header});function Lr(e){return Lr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lr(e)}function zr(){zr=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Lr(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function Tr(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function Pr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function jr(r,a){var o,i,l=(o=(0,t.useState)(null),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(o,i)||function(e,t){if(e){if("string"==typeof e)return Pr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Pr(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=l[0],c=l[1],u=s;if(null===s){var f,d=function(){var t,r=(t=zr().mark((function t(){var r;return zr().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,c(n().createElement(je,{size:"sm"})),r=new e,t.next=5,r.logout();case 5:a()&&f("You have been logged out.","success"),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),f("Logout failed: "+t.t0.message,"error");case 11:case"end":return t.stop()}}),t,null,[[0,8]])})),function(){var e=this,n=arguments;return new Promise((function(r,a){var o=t.apply(e,n);function i(e){Tr(o,r,a,i,l,"next",e)}function l(e){Tr(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(){return r.apply(this,arguments)}}(),p=function(e){"anonymous"===e.username?f():c(function(e,t){var r=n().createElement(n().Fragment,null,e.username," ",n().createElement("i",{className:"bi bi-person-fill"}));return n().createElement(_r,{align:"end",title:r},n().createElement(_r.Item,{as:"button",onClick:t,href:"#"},"Logout"))}(e,d))},m=function(e){f(e.message,"error")},h=function(e){r(e)&&p(e)};f=function(e,t){c(n().createElement(Ge,{message:e,messageType:t,then:h,onError:m}))},(new e).getSessionInfo().then(p).catch((function(e){return f(e.message,"info")})),u=n().createElement(je,{size:"sm"})}return n().createElement("div",{className:"user-component"},u)}jr.defaultProps={onLogin:function(){return!0},onLogout:function(){return!0}};var Dr={name:"CaosDB"};a(391);const Rr=["as","onSelect","activeKey","role","onKeyDown"],Mr=()=>{},Ir=Wn("event-key"),Br=t.forwardRef(((e,n)=>{let{as:r="div",onSelect:a,activeKey:o,role:i,onKeyDown:l}=e,s=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,Rr);const c=Ke(),u=(0,t.useRef)(!1),f=(0,t.useContext)(Un),d=(0,t.useContext)(Er);let p,m;d&&(i=i||"tablist",o=d.activeKey,p=d.getControlledId,m=d.getControllerId);const h=(0,t.useRef)(null),g=e=>{const t=h.current;if(!t)return null;const n=Ye(t,`[${Ir}]:not([aria-disabled=true])`),r=t.querySelector("[aria-selected=true]");if(!r||r!==document.activeElement)return null;const a=n.indexOf(r);if(-1===a)return null;let o=a+e;return o>=n.length&&(o=0),o<0&&(o=n.length-1),n[o]},v=(e,t)=>{null!=e&&(null==a||a(e,t),null==f||f(e,t))};(0,t.useEffect)((()=>{if(h.current&&u.current){const e=h.current.querySelector(`[${Ir}][aria-selected=true]`);null==e||e.focus()}u.current=!1}));const b=me(n,h);return(0,F.jsx)(Un.Provider,{value:v,children:(0,F.jsx)(Hn.Provider,{value:{role:i,activeKey:qn(o),getControlledId:p||Mr,getControllerId:m||Mr},children:(0,F.jsx)(r,Object.assign({},s,{onKeyDown:e=>{if(null==l||l(e),!d)return;let t;switch(e.key){case"ArrowLeft":case"ArrowUp":t=g(-1);break;case"ArrowRight":case"ArrowDown":t=g(1);break;default:return}t&&(e.preventDefault(),v(t.dataset[("EventKey","rrUiEventKey")]||null,e),u.current=!0,c())},ref:b,role:i}))})})}));Br.displayName="Nav";var qr=Object.assign(Br,{Item:Ar});const Ur=t.createContext(null);Ur.displayName="CardHeaderContext";var $r=Ur,Hr=Se("nav-item");const Wr=t.forwardRef(((e,n)=>{const{as:r="div",bsPrefix:a,variant:o,fill:i,justify:l,navbar:s,navbarScroll:c,className:u,activeKey:f,...d}=E(e,{activeKey:"onSelect"}),p=I(a,"nav");let m,h,g=!1;const b=(0,t.useContext)(sr),y=(0,t.useContext)($r);return b?(m=b.bsPrefix,g=null==s||s):y&&({cardHeaderBsPrefix:h}=y),(0,F.jsx)(qr,{as:r,ref:n,activeKey:f,className:v()(u,{[p]:!g,[`${m}-nav`]:g,[`${m}-nav-scroll`]:g&&c,[`${h}-${o}`]:!!h,[`${p}-${o}`]:!!o,[`${p}-fill`]:i,[`${p}-justified`]:l}),...d})}));Wr.displayName="Nav",Wr.defaultProps={justify:!1,fill:!1};var Vr=Object.assign(Wr,{Item:Hr,Link:Fr});const Gr=t.forwardRef((({bsPrefix:e,className:t,as:n,...r},a)=>{e=I(e,"navbar-brand");const o=n||(r.href?"a":"span");return(0,F.jsx)(o,{...r,ref:a,className:v()(t,e)})}));Gr.displayName="NavbarBrand";var Qr=Gr,Yr=function(...e){return e.filter((e=>null!=e)).reduce(((e,t)=>{if("function"!=typeof t)throw new Error("Invalid Argument Type, must only provide functions, undefined, or null.");return null===e?t:function(...n){e.apply(this,n),t.apply(this,n)}}),null)};const Kr={height:["marginTop","marginBottom"],width:["marginLeft","marginRight"]};function Xr(e,t){const n=t[`offset${e[0].toUpperCase()}${e.slice(1)}`],r=Kr[e];return n+parseInt(ne(t,r[0]),10)+parseInt(ne(t,r[1]),10)}const Zr={[H]:"collapse",[G]:"collapsing",[W]:"collapsing",[V]:"collapse show"},Jr={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,getDimensionValue:Xr},ea=n().forwardRef((({onEnter:e,onEntering:r,onEntered:a,onExit:o,onExiting:i,className:l,children:s,dimension:c="height",getDimensionValue:u=Xr,...f},d)=>{const p="function"==typeof c?c():c,m=(0,t.useMemo)((()=>Yr((e=>{e.style[p]="0"}),e)),[p,e]),h=(0,t.useMemo)((()=>Yr((e=>{const t=`scroll${p[0].toUpperCase()}${p.slice(1)}`;e.style[p]=`${e[t]}px`}),r)),[p,r]),g=(0,t.useMemo)((()=>Yr((e=>{e.style[p]=null}),a)),[p,a]),b=(0,t.useMemo)((()=>Yr((e=>{e.style[p]=`${u(p,e)}px`,de(e)}),o)),[o,u,p]),y=(0,t.useMemo)((()=>Yr((e=>{e.style[p]=null}),i)),[p,i]);return(0,F.jsx)(he,{ref:d,addEndListener:fe,...f,"aria-expanded":f.role?f.in:null,onEnter:m,onEntering:h,onEntered:g,onExit:b,onExiting:y,childRef:s.ref,children:(e,t)=>n().cloneElement(s,{...t,className:v()(l,s.props.className,Zr[e],"width"===p&&"collapse-horizontal")})})}));ea.defaultProps=Jr;var ta=ea;const na=t.forwardRef((({children:e,bsPrefix:n,...r},a)=>{n=I(n,"navbar-collapse");const o=(0,t.useContext)(sr);return(0,F.jsx)(ta,{in:!(!o||!o.expanded),...r,children:(0,F.jsx)("div",{ref:a,className:n,children:e})})}));na.displayName="NavbarCollapse";var ra=na;const aa=t.forwardRef((({bsPrefix:e,className:n,children:r,label:a,as:o="button",onClick:i,...l},s)=>{e=I(e,"navbar-toggler");const{onToggle:c,expanded:u}=(0,t.useContext)(sr)||{},f=k((e=>{i&&i(e),c&&c()}));return"button"===o&&(l.type="button"),(0,F.jsx)(o,{...l,ref:s,onClick:f,"aria-label":a,className:v()(n,e,!u&&"collapsed"),children:r||(0,F.jsx)("span",{className:`${e}-icon`})})}));aa.displayName="NavbarToggle",aa.defaultProps={label:"Toggle navigation"};var oa=aa,ia=new WeakMap,la=function(e,t){if(e&&t){var n=ia.get(t)||new Map;ia.set(t,n);var r=n.get(e);return r||((r=t.matchMedia(e)).refCount=0,n.set(r.media,r)),r}};function sa(e,n){void 0===n&&(n="undefined"==typeof window?void 0:window);var r=la(e,n),a=(0,t.useState)((function(){return!!r&&r.matches})),o=a[0],i=a[1];return N((function(){var t=la(e,n);if(!t)return i(!1);var r=ia.get(n),a=function(){i(t.matches)};return t.refCount++,t.addListener(a),a(),function(){t.removeListener(a),t.refCount--,t.refCount<=0&&(null==r||r.delete(t.media)),t=void 0}}),[e]),o}var ca=function(e){var n=Object.keys(e);function r(e,t){return e===t?t:e?e+" and "+t:t}return function(a,o,i){var l,s;return"object"==typeof a?(l=a,i=o,o=!0):((s={})[a]=o=o||!0,l=s),sa((0,t.useMemo)((function(){return Object.entries(l).reduce((function(t,a){var o,i=a[0],l=a[1];return"up"!==l&&!0!==l||(t=r(t,("number"==typeof(o=e[i])&&(o+="px"),"(min-width: "+o+")"))),"down"!==l&&!0!==l||(t=r(t,function(t){var r=function(e){return n[Math.min(n.indexOf(e)+1,n.length-1)]}(t),a=e[r];return"(max-width: "+(a="number"==typeof a?a-.2+"px":"calc("+a+" - 0.2px)")+")"}(i))),t}),"")}),[JSON.stringify(l)]),i)}}({xs:0,sm:576,md:768,lg:992,xl:1200,xxl:1400});function ua(e){void 0===e&&(e=X());try{var t=e.activeElement;return t&&t.nodeName?t:null}catch(t){return e.body}}const fa=Wn("modal-open");var da=class{constructor({ownerDocument:e,handleContainerOverflow:t=!0,isRTL:n=!1}={}){this.handleContainerOverflow=t,this.isRTL=n,this.modals=[],this.ownerDocument=e}getScrollbarWidth(){return function(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(e){}removeModalAttributes(e){}setContainerStyle(e){const t={overflow:"hidden"},n=this.isRTL?"paddingLeft":"paddingRight",r=this.getElement();e.style={overflow:r.style.overflow,[n]:r.style[n]},e.scrollBarWidth&&(t[n]=`${parseInt(ne(r,n)||"0",10)+e.scrollBarWidth}px`),r.setAttribute(fa,""),ne(r,t)}reset(){[...this.modals].forEach((e=>this.remove(e)))}removeContainerStyle(e){const t=this.getElement();t.removeAttribute(fa),Object.assign(t.style,e.style)}add(e){let t=this.modals.indexOf(e);return-1!==t||(t=this.modals.length,this.modals.push(e),this.setModalAttributes(e),0!==t||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state))),t}remove(e){const t=this.modals.indexOf(e);-1!==t&&(this.modals.splice(t,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(e))}isTopModal(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e}};const pa=(e,t)=>re?null==e?(t||X()).body:("function"==typeof e&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;var ma=function({children:e,in:n,onExited:r,mountOnEnter:a,unmountOnExit:o}){const i=(0,t.useRef)(null),l=(0,t.useRef)(n),s=k(r);(0,t.useEffect)((()=>{n?l.current=!0:s(i.current)}),[n,s]);const c=me(i,e.ref),u=(0,t.cloneElement)(e,{ref:c});return n?u:o||!l.current&&a?null:u};function ha({children:e,in:n,onExited:r,onEntered:a,transition:o}){const[i,l]=(0,t.useState)(!n);n&&i&&l(!1);const s=function({in:e,onTransition:n}){const r=(0,t.useRef)(null),a=(0,t.useRef)(!0),o=k(n);return N((()=>{if(!r.current)return;let t=!1;return o({in:e,element:r.current,initial:a.current,isStale:()=>t}),()=>{t=!0}}),[e,o]),N((()=>(a.current=!1,()=>{a.current=!0})),[]),r}({in:!!n,onTransition:e=>{Promise.resolve(o(e)).then((()=>{e.isStale()||(e.in?null==a||a(e.element,e.initial):(l(!0),null==r||r(e.element)))}),(t=>{throw e.in||l(!0),t}))}}),c=me(s,e.ref);return i&&!n?null:(0,t.cloneElement)(e,{ref:c})}function ga(e,t,n){return e?(0,F.jsx)(e,Object.assign({},n)):t?(0,F.jsx)(ha,Object.assign({},n,{transition:t})):(0,F.jsx)(ma,Object.assign({},n))}const va=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];let ba;const ya=(0,t.forwardRef)(((e,n)=>{let{show:r=!1,role:a="dialog",className:o,style:i,children:l,backdrop:s=!0,keyboard:c=!0,onBackdropClick:u,onEscapeKeyDown:f,transition:d,runTransition:p,backdropTransition:m,runBackdropTransition:h,autoFocus:g=!0,enforceFocus:v=!0,restoreFocus:b=!0,restoreFocusOptions:y,renderDialog:x,renderBackdrop:w=(e=>(0,F.jsx)("div",Object.assign({},e))),manager:E,container:A,onShow:N,onHide:O=(()=>{}),onExit:_,onExited:L,onExiting:z,onEnter:T,onEntering:P,onEntered:j}=e,D=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,va);const R=function(e,n){const r=Xn(),[a,o]=(0,t.useState)((()=>pa(e,null==r?void 0:r.document)));if(!a){const t=pa(e);t&&o(t)}return(0,t.useEffect)((()=>{}),[n,a]),(0,t.useEffect)((()=>{const t=pa(e);t!==a&&o(t)}),[e,a]),a}(A),M=function(e){const n=Xn(),r=e||function(e){return ba||(ba=new da({ownerDocument:null==e?void 0:e.document})),ba}(n),a=(0,t.useRef)({dialog:null,backdrop:null});return Object.assign(a.current,{add:()=>r.add(a.current),remove:()=>r.remove(a.current),isTopModal:()=>r.isTopModal(a.current),setDialogRef:(0,t.useCallback)((e=>{a.current.dialog=e}),[]),setBackdropRef:(0,t.useCallback)((e=>{a.current.backdrop=e}),[])})}(E),I=C(),B=S(r),[U,$]=(0,t.useState)(!r),H=(0,t.useRef)(null);(0,t.useImperativeHandle)(n,(()=>M),[M]),re&&!B&&r&&(H.current=ua()),r&&U&&$(!1);const W=k((()=>{if(M.add(),ee.current=se(document,"keydown",Z),J.current=se(document,"focus",(()=>setTimeout(K)),!0),N&&N(),g){const e=ua(document);M.dialog&&e&&!xn(M.dialog,e)&&(H.current=e,M.dialog.focus())}})),V=k((()=>{var e;M.remove(),null==ee.current||ee.current(),null==J.current||J.current(),b&&(null==(e=H.current)||null==e.focus||e.focus(y),H.current=null)}));var G,Q,Y;(0,t.useEffect)((()=>{r&&R&&W()}),[r,R,W]),(0,t.useEffect)((()=>{U&&V()}),[U,V]),G=()=>{V()},(Q=(0,t.useRef)(G)).current=G,Y=Q,(0,t.useEffect)((function(){return function(){return Y.current()}}),[]);const K=k((()=>{if(!v||!I()||!M.isTopModal())return;const e=ua();M.dialog&&e&&!xn(M.dialog,e)&&M.dialog.focus()})),X=k((e=>{e.target===e.currentTarget&&(null==u||u(e),!0===s&&O())})),Z=k((e=>{c&&function(e){return"Escape"===e.code||27===e.keyCode}(e)&&M.isTopModal()&&(null==f||f(e),e.defaultPrevented||O())})),J=(0,t.useRef)(),ee=(0,t.useRef)();if(!R)return null;const te=Object.assign({role:a,ref:M.setDialogRef,"aria-modal":"dialog"===a||void 0},D,{style:i,className:o,tabIndex:-1});let ne=x?x(te):(0,F.jsx)("div",Object.assign({},te,{children:t.cloneElement(l,{role:"document"})}));ne=ga(d,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!r,onExit:_,onExiting:z,onExited:(...e)=>{$(!0),null==L||L(...e)},onEnter:T,onEntering:P,onEntered:j,children:ne});let ae=null;return s&&(ae=w({ref:M.setBackdropRef,onClick:X}),ae=ga(m,h,{in:!!r,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:ae})),(0,F.jsx)(F.Fragment,{children:q.createPortal((0,F.jsxs)(F.Fragment,{children:[ae,ne]}),R)})}));ya.displayName="Modal";var xa=Object.assign(ya,{Manager:da}),wa=Se("offcanvas-body");const Ea={[W]:"show",[V]:"show"},ka=t.forwardRef((({bsPrefix:e,className:n,children:r,...a},o)=>(e=I(e,"offcanvas"),(0,F.jsx)(he,{ref:o,addEndListener:fe,...a,childRef:r.ref,children:(a,o)=>t.cloneElement(r,{...o,className:v()(n,r.props.className,(a===W||a===G)&&`${e}-toggling`,Ea[a])})}))));ka.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1},ka.displayName="OffcanvasToggling";var Ca=ka,Sa=t.createContext({onHide(){}});const Aa=t.forwardRef((({closeLabel:e,closeVariant:n,closeButton:r,onHide:a,children:o,...i},l)=>{const s=(0,t.useContext)(Sa),c=k((()=>{null==s||s.onHide(),null==a||a()}));return(0,F.jsxs)("div",{ref:l,...i,children:[o,r&&(0,F.jsx)(we,{"aria-label":e,variant:n,onClick:c})]})}));Aa.defaultProps={closeLabel:"Close",closeButton:!1};var Na=Aa;const Fa=t.forwardRef((({bsPrefix:e,className:t,...n},r)=>(e=I(e,"offcanvas-header"),(0,F.jsx)(Na,{ref:r,...n,className:v()(t,e)}))));Fa.displayName="OffcanvasHeader",Fa.defaultProps={closeLabel:"Close",closeButton:!1};var Oa=Fa,_a=Se("offcanvas-title",{Component:Ee("h5")});function La(e,t){return e.replace(new RegExp("(^|\\\\s)"+t+"(?:\\\\s|$)","g"),"$1").replace(/\\s+/g," ").replace(/^\\s*|\\s*$/g,"")}const za=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ta=".sticky-top",Pa=".navbar-toggler";class ja extends da{adjustAndStore(e,t,n){const r=t.style[e];t.dataset[e]=r,ne(t,{[e]:`${parseFloat(ne(t,e))+n}px`})}restore(e,t){const n=t.dataset[e];void 0!==n&&(delete t.dataset[e],ne(t,{[e]:n}))}setContainerStyle(e){super.setContainerStyle(e);const t=this.getElement();var n,r;if(r="modal-open",(n=t).classList?n.classList.add(r):function(e,t){return e.classList?e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,r)||("string"==typeof n.className?n.className=n.className+" "+r:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+r)),!e.scrollBarWidth)return;const a=this.isRTL?"paddingLeft":"paddingRight",o=this.isRTL?"marginLeft":"marginRight";Ye(t,za).forEach((t=>this.adjustAndStore(a,t,e.scrollBarWidth))),Ye(t,Ta).forEach((t=>this.adjustAndStore(o,t,-e.scrollBarWidth))),Ye(t,Pa).forEach((t=>this.adjustAndStore(o,t,e.scrollBarWidth)))}removeContainerStyle(e){super.removeContainerStyle(e);const t=this.getElement();var n,r;r="modal-open",(n=t).classList?n.classList.remove(r):"string"==typeof n.className?n.className=La(n.className,r):n.setAttribute("class",La(n.className&&n.className.baseVal||"",r));const a=this.isRTL?"paddingLeft":"paddingRight",o=this.isRTL?"marginLeft":"marginRight";Ye(t,za).forEach((e=>this.restore(a,e))),Ye(t,Ta).forEach((e=>this.restore(o,e))),Ye(t,Pa).forEach((e=>this.restore(o,e)))}}let Da;var Ra=ja;function Ma(e){return(0,F.jsx)(Ca,{...e})}function Ia(e){return(0,F.jsx)(be,{...e})}const Ba=t.forwardRef((({bsPrefix:e,className:n,children:r,"aria-labelledby":a,placement:o,responsive:i,show:l,backdrop:s,keyboard:c,scroll:u,onEscapeKeyDown:f,onShow:d,onHide:p,container:m,autoFocus:h,enforceFocus:g,restoreFocus:b,restoreFocusOptions:y,onEntered:x,onExit:w,onExiting:E,onEnter:C,onEntering:S,onExited:A,backdropClassName:N,manager:O,renderStaticNode:_,...L},z)=>{const T=(0,t.useRef)();e=I(e,"offcanvas");const{onToggle:P}=(0,t.useContext)(sr)||{},[j,D]=(0,t.useState)(!1),R=ca(i||"xs","up");(0,t.useEffect)((()=>{D(i?l&&!R:l)}),[l,i,R]);const M=k((()=>{null==P||P(),null==p||p()})),B=(0,t.useMemo)((()=>({onHide:M})),[M]),q=(0,t.useCallback)((t=>(0,F.jsx)("div",{...t,className:v()(`${e}-backdrop`,N)})),[N,e]),U=t=>(0,F.jsx)("div",{...t,...L,className:v()(n,i?`${e}-${i}`:e,`${e}-${o}`),"aria-labelledby":a,children:r});return(0,F.jsxs)(F.Fragment,{children:[!j&&(i||_)&&U({}),(0,F.jsx)(Sa.Provider,{value:B,children:(0,F.jsx)(xa,{show:j,ref:z,backdrop:s,container:m,keyboard:c,autoFocus:h,enforceFocus:g&&!u,restoreFocus:b,restoreFocusOptions:y,onEscapeKeyDown:f,onShow:d,onHide:M,onEnter:(e,...t)=>{e&&(e.style.visibility="visible"),null==C||C(e,...t)},onEntering:S,onEntered:x,onExit:w,onExiting:E,onExited:(e,...t)=>{e&&(e.style.visibility=""),null==A||A(...t)},manager:O||(u?(T.current||(T.current=new Ra({handleContainerOverflow:!1})),T.current):(Da||(Da=new ja(void 0)),Da)),transition:Ma,backdropTransition:Ia,renderBackdrop:q,renderDialog:U})})]})}));Ba.displayName="Offcanvas",Ba.defaultProps={show:!1,backdrop:!0,keyboard:!0,scroll:!1,autoFocus:!0,enforceFocus:!0,restoreFocus:!0,placement:"start",renderStaticNode:!1};var qa=Object.assign(Ba,{Body:wa,Header:Oa,Title:_a});const Ua=t.forwardRef(((e,n)=>{const r=(0,t.useContext)(sr);return(0,F.jsx)(qa,{ref:n,show:!(null==r||!r.expanded),...e,renderStaticNode:!0})}));Ua.displayName="NavbarOffcanvas";var $a=Ua;const Ha=Se("navbar-text",{Component:"span"}),Wa=t.forwardRef(((e,n)=>{const{bsPrefix:r,expand:a,variant:o,bg:i,fixed:l,sticky:s,className:c,as:u="nav",expanded:f,onToggle:d,onSelect:p,collapseOnSelect:m,...h}=E(e,{expanded:"onToggle"}),g=I(r,"navbar"),b=(0,t.useCallback)(((...e)=>{null==p||p(...e),m&&f&&(null==d||d(!1))}),[p,m,f,d]);void 0===h.role&&"nav"!==u&&(h.role="navigation");let y=`${g}-expand`;"string"==typeof a&&(y=`${y}-${a}`);const x=(0,t.useMemo)((()=>({onToggle:()=>null==d?void 0:d(!f),bsPrefix:g,expanded:!!f,expand:a})),[g,f,a,d]);return(0,F.jsx)(sr.Provider,{value:x,children:(0,F.jsx)(Un.Provider,{value:b,children:(0,F.jsx)(u,{ref:n,...h,className:v()(c,g,a&&y,o&&`${g}-${o}`,i&&`bg-${i}`,s&&`sticky-${s}`,l&&`fixed-${l}`)})})})}));Wa.defaultProps={expand:!0,variant:"light",collapseOnSelect:!1},Wa.displayName="Navbar";var Va=Object.assign(Wa,{Brand:Qr,Collapse:ra,Offcanvas:$a,Text:Ha,Toggle:oa});const Ga=t.forwardRef((({bsPrefix:e,fluid:t,as:n="div",className:r,...a},o)=>{const i=I(e,"container"),l="string"==typeof t?`-${t}`:"-fluid";return(0,F.jsx)(n,{ref:o,...a,className:v()(r,t?`${i}${l}`:i)})}));Ga.displayName="Container",Ga.defaultProps={fluid:!1};var Qa=Ga,Ya=a(496),Ka=a.n(Ya);function Xa(e){return Xa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Xa(e)}function Za(){Za=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,a){var o=new RegExp(e,r);return t.set(o,a||t.get(e)),eo(o,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){var a=r[n];if("number"==typeof a)t[n]=e[a];else{for(var o=0;void 0===e[a[o]]&&o+1<a.length;)o++;t[n]=e[a[o]]}return t}),Object.create(null))}return Ja(n,RegExp),n.prototype.exec=function(t){var n=e.exec.call(this,t);if(n){n.groups=r(n,this);var a=n.indices;a&&(a.groups=r(a,this))}return n},n.prototype[Symbol.replace]=function(n,a){if("string"==typeof a){var o=t.get(this);return e[Symbol.replace].call(this,n,a.replace(/\\$<([^>]+)>/g,(function(e,t){var n=o[t];return"$"+(Array.isArray(n)?n.join("$"):n)})))}if("function"==typeof a){var i=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=Xa(e[e.length-1])&&(e=[].slice.call(e)).push(r(e,i)),a.apply(this,e)}))}return e[Symbol.replace].call(this,n,a)},Za.apply(this,arguments)}function Ja(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&eo(e,t)}function eo(e,t){return eo=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},eo(e,t)}function to(){to=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Xa(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function no(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function ro(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){no(o,r,a,i,l,"next",e)}function l(e){no(o,r,a,i,l,"throw",e)}i(void 0)}))}}function ao(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==Xa(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Xa(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Xa(a)?a:String(a)),r)}var a}var oo=["FIND","FILE","ENTITY","SELECT","COUNT","RECORD","PROPERTY","RECORDTYPE","REFERENCES","REFERENCED BY","WHICH","WITH","CREATED BY","CREATED BY ME","CREATED AT","CREATED ON","CREATED IN","CREATED BEFORE","CREATED UNTIL","CREATED AFTER","CREATED SINCE","SOMEONE","STORED AT","HAS A PROPERTY","HAS BEEN","ANY VERSION OF","FROM","INSERTED AT","INSERTED ON","INSERTED IN","INSERTED BY","INSERTED BY ME","INSERTED BEFORE","INSERTED UNTIL","INSERTED AFTER","INSERTED SINCE","UPDATED AT","UPDATED ON","UPDATED IN","UPDATED BY","UPDATED BY ME","UPDATED BEFORE","UPDATED UNTIL","UPDATED AFTER","UPDATED SINCE","SINCE","BEFORE","ON","IN","AFTER","UNTIL","AT","BY","BY ME"];function io(e){return e.map((function(e){var t=e;return t.indexOf(" ")>-1&&(t=e.indexOf(\'"\')>-1?"\'".concat(t,"\'"):\'"\'.concat(t,\'"\')),{original:e,normalized:e.trim().toLowerCase(),escaped:t}}))}function lo(e){return e.map((function(e){return{original:e,normalized:e.trim().toLowerCase(),escaped:e}}))}var so=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._cql_words=lo(n||oo),this._terms=t||[],this._resolved_terms=void 0}var t,n,r,a,o,i,l;return t=e,n=[{key:"getSuggestions",value:(l=ro(to().mark((function e(t,n,r){return to().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=4;break}return e.next=3,this.getCqlSuggestions(n,r);case 3:case 6:return e.abrupt("return",e.sent);case 4:return e.next=6,this.getSearchTermSuggestions(n,r);case 7:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return l.apply(this,arguments)})},{key:"_do_resolve_terms",value:(i=ro(to().mark((function e(t){var n;return to().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t){e.next=6;break}return e.next=3,t();case 3:n=e.sent,e.next=9;break;case 6:return e.next=8,t;case 8:n=e.sent;case 9:return e.next=11,io(n);case 11:return e.abrupt("return",e.sent);case 12:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},{key:"_getTerms",value:(o=ro(to().mark((function e(){return to().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._resolved_terms||(this._resolved_terms=this._do_resolve_terms(this._terms)),e.next=3,this._resolved_terms;case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"getSearchTermSuggestions",value:(a=ro(to().mark((function e(t,n){var r,a;return to().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getTerms();case 2:return r=e.sent,t===n&&(r=lo(["FIND","SELECT","COUNT"]).concat(r)),a=n.trim().toLowerCase(),e.abrupt("return",r.filter((function(e){return e.normalized.startsWith(a)})));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t){return a.apply(this,arguments)})},{key:"getCqlSuggestions",value:(r=ro(to().mark((function e(t,n){var r,a;return to().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this._cql_words,a=n.trim().toLowerCase(),e.t0=r.filter((function(e){return e.normalized.startsWith(a)})),e.next=5,this.getSearchTermSuggestions(t,n);case 5:return e.t1=e.sent,e.abrupt("return",e.t0.concat.call(e.t0,e.t1));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})}],n&&ao(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),co=function(e){return(e=e.toUpperCase().trim()).startsWith("FIND")||e.startsWith("COUNT")||e.startsWith("SELECT")},uo={"=":"=",">":">","≥":">=","<":"<","≤":"<=","≠":"!=",equals:"=",in:"in","not in":"not in","after date":">","since date":">=","until date":"<=","before date":"<","on date":"on","not on date":"not on"},fo={boolean:["is true","is false"],text:["equals","not equals","contains","not contains"],integer:["=","≠","≥","≤","<",">","range"],double:["=","≠","≥","≤","<",">","range"],datetime:["=","≠","on date","in","not on date","not in","after date","before date","until date","since date"]},po={boolean:{"is true":function(e){return"(".concat(e," = TRUE)")},"is false":function(e){return"(".concat(e," = FALSE)")}},text:{contains:function(e,t,n){return"(".concat(e,\' LIKE "*\').concat(n,\'*")\')},"not equals":function(e,t,n){return"(NOT ".concat(e,\' = "\').concat(n,\'")\')},"not contains":function(e,t,n){return"(NOT ".concat(e,\' LIKE "*\').concat(n,\'*")\')}},integer:{range:function(e,t,n,r){return"(".concat(e," > ").concat(n[0]).concat(r,") AND (").concat(e," < ").concat(n[1]).concat(r,")")}},double:{range:function(e,t,n,r){return"(".concat(e," > ").concat(n[0]).concat(r,") AND (").concat(e," < ").concat(n[1]).concat(r,")")}},_default:{_default:function(e,t,n,r){n=n||"";var a=""!==(r=r||"")?"":-1===n.indexOf(\'"\')?\'"\':"\'";if(uo[t])return"(".concat(e," ").concat(uo[t]," ").concat(a).concat(n).concat(r).concat(a,")");throw new Error("Could not translate ".concat(e," ").concat(t," filter"),n)}}},mo=function(e){return function(t,n){var r="FIND RECORD";e&&(r+=\' "\'.concat(e,\'"\'));var a=" WITH ";if(t&&t.length>0){var o=go(t).map((function(e){return"A PROPERTY LIKE \'*".concat(e.replaceAll("\'","\\\\\'"),"*\'")}));o.length&&(a=" AND ",r+=" WITH "+o.join(a))}var i=n.map((function(e){return function(e,t,n,r,a){if(e&&n){if(a=a||"",po[e]){if(po[e][n]||null===po[e][n])return po[e][n](t,n,r,a);if(po[e]._default||null===po[e]._default)return po[e]._default(t,n,r,a)}return po._default[n]?po._default[n](t,n,r,a):po._default._default(t,n,r,a)}}(e.datatype,e.property,e.operator,e.value,e.unit)}));return i.length>0&&(r+=a+i.join(" AND ")),r}},ho=Za(/"([^"]*)" |\'([^\']*)\' |([^ ]+)/g,{dq:1,sq:2,nq:3}),go=function(e){return Array.from((e+" ").matchAll(ho),(function(e){return e[1]||e[2]||e[3]})).filter((function(e){return e}))};function vo(e,t,n,r,a,o){return{id:e,recordType:t,label:n||t||e,description:r||"Show only results of type ".concat(n||t||e),makeQuery:a||mo(t),filterDefinitions:o||[]}}var bo=function(){var e=ro(to().mark((function e(t,n,r){var a;return to().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=new so((function(){return[r+"-suggestion1",r+"-suggestion2",r+"-suggestion3",r+"-suggestion4",r+"-suggestion5",r+"-suggestion6",r+"-suggestion7",r+"-suggestion8",r+"-suggestion9",r+"-suggestion10",r+"-suggestion11",r+"-suggestion12",r+"-suggestion13",r+"-suggestion14",r+"-suggestion15"]}),oo),e.abrupt("return",a.getSuggestions(t,n,r));case 2:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}();function yo(e){return yo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yo(e)}function xo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function wo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xo(Object(n),!0).forEach((function(t){Eo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Eo(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==yo(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==yo(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===yo(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ko(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Co(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Co(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Co(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function So(){return So=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},So.apply(this,arguments)}var Ao,No=n().createContext({}),Fo=function(e){var r=e.onChange,a=e.value,o=(0,t.useCallback)((function(e){var t={target:{value:[e.target.value,a[1]]}};r(t)}),[r,a]),i=(0,t.useCallback)((function(e){var t={target:{value:[a[0],e.target.value]}};r(t)}),[r,a]);return n().createElement(n().Fragment,null,n().createElement("input",So({type:"number"},e,{value:e.value[0],onChange:o,max:e.value[1]})),n().createElement("span",{className:"mx-1"},"to"),n().createElement("input",So({type:"number"},e,{value:e.value[1],onChange:i,min:e.value[0]})),e.unitElement)},Oo=function(e){var r=e.min,a=e.max,o=e.step,i=e.value,l=e.setValue,s=e.datatype,c=e.operator,u=e.unit,f=e.inputtype,d=(0,t.useCallback)((function(e){return l(e.target.value)}),[l]);if(s&&c){var p={className:"form-control form-control-sm",onChange:d,value:i,min:r,max:a};f&&(p.type=f),o&&(p.step=o);var m=u&&n().createElement("span",{className:"ms-1",title:"The unit"},u),h={boolean:{_default:null},integer:{_default:n().createElement(n().Fragment,null,n().createElement("input",So({},p,{type:"number",step:"1"})),m),range:n().createElement(Fo,So({unitElement:m},p,{step:"1"}))},double:{_default:n().createElement(n().Fragment,null,n().createElement("input",So({step:"0.001"},p,{type:"number"})),m),range:n().createElement(Fo,So({unitElement:m,step:"0.001"},p))},_default:{_default:n().createElement("input",p)}};if(h[s]){if(h[s][c]||null===h[s][c])return h[s][c];if(h[s]._default||null===h[s]._default)return h[s]._default}return h._default[c]?h._default[c]:h._default._default}};function _o(){return n().createElement("div",{className:"caosdb-f-query-cql-hint",title:"You are using the expert search mode. Enter a valid CQL Query."},"CQL")}function Lo(e){var r=e.tab,a=e.setActiveTab,o=e.isActiveTab,i=(0,t.useCallback)((function(){o||a(r)}),[r,a,o]),l="caosdb-f-query-tab"+(o?" active":"");return n().createElement("button",{type:"button",title:r.description,tabIndex:o?"-1":"0",className:l,onClick:o?void 0:i},r.label)}function zo(e){var r=e.filter,a=e.filterIdx,o=e.updateFilter,i=e.restoreOperator,l=e.restoreValue,s=ko((0,t.useState)(r.operator||fo[r.datatype][0]),2),c=s[0],u=s[1],f=ko((0,t.useState)(r.value||""),2),d=f[0],p=f[1],m=n().createElement(Oo,{datatype:r.datatype,operator:c,setValue:p,value:d,unit:r.unit,min:r.min,max:r.max,step:r.step,inputtype:r.inputtype});return(0,t.useEffect)((function(){i&&c!==i&&u(i)}),[i,c]),(0,t.useEffect)((function(){l&&d!==l&&p(l)}),[l,d]),(0,t.useEffect)((function(){c!==r.operator&&o(a,{restoreOperator:void 0,operator:c})}),[c,r.operator,a,o]),(0,t.useEffect)((function(){d!==r.value&&o(a,{restoreValue:void 0,value:d})}),[d,r.value,a,o]),n().createElement(n().Fragment,null,n().createElement("div",null,n().createElement("select",{className:"form-select form-select-sm",value:c,onChange:function(e){return u(e.target.value)}},fo[r.datatype].map((function(e,t){return n().createElement("option",{key:t},e)})))),n().createElement("div",{className:"d-flex"},m))}function To(e){var t=e.selected,r=e.filterDefinitions,a=e.onChange,o=e.title;return n().createElement("select",{title:o,className:"form-select form-select-sm",value:t,onChange:a},r.map((function(e,t){return n().createElement("option",{value:e.property,style:e.style,key:t},e.label||e.property)})))}function Po(e){var r=e.filterDefinitions,a=e.addFilter,o=(0,t.useCallback)((function(e){a(e.target.value)}),[a]);return n().createElement("div",null,n().createElement(To,{filterDefinitions:r.concat({property:"__add_filter__",label:"Add Filter",style:{display:"none"}}),selected:"__add_filter__",title:"Add Filter",onChange:o}))}function jo(e){var r=e.filterDefinitions,a=e.filterIdx,o=e.activeFilters,i=e.updateFilter,l=e.setProperty,s=e.removeFilter,c=o&&o[a],u=(0,t.useCallback)((function(e){l(a,e.target.value)}),[l,a]),f=(0,t.useCallback)((function(){return s(a)}),[s,a]);return n().createElement(n().Fragment,null,n().createElement("div",{className:"caosdb-f-query-filter-property-selector"},n().createElement(To,{filterDefinitions:r,selected:c.property,onChange:u})),n().createElement(zo,{restoreValue:c.restoreValue,restoreOperator:c.restoreOperator,updateFilter:i,filterIdx:a,filter:c}),n().createElement("div",{className:"text-end flex-grow-1"},n().createElement("button",{type:"button",className:"btn btn-sm btn-outline-secondary",onClick:f},"Remove Filter")))}function Do(e){var r=e.filterDefinitions,a=e.activeFilters,o=e.setActiveFilters,i=(0,t.useCallback)((function(e){o(a.filter((function(t,n){return n!==e})))}),[a,o]),l=(0,t.useCallback)((function(e,t){var n=[].concat(a);n[e]=wo(wo({},n[e]),t),o(n)}),[a,o]),s=(0,t.useCallback)((function(e,t){var n=r.filter((function(e){return e.property===t}))[0];l(e,{restoreValue:"",restoreOperator:fo[n.datatype][0],property:t,datatype:n.datatype,unit:n.unit,min:n.min,max:n.max,filter:n})}),[l,r]),c=(0,t.useCallback)((function(e){var t=r.filter((function(t){return t.property===e}))[0];o(a.concat({property:e,datatype:t.datatype,unit:t.unit,min:t.min,max:t.max,filter:t}))}),[a,o,r]);return n().createElement(n().Fragment,null,a.map((function(e,t){return n().createElement(jo,{key:t,filterIdx:t,filterDefinitions:r,activeFilters:a,setActiveFilters:o,updateFilter:l,setProperty:s,removeFilter:i})})),n().createElement("div",{className:"d-flex"},n().createElement(Po,{filterDefinitions:r,addFilter:c}),a.length>0&&n().createElement("button",{type:"submit",title:"Search with filters",className:"btn btn-primary btn-sm ms-auto"},"Search")))}function Ro(e){var r=e.filterDefinitions,a=e.activeFilters,o=e.setActiveFilters,i=ko((0,t.useState)(a.length>0),2),l=i[0],s=i[1],c=l?"Cancel Advanced Filtering":"Advanced Filtering";return n().createElement(n().Fragment,null,n().createElement("button",{type:"button",onClick:function(){return s(!l)},className:"btn ms-auto caosdb-f-query-filters-toggle",title:c},l?n().createElement("i",{className:"bi bi-x"}):n().createElement("i",{className:"bi bi-filter"})),l&&n().createElement("div",{className:"caosdb-f-query-tab-filters w-100"},n().createElement(Do,{filterDefinitions:r,activeFilters:a,setActiveFilters:o})))}function Mo(e){var r=e.tabs,a=e.setActiveTab,o=e.activeTab,i=e.activeFilters,l=e.setActiveFilters,s=(0,t.useMemo)((function(){return o&&o.filterDefinitions&&o.filterDefinitions.length>0}),[o]);return n().createElement("div",{className:"caosdb-f-query-tab-list d-flex flex-wrap"},r.map((function(e){return n().createElement(Lo,{isActiveTab:o.id===e.id,setActiveTab:a,key:e.label,tab:e})}))," ",s&&n().createElement(Ro,So({},o,{activeFilters:i,setActiveFilters:l})))}function Io(e){var t=e.isSubmitted,r=e.active;return t?n().createElement(je,{className:"align-self-center",size:"sm"}):n().createElement("button",{"aria-label":"search",title:"Search",type:"submit",disabled:!r},n().createElement("i",{className:"bi bi-search"}))}function Bo(e){var t=e.suggestion,r=e.isHighlighted,a=e.onMouseEnter;return n().createElement("li",{onMouseEnter:a,className:r?"highlight":""},t.original)}function qo(e){var t=e.suggestions,r=e.highlightIndex,a=e.selectSuggestion;return n().createElement(n().Fragment,null,t.map((function(e,t){return n().createElement(Bo,{onMouseEnter:function(){return a(t)},key:t,isHighlighted:r===t,suggestion:e})})))}function Uo(e){var r=e.unselectSuggestions,a=e.selectSuggestion,o=e.highlightIndex,i=e.suggestions,l=e.getInputRef,s=e.wordPos,c=e.word,u=e.xOffset,f=(0,t.useRef)(),d=n().createElement(qo,{selectSuggestion:a,highlightIndex:o,suggestions:i});return(0,t.useEffect)((function(){o>-1&&f.current.scroll(0,24*o-48)}),[o]),(0,t.useEffect)((function(){var e=l(),t=Ka()(e.current,s),n=e.current.getBoundingClientRect().width;if(t.left>n){var r=Ka()(e.current,s+c.length).left-t.left;f.current.style.marginLeft="".concat(n-r,"px")}else t.left>8&&(f.current.style.marginLeft="".concat(t.left-8,"px"))}),[c,l,s]),n().createElement("div",{onMouseLeave:r,style:{paddingLeft:u},className:"caosdb-f-query-form-sug-container"},n().createElement("ol",{ref:f,className:"caosdb-f-query-form-sug"},d))}function $o(e,t){var n,r,a,o,i;switch(t.type){case"onFocus":return wo(wo({},e),{},{refocus:!1,focus:!0});case"onBlur":return e.onClickValue?wo(wo({},e),{},{value:e.onClickValue,cursorPos:e.onClickCursorPos,onClickCursorPos:void 0,onClickValue:void 0,refocus:!0,open:!1}):wo(wo({},e),{},{focus:!1});case"onChange":return n=t.target.selectionEnd,r=t.target.value.slice(0,n).lastIndexOf(" ")+1,i=(o=(a=t.target.value.slice(r,n)).length>2)&&t.getSuggestionsCallback?t.getSuggestionsCallback(co(t.target.value),t.target.value,a):null,wo(wo({},e),{},{onClickValue:void 0,onClickCursorPos:void 0,highlightIndex:-1,cursorPos:n,cursorPosNoCompletion:n,wordPos:r,value:t.target.value,valueNoCompletion:t.target.value,refocus:!1,word:a,open:o,changeId:e.changeId+1|0,unresolvedSuggestions:i});case"resolveSuggestions":if(e.changeId===t.changeId)return wo(wo({},e),{},{suggestions:t.suggestions,unresolvedSuggestions:void 0});break;case"onArrowDown":if(e.open&&e.suggestions&&e.highlightIndex<e.suggestions.length-1){var l=e.highlightIndex+1,s=e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[l].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion),c=e.wordPos+e.suggestions[l].escaped.length;return wo(wo({},e),{},{cursorPos:c,value:s,highlightIndex:l})}break;case"unselectSuggestions":return wo(wo({},e),{},{onClickCursorPos:void 0,onClickValue:void 0});case"selectSuggestion":if(t.index>-1&&t.index<e.suggestions.length){var u=e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[t.index].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion)+" ",f=e.wordPos+e.suggestions[t.index].escaped.length+1;return wo(wo({},e),{},{onClickValue:u,onClickCursorPos:f})}break;case"restore":return wo(wo({},e),{},{value:t.value});case"onArrowUp":if(e.open&&e.highlightIndex>-1){var d=e.highlightIndex-1,p=d<0?e.valueNoCompletion:e.valueNoCompletion.slice(0,e.wordPos)+e.suggestions[d].escaped+e.valueNoCompletion.slice(e.cursorPosNoCompletion),m=d<0?e.cursorPosNoCompletion:e.wordPos+e.suggestions[d].escaped.length;return wo(wo({},e),{},{cursorPos:m,value:p,highlightIndex:d})}}return e}function Ho(e){var r=e.setQueryString,a=e.isCql,o=e.restoreQueryString,i=(0,t.useContext)(No),l=i.getSuggestionsCallback,s=i.isSubmitted,c=(0,t.useRef)(),u=(0,t.useRef)(),f=ko((0,t.useReducer)($o,{refocus:!1,value:"",focus:!1,open:!1,word:"",highlightIndex:-1,unresolvedSuggestions:null,suggestions:null}),2),d=f[0],p=f[1];(0,t.useEffect)((function(){r(d.value)}),[d.value,r]),(0,t.useEffect)((function(){o&&p({type:"restore",value:o})}),[o]);var m=(0,t.useCallback)((function(){p({type:"onFocus"})}),[]),h=(0,t.useCallback)((function(){p({type:"onBlur"})}),[]),g=(0,t.useCallback)((function(){p({type:"onArrowUp"})}),[]),v=(0,t.useCallback)((function(){p({type:"onArrowDown"})}),[]),b=(0,t.useCallback)((function(e){p({type:"onChange",target:e.target,getSuggestionsCallback:l})}),[l]),y=(0,t.useCallback)((function(e){return"ArrowDown"===e.key?(e.preventDefault(),v(e)):"ArrowUp"===e.key?(e.preventDefault(),g(e)):void 0}),[g,v]),x=(0,t.useCallback)((function(){p({type:"unselectSuggestions"})}),[]),w=(0,t.useCallback)((function(e){p({type:"selectSuggestion",index:e})}),[]),E="caosdb-f-query-form";d.open&&(E+=" open"),d.focus&&(E+=" focus"),(0,t.useEffect)((function(){if(d.unresolvedSuggestions){var e=d.changeId;d.unresolvedSuggestions.then((function(t){p({type:"resolveSuggestions",suggestions:t,changeId:e})}))}}),[d.unresolvedSuggestions,d.changeId]),(0,t.useEffect)((function(){c.current.setSelectionRange(d.cursorPos,d.cursorPos)}),[d.value,d.cursorPos]);var k=(0,t.useCallback)((function(){return c}),[c]);return(0,t.useEffect)((function(){d.refocus&&c.current.focus()}),[d]),n().createElement("div",{ref:u,className:E},n().createElement("div",{className:"d-flex"},a&&n().createElement(_o,null),n().createElement("input",{disabled:s,className:"flex-grow-1","aria-label":"enter search terms",name:"query",title:"Enter search terms",onFocus:m,onBlur:h,onKeyDown:y,onChange:b,value:d.value,ref:c}),n().createElement(Io,{active:d.value.length>0,isSubmitted:s})),d.open&&d.suggestions&&n().createElement(Uo,{unselectSuggestions:x,selectSuggestion:w,word:d.word,wordPos:d.wordPos,getInputRef:k,suggestions:d.suggestions,highlightIndex:d.highlightIndex,xOffset:a?44:0}))}function Wo(e){var r=e.submitCallback,a=e.tabs,o=e.defaultTab,i=e.getSuggestionsCallback,l=e.restoreCallback,s=e.storeCallback,c=e.restore?l(a):{},u=c.restoreQueryString,f=c.restoreActiveFilters,d=c.restoreActiveTab,p=ko((0,t.useState)(!1),2),m=p[0],h=p[1],g=ko((0,t.useState)(""),2),v=g[0],b=g[1],y=ko((0,t.useState)(d||a[o]),2),x=y[0],w=y[1],E=ko((0,t.useState)(f||[]),2),k=E[0],C=E[1],S=(0,t.useCallback)((function(e){e.preventDefault(),h(!0),s(x,k,v);var t=a.filter((function(e){return e.id===x.id}))[0]||{},n=co(v),o=n&&v.toUpperCase().trim().startsWith("SELECT"),i=n||!t.makeQuery?function(e){return e}:t.makeQuery,l=o?-1:void 0;return r(i(v,k),l)}),[a,x,k,v,r,s]),A=co(v),N=(0,t.useMemo)((function(){return{isSubmitted:m,queryString:v,getSuggestionsCallback:i}}),[v,i,m]),F=(0,t.useCallback)((function(e){w(e),C([])}),[C,w]);return n().createElement("form",{autoComplete:"off",onSubmit:S},n().createElement(No.Provider,{value:N},n().createElement(Ho,{restoreQueryString:u,isCql:A,setQueryString:b}),!A&&n().createElement(Mo,{tabs:a,activeTab:x,setActiveTab:F,activeFilters:k,setActiveFilters:C})))}Wo.AutoCompletion=so,Wo.defaultProps={submitCallback:function(e,t){console.log("submit query: ",e,t),setTimeout((function(){alert(e),window.location.href=window.location.href}),1e3)},tabs:(Ao=function(e){return[{property:e+"-text-property",datatype:"text"},{property:e+"-datetime-property",datatype:"datetime"},{property:e+"-integer-property",datatype:"integer"},{property:e+"-double-property",datatype:"double",min:"-50",max:"50",unit:"m"},{property:e+"-boolean-property",datatype:"boolean"},{property:\'"\'.concat(e,\'-reference-property"."sub-property"\'),label:"sub-property of ".concat(e,"-reference-property"),datatype:"text"}]},[vo("all",void 0,"All","Show all matching results",mo(""),Ao("all")),vo("dataset","Dataset","Dataset",void 0,mo("Dataset"),Ao("dataset")),vo("event","Event","Event",void 0,mo("Event"),Ao("event")),vo("person","Person","Person",void 0,mo("Person"),Ao("person"))]),defaultTab:0,getSuggestionsCallback:bo,restoreCallback:function(e){var t={restoreActiveTab:window.localStorage["query.activeTab"]&&JSON.parse(window.localStorage["query.activeTab"]),restoreActiveFilters:window.localStorage["query.activeFilters"]&&JSON.parse(window.localStorage["query.activeFilters"]),restoreQueryString:window.localStorage["query.queryString"]||""};return t.restoreActiveTab&&0===e.filter((function(e){return e.id===t.restoreActiveTab.id})).length?(window.localStorage.removeItem("query.activeTab"),window.localStorage.removeItem("query.activeFilters"),window.localStorage.removeItem("query.queryString"),{}):t},storeCallback:function(e,t,n){window.localStorage.removeItem("query.activeTab"),window.localStorage.removeItem("query.activeFilters"),window.localStorage.removeItem("query.queryString"),e&&(window.localStorage["query.activeTab"]=JSON.stringify(e)),t&&t.length>0&&(window.localStorage["query.activeFilters"]=JSON.stringify(t)),n&&n.length>0&&(window.localStorage["query.queryString"]=n)},restore:!1};var Vo=0,Go=void 0,Qo=function(e){"number"==typeof Go&&clearTimeout(Go);var t=e.getBoundingClientRect(),n=t.top,r=t.bottom;Vo===r-n?Go=setTimeout((function(){Go=void 0,window.pageYOffset>Vo?e.classList.add("condensed"):e.classList.remove("condensed")}),200):Vo=r-n},Yo=function(e){return(0,t.useEffect)((function(){return window.addEventListener("scroll",e.scrollHandler),function(){window.removeEventListener("scroll",e.scrollHandler)}}),[e.scrollHandler]),n().createElement(Qa,null,n().createElement(Wo,e))};function Ko(e){return Ko="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ko(e)}function Xo(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==Ko(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Ko(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===Ko(a)?a:String(a)),r)}var a}Yo.propTypes={scrollHandler:h().func};var Zo=new(function(){function e(t){var n=t.items,r=t.brand,a=t.user_component;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items=n||[],this.brand=r||Dr.name,this.update_listeners=[],this.user_component=a}var t,n;return t=e,(n=[{key:"registerUpdateListener",value:function(e){this.update_listeners.push(e)}},{key:"addLink",value:function(e){this.items.push(e),this.notifyUpdateListeners()}},{key:"notifyUpdateListeners",value:function(){this.update_listeners.forEach((function(e){return e()}))}}])&&Xo(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}())({items:[n().createElement(Vr.Link,{key:"0",href:"#action1"},"Home"),n().createElement(Vr.Link,{key:"1",href:"#action2"},"Link"),n().createElement(_r,{key:"2",title:"Link"},n().createElement(_r.Item,{href:"#action3"},"Action"),n().createElement(_r.Item,{href:"#action4"},"Another action"),n().createElement(_r.Divider,null),n().createElement(_r.Item,{href:"#action5"},"Something else here")),n().createElement(Vr.Link,{key:"3",href:"#",disabled:!0},"Link")],user_component:n().createElement(jr,null)}),Jo=function(){var e=(0,t.useRef)(),r=(0,t.useCallback)((function(){Qo(e.current)}),[e]);return n().createElement(Va,{bg:"light",expand:"lg"},n().createElement(Qa,{fluid:!0},n().createElement("span",{className:"d-lg-none d-inline"},Zo.brand),n().createElement(Va.Toggle,{"aria-controls":"navbarScroll"}),n().createElement(Va.Collapse,{id:"navbarScroll"},n().createElement(Va.Brand,{className:"d-none d-lg-inline"},Zo.brand),n().createElement(Vr,{className:"me-auto my-2 my-lg-0"},Zo.items.map((function(e,t){return n().createElement("span",{key:t},e)}))),n().createElement(Vr,{ref:e,className:"caosdb-f-query-panel me-lg-2 full"},n().createElement(Yo,{restore:!0,scrollHandler:r})),n().createElement(Vr,null,Zo.user_component))))},ei=function(){return n().createElement("header",{className:"shadow-sm bg-light"},n().createElement(Jo,null))};function ti(e){return ti="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ti(e)}function ni(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,(void 0,a=function(e,t){if("object"!==ti(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==ti(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key),"symbol"===ti(a)?a:String(a)),r)}var a}function ri(e,t,n){return t&&ni(e.prototype,t),n&&ni(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var ai=new(ri((function e(t){var n=t.items,r=t.copyRight;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.items=n,this.copyRight=r})))({items:[n().createElement("a",{key:"0",className:"nav-link px-2",href:"https://www.gnu.org/licenses/agpl-3.0.en.html"},"License (AGPL-v3)"),n().createElement("a",{key:"1",className:"nav-link px-2",href:"https://gitlab.com/caosdb"},"Sources"),n().createElement("a",{key:"3",className:"nav-link px-2",href:"https://docs.indiscale.com/"},"Documentation")],copyRight:"© 2021 IndiScale GmbH"}),oi=function(){return n().createElement("footer",null,n().createElement("div",{className:"footer-border"}),n().createElement("div",{className:"footer-body"},n().createElement("div",{className:"container py-3 my-4"},n().createElement("ul",{className:"nav align-items-center justify-content-center pb-3 mb-3"},ai.items.map((function(e,t){var r=0===t?null:n().createElement("li",{className:"nav-item px-1"},"•");return n().createElement(n().Fragment,{key:t},r,n().createElement("li",{className:"nav-item"},e))}))),n().createElement("p",{className:"text-center"},ai.copyRight))))};function ii(e){return ii="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ii(e)}function li(){li=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==ii(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function si(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function ci(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ui(e){var r,a,o=e.loading||n().createElement(je,null),i=(r=(0,t.useState)(o),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return ci(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ci(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=i[0],s=i[1];return(0,t.useEffect)((function(){var t=function(){var e,t=(e=li().mark((function e(t,r,a){var o,i;return li().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=void 0,e.prev=1,e.next=4,t;case 4:if(o=e.sent,!r){e.next=9;break}return e.next=8,r(o);case 8:o=e.sent;case 9:e.next=21;break;case 11:if(e.prev=11,e.t0=e.catch(1),!a){e.next=19;break}return e.next=16,a(e.t0);case 16:o=e.sent,e.next=21;break;case 19:i=e.t0&&e.t0.message?e.t0.message:e.t0,o=n().createElement("span",null,"An unhandled error occured: ",i);case 21:s(o);case 22:case"end":return e.stop()}}),e,null,[[1,11]])})),function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){si(o,r,a,i,l,"next",e)}function l(e){si(o,r,a,i,l,"throw",e)}i(void 0)}))});return function(e,n,r){return t.apply(this,arguments)}}();t(e.promise,e.then,e.catch)}),[e.promise,e.then,e.catch,s]),l}function fi(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var di=function(e){var r,a,o=e.name,i=e.value,l=e.icons,s=e.style,c=e.color,u=e.readOnly,f=e.onChange,d=e.onBlur,p=e.setValue,m=e.title,h=(r=(0,t.useState)(i||"false"),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(r,a)||function(e,t){if(e){if("string"==typeof e)return fi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?fi(e,t):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=h[0],v=h[1];s=s||"check";var b,y={x:{true:"bi bi-x-square"+(c=c||{check:{true:" text-success",false:" text-body",partial:" color-light-green"},"check-fill":{true:" text-success",false:" text-body",partial:" color-light-green"},x:{true:" text-danger",false:" text-body",partial:" text-warning"},"x-fill":{true:" text-danger",false:" text-body",partial:" text-warning"}}[s]).true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square"+c.partial},"x-fill":{true:"bi bi-x-square-fill"+c.true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square-fill"+c.partial},check:{true:"bi bi-check-square"+c.true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square"+c.partial},"check-fill":{true:"bi bi-check-square-fill"+c.true,false:"bi bi-square"+c.false,partial:"bi bi-slash-square-fill"+c.partial}},x={partial:"false",true:"false",false:"true"},w={};u||(b=n().createElement("input",{className:"caosdb-check-box-input",onChange:f,tabIndex:"-1",type:"hidden",name:o,value:g}),w.onClick=function(){p(o,x[g]),v(x[g])},w.onKeyDown=function(e){"Space"===e.code&&(p(o,x[g]),v(x[g]),e.preventDefault())},w.tabIndex="0",w.onBlur=d);var E=(l=l||{})[g]||n().createElement("i",{className:"ms-1 caosdb-checkbox-icon "+y[s][g]}),k="caosdb-checkbox d-flex align-items-center";return u&&(k+=" read-only"),n().createElement("span",{title:m,className:k,role:"checkbox","aria-checked":g},b,n().createElement("span",w,E))};di.propTypes={name:h().string.isRequired,value:h().oneOf(["true","false"]),icons:h().object,style:h().string,color:h().object,readOnly:h().bool,onChange:h().func,onBlur:h().func,setValue:h().func,title:h().string};var pi=function(e){var t=e.className,r=e.children;return t=t||"",n().createElement("div",{className:"card mt-3 rounded shadow ".concat(t)},r)};function mi(e){if(!e||"undefined"==typeof window)return;const t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}pi.propTypes={className:h().string,children:h().oneOfType([h().arrayOf(h().node),h().node])},pi.Body=function(e){var t=e.children;return n().createElement("div",{className:"card-body"},t)},pi.Body.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},pi.Footer=function(e){var t=e.children;return n().createElement("div",{className:"card-footer d-flex justify-content-between"},t)},pi.Footer.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},pi.Title=function(e){var t=e.children;return n().createElement("h3",{className:"card-title"},t)},pi.Title.propTypes={children:h().oneOfType([h().arrayOf(h().node),h().node])},pi.Header=function(e){var t=e.title,r=e.children;return t=t?n().createElement(pi.Title,null,t):void 0,n().createElement("div",{className:"card-header"},t,r)},pi.Header.propTypes={title:h().node,children:h().oneOfType([h().arrayOf(h().node),h().node])};var hi=function(){return hi=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},hi.apply(this,arguments)};function gi(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function vi(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function l(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function bi(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!((a=(a=i.trys).length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}function yi(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}var xi=function(e){if(e)return e<1024?e+" Bytes":e<1048576?(e/1024).toFixed(2)+" KB":e<1073741824?(e/1024/1024).toFixed(2)+" MB":e<1099511627776?(e/1024/1024/1024).toFixed(2)+" GB":(e/1024/1024/1024/1024).toFixed(2)+" TB"},wi={fullInfoLayer:{name:"Nombre: ",size:"Tamaño: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Subiendo",success:"Éxito",valid:"Válido",denied:"No válido",error:"Error",aborted:"Anulado"}},Ei={fullInfoLayer:{name:"Name: ",size:"Size: ",type:"Type: "},status:{preparing:"Preparing",uploading:"Uploading",success:"Success",valid:"Valid",denied:"Not valid",error:"Error",aborted:"Aborted"}},ki={fullInfoLayer:{name:"Le nom: ",size:"Le taille: ",type:"Le type: "},status:{preparing:"préparer",uploading:"En cours",success:"Succès",valid:"Valide",denied:"Refusé",error:"Erreur",aborted:"Interrompu"}},Ci={fullInfoLayer:{name:"Nome: ",size:"Dimensione: ",type:"Tipo: "},status:{preparing:"preparazione",uploading:"In corso",success:"Successo",valid:"Valido",denied:"Non válido",error:"Errore",aborted:"Interrotto"}},Si={fullInfoLayer:{name:"Nome: ",size:"Tamanho: ",type:"Tipo: "},status:{preparing:"Preparando",uploading:"Enviando",success:"Êxito",valid:"válido",denied:"Negado",error:"Erro",aborted:"Abortado"}},Ai={fullInfoLayer:{name:"Имя: ",size:"Размер: ",type:"Tип: "},status:{preparing:"подготовка",uploading:"Загрузка",success:"успех",valid:"годный",denied:"выкинутый",error:"ошибка",aborted:"прерванный"}},Ni={fullInfoLayer:{name:"文档名称: ",size:"尺寸: ",type:"文件类型: "},status:{preparing:"预加载",uploading:"上传",success:"成功",valid:"接受的文件",denied:"被拒绝的文件",error:"错误",aborted:"中止"}},Fi={fullInfoLayer:{name:"文檔名稱: ",size:"文件大小: ",type:"文件類型: "},status:{preparing:"預加載",uploading:"上傳",success:"成功",valid:"有效文件",denied:"無效文件",error:"錯誤",aborted:"中止"}},Oi=function(e){switch(e){case"ES-es":return wi;case"EN-en":default:return Ei;case"FR-fr":return ki;case"IT-it":return Ci;case"PT-pt":return Si;case"RU-ru":return Ai;case"ZH-cn":return Ni;case"ZH-hk":return Fi}},_i={defaultLabel:"Suelta tus archivos aquí",uploadingMessage:function(e){return"Subiendo ".concat(e," archivos")},uploadFinished:function(e,t){return"Archivos subidos: ".concat(e,", Archivos rechazados: ").concat(t)},noFilesMessage:"No hay archivos válidos pendientes por subir",footer:{acceptAll:"Todos los tipos de archivo aceptados",acceptCustom:function(e){return"Tipo(s) de archivo permitidos: ".concat(e)}},header:{uploadFilesMessage:"Subir",maxSizeMessage:function(e){return"Tam. máximo ".concat(e)},validFilesMessage:function(e,t){return"Archivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"El archivo se subió correctamente",fakeUploadError:"Error al subir el archivo"},Li={defaultLabel:"Drop your files here",uploadingMessage:function(e){return"Uploading ".concat(e," files")},uploadFinished:function(e,t){return"Uploaded files: ".concat(e,", Rejected files: ").concat(t)},noFilesMessage:"There is no missing valid file to upload",footer:{acceptAll:"All file types accepted",acceptCustom:function(e){return"Allowed types: ".concat(e)}},header:{uploadFilesMessage:"Upload files",maxSizeMessage:function(e){return"Max file size: ".concat(e)},validFilesMessage:function(e,t){return"Files ".concat(e,"/").concat(t)}},fakeuploadsuccess:"File was successfuly uploaded",fakeUploadError:"Error on uploading. Please try again later."},zi={defaultLabel:"Déposez vos fichiers ici",uploadingMessage:function(e){return"Envoi de ".concat(e," fichiers")},uploadFinished:function(e,t){return"Fichiers téléchargés : ".concat(e,", Fichiers rejetés: ").concat(t)},noFilesMessage:"Aucun fichier valide ne manque",footer:{acceptAll:"Tous types de fichiers acceptés ",acceptCustom:function(e){return"Types de fichier: ".concat(e)}},header:{uploadFilesMessage:"Envoyer",maxSizeMessage:function(e){return"Taille maximale ".concat(e)},validFilesMessage:function(e,t){return"Fichiers ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Le fichier a été téléchargé avec succès",fakeUploadError:"Erreur lors du téléchargement "},Ti={defaultLabel:"Trascina qui i tuoi file",uploadingMessage:function(e){return"Caricamento di ".concat(e," file")},uploadFinished:function(e,t){return"File caricati: ".concat(e,", File rifiutati: ").concat(t)},noFilesMessage:"Nessun file valido in attesa di essere caricato",footer:{acceptAll:"Tutti i tipi di file sono accettati",acceptCustom:function(e){return"Tipi di file consentiti: ".concat(e)}},header:{uploadFilesMessage:"Caricamento",maxSizeMessage:function(e){return"Dimensione massima ".concat(e)},validFilesMessage:function(e,t){return"File ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Il file è stato caricato con successo ",fakeUploadError:"Errore di caricamento del file"},Pi={defaultLabel:"Solte seus arquivos aqui ",uploadingMessage:function(e){return"Enviando ".concat(e," arquivos")},uploadFinished:function(e,t){return"Arquivos enviados: ".concat(e,", Arquivos rejeitados: ").concat(t)},noFilesMessage:"Nenhum arquivo válido está faltando para enviar",footer:{acceptAll:"Todos os tipos de arquivo são aceitos",acceptCustom:function(e){return"Tipos permitidos: ".concat(e)}},header:{uploadFilesMessage:"Enviar",maxSizeMessage:function(e){return"Tamanho máximo: ".concat(e)},validFilesMessage:function(e,t){return"Arquivos ".concat(e,"/").concat(t)}},fakeuploadsuccess:"O arquivo foi enviado com sucesso",fakeUploadError:"Erro ao enviar"},ji={defaultLabel:"Перетащите сюда свои файлы.",uploadingMessage:function(e){return"Выгрузка ".concat(e," файлов")},uploadFinished:function(e,t){return"Загружено файлов: ".concat(e,", отклоненных файлов: ").concat(t)},noFilesMessage:"Действительный файл не отсутствует для загрузки",footer:{acceptAll:"Принимаются все типы файлов ",acceptCustom:function(e){return"Допустимые типы: ".concat(e)}},header:{uploadFilesMessage:"Отправить",maxSizeMessage:function(e){return"макс размер: ".concat(e)},validFilesMessage:function(e,t){return"Файлы ".concat(e,"/").concat(t)}},fakeuploadsuccess:"Файл был успешно загружен",fakeUploadError:"Ошибка при загрузке"},Di={defaultLabel:"将您的文件放在这里",uploadingMessage:function(e){return"上传 ".concat(e," 个文件")},uploadFinished:function(e,t){return"上传文件:".concat(e,",拒绝文件:").concat(t)},noFilesMessage:"没有缺少要加载的有效文件",footer:{acceptAll:"接受所有文件类型",acceptCustom:function(e){return"允许的类型: ".concat(e)}},header:{uploadFilesMessage:"上传文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return"文档 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上传",fakeUploadError:"上传时出错"},Ri={defaultLabel:"把你的文件放在這裡 ",uploadingMessage:function(e){return"上傳".concat(e,"個文件")},uploadFinished:function(e,t){return"上傳文件: ".concat(e,", 拒絕的文件:").concat(t)},noFilesMessage:"沒有缺少要上傳的有效文件",footer:{acceptAll:"接受所有文件類型",acceptCustom:function(e){return"允許的類型:".concat(e)}},header:{uploadFilesMessage:"上傳文件",maxSizeMessage:function(e){return"最大文件大小:".concat(e)},validFilesMessage:function(e,t){return" 文件 ".concat(e,"/").concat(t)}},fakeuploadsuccess:"文件已成功上傳",fakeUploadError:"上傳時出錯"},Mi=function(e){switch(e){case"ES-es":return _i;case"EN-en":default:return Li;case"FR-fr":return zi;case"IT-it":return Ti;case"PT-pt":return Pi;case"RU-ru":return ji;case"ZH-cn":return Di;case"ZH-hk":return Ri}},Ii={"ES-es":{maxSizeError:function(e){return"El archivo es muy grande. El tam. máximo es ".concat(xi(e))},acceptError:"Tipo de archivo no permitido",maxFileCount:function(e){return"Cantidad máxima de archivos (".concat(e,") alcanzada")}},"EN-en":{maxSizeError:function(e){return"File is too big. Max file size allowed is ".concat(xi(e))},acceptError:"File type is not allowed",maxFileCount:function(e){return"Max amount of files (".concat(e,") has been reached")}},"FR-fr":{maxSizeError:function(e){return"Le fichier est très volumineux. Le tam. le maximum est de ".concat(xi(e))},acceptError:"Type de fichier illégal ",maxFileCount:function(e){return"Limite de fichiers atteinte (".concat(e,")")}},"IT-it":{maxSizeError:function(e){return"Il file è molto grande. Il tam. il massimo è ".concat(xi(e))},acceptError:"Tipo di file illegale",maxFileCount:function(e){return"Numero massimo di file (".concat(e,") raggiunto")}},"PT-pt":{maxSizeError:function(e){return"O arquivo é muito grande. O tamanho máximo de arquivo permitido é ".concat(xi(e))},acceptError:"O tipo de arquivo não é permitido ",maxFileCount:function(e){return"Quantidade máxima de arquivos (".concat(e,") alcançada")}},"RU-ru":{maxSizeError:function(e){return"Файл слишком большой. Максимально допустимый размер файла - ".concat(xi(e))},acceptError:"Тип файла не разрешен",maxFileCount:function(e){return"Достигнуто максимальное количество файлов (".concat(e,")")}},"ZH-cn":{maxSizeError:function(e){return"文件太大。 允许的最大文件大小为 ".concat(xi(e))},acceptError:"文件类型不允许",maxFileCount:function(e){return"已达到最大文件数 (".concat(e,")")}},"ZH-hk":{maxSizeError:function(e){return"文件太大。 允許的最大文件大小為 ".concat(xi(e))},acceptError:"文件類型不允許",maxFileCount:function(e){return"已達到最大文件數 (".concat(e,")")}}},Bi=function(e,t,n){return new Promise((function(r,a){try{var o=new FileReader;o.onprogress=function(){null==t||t()},o.onerror=function(){null==n||n()},o.onload=function(){r(o.result)},o.readAsDataURL(e)}catch(e){a(void 0)}}))};function qi(e){return new Promise((function(t,n){if(e&&0!==e.length)try{var r=new Image;r.src=e,r.onerror=function(e){n("landscape")},r.onload=function(){var e=r.width,n=r.height;t(e>n?"landscape":"portrait")}}catch(e){n("landscape")}else n("landscape")}))}var Ui="https://user-images.githubusercontent.com/43678736/132086625-1b8f2652-1de0-4475-8c12-7da4a9973ffb.png",$i="https://user-images.githubusercontent.com/43678736/132086666-ab3c505d-b2c0-4177-9a06-aed5d9c39ee4.png",Hi=function(e){var t=/(?:\\.([^.]+))?$/.exec(e);return t?t[1]:""},Wi="octet",Vi=function(e){if(!e||!e.includes("/"))return Wi;var t=e.split("/")[0],n=e.split("/")[1];switch(t){case"application":return function(e){switch(e){case"x-abiword":case"abiword":return"abw";case"x-freearc":case"freearc":return"arc";case"vnd.amazon.ebook":return"azw";case"octet-stream":return"octet";case"x-bzip":case"bzip":return"bz";case"x-bzip2":case"bzip2":return"bz2";case"x-cdf":return"cda";case"msaccess":return"accdb";case"csh":case"x-csh":return"csh";case"vnd.ms-fontobject":return"eot";case"epub+zip":return"epub";case"gzip":return"gzip";case"java-archive":return"jar";case"x-javascript":return"javascript";case"json":return"json";case"ld+json":return"jsonld";case"vnd.apple.installer+xml":return"mpkg";case"ogg":return"ogx";case"vnd.rar":return"rar";case"rtf":return"rtf";case"x-sh":case"sh":return"sh";case"x-shockwave-flash":return"swf";case"x-tar":return"tar";case"x-httpd-php":return"php";case"vnd.visio":return"vsd";case"xhtml+xml":return"xhtml";case"xml":return"xml";case"vnd.mozilla.xul+xml":return"xul";case"vnd.openxmlformats-officedocument.wordprocessingml.document":case"msword":return"docx";case"vnd.openxmlformats-officedocument.spreadsheetml.sheet":return"xlsx";case"vnd.openxmlformats-officedocument.presentationml.presentation":case"vnd.ms-powerpoint":return"pptx";case"vnd.oasis.opendocument.presentation":return"odp";case"vnd.oasis.opendocument.text":return"odt";case"vnd.oasis.opendocument.spreadsheet":return"ods";case"zip":case"x-zip-compressed":return"zip";case"pdf":return"pdf";default:return Wi}}(n);case"audio":return function(e){switch(e){case"aac":return"aac";case"midi":case"x-midi":return"midi";case"mpeg":return"mpeg";case"ogg":return"oga";case"opus":return"opus";case"wav":return"wav";case"webm":return"webm";case"wma":return"wma";default:return Wi}}(n);case"video":return function(e){switch(e){case"x-msvideo":case"msvideo":case"avi":return"avi";case"mp4":return"mp4";case"mpeg":return"mpeg";case"ogg":return"ogv";case"mp2t":return"mp2t";case"wmv":return"wmv";case"webm":return"webm";default:return Wi}}(n);case"text":return function(e){switch(e){case"css":return"css";case"csv":return"csv";case"html":return"html";case"calendar":return"icalendar";case"javascript":case"x-javascript":return"javascript";case"plain":return"text";case"xml":return"xml";default:return Wi}}(n);case"image":return function(e){switch(e){case"bmp":return"bmp";case"gif":return"gif";case"jpg":case"jpeg":return"jpeg";case"png":return"png";case"tiff":return"tiff";case"webp":return"webp";default:return Wi}}(n);case"font":return function(e){switch(e){case"otf":return"otf";case"ttf":return"ttf";case"woff":case"woff2":return"woff";default:return Wi}}(n);default:return Wi}},Gi=function(e){var t="octet";return e&&""!==e&&(e.includes("zip")||e.includes("rar")?t="zip":e.includes("doc")?t="docx":e.includes("xls")?t="xlsx":e.includes("drawio")?t="drawio":e.includes("psd")?t="psd":e.includes("csv")?t="csv":"jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e?t="typescript":"sass"!==e&&"scss"!==e||(t="sass")),t},Qi=function(e){var t="text";return e&&""!==e&&("jsx"===e?t="react":"py"===e?t="python":"vue"===e?t="vue":"java"===e?t="java":"ts"===e||"tsx"===e?t="typescript":"js"===e?t="javascript":"xml"===e?t="xml":"php"===e&&(t="php")),t},Yi={aac:"https://user-images.githubusercontent.com/43678736/132086518-7026d4f1-ea16-4ed0-89fd-37c1aa8ac3ed.png",accdb:"https://user-images.githubusercontent.com/43678736/132086520-9bc6aa3b-51c9-4da2-9ef7-349162b86d0b.png",abw:"https://user-images.githubusercontent.com/43678736/132086519-863c63b4-917e-4471-94ff-7e15651cc14b.png",arc:"https://user-images.githubusercontent.com/43678736/132086621-3b95fb64-2533-4ccc-abcd-bd2beba572e9.png",avi:"https://user-images.githubusercontent.com/43678736/132086521-dbd6cf0d-d4d7-4b92-bb26-17e8a51a9383.png",azw:"https://user-images.githubusercontent.com/43678736/132086522-070f48e8-78a8-4294-8dbb-aab81525e164.png",octet:$i,bmp:"https://user-images.githubusercontent.com/43678736/132086595-90ab7f90-f87e-4900-94d9-d0b26745df48.png",bz:"https://user-images.githubusercontent.com/43678736/132086597-e285ad5c-613a-4679-a270-493e5be4ffd9.png",bz2:"https://user-images.githubusercontent.com/43678736/132086598-623c410a-084a-4395-a448-211b2ff61cfe.png",cda:"https://user-images.githubusercontent.com/43678736/132086600-8b70a007-512d-4252-9c66-eabd3ddd6573.png",csh:"https://user-images.githubusercontent.com/43678736/132086601-e62e5d1a-d8a2-4475-a14f-85922cec9272.png",css:"https://user-images.githubusercontent.com/43678736/132086602-4c772934-f608-4f01-8459-c4622cee8ad5.png",csv:"https://user-images.githubusercontent.com/43678736/132086604-b5b019fe-572e-477e-92c2-3769a48a1304.png",docx:"https://user-images.githubusercontent.com/43678736/132086606-715ccb66-4702-4f7d-9b09-ac93ba17b643.png",drawio:"https://user-images.githubusercontent.com/43678736/132086608-bcae9d57-8e54-488c-90c4-4952ae530b5e.png",eot:"https://user-images.githubusercontent.com/43678736/132086618-397d6bd2-9fda-43ed-a135-cb40388c35af.png",epub:"https://user-images.githubusercontent.com/43678736/132086620-2586ba40-c583-4589-b1a4-8bb5b258b44d.png",gzip:"https://user-images.githubusercontent.com/43678736/132086624-89141a46-64e4-4fa0-bf69-54a0eb4d48c9.png",gif:"https://user-images.githubusercontent.com/43678736/132086622-af705a0c-2b25-4ba7-8ab6-bd69ec97f7e2.png",html:Ui,icalendar:"https://user-images.githubusercontent.com/43678736/132086626-38699705-1e6f-4bca-984b-03167b236faa.png",jar:"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",jpeg:"https://user-images.githubusercontent.com/43678736/132086653-0487e7e2-1ee3-49e2-8cfe-3e20f1f7490a.png",javascript:"https://user-images.githubusercontent.com/43678736/132086652-4562942e-aaea-466c-968f-380fffabf3f9.png",json:"https://user-images.githubusercontent.com/43678736/132086656-6e96c815-e4e2-4ffd-9d71-57e9cc2450bc.png",jsonld:"https://user-images.githubusercontent.com/43678736/132086658-5d27d3c2-394f-43fb-b512-9b414a257875.png",midi:"https://user-images.githubusercontent.com/43678736/132086659-98f3ef6e-b9f3-4b6d-b18f-469b5334ba27.png",mp3:"https://user-images.githubusercontent.com/43678736/132086661-a5484553-06c7-4ffa-a8f9-96b57b1b0344.png",mp4:"https://user-images.githubusercontent.com/43678736/132086662-05ad1597-d5e5-4efa-833e-2876e966a745.png",mpeg:"https://user-images.githubusercontent.com/43678736/132086663-90c58955-f7fb-4bdb-ac53-92667d16d4a3.png",mpkg:"https://user-images.githubusercontent.com/43678736/132086664-9a7530e7-6d78-4ef3-a176-20cf7f57b555.png",mp2t:$i,odp:"https://user-images.githubusercontent.com/43678736/132086667-6c7dcbcc-8d83-41a2-8e0a-85b09e2791ae.png",ods:"https://user-images.githubusercontent.com/43678736/132086668-9f246e91-cf2e-49cf-9617-e1fbb71abbbb.png",odt:"https://user-images.githubusercontent.com/43678736/132086669-46113762-84d1-4b32-9441-b0138ce17a5d.png",oga:"https://user-images.githubusercontent.com/43678736/145835364-2054509d-3448-4d34-921f-73dd6e297fc7.png",ogv:"https://user-images.githubusercontent.com/43678736/145835367-19172bf8-cd5a-4cbe-b512-d0de1d91f269.png",ogx:"https://user-images.githubusercontent.com/43678736/145835373-a57ef0f5-3968-483b-9f55-6d67e7f1dcea.png",opus:"https://user-images.githubusercontent.com/43678736/132086670-0f96e770-cedc-4635-a5f9-cf97894c1d7a.png",otf:"https://user-images.githubusercontent.com/43678736/132086671-02ad35ef-ec3a-4a65-abd5-5bf794dfcf7b.png",png:"https://user-images.githubusercontent.com/43678736/132086674-fdb56d02-5845-49b7-8462-6357bc963464.png",pdf:"https://user-images.githubusercontent.com/43678736/132086672-3a856fda-823d-4997-b802-c7c640e6ef44.png",php:"https://user-images.githubusercontent.com/43678736/132086673-0c4409ab-754e-4619-8cfa-179d0ccf1bd9.png",pptx:"https://user-images.githubusercontent.com/43678736/132086675-c879645d-acb4-41a6-ab3c-4e6c2048badb.png",psd:"https://user-images.githubusercontent.com/43678736/132086685-4e327c4c-a409-4b83-b36a-8d88936b314b.png",rar:"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",rtf:"https://user-images.githubusercontent.com/43678736/132086693-9d43571e-0c86-438f-b247-e2cb42e19e06.png",sass:"https://user-images.githubusercontent.com/43678736/132086694-4e661d6a-1118-441e-8bc3-c52fcb2133b6.png",sh:"https://user-images.githubusercontent.com/43678736/132086697-1d82d724-35b6-4f06-847a-3c59a5deda6e.png",swf:"https://user-images.githubusercontent.com/43678736/132086698-19384230-dbd7-4e05-bc69-ef4537b6aae3.png",tar:"https://user-images.githubusercontent.com/43678736/132086689-fe1fef9f-d2db-455b-8f4b-09acd095f571.png",tiff:"https://user-images.githubusercontent.com/43678736/132086700-c23461c8-6819-46e1-aecd-0a1f8d3507bb.png",ttf:"https://user-images.githubusercontent.com/43678736/132086701-c8044c09-8d95-4af1-9410-66761001d7da.png",typescript:"https://user-images.githubusercontent.com/43678736/132086702-59294337-ed99-4302-badd-316b2c1ff62f.png",text:"https://user-images.githubusercontent.com/43678736/132086699-5993a482-04f4-4915-b105-9037f527cf61.png",vsd:"https://user-images.githubusercontent.com/43678736/132086704-8fd51e7c-afa2-47a3-ab2f-d0bcd0ecae9f.png",wav:"https://user-images.githubusercontent.com/43678736/132086706-22f805d0-39d4-494b-824e-47dc75d05eb7.png",weba:"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",webm:"https://user-images.githubusercontent.com/43678736/132086707-e61a84de-d396-4dbf-8d1b-1d6ee19e1ac8.png",webp:"https://user-images.githubusercontent.com/43678736/132086708-21d096dd-7148-40aa-97f1-cbb099339740.png",woff:"https://user-images.githubusercontent.com/43678736/132086711-1524a3e7-3e33-4822-a34f-ff3235404045.png",wma:"https://user-images.githubusercontent.com/43678736/132086709-811d4e90-3cfa-4044-a956-aeda9c67fc92.png",wmv:"https://user-images.githubusercontent.com/43678736/132086710-c5479c6c-0249-4542-adad-48b0ef40b775.png",xhtml:Ui,xlsx:"https://user-images.githubusercontent.com/43678736/132086712-17e2c491-f6e4-4586-aef6-06bcc5f4b0e5.png",xml:"https://user-images.githubusercontent.com/43678736/132086715-204b5a8b-9c5a-4bac-8294-9237ebc16089.png",xul:"https://user-images.githubusercontent.com/43678736/132086716-64511d20-58cb-45a8-85df-f4d9408b469d.png",zip:"https://user-images.githubusercontent.com/43678736/132086718-a8499333-6282-4820-aa1f-4d133eb54648.png",sevenzip:"https://user-images.githubusercontent.com/43678736/132086517-72a51a12-e403-4675-bfd7-22c23affa730.png",python:"https://user-images.githubusercontent.com/43678736/132086688-8e82fae4-3a9b-49c0-bf99-77189525514c.png",java:"https://user-images.githubusercontent.com/43678736/132086650-f1166246-b361-4c30-a04e-9781c555d14a.png",react:"https://user-images.githubusercontent.com/43678736/132086691-d472576b-ec6a-4332-acd2-dd6a00b72952.png",vue:"https://user-images.githubusercontent.com/43678736/132086705-33294da1-5c0f-49f7-b890-e4857cec0a6d.png",fallBack:$i},Ki=function(){function e(e){var t=e.id,n=e.file,r=e.name,a=e.size,o=e.type,i=e.imageUrl,l=e.valid,s=e.errors,c=e.uploadMessage,u=e.uploadStatus,f=e.progress,d=e.xhr,p=e.extraData,m=e.extraUploadData,h=e.serverResponse,g=e.downloadUrl,v=e.videoUrl;this.id=t,this.file=n,this.name=r,this.size=a,this.type=o,this.imageUrl=i,this.valid=l,this.errors=s,this.uploadStatus=u,this.uploadMessage=c,this.progress=f,this.xhr=d,this.extraData=p,this.extraUploadData=m,this.serverResponse=h,this.downloadUrl=g,this.videoUrl=v}return e.toExtFile=function(e){for(var t={},n=Object.keys(e),r=Object.values(e),a=0;a<r.length;a++){var o=r[a],i=n[a];void 0!==o&&(t[i]=o)}return t},e.prototype.toExtFile=function(){return e.toExtFile(this)},e}(),Xi=function(){return Xi=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},Xi.apply(this,arguments)};function Zi(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function l(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}s((r=r.apply(e,t||[])).next())}))}function Ji(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!((a=(a=i.trys).length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(6===l[0]&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}function el(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}var tl=function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.setFileList=function(t,n){return t?(e.fileLists[t]=el([],n,!0),t):0},e.createFileListMap=function(){var t=e.getNextId();return e.fileLists[t]=[],t},e.removeFileListMap=function(t){if(!t)return 0;try{return e.fileLists[t]=void 0,t}catch(e){return 0}},e.getExtFileInstanceList=function(t){try{if(!t)return;return e.fileLists[t]}catch(e){return}},e.setFileListMapPreparing=function(t,n,r,a){if("number"==typeof t||"string"==typeof t)try{var o,i=el([],n,!0);return a&&r&&(i=i.filter((function(e){return e.valid}))),o=(i=r?i.map((function(e){return"success"!==e.uploadStatus&&e.valid?Xi(Xi({},e),{uploadStatus:"preparing"}):Xi({},e)})):i.map((function(e){return"success"!==e.uploadStatus?Xi(Xi({},e),{uploadStatus:"preparing"}):Xi({},e)}))).map((function(e){return new Ki(e)})),e.setFileList(t,o),o}catch(e){return}},e.setFileListMapPreparing2=function(t,n,r,a){return e.setFileList(t,n.map((function(e){return new Ki(Xi(Xi({},e),{uploadStatus:"preparing"}))}))),e.getExtFileInstanceList(t)},e.nextId=0,e.fileLists={},e}(),nl=(function(){function e(){}e.createFile=function(e,t,n){var r=new File([],e,{type:n});return Object.defineProperty(r,"size",{get:function(){return t}}),r},e.create_aac=function(t){return e.createFile("acc_audio-file-with-large-name.aac",t||3516516,"audio/aac")},e.create_abw=function(t){return e.createFile("abiword-file-with-large-name.abw",t||3516516,"application/x-abiword")},e.create_freearc=function(t){return e.createFile("freearc-file-with-large-name.arc",t||3516516,"application/x-freearc")},e.create_avi=function(t){return e.createFile("avi-file-with-large-name.avi",t||3516516,"video/x-msvideo")},e.create_azw=function(t){return e.createFile("amazon_kindle_ebook-file-with-large-name.azw",t||3516516,"application/vnd.amazon.ebook")},e.create_octet=function(t){return e.createFile("binary_octet_stream-file-with-large-name.bin",t||3516516,"application/octet-stream")},e.create_bmp=function(t){return e.createFile("bit_map-file-with-large-name.bmp",t||3516516,"image/bmp")},e.create_bz=function(t){return e.createFile("x_bzip-file-with-large-name.bz",t||3516516,"application/x-bzip")},e.create_bz2=function(t){return e.createFile("x_bzip_2-file-with-large-name.bz2",t||3516516,"application/x-bzip2")},e.create_cda=function(t){return e.createFile("cd_audio-file-with-large-name.cda",t||3516516,"application/x-cdf")},e.create_csh=function(t){return e.createFile("test-file-with-large-name.csh",t||3516516,"application/x-csh")},e.create_css=function(t){return e.createFile("test-file-with-large-name.css",t||3516516,"text/css")},e.create_csv=function(t){return e.createFile("test-file-with-large-name.csv",t||3516516,"text/csv")},e.create_doc=function(t){return e.createFile("test-file-with-large-name.doc",t||3516516,"application/msword")},e.create_docx=function(t){return e.createFile("test-file-with-large-name.docx",t||3516516,"application/vnd.openxmlformats-officedocument.wordprocessingml.document")},e.create_eot=function(t){return e.createFile("test-file-with-large-name.eot",t||3516516,"application/vnd.ms-fontobject")},e.create_epub=function(t){return e.createFile("test-file-with-large-name.epub",t||3516516,"application/epub+zip")},e.create_gzip=function(t){return e.createFile("test-file-with-large-name.gz",t||3516516,"application/gzip")},e.create_gif=function(t){return e.createFile("test-file-with-large-name.gif",t||3516516,"image/gif")},e.create_htm=function(t){return e.createFile("test-file-with-large-name.htm",t||3516516,"text/html")},e.create_html=function(t){return e.createFile("test-file-with-large-name.html",t||3516516,"text/html")},e.create_ico=function(t){return e.createFile("test-file-with-large-name.ico",t||3516516,"image/vnd.microsoft.icon")},e.create_icalendar=function(t){return e.createFile("test-file-with-large-name.ics",t||3516516,"text/calendar")},e.create_jar=function(t){return e.createFile("test-file-with-large-name.jar",t||3516516,"application/java-archive")},e.create_jpeg=function(t){return e.createFile("test-file-with-large-name.jpeg",t||3516516,"image/jpeg")},e.create_jpg=function(t){return e.createFile("test-file-with-large-name.jpg",t||3516516,"image/jpeg")},e.create_js=function(t){return e.createFile("test-file-with-large-name.js",t||3516516,"text/javascript")},e.create_json=function(t){return e.createFile("test-file-with-large-name.json",t||3516516,"application/json")},e.create_jsonld=function(t){return e.createFile("test-file-with-large-name.jsonld",t||3516516,"application/ld+json")},e.create_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/midi")},e.create_x_mid=function(t){return e.createFile("test-file-with-large-name.mid",t||3516516,"audio/x-midi")},e.create_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_x_midi=function(t){return e.createFile("test-file-with-large-name.midi",t||3516516,"audio/x-midi")},e.create_mjs=function(t){return e.createFile("test-file-with-large-name.mjs",t||3516516,"text/javascript")},e.create_mp3=function(t){return e.createFile("test-file-with-large-name.mp3",t||3516516,"audio/mpeg")},e.create_mp4=function(t){return e.createFile("test-file-with-large-name.mp4",t||3516516,"video/mp4")},e.create_mpeg=function(t){return e.createFile("test-file-with-large-name.mpeg",t||3516516,"video/mpeg")},e.create_mpkg=function(t){return e.createFile("test-file-with-large-name.mpkg",t||3516516,"application/vnd.apple.installer+xml")},e.create_odp=function(t){return e.createFile("test-file-with-large-name.odp",t||3516516,"application/vnd.oasis.opendocument.presentation")},e.create_ods=function(t){return e.createFile("test-file-with-large-name.ods",t||3516516,"application/vnd.oasis.opendocument.spreadsheet")},e.create_odt=function(t){return e.createFile("test-file-with-large-name.odt",t||3516516,"application/vnd.oasis.opendocument.text")},e.create_oga=function(t){return e.createFile("test-file-with-large-name.oga",t||3516516,"audio/ogg")},e.create_ogv=function(t){return e.createFile("test-file-with-large-name.ogv",t||3516516,"video/ogg")},e.create_ogx=function(t){return e.createFile("test-file-with-large-name.ogx",t||3516516,"application/ogg")},e.create_opus=function(t){return e.createFile("test-file-with-large-name.opus",t||3516516,"audio/opus")},e.create_otf=function(t){return e.createFile("test-file-with-large-name.otf",t||3516516,"font/otf")},e.create_png=function(t){return e.createFile("test-file-with-large-name.png",t||3516516,"image/png")},e.create_pdf=function(t){return e.createFile("test-file-with-large-name.pdf",t||3516516,"application/pdf")},e.create_php=function(t){return e.createFile("test-file-with-large-name.php",t||3516516,"application/x-httpd-php")},e.create_ppt=function(t){return e.createFile("test-file-with-large-name.ppt",t||3516516,"application/vnd.ms-powerpoint")},e.create_pptx=function(t){return e.createFile("test-file-with-large-name.pptx",t||3516516,"application/vnd.openxmlformats-officedocument.presentationml.presentation")},e.create_rar=function(t){return e.createFile("test-file-with-large-name.rar",t||3516516,"application/vnd.rar")},e.create_rtf=function(t){return e.createFile("test-file-with-large-name.rtf",t||3516516,"application/rtf")},e.create_sh=function(t){return e.createFile("test-file-with-large-name.sh",t||3516516,"application/x-sh")},e.create_svg=function(t){return e.createFile("test-file-with-large-name.svg",t||3516516,"image/svg+xml")},e.create_swf=function(t){return e.createFile("test-file-with-large-name.swf",t||3516516,"application/x-shockwave-flash")},e.create_tar=function(t){return e.createFile("test-file-with-large-name.tar",t||3516516,"application/x-tar")},e.create_tif=function(t){return e.createFile("test-file-with-large-name.tif",t||3516516,"image/tiff")},e.create_tiff=function(t){return e.createFile("test-file-with-large-name.tiff",t||3516516,"image/tiff")},e.create_ts=function(t){return e.createFile("mp2t_video-file-with-large-name.ts",t||3516516,"video/mp2t")},e.create_ttf=function(t){return e.createFile("test-file-with-large-name.ttf",t||3516516,"font/ttf")},e.create_text=function(t){return e.createFile("test-file-with-large-name.txt",t||3516516,"text/plain")},e.create_typescript=function(t){return e.createFile("typescript-file-with-large-name.ts",t||3516516,"text/plain")},e.create_vsd=function(t){return e.createFile("ms_visio-file-with-large-name.vsd",t||3516516,"application/vnd.visio")},e.create_wav=function(t){return e.createFile("wav_audio-file-with-large-name.wav",t||3516516,"audio/wav")},e.create_weba=function(t){return e.createFile("web_audio-file-with-large-name.weba",t||3516516,"audio/webm")},e.create_webm=function(t){return e.createFile("web_video-file-with-large-name.webm",t||3516516,"video/webm")},e.create_webp=function(t){return e.createFile("web_image-file-with-large-name.webp",t||3516516,"image/webp")},e.create_woff=function(t){return e.createFile("test-file-with-large-name.woff",t||3516516,"font/woff")},e.create_woff2=function(t){return e.createFile("test-file-with-large-name.woff2",t||3516516,"font/woff2")},e.create_xhtml=function(t){return e.createFile("test-file-with-large-name.xhtml",t||3516516,"application/xhtml+xml")},e.create_xlsx=function(t){return e.createFile("test-file-with-large-name.xls",t||3516516,"application/vnd.ms-excel")},e.create_xls=function(t){return e.createFile("test-file-with-large-name.xlsx",t||3516516,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")},e.create_xml=function(t){return e.createFile("xml-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xml_txt=function(t){return e.createFile("xml_plain_text-file-with-large-name.xml",t||3516516,"application/xml")},e.create_xul=function(t){return e.createFile("test-file-with-large-name.xul",t||3516516,"application/vnd.mozilla.xul+xml")},e.create_zip=function(t){return e.createFile("zip-file-with-large-name.zip",t||3516516,"application/zip")},e.create_3gp=function(t){return e.createFile("3gp_video-file-with-large-name.3gp",t||3516516,"video/3gpp")},e.create_3gp2=function(t){return e.createFile("3gp2_video-file-with-large-name.3g2",t||3516516,"video/3gpp2")},e.create_3gp_a=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp",t||3516516,"audio/3gpp")},e.create_3gp_v=function(t){return e.createFile("3gp_audio-file-with-large-name.3gp2",t||3516516,"audio/3gpp2")},e.create_7z=function(t){return e.createFile("seven_zip-file-with-large-name.7z",t||3516516,"application/x-7z-compressed")},e.create_python=function(t){return e.createFile("python-file-with-large-name.py",t||3516516,"text/plain")},e.create_java=function(t){return e.createFile("java-file-with-large-name.java",t||3516516,"text/plain")},e.create_react=function(t){return e.createFile("react_jsx-file-with-large-name.jsx",t||3516516,"text/plain")},e.create_vue=function(t){return e.createFile("vue-file-with-large-name.vue",t||3516516,"text/plain")},e.createFileListMiscelanious=function(t){var n=[];return n.push(e.create_aac(t)),n.push(e.create_abw(t)),n.push(e.create_freearc(t)),n.push(e.create_avi(t)),n.push(e.create_azw(t)),n.push(e.create_octet(t)),n.push(e.create_bmp(t)),n.push(e.create_bz(t)),n.push(e.create_bz2(t)),n.push(e.create_cda(t)),n.push(e.create_csh(t)),n.push(e.create_css(t)),n.push(e.create_csv(t)),n.push(e.create_doc(t)),n.push(e.create_docx(t)),n.push(e.create_eot(t)),n.push(e.create_epub(t)),n.push(e.create_gzip(t)),n.push(e.create_gif(t)),n.push(e.create_htm(t)),n.push(e.create_html(t)),n.push(e.create_ico(t)),n.push(e.create_icalendar(t)),n.push(e.create_jar(t)),n.push(e.create_jpeg(t)),n.push(e.create_jpg(t)),n.push(e.create_js(t)),n.push(e.create_json(t)),n.push(e.create_jsonld(t)),n.push(e.create_mid(t)),n.push(e.create_midi(t)),n.push(e.create_x_mid(t)),n.push(e.create_x_midi(t)),n.push(e.create_mjs(t)),n.push(e.create_mp3(t)),n.push(e.create_mp4(t)),n.push(e.create_mpeg(t)),n.push(e.create_mpkg(t)),n.push(e.create_odp(t)),n.push(e.create_ods(t)),n.push(e.create_odt(t)),n.push(e.create_oga(t)),n.push(e.create_ogv(t)),n.push(e.create_ogx(t)),n.push(e.create_opus(t)),n.push(e.create_otf(t)),n.push(e.create_png(t)),n.push(e.create_pdf(t)),n.push(e.create_php(t)),n.push(e.create_ppt(t)),n.push(e.create_pptx(t)),n.push(e.create_rar(t)),n.push(e.create_rtf(t)),n.push(e.create_sh(t)),n.push(e.create_svg(t)),n.push(e.create_swf(t)),n.push(e.create_tar(t)),n.push(e.create_tif(t)),n.push(e.create_tiff(t)),n.push(e.create_ts(t)),n.push(e.create_ttf(t)),n.push(e.create_text(t)),n.push(e.create_typescript(t)),n.push(e.create_vsd(t)),n.push(e.create_wav(t)),n.push(e.create_weba(t)),n.push(e.create_webm(t)),n.push(e.create_webp(t)),n.push(e.create_woff(t)),n.push(e.create_woff2(t)),n.push(e.create_xhtml(t)),n.push(e.create_xlsx(t)),n.push(e.create_xls(t)),n.push(e.create_xml(t)),n.push(e.create_xml_txt(t)),n.push(e.create_xul(t)),n.push(e.create_zip(t)),n.push(e.create_python(t)),n.push(e.create_java(t)),n.push(e.create_react(t)),n.push(e.create_vue(t)),n}}(),function(){function e(){}return e.getNextId=function(){return e.nextId++,e.nextId},e.nextId=0,e}()),rl=function(e){for(var t=[],n=0,r=void 0;r=e[n];n++)t.push({id:nl.getNextId(),file:r,name:r.name,size:r.size,type:r.type});return t},al=function(e){return void 0===e&&(e=5e3),new Promise((function(t,n){setTimeout((function(){t()}),e)}))},ol=function(e,t){void 0===t&&(t=Mi("EN-en"));var n=e.toExtFile();return new Promise((function(e,r){setTimeout((function(){if(Math.floor(10*Math.random())%2==0){var r=!0,a=t.fakeuploadsuccess,o={url:""};e(Xi(Xi({},n),{serverResponse:{success:r,message:a,payload:o},uploadStatus:"success",uploadMessage:a}))}else r=!1,a=t.fakeUploadError,o={},e(Xi(Xi({},n),{serverResponse:{success:r,message:a,payload:o},uploadStatus:"error",uploadMessage:a}))}),1700)}))};var il=function(e,t){return t?"".concat(e," ").concat(t):e},ll=function(e,t,n,r,a,o){var i,l=[];if(!t)return l;for(var s=t,c=(i=o)&&["ES-es","EN-en","FR-fr","IT-it","PT-pt","RU-ru","ZH-cn","ZH-hk"].includes(i)?Ii[i]:Ii["EN-en"],u=c.maxFileCount,f=0;f<e.length;f++){var d=e[f];if((d=sl(d,r,n,c)).valid){var p=s>0;d.valid=p,p||(d.errors=d.errors?el(el([],d.errors,!0),[u(a||1/0)],!1):[u(a||1/0)]),s--}l.push(d)}return l},sl=function(e,t,n,r){var a=Xi({},e),o=[];if(!e.file)return Xi({},a);if(t){var i=t(a.file).errors;i&&o.push.apply(o,i)}var l=n.maxFileSize,s=n.accept,c=e.file;if(l&&c.size>l){var u=r.maxSizeError;o.push(u(l))}s&&!function(e,t){for(var n=t.name,r=t.type,a=0;a<e.length;a++){var o=e[a];if(0!==o.length){if("."===o.charAt(0)&&o.includes(Hi(n)))return!0;if(r&&r.length>0&&o.includes("/")&&r.includes("/")){var i=o.split("/")[0],l=o.split("/")[1],s=r.split("/")[0],c=r.split("/")[1];if(i===s){if("*"===l)return!0;if(l===c)return!0}}}}return!1}(function(e){return e&&0!==e.length?e.split(",").map((function(e){return e.trim()})):[]}(s),c)&&o.push(r.acceptError);var f=0===o.length;return Xi(Xi({},a),{valid:f,errors:f?void 0:o})},cl={success:!1,message:"Timeout error",payload:{}},ul={success:!1,message:"Upload aborted",payload:{}},fl={success:!1,message:"Error when parsing JSON response",payload:{}},dl={success:!1,message:"Unexpected error",payload:{}},pl=function(e,t){return Xi(Xi({},e),{uploadMessage:t.message,uploadStatus:"error",serverResponse:t})},ml=function(e,t,n,r,a){return void 0===t&&(t="POST"),new Promise((function(o,i){var l=["POST","PUT","PATCH"].includes(t.toUpperCase())?t:"POST";e.upload.onload=function(){},e.upload.ontimeout=function(){return o(cl)},e.upload.onabort=function(){o(ul)},e.onloadend=function(e){return Zi(void 0,void 0,void 0,(function(){return Ji(this,(function(e){return[2]}))}))},e.onreadystatechange=function(t){return Zi(void 0,void 0,void 0,(function(){return Ji(this,(function(t){return 4===e.readyState&&(""!==e.response?o(function(e){try{var t=JSON.parse(e.response),n=t.success,r=t.message;return{success:"boolean"==typeof n&&n,message:"string"==typeof r?r:"Error on message response",payload:t.payload||{}}}catch(e){return fl}}(e)):o(ul)),[2]}))}))},e.open(l,n,!0),function(e,t){for(var n=Object.keys(t||{}),r=0;r<n.length&&t;r++)e.setRequestHeader(n[r],t[n[r]])}(e,a),e.send(r)}))},hl=function(e,t,n,r,a){return Zi(void 0,void 0,void 0,(function(){return Ji(this,(function(o){return[2,new Promise((function(o,i){return Zi(void 0,void 0,void 0,(function(){var i,l,s,c,u,f;return Ji(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),(i=e.xhr)?(l=n||"POST",s=e.file,(c=new FormData).append(a||"file",s),u=Xi({},e.extraUploadData),function(e,t){for(var n=Object.keys(t||{}),r=0;r<n.length&&t;r++)e.append(n[r],t[n[r]])}(c,u),f=void 0,[4,ml(i,l,t,c,r||{})]):(o(function(e){return Xi(Xi({},e),{uploadMessage:"Unable to upload. xhr object was not provided",uploadStatus:"error",serverResponse:{success:!1}})}(e)),[2]);case 1:return(f=d.sent()).success?o(function(e,t){return Xi(Xi({},e),{serverResponse:t,uploadMessage:t.message,uploadStatus:"success"})}(e,f)):o(pl(e,f)),[3,3];case 2:return d.sent(),o(pl(e,dl)),[3,3];case 3:return[2]}}))}))}))]}))}))},gl=function(e){return e?e.map((function(e){return Xi(Xi({},e),{xhr:new XMLHttpRequest})})):[]},vl=function(e){return void 0===e&&(e=1500),new Promise((function(t,n){setTimeout((function(){t(!0)}),e)}))},bl=function(e){return e.filter((function(e){var t;return!(null===(t=e.extraData)||void 0===t?void 0:t.deleted)})).map((function(e){return"aborted"!==e.uploadStatus||e.uploadMessage||(e.uploadMessage="Upload aborted by user"),Ki.toExtFile(e)}))},yl={indianred:"#CD5C5C",lightcoral:"#F08080",salmon:"#FA8072",darksalmon:"#E9967A",lightsalmon:"#FFA07A",crimson:"#DC143C",red:"#FF0000",firebrick:"#B22222",darkred:"#8B0000",pink:"#FFC0CB",lightpink:"#FFB6C1",hotpink:"#FF69B4",deeppink:"#FF1493",mediumvioletred:"#C71585",palevioletred:"#DB7093",coral:"#FF7F50",tomato:"#FF6347",orangered:"#FF4500",darkorange:"#FF8C00",orange:"#FFA500",gold:"#FFD700",yellow:"#FFFF00",lightyellow:"#FFFFE0",lemonchiffon:"#FFFACD",lightgoldenrodyellow:"#FAFAD2",papayawhip:"#FFEFD5",moccasin:"#FFE4B5",peachpuff:"#FFDAB9",palegoldenrod:"#EEE8AA",khaki:"#F0E68C",darkkhaki:"#BDB76B",lavender:"#E6E6FA",thistle:"#D8BFD8",plum:"#DDA0DD",violet:"#EE82EE",orchid:"#DA70D6",fuchsia:"#FF00FF",magenta:"#FF00FF",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",rebeccapurple:"#663399",blueviolet:"#8A2BE2",darkviolet:"#9400D3",darkorchid:"#9932CC",darkmagenta:"#8B008B",purple:"#800080",indigo:"#4B0082",slateblue:"#6A5ACD",darkslateblue:"#483D8B",mediumslateblue:"#7B68EE",greenyellow:"#ADFF2F",chartreuse:"#7FFF00",lawngreen:"#7CFC00",lime:"#00FF00",limegreen:"#32CD32",palegreen:"#98FB98",lightgreen:"#90EE90",mediumspringgreen:"#00FA9A",springgreen:"#00FF7F",mediumseagreen:"#3CB371",seagreen:"#2E8B57",forestgreen:"#228B22",green:"#008000",darkgreen:"#006400",yellowgreen:"#9ACD32",olivedrab:"#6B8E23",olive:"#808000",darkolivegreen:"#556B2F",mediumaquamarine:"#66CDAA",darkseagreen:"#8FBC8B",lightseagreen:"#20B2AA",darkcyan:"#008B8B",teal:"#008080",aqua:"#00FFFF",cyan:"#00FFFF",lightcyan:"#E0FFFF",paleturquoise:"#AFEEEE",aquamarine:"#7FFFD4",turquoise:"#40E0D0",mediumturquoise:"#48D1CC",darkturquoise:"#00CED1",cadetblue:"#5F9EA0",steelblue:"#4682B4",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",lightblue:"#ADD8E6",skyblue:"#87CEEB",lightskyblue:"#87CEFA",deepskyblue:"#00BFFF",dodgerblue:"#1E90FF",cornflowerblue:"#6495ED",royalblue:"#4169E1",blue:"#0000FF",mediumblue:"#0000CD",darkblue:"#00008B",navy:"#000080",midnightblue:"#191970",cornsilk:"#FFF8DC",blanchedalmond:"#FFEBCD",bisque:"#FFE4C4",navajowhite:"#FFDEAD",wheat:"#F5DEB3",burlywood:"#DEB887",tan:"#D2B48C",rosybrown:"#BC8F8F",sandybrown:"#F4A460",goldenrod:"#DAA520",darkgoldenrod:"#B8860B",peru:"#CD853F",chocolate:"#D2691E",saddlebrown:"#8B4513",sienna:"#A0522D",brown:"#A52A2A",maroon:"#800000",white:"#FFFFFF",snow:"#FFFAFA",honeydew:"#F0FFF0",mintcream:"#F5FFFA",azure:"#F0FFFF",aliceblue:"#F0F8FF",ghostwhite:"#F8F8FF",whitesmoke:"#F5F5F5",seashell:"#FFF5EE",beige:"#F5F5DC",oldlace:"#FDF5E6",floralwhite:"#FFFAF0",ivory:"#FFFFF0",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lavenderblush:"#FFF0F5",mistyrose:"#FFE4E1",gainsboro:"#DCDCDC",lightgray:"#D3D3D3",silver:"#C0C0C0",darkgray:"#A9A9A9",gray:"#808080",dimgray:"#696969",lightslategray:"#778899",slategray:"#708090",darkslategray:"#2F4F4F",black:"#000000"},xl=function(e,t){void 0===t&&(t=25);var n="",r=(100-t)/100,a=0,o=0,i=0;if(El(kl(e)))a=16*Al(e.charAt(1))+Al(e.charAt(2)),o=16*Al(e.charAt(3))+Al(e.charAt(4)),i=16*Al(e.charAt(5))+Al(e.charAt(6)),n="rgb(".concat(a*r,", ").concat(o*r,",").concat(i*r,")");else if(e.includes("rgba")){var l=e.replace("rgba(","").split(",");n="rgb(".concat(parseInt(l[0],10)*r,", ").concat(parseInt(l[1],10)*r,",").concat(parseInt(l[2],10)*r,")")}else e.includes("rgb")&&(l=e.replace("rgb(","").split(","),n="rgb(".concat(parseInt(l[0],10)*r,", ").concat(parseInt(l[1],10)*r,",").concat(parseInt(l[2],10)*r,")"));return n},wl=function(e,t,n){void 0===t&&(t=0);var r=n||"rgba(255, 255, 255, 0.6)";if(!e)return r;var a,o,i,l=e.toUpperCase();return l.includes("RGBA")?l:l.includes("RGB")?l.replace("RGB","rgba").replace(")",", ".concat(t,")")):El(kl(l))?(a=16*Al(l.charAt(1))+Al(l.charAt(2)),o=16*Al(l.charAt(3))+Al(l.charAt(4)),i=16*Al(l.charAt(5))+Al(l.charAt(6)),"rgba(".concat(a,", ").concat(o,",").concat(i," , ").concat(t,")")):r},El=function(e){if("#"!==e.charAt(0))return!1;if(7!==e.length)return!1;for(var t=1;t<e.length;t++)if(!Cl.includes(e.charAt(t)))return!1;return!0};function kl(e){return e?void 0!==yl[e.toLocaleLowerCase()]?yl[e.toLocaleLowerCase()]:e:""}var Cl=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"],Sl=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],Al=function(e){return Cl.includes(e)?Sl[Cl.indexOf(e)]:0},Nl=function(e){return void 0!==e&&""!==e?e:Ol},Fl=function(e,t){return void 0===t&&(t=1),wl(Nl(kl(e)),t)},Ol="#646c7f";function _l(e,t){return e?hi(hi({},t),e):t}var Ll=function(e){var n=e.onChange,r=e.inputRef,a=e.accept,o=e.multiple;return t.createElement(t.Fragment,null,t.createElement("input",{"aria-label":"fui-hidden-input",style:{display:"none"},ref:r,onChange:n,type:"file",accept:a,multiple:o}))},zl={clickable:!0,behaviour:"add",disabled:!1,dropOnLayer:!0,uploadConfig:{},actionButtons:{},header:!0,footer:!0,value:[]},Tl="8px";mi(".files-ui-dropzone-children-container {\\n width: 100%;\\n flex-grow: 1;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n flex-wrap: wrap;\\n padding: 5px 0;\\n}");var Pl=function(e){var n=e.children,r=e.label,a=e.localization,o=Array.isArray(n)&&0===n.length,i=Mi(a);return n&&!o?t.createElement("div",{className:"files-ui-dropzone-children-container"},n):t.createElement("div",{className:"files-ui-dropzone-children-container"},t.createElement("label",null," ",r||i.defaultLabel))},jl=function(e){e.stopPropagation(),e.preventDefault()},Dl=function(e){e.dataTransfer.dropEffect="link",jl(e)};function Rl(e){e.preventDefault(),e.stopPropagation()}var Ml=function(e){return Fl(e,.4)};mi(".filesui-disabled-root {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.38);\\n}");var Il=function(e){var n=e.open,r=e.className,a=e.style,o=il("filesui-disabled-root",r);return n?t.createElement("div",{style:a,className:o,onDrop:function(e){return vi(void 0,void 0,void 0,(function(){return bi(this,(function(t){return jl(e),[2]}))}))},onDragOver:function(e){Dl(e)},onClick:function(e){Rl(e)}}):t.createElement(t.Fragment,null)};mi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.fui-dropzone-root {\\n width: 100%;\\n min-width: 150px;\\n min-height: 180px;\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n gap: 0 8px;\\n text-rendering: optimizeLegibility;\\n font-size: 1.5em;\\n font-family: "Poppins", sans-serif;\\n text-align: center;\\n font-weight: 400;\\n letter-spacing: 0.02857em;\\n box-sizing: border-box;\\n word-break: normal;\\n /* &.fui-dropzone-border {\\n box-sizing: border-box;\\n\\n border: 1px dashed #0c2358;\\n border-radius: 10px;\\n &.fui-hide-border {\\n border: none;\\n }\\n } */\\n}\\n@media (max-width: 600px) {\\n .fui-dropzone-root {\\n font-size: 1.3em;\\n }\\n}\\n.fui-dropzone-root.clickable {\\n cursor: pointer;\\n}\\n\\n.files-ui-header {\\n min-height: 23px;\\n /* height: 22px;\\n position: absolute; \\n top: 0;\\n */\\n cursor: text;\\n display: flex;\\n width: 100%;\\n flex-direction: row;\\n align-items: center;\\n justify-content: flex-end;\\n font-family: inherit;\\n font-size: 1rem;\\n}\\n@media (max-width: 960px) {\\n .files-ui-header {\\n font-size: 0.8rem;\\n }\\n}\\n\\n.files-ui-footer {\\n /* border-bottom-left-radius: 8px;\\n border-bottom-right-radius: 8px; */\\n box-sizing: border-box;\\n cursor: text;\\n /* height: 23px;\\n position: absolute;\\n bottom: 0;\\n left: 0; */\\n width: 100%;\\n /* display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center; */\\n font-family: inherit;\\n padding-left: 10px;\\n font-size: 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1; /* number of lines to show */\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n text-align: left;\\n}\\n@media (max-width: 960px) {\\n .files-ui-footer {\\n padding-left: 1px;\\n font-size: 0.9rem;\\n }\\n}\'),mi(".filesui-base-ripple-absolute {\\n position: absolute;\\n display: none;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n box-sizing: border-box;\\n border-radius: 8px;\\n overflow: hidden;\\n}\\n.filesui-base-ripple-absolute .filesui-base-ripple-relative {\\n width: 100%;\\n height: 100%;\\n position: relative;\\n overflow: hidden;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n box-sizing: border-box;\\n}\\n.filesui-base-ripple-absolute .filesui-base-ripple-relative span.ripple {\\n position: absolute;\\n border-radius: 50%;\\n transform: scale(0);\\n animation: ripple 500ms linear;\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n@keyframes ripple {\\n to {\\n transform: scale(4);\\n opacity: 0;\\n }\\n}");var Bl=function(e){if("number"==typeof e)return e;switch(e){case"micro":return 8;case"small":return 15;case"semi-medium":return 18;case"medium":return 25;case"large":return 28;case"extra-large":return 32;default:return 24}},ql=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(n),c=i||{};return t.createElement("svg",{style:o?hi({},hi({cursor:"pointer"},c)):c,onClick:function(e){Rl(e),null==o||o(e)},xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",className:l||""},t.createElement("path",{d:"M0 0h24v24H0V0z",fill:"none",opacity:".87"}),t.createElement("path",{d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8zm5 11.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z",fill:a||"none",opacity:".5"}),t.createElement("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13L12 10.59 8.41 7 7 8.41 10.59 12 7 15.59 8.41 17 12 13.41 15.59 17 17 15.59 13.41 12 17 8.41z"}))},Ul=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?hi({},hi({cursor:"pointer"},c)):c,onClick:function(){return null==o?void 0:o()},xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000"},n().createElement("path",{d:"M0 0h24v24H0z",fill:a||"none"}),n().createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}))},$l=function(e){var t=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=Bl(t),s=o||{};return n().createElement("svg",{className:i||"",style:a?hi({},hi({cursor:"pointer"},s)):s,onClick:function(){return null==a?void 0:a()},xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:l?"".concat(l,"px"):"24px",viewBox:"0 0 24 24",width:l?"".concat(l,"px"):"24px",fill:r||"#000000"},n().createElement("g",null,n().createElement("rect",{fill:"none",height:l||"24",width:l||"24"})),n().createElement("g",null,n().createElement("g",null,n().createElement("path",{d:"M16,11h-1V3c0-1.1-0.9-2-2-2h-2C9.9,1,9,1.9,9,3v8H8c-2.76,0-5,2.24-5,5v7h18v-7C21,13.24,18.76,11,16,11z M11,3h2v8h-2V3 z M19,21h-2v-3c0-0.55-0.45-1-1-1s-1,0.45-1,1v3h-2v-3c0-0.55-0.45-1-1-1s-1,0.45-1,1v3H9v-3c0-0.55-0.45-1-1-1s-1,0.45-1,1v3H5 v-5c0-1.65,1.35-3,3-3h8c1.65,0,3,1.35,3,3V21z"}))))},Hl=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(n),c=i||{};return t.createElement("svg",{className:l||"",style:o?hi({cursor:"pointer"},c):c,xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Rl(e),null==o||o(e)}},t.createElement("path",{d:"M0 0h24v24H0V0z",fill:a||"none"}),t.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"}))},Wl=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(n),c=i||{};return t.createElement("svg",{className:l||"",style:o?hi({cursor:"pointer"},c):c,enableBackground:"new 0 0 24 24",xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Rl(e),null==o||o(e)}},t.createElement("path",{d:"M0 0h24v24H0V0z",fill:a||"none"}),t.createElement("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3zm-9-3.82l-2.09-2.09L6.5 13.5 10 17l6.01-6.01-1.41-1.41z"}))},Vl=function(e){var t=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=Bl(t),s=o||{};return n().createElement("svg",{className:i||"",style:a?hi({},hi({cursor:"pointer"},s)):s,onClick:function(){return null==a?void 0:a()},xmlns:"http://www.w3.org/2000/svg",height:l?"".concat(l,"px"):"24px",viewBox:"0 0 24 24",width:l?"".concat(l,"px"):"24px",fill:r||"#000000"},n().createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}),n().createElement("path",{d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8z",opacity:".4"}),n().createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z"}))},Gl=function(e){var n=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(n),c=i||{};return t.createElement("svg",{className:l||"",style:o?hi({cursor:"pointer"},c):c,enableBackground:"new 0 0 24 24",xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Rl(e),null==o||o(e)}},t.createElement("g",null,t.createElement("rect",{fill:a||"none",height:s,width:s})),t.createElement("g",null,t.createElement("path",{d:"M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M17,11l-1.41-1.41L13,12.17V4h-2v8.17L8.41,9.59L7,11l5,5 L17,11z"})))},Ql=function(e){var n=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=Bl(n)-2,s=o||{};return t.createElement("svg",{className:i||"",style:a?hi({cursor:"pointer"},s):s,"aria-hidden":"true","aria-label":"info",fill:r||"#000000",role:"img",transform:"",version:"1.1",viewBox:"0 0 36 36",xmlns:"http://www.w3.org/2000/svg",height:"".concat(l,"px"),width:"".concat(l,"px"),onClick:function(e){Rl(e),null==a||a(e)}},t.createElement("path",{d:"M22.378 0c2.412 0 3.618 1.642 3.618 3.523 0 2.349-2.095 4.522-4.822 4.522-2.284 0-3.616-1.35-3.553-3.582 0-1.877 1.586-4.462 4.757-4.462zM14.956 36c-1.904 0-3.299-1.174-1.967-6.343l2.185-9.166c0.38-1.465 0.443-2.054 0-2.054-0.571 0-3.040 1.012-4.504 2.011l-0.95-1.584c4.63-3.935 9.956-6.241 12.242-6.241 1.903 0 2.219 2.291 1.269 5.814l-2.504 9.634c-0.443 1.701-0.254 2.288 0.191 2.288 0.571 0 2.443-0.706 4.282-2.173l1.080 1.465c-4.504 4.585-9.423 6.349-11.324 6.349z"}))},Yl=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?hi({cursor:"pointer"},c):c,xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Rl(e),null==o||o(e)}},n().createElement("path",{d:"M0 0h24v24H0V0z",opacity:".9",fill:a||"none"}),n().createElement("path",{d:"M8 5v14l11-7L8 5z"}))},Kl=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(t),c=i||{};return n().createElement("svg",{style:o?hi({},hi({cursor:"pointer"},c)):c,onClick:function(){return null==o?void 0:o()},xmlns:"http://www.w3.org/2000/svg",enableBackground:"new 0 0 24 24",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",className:l||""},n().createElement("g",null,n().createElement("rect",{fill:a||"none",height:t||"24",width:t||"24"})),n().createElement("g",null,n().createElement("path",{d:"M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M7,9l1.41,1.41L11,7.83V16h2V7.83l2.59,2.58L17,9l-5-5L7,9z"})))},Xl=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?hi({},hi({cursor:"pointer"},c)):c,onClick:function(){return null==o?void 0:o()},xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000"},n().createElement("rect",{fill:a||"none",height:s,width:s}),n().createElement("path",{d:"M18,15.17V15h2v2.17L18,15.17z M15.41,12.59L17,11l-1.41-1.41L14,11.17L15.41,12.59z M13,10.17V4h-2v4.17L13,10.17z M21.19,21.19l-1.78-1.78L2.81,2.81L1.39,4.22l6.19,6.19L7,11l5,5l0.59-0.59L15.17,18H6v-3H4v3c0,1.1,0.9,2,2,2h11.17l2.61,2.61 L21.19,21.19z"}))};mi("@keyframes filesui-rotate-spin {\\n from {\\n transform: rotate(0deg);\\n }\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n.filesui-rotate {\\n cursor: default;\\n}\\n\\n@media (prefers-reduced-motion: no-preference) {\\n .filesui-rotate {\\n animation: filesui-rotate-spin infinite 2s linear;\\n }\\n}");var Zl,Jl=function(e){var t=e.size,r=e.color,a=e.onClick,o=e.style,i=e.className,l=e.spin,s=Bl(t),c=o||{},u=i||"";return u+=l?"filesui-rotate":"",n().createElement("svg",{className:u,style:a?hi({},hi({cursor:"pointer"},c)):c,onClick:function(){return null==a?void 0:a()},xmlns:"http://www.w3.org/2000/svg",height:s?"".concat(s,"px"):"24px",viewBox:"0 0 24 24",width:s?"".concat(s,"px"):"24px",fill:r||"#000000"},n().createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}),n().createElement("path",{d:"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"}))},es=function(e){var t=e.size,r=e.color,a=e.colorFill,o=e.onClick,i=e.style,l=e.className,s=Bl(t),c=i||{};return n().createElement("svg",{className:l||"",style:o?hi({cursor:"pointer"},c):c,xmlns:"http://www.w3.org/2000/svg",height:"".concat(s,"px"),viewBox:"0 0 24 24",width:"".concat(s,"px"),fill:r||"#000000",onClick:function(e){Rl(e),null==o||o(e)}},n().createElement("path",{d:"M0 0h24v24H0V0z",fill:"none"}),n().createElement("path",{d:"M12 4c-4.41 0-8 3.59-8 8s3.59 8 8 8 8-3.59 8-8-3.59-8-8-8z",fill:a||"none"}),n().createElement("path",{d:"M12 4C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 12.5c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}))},ts=function(e){var n=e.maxFileSize,r=e.numberOfValidFiles,a=e.onReset,o=e.onClean,i=e.maxFiles,l=e.onUploadStart,s=e.isUploading,c=e.urlPresent,u=e.localization,f=e.borderRadius,d=e.style,p=e.className,m=void 0===p?"":p,h=e.resetStyles,g=e.color,v=e.firstClassName,b=void 0===v?"":v,y=Mi(u).header,x=function(){null==o||o()},w=function(){null==l||l()},E=h?m:il("files-ui-header "+b,m),k=h?d:hi(hi({},d),{borderTopLeftRadius:f,borderTopRightRadius:f});return t.createElement("div",{className:E,onClick:function(e){e.stopPropagation()},style:k},function(){var e=[];l&&c&&r&&(s?e.push(t.createElement(Jl,{spin:!0,color:g})):e.push(t.createElement(t.Fragment,null,t.createElement(t.Fragment,null,y.uploadFilesMessage),t.createElement(Kl,{color:g,onClick:w}))),e.push(t.createElement(t.Fragment,null,","," ")));var u=y.maxSizeMessage,f=xi(n);f&&(e.push(u(f)),e.push(t.createElement(t.Fragment,null,","," ")));var d=y.validFilesMessage;return i&&(e.push(d(r,i)),e.push(t.createElement(t.Fragment,null,","," "))),o&&e.push(t.createElement($l,{color:g,onClick:x,size:"semi-medium"})),a&&e.push(t.createElement(ql,{color:g,onClick:function(){return null==a?void 0:a()}})),e}().map((function(e,n){return t.createElement("span",{key:n,style:{display:"flex"}},e)})))},ns=function(e){var n=e.accept,r=e.message,a=e.localization,o=e.borderRadius,i=e.style,l=e.className,s=void 0===l?"":l,c=e.resetStyles,u=void 0!==c&&c,f=e.allowedTypesLabel,d=void 0===f||f,p=e.customMessage,m=void 0===p?void 0:p,h=e.firstClassName,g=void 0===h?"":h,v=Mi(a).footer,b=v.acceptCustom,y=u?s:il("files-ui-footer ".concat(g),s),x=u?i:hi(hi({},i),{borderBotomLeftRadius:o,borderBotomRightRadius:o});return t.createElement("div",{className:y,onClick:function(e){Rl(e)},style:x},m?t.createElement(t.Fragment,null,m):t.createElement(t.Fragment,null,r||(n?b(n):d?v.acceptAll:void 0)))};function rs(e){for(var t,n="",r=" ",a=!1,o=0;o<e.length;o++){var i=e[o];if((t=i)&&!/[a-z]/.test(t)&&/[A-Z]/.test(t)){r=i,a=!0;break}}if(a){var l=e.split(r);n="".concat(l[0],"-").concat(r.toLowerCase()).concat(l[1])}else n=e;return n}function as(e){var t="",n=e.trim().split(" ");if(n.length>1){for(var r=0;r<n.length;r++)t+=".".concat(n[r]);t+="{\\n"}else t+=".".concat(e,"{\\n");return t}function os(e){if(null==e)return"";for(var t,n="",r=[],a=0;a<e.length;a++){var o="";o+=as((d=e[a]).className);for(var i=Object.keys(d.rules),l=0;l<i.length;l++){var s=rs(p=i[l]);if((t=s)&&t.includes(":")){var c=d.className+s;r.push({className:c,rules:d.rules[s]})}else{var u=d.rules[p];o+="\\t".concat(s," : ").concat(u,";\\n")}}n+=o+="}\\n"}for(var f=0;f<r.length;f++){o="";var d=r[f];for(i=Object.keys(d.rules),o+=".".concat(d.className,"{\\n"),l=0;l<i.length;l++){var p;s=rs(p=i[l]),u=d.rules[p],o+="\\t".concat(s," : ").concat(u,";\\n")}n+=o+="}\\n"}return n}!function(e){e.insertStyleSheet=function(e){var t;if("undefined"==typeof window)return"";if(null==e)return"";if(document.getElementById(e.id))return e.id;t=e.id;var n=document.createElement("style");n.id=t,n.setAttribute("type","text/css");var r=os(e.sheetRules||[])+e.raw||"";return n.textContent=r,document.head.appendChild(n)?t:""},e.editStyleSheet=function(e,t){if("undefined"==typeof window)return"";if(null==e||null===t)return"";var n=document.getElementById(e);return n?(n.textContent=os(t),""):""},e.removeStyleSheet=function(e){var t="";if(!e)return"";var n=document.getElementById(e);return n&&(document.head.removeChild(n),t=e),t},e.existStyleSheet=function(e){return null!=e&&!!document.getElementById(e)},e.makeStyleSheet=function(e){return null==e?null:e}}(Zl||(Zl={}));var is=function(){function e(){}return e.getNextId=function(){return e.nextButtonClassNameNumber++,e.nextButtonClassNameNumber},e.nextButtonClassNameNumber=0,e.makeDynamicStyle=function(e,t,n,r,a,o){var i={id:"material-button-styles-".concat(e),sheetRules:[{className:"material-button.".concat(t,"-").concat(e),rules:{}},{className:"material-button-root.".concat(t,"-").concat(e),rules:{}}]},l=i.sheetRules;if(!n)switch(t){case"contained":l[0].rules={color:Nl(kl(a)),backgroundColor:Fl(r),textDecoration:o},l[1].rules={":hover":{backgroundColor:xl(Fl(r))}};break;case"outlined":l[0].rules={border:"1px solid ".concat(Fl(r,.5)),color:Fl(r),backgroundColor:"transparent",textDecoration:o},l[1].rules={":hover":{border:"1px solid ".concat(Fl(r,1)),backgroundColor:Fl(r,.085)}};break;case"text":l[0].rules={color:Fl(r),backgroundColor:"transparent",textDecoration:o},l[1].rules={":hover":{backgroundColor:Fl(r,.085)}}}return i.sheetRules=l,i},e}();mi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.material-button-root {\\n border: 0;\\n cursor: pointer;\\n display: inline-flex;\\n outline: 0;\\n position: relative;\\n align-items: center;\\n vertical-align: middle;\\n justify-content: center;\\n text-decoration: none;\\n text-transform: none;\\n color: white;\\n}\\n\\n.material-button {\\n transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\\n overflow: hidden;\\n min-width: 64px;\\n box-sizing: border-box;\\n border-radius: 4px;\\n font-family: "Poppins", sans-serif;\\n font-size: 0.875rem;\\n font-weight: 400;\\n line-height: 1.75;\\n letter-spacing: 0.02857em;\\n}\\n\\n.material-button.uppercase {\\n text-transform: uppercase;\\n}\\n\\n.material-button.lowercase {\\n text-transform: lowercase;\\n}\\n\\n.material-button.capitalize {\\n text-transform: capitalize;\\n}\\n\\n.material-button.contained {\\n padding: 6px 16px;\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n.material-button.outlined {\\n padding: 5px 15px;\\n}\\n\\n.material-button.text {\\n padding: 5px 15px;\\n}\\n\\n.material-button-root.contained:hover {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n.material-button span.material-button-label {\\n width: 100%;\\n display: inherit;\\n align-items: inherit;\\n justify-content: inherit;\\n}\\n\\nspan.ripple {\\n position: absolute;\\n border-radius: 50%;\\n transform: scale(0);\\n animation: ripple 500ms linear;\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n\\n@keyframes ripple {\\n to {\\n transform: scale(4);\\n opacity: 0;\\n }\\n}\\n.material-button-root.disabled {\\n box-shadow: none;\\n cursor: default;\\n pointer-events: none;\\n background-color: rgba(0, 0, 0, 0.12);\\n color: rgba(0, 0, 0, 0.26);\\n padding: 6px 16px;\\n}\\n.material-button-root.disabled.darkmode {\\n background-color: rgba(255, 255, 255, 0.12);\\n color: rgba(255, 255, 255, 0.3);\\n}\\n\\n/* @media screen and (max-width: 600px) {\\n .material-button {\\n min-width: 30px;\\n font-size: 0.78rem;\\n line-height: 1.5;\\n letter-spacing: 0.025em;\\n }\\n .material-button.contained {\\n padding: 4px 13px;\\n }\\n .material-button.outlined {\\n padding: 4px 12px;\\n }\\n}\\n */\');var ls=n().createContext({}),ss=function(e){var n=e.disabled,r=e.href,a=e.textTransform,o=e.variant,i=void 0===o?"contained":o,l=e.color,s=void 0===l?"#1976d2":l,c=e.textColor,u=void 0===c?"white":c,f=e.children,d=e.className,p=e.style,m=e.onClick,h=e.resetStyles,g=e.disableRipple,v=e.darkMode,b=e.id,y=gi(e,["disabled","href","textTransform","variant","color","textColor","children","className","style","onClick","resetStyles","disableRipple","darkMode","id"]),x=t.useContext(ls).darkMode,w=void 0!==v?v:x,E=t.useMemo((function(){return b||nl.getNextId()+""}),[b]),k=function(e,n,r,a,o,i,l,s){var c=t.useState(""),u=c[0],f=c[1],d=t.useState(!1),p=d[0],m=d[1],h=t.useState(void 0),g=h[0],v=h[1];return t.useEffect((function(){s||function(e,t,n,r,a,o){var l="material-button-root material-button",s=is.makeDynamicStyle(e,t,n,r,o,a),c="";if(p?Zl.editStyleSheet(u,s.sheetRules||[]):(c=Zl.insertStyleSheet(s),f(c),""!==c&&m(!0)),l+=n?" disabled":" ".concat(t," ").concat(t,"-").concat(e),i&&i.length>0&&(l+=" ".concat(i)),a){var d=a&&["uppercase","capitalize","lowercase","none"].includes(null==a?void 0:a.toLowerCase())?a.toLowerCase():"uppercase";l+=" ".concat(d)}v(l)}(l,e,n,r,o,a)}),[e,n,r,o,a,i,l,s]),t.useEffect((function(){return function(){return function(e,t){e&&(Zl.removeStyleSheet(t),m(!1),f(""))}(p,u)}}),[p,u]),g}(i,n,s,u,a,d,E.replace(":","").replace(":",""),h),C=k&&w?il(k,"darkmode"):k;return void 0!==C||h?t.createElement(r?"a":"button",hi({className:h&&d?d:C,"data-testid":r?"dui-anchor":"dui-button",onClick:function(e){e.preventDefault(),g||function(e,t,n){var r=e.currentTarget,a=document.createElement("span"),o=Math.max(r.clientWidth,r.clientHeight);a.style.width=a.style.height="".concat(o,"px"),a.classList.add("ripple"),a.style.backgroundColor="contained"!==t?Ml(n):wl("#ffffff",.4),r.appendChild(a),setTimeout((function(){null==a||a.remove()}),501)}(e,i,s),null==m||m(e)},href:r,style:p,children:t.createElement("span",{className:"material-button-label"},f),disabled:n},y)):t.createElement(t.Fragment,null,"loading styes")};mi(".files-ui-buttons-container {\\n width: 100%;\\n box-sizing: border-box;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: flex-end;\\n box-sizing: border-box;\\n gap: 10px;\\n}\\n.files-ui-buttons-container.top {\\n padding-bottom: 10px;\\n}\\n.files-ui-buttons-container.bottom {\\n padding-top: 10px;\\n}");var cs=function(e){var n=e.cleanButton,r=e.abortButton,a=e.className,o=e.style,i=e.deleteButton,l=e.uploadButton,s=e.onAbort,c=e.onClean,u=e.onDelete,f=e.onUpload,d=e.top,p=e.disabled,m=[n?hi(hi({},n),{label:"Clean",onClick:n.onClick||c}):void 0,i?hi(hi({},i),{label:"Delete",onClick:i.onClick||u}):void 0,l?hi(hi({},l),{label:"Upload",onClick:l.onClick||f}):void 0,r?hi(hi({},r),{label:"Abort",onClick:r.onClick||s}):void 0].filter((function(e){return void 0!==e})),h="".concat(d?" top":" bottom"),g=il("files-ui-buttons-container"+h,a);return t.createElement("div",{className:g,style:o},m.map((function(e,n){var r=e.children,a=e.label,o=e.resetStyles,i=e.className,l=e.style,s=e.onClick;return t.createElement(ss,{key:n,className:i,style:l,resetStyles:o,onClick:function(e){return null==s?void 0:s(e)},disabled:p},r||a)})))},us=function(e){var n=e.onDrop,r=e.onDragLeave,a=e.className,o=e.open,i=e.style;return t.createElement("div",{className:a,onDragLeave:r,onDrop:n,style:i||{display:o?void 0:"none"}})};var fs=function(e,t,n,r){return{id:"files-dropzone-ui-style-id-"+e,sheetRules:[{className:"files-ui-dropzone-extra-".concat(e),rules:{color:Fl(t),border:"1px dashed ".concat(Fl(t)),borderRadius:Tl,background:n,minHeight:"number"==typeof r?"".concat(r,"px"):r}},{className:"files-ui-root-border-hide",rules:{borderColor:"transparent"}},{className:"files-ui-header-border-rd-".concat(e),rules:{"border-top-left-radius":Tl,"border-top-right-radius":Tl}},{className:"files-ui-footer-border-rd-top-bg-color-".concat(e),rules:{"border-bottom-left-radius":Tl,"border-bottom-right-radius":Tl,background:Fl(t,.129),borderTop:"1px dotted ".concat(Fl(t))}},{className:"files-ui-disabled-layer-color-".concat(e),rules:{borderRadius:Tl,background:Fl(t,.38)}}]}},ds=function(e,n,r,a,o,i,l,s,c){var u=t.useState(!1),f=u[0],d=u[1],p=t.useState(!1),m=p[0],h=p[1],g=t.useState(""),v=g[0],b=g[1],y=t.useState(void 0),x=y[0],w=y[1],E=t.useState(void 0),k=E[0],C=E[1],S=t.useState(!1),A=S[0],N=S[1];return t.useEffect((function(){return function(e,t,n,r,a,o,i,l,s,c){vi(void 0,void 0,void 0,(function(){var s,c,u;return bi(this,(function(f){switch(f.label){case 0:return e||t||n?(s=(e?function(e,t){var n="fallBack";if(!e)return n=Wi,(null==t?void 0:t.fallBack)?{url:null==t?void 0:t.fallBack,mimeResume:n}:{url:Yi[n],mimeResume:n};n=Vi(e.type);var r=Hi(e.name);"text"===n&&(n=Qi(r)),n===Wi&&(n=Gi(r));var a=null==t?void 0:t[n];return void 0!==a?{url:a,mimeResume:n}:{url:Yi[n],mimeResume:n}}(e,l):function(e,t,n){var r="octet";if(!e)return r=Wi,(null==n?void 0:n.fallBack)?{url:null==n?void 0:n.fallBack,mimeResume:r}:{url:Yi[r],mimeResume:r};r=Vi(t);var a=Hi(e);"text"===r&&(r=Qi(a)),r===Wi&&(r=Gi(a));var o=null==n?void 0:n[r];return void 0!==o?{url:o,mimeResume:r}:{url:Yi[r],mimeResume:r}}(t,n,l)).url,b(s),o&&i?(h(!0),w(o),C(i),N(!0),[2]):[3,1]):[2];case 1:return o?(d(!0),w(o),N(!0),[2]):[3,2];case 2:return i?(h(!0),C(i),N(!0),[3,5]):[3,3];case 3:return c=ps(e,n),d("image"===c[0]),["mp4","ogg","webm"].includes(c[1])&&h("video"===c[0]),!a||!r&&null!=r||"image"!==c[0]?[3,5]:(u=void 0,e?[4,Bi(e)]:[3,5]);case 4:(u=f.sent())&&w(u),f.label=5;case 5:return N(!0),[2]}}))}))}(e,n,r,a,o||!1,i,l,s),function(){w(void 0),d(!1),h(!1),N(!1)}}),[e,n,r,a,o,i,l,s]),[A,f,m,v,x,k]},ps=function(e,t){var n;return e?e.type?[(n=e.type.split("/"))[0],n[1]]:["octet","octet"]:(n=null==t?void 0:t.split("/"))&&n.length>1?[n[0],n[1]]:["octet","octet"]},ms=function(e){var n=_l(e,zl),r=n.onChange,a=n.value,o=void 0===a?[]:a,i=n.accept,l=n.maxFileSize,s=n.maxFiles,c=n.validator,u=n.cleanFiles,f=n.onClean,d=n.autoClean,p=n.uploadConfig,m=n.fakeUpload,h=n.onUploadStart,g=n.onUploadFinish,v=n.background,b=n.color,y=n.minHeight,x=n.style,w=n.className,E=n.label,k=n.localization,C=n.disableRipple,S=n.onDragEnter,A=n.onDragLeave,N=n.actionButtons,F=n.dropOnLayer,O=n.header,_=n.footer,L=n.headerConfig,z=void 0===L?{}:L,T=n.footerConfig,P=void 0===T?{}:T,j=n.disabled,D=n.clickable,R=n.behaviour,M=n.children,I=gi(n,["onChange","value","accept","maxFileSize","maxFiles","validator","cleanFiles","onClean","autoClean","uploadConfig","fakeUpload","onUploadStart","onUploadFinish","background","color","minHeight","style","className","label","localization","disableRipple","onDragEnter","onDragLeave","actionButtons","dropOnLayer","header","footer","headerConfig","footerConfig","disabled","clickable","behaviour","children"]),B=t.useContext(ls).localization,q=void 0!==k?k:B,U=p,$=U.url,H=U.method,W=U.headers,V=U.uploadLabel,G=U.cleanOnUpload,Q=void 0===G||G,Y=U.preparingTime,K=void 0===Y?1500:Y,X=U.autoUpload,Z=void 0!==X&&X,J=N,ee=J.position,te=J.abortButton,ne=J.deleteButton,re=J.uploadButton,ae=J.cleanButton,oe=J.style,ie=J.className,le=null==x?void 0:x.borderRadius,se=z.cleanFiles,ce=void 0===se||se,ue=z.deleteFiles,fe=void 0===ue||ue,de=z.maxFileSize,pe=void 0===de||de,me=z.uploadFiles,he=void 0===me||me,ge=z.uploadingIcon,ve=void 0===ge||ge,be=z.validFilesCount,ye=void 0===be||be,xe=z.customHeader,we=z.className,Ee=z.resetStyles,ke=void 0!==Ee&&Ee,Ce=z.style,Se=P.customFooter,Ae=P.noMissingFilesLabel,Ne=void 0===Ae||Ae,Fe=P.uploadProgressMessage,Oe=void 0===Fe||Fe,_e=P.uploadResultMessage,Le=void 0===_e||_e,ze=Mi(q),Te=t.useRef(null),Pe=t.useRef(null),je=t.useRef(null),De=t.useState(!1),Re=De[0],Me=De[1],Ie=t.useState(!1),Be=Ie[0],qe=Ie[1],Ue=t.useState(""),$e=Ue[0],He=Ue[1],We=t.useMemo((function(){return nl.getNextId()+""}),[]),Ve=function(e,t,n,r){return null!=e||null!=t||null!=n||null!=r}(i,l,s,c),Ge=function(e,n,r,a,o,i,l,s,c){var u=t.useState([]),f=u[0],d=u[1],p=t.useState(0),m=p[0],h=p[1];return t.useEffect((function(){var t=tl.getExtFileInstanceList(e);r?t&&t.forEach((function(e){var t=n.findIndex((function(t){return t.id===e.id}));if(-1===t)e.extraData={deleted:!0};else{var r=n[t];!function(e,t){var n=e.uploadStatus,r=t.uploadStatus;"preparing"===n&&["aborted",void 0].includes(r)?(e.uploadStatus=void 0,e.uploadMessage=t.uploadMessage):"uploading"===n&&["aborted",void 0].includes(r)&&(e.uploadStatus="aborted",e.uploadMessage=t.uploadMessage)}(e,r)}})):d(n)}),[e,n]),t.useEffect((function(){if(c){var e=ll(f,i?i-m:1/0,{maxFileSize:a,accept:o},l,i,s);d(e)}else d(f.map((function(e){return hi(hi({},e),{valid:void 0})})))}),[c,a,o,i,s]),t.useEffect((function(){h(c?f.filter((function(e){return e.valid})).length:f.length)}),[f,c]),[f,m,d]}(We,o||[],Be,l,i,s,c,q,Ve),Qe=Ge[0],Ye=Ge[1],Ke=Ge[2],Xe=function(e){return vi(void 0,void 0,void 0,(function(){var t,n,r,a,o,i,l,s,c,u,f,d,p,v,b;return bi(this,(function(y){switch(y.label){case 0:return qe(!0),Be||0===e.length||!$?(qe(!1),[2]):0===e.length?(He(ze.noFilesMessage),setTimeout((function(){qe(!1)}),1500),[2]):(t=[],n=e.length,r=e.filter((function(e){return function(e,t){return(!t||t&&e.valid)&&"success"!==e.uploadStatus}(e,Ve)})).length,a=0,o=0,i=ze.uploadingMessage,r>0?(Oe&&He(i("".concat(r,"/").concat(n))),null==h||h(e),t=tl.setFileListMapPreparing(We,e,Ve,Q)||[],l=yi([],t,!0).map((function(e){return e.toExtFile()})),ot(l,!0),[4,al(K)]):(setTimeout((function(){Ne&&He(ze.noFilesMessage),qe(!1)}),1500),[2]));case 1:y.sent(),s=[],c=0,y.label=2;case 2:return c<t.length?"preparing"!==(u=t[c]).uploadStatus||(null===(b=u.extraData)||void 0===b?void 0:b.deleted)?[3,14]:[4,vl()]:[3,16];case 3:return y.sent(),"preparing"===(E=u).uploadStatus&&(E.uploadStatus="uploading",Xi(Xi({},E),{uploadStatus:"uploading"})),Oe&&He(i("".concat(++o,"/").concat(r))),ot(bl(t),!0),f=void 0,m?[4,ol(u,ze)]:[3,8];case 4:f=y.sent(),d=0,y.label=5;case 5:return d<100?(d+=(void 0===(x=21)&&(x=0),void 0===(w=35)&&(w=0),Math.floor(Math.random()*(w-x))+x),u.progress=d>100?100:d,[4,vl(1e3)]):[3,7];case 6:return y.sent(),ot(bl(t),!0),[3,5];case 7:return[3,11];case 8:return y.trys.push([8,10,,11]),[4,hl(u,$,H,W,V)];case 9:return f=y.sent(),[3,11];case 10:return y.sent(),f=function(e){return Xi(Xi({},e),{uploadMessage:"Unexpected error",uploadStatus:"error",serverResponse:{success:!1,message:"Error on upload: unexpected error ",payload:{}}})}(u.toExtFile()),[3,11];case 11:return p=f,u.uploadStatus=p.uploadStatus,u.uploadMessage=p.uploadMessage,"aborted"===u.uploadStatus?[3,13]:[4,vl()];case 12:y.sent(),y.label=13;case 13:return ot(bl(t),!0),"error"===p.uploadStatus&&a++,s.push(f),[3,15];case 14:ot(bl(t),!0),y.label=15;case 15:return c++,[3,2];case 16:return Ke(bl(t)),null==g||g(s),v=ze.uploadFinished,Le&&He(v(r-a,a)),setTimeout((function(){qe(!1)}),2e3),[2]}var x,w,E}))}))},Ze=function(){var e=tl.getExtFileInstanceList(We);e&&e.forEach((function(e){"uploading"!==e.uploadStatus&&"preparing"!==e.uploadStatus||(null!==e.xhr&&void 0!==e.xhr&&e.xhr.abort(),e.uploadStatus="aborted",e.uploadMessage="Upload was aborted by user")}))},Je=function(e,n,r,a,o){var i=void 0===r&&void 0===a&&void 0===o?"default":e.replace(":","_").replace(":","_"),l=t.useState(""),s=l[0],c=l[1],u=t.useState(!1),f=u[0],d=u[1],p=t.useState(void 0),m=p[0],h=p[1],g=t.useState(void 0),v=g[0],b=g[1],y=t.useState(void 0),x=y[0],w=y[1],E=t.useState(void 0),k=E[0],C=E[1];return t.useEffect((function(){!function(e,t,n,r){var a="fui-dropzone-root fui-dropzone-border",o=fs(i,t,n,r),l="";f?Zl.editStyleSheet(s,o.sheetRules||[]):(l=Zl.insertStyleSheet(o),c(l),""!==l&&d(!0)),a+=" files-ui-dropzone-extra-".concat(i),e&&(a="".concat(a," ").concat(e)),h(a),b("files-ui-header-border-rd-".concat(i)),w("files-ui-footer-border-rd-top-bg-color-".concat(i)),C("files-ui-disabled-layer-color-".concat(i))}(n,r,a,o)}),[n,r,a,o]),[m,v,x,k]}(We,w,b,v,y),et=Je[0],tt=Je[1],nt=Je[2],rt=Je[3],at=function(e,n,r){var a=t.useState(""),o=a[0],i=a[1],l=t.useState(!1),s=l[0],c=l[1],u=t.useState(""),f=u[0],d=u[1],p=void 0===n?"default":e.replace(":","_").replace(":","_");return t.useEffect((function(){r&&function(e){var t="",n=function(e,t){return{id:"files-ui-drop-layer-style-id-"+e,sheetRules:[{className:"dropzone-layer-".concat(e),rules:{backgroundColor:Fl(t,.4),borderRadius:Tl,position:"absolute",left:0,top:0,width:"0%",height:"0%",zIndex:20,border:"0px dashed ".concat(Fl(t))}},{className:"dropzone-layer-drag",rules:{width:"100%",height:"100%",borderWidth:"2px"}}]}}(p,e),r="";"default"!==p||s?s?Zl.editStyleSheet(o,n.sheetRules||[]):(r=Zl.insertStyleSheet(n),i(r),""!==r&&c(!0)):Zl.existStyleSheet("files-ui-drop-layer-style-id-"+p)?(c(!0),i("files-ui-drop-layer-style-id-"+p)):(r=Zl.insertStyleSheet(n),i(r),""!==r&&c(!0)),t+="dropzone-layer-".concat(p),d(t)}(n)}),[n,r]),f}(We,b,!S&&!A);t.useEffect((function(){var e=ll(Qe,s?s-Ye:1/0,{maxFileSize:l,accept:i},c,s,q);Ke(e)}),[l,i,s,q]);var ot=function(e,t){var n=yi("add"!==R||t?[]:yi([],Qe,!0),e,!0);r?r(n):Ke(n),Z&&!t&&Xe(n)},it=function(e){var t=Ye;return"replace"===R&&(t=0),ll(e,s?s-t:1/0,{maxFileSize:l,accept:i},c,s,q)},lt=function(e){j||(Dl(e),Me(!1))},st=function(){!function(e,t,n){if(t&&e){e.style.display="block";var r=document.createElement("span");r.id="filesui-ripple",r.className="ripple";var a=Math.max(t.clientWidth,t.clientHeight);r.style.width=r.style.height="".concat(a,"px"),r.style.backgroundColor=Ml(n),t.appendChild(r),setTimeout((function(){e.style.display="none",null==r||r.remove()}),501)}}(Te.current,Pe.current,b)},ct=function(e){return vi(void 0,void 0,void 0,(function(){var t,n;return bi(this,(function(r){return jl(e),j||Be||(C||st(),Me(!1),t=e.dataTransfer.files,n=rl(t),Ve&&(n=it(n),d&&(n=n.filter((function(e){return e.valid})))),$&&(n=gl(n)),ot(n)),[2]}))}))},ut=function(){r?r([]):Ke([])},ft=function(){f?f():r?r(Qe.filter((function(e){return e.valid}))):Ke(Qe.filter((function(e){return e.valid})))},dt=et?Re&&F||j?il(et,"files-ui-root-border-hide"):et:void 0,pt=dt?D&&!j?il(dt,"clickable"):dt:void 0;return pt?t.createElement(t.Fragment,null,"before"===ee&&t.createElement(cs,{disabled:j,abortButton:Be?te:void 0,onAbort:Ze,deleteButton:ne,onDelete:Be?void 0:ut,uploadButton:Be||Z?void 0:re,onUpload:Z?void 0:function(){return Xe(Qe)},cleanButton:!Ve||Be||d?void 0:ae,onClean:ft,style:oe,className:ie,top:!0}),t.createElement("div",hi({style:x,className:pt},I,{onClick:function(){var e;!D||j||Be||(st(),(e=je.current)&&e.click())},onDragOver:function(e){Dl(e),j||Me(!0)},onDragLeave:F?void 0:lt,onDrop:F?void 0:ct}),!C&&t.createElement("div",{ref:Te,className:"filesui-base-ripple-absolute",style:{borderRadius:null==x?void 0:x.borderRadius}},t.createElement("div",{ref:Pe,className:"filesui-base-ripple-relative"})),t.createElement(t.Fragment,null,O?t.createElement(t.Fragment,null,xe?t.createElement(t.Fragment,null,xe):t.createElement(ts,{firstClassName:tt,color:Fl(b),style:Ce,className:we,resetStyles:ke,borderRadius:le,isUploading:Be&&ve,onReset:!Be&&fe?ut:void 0,maxFileSize:l&&pe?l:void 0,maxFiles:s&&ye?s:void 0,localization:q,urlPresent:void 0!==$&&he,onUploadStart:Z||re?void 0:function(){return Xe(Qe)},numberOfValidFiles:Ye,onClean:!ce||Be||ae||d?void 0:(u||f)&&Ve?ft:void 0})):t.createElement(t.Fragment,null)),t.createElement(Pl,{label:E,localization:q},M),t.createElement(t.Fragment,null,Se?t.createElement(t.Fragment,null,Se):t.createElement(t.Fragment,null,_&&t.createElement(ns,hi({firstClassName:nt,borderRadius:le,accept:i,message:Be?$e:void 0,localization:q},P)))),F&&t.createElement(us,{open:Re,className:Re?"".concat(at," dropzone-layer-drag"):at,onDragLeave:lt,onDrop:ct,style:{borderRadius:null==x?void 0:x.borderRadius}}),t.createElement(Ll,{multiple:!s||s>1,accept:i||"",inputRef:je,onChange:function(e){var t,n=e.target.files,r=rl(n);Ve&&(r=it(r),d&&(r=r.filter((function(e){return e.valid})))),$&&(r=gl(r)),(t=je.current)&&(t.value=""),ot(r)}}),t.createElement(Il,{open:j,className:rt})),"after"===ee&&t.createElement(cs,{disabled:j,abortButton:Be?te:void 0,onAbort:Ze,deleteButton:ne,onDelete:Be?void 0:ut,uploadButton:Be||Z?void 0:re,onUpload:Z?void 0:function(){return Xe(Qe)},cleanButton:!Ve||Be||d?void 0:ae,onClean:ft,style:oe,className:ie,top:!1})):t.createElement(t.Fragment,null)};mi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.fui-avatar-main-container {\\n width: 200px;\\n height: 200px;\\n position: relative;\\n background-color: transparent;\\n overflow: hidden;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background-color: rgba(128, 128, 128, 0.486);\\n border-radius: 10px;\\n font-family: "Poppins", sans-serif;\\n}\\n.fui-avatar-main-container.square {\\n border-radius: 0px;\\n}\\n.fui-avatar-main-container.circle {\\n border-radius: 50%;\\n}\\n.fui-avatar-main-container .fui-avatar-image {\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n.fui-avatar-main-container:hover .fui-avatar-label.hide {\\n display: flex;\\n}\\n.fui-avatar-main-container .fui-avatar-label {\\n margin: 0;\\n overflow: hidden;\\n background-color: rgba(128, 128, 128, 0.486);\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n color: white;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n text-align: center;\\n flex-direction: column;\\n}\\n.fui-avatar-main-container .fui-avatar-label.hide {\\n display: none;\\n}\\n.fui-avatar-main-container .fui-avatar-label:hover {\\n background-color: rgba(71, 71, 71, 0.74);\\n display: flex;\\n cursor: pointer;\\n}\');var hs=function(e){var n=e.size,r=e.color,a=e.style,o=e.radius,i=e.x,l=e.y,s=e.width,c=o||46,u=i||50,f=l||50,d=Bl(n),p=a||{};return t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"".concat(d,"px"),height:"".concat(d,"px"),style:p,viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid"},t.createElement("circle",{cx:"".concat(u),cy:"".concat(f),r:"".concat(c),fill:"none",stroke:r||"#14ff00",strokeWidth:"".concat(s||8,"px"),strokeDasharray:"164.93361431346415 100.97787143782138"},t.createElement("animateTransform",{attributeName:"transform",type:"rotate",repeatCount:"indefinite",dur:"1s",values:"0 ".concat(u," ").concat(u,";360 ").concat(u," ").concat(u),keyTimes:"0;1"})))};mi(".files-ui-loader-container {\\n background-color: rgba(0, 0, 0, 0.41);\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n overflow: hidden;\\n position: relative;\\n}\\n.files-ui-loader-container.clickable {\\n cursor: pointer;\\n}\\n.files-ui-loader-container:hover {\\n background-color: rgba(0, 0, 0, 0.61);\\n}");var gs=function(e){var n=e.children,r=e.className,a=e.style,o=e.size,i=e.onClick,l=o?Bl(o):void 0,s=i?"files-ui-loader-container clickable":"files-ui-loader-container";return t.createElement("div",{onClick:function(){null==i||i()},className:r?"".concat(s," ").concat(r):s,style:hi(hi({},a),{height:l,width:l})},n)},vs=function(e){var n=e.onClick,r=e.size;return t.createElement(gs,{onClick:n,size:r},t.createElement(t.Fragment,null,t.createElement(hs,{size:r}),t.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}},n&&t.createElement(Hl,{color:"rgba(255,255,255,0.75)",size:45,onClick:n}))))};mi(".files-ui-layer {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n}");var bs=function(e){var n=e.style,r=e.className,a=e.children,o=e.visible,i=gi(e,["style","className","children","visible"]),l=il(r||"","files-ui-layer");return o?t.createElement("div",hi({className:l,style:n},i),a):t.createElement(t.Fragment,null)},ys={alt:"image-preview",smartImgFit:"orientation"};mi(".fui-image-preview {\\n position: relative;\\n border-radius: 10px;\\n}");var xs=function(e){var n=_l(e,ys),r=n.src,a=n.alt,o=n.width,i=n.height,l=n.onError,s=n.smartImgFit,c=n.style,u=n.className,f=t.useState([void 0,void 0]),d=f[0],p=d[0],m=d[1],h=f[1],g=t.useState(void 0),v=g[0],b=g[1],y=function(e){return vi(void 0,void 0,void 0,(function(){var t,n;return bi(this,(function(r){switch(r.label){case 0:return""!==e&&e?(t=void 0,n=void 0,s?[3,1]:(n="100%",[3,4])):[2];case 1:return r.trys.push([1,3,,4]),[4,qi(e)];case 2:return"landscape"===r.sent()?"orientation"===s?(t=void 0,n="100%"):(t="100%",n=void 0):"center"===s?(t=void 0,n="100%"):(t="100%",n=void 0),[3,4];case 3:return r.sent(),null==l||l(),[3,4];case 4:return i&&(t=i),o&&(n=o),h([t,n]),b(e),[2]}}))}))};return t.useEffect((function(){r&&("string"==typeof r?y(r):"image"===(r.type?r.type.split("/")[0]:"octet")?function(e){vi(void 0,void 0,void 0,(function(){var t;return bi(this,(function(n){switch(n.label){case 0:return[4,Bi(e)];case 1:return t=n.sent(),y(t),[2]}}))}))}(r):null==l||l())}),[r]),t.createElement(t.Fragment,null,r&&v&&(p||m)&&t.createElement("img",{style:c||{},onClick:function(e){e.preventDefault()},width:m,height:p,src:v,alt:a,className:u,onError:function(e){null==l||l()}}))};mi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.files-ui-file-card-main-container {\\n border-radius: 8px;\\n color: rgba(0, 0, 0, 0.858);\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n min-height: 100px;\\n box-sizing: border-box;\\n position: relative;\\n font-size: 15px;\\n font-weight: 400;\\n width: 320px;\\n font-family: "Poppins", sans-serif;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container {\\n border-radius: 8px;\\n overflow: hidden;\\n width: 320px;\\n box-sizing: border-box;\\n height: 100px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer {\\n box-sizing: border-box;\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n box-sizing: border-box;\\n align-items: center;\\n justify-content: space-between;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n gap: 5px;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container {\\n width: 100px;\\n height: 100px;\\n overflow: hidden;\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-icon-layer {\\n box-sizing: border-box;\\n position: absolute;\\n width: 100px;\\n height: 100px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-icon-layer img {\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-icon-layer.blur img {\\n filter: blur(4px);\\n width: 200%;\\n height: 200%;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-icon-container .file-card-status-layer {\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n padding: 5px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data {\\n padding-right: 10px;\\n box-sizing: border-box;\\n line-height: 19px;\\n font-weight: 500;\\n width: calc(100% - 100px);\\n word-break: break-all;\\n color: black;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n height: 100%;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data.dark-mode {\\n color: rgba(255, 255, 255, 0.7);\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data .file-card-size {\\n font-weight: 400;\\n font-size: 0.9rem;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data .file-card-name {\\n font-size: 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 1; /* number of lines to show */\\n line-clamp: 1;\\n -webkit-box-orient: vertical;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-main-layer .file-card-icon-plus-data .file-card-data .file-card-name.not-allowed {\\n background-color: rgba(180, 16, 16, 0.7);\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-upload-layer-container {\\n cursor: default;\\n display: flex;\\n box-sizing: border-box;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.625), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9));\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n position: relative;\\n overflow: hidden;\\n align-items: center;\\n justify-content: flex-end;\\n height: 100%;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container {\\n cursor: default;\\n display: flex;\\n box-sizing: border-box;\\n background: linear-gradient(to right, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9));\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n overflow: hidden;\\n align-items: center;\\n justify-content: flex-end;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info {\\n width: calc(100% - 100px);\\n height: 100px;\\n text-align: left;\\n scrollbar-width: thin;\\n overflow: auto;\\n scrollbar-color: rgba(100, 108, 127, 0.662745098) transparent;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info::-webkit-scrollbar {\\n width: 9px;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info::-webkit-scrollbar-thumb {\\n background-color: rgba(100, 108, 127, 0.662745098);\\n border-radius: 20px;\\n border: transparent;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info .files-ui-file-card-info-layer-header {\\n display: flex;\\n width: 100%;\\n flex-direction: row;\\n align-items: center;\\n justify-content: flex-end;\\n /* position: absolute;\\n top: 5;\\n right: 5; */\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info .heading {\\n font-weight: 600;\\n padding: 0 5px;\\n}\\n.files-ui-file-card-main-container .files-ui-file-card-main-layer-container .file-card-info-layer-container .file-card-file-info .label {\\n padding: 0 5px;\\n font-weight: 399;\\n}\\n.files-ui-file-card-main-container.clickable {\\n cursor: pointer;\\n}\\n\\n/* .files-ui-file-icon {\\n font-size: 0.7rem;\\n min-width: 19px;\\n min-height: 19px;\\n margin: 0;\\n padding: 2px 2px;\\n border-radius: 50%;\\n background-color: rgba(32, 33, 36, 0.65);\\n word-break: break-word;\\n box-sizing: content-box;\\n &:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n }\\n &.dark-mode {\\n background-color: rgba(154, 160, 166, 0.65);\\n &:hover {\\n background-color: rgba(154, 160, 166, 0.85);\\n }\\n }\\n} */\'),mi(".files-ui-file-icon {\\n font-size: 0.7rem;\\n min-width: 19px;\\n min-height: 19px;\\n margin: 0;\\n padding: 2px 2px;\\n border-radius: 50%;\\n background-color: rgba(32, 33, 36, 0.65);\\n word-break: break-word;\\n box-sizing: content-box;\\n}\\n.files-ui-file-icon:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n}\\n.files-ui-file-icon.dark-mode {\\n background-color: rgba(154, 160, 166, 0.65);\\n}\\n.files-ui-file-icon.dark-mode:hover {\\n background-color: rgba(154, 160, 166, 0.85);\\n}"),mi(".files-ui-file-card-main-container.dark-mode {\\n color: rgba(255, 255, 255, 0.7);\\n background-color: #121212;\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-0 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-1 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-2 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.07));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-3 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.08));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-4 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.09));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-5 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-6 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.11));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-7 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.11));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-8 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-9 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-10 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.13));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-11 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.13));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-12 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-13 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-14 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-15 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.14));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-16 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-17 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-18 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.13), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-19 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.15));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-20 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-21 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-22 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-23 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.dark-mode.elevation-24 {\\n background-image: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16));\\n}\\n.files-ui-file-card-main-container.elevation-0 {\\n box-shadow: none;\\n}\\n.files-ui-file-card-main-container.elevation-1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-2 {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-8 {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.files-ui-file-card-main-container.elevation-24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}"),mi(".file-card-right-layer-header {\\n margin-top: 3px;\\n margin-right: 3px;\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: unset;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n gap: 2px;\\n}\\n\\n.file-card-right-layer-footer {\\n margin-bottom: 3px;\\n margin-right: 3px;\\n left: unset;\\n position: absolute;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n gap: 2px;\\n bottom: 0;\\n right: 0;\\n}");var ws=function(e){var n=e.localization,r=e.size,a=Oi(n).status;return t.createElement(t.Fragment,null,t.createElement(Vl,{color:"#f44336",size:r||65}),t.createElement("span",null," ",a.aborted))},Es=function(e){var n=e.height,r=n?"number"==typeof n?"".concat(n,"px"):n:"132px";return t.createElement(t.Fragment,null,t.createElement("div",{style:{width:"100%",height:r}}))},ks=function(e){var n=e.localization,r=e.size,a=Oi(n).status;return t.createElement(t.Fragment,null,t.createElement(Hl,{color:"rgba(255,255,255,0.4)",style:{backgroundColor:"rgba(244, 67, 54, 0.8)",borderRadius:"50%"},size:r||65}),t.createElement("span",null," ",a.error))},Cs=function(e){var n=e.onCancel,r=e.localization,a=e.size,o=Oi(r).status;return t.createElement(t.Fragment,null,t.createElement(vs,{onClick:n,size:a||65}),t.createElement("span",null,o.preparing))},Ss=function(e){var n=e.localization,r=e.size,a=Oi(n).status;return t.createElement(t.Fragment,null,t.createElement(Ul,{color:"#4caf50",size:r||65}),t.createElement("span",null," ",a.success))};mi("text.files-ui-text-dynamic-loader {\\n text-anchor: middle;\\n font-size: 1em;\\n fill: aliceblue;\\n}");var As=function(e){var n=e.size,r=e.color,a=e.style,o=e.percentage,i=e.hidePerncentage,l=e.radius,s=e.x,c=e.y,u=e.width,f=e.onClick,d=l||28,p=s||30,m=c||30,h=Bl(n),g=a||{},v=t.useRef(null);return t.useEffect((function(){var e=v.current;if(null!=e&&void 0!==o){var t=2*Math.PI*e.r.baseVal.value;e.style.strokeDasharray="".concat(t," 1000"),function(e,t,n){t.style.strokeDashoffset="".concat(n*(1-e/100))}(o>=100?100:o,e,t)}}),[o]),void 0!==o?t.createElement(gs,{size:n},t.createElement(t.Fragment,null,t.createElement("svg",{className:"dui_svg_circle_loader",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"".concat(h,"px"),height:"".concat(h,"px"),style:g},t.createElement("circle",{style:{transform:"rotate(-90deg)",transformOrigin:"center"},stroke:r||"#14ff00",cx:"".concat(p),cy:"".concat(m),r:"".concat(d),strokeWidth:"".concat(u||8,"px"),id:"circle",ref:v,fill:"none"}),!i&&void 0!==o&&t.createElement("text",{className:"files-ui-text-dynamic-loader",x:"".concat(p),y:"".concat(7*p/6)},"".concat(o.toFixed(0)," %"))),f&&t.createElement("div",{style:{position:"absolute",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}},t.createElement(Hl,{color:"rgba(255,255,255,0.75)",size:45,onClick:f})))):t.createElement(t.Fragment,null)};mi(".lds-colorbar {\\n background-color: rgba(255, 255, 255, 0.8);\\n border-radius: 4px;\\n}\\n.lds-colorbar .files-ui-text-default-loader {\\n font-size: 1.5rem;\\n font-weight: 400;\\n text-anchor: middle;\\n}");var Ns=function(e){var n=e.localization,r=e.size,a=e.onAbort,o=e.progress,i=Oi(n).status;return t.createElement(t.Fragment,null,void 0!==o?t.createElement(As,{size:70,x:35,y:35,radius:32,percentage:o,width:6,hidePerncentage:void 0===o||void 0!==a,onClick:a}):t.createElement(vs,{onClick:a,size:r||70}),t.createElement("span",null," ",i.uploading))};mi(".files-ui-file-card-upload-layer {\\n width: 100px;\\n height: 100%;\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n position: relative;\\n overflow: hidden;\\n}\\n.files-ui-file-card-upload-layer .elevation-list-card {\\n transition: all 1.5s ease;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n}\\n.files-ui-file-card-upload-layer .elevation-list-card .elevation-item-card {\\n width: 100%;\\n height: 100px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n padding: 0 10px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-card-upload-layer .elevation-list-card .elevation-item-card span {\\n text-align: center;\\n word-break: break-word;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2; /* number of lines to show */\\n line-clamp: 2;\\n -webkit-box-orient: vertical;\\n}"),mi(\'.files-ui-tooltip {\\n cursor: default;\\n position: relative;\\n}\\n.files-ui-tooltip:hover {\\n z-index: 2;\\n}\\n.files-ui-tooltip:hover .files-ui-tooltiptext {\\n visibility: visible;\\n opacity: 1;\\n z-index: 2;\\n}\\n.files-ui-tooltip.card:hover {\\n z-index: 2;\\n}\\n.files-ui-tooltip.card:hover .files-ui-tooltiptext {\\n visibility: visible;\\n opacity: 1;\\n z-index: 2;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext {\\n box-sizing: border-box;\\n font-family: "Poppins", sans-serif;\\n font-size: 0.8rem;\\n font-weight: 400;\\n visibility: hidden;\\n width: 200px;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 2px 2px;\\n position: absolute;\\n z-index: 2;\\n left: calc(50% - 100px);\\n left: 0;\\n margin-top: 5px;\\n top: 100%;\\n opacity: 0;\\n transition: opacity 1s;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.not-valid-error {\\n background: linear-gradient(to top, #c62828, #d32f2f);\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.not-valid-error::after {\\n border-color: transparent transparent #d32f2f transparent;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.success {\\n background: linear-gradient(to top, #1b5e20, #2e7d32);\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext.success::after {\\n border-color: transparent transparent #2e7d32 transparent;\\n}\\n.files-ui-tooltip.card .files-ui-tooltiptext::after {\\n content: "";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border-width: 5px;\\n border-style: solid;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext {\\n box-sizing: border-box;\\n font-family: "Poppins", sans-serif;\\n font-size: 0.8rem;\\n font-weight: 400;\\n visibility: hidden;\\n width: 132px;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 2px 2px;\\n position: absolute;\\n z-index: 2;\\n left: 0;\\n opacity: 0;\\n transition: opacity 1s;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.not-valid-error {\\n background: linear-gradient(to top, #c62828, #d32f2f);\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.not-valid-error::after {\\n border-color: transparent transparent #d32f2f transparent;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.success {\\n background: linear-gradient(to top, #1b5e20, #2e7d32);\\n}\\n.files-ui-tooltip .files-ui-tooltiptext.success::after {\\n border-color: transparent transparent #2e7d32 transparent;\\n}\\n.files-ui-tooltip .files-ui-tooltiptext::after {\\n content: "";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border-width: 5px;\\n border-style: solid;\\n}\');var Fs=function(e){var n=e.uploadStatus,r=e.valid,a=e.errors,o=e.uploadMessage,i=e.open,l=t.useState(void 0),s=l[0],c=l[1],u=t.useState(void 0),f=u[0],d=u[1];return t.useEffect((function(){!function(e,t){void 0!==e?(d(o),c("success"===e?"success":"not-valid-error")):void 0!==t&&(t||(c("not-valid-error"),d(a?a.reduce((function(e,t){return e+"".concat(t,". ")}),""):"")))}(n,r)}),[n,r]),t.createElement(t.Fragment,null,i&&f&&s&&t.createElement("span",{className:"files-ui-tooltiptext ".concat(s)},f))},Os=function(e){var n=e.downloadUrl,r=e.anchorRef,a=e.fileName;return n?t.createElement("a",{ref:r,target:"_blank",href:n,download:a,hidden:!0,rel:"noopener noreferrer",onClick:function(e){e.stopPropagation()}},"download_file"):t.createElement(t.Fragment,null)};mi(\'@import url(https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,900);\\n.files-ui-file-mosaic-main-container {\\n width: 132px;\\n box-sizing: border-box;\\n font-family: "Poppins", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n word-break: break-word;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container {\\n width: 132px;\\n height: 132px;\\n border-radius: 8px;\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-image-layer {\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-image-layer img {\\n background-repeat: no-repeat;\\n background-size: cover;\\n background-position: center;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-image-layer.blur img {\\n filter: blur(4px);\\n width: 200%;\\n height: 200%;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer {\\n position: absolute;\\n left: 0;\\n right: 0;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex-direction: column;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-header {\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-footer {\\n width: 100%;\\n display: flex;\\n align-items: flex-end;\\n justify-content: space-between;\\n flex-direction: row;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-footer .file-mosaic-footer-right {\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n flex-grow: 1;\\n align-items: flex-end;\\n justify-content: flex-end;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-main-layer .file-mosaic-main-layer-footer .file-mosaic-footer-left {\\n display: flex;\\n align-items: center;\\n flex-direction: column;\\n flex-grow: 1;\\n align-items: flex-start;\\n justify-content: center;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer {\\n position: absolute;\\n left: 0;\\n right: 0;\\n text-align: left;\\n scrollbar-width: thin;\\n line-height: 1.5;\\n letter-spacing: 0.02857em;\\n font-family: "Poppins", sans-serif;\\n width: inherit;\\n background-color: rgba(0, 0, 0, 0.85);\\n word-break: break-word;\\n height: 100%;\\n width: 100%;\\n font-size: 0.8rem;\\n transition: all 0.5s ease 0s;\\n overflow: auto;\\n color: white;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer::-webkit-scrollbar {\\n width: 9px;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer::-webkit-scrollbar-thumb {\\n background-color: rgba(100, 108, 127, 0.662745098);\\n border-radius: 20px;\\n border: transparent;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer .files-ui-file-mosaic-info-layer-header {\\n display: flex;\\n width: 100%;\\n flex-direction: row;\\n align-items: center;\\n justify-content: space-between;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer .heading {\\n font-weight: 600;\\n padding: 0 5px;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-icon-layer-container .files-ui-file-mosaic-info-layer .label {\\n padding: 0 5px;\\n font-weight: 399;\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-file-name {\\n margin-top: 1px;\\n height: 31px;\\n text-align: center;\\n width: 100%;\\n color: black;\\n font-size: 0.95em;\\n box-sizing: border-box;\\n line-height: 15px;\\n font-weight: 400;\\n letter-spacing: 0.07rem;\\n word-break: break-all;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2; /* number of lines to show */\\n line-clamp: 2;\\n -webkit-box-orient: vertical;\\n /* display: flex;\\n align-items: center;\\n justify-content: center; */\\n}\\n.files-ui-file-mosaic-main-container .files-ui-file-mosaic-file-name.dark-mode {\\n color: rgba(255, 255, 255, 0.7);\\n}\\n.files-ui-file-mosaic-main-container.clickable {\\n cursor: pointer;\\n}\\n\\n/* .files-ui-file-icon {\\n font-size: 0.7rem;\\n min-width: 19px;\\n min-height: 19px;\\n margin: 0;\\n padding: 2px 2px;\\n border-radius: 50%;\\n background-color: rgba(32, 33, 36, 0.65);\\n word-break: break-word;\\n box-sizing: content-box;\\n &:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n }\\n &.dark-mode {\\n background-color: rgba(154, 160, 166, 0.65);\\n &:hover {\\n background-color: rgba(154, 160, 166, 0.85);\\n }\\n }\\n}\\n */\'),mi(".files-ui-layer-container {\\n position: relative;\\n}");var _s=function(e){var n=e.style,r=e.className,a=e.children,o=il(r||"","files-ui-layer-container");return t.createElement("div",{className:o,style:n},a)},Ls=function(e){var n=e.fileName;return n?t.createElement("span",null,n):t.createElement(t.Fragment,null)};mi(".files-ui-file-mosaic-upload-layer {\\n width: 100%;\\n height: 100%;\\n background-color: rgba(0, 0, 0, 0.65);\\n color: rgba(255, 255, 255, 0.8);\\n font-weight: 500;\\n font-size: 1em;\\n position: relative;\\n overflow: hidden;\\n}\\n.files-ui-file-mosaic-upload-layer .elevation-list {\\n transition: all 1.5s ease;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n}\\n.files-ui-file-mosaic-upload-layer .elevation-list .elevation-item {\\n width: 100%;\\n height: 132px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n padding: 0 10px;\\n box-sizing: border-box;\\n}\\n.files-ui-file-mosaic-upload-layer .elevation-list .elevation-item span {\\n text-align: center;\\n word-break: break-word;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: -webkit-box;\\n -webkit-line-clamp: 2; /* number of lines to show */\\n line-clamp: 2;\\n -webkit-box-orient: vertical;\\n}");var zs=function(e){var n=e.uploadStatus,r=e.onCancel,a=e.onAbort,o=e.progress,i=e.localization,l=t.useRef(null),s=t.useRef(null),c=t.useState([void 0]),u=c[0],f=c[1];return t.useEffect((function(){f((function(e){if("preparing"===e[e.length-1]&&"uploading"===n){var t=yi([],e,!0);return t[e.length-1]=n,yi([],t,!0)}return yi(yi([],e,!0),[n],!1)}))}),[n]),t.useEffect((function(){var e,t;u.length>1&&(e=l.current,t=s.current,null!==e&&null!==t&&(t.style.top=0-132*(u.length-1)+"px"))}),[u.length]),t.createElement("div",{className:"elevation-layer-container",ref:l},t.createElement("div",{className:"elevation-list",ref:s},u.map((function(e,n){switch(e){case"preparing":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Cs,{onCancel:r,localization:i}));case"uploading":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Ns,{onAbort:a,progress:o,localization:i}));case"error":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(ks,{localization:i}));case"success":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Ss,{localization:i}));case"aborted":return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(ws,{localization:i}));default:return t.createElement("div",{className:"elevation-item",key:n+1},t.createElement(Es,null))}}))))},Ts=function(e){var n=e.imageSource,r=e.url,a=e.fileName,o=e.card,i=e.isBlur,l=e.smartImgFit,s=t.useState(void 0),c=s[0],u=s[1],f=t.useState(!1),d=f[0],p=f[1];return t.useEffect((function(){u(n||r)}),[n,r]),i?t.createElement(t.Fragment,null,!o&&!d&&n&&t.createElement(xs,{src:c,alt:"blur ".concat(a),smartImgFit:!1})):t.createElement(t.Fragment,null,t.createElement(xs,{onError:function(){p(!0),u(r)},src:c,style:{borderRadius:"0px"},alt:"preview ".concat(a),smartImgFit:l}))};mi(".files-ui-file-item-status-container {\\n text-align: center;\\n font-size: 0.8rem;\\n background-color: rgba(255, 255, 255, 0.8);\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n border-radius: 4px;\\n padding: 0.5px;\\n font-weight: 400;\\n}\\n.files-ui-file-item-status-container.file-status-error {\\n color: #f44336;\\n}\\n.files-ui-file-item-status-container.file-status-ok {\\n color: #5c7a1f;\\n}\\n.files-ui-file-item-status-container.file-status-loading {\\n position: relative;\\n display: flex;\\n color: #8b6b10;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n background-color: rgba(255, 255, 255, 0.7);\\n}\\n.files-ui-file-item-status-container.file-status-loading.percentage {\\n padding: 7px 4px 2px 5px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .abort-button {\\n position: absolute;\\n right: -2px;\\n top: -2px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .uploading-text.up {\\n margin-bottom: -22px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .uploading-text.down {\\n margin-top: -20px;\\n}\\n.files-ui-file-item-status-container.file-status-loading .uploading-text p.percentage {\\n font-weight: 500;\\n}");var Ps=function(e){var n=e.valid,r=e.uploadStatus,a=e.localization,o=e.style,i=Oi(a).status;return"success"===r?t.createElement("div",{className:"files-ui-file-item-status-container file-status-ok",style:o},t.createElement(Wl,{color:"#4caf50",size:"small",className:"status-icon"}),i.success):"error"===r||"aborted"===r?t.createElement("div",{className:"files-ui-file-item-status-container file-status-error",style:o},t.createElement(Xl,{color:"#f44336",size:"semi-medium",className:"status-icon"}),i.error):null!=n?n?t.createElement("div",{className:"files-ui-file-item-status-container file-status-ok",style:o},t.createElement(Ul,{color:"#4caf50",size:"small",className:"status-icon"}),i.valid):t.createElement("div",{className:"files-ui-file-item-status-container file-status-error",style:o},t.createElement(Vl,{color:"#f44336",size:"small",className:"status-icon"}),i.denied):t.createElement(t.Fragment,null)},js=function(e){var n=e.valid,r=e.localization,a=e.onCloseInfo,o=e.uploadStatus,i=e.localName,l=e.sizeFormatted,s=e.localType,c=Oi(r).fullInfoLayer,u=c.name,f=c.size,d=c.type;return t.createElement(t.Fragment,null,t.createElement("div",{className:"files-ui-file-mosaic-info-layer-header"},t.createElement(ql,{color:"rgba(255,255,255,0.8)",onClick:a,colorFill:"black"}),t.createElement(Ps,{valid:n,uploadStatus:o,localization:r})),t.createElement("div",{className:"heading"},u),t.createElement("div",{className:"label"},i),t.createElement("div",{className:"heading"},f),t.createElement("div",{className:"label"},l),t.createElement("div",{className:"heading"},d),t.createElement("div",{className:"label"},s))};mi(".filesui-file-item-size {\\n box-sizing: border-box;\\n font-size: 0.7rem;\\n border: 0.5px solid wheat;\\n text-align: center;\\n color: rgba(255, 255, 255, 0.89);\\n padding: 2px 1.5px;\\n border-radius: 7px;\\n background-color: rgba(32, 33, 36, 0.75);\\n min-width: 45px;\\n word-break: break-word;\\n font-family: inherit;\\n}\\n.filesui-file-item-size:hover {\\n background-color: rgba(32, 33, 36, 0.85);\\n color: rgba(255, 255, 255, 0.97);\\n}");var Ds=function(e){var n=e.sizeFormatted;return t.createElement(t.Fragment,null,n&&t.createElement("div",{className:"filesui-file-item-size"},n))},Rs=function(e){var n=e.darkMode,r=e.deleteIcon,a=e.downloadIcon,o=e.imageIcon,i=e.infoIcon,l=e.onDelete,s=e.onDownload,c=e.onOpenInfo,u=e.onSee,f=e.onWatch,d=e.sizeFormatted,p=e.valid,m=e.videoIcon,h=e.localization,g=e.uploadStatus,v=e.isActive;return t.createElement(t.Fragment,null,t.createElement("div",{className:"file-mosaic-main-layer-header"},v&&r&&t.createElement(Hl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:l,size:"small",colorFill:"transparent"})),t.createElement("div",{className:"file-mosaic-main-layer-footer"},t.createElement("div",{className:"file-mosaic-footer-left"},t.createElement(Ps,{valid:p,uploadStatus:g,localization:h}),v&&d&&t.createElement(Ds,{sizeFormatted:d})),t.createElement("div",{className:"file-mosaic-footer-right"},v&&t.createElement(t.Fragment,null,o&&t.createElement(es,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:u,size:"small"}),m&&t.createElement(Yl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:f,size:"small"}),a&&t.createElement(Gl,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",color:n?"#121212":"rgba(255,255,255,0.851)",onClick:s,size:"small"}),i&&t.createElement(Ql,{className:n?"files-ui-file-icon dark-mode":"files-ui-file-icon",onClick:c,color:n?"#121212":"rgba(255,255,255,0.851)",size:"micro"})))))},Ms=function(e){var n=e.style,r=e.className,a=e.file,o=e.name,i=e.size,l=e.type,s=e.id,c=e.valid,u=e.errors,f=e.uploadStatus,d=e.uploadMessage,p=e.progress,m=e.xhr,h=e.localization,g=e.preview,v=e.imageUrl,b=e.videoUrl,y=e.info,x=e.backgroundBlurImage,w=void 0===x||x,E=e.darkMode,k=e.alwaysActive,C=void 0===k||k,S=e.resultOnTooltip,A=void 0===S||S,N=e.downloadUrl,F=e.onDelete,O=e.onCancel,_=e.onAbort,L=e.onDownload,z=e.onSee,T=e.onWatch,P=e.onDoubleClick,j=e.onClick,D=e.onRightClick,R=e.smartImgFit,M=void 0===R?"orientation":R,I=t.useContext(ls),B=I.darkMode,q=I.icons,U=I.localization,$=void 0!==h?h:U,H=void 0!==E?E:B,W=t.useRef(null),V=il(il("files-ui-file-mosaic-main-container files-ui-tooltip",r),j?"clickable":void 0),G=H?"files-ui-file-mosaic-file-name dark-mode":"files-ui-file-mosaic-file-name",Q=function(e,t,n,r){var a="",o=void 0,i=void 0;return e&&"string"==typeof e.name?(a=e.name,o=e.type,i=e.size):t&&"string"==typeof t&&(a=t,o=n,i=r),[a,o,i]}(a,o,l,i),Y=Q[0],K=Q[1],X=Q[2],Z=function(e,n){var r=t.useState(void 0),a=r[0],o=r[1];return void 0!==e?a!==e&&o(e):null!=n&&null===n.upload.onprogress&&(n.upload.onprogress=function(e){o(e.loaded/e.total*100)},o(0)),a}(p,m),J=ds(a,o,l,c,g,v,b,q),ee=J[0],te=J[1],ne=J[2],re=J[3],ae=J[4],oe=J[5],ie=xi(X),le=t.useState(!1),se=le[0],ce=le[1],ue=t.useState(!1),fe=ue[0],de=ue[1],pe=function(){return ce(!1)},me=function(e){var n=t.useState(!1),r=n[0],a=n[1],o=t.useState(e),i=o[0],l=o[1];return t.useEffect((function(){l(e),["uploading","preparing"].includes(i||"")&&["success","error","aborted"].includes(e||"")?setTimeout((function(){a(!1)}),3500):a("preparing"===e||"uploading"===e)}),[e]),r}(f);return t.useEffect((function(){me&&se&&pe()}),[me]),ee?t.createElement("div",{className:V,style:n,onClick:function(e){e.stopPropagation(),null==j||j(e)},onMouseEnter:function(){C||de(!0)},onMouseLeave:function(){C||de(!1)},onDoubleClick:function(e){e.preventDefault(),null==P||P(e)},onContextMenu:function(e){null==D||D(e)}},t.createElement(_s,{className:"files-ui-file-mosaic-icon-layer-container",style:n},t.createElement(bs,{className:"files-ui-file-mosaic-image-layer blur",visible:w},t.createElement(Ts,{imageSource:ae,url:re,fileName:Y,isBlur:!0,smartImgFit:!1})),t.createElement(bs,{className:"files-ui-file-mosaic-image-layer",visible:!0},t.createElement(Ts,{imageSource:ae,url:re,fileName:Y,isBlur:!1,smartImgFit:M})),t.createElement(bs,{className:"files-ui-file-mosaic-main-layer",visible:!me&&!se},t.createElement(Rs,{deleteIcon:void 0!==F,onDelete:function(){return null==F?void 0:F(s)},darkMode:H,valid:c,uploadStatus:f,localization:$,sizeFormatted:ie,imageIcon:te&&void 0!==z,onSee:function(){return null==z?void 0:z(ae)},videoIcon:ne&&void 0!==T,onWatch:function(){return null==T?void 0:T(oe)},downloadIcon:void 0!==L||void 0!==N,onDownload:function(){var e;L?null==L||L(s,N):"string"==typeof N&&(e=W.current)&&e.click()},infoIcon:void 0!==y,onOpenInfo:function(){return ce(!0)},isActive:C||fe})),t.createElement(bs,{className:"files-ui-file-mosaic-info-layer",visible:se,onClick:Rl},t.createElement(js,{onCloseInfo:pe,valid:c,localization:$,localName:Y,sizeFormatted:ie,localType:K})),t.createElement(bs,{className:"files-ui-file-mosaic-upload-layer",visible:me,onClick:Rl},t.createElement(zs,{uploadStatus:f,progress:Z,onCancel:O?function(){return null==O?void 0:O(s)}:void 0,onAbort:_?function(){null==m||m.abort(),null==_||_(s)}:void 0,localization:$}))),t.createElement("div",{className:G},t.createElement(Ls,{fileName:Y})),t.createElement(Fs,{open:A,uploadStatus:f,valid:c,errors:u,uploadMessage:d}),t.createElement(Os,{fileName:Y,anchorRef:W,downloadUrl:N})):t.createElement(t.Fragment,null)};function Is(e){return Is="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Is(e)}function Bs(){Bs=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function c(e,t,n,a){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),l=new S(a||[]);return r(i,"_invoke",{value:w(e,n,l)}),i}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function m(){}var h={};s(h,o,(function(){return this}));var g=Object.getPrototypeOf,v=g&&g(g(A([])));v&&v!==t&&n.call(v,o)&&(h=v);var b=m.prototype=d.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function a(r,o,i,l){var s=u(e[r],e,o);if("throw"!==s.type){var c=s.arg,f=c.value;return f&&"object"==Is(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){a("next",e,i,l)}),(function(e){a("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return a("throw",e,i,l)}))}l(s.arg)}var o;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){a(e,n,t,r)}))}return o=o?o.then(r,r):r()}})}function w(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===f)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),f;var a=u(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,f;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:N}}function N(){return{value:void 0,done:!0}}return p.prototype=m,r(b,"constructor",{value:m,configurable:!0}),r(m,"constructor",{value:p,configurable:!0}),p.displayName=s(m,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},y(x.prototype),s(x.prototype,i,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new x(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(b),s(b,l,"Generator"),s(b,o,(function(){return this})),s(b,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=A,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}function qs(e,t,n,r,a,o,i){try{var l=e[o](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,a)}function Us(){return Us=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Us.apply(this,arguments)}function $s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Hs(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$s(Object(n),!0).forEach((function(t){Ws(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ws(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==Is(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==Is(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Is(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Vs(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],s=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Gs(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Gs(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Gs(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}mi(".fui-fullscreen-container {\\n position: fixed;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 100%;\\n height: 100vh;\\n top: 0;\\n left: 0;\\n background: rgba(0, 0, 0, 0.734);\\n transform: translate(100%);\\n transition: transform 0.2s ease-in-out;\\n margin: 0 !important;\\n z-index: 4000;\\n box-sizing: border-box;\\n}\\n.fui-fullscreen-container.show-fs {\\n transform: translate(0);\\n}\\n\\n.fui-fullscreen-relative-container {\\n position: relative;\\n width: 90%;\\n height: 90%;\\n overflow: hidden;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n /* @media (max-width: 600px) {\\n width: 80%;\\n height: auto;\\n }*/\\n}\\n.fui-fullscreen-relative-container img {\\n height: 100%;\\n width: auto;\\n}\\n.fui-fullscreen-relative-container video {\\n height: 100%;\\n width: auto;\\n}\\n@media (max-width: 960px) {\\n .fui-fullscreen-relative-container {\\n height: 90%;\\n width: 100%;\\n }\\n .fui-fullscreen-relative-container video {\\n height: auto;\\n width: 100%;\\n }\\n .fui-fullscreen-relative-container img {\\n height: auto;\\n width: 100%;\\n }\\n}\\n\\n.button-full-screen {\\n position: absolute;\\n top: 0;\\n right: 0;\\n}");var Qs=function(e){var r=e.name,a=e.edit,o=e.setNewDir,i=e.idx,l=(0,t.useRef)(),s=Vs((0,t.useState)(r||""),2),c=s[0],u=s[1];return(0,t.useEffect)((function(){a&&l.current.focus()}),[l,a]),(0,t.useEffect)((function(){if(c.indexOf("/")>-1){var e=c.split("/",2);u(e[0]);var t={name:e[1],edit:!0};o({name:e[0],edit:!1},i,t)}}),[c,o,i]),a?n().createElement("span",{className:"input-group"},n().createElement("input",{ref:l,onChange:function(e){u(e.target.value)},value:c,onKeyDown:function(e){"Enter"===e.key&&o({name:c,edit:!1},i)},className:"form-control",title:"Insert new directory name. A directory name must not contain the slash \'/\'.",onBlur:function(e){var t;null!==(t=e.relatedTarget)&&void 0!==t&&t.classList.contains("caosdb-f-cancel-new-directory")?o({edit:!1},i):o({name:c,edit:!1},i)}}),n().createElement("button",{className:"btn btn-outline-secondary caosdb-f-cancel-new-directory"},n().createElement("i",{className:"bi bi-x"})),n().createElement("button",{className:"btn btn-outline-secondary"},n().createElement("i",{className:"bi bi-check"}))):n().createElement("button",{ref:l,onClick:function(){o({name:c,edit:!0},i)},className:"btn btn-link",style:{paddingLeft:"0.1rem",paddingRight:"0rem"}},c,"/")},Ys=function(e){var r=e.setDirectory,a=e.value,o=Vs((0,t.useState)(a.map((function(e){return{name:e}}))),2),i=o[0],l=o[1],s=(0,t.useCallback)((function(e,t,n){var a=[].concat(i);e.name?a[t]=e:a=a.slice(0,t).concat(a.slice(t+1)),n&&(a=a.slice(0,t+1).concat([n],a.slice(t+1))),l(a),r(a.map((function(e){return e.name})))}),[i,l,r]),c=(0,t.useCallback)((function(){var e=i.map((function(e){return Hs(Hs({},e),{},{edit:!1})}));e.push({edit:!0}),l(e)}),[i,l]);return n().createElement(n().Fragment,null,i.map((function(e,t){return n().createElement(Qs,{key:"".concat(e.name,"-").concat(t),idx:t,name:e.name,setNewDir:s,edit:e.edit})})),i.filter((function(e){return e.edit})).length>0||n().createElement("button",{className:"ms-auto btn btn-outline-secondary",onClick:function(){return c()}},n().createElement("i",{className:"bi bi-folder-plus"})))},Ks=function(e){var t=e.directoryBase,r=e.readOnly,a=e.value,o=e.setDirectory,i=e.label||"Directory";return n().createElement("div",{className:"mb-1 row caosdb-f-file-upload-directory-input"},n().createElement("label",{className:"col-sm-3 col-form-label"},i),n().createElement("div",{className:"col-sm-9 d-flex"},!t||n().createElement("span",{style:{width:"unset",display:"inline-block"},className:"form-control-plaintext"},t.join("/")+"/"),r||n().createElement(Ys,{setDirectory:o,value:a})))},Xs=function(e){var t=e.options,r=e.onChange,a=e.value,o=e.className;return n().createElement("select",{className:o,onChange:r,value:a},n().createElement("option",{value:""}),t.map((function(e,t){return n().createElement("option",{key:t,value:e.value,title:e.title},e.label||e.value)})))},Zs=function(e){var t=e.options,r=e.value,a=e.onChange,o=e.label||"RecordType",i=!t,l=i?"form-control-plaintext":"form-control form-select";return n().createElement("div",{className:"mb-1 row caosdb-f-file-upload-recordtype-select"},n().createElement("label",{className:"pe-1 col-sm-3 col-form-label"},o),n().createElement("div",{className:"col-sm-9"},!i||n().createElement("input",{className:l,readOnly:i,value:r}),i||n().createElement(ui,{promise:Promise.all([t,r]),then:function(e){return n().createElement(Xs,{className:l,options:e[0],onChange:a,value:e[1]})}})))},Js=function(e){var t=e.file,r=e.removeFile;return n().createElement(Ms,Us({},t,{onDelete:r}))},ec=function(e){var t=e.children;return n().createElement(Te,{type:"error"},"The file upload failed: ",t)},tc=function(e){var t=e.children;return n().createElement("div",null,t||n().createElement(Te,{type:"success"},"Your files have been uploaded."))},nc=function(e){var t,r=e.directory,a=e.file;return t=e.responseErrors?n().createElement(n().Fragment,null,n().createElement("div",{className:"col-sm-6"},a.path.replaceAll(r,"")),n().createElement("div",{className:"col-sm-6 text-end"},a.error?n().createElement("div",{className:"text-danger"},a.error):n().createElement("i",{className:"text-success bi bi-check"}))):n().createElement(n().Fragment,null,n().createElement("div",{className:"col-sm-6"},a.path.replaceAll(r,"")),n().createElement("div",{className:"col-sm-4"},a.id),n().createElement("div",{className:"col-sm-2 text-end"},n().createElement("a",{className:"btn caosdb-fs-btn-file",href:a.url},n().createElement("span",{className:"badge caosdb-label-file"},"F")))),n().createElement("li",{className:"list-group-item"},n().createElement("div",{className:"row"},t))},rc=function(e){var t,r=e.hasErrors?n().createElement(Te,{type:"error"},"The file upload failed."):n().createElement(n().Fragment,null,n().createElement(Te,{type:"success"},"Your files have been uploaded."),!e.url||n().createElement("div",{className:"mb-3"},"Go to directory: ",n().createElement("a",{href:e.url},e.directory)));return n().createElement("div",null,r,n().createElement("ul",{className:"list-group"},n().createElement("li",{className:"list-group-item"},n().createElement("div",{className:"row"},n().createElement("div",{className:"col-sm-6"}),e.hasErrors?n().createElement("div",{className:"col-sm-6 text-end fw-bold"},"Error"):n().createElement(n().Fragment,null,n().createElement("div",{className:"col-sm-3 fw-bold"},"ID"),n().createElement("div",{className:"col-sm-3 text-end fw-bold"},"File Entity")))),null===(t=e.newFiles)||void 0===t?void 0:t.map((function(t,r){return n().createElement(nc,{responseErrors:e.hasErrors,directory:e.directory,file:t,key:r})}))))},ac=function(e){return null!=e&&e.split?e.split("/").filter((function(e){return e})):e},oc=function(e){var r=e.files,a=e.onCancel,o=e.recordTypeShow,i=e.recordTypes,l=e.directoryBase,s=e.directory,c=e.directoryReadOnly,u=e.directoryShow,f=e.recordType,d=e.onChange,p=e.onSubmit,m=e.accept,h=e.state,g=e.onFinish,v=Vs((0,t.useState)(r||[]),2),b=v[0],y=v[1],x=Vs((0,t.useState)(ac(s)||[]),2),w=x[0],E=x[1],k=Vs((0,t.useState)(f),2),C=k[0],S=k[1],A=Vs((0,t.useState)(h||"READY"),2),N=A[0],F=A[1],O=Vs((0,t.useState)(),2),_=O[0],L=O[1],z=Vs((0,t.useState)(),2),T=z[0],P=z[1],j=(0,t.useMemo)((function(){return{files:b,directory:ac(l).concat(w),recordType:C}}),[b,C,w,l]);(0,t.useEffect)((function(){d&&d(j)}),[j,d]);var D=(0,t.useMemo)((function(){var e,t,r,o;return{position:"after",deleteButton:a&&{className:"btn btn-outline-secondary",children:["Cancel"],resetStyles:!0,onClick:a},uploadButton:p&&{disabled:!(null!==(e=j.files)&&void 0!==e&&e.length)>0,className:(null===(t=j.files)||void 0===t?void 0:t.length)>0?"btn btn-primary":"btn btn-primary disabled",resetStyles:!0,children:["Upload"],onClick:(r=Bs().mark((function e(){var t,r;return Bs().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return F("SENDING"),e.prev=1,e.t0=p,e.t1=Hs,e.t2=Hs({},j),e.t3={},e.next=8,j.recordType;case 8:return e.t4=e.sent,e.t5={recordType:e.t4},e.t6=(0,e.t1)(e.t2,e.t3,e.t5),e.next=13,(0,e.t0)(e.t6);case 13:t=e.sent,r=rc(t),F("SUCCESS"),P(r),e.next=23;break;case 19:e.prev=19,e.t7=e.catch(1),F("FAILED"),L(n().createElement(ec,null,e.t7.message));case 23:case"end":return e.stop()}}),e,null,[[1,19]])})),o=function(){var e=this,t=arguments;return new Promise((function(n,a){var o=r.apply(e,t);function i(e){qs(o,n,a,i,l,"next",e)}function l(e){qs(o,n,a,i,l,"throw",e)}i(void 0)}))},function(){return o.apply(this,arguments)})}}}),[j,p,F,L,a]),R=(0,t.useCallback)((function(e){y(e)}),[y]),M=(0,t.useCallback)((function(e){S(e.target.value)}),[S]),I=function(e){y(b.filter((function(t){return t.id!==e})))};return n().createElement("div",{style:{minWidth:"500px"}},"SENDING"===N&&n().createElement("div",{className:"text-center"},n().createElement(je,{color:"primary"})),"READY"===N&&n().createElement(n().Fragment,null,(i||C)&&o&&n().createElement(Zs,{options:i,value:C,onChange:M}),!u||n().createElement(Ks,{directoryBase:ac(l),readOnly:c,value:w,setDirectory:E}),n().createElement(ms,{accept:m,actionButtons:D,onChange:R,value:b},b.map((function(e){return n().createElement(Js,{key:e.id,file:e,removeFile:I})})))),_,!("SUCCESS"===N)||n().createElement(tc,null,T),("SUCCESS"===N||"FAILED"===N)&&g&&n().createElement("div",{className:"mt-3 text-end"},n().createElement("button",{type:"reset",title:"Close this file upload dialogue.",className:"btn btn-outline-secondary",onClick:g},"Ok")))};oc.defaultProps={directoryShow:!0,directoryReadOnly:!1,recordTypeShow:!0,directoryBase:[],directory:[]};var ic=a(379),lc=a.n(ic),sc=a(795),cc=a.n(sc),uc=a(569),fc=a.n(uc),dc=a(565),pc=a.n(dc),mc=a(216),hc=a.n(mc),gc=a(589),vc=a.n(gc),bc=a(550),yc={};yc.styleTagTransform=vc(),yc.setAttributes=pc(),yc.insert=fc().bind(null,"head"),yc.domAPI=cc(),yc.insertStyleElement=hc(),lc()(bc.Z,yc),bc.Z&&bc.Z.locals&&bc.Z.locals}(),o}()}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cS9CLEVBQ1Z4K0csTUFBTzYrRyxFQUNQbEMsYUFBY0EsSUFHbEIsa0JBQUNsUSxHQUFRLENBQ1BwcUIsT0FBUUEsRUFDUm1mLGNBQWVBLEVBQ2ZqOUMsU0FBVTg2RCxFQUNWci9HLE1BQU8yK0csR0FFTkEsRUFBT2poSCxLQUFJLFNBQUM0bEYsR0FBSSxPQUNmLGtCQUFDLEdBQUksQ0FBQ3JtRixJQUFLcW1GLEVBQUtobUYsR0FBSWdtRixLQUFNQSxFQUFNbzZCLFdBQVlBLEdBQWMsTUFPakUzK0IsSUFDYSxZQUFYaWdDLElBQ0Qsa0JBQUNwQixHQUFpQixLQUFFcUIsSUFFVCxZQUFYRCxHQUFtQyxXQUFYQSxJQUF3Qk4sR0FDaEQseUJBQUszb0UsVUFBVSxpQkFDYiw0QkFDRWh4QyxLQUFLLFFBQ0wwK0MsTUFBTSxtQ0FDTjFOLFVBQVUsNEJBQ1ZwVCxRQUFTKzdFLEdBQ1YsT0FPWCxFQUVBTCxHQUFXaHRGLGFBQWUsQ0FDeEJvdEYsZUFBZSxFQUNmRCxtQkFBbUIsRUFDbkJGLGdCQUFnQixFQUNoQm5CLGNBQWUsR0FDZlcsVUFBVyxnSkNoZ0JULEdBQVUsQ0FBQyxFQUVmLEdBQVF0ckUsa0JBQW9CLEtBQzVCLEdBQVFMLGNBQWdCLEtBRWxCLEdBQVFOLE9BQVMsVUFBYyxLQUFNLFFBRTNDLEdBQVFWLE9BQVMsS0FDakIsR0FBUW9CLG1CQUFxQixLQUVoQixLQUFJLEtBQVMsSUFLSixNQUFXLGFBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbj9kZGQ3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzPzM4ZWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2luZGV4LnNjc3M/NGVjZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzPzQ0MjUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanM/NTYxOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvaW52YXJpYW50L2Jyb3dzZXIuanM/OWQ4YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy1leHRyYS9saWIvYWxsLmpzP2VkYjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMtZXh0cmEvbGliL3V0aWxzL2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyLmpzP2Q4ZmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzPzUxZjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanM/OTc2NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanM/MDc5MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanM/ODkwNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzPzZlN2UiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanM/Nzc4MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvaW5kZXguanM/MzZiOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzPzcxZjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzP2Q1YjUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzPzBmY2EiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcz9iNzNjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcz9lYmUzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcz9mZjdkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzPzRlYTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanM/NGRiZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvdGV4dGFyZWEtY2FyZXQvaW5kZXguanM/Y2VkYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvd2FybmluZy93YXJuaW5nLmpzPzM3MTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL2V4dGVybmFsIHVtZCB7XCJjb21tb25qc1wiOlwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIsXCJjb21tb25qczJcIjpcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiLFwiYW1kXCI6XCJDYW9zREJJbmZvU2VydmljZVwiLFwicm9vdFwiOlwiQ2Fvc0RCSW5mb1NlcnZpY2VcIn0/MWY5OSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgdW1kIHtcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiY29tbW9uanMyXCI6XCJyZWFjdFwiLFwiYW1kXCI6XCJSZWFjdFwiLFwicm9vdFwiOlwiUmVhY3RcIn0/ZjczNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ib290c3RyYXA/NWNiNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQ/MGYwNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzPzJkMDQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9nbG9iYWw/Njg1NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZD9iZjNkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Pzk3NWEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9ub25jZT9hYzk0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9JbmZvU2VydmljZS5qcz85YjNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1NlcnZlclZlcnNpb25JbmZvLmpzeD9kYjA0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzPzM2OWMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanM/YTE1ZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvdW5jb250cm9sbGFibGUvbGliL2VzbS91dGlscy5qcz9kOGQ2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy91bmNvbnRyb2xsYWJsZS9saWIvZXNtL2hvb2suanM/ZGI1YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUV2ZW50Q2FsbGJhY2suanM/YzUxYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUNvbW1pdHRlZFJlZi5qcz81YTdiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlTW91bnRlZC5qcz9jZmQ0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlUHJldmlvdXMuanM/ZTQ1NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUlzb21vcnBoaWNFZmZlY3QuanM/ZTE4ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVJlc2l6ZU9ic2VydmVyLmpzPzlmM2YiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9CdXR0b24uanM/NzJhYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0FuY2hvci5qcz84ZWQ5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL1RoZW1lUHJvdmlkZXIuanM/YjAzYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanM/MGExYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5qcz8yZDQ2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS9UcmFuc2l0aW9uLmpzP2Q3ZjciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2UuanM/MDcwYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vdXRpbHMvcmVmbG93LmpzPzM3NTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9vd25lckRvY3VtZW50LmpzPzE1NTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9oeXBoZW5hdGUuanM/NjIzNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2h5cGhlbmF0ZVN0eWxlLmpzPzdlNTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9pc1RyYW5zZm9ybS5qcz8yYWQ5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY3NzLmpzP2UxOTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9nZXRDb21wdXRlZFN0eWxlLmpzP2E0ZGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9vd25lcldpbmRvdy5qcz81YTJmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY2FuVXNlRE9NLmpzPzRhMDciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hZGRFdmVudExpc3RlbmVyLmpzP2Q1MTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9saXN0ZW4uanM/ZmU5MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3JlbW92ZUV2ZW50TGlzdGVuZXIuanM/MDk0MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3RyYW5zaXRpb25FbmQuanM/ZmJkZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3RyaWdnZXJFdmVudC5qcz80NzU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3RyYW5zaXRpb25FbmRMaXN0ZW5lci5qcz9kZDNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3RyaWdnZXJCcm93c2VyUmVmbG93LmpzPzQ1ODkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VNZXJnZWRSZWZzLmpzPzFhZTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vVHJhbnNpdGlvbldyYXBwZXIuanM/NjE0OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9zYWZlRmluZERPTU5vZGUuanM/YmQ0YSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9GYWRlLmpzPzRhZmQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQ2xvc2VCdXR0b24uanM/OTUwMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9kaXZXaXRoQ2xhc3NOYW1lLmpzP2Q4MWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9jYW1lbGl6ZS5qcz9iZDdiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL2NyZWF0ZVdpdGhCc1ByZWZpeC5qcz8xMzMwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0FsZXJ0LmpzPzA2NDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvTWVzc2FnZS5qc3g/Mjc1YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Mb2FkaW5nSW5mby5qc3g/MTdlOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Mb2dpbkZvcm0uanN4P2E1ZjMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9xdWVyeVNlbGVjdG9yQWxsLmpzPzc5YTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VGb3JjZVVwZGF0ZS5qcz9jODljIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25Db250ZXh0LmpzPzhiZTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RlcXVhbC9kaXN0L2luZGV4Lm1qcz8yNmJiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcz83ZmUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcz9lMzZjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanM/ZDUyZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanM/N2I1MSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcz8xZThhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanM/ODkyZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanM/ZTdmNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzPzhmMzIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvY29udGFpbnMuanM/MTk2OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcz9jMGEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanM/YTFiZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcz82OWNlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcz8zMDBhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanM/MmRiMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanM/MWFkMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcz84NGYzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzPzYyOGUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanM/MWZkNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcz9iYTY2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzPzQ2NTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcz9kNWE4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzPzFiYjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanM/YjhhMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzP2I1OWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanM/NDhkOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzP2FhYmUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcz9mNWZhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcz8xZTk2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanM/MDc0OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcz9hNjQ1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcz9jMGViIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzPzliYTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzPzEzZWUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzPzQ4MDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzP2Q5YTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzP2QwODYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcz83NjQzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanM/MTliMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzPzA1NjciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qcz81MGFiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanM/MDAwMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanM/MDc2ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanM/ZWU5NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanM/ZmMwMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzPzVmNDAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcz8yZmMxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzPzVlNDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcz80NTBjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzPzY2ODUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9wb3BwZXIuanM/NGQ4MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzP2M2MzMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcz80NDk0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanM/NGQ3MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZVBvcHBlci5qcz8wMjA3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlU2FmZVN0YXRlLmpzP2E5NTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9jb250YWlucy5qcz8yMjNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXNlQ2xpY2tPdXRzaWRlLmpzPzNhN2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9tZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnLmpzPzUyNzgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93bk1lbnUuanM/NDJhZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUNhbGxiYWNrUmVmLmpzP2I0OGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZWFjdC1hcmlhL3Nzci9kaXN0L2ltcG9ydC5tanM/N2Y3OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duVG9nZ2xlLmpzPzVjN2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9TZWxlY3RhYmxlQ29udGV4dC5qcz9kNDc5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTmF2Q29udGV4dC5qcz8yMzIwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRGF0YUtleS5qcz84ZjcwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25JdGVtLmpzPzA0OTkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VXaW5kb3cuanM/OWVmNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duLmpzP2JkNjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL25vZGVfbW9kdWxlcy91bmNvbnRyb2xsYWJsZS9saWIvZXNtL2luZGV4LmpzP2I2YjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VFdmVudExpc3RlbmVyLmpzP2EyZTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25Db250ZXh0LmpzPzQ3ZDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25JdGVtLmpzPzJmZTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vSW5wdXRHcm91cENvbnRleHQuanM/YTRjNSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJDb250ZXh0LmpzPzMwNGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nLmpzPzk1MTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25NZW51LmpzP2ZhOTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQnV0dG9uLmpzP2ZkYTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd25Ub2dnbGUuanM/YTI5ZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Ecm9wZG93bi5qcz85Yjk4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vVGFiQ29udGV4dC5qcz8yMmI3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTmF2SXRlbS5qcz9lY2IyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdkxpbmsuanM/MWZhMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZEcm9wZG93bi5qcz9jNTExIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1VzZXJDb21wb25lbnQuanN4P2Q2ZGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL0JyYW5kaW5nLmpzP2E3ODMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9OYXYuanM/NTRkMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9DYXJkSGVhZGVyQ29udGV4dC5qcz9hYmUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdkl0ZW0uanM/ZDVjNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXYuanM/ZTY3ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJCcmFuZC5qcz9iM2E4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL2NyZWF0ZUNoYWluZWRGdW5jdGlvbi5qcz80MDI4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0NvbGxhcHNlLmpzP2QyM2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyQ29sbGFwc2UuanM/YjZiMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJUb2dnbGUuanM/NTY0ZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZU1lZGlhUXVlcnkuanM/ZDU2ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUJyZWFrcG9pbnQuanM/NTc2MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2FjdGl2ZUVsZW1lbnQuanM/ODQ5NyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL01vZGFsTWFuYWdlci5qcz84NmI5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vZ2V0U2Nyb2xsYmFyV2lkdGguanM/YmUxMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZVdhaXRGb3JET01SZWYuanM/NWViMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05vb3BUcmFuc2l0aW9uLmpzPzUxYWQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9JbXBlcmF0aXZlVHJhbnNpdGlvbi5qcz9jMzc0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTW9kYWwuanM/YmJlYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVdpbGxVbm1vdW50LmpzP2Y4YTYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VVcGRhdGVkUmVmLmpzPzNiNTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91dGlscy5qcz80Y2IxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhc0JvZHkuanM/MzY1MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNUb2dnbGluZy5qcz9hZTk1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL01vZGFsQ29udGV4dC5qcz9hMDlkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Fic3RyYWN0TW9kYWxIZWFkZXIuanM/YWJlMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNIZWFkZXIuanM/MmY2MiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNUaXRsZS5qcz8xNDEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vcmVtb3ZlQ2xhc3MuanM/YTFhMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Cb290c3RyYXBNb2RhbE1hbmFnZXIuanM/NzllNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2FkZENsYXNzLmpzPzJlMjkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9oYXNDbGFzcy5qcz80NTVlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL09mZmNhbnZhcy5qcz9mNTI0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhck9mZmNhbnZhcy5qcz80MzkzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhci5qcz80MTFmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0NvbnRhaW5lci5qcz80OWQ4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5Rm9ybS5oZWxwZXJzLmpzPzcwOGQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvUXVlcnlGb3JtLmpzeD80MDMyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5UGFuZWwuanN4PzMwZDEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvVG9wTmF2aWdhdGlvbkJhci5qc3g/ZWUwOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9IZWFkZXIuanN4P2I1ZmIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvRm9vdGVyLmpzeD8xOGQzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0F3YWl0LmpzeD9hNDhkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0NoZWNrYm94LmpzeD9iYWNiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0NhcmQuanN4PzEzNTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BmaWxlcy11aS9yZWFjdC9idWlsZC9pbmRleC5lcy5qcz9lM2YwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0ZpbGVVcGxvYWQuanN4P2NhMzgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2luZGV4LnNjc3M/ZWQ3NSJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSwgKGZ1bmN0aW9uIHdlYnBhY2tMb2FkT3B0aW9uYWxFeHRlcm5hbE1vZHVsZSgpIHsgdHJ5IHsgcmV0dXJuIHJlcXVpcmUoXCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIik7IH0gY2F0Y2goZSkge30gfSgpKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXCJSZWFjdFwiLCBcIkNhb3NEQkluZm9TZXJ2aWNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIkNhb3NEQkNvcmVDb21wb25lbnRzXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIiksIChmdW5jdGlvbiB3ZWJwYWNrTG9hZE9wdGlvbmFsRXh0ZXJuYWxNb2R1bGUoKSB7IHRyeSB7IHJldHVybiByZXF1aXJlKFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIpOyB9IGNhdGNoKGUpIHt9IH0oKSkpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkNhb3NEQkNvcmVDb21wb25lbnRzXCJdID0gZmFjdG9yeShyb290W1wiUmVhY3RcIl0sIHJvb3RbXCJDYW9zREJJbmZvU2VydmljZVwiXSk7XG59KShzZWxmLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX182MzlfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTg5X18pIHtcbnJldHVybiAiLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuY2Fvc2RiLWYtcXVlcnktY3FsLWhpbnR7Ym9yZGVyLXJhZGl1czoycmVtO2JhY2tncm91bmQtY29sb3I6I2Q5ZDlkOTtjb2xvcjojMjYyNjI2O3BhZGRpbmc6LjFyZW0gLjRyZW19LmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne2Rpc3BsYXk6bm9uZX1uYXYgLm5hdmJhci1jb2xsYXBzZXthbGlnbi1pdGVtczpzdGFydDtmbGV4LXdyYXA6d3JhcH1uYXYgLm5hdmJhci1jb2xsYXBzZSBmb3Jte2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4sLmNhb3NkYi1mLXF1ZXJ5LXBhbmVse21hcmdpbi10b3A6LjVyZW07d2lkdGg6MTAwJTtvcmRlcjoxfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybXtvcmRlcjp1bnNldDtoZWlnaHQ6NDRweDtwYWRkaW5nLWxlZnQ6MnJlbTtwYWRkaW5nLXRvcDouNXJlbTtwYWRkaW5nLXJpZ2h0OjJyZW07cGFkZGluZy1ib3R0b206LjVyZW07Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjJyZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm06aG92ZXIsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtOmhvdmVyLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1c3tib3gtc2hhZG93OjAgMXB4IDZweCByZ2JhKDMyLDMzLDM2LC4yOCl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3ttYXJnaW4tdG9wOi41cmVtO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtaGVpZ2h0OjIwMHB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93LXk6YXV0bztib3gtc2hhZG93OjAgNHB4IDZweCByZ2JhKDMyLDMzLDM2LC4yOCk7cGFkZGluZzowcHh9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaXtwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbTtoZWlnaHQ6MjRweDtsaXN0LXN0eWxlLXR5cGU6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpLmhpZ2hsaWdodCwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaS5oaWdobGlnaHR7YmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGk6aG92ZXIsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLnN1Ym1pdC5vcGVuIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMuc3VibWl0Lm9wZW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBidXR0b24sLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0e2JvcmRlcjpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLC5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLXZpc2libGUsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0OmZvY3VzLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cy12aXNpYmxle291dGxpbmU6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiBmb3JtLC5jYW9zZGItZi1xdWVyeS1wYW5lbCBmb3Jte2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3QsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdHttYXJnaW4tdG9wOi41cmVtO3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVyc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyBpbnB1dC5mb3JtLWNvbnRyb2wsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyBpbnB1dC5mb3JtLWNvbnRyb2x7ZGlzcGxheTp1bnNldDt3aWR0aDp1bnNldH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFie2hlaWdodDo0NHB4O21hcmdpbi1yaWdodDoxcmVtO3BhZGRpbmc6NnB4O2JhY2tncm91bmQtY29sb3I6dW5zZXQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLWJvdHRvbTouMnJlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS10YWIuYWN0aXZlLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLmFjdGl2ZXtib3JkZXItYm90dG9tOi4ycmVtIHNvbGlkIGdyYXl9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvciwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvcntmbGV4LWJhc2lzOjEwMCV9QG1lZGlhKG1pbi13aWR0aDogOTkycHgpey5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptYXgtY29udGVudCBtYXgtY29udGVudCBhdXRvIG1heC1jb250ZW50O2dyaWQtY29sdW1uLWdhcDouNXJlbTtwYWRkaW5nOi4ycmVtIDByZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyBpbnB1dC5mb3JtLWNvbnRyb2x7ZGlzcGxheTp1bnNldDt3aWR0aDp1bnNldH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2Vke21hcmdpbi10b3A6MDt3aWR0aDp1bnNldDtvcmRlcjp1bnNldH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIGZvcm17ZmxleC1kaXJlY3Rpb246cm93fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlcnMtdG9nZ2xle2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS10YWItbGlzdHttYXJnaW4tdG9wOjByZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktdGFie2hlaWdodDozOHB4fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJze2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS1mb3Jte2hlaWdodDozOHB4O29yZGVyOjE7cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy10b3A6LjNyZW07cGFkZGluZy1yaWdodDoxcmVtO3BhZGRpbmctYm90dG9tOi4zcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3Vne2Rpc3BsYXk6bm9uZX19LnVzZXItY29tcG9uZW50IC5hbGVydHtwYWRkaW5nLXRvcDouMzc1cmVtO3BhZGRpbmctYm90dG9tOi4zNzVyZW07Zm9udC1zaXplOjFyZW07bWFyZ2luOjB9aGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KTtib3JkZXItcmFkaXVzOjB9Zm9vdGVye2NvbG9yOiM4Nzg3ODd9Zm9vdGVyIC5uYXZ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2EwYTBhMH1mb290ZXIgLm5hdi1saW5re2NvbG9yOiM4Nzg3ODcgIWltcG9ydGFudH1mb290ZXIgLm5hdi1saW5rOmhvdmVye2NvbG9yOiM2ZDZkNmQgIWltcG9ydGFudH1mb290ZXIgLmZvb3Rlci1ib2R5e2JvcmRlci10b3A6MXB4IHNvbGlkICNiYWJhYmE7YmFja2dyb3VuZC1jb2xvcjojZDNkM2QzO21pbi1oZWlnaHQ6MjByZW19Zm9vdGVyIC5mb290ZXItYm9yZGVye2hlaWdodDozcmVtO2JveC1zaGFkb3c6MHB4IC01cHggN3B4IC01cHggcmdiYSgwLDAsMCwuNCkgaW5zZXQ7LXdlYmtpdC1ib3gtc2hhZG93OjBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwwLDAsLjQpIGluc2V0Oy1tb3otYm94LXNoYWRvdzowcHggLTVweCA2cHggLTdweCByZ2JhKDAsMCwwLC40KSBpbnNldH0uY2Fvc2RiLWNoZWNrYm94e2N1cnNvcjpwb2ludGVyfS5jYW9zZGItY2hlY2tib3ggLmNhb3NkYi1jaGVja2JveC1pY29ue2ZvbnQtc2l6ZToxLjNlbX0uY2Fvc2RiLWNoZWNrYm94IC5jYW9zZGItY2hlY2stYm94LWlucHV0e2Rpc3BsYXk6bm9uZX0uY2Fvc2RiLWNoZWNrYm94LnJlYWQtb25seXtjdXJzb3I6YXV0b30uY29sb3ItbGlnaHQtZ3JlZW57Y29sb3I6I2I0ZTYwMH0ubWluaWNhcmR7Ym9yZGVyOjFweCBzb2xpZCByZWQ7d2lkdGg6NDAwcHg7ZGlzcGxheTpmbGV4fS5taW5pY2FyZCAubWluaWNhcmQtdGl0bGV7YmFja2dyb3VuZC1jb2xvcjpyZWR9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL2NvbXBvbmVudHMvUXVlcnlGb3JtLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9pbmRleC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUlBLHlCQUNFLGtCQUFBLENBQ0Esd0JBQUEsQ0FDQSxhQUFBLENBQ0EsbUJBQUEsQ0FHRix5QkFDRSxZQUFBLENBR0YscUJBQ0UsaUJBQUEsQ0FDQSxjQUFBLENBRUEsMEJBQ0UsWUFBQSxDQUNBLHFCQUFBLENBSUosbUVBRUUsZ0JBQUEsQ0FDQSxVQUFBLENBQ0EsT0FBQSxDQUVBLDZHQUNFLFdBQUEsQ0FDQSxXQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FDQSxxQkFBQSxDQUNBLHFCQUFBLENBQ0Esa0JBQUEsQ0FFQSxrUEFFRSx1Q0FBQSxDQUtFLHlMQUNFLGdCQUFBLENBQ0EscUJBQUEsQ0FDQSxvQkFBQSxDQUNBLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxlQUFBLENBQ0EsdUNBQUEsQ0FDQSxXQUFBLENBRUEsK0xBQ0Usa0JBQUEsQ0FDQSxtQkFBQSxDQUNBLFdBQUEsQ0FDQSxvQkFBQSxDQUNBLG1OQUNFLHdCQUFBLENBRUYsMk1BQ0Usd0JBQUEsQ0FPSixtTUFDRSxZQUFBLENBTVIsMkhBQ0Usd0JBQUEsQ0FDQSxXQUFBLENBR0YseUhBQ0UsV0FBQSxDQUVBLDBSQUVFLFlBQUEsQ0FLTiw2RUFDRSxxQkFBQSxDQUdGLHFIQUNFLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxrQkFBQSxDQUdGLDJIQUNFLFlBQUEsQ0FDQSxrQkFBQSxDQUNBLGNBQUEsQ0FFQSxpS0FDRSxhQUFBLENBQ0EsV0FBQSxDQUlKLDJHQUNFLFdBQUEsQ0FDQSxpQkFBQSxDQUNBLFdBQUEsQ0FDQSxzQkFBQSxDQUNBLFdBQUEsQ0FDQSx1Q0FBQSxDQUNBLHlIQUNFLDhCQUFBLENBSUoscUpBQ0UsZUFBQSxDQ3BFQSx5QkQwRUEsa0RBQ0UsWUFBQSxDQUNBLDhEQUFBLENBQ0EscUJBQUEsQ0FDQSxrQkFBQSxDQUVBLHFFQUNFLGFBQUEsQ0FDQSxXQUFBLENBS04sZ0NBQ0UsWUFBQSxDQUNBLFdBQUEsQ0FDQSxXQUFBLENBRUEscUNBQ0Usa0JBQUEsQ0FHRiwrREFDRSxZQUFBLENBR0YseURBQ0UsZUFBQSxDQUdGLG9EQUNFLFdBQUEsQ0FHRiw0REFDRSxZQUFBLENBR0YscURBQ0UsV0FBQSxDQUNBLE9BQUEsQ0FDQSxpQkFBQSxDQUNBLGlCQUFBLENBQ0Esa0JBQUEsQ0FDQSxvQkFBQSxDQUVBLDhFQUNFLFlBQUEsQ0FBQSxDRXBMUix1QkFDRSxtQkFBQSxDQUNBLHNCQUFBLENBQ0EsY0FBQSxDQUNBLFFBQUEsQ0FHRixPQUNFLHVDQUFBLENBQ0EsZUFBQSxDQUdGLE9BQ0UsYUFBQSxDQUVBLFlBQ0UsK0JBQUEsQ0FFRixpQkFDRSx3QkFBQSxDQUVGLHVCQUNFLHdCQUFBLENBRUYsb0JBQ0UsNEJBQUEsQ0FDQSx3QkE1QmdCLENBNkJoQixnQkFBQSxDQUVGLHNCQUNFLFdBQUEsQ0FDQSxpREFBQSxDQUNBLHlEQUFBLENBQ0Esc0RBQUEsQ0FJSixpQkFTRSxjQUFBLENBUkEsdUNBQ0UsZUFBQSxDQUdGLHlDQUNFLFlBQUEsQ0FLRiwyQkFDRSxXQUFBLENBSUosbUJBQ0UsYUFBQSxDQUdGLFVBQ0Usb0JBQUEsQ0FDQSxXQUFBLENBQ0EsWUFBQSxDQUVBLDBCQUNFLG9CQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgXFxcImJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9uc1xcXCI7XFxuQGltcG9ydCBcXFwiYm9vdHN0cmFwL3Njc3MvdmFyaWFibGVzXFxcIjtcXG5AaW1wb3J0IFxcXCJib290c3RyYXAvc2Nzcy9taXhpbnNcXFwiO1xcblxcbi5jYW9zZGItZi1xdWVyeS1jcWwtaGludCB7XFxuICBib3JkZXItcmFkaXVzOiAycmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKHdoaXRlLCAxNSUpO1xcbiAgY29sb3I6IGxpZ2h0ZW4oYmxhY2ssIDE1JSk7XFxuICBwYWRkaW5nOiAwLjFyZW0gMC40cmVtO1xcbn1cXG5cXG4uY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxubmF2IC5uYXZiYXItY29sbGFwc2Uge1xcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcblxcbiAgZm9ybSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICB9XFxufVxcblxcbi5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluLFxcbi5jYW9zZGItZi1xdWVyeS1wYW5lbCB7XFxuICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICB3aWR0aDogMTAwJTtcXG4gIG9yZGVyOiAxO1xcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0ge1xcbiAgICBvcmRlcjogdW5zZXQ7XFxuICAgIGhlaWdodDogNDRweDtcXG4gICAgcGFkZGluZy1sZWZ0OiAycmVtO1xcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgYm9yZGVyLXJhZGl1czogMnJlbTtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJi5mb2N1cyB7XFxuICAgICAgYm94LXNoYWRvdzogMCAxcHggNnB4IHJnYmEoMzIsIDMzLCAzNiwgMC4yOCk7XFxuICAgIH1cXG5cXG4gICAgJi5mb2N1cyB7XFxuICAgICAgJi5vcGVuIHtcXG4gICAgICAgIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gICAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDtcXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgzMiwgMzMsIDM2LCAwLjI4KTtcXG4gICAgICAgICAgcGFkZGluZzogMHB4O1xcblxcbiAgICAgICAgICBsaSB7XFxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xcbiAgICAgICAgICAgIGhlaWdodDogMjRweDtcXG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxuICAgICAgICAgICAgJi5oaWdobGlnaHQge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKHdoaXRlLCAxNSUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbih3aGl0ZSwgMTUlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgICAgJi5zdWJtaXQge1xcbiAgICAgICAgJi5vcGVuIHtcXG4gICAgICAgICAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGJ1dHRvbiB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgaW5wdXQge1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG5cXG4gICAgICAmOmZvY3VzLFxcbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgZm9ybSB7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3Qge1xcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICAgIGZsZXgtd3JhcDogd3JhcDtcXG5cXG4gICAgaW5wdXQuZm9ybS1jb250cm9sIHtcXG4gICAgICBkaXNwbGF5OiB1bnNldDtcXG4gICAgICB3aWR0aDogdW5zZXQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS10YWIge1xcbiAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcXG4gICAgcGFkZGluZzogNnB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldDtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICYuYWN0aXZlIHtcXG4gICAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgZ3JheTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvciB7XFxuICAgIGZsZXgtYmFzaXM6IDEwMCU7XFxuICB9XFxufVxcblxcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcXG4gIC5jYW9zZGItZi1xdWVyeS1wYW5lbCB7XFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB7XFxuICAgICAgZGlzcGxheTogZ3JpZDtcXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1heC1jb250ZW50IG1heC1jb250ZW50IGF1dG8gbWF4LWNvbnRlbnQ7XFxuICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAwLjVyZW07XFxuICAgICAgcGFkZGluZzogMC4ycmVtIDByZW07XFxuXFxuICAgICAgaW5wdXQuZm9ybS1jb250cm9sIHtcXG4gICAgICAgIGRpc3BsYXk6IHVuc2V0O1xcbiAgICAgICAgd2lkdGg6IHVuc2V0O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCB7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIHdpZHRoOiB1bnNldDtcXG4gICAgb3JkZXI6IHVuc2V0O1xcblxcbiAgICBmb3JtIHtcXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS1maWx0ZXJzLXRvZ2dsZSB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3Qge1xcbiAgICAgIG1hcmdpbi10b3A6IDByZW07XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LXRhYiB7XFxuICAgICAgaGVpZ2h0OiAzOHB4O1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVycyB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktZm9ybSB7XFxuICAgICAgaGVpZ2h0OiAzOHB4O1xcbiAgICAgIG9yZGVyOiAxO1xcbiAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gICAgICBwYWRkaW5nLXRvcDogMC4zcmVtO1xcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICAgICAgcGFkZGluZy1ib3R0b206IDAuM3JlbTtcXG5cXG4gICAgICAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxcbi8vXFxuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxcbi8vXFxuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcXG4vL1xcbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cXG5cXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXFxuLy8gICAgbWRcXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIG1kXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXFxuLy8gICAgbWRcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XFxuICBAaWYgbm90ICRuIHtcXG4gICAgQGVycm9yIFxcXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXFxcIjtcXG4gIH1cXG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xcbn1cXG5cXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgNTc2cHhcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XFxuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XFxufVxcblxcbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2ZcXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXFxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIDc2Ny45OHB4XFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XFxufVxcblxcbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXFxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXFxuLy9cXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICBcXFwiXFxcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXFxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgXFxcIi1zbVxcXCJcXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcXFwiXFxcIiwgXFxcIi0jeyRuYW1lfVxcXCIpO1xcbn1cXG5cXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XFxuICBAaWYgJG1pbiB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2Uge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgQGlmICRtYXgge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xcblxcbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcXG5cXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XFxuICAgICAgQGNvbnRlbnQ7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0IFxcXCIuL2NvbXBvbmVudHMvUXVlcnlGb3JtXFxcIjtcXG5cXG4kZm9vdGVyLWJvZHktY29sb3I6IGxpZ2h0Z3JheTtcXG5cXG4udXNlci1jb21wb25lbnQgLmFsZXJ0IHtcXG4gIHBhZGRpbmctdG9wOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIG1hcmdpbjogMDtcXG59XFxuXFxuaGVhZGVyIHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuZm9vdGVyIHtcXG4gIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAzMCUpO1xcblxcbiAgLm5hdiB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAyMCUpO1xcbiAgfVxcbiAgLm5hdi1saW5rIHtcXG4gICAgY29sb3I6IGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDMwJSkgIWltcG9ydGFudDtcXG4gIH1cXG4gIC5uYXYtbGluazpob3ZlciB7XFxuICAgIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCA0MCUpICFpbXBvcnRhbnQ7XFxuICB9XFxuICAuZm9vdGVyLWJvZHkge1xcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMTAlKTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1ib2R5LWNvbG9yO1xcbiAgICBtaW4taGVpZ2h0OiAyMHJlbTtcXG4gIH1cXG4gIC5mb290ZXItYm9yZGVyIHtcXG4gICAgaGVpZ2h0OiAzcmVtO1xcbiAgICBib3gtc2hhZG93OiAwcHggLTVweCA3cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQ7XFxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IC01cHggN3B4IC01cHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0O1xcbiAgICAtbW96LWJveC1zaGFkb3c6IDBweCAtNXB4IDZweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldDtcXG4gIH1cXG59XFxuXFxuLmNhb3NkYi1jaGVja2JveCB7XFxuICAuY2Fvc2RiLWNoZWNrYm94LWljb24ge1xcbiAgICBmb250LXNpemU6IDEuM2VtO1xcbiAgfVxcblxcbiAgLmNhb3NkYi1jaGVjay1ib3gtaW5wdXQge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcblxcbiAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgJi5yZWFkLW9ubHkge1xcbiAgICBjdXJzb3I6IGF1dG87XFxuICB9XFxufVxcblxcbi5jb2xvci1saWdodC1ncmVlbiB7XFxuICBjb2xvcjogI2I0ZTYwMDtcXG59XFxuXFxuLm1pbmljYXJkIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcXG4gIHdpZHRoOiA0MDBweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuXFxuICAubWluaWNhcmQtdGl0bGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAgICApO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gYWxsO1xuXG52YXIgX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyID0gcmVxdWlyZSgnLi91dGlscy9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcicpO1xuXG52YXIgX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gYWxsKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgdmFsaWRhdG9ycyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHZhbGlkYXRvcnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBmdW5jdGlvbiBhbGxQcm9wVHlwZXMoKSB7XG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICB2YXIgZXJyb3IgPSBudWxsO1xuXG4gICAgdmFsaWRhdG9ycy5mb3JFYWNoKGZ1bmN0aW9uICh2YWxpZGF0b3IpIHtcbiAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlc3VsdCA9IHZhbGlkYXRvci5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgIGVycm9yID0gcmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIyLmRlZmF1bHQpKGFsbFByb3BUeXBlcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcjtcbi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbi8vIE1vc3RseSB0YWtlbiBmcm9tIFJlYWN0UHJvcFR5cGVzLlxuXG5mdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICBmdW5jdGlvbiBjaGVja1R5cGUoaXNSZXF1aXJlZCwgcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgdmFyIGNvbXBvbmVudE5hbWVTYWZlID0gY29tcG9uZW50TmFtZSB8fCAnPDxhbm9ueW1vdXM+Pic7XG4gICAgdmFyIHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoJ1JlcXVpcmVkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWVTYWZlICsgJ2Agd2FzIG5vdCBzcGVjaWZpZWQgJyArICgnaW4gYCcgKyBjb21wb25lbnROYW1lU2FmZSArICdgLicpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gNiA/IF9sZW4gLSA2IDogMCksIF9rZXkgPSA2OyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSA2XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGUuYXBwbHkodW5kZWZpbmVkLCBbcHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lU2FmZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZVNhZmVdLmNvbmNhdChhcmdzKSk7XG4gIH1cblxuICB2YXIgY2hhaW5lZENoZWNrVHlwZSA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIGZhbHNlKTtcbiAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgdHJ1ZSk7XG5cbiAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLGNhPXJlcXVpcmUoXCJzY2hlZHVsZXJcIik7ZnVuY3Rpb24gcChhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgZGE9bmV3IFNldCxlYT17fTtmdW5jdGlvbiBmYShhLGIpe2hhKGEsYik7aGEoYStcIkNhcHR1cmVcIixiKX1cbmZ1bmN0aW9uIGhhKGEsYil7ZWFbYV09Yjtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWRhLmFkZChiW2FdKX1cbnZhciBpYT0hKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksamE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxrYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sbGE9XG57fSxtYT17fTtmdW5jdGlvbiBvYShhKXtpZihqYS5jYWxsKG1hLGEpKXJldHVybiEwO2lmKGphLmNhbGwobGEsYSkpcmV0dXJuITE7aWYoa2EudGVzdChhKSlyZXR1cm4gbWFbYV09ITA7bGFbYV09ITA7cmV0dXJuITF9ZnVuY3Rpb24gcGEoYSxiLGMsZCl7aWYobnVsbCE9PWMmJjA9PT1jLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiBiKXtjYXNlIFwiZnVuY3Rpb25cIjpjYXNlIFwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZSBcImJvb2xlYW5cIjppZihkKXJldHVybiExO2lmKG51bGwhPT1jKXJldHVybiFjLmFjY2VwdHNCb29sZWFuczthPWEudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO3JldHVyblwiZGF0YS1cIiE9PWEmJlwiYXJpYS1cIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBxYShhLGIsYyxkKXtpZihudWxsPT09Ynx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBifHxwYShhLGIsYyxkKSlyZXR1cm4hMDtpZihkKXJldHVybiExO2lmKG51bGwhPT1jKXN3aXRjaChjLnR5cGUpe2Nhc2UgMzpyZXR1cm4hYjtjYXNlIDQ6cmV0dXJuITE9PT1iO2Nhc2UgNTpyZXR1cm4gaXNOYU4oYik7Y2FzZSA2OnJldHVybiBpc05hTihiKXx8MT5ifXJldHVybiExfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYsZyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1lO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWY7dGhpcy5yZW1vdmVFbXB0eVN0cmluZz1nfXZhciB6PXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMCwhMSxhLG51bGwsITEsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO3pbYl09bmV3IHYoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLG51bGwsITEsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITAsYSxudWxsLCExLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDQsITEsYSxudWxsLCExLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNiwhMSxhLG51bGwsITEsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgcmE9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBzYShhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxcbnNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLG51bGwsITEsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbnoueGxpbmtIcmVmPW5ldyB2KFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCwhMSk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCwhMCl9KTtcbmZ1bmN0aW9uIHRhKGEsYixjLGQpe3ZhciBlPXouaGFzT3duUHJvcGVydHkoYik/eltiXTpudWxsO2lmKG51bGwhPT1lPzAhPT1lLnR5cGU6ZHx8ISgyPGIubGVuZ3RoKXx8XCJvXCIhPT1iWzBdJiZcIk9cIiE9PWJbMF18fFwiblwiIT09YlsxXSYmXCJOXCIhPT1iWzFdKXFhKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT9vYShiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSl9XG52YXIgdWE9YWEuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsdmE9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksd2E9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSx5YT1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksemE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLEFhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxCYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksQ2E9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksRGE9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLEVhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxGYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxHYT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxIYT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtTeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik7U3ltYm9sLmZvcihcInJlYWN0LmRlYnVnX3RyYWNlX21vZGVcIik7XG52YXIgSWE9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QuY2FjaGVcIik7U3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO3ZhciBKYT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gS2EoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPUphJiZhW0phXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfXZhciBBPU9iamVjdC5hc3NpZ24sTGE7ZnVuY3Rpb24gTWEoYSl7aWYodm9pZCAwPT09TGEpdHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGMpe3ZhciBiPWMuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7TGE9YiYmYlsxXXx8XCJcIn1yZXR1cm5cIlxcblwiK0xhK2F9dmFyIE5hPSExO1xuZnVuY3Rpb24gT2EoYSxiKXtpZighYXx8TmEpcmV0dXJuXCJcIjtOYT0hMDt2YXIgYz1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e2lmKGIpaWYoYj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO319KSxcIm9iamVjdFwiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2gobCl7dmFyIGQ9bH1SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGwpe2Q9bH1hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGwpe2Q9bH1hKCl9fWNhdGNoKGwpe2lmKGwmJmQmJlwic3RyaW5nXCI9PT10eXBlb2YgbC5zdGFjayl7Zm9yKHZhciBlPWwuc3RhY2suc3BsaXQoXCJcXG5cIiksXG5mPWQuc3RhY2suc3BsaXQoXCJcXG5cIiksZz1lLmxlbmd0aC0xLGg9Zi5sZW5ndGgtMTsxPD1nJiYwPD1oJiZlW2ddIT09ZltoXTspaC0tO2Zvcig7MTw9ZyYmMDw9aDtnLS0saC0tKWlmKGVbZ10hPT1mW2hdKXtpZigxIT09Z3x8MSE9PWgpe2RvIGlmKGctLSxoLS0sMD5ofHxlW2ddIT09ZltoXSl7dmFyIGs9XCJcXG5cIitlW2ddLnJlcGxhY2UoXCIgYXQgbmV3IFwiLFwiIGF0IFwiKTthLmRpc3BsYXlOYW1lJiZrLmluY2x1ZGVzKFwiPGFub255bW91cz5cIikmJihrPWsucmVwbGFjZShcIjxhbm9ueW1vdXM+XCIsYS5kaXNwbGF5TmFtZSkpO3JldHVybiBrfXdoaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtOYT0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOlwiXCIpP01hKGEpOlwiXCJ9XG5mdW5jdGlvbiBQYShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gTWEoYS50eXBlKTtjYXNlIDE2OnJldHVybiBNYShcIkxhenlcIik7Y2FzZSAxMzpyZXR1cm4gTWEoXCJTdXNwZW5zZVwiKTtjYXNlIDE5OnJldHVybiBNYShcIlN1c3BlbnNlTGlzdFwiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGE9T2EoYS50eXBlLCExKSxhO2Nhc2UgMTE6cmV0dXJuIGE9T2EoYS50eXBlLnJlbmRlciwhMSksYTtjYXNlIDE6cmV0dXJuIGE9T2EoYS50eXBlLCEwKSxhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBRYShhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXJldHVybiBhO3N3aXRjaChhKXtjYXNlIHlhOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHdhOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBBYTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSB6YTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIEVhOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIEZhOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIENhOnJldHVybihhLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIEJhOnJldHVybihhLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIERhOnZhciBiPWEucmVuZGVyO2E9YS5kaXNwbGF5TmFtZTthfHwoYT1iLmRpc3BsYXlOYW1lfHxcbmIubmFtZXx8XCJcIixhPVwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtyZXR1cm4gYTtjYXNlIEdhOnJldHVybiBiPWEuZGlzcGxheU5hbWV8fG51bGwsbnVsbCE9PWI/YjpRYShhLnR5cGUpfHxcIk1lbW9cIjtjYXNlIEhhOmI9YS5fcGF5bG9hZDthPWEuX2luaXQ7dHJ5e3JldHVybiBRYShhKGIpKX1jYXRjaChjKXt9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUmEoYSl7dmFyIGI9YS50eXBlO3N3aXRjaChhLnRhZyl7Y2FzZSAyNDpyZXR1cm5cIkNhY2hlXCI7Y2FzZSA5OnJldHVybihiLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIDEwOnJldHVybihiLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIDE4OnJldHVyblwiRGVoeWRyYXRlZEZyYWdtZW50XCI7Y2FzZSAxMTpyZXR1cm4gYT1iLnJlbmRlcixhPWEuZGlzcGxheU5hbWV8fGEubmFtZXx8XCJcIixiLmRpc3BsYXlOYW1lfHwoXCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO2Nhc2UgNzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNDpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgMzpyZXR1cm5cIlJvb3RcIjtjYXNlIDY6cmV0dXJuXCJUZXh0XCI7Y2FzZSAxNjpyZXR1cm4gUWEoYik7Y2FzZSA4OnJldHVybiBiPT09emE/XCJTdHJpY3RNb2RlXCI6XCJNb2RlXCI7Y2FzZSAyMjpyZXR1cm5cIk9mZnNjcmVlblwiO1xuY2FzZSAxMjpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSAyMTpyZXR1cm5cIlNjb3BlXCI7Y2FzZSAxMzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSAxOTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwiO2Nhc2UgMjU6cmV0dXJuXCJUcmFjaW5nTWFya2VyXCI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGIuZGlzcGxheU5hbWV8fGIubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2EoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwiYm9vbGVhblwiOmNhc2UgXCJudW1iZXJcIjpjYXNlIFwic3RyaW5nXCI6Y2FzZSBcInVuZGVmaW5lZFwiOnJldHVybiBhO2Nhc2UgXCJvYmplY3RcIjpyZXR1cm4gYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gVGEoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIFVhKGEpe3ZhciBiPVRhKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBWYShhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9VWEoYSkpfWZ1bmN0aW9uIFdhKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1UYShhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIFhhKGEpe2E9YXx8KFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaChiKXtyZXR1cm4gYS5ib2R5fX1cbmZ1bmN0aW9uIFlhKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBBKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBaYShhLGIpe3ZhciBjPW51bGw9PWIuZGVmYXVsdFZhbHVlP1wiXCI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz1TYShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6XCJjaGVja2JveFwiPT09Yi50eXBlfHxcInJhZGlvXCI9PT1iLnR5cGU/bnVsbCE9Yi5jaGVja2VkOm51bGwhPWIudmFsdWV9fWZ1bmN0aW9uIGFiKGEsYil7Yj1iLmNoZWNrZWQ7bnVsbCE9YiYmdGEoYSxcImNoZWNrZWRcIixiLCExKX1cbmZ1bmN0aW9uIGJiKGEsYil7YWIoYSxiKTt2YXIgYz1TYShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKFwibnVtYmVyXCI9PT1kKXtpZigwPT09YyYmXCJcIj09PWEudmFsdWV8fGEudmFsdWUhPWMpYS52YWx1ZT1cIlwiK2N9ZWxzZSBhLnZhbHVlIT09XCJcIitjJiYoYS52YWx1ZT1cIlwiK2MpO2Vsc2UgaWYoXCJzdWJtaXRcIj09PWR8fFwicmVzZXRcIj09PWQpe2EucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7cmV0dXJufWIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKT9jYihhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpJiZjYihhLGIudHlwZSxTYShiLmRlZmF1bHRWYWx1ZSkpO251bGw9PWIuY2hlY2tlZCYmbnVsbCE9Yi5kZWZhdWx0Q2hlY2tlZCYmKGEuZGVmYXVsdENoZWNrZWQ9ISFiLmRlZmF1bHRDaGVja2VkKX1cbmZ1bmN0aW9uIGRiKGEsYixjKXtpZihiLmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fGIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciBkPWIudHlwZTtpZighKFwic3VibWl0XCIhPT1kJiZcInJlc2V0XCIhPT1kfHx2b2lkIDAhPT1iLnZhbHVlJiZudWxsIT09Yi52YWx1ZSkpcmV0dXJuO2I9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lO1wiXCIhPT1jJiYoYS5uYW1lPVwiXCIpO2EuZGVmYXVsdENoZWNrZWQ9ISFhLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQ7XCJcIiE9PWMmJihhLm5hbWU9Yyl9XG5mdW5jdGlvbiBjYihhLGIsYyl7aWYoXCJudW1iZXJcIiE9PWJ8fFhhKGEub3duZXJEb2N1bWVudCkhPT1hKW51bGw9PWM/YS5kZWZhdWx0VmFsdWU9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09XCJcIitjJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitjKX12YXIgZWI9QXJyYXkuaXNBcnJheTtcbmZ1bmN0aW9uIGZiKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYltcIiRcIitjW2VdXT0hMDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWU9Yi5oYXNPd25Qcm9wZXJ0eShcIiRcIithW2NdLnZhbHVlKSxhW2NdLnNlbGVjdGVkIT09ZSYmKGFbY10uc2VsZWN0ZWQ9ZSksZSYmZCYmKGFbY10uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2M9XCJcIitTYShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fVxuZnVuY3Rpb24gZ2IoYSxiKXtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKHAoOTEpKTtyZXR1cm4gQSh7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBoYihhLGIpe3ZhciBjPWIudmFsdWU7aWYobnVsbD09Yyl7Yz1iLmNoaWxkcmVuO2I9Yi5kZWZhdWx0VmFsdWU7aWYobnVsbCE9Yyl7aWYobnVsbCE9Yil0aHJvdyBFcnJvcihwKDkyKSk7aWYoZWIoYykpe2lmKDE8Yy5sZW5ndGgpdGhyb3cgRXJyb3IocCg5MykpO2M9Y1swXX1iPWN9bnVsbD09YiYmKGI9XCJcIik7Yz1ifWEuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOlNhKGMpfX1cbmZ1bmN0aW9uIGliKGEsYil7dmFyIGM9U2EoYi52YWx1ZSksZD1TYShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9XCJcIitjLGMhPT1hLnZhbHVlJiYoYS52YWx1ZT1jKSxudWxsPT1iLmRlZmF1bHRWYWx1ZSYmYS5kZWZhdWx0VmFsdWUhPT1jJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2QpfWZ1bmN0aW9uIGpiKGEpe3ZhciBiPWEudGV4dENvbnRlbnQ7Yj09PWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJlwiXCIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24ga2IoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1cbmZ1bmN0aW9uIGxiKGEsYil7cmV0dXJuIG51bGw9PWF8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9rYihiKTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1hJiZcImZvcmVpZ25PYmplY3RcIj09PWI/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6YX1cbnZhciBtYixuYj1mdW5jdGlvbihhKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihiLGMsZCxlKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBhKGIsYyxkLGUpfSl9OmF9KGZ1bmN0aW9uKGEsYil7aWYoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIT09YS5uYW1lc3BhY2VVUkl8fFwiaW5uZXJIVE1MXCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXttYj1tYnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTttYi5pbm5lckhUTUw9XCI8c3ZnPlwiK2IudmFsdWVPZigpLnRvU3RyaW5nKCkrXCI8L3N2Zz5cIjtmb3IoYj1tYi5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSk7XG5mdW5jdGlvbiBvYihhLGIpe2lmKGIpe3ZhciBjPWEuZmlyc3RDaGlsZDtpZihjJiZjPT09YS5sYXN0Q2hpbGQmJjM9PT1jLm5vZGVUeXBlKXtjLm5vZGVWYWx1ZT1iO3JldHVybn19YS50ZXh0Q29udGVudD1ifVxudmFyIHBiPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsXG56b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHFiPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtPYmplY3Qua2V5cyhwYikuZm9yRWFjaChmdW5jdGlvbihhKXtxYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9YithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEpO3BiW2JdPXBiW2FdfSl9KTtmdW5jdGlvbiByYihhLGIsYyl7cmV0dXJuIG51bGw9PWJ8fFwiYm9vbGVhblwiPT09dHlwZW9mIGJ8fFwiXCI9PT1iP1wiXCI6Y3x8XCJudW1iZXJcIiE9PXR5cGVvZiBifHwwPT09Ynx8cGIuaGFzT3duUHJvcGVydHkoYSkmJnBiW2FdPyhcIlwiK2IpLnRyaW0oKTpiK1wicHhcIn1cbmZ1bmN0aW9uIHNiKGEsYil7YT1hLnN0eWxlO2Zvcih2YXIgYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykpe3ZhciBkPTA9PT1jLmluZGV4T2YoXCItLVwiKSxlPXJiKGMsYltjXSxkKTtcImZsb2F0XCI9PT1jJiYoYz1cImNzc0Zsb2F0XCIpO2Q/YS5zZXRQcm9wZXJ0eShjLGUpOmFbY109ZX19dmFyIHRiPUEoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7XG5mdW5jdGlvbiB1YihhLGIpe2lmKGIpe2lmKHRiW2FdJiYobnVsbCE9Yi5jaGlsZHJlbnx8bnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCgxMzcsYSkpO2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPWIuY2hpbGRyZW4pdGhyb3cgRXJyb3IocCg2MCkpO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTHx8IShcIl9faHRtbFwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCg2MSkpO31pZihudWxsIT1iLnN0eWxlJiZcIm9iamVjdFwiIT09dHlwZW9mIGIuc3R5bGUpdGhyb3cgRXJyb3IocCg2MikpO319XG5mdW5jdGlvbiB2YihhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHdiPW51bGw7ZnVuY3Rpb24geGIoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7cmV0dXJuIDM9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphfXZhciB5Yj1udWxsLHpiPW51bGwsQWI9bnVsbDtcbmZ1bmN0aW9uIEJiKGEpe2lmKGE9Q2IoYSkpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiB5Yil0aHJvdyBFcnJvcihwKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPURiKGIpLHliKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIEViKGEpe3piP0FiP0FiLnB1c2goYSk6QWI9W2FdOnpiPWF9ZnVuY3Rpb24gRmIoKXtpZih6Yil7dmFyIGE9emIsYj1BYjtBYj16Yj1udWxsO0JiKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylCYihiW2FdKX19ZnVuY3Rpb24gR2IoYSxiKXtyZXR1cm4gYShiKX1mdW5jdGlvbiBIYigpe312YXIgSWI9ITE7ZnVuY3Rpb24gSmIoYSxiLGMpe2lmKEliKXJldHVybiBhKGIsYyk7SWI9ITA7dHJ5e3JldHVybiBHYihhLGIsYyl9ZmluYWxseXtpZihJYj0hMSxudWxsIT09emJ8fG51bGwhPT1BYilIYigpLEZiKCl9fVxuZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtpZihudWxsPT09YylyZXR1cm4gbnVsbDt2YXIgZD1EYihjKTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtjPWRbYl07YTpzd2l0Y2goYil7Y2FzZSBcIm9uQ2xpY2tcIjpjYXNlIFwib25DbGlja0NhcHR1cmVcIjpjYXNlIFwib25Eb3VibGVDbGlja1wiOmNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRG93blwiOmNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZU1vdmVcIjpjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VVcFwiOmNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VFbnRlclwiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9IShcImJ1dHRvblwiPT09YXx8XCJpbnB1dFwiPT09YXx8XCJzZWxlY3RcIj09PWF8fFwidGV4dGFyZWFcIj09PWEpKTthPSFkO2JyZWFrIGE7ZGVmYXVsdDphPSExfWlmKGEpcmV0dXJuIG51bGw7aWYoYyYmXCJmdW5jdGlvblwiIT09XG50eXBlb2YgYyl0aHJvdyBFcnJvcihwKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9dmFyIExiPSExO2lmKGlhKXRyeXt2YXIgTWI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE1iLFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtMYj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpfWNhdGNoKGEpe0xiPSExfWZ1bmN0aW9uIE5iKGEsYixjLGQsZSxmLGcsaCxrKXt2YXIgbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e2IuYXBwbHkoYyxsKX1jYXRjaChtKXt0aGlzLm9uRXJyb3IobSl9fXZhciBPYj0hMSxQYj1udWxsLFFiPSExLFJiPW51bGwsU2I9e29uRXJyb3I6ZnVuY3Rpb24oYSl7T2I9ITA7UGI9YX19O2Z1bmN0aW9uIFRiKGEsYixjLGQsZSxmLGcsaCxrKXtPYj0hMTtQYj1udWxsO05iLmFwcGx5KFNiLGFyZ3VtZW50cyl9XG5mdW5jdGlvbiBVYihhLGIsYyxkLGUsZixnLGgsayl7VGIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKE9iKXtpZihPYil7dmFyIGw9UGI7T2I9ITE7UGI9bnVsbH1lbHNlIHRocm93IEVycm9yKHAoMTk4KSk7UWJ8fChRYj0hMCxSYj1sKX19ZnVuY3Rpb24gVmIoYSl7dmFyIGI9YSxjPWE7aWYoYS5hbHRlcm5hdGUpZm9yKDtiLnJldHVybjspYj1iLnJldHVybjtlbHNle2E9YjtkbyBiPWEsMCE9PShiLmZsYWdzJjQwOTgpJiYoYz1iLnJldHVybiksYT1iLnJldHVybjt3aGlsZShhKX1yZXR1cm4gMz09PWIudGFnP2M6bnVsbH1mdW5jdGlvbiBXYihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWImJihhPWEuYWx0ZXJuYXRlLG51bGwhPT1hJiYoYj1hLm1lbW9pemVkU3RhdGUpKTtpZihudWxsIT09YilyZXR1cm4gYi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIFhiKGEpe2lmKFZiKGEpIT09YSl0aHJvdyBFcnJvcihwKDE4OCkpO31cbmZ1bmN0aW9uIFliKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO2lmKCFiKXtiPVZiKGEpO2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGIhPT1hP251bGw6YX1mb3IodmFyIGM9YSxkPWI7Oyl7dmFyIGU9Yy5yZXR1cm47aWYobnVsbD09PWUpYnJlYWs7dmFyIGY9ZS5hbHRlcm5hdGU7aWYobnVsbD09PWYpe2Q9ZS5yZXR1cm47aWYobnVsbCE9PWQpe2M9ZDtjb250aW51ZX1icmVha31pZihlLmNoaWxkPT09Zi5jaGlsZCl7Zm9yKGY9ZS5jaGlsZDtmOyl7aWYoZj09PWMpcmV0dXJuIFhiKGUpLGE7aWYoZj09PWQpcmV0dXJuIFhiKGUpLGI7Zj1mLnNpYmxpbmd9dGhyb3cgRXJyb3IocCgxODgpKTt9aWYoYy5yZXR1cm4hPT1kLnJldHVybiljPWUsZD1mO2Vsc2V7Zm9yKHZhciBnPSExLGg9ZS5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1lO2Q9ZjticmVha31pZihoPT09ZCl7Zz0hMDtkPWU7Yz1mO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXtmb3IoaD1mLmNoaWxkO2g7KXtpZihoPT09XG5jKXtnPSEwO2M9ZjtkPWU7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1mO2M9ZTticmVha31oPWguc2libGluZ31pZighZyl0aHJvdyBFcnJvcihwKDE4OSkpO319aWYoYy5hbHRlcm5hdGUhPT1kKXRocm93IEVycm9yKHAoMTkwKSk7fWlmKDMhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBjLnN0YXRlTm9kZS5jdXJyZW50PT09Yz9hOmJ9ZnVuY3Rpb24gWmIoYSl7YT1ZYihhKTtyZXR1cm4gbnVsbCE9PWE/JGIoYSk6bnVsbH1mdW5jdGlvbiAkYihhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYTtmb3IoYT1hLmNoaWxkO251bGwhPT1hOyl7dmFyIGI9JGIoYSk7aWYobnVsbCE9PWIpcmV0dXJuIGI7YT1hLnNpYmxpbmd9cmV0dXJuIG51bGx9XG52YXIgYWM9Y2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxiYz1jYS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxjYz1jYS51bnN0YWJsZV9zaG91bGRZaWVsZCxkYz1jYS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsQj1jYS51bnN0YWJsZV9ub3csZWM9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZmM9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZ2M9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksaGM9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksaWM9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksamM9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGtjPW51bGwsbGM9bnVsbDtmdW5jdGlvbiBtYyhhKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJSb290KXRyeXtsYy5vbkNvbW1pdEZpYmVyUm9vdChrYyxhLHZvaWQgMCwxMjg9PT0oYS5jdXJyZW50LmZsYWdzJjEyOCkpfWNhdGNoKGIpe319XG52YXIgb2M9TWF0aC5jbHozMj9NYXRoLmNsejMyOm5jLHBjPU1hdGgubG9nLHFjPU1hdGguTE4yO2Z1bmN0aW9uIG5jKGEpe2E+Pj49MDtyZXR1cm4gMD09PWE/MzI6MzEtKHBjKGEpL3FjfDApfDB9dmFyIHJjPTY0LHNjPTQxOTQzMDQ7XG5mdW5jdGlvbiB0YyhhKXtzd2l0Y2goYSYtYSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGEmNDE5NDI0MDtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiBhJjEzMDAyMzQyNDtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7XG5kZWZhdWx0OnJldHVybiBhfX1mdW5jdGlvbiB1YyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiAwO3ZhciBkPTAsZT1hLnN1c3BlbmRlZExhbmVzLGY9YS5waW5nZWRMYW5lcyxnPWMmMjY4NDM1NDU1O2lmKDAhPT1nKXt2YXIgaD1nJn5lOzAhPT1oP2Q9dGMoaCk6KGYmPWcsMCE9PWYmJihkPXRjKGYpKSl9ZWxzZSBnPWMmfmUsMCE9PWc/ZD10YyhnKTowIT09ZiYmKGQ9dGMoZikpO2lmKDA9PT1kKXJldHVybiAwO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmUpJiYoZT1kJi1kLGY9YiYtYixlPj1mfHwxNj09PWUmJjAhPT0oZiY0MTk0MjQwKSkpcmV0dXJuIGI7MCE9PShkJjQpJiYoZHw9YyYxNik7Yj1hLmVudGFuZ2xlZExhbmVzO2lmKDAhPT1iKWZvcihhPWEuZW50YW5nbGVtZW50cyxiJj1kOzA8YjspYz0zMS1vYyhiKSxlPTE8PGMsZHw9YVtjXSxiJj1+ZTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHZjKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBiKzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGIrNUUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fVxuZnVuY3Rpb24gd2MoYSxiKXtmb3IodmFyIGM9YS5zdXNwZW5kZWRMYW5lcyxkPWEucGluZ2VkTGFuZXMsZT1hLmV4cGlyYXRpb25UaW1lcyxmPWEucGVuZGluZ0xhbmVzOzA8Zjspe3ZhciBnPTMxLW9jKGYpLGg9MTw8ZyxrPWVbZ107aWYoLTE9PT1rKXtpZigwPT09KGgmYyl8fDAhPT0oaCZkKSllW2ddPXZjKGgsYil9ZWxzZSBrPD1iJiYoYS5leHBpcmVkTGFuZXN8PWgpO2YmPX5ofX1mdW5jdGlvbiB4YyhhKXthPWEucGVuZGluZ0xhbmVzJi0xMDczNzQxODI1O3JldHVybiAwIT09YT9hOmEmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24geWMoKXt2YXIgYT1yYztyYzw8PTE7MD09PShyYyY0MTk0MjQwKSYmKHJjPTY0KTtyZXR1cm4gYX1mdW5jdGlvbiB6YyhhKXtmb3IodmFyIGI9W10sYz0wOzMxPmM7YysrKWIucHVzaChhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEFjKGEsYixjKXthLnBlbmRpbmdMYW5lc3w9Yjs1MzY4NzA5MTIhPT1iJiYoYS5zdXNwZW5kZWRMYW5lcz0wLGEucGluZ2VkTGFuZXM9MCk7YT1hLmV2ZW50VGltZXM7Yj0zMS1vYyhiKTthW2JdPWN9ZnVuY3Rpb24gQmMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcyZ+YjthLnBlbmRpbmdMYW5lcz1iO2Euc3VzcGVuZGVkTGFuZXM9MDthLnBpbmdlZExhbmVzPTA7YS5leHBpcmVkTGFuZXMmPWI7YS5tdXRhYmxlUmVhZExhbmVzJj1iO2EuZW50YW5nbGVkTGFuZXMmPWI7Yj1hLmVudGFuZ2xlbWVudHM7dmFyIGQ9YS5ldmVudFRpbWVzO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yzspe3ZhciBlPTMxLW9jKGMpLGY9MTw8ZTtiW2VdPTA7ZFtlXT0tMTthW2VdPS0xO2MmPX5mfX1cbmZ1bmN0aW9uIENjKGEsYil7dmFyIGM9YS5lbnRhbmdsZWRMYW5lc3w9Yjtmb3IoYT1hLmVudGFuZ2xlbWVudHM7Yzspe3ZhciBkPTMxLW9jKGMpLGU9MTw8ZDtlJmJ8YVtkXSZiJiYoYVtkXXw9Yik7YyY9fmV9fXZhciBDPTA7ZnVuY3Rpb24gRGMoYSl7YSY9LWE7cmV0dXJuIDE8YT80PGE/MCE9PShhJjI2ODQzNTQ1NSk/MTY6NTM2ODcwOTEyOjQ6MX12YXIgRWMsRmMsR2MsSGMsSWMsSmM9ITEsS2M9W10sTGM9bnVsbCxNYz1udWxsLE5jPW51bGwsT2M9bmV3IE1hcCxQYz1uZXcgTWFwLFFjPVtdLFJjPVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIFNjKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6TGM9bnVsbDticmVhaztjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdsZWF2ZVwiOk1jPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJtb3VzZW91dFwiOk5jPW51bGw7YnJlYWs7Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpPYy5kZWxldGUoYi5wb2ludGVySWQpO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpQYy5kZWxldGUoYi5wb2ludGVySWQpfX1cbmZ1bmN0aW9uIFRjKGEsYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9e2Jsb2NrZWRPbjpiLGRvbUV2ZW50TmFtZTpjLGV2ZW50U3lzdGVtRmxhZ3M6ZCxuYXRpdmVFdmVudDpmLHRhcmdldENvbnRhaW5lcnM6W2VdfSxudWxsIT09YiYmKGI9Q2IoYiksbnVsbCE9PWImJkZjKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7c3dpdGNoKGIpe2Nhc2UgXCJmb2N1c2luXCI6cmV0dXJuIExjPVRjKExjLGEsYixjLGQsZSksITA7Y2FzZSBcImRyYWdlbnRlclwiOnJldHVybiBNYz1UYyhNYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJtb3VzZW92ZXJcIjpyZXR1cm4gTmM9VGMoTmMsYSxiLGMsZCxlKSwhMDtjYXNlIFwicG9pbnRlcm92ZXJcIjp2YXIgZj1lLnBvaW50ZXJJZDtPYy5zZXQoZixUYyhPYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSk7cmV0dXJuITA7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGY9ZS5wb2ludGVySWQsUGMuc2V0KGYsVGMoUGMuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpLCEwfXJldHVybiExfVxuZnVuY3Rpb24gVmMoYSl7dmFyIGI9V2MoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYihiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1XYihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtJYyhhLnByaW9yaXR5LGZ1bmN0aW9uKCl7R2MoYyl9KTtyZXR1cm59fWVsc2UgaWYoMz09PWImJmMuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2EuYmxvY2tlZE9uPTM9PT1jLnRhZz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX1hLmJsb2NrZWRPbj1udWxsfVxuZnVuY3Rpb24gWGMoYSl7aWYobnVsbCE9PWEuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPVljKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGw9PT1jKXtjPWEubmF0aXZlRXZlbnQ7dmFyIGQ9bmV3IGMuY29uc3RydWN0b3IoYy50eXBlLGMpO3diPWQ7Yy50YXJnZXQuZGlzcGF0Y2hFdmVudChkKTt3Yj1udWxsfWVsc2UgcmV0dXJuIGI9Q2IoYyksbnVsbCE9PWImJkZjKGIpLGEuYmxvY2tlZE9uPWMsITE7Yi5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIFpjKGEsYixjKXtYYyhhKSYmYy5kZWxldGUoYil9ZnVuY3Rpb24gJGMoKXtKYz0hMTtudWxsIT09TGMmJlhjKExjKSYmKExjPW51bGwpO251bGwhPT1NYyYmWGMoTWMpJiYoTWM9bnVsbCk7bnVsbCE9PU5jJiZYYyhOYykmJihOYz1udWxsKTtPYy5mb3JFYWNoKFpjKTtQYy5mb3JFYWNoKFpjKX1cbmZ1bmN0aW9uIGFkKGEsYil7YS5ibG9ja2VkT249PT1iJiYoYS5ibG9ja2VkT249bnVsbCxKY3x8KEpjPSEwLGNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soY2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksJGMpKSl9XG5mdW5jdGlvbiBiZChhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBhZChiLGEpfWlmKDA8S2MubGVuZ3RoKXthZChLY1swXSxhKTtmb3IodmFyIGM9MTtjPEtjLmxlbmd0aDtjKyspe3ZhciBkPUtjW2NdO2QuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpfX1udWxsIT09TGMmJmFkKExjLGEpO251bGwhPT1NYyYmYWQoTWMsYSk7bnVsbCE9PU5jJiZhZChOYyxhKTtPYy5mb3JFYWNoKGIpO1BjLmZvckVhY2goYik7Zm9yKGM9MDtjPFFjLmxlbmd0aDtjKyspZD1RY1tjXSxkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8UWMubGVuZ3RoJiYoYz1RY1swXSxudWxsPT09Yy5ibG9ja2VkT24pOylWYyhjKSxudWxsPT09Yy5ibG9ja2VkT24mJlFjLnNoaWZ0KCl9dmFyIGNkPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGRkPSEwO1xuZnVuY3Rpb24gZWQoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTEsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1mdW5jdGlvbiBnZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9NCxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fVxuZnVuY3Rpb24gZmQoYSxiLGMsZCl7aWYoZGQpe3ZhciBlPVljKGEsYixjLGQpO2lmKG51bGw9PT1lKWhkKGEsYixkLGlkLGMpLFNjKGEsZCk7ZWxzZSBpZihVYyhlLGEsYixjLGQpKWQuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihTYyhhLGQpLGImNCYmLTE8UmMuaW5kZXhPZihhKSl7Zm9yKDtudWxsIT09ZTspe3ZhciBmPUNiKGUpO251bGwhPT1mJiZFYyhmKTtmPVljKGEsYixjLGQpO251bGw9PT1mJiZoZChhLGIsZCxpZCxjKTtpZihmPT09ZSlicmVhaztlPWZ9bnVsbCE9PWUmJmQuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBoZChhLGIsZCxudWxsLGMpfX12YXIgaWQ9bnVsbDtcbmZ1bmN0aW9uIFljKGEsYixjLGQpe2lkPW51bGw7YT14YihkKTthPVdjKGEpO2lmKG51bGwhPT1hKWlmKGI9VmIoYSksbnVsbD09PWIpYT1udWxsO2Vsc2UgaWYoYz1iLnRhZywxMz09PWMpe2E9V2IoYik7aWYobnVsbCE9PWEpcmV0dXJuIGE7YT1udWxsfWVsc2UgaWYoMz09PWMpe2lmKGIuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT1iLnRhZz9iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7YT1udWxsfWVsc2UgYiE9PWEmJihhPW51bGwpO2lkPWE7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBqZChhKXtzd2l0Y2goYSl7Y2FzZSBcImNhbmNlbFwiOmNhc2UgXCJjbGlja1wiOmNhc2UgXCJjbG9zZVwiOmNhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcImtleXVwXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcInBhc3RlXCI6Y2FzZSBcInBhdXNlXCI6Y2FzZSBcInBsYXlcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVydXBcIjpjYXNlIFwicmF0ZWNoYW5nZVwiOmNhc2UgXCJyZXNldFwiOmNhc2UgXCJyZXNpemVcIjpjYXNlIFwic2Vla2VkXCI6Y2FzZSBcInN1Ym1pdFwiOmNhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6Y2FzZSBcInZvbHVtZWNoYW5nZVwiOmNhc2UgXCJjaGFuZ2VcIjpjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6Y2FzZSBcInRleHRJbnB1dFwiOmNhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6Y2FzZSBcImJlZm9yZWlucHV0XCI6Y2FzZSBcImJsdXJcIjpjYXNlIFwiZnVsbHNjcmVlbmNoYW5nZVwiOmNhc2UgXCJmb2N1c1wiOmNhc2UgXCJoYXNoY2hhbmdlXCI6Y2FzZSBcInBvcHN0YXRlXCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJzZWxlY3RzdGFydFwiOnJldHVybiAxO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInNjcm9sbFwiOmNhc2UgXCJ0b2dnbGVcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcIndoZWVsXCI6Y2FzZSBcIm1vdXNlZW50ZXJcIjpjYXNlIFwibW91c2VsZWF2ZVwiOmNhc2UgXCJwb2ludGVyZW50ZXJcIjpjYXNlIFwicG9pbnRlcmxlYXZlXCI6cmV0dXJuIDQ7XG5jYXNlIFwibWVzc2FnZVwiOnN3aXRjaChlYygpKXtjYXNlIGZjOnJldHVybiAxO2Nhc2UgZ2M6cmV0dXJuIDQ7Y2FzZSBoYzpjYXNlIGljOnJldHVybiAxNjtjYXNlIGpjOnJldHVybiA1MzY4NzA5MTI7ZGVmYXVsdDpyZXR1cm4gMTZ9ZGVmYXVsdDpyZXR1cm4gMTZ9fXZhciBrZD1udWxsLGxkPW51bGwsbWQ9bnVsbDtmdW5jdGlvbiBuZCgpe2lmKG1kKXJldHVybiBtZDt2YXIgYSxiPWxkLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGc9Yy1hO2ZvcihkPTE7ZDw9ZyYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuIG1kPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9XG5mdW5jdGlvbiBvZChhKXt2YXIgYj1hLmtleUNvZGU7XCJjaGFyQ29kZVwiaW4gYT8oYT1hLmNoYXJDb2RlLDA9PT1hJiYxMz09PWImJihhPTEzKSk6YT1iOzEwPT09YSYmKGE9MTMpO3JldHVybiAzMjw9YXx8MTM9PT1hP2E6MH1mdW5jdGlvbiBwZCgpe3JldHVybiEwfWZ1bmN0aW9uIHFkKCl7cmV0dXJuITF9XG5mdW5jdGlvbiByZChhKXtmdW5jdGlvbiBiKGIsZCxlLGYsZyl7dGhpcy5fcmVhY3ROYW1lPWI7dGhpcy5fdGFyZ2V0SW5zdD1lO3RoaXMudHlwZT1kO3RoaXMubmF0aXZlRXZlbnQ9Zjt0aGlzLnRhcmdldD1nO3RoaXMuY3VycmVudFRhcmdldD1udWxsO2Zvcih2YXIgYyBpbiBhKWEuaGFzT3duUHJvcGVydHkoYykmJihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9wZDpxZDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXFkO3JldHVybiB0aGlzfUEoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJlxuKGEucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXBkKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmKGEuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXBkKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OnBkfSk7cmV0dXJuIGJ9XG52YXIgc2Q9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sdGQ9cmQoc2QpLHVkPUEoe30sc2Qse3ZpZXc6MCxkZXRhaWw6MH0pLHZkPXJkKHVkKSx3ZCx4ZCx5ZCxBZD1BKHt9LHVkLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hLnJlbGF0ZWRUYXJnZXQ/YS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50OmEucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpblxuYSlyZXR1cm4gYS5tb3ZlbWVudFg7YSE9PXlkJiYoeWQmJlwibW91c2Vtb3ZlXCI9PT1hLnR5cGU/KHdkPWEuc2NyZWVuWC15ZC5zY3JlZW5YLHhkPWEuc2NyZWVuWS15ZC5zY3JlZW5ZKTp4ZD13ZD0wLHlkPWEpO3JldHVybiB3ZH0sbW92ZW1lbnRZOmZ1bmN0aW9uKGEpe3JldHVyblwibW92ZW1lbnRZXCJpbiBhP2EubW92ZW1lbnRZOnhkfX0pLEJkPXJkKEFkKSxDZD1BKHt9LEFkLHtkYXRhVHJhbnNmZXI6MH0pLERkPXJkKENkKSxFZD1BKHt9LHVkLHtyZWxhdGVkVGFyZ2V0OjB9KSxGZD1yZChFZCksR2Q9QSh7fSxzZCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksSGQ9cmQoR2QpLElkPUEoe30sc2Qse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxKZD1yZChJZCksS2Q9QSh7fSxzZCx7ZGF0YTowfSksTGQ9cmQoS2QpLE1kPXtFc2M6XCJFc2NhcGVcIixcblNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LE5kPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLFxuMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxPZD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gUGQoYSl7dmFyIGI9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gYi5nZXRNb2RpZmllclN0YXRlP2IuZ2V0TW9kaWZpZXJTdGF0ZShhKTooYT1PZFthXSk/ISFiW2FdOiExfWZ1bmN0aW9uIHpkKCl7cmV0dXJuIFBkfVxudmFyIFFkPUEoe30sdWQse2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9TWRbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9b2QoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP05kW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6emQsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlP29kKGEpOjB9LGtleUNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09XG5hLnR5cGU/b2QoYSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH19KSxSZD1yZChRZCksU2Q9QSh7fSxBZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxUZD1yZChTZCksVWQ9QSh7fSx1ZCx7dG91Y2hlczowLHRhcmdldFRvdWNoZXM6MCxjaGFuZ2VkVG91Y2hlczowLGFsdEtleTowLG1ldGFLZXk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkfSksVmQ9cmQoVWQpLFdkPUEoe30sc2Qse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksWGQ9cmQoV2QpLFlkPUEoe30sQWQse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWFwiaW4gYT9hLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBhPy1hLndoZWVsRGVsdGFYOjB9LFxuZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFZXCJpbiBhP2EuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGE/LWEud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBhPy1hLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSxaZD1yZChZZCksJGQ9WzksMTMsMjcsMzJdLGFlPWlhJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxiZT1udWxsO2lhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihiZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBjZT1pYSYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIWJlLGRlPWlhJiYoIWFlfHxiZSYmODxiZSYmMTE+PWJlKSxlZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxmZT0hMTtcbmZ1bmN0aW9uIGdlKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJrZXl1cFwiOnJldHVybi0xIT09JGQuaW5kZXhPZihiLmtleUNvZGUpO2Nhc2UgXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PWIua2V5Q29kZTtjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcImZvY3Vzb3V0XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gaGUoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgaWU9ITE7ZnVuY3Rpb24gamUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGhlKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDtmZT0hMDtyZXR1cm4gZWU7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09ZWUmJmZlP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIGtlKGEsYil7aWYoaWUpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IWFlJiZnZShhLGIpPyhhPW5kKCksbWQ9bGQ9a2Q9bnVsbCxpZT0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gZGUmJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIGxlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIG1lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iPyEhbGVbYS50eXBlXTpcInRleHRhcmVhXCI9PT1iPyEwOiExfWZ1bmN0aW9uIG5lKGEsYixjLGQpe0ViKGQpO2I9b2UoYixcIm9uQ2hhbmdlXCIpOzA8Yi5sZW5ndGgmJihjPW5ldyB0ZChcIm9uQ2hhbmdlXCIsXCJjaGFuZ2VcIixudWxsLGMsZCksYS5wdXNoKHtldmVudDpjLGxpc3RlbmVyczpifSkpfXZhciBwZT1udWxsLHFlPW51bGw7ZnVuY3Rpb24gcmUoYSl7c2UoYSwwKX1mdW5jdGlvbiB0ZShhKXt2YXIgYj11ZShhKTtpZihXYShiKSlyZXR1cm4gYX1cbmZ1bmN0aW9uIHZlKGEsYil7aWYoXCJjaGFuZ2VcIj09PWEpcmV0dXJuIGJ9dmFyIHdlPSExO2lmKGlhKXt2YXIgeGU7aWYoaWEpe3ZhciB5ZT1cIm9uaW5wdXRcImluIGRvY3VtZW50O2lmKCF5ZSl7dmFyIHplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7emUuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLFwicmV0dXJuO1wiKTt5ZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgemUub25pbnB1dH14ZT15ZX1lbHNlIHhlPSExO3dlPXhlJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIEFlKCl7cGUmJihwZS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkscWU9cGU9bnVsbCl9ZnVuY3Rpb24gQmUoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJnRlKHFlKSl7dmFyIGI9W107bmUoYixxZSxhLHhiKGEpKTtKYihyZSxiKX19XG5mdW5jdGlvbiBDZShhLGIsYyl7XCJmb2N1c2luXCI9PT1hPyhBZSgpLHBlPWIscWU9YyxwZS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkpOlwiZm9jdXNvdXRcIj09PWEmJkFlKCl9ZnVuY3Rpb24gRGUoYSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWF8fFwia2V5dXBcIj09PWF8fFwia2V5ZG93blwiPT09YSlyZXR1cm4gdGUocWUpfWZ1bmN0aW9uIEVlKGEsYil7aWYoXCJjbGlja1wiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gRmUoYSxiKXtpZihcImlucHV0XCI9PT1hfHxcImNoYW5nZVwiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gR2UoYSxiKXtyZXR1cm4gYT09PWImJigwIT09YXx8MS9hPT09MS9iKXx8YSE9PWEmJmIhPT1ifXZhciBIZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpHZTtcbmZ1bmN0aW9uIEllKGEsYil7aWYoSGUoYSxiKSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT09dHlwZW9mIGF8fG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGJ8fG51bGw9PT1iKXJldHVybiExO3ZhciBjPU9iamVjdC5rZXlzKGEpLGQ9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGghPT1kLmxlbmd0aClyZXR1cm4hMTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2lmKCFqYS5jYWxsKGIsZSl8fCFIZShhW2VdLGJbZV0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIEplKGEpe2Zvcig7YSYmYS5maXJzdENoaWxkOylhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX1cbmZ1bmN0aW9uIEtlKGEsYil7dmFyIGM9SmUoYSk7YT0wO2Zvcih2YXIgZDtjOyl7aWYoMz09PWMubm9kZVR5cGUpe2Q9YStjLnRleHRDb250ZW50Lmxlbmd0aDtpZihhPD1iJiZkPj1iKXJldHVybntub2RlOmMsb2Zmc2V0OmItYX07YT1kfWE6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBhfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9SmUoYyl9fWZ1bmN0aW9uIExlKGEsYil7cmV0dXJuIGEmJmI/YT09PWI/ITA6YSYmMz09PWEubm9kZVR5cGU/ITE6YiYmMz09PWIubm9kZVR5cGU/TGUoYSxiLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIGE/YS5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPyEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpOiExOiExfVxuZnVuY3Rpb24gTWUoKXtmb3IodmFyIGE9d2luZG93LGI9WGEoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGIuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGQpe2M9ITF9aWYoYylhPWIuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO2I9WGEoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gTmUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoXCJpbnB1dFwiPT09YiYmKFwidGV4dFwiPT09YS50eXBlfHxcInNlYXJjaFwiPT09YS50eXBlfHxcInRlbFwiPT09YS50eXBlfHxcInVybFwiPT09YS50eXBlfHxcInBhc3N3b3JkXCI9PT1hLnR5cGUpfHxcInRleHRhcmVhXCI9PT1ifHxcInRydWVcIj09PWEuY29udGVudEVkaXRhYmxlKX1cbmZ1bmN0aW9uIE9lKGEpe3ZhciBiPU1lKCksYz1hLmZvY3VzZWRFbGVtLGQ9YS5zZWxlY3Rpb25SYW5nZTtpZihiIT09YyYmYyYmYy5vd25lckRvY3VtZW50JiZMZShjLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGMpKXtpZihudWxsIT09ZCYmTmUoYykpaWYoYj1kLnN0YXJ0LGE9ZC5lbmQsdm9pZCAwPT09YSYmKGE9YiksXCJzZWxlY3Rpb25TdGFydFwiaW4gYyljLnNlbGVjdGlvblN0YXJ0PWIsYy5zZWxlY3Rpb25FbmQ9TWF0aC5taW4oYSxjLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihhPShiPWMub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZiLmRlZmF1bHRWaWV3fHx3aW5kb3csYS5nZXRTZWxlY3Rpb24pe2E9YS5nZXRTZWxlY3Rpb24oKTt2YXIgZT1jLnRleHRDb250ZW50Lmxlbmd0aCxmPU1hdGgubWluKGQuc3RhcnQsZSk7ZD12b2lkIDA9PT1kLmVuZD9mOk1hdGgubWluKGQuZW5kLGUpOyFhLmV4dGVuZCYmZj5kJiYoZT1kLGQ9ZixmPWUpO2U9S2UoYyxmKTt2YXIgZz1LZShjLFxuZCk7ZSYmZyYmKDEhPT1hLnJhbmdlQ291bnR8fGEuYW5jaG9yTm9kZSE9PWUubm9kZXx8YS5hbmNob3JPZmZzZXQhPT1lLm9mZnNldHx8YS5mb2N1c05vZGUhPT1nLm5vZGV8fGEuZm9jdXNPZmZzZXQhPT1nLm9mZnNldCkmJihiPWIuY3JlYXRlUmFuZ2UoKSxiLnNldFN0YXJ0KGUubm9kZSxlLm9mZnNldCksYS5yZW1vdmVBbGxSYW5nZXMoKSxmPmQ/KGEuYWRkUmFuZ2UoYiksYS5leHRlbmQoZy5ub2RlLGcub2Zmc2V0KSk6KGIuc2V0RW5kKGcubm9kZSxnLm9mZnNldCksYS5hZGRSYW5nZShiKSkpfWI9W107Zm9yKGE9YzthPWEucGFyZW50Tm9kZTspMT09PWEubm9kZVR5cGUmJmIucHVzaCh7ZWxlbWVudDphLGxlZnQ6YS5zY3JvbGxMZWZ0LHRvcDphLnNjcm9sbFRvcH0pO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmZvY3VzJiZjLmZvY3VzKCk7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhPWJbY10sYS5lbGVtZW50LnNjcm9sbExlZnQ9YS5sZWZ0LGEuZWxlbWVudC5zY3JvbGxUb3A9YS50b3B9fVxudmFyIFBlPWlhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsUWU9bnVsbCxSZT1udWxsLFNlPW51bGwsVGU9ITE7XG5mdW5jdGlvbiBVZShhLGIsYyl7dmFyIGQ9Yy53aW5kb3c9PT1jP2MuZG9jdW1lbnQ6OT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQ7VGV8fG51bGw9PVFlfHxRZSE9PVhhKGQpfHwoZD1RZSxcInNlbGVjdGlvblN0YXJ0XCJpbiBkJiZOZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGQ9e2FuY2hvck5vZGU6ZC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpkLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ZC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ZC5mb2N1c09mZnNldH0pLFNlJiZJZShTZSxkKXx8KFNlPWQsZD1vZShSZSxcIm9uU2VsZWN0XCIpLDA8ZC5sZW5ndGgmJihiPW5ldyB0ZChcIm9uU2VsZWN0XCIsXCJzZWxlY3RcIixudWxsLGIsYyksYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpkfSksYi50YXJnZXQ9UWUpKSl9XG5mdW5jdGlvbiBWZShhLGIpe3ZhciBjPXt9O2NbYS50b0xvd2VyQ2FzZSgpXT1iLnRvTG93ZXJDYXNlKCk7Y1tcIldlYmtpdFwiK2FdPVwid2Via2l0XCIrYjtjW1wiTW96XCIrYV09XCJtb3pcIitiO3JldHVybiBjfXZhciBXZT17YW5pbWF0aW9uZW5kOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6VmUoXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxYZT17fSxZZT17fTtcbmlhJiYoWWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgV2UuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgV2UudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBaZShhKXtpZihYZVthXSlyZXR1cm4gWGVbYV07aWYoIVdlW2FdKXJldHVybiBhO3ZhciBiPVdlW2FdLGM7Zm9yKGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpJiZjIGluIFllKXJldHVybiBYZVthXT1iW2NdO3JldHVybiBhfXZhciAkZT1aZShcImFuaW1hdGlvbmVuZFwiKSxhZj1aZShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxiZj1aZShcImFuaW1hdGlvbnN0YXJ0XCIpLGNmPVplKFwidHJhbnNpdGlvbmVuZFwiKSxkZj1uZXcgTWFwLGVmPVwiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBmZihhLGIpe2RmLnNldChhLGIpO2ZhKGIsW2FdKX1mb3IodmFyIGdmPTA7Z2Y8ZWYubGVuZ3RoO2dmKyspe3ZhciBoZj1lZltnZl0samY9aGYudG9Mb3dlckNhc2UoKSxrZj1oZlswXS50b1VwcGVyQ2FzZSgpK2hmLnNsaWNlKDEpO2ZmKGpmLFwib25cIitrZil9ZmYoJGUsXCJvbkFuaW1hdGlvbkVuZFwiKTtmZihhZixcIm9uQW5pbWF0aW9uSXRlcmF0aW9uXCIpO2ZmKGJmLFwib25BbmltYXRpb25TdGFydFwiKTtmZihcImRibGNsaWNrXCIsXCJvbkRvdWJsZUNsaWNrXCIpO2ZmKFwiZm9jdXNpblwiLFwib25Gb2N1c1wiKTtmZihcImZvY3Vzb3V0XCIsXCJvbkJsdXJcIik7ZmYoY2YsXCJvblRyYW5zaXRpb25FbmRcIik7aGEoXCJvbk1vdXNlRW50ZXJcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uTW91c2VMZWF2ZVwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Qb2ludGVyRW50ZXJcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7XG5oYShcIm9uUG9pbnRlckxlYXZlXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO2ZhKFwib25DaGFuZ2VcIixcImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uU2VsZWN0XCIsXCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25CZWZvcmVJbnB1dFwiLFtcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXSk7ZmEoXCJvbkNvbXBvc2l0aW9uRW5kXCIsXCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkNvbXBvc2l0aW9uU3RhcnRcIixcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO1xuZmEoXCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsXCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7dmFyIGxmPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksbWY9bmV3IFNldChcImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZVwiLnNwbGl0KFwiIFwiKS5jb25jYXQobGYpKTtcbmZ1bmN0aW9uIG5mKGEsYixjKXt2YXIgZD1hLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2EuY3VycmVudFRhcmdldD1jO1ViKGQsYix2b2lkIDAsYSk7YS5jdXJyZW50VGFyZ2V0PW51bGx9XG5mdW5jdGlvbiBzZShhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLGs9aC5pbnN0YW5jZSxsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9ZWxzZSBmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXtoPWRbZ107az1oLmluc3RhbmNlO2w9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a319fWlmKFFiKXRocm93IGE9UmIsUWI9ITEsUmI9bnVsbCxhO31cbmZ1bmN0aW9uIEQoYSxiKXt2YXIgYz1iW29mXTt2b2lkIDA9PT1jJiYoYz1iW29mXT1uZXcgU2V0KTt2YXIgZD1hK1wiX19idWJibGVcIjtjLmhhcyhkKXx8KHBmKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gcWYoYSxiLGMpe3ZhciBkPTA7YiYmKGR8PTQpO3BmKGMsYSxkLGIpfXZhciByZj1cIl9yZWFjdExpc3RlbmluZ1wiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHNmKGEpe2lmKCFhW3JmXSl7YVtyZl09ITA7ZGEuZm9yRWFjaChmdW5jdGlvbihiKXtcInNlbGVjdGlvbmNoYW5nZVwiIT09YiYmKG1mLmhhcyhiKXx8cWYoYiwhMSxhKSxxZihiLCEwLGEpKX0pO3ZhciBiPTk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50O251bGw9PT1ifHxiW3JmXXx8KGJbcmZdPSEwLHFmKFwic2VsZWN0aW9uY2hhbmdlXCIsITEsYikpfX1cbmZ1bmN0aW9uIHBmKGEsYixjLGQpe3N3aXRjaChqZChiKSl7Y2FzZSAxOnZhciBlPWVkO2JyZWFrO2Nhc2UgNDplPWdkO2JyZWFrO2RlZmF1bHQ6ZT1mZH1jPWUuYmluZChudWxsLGIsYyxhKTtlPXZvaWQgMDshTGJ8fFwidG91Y2hzdGFydFwiIT09YiYmXCJ0b3VjaG1vdmVcIiE9PWImJlwid2hlZWxcIiE9PWJ8fChlPSEwKTtkP3ZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7Y2FwdHVyZTohMCxwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfVxuZnVuY3Rpb24gaGQoYSxiLGMsZCxlKXt2YXIgZj1kO2lmKDA9PT0oYiYxKSYmMD09PShiJjIpJiZudWxsIT09ZClhOmZvcig7Oyl7aWYobnVsbD09PWQpcmV0dXJuO3ZhciBnPWQudGFnO2lmKDM9PT1nfHw0PT09Zyl7dmFyIGg9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihoPT09ZXx8OD09PWgubm9kZVR5cGUmJmgucGFyZW50Tm9kZT09PWUpYnJlYWs7aWYoND09PWcpZm9yKGc9ZC5yZXR1cm47bnVsbCE9PWc7KXt2YXIgaz1nLnRhZztpZigzPT09a3x8ND09PWspaWYoaz1nLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGs9PT1lfHw4PT09ay5ub2RlVHlwZSYmay5wYXJlbnROb2RlPT09ZSlyZXR1cm47Zz1nLnJldHVybn1mb3IoO251bGwhPT1oOyl7Zz1XYyhoKTtpZihudWxsPT09ZylyZXR1cm47az1nLnRhZztpZig1PT09a3x8Nj09PWspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59SmIoZnVuY3Rpb24oKXt2YXIgZD1mLGU9eGIoYyksZz1bXTtcbmE6e3ZhciBoPWRmLmdldChhKTtpZih2b2lkIDAhPT1oKXt2YXIgaz10ZCxuPWE7c3dpdGNoKGEpe2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDA9PT1vZChjKSlicmVhayBhO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6az1SZDticmVhaztjYXNlIFwiZm9jdXNpblwiOm49XCJmb2N1c1wiO2s9RmQ7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6bj1cImJsdXJcIjtrPUZkO2JyZWFrO2Nhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOms9RmQ7YnJlYWs7Y2FzZSBcImNsaWNrXCI6aWYoMj09PWMuYnV0dG9uKWJyZWFrIGE7Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwiY29udGV4dG1lbnVcIjprPUJkO2JyZWFrO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOms9XG5EZDticmVhaztjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjprPVZkO2JyZWFrO2Nhc2UgJGU6Y2FzZSBhZjpjYXNlIGJmOms9SGQ7YnJlYWs7Y2FzZSBjZjprPVhkO2JyZWFrO2Nhc2UgXCJzY3JvbGxcIjprPXZkO2JyZWFrO2Nhc2UgXCJ3aGVlbFwiOms9WmQ7YnJlYWs7Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcInBhc3RlXCI6az1KZDticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVydXBcIjprPVRkfXZhciB0PTAhPT0oYiY0KSxKPSF0JiZcInNjcm9sbFwiPT09YSx4PXQ/bnVsbCE9PWg/aCtcIkNhcHR1cmVcIjpudWxsOmg7dD1bXTtmb3IodmFyIHc9ZCx1O251bGwhPT1cbnc7KXt1PXc7dmFyIEY9dS5zdGF0ZU5vZGU7NT09PXUudGFnJiZudWxsIT09RiYmKHU9RixudWxsIT09eCYmKEY9S2Iodyx4KSxudWxsIT1GJiZ0LnB1c2godGYodyxGLHUpKSkpO2lmKEopYnJlYWs7dz13LnJldHVybn0wPHQubGVuZ3RoJiYoaD1uZXcgayhoLG4sbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6aCxsaXN0ZW5lcnM6dH0pKX19aWYoMD09PShiJjcpKXthOntoPVwibW91c2VvdmVyXCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hO2s9XCJtb3VzZW91dFwiPT09YXx8XCJwb2ludGVyb3V0XCI9PT1hO2lmKGgmJmMhPT13YiYmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdjKG4pfHxuW3VmXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk/aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3c6d2luZG93O2lmKGspe2lmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLnRvRWxlbWVudCxrPWQsbj1uP1djKG4pOm51bGwsbnVsbCE9PVxubiYmKEo9VmIobiksbiE9PUp8fDUhPT1uLnRhZyYmNiE9PW4udGFnKSluPW51bGx9ZWxzZSBrPW51bGwsbj1kO2lmKGshPT1uKXt0PUJkO0Y9XCJvbk1vdXNlTGVhdmVcIjt4PVwib25Nb3VzZUVudGVyXCI7dz1cIm1vdXNlXCI7aWYoXCJwb2ludGVyb3V0XCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hKXQ9VGQsRj1cIm9uUG9pbnRlckxlYXZlXCIseD1cIm9uUG9pbnRlckVudGVyXCIsdz1cInBvaW50ZXJcIjtKPW51bGw9PWs/aDp1ZShrKTt1PW51bGw9PW4/aDp1ZShuKTtoPW5ldyB0KEYsdytcImxlYXZlXCIsayxjLGUpO2gudGFyZ2V0PUo7aC5yZWxhdGVkVGFyZ2V0PXU7Rj1udWxsO1djKGUpPT09ZCYmKHQ9bmV3IHQoeCx3K1wiZW50ZXJcIixuLGMsZSksdC50YXJnZXQ9dSx0LnJlbGF0ZWRUYXJnZXQ9SixGPXQpO0o9RjtpZihrJiZuKWI6e3Q9azt4PW47dz0wO2Zvcih1PXQ7dTt1PXZmKHUpKXcrKzt1PTA7Zm9yKEY9eDtGO0Y9dmYoRikpdSsrO2Zvcig7MDx3LXU7KXQ9dmYodCksdy0tO2Zvcig7MDx1LXc7KXg9XG52Zih4KSx1LS07Zm9yKDt3LS07KXtpZih0PT09eHx8bnVsbCE9PXgmJnQ9PT14LmFsdGVybmF0ZSlicmVhayBiO3Q9dmYodCk7eD12Zih4KX10PW51bGx9ZWxzZSB0PW51bGw7bnVsbCE9PWsmJndmKGcsaCxrLHQsITEpO251bGwhPT1uJiZudWxsIT09SiYmd2YoZyxKLG4sdCwhMCl9fX1hOntoPWQ/dWUoZCk6d2luZG93O2s9aC5ub2RlTmFtZSYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKFwic2VsZWN0XCI9PT1rfHxcImlucHV0XCI9PT1rJiZcImZpbGVcIj09PWgudHlwZSl2YXIgbmE9dmU7ZWxzZSBpZihtZShoKSlpZih3ZSluYT1GZTtlbHNle25hPURlO3ZhciB4YT1DZX1lbHNlKGs9aC5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWsudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWgudHlwZXx8XCJyYWRpb1wiPT09aC50eXBlKSYmKG5hPUVlKTtpZihuYSYmKG5hPW5hKGEsZCkpKXtuZShnLG5hLGMsZSk7YnJlYWsgYX14YSYmeGEoYSxoLGQpO1wiZm9jdXNvdXRcIj09PWEmJih4YT1oLl93cmFwcGVyU3RhdGUpJiZcbnhhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1oLnR5cGUmJmNiKGgsXCJudW1iZXJcIixoLnZhbHVlKX14YT1kP3VlKGQpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjppZihtZSh4YSl8fFwidHJ1ZVwiPT09eGEuY29udGVudEVkaXRhYmxlKVFlPXhhLFJlPWQsU2U9bnVsbDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpTZT1SZT1RZT1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpUZT0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6VGU9ITE7VWUoZyxjLGUpO2JyZWFrO2Nhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihQZSlicmVhaztjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOlVlKGcsYyxlKX12YXIgJGE7aWYoYWUpYjp7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCI7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpiYT1cIm9uQ29tcG9zaXRpb25FbmRcIjtcbmJyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6YmE9XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCI7YnJlYWsgYn1iYT12b2lkIDB9ZWxzZSBpZT9nZShhLGMpJiYoYmE9XCJvbkNvbXBvc2l0aW9uRW5kXCIpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7YmEmJihkZSYmXCJrb1wiIT09Yy5sb2NhbGUmJihpZXx8XCJvbkNvbXBvc2l0aW9uU3RhcnRcIiE9PWJhP1wib25Db21wb3NpdGlvbkVuZFwiPT09YmEmJmllJiYoJGE9bmQoKSk6KGtkPWUsbGQ9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsaWU9ITApKSx4YT1vZShkLGJhKSwwPHhhLmxlbmd0aCYmKGJhPW5ldyBMZChiYSxhLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmJhLGxpc3RlbmVyczp4YX0pLCRhP2JhLmRhdGE9JGE6KCRhPWhlKGMpLG51bGwhPT0kYSYmKGJhLmRhdGE9JGEpKSkpO2lmKCRhPWNlP2plKGEsYyk6a2UoYSxjKSlkPW9lKGQsXCJvbkJlZm9yZUlucHV0XCIpLFxuMDxkLmxlbmd0aCYmKGU9bmV3IExkKFwib25CZWZvcmVJbnB1dFwiLFwiYmVmb3JlaW5wdXRcIixudWxsLGMsZSksZy5wdXNoKHtldmVudDplLGxpc3RlbmVyczpkfSksZS5kYXRhPSRhKX1zZShnLGIpfSl9ZnVuY3Rpb24gdGYoYSxiLGMpe3JldHVybntpbnN0YW5jZTphLGxpc3RlbmVyOmIsY3VycmVudFRhcmdldDpjfX1mdW5jdGlvbiBvZShhLGIpe2Zvcih2YXIgYz1iK1wiQ2FwdHVyZVwiLGQ9W107bnVsbCE9PWE7KXt2YXIgZT1hLGY9ZS5zdGF0ZU5vZGU7NT09PWUudGFnJiZudWxsIT09ZiYmKGU9ZixmPUtiKGEsYyksbnVsbCE9ZiYmZC51bnNoaWZ0KHRmKGEsZixlKSksZj1LYihhLGIpLG51bGwhPWYmJmQucHVzaCh0ZihhLGYsZSkpKTthPWEucmV0dXJufXJldHVybiBkfWZ1bmN0aW9uIHZmKGEpe2lmKG51bGw9PT1hKXJldHVybiBudWxsO2RvIGE9YS5yZXR1cm47d2hpbGUoYSYmNSE9PWEudGFnKTtyZXR1cm4gYT9hOm51bGx9XG5mdW5jdGlvbiB3ZihhLGIsYyxkLGUpe2Zvcih2YXIgZj1iLl9yZWFjdE5hbWUsZz1bXTtudWxsIT09YyYmYyE9PWQ7KXt2YXIgaD1jLGs9aC5hbHRlcm5hdGUsbD1oLnN0YXRlTm9kZTtpZihudWxsIT09ayYmaz09PWQpYnJlYWs7NT09PWgudGFnJiZudWxsIT09bCYmKGg9bCxlPyhrPUtiKGMsZiksbnVsbCE9ayYmZy51bnNoaWZ0KHRmKGMsayxoKSkpOmV8fChrPUtiKGMsZiksbnVsbCE9ayYmZy5wdXNoKHRmKGMsayxoKSkpKTtjPWMucmV0dXJufTAhPT1nLmxlbmd0aCYmYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpnfSl9dmFyIHhmPS9cXHJcXG4/L2cseWY9L1xcdTAwMDB8XFx1RkZGRC9nO2Z1bmN0aW9uIHpmKGEpe3JldHVybihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpcIlwiK2EpLnJlcGxhY2UoeGYsXCJcXG5cIikucmVwbGFjZSh5ZixcIlwiKX1mdW5jdGlvbiBBZihhLGIsYyl7Yj16ZihiKTtpZih6ZihhKSE9PWImJmMpdGhyb3cgRXJyb3IocCg0MjUpKTt9ZnVuY3Rpb24gQmYoKXt9XG52YXIgQ2Y9bnVsbCxEZj1udWxsO2Z1bmN0aW9uIEVmKGEsYil7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09YXx8XCJub3NjcmlwdFwiPT09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm51bWJlclwiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfVxudmFyIEZmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLEdmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxIZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxKZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBIZj9mdW5jdGlvbihhKXtyZXR1cm4gSGYucmVzb2x2ZShudWxsKS50aGVuKGEpLmNhdGNoKElmKX06RmY7ZnVuY3Rpb24gSWYoYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSl9XG5mdW5jdGlvbiBLZihhLGIpe3ZhciBjPWIsZD0wO2Rve3ZhciBlPWMubmV4dFNpYmxpbmc7YS5yZW1vdmVDaGlsZChjKTtpZihlJiY4PT09ZS5ub2RlVHlwZSlpZihjPWUuZGF0YSxcIi8kXCI9PT1jKXtpZigwPT09ZCl7YS5yZW1vdmVDaGlsZChlKTtiZChiKTtyZXR1cm59ZC0tfWVsc2VcIiRcIiE9PWMmJlwiJD9cIiE9PWMmJlwiJCFcIiE9PWN8fGQrKztjPWV9d2hpbGUoYyk7YmQoYil9ZnVuY3Rpb24gTGYoYSl7Zm9yKDtudWxsIT1hO2E9YS5uZXh0U2libGluZyl7dmFyIGI9YS5ub2RlVHlwZTtpZigxPT09Ynx8Mz09PWIpYnJlYWs7aWYoOD09PWIpe2I9YS5kYXRhO2lmKFwiJFwiPT09Ynx8XCIkIVwiPT09Ynx8XCIkP1wiPT09YilicmVhaztpZihcIi8kXCI9PT1iKXJldHVybiBudWxsfX1yZXR1cm4gYX1cbmZ1bmN0aW9uIE1mKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIkXCI9PT1jfHxcIiQhXCI9PT1jfHxcIiQ/XCI9PT1jKXtpZigwPT09YilyZXR1cm4gYTtiLS19ZWxzZVwiLyRcIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBOZj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxPZj1cIl9fcmVhY3RGaWJlciRcIitOZixQZj1cIl9fcmVhY3RQcm9wcyRcIitOZix1Zj1cIl9fcmVhY3RDb250YWluZXIkXCIrTmYsb2Y9XCJfX3JlYWN0RXZlbnRzJFwiK05mLFFmPVwiX19yZWFjdExpc3RlbmVycyRcIitOZixSZj1cIl9fcmVhY3RIYW5kbGVzJFwiK05mO1xuZnVuY3Rpb24gV2MoYSl7dmFyIGI9YVtPZl07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbdWZdfHxjW09mXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPU1mKGEpO251bGwhPT1hOyl7aWYoYz1hW09mXSlyZXR1cm4gYzthPU1mKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDYihhKXthPWFbT2ZdfHxhW3VmXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gdWUoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHAoMzMpKTt9ZnVuY3Rpb24gRGIoYSl7cmV0dXJuIGFbUGZdfHxudWxsfXZhciBTZj1bXSxUZj0tMTtmdW5jdGlvbiBVZihhKXtyZXR1cm57Y3VycmVudDphfX1cbmZ1bmN0aW9uIEUoYSl7MD5UZnx8KGEuY3VycmVudD1TZltUZl0sU2ZbVGZdPW51bGwsVGYtLSl9ZnVuY3Rpb24gRyhhLGIpe1RmKys7U2ZbVGZdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn12YXIgVmY9e30sSD1VZihWZiksV2Y9VWYoITEpLFhmPVZmO2Z1bmN0aW9uIFlmKGEsYil7dmFyIGM9YS50eXBlLmNvbnRleHRUeXBlcztpZighYylyZXR1cm4gVmY7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoZCYmZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09YilyZXR1cm4gZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgZT17fSxmO2ZvcihmIGluIGMpZVtmXT1iW2ZdO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1iLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBaZihhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uICRmKCl7RShXZik7RShIKX1mdW5jdGlvbiBhZyhhLGIsYyl7aWYoSC5jdXJyZW50IT09VmYpdGhyb3cgRXJyb3IocCgxNjgpKTtHKEgsYik7RyhXZixjKX1mdW5jdGlvbiBiZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7Yj1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGIpKXRocm93IEVycm9yKHAoMTA4LFJhKGEpfHxcIlVua25vd25cIixlKSk7cmV0dXJuIEEoe30sYyxkKX1cbmZ1bmN0aW9uIGNnKGEpe2E9KGE9YS5zdGF0ZU5vZGUpJiZhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxWZjtYZj1ILmN1cnJlbnQ7RyhILGEpO0coV2YsV2YuY3VycmVudCk7cmV0dXJuITB9ZnVuY3Rpb24gZGcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2lmKCFkKXRocm93IEVycm9yKHAoMTY5KSk7Yz8oYT1iZyhhLGIsWGYpLGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9YSxFKFdmKSxFKEgpLEcoSCxhKSk6RShXZik7RyhXZixjKX12YXIgZWc9bnVsbCxmZz0hMSxnZz0hMTtmdW5jdGlvbiBoZyhhKXtudWxsPT09ZWc/ZWc9W2FdOmVnLnB1c2goYSl9ZnVuY3Rpb24gaWcoYSl7Zmc9ITA7aGcoYSl9XG5mdW5jdGlvbiBqZygpe2lmKCFnZyYmbnVsbCE9PWVnKXtnZz0hMDt2YXIgYT0wLGI9Qzt0cnl7dmFyIGM9ZWc7Zm9yKEM9MTthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXTtkbyBkPWQoITApO3doaWxlKG51bGwhPT1kKX1lZz1udWxsO2ZnPSExfWNhdGNoKGUpe3Rocm93IG51bGwhPT1lZyYmKGVnPWVnLnNsaWNlKGErMSkpLGFjKGZjLGpnKSxlO31maW5hbGx5e0M9YixnZz0hMX19cmV0dXJuIG51bGx9dmFyIGtnPVtdLGxnPTAsbWc9bnVsbCxuZz0wLG9nPVtdLHBnPTAscWc9bnVsbCxyZz0xLHNnPVwiXCI7ZnVuY3Rpb24gdGcoYSxiKXtrZ1tsZysrXT1uZztrZ1tsZysrXT1tZzttZz1hO25nPWJ9XG5mdW5jdGlvbiB1ZyhhLGIsYyl7b2dbcGcrK109cmc7b2dbcGcrK109c2c7b2dbcGcrK109cWc7cWc9YTt2YXIgZD1yZzthPXNnO3ZhciBlPTMyLW9jKGQpLTE7ZCY9figxPDxlKTtjKz0xO3ZhciBmPTMyLW9jKGIpK2U7aWYoMzA8Zil7dmFyIGc9ZS1lJTU7Zj0oZCYoMTw8ZyktMSkudG9TdHJpbmcoMzIpO2Q+Pj1nO2UtPWc7cmc9MTw8MzItb2MoYikrZXxjPDxlfGQ7c2c9ZithfWVsc2Ugcmc9MTw8ZnxjPDxlfGQsc2c9YX1mdW5jdGlvbiB2ZyhhKXtudWxsIT09YS5yZXR1cm4mJih0ZyhhLDEpLHVnKGEsMSwwKSl9ZnVuY3Rpb24gd2coYSl7Zm9yKDthPT09bWc7KW1nPWtnWy0tbGddLGtnW2xnXT1udWxsLG5nPWtnWy0tbGddLGtnW2xnXT1udWxsO2Zvcig7YT09PXFnOylxZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxzZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxyZz1vZ1stLXBnXSxvZ1twZ109bnVsbH12YXIgeGc9bnVsbCx5Zz1udWxsLEk9ITEsemc9bnVsbDtcbmZ1bmN0aW9uIEFnKGEsYil7dmFyIGM9QmcoNSxudWxsLG51bGwsMCk7Yy5lbGVtZW50VHlwZT1cIkRFTEVURURcIjtjLnN0YXRlTm9kZT1iO2MucmV0dXJuPWE7Yj1hLmRlbGV0aW9ucztudWxsPT09Yj8oYS5kZWxldGlvbnM9W2NdLGEuZmxhZ3N8PTE2KTpiLnB1c2goYyl9XG5mdW5jdGlvbiBDZyhhLGIpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnZhciBjPWEudHlwZTtiPTEhPT1iLm5vZGVUeXBlfHxjLnRvTG93ZXJDYXNlKCkhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDpiO3JldHVybiBudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPUxmKGIuZmlyc3RDaGlsZCksITApOiExO2Nhc2UgNjpyZXR1cm4gYj1cIlwiPT09YS5wZW5kaW5nUHJvcHN8fDMhPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPW51bGwsITApOiExO2Nhc2UgMTM6cmV0dXJuIGI9OCE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhjPW51bGwhPT1xZz97aWQ6cmcsb3ZlcmZsb3c6c2d9Om51bGwsYS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmIsdHJlZUNvbnRleHQ6YyxyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sYz1CZygxOCxudWxsLG51bGwsMCksYy5zdGF0ZU5vZGU9YixjLnJldHVybj1hLGEuY2hpbGQ9Yyx4Zz1hLHlnPVxubnVsbCwhMCk6ITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRGcoYSl7cmV0dXJuIDAhPT0oYS5tb2RlJjEpJiYwPT09KGEuZmxhZ3MmMTI4KX1mdW5jdGlvbiBFZyhhKXtpZihJKXt2YXIgYj15ZztpZihiKXt2YXIgYz1iO2lmKCFDZyhhLGIpKXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2I9TGYoYy5uZXh0U2libGluZyk7dmFyIGQ9eGc7YiYmQ2coYSxiKT9BZyhkLGMpOihhLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MixJPSExLHhnPWEpfX1lbHNle2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7YS5mbGFncz1hLmZsYWdzJi00MDk3fDI7ST0hMTt4Zz1hfX19ZnVuY3Rpb24gRmcoYSl7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWEmJjUhPT1hLnRhZyYmMyE9PWEudGFnJiYxMyE9PWEudGFnOylhPWEucmV0dXJuO3hnPWF9XG5mdW5jdGlvbiBHZyhhKXtpZihhIT09eGcpcmV0dXJuITE7aWYoIUkpcmV0dXJuIEZnKGEpLEk9ITAsITE7dmFyIGI7KGI9MyE9PWEudGFnKSYmIShiPTUhPT1hLnRhZykmJihiPWEudHlwZSxiPVwiaGVhZFwiIT09YiYmXCJib2R5XCIhPT1iJiYhRWYoYS50eXBlLGEubWVtb2l6ZWRQcm9wcykpO2lmKGImJihiPXlnKSl7aWYoRGcoYSkpdGhyb3cgSGcoKSxFcnJvcihwKDQxOCkpO2Zvcig7YjspQWcoYSxiKSxiPUxmKGIubmV4dFNpYmxpbmcpfUZnKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IocCgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIi8kXCI9PT1jKXtpZigwPT09Yil7eWc9TGYoYS5uZXh0U2libGluZyk7YnJlYWsgYX1iLS19ZWxzZVwiJFwiIT09YyYmXCIkIVwiIT09YyYmXCIkP1wiIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ315Zz1cbm51bGx9fWVsc2UgeWc9eGc/TGYoYS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gSGcoKXtmb3IodmFyIGE9eWc7YTspYT1MZihhLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBJZygpe3lnPXhnPW51bGw7ST0hMX1mdW5jdGlvbiBKZyhhKXtudWxsPT09emc/emc9W2FdOnpnLnB1c2goYSl9dmFyIEtnPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO2Z1bmN0aW9uIExnKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9QSh7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifXZhciBNZz1VZihudWxsKSxOZz1udWxsLE9nPW51bGwsUGc9bnVsbDtmdW5jdGlvbiBRZygpe1BnPU9nPU5nPW51bGx9ZnVuY3Rpb24gUmcoYSl7dmFyIGI9TWcuY3VycmVudDtFKE1nKTthLl9jdXJyZW50VmFsdWU9Yn1cbmZ1bmN0aW9uIFNnKGEsYixjKXtmb3IoO251bGwhPT1hOyl7dmFyIGQ9YS5hbHRlcm5hdGU7KGEuY2hpbGRMYW5lcyZiKSE9PWI/KGEuY2hpbGRMYW5lc3w9YixudWxsIT09ZCYmKGQuY2hpbGRMYW5lc3w9YikpOm51bGwhPT1kJiYoZC5jaGlsZExhbmVzJmIpIT09YiYmKGQuY2hpbGRMYW5lc3w9Yik7aWYoYT09PWMpYnJlYWs7YT1hLnJldHVybn19ZnVuY3Rpb24gVGcoYSxiKXtOZz1hO1BnPU9nPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoMCE9PShhLmxhbmVzJmIpJiYoVWc9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfVxuZnVuY3Rpb24gVmcoYSl7dmFyIGI9YS5fY3VycmVudFZhbHVlO2lmKFBnIT09YSlpZihhPXtjb250ZXh0OmEsbWVtb2l6ZWRWYWx1ZTpiLG5leHQ6bnVsbH0sbnVsbD09PU9nKXtpZihudWxsPT09TmcpdGhyb3cgRXJyb3IocCgzMDgpKTtPZz1hO05nLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6YX19ZWxzZSBPZz1PZy5uZXh0PWE7cmV0dXJuIGJ9dmFyIFdnPW51bGw7ZnVuY3Rpb24gWGcoYSl7bnVsbD09PVdnP1dnPVthXTpXZy5wdXNoKGEpfWZ1bmN0aW9uIFlnKGEsYixjLGQpe3ZhciBlPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGMubmV4dD1jLFhnKGIpKTooYy5uZXh0PWUubmV4dCxlLm5leHQ9Yyk7Yi5pbnRlcmxlYXZlZD1jO3JldHVybiBaZyhhLGQpfVxuZnVuY3Rpb24gWmcoYSxiKXthLmxhbmVzfD1iO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiYoYy5sYW5lc3w9Yik7Yz1hO2ZvcihhPWEucmV0dXJuO251bGwhPT1hOylhLmNoaWxkTGFuZXN8PWIsYz1hLmFsdGVybmF0ZSxudWxsIT09YyYmKGMuY2hpbGRMYW5lc3w9YiksYz1hLGE9YS5yZXR1cm47cmV0dXJuIDM9PT1jLnRhZz9jLnN0YXRlTm9kZTpudWxsfXZhciAkZz0hMTtmdW5jdGlvbiBhaChhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fVxuZnVuY3Rpb24gYmgoYSxiKXthPWEudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT09PWEmJihiLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmEuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmEubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmEuc2hhcmVkLGVmZmVjdHM6YS5lZmZlY3RzfSl9ZnVuY3Rpb24gY2goYSxiKXtyZXR1cm57ZXZlbnRUaW1lOmEsbGFuZTpiLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH19XG5mdW5jdGlvbiBkaChhLGIsYyl7dmFyIGQ9YS51cGRhdGVRdWV1ZTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtkPWQuc2hhcmVkO2lmKDAhPT0oSyYyKSl7dmFyIGU9ZC5wZW5kaW5nO251bGw9PT1lP2IubmV4dD1iOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLnBlbmRpbmc9YjtyZXR1cm4gWmcoYSxjKX1lPWQuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGIubmV4dD1iLFhnKGQpKTooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5pbnRlcmxlYXZlZD1iO3JldHVybiBaZyhhLGMpfWZ1bmN0aW9uIGVoKGEsYixjKXtiPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWImJihiPWIuc2hhcmVkLDAhPT0oYyY0MTk0MjQwKSkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG5mdW5jdGlvbiBmaChhLGIpe3ZhciBjPWEudXBkYXRlUXVldWUsZD1hLmFsdGVybmF0ZTtpZihudWxsIT09ZCYmKGQ9ZC51cGRhdGVRdWV1ZSxjPT09ZCkpe3ZhciBlPW51bGwsZj1udWxsO2M9Yy5maXJzdEJhc2VVcGRhdGU7aWYobnVsbCE9PWMpe2Rve3ZhciBnPXtldmVudFRpbWU6Yy5ldmVudFRpbWUsbGFuZTpjLmxhbmUsdGFnOmMudGFnLHBheWxvYWQ6Yy5wYXlsb2FkLGNhbGxiYWNrOmMuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09Zj9lPWY9ZzpmPWYubmV4dD1nO2M9Yy5uZXh0fXdoaWxlKG51bGwhPT1jKTtudWxsPT09Zj9lPWY9YjpmPWYubmV4dD1ifWVsc2UgZT1mPWI7Yz17YmFzZVN0YXRlOmQuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLGxhc3RCYXNlVXBkYXRlOmYsc2hhcmVkOmQuc2hhcmVkLGVmZmVjdHM6ZC5lZmZlY3RzfTthLnVwZGF0ZVF1ZXVlPWM7cmV0dXJufWE9Yy5sYXN0QmFzZVVwZGF0ZTtudWxsPT09YT9jLmZpcnN0QmFzZVVwZGF0ZT1iOmEubmV4dD1cbmI7Yy5sYXN0QmFzZVVwZGF0ZT1ifVxuZnVuY3Rpb24gZ2goYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTskZz0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCxsPWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPWw6Zy5uZXh0PWw7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO251bGwhPT1tJiYobT1tLnVwZGF0ZVF1ZXVlLGg9bS5sYXN0QmFzZVVwZGF0ZSxoIT09ZyYmKG51bGw9PT1oP20uZmlyc3RCYXNlVXBkYXRlPWw6aC5uZXh0PWwsbS5sYXN0QmFzZVVwZGF0ZT1rKSl9aWYobnVsbCE9PWYpe3ZhciBxPWUuYmFzZVN0YXRlO2c9MDttPWw9az1udWxsO2g9Zjtkb3t2YXIgcj1oLmxhbmUseT1oLmV2ZW50VGltZTtpZigoZCZyKT09PXIpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTp5LGxhbmU6MCx0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxcbm5leHQ6bnVsbH0pO2E6e3ZhciBuPWEsdD1oO3I9Yjt5PWM7c3dpdGNoKHQudGFnKXtjYXNlIDE6bj10LnBheWxvYWQ7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4pe3E9bi5jYWxsKHkscSxyKTticmVhayBhfXE9bjticmVhayBhO2Nhc2UgMzpuLmZsYWdzPW4uZmxhZ3MmLTY1NTM3fDEyODtjYXNlIDA6bj10LnBheWxvYWQ7cj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygbj9uLmNhbGwoeSxxLHIpOm47aWYobnVsbD09PXJ8fHZvaWQgMD09PXIpYnJlYWsgYTtxPUEoe30scSxyKTticmVhayBhO2Nhc2UgMjokZz0hMH19bnVsbCE9PWguY2FsbGJhY2smJjAhPT1oLmxhbmUmJihhLmZsYWdzfD02NCxyPWUuZWZmZWN0cyxudWxsPT09cj9lLmVmZmVjdHM9W2hdOnIucHVzaChoKSl9ZWxzZSB5PXtldmVudFRpbWU6eSxsYW5lOnIsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8obD1tPXksaz1xKTptPW0ubmV4dD15LGd8PXI7XG5oPWgubmV4dDtpZihudWxsPT09aClpZihoPWUuc2hhcmVkLnBlbmRpbmcsbnVsbD09PWgpYnJlYWs7ZWxzZSByPWgsaD1yLm5leHQsci5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1yLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9cSk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT1sO2UubGFzdEJhc2VVcGRhdGU9bTtiPWUuc2hhcmVkLmludGVybGVhdmVkO2lmKG51bGwhPT1iKXtlPWI7ZG8gZ3w9ZS5sYW5lLGU9ZS5uZXh0O3doaWxlKGUhPT1iKX1lbHNlIG51bGw9PT1mJiYoZS5zaGFyZWQubGFuZXM9MCk7aGh8PWc7YS5sYW5lcz1nO2EubWVtb2l6ZWRTdGF0ZT1xfX1cbmZ1bmN0aW9uIGloKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD1hW2JdLGU9ZC5jYWxsYmFjaztpZihudWxsIT09ZSl7ZC5jYWxsYmFjaz1udWxsO2Q9YztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihwKDE5MSxlKSk7ZS5jYWxsKGQpfX19dmFyIGpoPShuZXcgYWEuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIGtoKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjpBKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7MD09PWEubGFuZXMmJihhLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1jKX1cbnZhciBuaD17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYihhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi50YWc9MTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1kaChhLGYsZSk7bnVsbCE9PWImJihtaChiLGEsZSxkKSxlaChiLGEsZSkpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPUwoKSxkPVxubGgoYSksZT1jaChjLGQpO2UudGFnPTI7dm9pZCAwIT09YiYmbnVsbCE9PWImJihlLmNhbGxiYWNrPWIpO2I9ZGgoYSxlLGQpO251bGwhPT1iJiYobWgoYixhLGQsYyksZWgoYixhLGQpKX19O2Z1bmN0aW9uIG9oKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGQsZixnKTpiLnByb3RvdHlwZSYmYi5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IUllKGMsZCl8fCFJZShlLGYpOiEwfVxuZnVuY3Rpb24gcGgoYSxiLGMpe3ZhciBkPSExLGU9VmY7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2Y9VmcoZik6KGU9WmYoYik/WGY6SC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk/WWYoYSxlKTpWZik7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPW5oO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifVxuZnVuY3Rpb24gcWgoYSxiLGMsZCl7YT1iLnN0YXRlO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7Yi5zdGF0ZSE9PWEmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoYixiLnN0YXRlLG51bGwpfVxuZnVuY3Rpb24gcmgoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1qaDthaChhKTt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/ZS5jb250ZXh0PVZnKGYpOihmPVpmKGIpP1hmOkguY3VycmVudCxlLmNvbnRleHQ9WWYoYSxmKSk7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7Zj1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmKGtoKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsXG5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLGdoKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnREaWRNb3VudCYmKGEuZmxhZ3N8PTQxOTQzMDgpfVxuZnVuY3Rpb24gc2goYSxiLGMpe2E9Yy5yZWY7aWYobnVsbCE9PWEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZcIm9iamVjdFwiIT09dHlwZW9mIGEpe2lmKGMuX293bmVyKXtjPWMuX293bmVyO2lmKGMpe2lmKDEhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKHAoMTQ3LGEpKTt2YXIgZT1kLGY9XCJcIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnJlZiYmYi5yZWYuX3N0cmluZ1JlZj09PWYpcmV0dXJuIGIucmVmO2I9ZnVuY3Rpb24oYSl7dmFyIGI9ZS5yZWZzO2I9PT1qaCYmKGI9ZS5yZWZzPXt9KTtudWxsPT09YT9kZWxldGUgYltmXTpiW2ZdPWF9O2IuX3N0cmluZ1JlZj1mO3JldHVybiBifWlmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihwKDI4NCkpO2lmKCFjLl9vd25lcil0aHJvdyBFcnJvcihwKDI5MCxhKSk7fXJldHVybiBhfVxuZnVuY3Rpb24gdGgoYSxiKXthPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTt0aHJvdyBFcnJvcihwKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1hP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmEpKTt9ZnVuY3Rpb24gdWgoYSl7dmFyIGI9YS5faW5pdDtyZXR1cm4gYihhLl9wYXlsb2FkKX1cbmZ1bmN0aW9uIHZoKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmRlbGV0aW9ucztudWxsPT09ZD8oYi5kZWxldGlvbnM9W2NdLGIuZmxhZ3N8PTE2KTpkLnB1c2goYyl9fWZ1bmN0aW9uIGMoYyxkKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1kOyliKGMsZCksZD1kLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChhLGIpe2ZvcihhPW5ldyBNYXA7bnVsbCE9PWI7KW51bGwhPT1iLmtleT9hLnNldChiLmtleSxiKTphLnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXthPXdoKGEsYik7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYi5mbGFnc3w9MTA0ODU3NixjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM/KGIuZmxhZ3N8PTIsYyk6ZDtiLmZsYWdzfD0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmXG5udWxsPT09Yi5hbHRlcm5hdGUmJihiLmZsYWdzfD0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9eGgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZj1jLnR5cGU7aWYoZj09PXlhKXJldHVybiBtKGEsYixjLnByb3BzLmNoaWxkcmVuLGQsYy5rZXkpO2lmKG51bGwhPT1iJiYoYi5lbGVtZW50VHlwZT09PWZ8fFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYuJCR0eXBlb2Y9PT1IYSYmdWgoZik9PT1iLnR5cGUpKXJldHVybiBkPWUoYixjLnByb3BzKSxkLnJlZj1zaChhLGIsYyksZC5yZXR1cm49YSxkO2Q9eWgoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9c2goYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxcbmIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1jLmNvbnRhaW5lckluZm98fGIuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09Yy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj16aChjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10pO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbShhLGIsYyxkLGYpe2lmKG51bGw9PT1ifHw3IT09Yi50YWcpcmV0dXJuIGI9QWgoYyxhLm1vZGUsZCxmKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBxKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGImJlwiXCIhPT1ifHxcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGI9eGgoXCJcIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBiJiZudWxsIT09Yil7c3dpdGNoKGIuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGM9eWgoYi50eXBlLGIua2V5LGIucHJvcHMsbnVsbCxhLm1vZGUsYyksXG5jLnJlZj1zaChhLG51bGwsYiksYy5yZXR1cm49YSxjO2Nhc2Ugd2E6cmV0dXJuIGI9emgoYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2Nhc2UgSGE6dmFyIGQ9Yi5faW5pdDtyZXR1cm4gcShhLGQoYi5fcGF5bG9hZCksYyl9aWYoZWIoYil8fEthKGIpKXJldHVybiBiPUFoKGIsYS5tb2RlLGMsbnVsbCksYi5yZXR1cm49YSxiO3RoKGEsYil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihhLGIsYyxkKXt2YXIgZT1udWxsIT09Yj9iLmtleTpudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmXCJcIiE9PWN8fFwibnVtYmVyXCI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU/bnVsbDpoKGEsYixcIlwiK2MsZCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7c3dpdGNoKGMuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGMua2V5PT09ZT9rKGEsYixjLGQpOm51bGw7Y2FzZSB3YTpyZXR1cm4gYy5rZXk9PT1lP2woYSxiLGMsZCk6bnVsbDtjYXNlIEhhOnJldHVybiBlPWMuX2luaXQscihhLFxuYixlKGMuX3BheWxvYWQpLGQpfWlmKGViKGMpfHxLYShjKSlyZXR1cm4gbnVsbCE9PWU/bnVsbDptKGEsYixjLGQsbnVsbCk7dGgoYSxjKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KGEsYixjLGQsZSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkJiZcIlwiIT09ZHx8XCJudW1iZXJcIj09PXR5cGVvZiBkKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGgoYixhLFwiXCIrZCxlKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsayhiLGEsZCxlKTtjYXNlIHdhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxsKGIsYSxkLGUpO2Nhc2UgSGE6dmFyIGY9ZC5faW5pdDtyZXR1cm4geShhLGIsYyxmKGQuX3BheWxvYWQpLGUpfWlmKGViKGQpfHxLYShkKSlyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxtKGIsYSxkLGUsbnVsbCk7dGgoYixkKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIG4oZSxnLGgsayl7Zm9yKHZhciBsPW51bGwsbT1udWxsLHU9Zyx3PWc9MCx4PW51bGw7bnVsbCE9PXUmJnc8aC5sZW5ndGg7dysrKXt1LmluZGV4Pnc/KHg9dSx1PW51bGwpOng9dS5zaWJsaW5nO3ZhciBuPXIoZSx1LGhbd10sayk7aWYobnVsbD09PW4pe251bGw9PT11JiYodT14KTticmVha31hJiZ1JiZudWxsPT09bi5hbHRlcm5hdGUmJmIoZSx1KTtnPWYobixnLHcpO251bGw9PT1tP2w9bjptLnNpYmxpbmc9bjttPW47dT14fWlmKHc9PT1oLmxlbmd0aClyZXR1cm4gYyhlLHUpLEkmJnRnKGUsdyksbDtpZihudWxsPT09dSl7Zm9yKDt3PGgubGVuZ3RoO3crKyl1PXEoZSxoW3ddLGspLG51bGwhPT11JiYoZz1mKHUsZyx3KSxudWxsPT09bT9sPXU6bS5zaWJsaW5nPXUsbT11KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcih1PWQoZSx1KTt3PGgubGVuZ3RoO3crKyl4PXkodSxlLHcsaFt3XSxrKSxudWxsIT09eCYmKGEmJm51bGwhPT14LmFsdGVybmF0ZSYmdS5kZWxldGUobnVsbD09PVxueC5rZXk/dzp4LmtleSksZz1mKHgsZyx3KSxudWxsPT09bT9sPXg6bS5zaWJsaW5nPXgsbT14KTthJiZ1LmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gdChlLGcsaCxrKXt2YXIgbD1LYShoKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgbCl0aHJvdyBFcnJvcihwKDE1MCkpO2g9bC5jYWxsKGgpO2lmKG51bGw9PWgpdGhyb3cgRXJyb3IocCgxNTEpKTtmb3IodmFyIHU9bD1udWxsLG09Zyx3PWc9MCx4PW51bGwsbj1oLm5leHQoKTtudWxsIT09bSYmIW4uZG9uZTt3Kyssbj1oLm5leHQoKSl7bS5pbmRleD53Pyh4PW0sbT1udWxsKTp4PW0uc2libGluZzt2YXIgdD1yKGUsbSxuLnZhbHVlLGspO2lmKG51bGw9PT10KXtudWxsPT09bSYmKG09eCk7YnJlYWt9YSYmbSYmbnVsbD09PXQuYWx0ZXJuYXRlJiZiKGUsbSk7Zz1mKHQsZyx3KTtudWxsPT09dT9sPXQ6dS5zaWJsaW5nPXQ7dT10O209eH1pZihuLmRvbmUpcmV0dXJuIGMoZSxcbm0pLEkmJnRnKGUsdyksbDtpZihudWxsPT09bSl7Zm9yKDshbi5kb25lO3crKyxuPWgubmV4dCgpKW49cShlLG4udmFsdWUsayksbnVsbCE9PW4mJihnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKG09ZChlLG0pOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj15KG0sZSx3LG4udmFsdWUsayksbnVsbCE9PW4mJihhJiZudWxsIT09bi5hbHRlcm5hdGUmJm0uZGVsZXRlKG51bGw9PT1uLmtleT93Om4ua2V5KSxnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO2EmJm0uZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiBKKGEsZCxmLGgpe1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PXlhJiZudWxsPT09Zi5rZXkmJihmPWYucHJvcHMuY2hpbGRyZW4pO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYpe3N3aXRjaChmLiQkdHlwZW9mKXtjYXNlIHZhOmE6e2Zvcih2YXIgaz1cbmYua2V5LGw9ZDtudWxsIT09bDspe2lmKGwua2V5PT09ayl7az1mLnR5cGU7aWYoaz09PXlhKXtpZig3PT09bC50YWcpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMuY2hpbGRyZW4pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWVsc2UgaWYobC5lbGVtZW50VHlwZT09PWt8fFwib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT1IYSYmdWgoayk9PT1sLnR5cGUpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMpO2QucmVmPXNoKGEsbCxmKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWMoYSxsKTticmVha31lbHNlIGIoYSxsKTtsPWwuc2libGluZ31mLnR5cGU9PT15YT8oZD1BaChmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9eWgoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9c2goYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIHdhOmE6e2ZvcihsPWYua2V5O251bGwhPT1cbmQ7KXtpZihkLmtleT09PWwpaWYoND09PWQudGFnJiZkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZkLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe2MoYSxkLnNpYmxpbmcpO2Q9ZShkLGYuY2hpbGRyZW58fFtdKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWVsc2V7YyhhLGQpO2JyZWFrfWVsc2UgYihhLGQpO2Q9ZC5zaWJsaW5nfWQ9emgoZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSk7Y2FzZSBIYTpyZXR1cm4gbD1mLl9pbml0LEooYSxkLGwoZi5fcGF5bG9hZCksaCl9aWYoZWIoZikpcmV0dXJuIG4oYSxkLGYsaCk7aWYoS2EoZikpcmV0dXJuIHQoYSxkLGYsaCk7dGgoYSxmKX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGYmJlwiXCIhPT1mfHxcIm51bWJlclwiPT09dHlwZW9mIGY/KGY9XCJcIitmLG51bGwhPT1kJiY2PT09ZC50YWc/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTpcbihjKGEsZCksZD14aChmLGEubW9kZSxoKSxkLnJldHVybj1hLGE9ZCksZyhhKSk6YyhhLGQpfXJldHVybiBKfXZhciBCaD12aCghMCksQ2g9dmgoITEpLERoPXt9LEVoPVVmKERoKSxGaD1VZihEaCksR2g9VWYoRGgpO2Z1bmN0aW9uIEhoKGEpe2lmKGE9PT1EaCl0aHJvdyBFcnJvcihwKDE3NCkpO3JldHVybiBhfWZ1bmN0aW9uIEloKGEsYil7RyhHaCxiKTtHKEZoLGEpO0coRWgsRGgpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6bGIobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPWxiKGIsYSl9RShFaCk7RyhFaCxiKX1mdW5jdGlvbiBKaCgpe0UoRWgpO0UoRmgpO0UoR2gpfVxuZnVuY3Rpb24gS2goYSl7SGgoR2guY3VycmVudCk7dmFyIGI9SGgoRWguY3VycmVudCk7dmFyIGM9bGIoYixhLnR5cGUpO2IhPT1jJiYoRyhGaCxhKSxHKEVoLGMpKX1mdW5jdGlvbiBMaChhKXtGaC5jdXJyZW50PT09YSYmKEUoRWgpLEUoRmgpKX12YXIgTT1VZigwKTtcbmZ1bmN0aW9uIE1oKGEpe2Zvcih2YXIgYj1hO251bGwhPT1iOyl7aWYoMTM9PT1iLnRhZyl7dmFyIGM9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiYoYz1jLmRlaHlkcmF0ZWQsbnVsbD09PWN8fFwiJD9cIj09PWMuZGF0YXx8XCIkIVwiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfXZhciBOaD1bXTtcbmZ1bmN0aW9uIE9oKCl7Zm9yKHZhciBhPTA7YTxOaC5sZW5ndGg7YSsrKU5oW2FdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7TmgubGVuZ3RoPTB9dmFyIFBoPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsUWg9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsUmg9MCxOPW51bGwsTz1udWxsLFA9bnVsbCxTaD0hMSxUaD0hMSxVaD0wLFZoPTA7ZnVuY3Rpb24gUSgpe3Rocm93IEVycm9yKHAoMzIxKSk7fWZ1bmN0aW9uIFdoKGEsYil7aWYobnVsbD09PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aCYmYzxhLmxlbmd0aDtjKyspaWYoIUhlKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9XG5mdW5jdGlvbiBYaChhLGIsYyxkLGUsZil7Umg9ZjtOPWI7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2IubGFuZXM9MDtQaC5jdXJyZW50PW51bGw9PT1hfHxudWxsPT09YS5tZW1vaXplZFN0YXRlP1loOlpoO2E9YyhkLGUpO2lmKFRoKXtmPTA7ZG97VGg9ITE7VWg9MDtpZigyNTw9Zil0aHJvdyBFcnJvcihwKDMwMSkpO2YrPTE7UD1PPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO1BoLmN1cnJlbnQ9JGg7YT1jKGQsZSl9d2hpbGUoVGgpfVBoLmN1cnJlbnQ9YWk7Yj1udWxsIT09TyYmbnVsbCE9PU8ubmV4dDtSaD0wO1A9Tz1OPW51bGw7U2g9ITE7aWYoYil0aHJvdyBFcnJvcihwKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIGJpKCl7dmFyIGE9MCE9PVVoO1VoPTA7cmV0dXJuIGF9XG5mdW5jdGlvbiBjaSgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YTtyZXR1cm4gUH1mdW5jdGlvbiBkaSgpe2lmKG51bGw9PT1PKXt2YXIgYT1OLmFsdGVybmF0ZTthPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT1PLm5leHQ7dmFyIGI9bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlOlAubmV4dDtpZihudWxsIT09YilQPWIsTz1hO2Vsc2V7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzMTApKTtPPWE7YT17bWVtb2l6ZWRTdGF0ZTpPLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOk8uYmFzZVN0YXRlLGJhc2VRdWV1ZTpPLmJhc2VRdWV1ZSxxdWV1ZTpPLnF1ZXVlLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hfXJldHVybiBQfVxuZnVuY3Rpb24gZWkoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBmaShhKXt2YXIgYj1kaSgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPU8sZT1kLmJhc2VRdWV1ZSxmPWMucGVuZGluZztpZihudWxsIT09Zil7aWYobnVsbCE9PWUpe3ZhciBnPWUubmV4dDtlLm5leHQ9Zi5uZXh0O2YubmV4dD1nfWQuYmFzZVF1ZXVlPWU9ZjtjLnBlbmRpbmc9bnVsbH1pZihudWxsIT09ZSl7Zj1lLm5leHQ7ZD1kLmJhc2VTdGF0ZTt2YXIgaD1nPW51bGwsaz1udWxsLGw9Zjtkb3t2YXIgbT1sLmxhbmU7aWYoKFJoJm0pPT09bSludWxsIT09ayYmKGs9ay5uZXh0PXtsYW5lOjAsYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLGQ9bC5oYXNFYWdlclN0YXRlP2wuZWFnZXJTdGF0ZTphKGQsbC5hY3Rpb24pO2Vsc2V7dmFyIHE9e2xhbmU6bSxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsXG5lYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT1rPyhoPWs9cSxnPWQpOms9ay5uZXh0PXE7Ti5sYW5lc3w9bTtoaHw9bX1sPWwubmV4dH13aGlsZShudWxsIT09bCYmbCE9PWYpO251bGw9PT1rP2c9ZDprLm5leHQ9aDtIZShkLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZztiLmJhc2VRdWV1ZT1rO2MubGFzdFJlbmRlcmVkU3RhdGU9ZH1hPWMuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWEpe2U9YTtkbyBmPWUubGFuZSxOLmxhbmVzfD1mLGhofD1mLGU9ZS5uZXh0O3doaWxlKGUhPT1hKX1lbHNlIG51bGw9PT1lJiYoYy5sYW5lcz0wKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGMuZGlzcGF0Y2hdfVxuZnVuY3Rpb24gZ2koYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO0hlKGYsYi5tZW1vaXplZFN0YXRlKXx8KFVnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtudWxsPT09Yi5iYXNlUXVldWUmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2YsZF19ZnVuY3Rpb24gaGkoKXt9XG5mdW5jdGlvbiBpaShhLGIpe3ZhciBjPU4sZD1kaSgpLGU9YigpLGY9IUhlKGQubWVtb2l6ZWRTdGF0ZSxlKTtmJiYoZC5tZW1vaXplZFN0YXRlPWUsVWc9ITApO2Q9ZC5xdWV1ZTtqaShraS5iaW5kKG51bGwsYyxkLGEpLFthXSk7aWYoZC5nZXRTbmFwc2hvdCE9PWJ8fGZ8fG51bGwhPT1QJiZQLm1lbW9pemVkU3RhdGUudGFnJjEpe2MuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsYyxkLGUsYiksdm9pZCAwLG51bGwpO2lmKG51bGw9PT1SKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShSaCYzMCl8fG5pKGMsYixlKX1yZXR1cm4gZX1mdW5jdGlvbiBuaShhLGIsYyl7YS5mbGFnc3w9MTYzODQ7YT17Z2V0U25hcHNob3Q6Yix2YWx1ZTpjfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIuc3RvcmVzPVthXSk6KGM9Yi5zdG9yZXMsbnVsbD09PWM/Yi5zdG9yZXM9W2FdOmMucHVzaChhKSl9XG5mdW5jdGlvbiBtaShhLGIsYyxkKXtiLnZhbHVlPWM7Yi5nZXRTbmFwc2hvdD1kO29pKGIpJiZwaShhKX1mdW5jdGlvbiBraShhLGIsYyl7cmV0dXJuIGMoZnVuY3Rpb24oKXtvaShiKSYmcGkoYSl9KX1mdW5jdGlvbiBvaShhKXt2YXIgYj1hLmdldFNuYXBzaG90O2E9YS52YWx1ZTt0cnl7dmFyIGM9YigpO3JldHVybiFIZShhLGMpfWNhdGNoKGQpe3JldHVybiEwfX1mdW5jdGlvbiBwaShhKXt2YXIgYj1aZyhhLDEpO251bGwhPT1iJiZtaChiLGEsMSwtMSl9XG5mdW5jdGlvbiBxaShhKXt2YXIgYj1jaSgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmVpLGxhc3RSZW5kZXJlZFN0YXRlOmF9O2IucXVldWU9YTthPWEuZGlzcGF0Y2g9cmkuYmluZChudWxsLE4sYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1cbmZ1bmN0aW9uIGxpKGEsYixjLGQpe2E9e3RhZzphLGNyZWF0ZTpiLGRlc3Ryb3k6YyxkZXBzOmQsbmV4dDpudWxsfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIubGFzdEVmZmVjdD1hLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBzaSgpe3JldHVybiBkaSgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gdGkoYSxiLGMsZCl7dmFyIGU9Y2koKTtOLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfVxuZnVuY3Rpb24gdWkoYSxiLGMsZCl7dmFyIGU9ZGkoKTtkPXZvaWQgMD09PWQ/bnVsbDpkO3ZhciBmPXZvaWQgMDtpZihudWxsIT09Tyl7dmFyIGc9Ty5tZW1vaXplZFN0YXRlO2Y9Zy5kZXN0cm95O2lmKG51bGwhPT1kJiZXaChkLGcuZGVwcykpe2UubWVtb2l6ZWRTdGF0ZT1saShiLGMsZixkKTtyZXR1cm59fU4uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxpKDF8YixjLGYsZCl9ZnVuY3Rpb24gdmkoYSxiKXtyZXR1cm4gdGkoODM5MDY1Niw4LGEsYil9ZnVuY3Rpb24gamkoYSxiKXtyZXR1cm4gdWkoMjA0OCw4LGEsYil9ZnVuY3Rpb24gd2koYSxiKXtyZXR1cm4gdWkoNCwyLGEsYil9ZnVuY3Rpb24geGkoYSxiKXtyZXR1cm4gdWkoNCw0LGEsYil9XG5mdW5jdGlvbiB5aShhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBhPWEoKSxiKGEpLGZ1bmN0aW9uKCl7YihudWxsKX07aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpcmV0dXJuIGE9YSgpLGIuY3VycmVudD1hLGZ1bmN0aW9uKCl7Yi5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIHppKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gdWkoNCw0LHlpLmJpbmQobnVsbCxiLGEpLGMpfWZ1bmN0aW9uIEFpKCl7fWZ1bmN0aW9uIEJpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfVxuZnVuY3Rpb24gQ2koYSxiKXt2YXIgYz1kaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmV2goYixkWzFdKSlyZXR1cm4gZFswXTthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9ZnVuY3Rpb24gRGkoYSxiLGMpe2lmKDA9PT0oUmgmMjEpKXJldHVybiBhLmJhc2VTdGF0ZSYmKGEuYmFzZVN0YXRlPSExLFVnPSEwKSxhLm1lbW9pemVkU3RhdGU9YztIZShjLGIpfHwoYz15YygpLE4ubGFuZXN8PWMsaGh8PWMsYS5iYXNlU3RhdGU9ITApO3JldHVybiBifWZ1bmN0aW9uIEVpKGEsYil7dmFyIGM9QztDPTAhPT1jJiY0PmM/Yzo0O2EoITApO3ZhciBkPVFoLnRyYW5zaXRpb247UWgudHJhbnNpdGlvbj17fTt0cnl7YSghMSksYigpfWZpbmFsbHl7Qz1jLFFoLnRyYW5zaXRpb249ZH19ZnVuY3Rpb24gRmkoKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfVxuZnVuY3Rpb24gR2koYSxiLGMpe3ZhciBkPWxoKGEpO2M9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKEhpKGEpKUlpKGIsYyk7ZWxzZSBpZihjPVlnKGEsYixjLGQpLG51bGwhPT1jKXt2YXIgZT1MKCk7bWgoYyxhLGQsZSk7SmkoYyxiLGQpfX1cbmZ1bmN0aW9uIHJpKGEsYixjKXt2YXIgZD1saChhKSxlPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGUpO2Vsc2V7dmFyIGY9YS5hbHRlcm5hdGU7aWYoMD09PWEubGFuZXMmJihudWxsPT09Znx8MD09PWYubGFuZXMpJiYoZj1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWYpKXRyeXt2YXIgZz1iLmxhc3RSZW5kZXJlZFN0YXRlLGg9ZihnLGMpO2UuaGFzRWFnZXJTdGF0ZT0hMDtlLmVhZ2VyU3RhdGU9aDtpZihIZShoLGcpKXt2YXIgaz1iLmludGVybGVhdmVkO251bGw9PT1rPyhlLm5leHQ9ZSxYZyhiKSk6KGUubmV4dD1rLm5leHQsay5uZXh0PWUpO2IuaW50ZXJsZWF2ZWQ9ZTtyZXR1cm59fWNhdGNoKGwpe31maW5hbGx5e31jPVlnKGEsYixlLGQpO251bGwhPT1jJiYoZT1MKCksbWgoYyxhLGQsZSksSmkoYyxiLGQpKX19XG5mdW5jdGlvbiBIaShhKXt2YXIgYj1hLmFsdGVybmF0ZTtyZXR1cm4gYT09PU58fG51bGwhPT1iJiZiPT09Tn1mdW5jdGlvbiBJaShhLGIpe1RoPVNoPSEwO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9ZnVuY3Rpb24gSmkoYSxiLGMpe2lmKDAhPT0oYyY0MTk0MjQwKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbnZhciBhaT17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6USx1c2VDb250ZXh0OlEsdXNlRWZmZWN0OlEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpRLHVzZUluc2VydGlvbkVmZmVjdDpRLHVzZUxheW91dEVmZmVjdDpRLHVzZU1lbW86USx1c2VSZWR1Y2VyOlEsdXNlUmVmOlEsdXNlU3RhdGU6USx1c2VEZWJ1Z1ZhbHVlOlEsdXNlRGVmZXJyZWRWYWx1ZTpRLHVzZVRyYW5zaXRpb246USx1c2VNdXRhYmxlU291cmNlOlEsdXNlU3luY0V4dGVybmFsU3RvcmU6USx1c2VJZDpRLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWWg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYil7Y2koKS5tZW1vaXplZFN0YXRlPVthLHZvaWQgMD09PWI/bnVsbDpiXTtyZXR1cm4gYX0sdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6dmksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHRpKDQxOTQzMDgsXG40LHlpLmJpbmQobnVsbCxiLGEpLGMpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNDE5NDMwOCw0LGEsYil9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aSg0LDIsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPWNpKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWNpKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOmJ9O2QucXVldWU9YTthPWEuZGlzcGF0Y2g9R2kuYmluZChudWxsLE4sYSk7cmV0dXJuW2QubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3ZhciBiPVxuY2koKTthPXtjdXJyZW50OmF9O3JldHVybiBiLm1lbW9pemVkU3RhdGU9YX0sdXNlU3RhdGU6cWksdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBjaSgpLm1lbW9pemVkU3RhdGU9YX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXFpKCExKSxiPWFbMF07YT1FaS5iaW5kKG51bGwsYVsxXSk7Y2koKS5tZW1vaXplZFN0YXRlPWE7cmV0dXJuW2IsYV19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oKXt9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1OLGU9Y2koKTtpZihJKXtpZih2b2lkIDA9PT1jKXRocm93IEVycm9yKHAoNDA3KSk7Yz1jKCl9ZWxzZXtjPWIoKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShkLGIsYyl9ZS5tZW1vaXplZFN0YXRlPWM7dmFyIGY9e3ZhbHVlOmMsZ2V0U25hcHNob3Q6Yn07ZS5xdWV1ZT1mO3ZpKGtpLmJpbmQobnVsbCxkLFxuZixhKSxbYV0pO2QuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsZCxmLGMsYiksdm9pZCAwLG51bGwpO3JldHVybiBjfSx1c2VJZDpmdW5jdGlvbigpe3ZhciBhPWNpKCksYj1SLmlkZW50aWZpZXJQcmVmaXg7aWYoSSl7dmFyIGM9c2c7dmFyIGQ9cmc7Yz0oZCZ+KDE8PDMyLW9jKGQpLTEpKS50b1N0cmluZygzMikrYztiPVwiOlwiK2IrXCJSXCIrYztjPVVoKys7MDxjJiYoYis9XCJIXCIrYy50b1N0cmluZygzMikpO2IrPVwiOlwifWVsc2UgYz1WaCsrLGI9XCI6XCIrYitcInJcIitjLnRvU3RyaW5nKDMyKStcIjpcIjtyZXR1cm4gYS5tZW1vaXplZFN0YXRlPWJ9LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWmg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6ZmksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGZpKGVpKX0sXG51c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gRGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1maShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSwkaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6QmksdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6amksdXNlSW1wZXJhdGl2ZUhhbmRsZTp6aSx1c2VJbnNlcnRpb25FZmZlY3Q6d2ksdXNlTGF5b3V0RWZmZWN0OnhpLHVzZU1lbW86Q2ksdXNlUmVkdWNlcjpnaSx1c2VSZWY6c2ksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZ2koZWkpfSx1c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gbnVsbD09PVxuTz9iLm1lbW9pemVkU3RhdGU9YTpEaShiLE8ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWdpKGVpKVswXSxiPWRpKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpoaSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTppaSx1c2VJZDpGaSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIEtpKGEsYil7dHJ5e3ZhciBjPVwiXCIsZD1iO2RvIGMrPVBhKGQpLGQ9ZC5yZXR1cm47d2hpbGUoZCk7dmFyIGU9Y31jYXRjaChmKXtlPVwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIrZi5tZXNzYWdlK1wiXFxuXCIrZi5zdGFja31yZXR1cm57dmFsdWU6YSxzb3VyY2U6YixzdGFjazplLGRpZ2VzdDpudWxsfX1mdW5jdGlvbiBMaShhLGIsYyl7cmV0dXJue3ZhbHVlOmEsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9Yz9jOm51bGwsZGlnZXN0Om51bGwhPWI/YjpudWxsfX1cbmZ1bmN0aW9uIE1pKGEsYil7dHJ5e2NvbnNvbGUuZXJyb3IoYi52YWx1ZSl9Y2F0Y2goYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGM7fSl9fXZhciBOaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBPaShhLGIsYyl7Yz1jaCgtMSxjKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtQaXx8KFBpPSEwLFFpPWQpO01pKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gUmkoYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9Mzt2YXIgZD1hLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZT1iLnZhbHVlO2MucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBkKGUpfTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TWkoYSxiKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYik7XCJmdW5jdGlvblwiIT09dHlwZW9mIGQmJihudWxsPT09U2k/U2k9bmV3IFNldChbdGhpc10pOlNpLmFkZCh0aGlzKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBUaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7aWYobnVsbD09PWQpe2Q9YS5waW5nQ2FjaGU9bmV3IE5pO3ZhciBlPW5ldyBTZXQ7ZC5zZXQoYixlKX1lbHNlIGU9ZC5nZXQoYiksdm9pZCAwPT09ZSYmKGU9bmV3IFNldCxkLnNldChiLGUpKTtlLmhhcyhjKXx8KGUuYWRkKGMpLGE9VWkuYmluZChudWxsLGEsYixjKSxiLnRoZW4oYSxhKSl9ZnVuY3Rpb24gVmkoYSl7ZG97dmFyIGI7aWYoYj0xMz09PWEudGFnKWI9YS5tZW1vaXplZFN0YXRlLGI9bnVsbCE9PWI/bnVsbCE9PWIuZGVoeWRyYXRlZD8hMDohMTohMDtpZihiKXJldHVybiBhO2E9YS5yZXR1cm59d2hpbGUobnVsbCE9PWEpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gV2koYSxiLGMsZCxlKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gYT09PWI/YS5mbGFnc3w9NjU1MzY6KGEuZmxhZ3N8PTEyOCxjLmZsYWdzfD0xMzEwNzIsYy5mbGFncyY9LTUyODA1LDE9PT1jLnRhZyYmKG51bGw9PT1jLmFsdGVybmF0ZT9jLnRhZz0xNzooYj1jaCgtMSwxKSxiLnRhZz0yLGRoKGMsYiwxKSkpLGMubGFuZXN8PTEpLGE7YS5mbGFnc3w9NjU1MzY7YS5sYW5lcz1lO3JldHVybiBhfXZhciBYaT11YS5SZWFjdEN1cnJlbnRPd25lcixVZz0hMTtmdW5jdGlvbiBZaShhLGIsYyxkKXtiLmNoaWxkPW51bGw9PT1hP0NoKGIsbnVsbCxjLGQpOkJoKGIsYS5jaGlsZCxjLGQpfVxuZnVuY3Rpb24gWmkoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO1RnKGIsZSk7ZD1YaChhLGIsYyxkLGYsZSk7Yz1iaSgpO2lmKG51bGwhPT1hJiYhVWcpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSwkaShhLGIsZSk7SSYmYyYmdmcoYik7Yi5mbGFnc3w9MTtZaShhLGIsZCxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGFqKGEsYixjLGQsZSl7aWYobnVsbD09PWEpe3ZhciBmPWMudHlwZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmIWJqKGYpJiZ2b2lkIDA9PT1mLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1mLGNqKGEsYixmLGQsZSk7YT15aChjLnR5cGUsbnVsbCxkLGIsYi5tb2RlLGUpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mPWEuY2hpbGQ7aWYoMD09PShhLmxhbmVzJmUpKXt2YXIgZz1mLm1lbW9pemVkUHJvcHM7Yz1jLmNvbXBhcmU7Yz1udWxsIT09Yz9jOkllO2lmKGMoZyxkKSYmYS5yZWY9PT1iLnJlZilyZXR1cm4gJGkoYSxiLGUpfWIuZmxhZ3N8PTE7YT13aChmLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1cbmZ1bmN0aW9uIGNqKGEsYixjLGQsZSl7aWYobnVsbCE9PWEpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcztpZihJZShmLGQpJiZhLnJlZj09PWIucmVmKWlmKFVnPSExLGIucGVuZGluZ1Byb3BzPWQ9ZiwwIT09KGEubGFuZXMmZSkpMCE9PShhLmZsYWdzJjEzMTA3MikmJihVZz0hMCk7ZWxzZSByZXR1cm4gYi5sYW5lcz1hLmxhbmVzLCRpKGEsYixlKX1yZXR1cm4gZGooYSxiLGMsZCxlKX1cbmZ1bmN0aW9uIGVqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQuY2hpbGRyZW4sZj1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbDtpZihcImhpZGRlblwiPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sRyhmaixnaiksZ2p8PWM7ZWxzZXtpZigwPT09KGMmMTA3Mzc0MTgyNCkpcmV0dXJuIGE9bnVsbCE9PWY/Zi5iYXNlTGFuZXN8YzpjLGIubGFuZXM9Yi5jaGlsZExhbmVzPTEwNzM3NDE4MjQsYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxiLnVwZGF0ZVF1ZXVlPW51bGwsRyhmaixnaiksZ2p8PWEsbnVsbDtiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9O2Q9bnVsbCE9PWY/Zi5iYXNlTGFuZXM6YztHKGZqLGdqKTtnanw9ZH1lbHNlIG51bGwhPT1cbmY/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLEcoZmosZ2opLGdqfD1kO1lpKGEsYixlLGMpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGhqKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyfWZ1bmN0aW9uIGRqKGEsYixjLGQsZSl7dmFyIGY9WmYoYyk/WGY6SC5jdXJyZW50O2Y9WWYoYixmKTtUZyhiLGUpO2M9WGgoYSxiLGMsZCxmLGUpO2Q9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmQmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBpaihhLGIsYyxkLGUpe2lmKFpmKGMpKXt2YXIgZj0hMDtjZyhiKX1lbHNlIGY9ITE7VGcoYixlKTtpZihudWxsPT09Yi5zdGF0ZU5vZGUpamooYSxiKSxwaChiLGMsZCkscmgoYixjLGQsZSksZD0hMDtlbHNlIGlmKG51bGw9PT1hKXt2YXIgZz1iLnN0YXRlTm9kZSxoPWIubWVtb2l6ZWRQcm9wcztnLnByb3BzPWg7dmFyIGs9Zy5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9VmcobCk6KGw9WmYoYyk/WGY6SC5jdXJyZW50LGw9WWYoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMscT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgbXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7cXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fFxuKGghPT1kfHxrIT09bCkmJnFoKGIsZyxkLGwpOyRnPSExO3ZhciByPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7az1iLm1lbW9pemVkU3RhdGU7aCE9PWR8fHIhPT1rfHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG0mJihraChiLGMsbSxkKSxrPWIubWVtb2l6ZWRTdGF0ZSksKGg9JGd8fG9oKGIsYyxoLGQscixrLGwpKT8ocXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50JiZnLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpKTpcbihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1rKSxnLnByb3BzPWQsZy5zdGF0ZT1rLGcuY29udGV4dD1sLGQ9aCk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksZD0hMSl9ZWxzZXtnPWIuc3RhdGVOb2RlO2JoKGEsYik7aD1iLm1lbW9pemVkUHJvcHM7bD1iLnR5cGU9PT1iLmVsZW1lbnRUeXBlP2g6TGcoYi50eXBlLGgpO2cucHJvcHM9bDtxPWIucGVuZGluZ1Byb3BzO3I9Zy5jb250ZXh0O2s9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9Vmcoayk6KGs9WmYoYyk/WGY6SC5jdXJyZW50LGs9WWYoYixrKSk7dmFyIHk9Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KG09XCJmdW5jdGlvblwiPT09dHlwZW9mIHl8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XG5cImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1xfHxyIT09aykmJnFoKGIsZyxkLGspOyRnPSExO3I9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtnaChiLGQsZyxlKTt2YXIgbj1iLm1lbW9pemVkU3RhdGU7aCE9PXF8fHIhPT1ufHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIHkmJihraChiLGMseSxkKSxuPWIubWVtb2l6ZWRTdGF0ZSksKGw9JGd8fG9oKGIsYyxsLGQscixuLGspfHwhMSk/KG18fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXG5nLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJihiLmZsYWdzfD0xMDI0KSk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPW4pLGcucHJvcHM9ZCxnLnN0YXRlPW4sZy5jb250ZXh0PWssZD1sKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09XG5hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGQ9ITEpfXJldHVybiBraihhLGIsYyxkLGYsZSl9XG5mdW5jdGlvbiBraihhLGIsYyxkLGUsZil7aGooYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmMTI4KTtpZighZCYmIWcpcmV0dXJuIGUmJmRnKGIsYywhMSksJGkoYSxiLGYpO2Q9Yi5zdGF0ZU5vZGU7WGkuY3VycmVudD1iO3ZhciBoPWcmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1CaChiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPUJoKGIsbnVsbCxoLGYpKTpZaShhLGIsaCxmKTtiLm1lbW9pemVkU3RhdGU9ZC5zdGF0ZTtlJiZkZyhiLGMsITApO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGxqKGEpe3ZhciBiPWEuc3RhdGVOb2RlO2IucGVuZGluZ0NvbnRleHQ/YWcoYSxiLnBlbmRpbmdDb250ZXh0LGIucGVuZGluZ0NvbnRleHQhPT1iLmNvbnRleHQpOmIuY29udGV4dCYmYWcoYSxiLmNvbnRleHQsITEpO0loKGEsYi5jb250YWluZXJJbmZvKX1cbmZ1bmN0aW9uIG1qKGEsYixjLGQsZSl7SWcoKTtKZyhlKTtiLmZsYWdzfD0yNTY7WWkoYSxiLGMsZCk7cmV0dXJuIGIuY2hpbGR9dmFyIG5qPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gb2ooYSl7cmV0dXJue2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fVxuZnVuY3Rpb24gcGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9TS5jdXJyZW50LGY9ITEsZz0wIT09KGIuZmxhZ3MmMTI4KSxoOyhoPWcpfHwoaD1udWxsIT09YSYmbnVsbD09PWEubWVtb2l6ZWRTdGF0ZT8hMTowIT09KGUmMikpO2lmKGgpZj0hMCxiLmZsYWdzJj0tMTI5O2Vsc2UgaWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpZXw9MTtHKE0sZSYxKTtpZihudWxsPT09YSl7RWcoYik7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJihhPWEuZGVoeWRyYXRlZCxudWxsIT09YSkpcmV0dXJuIDA9PT0oYi5tb2RlJjEpP2IubGFuZXM9MTpcIiQhXCI9PT1hLmRhdGE/Yi5sYW5lcz04OmIubGFuZXM9MTA3Mzc0MTgyNCxudWxsO2c9ZC5jaGlsZHJlbjthPWQuZmFsbGJhY2s7cmV0dXJuIGY/KGQ9Yi5tb2RlLGY9Yi5jaGlsZCxnPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46Z30sMD09PShkJjEpJiZudWxsIT09Zj8oZi5jaGlsZExhbmVzPTAsZi5wZW5kaW5nUHJvcHM9XG5nKTpmPXFqKGcsZCwwLG51bGwpLGE9QWgoYSxkLGMsbnVsbCksZi5yZXR1cm49YixhLnJldHVybj1iLGYuc2libGluZz1hLGIuY2hpbGQ9ZixiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooYyksYi5tZW1vaXplZFN0YXRlPW5qLGEpOnJqKGIsZyl9ZT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUmJihoPWUuZGVoeWRyYXRlZCxudWxsIT09aCkpcmV0dXJuIHNqKGEsYixnLGQsaCxlLGMpO2lmKGYpe2Y9ZC5mYWxsYmFjaztnPWIubW9kZTtlPWEuY2hpbGQ7aD1lLnNpYmxpbmc7dmFyIGs9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpkLmNoaWxkcmVufTswPT09KGcmMSkmJmIuY2hpbGQhPT1lPyhkPWIuY2hpbGQsZC5jaGlsZExhbmVzPTAsZC5wZW5kaW5nUHJvcHM9ayxiLmRlbGV0aW9ucz1udWxsKTooZD13aChlLGspLGQuc3VidHJlZUZsYWdzPWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0KTtudWxsIT09aD9mPXdoKGgsZik6KGY9QWgoZixnLGMsbnVsbCksZi5mbGFnc3w9Mik7Zi5yZXR1cm49XG5iO2QucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kO2Q9ZjtmPWIuY2hpbGQ7Zz1hLmNoaWxkLm1lbW9pemVkU3RhdGU7Zz1udWxsPT09Zz9vaihjKTp7YmFzZUxhbmVzOmcuYmFzZUxhbmVzfGMsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc307Zi5tZW1vaXplZFN0YXRlPWc7Zi5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcyZ+YztiLm1lbW9pemVkU3RhdGU9bmo7cmV0dXJuIGR9Zj1hLmNoaWxkO2E9Zi5zaWJsaW5nO2Q9d2goZix7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSk7MD09PShiLm1vZGUmMSkmJihkLmxhbmVzPWMpO2QucmV0dXJuPWI7ZC5zaWJsaW5nPW51bGw7bnVsbCE9PWEmJihjPWIuZGVsZXRpb25zLG51bGw9PT1jPyhiLmRlbGV0aW9ucz1bYV0sYi5mbGFnc3w9MTYpOmMucHVzaChhKSk7Yi5jaGlsZD1kO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBkfVxuZnVuY3Rpb24gcmooYSxiKXtiPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmJ9LGEubW9kZSwwLG51bGwpO2IucmV0dXJuPWE7cmV0dXJuIGEuY2hpbGQ9Yn1mdW5jdGlvbiB0aihhLGIsYyxkKXtudWxsIT09ZCYmSmcoZCk7QmgoYixhLmNoaWxkLG51bGwsYyk7YT1yaihiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuKTthLmZsYWdzfD0yO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBhfVxuZnVuY3Rpb24gc2ooYSxiLGMsZCxlLGYsZyl7aWYoYyl7aWYoYi5mbGFncyYyNTYpcmV0dXJuIGIuZmxhZ3MmPS0yNTcsZD1MaShFcnJvcihwKDQyMikpKSx0aihhLGIsZyxkKTtpZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXJldHVybiBiLmNoaWxkPWEuY2hpbGQsYi5mbGFnc3w9MTI4LG51bGw7Zj1kLmZhbGxiYWNrO2U9Yi5tb2RlO2Q9cWooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0sZSwwLG51bGwpO2Y9QWgoZixlLGcsbnVsbCk7Zi5mbGFnc3w9MjtkLnJldHVybj1iO2YucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kOzAhPT0oYi5tb2RlJjEpJiZCaChiLGEuY2hpbGQsbnVsbCxnKTtiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooZyk7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBmfWlmKDA9PT0oYi5tb2RlJjEpKXJldHVybiB0aihhLGIsZyxudWxsKTtpZihcIiQhXCI9PT1lLmRhdGEpe2Q9ZS5uZXh0U2libGluZyYmZS5uZXh0U2libGluZy5kYXRhc2V0O1xuaWYoZCl2YXIgaD1kLmRnc3Q7ZD1oO2Y9RXJyb3IocCg0MTkpKTtkPUxpKGYsZCx2b2lkIDApO3JldHVybiB0aihhLGIsZyxkKX1oPTAhPT0oZyZhLmNoaWxkTGFuZXMpO2lmKFVnfHxoKXtkPVI7aWYobnVsbCE9PWQpe3N3aXRjaChnJi1nKXtjYXNlIDQ6ZT0yO2JyZWFrO2Nhc2UgMTY6ZT04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDplPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmU9MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6ZT0wfWU9MCE9PShlJihkLnN1c3BlbmRlZExhbmVzfGcpKT8wOmU7XG4wIT09ZSYmZSE9PWYucmV0cnlMYW5lJiYoZi5yZXRyeUxhbmU9ZSxaZyhhLGUpLG1oKGQsYSxlLC0xKSl9dWooKTtkPUxpKEVycm9yKHAoNDIxKSkpO3JldHVybiB0aihhLGIsZyxkKX1pZihcIiQ/XCI9PT1lLmRhdGEpcmV0dXJuIGIuZmxhZ3N8PTEyOCxiLmNoaWxkPWEuY2hpbGQsYj12ai5iaW5kKG51bGwsYSksZS5fcmVhY3RSZXRyeT1iLG51bGw7YT1mLnRyZWVDb250ZXh0O3lnPUxmKGUubmV4dFNpYmxpbmcpO3hnPWI7ST0hMDt6Zz1udWxsO251bGwhPT1hJiYob2dbcGcrK109cmcsb2dbcGcrK109c2csb2dbcGcrK109cWcscmc9YS5pZCxzZz1hLm92ZXJmbG93LHFnPWIpO2I9cmooYixkLmNoaWxkcmVuKTtiLmZsYWdzfD00MDk2O3JldHVybiBifWZ1bmN0aW9uIHdqKGEsYixjKXthLmxhbmVzfD1iO3ZhciBkPWEuYWx0ZXJuYXRlO251bGwhPT1kJiYoZC5sYW5lc3w9Yik7U2coYS5yZXR1cm4sYixjKX1cbmZ1bmN0aW9uIHhqKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFN0YXRlO251bGw9PT1mP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmV9OihmLmlzQmFja3dhcmRzPWIsZi5yZW5kZXJpbmc9bnVsbCxmLnJlbmRlcmluZ1N0YXJ0VGltZT0wLGYubGFzdD1kLGYudGFpbD1jLGYudGFpbE1vZGU9ZSl9XG5mdW5jdGlvbiB5aihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLnJldmVhbE9yZGVyLGY9ZC50YWlsO1lpKGEsYixkLmNoaWxkcmVuLGMpO2Q9TS5jdXJyZW50O2lmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTEyODtlbHNle2lmKG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlhOmZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtpZigxMz09PWEudGFnKW51bGwhPT1hLm1lbW9pemVkU3RhdGUmJndqKGEsYyxiKTtlbHNlIGlmKDE5PT09YS50YWcpd2ooYSxjLGIpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1HKE0sZCk7aWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPVxubnVsbDtlbHNlIHN3aXRjaChlKXtjYXNlIFwiZm9yd2FyZHNcIjpjPWIuY2hpbGQ7Zm9yKGU9bnVsbDtudWxsIT09YzspYT1jLmFsdGVybmF0ZSxudWxsIT09YSYmbnVsbD09PU1oKGEpJiYoZT1jKSxjPWMuc2libGluZztjPWU7bnVsbD09PWM/KGU9Yi5jaGlsZCxiLmNoaWxkPW51bGwpOihlPWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCk7eGooYiwhMSxlLGMsZik7YnJlYWs7Y2FzZSBcImJhY2t3YXJkc1wiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1NaChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9eGooYiwhMCxjLG51bGwsZik7YnJlYWs7Y2FzZSBcInRvZ2V0aGVyXCI6eGooYiwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gamooYSxiKXswPT09KGIubW9kZSYxKSYmbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mil9ZnVuY3Rpb24gJGkoYSxiLGMpe251bGwhPT1hJiYoYi5kZXBlbmRlbmNpZXM9YS5kZXBlbmRlbmNpZXMpO2hofD1iLmxhbmVzO2lmKDA9PT0oYyZiLmNoaWxkTGFuZXMpKXJldHVybiBudWxsO2lmKG51bGwhPT1hJiZiLmNoaWxkIT09YS5jaGlsZCl0aHJvdyBFcnJvcihwKDE1MykpO2lmKG51bGwhPT1iLmNoaWxkKXthPWIuY2hpbGQ7Yz13aChhLGEucGVuZGluZ1Byb3BzKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9d2goYSxhLnBlbmRpbmdQcm9wcyksYy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIHpqKGEsYixjKXtzd2l0Y2goYi50YWcpe2Nhc2UgMzpsaihiKTtJZygpO2JyZWFrO2Nhc2UgNTpLaChiKTticmVhaztjYXNlIDE6WmYoYi50eXBlKSYmY2coYik7YnJlYWs7Y2FzZSA0OkloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgZD1iLnR5cGUuX2NvbnRleHQsZT1iLm1lbW9pemVkUHJvcHMudmFsdWU7RyhNZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1lO2JyZWFrO2Nhc2UgMTM6ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQpe2lmKG51bGwhPT1kLmRlaHlkcmF0ZWQpcmV0dXJuIEcoTSxNLmN1cnJlbnQmMSksYi5mbGFnc3w9MTI4LG51bGw7aWYoMCE9PShjJmIuY2hpbGQuY2hpbGRMYW5lcykpcmV0dXJuIHBqKGEsYixjKTtHKE0sTS5jdXJyZW50JjEpO2E9JGkoYSxiLGMpO3JldHVybiBudWxsIT09YT9hLnNpYmxpbmc6bnVsbH1HKE0sTS5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6ZD0wIT09KGMmXG5iLmNoaWxkTGFuZXMpO2lmKDAhPT0oYS5mbGFncyYxMjgpKXtpZihkKXJldHVybiB5aihhLGIsYyk7Yi5mbGFnc3w9MTI4fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7RyhNLE0uY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gYi5sYW5lcz0wLGVqKGEsYixjKX1yZXR1cm4gJGkoYSxiLGMpfXZhciBBaixCaixDaixEajtcbkFqPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWIuY2hpbGQ7bnVsbCE9PWM7KXtpZig1PT09Yy50YWd8fDY9PT1jLnRhZylhLmFwcGVuZENoaWxkKGMuc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1jLnRhZyYmbnVsbCE9PWMuY2hpbGQpe2MuY2hpbGQucmV0dXJuPWM7Yz1jLmNoaWxkO2NvbnRpbnVlfWlmKGM9PT1iKWJyZWFrO2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8Yy5yZXR1cm49PT1iKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fTtCaj1mdW5jdGlvbigpe307XG5Daj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLm1lbW9pemVkUHJvcHM7aWYoZSE9PWQpe2E9Yi5zdGF0ZU5vZGU7SGgoRWguY3VycmVudCk7dmFyIGY9bnVsbDtzd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6ZT1ZYShhLGUpO2Q9WWEoYSxkKTtmPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjplPUEoe30sZSx7dmFsdWU6dm9pZCAwfSk7ZD1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2Y9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6ZT1nYihhLGUpO2Q9Z2IoYSxkKTtmPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGUub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGEub25jbGljaz1CZil9dWIoYyxkKTt2YXIgZztjPW51bGw7Zm9yKGwgaW4gZSlpZighZC5oYXNPd25Qcm9wZXJ0eShsKSYmZS5oYXNPd25Qcm9wZXJ0eShsKSYmbnVsbCE9ZVtsXSlpZihcInN0eWxlXCI9PT1sKXt2YXIgaD1lW2xdO2ZvcihnIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShnKSYmXG4oY3x8KGM9e30pLGNbZ109XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWwmJlwiY2hpbGRyZW5cIiE9PWwmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmXCJhdXRvRm9jdXNcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT9mfHwoZj1bXSk6KGY9Znx8W10pLnB1c2gobCxudWxsKSk7Zm9yKGwgaW4gZCl7dmFyIGs9ZFtsXTtoPW51bGwhPWU/ZVtsXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShsKSYmayE9PWgmJihudWxsIT1rfHxudWxsIT1oKSlpZihcInN0eWxlXCI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT1cIlwiKTtmb3IoZyBpbiBrKWsuaGFzT3duUHJvcGVydHkoZykmJmhbZ10hPT1rW2ddJiYoY3x8KGM9e30pLGNbZ109a1tnXSl9ZWxzZSBjfHwoZnx8KGY9W10pLGYucHVzaChsLFxuYykpLGM9aztlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZj1mfHxbXSkucHVzaChsLGspKTpcImNoaWxkcmVuXCI9PT1sP1wic3RyaW5nXCIhPT10eXBlb2YgayYmXCJudW1iZXJcIiE9PXR5cGVvZiBrfHwoZj1mfHxbXSkucHVzaChsLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/KG51bGwhPWsmJlwib25TY3JvbGxcIj09PWwmJkQoXCJzY3JvbGxcIixhKSxmfHxoPT09a3x8KGY9W10pKTooZj1mfHxbXSkucHVzaChsLGspKX1jJiYoZj1mfHxbXSkucHVzaChcInN0eWxlXCIsYyk7dmFyIGw9ZjtpZihiLnVwZGF0ZVF1ZXVlPWwpYi5mbGFnc3w9NH19O0RqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O1xuZnVuY3Rpb24gRWooYSxiKXtpZighSSlzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gUyhhKXt2YXIgYj1udWxsIT09YS5hbHRlcm5hdGUmJmEuYWx0ZXJuYXRlLmNoaWxkPT09YS5jaGlsZCxjPTAsZD0wO2lmKGIpZm9yKHZhciBlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0LGR8PWUuZmxhZ3MmMTQ2ODAwNjQsZS5yZXR1cm49YSxlPWUuc2libGluZztlbHNlIGZvcihlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzLGR8PWUuZmxhZ3MsZS5yZXR1cm49YSxlPWUuc2libGluZzthLnN1YnRyZWVGbGFnc3w9ZDthLmNoaWxkTGFuZXM9YztyZXR1cm4gYn1cbmZ1bmN0aW9uIEZqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wczt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBTKGIpLG51bGw7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDM6ZD1iLnN0YXRlTm9kZTtKaCgpO0UoV2YpO0UoSCk7T2goKTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpR2coYik/Yi5mbGFnc3w9NDpudWxsPT09YXx8YS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09PShiLmZsYWdzJjI1Nil8fChiLmZsYWdzfD0xMDI0LG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSk7QmooYSxiKTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNTpMaChiKTt2YXIgZT1IaChHaC5jdXJyZW50KTtcbmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSlDaihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighZCl7aWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7UyhiKTtyZXR1cm4gbnVsbH1hPUhoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi50eXBlO3ZhciBmPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2RbUGZdPWY7YT0wIT09KGIubW9kZSYxKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixkKTtEKFwiY2xvc2VcIixkKTticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxkKTticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsZCk7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5kKTtEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGQpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGQsZik7RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwic2VsZWN0XCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoZCxmKSxEKFwiaW52YWxpZFwiLGQpfXViKGMsZik7ZT1udWxsO2Zvcih2YXIgZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107XCJjaGlsZHJlblwiPT09Zz9cInN0cmluZ1wiPT09dHlwZW9mIGg/ZC50ZXh0Q29udGVudCE9PWgmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LGgsYSksZT1bXCJjaGlsZHJlblwiLGhdKTpcIm51bWJlclwiPT09dHlwZW9mIGgmJmQudGV4dENvbnRlbnQhPT1cIlwiK2gmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LFxuaCxhKSxlPVtcImNoaWxkcmVuXCIsXCJcIitoXSk6ZWEuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWgmJlwib25TY3JvbGxcIj09PWcmJkQoXCJzY3JvbGxcIixkKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoZCk7ZGIoZCxmLCEwKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShkKTtqYihkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Y2FzZSBcIm9wdGlvblwiOmJyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGYub25DbGljayYmKGQub25jbGljaz1CZil9ZD1lO2IudXBkYXRlUXVldWU9ZDtudWxsIT09ZCYmKGIuZmxhZ3N8PTQpfWVsc2V7Zz05PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWEmJihhPWtiKGMpKTtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/XCJzY3JpcHRcIj09PWM/KGE9Zy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGEuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlxuXCJzdHJpbmdcIj09PXR5cGVvZiBkLmlzP2E9Zy5jcmVhdGVFbGVtZW50KGMse2lzOmQuaXN9KTooYT1nLmNyZWF0ZUVsZW1lbnQoYyksXCJzZWxlY3RcIj09PWMmJihnPWEsZC5tdWx0aXBsZT9nLm11bHRpcGxlPSEwOmQuc2l6ZSYmKGcuc2l6ZT1kLnNpemUpKSk6YT1nLmNyZWF0ZUVsZW1lbnROUyhhLGMpO2FbT2ZdPWI7YVtQZl09ZDtBaihhLGIsITEsITEpO2Iuc3RhdGVOb2RlPWE7YTp7Zz12YihjLGQpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGEpO0QoXCJjbG9zZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sYSk7ZT1kO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5hKTtEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoYSxkKTtlPVlhKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwib3B0aW9uXCI6ZT1kO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZC5tdWx0aXBsZX07ZT1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoYSxkKTtlPWdiKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztkZWZhdWx0OmU9ZH11YihjLGUpO2g9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07XCJzdHlsZVwiPT09Zj9zYihhLGspOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWY/KGs9az9rLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmbmIoYSxrKSk6XCJjaGlsZHJlblwiPT09Zj9cInN0cmluZ1wiPT09dHlwZW9mIGs/KFwidGV4dGFyZWFcIiE9PVxuY3x8XCJcIiE9PWspJiZvYihhLGspOlwibnVtYmVyXCI9PT10eXBlb2YgayYmb2IoYSxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1mJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09ZiYmXCJhdXRvRm9jdXNcIiE9PWYmJihlYS5oYXNPd25Qcm9wZXJ0eShmKT9udWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1mJiZEKFwic2Nyb2xsXCIsYSk6bnVsbCE9ayYmdGEoYSxmLGssZykpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShhKTtkYihhLGQsITEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGEpO2piKGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpudWxsIT1kLnZhbHVlJiZhLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIitTYShkLnZhbHVlKSk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEubXVsdGlwbGU9ISFkLm11bHRpcGxlO2Y9ZC52YWx1ZTtudWxsIT1mP2ZiKGEsISFkLm11bHRpcGxlLGYsITEpOm51bGwhPWQuZGVmYXVsdFZhbHVlJiZmYihhLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSxcbiEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXN3aXRjaChjKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmQ9ISFkLmF1dG9Gb2N1czticmVhayBhO2Nhc2UgXCJpbWdcIjpkPSEwO2JyZWFrIGE7ZGVmYXVsdDpkPSExfX1kJiYoYi5mbGFnc3w9NCl9bnVsbCE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpfVMoYik7cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKURqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQmJm51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO2M9SGgoR2guY3VycmVudCk7SGgoRWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtpZihmPWQubm9kZVZhbHVlIT09YylpZihhPVxueGcsbnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6QWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSk7YnJlYWs7Y2FzZSA1OiEwIT09YS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSl9ZiYmKGIuZmxhZ3N8PTQpfWVsc2UgZD0oOT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGQpLGRbT2ZdPWIsYi5zdGF0ZU5vZGU9ZH1TKGIpO3JldHVybiBudWxsO2Nhc2UgMTM6RShNKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihJJiZudWxsIT09eWcmJjAhPT0oYi5tb2RlJjEpJiYwPT09KGIuZmxhZ3MmMTI4KSlIZygpLElnKCksYi5mbGFnc3w9OTg1NjAsZj0hMTtlbHNlIGlmKGY9R2coYiksbnVsbCE9PWQmJm51bGwhPT1kLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1cbmEpe2lmKCFmKXRocm93IEVycm9yKHAoMzE4KSk7Zj1iLm1lbW9pemVkU3RhdGU7Zj1udWxsIT09Zj9mLmRlaHlkcmF0ZWQ6bnVsbDtpZighZil0aHJvdyBFcnJvcihwKDMxNykpO2ZbT2ZdPWJ9ZWxzZSBJZygpLDA9PT0oYi5mbGFncyYxMjgpJiYoYi5tZW1vaXplZFN0YXRlPW51bGwpLGIuZmxhZ3N8PTQ7UyhiKTtmPSExfWVsc2UgbnVsbCE9PXpnJiYoR2ooemcpLHpnPW51bGwpLGY9ITA7aWYoIWYpcmV0dXJuIGIuZmxhZ3MmNjU1MzY/YjpudWxsfWlmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBiLmxhbmVzPWMsYjtkPW51bGwhPT1kO2QhPT0obnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUpJiZkJiYoYi5jaGlsZC5mbGFnc3w9ODE5MiwwIT09KGIubW9kZSYxKSYmKG51bGw9PT1hfHwwIT09KE0uY3VycmVudCYxKT8wPT09VCYmKFQ9Myk6dWooKSkpO251bGwhPT1iLnVwZGF0ZVF1ZXVlJiYoYi5mbGFnc3w9NCk7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIEpoKCksXG5CaihhLGIpLG51bGw9PT1hJiZzZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxTKGIpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxTKGIpLG51bGw7Y2FzZSAxNzpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAxOTpFKE0pO2Y9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1mKXJldHVybiBTKGIpLG51bGw7ZD0wIT09KGIuZmxhZ3MmMTI4KTtnPWYucmVuZGVyaW5nO2lmKG51bGw9PT1nKWlmKGQpRWooZiwhMSk7ZWxzZXtpZigwIT09VHx8bnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPU1oKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD0xMjg7RWooZiwhMSk7ZD1nLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYoYi51cGRhdGVRdWV1ZT1kLGIuZmxhZ3N8PTQpO2Iuc3VidHJlZUZsYWdzPTA7ZD1jO2ZvcihjPWIuY2hpbGQ7bnVsbCE9PWM7KWY9YyxhPWQsZi5mbGFncyY9MTQ2ODAwNjYsXG5nPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYuc3VidHJlZUZsYWdzPTAsZi5tZW1vaXplZFByb3BzPW51bGwsZi5tZW1vaXplZFN0YXRlPW51bGwsZi51cGRhdGVRdWV1ZT1udWxsLGYuZGVwZW5kZW5jaWVzPW51bGwsZi5zdGF0ZU5vZGU9bnVsbCk6KGYuY2hpbGRMYW5lcz1nLmNoaWxkTGFuZXMsZi5sYW5lcz1nLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLnN1YnRyZWVGbGFncz0wLGYuZGVsZXRpb25zPW51bGwsZi5tZW1vaXplZFByb3BzPWcubWVtb2l6ZWRQcm9wcyxmLm1lbW9pemVkU3RhdGU9Zy5tZW1vaXplZFN0YXRlLGYudXBkYXRlUXVldWU9Zy51cGRhdGVRdWV1ZSxmLnR5cGU9Zy50eXBlLGE9Zy5kZXBlbmRlbmNpZXMsZi5kZXBlbmRlbmNpZXM9bnVsbD09PWE/bnVsbDp7bGFuZXM6YS5sYW5lcyxmaXJzdENvbnRleHQ6YS5maXJzdENvbnRleHR9KSxjPWMuc2libGluZztHKE0sTS5jdXJyZW50JjF8Mik7cmV0dXJuIGIuY2hpbGR9YT1cbmEuc2libGluZ31udWxsIT09Zi50YWlsJiZCKCk+SGomJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIWQpaWYoYT1NaChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9MTI4LGQ9ITAsYz1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1jJiYoYi51cGRhdGVRdWV1ZT1jLGIuZmxhZ3N8PTQpLEVqKGYsITApLG51bGw9PT1mLnRhaWwmJlwiaGlkZGVuXCI9PT1mLnRhaWxNb2RlJiYhZy5hbHRlcm5hdGUmJiFJKXJldHVybiBTKGIpLG51bGx9ZWxzZSAyKkIoKS1mLnJlbmRlcmluZ1N0YXJ0VGltZT5IaiYmMTA3Mzc0MTgyNCE9PWMmJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpO2YuaXNCYWNrd2FyZHM/KGcuc2libGluZz1iLmNoaWxkLGIuY2hpbGQ9Zyk6KGM9Zi5sYXN0LG51bGwhPT1jP2Muc2libGluZz1nOmIuY2hpbGQ9ZyxmLmxhc3Q9Zyl9aWYobnVsbCE9PWYudGFpbClyZXR1cm4gYj1mLnRhaWwsZi5yZW5kZXJpbmc9XG5iLGYudGFpbD1iLnNpYmxpbmcsZi5yZW5kZXJpbmdTdGFydFRpbWU9QigpLGIuc2libGluZz1udWxsLGM9TS5jdXJyZW50LEcoTSxkP2MmMXwyOmMmMSksYjtTKGIpO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxkPW51bGwhPT1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUhPT1kJiYoYi5mbGFnc3w9ODE5MiksZCYmMCE9PShiLm1vZGUmMSk/MCE9PShnaiYxMDczNzQxODI0KSYmKFMoYiksYi5zdWJ0cmVlRmxhZ3MmNiYmKGIuZmxhZ3N8PTgxOTIpKTpTKGIpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fVxuZnVuY3Rpb24gSmooYSxiKXt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxhPWIuZmxhZ3MsYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDM6cmV0dXJuIEpoKCksRShXZiksRShIKSxPaCgpLGE9Yi5mbGFncywwIT09KGEmNjU1MzYpJiYwPT09KGEmMTI4KT8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDU6cmV0dXJuIExoKGIpLG51bGw7Y2FzZSAxMzpFKE0pO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXtpZihudWxsPT09Yi5hbHRlcm5hdGUpdGhyb3cgRXJyb3IocCgzNDApKTtJZygpfWE9Yi5mbGFncztyZXR1cm4gYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDE5OnJldHVybiBFKE0pLG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxcbm51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgS2o9ITEsVT0hMSxMaj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCxWPW51bGw7ZnVuY3Rpb24gTWooYSxiKXt2YXIgYz1hLnJlZjtpZihudWxsIT09YylpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYyl0cnl7YyhudWxsKX1jYXRjaChkKXtXKGEsYixkKX1lbHNlIGMuY3VycmVudD1udWxsfWZ1bmN0aW9uIE5qKGEsYixjKXt0cnl7YygpfWNhdGNoKGQpe1coYSxiLGQpfX12YXIgT2o9ITE7XG5mdW5jdGlvbiBQaihhLGIpe0NmPWRkO2E9TWUoKTtpZihOZShhKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gYSl2YXIgYz17c3RhcnQ6YS5zZWxlY3Rpb25TdGFydCxlbmQ6YS5zZWxlY3Rpb25FbmR9O2Vsc2UgYTp7Yz0oYz1hLm93bmVyRG9jdW1lbnQpJiZjLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGQ9Yy5nZXRTZWxlY3Rpb24mJmMuZ2V0U2VsZWN0aW9uKCk7aWYoZCYmMCE9PWQucmFuZ2VDb3VudCl7Yz1kLmFuY2hvck5vZGU7dmFyIGU9ZC5hbmNob3JPZmZzZXQsZj1kLmZvY3VzTm9kZTtkPWQuZm9jdXNPZmZzZXQ7dHJ5e2Mubm9kZVR5cGUsZi5ub2RlVHlwZX1jYXRjaChGKXtjPW51bGw7YnJlYWsgYX12YXIgZz0wLGg9LTEsaz0tMSxsPTAsbT0wLHE9YSxyPW51bGw7Yjpmb3IoOzspe2Zvcih2YXIgeTs7KXtxIT09Y3x8MCE9PWUmJjMhPT1xLm5vZGVUeXBlfHwoaD1nK2UpO3EhPT1mfHwwIT09ZCYmMyE9PXEubm9kZVR5cGV8fChrPWcrZCk7Mz09PXEubm9kZVR5cGUmJihnKz1cbnEubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh5PXEuZmlyc3RDaGlsZCkpYnJlYWs7cj1xO3E9eX1mb3IoOzspe2lmKHE9PT1hKWJyZWFrIGI7cj09PWMmJisrbD09PWUmJihoPWcpO3I9PT1mJiYrK209PT1kJiYoaz1nKTtpZihudWxsIT09KHk9cS5uZXh0U2libGluZykpYnJlYWs7cT1yO3I9cS5wYXJlbnROb2RlfXE9eX1jPS0xPT09aHx8LTE9PT1rP251bGw6e3N0YXJ0OmgsZW5kOmt9fWVsc2UgYz1udWxsfWM9Y3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgYz1udWxsO0RmPXtmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOmN9O2RkPSExO2ZvcihWPWI7bnVsbCE9PVY7KWlmKGI9VixhPWIuY2hpbGQsMCE9PShiLnN1YnRyZWVGbGFncyYxMDI4KSYmbnVsbCE9PWEpYS5yZXR1cm49YixWPWE7ZWxzZSBmb3IoO251bGwhPT1WOyl7Yj1WO3RyeXt2YXIgbj1iLmFsdGVybmF0ZTtpZigwIT09KGIuZmxhZ3MmMTAyNCkpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO1xuY2FzZSAxOmlmKG51bGwhPT1uKXt2YXIgdD1uLm1lbW9pemVkUHJvcHMsSj1uLm1lbW9pemVkU3RhdGUseD1iLnN0YXRlTm9kZSx3PXguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoYi5lbGVtZW50VHlwZT09PWIudHlwZT90OkxnKGIudHlwZSx0KSxKKTt4Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXd9YnJlYWs7Y2FzZSAzOnZhciB1PWIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87MT09PXUubm9kZVR5cGU/dS50ZXh0Q29udGVudD1cIlwiOjk9PT11Lm5vZGVUeXBlJiZ1LmRvY3VtZW50RWxlbWVudCYmdS5yZW1vdmVDaGlsZCh1LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fX1jYXRjaChGKXtXKGIsYi5yZXR1cm4sRil9YT1iLnNpYmxpbmc7aWYobnVsbCE9PWEpe2EucmV0dXJuPWIucmV0dXJuO1Y9YTticmVha31WPWIucmV0dXJufW49T2o7T2o9ITE7cmV0dXJuIG59XG5mdW5jdGlvbiBRaihhLGIsYyl7dmFyIGQ9Yi51cGRhdGVRdWV1ZTtkPW51bGwhPT1kP2QubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1kKXt2YXIgZT1kPWQubmV4dDtkb3tpZigoZS50YWcmYSk9PT1hKXt2YXIgZj1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDt2b2lkIDAhPT1mJiZOaihiLGMsZil9ZT1lLm5leHR9d2hpbGUoZSE9PWQpfX1mdW5jdGlvbiBSaihhLGIpe2I9Yi51cGRhdGVRdWV1ZTtiPW51bGwhPT1iP2IubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1iKXt2YXIgYz1iPWIubmV4dDtkb3tpZigoYy50YWcmYSk9PT1hKXt2YXIgZD1jLmNyZWF0ZTtjLmRlc3Ryb3k9ZCgpfWM9Yy5uZXh0fXdoaWxlKGMhPT1iKX19ZnVuY3Rpb24gU2ooYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpe3ZhciBjPWEuc3RhdGVOb2RlO3N3aXRjaChhLnRhZyl7Y2FzZSA1OmE9YzticmVhaztkZWZhdWx0OmE9Y31cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmIuY3VycmVudD1hfX1cbmZ1bmN0aW9uIFRqKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO251bGwhPT1iJiYoYS5hbHRlcm5hdGU9bnVsbCxUaihiKSk7YS5jaGlsZD1udWxsO2EuZGVsZXRpb25zPW51bGw7YS5zaWJsaW5nPW51bGw7NT09PWEudGFnJiYoYj1hLnN0YXRlTm9kZSxudWxsIT09YiYmKGRlbGV0ZSBiW09mXSxkZWxldGUgYltQZl0sZGVsZXRlIGJbb2ZdLGRlbGV0ZSBiW1FmXSxkZWxldGUgYltSZl0pKTthLnN0YXRlTm9kZT1udWxsO2EucmV0dXJuPW51bGw7YS5kZXBlbmRlbmNpZXM9bnVsbDthLm1lbW9pemVkUHJvcHM9bnVsbDthLm1lbW9pemVkU3RhdGU9bnVsbDthLnBlbmRpbmdQcm9wcz1udWxsO2Euc3RhdGVOb2RlPW51bGw7YS51cGRhdGVRdWV1ZT1udWxsfWZ1bmN0aW9uIFVqKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gVmooYSl7YTpmb3IoOzspe2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8VWooYS5yZXR1cm4pKXJldHVybiBudWxsO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjtmb3IoYT1hLnNpYmxpbmc7NSE9PWEudGFnJiY2IT09YS50YWcmJjE4IT09YS50YWc7KXtpZihhLmZsYWdzJjIpY29udGludWUgYTtpZihudWxsPT09YS5jaGlsZHx8ND09PWEudGFnKWNvbnRpbnVlIGE7ZWxzZSBhLmNoaWxkLnJldHVybj1hLGE9YS5jaGlsZH1pZighKGEuZmxhZ3MmMikpcmV0dXJuIGEuc3RhdGVOb2RlfX1cbmZ1bmN0aW9uIFdqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiPzg9PT1jLm5vZGVUeXBlP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKTpjLmluc2VydEJlZm9yZShhLGIpOig4PT09Yy5ub2RlVHlwZT8oYj1jLnBhcmVudE5vZGUsYi5pbnNlcnRCZWZvcmUoYSxjKSk6KGI9YyxiLmFwcGVuZENoaWxkKGEpKSxjPWMuX3JlYWN0Um9vdENvbnRhaW5lcixudWxsIT09YyYmdm9pZCAwIT09Y3x8bnVsbCE9PWIub25jbGlja3x8KGIub25jbGljaz1CZikpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihXaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVdqKGEsYixjKSxhPWEuc2libGluZ31cbmZ1bmN0aW9uIFhqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoWGooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylYaihhLGIsYyksYT1hLnNpYmxpbmd9dmFyIFg9bnVsbCxZaj0hMTtmdW5jdGlvbiBaaihhLGIsYyl7Zm9yKGM9Yy5jaGlsZDtudWxsIT09YzspYWsoYSxiLGMpLGM9Yy5zaWJsaW5nfVxuZnVuY3Rpb24gYWsoYSxiLGMpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclVubW91bnQpdHJ5e2xjLm9uQ29tbWl0RmliZXJVbm1vdW50KGtjLGMpfWNhdGNoKGgpe31zd2l0Y2goYy50YWcpe2Nhc2UgNTpVfHxNaihjLGIpO2Nhc2UgNjp2YXIgZD1YLGU9WWo7WD1udWxsO1pqKGEsYixjKTtYPWQ7WWo9ZTtudWxsIT09WCYmKFlqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyk6YS5yZW1vdmVDaGlsZChjKSk6WC5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/S2YoYS5wYXJlbnROb2RlLGMpOjE9PT1hLm5vZGVUeXBlJiZLZihhLGMpLGJkKGEpKTpLZihYLGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OmQ9WDtlPVlqO1g9Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDtcblpqKGEsYixjKTtYPWQ7WWo9ZTticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYoIVUmJihkPWMudXBkYXRlUXVldWUsbnVsbCE9PWQmJihkPWQubGFzdEVmZmVjdCxudWxsIT09ZCkpKXtlPWQ9ZC5uZXh0O2Rve3ZhciBmPWUsZz1mLmRlc3Ryb3k7Zj1mLnRhZzt2b2lkIDAhPT1nJiYoMCE9PShmJjIpP05qKGMsYixnKTowIT09KGYmNCkmJk5qKGMsYixnKSk7ZT1lLm5leHR9d2hpbGUoZSE9PWQpfVpqKGEsYixjKTticmVhaztjYXNlIDE6aWYoIVUmJihNaihjLGIpLGQ9Yy5zdGF0ZU5vZGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtkLnByb3BzPWMubWVtb2l6ZWRQcm9wcyxkLnN0YXRlPWMubWVtb2l6ZWRTdGF0ZSxkLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goaCl7VyhjLGIsaCl9WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjE6WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjI6Yy5tb2RlJjE/KFU9KGQ9VSl8fG51bGwhPT1cbmMubWVtb2l6ZWRTdGF0ZSxaaihhLGIsYyksVT1kKTpaaihhLGIsYyk7YnJlYWs7ZGVmYXVsdDpaaihhLGIsYyl9fWZ1bmN0aW9uIGJrKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IExqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9Y2suYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19XG5mdW5jdGlvbiBkayhhLGIpe3ZhciBjPWIuZGVsZXRpb25zO2lmKG51bGwhPT1jKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO3RyeXt2YXIgZj1hLGc9YixoPWc7YTpmb3IoO251bGwhPT1oOyl7c3dpdGNoKGgudGFnKXtjYXNlIDU6WD1oLnN0YXRlTm9kZTtZaj0hMTticmVhayBhO2Nhc2UgMzpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7YnJlYWsgYTtjYXNlIDQ6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGF9aD1oLnJldHVybn1pZihudWxsPT09WCl0aHJvdyBFcnJvcihwKDE2MCkpO2FrKGYsZyxlKTtYPW51bGw7WWo9ITE7dmFyIGs9ZS5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLnJldHVybj1udWxsKTtlLnJldHVybj1udWxsfWNhdGNoKGwpe1coZSxiLGwpfX1pZihiLnN1YnRyZWVGbGFncyYxMjg1NClmb3IoYj1iLmNoaWxkO251bGwhPT1iOyllayhiLGEpLGI9Yi5zaWJsaW5nfVxuZnVuY3Rpb24gZWsoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZSxkPWEuZmxhZ3M7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6ZGsoYixhKTtmayhhKTtpZihkJjQpe3RyeXtRaigzLGEsYS5yZXR1cm4pLFJqKDMsYSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfXRyeXtRaig1LGEsYS5yZXR1cm4pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAxOmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTticmVhaztjYXNlIDU6ZGsoYixhKTtmayhhKTtkJjUxMiYmbnVsbCE9PWMmJk1qKGMsYy5yZXR1cm4pO2lmKGEuZmxhZ3MmMzIpe3ZhciBlPWEuc3RhdGVOb2RlO3RyeXtvYihlLFwiXCIpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19aWYoZCY0JiYoZT1hLnN0YXRlTm9kZSxudWxsIT1lKSl7dmFyIGY9YS5tZW1vaXplZFByb3BzLGc9bnVsbCE9PWM/Yy5tZW1vaXplZFByb3BzOmYsaD1hLnR5cGUsaz1hLnVwZGF0ZVF1ZXVlO1xuYS51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1rKXRyeXtcImlucHV0XCI9PT1oJiZcInJhZGlvXCI9PT1mLnR5cGUmJm51bGwhPWYubmFtZSYmYWIoZSxmKTt2YihoLGcpO3ZhciBsPXZiKGgsZik7Zm9yKGc9MDtnPGsubGVuZ3RoO2crPTIpe3ZhciBtPWtbZ10scT1rW2crMV07XCJzdHlsZVwiPT09bT9zYihlLHEpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PW0/bmIoZSxxKTpcImNoaWxkcmVuXCI9PT1tP29iKGUscSk6dGEoZSxtLHEsbCl9c3dpdGNoKGgpe2Nhc2UgXCJpbnB1dFwiOmJiKGUsZik7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoZSxmKTticmVhaztjYXNlIFwic2VsZWN0XCI6dmFyIHI9ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWYubXVsdGlwbGU7dmFyIHk9Zi52YWx1ZTtudWxsIT15P2ZiKGUsISFmLm11bHRpcGxlLHksITEpOnIhPT0hIWYubXVsdGlwbGUmJihudWxsIT1mLmRlZmF1bHRWYWx1ZT9mYihlLCEhZi5tdWx0aXBsZSxcbmYuZGVmYXVsdFZhbHVlLCEwKTpmYihlLCEhZi5tdWx0aXBsZSxmLm11bHRpcGxlP1tdOlwiXCIsITEpKX1lW1BmXT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSA2OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXtpZihudWxsPT09YS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjIpKTtlPWEuc3RhdGVOb2RlO2Y9YS5tZW1vaXplZFByb3BzO3RyeXtlLm5vZGVWYWx1ZT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAzOmRrKGIsYSk7ZmsoYSk7aWYoZCY0JiZudWxsIT09YyYmYy5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7YmQoYi5jb250YWluZXJJbmZvKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9YnJlYWs7Y2FzZSA0OmRrKGIsYSk7ZmsoYSk7YnJlYWs7Y2FzZSAxMzpkayhiLGEpO2ZrKGEpO2U9YS5jaGlsZDtlLmZsYWdzJjgxOTImJihmPW51bGwhPT1lLm1lbW9pemVkU3RhdGUsZS5zdGF0ZU5vZGUuaXNIaWRkZW49ZiwhZnx8XG5udWxsIT09ZS5hbHRlcm5hdGUmJm51bGwhPT1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlfHwoZ2s9QigpKSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIyOm09bnVsbCE9PWMmJm51bGwhPT1jLm1lbW9pemVkU3RhdGU7YS5tb2RlJjE/KFU9KGw9VSl8fG0sZGsoYixhKSxVPWwpOmRrKGIsYSk7ZmsoYSk7aWYoZCY4MTkyKXtsPW51bGwhPT1hLm1lbW9pemVkU3RhdGU7aWYoKGEuc3RhdGVOb2RlLmlzSGlkZGVuPWwpJiYhbSYmMCE9PShhLm1vZGUmMSkpZm9yKFY9YSxtPWEuY2hpbGQ7bnVsbCE9PW07KXtmb3IocT1WPW07bnVsbCE9PVY7KXtyPVY7eT1yLmNoaWxkO3N3aXRjaChyLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OlFqKDQscixyLnJldHVybik7YnJlYWs7Y2FzZSAxOk1qKHIsci5yZXR1cm4pO3ZhciBuPXIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuLmNvbXBvbmVudFdpbGxVbm1vdW50KXtkPXI7Yz1yLnJldHVybjt0cnl7Yj1kLG4ucHJvcHM9XG5iLm1lbW9pemVkUHJvcHMsbi5zdGF0ZT1iLm1lbW9pemVkU3RhdGUsbi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe1coZCxjLHQpfX1icmVhaztjYXNlIDU6TWoocixyLnJldHVybik7YnJlYWs7Y2FzZSAyMjppZihudWxsIT09ci5tZW1vaXplZFN0YXRlKXtoayhxKTtjb250aW51ZX19bnVsbCE9PXk/KHkucmV0dXJuPXIsVj15KTpoayhxKX1tPW0uc2libGluZ31hOmZvcihtPW51bGwscT1hOzspe2lmKDU9PT1xLnRhZyl7aWYobnVsbD09PW0pe209cTt0cnl7ZT1xLnN0YXRlTm9kZSxsPyhmPWUuc3R5bGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuc2V0UHJvcGVydHk/Zi5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTpmLmRpc3BsYXk9XCJub25lXCIpOihoPXEuc3RhdGVOb2RlLGs9cS5tZW1vaXplZFByb3BzLnN0eWxlLGc9dm9pZCAwIT09ayYmbnVsbCE9PWsmJmsuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2suZGlzcGxheTpudWxsLGguc3R5bGUuZGlzcGxheT1cbnJiKFwiZGlzcGxheVwiLGcpKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fX1lbHNlIGlmKDY9PT1xLnRhZyl7aWYobnVsbD09PW0pdHJ5e3Euc3RhdGVOb2RlLm5vZGVWYWx1ZT1sP1wiXCI6cS5tZW1vaXplZFByb3BzfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19ZWxzZSBpZigoMjIhPT1xLnRhZyYmMjMhPT1xLnRhZ3x8bnVsbD09PXEubWVtb2l6ZWRTdGF0ZXx8cT09PWEpJiZudWxsIT09cS5jaGlsZCl7cS5jaGlsZC5yZXR1cm49cTtxPXEuY2hpbGQ7Y29udGludWV9aWYocT09PWEpYnJlYWsgYTtmb3IoO251bGw9PT1xLnNpYmxpbmc7KXtpZihudWxsPT09cS5yZXR1cm58fHEucmV0dXJuPT09YSlicmVhayBhO209PT1xJiYobT1udWxsKTtxPXEucmV0dXJufW09PT1xJiYobT1udWxsKTtxLnNpYmxpbmcucmV0dXJuPXEucmV0dXJuO3E9cS5zaWJsaW5nfX1icmVhaztjYXNlIDE5OmRrKGIsYSk7ZmsoYSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6ZGsoYixcbmEpLGZrKGEpfX1mdW5jdGlvbiBmayhhKXt2YXIgYj1hLmZsYWdzO2lmKGImMil7dHJ5e2E6e2Zvcih2YXIgYz1hLnJldHVybjtudWxsIT09Yzspe2lmKFVqKGMpKXt2YXIgZD1jO2JyZWFrIGF9Yz1jLnJldHVybn10aHJvdyBFcnJvcihwKDE2MCkpO31zd2l0Y2goZC50YWcpe2Nhc2UgNTp2YXIgZT1kLnN0YXRlTm9kZTtkLmZsYWdzJjMyJiYob2IoZSxcIlwiKSxkLmZsYWdzJj0tMzMpO3ZhciBmPVZqKGEpO1hqKGEsZixlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBnPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saD1WaihhKTtXaihhLGgsZyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MSkpO319Y2F0Y2goayl7VyhhLGEucmV0dXJuLGspfWEuZmxhZ3MmPS0zfWImNDA5NiYmKGEuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBpayhhLGIsYyl7Vj1hO2prKGEsYixjKX1cbmZ1bmN0aW9uIGprKGEsYixjKXtmb3IodmFyIGQ9MCE9PShhLm1vZGUmMSk7bnVsbCE9PVY7KXt2YXIgZT1WLGY9ZS5jaGlsZDtpZigyMj09PWUudGFnJiZkKXt2YXIgZz1udWxsIT09ZS5tZW1vaXplZFN0YXRlfHxLajtpZighZyl7dmFyIGg9ZS5hbHRlcm5hdGUsaz1udWxsIT09aCYmbnVsbCE9PWgubWVtb2l6ZWRTdGF0ZXx8VTtoPUtqO3ZhciBsPVU7S2o9ZztpZigoVT1rKSYmIWwpZm9yKFY9ZTtudWxsIT09VjspZz1WLGs9Zy5jaGlsZCwyMj09PWcudGFnJiZudWxsIT09Zy5tZW1vaXplZFN0YXRlP2trKGUpOm51bGwhPT1rPyhrLnJldHVybj1nLFY9ayk6a2soZSk7Zm9yKDtudWxsIT09ZjspVj1mLGprKGYsYixjKSxmPWYuc2libGluZztWPWU7S2o9aDtVPWx9bGsoYSxiLGMpfWVsc2UgMCE9PShlLnN1YnRyZWVGbGFncyY4NzcyKSYmbnVsbCE9PWY/KGYucmV0dXJuPWUsVj1mKTpsayhhLGIsYyl9fVxuZnVuY3Rpb24gbGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXt2YXIgYz1iLmFsdGVybmF0ZTt0cnl7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpVfHxSaig1LGIpO2JyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihiLmZsYWdzJjQmJiFVKWlmKG51bGw9PT1jKWQuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBlPWIuZWxlbWVudFR5cGU9PT1iLnR5cGU/Yy5tZW1vaXplZFByb3BzOkxnKGIudHlwZSxjLm1lbW9pemVkUHJvcHMpO2QuY29tcG9uZW50RGlkVXBkYXRlKGUsYy5tZW1vaXplZFN0YXRlLGQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBmPWIudXBkYXRlUXVldWU7bnVsbCE9PWYmJmloKGIsZixkKTticmVhaztjYXNlIDM6dmFyIGc9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09Zyl7Yz1udWxsO2lmKG51bGwhPT1iLmNoaWxkKXN3aXRjaChiLmNoaWxkLnRhZyl7Y2FzZSA1OmM9XG5iLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6Yz1iLmNoaWxkLnN0YXRlTm9kZX1paChiLGcsYyl9YnJlYWs7Y2FzZSA1OnZhciBoPWIuc3RhdGVOb2RlO2lmKG51bGw9PT1jJiZiLmZsYWdzJjQpe2M9aDt2YXIgaz1iLm1lbW9pemVkUHJvcHM7c3dpdGNoKGIudHlwZSl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjprLmF1dG9Gb2N1cyYmYy5mb2N1cygpO2JyZWFrO2Nhc2UgXCJpbWdcIjprLnNyYyYmKGMuc3JjPWsuc3JjKX19YnJlYWs7Y2FzZSA2OmJyZWFrO2Nhc2UgNDpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobnVsbD09PWIubWVtb2l6ZWRTdGF0ZSl7dmFyIGw9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWwpe3ZhciBtPWwubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bSl7dmFyIHE9bS5kZWh5ZHJhdGVkO251bGwhPT1xJiZiZChxKX19fWJyZWFrO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI1OmJyZWFrO1xuZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO31VfHxiLmZsYWdzJjUxMiYmU2ooYil9Y2F0Y2gocil7VyhiLGIucmV0dXJuLHIpfX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfWM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19ZnVuY3Rpb24gaGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgYz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1cbmZ1bmN0aW9uIGtrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO3RyeXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIGM9Yi5yZXR1cm47dHJ5e1JqKDQsYil9Y2F0Y2goayl7VyhiLGMsayl9YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZE1vdW50KXt2YXIgZT1iLnJldHVybjt0cnl7ZC5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGspe1coYixlLGspfX12YXIgZj1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGYsayl9YnJlYWs7Y2FzZSA1OnZhciBnPWIucmV0dXJuO3RyeXtTaihiKX1jYXRjaChrKXtXKGIsZyxrKX19fWNhdGNoKGspe1coYixiLnJldHVybixrKX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBoPWIuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Yi5yZXR1cm47Vj1oO2JyZWFrfVY9Yi5yZXR1cm59fVxudmFyIG1rPU1hdGguY2VpbCxuaz11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLG9rPXVhLlJlYWN0Q3VycmVudE93bmVyLHBrPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEs9MCxSPW51bGwsWT1udWxsLFo9MCxnaj0wLGZqPVVmKDApLFQ9MCxxaz1udWxsLGhoPTAscms9MCxzaz0wLHRrPW51bGwsdWs9bnVsbCxnaz0wLEhqPUluZmluaXR5LHZrPW51bGwsUGk9ITEsUWk9bnVsbCxTaT1udWxsLHdrPSExLHhrPW51bGwseWs9MCx6az0wLEFrPW51bGwsQms9LTEsQ2s9MDtmdW5jdGlvbiBMKCl7cmV0dXJuIDAhPT0oSyY2KT9CKCk6LTEhPT1Caz9CazpCaz1CKCl9XG5mdW5jdGlvbiBsaChhKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gMTtpZigwIT09KEsmMikmJjAhPT1aKXJldHVybiBaJi1aO2lmKG51bGwhPT1LZy50cmFuc2l0aW9uKXJldHVybiAwPT09Q2smJihDaz15YygpKSxDazthPUM7aWYoMCE9PWEpcmV0dXJuIGE7YT13aW5kb3cuZXZlbnQ7YT12b2lkIDA9PT1hPzE2OmpkKGEudHlwZSk7cmV0dXJuIGF9ZnVuY3Rpb24gbWgoYSxiLGMsZCl7aWYoNTA8emspdGhyb3cgems9MCxBaz1udWxsLEVycm9yKHAoMTg1KSk7QWMoYSxjLGQpO2lmKDA9PT0oSyYyKXx8YSE9PVIpYT09PVImJigwPT09KEsmMikmJihya3w9YyksND09PVQmJkRrKGEsWikpLEVrKGEsZCksMT09PWMmJjA9PT1LJiYwPT09KGIubW9kZSYxKSYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfVxuZnVuY3Rpb24gRWsoYSxiKXt2YXIgYz1hLmNhbGxiYWNrTm9kZTt3YyhhLGIpO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZCludWxsIT09YyYmYmMoYyksYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MDtlbHNlIGlmKGI9ZCYtZCxhLmNhbGxiYWNrUHJpb3JpdHkhPT1iKXtudWxsIT1jJiZiYyhjKTtpZigxPT09YikwPT09YS50YWc/aWcoRmsuYmluZChudWxsLGEpKTpoZyhGay5iaW5kKG51bGwsYSkpLEpmKGZ1bmN0aW9uKCl7MD09PShLJjYpJiZqZygpfSksYz1udWxsO2Vsc2V7c3dpdGNoKERjKGQpKXtjYXNlIDE6Yz1mYzticmVhaztjYXNlIDQ6Yz1nYzticmVhaztjYXNlIDE2OmM9aGM7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6Yz1qYzticmVhaztkZWZhdWx0OmM9aGN9Yz1HayhjLEhrLmJpbmQobnVsbCxhKSl9YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319XG5mdW5jdGlvbiBIayhhLGIpe0JrPS0xO0NrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7dmFyIGM9YS5jYWxsYmFja05vZGU7aWYoSWsoKSYmYS5jYWxsYmFja05vZGUhPT1jKXJldHVybiBudWxsO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZClyZXR1cm4gbnVsbDtpZigwIT09KGQmMzApfHwwIT09KGQmYS5leHBpcmVkTGFuZXMpfHxiKWI9SmsoYSxkKTtlbHNle2I9ZDt2YXIgZT1LO0t8PTI7dmFyIGY9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxIaj1CKCkrNTAwLExrKGEsYik7ZG8gdHJ5e01rKCk7YnJlYWt9Y2F0Y2goaCl7TmsoYSxoKX13aGlsZSgxKTtRZygpO25rLmN1cnJlbnQ9ZjtLPWU7bnVsbCE9PVk/Yj0wOihSPW51bGwsWj0wLGI9VCl9aWYoMCE9PWIpezI9PT1iJiYoZT14YyhhKSwwIT09ZSYmKGQ9ZSxiPU9rKGEsZSkpKTtpZigxPT09Yil0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxkKSxFayhhLEIoKSksYztpZig2PT09YilEayhhLGQpO1xuZWxzZXtlPWEuY3VycmVudC5hbHRlcm5hdGU7aWYoMD09PShkJjMwKSYmIVBrKGUpJiYoYj1KayhhLGQpLDI9PT1iJiYoZj14YyhhKSwwIT09ZiYmKGQ9ZixiPU9rKGEsZikpKSwxPT09YikpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7YS5maW5pc2hlZFdvcms9ZTthLmZpbmlzaGVkTGFuZXM9ZDtzd2l0Y2goYil7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihwKDM0NSkpO2Nhc2UgMjpRayhhLHVrLHZrKTticmVhaztjYXNlIDM6RGsoYSxkKTtpZigoZCYxMzAwMjM0MjQpPT09ZCYmKGI9Z2srNTAwLUIoKSwxMDxiKSl7aWYoMCE9PXVjKGEsMCkpYnJlYWs7ZT1hLnN1c3BlbmRlZExhbmVzO2lmKChlJmQpIT09ZCl7TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmZTticmVha31hLnRpbWVvdXRIYW5kbGU9RmYoUWsuYmluZChudWxsLGEsdWssdmspLGIpO2JyZWFrfVFrKGEsdWssdmspO2JyZWFrO2Nhc2UgNDpEayhhLGQpO2lmKChkJjQxOTQyNDApPT09XG5kKWJyZWFrO2I9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8ZDspe3ZhciBnPTMxLW9jKGQpO2Y9MTw8ZztnPWJbZ107Zz5lJiYoZT1nKTtkJj1+Zn1kPWU7ZD1CKCktZDtkPSgxMjA+ZD8xMjA6NDgwPmQ/NDgwOjEwODA+ZD8xMDgwOjE5MjA+ZD8xOTIwOjNFMz5kPzNFMzo0MzIwPmQ/NDMyMDoxOTYwKm1rKGQvMTk2MCkpLWQ7aWYoMTA8ZCl7YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxkKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDU6UWsoYSx1ayx2ayk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMyOSkpO319fUVrKGEsQigpKTtyZXR1cm4gYS5jYWxsYmFja05vZGU9PT1jP0hrLmJpbmQobnVsbCxhKTpudWxsfVxuZnVuY3Rpb24gT2soYSxiKXt2YXIgYz10azthLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJihMayhhLGIpLmZsYWdzfD0yNTYpO2E9SmsoYSxiKTsyIT09YSYmKGI9dWssdWs9YyxudWxsIT09YiYmR2ooYikpO3JldHVybiBhfWZ1bmN0aW9uIEdqKGEpe251bGw9PT11az91az1hOnVrLnB1c2guYXBwbHkodWssYSl9XG5mdW5jdGlvbiBQayhhKXtmb3IodmFyIGI9YTs7KXtpZihiLmZsYWdzJjE2Mzg0KXt2YXIgYz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1jJiYoYz1jLnN0b3JlcyxudWxsIT09YykpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7aWYoIUhlKGYoKSxlKSlyZXR1cm4hMX1jYXRjaChnKXtyZXR1cm4hMX19fWM9Yi5jaGlsZDtpZihiLnN1YnRyZWVGbGFncyYxNjM4NCYmbnVsbCE9PWMpYy5yZXR1cm49YixiPWM7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4hMDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiEwfVxuZnVuY3Rpb24gRGsoYSxiKXtiJj1+c2s7YiY9fnJrO2Euc3VzcGVuZGVkTGFuZXN8PWI7YS5waW5nZWRMYW5lcyY9fmI7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxiOyl7dmFyIGM9MzEtb2MoYiksZD0xPDxjO2FbY109LTE7YiY9fmR9fWZ1bmN0aW9uIEZrKGEpe2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO0lrKCk7dmFyIGI9dWMoYSwwKTtpZigwPT09KGImMSkpcmV0dXJuIEVrKGEsQigpKSxudWxsO3ZhciBjPUprKGEsYik7aWYoMCE9PWEudGFnJiYyPT09Yyl7dmFyIGQ9eGMoYSk7MCE9PWQmJihiPWQsYz1PayhhLGQpKX1pZigxPT09Yyl0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxiKSxFayhhLEIoKSksYztpZig2PT09Yyl0aHJvdyBFcnJvcihwKDM0NSkpO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7UWsoYSx1ayx2ayk7RWsoYSxCKCkpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gUmsoYSxiKXt2YXIgYz1LO0t8PTE7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7Sz1jLDA9PT1LJiYoSGo9QigpKzUwMCxmZyYmamcoKSl9fWZ1bmN0aW9uIFNrKGEpe251bGwhPT14ayYmMD09PXhrLnRhZyYmMD09PShLJjYpJiZJaygpO3ZhciBiPUs7S3w9MTt2YXIgYz1way50cmFuc2l0aW9uLGQ9Qzt0cnl7aWYocGsudHJhbnNpdGlvbj1udWxsLEM9MSxhKXJldHVybiBhKCl9ZmluYWxseXtDPWQscGsudHJhbnNpdGlvbj1jLEs9YiwwPT09KEsmNikmJmpnKCl9fWZ1bmN0aW9uIElqKCl7Z2o9ZmouY3VycmVudDtFKGZqKX1cbmZ1bmN0aW9uIExrKGEsYil7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDt2YXIgYz1hLnRpbWVvdXRIYW5kbGU7LTEhPT1jJiYoYS50aW1lb3V0SGFuZGxlPS0xLEdmKGMpKTtpZihudWxsIT09WSlmb3IoYz1ZLnJldHVybjtudWxsIT09Yzspe3ZhciBkPWM7d2coZCk7c3dpdGNoKGQudGFnKXtjYXNlIDE6ZD1kLnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9PWQmJnZvaWQgMCE9PWQmJiRmKCk7YnJlYWs7Y2FzZSAzOkpoKCk7RShXZik7RShIKTtPaCgpO2JyZWFrO2Nhc2UgNTpMaChkKTticmVhaztjYXNlIDQ6SmgoKTticmVhaztjYXNlIDEzOkUoTSk7YnJlYWs7Y2FzZSAxOTpFKE0pO2JyZWFrO2Nhc2UgMTA6UmcoZC50eXBlLl9jb250ZXh0KTticmVhaztjYXNlIDIyOmNhc2UgMjM6SWooKX1jPWMucmV0dXJufVI9YTtZPWE9d2goYS5jdXJyZW50LG51bGwpO1o9Z2o9YjtUPTA7cWs9bnVsbDtzaz1yaz1oaD0wO3VrPXRrPW51bGw7aWYobnVsbCE9PVdnKXtmb3IoYj1cbjA7YjxXZy5sZW5ndGg7YisrKWlmKGM9V2dbYl0sZD1jLmludGVybGVhdmVkLG51bGwhPT1kKXtjLmludGVybGVhdmVkPW51bGw7dmFyIGU9ZC5uZXh0LGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXt2YXIgZz1mLm5leHQ7Zi5uZXh0PWU7ZC5uZXh0PWd9Yy5wZW5kaW5nPWR9V2c9bnVsbH1yZXR1cm4gYX1cbmZ1bmN0aW9uIE5rKGEsYil7ZG97dmFyIGM9WTt0cnl7UWcoKTtQaC5jdXJyZW50PWFpO2lmKFNoKXtmb3IodmFyIGQ9Ti5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1TaD0hMX1SaD0wO1A9Tz1OPW51bGw7VGg9ITE7VWg9MDtvay5jdXJyZW50PW51bGw7aWYobnVsbD09PWN8fG51bGw9PT1jLnJldHVybil7VD0xO3FrPWI7WT1udWxsO2JyZWFrfWE6e3ZhciBmPWEsZz1jLnJldHVybixoPWMsaz1iO2I9WjtoLmZsYWdzfD0zMjc2ODtpZihudWxsIT09ayYmXCJvYmplY3RcIj09PXR5cGVvZiBrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygay50aGVuKXt2YXIgbD1rLG09aCxxPW0udGFnO2lmKDA9PT0obS5tb2RlJjEpJiYoMD09PXF8fDExPT09cXx8MTU9PT1xKSl7dmFyIHI9bS5hbHRlcm5hdGU7cj8obS51cGRhdGVRdWV1ZT1yLnVwZGF0ZVF1ZXVlLG0ubWVtb2l6ZWRTdGF0ZT1yLm1lbW9pemVkU3RhdGUsXG5tLmxhbmVzPXIubGFuZXMpOihtLnVwZGF0ZVF1ZXVlPW51bGwsbS5tZW1vaXplZFN0YXRlPW51bGwpfXZhciB5PVZpKGcpO2lmKG51bGwhPT15KXt5LmZsYWdzJj0tMjU3O1dpKHksZyxoLGYsYik7eS5tb2RlJjEmJlRpKGYsbCxiKTtiPXk7az1sO3ZhciBuPWIudXBkYXRlUXVldWU7aWYobnVsbD09PW4pe3ZhciB0PW5ldyBTZXQ7dC5hZGQoayk7Yi51cGRhdGVRdWV1ZT10fWVsc2Ugbi5hZGQoayk7YnJlYWsgYX1lbHNle2lmKDA9PT0oYiYxKSl7VGkoZixsLGIpO3VqKCk7YnJlYWsgYX1rPUVycm9yKHAoNDI2KSl9fWVsc2UgaWYoSSYmaC5tb2RlJjEpe3ZhciBKPVZpKGcpO2lmKG51bGwhPT1KKXswPT09KEouZmxhZ3MmNjU1MzYpJiYoSi5mbGFnc3w9MjU2KTtXaShKLGcsaCxmLGIpO0pnKEtpKGssaCkpO2JyZWFrIGF9fWY9az1LaShrLGgpOzQhPT1UJiYoVD0yKTtudWxsPT09dGs/dGs9W2ZdOnRrLnB1c2goZik7Zj1nO2Rve3N3aXRjaChmLnRhZyl7Y2FzZSAzOmYuZmxhZ3N8PTY1NTM2O1xuYiY9LWI7Zi5sYW5lc3w9Yjt2YXIgeD1PaShmLGssYik7ZmgoZix4KTticmVhayBhO2Nhc2UgMTpoPWs7dmFyIHc9Zi50eXBlLHU9Zi5zdGF0ZU5vZGU7aWYoMD09PShmLmZsYWdzJjEyOCkmJihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT11JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgdS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyh1KSkpKXtmLmZsYWdzfD02NTUzNjtiJj0tYjtmLmxhbmVzfD1iO3ZhciBGPVJpKGYsaCxiKTtmaChmLEYpO2JyZWFrIGF9fWY9Zi5yZXR1cm59d2hpbGUobnVsbCE9PWYpfVRrKGMpfWNhdGNoKG5hKXtiPW5hO1k9PT1jJiZudWxsIT09YyYmKFk9Yz1jLnJldHVybik7Y29udGludWV9YnJlYWt9d2hpbGUoMSl9ZnVuY3Rpb24gS2soKXt2YXIgYT1uay5jdXJyZW50O25rLmN1cnJlbnQ9YWk7cmV0dXJuIG51bGw9PT1hP2FpOmF9XG5mdW5jdGlvbiB1aigpe2lmKDA9PT1UfHwzPT09VHx8Mj09PVQpVD00O251bGw9PT1SfHwwPT09KGhoJjI2ODQzNTQ1NSkmJjA9PT0ocmsmMjY4NDM1NDU1KXx8RGsoUixaKX1mdW5jdGlvbiBKayhhLGIpe3ZhciBjPUs7S3w9Mjt2YXIgZD1LaygpO2lmKFIhPT1hfHxaIT09Yil2az1udWxsLExrKGEsYik7ZG8gdHJ5e1VrKCk7YnJlYWt9Y2F0Y2goZSl7TmsoYSxlKX13aGlsZSgxKTtRZygpO0s9Yztuay5jdXJyZW50PWQ7aWYobnVsbCE9PVkpdGhyb3cgRXJyb3IocCgyNjEpKTtSPW51bGw7Wj0wO3JldHVybiBUfWZ1bmN0aW9uIFVrKCl7Zm9yKDtudWxsIT09WTspVmsoWSl9ZnVuY3Rpb24gTWsoKXtmb3IoO251bGwhPT1ZJiYhY2MoKTspVmsoWSl9ZnVuY3Rpb24gVmsoYSl7dmFyIGI9V2soYS5hbHRlcm5hdGUsYSxnaik7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iP1RrKGEpOlk9Yjtvay5jdXJyZW50PW51bGx9XG5mdW5jdGlvbiBUayhhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjMyNzY4KSl7aWYoYz1GaihjLGIsZ2opLG51bGwhPT1jKXtZPWM7cmV0dXJufX1lbHNle2M9SmooYyxiKTtpZihudWxsIT09Yyl7Yy5mbGFncyY9MzI3Njc7WT1jO3JldHVybn1pZihudWxsIT09YSlhLmZsYWdzfD0zMjc2OCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGw7ZWxzZXtUPTY7WT1udWxsO3JldHVybn19Yj1iLnNpYmxpbmc7aWYobnVsbCE9PWIpe1k9YjtyZXR1cm59WT1iPWF9d2hpbGUobnVsbCE9PWIpOzA9PT1UJiYoVD01KX1mdW5jdGlvbiBRayhhLGIsYyl7dmFyIGQ9QyxlPXBrLnRyYW5zaXRpb247dHJ5e3BrLnRyYW5zaXRpb249bnVsbCxDPTEsWGsoYSxiLGMsZCl9ZmluYWxseXtway50cmFuc2l0aW9uPWUsQz1kfXJldHVybiBudWxsfVxuZnVuY3Rpb24gWGsoYSxiLGMsZCl7ZG8gSWsoKTt3aGlsZShudWxsIT09eGspO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO2M9YS5maW5pc2hlZFdvcms7dmFyIGU9YS5maW5pc2hlZExhbmVzO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7aWYoYz09PWEuY3VycmVudCl0aHJvdyBFcnJvcihwKDE3NykpO2EuY2FsbGJhY2tOb2RlPW51bGw7YS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIGY9Yy5sYW5lc3xjLmNoaWxkTGFuZXM7QmMoYSxmKTthPT09UiYmKFk9Uj1udWxsLFo9MCk7MD09PShjLnN1YnRyZWVGbGFncyYyMDY0KSYmMD09PShjLmZsYWdzJjIwNjQpfHx3a3x8KHdrPSEwLEdrKGhjLGZ1bmN0aW9uKCl7SWsoKTtyZXR1cm4gbnVsbH0pKTtmPTAhPT0oYy5mbGFncyYxNTk5MCk7aWYoMCE9PShjLnN1YnRyZWVGbGFncyYxNTk5MCl8fGYpe2Y9cGsudHJhbnNpdGlvbjtway50cmFuc2l0aW9uPW51bGw7XG52YXIgZz1DO0M9MTt2YXIgaD1LO0t8PTQ7b2suY3VycmVudD1udWxsO1BqKGEsYyk7ZWsoYyxhKTtPZShEZik7ZGQ9ISFDZjtEZj1DZj1udWxsO2EuY3VycmVudD1jO2lrKGMsYSxlKTtkYygpO0s9aDtDPWc7cGsudHJhbnNpdGlvbj1mfWVsc2UgYS5jdXJyZW50PWM7d2smJih3az0hMSx4az1hLHlrPWUpO2Y9YS5wZW5kaW5nTGFuZXM7MD09PWYmJihTaT1udWxsKTttYyhjLnN0YXRlTm9kZSxkKTtFayhhLEIoKSk7aWYobnVsbCE9PWIpZm9yKGQ9YS5vblJlY292ZXJhYmxlRXJyb3IsYz0wO2M8Yi5sZW5ndGg7YysrKWU9YltjXSxkKGUudmFsdWUse2NvbXBvbmVudFN0YWNrOmUuc3RhY2ssZGlnZXN0OmUuZGlnZXN0fSk7aWYoUGkpdGhyb3cgUGk9ITEsYT1RaSxRaT1udWxsLGE7MCE9PSh5ayYxKSYmMCE9PWEudGFnJiZJaygpO2Y9YS5wZW5kaW5nTGFuZXM7MCE9PShmJjEpP2E9PT1Baz96aysrOih6az0wLEFrPWEpOnprPTA7amcoKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIElrKCl7aWYobnVsbCE9PXhrKXt2YXIgYT1EYyh5ayksYj1way50cmFuc2l0aW9uLGM9Qzt0cnl7cGsudHJhbnNpdGlvbj1udWxsO0M9MTY+YT8xNjphO2lmKG51bGw9PT14ayl2YXIgZD0hMTtlbHNle2E9eGs7eGs9bnVsbDt5az0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMzMSkpO3ZhciBlPUs7S3w9NDtmb3IoVj1hLmN1cnJlbnQ7bnVsbCE9PVY7KXt2YXIgZj1WLGc9Zi5jaGlsZDtpZigwIT09KFYuZmxhZ3MmMTYpKXt2YXIgaD1mLmRlbGV0aW9ucztpZihudWxsIT09aCl7Zm9yKHZhciBrPTA7azxoLmxlbmd0aDtrKyspe3ZhciBsPWhba107Zm9yKFY9bDtudWxsIT09Vjspe3ZhciBtPVY7c3dpdGNoKG0udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDgsbSxmKX12YXIgcT1tLmNoaWxkO2lmKG51bGwhPT1xKXEucmV0dXJuPW0sVj1xO2Vsc2UgZm9yKDtudWxsIT09Vjspe209Vjt2YXIgcj1tLnNpYmxpbmcseT1tLnJldHVybjtUaihtKTtpZihtPT09XG5sKXtWPW51bGw7YnJlYWt9aWYobnVsbCE9PXIpe3IucmV0dXJuPXk7Vj1yO2JyZWFrfVY9eX19fXZhciBuPWYuYWx0ZXJuYXRlO2lmKG51bGwhPT1uKXt2YXIgdD1uLmNoaWxkO2lmKG51bGwhPT10KXtuLmNoaWxkPW51bGw7ZG97dmFyIEo9dC5zaWJsaW5nO3Quc2libGluZz1udWxsO3Q9Sn13aGlsZShudWxsIT09dCl9fVY9Zn19aWYoMCE9PShmLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PWcpZy5yZXR1cm49ZixWPWc7ZWxzZSBiOmZvcig7bnVsbCE9PVY7KXtmPVY7aWYoMCE9PShmLmZsYWdzJjIwNDgpKXN3aXRjaChmLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig5LGYsZi5yZXR1cm4pfXZhciB4PWYuc2libGluZztpZihudWxsIT09eCl7eC5yZXR1cm49Zi5yZXR1cm47Vj14O2JyZWFrIGJ9Vj1mLnJldHVybn19dmFyIHc9YS5jdXJyZW50O2ZvcihWPXc7bnVsbCE9PVY7KXtnPVY7dmFyIHU9Zy5jaGlsZDtpZigwIT09KGcuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09XG51KXUucmV0dXJuPWcsVj11O2Vsc2UgYjpmb3IoZz13O251bGwhPT1WOyl7aD1WO2lmKDAhPT0oaC5mbGFncyYyMDQ4KSl0cnl7c3dpdGNoKGgudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlJqKDksaCl9fWNhdGNoKG5hKXtXKGgsaC5yZXR1cm4sbmEpfWlmKGg9PT1nKXtWPW51bGw7YnJlYWsgYn12YXIgRj1oLnNpYmxpbmc7aWYobnVsbCE9PUYpe0YucmV0dXJuPWgucmV0dXJuO1Y9RjticmVhayBifVY9aC5yZXR1cm59fUs9ZTtqZygpO2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Qb3N0Q29tbWl0RmliZXJSb290KXRyeXtsYy5vblBvc3RDb21taXRGaWJlclJvb3Qoa2MsYSl9Y2F0Y2gobmEpe31kPSEwfXJldHVybiBkfWZpbmFsbHl7Qz1jLHBrLnRyYW5zaXRpb249Yn19cmV0dXJuITF9ZnVuY3Rpb24gWWsoYSxiLGMpe2I9S2koYyxiKTtiPU9pKGEsYiwxKTthPWRoKGEsYiwxKTtiPUwoKTtudWxsIT09YSYmKEFjKGEsMSxiKSxFayhhLGIpKX1cbmZ1bmN0aW9uIFcoYSxiLGMpe2lmKDM9PT1hLnRhZylZayhhLGEsYyk7ZWxzZSBmb3IoO251bGwhPT1iOyl7aWYoMz09PWIudGFnKXtZayhiLGEsYyk7YnJlYWt9ZWxzZSBpZigxPT09Yi50YWcpe3ZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyhkKSkpe2E9S2koYyxhKTthPVJpKGIsYSwxKTtiPWRoKGIsYSwxKTthPUwoKTtudWxsIT09YiYmKEFjKGIsMSxhKSxFayhiLGEpKTticmVha319Yj1iLnJldHVybn19XG5mdW5jdGlvbiBVaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztSPT09YSYmKFomYyk9PT1jJiYoND09PVR8fDM9PT1UJiYoWiYxMzAwMjM0MjQpPT09WiYmNTAwPkIoKS1naz9MayhhLDApOnNrfD1jKTtFayhhLGIpfWZ1bmN0aW9uIFprKGEsYil7MD09PWImJigwPT09KGEubW9kZSYxKT9iPTE6KGI9c2Msc2M8PD0xLDA9PT0oc2MmMTMwMDIzNDI0KSYmKHNjPTQxOTQzMDQpKSk7dmFyIGM9TCgpO2E9WmcoYSxiKTtudWxsIT09YSYmKEFjKGEsYixjKSxFayhhLGMpKX1mdW5jdGlvbiB2aihhKXt2YXIgYj1hLm1lbW9pemVkU3RhdGUsYz0wO251bGwhPT1iJiYoYz1iLnJldHJ5TGFuZSk7WmsoYSxjKX1cbmZ1bmN0aW9uIGNrKGEsYil7dmFyIGM9MDtzd2l0Y2goYS50YWcpe2Nhc2UgMTM6dmFyIGQ9YS5zdGF0ZU5vZGU7dmFyIGU9YS5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoYz1lLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTpkPWEuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMTQpKTt9bnVsbCE9PWQmJmQuZGVsZXRlKGIpO1prKGEsYyl9dmFyIFdrO1xuV2s9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPT1hKWlmKGEubWVtb2l6ZWRQcm9wcyE9PWIucGVuZGluZ1Byb3BzfHxXZi5jdXJyZW50KVVnPSEwO2Vsc2V7aWYoMD09PShhLmxhbmVzJmMpJiYwPT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gVWc9ITEsemooYSxiLGMpO1VnPTAhPT0oYS5mbGFncyYxMzEwNzIpPyEwOiExfWVsc2UgVWc9ITEsSSYmMCE9PShiLmZsYWdzJjEwNDg1NzYpJiZ1ZyhiLG5nLGIuaW5kZXgpO2IubGFuZXM9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjp2YXIgZD1iLnR5cGU7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO3ZhciBlPVlmKGIsSC5jdXJyZW50KTtUZyhiLGMpO2U9WGgobnVsbCxiLGQsYSxlLGMpO3ZhciBmPWJpKCk7Yi5mbGFnc3w9MTtcIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Y/KGIudGFnPTEsYi5tZW1vaXplZFN0YXRlPW51bGwsYi51cGRhdGVRdWV1ZT1cbm51bGwsWmYoZCk/KGY9ITAsY2coYikpOmY9ITEsYi5tZW1vaXplZFN0YXRlPW51bGwhPT1lLnN0YXRlJiZ2b2lkIDAhPT1lLnN0YXRlP2Uuc3RhdGU6bnVsbCxhaChiKSxlLnVwZGF0ZXI9bmgsYi5zdGF0ZU5vZGU9ZSxlLl9yZWFjdEludGVybmFscz1iLHJoKGIsZCxhLGMpLGI9a2oobnVsbCxiLGQsITAsZixjKSk6KGIudGFnPTAsSSYmZiYmdmcoYiksWWkobnVsbCxiLGUsYyksYj1iLmNoaWxkKTtyZXR1cm4gYjtjYXNlIDE2OmQ9Yi5lbGVtZW50VHlwZTthOntqaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1kLl9pbml0O2Q9ZShkLl9wYXlsb2FkKTtiLnR5cGU9ZDtlPWIudGFnPSRrKGQpO2E9TGcoZCxhKTtzd2l0Y2goZSl7Y2FzZSAwOmI9ZGoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTpiPWlqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDExOmI9WmkobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTQ6Yj1haihudWxsLGIsZCxMZyhkLnR5cGUsYSksYyk7YnJlYWsgYX10aHJvdyBFcnJvcihwKDMwNixcbmQsXCJcIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksZGooYSxiLGQsZSxjKTtjYXNlIDE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksaWooYSxiLGQsZSxjKTtjYXNlIDM6YTp7bGooYik7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzODcpKTtkPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFN0YXRlO2U9Zi5lbGVtZW50O2JoKGEsYik7Z2goYixkLG51bGwsYyk7dmFyIGc9Yi5tZW1vaXplZFN0YXRlO2Q9Zy5lbGVtZW50O2lmKGYuaXNEZWh5ZHJhdGVkKWlmKGY9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6Zy5jYWNoZSxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOmcucGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfSxiLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1cbmYsYi5tZW1vaXplZFN0YXRlPWYsYi5mbGFncyYyNTYpe2U9S2koRXJyb3IocCg0MjMpKSxiKTtiPW1qKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGlmKGQhPT1lKXtlPUtpKEVycm9yKHAoNDI0KSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBmb3IoeWc9TGYoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx4Zz1iLEk9ITAsemc9bnVsbCxjPUNoKGIsbnVsbCxkLGMpLGIuY2hpbGQ9YztjOyljLmZsYWdzPWMuZmxhZ3MmLTN8NDA5NixjPWMuc2libGluZztlbHNle0lnKCk7aWYoZD09PWUpe2I9JGkoYSxiLGMpO2JyZWFrIGF9WWkoYSxiLGQsYyl9Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gS2goYiksbnVsbD09PWEmJkVnKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6bnVsbCxnPWUuY2hpbGRyZW4sRWYoZCxlKT9nPW51bGw6bnVsbCE9PWYmJkVmKGQsZikmJihiLmZsYWdzfD0zMiksXG5oaihhLGIpLFlpKGEsYixnLGMpLGIuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09YSYmRWcoYiksbnVsbDtjYXNlIDEzOnJldHVybiBwaihhLGIsYyk7Y2FzZSA0OnJldHVybiBJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGQ9Yi5wZW5kaW5nUHJvcHMsbnVsbD09PWE/Yi5jaGlsZD1CaChiLG51bGwsZCxjKTpZaShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksWmkoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcyxjKSxiLmNoaWxkO2Nhc2UgODpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMDphOntkPWIudHlwZS5fY29udGV4dDtlPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFByb3BzO1xuZz1lLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZztpZihudWxsIT09ZilpZihIZShmLnZhbHVlLGcpKXtpZihmLmNoaWxkcmVuPT09ZS5jaGlsZHJlbiYmIVdmLmN1cnJlbnQpe2I9JGkoYSxiLGMpO2JyZWFrIGF9fWVsc2UgZm9yKGY9Yi5jaGlsZCxudWxsIT09ZiYmKGYucmV0dXJuPWIpO251bGwhPT1mOyl7dmFyIGg9Zi5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWgpe2c9Zi5jaGlsZDtmb3IodmFyIGs9aC5maXJzdENvbnRleHQ7bnVsbCE9PWs7KXtpZihrLmNvbnRleHQ9PT1kKXtpZigxPT09Zi50YWcpe2s9Y2goLTEsYyYtYyk7ay50YWc9Mjt2YXIgbD1mLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1sKXtsPWwuc2hhcmVkO3ZhciBtPWwucGVuZGluZztudWxsPT09bT9rLm5leHQ9azooay5uZXh0PW0ubmV4dCxtLm5leHQ9ayk7bC5wZW5kaW5nPWt9fWYubGFuZXN8PWM7az1mLmFsdGVybmF0ZTtudWxsIT09ayYmKGsubGFuZXN8PWMpO1NnKGYucmV0dXJuLFxuYyxiKTtoLmxhbmVzfD1jO2JyZWFrfWs9ay5uZXh0fX1lbHNlIGlmKDEwPT09Zi50YWcpZz1mLnR5cGU9PT1iLnR5cGU/bnVsbDpmLmNoaWxkO2Vsc2UgaWYoMTg9PT1mLnRhZyl7Zz1mLnJldHVybjtpZihudWxsPT09Zyl0aHJvdyBFcnJvcihwKDM0MSkpO2cubGFuZXN8PWM7aD1nLmFsdGVybmF0ZTtudWxsIT09aCYmKGgubGFuZXN8PWMpO1NnKGcsYyxiKTtnPWYuc2libGluZ31lbHNlIGc9Zi5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1mO2Vsc2UgZm9yKGc9ZjtudWxsIT09Zzspe2lmKGc9PT1iKXtnPW51bGw7YnJlYWt9Zj1nLnNpYmxpbmc7aWYobnVsbCE9PWYpe2YucmV0dXJuPWcucmV0dXJuO2c9ZjticmVha31nPWcucmV0dXJufWY9Z31ZaShhLGIsZS5jaGlsZHJlbixjKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA5OnJldHVybiBlPWIudHlwZSxkPWIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLFRnKGIsYyksZT1WZyhlKSxkPWQoZSksYi5mbGFnc3w9MSxZaShhLGIsZCxjKSxcbmIuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gZD1iLnR5cGUsZT1MZyhkLGIucGVuZGluZ1Byb3BzKSxlPUxnKGQudHlwZSxlKSxhaihhLGIsZCxlLGMpO2Nhc2UgMTU6cmV0dXJuIGNqKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsYyk7Y2FzZSAxNzpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxqaihhLGIpLGIudGFnPTEsWmYoZCk/KGE9ITAsY2coYikpOmE9ITEsVGcoYixjKSxwaChiLGQsZSkscmgoYixkLGUsYyksa2oobnVsbCxiLGQsITAsYSxjKTtjYXNlIDE5OnJldHVybiB5aihhLGIsYyk7Y2FzZSAyMjpyZXR1cm4gZWooYSxiLGMpfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fTtmdW5jdGlvbiBHayhhLGIpe3JldHVybiBhYyhhLGIpfVxuZnVuY3Rpb24gYWwoYSxiLGMsZCl7dGhpcy50YWc9YTt0aGlzLmtleT1jO3RoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGw7dGhpcy5pbmRleD0wO3RoaXMucmVmPW51bGw7dGhpcy5wZW5kaW5nUHJvcHM9Yjt0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbDt0aGlzLm1vZGU9ZDt0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTA7dGhpcy5kZWxldGlvbnM9bnVsbDt0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wO3RoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gQmcoYSxiLGMsZCl7cmV0dXJuIG5ldyBhbChhLGIsYyxkKX1mdW5jdGlvbiBiaihhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfVxuZnVuY3Rpb24gJGsoYSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGJqKGEpPzE6MDtpZih2b2lkIDAhPT1hJiZudWxsIT09YSl7YT1hLiQkdHlwZW9mO2lmKGE9PT1EYSlyZXR1cm4gMTE7aWYoYT09PUdhKXJldHVybiAxNH1yZXR1cm4gMn1cbmZ1bmN0aW9uIHdoKGEsYil7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbD09PWM/KGM9QmcoYS50YWcsYixhLmtleSxhLm1vZGUpLGMuZWxlbWVudFR5cGU9YS5lbGVtZW50VHlwZSxjLnR5cGU9YS50eXBlLGMuc3RhdGVOb2RlPWEuc3RhdGVOb2RlLGMuYWx0ZXJuYXRlPWEsYS5hbHRlcm5hdGU9Yyk6KGMucGVuZGluZ1Byb3BzPWIsYy50eXBlPWEudHlwZSxjLmZsYWdzPTAsYy5zdWJ0cmVlRmxhZ3M9MCxjLmRlbGV0aW9ucz1udWxsKTtjLmZsYWdzPWEuZmxhZ3MmMTQ2ODAwNjQ7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWU7Yj1hLmRlcGVuZGVuY2llcztjLmRlcGVuZGVuY2llcz1udWxsPT09Yj9udWxsOntsYW5lczpiLmxhbmVzLGZpcnN0Q29udGV4dDpiLmZpcnN0Q29udGV4dH07XG5jLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31cbmZ1bmN0aW9uIHloKGEsYixjLGQsZSxmKXt2YXIgZz0yO2Q9YTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSliaihhKSYmKGc9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm4gQWgoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSB6YTpnPTg7ZXw9ODticmVhaztjYXNlIEFhOnJldHVybiBhPUJnKDEyLGMsYixlfDIpLGEuZWxlbWVudFR5cGU9QWEsYS5sYW5lcz1mLGE7Y2FzZSBFYTpyZXR1cm4gYT1CZygxMyxjLGIsZSksYS5lbGVtZW50VHlwZT1FYSxhLmxhbmVzPWYsYTtjYXNlIEZhOnJldHVybiBhPUJnKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPUZhLGEubGFuZXM9ZixhO2Nhc2UgSWE6cmV0dXJuIHFqKGMsZSxmLGIpO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBCYTpnPTEwO2JyZWFrIGE7Y2FzZSBDYTpnPTk7YnJlYWsgYTtjYXNlIERhOmc9MTE7XG5icmVhayBhO2Nhc2UgR2E6Zz0xNDticmVhayBhO2Nhc2UgSGE6Zz0xNjtkPW51bGw7YnJlYWsgYX10aHJvdyBFcnJvcihwKDEzMCxudWxsPT1hP2E6dHlwZW9mIGEsXCJcIikpO31iPUJnKGcsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmxhbmVzPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gQWgoYSxiLGMsZCl7YT1CZyg3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gcWooYSxiLGMsZCl7YT1CZygyMixhLGQsYik7YS5lbGVtZW50VHlwZT1JYTthLmxhbmVzPWM7YS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfTtyZXR1cm4gYX1mdW5jdGlvbiB4aChhLGIsYyl7YT1CZyg2LGEsbnVsbCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiB6aChhLGIsYyl7Yj1CZyg0LG51bGwhPT1hLmNoaWxkcmVuP2EuY2hpbGRyZW46W10sYS5rZXksYik7Yi5sYW5lcz1jO2Iuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmEuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjphLmltcGxlbWVudGF0aW9ufTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGJsKGEsYixjLGQsZSl7dGhpcy50YWc9Yjt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLmZpbmlzaGVkV29yaz10aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbDt0aGlzLnRpbWVvdXRIYW5kbGU9LTE7dGhpcy5jYWxsYmFja05vZGU9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbDt0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MDt0aGlzLmV2ZW50VGltZXM9emMoMCk7dGhpcy5leHBpcmF0aW9uVGltZXM9emMoLTEpO3RoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5maW5pc2hlZExhbmVzPXRoaXMubXV0YWJsZVJlYWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MDt0aGlzLmVudGFuZ2xlbWVudHM9emMoMCk7dGhpcy5pZGVudGlmaWVyUHJlZml4PWQ7dGhpcy5vblJlY292ZXJhYmxlRXJyb3I9ZTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9XG5udWxsfWZ1bmN0aW9uIGNsKGEsYixjLGQsZSxmLGcsaCxrKXthPW5ldyBibChhLGIsYyxoLGspOzE9PT1iPyhiPTEsITA9PT1mJiYoYnw9OCkpOmI9MDtmPUJnKDMsbnVsbCxudWxsLGIpO2EuY3VycmVudD1mO2Yuc3RhdGVOb2RlPWE7Zi5tZW1vaXplZFN0YXRlPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOmMsY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH07YWgoZik7cmV0dXJuIGF9ZnVuY3Rpb24gZGwoYSxiLGMpe3ZhciBkPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjp3YSxrZXk6bnVsbD09ZD9udWxsOlwiXCIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1cbmZ1bmN0aW9uIGVsKGEpe2lmKCFhKXJldHVybiBWZjthPWEuX3JlYWN0SW50ZXJuYWxzO2E6e2lmKFZiKGEpIT09YXx8MSE9PWEudGFnKXRocm93IEVycm9yKHAoMTcwKSk7dmFyIGI9YTtkb3tzd2l0Y2goYi50YWcpe2Nhc2UgMzpiPWIuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgYTtjYXNlIDE6aWYoWmYoYi50eXBlKSl7Yj1iLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBhfX1iPWIucmV0dXJufXdoaWxlKG51bGwhPT1iKTt0aHJvdyBFcnJvcihwKDE3MSkpO31pZigxPT09YS50YWcpe3ZhciBjPWEudHlwZTtpZihaZihjKSlyZXR1cm4gYmcoYSxjLGIpfXJldHVybiBifVxuZnVuY3Rpb24gZmwoYSxiLGMsZCxlLGYsZyxoLGspe2E9Y2woYyxkLCEwLGEsZSxmLGcsaCxrKTthLmNvbnRleHQ9ZWwobnVsbCk7Yz1hLmN1cnJlbnQ7ZD1MKCk7ZT1saChjKTtmPWNoKGQsZSk7Zi5jYWxsYmFjaz12b2lkIDAhPT1iJiZudWxsIT09Yj9iOm51bGw7ZGgoYyxmLGUpO2EuY3VycmVudC5sYW5lcz1lO0FjKGEsZSxkKTtFayhhLGQpO3JldHVybiBhfWZ1bmN0aW9uIGdsKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPUwoKSxnPWxoKGUpO2M9ZWwoYyk7bnVsbD09PWIuY29udGV4dD9iLmNvbnRleHQ9YzpiLnBlbmRpbmdDb250ZXh0PWM7Yj1jaChmLGcpO2IucGF5bG9hZD17ZWxlbWVudDphfTtkPXZvaWQgMD09PWQ/bnVsbDpkO251bGwhPT1kJiYoYi5jYWxsYmFjaz1kKTthPWRoKGUsYixnKTtudWxsIT09YSYmKG1oKGEsZSxnLGYpLGVoKGEsZSxnKSk7cmV0dXJuIGd9XG5mdW5jdGlvbiBobChhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGlsKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI/YzpifX1mdW5jdGlvbiBqbChhLGIpe2lsKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZpbChhLGIpfWZ1bmN0aW9uIGtsKCl7cmV0dXJuIG51bGx9dmFyIGxsPVwiZnVuY3Rpb25cIj09PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKGEpfTtmdW5jdGlvbiBtbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS5yZW5kZXI9bWwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCg0MDkpKTtnbChhLGIsbnVsbCxudWxsKX07bmwucHJvdG90eXBlLnVubW91bnQ9bWwucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbCE9PWEpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciBiPWEuY29udGFpbmVySW5mbztTayhmdW5jdGlvbigpe2dsKG51bGwsYSxudWxsLG51bGwpfSk7Ylt1Zl09bnVsbH19O2Z1bmN0aW9uIG5sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubmwucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPUhjKCk7YT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmEscHJpb3JpdHk6Yn07Zm9yKHZhciBjPTA7YzxRYy5sZW5ndGgmJjAhPT1iJiZiPFFjW2NdLnByaW9yaXR5O2MrKyk7UWMuc3BsaWNlKGMsMCxhKTswPT09YyYmVmMoYSl9fTtmdW5jdGlvbiBvbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSl9ZnVuY3Rpb24gcGwoYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUmJig4IT09YS5ub2RlVHlwZXx8XCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgXCIhPT1hLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIHFsKCl7fVxuZnVuY3Rpb24gcmwoYSxiLGMsZCxlKXtpZihlKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGY9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7Zi5jYWxsKGEpfX12YXIgZz1mbChiLGQsYSwwLG51bGwsITEsITEsXCJcIixxbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWc7YVt1Zl09Zy5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtTaygpO3JldHVybiBnfWZvcig7ZT1hLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChlKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGg9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoayk7aC5jYWxsKGEpfX12YXIgaz1jbChhLDAsITEsbnVsbCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1rO2FbdWZdPWsuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soZnVuY3Rpb24oKXtnbChiLGssYyxkKX0pO3JldHVybiBrfVxuZnVuY3Rpb24gc2woYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9ZjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7aC5jYWxsKGEpfX1nbChiLGcsYSxlKX1lbHNlIGc9cmwoYyxiLGEsZSxkKTtyZXR1cm4gaGwoZyl9RWM9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudGFnKXtjYXNlIDM6dmFyIGI9YS5zdGF0ZU5vZGU7aWYoYi5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgYz10YyhiLnBlbmRpbmdMYW5lcyk7MCE9PWMmJihDYyhiLGN8MSksRWsoYixCKCkpLDA9PT0oSyY2KSYmKEhqPUIoKSs1MDAsamcoKSkpfWJyZWFrO2Nhc2UgMTM6U2soZnVuY3Rpb24oKXt2YXIgYj1aZyhhLDEpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEsYyl9fSksamwoYSwxKX19O1xuRmM9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9WmcoYSwxMzQyMTc3MjgpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEzNDIxNzcyOCxjKX1qbChhLDEzNDIxNzcyOCl9fTtHYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1saChhKSxjPVpnKGEsYik7aWYobnVsbCE9PWMpe3ZhciBkPUwoKTttaChjLGEsYixkKX1qbChhLGIpfX07SGM9ZnVuY3Rpb24oKXtyZXR1cm4gQ307SWM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1DO3RyeXtyZXR1cm4gQz1hLGIoKX1maW5hbGx5e0M9Y319O1xueWI9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIFwiaW5wdXRcIjpiYihhLGMpO2I9Yy5uYW1lO2lmKFwicmFkaW9cIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK2IpKyddW3R5cGU9XCJyYWRpb1wiXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9RGIoZCk7aWYoIWUpdGhyb3cgRXJyb3IocCg5MCkpO1dhKGQpO2JiKGQsZSl9fX1icmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihhLGMpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMudmFsdWUsbnVsbCE9YiYmZmIoYSwhIWMubXVsdGlwbGUsYiwhMSl9fTtHYj1SaztIYj1TaztcbnZhciB0bD17dXNpbmdDbGllbnRFbnRyeVBvaW50OiExLEV2ZW50czpbQ2IsdWUsRGIsRWIsRmIsUmtdfSx1bD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2MsYnVuZGxlVHlwZTowLHZlcnNpb246XCIxOC4yLjBcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCJ9O1xudmFyIHZsPXtidW5kbGVUeXBlOnVsLmJ1bmRsZVR5cGUsdmVyc2lvbjp1bC52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6dWwucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzp1bC5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjp1YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9WmIoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnVsLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlfHxcbmtsLGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246XCIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDhcIn07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciB3bD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIXdsLmlzRGlzYWJsZWQmJndsLnN1cHBvcnRzRmliZXIpdHJ5e2tjPXdsLmluamVjdCh2bCksbGM9d2x9Y2F0Y2goYSl7fX1leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPXRsO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighb2woYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gZGwoYSxiLG51bGwsYyl9O2V4cG9ydHMuY3JlYXRlUm9vdD1mdW5jdGlvbihhLGIpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDI5OSkpO3ZhciBjPSExLGQ9XCJcIixlPWxsO251bGwhPT1iJiZ2b2lkIDAhPT1iJiYoITA9PT1iLnVuc3RhYmxlX3N0cmljdE1vZGUmJihjPSEwKSx2b2lkIDAhPT1iLmlkZW50aWZpZXJQcmVmaXgmJihkPWIuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yi5vblJlY292ZXJhYmxlRXJyb3ImJihlPWIub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1jbChhLDEsITEsbnVsbCxudWxsLGMsITEsZCxlKTthW3VmXT1iLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO3JldHVybiBuZXcgbWwoYil9O1xuZXhwb3J0cy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnJlbmRlcil0aHJvdyBFcnJvcihwKDE4OCkpO2E9T2JqZWN0LmtleXMoYSkuam9pbihcIixcIik7dGhyb3cgRXJyb3IocCgyNjgsYSkpO31hPVpiKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZTtyZXR1cm4gYX07ZXhwb3J0cy5mbHVzaFN5bmM9ZnVuY3Rpb24oYSl7cmV0dXJuIFNrKGEpfTtleHBvcnRzLmh5ZHJhdGU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMCxjKX07XG5leHBvcnRzLmh5ZHJhdGVSb290PWZ1bmN0aW9uKGEsYixjKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCg0MDUpKTt2YXIgZD1udWxsIT1jJiZjLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxlPSExLGY9XCJcIixnPWxsO251bGwhPT1jJiZ2b2lkIDAhPT1jJiYoITA9PT1jLnVuc3RhYmxlX3N0cmljdE1vZGUmJihlPSEwKSx2b2lkIDAhPT1jLmlkZW50aWZpZXJQcmVmaXgmJihmPWMuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yy5vblJlY292ZXJhYmxlRXJyb3ImJihnPWMub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1mbChiLG51bGwsYSwxLG51bGwhPWM/YzpudWxsLGUsITEsZixnKTthW3VmXT1iLmN1cnJlbnQ7c2YoYSk7aWYoZClmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWM9ZFthXSxlPWMuX2dldFZlcnNpb24sZT1lKGMuX3NvdXJjZSksbnVsbD09Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhP2IubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1bYyxlXTpiLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChjLFxuZSk7cmV0dXJuIG5ldyBubChiKX07ZXhwb3J0cy5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMSxjKX07ZXhwb3J0cy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGEpe2lmKCFwbChhKSl0aHJvdyBFcnJvcihwKDQwKSk7cmV0dXJuIGEuX3JlYWN0Um9vdENvbnRhaW5lcj8oU2soZnVuY3Rpb24oKXtzbChudWxsLG51bGwsYSwhMSxmdW5jdGlvbigpe2EuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsO2FbdWZdPW51bGx9KX0pLCEwKTohMX07ZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1SaztcbmV4cG9ydHMudW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXBsKGMpKXRocm93IEVycm9yKHAoMjAwKSk7aWYobnVsbD09YXx8dm9pZCAwPT09YS5fcmVhY3RJbnRlcm5hbHMpdGhyb3cgRXJyb3IocCgzOCkpO3JldHVybiBzbChhLGIsYywhMSxkKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO2Z1bmN0aW9uIGYoYSxiKXt2YXIgYz1hLmxlbmd0aDthLnB1c2goYik7YTpmb3IoOzA8Yzspe3ZhciBkPWMtMT4+PjEsZT1hW2RdO2lmKDA8ZyhlLGIpKWFbZF09YixhW2NdPWUsYz1kO2Vsc2UgYnJlYWsgYX19ZnVuY3Rpb24gaChhKXtyZXR1cm4gMD09PWEubGVuZ3RoP251bGw6YVswXX1mdW5jdGlvbiBrKGEpe2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYj1hWzBdLGM9YS5wb3AoKTtpZihjIT09Yil7YVswXT1jO2E6Zm9yKHZhciBkPTAsZT1hLmxlbmd0aCx3PWU+Pj4xO2Q8dzspe3ZhciBtPTIqKGQrMSktMSxDPWFbbV0sbj1tKzEseD1hW25dO2lmKDA+ZyhDLGMpKW48ZSYmMD5nKHgsQyk/KGFbZF09eCxhW25dPWMsZD1uKTooYVtkXT1DLGFbbV09YyxkPW0pO2Vsc2UgaWYobjxlJiYwPmcoeCxjKSlhW2RdPXgsYVtuXT1jLGQ9bjtlbHNlIGJyZWFrIGF9fXJldHVybiBifVxuZnVuY3Rpb24gZyhhLGIpe3ZhciBjPWEuc29ydEluZGV4LWIuc29ydEluZGV4O3JldHVybiAwIT09Yz9jOmEuaWQtYi5pZH1pZihcIm9iamVjdFwiPT09dHlwZW9mIHBlcmZvcm1hbmNlJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgcGVyZm9ybWFuY2Uubm93KXt2YXIgbD1wZXJmb3JtYW5jZTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBsLm5vdygpfX1lbHNle3ZhciBwPURhdGUscT1wLm5vdygpO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHAubm93KCktcX19dmFyIHI9W10sdD1bXSx1PTEsdj1udWxsLHk9Myx6PSExLEE9ITEsQj0hMSxEPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bnVsbCxFPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om51bGwsRj1cInVuZGVmaW5lZFwiIT09dHlwZW9mIHNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGU6bnVsbDtcblwidW5kZWZpbmVkXCIhPT10eXBlb2YgbmF2aWdhdG9yJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZyYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nLmJpbmQobmF2aWdhdG9yLnNjaGVkdWxpbmcpO2Z1bmN0aW9uIEcoYSl7Zm9yKHZhciBiPWgodCk7bnVsbCE9PWI7KXtpZihudWxsPT09Yi5jYWxsYmFjaylrKHQpO2Vsc2UgaWYoYi5zdGFydFRpbWU8PWEpayh0KSxiLnNvcnRJbmRleD1iLmV4cGlyYXRpb25UaW1lLGYocixiKTtlbHNlIGJyZWFrO2I9aCh0KX19ZnVuY3Rpb24gSChhKXtCPSExO0coYSk7aWYoIUEpaWYobnVsbCE9PWgocikpQT0hMCxJKEopO2Vsc2V7dmFyIGI9aCh0KTtudWxsIT09YiYmSyhILGIuc3RhcnRUaW1lLWEpfX1cbmZ1bmN0aW9uIEooYSxiKXtBPSExO0ImJihCPSExLEUoTCksTD0tMSk7ej0hMDt2YXIgYz15O3RyeXtHKGIpO2Zvcih2PWgocik7bnVsbCE9PXYmJighKHYuZXhwaXJhdGlvblRpbWU+Yil8fGEmJiFNKCkpOyl7dmFyIGQ9di5jYWxsYmFjaztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7di5jYWxsYmFjaz1udWxsO3k9di5wcmlvcml0eUxldmVsO3ZhciBlPWQodi5leHBpcmF0aW9uVGltZTw9Yik7Yj1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlP3YuY2FsbGJhY2s9ZTp2PT09aChyKSYmayhyKTtHKGIpfWVsc2UgayhyKTt2PWgocil9aWYobnVsbCE9PXYpdmFyIHc9ITA7ZWxzZXt2YXIgbT1oKHQpO251bGwhPT1tJiZLKEgsbS5zdGFydFRpbWUtYik7dz0hMX1yZXR1cm4gd31maW5hbGx5e3Y9bnVsbCx5PWMsej0hMX19dmFyIE49ITEsTz1udWxsLEw9LTEsUD01LFE9LTE7XG5mdW5jdGlvbiBNKCl7cmV0dXJuIGV4cG9ydHMudW5zdGFibGVfbm93KCktUTxQPyExOiEwfWZ1bmN0aW9uIFIoKXtpZihudWxsIT09Tyl7dmFyIGE9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtRPWE7dmFyIGI9ITA7dHJ5e2I9TyghMCxhKX1maW5hbGx5e2I/UygpOihOPSExLE89bnVsbCl9fWVsc2UgTj0hMX12YXIgUztpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgRilTPWZ1bmN0aW9uKCl7RihSKX07ZWxzZSBpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIE1lc3NhZ2VDaGFubmVsKXt2YXIgVD1uZXcgTWVzc2FnZUNoYW5uZWwsVT1ULnBvcnQyO1QucG9ydDEub25tZXNzYWdlPVI7Uz1mdW5jdGlvbigpe1UucG9zdE1lc3NhZ2UobnVsbCl9fWVsc2UgUz1mdW5jdGlvbigpe0QoUiwwKX07ZnVuY3Rpb24gSShhKXtPPWE7Tnx8KE49ITAsUygpKX1mdW5jdGlvbiBLKGEsYil7TD1EKGZ1bmN0aW9uKCl7YShleHBvcnRzLnVuc3RhYmxlX25vdygpKX0sYil9XG5leHBvcnRzLnVuc3RhYmxlX0lkbGVQcmlvcml0eT01O2V4cG9ydHMudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHk9MTtleHBvcnRzLnVuc3RhYmxlX0xvd1ByaW9yaXR5PTQ7ZXhwb3J0cy51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eT0zO2V4cG9ydHMudW5zdGFibGVfUHJvZmlsaW5nPW51bGw7ZXhwb3J0cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eT0yO2V4cG9ydHMudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7YS5jYWxsYmFjaz1udWxsfTtleHBvcnRzLnVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7QXx8enx8KEE9ITAsSShKKSl9O1xuZXhwb3J0cy51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihhKXswPmF8fDEyNTxhP2NvbnNvbGUuZXJyb3IoXCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWRcIik6UD0wPGE/TWF0aC5mbG9vcigxRTMvYSk6NX07ZXhwb3J0cy51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiB5fTtleHBvcnRzLnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGgocil9O2V4cG9ydHMudW5zdGFibGVfbmV4dD1mdW5jdGlvbihhKXtzd2l0Y2goeSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIGI9MzticmVhaztkZWZhdWx0OmI9eX12YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEoKX1maW5hbGx5e3k9Y319O2V4cG9ydHMudW5zdGFibGVfcGF1c2VFeGVjdXRpb249ZnVuY3Rpb24oKXt9O1xuZXhwb3J0cy51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPTN9dmFyIGM9eTt5PWE7dHJ5e3JldHVybiBiKCl9ZmluYWxseXt5PWN9fTtcbmV4cG9ydHMudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jPyhjPWMuZGVsYXksYz1cIm51bWJlclwiPT09dHlwZW9mIGMmJjA8Yz9kK2M6ZCk6Yz1kO3N3aXRjaChhKXtjYXNlIDE6dmFyIGU9LTE7YnJlYWs7Y2FzZSAyOmU9MjUwO2JyZWFrO2Nhc2UgNTplPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA0OmU9MUU0O2JyZWFrO2RlZmF1bHQ6ZT01RTN9ZT1jK2U7YT17aWQ6dSsrLGNhbGxiYWNrOmIscHJpb3JpdHlMZXZlbDphLHN0YXJ0VGltZTpjLGV4cGlyYXRpb25UaW1lOmUsc29ydEluZGV4Oi0xfTtjPmQ/KGEuc29ydEluZGV4PWMsZih0LGEpLG51bGw9PT1oKHIpJiZhPT09aCh0KSYmKEI/KEUoTCksTD0tMSk6Qj0hMCxLKEgsYy1kKSkpOihhLnNvcnRJbmRleD1lLGYocixhKSxBfHx6fHwoQT0hMCxJKEopKSk7cmV0dXJuIGF9O1xuZXhwb3J0cy51bnN0YWJsZV9zaG91bGRZaWVsZD1NO2V4cG9ydHMudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGEpe3ZhciBiPXk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3k9Y319fTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLyoganNoaW50IGJyb3dzZXI6IHRydWUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblxuLy8gV2UnbGwgY29weSB0aGUgcHJvcGVydGllcyBiZWxvdyBpbnRvIHRoZSBtaXJyb3IgZGl2LlxuLy8gTm90ZSB0aGF0IHNvbWUgYnJvd3NlcnMsIHN1Y2ggYXMgRmlyZWZveCwgZG8gbm90IGNvbmNhdGVuYXRlIHByb3BlcnRpZXNcbi8vIGludG8gdGhlaXIgc2hvcnRoYW5kIChlLmcuIHBhZGRpbmctdG9wLCBwYWRkaW5nLWJvdHRvbSBldGMuIC0+IHBhZGRpbmcpLFxuLy8gc28gd2UgaGF2ZSB0byBsaXN0IGV2ZXJ5IHNpbmdsZSBwcm9wZXJ0eSBleHBsaWNpdGx5LlxudmFyIHByb3BlcnRpZXMgPSBbXG4gICdkaXJlY3Rpb24nLCAgLy8gUlRMIHN1cHBvcnRcbiAgJ2JveFNpemluZycsXG4gICd3aWR0aCcsICAvLyBvbiBDaHJvbWUgYW5kIElFLCBleGNsdWRlIHRoZSBzY3JvbGxiYXIsIHNvIHRoZSBtaXJyb3IgZGl2IHdyYXBzIGV4YWN0bHkgYXMgdGhlIHRleHRhcmVhIGRvZXNcbiAgJ2hlaWdodCcsXG4gICdvdmVyZmxvd1gnLFxuICAnb3ZlcmZsb3dZJywgIC8vIGNvcHkgdGhlIHNjcm9sbGJhciBmb3IgSUVcblxuICAnYm9yZGVyVG9wV2lkdGgnLFxuICAnYm9yZGVyUmlnaHRXaWR0aCcsXG4gICdib3JkZXJCb3R0b21XaWR0aCcsXG4gICdib3JkZXJMZWZ0V2lkdGgnLFxuICAnYm9yZGVyU3R5bGUnLFxuXG4gICdwYWRkaW5nVG9wJyxcbiAgJ3BhZGRpbmdSaWdodCcsXG4gICdwYWRkaW5nQm90dG9tJyxcbiAgJ3BhZGRpbmdMZWZ0JyxcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZm9udFxuICAnZm9udFN0eWxlJyxcbiAgJ2ZvbnRWYXJpYW50JyxcbiAgJ2ZvbnRXZWlnaHQnLFxuICAnZm9udFN0cmV0Y2gnLFxuICAnZm9udFNpemUnLFxuICAnZm9udFNpemVBZGp1c3QnLFxuICAnbGluZUhlaWdodCcsXG4gICdmb250RmFtaWx5JyxcblxuICAndGV4dEFsaWduJyxcbiAgJ3RleHRUcmFuc2Zvcm0nLFxuICAndGV4dEluZGVudCcsXG4gICd0ZXh0RGVjb3JhdGlvbicsICAvLyBtaWdodCBub3QgbWFrZSBhIGRpZmZlcmVuY2UsIGJ1dCBiZXR0ZXIgYmUgc2FmZVxuXG4gICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ3dvcmRTcGFjaW5nJyxcblxuICAndGFiU2l6ZScsXG4gICdNb3pUYWJTaXplJ1xuXG5dO1xuXG52YXIgaXNCcm93c2VyID0gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKTtcbnZhciBpc0ZpcmVmb3ggPSAoaXNCcm93c2VyICYmIHdpbmRvdy5tb3pJbm5lclNjcmVlblggIT0gbnVsbCk7XG5cbmZ1bmN0aW9uIGdldENhcmV0Q29vcmRpbmF0ZXMoZWxlbWVudCwgcG9zaXRpb24sIG9wdGlvbnMpIHtcbiAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RleHRhcmVhLWNhcmV0LXBvc2l0aW9uI2dldENhcmV0Q29vcmRpbmF0ZXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGEgYnJvd3NlcicpO1xuICB9XG5cbiAgdmFyIGRlYnVnID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnIHx8IGZhbHNlO1xuICBpZiAoZGVidWcpIHtcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaW5wdXQtdGV4dGFyZWEtY2FyZXQtcG9zaXRpb24tbWlycm9yLWRpdicpO1xuICAgIGlmIChlbCkgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gIH1cblxuICAvLyBUaGUgbWlycm9yIGRpdiB3aWxsIHJlcGxpY2F0ZSB0aGUgdGV4dGFyZWEncyBzdHlsZVxuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pZCA9ICdpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2JztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuXG4gIHZhciBzdHlsZSA9IGRpdi5zdHlsZTtcbiAgdmFyIGNvbXB1dGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUgPyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSA6IGVsZW1lbnQuY3VycmVudFN0eWxlOyAgLy8gY3VycmVudFN0eWxlIGZvciBJRSA8IDlcbiAgdmFyIGlzSW5wdXQgPSBlbGVtZW50Lm5vZGVOYW1lID09PSAnSU5QVVQnO1xuXG4gIC8vIERlZmF1bHQgdGV4dGFyZWEgc3R5bGVzXG4gIHN0eWxlLndoaXRlU3BhY2UgPSAncHJlLXdyYXAnO1xuICBpZiAoIWlzSW5wdXQpXG4gICAgc3R5bGUud29yZFdyYXAgPSAnYnJlYWstd29yZCc7ICAvLyBvbmx5IGZvciB0ZXh0YXJlYS1zXG5cbiAgLy8gUG9zaXRpb24gb2ZmLXNjcmVlblxuICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7ICAvLyByZXF1aXJlZCB0byByZXR1cm4gY29vcmRpbmF0ZXMgcHJvcGVybHlcbiAgaWYgKCFkZWJ1ZylcbiAgICBzdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7ICAvLyBub3QgJ2Rpc3BsYXk6IG5vbmUnIGJlY2F1c2Ugd2Ugd2FudCByZW5kZXJpbmdcblxuICAvLyBUcmFuc2ZlciB0aGUgZWxlbWVudCdzIHByb3BlcnRpZXMgdG8gdGhlIGRpdlxuICBwcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBpZiAoaXNJbnB1dCAmJiBwcm9wID09PSAnbGluZUhlaWdodCcpIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgPGlucHV0PnMgYmVjYXVzZSB0ZXh0IGlzIHJlbmRlcmVkIGNlbnRlcmVkIGFuZCBsaW5lIGhlaWdodCBtYXkgYmUgIT0gaGVpZ2h0XG4gICAgICBzdHlsZS5saW5lSGVpZ2h0ID0gY29tcHV0ZWQuaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVtwcm9wXSA9IGNvbXB1dGVkW3Byb3BdO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzRmlyZWZveCkge1xuICAgIC8vIEZpcmVmb3ggbGllcyBhYm91dCB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgZm9yIHRleHRhcmVhczogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0Mjc1XG4gICAgaWYgKGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gcGFyc2VJbnQoY29tcHV0ZWQuaGVpZ2h0KSlcbiAgICAgIHN0eWxlLm92ZXJmbG93WSA9ICdzY3JvbGwnO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7ICAvLyBmb3IgQ2hyb21lIHRvIG5vdCByZW5kZXIgYSBzY3JvbGxiYXI7IElFIGtlZXBzIG92ZXJmbG93WSA9ICdzY3JvbGwnXG4gIH1cblxuICBkaXYudGV4dENvbnRlbnQgPSBlbGVtZW50LnZhbHVlLnN1YnN0cmluZygwLCBwb3NpdGlvbik7XG4gIC8vIFRoZSBzZWNvbmQgc3BlY2lhbCBoYW5kbGluZyBmb3IgaW5wdXQgdHlwZT1cInRleHRcIiB2cyB0ZXh0YXJlYTpcbiAgLy8gc3BhY2VzIG5lZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCBub24tYnJlYWtpbmcgc3BhY2VzIC0gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTM0MDIwMzUvMTI2OTAzN1xuICBpZiAoaXNJbnB1dClcbiAgICBkaXYudGV4dENvbnRlbnQgPSBkaXYudGV4dENvbnRlbnQucmVwbGFjZSgvXFxzL2csICdcXHUwMGEwJyk7XG5cbiAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gIC8vIFdyYXBwaW5nIG11c3QgYmUgcmVwbGljYXRlZCAqZXhhY3RseSosIGluY2x1ZGluZyB3aGVuIGEgbG9uZyB3b3JkIGdldHNcbiAgLy8gb250byB0aGUgbmV4dCBsaW5lLCB3aXRoIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBiZWZvcmUgKCM3KS5cbiAgLy8gVGhlICAqb25seSogcmVsaWFibGUgd2F5IHRvIGRvIHRoYXQgaXMgdG8gY29weSB0aGUgKmVudGlyZSogcmVzdCBvZiB0aGVcbiAgLy8gdGV4dGFyZWEncyBjb250ZW50IGludG8gdGhlIDxzcGFuPiBjcmVhdGVkIGF0IHRoZSBjYXJldCBwb3NpdGlvbi5cbiAgLy8gRm9yIGlucHV0cywganVzdCAnLicgd291bGQgYmUgZW5vdWdoLCBidXQgbm8gbmVlZCB0byBib3RoZXIuXG4gIHNwYW4udGV4dENvbnRlbnQgPSBlbGVtZW50LnZhbHVlLnN1YnN0cmluZyhwb3NpdGlvbikgfHwgJy4nOyAgLy8gfHwgYmVjYXVzZSBhIGNvbXBsZXRlbHkgZW1wdHkgZmF1eCBzcGFuIGRvZXNuJ3QgcmVuZGVyIGF0IGFsbFxuICBkaXYuYXBwZW5kQ2hpbGQoc3Bhbik7XG5cbiAgdmFyIGNvb3JkaW5hdGVzID0ge1xuICAgIHRvcDogc3Bhbi5vZmZzZXRUb3AgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyVG9wV2lkdGgnXSksXG4gICAgbGVmdDogc3Bhbi5vZmZzZXRMZWZ0ICsgcGFyc2VJbnQoY29tcHV0ZWRbJ2JvcmRlckxlZnRXaWR0aCddKSxcbiAgICBoZWlnaHQ6IHBhcnNlSW50KGNvbXB1dGVkWydsaW5lSGVpZ2h0J10pXG4gIH07XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2FhYSc7XG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuICB9XG5cbiAgcmV0dXJuIGNvb3JkaW5hdGVzO1xufVxuXG5pZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbW9kdWxlLmV4cG9ydHMgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBnZXRDYXJldENvb3JkaW5hdGVzO1xufSBlbHNlIGlmKGlzQnJvd3Nlcikge1xuICB3aW5kb3cuZ2V0Q2FyZXRDb29yZGluYXRlcyA9IGdldENhcmV0Q29vcmRpbmF0ZXM7XG59XG5cbn0oKSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTaW1pbGFyIHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlzIG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2FtZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIF9fREVWX18gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nO1xuXG52YXIgd2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChfX0RFVl9fKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAxID8gbGVuIC0gMSA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDE7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMV0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICtcbiAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9XG5cbiAgd2FybmluZyA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAyID8gbGVuIC0gMiA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDI7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMl0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgK1xuICAgICAgICAgICdtZXNzYWdlIGFyZ3VtZW50J1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIHByaW50V2FybmluZy5hcHBseShudWxsLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3YXJuaW5nO1xuIiwiaWYodHlwZW9mIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fID09PSAndW5kZWZpbmVkJykgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAndW5kZWZpbmVkJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9XG5cbm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTg5X187IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX182MzlfXzsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsInZhciBJbmZvU2VydmljZTtcblxuY2xhc3MgTW9ja3VwSW5mb1NlcnZpY2VJbXBsIHtcbiAgYXN5bmMgZ2V0U2Vzc2lvbkluZm8oKSB7XG4gICAgYXdhaXQgdGhpcy5zbGVlcCgzMDAwKTtcbiAgICB0aHJvdyB7IG1lc3NhZ2U6IFwiUGxlYXNlIGxvZyBpbiFcIiB9O1xuICB9XG5cbiAgc2xlZXAobXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKHVzZXJuYW1lKSB7XG4gICAgYXdhaXQgdGhpcy5zbGVlcCgzMDAwKTtcbiAgICBpZiAodXNlcm5hbWUgPT0gXCJlcnJvclwiKSB7XG4gICAgICB0aHJvdyB7IG1lc3NhZ2U6IFwiTG9naW4gZmFpbGVkISBBaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaCFcIiB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcmVhbG06IFwiTW9ja1JlYWxtXCIsXG4gICAgICB1c2VybmFtZTogdXNlcm5hbWUsXG4gICAgICByb2xlczogW10sXG4gICAgICBleHBpcmVzOiA2MDAwMCxcbiAgICB9O1xuICB9XG4gIGFzeW5jIGxvZ291dCgpIHtcbiAgICBhd2FpdCB0aGlzLnNsZWVwKDMwMDApO1xuICB9XG59XG5cbnRyeSB7XG4gIEluZm9TZXJ2aWNlID0gcmVxdWlyZShcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiKS5JbmZvU2VydmljZTtcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIGNvbnNvbGUubG9nKFwiUHJvdmlkaW5nIG1vY2t1cCBpbXBsZW1lbnRhdGlvbiBmb3IgSW5mb1NlcnZpY2VcIik7XG5cbiAgSW5mb1NlcnZpY2UgPSBNb2NrdXBJbmZvU2VydmljZUltcGw7XG59XG5cbmV4cG9ydCB7IEluZm9TZXJ2aWNlIH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEluZm9TZXJ2aWNlIH0gZnJvbSBcIi4uL0luZm9TZXJ2aWNlXCI7XG5cbmZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycm9yKSB7XG4gIHJldHVybiBcIkNvdWxkIG5vdCByZXRyaWV2ZSBTZXJ2ZXIgVmVyc2lvbiBJbmZvOiBcIiArIGVycm9yLm1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFNlcnZlclZlcnNpb25JbmZvKHNldFZlcnNpb24pIHtcbiAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICBzZXJ2aWNlXG4gICAgLmdldFZlcnNpb25JbmZvKClcbiAgICAudGhlbigoc2VydmVyVmVyc2lvbikgPT4gc2VydmVyVmVyc2lvbi5ub0J1aWxkKCkudG9TdHJpbmcoKSlcbiAgICAuY2F0Y2goaGFuZGxlRXJyb3IpXG4gICAgLnRoZW4oc2V0VmVyc2lvbik7XG4gIHJldHVybiBcIi4uLlwiOyAvLyBzb21lIG5pY2VyIHdhaXRpbmcgaW5mbz9cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlcnZlclZlcnNpb25JbmZvKCkge1xuICB2YXIgW3ZlcnNpb24sIHNldFZlcnNpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGlmICh2ZXJzaW9uID09PSBudWxsKSB7XG4gICAgdmVyc2lvbiA9IGdldFNlcnZlclZlcnNpb25JbmZvKHNldFZlcnNpb24pO1xuICB9XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWNvbXAtc2VydmVyLXZlcnNpb24taW5mb1wiPnt2ZXJzaW9ufTwvZGl2Pjtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuZnVuY3Rpb24gcmVhZE9ubHlQcm9wVHlwZShoYW5kbGVyLCBuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocHJvcHMsIHByb3BOYW1lKSB7XG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIXByb3BzW2hhbmRsZXJdKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoXCJZb3UgaGF2ZSBwcm92aWRlZCBhIGBcIiArIHByb3BOYW1lICsgXCJgIHByb3AgdG8gYFwiICsgbmFtZSArIFwiYCBcIiArIChcIndpdGhvdXQgYW4gYFwiICsgaGFuZGxlciArIFwiYCBoYW5kbGVyIHByb3AuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIFwiKSArIChcIklmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYFwiICsgZGVmYXVsdEtleShwcm9wTmFtZSkgKyBcImAuIFwiKSArIChcIk90aGVyd2lzZSwgc2V0IGBcIiArIGhhbmRsZXIgKyBcImAuXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmNvbnRyb2xsZWRQcm9wVHlwZXMoY29udHJvbGxlZFZhbHVlcywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHByb3BUeXBlcyA9IHt9O1xuICBPYmplY3Qua2V5cyhjb250cm9sbGVkVmFsdWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgLy8gYWRkIGRlZmF1bHQgcHJvcFR5cGVzIGZvciBmb2xrcyB0aGF0IHVzZSBydW50aW1lIGNoZWNrc1xuICAgIHByb3BUeXBlc1tkZWZhdWx0S2V5KHByb3ApXSA9IG5vb3A7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGhhbmRsZXIgPSBjb250cm9sbGVkVmFsdWVzW3Byb3BdO1xuICAgICAgISh0eXBlb2YgaGFuZGxlciA9PT0gJ3N0cmluZycgJiYgaGFuZGxlci50cmltKCkubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ1VuY29udHJvbGxhYmxlIC0gWyVzXTogdGhlIHByb3AgYCVzYCBuZWVkcyBhIHZhbGlkIGhhbmRsZXIga2V5IG5hbWUgaW4gb3JkZXIgdG8gbWFrZSBpdCB1bmNvbnRyb2xsYWJsZScsIGRpc3BsYXlOYW1lLCBwcm9wKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgICBwcm9wVHlwZXNbcHJvcF0gPSByZWFkT25seVByb3BUeXBlKGhhbmRsZXIsIGRpc3BsYXlOYW1lKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcHJvcFR5cGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvcChwcm9wcywgcHJvcCkge1xuICByZXR1cm4gcHJvcHNbcHJvcF0gIT09IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0S2V5KGtleSkge1xuICByZXR1cm4gJ2RlZmF1bHQnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cigxKTtcbn1cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY2FuQWNjZXB0UmVmKGNvbXBvbmVudCkge1xuICByZXR1cm4gISFjb21wb25lbnQgJiYgKHR5cGVvZiBjb21wb25lbnQgIT09ICdmdW5jdGlvbicgfHwgY29tcG9uZW50LnByb3RvdHlwZSAmJiBjb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KGFyZykgeyB2YXIga2V5ID0gX3RvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7IHJldHVybiB0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiID8ga2V5IDogU3RyaW5nKGtleSk7IH1cblxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKGlucHV0LCBoaW50KSB7IGlmICh0eXBlb2YgaW5wdXQgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDsgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7IHZhciByZXMgPSBwcmltLmNhbGwoaW5wdXQsIGhpbnQgfHwgXCJkZWZhdWx0XCIpOyBpZiAodHlwZW9mIHJlcyAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlczsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoaGludCA9PT0gXCJzdHJpbmdcIiA/IFN0cmluZyA6IE51bWJlcikoaW5wdXQpOyB9XG5cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIHVzZVVuY29udHJvbGxlZFByb3AocHJvcFZhbHVlLCBkZWZhdWx0VmFsdWUsIGhhbmRsZXIpIHtcbiAgdmFyIHdhc1Byb3BSZWYgPSB1c2VSZWYocHJvcFZhbHVlICE9PSB1bmRlZmluZWQpO1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShkZWZhdWx0VmFsdWUpLFxuICAgICAgc3RhdGVWYWx1ZSA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldFN0YXRlID0gX3VzZVN0YXRlWzFdO1xuXG4gIHZhciBpc1Byb3AgPSBwcm9wVmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgdmFyIHdhc1Byb3AgPSB3YXNQcm9wUmVmLmN1cnJlbnQ7XG4gIHdhc1Byb3BSZWYuY3VycmVudCA9IGlzUHJvcDtcbiAgLyoqXG4gICAqIElmIGEgcHJvcCBzd2l0Y2hlcyBmcm9tIGNvbnRyb2xsZWQgdG8gVW5jb250cm9sbGVkXG4gICAqIHJlc2V0IGl0cyB2YWx1ZSB0byB0aGUgZGVmYXVsdFZhbHVlXG4gICAqL1xuXG4gIGlmICghaXNQcm9wICYmIHdhc1Byb3AgJiYgc3RhdGVWYWx1ZSAhPT0gZGVmYXVsdFZhbHVlKSB7XG4gICAgc2V0U3RhdGUoZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBbaXNQcm9wID8gcHJvcFZhbHVlIDogc3RhdGVWYWx1ZSwgdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIpIGhhbmRsZXIuYXBwbHkodm9pZCAwLCBbdmFsdWVdLmNvbmNhdChhcmdzKSk7XG4gICAgc2V0U3RhdGUodmFsdWUpO1xuICB9LCBbaGFuZGxlcl0pXTtcbn1cblxuZXhwb3J0IHsgdXNlVW5jb250cm9sbGVkUHJvcCB9O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkKHByb3BzLCBjb25maWcpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbmZpZykucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGZpZWxkTmFtZSkge1xuICAgIHZhciBfZXh0ZW5kczI7XG5cbiAgICB2YXIgX3JlZiA9IHJlc3VsdCxcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gX3JlZltVdGlscy5kZWZhdWx0S2V5KGZpZWxkTmFtZSldLFxuICAgICAgICBwcm9wc1ZhbHVlID0gX3JlZltmaWVsZE5hbWVdLFxuICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgW1V0aWxzLmRlZmF1bHRLZXkoZmllbGROYW1lKSwgZmllbGROYW1lXS5tYXAoX3RvUHJvcGVydHlLZXkpKTtcblxuICAgIHZhciBoYW5kbGVyTmFtZSA9IGNvbmZpZ1tmaWVsZE5hbWVdO1xuXG4gICAgdmFyIF91c2VVbmNvbnRyb2xsZWRQcm9wID0gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wc1ZhbHVlLCBkZWZhdWx0VmFsdWUsIHByb3BzW2hhbmRsZXJOYW1lXSksXG4gICAgICAgIHZhbHVlID0gX3VzZVVuY29udHJvbGxlZFByb3BbMF0sXG4gICAgICAgIGhhbmRsZXIgPSBfdXNlVW5jb250cm9sbGVkUHJvcFsxXTtcblxuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgKF9leHRlbmRzMiA9IHt9LCBfZXh0ZW5kczJbZmllbGROYW1lXSA9IHZhbHVlLCBfZXh0ZW5kczJbaGFuZGxlck5hbWVdID0gaGFuZGxlciwgX2V4dGVuZHMyKSk7XG4gIH0sIHByb3BzKTtcbn0iLCJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb21taXR0ZWRSZWYgZnJvbSAnLi91c2VDb21taXR0ZWRSZWYnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICB2YXIgcmVmID0gdXNlQ29tbWl0dGVkUmVmKGZuKTtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcmVmLmN1cnJlbnQgJiYgcmVmLmN1cnJlbnQuYXBwbHkocmVmLCBhcmd1bWVudHMpO1xuICB9LCBbcmVmXSk7XG59IiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIENyZWF0ZXMgYSBgUmVmYCB3aG9zZSB2YWx1ZSBpcyB1cGRhdGVkIGluIGFuIGVmZmVjdCwgZW5zdXJpbmcgdGhlIG1vc3QgcmVjZW50XG4gKiB2YWx1ZSBpcyB0aGUgb25lIHJlbmRlcmVkIHdpdGguIEdlbmVyYWxseSBvbmx5IHJlcXVpcmVkIGZvciBDb25jdXJyZW50IG1vZGUgdXNhZ2VcbiAqIHdoZXJlIHByZXZpb3VzIHdvcmsgaW4gYHJlbmRlcigpYCBtYXkgYmUgZGlzY2FyZGVkIGJlZm9yZSBiZWluZyB1c2VkLlxuICpcbiAqIFRoaXMgaXMgc2FmZSB0byBhY2Nlc3MgaW4gYW4gZXZlbnQgaGFuZGxlci5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGBSZWZgIHZhbHVlXG4gKi9cblxuZnVuY3Rpb24gdXNlQ29tbWl0dGVkUmVmKHZhbHVlKSB7XG4gIHZhciByZWYgPSB1c2VSZWYodmFsdWUpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0sIFt2YWx1ZV0pO1xuICByZXR1cm4gcmVmO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDb21taXR0ZWRSZWY7IiwiaW1wb3J0IHsgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFRyYWNrIHdoZXRoZXIgYSBjb21wb25lbnQgaXMgY3VycmVudCBtb3VudGVkLiBHZW5lcmFsbHkgbGVzcyBwcmVmZXJhYmxlIHRoYW5cbiAqIHByb3BlcmxseSBjYW5jZWxpbmcgZWZmZWN0cyBzbyB0aGV5IGRvbid0IHJ1biBhZnRlciBhIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQsXG4gKiBidXQgaGVscGZ1bCBpbiBjYXNlcyB3aGVyZSB0aGF0IGlzbid0IGZlYXNpYmxlLCBzdWNoIGFzIGEgYFByb21pc2VgIHJlc29sdXRpb24uXG4gKlxuICogQHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGN1cnJlbnQgaXNNb3VudGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnRcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGUobnVsbClcbiAqIGNvbnN0IGlzTW91bnRlZCA9IHVzZU1vdW50ZWQoKVxuICpcbiAqIHVzZUVmZmVjdCgoKSA9PiB7XG4gKiAgIGZldGNoZGF0YSgpLnRoZW4oKG5ld0RhdGEpID0+IHtcbiAqICAgICAgaWYgKGlzTW91bnRlZCgpKSB7XG4gKiAgICAgICAgc2V0RGF0YShuZXdEYXRhKTtcbiAqICAgICAgfVxuICogICB9KVxuICogfSlcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1vdW50ZWQoKSB7XG4gIHZhciBtb3VudGVkID0gdXNlUmVmKHRydWUpO1xuICB2YXIgaXNNb3VudGVkID0gdXNlUmVmKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbW91bnRlZC5jdXJyZW50O1xuICB9KTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBtb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBtb3VudGVkLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiBpc01vdW50ZWQuY3VycmVudDtcbn0iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogU3RvcmUgdGhlIGxhc3Qgb2Ygc29tZSB2YWx1ZS4gVHJhY2tlZCB2aWEgYSBgUmVmYCBvbmx5IHVwZGF0aW5nIGl0XG4gKiBhZnRlciB0aGUgY29tcG9uZW50IHJlbmRlcnMuXG4gKlxuICogSGVscGZ1bCBpZiB5b3UgbmVlZCB0byBjb21wYXJlIGEgcHJvcCB2YWx1ZSB0byBpdCdzIHByZXZpb3VzIHZhbHVlIGR1cmluZyByZW5kZXIuXG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICogICBjb25zdCBsYXN0UHJvcHMgPSB1c2VQcmV2aW91cyhwcm9wcylcbiAqXG4gKiAgIGlmIChsYXN0UHJvcHMuZm9vICE9PSBwcm9wcy5mb28pXG4gKiAgICAgcmVzZXRWYWx1ZUZyb21Qcm9wcyhwcm9wcy5mb28pXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHRyYWNrXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlUHJldmlvdXModmFsdWUpIHtcbiAgdmFyIHJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZi5jdXJyZW50O1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xudmFyIGlzUmVhY3ROYXRpdmUgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiAvLyBAdHMtaWdub3JlXG5nbG9iYWwubmF2aWdhdG9yICYmIC8vIEB0cy1pZ25vcmVcbmdsb2JhbC5uYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJztcbnZhciBpc0RPTSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG4vKipcbiAqIElzIGB1c2VMYXlvdXRFZmZlY3RgIGluIGEgRE9NIG9yIFJlYWN0IE5hdGl2ZSBlbnZpcm9ubWVudCwgb3RoZXJ3aXNlIHJlc29sdmVzIHRvIHVzZUVmZmVjdFxuICogT25seSB1c2VmdWwgdG8gYXZvaWQgdGhlIGNvbnNvbGUgd2FybmluZy5cbiAqXG4gKiBQUkVGRVIgYHVzZUVmZmVjdGAgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VIEFSRSBET0lORy5cbiAqXG4gKiBAY2F0ZWdvcnkgZWZmZWN0c1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGlzRE9NIHx8IGlzUmVhY3ROYXRpdmUgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7IiwiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRWZmZWN0IGZyb20gJy4vdXNlSXNvbW9ycGhpY0VmZmVjdCc7XG52YXIgdGFyZ2V0TWFwID0gbmV3IFdlYWtNYXAoKTtcbnZhciByZXNpemVPYnNlcnZlcjtcblxuZnVuY3Rpb24gZ2V0UmVzaXplT2JzZXJ2ZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXR1cm4tYXNzaWduXG4gIHJldHVybiByZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyIHx8IG5ldyB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKGVudHJpZXMpIHtcbiAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICB2YXIgaGFuZGxlciA9IHRhcmdldE1hcC5nZXQoZW50cnkudGFyZ2V0KTtcbiAgICAgIGlmIChoYW5kbGVyKSBoYW5kbGVyKGVudHJ5LmNvbnRlbnRSZWN0KTtcbiAgICB9KTtcbiAgfSk7XG59XG4vKipcbiAqIEVmZmljaWVudGx5IG9ic2VydmUgc2l6ZSBjaGFuZ2VzIG9uIGFuIGVsZW1lbnQuIERlcGVuZHMgb24gdGhlIGBSZXNpemVPYnNlcnZlcmAgYXBpLFxuICogYW5kIHBvbHlmaWxscyBhcmUgbmVlZGVkIGluIG9sZGVyIGJyb3dzZXJzLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBbcmVmLCBhdHRhY2hSZWZdID0gdXNlQ2FsbGJhY2tSZWYobnVsbCk7XG4gKlxuICogY29uc3QgcmVjdCA9IHVzZVJlc2l6ZU9ic2VydmVyKHJlZik7XG4gKlxuICogcmV0dXJuIChcbiAqICA8ZGl2IHJlZj17YXR0YWNoUmVmfT5cbiAqICAgIHtKU09OLnN0cmluZ2lmeShyZWN0KX1cbiAqICA8L2Rpdj5cbiAqIClcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBET00gZWxlbWVudCB0byBvYnNlcnZlXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VSZXNpemVPYnNlcnZlcihlbGVtZW50KSB7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZShudWxsKSxcbiAgICAgIHJlY3QgPSBfdXNlU3RhdGVbMF0sXG4gICAgICBzZXRSZWN0ID0gX3VzZVN0YXRlWzFdO1xuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgZ2V0UmVzaXplT2JzZXJ2ZXIoKS5vYnNlcnZlKGVsZW1lbnQpO1xuICAgIHNldFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgdGFyZ2V0TWFwLnNldChlbGVtZW50LCBmdW5jdGlvbiAocmVjdCkge1xuICAgICAgc2V0UmVjdChyZWN0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdGFyZ2V0TWFwLmRlbGV0ZShlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbZWxlbWVudF0pO1xuICByZXR1cm4gcmVjdDtcbn0iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJhc1wiLCBcImRpc2FibGVkXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiBpc1RyaXZpYWxIcmVmKGhyZWYpIHtcbiAgcmV0dXJuICFocmVmIHx8IGhyZWYudHJpbSgpID09PSAnIyc7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQnV0dG9uUHJvcHMoe1xuICB0YWdOYW1lLFxuICBkaXNhYmxlZCxcbiAgaHJlZixcbiAgdGFyZ2V0LFxuICByZWwsXG4gIHJvbGUsXG4gIG9uQ2xpY2ssXG4gIHRhYkluZGV4ID0gMCxcbiAgdHlwZVxufSkge1xuICBpZiAoIXRhZ05hbWUpIHtcbiAgICBpZiAoaHJlZiAhPSBudWxsIHx8IHRhcmdldCAhPSBudWxsIHx8IHJlbCAhPSBudWxsKSB7XG4gICAgICB0YWdOYW1lID0gJ2EnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdOYW1lID0gJ2J1dHRvbic7XG4gICAgfVxuICB9XG4gIGNvbnN0IG1ldGEgPSB7XG4gICAgdGFnTmFtZVxuICB9O1xuICBpZiAodGFnTmFtZSA9PT0gJ2J1dHRvbicpIHtcbiAgICByZXR1cm4gW3tcbiAgICAgIHR5cGU6IHR5cGUgfHwgJ2J1dHRvbicsXG4gICAgICBkaXNhYmxlZFxuICAgIH0sIG1ldGFdO1xuICB9XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gZXZlbnQgPT4ge1xuICAgIGlmIChkaXNhYmxlZCB8fCB0YWdOYW1lID09PSAnYScgJiYgaXNUcml2aWFsSHJlZihocmVmKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DbGljayA9PSBudWxsID8gdm9pZCAwIDogb25DbGljayhldmVudCk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaGFuZGxlQ2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgaWYgKHRhZ05hbWUgPT09ICdhJykge1xuICAgIC8vIEVuc3VyZSB0aGVyZSdzIGEgaHJlZiBzbyBFbnRlciBjYW4gdHJpZ2dlciBhbmNob3IgYnV0dG9uLlxuICAgIGhyZWYgfHwgKGhyZWYgPSAnIycpO1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgaHJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFt7XG4gICAgcm9sZTogcm9sZSAhPSBudWxsID8gcm9sZSA6ICdidXR0b24nLFxuICAgIC8vIGV4cGxpY2l0bHkgdW5kZWZpbmVkIHNvIHRoYXQgaXQgb3ZlcnJpZGVzIHRoZSBwcm9wcyBkaXNhYmxlZCBpbiBhIHNwcmVhZFxuICAgIC8vIGUuZy4gPFRhZyB7Li4ucHJvcHN9IHsuLi5ob29rUHJvcHN9IC8+XG4gICAgZGlzYWJsZWQ6IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiB0YWJJbmRleCxcbiAgICBocmVmLFxuICAgIHRhcmdldDogdGFnTmFtZSA9PT0gJ2EnID8gdGFyZ2V0IDogdW5kZWZpbmVkLFxuICAgICdhcmlhLWRpc2FibGVkJzogIWRpc2FibGVkID8gdW5kZWZpbmVkIDogZGlzYWJsZWQsXG4gICAgcmVsOiB0YWdOYW1lID09PSAnYScgPyByZWwgOiB1bmRlZmluZWQsXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duXG4gIH0sIG1ldGFdO1xufVxuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgYXM6IGFzUHJvcCxcbiAgICAgIGRpc2FibGVkXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbYnV0dG9uUHJvcHMsIHtcbiAgICB0YWdOYW1lOiBDb21wb25lbnRcbiAgfV0gPSB1c2VCdXR0b25Qcm9wcyhPYmplY3QuYXNzaWduKHtcbiAgICB0YWdOYW1lOiBhc1Byb3AsXG4gICAgZGlzYWJsZWRcbiAgfSwgcHJvcHMpKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIGJ1dHRvblByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpO1xufSk7XG5CdXR0b24uZGlzcGxheU5hbWUgPSAnQnV0dG9uJztcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJvbktleURvd25cIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudCAqL1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQHJlc3RhcnQvaG9va3MnO1xuaW1wb3J0IHsgdXNlQnV0dG9uUHJvcHMgfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJpdmlhbEhyZWYoaHJlZikge1xuICByZXR1cm4gIWhyZWYgfHwgaHJlZi50cmltKCkgPT09ICcjJztcbn1cbi8qKlxuICogQW4gZ2VuZXJpYyBgPGE+YCBjb21wb25lbnQgdGhhdCBjb3ZlcnMgYSBmZXcgQTExeSBjYXNlcywgZW5zdXJpbmcgdGhhdFxuICogY2FzZXMgd2hlcmUgdGhlIGBocmVmYCBpcyBtaXNzaW5nIG9yIHRyaXZpYWwgbGlrZSBcIiNcIiBhcmUgdHJlYXRlZCBsaWtlIGJ1dHRvbnMuXG4gKi9cbmNvbnN0IEFuY2hvciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIG9uS2V5RG93blxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2J1dHRvblByb3BzXSA9IHVzZUJ1dHRvblByb3BzKE9iamVjdC5hc3NpZ24oe1xuICAgIHRhZ05hbWU6ICdhJ1xuICB9LCBwcm9wcykpO1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBidXR0b25Qcm9wcy5vbktleURvd24oZSk7XG4gICAgb25LZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbktleURvd24oZSk7XG4gIH0pO1xuICBpZiAoaXNUcml2aWFsSHJlZihwcm9wcy5ocmVmKSB8fCBwcm9wcy5yb2xlID09PSAnYnV0dG9uJykge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzLCBidXR0b25Qcm9wcywge1xuICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgcmVmOiByZWZcbiAgfSwgcHJvcHMsIHtcbiAgICBvbktleURvd246IG9uS2V5RG93blxuICB9KSk7XG59KTtcbkFuY2hvci5kaXNwbGF5TmFtZSA9ICdBbmNob3InO1xuZXhwb3J0IGRlZmF1bHQgQW5jaG9yOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQlJFQUtQT0lOVFMgPSBbJ3h4bCcsICd4bCcsICdsZycsICdtZCcsICdzbScsICd4cyddO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUlOX0JSRUFLUE9JTlQgPSAneHMnO1xuY29uc3QgVGhlbWVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICBwcmVmaXhlczoge30sXG4gIGJyZWFrcG9pbnRzOiBERUZBVUxUX0JSRUFLUE9JTlRTLFxuICBtaW5CcmVha3BvaW50OiBERUZBVUxUX01JTl9CUkVBS1BPSU5UXG59KTtcbmNvbnN0IHtcbiAgQ29uc3VtZXIsXG4gIFByb3ZpZGVyXG59ID0gVGhlbWVDb250ZXh0O1xuZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7XG4gIHByZWZpeGVzID0ge30sXG4gIGJyZWFrcG9pbnRzID0gREVGQVVMVF9CUkVBS1BPSU5UUyxcbiAgbWluQnJlYWtwb2ludCA9IERFRkFVTFRfTUlOX0JSRUFLUE9JTlQsXG4gIGRpcixcbiAgY2hpbGRyZW5cbn0pIHtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHByZWZpeGVzOiB7XG4gICAgICAuLi5wcmVmaXhlc1xuICAgIH0sXG4gICAgYnJlYWtwb2ludHMsXG4gICAgbWluQnJlYWtwb2ludCxcbiAgICBkaXJcbiAgfSksIFtwcmVmaXhlcywgYnJlYWtwb2ludHMsIG1pbkJyZWFrcG9pbnQsIGRpcl0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCb290c3RyYXBQcmVmaXgocHJlZml4LCBkZWZhdWx0UHJlZml4KSB7XG4gIGNvbnN0IHtcbiAgICBwcmVmaXhlc1xuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gcHJlZml4IHx8IHByZWZpeGVzW2RlZmF1bHRQcmVmaXhdIHx8IGRlZmF1bHRQcmVmaXg7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQm9vdHN0cmFwQnJlYWtwb2ludHMoKSB7XG4gIGNvbnN0IHtcbiAgICBicmVha3BvaW50c1xuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gYnJlYWtwb2ludHM7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQm9vdHN0cmFwTWluQnJlYWtwb2ludCgpIHtcbiAgY29uc3Qge1xuICAgIG1pbkJyZWFrcG9pbnRcbiAgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgcmV0dXJuIG1pbkJyZWFrcG9pbnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlSXNSVEwoKSB7XG4gIGNvbnN0IHtcbiAgICBkaXJcbiAgfSA9IHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgcmV0dXJuIGRpciA9PT0gJ3J0bCc7XG59XG5mdW5jdGlvbiBjcmVhdGVCb290c3RyYXBDb21wb25lbnQoQ29tcG9uZW50LCBvcHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIG9wdHMgPSB7XG4gICAgcHJlZml4OiBvcHRzXG4gIH07XG4gIGNvbnN0IGlzQ2xhc3N5ID0gQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ7XG4gIC8vIElmIGl0J3MgYSBmdW5jdGlvbmFsIGNvbXBvbmVudCBtYWtlIHN1cmUgd2UgZG9uJ3QgYnJlYWsgaXQgd2l0aCBhIHJlZlxuICBjb25zdCB7XG4gICAgcHJlZml4LFxuICAgIGZvcndhcmRSZWZBcyA9IGlzQ2xhc3N5ID8gJ3JlZicgOiAnaW5uZXJSZWYnXG4gIH0gPSBvcHRzO1xuICBjb25zdCBXcmFwcGVkID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBwcm9wc1tmb3J3YXJkUmVmQXNdID0gcmVmO1xuICAgIGNvbnN0IGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KHByb3BzLmJzUHJlZml4LCBwcmVmaXgpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgYnNQcmVmaXg6IGJzUHJlZml4XG4gICAgfSk7XG4gIH0pO1xuICBXcmFwcGVkLmRpc3BsYXlOYW1lID0gYEJvb3RzdHJhcCgke0NvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZX0pYDtcbiAgcmV0dXJuIFdyYXBwZWQ7XG59XG5leHBvcnQgeyBjcmVhdGVCb290c3RyYXBDb21wb25lbnQsIENvbnN1bWVyIGFzIFRoZW1lQ29uc3VtZXIgfTtcbmV4cG9ydCBkZWZhdWx0IFRoZW1lUHJvdmlkZXI7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpOyIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9pbmhlcml0c0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyB0aW1lb3V0c1NoYXBlIH0gZnJvbSAnLi91dGlscy9Qcm9wVHlwZXMnO1xuaW1wb3J0IFRyYW5zaXRpb25Hcm91cENvbnRleHQgZnJvbSAnLi9UcmFuc2l0aW9uR3JvdXBDb250ZXh0JztcbmltcG9ydCB7IGZvcmNlUmVmbG93IH0gZnJvbSAnLi91dGlscy9yZWZsb3cnO1xuZXhwb3J0IHZhciBVTk1PVU5URUQgPSAndW5tb3VudGVkJztcbmV4cG9ydCB2YXIgRVhJVEVEID0gJ2V4aXRlZCc7XG5leHBvcnQgdmFyIEVOVEVSSU5HID0gJ2VudGVyaW5nJztcbmV4cG9ydCB2YXIgRU5URVJFRCA9ICdlbnRlcmVkJztcbmV4cG9ydCB2YXIgRVhJVElORyA9ICdleGl0aW5nJztcbi8qKlxuICogVGhlIFRyYW5zaXRpb24gY29tcG9uZW50IGxldHMgeW91IGRlc2NyaWJlIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBjb21wb25lbnRcbiAqIHN0YXRlIHRvIGFub3RoZXIgX292ZXIgdGltZV8gd2l0aCBhIHNpbXBsZSBkZWNsYXJhdGl2ZSBBUEkuIE1vc3QgY29tbW9ubHlcbiAqIGl0J3MgdXNlZCB0byBhbmltYXRlIHRoZSBtb3VudGluZyBhbmQgdW5tb3VudGluZyBvZiBhIGNvbXBvbmVudCwgYnV0IGNhbiBhbHNvXG4gKiBiZSB1c2VkIHRvIGRlc2NyaWJlIGluLXBsYWNlIHRyYW5zaXRpb24gc3RhdGVzIGFzIHdlbGwuXG4gKlxuICogLS0tXG4gKlxuICogKipOb3RlKio6IGBUcmFuc2l0aW9uYCBpcyBhIHBsYXRmb3JtLWFnbm9zdGljIGJhc2UgY29tcG9uZW50LiBJZiB5b3UncmUgdXNpbmdcbiAqIHRyYW5zaXRpb25zIGluIENTUywgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNlXG4gKiBbYENTU1RyYW5zaXRpb25gXShodHRwczovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Nzcy10cmFuc2l0aW9uKVxuICogaW5zdGVhZC4gSXQgaW5oZXJpdHMgYWxsIHRoZSBmZWF0dXJlcyBvZiBgVHJhbnNpdGlvbmAsIGJ1dCBjb250YWluc1xuICogYWRkaXRpb25hbCBmZWF0dXJlcyBuZWNlc3NhcnkgdG8gcGxheSBuaWNlIHdpdGggQ1NTIHRyYW5zaXRpb25zIChoZW5jZSB0aGVcbiAqIG5hbWUgb2YgdGhlIGNvbXBvbmVudCkuXG4gKlxuICogLS0tXG4gKlxuICogQnkgZGVmYXVsdCB0aGUgYFRyYW5zaXRpb25gIGNvbXBvbmVudCBkb2VzIG5vdCBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlXG4gKiBjb21wb25lbnQgaXQgcmVuZGVycywgaXQgb25seSB0cmFja3MgXCJlbnRlclwiIGFuZCBcImV4aXRcIiBzdGF0ZXMgZm9yIHRoZVxuICogY29tcG9uZW50cy4gSXQncyB1cCB0byB5b3UgdG8gZ2l2ZSBtZWFuaW5nIGFuZCBlZmZlY3QgdG8gdGhvc2Ugc3RhdGVzLiBGb3JcbiAqIGV4YW1wbGUgd2UgY2FuIGFkZCBzdHlsZXMgdG8gYSBjb21wb25lbnQgd2hlbiBpdCBlbnRlcnMgb3IgZXhpdHM6XG4gKlxuICogYGBganN4XG4gKiBpbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG4gKlxuICogY29uc3QgZHVyYXRpb24gPSAzMDA7XG4gKlxuICogY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICogICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke2R1cmF0aW9ufW1zIGVhc2UtaW4tb3V0YCxcbiAqICAgb3BhY2l0eTogMCxcbiAqIH1cbiAqXG4gKiBjb25zdCB0cmFuc2l0aW9uU3R5bGVzID0ge1xuICogICBlbnRlcmluZzogeyBvcGFjaXR5OiAxIH0sXG4gKiAgIGVudGVyZWQ6ICB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZXhpdGluZzogIHsgb3BhY2l0eTogMCB9LFxuICogICBleGl0ZWQ6ICB7IG9wYWNpdHk6IDAgfSxcbiAqIH07XG4gKlxuICogY29uc3QgRmFkZSA9ICh7IGluOiBpblByb3AgfSkgPT4gKFxuICogICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXtkdXJhdGlvbn0+XG4gKiAgICAge3N0YXRlID0+IChcbiAqICAgICAgIDxkaXYgc3R5bGU9e3tcbiAqICAgICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICogICAgICAgICAuLi50cmFuc2l0aW9uU3R5bGVzW3N0YXRlXVxuICogICAgICAgfX0+XG4gKiAgICAgICAgIEknbSBhIGZhZGUgVHJhbnNpdGlvbiFcbiAqICAgICAgIDwvZGl2PlxuICogICAgICl9XG4gKiAgIDwvVHJhbnNpdGlvbj5cbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBUaGVyZSBhcmUgNCBtYWluIHN0YXRlcyBhIFRyYW5zaXRpb24gY2FuIGJlIGluOlxuICogIC0gYCdlbnRlcmluZydgXG4gKiAgLSBgJ2VudGVyZWQnYFxuICogIC0gYCdleGl0aW5nJ2BcbiAqICAtIGAnZXhpdGVkJ2BcbiAqXG4gKiBUcmFuc2l0aW9uIHN0YXRlIGlzIHRvZ2dsZWQgdmlhIHRoZSBgaW5gIHByb3AuIFdoZW4gYHRydWVgIHRoZSBjb21wb25lbnRcbiAqIGJlZ2lucyB0aGUgXCJFbnRlclwiIHN0YWdlLiBEdXJpbmcgdGhpcyBzdGFnZSwgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IGZyb21cbiAqIGl0cyBjdXJyZW50IHRyYW5zaXRpb24gc3RhdGUsIHRvIGAnZW50ZXJpbmcnYCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZVxuICogdHJhbnNpdGlvbiBhbmQgdGhlbiB0byB0aGUgYCdlbnRlcmVkJ2Agc3RhZ2Ugb25jZSBpdCdzIGNvbXBsZXRlLiBMZXQncyB0YWtlXG4gKiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgKHdlJ2xsIHVzZSB0aGVcbiAqIFt1c2VTdGF0ZV0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLXJlZmVyZW5jZS5odG1sI3VzZXN0YXRlKSBob29rKTpcbiAqXG4gKiBgYGBqc3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgW2luUHJvcCwgc2V0SW5Qcm9wXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPFRyYW5zaXRpb24gaW49e2luUHJvcH0gdGltZW91dD17NTAwfT5cbiAqICAgICAgICAge3N0YXRlID0+IChcbiAqICAgICAgICAgICAvLyAuLi5cbiAqICAgICAgICAgKX1cbiAqICAgICAgIDwvVHJhbnNpdGlvbj5cbiAqICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gc2V0SW5Qcm9wKHRydWUpfT5cbiAqICAgICAgICAgQ2xpY2sgdG8gRW50ZXJcbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogV2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IHRvIHRoZSBgJ2VudGVyaW5nJ2Agc3RhdGVcbiAqIGFuZCBzdGF5IHRoZXJlIGZvciA1MDBtcyAodGhlIHZhbHVlIG9mIGB0aW1lb3V0YCkgYmVmb3JlIGl0IGZpbmFsbHkgc3dpdGNoZXNcbiAqIHRvIGAnZW50ZXJlZCdgLlxuICpcbiAqIFdoZW4gYGluYCBpcyBgZmFsc2VgIHRoZSBzYW1lIHRoaW5nIGhhcHBlbnMgZXhjZXB0IHRoZSBzdGF0ZSBtb3ZlcyBmcm9tXG4gKiBgJ2V4aXRpbmcnYCB0byBgJ2V4aXRlZCdgLlxuICovXG5cbnZhciBUcmFuc2l0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFRyYW5zaXRpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb24ocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICB2YXIgcGFyZW50R3JvdXAgPSBjb250ZXh0OyAvLyBJbiB0aGUgY29udGV4dCBvZiBhIFRyYW5zaXRpb25Hcm91cCBhbGwgZW50ZXJzIGFyZSByZWFsbHkgYXBwZWFyc1xuXG4gICAgdmFyIGFwcGVhciA9IHBhcmVudEdyb3VwICYmICFwYXJlbnRHcm91cC5pc01vdW50aW5nID8gcHJvcHMuZW50ZXIgOiBwcm9wcy5hcHBlYXI7XG4gICAgdmFyIGluaXRpYWxTdGF0dXM7XG4gICAgX3RoaXMuYXBwZWFyU3RhdHVzID0gbnVsbDtcblxuICAgIGlmIChwcm9wcy5pbikge1xuICAgICAgaWYgKGFwcGVhcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gRVhJVEVEO1xuICAgICAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBFTlRFUklORztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFTlRFUkVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvcHMudW5tb3VudE9uRXhpdCB8fCBwcm9wcy5tb3VudE9uRW50ZXIpIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IFVOTU9VTlRFRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBzdGF0dXM6IGluaXRpYWxTdGF0dXNcbiAgICB9O1xuICAgIF90aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgVHJhbnNpdGlvbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgcHJldlN0YXRlKSB7XG4gICAgdmFyIG5leHRJbiA9IF9yZWYuaW47XG5cbiAgICBpZiAobmV4dEluICYmIHByZXZTdGF0ZS5zdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzKSB7XG4gIC8vICAgbGV0IG5leHRTdGF0dXMgPSBudWxsXG4gIC8vICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAvLyAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHRoaXMuc3RhdGVcbiAgLy8gICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBpZiAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVOVEVSRUQpIHtcbiAgLy8gICAgICAgICBuZXh0U3RhdHVzID0gRVhJVElOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB7IG5leHRTdGF0dXMgfVxuICAvLyB9XG4gIDtcblxuICB2YXIgX3Byb3RvID0gVHJhbnNpdGlvbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0dXModHJ1ZSwgdGhpcy5hcHBlYXJTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgdmFyIG5leHRTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAgICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5pbikge1xuICAgICAgICBpZiAoc3RhdHVzICE9PSBFTlRFUklORyAmJiBzdGF0dXMgIT09IEVOVEVSRUQpIHtcbiAgICAgICAgICBuZXh0U3RhdHVzID0gRU5URVJJTkc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTdGF0dXMoZmFsc2UsIG5leHRTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG4gIH07XG5cbiAgX3Byb3RvLmdldFRpbWVvdXRzID0gZnVuY3Rpb24gZ2V0VGltZW91dHMoKSB7XG4gICAgdmFyIHRpbWVvdXQgPSB0aGlzLnByb3BzLnRpbWVvdXQ7XG4gICAgdmFyIGV4aXQsIGVudGVyLCBhcHBlYXI7XG4gICAgZXhpdCA9IGVudGVyID0gYXBwZWFyID0gdGltZW91dDtcblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwgJiYgdHlwZW9mIHRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICBleGl0ID0gdGltZW91dC5leGl0O1xuICAgICAgZW50ZXIgPSB0aW1lb3V0LmVudGVyOyAvLyBUT0RPOiByZW1vdmUgZmFsbGJhY2sgZm9yIG5leHQgbWFqb3JcblxuICAgICAgYXBwZWFyID0gdGltZW91dC5hcHBlYXIgIT09IHVuZGVmaW5lZCA/IHRpbWVvdXQuYXBwZWFyIDogZW50ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4aXQ6IGV4aXQsXG4gICAgICBlbnRlcjogZW50ZXIsXG4gICAgICBhcHBlYXI6IGFwcGVhclxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvLnVwZGF0ZVN0YXR1cyA9IGZ1bmN0aW9uIHVwZGF0ZVN0YXR1cyhtb3VudGluZywgbmV4dFN0YXR1cykge1xuICAgIGlmIChtb3VudGluZyA9PT0gdm9pZCAwKSB7XG4gICAgICBtb3VudGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZXh0U3RhdHVzICE9PSBudWxsKSB7XG4gICAgICAvLyBuZXh0U3RhdHVzIHdpbGwgYWx3YXlzIGJlIEVOVEVSSU5HIG9yIEVYSVRJTkcuXG4gICAgICB0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO1xuXG4gICAgICBpZiAobmV4dFN0YXR1cyA9PT0gRU5URVJJTkcpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCB8fCB0aGlzLnByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICAgIHZhciBub2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdGhpcy5wcm9wcy5ub2RlUmVmLmN1cnJlbnQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9wdWxsLzc0OVxuICAgICAgICAgIC8vIFdpdGggdW5tb3VudE9uRXhpdCBvciBtb3VudE9uRW50ZXIsIHRoZSBlbnRlciBhbmltYXRpb24gc2hvdWxkIGhhcHBlbiBhdCB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIGBleGl0ZWRgIGFuZCBgZW50ZXJpbmdgLlxuICAgICAgICAgIC8vIFRvIG1ha2UgdGhlIGFuaW1hdGlvbiBoYXBwZW4sICB3ZSBoYXZlIHRvIHNlcGFyYXRlIGVhY2ggcmVuZGVyaW5nIGFuZCBhdm9pZCBiZWluZyBwcm9jZXNzZWQgYXMgYmF0Y2hlZC5cblxuICAgICAgICAgIGlmIChub2RlKSBmb3JjZVJlZmxvdyhub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGVyZm9ybUVudGVyKG1vdW50aW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVyZm9ybUV4aXQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCAmJiB0aGlzLnN0YXRlLnN0YXR1cyA9PT0gRVhJVEVEKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBVTk1PVU5URURcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gcGVyZm9ybUVudGVyKG1vdW50aW5nKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgZW50ZXIgPSB0aGlzLnByb3BzLmVudGVyO1xuICAgIHZhciBhcHBlYXJpbmcgPSB0aGlzLmNvbnRleHQgPyB0aGlzLmNvbnRleHQuaXNNb3VudGluZyA6IG1vdW50aW5nO1xuXG4gICAgdmFyIF9yZWYyID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gW2FwcGVhcmluZ10gOiBbUmVhY3RET00uZmluZERPTU5vZGUodGhpcyksIGFwcGVhcmluZ10sXG4gICAgICAgIG1heWJlTm9kZSA9IF9yZWYyWzBdLFxuICAgICAgICBtYXliZUFwcGVhcmluZyA9IF9yZWYyWzFdO1xuXG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBlbnRlclRpbWVvdXQgPSBhcHBlYXJpbmcgPyB0aW1lb3V0cy5hcHBlYXIgOiB0aW1lb3V0cy5lbnRlcjsgLy8gbm8gZW50ZXIgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRU5URVJFRFxuICAgIC8vIGlmIHdlIGFyZSBtb3VudGluZyBhbmQgcnVubmluZyB0aGlzIGl0IG1lYW5zIGFwcGVhciBfbXVzdF8gYmUgc2V0XG5cbiAgICBpZiAoIW1vdW50aW5nICYmICFlbnRlciB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5wcm9wcy5vbkVudGVyZWQobWF5YmVOb2RlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMub25FbnRlcihtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVOVEVSSU5HXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJpbmcobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG5cbiAgICAgIF90aGlzMi5vblRyYW5zaXRpb25FbmQoZW50ZXJUaW1lb3V0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRU5URVJFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUV4aXQgPSBmdW5jdGlvbiBwZXJmb3JtRXhpdCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHZhciBleGl0ID0gdGhpcy5wcm9wcy5leGl0O1xuICAgIHZhciB0aW1lb3V0cyA9IHRoaXMuZ2V0VGltZW91dHMoKTtcbiAgICB2YXIgbWF5YmVOb2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdW5kZWZpbmVkIDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7IC8vIG5vIGV4aXQgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRVhJVEVEXG5cbiAgICBpZiAoIWV4aXQgfHwgY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkV4aXQobWF5YmVOb2RlKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVYSVRJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczMucHJvcHMub25FeGl0aW5nKG1heWJlTm9kZSk7XG5cbiAgICAgIF90aGlzMy5vblRyYW5zaXRpb25FbmQodGltZW91dHMuZXhpdCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLmNhbmNlbE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIGNhbmNlbE5leHRDYWxsYmFjaygpIHtcbiAgICBpZiAodGhpcy5uZXh0Q2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCgpO1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uc2FmZVNldFN0YXRlID0gZnVuY3Rpb24gc2FmZVNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAvLyBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCB0aGVyZSBhcmUgd2VpcmQgcmFjZSBjb25kaXRpb25zIHdpdGhcbiAgICAvLyBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIHVubW91bnRpbmcgaW4gdGVzdGluZywgc28gYWx3YXlzIG1ha2Ugc3VyZSB0aGF0XG4gICAgLy8gd2UgY2FuIGNhbmNlbCBhbnkgcGVuZGluZyBzZXRTdGF0ZSBjYWxsYmFja3MgYWZ0ZXIgd2UgdW5tb3VudC5cbiAgICBjYWxsYmFjayA9IHRoaXMuc2V0TmV4dENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spO1xuICB9O1xuXG4gIF9wcm90by5zZXROZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiBzZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciBhY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIF90aGlzNC5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s7XG4gIH07XG5cbiAgX3Byb3RvLm9uVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0LCBoYW5kbGVyKSB7XG4gICAgdGhpcy5zZXROZXh0Q2FsbGJhY2soaGFuZGxlcik7XG4gICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgIHZhciBkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyID0gdGltZW91dCA9PSBudWxsICYmICF0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyO1xuXG4gICAgaWYgKCFub2RlIHx8IGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKSB7XG4gICAgICB2YXIgX3JlZjMgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbdGhpcy5uZXh0Q2FsbGJhY2tdIDogW25vZGUsIHRoaXMubmV4dENhbGxiYWNrXSxcbiAgICAgICAgICBtYXliZU5vZGUgPSBfcmVmM1swXSxcbiAgICAgICAgICBtYXliZU5leHRDYWxsYmFjayA9IF9yZWYzWzFdO1xuXG4gICAgICB0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKG1heWJlTm9kZSwgbWF5YmVOZXh0Q2FsbGJhY2spO1xuICAgIH1cblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIHRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBzdGF0dXMgPSB0aGlzLnN0YXRlLnN0YXR1cztcblxuICAgIGlmIChzdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgX2luID0gX3RoaXMkcHJvcHMuaW4sXG4gICAgICAgIF9tb3VudE9uRW50ZXIgPSBfdGhpcyRwcm9wcy5tb3VudE9uRW50ZXIsXG4gICAgICAgIF91bm1vdW50T25FeGl0ID0gX3RoaXMkcHJvcHMudW5tb3VudE9uRXhpdCxcbiAgICAgICAgX2FwcGVhciA9IF90aGlzJHByb3BzLmFwcGVhcixcbiAgICAgICAgX2VudGVyID0gX3RoaXMkcHJvcHMuZW50ZXIsXG4gICAgICAgIF9leGl0ID0gX3RoaXMkcHJvcHMuZXhpdCxcbiAgICAgICAgX3RpbWVvdXQgPSBfdGhpcyRwcm9wcy50aW1lb3V0LFxuICAgICAgICBfYWRkRW5kTGlzdGVuZXIgPSBfdGhpcyRwcm9wcy5hZGRFbmRMaXN0ZW5lcixcbiAgICAgICAgX29uRW50ZXIgPSBfdGhpcyRwcm9wcy5vbkVudGVyLFxuICAgICAgICBfb25FbnRlcmluZyA9IF90aGlzJHByb3BzLm9uRW50ZXJpbmcsXG4gICAgICAgIF9vbkVudGVyZWQgPSBfdGhpcyRwcm9wcy5vbkVudGVyZWQsXG4gICAgICAgIF9vbkV4aXQgPSBfdGhpcyRwcm9wcy5vbkV4aXQsXG4gICAgICAgIF9vbkV4aXRpbmcgPSBfdGhpcyRwcm9wcy5vbkV4aXRpbmcsXG4gICAgICAgIF9vbkV4aXRlZCA9IF90aGlzJHByb3BzLm9uRXhpdGVkLFxuICAgICAgICBfbm9kZVJlZiA9IF90aGlzJHByb3BzLm5vZGVSZWYsXG4gICAgICAgIGNoaWxkUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJpblwiLCBcIm1vdW50T25FbnRlclwiLCBcInVubW91bnRPbkV4aXRcIiwgXCJhcHBlYXJcIiwgXCJlbnRlclwiLCBcImV4aXRcIiwgXCJ0aW1lb3V0XCIsIFwiYWRkRW5kTGlzdGVuZXJcIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRW50ZXJlZFwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGluZ1wiLCBcIm9uRXhpdGVkXCIsIFwibm9kZVJlZlwiXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLyojX19QVVJFX18qL1xuICAgICAgLy8gYWxsb3dzIGZvciBuZXN0ZWQgVHJhbnNpdGlvbnNcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSwgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oc3RhdHVzLCBjaGlsZFByb3BzKSA6IFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwgY2hpbGRQcm9wcykpXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNpdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuVHJhbnNpdGlvbi5jb250ZXh0VHlwZSA9IFRyYW5zaXRpb25Hcm91cENvbnRleHQ7XG5UcmFuc2l0aW9uLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgLyoqXG4gICAqIEEgUmVhY3QgcmVmZXJlbmNlIHRvIERPTSBlbGVtZW50IHRoYXQgbmVlZCB0byB0cmFuc2l0aW9uOlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTExMjcxMzAvNDY3MTkzMlxuICAgKlxuICAgKiAgIC0gV2hlbiBgbm9kZVJlZmAgcHJvcCBpcyB1c2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZCB0byBjYWxsYmFjayBmdW5jdGlvbnNcbiAgICogICAgICAoZS5nLiBgb25FbnRlcmApIGJlY2F1c2UgdXNlciBhbHJlYWR5IGhhcyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBub2RlLlxuICAgKiAgIC0gV2hlbiBjaGFuZ2luZyBga2V5YCBwcm9wIG9mIGBUcmFuc2l0aW9uYCBpbiBhIGBUcmFuc2l0aW9uR3JvdXBgIGEgbmV3XG4gICAqICAgICBgbm9kZVJlZmAgbmVlZCB0byBiZSBwcm92aWRlZCB0byBgVHJhbnNpdGlvbmAgd2l0aCBjaGFuZ2VkIGBrZXlgIHByb3BcbiAgICogICAgIChzZWVcbiAgICogICAgIFt0ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qc10oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9ibG9iLzEzNDM1Zjg5N2IzYWI3MWY2ZTE5ZDcyNGYxNDU1OTZmNTkxMDU4MWMvdGVzdC9DU1NUcmFuc2l0aW9uLXRlc3QuanMjTDM2Mi1MNDM3KSkuXG4gICAqL1xuICBub2RlUmVmOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbnQ6IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyA/IFByb3BUeXBlcy5hbnkgOiBmdW5jdGlvbiAocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tleV07XG4gICAgICByZXR1cm4gUHJvcFR5cGVzLmluc3RhbmNlT2YodmFsdWUgJiYgJ293bmVyRG9jdW1lbnQnIGluIHZhbHVlID8gdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5FbGVtZW50IDogRWxlbWVudCkocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCk7XG4gICAgfVxuICB9KSxcblxuICAvKipcbiAgICogQSBgZnVuY3Rpb25gIGNoaWxkIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBSZWFjdCBlbGVtZW50LiBUaGlzIGZ1bmN0aW9uIGlzXG4gICAqIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IHRyYW5zaXRpb24gc3RhdHVzIChgJ2VudGVyaW5nJ2AsIGAnZW50ZXJlZCdgLFxuICAgKiBgJ2V4aXRpbmcnYCwgYCdleGl0ZWQnYCksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFwcGx5IGNvbnRleHRcbiAgICogc3BlY2lmaWMgcHJvcHMgdG8gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiA8VHJhbnNpdGlvbiBpbj17dGhpcy5zdGF0ZS5pbn0gdGltZW91dD17MTUwfT5cbiAgICogICB7c3RhdGUgPT4gKFxuICAgKiAgICAgPE15Q29tcG9uZW50IGNsYXNzTmFtZT17YGZhZGUgZmFkZS0ke3N0YXRlfWB9IC8+XG4gICAqICAgKX1cbiAgICogPC9UcmFuc2l0aW9uPlxuICAgKiBgYGBcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMuZWxlbWVudC5pc1JlcXVpcmVkXSkuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29tcG9uZW50OyB0cmlnZ2VycyB0aGUgZW50ZXIgb3IgZXhpdCBzdGF0ZXNcbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGlzIG1vdW50ZWQgaW1tZWRpYXRlbHkgYWxvbmcgd2l0aFxuICAgKiB0aGUgcGFyZW50IGBUcmFuc2l0aW9uYCBjb21wb25lbnQuIElmIHlvdSB3YW50IHRvIFwibGF6eSBtb3VudFwiIHRoZSBjb21wb25lbnQgb24gdGhlXG4gICAqIGZpcnN0IGBpbj17dHJ1ZX1gIHlvdSBjYW4gc2V0IGBtb3VudE9uRW50ZXJgLiBBZnRlciB0aGUgZmlyc3QgZW50ZXIgdHJhbnNpdGlvbiB0aGUgY29tcG9uZW50IHdpbGwgc3RheVxuICAgKiBtb3VudGVkLCBldmVuIG9uIFwiZXhpdGVkXCIsIHVubGVzcyB5b3UgYWxzbyBzcGVjaWZ5IGB1bm1vdW50T25FeGl0YC5cbiAgICovXG4gIG1vdW50T25FbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBzdGF5cyBtb3VudGVkIGFmdGVyIGl0IHJlYWNoZXMgdGhlIGAnZXhpdGVkJ2Agc3RhdGUuXG4gICAqIFNldCBgdW5tb3VudE9uRXhpdGAgaWYgeW91J2QgcHJlZmVyIHRvIHVubW91bnQgdGhlIGNvbXBvbmVudCBhZnRlciBpdCBmaW5pc2hlcyBleGl0aW5nLlxuICAgKi9cbiAgdW5tb3VudE9uRXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBkb2VzIG5vdCBwZXJmb3JtIHRoZSBlbnRlciB0cmFuc2l0aW9uIHdoZW5cbiAgICogaXQgZmlyc3QgbW91bnRzLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBgaW5gLiBJZiB5b3Ugd2FudCB0aGlzXG4gICAqIGJlaGF2aW9yLCBzZXQgYm90aCBgYXBwZWFyYCBhbmQgYGluYCB0byBgdHJ1ZWAuXG4gICAqXG4gICAqID4gKipOb3RlKio6IHRoZXJlIGFyZSBubyBzcGVjaWFsIGFwcGVhciBzdGF0ZXMgbGlrZSBgYXBwZWFyaW5nYC9gYXBwZWFyZWRgLCB0aGlzIHByb3BcbiAgICogPiBvbmx5IGFkZHMgYW4gYWRkaXRpb25hbCBlbnRlciB0cmFuc2l0aW9uLiBIb3dldmVyLCBpbiB0aGVcbiAgICogPiBgPENTU1RyYW5zaXRpb24+YCBjb21wb25lbnQgdGhhdCBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIGRvZXMgcmVzdWx0IGluXG4gICAqID4gYWRkaXRpb25hbCBgLmFwcGVhci0qYCBjbGFzc2VzLCB0aGF0IHdheSB5b3UgY2FuIGNob29zZSB0byBzdHlsZSBpdFxuICAgKiA+IGRpZmZlcmVudGx5LlxuICAgKi9cbiAgYXBwZWFyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZW50ZXIgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBlbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGV4aXQgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBleGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFJlcXVpcmVkIHVubGVzcyBgYWRkRW5kTGlzdGVuZXJgIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zOlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17NTAwfVxuICAgKiBgYGBcbiAgICpcbiAgICogb3IgaW5kaXZpZHVhbGx5OlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17e1xuICAgKiAgYXBwZWFyOiA1MDAsXG4gICAqICBlbnRlcjogMzAwLFxuICAgKiAgZXhpdDogNTAwLFxuICAgKiB9fVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBgYXBwZWFyYCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYGVudGVyYFxuICAgKiAtIGBlbnRlcmAgZGVmYXVsdHMgdG8gYDBgXG4gICAqIC0gYGV4aXRgIGRlZmF1bHRzIHRvIGAwYFxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyIHwgeyBlbnRlcj86IG51bWJlciwgZXhpdD86IG51bWJlciwgYXBwZWFyPzogbnVtYmVyIH19XG4gICAqL1xuICB0aW1lb3V0OiBmdW5jdGlvbiB0aW1lb3V0KHByb3BzKSB7XG4gICAgdmFyIHB0ID0gdGltZW91dHNTaGFwZTtcbiAgICBpZiAoIXByb3BzLmFkZEVuZExpc3RlbmVyKSBwdCA9IHB0LmlzUmVxdWlyZWQ7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHQuYXBwbHkodm9pZCAwLCBbcHJvcHNdLmNvbmNhdChhcmdzKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSB0cmFuc2l0aW9uIGVuZCB0cmlnZ2VyLiBDYWxsZWQgd2l0aCB0aGUgdHJhbnNpdGlvbmluZ1xuICAgKiBET00gbm9kZSBhbmQgYSBgZG9uZWAgY2FsbGJhY2suIEFsbG93cyBmb3IgbW9yZSBmaW5lIGdyYWluZWQgdHJhbnNpdGlvbiBlbmRcbiAgICogbG9naWMuIFRpbWVvdXRzIGFyZSBzdGlsbCB1c2VkIGFzIGEgZmFsbGJhY2sgaWYgcHJvdmlkZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiBhZGRFbmRMaXN0ZW5lcj17KG5vZGUsIGRvbmUpID0+IHtcbiAgICogICAvLyB1c2UgdGhlIGNzcyB0cmFuc2l0aW9uZW5kIGV2ZW50IHRvIG1hcmsgdGhlIGZpbmlzaCBvZiBhIHRyYW5zaXRpb25cbiAgICogICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBkb25lLCBmYWxzZSk7XG4gICAqIH19XG4gICAqIGBgYFxuICAgKi9cbiAgYWRkRW5kTGlzdGVuZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZW50ZXJpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbClcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKSAtPiB2b2lkXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0aW5nOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpIC0+IHZvaWRcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuY1xufSA6IHt9OyAvLyBOYW1lIHRoZSBmdW5jdGlvbiBzbyBpdCBpcyBjbGVhcmVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5UcmFuc2l0aW9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZSxcbiAgZW50ZXI6IHRydWUsXG4gIGV4aXQ6IHRydWUsXG4gIG9uRW50ZXI6IG5vb3AsXG4gIG9uRW50ZXJpbmc6IG5vb3AsXG4gIG9uRW50ZXJlZDogbm9vcCxcbiAgb25FeGl0OiBub29wLFxuICBvbkV4aXRpbmc6IG5vb3AsXG4gIG9uRXhpdGVkOiBub29wXG59O1xuVHJhbnNpdGlvbi5VTk1PVU5URUQgPSBVTk1PVU5URUQ7XG5UcmFuc2l0aW9uLkVYSVRFRCA9IEVYSVRFRDtcblRyYW5zaXRpb24uRU5URVJJTkcgPSBFTlRFUklORztcblRyYW5zaXRpb24uRU5URVJFRCA9IEVOVEVSRUQ7XG5UcmFuc2l0aW9uLkVYSVRJTkcgPSBFWElUSU5HO1xuZXhwb3J0IGRlZmF1bHQgVHJhbnNpdGlvbjsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcbiAgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImV4cG9ydCB2YXIgZm9yY2VSZWZsb3cgPSBmdW5jdGlvbiBmb3JjZVJlZmxvdyhub2RlKSB7XG4gIHJldHVybiBub2RlLnNjcm9sbFRvcDtcbn07IiwiLyoqXG4gKiBSZXR1cm5zIHRoZSBvd25lciBkb2N1bWVudCBvZiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwidmFyIHJVcHBlciA9IC8oW0EtWl0pL2c7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShyVXBwZXIsICctJDEnKS50b0xvd2VyQ2FzZSgpO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi8yYWViOGEyYTZiZWIwMDYxN2E0MjE3ZjdmODI4NDkyNGZhMmFkODE5L3NyYy92ZW5kb3IvY29yZS9oeXBoZW5hdGVTdHlsZU5hbWUuanNcbiAqL1xuaW1wb3J0IGh5cGhlbmF0ZSBmcm9tICcuL2h5cGhlbmF0ZSc7XG52YXIgbXNQYXR0ZXJuID0gL15tcy0vO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4gaHlwaGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7XG59IiwidmFyIHN1cHBvcnRlZFRyYW5zZm9ybXMgPSAvXigodHJhbnNsYXRlfHJvdGF0ZXxzY2FsZSkoWHxZfFp8M2QpP3xtYXRyaXgoM2QpP3xwZXJzcGVjdGl2ZXxza2V3KFh8WSk/KSQvaTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVHJhbnNmb3JtKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiBzdXBwb3J0ZWRUcmFuc2Zvcm1zLnRlc3QodmFsdWUpKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tICcuL2dldENvbXB1dGVkU3R5bGUnO1xuaW1wb3J0IGh5cGhlbmF0ZSBmcm9tICcuL2h5cGhlbmF0ZVN0eWxlJztcbmltcG9ydCBpc1RyYW5zZm9ybSBmcm9tICcuL2lzVHJhbnNmb3JtJztcblxuZnVuY3Rpb24gc3R5bGUobm9kZSwgcHJvcGVydHkpIHtcbiAgdmFyIGNzcyA9ICcnO1xuICB2YXIgdHJhbnNmb3JtcyA9ICcnO1xuXG4gIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShoeXBoZW5hdGUocHJvcGVydHkpKSB8fCBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLmdldFByb3BlcnR5VmFsdWUoaHlwaGVuYXRlKHByb3BlcnR5KSk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhwcm9wZXJ0eSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIHZhbHVlID0gcHJvcGVydHlba2V5XTtcblxuICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgIG5vZGUuc3R5bGUucmVtb3ZlUHJvcGVydHkoaHlwaGVuYXRlKGtleSkpO1xuICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm0oa2V5KSkge1xuICAgICAgdHJhbnNmb3JtcyArPSBrZXkgKyBcIihcIiArIHZhbHVlICsgXCIpIFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBjc3MgKz0gaHlwaGVuYXRlKGtleSkgKyBcIjogXCIgKyB2YWx1ZSArIFwiO1wiO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRyYW5zZm9ybXMpIHtcbiAgICBjc3MgKz0gXCJ0cmFuc2Zvcm06IFwiICsgdHJhbnNmb3JtcyArIFwiO1wiO1xuICB9XG5cbiAgbm9kZS5zdHlsZS5jc3NUZXh0ICs9IFwiO1wiICsgY3NzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsZTsiLCJpbXBvcnQgb3duZXJXaW5kb3cgZnJvbSAnLi9vd25lcldpbmRvdyc7XG4vKipcbiAqIFJldHVybnMgb25lIG9yIGFsbCBjb21wdXRlZCBzdHlsZSBwcm9wZXJ0aWVzIG9mIGFuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gcHN1ZWRvRWxlbWVudCB0aGUgc3R5bGUgcHJvcGVydHlcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKG5vZGUsIHBzdWVkb0VsZW1lbnQpIHtcbiAgcmV0dXJuIG93bmVyV2luZG93KG5vZGUpLmdldENvbXB1dGVkU3R5bGUobm9kZSwgcHN1ZWRvRWxlbWVudCk7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi9vd25lckRvY3VtZW50Jztcbi8qKlxuICogUmV0dXJucyB0aGUgb3duZXIgd2luZG93IG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIHZhciBkb2MgPSBvd25lckRvY3VtZW50KG5vZGUpO1xuICByZXR1cm4gZG9jICYmIGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXR1cm4tYXNzaWduICovXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4vY2FuVXNlRE9NJztcbmV4cG9ydCB2YXIgb3B0aW9uc1N1cHBvcnRlZCA9IGZhbHNlO1xuZXhwb3J0IHZhciBvbmNlU3VwcG9ydGVkID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIGdldCBwYXNzaXZlKCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNTdXBwb3J0ZWQgPSB0cnVlO1xuICAgIH0sXG5cbiAgICBnZXQgb25jZSgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1hc3NpZ25cbiAgICAgIHJldHVybiBvbmNlU3VwcG9ydGVkID0gb3B0aW9uc1N1cHBvcnRlZCA9IHRydWU7XG4gICAgfVxuXG4gIH07XG5cbiAgaWYgKGNhblVzZURPTSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCB0cnVlKTtcbiAgfVxufSBjYXRjaCAoZSkge1xuICAvKiAqL1xufVxuXG4vKipcbiAqIEFuIGBhZGRFdmVudExpc3RlbmVyYCBwb255ZmlsbCwgc3VwcG9ydHMgdGhlIGBvbmNlYCBvcHRpb25cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBldmVudE5hbWUgdGhlIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGUgdGhlIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zIGV2ZW50IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgIT09ICdib29sZWFuJyAmJiAhb25jZVN1cHBvcnRlZCkge1xuICAgIHZhciBvbmNlID0gb3B0aW9ucy5vbmNlLFxuICAgICAgICBjYXB0dXJlID0gb3B0aW9ucy5jYXB0dXJlO1xuICAgIHZhciB3cmFwcGVkSGFuZGxlciA9IGhhbmRsZXI7XG5cbiAgICBpZiAoIW9uY2VTdXBwb3J0ZWQgJiYgb25jZSkge1xuICAgICAgd3JhcHBlZEhhbmRsZXIgPSBoYW5kbGVyLl9fb25jZSB8fCBmdW5jdGlvbiBvbmNlSGFuZGxlcihldmVudCkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBvbmNlSGFuZGxlciwgY2FwdHVyZSk7XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBldmVudCk7XG4gICAgICB9O1xuXG4gICAgICBoYW5kbGVyLl9fb25jZSA9IHdyYXBwZWRIYW5kbGVyO1xuICAgIH1cblxuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHdyYXBwZWRIYW5kbGVyLCBvcHRpb25zU3VwcG9ydGVkID8gb3B0aW9ucyA6IGNhcHR1cmUpO1xuICB9XG5cbiAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZEV2ZW50TGlzdGVuZXI7IiwiaW1wb3J0IGFkZEV2ZW50TGlzdGVuZXIgZnJvbSAnLi9hZGRFdmVudExpc3RlbmVyJztcbmltcG9ydCByZW1vdmVFdmVudExpc3RlbmVyIGZyb20gJy4vcmVtb3ZlRXZlbnRMaXN0ZW5lcic7XG5cbmZ1bmN0aW9uIGxpc3Rlbihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGlzdGVuOyIsIi8qKlxuICogQSBgcmVtb3ZlRXZlbnRMaXN0ZW5lcmAgcG9ueWZpbGxcbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBldmVudE5hbWUgdGhlIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGUgdGhlIGhhbmRsZXJcbiAqIEBwYXJhbSBvcHRpb25zIGV2ZW50IG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGNhcHR1cmUgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zICE9PSAnYm9vbGVhbicgPyBvcHRpb25zLmNhcHR1cmUgOiBvcHRpb25zO1xuICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLCBjYXB0dXJlKTtcblxuICBpZiAoaGFuZGxlci5fX29uY2UpIHtcbiAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLl9fb25jZSwgY2FwdHVyZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlRXZlbnRMaXN0ZW5lcjsiLCJpbXBvcnQgY3NzIGZyb20gJy4vY3NzJztcbmltcG9ydCBsaXN0ZW4gZnJvbSAnLi9saXN0ZW4nO1xuaW1wb3J0IHRyaWdnZXJFdmVudCBmcm9tICcuL3RyaWdnZXJFdmVudCc7XG5cbmZ1bmN0aW9uIHBhcnNlRHVyYXRpb24obm9kZSkge1xuICB2YXIgc3RyID0gY3NzKG5vZGUsICd0cmFuc2l0aW9uRHVyYXRpb24nKSB8fCAnJztcbiAgdmFyIG11bHQgPSBzdHIuaW5kZXhPZignbXMnKSA9PT0gLTEgPyAxMDAwIDogMTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKSAqIG11bHQ7XG59XG5cbmZ1bmN0aW9uIGVtdWxhdGVUcmFuc2l0aW9uRW5kKGVsZW1lbnQsIGR1cmF0aW9uLCBwYWRkaW5nKSB7XG4gIGlmIChwYWRkaW5nID09PSB2b2lkIDApIHtcbiAgICBwYWRkaW5nID0gNTtcbiAgfVxuXG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgdmFyIGhhbmRsZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmICghY2FsbGVkKSB0cmlnZ2VyRXZlbnQoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnLCB0cnVlKTtcbiAgfSwgZHVyYXRpb24gKyBwYWRkaW5nKTtcbiAgdmFyIHJlbW92ZSA9IGxpc3RlbihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICB9LCB7XG4gICAgb25jZTogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgICByZW1vdmUoKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbkVuZChlbGVtZW50LCBoYW5kbGVyLCBkdXJhdGlvbiwgcGFkZGluZykge1xuICBpZiAoZHVyYXRpb24gPT0gbnVsbCkgZHVyYXRpb24gPSBwYXJzZUR1cmF0aW9uKGVsZW1lbnQpIHx8IDA7XG4gIHZhciByZW1vdmVFbXVsYXRlID0gZW11bGF0ZVRyYW5zaXRpb25FbmQoZWxlbWVudCwgZHVyYXRpb24sIHBhZGRpbmcpO1xuICB2YXIgcmVtb3ZlID0gbGlzdGVuKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgaGFuZGxlcik7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmVtb3ZlRW11bGF0ZSgpO1xuICAgIHJlbW92ZSgpO1xuICB9O1xufSIsIi8qKlxuICogVHJpZ2dlcnMgYW4gZXZlbnQgb24gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIGV2ZW50TmFtZSB0aGUgZXZlbnQgbmFtZSB0byB0cmlnZ2VyXG4gKiBAcGFyYW0gYnViYmxlcyB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgYnViYmxlIHVwXG4gKiBAcGFyYW0gY2FuY2VsYWJsZSB3aGV0aGVyIHRoZSBldmVudCBzaG91bGQgYmUgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmlnZ2VyRXZlbnQobm9kZSwgZXZlbnROYW1lLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gIGlmIChidWJibGVzID09PSB2b2lkIDApIHtcbiAgICBidWJibGVzID0gZmFsc2U7XG4gIH1cblxuICBpZiAoY2FuY2VsYWJsZSA9PT0gdm9pZCAwKSB7XG4gICAgY2FuY2VsYWJsZSA9IHRydWU7XG4gIH1cblxuICBpZiAobm9kZSkge1xuICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gICAgZXZlbnQuaW5pdEV2ZW50KGV2ZW50TmFtZSwgYnViYmxlcywgY2FuY2VsYWJsZSk7XG4gICAgbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfVxufSIsImltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCB0cmFuc2l0aW9uRW5kIGZyb20gJ2RvbS1oZWxwZXJzL3RyYW5zaXRpb25FbmQnO1xuZnVuY3Rpb24gcGFyc2VEdXJhdGlvbihub2RlLCBwcm9wZXJ0eSkge1xuICBjb25zdCBzdHIgPSBjc3Mobm9kZSwgcHJvcGVydHkpIHx8ICcnO1xuICBjb25zdCBtdWx0ID0gc3RyLmluZGV4T2YoJ21zJykgPT09IC0xID8gMTAwMCA6IDE7XG4gIHJldHVybiBwYXJzZUZsb2F0KHN0cikgKiBtdWx0O1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbkVuZExpc3RlbmVyKGVsZW1lbnQsIGhhbmRsZXIpIHtcbiAgY29uc3QgZHVyYXRpb24gPSBwYXJzZUR1cmF0aW9uKGVsZW1lbnQsICd0cmFuc2l0aW9uRHVyYXRpb24nKTtcbiAgY29uc3QgZGVsYXkgPSBwYXJzZUR1cmF0aW9uKGVsZW1lbnQsICd0cmFuc2l0aW9uRGVsYXknKTtcbiAgY29uc3QgcmVtb3ZlID0gdHJhbnNpdGlvbkVuZChlbGVtZW50LCBlID0+IHtcbiAgICBpZiAoZS50YXJnZXQgPT09IGVsZW1lbnQpIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgICAgaGFuZGxlcihlKTtcbiAgICB9XG4gIH0sIGR1cmF0aW9uICsgZGVsYXkpO1xufSIsIi8vIHJlYWRpbmcgYSBkaW1lbnNpb24gcHJvcCB3aWxsIGNhdXNlIHRoZSBicm93c2VyIHRvIHJlY2FsY3VsYXRlLFxuLy8gd2hpY2ggd2lsbCBsZXQgb3VyIGFuaW1hdGlvbnMgd29ya1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJpZ2dlckJyb3dzZXJSZWZsb3cobm9kZSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC1leHByZXNzaW9uc1xuICBub2RlLm9mZnNldEhlaWdodDtcbn0iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG52YXIgdG9GblJlZiA9IGZ1bmN0aW9uIHRvRm5SZWYocmVmKSB7XG4gIHJldHVybiAhcmVmIHx8IHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicgPyByZWYgOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUmVmcyhyZWZBLCByZWZCKSB7XG4gIHZhciBhID0gdG9GblJlZihyZWZBKTtcbiAgdmFyIGIgPSB0b0ZuUmVmKHJlZkIpO1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKGEpIGEodmFsdWUpO1xuICAgIGlmIChiKSBiKHZhbHVlKTtcbiAgfTtcbn1cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm5zIGEgc2luZ2xlIGNhbGxiYWNrIHJlZiBjb21wb3NlZCBmcm9tIHR3byBvdGhlciBSZWZzLlxuICpcbiAqIGBgYHRzeFxuICogY29uc3QgQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICogICBjb25zdCBbZWxlbWVudCwgYXR0YWNoUmVmXSA9IHVzZUNhbGxiYWNrUmVmPEhUTUxCdXR0b25FbGVtZW50PigpO1xuICogICBjb25zdCBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgYXR0YWNoUmVmKTtcbiAqXG4gKiAgIHJldHVybiA8YnV0dG9uIHJlZj17bWVyZ2VkUmVmfSB7Li4ucHJvcHN9Lz5cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcmVmQSBBIENhbGxiYWNrIG9yIG11dGFibGUgUmVmXG4gKiBAcGFyYW0gcmVmQiBBIENhbGxiYWNrIG9yIG11dGFibGUgUmVmXG4gKiBAY2F0ZWdvcnkgcmVmc1xuICovXG5cbmZ1bmN0aW9uIHVzZU1lcmdlZFJlZnMocmVmQSwgcmVmQikge1xuICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG1lcmdlUmVmcyhyZWZBLCByZWZCKTtcbiAgfSwgW3JlZkEsIHJlZkJdKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlTWVyZ2VkUmVmczsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUcmFuc2l0aW9uIGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCBzYWZlRmluZERPTU5vZGUgZnJvbSAnLi9zYWZlRmluZERPTU5vZGUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIE5vcm1hbGl6ZXMgVHJhbnNpdGlvbiBjYWxsYmFja3Mgd2hlbiBub2RlUmVmIGlzIHVzZWQuXG5jb25zdCBUcmFuc2l0aW9uV3JhcHBlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIG9uRW50ZXIsXG4gIG9uRW50ZXJpbmcsXG4gIG9uRW50ZXJlZCxcbiAgb25FeGl0LFxuICBvbkV4aXRpbmcsXG4gIG9uRXhpdGVkLFxuICBhZGRFbmRMaXN0ZW5lcixcbiAgY2hpbGRyZW4sXG4gIGNoaWxkUmVmLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IG5vZGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlZFJlZnMobm9kZVJlZiwgY2hpbGRSZWYpO1xuICBjb25zdCBhdHRhY2hSZWYgPSByID0+IHtcbiAgICBtZXJnZWRSZWYoc2FmZUZpbmRET01Ob2RlKHIpKTtcbiAgfTtcbiAgY29uc3Qgbm9ybWFsaXplID0gY2FsbGJhY2sgPT4gcGFyYW0gPT4ge1xuICAgIGlmIChjYWxsYmFjayAmJiBub2RlUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbGxiYWNrKG5vZGVSZWYuY3VycmVudCwgcGFyYW0pO1xuICAgIH1cbiAgfTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgKi9cbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FbnRlciksIFtvbkVudGVyXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRW50ZXJpbmcpLCBbb25FbnRlcmluZ10pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRW50ZXJlZCksIFtvbkVudGVyZWRdKTtcbiAgY29uc3QgaGFuZGxlRXhpdCA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkV4aXQpLCBbb25FeGl0XSk7XG4gIGNvbnN0IGhhbmRsZUV4aXRpbmcgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FeGl0aW5nKSwgW29uRXhpdGluZ10pO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FeGl0ZWQpLCBbb25FeGl0ZWRdKTtcbiAgY29uc3QgaGFuZGxlQWRkRW5kTGlzdGVuZXIgPSB1c2VDYWxsYmFjayhub3JtYWxpemUoYWRkRW5kTGlzdGVuZXIpLCBbYWRkRW5kTGlzdGVuZXJdKTtcbiAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgKi9cblxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbiwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgIG9uRW50ZXJlZDogaGFuZGxlRW50ZXJlZCxcbiAgICBvbkVudGVyaW5nOiBoYW5kbGVFbnRlcmluZyxcbiAgICBvbkV4aXQ6IGhhbmRsZUV4aXQsXG4gICAgb25FeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICBvbkV4aXRpbmc6IGhhbmRsZUV4aXRpbmcsXG4gICAgYWRkRW5kTGlzdGVuZXI6IGhhbmRsZUFkZEVuZExpc3RlbmVyLFxuICAgIG5vZGVSZWY6IG5vZGVSZWYsXG4gICAgY2hpbGRyZW46IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IChzdGF0dXMsIGlubmVyUHJvcHMpID0+IGNoaWxkcmVuKHN0YXR1cywge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIHJlZjogYXR0YWNoUmVmXG4gICAgfSkgOiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICByZWY6IGF0dGFjaFJlZlxuICAgIH0pXG4gIH0pO1xufSk7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uV3JhcHBlcjsiLCJpbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNhZmVGaW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgaWYgKGNvbXBvbmVudE9yRWxlbWVudCAmJiAnc2V0U3RhdGUnIGluIGNvbXBvbmVudE9yRWxlbWVudCkge1xuICAgIHJldHVybiBSZWFjdERPTS5maW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpO1xuICB9XG4gIHJldHVybiBjb21wb25lbnRPckVsZW1lbnQgIT0gbnVsbCA/IGNvbXBvbmVudE9yRWxlbWVudCA6IG51bGw7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEVOVEVSRUQsIEVOVEVSSU5HIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uJztcbmltcG9ydCB0cmFuc2l0aW9uRW5kTGlzdGVuZXIgZnJvbSAnLi90cmFuc2l0aW9uRW5kTGlzdGVuZXInO1xuaW1wb3J0IHRyaWdnZXJCcm93c2VyUmVmbG93IGZyb20gJy4vdHJpZ2dlckJyb3dzZXJSZWZsb3cnO1xuaW1wb3J0IFRyYW5zaXRpb25XcmFwcGVyIGZyb20gJy4vVHJhbnNpdGlvbldyYXBwZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICB0aW1lb3V0OiAzMDAsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlXG59O1xuY29uc3QgZmFkZVN0eWxlcyA9IHtcbiAgW0VOVEVSSU5HXTogJ3Nob3cnLFxuICBbRU5URVJFRF06ICdzaG93J1xufTtcbmNvbnN0IEZhZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICB0cmFuc2l0aW9uQ2xhc3NlcyA9IHt9LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gdXNlQ2FsbGJhY2soKG5vZGUsIGlzQXBwZWFyaW5nKSA9PiB7XG4gICAgdHJpZ2dlckJyb3dzZXJSZWZsb3cobm9kZSk7XG4gICAgcHJvcHMub25FbnRlciA9PSBudWxsID8gdm9pZCAwIDogcHJvcHMub25FbnRlcihub2RlLCBpc0FwcGVhcmluZyk7XG4gIH0sIFtwcm9wc10pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbldyYXBwZXIsIHtcbiAgICByZWY6IHJlZixcbiAgICBhZGRFbmRMaXN0ZW5lcjogdHJhbnNpdGlvbkVuZExpc3RlbmVyLFxuICAgIC4uLnByb3BzLFxuICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgIGNoaWxkUmVmOiBjaGlsZHJlbi5yZWYsXG4gICAgY2hpbGRyZW46IChzdGF0dXMsIGlubmVyUHJvcHMpID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIC4uLmlubmVyUHJvcHMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ2ZhZGUnLCBjbGFzc05hbWUsIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSwgZmFkZVN0eWxlc1tzdGF0dXNdLCB0cmFuc2l0aW9uQ2xhc3Nlc1tzdGF0dXNdKVxuICAgIH0pXG4gIH0pO1xufSk7XG5GYWRlLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbkZhZGUuZGlzcGxheU5hbWUgPSAnRmFkZSc7XG5leHBvcnQgZGVmYXVsdCBGYWRlOyIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBwcm9wVHlwZXMgPSB7XG4gIC8qKiBBbiBhY2Nlc3NpYmxlIGxhYmVsIGluZGljYXRpbmcgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBDbG9zZSBCdXR0b24uICovXG4gICdhcmlhLWxhYmVsJzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIEEgY2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIENsb3NlIEJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFJlbmRlciBkaWZmZXJlbnQgY29sb3IgdmFyaWFudCBmb3IgdGhlIGJ1dHRvbi5cbiAgICpcbiAgICogT21pdHRpbmcgdGhpcyB3aWxsIHJlbmRlciB0aGUgZGVmYXVsdCBkYXJrIGNvbG9yLlxuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnd2hpdGUnXSlcbn07XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICdhcmlhLWxhYmVsJzogJ0Nsb3NlJ1xufTtcbmNvbnN0IENsb3NlQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgY2xhc3NOYW1lLFxuICB2YXJpYW50LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiAvKiNfX1BVUkVfXyovX2pzeChcImJ1dHRvblwiLCB7XG4gIHJlZjogcmVmLFxuICB0eXBlOiBcImJ1dHRvblwiLFxuICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoJ2J0bi1jbG9zZScsIHZhcmlhbnQgJiYgYGJ0bi1jbG9zZS0ke3ZhcmlhbnR9YCwgY2xhc3NOYW1lKSxcbiAgLi4ucHJvcHNcbn0pKTtcbkNsb3NlQnV0dG9uLmRpc3BsYXlOYW1lID0gJ0Nsb3NlQnV0dG9uJztcbkNsb3NlQnV0dG9uLnByb3BUeXBlcyA9IHByb3BUeXBlcztcbkNsb3NlQnV0dG9uLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IENsb3NlQnV0dG9uOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IChjbGFzc05hbWUgPT4gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHAsIHJlZikgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAuLi5wLFxuICByZWY6IHJlZixcbiAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKHAuY2xhc3NOYW1lLCBjbGFzc05hbWUpXG59KSkpOyIsInZhciBySHlwaGVuID0gLy0oLikvZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2Uockh5cGhlbiwgZnVuY3Rpb24gKF8sIGNocikge1xuICAgIHJldHVybiBjaHIudG9VcHBlckNhc2UoKTtcbiAgfSk7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgY2FtZWxpemUgZnJvbSAnZG9tLWhlbHBlcnMvY2FtZWxpemUnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBwYXNjYWxDYXNlID0gc3RyID0+IHN0clswXS50b1VwcGVyQ2FzZSgpICsgY2FtZWxpemUoc3RyKS5zbGljZSgxKTtcbi8vIFRPRE86IGVtc3RyaWN0ZW4gJiBmaXggdGhlIHR5cGluZyBoZXJlISBgY3JlYXRlV2l0aEJzUHJlZml4PFRFbGVtZW50VHlwZT4uLi5gXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVXaXRoQnNQcmVmaXgocHJlZml4LCB7XG4gIGRpc3BsYXlOYW1lID0gcGFzY2FsQ2FzZShwcmVmaXgpLFxuICBDb21wb25lbnQsXG4gIGRlZmF1bHRQcm9wc1xufSA9IHt9KSB7XG4gIGNvbnN0IEJzQ29tcG9uZW50ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgICBjbGFzc05hbWUsXG4gICAgYnNQcmVmaXgsXG4gICAgYXM6IFRhZyA9IENvbXBvbmVudCB8fCAnZGl2JyxcbiAgICAuLi5wcm9wc1xuICB9LCByZWYpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgcHJlZml4KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVGFnLCB7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHJlc29sdmVkUHJlZml4KSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH0pO1xuICBCc0NvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4gIEJzQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gIHJldHVybiBCc0NvbXBvbmVudDtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVVuY29udHJvbGxlZCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IEFuY2hvciBmcm9tICdAcmVzdGFydC91aS9BbmNob3InO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBGYWRlIGZyb20gJy4vRmFkZSc7XG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSAnLi9DbG9zZUJ1dHRvbic7XG5pbXBvcnQgZGl2V2l0aENsYXNzTmFtZSBmcm9tICcuL2RpdldpdGhDbGFzc05hbWUnO1xuaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRGl2U3R5bGVkQXNINCA9IGRpdldpdGhDbGFzc05hbWUoJ2g0Jyk7XG5EaXZTdHlsZWRBc0g0LmRpc3BsYXlOYW1lID0gJ0RpdlN0eWxlZEFzSDQnO1xuY29uc3QgQWxlcnRIZWFkaW5nID0gY3JlYXRlV2l0aEJzUHJlZml4KCdhbGVydC1oZWFkaW5nJywge1xuICBDb21wb25lbnQ6IERpdlN0eWxlZEFzSDRcbn0pO1xuY29uc3QgQWxlcnRMaW5rID0gY3JlYXRlV2l0aEJzUHJlZml4KCdhbGVydC1saW5rJywge1xuICBDb21wb25lbnQ6IEFuY2hvclxufSk7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgc2hvdzogdHJ1ZSxcbiAgdHJhbnNpdGlvbjogRmFkZSxcbiAgY2xvc2VMYWJlbDogJ0Nsb3NlIGFsZXJ0J1xufTtcbmNvbnN0IEFsZXJ0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHVuY29udHJvbGxlZFByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGJzUHJlZml4LFxuICAgIHNob3csXG4gICAgY2xvc2VMYWJlbCxcbiAgICBjbG9zZVZhcmlhbnQsXG4gICAgY2xhc3NOYW1lLFxuICAgIGNoaWxkcmVuLFxuICAgIHZhcmlhbnQsXG4gICAgb25DbG9zZSxcbiAgICBkaXNtaXNzaWJsZSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIC4uLnByb3BzXG4gIH0gPSB1c2VVbmNvbnRyb2xsZWQodW5jb250cm9sbGVkUHJvcHMsIHtcbiAgICBzaG93OiAnb25DbG9zZSdcbiAgfSk7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2FsZXJ0Jyk7XG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAob25DbG9zZSkge1xuICAgICAgb25DbG9zZShmYWxzZSwgZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgVHJhbnNpdGlvbiA9IHRyYW5zaXRpb24gPT09IHRydWUgPyBGYWRlIDogdHJhbnNpdGlvbjtcbiAgY29uc3QgYWxlcnQgPSAvKiNfX1BVUkVfXyovX2pzeHMoXCJkaXZcIiwge1xuICAgIHJvbGU6IFwiYWxlcnRcIixcbiAgICAuLi4oIVRyYW5zaXRpb24gPyBwcm9wcyA6IHVuZGVmaW5lZCksXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCB2YXJpYW50ICYmIGAke3ByZWZpeH0tJHt2YXJpYW50fWAsIGRpc21pc3NpYmxlICYmIGAke3ByZWZpeH0tZGlzbWlzc2libGVgKSxcbiAgICBjaGlsZHJlbjogW2Rpc21pc3NpYmxlICYmIC8qI19fUFVSRV9fKi9fanN4KENsb3NlQnV0dG9uLCB7XG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbG9zZSxcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBjbG9zZUxhYmVsLFxuICAgICAgdmFyaWFudDogY2xvc2VWYXJpYW50XG4gICAgfSksIGNoaWxkcmVuXVxuICB9KTtcbiAgaWYgKCFUcmFuc2l0aW9uKSByZXR1cm4gc2hvdyA/IGFsZXJ0IDogbnVsbDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb24sIHtcbiAgICB1bm1vdW50T25FeGl0OiB0cnVlLFxuICAgIC4uLnByb3BzLFxuICAgIHJlZjogdW5kZWZpbmVkLFxuICAgIGluOiBzaG93LFxuICAgIGNoaWxkcmVuOiBhbGVydFxuICB9KTtcbn0pO1xuQWxlcnQuZGlzcGxheU5hbWUgPSAnQWxlcnQnO1xuQWxlcnQuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihBbGVydCwge1xuICBMaW5rOiBBbGVydExpbmssXG4gIEhlYWRpbmc6IEFsZXJ0SGVhZGluZ1xufSk7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuXG5leHBvcnQgY29uc3QgTWVzc2FnZSA9ICh7XG4gIGhlYWRpbmcsXG4gIGljb24sXG4gIHR5cGUsXG4gIGRpc21pc3NpYmxlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxufSkgPT4ge1xuICB2YXIgdmFyaWFudCA9IFwicHJpbWFyeVwiO1xuICBjb25zdCBzaG93SWNvbiA9IGljb24gPT09IHVuZGVmaW5lZCB8fCBpY29uO1xuICB2YXIgaWNvbkNsYXNzID0gXCJiaSBiaS1leGNsYW1hdGlvbi1jaXJjbGVcIjtcbiAgdmFyIFtzaG93LCBzZXRTaG93XSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gIGlmICghc2hvdykge1xuICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQgLz47XG4gIH1cblxuICBpZiAodHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgdmFyaWFudCA9IFwiZGFuZ2VyXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1leGNsYW1hdGlvbi10cmlhbmdsZS1maWxsXCI7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ3YXJuaW5nXCIpIHtcbiAgICB2YXJpYW50ID0gXCJ3YXJuaW5nXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1leGNsYW1hdGlvbi10cmlhbmdsZVwiO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgdmFyaWFudCA9IFwic3VjY2Vzc1wiO1xuICAgIGljb25DbGFzcyA9IFwiYmkgYmktY2hlY2stY2lyY2xlXCI7XG4gIH1cblxuICBpY29uID0gc2hvd0ljb24gJiYgKGljb24gfHwgPGkgY2xhc3NOYW1lPXtgJHtpY29uQ2xhc3N9IG1lLTIgbS0wYH0+PC9pPik7XG5cbiAgcmV0dXJuIChcbiAgICA8QWxlcnRcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgdmFyaWFudD17dmFyaWFudH1cbiAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3coZmFsc2UpfVxuICAgICAgZGlzbWlzc2libGU9e2Rpc21pc3NpYmxlfVxuICAgID5cbiAgICAgIHtoZWFkaW5nICYmIChcbiAgICAgICAgPEFsZXJ0LkhlYWRpbmc+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAge2hlYWRpbmd9XG4gICAgICAgIDwvQWxlcnQuSGVhZGluZz5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbS0wXCI+XG4gICAgICAgIHshaGVhZGluZyAmJiBpY29ufVxuICAgICAgICA8ZGl2PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvQWxlcnQ+XG4gICk7XG59O1xuXG5NZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgaGVhZGluZzogUHJvcFR5cGVzLm5vZGUsXG4gIGljb246IFByb3BUeXBlcy5ub2RlLFxuICB0eXBlOiBQcm9wVHlwZXMub25lT2YoW1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIsIFwic3VjY2Vzc1wiLCBcImluZm9cIl0pLFxuICBkaXNtaXNzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgRXJyb3JNZXNzYWdlID0gKHsgaGVhZGluZywgZXJyb3IgfSkgPT4ge1xuICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICBoZWFkaW5nID0gaGVhZGluZyB8fCBcIkVycm9yXCI7XG5cbiAgdmFyIG1lc3NhZ2U7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09IFwic3RyaW5nXCIgfHwgZXJyb3IgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICBtZXNzYWdlID0gZXJyb3I7XG4gIH0gZWxzZSBpZiAoXG4gICAgZXJyb3IubWVzc2FnZSAmJlxuICAgICh0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIiB8fCBlcnJvci5tZXNzYWdlIGluc3RhbmNlb2YgU3RyaW5nKVxuICApIHtcbiAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TWVzc2FnZSBjbGFzc05hbWU9XCJtdC0zIG14LTNcIiBoZWFkaW5nPXtoZWFkaW5nfSB0eXBlPVwiZXJyb3JcIiBkaXNtaXNzaWJsZT5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvTWVzc2FnZT5cbiAgKTtcbn07XG5cbkVycm9yTWVzc2FnZS5wcm9wVHlwZXMgPSB7XG4gIGhlYWRpbmc6IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmluc3RhbmNlT2YoRXJyb3IpXSksXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgTG9hZGluZ0luZm8gPSAoeyBjbGFzc05hbWUsIHNpemUsIGNvbG9yLCB0aXRsZSB9KSA9PiB7XG4gIHZhciBjbGFzc2VzID0gXCJzcGlubmVyLWJvcmRlclwiO1xuXG4gIGlmIChjbGFzc05hbWUpIHtcbiAgICBjbGFzc2VzICs9IFwiIFwiICsgY2xhc3NOYW1lO1xuICB9XG4gIGlmIChzaXplID09PSBcInNtXCIpIHtcbiAgICBjbGFzc2VzICs9IFwiIHNwaW5uZXItYm9yZGVyLXNtXCI7XG4gIH1cbiAgaWYgKGNvbG9yID09PSBcInByaW1hcnlcIikge1xuICAgIGNsYXNzZXMgKz0gXCIgdGV4dC1wcmltYXJ5XCI7XG4gIH0gZWxzZSBpZiAoY29sb3IgPT09IFwic2Vjb25kYXJ5XCIpIHtcbiAgICBjbGFzc2VzICs9IFwiIHRleHQtc2Vjb25kYXJ5XCI7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxzcGFuIHRpdGxlPXt0aXRsZX0gY2xhc3NOYW1lPXtjbGFzc2VzfSByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgKTtcbn07XG5cbkxvYWRpbmdJbmZvLnByb3BUeXBlcyA9IHtcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wic21cIl0pLFxuICBjb2xvcjogUHJvcFR5cGVzLm9uZU9mKFtcInByaW1hcnlcIiwgXCJzZWNvbmRhcnlcIl0pLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbkxvYWRpbmdJbmZvLmRlZmF1bHRQcm9wcyA9IHtcbiAgdGl0bGU6IFwiTG9hZGluZy4uLlwiLFxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgSW5mb1NlcnZpY2UgfSBmcm9tIFwiLi4vSW5mb1NlcnZpY2VcIjtcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tIFwiLi9NZXNzYWdlXCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIF9sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpIHtcbiAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICByZXR1cm4gYXdhaXQgc2VydmljZS5sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVTdWJtaXQoc2hvd0xvYWRpbmdJbmZvLCB0aGVuLCBvbkVycm9yKSB7XG4gIHJldHVybiAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHNob3dMb2FkaW5nSW5mbygpO1xuICAgIGNvbnN0IHVzZXJuYW1lID0gZXZlbnQudGFyZ2V0LnVzZXJuYW1lLnZhbHVlO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZXZlbnQudGFyZ2V0LnBhc3N3b3JkLnZhbHVlO1xuXG4gICAgLy8gZGVhY3RpdmUgbG9naW4gZm9ybSAobm8gcmV0cnkgdW50aWwgdGhlIHNlcnZlciBhbnN3ZXIgaXMgdGhlcmUgb3IgYVxuICAgIC8vIHRpbWVvdXQpLlxuICAgIGV2ZW50LnRhcmdldC5zdWJtaXQuZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgdmFyIGxvZ2luX3Byb21pc2UgPSBfbG9naW4odXNlcm5hbWUsIHBhc3N3b3JkKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAvLyBhY3RpdmUgbG9naW4gYWdhaW5cbiAgICAgIGV2ZW50LnRhcmdldC5zdWJtaXQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcblxuICAgIGlmICh0aGVuKSB7XG4gICAgICBsb2dpbl9wcm9taXNlID0gbG9naW5fcHJvbWlzZS50aGVuKHRoZW4pO1xuICAgIH1cblxuICAgIGlmIChvbkVycm9yKSB7XG4gICAgICBsb2dpbl9wcm9taXNlLmNhdGNoKG9uRXJyb3IpO1xuICAgIH1cbiAgfTtcbn1cblxuY2xhc3MgVGltZW91dCB7XG4gIGNvbnN0cnVjdG9yKGNiLCBtcykge1xuICAgIHRoaXMuY2IgPSBjYjtcbiAgICBtcyA9IE51bWJlci5pc0ludGVnZXIobXMpID8gbXMgOiAxMDAwMDtcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY2IsIG1zKTtcbiAgfVxuICByZXNldChtcykge1xuICAgIHRoaXMucGF1c2UoKTtcbiAgICBpZiAodGhpcy5jYikge1xuICAgICAgbXMgPSBOdW1iZXIuaXNJbnRlZ2VyKG1zKSA/IG1zIDogMjAwMDA7XG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuY2IsIG1zKTtcbiAgICB9XG4gIH1cbiAgcGF1c2UoKSB7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICB0aGlzLnRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHN0b3AoKSB7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMuY2IgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuY29uc3QgTG9naW5Gb3JtSW5wdXRzID0gKHsgdGhlbiwgb25FcnJvciwgc2hvd01lc3NhZ2VzLCBzaG93TG9hZGluZ0luZm8gfSkgPT4ge1xuICBjb25zdCB0aW1lb3V0ID0gbmV3IFRpbWVvdXQoc2hvd01lc3NhZ2VzKTtcbiAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB0aW1lb3V0LnBhdXNlKCk7XG4gIGNvbnN0IG9uQmx1ciA9ICgpID0+IHRpbWVvdXQucmVzZXQoKTtcbiAgY29uc3Qgb25DbGljayA9ICgpID0+IHRpbWVvdXQuc3RvcCgpO1xuXG4gIGNvbnN0IHdyYXBwZWRPbkVycm9yID0gYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgc2hvd01lc3NhZ2VzKCk7XG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIHJldHVybiBhd2FpdCBvbkVycm9yKGVycm9yKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgY2xhc3NOYW1lPVwibS0wXCJcbiAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXQoc2hvd0xvYWRpbmdJbmZvLCB0aGVuLCB3cmFwcGVkT25FcnJvcil9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgZy0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgbmFtZT1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlVzZXJuYW1lXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJVc2VybmFtZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiUGFzc3dvcmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS0xXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc2Vjb25kYXJ5IG5hdmJhci1idG4gZC1pbmxpbmUtYmxvY2tcIlxuICAgICAgICAgICAgbmFtZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBMb2dpblxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkxvZ2luRm9ybUlucHV0cy5wcm9wVHlwZXMgPSB7XG4gIHRoZW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICBzaG93TWVzc2FnZXM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNob3dMb2FkaW5nSW5mbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmNvbnN0IExvZ2luRm9ybU1lc3NhZ2UgPSAoeyBtZXNzYWdlLCBtZXNzYWdlVHlwZSwgc2hvd0lucHV0cyB9KSA9PiB7XG4gIG1lc3NhZ2UgPSBtZXNzYWdlID8gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLWF1dG9cIj5cbiAgICAgIDxNZXNzYWdlIHR5cGU9e21lc3NhZ2VUeXBlfT57bWVzc2FnZX08L01lc3NhZ2U+XG4gICAgPC9kaXY+XG4gICkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImFsaWduLWl0ZW1zLWNlbnRlciByb3cgZy0zXCI+XG4gICAgICB7bWVzc2FnZX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTFcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc2Vjb25kYXJ5IG5hdmJhci1idG4gZC1pbmxpbmUtYmxvY2tcIlxuICAgICAgICAgIG5hbWU9XCJzaG93XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXtzaG93SW5wdXRzfVxuICAgICAgICA+XG4gICAgICAgICAgTG9naW5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkxvZ2luRm9ybU1lc3NhZ2UucHJvcFR5cGVzID0ge1xuICBtZXNzYWdlOiBQcm9wVHlwZXMubm9kZSxcbiAgbWVzc2FnZVR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG4gIHNob3dJbnB1dHM6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgY29uc3QgTG9naW5Gb3JtID0gKHsgdGhlbiwgb25FcnJvciwgbWVzc2FnZSwgbWVzc2FnZVR5cGUgfSkgPT4ge1xuICBjb25zdCBbc2hvd0lucHV0cywgc2V0U2hvd0lucHV0c10gPSB1c2VTdGF0ZShcIm1lc3NhZ2VzXCIpO1xuXG4gIGlmIChzaG93SW5wdXRzID09PSBcImlucHV0c1wiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxMb2dpbkZvcm1JbnB1dHNcbiAgICAgICAgdGhlbj17dGhlbn1cbiAgICAgICAgb25FcnJvcj17b25FcnJvcn1cbiAgICAgICAgc2hvd01lc3NhZ2VzPXsoKSA9PiBzZXRTaG93SW5wdXRzKFwibWVzc2FnZXNcIil9XG4gICAgICAgIHNob3dMb2FkaW5nSW5mbz17KCkgPT4gc2V0U2hvd0lucHV0cyhcImxvYWRpbmdcIil9XG4gICAgICAvPlxuICAgICk7XG4gIH0gZWxzZSBpZiAoc2hvd0lucHV0cyA9PT0gXCJsb2FkaW5nXCIpIHtcbiAgICByZXR1cm4gPExvYWRpbmdJbmZvIHNpemU9XCJzbVwiIC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TG9naW5Gb3JtTWVzc2FnZVxuICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgIG1lc3NhZ2VUeXBlPXttZXNzYWdlVHlwZX1cbiAgICAgIHNob3dJbnB1dHM9eygpID0+IHNldFNob3dJbnB1dHMoXCJpbnB1dHNcIil9XG4gICAgLz5cbiAgKTtcbn07XG5cbkxvZ2luRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRoZW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICBtZXNzYWdlOiBQcm9wVHlwZXMubm9kZSxcbiAgbWVzc2FnZVR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG59O1xuIiwidmFyIHRvQXJyYXkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLCBbXS5zbGljZSk7XG4vKipcbiAqIFJ1bnMgYHF1ZXJ5U2VsZWN0b3JBbGxgIG9uIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBzZWxlY3RvciB0aGUgc2VsZWN0b3JcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxc2EoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHRvQXJyYXkoZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG59IiwiaW1wb3J0IHsgdXNlUmVkdWNlciB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgYSBjb21wb25lbnQgdXBkYXRlLiB0aGUgaG9vayBlcXVpdmFsZW50IHRvXG4gKiBgdGhpcy5mb3JjZVVwZGF0ZSgpYCBpbiBhIGNsYXNzIGNvbXBvbmVudC4gSW4gbW9zdCBjYXNlcyB1c2luZyBhIHN0YXRlIHZhbHVlIGRpcmVjdGx5XG4gKiBpcyBwcmVmZXJhYmxlIGJ1dCBtYXkgYmUgcmVxdWlyZWQgaW4gc29tZSBhZHZhbmNlZCB1c2FnZXMgb2YgcmVmcyBmb3IgaW50ZXJvcCBvclxuICogd2hlbiBkaXJlY3QgRE9NIG1hbmlwdWxhdGlvbiBpcyByZXF1aXJlZC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VGb3JjZVVwZGF0ZSgpO1xuICpcbiAqIGNvbnN0IHVwZGF0ZU9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gKiAgZm9yY2VVcGRhdGUoKVxuICogfSwgW2ZvcmNlVXBkYXRlXSlcbiAqXG4gKiByZXR1cm4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17dXBkYXRlT25DbGlja30+SGkgdGhlcmU8L2J1dHRvbj5cbiAqIGBgYFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUZvcmNlVXBkYXRlKCkge1xuICAvLyBUaGUgdG9nZ2xpbmcgc3RhdGUgdmFsdWUgaXMgZGVzaWduZWQgdG8gZGVmZWF0IFJlYWN0IG9wdGltaXphdGlvbnMgZm9yIHNraXBwaW5nXG4gIC8vIHVwZGF0ZXMgd2hlbiB0aGV5IGFyZSBzdHJpY3RpbmcgZXF1YWwgdG8gdGhlIGxhc3Qgc3RhdGUgdmFsdWVcbiAgdmFyIF91c2VSZWR1Y2VyID0gdXNlUmVkdWNlcihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICByZXR1cm4gIXN0YXRlO1xuICB9LCBmYWxzZSksXG4gICAgICBkaXNwYXRjaCA9IF91c2VSZWR1Y2VyWzFdO1xuXG4gIHJldHVybiBkaXNwYXRjaDtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBEcm9wZG93bkNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duQ29udGV4dDsiLCJ2YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZmluZChpdGVyLCB0YXIsIGtleSkge1xuXHRmb3IgKGtleSBvZiBpdGVyLmtleXMoKSkge1xuXHRcdGlmIChkZXF1YWwoa2V5LCB0YXIpKSByZXR1cm4ga2V5O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXF1YWwoZm9vLCBiYXIpIHtcblx0dmFyIGN0b3IsIGxlbiwgdG1wO1xuXHRpZiAoZm9vID09PSBiYXIpIHJldHVybiB0cnVlO1xuXG5cdGlmIChmb28gJiYgYmFyICYmIChjdG9yPWZvby5jb25zdHJ1Y3RvcikgPT09IGJhci5jb25zdHJ1Y3Rvcikge1xuXHRcdGlmIChjdG9yID09PSBEYXRlKSByZXR1cm4gZm9vLmdldFRpbWUoKSA9PT0gYmFyLmdldFRpbWUoKTtcblx0XHRpZiAoY3RvciA9PT0gUmVnRXhwKSByZXR1cm4gZm9vLnRvU3RyaW5nKCkgPT09IGJhci50b1N0cmluZygpO1xuXG5cdFx0aWYgKGN0b3IgPT09IEFycmF5KSB7XG5cdFx0XHRpZiAoKGxlbj1mb28ubGVuZ3RoKSA9PT0gYmFyLmxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZGVxdWFsKGZvb1tsZW5dLCBiYXJbbGVuXSkpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlbiA9PT0gLTE7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IFNldCkge1xuXHRcdFx0aWYgKGZvby5zaXplICE9PSBiYXIuc2l6ZSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxlbiBvZiBmb28pIHtcblx0XHRcdFx0dG1wID0gbGVuO1xuXHRcdFx0XHRpZiAodG1wICYmIHR5cGVvZiB0bXAgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0dG1wID0gZmluZChiYXIsIHRtcCk7XG5cdFx0XHRcdFx0aWYgKCF0bXApIHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWJhci5oYXModG1wKSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IE1hcCkge1xuXHRcdFx0aWYgKGZvby5zaXplICE9PSBiYXIuc2l6ZSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxlbiBvZiBmb28pIHtcblx0XHRcdFx0dG1wID0gbGVuWzBdO1xuXHRcdFx0XHRpZiAodG1wICYmIHR5cGVvZiB0bXAgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0dG1wID0gZmluZChiYXIsIHRtcCk7XG5cdFx0XHRcdFx0aWYgKCF0bXApIHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWRlcXVhbChsZW5bMV0sIGJhci5nZXQodG1wKSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuXHRcdFx0Zm9vID0gbmV3IFVpbnQ4QXJyYXkoZm9vKTtcblx0XHRcdGJhciA9IG5ldyBVaW50OEFycmF5KGJhcik7XG5cdFx0fSBlbHNlIGlmIChjdG9yID09PSBEYXRhVmlldykge1xuXHRcdFx0aWYgKChsZW49Zm9vLmJ5dGVMZW5ndGgpID09PSBiYXIuYnl0ZUxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZm9vLmdldEludDgobGVuKSA9PT0gYmFyLmdldEludDgobGVuKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGZvbykpIHtcblx0XHRcdGlmICgobGVuPWZvby5ieXRlTGVuZ3RoKSA9PT0gYmFyLmJ5dGVMZW5ndGgpIHtcblx0XHRcdFx0d2hpbGUgKGxlbi0tICYmIGZvb1tsZW5dID09PSBiYXJbbGVuXSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoIWN0b3IgfHwgdHlwZW9mIGZvbyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdGxlbiA9IDA7XG5cdFx0XHRmb3IgKGN0b3IgaW4gZm9vKSB7XG5cdFx0XHRcdGlmIChoYXMuY2FsbChmb28sIGN0b3IpICYmICsrbGVuICYmICFoYXMuY2FsbChiYXIsIGN0b3IpKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdGlmICghKGN0b3IgaW4gYmFyKSB8fCAhZGVxdWFsKGZvb1tjdG9yXSwgYmFyW2N0b3JdKSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKGJhcikubGVuZ3RoID09PSBsZW47XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZvbyAhPT0gZm9vICYmIGJhciAhPT0gYmFyO1xufVxuIiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSIsImltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xheW91dFZpZXdwb3J0KCkge1xuICByZXR1cm4gIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZU5hbWUoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudCA/IChlbGVtZW50Lm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmRleE9mKGdldE5vZGVOYW1lKGVsZW1lbnQpKSA+PSAwO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgcmV0dXJuICgoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gIGVsZW1lbnQuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gL2ZpcmVmb3gvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuICB2YXIgaXNJRSA9IC9UcmlkZW50L2kudGVzdChnZXRVQVN0cmluZygpKTtcblxuICBpZiAoaXNJRSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gSW4gSUUgOSwgMTAgYW5kIDExIGZpeGVkIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmxvY2sgaXMgYWx3YXlzIGVzdGFibGlzaGVkIGJ5IHRoZSB2aWV3cG9ydFxuICAgIHZhciBlbGVtZW50Q3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgPj0gMCA/ICd4JyA6ICd5Jztcbn0iLCJpbXBvcnQgeyBtYXggYXMgbWF0aE1heCwgbWluIGFzIG1hdGhNaW4gfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluKG1pbiwgdmFsdWUsIG1heCkge1xuICByZXR1cm4gbWF0aE1heChtaW4sIG1hdGhNaW4odmFsdWUsIG1heCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbk1heENsYW1wKG1pbiwgdmFsdWUsIG1heCkge1xuICB2YXIgdiA9IHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpO1xuICByZXR1cm4gdiA+IG1heCA/IG1heCA6IHY7XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RnJlc2hTaWRlT2JqZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMFxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4cGFuZFRvSGFzaE1hcCh2YWx1ZSwga2V5cykge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoZnVuY3Rpb24gKGhhc2hNYXAsIGtleSkge1xuICAgIGhhc2hNYXBba2V5XSA9IHZhbHVlO1xuICAgIHJldHVybiBoYXNoTWFwO1xuICB9LCB7fSk7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgLy8gRmlyZWZveCB3YW50cyB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLFxuICAgICAgb3ZlcmZsb3cgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WCxcbiAgICAgIG92ZXJmbG93WSA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WTtcblxuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVuLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRTY3JvbGxQYXJlbnQgZnJvbSBcIi4vZ2V0U2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG4vKlxuZ2l2ZW4gYSBET00gZWxlbWVudCwgcmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBzY3JvbGwgcGFyZW50cywgdXAgdGhlIGxpc3Qgb2YgYW5jZXNvcnNcbnVudGlsIHdlIGdldCB0byB0aGUgdG9wIHdpbmRvdyBvYmplY3QuIFRoaXMgbGlzdCBpcyB3aGF0IHdlIGF0dGFjaCBzY3JvbGwgbGlzdGVuZXJzXG50bywgYmVjYXVzZSBpZiBhbnkgb2YgdGhlc2UgcGFyZW50IGVsZW1lbnRzIHNjcm9sbCwgd2UnbGwgbmVlZCB0byByZS1jYWxjdWxhdGUgdGhlXG5yZWZlcmVuY2UgZWxlbWVudCdzIHBvc2l0aW9uLlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGlzdFNjcm9sbFBhcmVudHMoZWxlbWVudCwgbGlzdCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cblxuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpO1xuICB2YXIgaXNCb2R5ID0gc2Nyb2xsUGFyZW50ID09PSAoKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5KTtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhzY3JvbGxQYXJlbnQpO1xuICB2YXIgdGFyZ2V0ID0gaXNCb2R5ID8gW3dpbl0uY29uY2F0KHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNTY3JvbGxQYXJlbnQoc2Nyb2xsUGFyZW50KSA/IHNjcm9sbFBhcmVudCA6IFtdKSA6IHNjcm9sbFBhcmVudDtcbiAgdmFyIHVwZGF0ZWRMaXN0ID0gbGlzdC5jb25jYXQodGFyZ2V0KTtcbiAgcmV0dXJuIGlzQm9keSA/IHVwZGF0ZWRMaXN0IDogLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IGlzQm9keSB0ZWxscyB1cyB0YXJnZXQgd2lsbCBiZSBhbiBIVE1MRWxlbWVudCBoZXJlXG4gIHVwZGF0ZWRMaXN0LmNvbmNhdChsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKHRhcmdldCkpKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iLCJpbXBvcnQgeyB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZpZXdwb3J0UmVjdCBmcm9tIFwiLi9nZXRWaWV3cG9ydFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudFJlY3QgZnJvbSBcIi4vZ2V0RG9jdW1lbnRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi4vdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgbWF4LCBtaW4gfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBmYWxzZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICByZWN0LnRvcCA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIHJlY3QubGVmdCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgcmVjdC5ib3R0b20gPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnJpZ2h0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC53aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QueCA9IHJlY3QubGVmdDtcbiAgcmVjdC55ID0gcmVjdC50b3A7XG4gIHJldHVybiByZWN0O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIHtcbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50ID09PSB2aWV3cG9ydCA/IHJlY3RUb0NsaWVudFJlY3QoZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSA6IHJlY3RUb0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkpO1xufSAvLyBBIFwiY2xpcHBpbmcgcGFyZW50XCIgaXMgYW4gb3ZlcmZsb3dhYmxlIGNvbnRhaW5lciB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgb3ZlcmZsb3dpbmcgZWxlbWVudHMgd2l0aCBhIHBvc2l0aW9uIGRpZmZlcmVudCBmcm9tXG4vLyBgaW5pdGlhbGBcblxuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkge1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gbGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZShlbGVtZW50KSk7XG4gIHZhciBjYW5Fc2NhcGVDbGlwcGluZyA9IFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pID49IDA7XG4gIHZhciBjbGlwcGVyRWxlbWVudCA9IGNhbkVzY2FwZUNsaXBwaW5nICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIGlmICghaXNFbGVtZW50KGNsaXBwZXJFbGVtZW50KSkge1xuICAgIHJldHVybiBbXTtcbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svZmxvdy9pc3N1ZXMvMTQxNFxuXG5cbiAgcmV0dXJuIGNsaXBwaW5nUGFyZW50cy5maWx0ZXIoZnVuY3Rpb24gKGNsaXBwaW5nUGFyZW50KSB7XG4gICAgcmV0dXJuIGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgJiYgY29udGFpbnMoY2xpcHBpbmdQYXJlbnQsIGNsaXBwZXJFbGVtZW50KSAmJiBnZXROb2RlTmFtZShjbGlwcGluZ1BhcmVudCkgIT09ICdib2R5JztcbiAgfSk7XG59IC8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIHBhcmVudHNcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoZWxlbWVudCwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBmaXJzdENsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkpO1xuICBjbGlwcGluZ1JlY3Qud2lkdGggPSBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LmhlaWdodCA9IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wO1xuICBjbGlwcGluZ1JlY3QueCA9IGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QueSA9IGNsaXBwaW5nUmVjdC50b3A7XG4gIHJldHVybiBjbGlwcGluZ1JlY3Q7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDtcblxuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICB2YXIgbGF5b3V0Vmlld3BvcnQgPSBpc0xheW91dFZpZXdwb3J0KCk7XG5cbiAgICBpZiAobGF5b3V0Vmlld3BvcnQgfHwgIWxheW91dFZpZXdwb3J0ICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCksXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IHsgbWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgd2luU2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keTtcbiAgdmFyIHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LnNjcm9sbFdpZHRoIDogMCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKTtcbiAgdmFyIGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkgPyBib2R5LnNjcm9sbEhlaWdodCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudEhlaWdodCA6IDApO1xuICB2YXIgeCA9IC13aW5TY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIHZhciB5ID0gLXdpblNjcm9sbC5zY3JvbGxUb3A7XG5cbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSB8fCBodG1sKS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKSAtIHdpZHRoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4vZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN0YXJ0LCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59IiwiaW1wb3J0IGdldENsaXBwaW5nUmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBjbGlwcGluZ1BhcmVudHMsIHJlZmVyZW5jZSwgcG9wcGVyLCBib3R0b20sIHRvcCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi9leHBhbmRUb0hhc2hNYXAuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIF9vcHRpb25zJHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zJHBsYWNlbWVudCA9PT0gdm9pZCAwID8gc3RhdGUucGxhY2VtZW50IDogX29wdGlvbnMkcGxhY2VtZW50LFxuICAgICAgX29wdGlvbnMkc3RyYXRlZ3kgPSBfb3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIHN0cmF0ZWd5ID0gX29wdGlvbnMkc3RyYXRlZ3kgPT09IHZvaWQgMCA/IHN0YXRlLnN0cmF0ZWd5IDogX29wdGlvbnMkc3RyYXRlZ3ksXG4gICAgICBfb3B0aW9ucyRib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucyRib3VuZGFyeSA9PT0gdm9pZCAwID8gY2xpcHBpbmdQYXJlbnRzIDogX29wdGlvbnMkYm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRyb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucyRyb290Qm91bmRhcnkgPT09IHZvaWQgMCA/IHZpZXdwb3J0IDogX29wdGlvbnMkcm9vdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZWxlbWVudENvbnRlID0gX29wdGlvbnMuZWxlbWVudENvbnRleHQsXG4gICAgICBlbGVtZW50Q29udGV4dCA9IF9vcHRpb25zJGVsZW1lbnRDb250ZSA9PT0gdm9pZCAwID8gcG9wcGVyIDogX29wdGlvbnMkZWxlbWVudENvbnRlLFxuICAgICAgX29wdGlvbnMkYWx0Qm91bmRhcnkgPSBfb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMkYWx0Qm91bmRhcnkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucyRwYWRkaW5nID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkcGFkZGluZztcbiAgdmFyIHBhZGRpbmdPYmplY3QgPSBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xuICB2YXIgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyByZWZlcmVuY2UgOiBwb3BwZXI7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgdmFyIGNsaXBwaW5nQ2xpZW50UmVjdCA9IGdldENsaXBwaW5nUmVjdChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBnZXREb2N1bWVudEVsZW1lbnQoc3RhdGUuZWxlbWVudHMucG9wcGVyKSwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSwgc3RyYXRlZ3kpO1xuICB2YXIgcmVmZXJlbmNlQ2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2UpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgZWxlbWVudDogcG9wcGVyUmVjdCxcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KTtcbiAgdmFyIHBvcHBlckNsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KE9iamVjdC5hc3NpZ24oe30sIHBvcHBlclJlY3QsIHBvcHBlck9mZnNldHMpKTtcbiAgdmFyIGVsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHBvcHBlckNsaWVudFJlY3QgOiByZWZlcmVuY2VDbGllbnRSZWN0OyAvLyBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyByZWN0XG4gIC8vIDAgb3IgbmVnYXRpdmUgPSB3aXRoaW4gdGhlIGNsaXBwaW5nIHJlY3RcblxuICB2YXIgb3ZlcmZsb3dPZmZzZXRzID0ge1xuICAgIHRvcDogY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wLFxuICAgIGJvdHRvbTogZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tLFxuICAgIGxlZnQ6IGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCxcbiAgICByaWdodDogZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0XG4gIH07XG4gIHZhciBvZmZzZXREYXRhID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7IC8vIE9mZnNldHMgY2FuIGJlIGFwcGxpZWQgb25seSB0byB0aGUgcG9wcGVyIGVsZW1lbnRcblxuICBpZiAoZWxlbWVudENvbnRleHQgPT09IHBvcHBlciAmJiBvZmZzZXREYXRhKSB7XG4gICAgdmFyIG9mZnNldCA9IG9mZnNldERhdGFbcGxhY2VtZW50XTtcbiAgICBPYmplY3Qua2V5cyhvdmVyZmxvd09mZnNldHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG11bHRpcGx5ID0gW3JpZ2h0LCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gMSA6IC0xO1xuICAgICAgdmFyIGF4aXMgPSBbdG9wLCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gJ3knIDogJ3gnO1xuICAgICAgb3ZlcmZsb3dPZmZzZXRzW2tleV0gKz0gb2Zmc2V0W2F4aXNdICogbXVsdGlwbHk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb3ZlcmZsb3dPZmZzZXRzO1xufSIsImltcG9ydCBnZXRPcHBvc2l0ZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgY29tcHV0ZUF1dG9QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyBib3R0b20sIHRvcCwgc3RhcnQsIHJpZ2h0LCBsZWZ0LCBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5mdW5jdGlvbiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgaWYgKGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGZsaXAoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgPSBvcHRpb25zLmZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9IG9wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGZsaXBWYXJpYXRpbyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IG9wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzO1xuICB2YXIgcHJlZmVycmVkUGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gYmFzZVBsYWNlbWVudCA9PT0gcHJlZmVycmVkUGxhY2VtZW50O1xuICB2YXIgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBWYXJpYXRpb25zID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocHJlZmVycmVkUGxhY2VtZW50KSk7XG4gIHZhciBwbGFjZW1lbnRzID0gW3ByZWZlcnJlZFBsYWNlbWVudF0uY29uY2F0KGZhbGxiYWNrUGxhY2VtZW50cykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0byA/IGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zOiBmbGlwVmFyaWF0aW9ucyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50czogYWxsb3dlZEF1dG9QbGFjZW1lbnRzXG4gICAgfSkgOiBwbGFjZW1lbnQpO1xuICB9LCBbXSk7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGNoZWNrc01hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIG1ha2VGYWxsYmFja0NoZWNrcyA9IHRydWU7XG4gIHZhciBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzWzBdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGxhY2VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2ldO1xuXG4gICAgdmFyIF9iYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIGlzU3RhcnRWYXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gc3RhcnQ7XG4gICAgdmFyIGlzVmVydGljYWwgPSBbdG9wLCBib3R0b21dLmluZGV4T2YoX2Jhc2VQbGFjZW1lbnQpID49IDA7XG4gICAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSk7XG4gICAgdmFyIG1haW5WYXJpYXRpb25TaWRlID0gaXNWZXJ0aWNhbCA/IGlzU3RhcnRWYXJpYXRpb24gPyByaWdodCA6IGxlZnQgOiBpc1N0YXJ0VmFyaWF0aW9uID8gYm90dG9tIDogdG9wO1xuXG4gICAgaWYgKHJlZmVyZW5jZVJlY3RbbGVuXSA+IHBvcHBlclJlY3RbbGVuXSkge1xuICAgICAgbWFpblZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgfVxuXG4gICAgdmFyIGFsdFZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgdmFyIGNoZWNrcyA9IFtdO1xuXG4gICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W19iYXNlUGxhY2VtZW50XSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1ttYWluVmFyaWF0aW9uU2lkZV0gPD0gMCwgb3ZlcmZsb3dbYWx0VmFyaWF0aW9uU2lkZV0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrcy5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgIHJldHVybiBjaGVjaztcbiAgICB9KSkge1xuICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgbWFrZUZhbGxiYWNrQ2hlY2tzID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjaGVja3NNYXAuc2V0KHBsYWNlbWVudCwgY2hlY2tzKTtcbiAgfVxuXG4gIGlmIChtYWtlRmFsbGJhY2tDaGVja3MpIHtcbiAgICAvLyBgMmAgbWF5IGJlIGRlc2lyZWQgaW4gc29tZSBjYXNlcyDigJMgcmVzZWFyY2ggbGF0ZXJcbiAgICB2YXIgbnVtYmVyT2ZDaGVja3MgPSBmbGlwVmFyaWF0aW9ucyA/IDMgOiAxO1xuXG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgIHZhciBmaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50cy5maW5kKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICAgICAgdmFyIGNoZWNrcyA9IGNoZWNrc01hcC5nZXQocGxhY2VtZW50KTtcblxuICAgICAgICBpZiAoY2hlY2tzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoZWNrcy5zbGljZSgwLCBfaSkuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2s7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZml0dGluZ1BsYWNlbWVudCkge1xuICAgICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBmaXR0aW5nUGxhY2VtZW50O1xuICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IG51bWJlck9mQ2hlY2tzOyBfaSA+IDA7IF9pLS0pIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoX2kpO1xuXG4gICAgICBpZiAoX3JldCA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUucGxhY2VtZW50ICE9PSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwID0gdHJ1ZTtcbiAgICBzdGF0ZS5wbGFjZW1lbnQgPSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgc3RhdGUucmVzZXQgPSB0cnVlO1xuICB9XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdmbGlwJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGZsaXAsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J10sXG4gIGRhdGE6IHtcbiAgICBfc2tpcDogZmFsc2VcbiAgfVxufTsiLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogVGhlIGBhbGxvd2VkQXV0b1BsYWNlbWVudHNgIG9wdGlvbiBkaWQgbm90IGFsbG93IGFueScsICdwbGFjZW1lbnRzLiBFbnN1cmUgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbiBtYXRjaGVzIHRoZSB2YXJpYXRpb24nLCAnb2YgdGhlIGFsbG93ZWQgcGxhY2VtZW50cy4nLCAnRm9yIGV4YW1wbGUsIFwiYXV0b1wiIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG93IFwiYm90dG9tLXN0YXJ0XCIuJywgJ1VzZSBcImF1dG8tc3RhcnRcIiBpbnN0ZWFkLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgeyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QsIHByZXZlbnRlZE9mZnNldHMpIHtcbiAgaWYgKHByZXZlbnRlZE9mZnNldHMgPT09IHZvaWQgMCkge1xuICAgIHByZXZlbnRlZE9mZnNldHMgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQgLSBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCArIHByZXZlbnRlZE9mZnNldHMueCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0ICsgcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoIC0gcHJldmVudGVkT2Zmc2V0cy54XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0uc29tZShmdW5jdGlvbiAoc2lkZSkge1xuICAgIHJldHVybiBvdmVyZmxvd1tzaWRlXSA+PSAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGlkZShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBwcmV2ZW50ZWRPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3c7XG4gIHZhciByZWZlcmVuY2VPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gIH0pO1xuICB2YXIgcG9wcGVyQWx0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gIH0pO1xuICB2YXIgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocmVmZXJlbmNlT3ZlcmZsb3csIHJlZmVyZW5jZVJlY3QpO1xuICB2YXIgcG9wcGVyRXNjYXBlT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHBvcHBlckFsdE92ZXJmbG93LCBwb3BwZXJSZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKTtcbiAgdmFyIGlzUmVmZXJlbmNlSGlkZGVuID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyk7XG4gIHZhciBoYXNQb3BwZXJFc2NhcGVkID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHBvcHBlckVzY2FwZU9mZnNldHMpO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0ge1xuICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzLFxuICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IHBvcHBlckVzY2FwZU9mZnNldHMsXG4gICAgaXNSZWZlcmVuY2VIaWRkZW46IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgIGhhc1BvcHBlckVzY2FwZWQ6IGhhc1BvcHBlckVzY2FwZWRcbiAgfTtcbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuJzogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgJ2RhdGEtcG9wcGVyLWVzY2FwZWQnOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaGlkZScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J10sXG4gIGZuOiBoaWRlXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBwbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgcmVjdHMsIG9mZnNldCkge1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgdmFyIGludmVydERpc3RhbmNlID0gW2xlZnQsIHRvcF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8gLTEgOiAxO1xuXG4gIHZhciBfcmVmID0gdHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IG9mZnNldChPYmplY3QuYXNzaWduKHt9LCByZWN0cywge1xuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pKSA6IG9mZnNldCxcbiAgICAgIHNraWRkaW5nID0gX3JlZlswXSxcbiAgICAgIGRpc3RhbmNlID0gX3JlZlsxXTtcblxuICBza2lkZGluZyA9IHNraWRkaW5nIHx8IDA7XG4gIGRpc3RhbmNlID0gKGRpc3RhbmNlIHx8IDApICogaW52ZXJ0RGlzdGFuY2U7XG4gIHJldHVybiBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IHtcbiAgICB4OiBkaXN0YW5jZSxcbiAgICB5OiBza2lkZGluZ1xuICB9IDoge1xuICAgIHg6IHNraWRkaW5nLFxuICAgIHk6IGRpc3RhbmNlXG4gIH07XG59XG5cbmZ1bmN0aW9uIG9mZnNldChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYyLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRvZmZzZXQgPSBvcHRpb25zLm9mZnNldCxcbiAgICAgIG9mZnNldCA9IF9vcHRpb25zJG9mZnNldCA9PT0gdm9pZCAwID8gWzAsIDBdIDogX29wdGlvbnMkb2Zmc2V0O1xuICB2YXIgZGF0YSA9IHBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCBzdGF0ZS5yZWN0cywgb2Zmc2V0KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHZhciBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQgPSBkYXRhW3N0YXRlLnBsYWNlbWVudF0sXG4gICAgICB4ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50LngsXG4gICAgICB5ID0gX2RhdGEkc3RhdGUkcGxhY2VtZW50Lnk7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnggKz0geDtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueSArPSB5O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvZmZzZXQnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIGZuOiBvZmZzZXRcbn07IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBzdGFydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEFsdEF4aXMgZnJvbSBcIi4uL3V0aWxzL2dldEFsdEF4aXMuanNcIjtcbmltcG9ydCB7IHdpdGhpbiwgd2l0aGluTWF4Q2xhbXAgfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi4vdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5pbXBvcnQgeyBtaW4gYXMgbWF0aE1pbiwgbWF4IGFzIG1hdGhNYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBwcmV2ZW50T3ZlcmZsb3coX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXIgPSBvcHRpb25zLnRldGhlcixcbiAgICAgIHRldGhlciA9IF9vcHRpb25zJHRldGhlciA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHRldGhlcixcbiAgICAgIF9vcHRpb25zJHRldGhlck9mZnNldCA9IG9wdGlvbnMudGV0aGVyT2Zmc2V0LFxuICAgICAgdGV0aGVyT2Zmc2V0ID0gX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkdGV0aGVyT2Zmc2V0O1xuICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeVxuICB9KTtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9ICF2YXJpYXRpb247XG4gIHZhciBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGFsdEF4aXMgPSBnZXRBbHRBeGlzKG1haW5BeGlzKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IHRldGhlck9mZnNldChPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHRldGhlck9mZnNldDtcbiAgdmFyIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXRWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHRldGhlck9mZnNldFZhbHVlLFxuICAgIGFsdEF4aXM6IHRldGhlck9mZnNldFZhbHVlXG4gIH0gOiBPYmplY3QuYXNzaWduKHtcbiAgICBtYWluQXhpczogMCxcbiAgICBhbHRBeGlzOiAwXG4gIH0sIHRldGhlck9mZnNldFZhbHVlKTtcbiAgdmFyIG9mZnNldE1vZGlmaWVyU3RhdGUgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldCA/IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0W3N0YXRlLnBsYWNlbWVudF0gOiBudWxsO1xuICB2YXIgZGF0YSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAoIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQ7XG5cbiAgICB2YXIgbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgICB2YXIgYWx0U2lkZSA9IG1haW5BeGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICB2YXIgb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1ttYWluQXhpc107XG4gICAgdmFyIG1pbiA9IG9mZnNldCArIG92ZXJmbG93W21haW5TaWRlXTtcbiAgICB2YXIgbWF4ID0gb2Zmc2V0IC0gb3ZlcmZsb3dbYWx0U2lkZV07XG4gICAgdmFyIGFkZGl0aXZlID0gdGV0aGVyID8gLXBvcHBlclJlY3RbbGVuXSAvIDIgOiAwO1xuICAgIHZhciBtaW5MZW4gPSB2YXJpYXRpb24gPT09IHN0YXJ0ID8gcmVmZXJlbmNlUmVjdFtsZW5dIDogcG9wcGVyUmVjdFtsZW5dO1xuICAgIHZhciBtYXhMZW4gPSB2YXJpYXRpb24gPT09IHN0YXJ0ID8gLXBvcHBlclJlY3RbbGVuXSA6IC1yZWZlcmVuY2VSZWN0W2xlbl07IC8vIFdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgYXJyb3cgaW4gdGhlIGNhbGN1bGF0aW9uIHNvIHRoZSBhcnJvdyBkb2Vzbid0IGdvXG4gICAgLy8gb3V0c2lkZSB0aGUgcmVmZXJlbmNlIGJvdW5kc1xuXG4gICAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICAgIHZhciBhcnJvd1JlY3QgPSB0ZXRoZXIgJiYgYXJyb3dFbGVtZW50ID8gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpIDoge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICAgIHZhciBhcnJvd1BhZGRpbmdPYmplY3QgPSBzdGF0ZS5tb2RpZmllcnNEYXRhWydhcnJvdyNwZXJzaXN0ZW50J10gPyBzdGF0ZS5tb2RpZmllcnNEYXRhWydhcnJvdyNwZXJzaXN0ZW50J10ucGFkZGluZyA6IGdldEZyZXNoU2lkZU9iamVjdCgpO1xuICAgIHZhciBhcnJvd1BhZGRpbmdNaW4gPSBhcnJvd1BhZGRpbmdPYmplY3RbbWFpblNpZGVdO1xuICAgIHZhciBhcnJvd1BhZGRpbmdNYXggPSBhcnJvd1BhZGRpbmdPYmplY3RbYWx0U2lkZV07IC8vIElmIHRoZSByZWZlcmVuY2UgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiB0aGUgYXJyb3cgbGVuZ3RoLCB3ZSBkb24ndCB3YW50XG4gICAgLy8gdG8gaW5jbHVkZSBpdHMgZnVsbCBzaXplIGluIHRoZSBjYWxjdWxhdGlvbi4gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbFxuICAgIC8vIGFuZCBuZWFyIHRoZSBlZGdlIG9mIGEgYm91bmRhcnksIHRoZSBwb3BwZXIgY2FuIG92ZXJmbG93IGV2ZW4gaWYgdGhlXG4gICAgLy8gcmVmZXJlbmNlIGlzIG5vdCBvdmVyZmxvd2luZyBhcyB3ZWxsIChlLmcuIHZpcnR1YWwgZWxlbWVudHMgd2l0aCBub1xuICAgIC8vIHdpZHRoIG9yIGhlaWdodClcblxuICAgIHZhciBhcnJvd0xlbiA9IHdpdGhpbigwLCByZWZlcmVuY2VSZWN0W2xlbl0sIGFycm93UmVjdFtsZW5dKTtcbiAgICB2YXIgbWluT2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiAtIGFkZGl0aXZlIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtaW5MZW4gLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgbWF4T2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gLXJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgKyBhZGRpdGl2ZSArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWF4TGVuICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3cgJiYgZ2V0T2Zmc2V0UGFyZW50KHN0YXRlLmVsZW1lbnRzLmFycm93KTtcbiAgICB2YXIgY2xpZW50T2Zmc2V0ID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBtYWluQXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50VG9wIHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRMZWZ0IHx8IDAgOiAwO1xuICAgIHZhciBvZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJCA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbbWFpbkF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkIDogMDtcbiAgICB2YXIgdGV0aGVyTWluID0gb2Zmc2V0ICsgbWluT2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIGNsaWVudE9mZnNldDtcbiAgICB2YXIgdGV0aGVyTWF4ID0gb2Zmc2V0ICsgbWF4T2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZTtcbiAgICB2YXIgcHJldmVudGVkT2Zmc2V0ID0gd2l0aGluKHRldGhlciA/IG1hdGhNaW4obWluLCB0ZXRoZXJNaW4pIDogbWluLCBvZmZzZXQsIHRldGhlciA/IG1hdGhNYXgobWF4LCB0ZXRoZXJNYXgpIDogbWF4KTtcbiAgICBwb3BwZXJPZmZzZXRzW21haW5BeGlzXSA9IHByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW21haW5BeGlzXSA9IHByZXZlbnRlZE9mZnNldCAtIG9mZnNldDtcbiAgfVxuXG4gIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkMjtcblxuICAgIHZhciBfbWFpblNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gdG9wIDogbGVmdDtcblxuICAgIHZhciBfYWx0U2lkZSA9IG1haW5BeGlzID09PSAneCcgPyBib3R0b20gOiByaWdodDtcblxuICAgIHZhciBfb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1thbHRBeGlzXTtcblxuICAgIHZhciBfbGVuID0gYWx0QXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgdmFyIF9taW4gPSBfb2Zmc2V0ICsgb3ZlcmZsb3dbX21haW5TaWRlXTtcblxuICAgIHZhciBfbWF4ID0gX29mZnNldCAtIG92ZXJmbG93W19hbHRTaWRlXTtcblxuICAgIHZhciBpc09yaWdpblNpZGUgPSBbdG9wLCBsZWZ0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpICE9PSAtMTtcblxuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVthbHRBeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJDIgOiAwO1xuXG4gICAgdmFyIF90ZXRoZXJNaW4gPSBpc09yaWdpblNpZGUgPyBfbWluIDogX29mZnNldCAtIHJlZmVyZW5jZVJlY3RbX2xlbl0gLSBwb3BwZXJSZWN0W19sZW5dIC0gX29mZnNldE1vZGlmaWVyVmFsdWUgKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUuYWx0QXhpcztcblxuICAgIHZhciBfdGV0aGVyTWF4ID0gaXNPcmlnaW5TaWRlID8gX29mZnNldCArIHJlZmVyZW5jZVJlY3RbX2xlbl0gKyBwb3BwZXJSZWN0W19sZW5dIC0gX29mZnNldE1vZGlmaWVyVmFsdWUgLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUuYWx0QXhpcyA6IF9tYXg7XG5cbiAgICB2YXIgX3ByZXZlbnRlZE9mZnNldCA9IHRldGhlciAmJiBpc09yaWdpblNpZGUgPyB3aXRoaW5NYXhDbGFtcChfdGV0aGVyTWluLCBfb2Zmc2V0LCBfdGV0aGVyTWF4KSA6IHdpdGhpbih0ZXRoZXIgPyBfdGV0aGVyTWluIDogX21pbiwgX29mZnNldCwgdGV0aGVyID8gX3RldGhlck1heCA6IF9tYXgpO1xuXG4gICAgcG9wcGVyT2Zmc2V0c1thbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVthbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQgLSBfb2Zmc2V0O1xuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogcHJldmVudE92ZXJmbG93LFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddXG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJvdW5kKHJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICB2YXIgc2NhbGVZID0gcm91bmQocmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMTtcbiAgcmV0dXJuIHNjYWxlWCAhPT0gMSB8fCBzY2FsZVkgIT09IDE7XG59IC8vIFJldHVybnMgdGhlIGNvbXBvc2l0ZSByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC5cbi8vIENvbXBvc2l0ZSBtZWFucyBpdCB0YWtlcyBpbnRvIGFjY291bnQgdHJhbnNmb3JtcyBhcyB3ZWxsIGFzIGxheW91dC5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wb3NpdGVSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnQsIGlzRml4ZWQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudElzU2NhbGVkID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzRWxlbWVudFNjYWxlZChvZmZzZXRQYXJlbnQpO1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnRJc1NjYWxlZCwgaXNGaXhlZCk7XG4gIHZhciBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMDc4XG4gICAgaXNTY3JvbGxQYXJlbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIG9mZnNldHMgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlKTtcbiAgICAgIG9mZnNldHMueCArPSBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSArPSBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCB7IG1vZGlmaWVyUGhhc2VzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIHNvdXJjZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDk4NzUyNTVcblxuZnVuY3Rpb24gb3JkZXIobW9kaWZpZXJzKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIG1hcC5zZXQobW9kaWZpZXIubmFtZSwgbW9kaWZpZXIpO1xuICB9KTsgLy8gT24gdmlzaXRpbmcgb2JqZWN0LCBjaGVjayBmb3IgaXRzIGRlcGVuZGVuY2llcyBhbmQgdmlzaXQgdGhlbSByZWN1cnNpdmVseVxuXG4gIGZ1bmN0aW9uIHNvcnQobW9kaWZpZXIpIHtcbiAgICB2aXNpdGVkLmFkZChtb2RpZmllci5uYW1lKTtcbiAgICB2YXIgcmVxdWlyZXMgPSBbXS5jb25jYXQobW9kaWZpZXIucmVxdWlyZXMgfHwgW10sIG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pO1xuICAgIHJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKGRlcCkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhkZXApKSB7XG4gICAgICAgIHZhciBkZXBNb2RpZmllciA9IG1hcC5nZXQoZGVwKTtcblxuICAgICAgICBpZiAoZGVwTW9kaWZpZXIpIHtcbiAgICAgICAgICBzb3J0KGRlcE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmICghdmlzaXRlZC5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2aXNpdGVkIG9iamVjdFxuICAgICAgc29ydChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkZXJNb2RpZmllcnMobW9kaWZpZXJzKSB7XG4gIC8vIG9yZGVyIGJhc2VkIG9uIGRlcGVuZGVuY2llc1xuICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyKG1vZGlmaWVycyk7IC8vIG9yZGVyIGJhc2VkIG9uIHBoYXNlXG5cbiAgcmV0dXJuIG1vZGlmaWVyUGhhc2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwaGFzZSkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgcmV0dXJuIG1vZGlmaWVyLnBoYXNlID09PSBwaGFzZTtcbiAgICB9KSk7XG4gIH0sIFtdKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcG9zaXRlUmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBvcmRlck1vZGlmaWVycyBmcm9tIFwiLi91dGlscy9vcmRlck1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gXCIuL3V0aWxzL2RlYm91bmNlLmpzXCI7XG5pbXBvcnQgdmFsaWRhdGVNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanNcIjtcbmltcG9ydCB1bmlxdWVCeSBmcm9tIFwiLi91dGlscy91bmlxdWVCeS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IG1lcmdlQnlOYW1lIGZyb20gXCIuL3V0aWxzL21lcmdlQnlOYW1lLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX0VMRU1FTlRfRVJST1IgPSAnUG9wcGVyOiBJbnZhbGlkIHJlZmVyZW5jZSBvciBwb3BwZXIgYXJndW1lbnQgcHJvdmlkZWQuIFRoZXkgbXVzdCBiZSBlaXRoZXIgYSBET00gZWxlbWVudCBvciB2aXJ0dWFsIGVsZW1lbnQuJztcbnZhciBJTkZJTklURV9MT09QX0VSUk9SID0gJ1BvcHBlcjogQW4gaW5maW5pdGUgbG9vcCBpbiB0aGUgbW9kaWZpZXJzIGN5Y2xlIGhhcyBiZWVuIGRldGVjdGVkISBUaGUgY3ljbGUgaGFzIGJlZW4gaW50ZXJydXB0ZWQgdG8gcHJldmVudCBhIGJyb3dzZXIgY3Jhc2guJztcbnZhciBERUZBVUxUX09QVElPTlMgPSB7XG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1vZGlmaWVyczogW10sXG4gIHN0cmF0ZWd5OiAnYWJzb2x1dGUnXG59O1xuXG5mdW5jdGlvbiBhcmVWYWxpZEVsZW1lbnRzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuICFhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gIShlbGVtZW50ICYmIHR5cGVvZiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9wcGVyR2VuZXJhdG9yKGdlbmVyYXRvck9wdGlvbnMpIHtcbiAgaWYgKGdlbmVyYXRvck9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIGdlbmVyYXRvck9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfZ2VuZXJhdG9yT3B0aW9ucyA9IGdlbmVyYXRvck9wdGlvbnMsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0TW9kaWZpZXJzLFxuICAgICAgZGVmYXVsdE1vZGlmaWVycyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9PT0gdm9pZCAwID8gW10gOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICBkZWZhdWx0T3B0aW9ucyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPT09IHZvaWQgMCA/IERFRkFVTFRfT1BUSU9OUyA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZjI7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVQb3BwZXIocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgdmFyIHN0YXRlID0ge1xuICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLFxuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBkZWZhdWx0T3B0aW9ucyksXG4gICAgICBtb2RpZmllcnNEYXRhOiB7fSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXI6IHBvcHBlclxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgc3R5bGVzOiB7fVxuICAgIH07XG4gICAgdmFyIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB2YXIgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgaW5zdGFuY2UgPSB7XG4gICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbiBzZXRPcHRpb25zKHNldE9wdGlvbnNBY3Rpb24pIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2V0T3B0aW9uc0FjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHNldE9wdGlvbnNBY3Rpb24oc3RhdGUub3B0aW9ucykgOiBzZXRPcHRpb25zQWN0aW9uO1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHN0YXRlLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgc3RhdGUub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIHN0YXRlLnNjcm9sbFBhcmVudHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10sXG4gICAgICAgICAgcG9wcGVyOiBsaXN0U2Nyb2xsUGFyZW50cyhwb3BwZXIpXG4gICAgICAgIH07IC8vIE9yZGVycyB0aGUgbW9kaWZpZXJzIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgYHBoYXNlYFxuICAgICAgICAvLyBwcm9wZXJ0aWVzXG5cbiAgICAgICAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlck1vZGlmaWVycyhtZXJnZUJ5TmFtZShbXS5jb25jYXQoZGVmYXVsdE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpKSk7IC8vIFN0cmlwIG91dCBkaXNhYmxlZCBtb2RpZmllcnNcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICByZXR1cm4gbS5lbmFibGVkO1xuICAgICAgICB9KTsgLy8gVmFsaWRhdGUgdGhlIHByb3ZpZGVkIG1vZGlmaWVycyBzbyB0aGF0IHRoZSBjb25zdW1lciB3aWxsIGdldCB3YXJuZWRcbiAgICAgICAgLy8gaWYgb25lIG9mIHRoZSBtb2RpZmllcnMgaXMgaW52YWxpZCBmb3IgYW55IHJlYXNvblxuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICB2YXIgbW9kaWZpZXJzID0gdW5pcXVlQnkoW10uY29uY2F0KG9yZGVyZWRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFsaWRhdGVNb2RpZmllcnMobW9kaWZpZXJzKTtcblxuICAgICAgICAgIGlmIChnZXRCYXNlUGxhY2VtZW50KHN0YXRlLm9wdGlvbnMucGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgICAgICAgICAgdmFyIGZsaXBNb2RpZmllciA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZmluZChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmMi5uYW1lO1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gJ2ZsaXAnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZmxpcE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXV0b1wiIHBsYWNlbWVudHMgcmVxdWlyZSB0aGUgXCJmbGlwXCIgbW9kaWZpZXIgYmUnLCAncHJlc2VudCBhbmQgZW5hYmxlZCB0byB3b3JrLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShwb3BwZXIpLFxuICAgICAgICAgICAgICBtYXJnaW5Ub3AgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3AsXG4gICAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luUmlnaHQsXG4gICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgbWFyZ2luTGVmdCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpbkxlZnQ7IC8vIFdlIG5vIGxvbmdlciB0YWtlIGludG8gYWNjb3VudCBgbWFyZ2luc2Agb24gdGhlIHBvcHBlciwgYW5kIGl0IGNhblxuICAgICAgICAgIC8vIGNhdXNlIGJ1Z3Mgd2l0aCBwb3NpdGlvbmluZywgc28gd2UnbGwgd2FybiB0aGUgY29uc3VtZXJcblxuXG4gICAgICAgICAgaWYgKFttYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnRdLnNvbWUoZnVuY3Rpb24gKG1hcmdpbikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobWFyZ2luKTtcbiAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBDU1MgXCJtYXJnaW5cIiBzdHlsZXMgY2Fubm90IGJlIHVzZWQgdG8gYXBwbHkgcGFkZGluZycsICdiZXR3ZWVuIHRoZSBwb3BwZXIgYW5kIGl0cyByZWZlcmVuY2UgZWxlbWVudCBvciBib3VuZGFyeS4nLCAnVG8gcmVwbGljYXRlIG1hcmdpbiwgdXNlIHRoZSBgb2Zmc2V0YCBtb2RpZmllciwgYXMgd2VsbCBhcycsICd0aGUgYHBhZGRpbmdgIG9wdGlvbiBpbiB0aGUgYHByZXZlbnRPdmVyZmxvd2AgYW5kIGBmbGlwYCcsICdtb2RpZmllcnMuJ10uam9pbignICcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBydW5Nb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIC8vIFN5bmMgdXBkYXRlIOKAkyBpdCB3aWxsIGFsd2F5cyBiZSBleGVjdXRlZCwgZXZlbiBpZiBub3QgbmVjZXNzYXJ5LiBUaGlzXG4gICAgICAvLyBpcyB1c2VmdWwgZm9yIGxvdyBmcmVxdWVuY3kgdXBkYXRlcyB3aGVyZSBzeW5jIGJlaGF2aW9yIHNpbXBsaWZpZXMgdGhlXG4gICAgICAvLyBsb2dpYy5cbiAgICAgIC8vIEZvciBoaWdoIGZyZXF1ZW5jeSB1cGRhdGVzIChlLmcuIGByZXNpemVgIGFuZCBgc2Nyb2xsYCBldmVudHMpLCBhbHdheXNcbiAgICAgIC8vIHByZWZlciB0aGUgYXN5bmMgUG9wcGVyI3VwZGF0ZSBtZXRob2RcbiAgICAgIGZvcmNlVXBkYXRlOiBmdW5jdGlvbiBmb3JjZVVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKGlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9zdGF0ZSRlbGVtZW50cyA9IHN0YXRlLmVsZW1lbnRzLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gX3N0YXRlJGVsZW1lbnRzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgIHBvcHBlciA9IF9zdGF0ZSRlbGVtZW50cy5wb3BwZXI7IC8vIERvbid0IHByb2NlZWQgaWYgYHJlZmVyZW5jZWAgb3IgYHBvcHBlcmAgYXJlIG5vdCB2YWxpZCBlbGVtZW50c1xuICAgICAgICAvLyBhbnltb3JlXG5cbiAgICAgICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gU3RvcmUgdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyIHJlY3RzIHRvIGJlIHJlYWQgYnkgbW9kaWZpZXJzXG5cblxuICAgICAgICBzdGF0ZS5yZWN0cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGdldENvbXBvc2l0ZVJlY3QocmVmZXJlbmNlLCBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKSwgc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJyksXG4gICAgICAgICAgcG9wcGVyOiBnZXRMYXlvdXRSZWN0KHBvcHBlcilcbiAgICAgICAgfTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gcmVzZXQgdGhlIGN1cnJlbnQgdXBkYXRlIGN5Y2xlLiBUaGVcbiAgICAgICAgLy8gbW9zdCBjb21tb24gdXNlIGNhc2UgZm9yIHRoaXMgaXMgdGhlIGBmbGlwYCBtb2RpZmllciBjaGFuZ2luZyB0aGVcbiAgICAgICAgLy8gcGxhY2VtZW50LCB3aGljaCB0aGVuIG5lZWRzIHRvIHJlLXJ1biBhbGwgdGhlIG1vZGlmaWVycywgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gbG9naWMgd2FzIHByZXZpb3VzbHkgcmFuIGZvciB0aGUgcHJldmlvdXMgcGxhY2VtZW50IGFuZCBpcyB0aGVyZWZvcmVcbiAgICAgICAgLy8gc3RhbGUvaW5jb3JyZWN0XG5cbiAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7IC8vIE9uIGVhY2ggdXBkYXRlIGN5Y2xlLCB0aGUgYG1vZGlmaWVyc0RhdGFgIHByb3BlcnR5IGZvciBlYWNoIG1vZGlmaWVyXG4gICAgICAgIC8vIGlzIGZpbGxlZCB3aXRoIHRoZSBpbml0aWFsIGRhdGEgc3BlY2lmaWVkIGJ5IHRoZSBtb2RpZmllci4gVGhpcyBtZWFuc1xuICAgICAgICAvLyBpdCBkb2Vzbid0IHBlcnNpc3QgYW5kIGlzIGZyZXNoIG9uIGVhY2ggdXBkYXRlLlxuICAgICAgICAvLyBUbyBlbnN1cmUgcGVyc2lzdGVudCBkYXRhLCB1c2UgYCR7bmFtZX0jcGVyc2lzdGVudGBcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vZGlmaWVyc0RhdGFbbW9kaWZpZXIubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllci5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX2RlYnVnX2xvb3BzX18gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIF9fZGVidWdfbG9vcHNfXyArPSAxO1xuXG4gICAgICAgICAgICBpZiAoX19kZWJ1Z19sb29wc19fID4gMTAwKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSU5GSU5JVEVfTE9PUF9FUlJPUik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX3N0YXRlJG9yZGVyZWRNb2RpZmllID0gc3RhdGUub3JkZXJlZE1vZGlmaWVyc1tpbmRleF0sXG4gICAgICAgICAgICAgIGZuID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLmZuLFxuICAgICAgICAgICAgICBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm9wdGlvbnMsXG4gICAgICAgICAgICAgIF9vcHRpb25zID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9PT0gdm9pZCAwID8ge30gOiBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyLFxuICAgICAgICAgICAgICBuYW1lID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm5hbWU7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGZuKHtcbiAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfb3B0aW9ucyxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgICAgICB9KSB8fCBzdGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBc3luYyBhbmQgb3B0aW1pc3RpY2FsbHkgb3B0aW1pemVkIHVwZGF0ZSDigJMgaXQgd2lsbCBub3QgYmUgZXhlY3V0ZWQgaWZcbiAgICAgIC8vIG5vdCBuZWNlc3NhcnkgKGRlYm91bmNlZCB0byBydW4gYXQgbW9zdCBvbmNlLXBlci10aWNrKVxuICAgICAgdXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZShzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIGlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zZXRPcHRpb25zKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBpZiAoIWlzRGVzdHJveWVkICYmIG9wdGlvbnMub25GaXJzdFVwZGF0ZSkge1xuICAgICAgICBvcHRpb25zLm9uRmlyc3RVcGRhdGUoc3RhdGUpO1xuICAgICAgfVxuICAgIH0pOyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIGJlZm9yZSB0aGUgZmlyc3RcbiAgICAvLyB1cGRhdGUgY3ljbGUgcnVucy4gVGhleSB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSB1cGRhdGVcbiAgICAvLyBjeWNsZS4gVGhpcyBpcyB1c2VmdWwgd2hlbiBhIG1vZGlmaWVyIGFkZHMgc29tZSBwZXJzaXN0ZW50IGRhdGEgdGhhdFxuICAgIC8vIG90aGVyIG1vZGlmaWVycyBuZWVkIHRvIHVzZSwgYnV0IHRoZSBtb2RpZmllciBpcyBydW4gYWZ0ZXIgdGhlIGRlcGVuZGVudFxuICAgIC8vIG9uZS5cblxuICAgIGZ1bmN0aW9uIHJ1bk1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmMy5uYW1lLFxuICAgICAgICAgICAgX3JlZjMkb3B0aW9ucyA9IF9yZWYzLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zID0gX3JlZjMkb3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiBfcmVmMyRvcHRpb25zLFxuICAgICAgICAgICAgZWZmZWN0ID0gX3JlZjMuZWZmZWN0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZWZmZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFyIGNsZWFudXBGbiA9IGVmZmVjdCh7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIG5vb3BGbiA9IGZ1bmN0aW9uIG5vb3BGbigpIHt9O1xuXG4gICAgICAgICAgZWZmZWN0Q2xlYW51cEZucy5wdXNoKGNsZWFudXBGbiB8fCBub29wRm4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgZWZmZWN0Q2xlYW51cEZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgIH0pO1xuICAgICAgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cbmV4cG9ydCB2YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGRldGVjdE92ZXJmbG93IH07IiwiaW1wb3J0IGFycm93IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cnO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzJztcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzJztcbmltcG9ydCBmbGlwIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcCc7XG5pbXBvcnQgaGlkZSBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUnO1xuaW1wb3J0IG9mZnNldCBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldCc7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMnO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdyc7XG5pbXBvcnQgeyBwbGFjZW1lbnRzIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zJztcbmltcG9ydCB7IHBvcHBlckdlbmVyYXRvciB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXItYmFzZSc7XG5cbi8vIEZvciB0aGUgY29tbW9uIEpTIGJ1aWxkIHdlIHdpbGwgdHVybiB0aGlzIGZpbGUgaW50byBhIGJ1bmRsZSB3aXRoIG5vIGltcG9ydHMuXG4vLyBUaGlzIGlzIGIvYyB0aGUgUG9wcGVyIGxpYiBpcyBhbGwgZXNtIGZpbGVzLCBhbmQgd291bGQgYnJlYWsgaW4gYSBjb21tb24ganMgb25seSBlbnZpcm9ubWVudFxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvcHBlciA9IHBvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IFtoaWRlLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBldmVudExpc3RlbmVycywgb2Zmc2V0LCBmbGlwLCBwcmV2ZW50T3ZlcmZsb3csIGFycm93XVxufSk7XG5leHBvcnQgeyBwbGFjZW1lbnRzIH07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImNvbnN0IF9leGNsdWRlZCA9IFtcImVuYWJsZWRcIiwgXCJwbGFjZW1lbnRcIiwgXCJzdHJhdGVneVwiLCBcIm1vZGlmaWVyc1wiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBkZXF1YWwgfSBmcm9tICdkZXF1YWwnO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAcmVzdGFydC9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHsgY3JlYXRlUG9wcGVyIH0gZnJvbSAnLi9wb3BwZXInO1xuY29uc3QgZGlzYWJsZWRBcHBseVN0eWxlc01vZGlmaWVyID0ge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiBmYWxzZSxcbiAgcGhhc2U6ICdhZnRlcldyaXRlJyxcbiAgZm46ICgpID0+IHVuZGVmaW5lZFxufTtcblxuLy8gdW50aWwgZG9janMgc3VwcG9ydHMgdHlwZSBleHBvcnRzLi4uXG5cbmNvbnN0IGFyaWFEZXNjcmliZWRCeU1vZGlmaWVyID0ge1xuICBuYW1lOiAnYXJpYURlc2NyaWJlZEJ5JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdhZnRlcldyaXRlJyxcbiAgZWZmZWN0OiAoe1xuICAgIHN0YXRlXG4gIH0pID0+ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICByZWZlcmVuY2UsXG4gICAgICBwb3BwZXJcbiAgICB9ID0gc3RhdGUuZWxlbWVudHM7XG4gICAgaWYgKCdyZW1vdmVBdHRyaWJ1dGUnIGluIHJlZmVyZW5jZSkge1xuICAgICAgY29uc3QgaWRzID0gKHJlZmVyZW5jZS5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKSB8fCAnJykuc3BsaXQoJywnKS5maWx0ZXIoaWQgPT4gaWQudHJpbSgpICE9PSBwb3BwZXIuaWQpO1xuICAgICAgaWYgKCFpZHMubGVuZ3RoKSByZWZlcmVuY2UucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7ZWxzZSByZWZlcmVuY2Uuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgaWRzLmpvaW4oJywnKSk7XG4gICAgfVxuICB9LFxuICBmbjogKHtcbiAgICBzdGF0ZVxuICB9KSA9PiB7XG4gICAgdmFyIF9wb3BwZXIkZ2V0QXR0cmlidXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIHBvcHBlcixcbiAgICAgIHJlZmVyZW5jZVxuICAgIH0gPSBzdGF0ZS5lbGVtZW50cztcbiAgICBjb25zdCByb2xlID0gKF9wb3BwZXIkZ2V0QXR0cmlidXRlID0gcG9wcGVyLmdldEF0dHJpYnV0ZSgncm9sZScpKSA9PSBudWxsID8gdm9pZCAwIDogX3BvcHBlciRnZXRBdHRyaWJ1dGUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAocG9wcGVyLmlkICYmIHJvbGUgPT09ICd0b29sdGlwJyAmJiAnc2V0QXR0cmlidXRlJyBpbiByZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IGlkcyA9IHJlZmVyZW5jZS5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIGlmIChpZHMgJiYgaWRzLnNwbGl0KCcsJykuaW5kZXhPZihwb3BwZXIuaWQpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZWZlcmVuY2Uuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgaWRzID8gYCR7aWRzfSwke3BvcHBlci5pZH1gIDogcG9wcGVyLmlkKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBFTVBUWV9NT0RJRklFUlMgPSBbXTtcbi8qKlxuICogUG9zaXRpb24gYW4gZWxlbWVudCByZWxhdGl2ZSBzb21lIHJlZmVyZW5jZSBlbGVtZW50IHVzaW5nIFBvcHBlci5qc1xuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VFbGVtZW50XG4gKiBAcGFyYW0gcG9wcGVyRWxlbWVudFxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3Q9fSAgICAgb3B0aW9ucy5tb2RpZmllcnMgUG9wcGVyLmpzIG1vZGlmaWVyc1xuICogQHBhcmFtIHtib29sZWFuPX0gICAgb3B0aW9ucy5lbmFibGVkIHRvZ2dsZSB0aGUgcG9wcGVyIGZ1bmN0aW9uYWxpdHkgb24vb2ZmXG4gKiBAcGFyYW0ge3N0cmluZz19ICAgICBvcHRpb25zLnBsYWNlbWVudCBUaGUgcG9wcGVyIGVsZW1lbnQgcGxhY2VtZW50IHJlbGF0aXZlIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudFxuICogQHBhcmFtIHtzdHJpbmc9fSAgICAgb3B0aW9ucy5zdHJhdGVneSB0aGUgcG9zaXRpb25pbmcgc3RyYXRlZ3lcbiAqIEBwYXJhbSB7ZnVuY3Rpb249fSAgIG9wdGlvbnMub25DcmVhdGUgY2FsbGVkIHdoZW4gdGhlIHBvcHBlciBpcyBjcmVhdGVkXG4gKiBAcGFyYW0ge2Z1bmN0aW9uPX0gICBvcHRpb25zLm9uVXBkYXRlIGNhbGxlZCB3aGVuIHRoZSBwb3BwZXIgaXMgdXBkYXRlZFxuICpcbiAqIEByZXR1cm5zIHtVc2VQb3BwZXJTdGF0ZX0gVGhlIHBvcHBlciBzdGF0ZVxuICovXG5mdW5jdGlvbiB1c2VQb3BwZXIocmVmZXJlbmNlRWxlbWVudCwgcG9wcGVyRWxlbWVudCwgX3JlZiA9IHt9KSB7XG4gIGxldCB7XG4gICAgICBlbmFibGVkID0gdHJ1ZSxcbiAgICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgICAgbW9kaWZpZXJzID0gRU1QVFlfTU9ESUZJRVJTXG4gICAgfSA9IF9yZWYsXG4gICAgY29uZmlnID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgcHJldk1vZGlmaWVycyA9IHVzZVJlZihtb2RpZmllcnMpO1xuICBjb25zdCBwb3BwZXJJbnN0YW5jZVJlZiA9IHVzZVJlZigpO1xuICBjb25zdCB1cGRhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9wb3BwZXJJbnN0YW5jZVJlZiRjdTtcbiAgICAoX3BvcHBlckluc3RhbmNlUmVmJGN1ID0gcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wb3BwZXJJbnN0YW5jZVJlZiRjdS51cGRhdGUoKTtcbiAgfSwgW10pO1xuICBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB2YXIgX3BvcHBlckluc3RhbmNlUmVmJGN1MjtcbiAgICAoX3BvcHBlckluc3RhbmNlUmVmJGN1MiA9IHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcG9wcGVySW5zdGFuY2VSZWYkY3UyLmZvcmNlVXBkYXRlKCk7XG4gIH0sIFtdKTtcbiAgY29uc3QgW3BvcHBlclN0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTYWZlU3RhdGUodXNlU3RhdGUoe1xuICAgIHBsYWNlbWVudCxcbiAgICB1cGRhdGUsXG4gICAgZm9yY2VVcGRhdGUsXG4gICAgYXR0cmlidXRlczoge30sXG4gICAgc3R5bGVzOiB7XG4gICAgICBwb3BwZXI6IHt9LFxuICAgICAgYXJyb3c6IHt9XG4gICAgfVxuICB9KSk7XG4gIGNvbnN0IHVwZGF0ZU1vZGlmaWVyID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIG5hbWU6ICd1cGRhdGVTdGF0ZU1vZGlmaWVyJyxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIHBoYXNlOiAnd3JpdGUnLFxuICAgIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXSxcbiAgICBmbjogKHtcbiAgICAgIHN0YXRlXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3Qgc3R5bGVzID0ge307XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgc3R5bGVzW2VsZW1lbnRdID0gc3RhdGUuc3R5bGVzW2VsZW1lbnRdO1xuICAgICAgICBhdHRyaWJ1dGVzW2VsZW1lbnRdID0gc3RhdGUuYXR0cmlidXRlc1tlbGVtZW50XTtcbiAgICAgIH0pO1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGF0ZSxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICB1cGRhdGUsXG4gICAgICAgIGZvcmNlVXBkYXRlLFxuICAgICAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICAgICAgfSk7XG4gICAgfVxuICB9KSwgW3VwZGF0ZSwgZm9yY2VVcGRhdGUsIHNldFN0YXRlXSk7XG4gIGNvbnN0IG5leHRNb2RpZmllcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWRlcXVhbChwcmV2TW9kaWZpZXJzLmN1cnJlbnQsIG1vZGlmaWVycykpIHtcbiAgICAgIHByZXZNb2RpZmllcnMuY3VycmVudCA9IG1vZGlmaWVycztcbiAgICB9XG4gICAgcmV0dXJuIHByZXZNb2RpZmllcnMuY3VycmVudDtcbiAgfSwgW21vZGlmaWVyc10pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCB8fCAhZW5hYmxlZCkgcmV0dXJuO1xuICAgIHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQuc2V0T3B0aW9ucyh7XG4gICAgICBwbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1vZGlmaWVyczogWy4uLm5leHRNb2RpZmllcnMsIHVwZGF0ZU1vZGlmaWVyLCBkaXNhYmxlZEFwcGx5U3R5bGVzTW9kaWZpZXJdXG4gICAgfSk7XG4gIH0sIFtzdHJhdGVneSwgcGxhY2VtZW50LCB1cGRhdGVNb2RpZmllciwgZW5hYmxlZCwgbmV4dE1vZGlmaWVyc10pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCB8fCByZWZlcmVuY2VFbGVtZW50ID09IG51bGwgfHwgcG9wcGVyRWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50ID0gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnQsIE9iamVjdC5hc3NpZ24oe30sIGNvbmZpZywge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtb2RpZmllcnM6IFsuLi5uZXh0TW9kaWZpZXJzLCBhcmlhRGVzY3JpYmVkQnlNb2RpZmllciwgdXBkYXRlTW9kaWZpZXJdXG4gICAgfSkpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgIHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQuZGVzdHJveSgpO1xuICAgICAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBzZXRTdGF0ZShzID0+IE9iamVjdC5hc3NpZ24oe30sIHMsIHtcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgICAgICBzdHlsZXM6IHtcbiAgICAgICAgICAgIHBvcHBlcjoge31cbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8vIFRoaXMgaXMgb25seSBydW4gb25jZSB0byBfY3JlYXRlXyB0aGUgcG9wcGVyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbZW5hYmxlZCwgcmVmZXJlbmNlRWxlbWVudCwgcG9wcGVyRWxlbWVudF0pO1xuICByZXR1cm4gcG9wcGVyU3RhdGU7XG59XG5leHBvcnQgZGVmYXVsdCB1c2VQb3BwZXI7IiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTW91bnRlZCBmcm9tICcuL3VzZU1vdW50ZWQnO1xuXG5mdW5jdGlvbiB1c2VTYWZlU3RhdGUoc3RhdGUpIHtcbiAgdmFyIGlzTW91bnRlZCA9IHVzZU1vdW50ZWQoKTtcbiAgcmV0dXJuIFtzdGF0ZVswXSwgdXNlQ2FsbGJhY2soZnVuY3Rpb24gKG5leHRTdGF0ZSkge1xuICAgIGlmICghaXNNb3VudGVkKCkpIHJldHVybjtcbiAgICByZXR1cm4gc3RhdGVbMV0obmV4dFN0YXRlKTtcbiAgfSwgW2lzTW91bnRlZCwgc3RhdGVbMV1dKV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNhZmVTdGF0ZTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlLCBuby1jb25kLWFzc2lnbiAqL1xuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBlbGVtZW50IGNvbnRhaW5zIGFub3RoZXIgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGNvbnRleHQgdGhlIGNvbnRleHQgZWxlbWVudFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnQgdG8gY2hlY2tcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGFpbnMoY29udGV4dCwgbm9kZSkge1xuICAvLyBIVE1MIERPTSBhbmQgU1ZHIERPTSBtYXkgaGF2ZSBkaWZmZXJlbnQgc3VwcG9ydCBsZXZlbHMsXG4gIC8vIHNvIHdlIG5lZWQgdG8gY2hlY2sgb24gY29udGV4dCBpbnN0ZWFkIG9mIGEgZG9jdW1lbnQgcm9vdCBlbGVtZW50LlxuICBpZiAoY29udGV4dC5jb250YWlucykgcmV0dXJuIGNvbnRleHQuY29udGFpbnMobm9kZSk7XG4gIGlmIChjb250ZXh0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSByZXR1cm4gY29udGV4dCA9PT0gbm9kZSB8fCAhIShjb250ZXh0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG5vZGUpICYgMTYpO1xufSIsImltcG9ydCBjb250YWlucyBmcm9tICdkb20taGVscGVycy9jb250YWlucyc7XG5pbXBvcnQgbGlzdGVuIGZyb20gJ2RvbS1oZWxwZXJzL2xpc3Rlbic7XG5pbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICdkb20taGVscGVycy9vd25lckRvY3VtZW50JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5jb25zdCBub29wID0gKCkgPT4ge307XG5mdW5jdGlvbiBpc0xlZnRDbGlja0V2ZW50KGV2ZW50KSB7XG4gIHJldHVybiBldmVudC5idXR0b24gPT09IDA7XG59XG5mdW5jdGlvbiBpc01vZGlmaWVkRXZlbnQoZXZlbnQpIHtcbiAgcmV0dXJuICEhKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuc2hpZnRLZXkpO1xufVxuZXhwb3J0IGNvbnN0IGdldFJlZlRhcmdldCA9IHJlZiA9PiByZWYgJiYgKCdjdXJyZW50JyBpbiByZWYgPyByZWYuY3VycmVudCA6IHJlZik7XG5jb25zdCBJbml0aWFsVHJpZ2dlckV2ZW50cyA9IHtcbiAgY2xpY2s6ICdtb3VzZWRvd24nLFxuICBtb3VzZXVwOiAnbW91c2Vkb3duJyxcbiAgcG9pbnRlcnVwOiAncG9pbnRlcmRvd24nXG59O1xuXG4vKipcbiAqIFRoZSBgdXNlQ2xpY2tPdXRzaWRlYCBob29rIHJlZ2lzdGVycyB5b3VyIGNhbGxiYWNrIG9uIHRoZSBkb2N1bWVudCB0aGF0IGZpcmVzXG4gKiB3aGVuIGEgcG9pbnRlciBldmVudCBpcyByZWdpc3RlcmVkIG91dHNpZGUgb2YgdGhlIHByb3ZpZGVkIHJlZiBvciBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7UmVmPEhUTUxFbGVtZW50PnwgSFRNTEVsZW1lbnR9IHJlZiAgVGhlIGVsZW1lbnQgYm91bmRhcnlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uQ2xpY2tPdXRzaWRlXG4gKiBAcGFyYW0ge29iamVjdD19ICBvcHRpb25zXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRpb25zLmRpc2FibGVkXG4gKiBAcGFyYW0ge3N0cmluZz19ICBvcHRpb25zLmNsaWNrVHJpZ2dlciBUaGUgRE9NIGV2ZW50IG5hbWUgKGNsaWNrLCBtb3VzZWRvd24sIGV0YykgdG8gYXR0YWNoIGxpc3RlbmVycyBvblxuICovXG5mdW5jdGlvbiB1c2VDbGlja091dHNpZGUocmVmLCBvbkNsaWNrT3V0c2lkZSA9IG5vb3AsIHtcbiAgZGlzYWJsZWQsXG4gIGNsaWNrVHJpZ2dlciA9ICdjbGljaydcbn0gPSB7fSkge1xuICBjb25zdCBwcmV2ZW50TW91c2VDbGlja091dHNpZGVSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCB3YWl0aW5nRm9yVHJpZ2dlciA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGhhbmRsZU1vdXNlQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKGUgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBnZXRSZWZUYXJnZXQocmVmKTtcbiAgICB3YXJuaW5nKCEhY3VycmVudFRhcmdldCwgJ0NsaWNrT3V0c2lkZSBjYXB0dXJlZCBhIGNsb3NlIGV2ZW50IGJ1dCBkb2VzIG5vdCBoYXZlIGEgcmVmIHRvIGNvbXBhcmUgaXQgdG8uICcgKyAndXNlQ2xpY2tPdXRzaWRlKCksIHNob3VsZCBiZSBwYXNzZWQgYSByZWYgdGhhdCByZXNvbHZlcyB0byBhIERPTSBub2RlJyk7XG4gICAgcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmLmN1cnJlbnQgPSAhY3VycmVudFRhcmdldCB8fCBpc01vZGlmaWVkRXZlbnQoZSkgfHwgIWlzTGVmdENsaWNrRXZlbnQoZSkgfHwgISFjb250YWlucyhjdXJyZW50VGFyZ2V0LCBlLnRhcmdldCkgfHwgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudDtcbiAgICB3YWl0aW5nRm9yVHJpZ2dlci5jdXJyZW50ID0gZmFsc2U7XG4gIH0sIFtyZWZdKTtcbiAgY29uc3QgaGFuZGxlSW5pdGlhbE1vdXNlID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZ2V0UmVmVGFyZ2V0KHJlZik7XG4gICAgaWYgKGN1cnJlbnRUYXJnZXQgJiYgY29udGFpbnMoY3VycmVudFRhcmdldCwgZS50YXJnZXQpKSB7XG4gICAgICB3YWl0aW5nRm9yVHJpZ2dlci5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVNb3VzZSA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKCFwcmV2ZW50TW91c2VDbGlja091dHNpZGVSZWYuY3VycmVudCkge1xuICAgICAgb25DbGlja091dHNpZGUoZSk7XG4gICAgfVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQgfHwgcmVmID09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZG9jID0gb3duZXJEb2N1bWVudChnZXRSZWZUYXJnZXQocmVmKSk7XG5cbiAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBldmVudCB0byBhdm9pZCB0cmlnZ2VyaW5nIGhhbmRsZXJzIGltbWVkaWF0ZWx5XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDA3NFxuICAgIGxldCBjdXJyZW50RXZlbnQgPSAoZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdykuZXZlbnQ7XG4gICAgbGV0IHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIgPSBudWxsO1xuICAgIGlmIChJbml0aWFsVHJpZ2dlckV2ZW50c1tjbGlja1RyaWdnZXJdKSB7XG4gICAgICByZW1vdmVJbml0aWFsVHJpZ2dlckxpc3RlbmVyID0gbGlzdGVuKGRvYywgSW5pdGlhbFRyaWdnZXJFdmVudHNbY2xpY2tUcmlnZ2VyXSwgaGFuZGxlSW5pdGlhbE1vdXNlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBVc2UgY2FwdHVyZSBmb3IgdGhpcyBsaXN0ZW5lciBzbyBpdCBmaXJlcyBiZWZvcmUgUmVhY3QncyBsaXN0ZW5lciwgdG9cbiAgICAvLyBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMgaW4gdGhlIGNvbnRhaW5zKCkgY2hlY2sgYmVsb3cgaWYgdGhlIHRhcmdldCBET01cbiAgICAvLyBlbGVtZW50IGlzIHJlbW92ZWQgaW4gdGhlIFJlYWN0IG1vdXNlIGNhbGxiYWNrLlxuICAgIGNvbnN0IHJlbW92ZU1vdXNlQ2FwdHVyZUxpc3RlbmVyID0gbGlzdGVuKGRvYywgY2xpY2tUcmlnZ2VyLCBoYW5kbGVNb3VzZUNhcHR1cmUsIHRydWUpO1xuICAgIGNvbnN0IHJlbW92ZU1vdXNlTGlzdGVuZXIgPSBsaXN0ZW4oZG9jLCBjbGlja1RyaWdnZXIsIGUgPT4ge1xuICAgICAgLy8gc2tpcCBpZiB0aGlzIGV2ZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgcnVubmluZyB3aGVuIHdlIGFkZGVkIHRoZSBoYW5kbGVyc1xuICAgICAgaWYgKGUgPT09IGN1cnJlbnRFdmVudCkge1xuICAgICAgICBjdXJyZW50RXZlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGhhbmRsZU1vdXNlKGUpO1xuICAgIH0pO1xuICAgIGxldCBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzID0gW107XG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvYy5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG1vYmlsZVNhZmFyaUhhY2tMaXN0ZW5lcnMgPSBbXS5zbGljZS5jYWxsKGRvYy5ib2R5LmNoaWxkcmVuKS5tYXAoZWwgPT4gbGlzdGVuKGVsLCAnbW91c2Vtb3ZlJywgbm9vcCkpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciA9PSBudWxsID8gdm9pZCAwIDogcmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lcigpO1xuICAgICAgcmVtb3ZlTW91c2VDYXB0dXJlTGlzdGVuZXIoKTtcbiAgICAgIHJlbW92ZU1vdXNlTGlzdGVuZXIoKTtcbiAgICAgIG1vYmlsZVNhZmFyaUhhY2tMaXN0ZW5lcnMuZm9yRWFjaChyZW1vdmUgPT4gcmVtb3ZlKCkpO1xuICAgIH07XG4gIH0sIFtyZWYsIGRpc2FibGVkLCBjbGlja1RyaWdnZXIsIGhhbmRsZU1vdXNlQ2FwdHVyZSwgaGFuZGxlSW5pdGlhbE1vdXNlLCBoYW5kbGVNb3VzZV0pO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlQ2xpY2tPdXRzaWRlOyIsImV4cG9ydCBmdW5jdGlvbiB0b01vZGlmaWVyTWFwKG1vZGlmaWVycykge1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGlmaWVycykpIHtcbiAgICByZXR1cm4gbW9kaWZpZXJzIHx8IHJlc3VsdDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgbW9kaWZpZXJzID09IG51bGwgPyB2b2lkIDAgOiBtb2RpZmllcnMuZm9yRWFjaChtID0+IHtcbiAgICByZXN1bHRbbS5uYW1lXSA9IG07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRvTW9kaWZpZXJBcnJheShtYXAgPSB7fSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShtYXApKSByZXR1cm4gbWFwO1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5tYXAoayA9PiB7XG4gICAgbWFwW2tdLm5hbWUgPSBrO1xuICAgIHJldHVybiBtYXBba107XG4gIH0pO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyh7XG4gIGVuYWJsZWQsXG4gIGVuYWJsZUV2ZW50cyxcbiAgcGxhY2VtZW50LFxuICBmbGlwLFxuICBvZmZzZXQsXG4gIGZpeGVkLFxuICBjb250YWluZXJQYWRkaW5nLFxuICBhcnJvd0VsZW1lbnQsXG4gIHBvcHBlckNvbmZpZyA9IHt9XG59KSB7XG4gIHZhciBfbW9kaWZpZXJzJGV2ZW50TGlzdGUsIF9tb2RpZmllcnMkcHJldmVudE92ZSwgX21vZGlmaWVycyRwcmV2ZW50T3ZlMiwgX21vZGlmaWVycyRvZmZzZXQsIF9tb2RpZmllcnMkYXJyb3c7XG4gIGNvbnN0IG1vZGlmaWVycyA9IHRvTW9kaWZpZXJNYXAocG9wcGVyQ29uZmlnLm1vZGlmaWVycyk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJDb25maWcsIHtcbiAgICBwbGFjZW1lbnQsXG4gICAgZW5hYmxlZCxcbiAgICBzdHJhdGVneTogZml4ZWQgPyAnZml4ZWQnIDogcG9wcGVyQ29uZmlnLnN0cmF0ZWd5LFxuICAgIG1vZGlmaWVyczogdG9Nb2RpZmllckFycmF5KE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVycywge1xuICAgICAgZXZlbnRMaXN0ZW5lcnM6IHtcbiAgICAgICAgZW5hYmxlZDogZW5hYmxlRXZlbnRzLFxuICAgICAgICBvcHRpb25zOiAoX21vZGlmaWVycyRldmVudExpc3RlID0gbW9kaWZpZXJzLmV2ZW50TGlzdGVuZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRldmVudExpc3RlLm9wdGlvbnNcbiAgICAgIH0sXG4gICAgICBwcmV2ZW50T3ZlcmZsb3c6IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVycy5wcmV2ZW50T3ZlcmZsb3csIHtcbiAgICAgICAgb3B0aW9uczogY29udGFpbmVyUGFkZGluZyA/IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIHBhZGRpbmc6IGNvbnRhaW5lclBhZGRpbmdcbiAgICAgICAgfSwgKF9tb2RpZmllcnMkcHJldmVudE92ZSA9IG1vZGlmaWVycy5wcmV2ZW50T3ZlcmZsb3cpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJHByZXZlbnRPdmUub3B0aW9ucykgOiAoX21vZGlmaWVycyRwcmV2ZW50T3ZlMiA9IG1vZGlmaWVycy5wcmV2ZW50T3ZlcmZsb3cpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJHByZXZlbnRPdmUyLm9wdGlvbnNcbiAgICAgIH0pLFxuICAgICAgb2Zmc2V0OiB7XG4gICAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIG9mZnNldFxuICAgICAgICB9LCAoX21vZGlmaWVycyRvZmZzZXQgPSBtb2RpZmllcnMub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRvZmZzZXQub3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBhcnJvdzogT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXJzLmFycm93LCB7XG4gICAgICAgIGVuYWJsZWQ6ICEhYXJyb3dFbGVtZW50LFxuICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCAoX21vZGlmaWVycyRhcnJvdyA9IG1vZGlmaWVycy5hcnJvdykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkYXJyb3cub3B0aW9ucywge1xuICAgICAgICAgIGVsZW1lbnQ6IGFycm93RWxlbWVudFxuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgICBmbGlwOiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgZW5hYmxlZDogISFmbGlwXG4gICAgICB9LCBtb2RpZmllcnMuZmxpcClcbiAgICB9KSlcbiAgfSk7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ2FsbGJhY2tSZWYgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlQ2FsbGJhY2tSZWYnO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgdXNlUG9wcGVyIGZyb20gJy4vdXNlUG9wcGVyJztcbmltcG9ydCB1c2VDbGlja091dHNpZGUgZnJvbSAnLi91c2VDbGlja091dHNpZGUnO1xuaW1wb3J0IG1lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcgZnJvbSAnLi9tZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnJztcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG4gKiBAbWVtYmVyT2YgRHJvcGRvd25cbiAqIEBwYXJhbSB7b2JqZWN0fSAgb3B0aW9uc1xuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmZsaXAgQXV0b21hdGljYWxseSBhZGp1c3QgdGhlIG1lbnUgYGRyb3BgIHBvc2l0aW9uIGJhc2VkIG9uIHZpZXdwb3J0IGVkZ2UgZGV0ZWN0aW9uXG4gKiBAcGFyYW0ge1tudW1iZXIsIG51bWJlcl19IG9wdGlvbnMub2Zmc2V0IERlZmluZSBhbiBvZmZzZXQgZGlzdGFuY2UgYmV0d2VlbiB0aGUgTWVudSBhbmQgdGhlIFRvZ2dsZVxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnNob3cgRGlzcGxheSB0aGUgbWVudSBtYW51YWxseSwgaWdub3JlZCBpbiB0aGUgY29udGV4dCBvZiBhIGBEcm9wZG93bmBcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy51c2VQb3BwZXIgb3B0IGluL291dCBvZiB1c2luZyBQb3BwZXJKUyB0byBwb3NpdGlvbiBtZW51cy4gV2hlbiBkaXNhYmxlZCB5b3UgbXVzdCBwb3NpdGlvbiBpdCB5b3Vyc2VsZi5cbiAqIEBwYXJhbSB7c3RyaW5nfSAgb3B0aW9ucy5yb290Q2xvc2VFdmVudCBUaGUgcG9pbnRlciBldmVudCB0byBsaXN0ZW4gZm9yIHdoZW4gZGV0ZXJtaW5pbmcgXCJjbGlja3Mgb3V0c2lkZVwiIHRoZSBtZW51IGZvciB0cmlnZ2VyaW5nIGEgY2xvc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gIG9wdGlvbnMucG9wcGVyQ29uZmlnIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBbYHVzZVBvcHBlcmBdKC9hcGkvdXNlUG9wcGVyKSBob29rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJvcGRvd25NZW51KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xuICBjb25zdCBbYXJyb3dFbGVtZW50LCBhdHRhY2hBcnJvd1JlZl0gPSB1c2VDYWxsYmFja1JlZigpO1xuICBjb25zdCBoYXNTaG93blJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHtcbiAgICBmbGlwLFxuICAgIG9mZnNldCxcbiAgICByb290Q2xvc2VFdmVudCxcbiAgICBmaXhlZCA9IGZhbHNlLFxuICAgIHBsYWNlbWVudDogcGxhY2VtZW50T3ZlcnJpZGUsXG4gICAgcG9wcGVyQ29uZmlnID0ge30sXG4gICAgZW5hYmxlRXZlbnRMaXN0ZW5lcnMgPSB0cnVlLFxuICAgIHVzZVBvcHBlcjogc2hvdWxkVXNlUG9wcGVyID0gISFjb250ZXh0XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBzaG93ID0gKGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQuc2hvdykgPT0gbnVsbCA/ICEhb3B0aW9ucy5zaG93IDogY29udGV4dC5zaG93O1xuICBpZiAoc2hvdyAmJiAhaGFzU2hvd25SZWYuY3VycmVudCkge1xuICAgIGhhc1Nob3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICB9XG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gZSA9PiB7XG4gICAgY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC50b2dnbGUoZmFsc2UsIGUpO1xuICB9O1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHNldE1lbnUsXG4gICAgbWVudUVsZW1lbnQsXG4gICAgdG9nZ2xlRWxlbWVudFxuICB9ID0gY29udGV4dCB8fCB7fTtcbiAgY29uc3QgcG9wcGVyID0gdXNlUG9wcGVyKHRvZ2dsZUVsZW1lbnQsIG1lbnVFbGVtZW50LCBtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnKHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE92ZXJyaWRlIHx8IHBsYWNlbWVudCB8fCAnYm90dG9tLXN0YXJ0JyxcbiAgICBlbmFibGVkOiBzaG91bGRVc2VQb3BwZXIsXG4gICAgZW5hYmxlRXZlbnRzOiBlbmFibGVFdmVudExpc3RlbmVycyA9PSBudWxsID8gc2hvdyA6IGVuYWJsZUV2ZW50TGlzdGVuZXJzLFxuICAgIG9mZnNldCxcbiAgICBmbGlwLFxuICAgIGZpeGVkLFxuICAgIGFycm93RWxlbWVudCxcbiAgICBwb3BwZXJDb25maWdcbiAgfSkpO1xuICBjb25zdCBtZW51UHJvcHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZWY6IHNldE1lbnUgfHwgbm9vcCxcbiAgICAnYXJpYS1sYWJlbGxlZGJ5JzogdG9nZ2xlRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogdG9nZ2xlRWxlbWVudC5pZFxuICB9LCBwb3BwZXIuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICBzdHlsZTogcG9wcGVyLnN0eWxlcy5wb3BwZXJcbiAgfSk7XG4gIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgIHNob3csXG4gICAgcGxhY2VtZW50LFxuICAgIGhhc1Nob3duOiBoYXNTaG93blJlZi5jdXJyZW50LFxuICAgIHRvZ2dsZTogY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC50b2dnbGUsXG4gICAgcG9wcGVyOiBzaG91bGRVc2VQb3BwZXIgPyBwb3BwZXIgOiBudWxsLFxuICAgIGFycm93UHJvcHM6IHNob3VsZFVzZVBvcHBlciA/IE9iamVjdC5hc3NpZ24oe1xuICAgICAgcmVmOiBhdHRhY2hBcnJvd1JlZlxuICAgIH0sIHBvcHBlci5hdHRyaWJ1dGVzLmFycm93LCB7XG4gICAgICBzdHlsZTogcG9wcGVyLnN0eWxlcy5hcnJvd1xuICAgIH0pIDoge31cbiAgfTtcbiAgdXNlQ2xpY2tPdXRzaWRlKG1lbnVFbGVtZW50LCBoYW5kbGVDbG9zZSwge1xuICAgIGNsaWNrVHJpZ2dlcjogcm9vdENsb3NlRXZlbnQsXG4gICAgZGlzYWJsZWQ6ICFzaG93XG4gIH0pO1xuICByZXR1cm4gW21lbnVQcm9wcywgbWV0YWRhdGFdO1xufVxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICB1c2VQb3BwZXI6IHRydWVcbn07XG4vKipcbiAqIEFsc28gZXhwb3J0ZWQgYXMgYDxEcm9wZG93bi5NZW51PmAgZnJvbSBgRHJvcGRvd25gLlxuICpcbiAqIEBkaXNwbGF5TmFtZSBEcm9wZG93bk1lbnVcbiAqIEBtZW1iZXJPZiBEcm9wZG93blxuICovXG5mdW5jdGlvbiBEcm9wZG93bk1lbnUoX3JlZikge1xuICBsZXQge1xuICAgICAgY2hpbGRyZW5cbiAgICB9ID0gX3JlZixcbiAgICBvcHRpb25zID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW3Byb3BzLCBtZXRhXSA9IHVzZURyb3Bkb3duTWVudShvcHRpb25zKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbihwcm9wcywgbWV0YSlcbiAgfSk7XG59XG5Ecm9wZG93bk1lbnUuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25NZW51JztcbkRyb3Bkb3duTWVudS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbi8qKiBAY29tcG9uZW50ICovXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7IiwiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEEgY29udmVuaWVuY2UgaG9vayBhcm91bmQgYHVzZVN0YXRlYCBkZXNpZ25lZCB0byBiZSBwYWlyZWQgd2l0aFxuICogdGhlIGNvbXBvbmVudCBbY2FsbGJhY2sgcmVmXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVmcy1hbmQtdGhlLWRvbS5odG1sI2NhbGxiYWNrLXJlZnMpIGFwaS5cbiAqIENhbGxiYWNrIHJlZnMgYXJlIHVzZWZ1bCBvdmVyIGB1c2VSZWYoKWAgd2hlbiB5b3UgbmVlZCB0byByZXNwb25kIHRvIHRoZSByZWYgYmVpbmcgc2V0XG4gKiBpbnN0ZWFkIG9mIGxhemlseSBhY2Nlc3NpbmcgaXQgaW4gYW4gZWZmZWN0LlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBbZWxlbWVudCwgYXR0YWNoUmVmXSA9IHVzZUNhbGxiYWNrUmVmPEhUTUxEaXZFbGVtZW50PigpXG4gKlxuICogdXNlRWZmZWN0KCgpID0+IHtcbiAqICAgaWYgKCFlbGVtZW50KSByZXR1cm5cbiAqXG4gKiAgIGNvbnN0IGNhbGVuZGFyID0gbmV3IEZ1bGxDYWxlbmRhci5DYWxlbmRhcihlbGVtZW50KVxuICpcbiAqICAgcmV0dXJuICgpID0+IHtcbiAqICAgICBjYWxlbmRhci5kZXN0cm95KClcbiAqICAgfVxuICogfSwgW2VsZW1lbnRdKVxuICpcbiAqIHJldHVybiA8ZGl2IHJlZj17YXR0YWNoUmVmfSAvPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IHJlZnNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDYWxsYmFja1JlZigpIHtcbiAgcmV0dXJuIHVzZVN0YXRlKG51bGwpO1xufSIsImltcG9ydCAkODl5RTIkcmVhY3QsIHt1c2VDb250ZXh0IGFzICQ4OXlFMiR1c2VDb250ZXh0LCB1c2VNZW1vIGFzICQ4OXlFMiR1c2VNZW1vLCB1c2VSZWYgYXMgJDg5eUUyJHVzZVJlZiwgdXNlU3RhdGUgYXMgJDg5eUUyJHVzZVN0YXRlLCB1c2VMYXlvdXRFZmZlY3QgYXMgJDg5eUUyJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qXG4gKiBDb3B5cmlnaHQgMjAyMCBBZG9iZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5XG4gKiBvZiB0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyXG4gKiB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlNcbiAqIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZVxuICogZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqLyAvKlxuICogQ29weXJpZ2h0IDIwMjAgQWRvYmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weVxuICogb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlclxuICogdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TXG4gKiBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi8gLy8gV2UgbXVzdCBhdm9pZCBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2l0aCBAcmVhY3QtYXJpYS91dGlscywgYW5kIHRoaXMgdXNlTGF5b3V0RWZmZWN0IGlzXG4vLyBndWFyZGVkIGJ5IGEgY2hlY2sgdGhhdCBpdCBvbmx5IHJ1bnMgb24gdGhlIGNsaWVudCBzaWRlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ1bGVzZGlyL3VzZUxheW91dEVmZmVjdFJ1bGVcblxuLy8gRGVmYXVsdCBjb250ZXh0IHZhbHVlIHRvIHVzZSBpbiBjYXNlIHRoZXJlIGlzIG5vIFNTUlByb3ZpZGVyLiBUaGlzIGlzIGZpbmUgZm9yXG4vLyBjbGllbnQtb25seSBhcHBzLiBJbiBvcmRlciB0byBzdXBwb3J0IG11bHRpcGxlIGNvcGllcyBvZiBSZWFjdCBBcmlhIHBvdGVudGlhbGx5XG4vLyBiZWluZyBvbiB0aGUgcGFnZSBhdCBvbmNlLCB0aGUgcHJlZml4IGlzIHNldCB0byBhIHJhbmRvbSBudW1iZXIuIFNTUlByb3ZpZGVyXG4vLyB3aWxsIHJlc2V0IHRoaXMgdG8gemVybyBmb3IgY29uc2lzdGVuY3kgYmV0d2VlbiBzZXJ2ZXIgYW5kIGNsaWVudCwgc28gaW4gdGhlXG4vLyBTU1IgY2FzZSBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgQXJpYSBpcyBub3Qgc3VwcG9ydGVkLlxuY29uc3QgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0ID0ge1xuICAgIHByZWZpeDogU3RyaW5nKE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMDAwKSksXG4gICAgY3VycmVudDogMFxufTtcbmNvbnN0ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0ID0gLyojX19QVVJFX18qLyAoMCwgJDg5eUUyJHJlYWN0KS5jcmVhdGVDb250ZXh0KCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCk7XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkOWY4YWM5NmFmNGIxYjJhZShwcm9wcykge1xuICAgIGxldCBjdXIgPSAoMCwgJDg5eUUyJHVzZUNvbnRleHQpKCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0KTtcbiAgICBsZXQgY291bnRlciA9ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciR1c2VDb3VudGVyKGN1ciA9PT0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0KTtcbiAgICBsZXQgdmFsdWUgPSAoMCwgJDg5eUUyJHVzZU1lbW8pKCgpPT4oe1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgU1NSUHJvdmlkZXIsIHN0YXJ0IHdpdGggYW4gZW1wdHkgc3RyaW5nIHByZWZpeCwgb3RoZXJ3aXNlXG4gICAgICAgICAgICAvLyBhcHBlbmQgYW5kIGluY3JlbWVudCB0aGUgY291bnRlci5cbiAgICAgICAgICAgIHByZWZpeDogY3VyID09PSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQgPyBcIlwiIDogYCR7Y3VyLnByZWZpeH0tJHtjb3VudGVyfWAsXG4gICAgICAgICAgICBjdXJyZW50OiAwXG4gICAgICAgIH0pLCBbXG4gICAgICAgIGN1cixcbiAgICAgICAgY291bnRlclxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICgwLCAkODl5RTIkcmVhY3QpLmNyZWF0ZUVsZW1lbnQoJDcwNGNmMWQzYjY4NGNjNWMkdmFyJFNTUkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfSwgcHJvcHMuY2hpbGRyZW4pO1xufVxubGV0ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjYW5Vc2VET00gPSBCb29sZWFuKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbmxldCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY29tcG9uZW50SWRzID0gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uICQ3MDRjZjFkM2I2ODRjYzVjJHZhciR1c2VDb3VudGVyKGlzRGlzYWJsZWQgPSBmYWxzZSkge1xuICAgIGxldCBjdHggPSAoMCwgJDg5eUUyJHVzZUNvbnRleHQpKCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0KTtcbiAgICBsZXQgcmVmID0gKDAsICQ4OXlFMiR1c2VSZWYpKG51bGwpO1xuICAgIGlmIChyZWYuY3VycmVudCA9PT0gbnVsbCAmJiAhaXNEaXNhYmxlZCkge1xuICAgICAgICB2YXIgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELCBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXI7XG4gICAgICAgIC8vIEluIHN0cmljdCBtb2RlLCBSZWFjdCByZW5kZXJzIGNvbXBvbmVudHMgdHdpY2UsIGFuZCB0aGUgcmVmIHdpbGwgYmUgcmVzZXQgdG8gbnVsbCBvbiB0aGUgc2Vjb25kIHJlbmRlci5cbiAgICAgICAgLy8gVGhpcyBtZWFucyBvdXIgaWQgY291bnRlciB3aWxsIGJlIGluY3JlbWVudGVkIHR3aWNlIGluc3RlYWQgb2Ygb25jZS4gVGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZSBvbiB0aGVcbiAgICAgICAgLy8gc2VydmVyLCBjb21wb25lbnRzIGFyZSBvbmx5IHJlbmRlcmVkIG9uY2UgYW5kIHNvIGlkcyBnZW5lcmF0ZWQgb24gdGhlIHNlcnZlciB3b24ndCBtYXRjaCB0aGUgY2xpZW50LlxuICAgICAgICAvLyBJbiBSZWFjdCAxOCwgdXNlSWQgd2FzIGludHJvZHVjZWQgdG8gc29sdmUgdGhpcywgYnV0IGl0IGlzIG5vdCBhdmFpbGFibGUgaW4gb2xkZXIgdmVyc2lvbnMuIFNvIHRvIHNvbHZlIHRoaXNcbiAgICAgICAgLy8gd2UgbmVlZCB0byB1c2Ugc29tZSBSZWFjdCBpbnRlcm5hbHMgdG8gYWNjZXNzIHRoZSB1bmRlcmx5aW5nIEZpYmVyIGluc3RhbmNlLCB3aGljaCBpcyBzdGFibGUgYmV0d2VlbiByZW5kZXJzLlxuICAgICAgICAvLyBUaGlzIGlzIGV4cG9zZWQgYXMgUmVhY3RDdXJyZW50T3duZXIgaW4gZGV2ZWxvcG1lbnQsIHdoaWNoIGlzIGFsbCB3ZSBuZWVkIHNpbmNlIFN0cmljdE1vZGUgb25seSBydW5zIGluIGRldmVsb3BtZW50LlxuICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB3ZSBvbmx5IGluY3JlbWVudCB0aGUgZ2xvYmFsIGNvdW50ZXIgb25jZSwgd2Ugc3RvcmUgdGhlIHN0YXJ0aW5nIGlkIGZvciB0aGlzIGNvbXBvbmVudCBpblxuICAgICAgICAvLyBhIHdlYWsgbWFwIGFzc29jaWF0ZWQgd2l0aCB0aGUgRmliZXIuIE9uIHRoZSBzZWNvbmQgcmVuZGVyLCB3ZSByZXNldCB0aGUgZ2xvYmFsIGNvdW50ZXIgdG8gdGhpcyB2YWx1ZS5cbiAgICAgICAgLy8gU2luY2UgUmVhY3QgcnVucyB0aGUgc2Vjb25kIHJlbmRlciBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmlyc3QsIHRoaXMgaXMgc2FmZS5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBsZXQgY3VycmVudE93bmVyID0gKF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9ICgwLCAkODl5RTIkcmVhY3QpLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEKSA9PT0gbnVsbCB8fCBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXIgPSBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIpID09PSBudWxsIHx8IF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lciA9PT0gdm9pZCAwID8gdm9pZCAwIDogX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjdXJyZW50T3duZXIpIHtcbiAgICAgICAgICAgIGxldCBwcmV2Q29tcG9uZW50VmFsdWUgPSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY29tcG9uZW50SWRzLmdldChjdXJyZW50T3duZXIpO1xuICAgICAgICAgICAgaWYgKHByZXZDb21wb25lbnRWYWx1ZSA9PSBudWxsKSAvLyBPbiB0aGUgZmlyc3QgcmVuZGVyLCBhbmQgZmlyc3QgY2FsbCB0byB1c2VJZCwgc3RvcmUgdGhlIGlkIGFuZCBzdGF0ZSBpbiBvdXIgd2VhayBtYXAuXG4gICAgICAgICAgICAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY29tcG9uZW50SWRzLnNldChjdXJyZW50T3duZXIsIHtcbiAgICAgICAgICAgICAgICBpZDogY3R4LmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgc3RhdGU6IGN1cnJlbnRPd25lci5tZW1vaXplZFN0YXRlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRPd25lci5tZW1vaXplZFN0YXRlICE9PSBwcmV2Q29tcG9uZW50VmFsdWUuc3RhdGUpIHtcbiAgICAgICAgICAgICAgICAvLyBPbiB0aGUgc2Vjb25kIHJlbmRlciwgdGhlIG1lbW9pemVkU3RhdGUgZ2V0cyByZXNldCBieSBSZWFjdC5cbiAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgY291bnRlciwgYW5kIHJlbW92ZSBmcm9tIHRoZSB3ZWFrIG1hcCBzbyB3ZSBkb24ndFxuICAgICAgICAgICAgICAgIC8vIGRvIHRoaXMgZm9yIHN1YnNlcXVlbnQgdXNlSWQgY2FsbHMuXG4gICAgICAgICAgICAgICAgY3R4LmN1cnJlbnQgPSBwcmV2Q29tcG9uZW50VmFsdWUuaWQ7XG4gICAgICAgICAgICAgICAgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5kZWxldGUoY3VycmVudE93bmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZWYuY3VycmVudCA9ICsrY3R4LmN1cnJlbnQ7XG4gICAgfVxuICAgIHJldHVybiByZWYuY3VycmVudDtcbn1cbmZ1bmN0aW9uICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ2MTk1MDA5NTlmYzQ4YjI2KGRlZmF1bHRJZCkge1xuICAgIGxldCBjdHggPSAoMCwgJDg5eUUyJHVzZUNvbnRleHQpKCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0KTtcbiAgICAvLyBJZiB3ZSBhcmUgcmVuZGVyaW5nIGluIGEgbm9uLURPTSBlbnZpcm9ubWVudCwgYW5kIHRoZXJlJ3Mgbm8gU1NSUHJvdmlkZXIsXG4gICAgLy8gcHJvdmlkZSBhIHdhcm5pbmcgdG8gaGludCB0byB0aGUgZGV2ZWxvcGVyIHRvIGFkZCBvbmUuXG4gICAgaWYgKGN0eCA9PT0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0ICYmICEkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY2FuVXNlRE9NKSBjb25zb2xlLndhcm4oXCJXaGVuIHNlcnZlciByZW5kZXJpbmcsIHlvdSBtdXN0IHdyYXAgeW91ciBhcHBsaWNhdGlvbiBpbiBhbiA8U1NSUHJvdmlkZXI+IHRvIGVuc3VyZSBjb25zaXN0ZW50IGlkcyBhcmUgZ2VuZXJhdGVkIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgc2VydmVyLlwiKTtcbiAgICBsZXQgY291bnRlciA9ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciR1c2VDb3VudGVyKCEhZGVmYXVsdElkKTtcbiAgICByZXR1cm4gZGVmYXVsdElkIHx8IGByZWFjdC1hcmlhJHtjdHgucHJlZml4fS0ke2NvdW50ZXJ9YDtcbn1cbmZ1bmN0aW9uICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ1MzViZDZjYTdmOTBhMjczKCkge1xuICAgIGxldCBjdXIgPSAoMCwgJDg5eUUyJHVzZUNvbnRleHQpKCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0KTtcbiAgICBsZXQgaXNJblNTUkNvbnRleHQgPSBjdXIgIT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dDtcbiAgICBsZXQgW2lzU1NSLCBzZXRJc1NTUl0gPSAoMCwgJDg5eUUyJHVzZVN0YXRlKShpc0luU1NSQ29udGV4dCk7XG4gICAgLy8gSWYgb24gdGhlIGNsaWVudCwgYW5kIHRoZSBjb21wb25lbnQgd2FzIGluaXRpYWxseSBzZXJ2ZXIgcmVuZGVyZWQsXG4gICAgLy8gdGhlbiBzY2hlZHVsZSBhIGxheW91dCBlZmZlY3QgdG8gdXBkYXRlIHRoZSBjb21wb25lbnQgYWZ0ZXIgaHlkcmF0aW9uLlxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIGlzSW5TU1JDb250ZXh0KSAvLyBUaGlzIGlmIHN0YXRlbWVudCB0ZWNobmljYWxseSBicmVha3MgdGhlIHJ1bGVzIG9mIGhvb2tzLCBidXQgaXMgc2FmZVxuICAgIC8vIGJlY2F1c2UgdGhlIGNvbmRpdGlvbiBuZXZlciBjaGFuZ2VzIGFmdGVyIG1vdW50aW5nLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICgwLCAkODl5RTIkdXNlTGF5b3V0RWZmZWN0KSgoKT0+e1xuICAgICAgICBzZXRJc1NTUihmYWxzZSk7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBpc1NTUjtcbn1cblxuXG5cblxuZXhwb3J0IHskNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkOWY4YWM5NmFmNGIxYjJhZSBhcyBTU1JQcm92aWRlciwgJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDYxOTUwMDk1OWZjNDhiMjYgYXMgdXNlU1NSU2FmZUlkLCAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNTM1YmQ2Y2E3ZjkwYTI3MyBhcyB1c2VJc1NTUn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2R1bGUuanMubWFwXG4iLCJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVNTUlNhZmVJZCB9IGZyb20gJy4vc3NyJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IGlzUm9sZU1lbnUgPSBlbCA9PiB7XG4gIHZhciBfZWwkZ2V0QXR0cmlidXRlO1xuICByZXR1cm4gKChfZWwkZ2V0QXR0cmlidXRlID0gZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykpID09IG51bGwgPyB2b2lkIDAgOiBfZWwkZ2V0QXR0cmlidXRlLnRvTG93ZXJDYXNlKCkpID09PSAnbWVudSc7XG59O1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG4vKipcbiAqIFdpcmVzIHVwIERyb3Bkb3duIHRvZ2dsZSBmdW5jdGlvbmFsaXR5LCByZXR1cm5pbmcgYSBzZXQgYSBwcm9wcyB0byBhdHRhY2hcbiAqIHRvIHRoZSBlbGVtZW50IHRoYXQgZnVuY3Rpb25zIGFzIHRoZSBkcm9wZG93biB0b2dnbGUgKGdlbmVyYWxseSBhIGJ1dHRvbikuXG4gKlxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEcm9wZG93blRvZ2dsZSgpIHtcbiAgY29uc3QgaWQgPSB1c2VTU1JTYWZlSWQoKTtcbiAgY29uc3Qge1xuICAgIHNob3cgPSBmYWxzZSxcbiAgICB0b2dnbGUgPSBub29wLFxuICAgIHNldFRvZ2dsZSxcbiAgICBtZW51RWxlbWVudFxuICB9ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpIHx8IHt9O1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKGUgPT4ge1xuICAgIHRvZ2dsZSghc2hvdywgZSk7XG4gIH0sIFtzaG93LCB0b2dnbGVdKTtcbiAgY29uc3QgcHJvcHMgPSB7XG4gICAgaWQsXG4gICAgcmVmOiBzZXRUb2dnbGUgfHwgbm9vcCxcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAnYXJpYS1leHBhbmRlZCc6ICEhc2hvd1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgbWF5YmUgYmV0dGVyIGRvd24gaW4gYW4gZWZmZWN0LCBidXRcbiAgLy8gdGhlIGNvbXBvbmVudCBpcyBnb2luZyB0byB1cGRhdGUgYW55d2F5IHdoZW4gdGhlIG1lbnUgZWxlbWVudFxuICAvLyBpcyBzZXQgc28gbWlnaHQgcmV0dXJuIG5ldyBwcm9wcy5cbiAgaWYgKG1lbnVFbGVtZW50ICYmIGlzUm9sZU1lbnUobWVudUVsZW1lbnQpKSB7XG4gICAgcHJvcHNbJ2FyaWEtaGFzcG9wdXAnXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIFtwcm9wcywge1xuICAgIHNob3csXG4gICAgdG9nZ2xlXG4gIH1dO1xufVxuLyoqXG4gKiBBbHNvIGV4cG9ydGVkIGFzIGA8RHJvcGRvd24uVG9nZ2xlPmAgZnJvbSBgRHJvcGRvd25gLlxuICpcbiAqIEBkaXNwbGF5TmFtZSBEcm9wZG93blRvZ2dsZVxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKi9cbmZ1bmN0aW9uIERyb3Bkb3duVG9nZ2xlKHtcbiAgY2hpbGRyZW5cbn0pIHtcbiAgY29uc3QgW3Byb3BzLCBtZXRhXSA9IHVzZURyb3Bkb3duVG9nZ2xlKCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4ocHJvcHMsIG1ldGEpXG4gIH0pO1xufVxuRHJvcGRvd25Ub2dnbGUuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25Ub2dnbGUnO1xuXG4vKiogQGNvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Ub2dnbGU7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgU2VsZWN0YWJsZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBjb25zdCBtYWtlRXZlbnRLZXkgPSAoZXZlbnRLZXksIGhyZWYgPSBudWxsKSA9PiB7XG4gIGlmIChldmVudEtleSAhPSBudWxsKSByZXR1cm4gU3RyaW5nKGV2ZW50S2V5KTtcbiAgcmV0dXJuIGhyZWYgfHwgbnVsbDtcbn07XG5leHBvcnQgZGVmYXVsdCBTZWxlY3RhYmxlQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBOYXZDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5OYXZDb250ZXh0LmRpc3BsYXlOYW1lID0gJ05hdkNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgTmF2Q29udGV4dDsiLCJleHBvcnQgY29uc3QgQVRUUklCVVRFX1BSRUZJWCA9IGBkYXRhLXJyLXVpLWA7XG5leHBvcnQgY29uc3QgUFJPUEVSVFlfUFJFRklYID0gYHJyVWlgO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFBdHRyKHByb3BlcnR5KSB7XG4gIHJldHVybiBgJHtBVFRSSUJVVEVfUFJFRklYfSR7cHJvcGVydHl9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkYXRhUHJvcChwcm9wZXJ0eSkge1xuICByZXR1cm4gYCR7UFJPUEVSVFlfUFJFRklYfSR7cHJvcGVydHl9YDtcbn0iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJldmVudEtleVwiLCBcImRpc2FibGVkXCIsIFwib25DbGlja1wiLCBcImFjdGl2ZVwiLCBcImFzXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0LCB7IG1ha2VFdmVudEtleSB9IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IE5hdkNvbnRleHQgZnJvbSAnLi9OYXZDb250ZXh0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgZGF0YUF0dHIgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8qKlxuICogQ3JlYXRlIGEgZHJvcGRvd24gaXRlbS4gUmV0dXJucyBhIHNldCBvZiBwcm9wcyBmb3IgdGhlIGRyb3Bkb3duIGl0ZW0gY29tcG9uZW50XG4gKiBpbmNsdWRpbmcgYW4gYG9uQ2xpY2tgIGhhbmRsZXIgdGhhdCBwcmV2ZW50cyBzZWxlY3Rpb24gd2hlbiB0aGUgaXRlbSBpcyBkaXNhYmxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJvcGRvd25JdGVtKHtcbiAga2V5LFxuICBocmVmLFxuICBhY3RpdmUsXG4gIGRpc2FibGVkLFxuICBvbkNsaWNrXG59KSB7XG4gIGNvbnN0IG9uU2VsZWN0Q3R4ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VDb250ZXh0KE5hdkNvbnRleHQpO1xuICBjb25zdCB7XG4gICAgYWN0aXZlS2V5XG4gIH0gPSBuYXZDb250ZXh0IHx8IHt9O1xuICBjb25zdCBldmVudEtleSA9IG1ha2VFdmVudEtleShrZXksIGhyZWYpO1xuICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZSA9PSBudWxsICYmIGtleSAhPSBudWxsID8gbWFrZUV2ZW50S2V5KGFjdGl2ZUtleSkgPT09IGV2ZW50S2V5IDogYWN0aXZlO1xuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIG9uQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ2xpY2soZXZlbnQpO1xuICAgIGlmIChvblNlbGVjdEN0eCAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgb25TZWxlY3RDdHgoZXZlbnRLZXksIGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3tcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICAnYXJpYS1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHVuZGVmaW5lZCxcbiAgICAnYXJpYS1zZWxlY3RlZCc6IGlzQWN0aXZlLFxuICAgIFtkYXRhQXR0cignZHJvcGRvd24taXRlbScpXTogJydcbiAgfSwge1xuICAgIGlzQWN0aXZlXG4gIH1dO1xufVxuY29uc3QgRHJvcGRvd25JdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgZXZlbnRLZXksXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBhY3RpdmUsXG4gICAgICBhczogQ29tcG9uZW50ID0gQnV0dG9uXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbZHJvcGRvd25JdGVtUHJvcHNdID0gdXNlRHJvcGRvd25JdGVtKHtcbiAgICBrZXk6IGV2ZW50S2V5LFxuICAgIGhyZWY6IHByb3BzLmhyZWYsXG4gICAgZGlzYWJsZWQsXG4gICAgb25DbGljayxcbiAgICBhY3RpdmVcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSwgZHJvcGRvd25JdGVtUHJvcHMpKTtcbn0pO1xuRHJvcGRvd25JdGVtLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duSXRlbSc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bkl0ZW07IiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnZG9tLWhlbHBlcnMvY2FuVXNlRE9NJztcbmNvbnN0IENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChjYW5Vc2VET00gPyB3aW5kb3cgOiB1bmRlZmluZWQpO1xuZXhwb3J0IGNvbnN0IFdpbmRvd1Byb3ZpZGVyID0gQ29udGV4dC5Qcm92aWRlcjtcblxuLyoqXG4gKiBUaGUgZG9jdW1lbnQgXCJ3aW5kb3dcIiBwbGFjZWQgaW4gUmVhY3QgY29udGV4dC4gSGVscGZ1bCBmb3IgZGV0ZXJtaW5pbmdcbiAqIFNTUiBjb250ZXh0LCBvciB3aGVuIHJlbmRlcmluZyBpbnRvIGFuIGlmcmFtZS5cbiAqXG4gKiBAcmV0dXJucyB0aGUgY3VycmVudCB3aW5kb3dcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV2luZG93KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChDb250ZXh0KTtcbn0iLCJpbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL3F1ZXJ5U2VsZWN0b3JBbGwnO1xuaW1wb3J0IGFkZEV2ZW50TGlzdGVuZXIgZnJvbSAnZG9tLWhlbHBlcnMvYWRkRXZlbnRMaXN0ZW5lcic7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWRQcm9wIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IHVzZVByZXZpb3VzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVByZXZpb3VzJztcbmltcG9ydCB1c2VGb3JjZVVwZGF0ZSBmcm9tICdAcmVzdGFydC9ob29rcy91c2VGb3JjZVVwZGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRMaXN0ZW5lciBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudExpc3RlbmVyJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IERyb3Bkb3duQ29udGV4dCBmcm9tICcuL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgRHJvcGRvd25NZW51IGZyb20gJy4vRHJvcGRvd25NZW51JztcbmltcG9ydCBEcm9wZG93blRvZ2dsZSwgeyBpc1JvbGVNZW51IH0gZnJvbSAnLi9Ecm9wZG93blRvZ2dsZSc7XG5pbXBvcnQgRHJvcGRvd25JdGVtIGZyb20gJy4vRHJvcGRvd25JdGVtJztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCB1c2VXaW5kb3cgZnJvbSAnLi91c2VXaW5kb3cnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIHVzZVJlZldpdGhVcGRhdGUoKSB7XG4gIGNvbnN0IGZvcmNlVXBkYXRlID0gdXNlRm9yY2VVcGRhdGUoKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBhdHRhY2hSZWYgPSB1c2VDYWxsYmFjayhlbGVtZW50ID0+IHtcbiAgICByZWYuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgLy8gZW5zdXJlIHRoYXQgYSBtZW51IHNldCB0cmlnZ2VycyBhbiB1cGRhdGUgZm9yIGNvbnN1bWVyc1xuICAgIGZvcmNlVXBkYXRlKCk7XG4gIH0sIFtmb3JjZVVwZGF0ZV0pO1xuICByZXR1cm4gW3JlZiwgYXR0YWNoUmVmXTtcbn1cblxuLyoqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25cbiAqIEBwdWJsaWNcbiAqL1xuZnVuY3Rpb24gRHJvcGRvd24oe1xuICBkZWZhdWx0U2hvdyxcbiAgc2hvdzogcmF3U2hvdyxcbiAgb25TZWxlY3QsXG4gIG9uVG9nZ2xlOiByYXdPblRvZ2dsZSxcbiAgaXRlbVNlbGVjdG9yID0gYCogWyR7ZGF0YUF0dHIoJ2Ryb3Bkb3duLWl0ZW0nKX1dYCxcbiAgZm9jdXNGaXJzdEl0ZW1PblNob3csXG4gIHBsYWNlbWVudCA9ICdib3R0b20tc3RhcnQnLFxuICBjaGlsZHJlblxufSkge1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgW3Nob3csIG9uVG9nZ2xlXSA9IHVzZVVuY29udHJvbGxlZFByb3AocmF3U2hvdywgZGVmYXVsdFNob3csIHJhd09uVG9nZ2xlKTtcblxuICAvLyBXZSB1c2Ugbm9ybWFsIHJlZnMgaW5zdGVhZCBvZiB1c2VDYWxsYmFja1JlZiBpbiBvcmRlciB0byBwb3B1bGF0ZSB0aGVcbiAgLy8gdGhlIHZhbHVlIGFzIHF1aWNrbHkgYXMgcG9zc2libGUsIG90aGVyd2lzZSB0aGUgZWZmZWN0IHRvIGZvY3VzIHRoZSBlbGVtZW50XG4gIC8vIG1heSBydW4gYmVmb3JlIHRoZSBzdGF0ZSB2YWx1ZSBpcyBzZXRcbiAgY29uc3QgW21lbnVSZWYsIHNldE1lbnVdID0gdXNlUmVmV2l0aFVwZGF0ZSgpO1xuICBjb25zdCBtZW51RWxlbWVudCA9IG1lbnVSZWYuY3VycmVudDtcbiAgY29uc3QgW3RvZ2dsZVJlZiwgc2V0VG9nZ2xlXSA9IHVzZVJlZldpdGhVcGRhdGUoKTtcbiAgY29uc3QgdG9nZ2xlRWxlbWVudCA9IHRvZ2dsZVJlZi5jdXJyZW50O1xuICBjb25zdCBsYXN0U2hvdyA9IHVzZVByZXZpb3VzKHNob3cpO1xuICBjb25zdCBsYXN0U291cmNlRXZlbnQgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZvY3VzSW5Ecm9wZG93biA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IG9uU2VsZWN0Q3R4ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IHRvZ2dsZSA9IHVzZUNhbGxiYWNrKChuZXh0U2hvdywgZXZlbnQsIHNvdXJjZSA9IGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC50eXBlKSA9PiB7XG4gICAgb25Ub2dnbGUobmV4dFNob3csIHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgc291cmNlXG4gICAgfSk7XG4gIH0sIFtvblRvZ2dsZV0pO1xuICBjb25zdCBoYW5kbGVTZWxlY3QgPSB1c2VFdmVudENhbGxiYWNrKChrZXksIGV2ZW50KSA9PiB7XG4gICAgb25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0KGtleSwgZXZlbnQpO1xuICAgIHRvZ2dsZShmYWxzZSwgZXZlbnQsICdzZWxlY3QnKTtcbiAgICBpZiAoIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIG9uU2VsZWN0Q3R4ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdEN0eChrZXksIGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHRvZ2dsZSxcbiAgICBwbGFjZW1lbnQsXG4gICAgc2hvdyxcbiAgICBtZW51RWxlbWVudCxcbiAgICB0b2dnbGVFbGVtZW50LFxuICAgIHNldE1lbnUsXG4gICAgc2V0VG9nZ2xlXG4gIH0pLCBbdG9nZ2xlLCBwbGFjZW1lbnQsIHNob3csIG1lbnVFbGVtZW50LCB0b2dnbGVFbGVtZW50LCBzZXRNZW51LCBzZXRUb2dnbGVdKTtcbiAgaWYgKG1lbnVFbGVtZW50ICYmIGxhc3RTaG93ICYmICFzaG93KSB7XG4gICAgZm9jdXNJbkRyb3Bkb3duLmN1cnJlbnQgPSBtZW51RWxlbWVudC5jb250YWlucyhtZW51RWxlbWVudC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICB9XG4gIGNvbnN0IGZvY3VzVG9nZ2xlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHRvZ2dsZUVsZW1lbnQgJiYgdG9nZ2xlRWxlbWVudC5mb2N1cykge1xuICAgICAgdG9nZ2xlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IG1heWJlRm9jdXNGaXJzdCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBsYXN0U291cmNlRXZlbnQuY3VycmVudDtcbiAgICBsZXQgZm9jdXNUeXBlID0gZm9jdXNGaXJzdEl0ZW1PblNob3c7XG4gICAgaWYgKGZvY3VzVHlwZSA9PSBudWxsKSB7XG4gICAgICBmb2N1c1R5cGUgPSBtZW51UmVmLmN1cnJlbnQgJiYgaXNSb2xlTWVudShtZW51UmVmLmN1cnJlbnQpID8gJ2tleWJvYXJkJyA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZm9jdXNUeXBlID09PSBmYWxzZSB8fCBmb2N1c1R5cGUgPT09ICdrZXlib2FyZCcgJiYgIS9ea2V5LiskLy50ZXN0KHR5cGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0ID0gcXNhKG1lbnVSZWYuY3VycmVudCwgaXRlbVNlbGVjdG9yKVswXTtcbiAgICBpZiAoZmlyc3QgJiYgZmlyc3QuZm9jdXMpIGZpcnN0LmZvY3VzKCk7XG4gIH0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG93KSBtYXliZUZvY3VzRmlyc3QoKTtlbHNlIGlmIChmb2N1c0luRHJvcGRvd24uY3VycmVudCkge1xuICAgICAgZm9jdXNJbkRyb3Bkb3duLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIGZvY3VzVG9nZ2xlKCk7XG4gICAgfVxuICAgIC8vIG9ubHkgYHNob3dgIHNob3VsZCBiZSBjaGFuZ2luZ1xuICB9LCBbc2hvdywgZm9jdXNJbkRyb3Bkb3duLCBmb2N1c1RvZ2dsZSwgbWF5YmVGb2N1c0ZpcnN0XSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGFzdFNvdXJjZUV2ZW50LmN1cnJlbnQgPSBudWxsO1xuICB9KTtcbiAgY29uc3QgZ2V0TmV4dEZvY3VzZWRDaGlsZCA9IChjdXJyZW50LCBvZmZzZXQpID0+IHtcbiAgICBpZiAoIW1lbnVSZWYuY3VycmVudCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaXRlbXMgPSBxc2EobWVudVJlZi5jdXJyZW50LCBpdGVtU2VsZWN0b3IpO1xuICAgIGxldCBpbmRleCA9IGl0ZW1zLmluZGV4T2YoY3VycmVudCkgKyBvZmZzZXQ7XG4gICAgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgaXRlbXMubGVuZ3RoKSk7XG4gICAgcmV0dXJuIGl0ZW1zW2luZGV4XTtcbiAgfTtcbiAgdXNlRXZlbnRMaXN0ZW5lcih1c2VDYWxsYmFjaygoKSA9PiB3aW5kb3cuZG9jdW1lbnQsIFt3aW5kb3ddKSwgJ2tleWRvd24nLCBldmVudCA9PiB7XG4gICAgdmFyIF9tZW51UmVmJGN1cnJlbnQsIF90b2dnbGVSZWYkY3VycmVudDtcbiAgICBjb25zdCB7XG4gICAgICBrZXlcbiAgICB9ID0gZXZlbnQ7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IGZyb21NZW51ID0gKF9tZW51UmVmJGN1cnJlbnQgPSBtZW51UmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWVudVJlZiRjdXJyZW50LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgY29uc3QgZnJvbVRvZ2dsZSA9IChfdG9nZ2xlUmVmJGN1cnJlbnQgPSB0b2dnbGVSZWYuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90b2dnbGVSZWYkY3VycmVudC5jb250YWlucyh0YXJnZXQpO1xuXG4gICAgLy8gU2Vjb25kIG9ubHkgdG8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvOGNmYmY2OTMzYjhhMDE0NmFjM2ZiYzM2OWYxOWU1MjBiZDFlYmRhYy9qcy9zcmMvZHJvcGRvd24uanMjTDQwMFxuICAgIC8vIGluIGluc2NydXRhYmlsaXR5XG4gICAgY29uc3QgaXNJbnB1dCA9IC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QodGFyZ2V0LnRhZ05hbWUpO1xuICAgIGlmIChpc0lucHV0ICYmIChrZXkgPT09ICcgJyB8fCBrZXkgIT09ICdFc2NhcGUnICYmIGZyb21NZW51IHx8IGtleSA9PT0gJ0VzY2FwZScgJiYgdGFyZ2V0LnR5cGUgPT09ICdzZWFyY2gnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWZyb21NZW51ICYmICFmcm9tVG9nZ2xlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChrZXkgPT09ICdUYWInICYmICghbWVudVJlZi5jdXJyZW50IHx8ICFzaG93KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsYXN0U291cmNlRXZlbnQuY3VycmVudCA9IGV2ZW50LnR5cGU7XG4gICAgY29uc3QgbWV0YSA9IHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgc291cmNlOiBldmVudC50eXBlXG4gICAgfTtcbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEZvY3VzZWRDaGlsZCh0YXJnZXQsIC0xKTtcbiAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0LmZvY3VzKSBuZXh0LmZvY3VzKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghc2hvdykge1xuICAgICAgICAgIG9uVG9nZ2xlKHRydWUsIG1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0Rm9jdXNlZENoaWxkKHRhcmdldCwgMSk7XG4gICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5mb2N1cykgbmV4dC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgIC8vIG9uIGtleWRvd24gdGhlIHRhcmdldCBpcyB0aGUgZWxlbWVudCBiZWluZyB0YWJiZWQgRlJPTSwgd2UgbmVlZCB0aGF0XG4gICAgICAgIC8vIHRvIGtub3cgaWYgdGhpcyBldmVudCBpcyByZWxldmFudCB0byB0aGlzIGRyb3Bkb3duIChlLmcuIGluIHRoaXMgbWVudSkuXG4gICAgICAgIC8vIE9uIGBrZXl1cGAgdGhlIHRhcmdldCBpcyB0aGUgZWxlbWVudCBiZWluZyB0YWdnZWQgVE8gd2hpY2ggd2UgdXNlIHRvIGNoZWNrXG4gICAgICAgIC8vIGlmIGZvY3VzIGhhcyBsZWZ0IHRoZSBtZW51XG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIodGFyZ2V0Lm93bmVyRG9jdW1lbnQsICdrZXl1cCcsIGUgPT4ge1xuICAgICAgICAgIHZhciBfbWVudVJlZiRjdXJyZW50MjtcbiAgICAgICAgICBpZiAoZS5rZXkgPT09ICdUYWInICYmICFlLnRhcmdldCB8fCAhKChfbWVudVJlZiRjdXJyZW50MiA9IG1lbnVSZWYuY3VycmVudCkgIT0gbnVsbCAmJiBfbWVudVJlZiRjdXJyZW50Mi5jb250YWlucyhlLnRhcmdldCkpKSB7XG4gICAgICAgICAgICBvblRvZ2dsZShmYWxzZSwgbWV0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBpZiAoa2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgb25Ub2dnbGUoZmFsc2UsIG1ldGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFNlbGVjdGFibGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGhhbmRsZVNlbGVjdCxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goRHJvcGRvd25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogY29udGV4dCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXG4gIH0pO1xufVxuRHJvcGRvd24uZGlzcGxheU5hbWUgPSAnRHJvcGRvd24nO1xuRHJvcGRvd24uTWVudSA9IERyb3Bkb3duTWVudTtcbkRyb3Bkb3duLlRvZ2dsZSA9IERyb3Bkb3duVG9nZ2xlO1xuRHJvcGRvd24uSXRlbSA9IERyb3Bkb3duSXRlbTtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KGFyZykgeyB2YXIga2V5ID0gX3RvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7IHJldHVybiB0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiID8ga2V5IDogU3RyaW5nKGtleSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZShpbnB1dCwgaGludCkgeyBpZiAodHlwZW9mIGlucHV0ICE9PSBcIm9iamVjdFwiIHx8IGlucHV0ID09PSBudWxsKSByZXR1cm4gaW5wdXQ7IHZhciBwcmltID0gaW5wdXRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHByaW0gIT09IHVuZGVmaW5lZCkgeyB2YXIgcmVzID0gcHJpbS5jYWxsKGlucHV0LCBoaW50IHx8IFwiZGVmYXVsdFwiKTsgaWYgKHR5cGVvZiByZXMgIT09IFwib2JqZWN0XCIpIHJldHVybiByZXM7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKGhpbnQgPT09IFwic3RyaW5nXCIgPyBTdHJpbmcgOiBOdW1iZXIpKGlucHV0KTsgfVxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEtleShrZXkpIHtcbiAgcmV0dXJuICdkZWZhdWx0JyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHIoMSk7XG59XG5mdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWRQcm9wKHByb3BWYWx1ZSwgZGVmYXVsdFZhbHVlLCBoYW5kbGVyKSB7XG4gIGNvbnN0IHdhc1Byb3BSZWYgPSB1c2VSZWYocHJvcFZhbHVlICE9PSB1bmRlZmluZWQpO1xuICBjb25zdCBbc3RhdGVWYWx1ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoZGVmYXVsdFZhbHVlKTtcbiAgY29uc3QgaXNQcm9wID0gcHJvcFZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIGNvbnN0IHdhc1Byb3AgPSB3YXNQcm9wUmVmLmN1cnJlbnQ7XG4gIHdhc1Byb3BSZWYuY3VycmVudCA9IGlzUHJvcDtcblxuICAvKipcbiAgICogSWYgYSBwcm9wIHN3aXRjaGVzIGZyb20gY29udHJvbGxlZCB0byBVbmNvbnRyb2xsZWRcbiAgICogcmVzZXQgaXRzIHZhbHVlIHRvIHRoZSBkZWZhdWx0VmFsdWVcbiAgICovXG4gIGlmICghaXNQcm9wICYmIHdhc1Byb3AgJiYgc3RhdGVWYWx1ZSAhPT0gZGVmYXVsdFZhbHVlKSB7XG4gICAgc2V0U3RhdGUoZGVmYXVsdFZhbHVlKTtcbiAgfVxuICByZXR1cm4gW2lzUHJvcCA/IHByb3BWYWx1ZSA6IHN0YXRlVmFsdWUsIHVzZUNhbGxiYWNrKCh2YWx1ZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChoYW5kbGVyKSBoYW5kbGVyKHZhbHVlLCAuLi5hcmdzKTtcbiAgICBzZXRTdGF0ZSh2YWx1ZSk7XG4gIH0sIFtoYW5kbGVyXSldO1xufVxuZXhwb3J0IHsgdXNlVW5jb250cm9sbGVkUHJvcCB9O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVuY29udHJvbGxlZChwcm9wcywgY29uZmlnKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhjb25maWcpLnJlZHVjZSgocmVzdWx0LCBmaWVsZE5hbWUpID0+IHtcbiAgICBjb25zdCBfcmVmID0gcmVzdWx0LFxuICAgICAgX2RlZmF1bHRLZXkgPSBkZWZhdWx0S2V5KGZpZWxkTmFtZSksXG4gICAgICB7XG4gICAgICAgIFtfZGVmYXVsdEtleV06IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgW2ZpZWxkTmFtZV06IHByb3BzVmFsdWVcbiAgICAgIH0gPSBfcmVmLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIFtfZGVmYXVsdEtleSwgZmllbGROYW1lXS5tYXAoX3RvUHJvcGVydHlLZXkpKTtcbiAgICBjb25zdCBoYW5kbGVyTmFtZSA9IGNvbmZpZ1tmaWVsZE5hbWVdO1xuICAgIGNvbnN0IFt2YWx1ZSwgaGFuZGxlcl0gPSB1c2VVbmNvbnRyb2xsZWRQcm9wKHByb3BzVmFsdWUsIGRlZmF1bHRWYWx1ZSwgcHJvcHNbaGFuZGxlck5hbWVdKTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwge1xuICAgICAgW2ZpZWxkTmFtZV06IHZhbHVlLFxuICAgICAgW2hhbmRsZXJOYW1lXTogaGFuZGxlclxuICAgIH0pO1xuICB9LCBwcm9wcyk7XG59IiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnLi91c2VFdmVudENhbGxiYWNrJztcblxuLyoqXG4gKiBBdHRhY2hlcyBhbiBldmVudCBoYW5kbGVyIG91dHNpZGUgZGlyZWN0bHkgdG8gc3BlY2lmaWVkIERPTSBlbGVtZW50XG4gKiBieXBhc3NpbmcgdGhlIHJlYWN0IHN5bnRoZXRpYyBldmVudCBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHRhcmdldCB0byBsaXN0ZW4gZm9yIGV2ZW50cyBvblxuICogQHBhcmFtIGV2ZW50IFRoZSBET00gZXZlbnQgbmFtZVxuICogQHBhcmFtIGhhbmRsZXIgQW4gZXZlbnQgaGFuZGxlclxuICogQHBhcmFtIGNhcHR1cmUgV2hldGhlciBvciBub3QgdG8gbGlzdGVuIGR1cmluZyB0aGUgY2FwdHVyZSBldmVudCBwaGFzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VFdmVudExpc3RlbmVyKGV2ZW50VGFyZ2V0LCBldmVudCwgbGlzdGVuZXIsIGNhcHR1cmUpIHtcbiAgaWYgKGNhcHR1cmUgPT09IHZvaWQgMCkge1xuICAgIGNhcHR1cmUgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBoYW5kbGVyID0gdXNlRXZlbnRDYWxsYmFjayhsaXN0ZW5lcik7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRhcmdldCA9IHR5cGVvZiBldmVudFRhcmdldCA9PT0gJ2Z1bmN0aW9uJyA/IGV2ZW50VGFyZ2V0KCkgOiBldmVudFRhcmdldDtcbiAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgY2FwdHVyZSk7XG4gICAgfTtcbiAgfSwgW2V2ZW50VGFyZ2V0XSk7XG59IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgRHJvcGRvd25Db250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuRHJvcGRvd25Db250ZXh0LmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bkNvbnRleHQ7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bkl0ZW0gfSBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IEFuY2hvciBmcm9tICdAcmVzdGFydC91aS9BbmNob3InO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEcm9wZG93bkl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBldmVudEtleSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgb25DbGljayxcbiAgYWN0aXZlLFxuICBhczogQ29tcG9uZW50ID0gQW5jaG9yLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2Ryb3Bkb3duLWl0ZW0nKTtcbiAgY29uc3QgW2Ryb3Bkb3duSXRlbVByb3BzLCBtZXRhXSA9IHVzZURyb3Bkb3duSXRlbSh7XG4gICAga2V5OiBldmVudEtleSxcbiAgICBocmVmOiBwcm9wcy5ocmVmLFxuICAgIGRpc2FibGVkLFxuICAgIG9uQ2xpY2ssXG4gICAgYWN0aXZlXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgLi4uZHJvcGRvd25JdGVtUHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCBtZXRhLmlzQWN0aXZlICYmICdhY3RpdmUnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnKVxuICB9KTtcbn0pO1xuRHJvcGRvd25JdGVtLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duSXRlbSc7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bkl0ZW07IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29udGV4dC5kaXNwbGF5TmFtZSA9ICdJbnB1dEdyb3VwQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLy8gVE9ETzogY2hlY2tcblxuY29uc3QgY29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuY29udGV4dC5kaXNwbGF5TmFtZSA9ICdOYXZiYXJDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGNvbnRleHQ7IiwiaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyhyZWYsIGNvbXBvbmVudE5hbWUpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICBpZiAoIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSByZXR1cm4gcmVmO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICBjb25zdCB3YXJuaW5nUmVmID0gdXNlQ2FsbGJhY2socmVmVmFsdWUgPT4ge1xuICAgICEocmVmVmFsdWUgPT0gbnVsbCB8fCAhcmVmVmFsdWUuaXNSZWFjdENvbXBvbmVudCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGAke2NvbXBvbmVudE5hbWV9IGluamVjdGVkIGEgcmVmIHRvIGEgcHJvdmlkZWQgXFxgYXNcXGAgY29tcG9uZW50IHRoYXQgcmVzb2x2ZWQgdG8gYSBjb21wb25lbnQgaW5zdGFuY2UgaW5zdGVhZCBvZiBhIERPTSBlbGVtZW50LiBgICsgJ1VzZSBgUmVhY3QuZm9yd2FyZFJlZmAgdG8gcHJvdmlkZSB0aGUgaW5qZWN0ZWQgcmVmIHRvIHRoZSBjbGFzcyBjb21wb25lbnQgYXMgYSBwcm9wIGluIG9yZGVyIHRvIHBhc3MgaXQgZGlyZWN0bHkgdG8gYSBET00gZWxlbWVudCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgfSwgW2NvbXBvbmVudE5hbWVdKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gIHJldHVybiB1c2VNZXJnZWRSZWZzKHdhcm5pbmdSZWYsIHJlZik7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25NZW51IH0gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd25NZW51JztcbmltcG9ydCB1c2VJc29tb3JwaGljRWZmZWN0IGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUlzb21vcnBoaWNFZmZlY3QnO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgd2FybmluZyBmcm9tICd3YXJuaW5nJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IElucHV0R3JvdXBDb250ZXh0IGZyb20gJy4vSW5wdXRHcm91cENvbnRleHQnO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nIGZyb20gJy4vdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nJztcbmltcG9ydCB7IGFsaWduUHJvcFR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGZsaXA6IHRydWVcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50KGFsaWduRW5kLCBkcm9wRGlyZWN0aW9uLCBpc1JUTCkge1xuICBjb25zdCB0b3BTdGFydCA9IGlzUlRMID8gJ3RvcC1lbmQnIDogJ3RvcC1zdGFydCc7XG4gIGNvbnN0IHRvcEVuZCA9IGlzUlRMID8gJ3RvcC1zdGFydCcgOiAndG9wLWVuZCc7XG4gIGNvbnN0IGJvdHRvbVN0YXJ0ID0gaXNSVEwgPyAnYm90dG9tLWVuZCcgOiAnYm90dG9tLXN0YXJ0JztcbiAgY29uc3QgYm90dG9tRW5kID0gaXNSVEwgPyAnYm90dG9tLXN0YXJ0JyA6ICdib3R0b20tZW5kJztcbiAgY29uc3QgbGVmdFN0YXJ0ID0gaXNSVEwgPyAncmlnaHQtc3RhcnQnIDogJ2xlZnQtc3RhcnQnO1xuICBjb25zdCBsZWZ0RW5kID0gaXNSVEwgPyAncmlnaHQtZW5kJyA6ICdsZWZ0LWVuZCc7XG4gIGNvbnN0IHJpZ2h0U3RhcnQgPSBpc1JUTCA/ICdsZWZ0LXN0YXJ0JyA6ICdyaWdodC1zdGFydCc7XG4gIGNvbnN0IHJpZ2h0RW5kID0gaXNSVEwgPyAnbGVmdC1lbmQnIDogJ3JpZ2h0LWVuZCc7XG4gIGxldCBwbGFjZW1lbnQgPSBhbGlnbkVuZCA/IGJvdHRvbUVuZCA6IGJvdHRvbVN0YXJ0O1xuICBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ3VwJykgcGxhY2VtZW50ID0gYWxpZ25FbmQgPyB0b3BFbmQgOiB0b3BTdGFydDtlbHNlIGlmIChkcm9wRGlyZWN0aW9uID09PSAnZW5kJykgcGxhY2VtZW50ID0gYWxpZ25FbmQgPyByaWdodEVuZCA6IHJpZ2h0U3RhcnQ7ZWxzZSBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ3N0YXJ0JykgcGxhY2VtZW50ID0gYWxpZ25FbmQgPyBsZWZ0RW5kIDogbGVmdFN0YXJ0O2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICdkb3duLWNlbnRlcmVkJykgcGxhY2VtZW50ID0gJ2JvdHRvbSc7ZWxzZSBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ3VwLWNlbnRlcmVkJykgcGxhY2VtZW50ID0gJ3RvcCc7XG4gIHJldHVybiBwbGFjZW1lbnQ7XG59XG5jb25zdCBEcm9wZG93bk1lbnUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBhbGlnbixcbiAgcm9vdENsb3NlRXZlbnQsXG4gIGZsaXAsXG4gIHNob3c6IHNob3dQcm9wcyxcbiAgcmVuZGVyT25Nb3VudCxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gIHBvcHBlckNvbmZpZyxcbiAgdmFyaWFudCxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBsZXQgYWxpZ25FbmQgPSBmYWxzZTtcbiAgY29uc3QgaXNOYXZiYXIgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi1tZW51Jyk7XG4gIGNvbnN0IHtcbiAgICBhbGlnbjogY29udGV4dEFsaWduLFxuICAgIGRyb3AsXG4gICAgaXNSVExcbiAgfSA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgYWxpZ24gPSBhbGlnbiB8fCBjb250ZXh0QWxpZ247XG4gIGNvbnN0IGlzSW5wdXRHcm91cCA9IHVzZUNvbnRleHQoSW5wdXRHcm91cENvbnRleHQpO1xuICBjb25zdCBhbGlnbkNsYXNzZXMgPSBbXTtcbiAgaWYgKGFsaWduKSB7XG4gICAgaWYgKHR5cGVvZiBhbGlnbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhbGlnbik7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGtleXMubGVuZ3RoID09PSAxLCAnVGhlcmUgc2hvdWxkIG9ubHkgYmUgMSBicmVha3BvaW50IHdoZW4gcGFzc2luZyBhbiBvYmplY3QgdG8gYGFsaWduYCcpIDogdm9pZCAwO1xuICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGJya1BvaW50ID0ga2V5c1swXTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gYWxpZ25bYnJrUG9pbnRdO1xuXG4gICAgICAgIC8vIC5kcm9wZG93bi1tZW51LWVuZCBpcyByZXF1aXJlZCBmb3IgcmVzcG9uc2l2ZWx5IGFsaWduaW5nXG4gICAgICAgIC8vIGxlZnQgaW4gYWRkaXRpb24gdG8gYWxpZ24gbGVmdCBjbGFzc2VzLlxuICAgICAgICBhbGlnbkVuZCA9IGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JztcbiAgICAgICAgYWxpZ25DbGFzc2VzLnB1c2goYCR7cHJlZml4fS0ke2Jya1BvaW50fS0ke2RpcmVjdGlvbn1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFsaWduID09PSAnZW5kJykge1xuICAgICAgYWxpZ25FbmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBjb25zdCBwbGFjZW1lbnQgPSBnZXREcm9wZG93bk1lbnVQbGFjZW1lbnQoYWxpZ25FbmQsIGRyb3AsIGlzUlRMKTtcbiAgY29uc3QgW21lbnVQcm9wcywge1xuICAgIGhhc1Nob3duLFxuICAgIHBvcHBlcixcbiAgICBzaG93LFxuICAgIHRvZ2dsZVxuICB9XSA9IHVzZURyb3Bkb3duTWVudSh7XG4gICAgZmxpcCxcbiAgICByb290Q2xvc2VFdmVudCxcbiAgICBzaG93OiBzaG93UHJvcHMsXG4gICAgdXNlUG9wcGVyOiAhaXNOYXZiYXIgJiYgYWxpZ25DbGFzc2VzLmxlbmd0aCA9PT0gMCxcbiAgICBvZmZzZXQ6IFswLCAyXSxcbiAgICBwb3BwZXJDb25maWcsXG4gICAgcGxhY2VtZW50XG4gIH0pO1xuICBtZW51UHJvcHMucmVmID0gdXNlTWVyZ2VkUmVmcyh1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcocmVmLCAnRHJvcGRvd25NZW51JyksIG1lbnVQcm9wcy5yZWYpO1xuICB1c2VJc29tb3JwaGljRWZmZWN0KCgpID0+IHtcbiAgICAvLyBQb3BwZXIncyBpbml0aWFsIHBvc2l0aW9uIGZvciB0aGUgbWVudSBpcyBpbmNvcnJlY3Qgd2hlblxuICAgIC8vIHJlbmRlck9uTW91bnQ9dHJ1ZS4gTmVlZCB0byBjYWxsIHVwZGF0ZSgpIHRvIGNvcnJlY3QgaXQuXG4gICAgaWYgKHNob3cpIHBvcHBlciA9PSBudWxsID8gdm9pZCAwIDogcG9wcGVyLnVwZGF0ZSgpO1xuICB9LCBbc2hvd10pO1xuICBpZiAoIWhhc1Nob3duICYmICFyZW5kZXJPbk1vdW50ICYmICFpc0lucHV0R3JvdXApIHJldHVybiBudWxsO1xuXG4gIC8vIEZvciBjdXN0b20gY29tcG9uZW50cyBwcm92aWRlIGFkZGl0aW9uYWwsIG5vbi1ET00sIHByb3BzO1xuICBpZiAodHlwZW9mIENvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICBtZW51UHJvcHMuc2hvdyA9IHNob3c7XG4gICAgbWVudVByb3BzLmNsb3NlID0gKCkgPT4gdG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiB0b2dnbGUoZmFsc2UpO1xuICAgIG1lbnVQcm9wcy5hbGlnbiA9IGFsaWduO1xuICB9XG4gIGxldCBzdHlsZSA9IHByb3BzLnN0eWxlO1xuICBpZiAocG9wcGVyICE9IG51bGwgJiYgcG9wcGVyLnBsYWNlbWVudCkge1xuICAgIC8vIHdlIGRvbid0IG5lZWQgdGhlIGRlZmF1bHQgcG9wcGVyIHN0eWxlLFxuICAgIC8vIG1lbnVzIGFyZSBkaXNwbGF5OiBub25lIHdoZW4gbm90IHNob3duLlxuICAgIHN0eWxlID0ge1xuICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAuLi5tZW51UHJvcHMuc3R5bGVcbiAgICB9O1xuICAgIHByb3BzWyd4LXBsYWNlbWVudCddID0gcG9wcGVyLnBsYWNlbWVudDtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgLi4ubWVudVByb3BzLFxuICAgIHN0eWxlOiBzdHlsZVxuICAgIC8vIEJvb3RzdHJhcCBjc3MgcmVxdWlyZXMgdGhpcyBkYXRhIGF0dHJpYiB0byBzdHlsZSByZXNwb25zaXZlIG1lbnVzLlxuICAgICxcbiAgICAuLi4oKGFsaWduQ2xhc3Nlcy5sZW5ndGggfHwgaXNOYXZiYXIpICYmIHtcbiAgICAgICdkYXRhLWJzLXBvcHBlcic6ICdzdGF0aWMnXG4gICAgfSksXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCBzaG93ICYmICdzaG93JywgYWxpZ25FbmQgJiYgYCR7cHJlZml4fS1lbmRgLCB2YXJpYW50ICYmIGAke3ByZWZpeH0tJHt2YXJpYW50fWAsIC4uLmFsaWduQ2xhc3NlcylcbiAgfSk7XG59KTtcbkRyb3Bkb3duTWVudS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bk1lbnUnO1xuRHJvcGRvd25NZW51LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTWVudTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJ1dHRvblByb3BzIH0gZnJvbSAnQHJlc3RhcnQvdWkvQnV0dG9uJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICB2YXJpYW50OiAncHJpbWFyeScsXG4gIGFjdGl2ZTogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZVxufTtcbmNvbnN0IEJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGFzLFxuICBic1ByZWZpeCxcbiAgdmFyaWFudCxcbiAgc2l6ZSxcbiAgYWN0aXZlLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnYnRuJyk7XG4gIGNvbnN0IFtidXR0b25Qcm9wcywge1xuICAgIHRhZ05hbWVcbiAgfV0gPSB1c2VCdXR0b25Qcm9wcyh7XG4gICAgdGFnTmFtZTogYXMsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IHRhZ05hbWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5idXR0b25Qcm9wcyxcbiAgICAuLi5wcm9wcyxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIGFjdGl2ZSAmJiAnYWN0aXZlJywgdmFyaWFudCAmJiBgJHtwcmVmaXh9LSR7dmFyaWFudH1gLCBzaXplICYmIGAke3ByZWZpeH0tJHtzaXplfWAsIHByb3BzLmhyZWYgJiYgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJylcbiAgfSk7XG59KTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdCdXR0b24nO1xuQnV0dG9uLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLCJpbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCB7IHVzZURyb3Bkb3duVG9nZ2xlIH0gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd25Ub2dnbGUnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyBmcm9tICcuL3VzZVdyYXBwZWRSZWZXaXRoV2FybmluZyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRHJvcGRvd25Ub2dnbGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgc3BsaXQsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRCc1ByZWZpeCxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gQnV0dG9uLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2Ryb3Bkb3duLXRvZ2dsZScpO1xuICBjb25zdCBkcm9wZG93bkNvbnRleHQgPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGlmIChjaGlsZEJzUHJlZml4ICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcm9wcy5ic1ByZWZpeCA9IGNoaWxkQnNQcmVmaXg7XG4gIH1cbiAgY29uc3QgW3RvZ2dsZVByb3BzXSA9IHVzZURyb3Bkb3duVG9nZ2xlKCk7XG4gIHRvZ2dsZVByb3BzLnJlZiA9IHVzZU1lcmdlZFJlZnModG9nZ2xlUHJvcHMucmVmLCB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcocmVmLCAnRHJvcGRvd25Ub2dnbGUnKSk7XG5cbiAgLy8gVGhpcyBpbnRlbnRpb25hbGx5IGZvcndhcmRzIHNpemUgYW5kIHZhcmlhbnQgKGlmIHNldCkgdG8gdGhlXG4gIC8vIHVuZGVybHlpbmcgY29tcG9uZW50LCB0byBhbGxvdyBpdCB0byByZW5kZXIgc2l6ZSBhbmQgc3R5bGUgdmFyaWFudHMuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIHNwbGl0ICYmIGAke3ByZWZpeH0tc3BsaXRgLCAoZHJvcGRvd25Db250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBkcm9wZG93bkNvbnRleHQuc2hvdykgJiYgJ3Nob3cnKSxcbiAgICAuLi50b2dnbGVQcm9wcyxcbiAgICAuLi5wcm9wc1xuICB9KTtcbn0pO1xuRHJvcGRvd25Ub2dnbGUuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25Ub2dnbGUnO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Ub2dnbGU7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJhc2VEcm9wZG93biBmcm9tICdAcmVzdGFydC91aS9Ecm9wZG93bic7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQgfSBmcm9tICd1bmNvbnRyb2xsYWJsZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IERyb3Bkb3duSXRlbSBmcm9tICcuL0Ryb3Bkb3duSXRlbSc7XG5pbXBvcnQgRHJvcGRvd25NZW51LCB7IGdldERyb3Bkb3duTWVudVBsYWNlbWVudCB9IGZyb20gJy4vRHJvcGRvd25NZW51JztcbmltcG9ydCBEcm9wZG93blRvZ2dsZSBmcm9tICcuL0Ryb3Bkb3duVG9nZ2xlJztcbmltcG9ydCBJbnB1dEdyb3VwQ29udGV4dCBmcm9tICcuL0lucHV0R3JvdXBDb250ZXh0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCwgdXNlSXNSVEwgfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgeyBhbGlnblByb3BUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRHJvcGRvd25IZWFkZXIgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2Ryb3Bkb3duLWhlYWRlcicsIHtcbiAgZGVmYXVsdFByb3BzOiB7XG4gICAgcm9sZTogJ2hlYWRpbmcnXG4gIH1cbn0pO1xuY29uc3QgRHJvcGRvd25EaXZpZGVyID0gY3JlYXRlV2l0aEJzUHJlZml4KCdkcm9wZG93bi1kaXZpZGVyJywge1xuICBDb21wb25lbnQ6ICdocicsXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIHJvbGU6ICdzZXBhcmF0b3InXG4gIH1cbn0pO1xuY29uc3QgRHJvcGRvd25JdGVtVGV4dCA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnZHJvcGRvd24taXRlbS10ZXh0Jywge1xuICBDb21wb25lbnQ6ICdzcGFuJ1xufSk7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIG5hdmJhcjogZmFsc2UsXG4gIGFsaWduOiAnc3RhcnQnLFxuICBhdXRvQ2xvc2U6IHRydWUsXG4gIGRyb3A6ICdkb3duJ1xufTtcbmNvbnN0IERyb3Bkb3duID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHBQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBic1ByZWZpeCxcbiAgICBkcm9wLFxuICAgIHNob3csXG4gICAgY2xhc3NOYW1lLFxuICAgIGFsaWduLFxuICAgIG9uU2VsZWN0LFxuICAgIG9uVG9nZ2xlLFxuICAgIGZvY3VzRmlyc3RJdGVtT25TaG93LFxuICAgIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gICAgbmF2YmFyOiBfNCxcbiAgICBhdXRvQ2xvc2UsXG4gICAgLi4ucHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZChwUHJvcHMsIHtcbiAgICBzaG93OiAnb25Ub2dnbGUnXG4gIH0pO1xuICBjb25zdCBpc0lucHV0R3JvdXAgPSB1c2VDb250ZXh0KElucHV0R3JvdXBDb250ZXh0KTtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnZHJvcGRvd24nKTtcbiAgY29uc3QgaXNSVEwgPSB1c2VJc1JUTCgpO1xuICBjb25zdCBpc0Nsb3NpbmdQZXJtaXR0ZWQgPSBzb3VyY2UgPT4ge1xuICAgIC8vIGF1dG9DbG9zZT1mYWxzZSBvbmx5IHBlcm1pdHMgY2xvc2Ugb24gYnV0dG9uIGNsaWNrXG4gICAgaWYgKGF1dG9DbG9zZSA9PT0gZmFsc2UpIHJldHVybiBzb3VyY2UgPT09ICdjbGljayc7XG5cbiAgICAvLyBhdXRvQ2xvc2U9aW5zaWRlIGRvZXNuJ3QgcGVybWl0IGNsb3NlIG9uIHJvb3RDbG9zZVxuICAgIGlmIChhdXRvQ2xvc2UgPT09ICdpbnNpZGUnKSByZXR1cm4gc291cmNlICE9PSAncm9vdENsb3NlJztcblxuICAgIC8vIGF1dG9DbG9zZT1vdXRzaWRlIGRvZXNuJ3QgcGVybWl0IGNsb3NlIG9uIHNlbGVjdFxuICAgIGlmIChhdXRvQ2xvc2UgPT09ICdvdXRzaWRlJykgcmV0dXJuIHNvdXJjZSAhPT0gJ3NlbGVjdCc7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIGNvbnN0IGhhbmRsZVRvZ2dsZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRTaG93LCBtZXRhKSA9PiB7XG4gICAgaWYgKG1ldGEub3JpZ2luYWxFdmVudC5jdXJyZW50VGFyZ2V0ID09PSBkb2N1bWVudCAmJiAobWV0YS5zb3VyY2UgIT09ICdrZXlkb3duJyB8fCBtZXRhLm9yaWdpbmFsRXZlbnQua2V5ID09PSAnRXNjYXBlJykpIG1ldGEuc291cmNlID0gJ3Jvb3RDbG9zZSc7XG4gICAgaWYgKGlzQ2xvc2luZ1Blcm1pdHRlZChtZXRhLnNvdXJjZSkpIG9uVG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiBvblRvZ2dsZShuZXh0U2hvdywgbWV0YSk7XG4gIH0pO1xuICBjb25zdCBhbGlnbkVuZCA9IGFsaWduID09PSAnZW5kJztcbiAgY29uc3QgcGxhY2VtZW50ID0gZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50KGFsaWduRW5kLCBkcm9wLCBpc1JUTCk7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBhbGlnbixcbiAgICBkcm9wLFxuICAgIGlzUlRMXG4gIH0pLCBbYWxpZ24sIGRyb3AsIGlzUlRMXSk7XG4gIGNvbnN0IGRpcmVjdGlvbkNsYXNzZXMgPSB7XG4gICAgZG93bjogcHJlZml4LFxuICAgICdkb3duLWNlbnRlcmVkJzogYCR7cHJlZml4fS1jZW50ZXJgLFxuICAgIHVwOiAnZHJvcHVwJyxcbiAgICAndXAtY2VudGVyZWQnOiAnZHJvcHVwLWNlbnRlciBkcm9wdXAnLFxuICAgIGVuZDogJ2Ryb3BlbmQnLFxuICAgIHN0YXJ0OiAnZHJvcHN0YXJ0J1xuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRHJvcGRvd25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZSxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQmFzZURyb3Bkb3duLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHNob3c6IHNob3csXG4gICAgICBvblNlbGVjdDogb25TZWxlY3QsXG4gICAgICBvblRvZ2dsZTogaGFuZGxlVG9nZ2xlLFxuICAgICAgZm9jdXNGaXJzdEl0ZW1PblNob3c6IGZvY3VzRmlyc3RJdGVtT25TaG93LFxuICAgICAgaXRlbVNlbGVjdG9yOiBgLiR7cHJlZml4fS1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpYCxcbiAgICAgIGNoaWxkcmVuOiBpc0lucHV0R3JvdXAgPyBwcm9wcy5jaGlsZHJlbiA6IC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHNob3cgJiYgJ3Nob3cnLCBkaXJlY3Rpb25DbGFzc2VzW2Ryb3BdKVxuICAgICAgfSlcbiAgICB9KVxuICB9KTtcbn0pO1xuRHJvcGRvd24uZGlzcGxheU5hbWUgPSAnRHJvcGRvd24nO1xuRHJvcGRvd24uZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihEcm9wZG93biwge1xuICBUb2dnbGU6IERyb3Bkb3duVG9nZ2xlLFxuICBNZW51OiBEcm9wZG93bk1lbnUsXG4gIEl0ZW06IERyb3Bkb3duSXRlbSxcbiAgSXRlbVRleHQ6IERyb3Bkb3duSXRlbVRleHQsXG4gIERpdmlkZXI6IERyb3Bkb3duRGl2aWRlcixcbiAgSGVhZGVyOiBEcm9wZG93bkhlYWRlclxufSk7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgVGFiQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGRlZmF1bHQgVGFiQ29udGV4dDsiLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJhc1wiLCBcImFjdGl2ZVwiLCBcImV2ZW50S2V5XCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IE5hdkNvbnRleHQgZnJvbSAnLi9OYXZDb250ZXh0JztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCwgeyBtYWtlRXZlbnRLZXkgfSBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgZGF0YUF0dHIgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IFRhYkNvbnRleHQgZnJvbSAnLi9UYWJDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZnVuY3Rpb24gdXNlTmF2SXRlbSh7XG4gIGtleSxcbiAgb25DbGljayxcbiAgYWN0aXZlLFxuICBpZCxcbiAgcm9sZSxcbiAgZGlzYWJsZWRcbn0pIHtcbiAgY29uc3QgcGFyZW50T25TZWxlY3QgPSB1c2VDb250ZXh0KFNlbGVjdGFibGVDb250ZXh0KTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZUNvbnRleHQoTmF2Q29udGV4dCk7XG4gIGNvbnN0IHRhYkNvbnRleHQgPSB1c2VDb250ZXh0KFRhYkNvbnRleHQpO1xuICBsZXQgaXNBY3RpdmUgPSBhY3RpdmU7XG4gIGNvbnN0IHByb3BzID0ge1xuICAgIHJvbGVcbiAgfTtcbiAgaWYgKG5hdkNvbnRleHQpIHtcbiAgICBpZiAoIXJvbGUgJiYgbmF2Q29udGV4dC5yb2xlID09PSAndGFibGlzdCcpIHByb3BzLnJvbGUgPSAndGFiJztcbiAgICBjb25zdCBjb250ZXh0Q29udHJvbGxlcklkID0gbmF2Q29udGV4dC5nZXRDb250cm9sbGVySWQoa2V5ICE9IG51bGwgPyBrZXkgOiBudWxsKTtcbiAgICBjb25zdCBjb250ZXh0Q29udHJvbGxlZElkID0gbmF2Q29udGV4dC5nZXRDb250cm9sbGVkSWQoa2V5ICE9IG51bGwgPyBrZXkgOiBudWxsKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcm9wc1tkYXRhQXR0cignZXZlbnQta2V5JyldID0ga2V5O1xuICAgIHByb3BzLmlkID0gY29udGV4dENvbnRyb2xsZXJJZCB8fCBpZDtcbiAgICBpc0FjdGl2ZSA9IGFjdGl2ZSA9PSBudWxsICYmIGtleSAhPSBudWxsID8gbmF2Q29udGV4dC5hY3RpdmVLZXkgPT09IGtleSA6IGFjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIFNpbXBsaWZpZWQgc2NlbmFyaW8gZm9yIGBtb3VudE9uRW50ZXJgLlxuICAgICAqXG4gICAgICogV2hpbGUgaXQgd291bGQgbWFrZSBzZW5zZSB0byBrZWVwICdhcmlhLWNvbnRyb2xzJyBmb3IgdGFicyB0aGF0IGhhdmUgYmVlbiBtb3VudGVkIGF0IGxlYXN0XG4gICAgICogb25jZSwgaXQgd291bGQgYWxzbyBjb21wbGljYXRlIHRoZSBjb2RlIHF1aXRlIGEgYml0LCBmb3IgdmVyeSBsaXR0bGUgZ2Fpbi5cbiAgICAgKiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGlzIHByb2JhYmx5IGdvb2QgZW5vdWdoLlxuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtcmVzdGFydC91aS9wdWxsLzQwI2lzc3VlY29tbWVudC0xMDA5OTcxNTYxXG4gICAgICovXG4gICAgaWYgKGlzQWN0aXZlIHx8ICEodGFiQ29udGV4dCAhPSBudWxsICYmIHRhYkNvbnRleHQudW5tb3VudE9uRXhpdCkgJiYgISh0YWJDb250ZXh0ICE9IG51bGwgJiYgdGFiQ29udGV4dC5tb3VudE9uRW50ZXIpKSBwcm9wc1snYXJpYS1jb250cm9scyddID0gY29udGV4dENvbnRyb2xsZWRJZDtcbiAgfVxuICBpZiAocHJvcHMucm9sZSA9PT0gJ3RhYicpIHtcbiAgICBwcm9wc1snYXJpYS1zZWxlY3RlZCddID0gaXNBY3RpdmU7XG4gICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgcHJvcHMudGFiSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICBwcm9wcy50YWJJbmRleCA9IC0xO1xuICAgICAgcHJvcHNbJ2FyaWEtZGlzYWJsZWQnXSA9IHRydWU7XG4gICAgfVxuICB9XG4gIHByb3BzLm9uQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuO1xuICAgIG9uQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwYXJlbnRPblNlbGVjdCAmJiAhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICBwYXJlbnRPblNlbGVjdChrZXksIGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBbcHJvcHMsIHtcbiAgICBpc0FjdGl2ZVxuICB9XTtcbn1cbmNvbnN0IE5hdkl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICBhczogQ29tcG9uZW50ID0gQnV0dG9uLFxuICAgICAgYWN0aXZlLFxuICAgICAgZXZlbnRLZXlcbiAgICB9ID0gX3JlZixcbiAgICBvcHRpb25zID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW3Byb3BzLCBtZXRhXSA9IHVzZU5hdkl0ZW0oT2JqZWN0LmFzc2lnbih7XG4gICAga2V5OiBtYWtlRXZlbnRLZXkoZXZlbnRLZXksIG9wdGlvbnMuaHJlZiksXG4gICAgYWN0aXZlXG4gIH0sIG9wdGlvbnMpKTtcblxuICAvLyBAdHMtaWdub3JlXG4gIHByb3BzW2RhdGFBdHRyKCdhY3RpdmUnKV0gPSBtZXRhLmlzQWN0aXZlO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCBwcm9wcywge1xuICAgIHJlZjogcmVmXG4gIH0pKTtcbn0pO1xuTmF2SXRlbS5kaXNwbGF5TmFtZSA9ICdOYXZJdGVtJztcbmV4cG9ydCBkZWZhdWx0IE5hdkl0ZW07IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQW5jaG9yIGZyb20gJ0ByZXN0YXJ0L3VpL0FuY2hvcic7XG5pbXBvcnQgeyB1c2VOYXZJdGVtIH0gZnJvbSAnQHJlc3RhcnQvdWkvTmF2SXRlbSc7XG5pbXBvcnQgeyBtYWtlRXZlbnRLZXkgfSBmcm9tICdAcmVzdGFydC91aS9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZGlzYWJsZWQ6IGZhbHNlXG59O1xuY29uc3QgTmF2TGluayA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGFzOiBDb21wb25lbnQgPSBBbmNob3IsXG4gIGFjdGl2ZSxcbiAgZXZlbnRLZXksXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXYtbGluaycpO1xuICBjb25zdCBbbmF2SXRlbVByb3BzLCBtZXRhXSA9IHVzZU5hdkl0ZW0oe1xuICAgIGtleTogbWFrZUV2ZW50S2V5KGV2ZW50S2V5LCBwcm9wcy5ocmVmKSxcbiAgICBhY3RpdmUsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICAuLi5uYXZJdGVtUHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgsIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsIG1ldGEuaXNBY3RpdmUgJiYgJ2FjdGl2ZScpXG4gIH0pO1xufSk7XG5OYXZMaW5rLmRpc3BsYXlOYW1lID0gJ05hdkxpbmsnO1xuTmF2TGluay5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBOYXZMaW5rOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBEcm9wZG93biBmcm9tICcuL0Ryb3Bkb3duJztcbmltcG9ydCBOYXZMaW5rIGZyb20gJy4vTmF2TGluayc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2RHJvcGRvd24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBpZCxcbiAgdGl0bGUsXG4gIGNoaWxkcmVuLFxuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICByb290Q2xvc2VFdmVudCxcbiAgbWVudVJvbGUsXG4gIGRpc2FibGVkLFxuICBhY3RpdmUsXG4gIHJlbmRlck1lbnVPbk1vdW50LFxuICBtZW51VmFyaWFudCxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICAvKiBOYXZJdGVtIGhhcyBubyBhZGRpdGlvbmFsIGxvZ2ljLCBpdCdzIHB1cmVseSBwcmVzZW50YXRpb25hbC4gQ2FuIHNldCBuYXYgaXRlbSBjbGFzcyBoZXJlIHRvIHN1cHBvcnQgXCJhc1wiICovXG4gIGNvbnN0IG5hdkl0ZW1QcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgodW5kZWZpbmVkLCAnbmF2LWl0ZW0nKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhEcm9wZG93biwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIG5hdkl0ZW1QcmVmaXgpLFxuICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goRHJvcGRvd24uVG9nZ2xlLCB7XG4gICAgICBpZDogaWQsXG4gICAgICBldmVudEtleTogbnVsbCxcbiAgICAgIGFjdGl2ZTogYWN0aXZlLFxuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgY2hpbGRCc1ByZWZpeDogYnNQcmVmaXgsXG4gICAgICBhczogTmF2TGluayxcbiAgICAgIGNoaWxkcmVuOiB0aXRsZVxuICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeChEcm9wZG93bi5NZW51LCB7XG4gICAgICByb2xlOiBtZW51Um9sZSxcbiAgICAgIHJlbmRlck9uTW91bnQ6IHJlbmRlck1lbnVPbk1vdW50LFxuICAgICAgcm9vdENsb3NlRXZlbnQ6IHJvb3RDbG9zZUV2ZW50LFxuICAgICAgdmFyaWFudDogbWVudVZhcmlhbnQsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KV1cbiAgfSk7XG59KTtcbk5hdkRyb3Bkb3duLmRpc3BsYXlOYW1lID0gJ05hdkRyb3Bkb3duJztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTmF2RHJvcGRvd24sIHtcbiAgSXRlbTogRHJvcGRvd24uSXRlbSxcbiAgSXRlbVRleHQ6IERyb3Bkb3duLkl0ZW1UZXh0LFxuICBEaXZpZGVyOiBEcm9wZG93bi5EaXZpZGVyLFxuICBIZWFkZXI6IERyb3Bkb3duLkhlYWRlclxufSk7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJbmZvU2VydmljZSB9IGZyb20gXCIuLi9JbmZvU2VydmljZVwiO1xuaW1wb3J0IHsgTG9naW5Gb3JtIH0gZnJvbSBcIi4vTG9naW5Gb3JtXCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5pbXBvcnQgeyBOYXZEcm9wZG93biB9IGZyb20gXCJyZWFjdC1ib290c3RyYXBcIjtcblxuZnVuY3Rpb24gX1VzZXJDb21wb25lbnQoc2Vzc2lvbl9pbmZvLCBsb2dvdXRfY2FsbGJhY2spIHtcbiAgY29uc3QgdGl0bGUgPSAoXG4gICAgPD5cbiAgICAgIHtzZXNzaW9uX2luZm8udXNlcm5hbWV9IDxpIGNsYXNzTmFtZT1cImJpIGJpLXBlcnNvbi1maWxsXCIgLz5cbiAgICA8Lz5cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8TmF2RHJvcGRvd24gYWxpZ249XCJlbmRcIiB0aXRsZT17dGl0bGV9PlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gYXM9XCJidXR0b25cIiBvbkNsaWNrPXtsb2dvdXRfY2FsbGJhY2t9IGhyZWY9XCIjXCI+XG4gICAgICAgIExvZ291dFxuICAgICAgPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgIDwvTmF2RHJvcGRvd24+XG4gICk7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uIG9uTG9nb3V0Q2FsbGJhY2tcbiAqXG4gKiBUbyBiZSB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ291dC5cbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbi8qKlxuICogQGZ1bmN0aW9uIG9uTG9naW5DYWxsYmFja1xuICpcbiAqIFRvIGJlIHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiBhZnRlciBhIHN1Y2Nlc3NmdWwgbG9naW4uXG4gKlxuICogQHBhcmFtIHtAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2UuU2Vzc2lvbkluZm99IHNlc3Npb25JbmZvIGFib3V0XG4gKiAgIHRoZSBjdXJyZW50IHVzZXIuXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5cbi8qKlxuICogVGhlIFVzZXJDb21wb25lbnQgc2hvd3MgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHVzZXIgb3IgYVxuICogTG9naW5Gb3JtLlxuICpcbiAqIEBwYXJhbSB7b25Mb2dpbkNhbGxiYWNrfSBvbkxvZ2luIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmVcbiAqICAgY2FsbGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dpbi4gV2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVcbiAqICAgVXNlckNvbXBvbmVudCBwcm9jZWVkcyBhcyB1c3VhbCBhbmQgcmUtcmVuZGVycyB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHtvbkxvZ291dENhbGxiYWNrfSBvbkxvZ291dCBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlXG4gKiAgIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbG9nb3V0LiBXaGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZVxuICogICBVc2VyQ29tcG9uZW50IHByb2NlZWRzIGFzIHVzdWFsIGFuZCByZS1yZW5kZXJzIHRoZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVc2VyQ29tcG9uZW50KG9uTG9naW4sIG9uTG9nb3V0KSB7XG4gIGNvbnN0IFtjb21wb25lbnQsIHNldENvbXBvbmVudF0gPSB1c2VTdGF0ZShudWxsKTtcblxuICB2YXIgc2hvd19jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIGlmIChjb21wb25lbnQgPT09IG51bGwpIHtcbiAgICB2YXIgc2hvd19sb2dpbl9mb3JtO1xuXG4gICAgY29uc3QgbG9nb3V0X2NhbGxiYWNrID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0Q29tcG9uZW50KDxMb2FkaW5nSW5mbyBzaXplPVwic21cIiAvPik7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgSW5mb1NlcnZpY2UoKTtcbiAgICAgICAgYXdhaXQgc2VydmljZS5sb2dvdXQoKTtcbiAgICAgICAgaWYgKG9uTG9nb3V0KCkpIHtcbiAgICAgICAgICBzaG93X2xvZ2luX2Zvcm0oXCJZb3UgaGF2ZSBiZWVuIGxvZ2dlZCBvdXQuXCIsIFwic3VjY2Vzc1wiKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzaG93X2xvZ2luX2Zvcm0oXCJMb2dvdXQgZmFpbGVkOiBcIiArIGUubWVzc2FnZSwgXCJlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2hvd19zZXNzaW9uX2luZm8gPSAoc2Vzc2lvbl9pbmZvKSA9PiB7XG4gICAgICAvLyBUT0RPIGlzX2Fub255bW91cyBtZW1iZXI/XG4gICAgICBpZiAoc2Vzc2lvbl9pbmZvLnVzZXJuYW1lID09PSBcImFub255bW91c1wiKSB7XG4gICAgICAgIHNob3dfbG9naW5fZm9ybSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0Q29tcG9uZW50KF9Vc2VyQ29tcG9uZW50KHNlc3Npb25faW5mbywgbG9nb3V0X2NhbGxiYWNrKSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGxvZ2luX2ZhaWwgPSAoZXJyb3IpID0+IHtcbiAgICAgIHNob3dfbG9naW5fZm9ybShlcnJvci5tZXNzYWdlLCBcImVycm9yXCIpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb2dpbl9zdWNjZXNzID0gKHNlc3Npb25faW5mbykgPT4ge1xuICAgICAgaWYgKG9uTG9naW4oc2Vzc2lvbl9pbmZvKSkge1xuICAgICAgICBzaG93X3Nlc3Npb25faW5mbyhzZXNzaW9uX2luZm8pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzaG93X2xvZ2luX2Zvcm0gPSAobWVzc2FnZSwgbWVzc2FnZVR5cGUpID0+IHtcbiAgICAgIHZhciBsb2dpbl9mb3JtID0gKFxuICAgICAgICA8TG9naW5Gb3JtXG4gICAgICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgICAgICBtZXNzYWdlVHlwZT17bWVzc2FnZVR5cGV9XG4gICAgICAgICAgdGhlbj17bG9naW5fc3VjY2Vzc31cbiAgICAgICAgICBvbkVycm9yPXtsb2dpbl9mYWlsfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICAgIHNldENvbXBvbmVudChsb2dpbl9mb3JtKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VydmljZSA9IG5ldyBJbmZvU2VydmljZSgpO1xuICAgIHNlcnZpY2VcbiAgICAgIC5nZXRTZXNzaW9uSW5mbygpXG4gICAgICAudGhlbihzaG93X3Nlc3Npb25faW5mbylcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHNob3dfbG9naW5fZm9ybShlcnJvci5tZXNzYWdlLCBcImluZm9cIikpO1xuICAgIHNob3dfY29tcG9uZW50ID0gPExvYWRpbmdJbmZvIHNpemU9XCJzbVwiIC8+O1xuICB9XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwidXNlci1jb21wb25lbnRcIj57c2hvd19jb21wb25lbnR9PC9kaXY+O1xufVxuXG5Vc2VyQ29tcG9uZW50LmRlZmF1bHRQcm9wcyA9IHtcbiAgb25Mb2dpbjogKCkgPT4gdHJ1ZSxcbiAgb25Mb2dvdXQ6ICgpID0+IHRydWUsXG59O1xuIiwiY29uc3QgQnJhbmRpbmcgPSB7XG4gIG5hbWU6IFwiQ2Fvc0RCXCIsXG59O1xuXG5leHBvcnQgeyBCcmFuZGluZyB9O1xuIiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXNcIiwgXCJvblNlbGVjdFwiLCBcImFjdGl2ZUtleVwiLCBcInJvbGVcIiwgXCJvbktleURvd25cIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL3F1ZXJ5U2VsZWN0b3JBbGwnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRm9yY2VVcGRhdGUgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRm9yY2VVcGRhdGUnO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgTmF2Q29udGV4dCBmcm9tICcuL05hdkNvbnRleHQnO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0LCB7IG1ha2VFdmVudEtleSB9IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IFRhYkNvbnRleHQgZnJvbSAnLi9UYWJDb250ZXh0JztcbmltcG9ydCB7IGRhdGFBdHRyLCBkYXRhUHJvcCB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgTmF2SXRlbSBmcm9tICcuL05hdkl0ZW0nO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbmNvbnN0IEVWRU5UX0tFWV9BVFRSID0gZGF0YUF0dHIoJ2V2ZW50LWtleScpO1xuY29uc3QgTmF2ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICAgICAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBhY3RpdmVLZXksXG4gICAgICByb2xlLFxuICAgICAgb25LZXlEb3duXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICAvLyBBIHJlZiBhbmQgZm9yY2VVcGRhdGUgZm9yIHJlZm9jdXMsIGIvYyB3ZSBvbmx5IHdhbnQgdG8gdHJpZ2dlciB3aGVuIG5lZWRlZFxuICAvLyBhbmQgZG9uJ3Qgd2FudCB0byByZXNldCB0aGUgc2V0IGluIHRoZSBlZmZlY3RcbiAgY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VGb3JjZVVwZGF0ZSgpO1xuICBjb25zdCBuZWVkc1JlZm9jdXNSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBwYXJlbnRPblNlbGVjdCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCB0YWJDb250ZXh0ID0gdXNlQ29udGV4dChUYWJDb250ZXh0KTtcbiAgbGV0IGdldENvbnRyb2xsZWRJZCwgZ2V0Q29udHJvbGxlcklkO1xuICBpZiAodGFiQ29udGV4dCkge1xuICAgIHJvbGUgPSByb2xlIHx8ICd0YWJsaXN0JztcbiAgICBhY3RpdmVLZXkgPSB0YWJDb250ZXh0LmFjdGl2ZUtleTtcbiAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSB0aGVzZT9cbiAgICBnZXRDb250cm9sbGVkSWQgPSB0YWJDb250ZXh0LmdldENvbnRyb2xsZWRJZDtcbiAgICBnZXRDb250cm9sbGVySWQgPSB0YWJDb250ZXh0LmdldENvbnRyb2xsZXJJZDtcbiAgfVxuICBjb25zdCBsaXN0Tm9kZSA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZ2V0TmV4dEFjdGl2ZVRhYiA9IG9mZnNldCA9PiB7XG4gICAgY29uc3QgY3VycmVudExpc3ROb2RlID0gbGlzdE5vZGUuY3VycmVudDtcbiAgICBpZiAoIWN1cnJlbnRMaXN0Tm9kZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaXRlbXMgPSBxc2EoY3VycmVudExpc3ROb2RlLCBgWyR7RVZFTlRfS0VZX0FUVFJ9XTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pYCk7XG4gICAgY29uc3QgYWN0aXZlQ2hpbGQgPSBjdXJyZW50TGlzdE5vZGUucXVlcnlTZWxlY3RvcignW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0nKTtcbiAgICBpZiAoIWFjdGl2ZUNoaWxkIHx8IGFjdGl2ZUNoaWxkICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmluZGV4T2YoYWN0aXZlQ2hpbGQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiBudWxsO1xuICAgIGxldCBuZXh0SW5kZXggPSBpbmRleCArIG9mZnNldDtcbiAgICBpZiAobmV4dEluZGV4ID49IGl0ZW1zLmxlbmd0aCkgbmV4dEluZGV4ID0gMDtcbiAgICBpZiAobmV4dEluZGV4IDwgMCkgbmV4dEluZGV4ID0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICByZXR1cm4gaXRlbXNbbmV4dEluZGV4XTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKGtleSwgZXZlbnQpID0+IHtcbiAgICBpZiAoa2V5ID09IG51bGwpIHJldHVybjtcbiAgICBvblNlbGVjdCA9PSBudWxsID8gdm9pZCAwIDogb25TZWxlY3Qoa2V5LCBldmVudCk7XG4gICAgcGFyZW50T25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcmVudE9uU2VsZWN0KGtleSwgZXZlbnQpO1xuICB9O1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgIG9uS2V5RG93biA9PSBudWxsID8gdm9pZCAwIDogb25LZXlEb3duKGV2ZW50KTtcbiAgICBpZiAoIXRhYkNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5leHRBY3RpdmVDaGlsZDtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBuZXh0QWN0aXZlQ2hpbGQgPSBnZXROZXh0QWN0aXZlVGFiKC0xKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIG5leHRBY3RpdmVDaGlsZCA9IGdldE5leHRBY3RpdmVUYWIoMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW5leHRBY3RpdmVDaGlsZCkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaGFuZGxlU2VsZWN0KG5leHRBY3RpdmVDaGlsZC5kYXRhc2V0W2RhdGFQcm9wKCdFdmVudEtleScpXSB8fCBudWxsLCBldmVudCk7XG4gICAgbmVlZHNSZWZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIGZvcmNlVXBkYXRlKCk7XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxpc3ROb2RlLmN1cnJlbnQgJiYgbmVlZHNSZWZvY3VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZUNoaWxkID0gbGlzdE5vZGUuY3VycmVudC5xdWVyeVNlbGVjdG9yKGBbJHtFVkVOVF9LRVlfQVRUUn1dW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV1gKTtcbiAgICAgIGFjdGl2ZUNoaWxkID09IG51bGwgPyB2b2lkIDAgOiBhY3RpdmVDaGlsZC5mb2N1cygpO1xuICAgIH1cbiAgICBuZWVkc1JlZm9jdXNSZWYuY3VycmVudCA9IGZhbHNlO1xuICB9KTtcbiAgY29uc3QgbWVyZ2VkUmVmID0gdXNlTWVyZ2VkUmVmcyhyZWYsIGxpc3ROb2RlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFNlbGVjdGFibGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGhhbmRsZVNlbGVjdCxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goTmF2Q29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgcm9sZSxcbiAgICAgICAgLy8gdXNlZCBieSBOYXZMaW5rIHRvIGRldGVybWluZSBpdCdzIHJvbGVcbiAgICAgICAgYWN0aXZlS2V5OiBtYWtlRXZlbnRLZXkoYWN0aXZlS2V5KSxcbiAgICAgICAgZ2V0Q29udHJvbGxlZElkOiBnZXRDb250cm9sbGVkSWQgfHwgbm9vcCxcbiAgICAgICAgZ2V0Q29udHJvbGxlcklkOiBnZXRDb250cm9sbGVySWQgfHwgbm9vcFxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgcmVmOiBtZXJnZWRSZWYsXG4gICAgICAgIHJvbGU6IHJvbGVcbiAgICAgIH0pKVxuICAgIH0pXG4gIH0pO1xufSk7XG5OYXYuZGlzcGxheU5hbWUgPSAnTmF2JztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTmF2LCB7XG4gIEl0ZW06IE5hdkl0ZW1cbn0pOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnQ2FyZEhlYWRlckNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgY29udGV4dDsiLCJpbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVdpdGhCc1ByZWZpeCgnbmF2LWl0ZW0nKTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBhbGwgZnJvbSAncHJvcC10eXBlcy1leHRyYS9saWIvYWxsJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQgfSBmcm9tICd1bmNvbnRyb2xsYWJsZSc7XG5pbXBvcnQgQmFzZU5hdiBmcm9tICdAcmVzdGFydC91aS9OYXYnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgQ2FyZEhlYWRlckNvbnRleHQgZnJvbSAnLi9DYXJkSGVhZGVyQ29udGV4dCc7XG5pbXBvcnQgTmF2SXRlbSBmcm9tICcuL05hdkl0ZW0nO1xuaW1wb3J0IE5hdkxpbmsgZnJvbSAnLi9OYXZMaW5rJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGp1c3RpZnk6IGZhbHNlLFxuICBmaWxsOiBmYWxzZVxufTtcbmNvbnN0IE5hdiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh1bmNvbnRyb2xsZWRQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhcyA9ICdkaXYnLFxuICAgIGJzUHJlZml4OiBpbml0aWFsQnNQcmVmaXgsXG4gICAgdmFyaWFudCxcbiAgICBmaWxsLFxuICAgIGp1c3RpZnksXG4gICAgbmF2YmFyLFxuICAgIG5hdmJhclNjcm9sbCxcbiAgICBjbGFzc05hbWUsXG4gICAgYWN0aXZlS2V5LFxuICAgIC4uLnByb3BzXG4gIH0gPSB1c2VVbmNvbnRyb2xsZWQodW5jb250cm9sbGVkUHJvcHMsIHtcbiAgICBhY3RpdmVLZXk6ICdvblNlbGVjdCdcbiAgfSk7XG4gIGNvbnN0IGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGluaXRpYWxCc1ByZWZpeCwgJ25hdicpO1xuICBsZXQgbmF2YmFyQnNQcmVmaXg7XG4gIGxldCBjYXJkSGVhZGVyQnNQcmVmaXg7XG4gIGxldCBpc05hdmJhciA9IGZhbHNlO1xuICBjb25zdCBuYXZiYXJDb250ZXh0ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgY29uc3QgY2FyZEhlYWRlckNvbnRleHQgPSB1c2VDb250ZXh0KENhcmRIZWFkZXJDb250ZXh0KTtcbiAgaWYgKG5hdmJhckNvbnRleHQpIHtcbiAgICBuYXZiYXJCc1ByZWZpeCA9IG5hdmJhckNvbnRleHQuYnNQcmVmaXg7XG4gICAgaXNOYXZiYXIgPSBuYXZiYXIgPT0gbnVsbCA/IHRydWUgOiBuYXZiYXI7XG4gIH0gZWxzZSBpZiAoY2FyZEhlYWRlckNvbnRleHQpIHtcbiAgICAoe1xuICAgICAgY2FyZEhlYWRlckJzUHJlZml4XG4gICAgfSA9IGNhcmRIZWFkZXJDb250ZXh0KTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQmFzZU5hdiwge1xuICAgIGFzOiBhcyxcbiAgICByZWY6IHJlZixcbiAgICBhY3RpdmVLZXk6IGFjdGl2ZUtleSxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCB7XG4gICAgICBbYnNQcmVmaXhdOiAhaXNOYXZiYXIsXG4gICAgICBbYCR7bmF2YmFyQnNQcmVmaXh9LW5hdmBdOiBpc05hdmJhcixcbiAgICAgIFtgJHtuYXZiYXJCc1ByZWZpeH0tbmF2LXNjcm9sbGBdOiBpc05hdmJhciAmJiBuYXZiYXJTY3JvbGwsXG4gICAgICBbYCR7Y2FyZEhlYWRlckJzUHJlZml4fS0ke3ZhcmlhbnR9YF06ICEhY2FyZEhlYWRlckJzUHJlZml4LFxuICAgICAgW2Ake2JzUHJlZml4fS0ke3ZhcmlhbnR9YF06ICEhdmFyaWFudCxcbiAgICAgIFtgJHtic1ByZWZpeH0tZmlsbGBdOiBmaWxsLFxuICAgICAgW2Ake2JzUHJlZml4fS1qdXN0aWZpZWRgXToganVzdGlmeVxuICAgIH0pLFxuICAgIC4uLnByb3BzXG4gIH0pO1xufSk7XG5OYXYuZGlzcGxheU5hbWUgPSAnTmF2Jztcbk5hdi5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdiwge1xuICBJdGVtOiBOYXZJdGVtLFxuICBMaW5rOiBOYXZMaW5rXG59KTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyQnJhbmQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBhcyxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ25hdmJhci1icmFuZCcpO1xuICBjb25zdCBDb21wb25lbnQgPSBhcyB8fCAocHJvcHMuaHJlZiA/ICdhJyA6ICdzcGFuJyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeClcbiAgfSk7XG59KTtcbk5hdmJhckJyYW5kLmRpc3BsYXlOYW1lID0gJ05hdmJhckJyYW5kJztcbmV4cG9ydCBkZWZhdWx0IE5hdmJhckJyYW5kOyIsIi8qKlxuICogU2FmZSBjaGFpbmVkIGZ1bmN0aW9uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gZnVuY3Rpb25zIHRvIGNoYWluXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb258bnVsbH1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKC4uLmZ1bmNzKSB7XG4gIHJldHVybiBmdW5jcy5maWx0ZXIoZiA9PiBmICE9IG51bGwpLnJlZHVjZSgoYWNjLCBmKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBmICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgVHlwZSwgbXVzdCBvbmx5IHByb3ZpZGUgZnVuY3Rpb25zLCB1bmRlZmluZWQsIG9yIG51bGwuJyk7XG4gICAgfVxuICAgIGlmIChhY2MgPT09IG51bGwpIHJldHVybiBmO1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgYWNjLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9LCBudWxsKTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRU5URVJFRCwgRU5URVJJTkcsIEVYSVRFRCwgRVhJVElORyB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZExpc3RlbmVyIGZyb20gJy4vdHJhbnNpdGlvbkVuZExpc3RlbmVyJztcbmltcG9ydCBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuaW1wb3J0IHRyaWdnZXJCcm93c2VyUmVmbG93IGZyb20gJy4vdHJpZ2dlckJyb3dzZXJSZWZsb3cnO1xuaW1wb3J0IFRyYW5zaXRpb25XcmFwcGVyIGZyb20gJy4vVHJhbnNpdGlvbldyYXBwZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE1BUkdJTlMgPSB7XG4gIGhlaWdodDogWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJ10sXG4gIHdpZHRoOiBbJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXVxufTtcbmZ1bmN0aW9uIGdldERlZmF1bHREaW1lbnNpb25WYWx1ZShkaW1lbnNpb24sIGVsZW0pIHtcbiAgY29uc3Qgb2Zmc2V0ID0gYG9mZnNldCR7ZGltZW5zaW9uWzBdLnRvVXBwZXJDYXNlKCl9JHtkaW1lbnNpb24uc2xpY2UoMSl9YDtcbiAgY29uc3QgdmFsdWUgPSBlbGVtW29mZnNldF07XG4gIGNvbnN0IG1hcmdpbnMgPSBNQVJHSU5TW2RpbWVuc2lvbl07XG4gIHJldHVybiB2YWx1ZSArXG4gIC8vIEB0cy1pZ25vcmVcbiAgcGFyc2VJbnQoY3NzKGVsZW0sIG1hcmdpbnNbMF0pLCAxMCkgK1xuICAvLyBAdHMtaWdub3JlXG4gIHBhcnNlSW50KGNzcyhlbGVtLCBtYXJnaW5zWzFdKSwgMTApO1xufVxuY29uc3QgY29sbGFwc2VTdHlsZXMgPSB7XG4gIFtFWElURURdOiAnY29sbGFwc2UnLFxuICBbRVhJVElOR106ICdjb2xsYXBzaW5nJyxcbiAgW0VOVEVSSU5HXTogJ2NvbGxhcHNpbmcnLFxuICBbRU5URVJFRF06ICdjb2xsYXBzZSBzaG93J1xufTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICB0aW1lb3V0OiAzMDAsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlLFxuICBnZXREaW1lbnNpb25WYWx1ZTogZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlXG59O1xuY29uc3QgQ29sbGFwc2UgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBvbkVudGVyLFxuICBvbkVudGVyaW5nLFxuICBvbkVudGVyZWQsXG4gIG9uRXhpdCxcbiAgb25FeGl0aW5nLFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBkaW1lbnNpb24gPSAnaGVpZ2h0JyxcbiAgZ2V0RGltZW5zaW9uVmFsdWUgPSBnZXREZWZhdWx0RGltZW5zaW9uVmFsdWUsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgLyogQ29tcHV0ZSBkaW1lbnNpb24gKi9cbiAgY29uc3QgY29tcHV0ZWREaW1lbnNpb24gPSB0eXBlb2YgZGltZW5zaW9uID09PSAnZnVuY3Rpb24nID8gZGltZW5zaW9uKCkgOiBkaW1lbnNpb247XG5cbiAgLyogLS0gRXhwYW5kaW5nIC0tICovXG4gIGNvbnN0IGhhbmRsZUVudGVyID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSAnMCc7XG4gIH0sIG9uRW50ZXIpLCBbY29tcHV0ZWREaW1lbnNpb24sIG9uRW50ZXJdKTtcbiAgY29uc3QgaGFuZGxlRW50ZXJpbmcgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBjb25zdCBzY3JvbGwgPSBgc2Nyb2xsJHtjb21wdXRlZERpbWVuc2lvblswXS50b1VwcGVyQ2FzZSgpfSR7Y29tcHV0ZWREaW1lbnNpb24uc2xpY2UoMSl9YDtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9IGAke2VsZW1bc2Nyb2xsXX1weGA7XG4gIH0sIG9uRW50ZXJpbmcpLCBbY29tcHV0ZWREaW1lbnNpb24sIG9uRW50ZXJpbmddKTtcbiAgY29uc3QgaGFuZGxlRW50ZXJlZCA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gbnVsbDtcbiAgfSwgb25FbnRlcmVkKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyZWRdKTtcblxuICAvKiAtLSBDb2xsYXBzaW5nIC0tICovXG4gIGNvbnN0IGhhbmRsZUV4aXQgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9IGAke2dldERpbWVuc2lvblZhbHVlKGNvbXB1dGVkRGltZW5zaW9uLCBlbGVtKX1weGA7XG4gICAgdHJpZ2dlckJyb3dzZXJSZWZsb3coZWxlbSk7XG4gIH0sIG9uRXhpdCksIFtvbkV4aXQsIGdldERpbWVuc2lvblZhbHVlLCBjb21wdXRlZERpbWVuc2lvbl0pO1xuICBjb25zdCBoYW5kbGVFeGl0aW5nID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBudWxsO1xuICB9LCBvbkV4aXRpbmcpLCBbY29tcHV0ZWREaW1lbnNpb24sIG9uRXhpdGluZ10pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbldyYXBwZXIsIHtcbiAgICByZWY6IHJlZixcbiAgICBhZGRFbmRMaXN0ZW5lcjogdHJhbnNpdGlvbkVuZExpc3RlbmVyLFxuICAgIC4uLnByb3BzLFxuICAgIFwiYXJpYS1leHBhbmRlZFwiOiBwcm9wcy5yb2xlID8gcHJvcHMuaW4gOiBudWxsLFxuICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgIG9uRW50ZXJlZDogaGFuZGxlRW50ZXJlZCxcbiAgICBvbkV4aXQ6IGhhbmRsZUV4aXQsXG4gICAgb25FeGl0aW5nOiBoYW5kbGVFeGl0aW5nLFxuICAgIGNoaWxkUmVmOiBjaGlsZHJlbi5yZWYsXG4gICAgY2hpbGRyZW46IChzdGF0ZSwgaW5uZXJQcm9wcykgPT4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSwgY29sbGFwc2VTdHlsZXNbc3RhdGVdLCBjb21wdXRlZERpbWVuc2lvbiA9PT0gJ3dpZHRoJyAmJiAnY29sbGFwc2UtaG9yaXpvbnRhbCcpXG4gICAgfSlcbiAgfSk7XG59KTtcblxuLy8gQHRzLWlnbm9yZVxuXG4vLyBAdHMtaWdub3JlXG5Db2xsYXBzZS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBDb2xsYXBzZTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbGxhcHNlIGZyb20gJy4vQ29sbGFwc2UnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyQ29sbGFwc2UgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjaGlsZHJlbixcbiAgYnNQcmVmaXgsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXZiYXItY29sbGFwc2UnKTtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb2xsYXBzZSwge1xuICAgIGluOiAhIShjb250ZXh0ICYmIGNvbnRleHQuZXhwYW5kZWQpLFxuICAgIC4uLnByb3BzLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogYnNQcmVmaXgsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KTtcbn0pO1xuTmF2YmFyQ29sbGFwc2UuZGlzcGxheU5hbWUgPSAnTmF2YmFyQ29sbGFwc2UnO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyQ29sbGFwc2U7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGxhYmVsOiAnVG9nZ2xlIG5hdmlnYXRpb24nXG59O1xuY29uc3QgTmF2YmFyVG9nZ2xlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGxhYmVsLFxuICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gIGFzOiBDb21wb25lbnQgPSAnYnV0dG9uJyxcbiAgb25DbGljayxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ25hdmJhci10b2dnbGVyJyk7XG4gIGNvbnN0IHtcbiAgICBvblRvZ2dsZSxcbiAgICBleHBhbmRlZFxuICB9ID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KSB8fCB7fTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChvbkNsaWNrKSBvbkNsaWNrKGUpO1xuICAgIGlmIChvblRvZ2dsZSkgb25Ub2dnbGUoKTtcbiAgfSk7XG4gIGlmIChDb21wb25lbnQgPT09ICdidXR0b24nKSB7XG4gICAgcHJvcHMudHlwZSA9ICdidXR0b24nO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAuLi5wcm9wcyxcbiAgICByZWY6IHJlZixcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICBcImFyaWEtbGFiZWxcIjogbGFiZWwsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgsICFleHBhbmRlZCAmJiAnY29sbGFwc2VkJyksXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuIHx8IC8qI19fUFVSRV9fKi9fanN4KFwic3BhblwiLCB7XG4gICAgICBjbGFzc05hbWU6IGAke2JzUHJlZml4fS1pY29uYFxuICAgIH0pXG4gIH0pO1xufSk7XG5OYXZiYXJUb2dnbGUuZGlzcGxheU5hbWUgPSAnTmF2YmFyVG9nZ2xlJztcbk5hdmJhclRvZ2dsZS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBOYXZiYXJUb2dnbGU7IiwiaW1wb3J0IHVzZUVmZmVjdCBmcm9tICcuL3VzZUlzb21vcnBoaWNFZmZlY3QnO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG52YXIgbWF0Y2hlcnNCeVdpbmRvdyA9IG5ldyBXZWFrTWFwKCk7XG5cbnZhciBnZXRNYXRjaGVyID0gZnVuY3Rpb24gZ2V0TWF0Y2hlcihxdWVyeSwgdGFyZ2V0V2luZG93KSB7XG4gIGlmICghcXVlcnkgfHwgIXRhcmdldFdpbmRvdykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdmFyIG1hdGNoZXJzID0gbWF0Y2hlcnNCeVdpbmRvdy5nZXQodGFyZ2V0V2luZG93KSB8fCBuZXcgTWFwKCk7XG4gIG1hdGNoZXJzQnlXaW5kb3cuc2V0KHRhcmdldFdpbmRvdywgbWF0Y2hlcnMpO1xuICB2YXIgbXFsID0gbWF0Y2hlcnMuZ2V0KHF1ZXJ5KTtcblxuICBpZiAoIW1xbCkge1xuICAgIG1xbCA9IHRhcmdldFdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBtcWwucmVmQ291bnQgPSAwO1xuICAgIG1hdGNoZXJzLnNldChtcWwubWVkaWEsIG1xbCk7XG4gIH1cblxuICByZXR1cm4gbXFsO1xufTtcbi8qKlxuICogTWF0Y2ggYSBtZWRpYSBxdWVyeSBhbmQgZ2V0IHVwZGF0ZXMgYXMgdGhlIG1hdGNoIGNoYW5nZXMuIFRoZSBtZWRpYSBzdHJpbmcgaXNcbiAqIHBhc3NlZCBkaXJlY3RseSB0byBgd2luZG93Lm1hdGNoTWVkaWFgIGFuZCBydW4gYXMgYSBMYXlvdXQgRWZmZWN0LCBzbyBpbml0aWFsXG4gKiBtYXRjaGVzIGFyZSByZXR1cm5lZCBiZWZvcmUgdGhlIGJyb3dzZXIgaGFzIGEgY2hhbmNlIHRvIHBhaW50LlxuICpcbiAqIGBgYHRzeFxuICogZnVuY3Rpb24gUGFnZSgpIHtcbiAqICAgY29uc3QgaXNXaWRlID0gdXNlTWVkaWFRdWVyeSgnbWluLXdpZHRoOiAxMDAwcHgnKVxuICpcbiAqICAgcmV0dXJuIGlzV2lkZSA/IFwidmVyeSB3aWRlXCIgOiAnbm90IHNvIHdpZGUnXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBNZWRpYSBxdWVyeSBsaXN0cyBhcmUgYWxzbyByZXVzZWQgZ2xvYmFsbHksIGhvb2sgY2FsbHMgZm9yIHRoZSBzYW1lIHF1ZXJ5XG4gKiB3aWxsIG9ubHkgY3JlYXRlIGEgbWF0Y2hlciBvbmNlIHVuZGVyIHRoZSBob29kLlxuICpcbiAqIEBwYXJhbSBxdWVyeSBBIG1lZGlhIHF1ZXJ5XG4gKiBAcGFyYW0gdGFyZ2V0V2luZG93IFRoZSB3aW5kb3cgdG8gbWF0Y2ggYWdhaW5zdCwgdXNlcyB0aGUgZ2xvYmFsbHkgYXZhaWxhYmxlIG9uZSBhcyBhIGRlZmF1bHQuXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5LCB0YXJnZXRXaW5kb3cpIHtcbiAgaWYgKHRhcmdldFdpbmRvdyA9PT0gdm9pZCAwKSB7XG4gICAgdGFyZ2V0V2luZG93ID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiB3aW5kb3c7XG4gIH1cblxuICB2YXIgbXFsID0gZ2V0TWF0Y2hlcihxdWVyeSwgdGFyZ2V0V2luZG93KTtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBtcWwgPyBtcWwubWF0Y2hlcyA6IGZhbHNlO1xuICB9KSxcbiAgICAgIG1hdGNoZXMgPSBfdXNlU3RhdGVbMF0sXG4gICAgICBzZXRNYXRjaGVzID0gX3VzZVN0YXRlWzFdO1xuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1xbCA9IGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdyk7XG5cbiAgICBpZiAoIW1xbCkge1xuICAgICAgcmV0dXJuIHNldE1hdGNoZXMoZmFsc2UpO1xuICAgIH1cblxuICAgIHZhciBtYXRjaGVycyA9IG1hdGNoZXJzQnlXaW5kb3cuZ2V0KHRhcmdldFdpbmRvdyk7XG5cbiAgICB2YXIgaGFuZGxlQ2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKCkge1xuICAgICAgc2V0TWF0Y2hlcyhtcWwubWF0Y2hlcyk7XG4gICAgfTtcblxuICAgIG1xbC5yZWZDb3VudCsrO1xuICAgIG1xbC5hZGRMaXN0ZW5lcihoYW5kbGVDaGFuZ2UpO1xuICAgIGhhbmRsZUNoYW5nZSgpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBtcWwucmVtb3ZlTGlzdGVuZXIoaGFuZGxlQ2hhbmdlKTtcbiAgICAgIG1xbC5yZWZDb3VudC0tO1xuXG4gICAgICBpZiAobXFsLnJlZkNvdW50IDw9IDApIHtcbiAgICAgICAgbWF0Y2hlcnMgPT0gbnVsbCA/IHZvaWQgMCA6IG1hdGNoZXJzLmRlbGV0ZShtcWwubWVkaWEpO1xuICAgICAgfVxuXG4gICAgICBtcWwgPSB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfSwgW3F1ZXJ5XSk7XG4gIHJldHVybiBtYXRjaGVzO1xufSIsImltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gJy4vdXNlTWVkaWFRdWVyeSc7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG4vKipcbiAqIENyZWF0ZSBhIHJlc3BvbnNpdmUgaG9vayB3ZSBhIHNldCBvZiBicmVha3BvaW50IG5hbWVzIGFuZCB3aWR0aHMuXG4gKiBZb3UgY2FuIHVzZSBhbnkgdmFsaWQgY3NzIHVuaXRzIGFzIHdlbGwgYXMgYSBudW1iZXJzIChmb3IgcGl4ZWxzKS5cbiAqXG4gKiAqKk5PVEU6KiogVGhlIG9iamVjdCBrZXkgb3JkZXIgaXMgaW1wb3J0YW50ISBpdCdzIGFzc3VtZWQgdG8gYmUgaW4gb3JkZXIgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHVzZUJyZWFrcG9pbnQgPSBjcmVhdGVCcmVha3BvaW50SG9vayh7XG4gKiAgeHM6IDAsXG4gKiAgc206IDU3NixcbiAqICBtZDogNzY4LFxuICogIGxnOiA5OTIsXG4gKiAgeGw6IDEyMDAsXG4gKiB9KVxuICogYGBgXG4gKlxuICogKipXYXRjaCBvdXQhKiogdXNpbmcgc3RyaW5nIHZhbHVlcyB3aWxsIHNvbWV0aW1lcyBjb25zdHJ1Y3QgbWVkaWEgcXVlcmllcyB1c2luZyBjc3MgYGNhbGMoKWAgd2hpY2hcbiAqIGlzIE5PVCBzdXBwb3J0ZWQgaW4gbWVkaWEgcXVlcmllcyBieSBhbGwgYnJvd3NlcnMgYXQgdGhlIG1vbWVudC4gdXNlIG51bWJlcnMgZm9yXG4gKiB0aGUgd2lkZXN0IHJhbmdlIG9mIGJyb3dzZXIgc3VwcG9ydC5cbiAqXG4gKiBAcGFyYW0gYnJlYWtwb2ludFZhbHVlcyBBIG9iamVjdCBoYXNoIG9mIG5hbWVzIHRvIGJyZWFrcG9pbnQgZGltZW5zaW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQnJlYWtwb2ludEhvb2soYnJlYWtwb2ludFZhbHVlcykge1xuICB2YXIgbmFtZXMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50VmFsdWVzKTtcblxuICBmdW5jdGlvbiBhbmQocXVlcnksIG5leHQpIHtcbiAgICBpZiAocXVlcnkgPT09IG5leHQpIHtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeSA/IHF1ZXJ5ICsgXCIgYW5kIFwiICsgbmV4dCA6IG5leHQ7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0KGJyZWFrcG9pbnQpIHtcbiAgICByZXR1cm4gbmFtZXNbTWF0aC5taW4obmFtZXMuaW5kZXhPZihicmVha3BvaW50KSArIDEsIG5hbWVzLmxlbmd0aCAtIDEpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1heFF1ZXJ5KGJyZWFrcG9pbnQpIHtcbiAgICB2YXIgbmV4dCA9IGdldE5leHQoYnJlYWtwb2ludCk7XG4gICAgdmFyIHZhbHVlID0gYnJlYWtwb2ludFZhbHVlc1tuZXh0XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgdmFsdWUgPSB2YWx1ZSAtIDAuMiArIFwicHhcIjtlbHNlIHZhbHVlID0gXCJjYWxjKFwiICsgdmFsdWUgKyBcIiAtIDAuMnB4KVwiO1xuICAgIHJldHVybiBcIihtYXgtd2lkdGg6IFwiICsgdmFsdWUgKyBcIilcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1pblF1ZXJ5KGJyZWFrcG9pbnQpIHtcbiAgICB2YXIgdmFsdWUgPSBicmVha3BvaW50VmFsdWVzW2JyZWFrcG9pbnRdO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKyBcInB4XCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiKG1pbi13aWR0aDogXCIgKyB2YWx1ZSArIFwiKVwiO1xuICB9XG4gIC8qKlxuICAgKiBNYXRjaCBhIHNldCBvZiBicmVha3BvaW50c1xuICAgKlxuICAgKiBgYGB0c3hcbiAgICogY29uc3QgTWlkU2l6ZU9ubHkgPSAoKSA9PiB7XG4gICAqICAgY29uc3QgaXNNaWQgPSB1c2VCcmVha3BvaW50KHsgbGc6ICdkb3duJywgc206ICd1cCcgfSk7XG4gICAqXG4gICAqICAgaWYgKGlzTWlkKSByZXR1cm4gPGRpdj5PbiBhIFJlYXNvbmFibGUgc2l6ZWQgU2NyZWVuITwvZGl2PlxuICAgKiAgIHJldHVybiBudWxsO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gYnJlYWtwb2ludE1hcCBBbiBvYmplY3QgbWFwIG9mIGJyZWFrcG9pbnRzIGFuZCBkaXJlY3Rpb25zLCBxdWVyaWVzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyBcImFuZFwiIHRvIGpvaW5cbiAgICogYnJlYWtwb2ludHMgdG9nZXRoZXJcbiAgICogQHBhcmFtIHdpbmRvdyBPcHRpb25hbGx5IHNwZWNpZnkgdGhlIHRhcmdldCB3aW5kb3cgdG8gbWF0Y2ggYWdhaW5zdCAodXNlZnVsIHdoZW4gcmVuZGVyaW5nIGludG8gaWZyYW1lcylcbiAgICovXG5cblxuICBmdW5jdGlvbiB1c2VCcmVha3BvaW50KGJyZWFrcG9pbnRPck1hcCwgZGlyZWN0aW9uLCB3aW5kb3cpIHtcbiAgICB2YXIgYnJlYWtwb2ludE1hcDtcblxuICAgIGlmICh0eXBlb2YgYnJlYWtwb2ludE9yTWFwID09PSAnb2JqZWN0Jykge1xuICAgICAgYnJlYWtwb2ludE1hcCA9IGJyZWFrcG9pbnRPck1hcDtcbiAgICAgIHdpbmRvdyA9IGRpcmVjdGlvbjtcbiAgICAgIGRpcmVjdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfYnJlYWtwb2ludE1hcDtcblxuICAgICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IHRydWU7XG4gICAgICBicmVha3BvaW50TWFwID0gKF9icmVha3BvaW50TWFwID0ge30sIF9icmVha3BvaW50TWFwW2JyZWFrcG9pbnRPck1hcF0gPSBkaXJlY3Rpb24sIF9icmVha3BvaW50TWFwKTtcbiAgICB9XG5cbiAgICB2YXIgcXVlcnkgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhicmVha3BvaW50TWFwKS5yZWR1Y2UoZnVuY3Rpb24gKHF1ZXJ5LCBfcmVmKSB7XG4gICAgICAgIHZhciBrZXkgPSBfcmVmWzBdLFxuICAgICAgICAgICAgZGlyZWN0aW9uID0gX3JlZlsxXTtcblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnIHx8IGRpcmVjdGlvbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHF1ZXJ5ID0gYW5kKHF1ZXJ5LCBnZXRNaW5RdWVyeShrZXkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJyB8fCBkaXJlY3Rpb24gPT09IHRydWUpIHtcbiAgICAgICAgICBxdWVyeSA9IGFuZChxdWVyeSwgZ2V0TWF4UXVlcnkoa2V5KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICB9LCAnJyk7XG4gICAgfSwgW0pTT04uc3RyaW5naWZ5KGJyZWFrcG9pbnRNYXApXSk7XG4gICAgcmV0dXJuIHVzZU1lZGlhUXVlcnkocXVlcnksIHdpbmRvdyk7XG4gIH1cblxuICByZXR1cm4gdXNlQnJlYWtwb2ludDtcbn1cbnZhciB1c2VCcmVha3BvaW50ID0gY3JlYXRlQnJlYWtwb2ludEhvb2soe1xuICB4czogMCxcbiAgc206IDU3NixcbiAgbWQ6IDc2OCxcbiAgbGc6IDk5MixcbiAgeGw6IDEyMDAsXG4gIHh4bDogMTQwMFxufSk7XG5leHBvcnQgZGVmYXVsdCB1c2VCcmVha3BvaW50OyIsImltcG9ydCBvd25lckRvY3VtZW50IGZyb20gJy4vb3duZXJEb2N1bWVudCc7XG4vKipcbiAqIFJldHVybnMgdGhlIGFjdGl2ZWx5IGZvY3VzZWQgZWxlbWVudCBzYWZlbHkuXG4gKlxuICogQHBhcmFtIGRvYyB0aGUgZG9jdW1lbnQgdG8gY2hlY2tcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhY3RpdmVFbGVtZW50KGRvYykge1xuICBpZiAoZG9jID09PSB2b2lkIDApIHtcbiAgICBkb2MgPSBvd25lckRvY3VtZW50KCk7XG4gIH1cblxuICAvLyBTdXBwb3J0OiBJRSA5IG9ubHlcbiAgLy8gSUU5IHRocm93cyBhbiBcIlVuc3BlY2lmaWVkIGVycm9yXCIgYWNjZXNzaW5nIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgZnJvbSBhbiA8aWZyYW1lPlxuICB0cnkge1xuICAgIHZhciBhY3RpdmUgPSBkb2MuYWN0aXZlRWxlbWVudDsgLy8gSUUxMSByZXR1cm5zIGEgc2VlbWluZ2x5IGVtcHR5IG9iamVjdCBpbiBzb21lIGNhc2VzIHdoZW4gYWNjZXNzaW5nXG4gICAgLy8gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBmcm9tIGFuIDxpZnJhbWU+XG5cbiAgICBpZiAoIWFjdGl2ZSB8fCAhYWN0aXZlLm5vZGVOYW1lKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYWN0aXZlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLyogaWUgdGhyb3dzIGlmIG5vIGFjdGl2ZSBlbGVtZW50ICovXG4gICAgcmV0dXJuIGRvYy5ib2R5O1xuICB9XG59IiwiaW1wb3J0IGNzcyBmcm9tICdkb20taGVscGVycy9jc3MnO1xuaW1wb3J0IHsgZGF0YUF0dHIgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IGdldEJvZHlTY3JvbGxiYXJXaWR0aCBmcm9tICcuL2dldFNjcm9sbGJhcldpZHRoJztcbmV4cG9ydCBjb25zdCBPUEVOX0RBVEFfQVRUUklCVVRFID0gZGF0YUF0dHIoJ21vZGFsLW9wZW4nKTtcblxuLyoqXG4gKiBNYW5hZ2VzIGEgc3RhY2sgb2YgTW9kYWxzIGFzIHdlbGwgYXMgZW5zdXJpbmdcbiAqIGJvZHkgc2Nyb2xsaW5nIGlzIGlzIGRpc2FibGVkIGFuZCBwYWRkaW5nIGFjY291bnRlZCBmb3JcbiAqL1xuY2xhc3MgTW9kYWxNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3Ioe1xuICAgIG93bmVyRG9jdW1lbnQsXG4gICAgaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cgPSB0cnVlLFxuICAgIGlzUlRMID0gZmFsc2VcbiAgfSA9IHt9KSB7XG4gICAgdGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdyA9IGhhbmRsZUNvbnRhaW5lck92ZXJmbG93O1xuICAgIHRoaXMuaXNSVEwgPSBpc1JUTDtcbiAgICB0aGlzLm1vZGFscyA9IFtdO1xuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyRG9jdW1lbnQ7XG4gIH1cbiAgZ2V0U2Nyb2xsYmFyV2lkdGgoKSB7XG4gICAgcmV0dXJuIGdldEJvZHlTY3JvbGxiYXJXaWR0aCh0aGlzLm93bmVyRG9jdW1lbnQpO1xuICB9XG4gIGdldEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuICh0aGlzLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpLmJvZHk7XG4gIH1cbiAgc2V0TW9kYWxBdHRyaWJ1dGVzKF9tb2RhbCkge1xuICAgIC8vIEZvciBvdmVycmlkaW5nXG4gIH1cbiAgcmVtb3ZlTW9kYWxBdHRyaWJ1dGVzKF9tb2RhbCkge1xuICAgIC8vIEZvciBvdmVycmlkaW5nXG4gIH1cbiAgc2V0Q29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpIHtcbiAgICBjb25zdCBzdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH07XG5cbiAgICAvLyB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBhY3R1YWwgYHN0eWxlYCBoZXJlXG4gICAgLy8gYmVjYXVzZSB3ZSB3aWxsIG92ZXJyaWRlIGl0XG4gICAgY29uc3QgcGFkZGluZ1Byb3AgPSB0aGlzLmlzUlRMID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIGNvbnRhaW5lclN0YXRlLnN0eWxlID0ge1xuICAgICAgb3ZlcmZsb3c6IGNvbnRhaW5lci5zdHlsZS5vdmVyZmxvdyxcbiAgICAgIFtwYWRkaW5nUHJvcF06IGNvbnRhaW5lci5zdHlsZVtwYWRkaW5nUHJvcF1cbiAgICB9O1xuICAgIGlmIChjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkge1xuICAgICAgLy8gdXNlIGNvbXB1dGVkIHN0eWxlLCBoZXJlIHRvIGdldCB0aGUgcmVhbCBwYWRkaW5nXG4gICAgICAvLyB0byBhZGQgb3VyIHNjcm9sbGJhciB3aWR0aFxuICAgICAgc3R5bGVbcGFkZGluZ1Byb3BdID0gYCR7cGFyc2VJbnQoY3NzKGNvbnRhaW5lciwgcGFkZGluZ1Byb3ApIHx8ICcwJywgMTApICsgY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGh9cHhgO1xuICAgIH1cbiAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKE9QRU5fREFUQV9BVFRSSUJVVEUsICcnKTtcbiAgICBjc3MoY29udGFpbmVyLCBzdHlsZSk7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgWy4uLnRoaXMubW9kYWxzXS5mb3JFYWNoKG0gPT4gdGhpcy5yZW1vdmUobSkpO1xuICB9XG4gIHJlbW92ZUNvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRFbGVtZW50KCk7XG4gICAgY29udGFpbmVyLnJlbW92ZUF0dHJpYnV0ZShPUEVOX0RBVEFfQVRUUklCVVRFKTtcbiAgICBPYmplY3QuYXNzaWduKGNvbnRhaW5lci5zdHlsZSwgY29udGFpbmVyU3RhdGUuc3R5bGUpO1xuICB9XG4gIGFkZChtb2RhbCkge1xuICAgIGxldCBtb2RhbElkeCA9IHRoaXMubW9kYWxzLmluZGV4T2YobW9kYWwpO1xuICAgIGlmIChtb2RhbElkeCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBtb2RhbElkeDtcbiAgICB9XG4gICAgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5sZW5ndGg7XG4gICAgdGhpcy5tb2RhbHMucHVzaChtb2RhbCk7XG4gICAgdGhpcy5zZXRNb2RhbEF0dHJpYnV0ZXMobW9kYWwpO1xuICAgIGlmIChtb2RhbElkeCAhPT0gMCkge1xuICAgICAgcmV0dXJuIG1vZGFsSWR4O1xuICAgIH1cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc2Nyb2xsQmFyV2lkdGg6IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKSxcbiAgICAgIHN0eWxlOiB7fVxuICAgIH07XG4gICAgaWYgKHRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cpIHtcbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyU3R5bGUodGhpcy5zdGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBtb2RhbElkeDtcbiAgfVxuICByZW1vdmUobW9kYWwpIHtcbiAgICBjb25zdCBtb2RhbElkeCA9IHRoaXMubW9kYWxzLmluZGV4T2YobW9kYWwpO1xuICAgIGlmIChtb2RhbElkeCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tb2RhbHMuc3BsaWNlKG1vZGFsSWR4LCAxKTtcblxuICAgIC8vIGlmIHRoYXQgd2FzIHRoZSBsYXN0IG1vZGFsIGluIGEgY29udGFpbmVyLFxuICAgIC8vIGNsZWFuIHVwIHRoZSBjb250YWluZXJcbiAgICBpZiAoIXRoaXMubW9kYWxzLmxlbmd0aCAmJiB0aGlzLmhhbmRsZUNvbnRhaW5lck92ZXJmbG93KSB7XG4gICAgICB0aGlzLnJlbW92ZUNvbnRhaW5lclN0eWxlKHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZU1vZGFsQXR0cmlidXRlcyhtb2RhbCk7XG4gIH1cbiAgaXNUb3BNb2RhbChtb2RhbCkge1xuICAgIHJldHVybiAhIXRoaXMubW9kYWxzLmxlbmd0aCAmJiB0aGlzLm1vZGFsc1t0aGlzLm1vZGFscy5sZW5ndGggLSAxXSA9PT0gbW9kYWw7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1vZGFsTWFuYWdlcjsiLCIvKipcbiAqIEdldCB0aGUgd2lkdGggb2YgdGhlIHZlcnRpY2FsIHdpbmRvdyBzY3JvbGxiYXIgaWYgaXQncyB2aXNpYmxlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvZHlTY3JvbGxiYXJXaWR0aChvd25lckRvY3VtZW50ID0gZG9jdW1lbnQpIHtcbiAgY29uc3Qgd2luZG93ID0gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcbiAgcmV0dXJuIE1hdGguYWJzKHdpbmRvdy5pbm5lcldpZHRoIC0gb3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO1xufSIsImltcG9ydCBvd25lckRvY3VtZW50IGZyb20gJ2RvbS1oZWxwZXJzL293bmVyRG9jdW1lbnQnO1xuaW1wb3J0IGNhblVzZURPTSBmcm9tICdkb20taGVscGVycy9jYW5Vc2VET00nO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VXaW5kb3cgZnJvbSAnLi91c2VXaW5kb3cnO1xuZXhwb3J0IGNvbnN0IHJlc29sdmVDb250YWluZXJSZWYgPSAocmVmLCBkb2N1bWVudCkgPT4ge1xuICBpZiAoIWNhblVzZURPTSkgcmV0dXJuIG51bGw7XG4gIGlmIChyZWYgPT0gbnVsbCkgcmV0dXJuIChkb2N1bWVudCB8fCBvd25lckRvY3VtZW50KCkpLmJvZHk7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYgPSByZWYoKTtcbiAgaWYgKHJlZiAmJiAnY3VycmVudCcgaW4gcmVmKSByZWYgPSByZWYuY3VycmVudDtcbiAgaWYgKHJlZiAmJiAoJ25vZGVUeXBlJyBpbiByZWYgfHwgcmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkpIHJldHVybiByZWY7XG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVdhaXRGb3JET01SZWYocmVmLCBvblJlc29sdmVkKSB7XG4gIGNvbnN0IHdpbmRvdyA9IHVzZVdpbmRvdygpO1xuICBjb25zdCBbcmVzb2x2ZWRSZWYsIHNldFJlZl0gPSB1c2VTdGF0ZSgoKSA9PiByZXNvbHZlQ29udGFpbmVyUmVmKHJlZiwgd2luZG93ID09IG51bGwgPyB2b2lkIDAgOiB3aW5kb3cuZG9jdW1lbnQpKTtcbiAgaWYgKCFyZXNvbHZlZFJlZikge1xuICAgIGNvbnN0IGVhcmx5UmVmID0gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYpO1xuICAgIGlmIChlYXJseVJlZikgc2V0UmVmKGVhcmx5UmVmKTtcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvblJlc29sdmVkICYmIHJlc29sdmVkUmVmKSB7XG4gICAgICBvblJlc29sdmVkKHJlc29sdmVkUmVmKTtcbiAgICB9XG4gIH0sIFtvblJlc29sdmVkLCByZXNvbHZlZFJlZl0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5leHRSZWYgPSByZXNvbHZlQ29udGFpbmVyUmVmKHJlZik7XG4gICAgaWYgKG5leHRSZWYgIT09IHJlc29sdmVkUmVmKSB7XG4gICAgICBzZXRSZWYobmV4dFJlZik7XG4gICAgfVxuICB9LCBbcmVmLCByZXNvbHZlZFJlZl0pO1xuICByZXR1cm4gcmVzb2x2ZWRSZWY7XG59IiwiaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlTWVyZ2VkUmVmcyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNZXJnZWRSZWZzJztcbmltcG9ydCB7IGNsb25lRWxlbWVudCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5mdW5jdGlvbiBOb29wVHJhbnNpdGlvbih7XG4gIGNoaWxkcmVuLFxuICBpbjogaW5Qcm9wLFxuICBvbkV4aXRlZCxcbiAgbW91bnRPbkVudGVyLFxuICB1bm1vdW50T25FeGl0XG59KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFzRW50ZXJlZFJlZiA9IHVzZVJlZihpblByb3ApO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSB1c2VFdmVudENhbGxiYWNrKG9uRXhpdGVkKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5Qcm9wKSBoYXNFbnRlcmVkUmVmLmN1cnJlbnQgPSB0cnVlO2Vsc2Uge1xuICAgICAgaGFuZGxlRXhpdGVkKHJlZi5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtpblByb3AsIGhhbmRsZUV4aXRlZF0pO1xuICBjb25zdCBjb21iaW5lZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBjaGlsZHJlbi5yZWYpO1xuICBjb25zdCBjaGlsZCA9IC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICByZWY6IGNvbWJpbmVkUmVmXG4gIH0pO1xuICBpZiAoaW5Qcm9wKSByZXR1cm4gY2hpbGQ7XG4gIGlmICh1bm1vdW50T25FeGl0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFoYXNFbnRlcmVkUmVmLmN1cnJlbnQgJiYgbW91bnRPbkVudGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGNoaWxkO1xufVxuZXhwb3J0IGRlZmF1bHQgTm9vcFRyYW5zaXRpb247IiwiaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VJc29tb3JwaGljRWZmZWN0IGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUlzb21vcnBoaWNFZmZlY3QnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgY2xvbmVFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBOb29wVHJhbnNpdGlvbiBmcm9tICcuL05vb3BUcmFuc2l0aW9uJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZnVuY3Rpb24gdXNlVHJhbnNpdGlvbih7XG4gIGluOiBpblByb3AsXG4gIG9uVHJhbnNpdGlvblxufSkge1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGlzSW5pdGlhbFJlZiA9IHVzZVJlZih0cnVlKTtcbiAgY29uc3QgaGFuZGxlVHJhbnNpdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2sob25UcmFuc2l0aW9uKTtcbiAgdXNlSXNvbW9ycGhpY0VmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IHN0YWxlID0gZmFsc2U7XG4gICAgaGFuZGxlVHJhbnNpdGlvbih7XG4gICAgICBpbjogaW5Qcm9wLFxuICAgICAgZWxlbWVudDogcmVmLmN1cnJlbnQsXG4gICAgICBpbml0aWFsOiBpc0luaXRpYWxSZWYuY3VycmVudCxcbiAgICAgIGlzU3RhbGU6ICgpID0+IHN0YWxlXG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHN0YWxlID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbaW5Qcm9wLCBoYW5kbGVUcmFuc2l0aW9uXSk7XG4gIHVzZUlzb21vcnBoaWNFZmZlY3QoKCkgPT4ge1xuICAgIGlzSW5pdGlhbFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgLy8gdGhpcyBpcyBmb3Igc3RyaWN0IG1vZGVcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNJbml0aWFsUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIHJlZjtcbn1cbi8qKlxuICogQWRhcHRzIGFuIGltcGVyYXRpdmUgdHJhbnNpdGlvbiBmdW5jdGlvbiB0byBhIHN1YnNldCBvZiB0aGUgUlRHIGA8VHJhbnNpdGlvbj5gIGNvbXBvbmVudCBBUEkuXG4gKlxuICogSW1wZXJhdGl2ZVRyYW5zaXRpb24gZG9lcyBub3Qgc3VwcG9ydCBtb3VudGluZyBvcHRpb25zIG9yIGBhcHBlYXJgIGF0IHRoZSBtb21lbnQsIG1lYW5pbmdcbiAqIHRoYXQgaXQgYWx3YXlzIGFjdHMgbGlrZTogYG1vdW50T25FbnRlcj17dHJ1ZX0gdW5tb3VudE9uRXhpdD17dHJ1ZX0gYXBwZWFyPXt0cnVlfWBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSW1wZXJhdGl2ZVRyYW5zaXRpb24oe1xuICBjaGlsZHJlbixcbiAgaW46IGluUHJvcCxcbiAgb25FeGl0ZWQsXG4gIG9uRW50ZXJlZCxcbiAgdHJhbnNpdGlvblxufSkge1xuICBjb25zdCBbZXhpdGVkLCBzZXRFeGl0ZWRdID0gdXNlU3RhdGUoIWluUHJvcCk7XG5cbiAgLy8gVE9ETzogSSB0aGluayB0aGlzIG5lZWRzIHRvIGJlIGluIGFuIGVmZmVjdFxuICBpZiAoaW5Qcm9wICYmIGV4aXRlZCkge1xuICAgIHNldEV4aXRlZChmYWxzZSk7XG4gIH1cbiAgY29uc3QgcmVmID0gdXNlVHJhbnNpdGlvbih7XG4gICAgaW46ICEhaW5Qcm9wLFxuICAgIG9uVHJhbnNpdGlvbjogb3B0aW9ucyA9PiB7XG4gICAgICBjb25zdCBvbkZpbmlzaCA9ICgpID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNTdGFsZSgpKSByZXR1cm47XG4gICAgICAgIGlmIChvcHRpb25zLmluKSB7XG4gICAgICAgICAgb25FbnRlcmVkID09IG51bGwgPyB2b2lkIDAgOiBvbkVudGVyZWQob3B0aW9ucy5lbGVtZW50LCBvcHRpb25zLmluaXRpYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEV4aXRlZCh0cnVlKTtcbiAgICAgICAgICBvbkV4aXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25FeGl0ZWQob3B0aW9ucy5lbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIFByb21pc2UucmVzb2x2ZSh0cmFuc2l0aW9uKG9wdGlvbnMpKS50aGVuKG9uRmluaXNoLCBlcnJvciA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucy5pbikgc2V0RXhpdGVkKHRydWUpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNvbWJpbmVkUmVmID0gdXNlTWVyZ2VkUmVmcyhyZWYsIGNoaWxkcmVuLnJlZik7XG4gIHJldHVybiBleGl0ZWQgJiYgIWluUHJvcCA/IG51bGwgOiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgcmVmOiBjb21iaW5lZFJlZlxuICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJUcmFuc2l0aW9uKENvbXBvbmVudCwgcnVuVHJhbnNpdGlvbiwgcHJvcHMpIHtcbiAgaWYgKENvbXBvbmVudCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG4gIH1cbiAgaWYgKHJ1blRyYW5zaXRpb24pIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goSW1wZXJhdGl2ZVRyYW5zaXRpb24sIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICB0cmFuc2l0aW9uOiBydW5UcmFuc2l0aW9uXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChOb29wVHJhbnNpdGlvbiwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpKTtcbn0iLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJzaG93XCIsIFwicm9sZVwiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwiY2hpbGRyZW5cIiwgXCJiYWNrZHJvcFwiLCBcImtleWJvYXJkXCIsIFwib25CYWNrZHJvcENsaWNrXCIsIFwib25Fc2NhcGVLZXlEb3duXCIsIFwidHJhbnNpdGlvblwiLCBcInJ1blRyYW5zaXRpb25cIiwgXCJiYWNrZHJvcFRyYW5zaXRpb25cIiwgXCJydW5CYWNrZHJvcFRyYW5zaXRpb25cIiwgXCJhdXRvRm9jdXNcIiwgXCJlbmZvcmNlRm9jdXNcIiwgXCJyZXN0b3JlRm9jdXNcIiwgXCJyZXN0b3JlRm9jdXNPcHRpb25zXCIsIFwicmVuZGVyRGlhbG9nXCIsIFwicmVuZGVyQmFja2Ryb3BcIiwgXCJtYW5hZ2VyXCIsIFwiY29udGFpbmVyXCIsIFwib25TaG93XCIsIFwib25IaWRlXCIsIFwib25FeGl0XCIsIFwib25FeGl0ZWRcIiwgXCJvbkV4aXRpbmdcIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRW50ZXJlZFwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZSwgcmVhY3QvcHJvcC10eXBlcyAqL1xuXG5pbXBvcnQgYWN0aXZlRWxlbWVudCBmcm9tICdkb20taGVscGVycy9hY3RpdmVFbGVtZW50JztcbmltcG9ydCBjb250YWlucyBmcm9tICdkb20taGVscGVycy9jb250YWlucyc7XG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJ2RvbS1oZWxwZXJzL2NhblVzZURPTSc7XG5pbXBvcnQgbGlzdGVuIGZyb20gJ2RvbS1oZWxwZXJzL2xpc3Rlbic7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgZm9yd2FyZFJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgdXNlTW91bnRlZCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VNb3VudGVkJztcbmltcG9ydCB1c2VXaWxsVW5tb3VudCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VXaWxsVW5tb3VudCc7XG5pbXBvcnQgdXNlUHJldmlvdXMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlUHJldmlvdXMnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgTW9kYWxNYW5hZ2VyIGZyb20gJy4vTW9kYWxNYW5hZ2VyJztcbmltcG9ydCB1c2VXYWl0Rm9yRE9NUmVmIGZyb20gJy4vdXNlV2FpdEZvckRPTVJlZic7XG5pbXBvcnQgdXNlV2luZG93IGZyb20gJy4vdXNlV2luZG93JztcbmltcG9ydCB7IHJlbmRlclRyYW5zaXRpb24gfSBmcm9tICcuL0ltcGVyYXRpdmVUcmFuc2l0aW9uJztcbmltcG9ydCB7IGlzRXNjS2V5IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5sZXQgbWFuYWdlcjtcbmZ1bmN0aW9uIGdldE1hbmFnZXIod2luZG93KSB7XG4gIGlmICghbWFuYWdlcikgbWFuYWdlciA9IG5ldyBNb2RhbE1hbmFnZXIoe1xuICAgIG93bmVyRG9jdW1lbnQ6IHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50XG4gIH0pO1xuICByZXR1cm4gbWFuYWdlcjtcbn1cbmZ1bmN0aW9uIHVzZU1vZGFsTWFuYWdlcihwcm92aWRlZCkge1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgbW9kYWxNYW5hZ2VyID0gcHJvdmlkZWQgfHwgZ2V0TWFuYWdlcih3aW5kb3cpO1xuICBjb25zdCBtb2RhbCA9IHVzZVJlZih7XG4gICAgZGlhbG9nOiBudWxsLFxuICAgIGJhY2tkcm9wOiBudWxsXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihtb2RhbC5jdXJyZW50LCB7XG4gICAgYWRkOiAoKSA9PiBtb2RhbE1hbmFnZXIuYWRkKG1vZGFsLmN1cnJlbnQpLFxuICAgIHJlbW92ZTogKCkgPT4gbW9kYWxNYW5hZ2VyLnJlbW92ZShtb2RhbC5jdXJyZW50KSxcbiAgICBpc1RvcE1vZGFsOiAoKSA9PiBtb2RhbE1hbmFnZXIuaXNUb3BNb2RhbChtb2RhbC5jdXJyZW50KSxcbiAgICBzZXREaWFsb2dSZWY6IHVzZUNhbGxiYWNrKHJlZiA9PiB7XG4gICAgICBtb2RhbC5jdXJyZW50LmRpYWxvZyA9IHJlZjtcbiAgICB9LCBbXSksXG4gICAgc2V0QmFja2Ryb3BSZWY6IHVzZUNhbGxiYWNrKHJlZiA9PiB7XG4gICAgICBtb2RhbC5jdXJyZW50LmJhY2tkcm9wID0gcmVmO1xuICAgIH0sIFtdKVxuICB9KTtcbn1cbmNvbnN0IE1vZGFsID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgc2hvdyA9IGZhbHNlLFxuICAgICAgcm9sZSA9ICdkaWFsb2cnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgc3R5bGUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGJhY2tkcm9wID0gdHJ1ZSxcbiAgICAgIGtleWJvYXJkID0gdHJ1ZSxcbiAgICAgIG9uQmFja2Ryb3BDbGljayxcbiAgICAgIG9uRXNjYXBlS2V5RG93bixcbiAgICAgIHRyYW5zaXRpb24sXG4gICAgICBydW5UcmFuc2l0aW9uLFxuICAgICAgYmFja2Ryb3BUcmFuc2l0aW9uLFxuICAgICAgcnVuQmFja2Ryb3BUcmFuc2l0aW9uLFxuICAgICAgYXV0b0ZvY3VzID0gdHJ1ZSxcbiAgICAgIGVuZm9yY2VGb2N1cyA9IHRydWUsXG4gICAgICByZXN0b3JlRm9jdXMgPSB0cnVlLFxuICAgICAgcmVzdG9yZUZvY3VzT3B0aW9ucyxcbiAgICAgIHJlbmRlckRpYWxvZyxcbiAgICAgIHJlbmRlckJhY2tkcm9wID0gcHJvcHMgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpKSxcbiAgICAgIG1hbmFnZXI6IHByb3ZpZGVkTWFuYWdlcixcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyUmVmLFxuICAgICAgb25TaG93LFxuICAgICAgb25IaWRlID0gKCkgPT4ge30sXG4gICAgICBvbkV4aXQsXG4gICAgICBvbkV4aXRlZCxcbiAgICAgIG9uRXhpdGluZyxcbiAgICAgIG9uRW50ZXIsXG4gICAgICBvbkVudGVyaW5nLFxuICAgICAgb25FbnRlcmVkXG4gICAgfSA9IF9yZWYsXG4gICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHVzZVdhaXRGb3JET01SZWYoY29udGFpbmVyUmVmKTtcbiAgY29uc3QgbW9kYWwgPSB1c2VNb2RhbE1hbmFnZXIocHJvdmlkZWRNYW5hZ2VyKTtcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlTW91bnRlZCgpO1xuICBjb25zdCBwcmV2U2hvdyA9IHVzZVByZXZpb3VzKHNob3cpO1xuICBjb25zdCBbZXhpdGVkLCBzZXRFeGl0ZWRdID0gdXNlU3RhdGUoIXNob3cpO1xuICBjb25zdCBsYXN0Rm9jdXNSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBtb2RhbCwgW21vZGFsXSk7XG4gIGlmIChjYW5Vc2VET00gJiYgIXByZXZTaG93ICYmIHNob3cpIHtcbiAgICBsYXN0Rm9jdXNSZWYuY3VycmVudCA9IGFjdGl2ZUVsZW1lbnQoKTtcbiAgfVxuXG4gIC8vIFRPRE86IEkgdGhpbmsgdGhpcyBuZWVkcyB0byBiZSBpbiBhbiBlZmZlY3RcbiAgaWYgKHNob3cgJiYgZXhpdGVkKSB7XG4gICAgc2V0RXhpdGVkKGZhbHNlKTtcbiAgfVxuICBjb25zdCBoYW5kbGVTaG93ID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgbW9kYWwuYWRkKCk7XG4gICAgcmVtb3ZlS2V5ZG93bkxpc3RlbmVyUmVmLmN1cnJlbnQgPSBsaXN0ZW4oZG9jdW1lbnQsICdrZXlkb3duJywgaGFuZGxlRG9jdW1lbnRLZXlEb3duKTtcbiAgICByZW1vdmVGb2N1c0xpc3RlbmVyUmVmLmN1cnJlbnQgPSBsaXN0ZW4oZG9jdW1lbnQsICdmb2N1cycsXG4gICAgLy8gdGhlIHRpbWVvdXQgaXMgbmVjZXNzYXJ5IGIvYyB0aGlzIHdpbGwgcnVuIGJlZm9yZSB0aGUgbmV3IG1vZGFsIGlzIG1vdW50ZWRcbiAgICAvLyBhbmQgc28gc3RlYWxzIGZvY3VzIGZyb20gaXRcbiAgICAoKSA9PiBzZXRUaW1lb3V0KGhhbmRsZUVuZm9yY2VGb2N1cyksIHRydWUpO1xuICAgIGlmIChvblNob3cpIHtcbiAgICAgIG9uU2hvdygpO1xuICAgIH1cblxuICAgIC8vIGF1dG9mb2N1cyBhZnRlciBvblNob3cgdG8gbm90IHRyaWdnZXIgYSBmb2N1cyBldmVudCBmb3IgcHJldmlvdXNcbiAgICAvLyBtb2RhbHMgYmVmb3JlIHRoaXMgb25lIGlzIHNob3duLlxuICAgIGlmIChhdXRvRm9jdXMpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudChkb2N1bWVudCk7XG4gICAgICBpZiAobW9kYWwuZGlhbG9nICYmIGN1cnJlbnRBY3RpdmVFbGVtZW50ICYmICFjb250YWlucyhtb2RhbC5kaWFsb2csIGN1cnJlbnRBY3RpdmVFbGVtZW50KSkge1xuICAgICAgICBsYXN0Rm9jdXNSZWYuY3VycmVudCA9IGN1cnJlbnRBY3RpdmVFbGVtZW50O1xuICAgICAgICBtb2RhbC5kaWFsb2cuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgbW9kYWwucmVtb3ZlKCk7XG4gICAgcmVtb3ZlS2V5ZG93bkxpc3RlbmVyUmVmLmN1cnJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50KCk7XG4gICAgcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50ID09IG51bGwgPyB2b2lkIDAgOiByZW1vdmVGb2N1c0xpc3RlbmVyUmVmLmN1cnJlbnQoKTtcbiAgICBpZiAocmVzdG9yZUZvY3VzKSB7XG4gICAgICB2YXIgX2xhc3RGb2N1c1JlZiRjdXJyZW50O1xuICAgICAgLy8gU3VwcG9ydDogPD1JRTExIGRvZXNuJ3Qgc3VwcG9ydCBgZm9jdXMoKWAgb24gc3ZnIGVsZW1lbnRzIChSQjogIzkxNylcbiAgICAgIChfbGFzdEZvY3VzUmVmJGN1cnJlbnQgPSBsYXN0Rm9jdXNSZWYuY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9sYXN0Rm9jdXNSZWYkY3VycmVudC5mb2N1cyA9PSBudWxsID8gdm9pZCAwIDogX2xhc3RGb2N1c1JlZiRjdXJyZW50LmZvY3VzKHJlc3RvcmVGb2N1c09wdGlvbnMpO1xuICAgICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVE9ETzogdHJ5IGFuZCBjb21iaW5lIHRoZXNlIGVmZmVjdHM6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3Qtb3ZlcmxheXMvcHVsbC83OTQjZGlzY3Vzc2lvbl9yNDA5OTU0MTIwXG5cbiAgLy8gU2hvdyBsb2dpYyB3aGVuOlxuICAvLyAgLSBzaG93IGlzIGB0cnVlYCBfYW5kXyBgY29udGFpbmVyYCBoYXMgcmVzb2x2ZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3cgfHwgIWNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGhhbmRsZVNob3coKTtcbiAgfSwgW3Nob3csIGNvbnRhaW5lciwgLyogc2hvdWxkIG5ldmVyIGNoYW5nZTogKi9oYW5kbGVTaG93XSk7XG5cbiAgLy8gSGlkZSBjbGVhbnVwIGxvZ2ljIHdoZW46XG4gIC8vICAtIGBleGl0ZWRgIHN3aXRjaGVzIHRvIHRydWVcbiAgLy8gIC0gY29tcG9uZW50IHVubW91bnRzO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZXhpdGVkKSByZXR1cm47XG4gICAgaGFuZGxlSGlkZSgpO1xuICB9LCBbZXhpdGVkLCBoYW5kbGVIaWRlXSk7XG4gIHVzZVdpbGxVbm1vdW50KCgpID0+IHtcbiAgICBoYW5kbGVIaWRlKCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgY29uc3QgaGFuZGxlRW5mb3JjZUZvY3VzID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFlbmZvcmNlRm9jdXMgfHwgIWlzTW91bnRlZCgpIHx8ICFtb2RhbC5pc1RvcE1vZGFsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBhY3RpdmVFbGVtZW50KCk7XG4gICAgaWYgKG1vZGFsLmRpYWxvZyAmJiBjdXJyZW50QWN0aXZlRWxlbWVudCAmJiAhY29udGFpbnMobW9kYWwuZGlhbG9nLCBjdXJyZW50QWN0aXZlRWxlbWVudCkpIHtcbiAgICAgIG1vZGFsLmRpYWxvZy5mb2N1cygpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uQmFja2Ryb3BDbGljayA9PSBudWxsID8gdm9pZCAwIDogb25CYWNrZHJvcENsaWNrKGUpO1xuICAgIGlmIChiYWNrZHJvcCA9PT0gdHJ1ZSkge1xuICAgICAgb25IaWRlKCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRG9jdW1lbnRLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoa2V5Ym9hcmQgJiYgaXNFc2NLZXkoZSkgJiYgbW9kYWwuaXNUb3BNb2RhbCgpKSB7XG4gICAgICBvbkVzY2FwZUtleURvd24gPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXNjYXBlS2V5RG93bihlKTtcbiAgICAgIGlmICghZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIG9uSGlkZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHJlbW92ZUZvY3VzTGlzdGVuZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgcmVtb3ZlS2V5ZG93bkxpc3RlbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGhhbmRsZUhpZGRlbiA9ICguLi5hcmdzKSA9PiB7XG4gICAgc2V0RXhpdGVkKHRydWUpO1xuICAgIG9uRXhpdGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkV4aXRlZCguLi5hcmdzKTtcbiAgfTtcbiAgaWYgKCFjb250YWluZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBkaWFsb2dQcm9wcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJvbGUsXG4gICAgcmVmOiBtb2RhbC5zZXREaWFsb2dSZWYsXG4gICAgLy8gYXBwYXJlbnRseSBvbmx5IHdvcmtzIG9uIHRoZSBkaWFsb2cgcm9sZSBlbGVtZW50XG4gICAgJ2FyaWEtbW9kYWwnOiByb2xlID09PSAnZGlhbG9nJyA/IHRydWUgOiB1bmRlZmluZWRcbiAgfSwgcmVzdCwge1xuICAgIHN0eWxlLFxuICAgIGNsYXNzTmFtZSxcbiAgICB0YWJJbmRleDogLTFcbiAgfSk7XG4gIGxldCBkaWFsb2cgPSByZW5kZXJEaWFsb2cgPyByZW5kZXJEaWFsb2coZGlhbG9nUHJvcHMpIDogLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgZGlhbG9nUHJvcHMsIHtcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgcm9sZTogJ2RvY3VtZW50J1xuICAgIH0pXG4gIH0pKTtcbiAgZGlhbG9nID0gcmVuZGVyVHJhbnNpdGlvbih0cmFuc2l0aW9uLCBydW5UcmFuc2l0aW9uLCB7XG4gICAgdW5tb3VudE9uRXhpdDogdHJ1ZSxcbiAgICBtb3VudE9uRW50ZXI6IHRydWUsXG4gICAgYXBwZWFyOiB0cnVlLFxuICAgIGluOiAhIXNob3csXG4gICAgb25FeGl0LFxuICAgIG9uRXhpdGluZyxcbiAgICBvbkV4aXRlZDogaGFuZGxlSGlkZGVuLFxuICAgIG9uRW50ZXIsXG4gICAgb25FbnRlcmluZyxcbiAgICBvbkVudGVyZWQsXG4gICAgY2hpbGRyZW46IGRpYWxvZ1xuICB9KTtcbiAgbGV0IGJhY2tkcm9wRWxlbWVudCA9IG51bGw7XG4gIGlmIChiYWNrZHJvcCkge1xuICAgIGJhY2tkcm9wRWxlbWVudCA9IHJlbmRlckJhY2tkcm9wKHtcbiAgICAgIHJlZjogbW9kYWwuc2V0QmFja2Ryb3BSZWYsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVCYWNrZHJvcENsaWNrXG4gICAgfSk7XG4gICAgYmFja2Ryb3BFbGVtZW50ID0gcmVuZGVyVHJhbnNpdGlvbihiYWNrZHJvcFRyYW5zaXRpb24sIHJ1bkJhY2tkcm9wVHJhbnNpdGlvbiwge1xuICAgICAgaW46ICEhc2hvdyxcbiAgICAgIGFwcGVhcjogdHJ1ZSxcbiAgICAgIG1vdW50T25FbnRlcjogdHJ1ZSxcbiAgICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgICBjaGlsZHJlbjogYmFja2Ryb3BFbGVtZW50XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovUmVhY3RET00uY3JlYXRlUG9ydGFsKCAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogW2JhY2tkcm9wRWxlbWVudCwgZGlhbG9nXVxuICAgIH0pLCBjb250YWluZXIpXG4gIH0pO1xufSk7XG5Nb2RhbC5kaXNwbGF5TmFtZSA9ICdNb2RhbCc7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE1vZGFsLCB7XG4gIE1hbmFnZXI6IE1vZGFsTWFuYWdlclxufSk7IiwiaW1wb3J0IHVzZVVwZGF0ZWRSZWYgZnJvbSAnLi91c2VVcGRhdGVkUmVmJztcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQXR0YWNoIGEgY2FsbGJhY2sgdGhhdCBmaXJlcyB3aGVuIGEgY29tcG9uZW50IHVubW91bnRzXG4gKlxuICogQHBhcmFtIGZuIEhhbmRsZXIgdG8gcnVuIHdoZW4gdGhlIGNvbXBvbmVudCB1bm1vdW50c1xuICogQGNhdGVnb3J5IGVmZmVjdHNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXaWxsVW5tb3VudChmbikge1xuICB2YXIgb25Vbm1vdW50ID0gdXNlVXBkYXRlZFJlZihmbik7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBvblVubW91bnQuY3VycmVudCgpO1xuICAgIH07XG4gIH0sIFtdKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFJldHVybnMgYSByZWYgdGhhdCBpcyBpbW1lZGlhdGVseSB1cGRhdGVkIHdpdGggdGhlIG5ldyB2YWx1ZVxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgUmVmIHZhbHVlXG4gKiBAY2F0ZWdvcnkgcmVmc1xuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVVwZGF0ZWRSZWYodmFsdWUpIHtcbiAgdmFyIHZhbHVlUmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgdmFsdWVSZWYuY3VycmVudCA9IHZhbHVlO1xuICByZXR1cm4gdmFsdWVSZWY7XG59IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXNjS2V5KGUpIHtcbiAgcmV0dXJuIGUuY29kZSA9PT0gJ0VzY2FwZScgfHwgZS5rZXlDb2RlID09PSAyNztcbn0iLCJpbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVdpdGhCc1ByZWZpeCgnb2ZmY2FudmFzLWJvZHknKTsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEVOVEVSRUQsIEVOVEVSSU5HLCBFWElUSU5HIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uJztcbmltcG9ydCB0cmFuc2l0aW9uRW5kTGlzdGVuZXIgZnJvbSAnLi90cmFuc2l0aW9uRW5kTGlzdGVuZXInO1xuaW1wb3J0IFRyYW5zaXRpb25XcmFwcGVyIGZyb20gJy4vVHJhbnNpdGlvbldyYXBwZXInO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGluOiBmYWxzZSxcbiAgbW91bnRPbkVudGVyOiBmYWxzZSxcbiAgdW5tb3VudE9uRXhpdDogZmFsc2UsXG4gIGFwcGVhcjogZmFsc2Vcbn07XG5jb25zdCB0cmFuc2l0aW9uU3R5bGVzID0ge1xuICBbRU5URVJJTkddOiAnc2hvdycsXG4gIFtFTlRFUkVEXTogJ3Nob3cnXG59O1xuY29uc3QgT2ZmY2FudmFzVG9nZ2xpbmcgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ29mZmNhbnZhcycpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbldyYXBwZXIsIHtcbiAgICByZWY6IHJlZixcbiAgICBhZGRFbmRMaXN0ZW5lcjogdHJhbnNpdGlvbkVuZExpc3RlbmVyLFxuICAgIC4uLnByb3BzLFxuICAgIGNoaWxkUmVmOiBjaGlsZHJlbi5yZWYsXG4gICAgY2hpbGRyZW46IChzdGF0dXMsIGlubmVyUHJvcHMpID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIC4uLmlubmVyUHJvcHMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRVhJVElORykgJiYgYCR7YnNQcmVmaXh9LXRvZ2dsaW5nYCwgdHJhbnNpdGlvblN0eWxlc1tzdGF0dXNdKVxuICAgIH0pXG4gIH0pO1xufSk7XG5PZmZjYW52YXNUb2dnbGluZy5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5PZmZjYW52YXNUb2dnbGluZy5kaXNwbGF5TmFtZSA9ICdPZmZjYW52YXNUb2dnbGluZyc7XG5leHBvcnQgZGVmYXVsdCBPZmZjYW52YXNUb2dnbGluZzsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBNb2RhbENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25IaWRlKCkge31cbn0pO1xuZXhwb3J0IGRlZmF1bHQgTW9kYWxDb250ZXh0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tICcuL0Nsb3NlQnV0dG9uJztcbmltcG9ydCBNb2RhbENvbnRleHQgZnJvbSAnLi9Nb2RhbENvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgY2xvc2VMYWJlbDogJ0Nsb3NlJyxcbiAgY2xvc2VCdXR0b246IGZhbHNlXG59O1xuY29uc3QgQWJzdHJhY3RNb2RhbEhlYWRlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNsb3NlTGFiZWwsXG4gIGNsb3NlVmFyaWFudCxcbiAgY2xvc2VCdXR0b24sXG4gIG9uSGlkZSxcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTW9kYWxDb250ZXh0KTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0Lm9uSGlkZSgpO1xuICAgIG9uSGlkZSA9PSBudWxsID8gdm9pZCAwIDogb25IaWRlKCk7XG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFwiZGl2XCIsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjaGlsZHJlbjogW2NoaWxkcmVuLCBjbG9zZUJ1dHRvbiAmJiAvKiNfX1BVUkVfXyovX2pzeChDbG9zZUJ1dHRvbiwge1xuICAgICAgXCJhcmlhLWxhYmVsXCI6IGNsb3NlTGFiZWwsXG4gICAgICB2YXJpYW50OiBjbG9zZVZhcmlhbnQsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgIH0pXVxuICB9KTtcbn0pO1xuQWJzdHJhY3RNb2RhbEhlYWRlci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdE1vZGFsSGVhZGVyOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBBYnN0cmFjdE1vZGFsSGVhZGVyIGZyb20gJy4vQWJzdHJhY3RNb2RhbEhlYWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBjbG9zZUxhYmVsOiAnQ2xvc2UnLFxuICBjbG9zZUJ1dHRvbjogZmFsc2Vcbn07XG5jb25zdCBPZmZjYW52YXNIZWFkZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnb2ZmY2FudmFzLWhlYWRlcicpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQWJzdHJhY3RNb2RhbEhlYWRlciwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4KVxuICB9KTtcbn0pO1xuT2ZmY2FudmFzSGVhZGVyLmRpc3BsYXlOYW1lID0gJ09mZmNhbnZhc0hlYWRlcic7XG5PZmZjYW52YXNIZWFkZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2ZmY2FudmFzSGVhZGVyOyIsImltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuaW1wb3J0IGRpdldpdGhDbGFzc05hbWUgZnJvbSAnLi9kaXZXaXRoQ2xhc3NOYW1lJztcbmNvbnN0IERpdlN0eWxlZEFzSDUgPSBkaXZXaXRoQ2xhc3NOYW1lKCdoNScpO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlV2l0aEJzUHJlZml4KCdvZmZjYW52YXMtdGl0bGUnLCB7XG4gIENvbXBvbmVudDogRGl2U3R5bGVkQXNINVxufSk7IiwiZnVuY3Rpb24gcmVwbGFjZUNsYXNzTmFtZShvcmlnQ2xhc3MsIGNsYXNzVG9SZW1vdmUpIHtcbiAgcmV0dXJuIG9yaWdDbGFzcy5yZXBsYWNlKG5ldyBSZWdFeHAoXCIoXnxcXFxccylcIiArIGNsYXNzVG9SZW1vdmUgKyBcIig/OlxcXFxzfCQpXCIsICdnJyksICckMScpLnJlcGxhY2UoL1xccysvZywgJyAnKS5yZXBsYWNlKC9eXFxzKnxcXHMqJC9nLCAnJyk7XG59XG4vKipcbiAqIFJlbW92ZXMgYSBDU1MgY2xhc3MgZnJvbSBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MgbmFtZVxuICovXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LmNsYXNzTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IHJlcGxhY2VDbGFzc05hbWUoZWxlbWVudC5jbGFzc05hbWUsIGNsYXNzTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgcmVwbGFjZUNsYXNzTmFtZShlbGVtZW50LmNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsIHx8ICcnLCBjbGFzc05hbWUpKTtcbiAgfVxufSIsImltcG9ydCBhZGRDbGFzcyBmcm9tICdkb20taGVscGVycy9hZGRDbGFzcyc7XG5pbXBvcnQgY3NzIGZyb20gJ2RvbS1oZWxwZXJzL2Nzcyc7XG5pbXBvcnQgcXNhIGZyb20gJ2RvbS1oZWxwZXJzL3F1ZXJ5U2VsZWN0b3JBbGwnO1xuaW1wb3J0IHJlbW92ZUNsYXNzIGZyb20gJ2RvbS1oZWxwZXJzL3JlbW92ZUNsYXNzJztcbmltcG9ydCBNb2RhbE1hbmFnZXIgZnJvbSAnQHJlc3RhcnQvdWkvTW9kYWxNYW5hZ2VyJztcbmNvbnN0IFNlbGVjdG9yID0ge1xuICBGSVhFRF9DT05URU5UOiAnLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCcsXG4gIFNUSUNLWV9DT05URU5UOiAnLnN0aWNreS10b3AnLFxuICBOQVZCQVJfVE9HR0xFUjogJy5uYXZiYXItdG9nZ2xlcidcbn07XG5jbGFzcyBCb290c3RyYXBNb2RhbE1hbmFnZXIgZXh0ZW5kcyBNb2RhbE1hbmFnZXIge1xuICBhZGp1c3RBbmRTdG9yZShwcm9wLCBlbGVtZW50LCBhZGp1c3QpIHtcbiAgICBjb25zdCBhY3R1YWwgPSBlbGVtZW50LnN0eWxlW3Byb3BdO1xuICAgIC8vIFRPRE86IERPTVN0cmluZ01hcCBhbmQgQ1NTU3R5bGVEZWNsYXJhdGlvbiBhcmVuJ3Qgc3RyaWN0bHkgY29tcGF0aWJsZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBlbGVtZW50LmRhdGFzZXRbcHJvcF0gPSBhY3R1YWw7XG4gICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgIFtwcm9wXTogYCR7cGFyc2VGbG9hdChjc3MoZWxlbWVudCwgcHJvcCkpICsgYWRqdXN0fXB4YFxuICAgIH0pO1xuICB9XG4gIHJlc3RvcmUocHJvcCwgZWxlbWVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC5kYXRhc2V0W3Byb3BdO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgZWxlbWVudC5kYXRhc2V0W3Byb3BdO1xuICAgICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgICAgW3Byb3BdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHNldENvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgc3VwZXIuc2V0Q29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIGFkZENsYXNzKGNvbnRhaW5lciwgJ21vZGFsLW9wZW4nKTtcbiAgICBpZiAoIWNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSByZXR1cm47XG4gICAgY29uc3QgcGFkZGluZ1Byb3AgPSB0aGlzLmlzUlRMID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnO1xuICAgIGNvbnN0IG1hcmdpblByb3AgPSB0aGlzLmlzUlRMID8gJ21hcmdpbkxlZnQnIDogJ21hcmdpblJpZ2h0JztcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5GSVhFRF9DT05URU5UKS5mb3JFYWNoKGVsID0+IHRoaXMuYWRqdXN0QW5kU3RvcmUocGFkZGluZ1Byb3AsIGVsLCBjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkpO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLlNUSUNLWV9DT05URU5UKS5mb3JFYWNoKGVsID0+IHRoaXMuYWRqdXN0QW5kU3RvcmUobWFyZ2luUHJvcCwgZWwsIC1jb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkpO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLk5BVkJBUl9UT0dHTEVSKS5mb3JFYWNoKGVsID0+IHRoaXMuYWRqdXN0QW5kU3RvcmUobWFyZ2luUHJvcCwgZWwsIGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRoKSk7XG4gIH1cbiAgcmVtb3ZlQ29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpIHtcbiAgICBzdXBlci5yZW1vdmVDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRFbGVtZW50KCk7XG4gICAgcmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAnbW9kYWwtb3BlbicpO1xuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gdGhpcy5pc1JUTCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBtYXJnaW5Qcm9wID0gdGhpcy5pc1JUTCA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCc7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuRklYRURfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLnJlc3RvcmUocGFkZGluZ1Byb3AsIGVsKSk7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuU1RJQ0tZX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5yZXN0b3JlKG1hcmdpblByb3AsIGVsKSk7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuTkFWQkFSX1RPR0dMRVIpLmZvckVhY2goZWwgPT4gdGhpcy5yZXN0b3JlKG1hcmdpblByb3AsIGVsKSk7XG4gIH1cbn1cbmxldCBzaGFyZWRNYW5hZ2VyO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNoYXJlZE1hbmFnZXIob3B0aW9ucykge1xuICBpZiAoIXNoYXJlZE1hbmFnZXIpIHNoYXJlZE1hbmFnZXIgPSBuZXcgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyKG9wdGlvbnMpO1xuICByZXR1cm4gc2hhcmVkTWFuYWdlcjtcbn1cbmV4cG9ydCBkZWZhdWx0IEJvb3RzdHJhcE1vZGFsTWFuYWdlcjsiLCJpbXBvcnQgaGFzQ2xhc3MgZnJvbSAnLi9oYXNDbGFzcyc7XG4vKipcbiAqIEFkZHMgYSBDU1MgY2xhc3MgdG8gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzIG5hbWVcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50LCBjbGFzc05hbWUpIHtcbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0KSBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtlbHNlIGlmICghaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSkgaWYgKHR5cGVvZiBlbGVtZW50LmNsYXNzTmFtZSA9PT0gJ3N0cmluZycpIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUgKyBcIiBcIiArIGNsYXNzTmFtZTtlbHNlIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIChlbGVtZW50LmNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsIHx8ICcnKSArIFwiIFwiICsgY2xhc3NOYW1lKTtcbn0iLCIvKipcbiAqIENoZWNrcyBpZiBhIGdpdmVuIGVsZW1lbnQgaGFzIGEgQ1NTIGNsYXNzLlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzIG5hbWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgcmV0dXJuICEhY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSk7XG4gIHJldHVybiAoXCIgXCIgKyAoZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCBlbGVtZW50LmNsYXNzTmFtZSkgKyBcIiBcIikuaW5kZXhPZihcIiBcIiArIGNsYXNzTmFtZSArIFwiIFwiKSAhPT0gLTE7XG59IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdXNlQnJlYWtwb2ludCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VCcmVha3BvaW50JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCYXNlTW9kYWwgZnJvbSAnQHJlc3RhcnQvdWkvTW9kYWwnO1xuaW1wb3J0IEZhZGUgZnJvbSAnLi9GYWRlJztcbmltcG9ydCBPZmZjYW52YXNCb2R5IGZyb20gJy4vT2ZmY2FudmFzQm9keSc7XG5pbXBvcnQgT2ZmY2FudmFzVG9nZ2xpbmcgZnJvbSAnLi9PZmZjYW52YXNUb2dnbGluZyc7XG5pbXBvcnQgTW9kYWxDb250ZXh0IGZyb20gJy4vTW9kYWxDb250ZXh0JztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgT2ZmY2FudmFzSGVhZGVyIGZyb20gJy4vT2ZmY2FudmFzSGVhZGVyJztcbmltcG9ydCBPZmZjYW52YXNUaXRsZSBmcm9tICcuL09mZmNhbnZhc1RpdGxlJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyLCB7IGdldFNoYXJlZE1hbmFnZXIgfSBmcm9tICcuL0Jvb3RzdHJhcE1vZGFsTWFuYWdlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHNob3c6IGZhbHNlLFxuICBiYWNrZHJvcDogdHJ1ZSxcbiAga2V5Ym9hcmQ6IHRydWUsXG4gIHNjcm9sbDogZmFsc2UsXG4gIGF1dG9Gb2N1czogdHJ1ZSxcbiAgZW5mb3JjZUZvY3VzOiB0cnVlLFxuICByZXN0b3JlRm9jdXM6IHRydWUsXG4gIHBsYWNlbWVudDogJ3N0YXJ0JyxcbiAgcmVuZGVyU3RhdGljTm9kZTogZmFsc2Vcbn07XG5mdW5jdGlvbiBEaWFsb2dUcmFuc2l0aW9uKHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChPZmZjYW52YXNUb2dnbGluZywge1xuICAgIC4uLnByb3BzXG4gIH0pO1xufVxuZnVuY3Rpb24gQmFja2Ryb3BUcmFuc2l0aW9uKHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChGYWRlLCB7XG4gICAgLi4ucHJvcHNcbiAgfSk7XG59XG5jb25zdCBPZmZjYW52YXMgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZGJ5LFxuICBwbGFjZW1lbnQsXG4gIHJlc3BvbnNpdmUsXG4gIC8qIEJhc2VNb2RhbCBwcm9wcyAqL1xuXG4gIHNob3csXG4gIGJhY2tkcm9wLFxuICBrZXlib2FyZCxcbiAgc2Nyb2xsLFxuICBvbkVzY2FwZUtleURvd24sXG4gIG9uU2hvdyxcbiAgb25IaWRlLFxuICBjb250YWluZXIsXG4gIGF1dG9Gb2N1cyxcbiAgZW5mb3JjZUZvY3VzLFxuICByZXN0b3JlRm9jdXMsXG4gIHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gIG9uRW50ZXJlZCxcbiAgb25FeGl0LFxuICBvbkV4aXRpbmcsXG4gIG9uRW50ZXIsXG4gIG9uRW50ZXJpbmcsXG4gIG9uRXhpdGVkLFxuICBiYWNrZHJvcENsYXNzTmFtZSxcbiAgbWFuYWdlcjogcHJvcHNNYW5hZ2VyLFxuICByZW5kZXJTdGF0aWNOb2RlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IG1vZGFsTWFuYWdlciA9IHVzZVJlZigpO1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ29mZmNhbnZhcycpO1xuICBjb25zdCB7XG4gICAgb25Ub2dnbGVcbiAgfSA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCkgfHwge307XG4gIGNvbnN0IFtzaG93T2ZmY2FudmFzLCBzZXRTaG93T2ZmY2FudmFzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaGlkZVJlc3BvbnNpdmVPZmZjYW52YXMgPSB1c2VCcmVha3BvaW50KHJlc3BvbnNpdmUgfHwgJ3hzJywgJ3VwJyk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gSGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBzY3JlZW4gaXMgcmVzaXplZCB3aGlsZSB0aGUgcmVzcG9uc2l2ZVxuICAgIC8vIG9mZmNhbnZhcyBpcyBzaG93bi4gSWYgYHJlc3BvbnNpdmVgIG5vdCBwcm92aWRlZCwganVzdCB1c2UgYHNob3dgLlxuICAgIHNldFNob3dPZmZjYW52YXMocmVzcG9uc2l2ZSA/IHNob3cgJiYgIWhpZGVSZXNwb25zaXZlT2ZmY2FudmFzIDogc2hvdyk7XG4gIH0sIFtzaG93LCByZXNwb25zaXZlLCBoaWRlUmVzcG9uc2l2ZU9mZmNhbnZhc10pO1xuICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKCk7XG4gICAgb25IaWRlID09IG51bGwgPyB2b2lkIDAgOiBvbkhpZGUoKTtcbiAgfSk7XG4gIGNvbnN0IG1vZGFsQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBvbkhpZGU6IGhhbmRsZUhpZGVcbiAgfSksIFtoYW5kbGVIaWRlXSk7XG4gIGZ1bmN0aW9uIGdldE1vZGFsTWFuYWdlcigpIHtcbiAgICBpZiAocHJvcHNNYW5hZ2VyKSByZXR1cm4gcHJvcHNNYW5hZ2VyO1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIC8vIEhhdmUgdG8gdXNlIGEgZGlmZmVyZW50IG1vZGFsIG1hbmFnZXIgc2luY2UgdGhlIHNoYXJlZFxuICAgICAgLy8gb25lIGhhbmRsZXMgb3ZlcmZsb3cuXG4gICAgICBpZiAoIW1vZGFsTWFuYWdlci5jdXJyZW50KSBtb2RhbE1hbmFnZXIuY3VycmVudCA9IG5ldyBCb290c3RyYXBNb2RhbE1hbmFnZXIoe1xuICAgICAgICBoYW5kbGVDb250YWluZXJPdmVyZmxvdzogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1vZGFsTWFuYWdlci5jdXJyZW50O1xuICAgIH1cbiAgICByZXR1cm4gZ2V0U2hhcmVkTWFuYWdlcigpO1xuICB9XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gKG5vZGUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAobm9kZSkgbm9kZS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgIG9uRW50ZXIgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRW50ZXIobm9kZSwgLi4uYXJncyk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUV4aXRlZCA9IChub2RlLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKG5vZGUpIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICcnO1xuICAgIG9uRXhpdGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkV4aXRlZCguLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgcmVuZGVyQmFja2Ryb3AgPSB1c2VDYWxsYmFjayhiYWNrZHJvcFByb3BzID0+IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAuLi5iYWNrZHJvcFByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhgJHtic1ByZWZpeH0tYmFja2Ryb3BgLCBiYWNrZHJvcENsYXNzTmFtZSlcbiAgfSksIFtiYWNrZHJvcENsYXNzTmFtZSwgYnNQcmVmaXhdKTtcbiAgY29uc3QgcmVuZGVyRGlhbG9nID0gZGlhbG9nUHJvcHMgPT4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgIC4uLmRpYWxvZ1Byb3BzLFxuICAgIC4uLnByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHJlc3BvbnNpdmUgPyBgJHtic1ByZWZpeH0tJHtyZXNwb25zaXZlfWAgOiBic1ByZWZpeCwgYCR7YnNQcmVmaXh9LSR7cGxhY2VtZW50fWApLFxuICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFyaWFMYWJlbGxlZGJ5LFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWyFzaG93T2ZmY2FudmFzICYmIChyZXNwb25zaXZlIHx8IHJlbmRlclN0YXRpY05vZGUpICYmIHJlbmRlckRpYWxvZyh7fSksIC8qI19fUFVSRV9fKi9fanN4KE1vZGFsQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IG1vZGFsQ29udGV4dCxcbiAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChCYXNlTW9kYWwsIHtcbiAgICAgICAgc2hvdzogc2hvd09mZmNhbnZhcyxcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIGJhY2tkcm9wOiBiYWNrZHJvcCxcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICAgIGtleWJvYXJkOiBrZXlib2FyZCxcbiAgICAgICAgYXV0b0ZvY3VzOiBhdXRvRm9jdXMsXG4gICAgICAgIGVuZm9yY2VGb2N1czogZW5mb3JjZUZvY3VzICYmICFzY3JvbGwsXG4gICAgICAgIHJlc3RvcmVGb2N1czogcmVzdG9yZUZvY3VzLFxuICAgICAgICByZXN0b3JlRm9jdXNPcHRpb25zOiByZXN0b3JlRm9jdXNPcHRpb25zLFxuICAgICAgICBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb25TaG93OiBvblNob3csXG4gICAgICAgIG9uSGlkZTogaGFuZGxlSGlkZSxcbiAgICAgICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgICAgIG9uRW50ZXJpbmc6IG9uRW50ZXJpbmcsXG4gICAgICAgIG9uRW50ZXJlZDogb25FbnRlcmVkLFxuICAgICAgICBvbkV4aXQ6IG9uRXhpdCxcbiAgICAgICAgb25FeGl0aW5nOiBvbkV4aXRpbmcsXG4gICAgICAgIG9uRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgICAgIG1hbmFnZXI6IGdldE1vZGFsTWFuYWdlcigpLFxuICAgICAgICB0cmFuc2l0aW9uOiBEaWFsb2dUcmFuc2l0aW9uLFxuICAgICAgICBiYWNrZHJvcFRyYW5zaXRpb246IEJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgICAgcmVuZGVyQmFja2Ryb3A6IHJlbmRlckJhY2tkcm9wLFxuICAgICAgICByZW5kZXJEaWFsb2c6IHJlbmRlckRpYWxvZ1xuICAgICAgfSlcbiAgICB9KV1cbiAgfSk7XG59KTtcbk9mZmNhbnZhcy5kaXNwbGF5TmFtZSA9ICdPZmZjYW52YXMnO1xuT2ZmY2FudmFzLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oT2ZmY2FudmFzLCB7XG4gIEJvZHk6IE9mZmNhbnZhc0JvZHksXG4gIEhlYWRlcjogT2ZmY2FudmFzSGVhZGVyLFxuICBUaXRsZTogT2ZmY2FudmFzVGl0bGVcbn0pOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgT2ZmY2FudmFzIGZyb20gJy4vT2ZmY2FudmFzJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyT2ZmY2FudmFzID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChPZmZjYW52YXMsIHtcbiAgICByZWY6IHJlZixcbiAgICBzaG93OiAhIShjb250ZXh0ICE9IG51bGwgJiYgY29udGV4dC5leHBhbmRlZCksXG4gICAgLi4ucHJvcHMsXG4gICAgcmVuZGVyU3RhdGljTm9kZTogdHJ1ZVxuICB9KTtcbn0pO1xuTmF2YmFyT2ZmY2FudmFzLmRpc3BsYXlOYW1lID0gJ05hdmJhck9mZmNhbnZhcyc7XG5leHBvcnQgZGVmYXVsdCBOYXZiYXJPZmZjYW52YXM7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCBmcm9tICdAcmVzdGFydC91aS9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQgfSBmcm9tICd1bmNvbnRyb2xsYWJsZSc7XG5pbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCBOYXZiYXJCcmFuZCBmcm9tICcuL05hdmJhckJyYW5kJztcbmltcG9ydCBOYXZiYXJDb2xsYXBzZSBmcm9tICcuL05hdmJhckNvbGxhcHNlJztcbmltcG9ydCBOYXZiYXJUb2dnbGUgZnJvbSAnLi9OYXZiYXJUb2dnbGUnO1xuaW1wb3J0IE5hdmJhck9mZmNhbnZhcyBmcm9tICcuL05hdmJhck9mZmNhbnZhcyc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IE5hdmJhckNvbnRleHQgZnJvbSAnLi9OYXZiYXJDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBOYXZiYXJUZXh0ID0gY3JlYXRlV2l0aEJzUHJlZml4KCduYXZiYXItdGV4dCcsIHtcbiAgQ29tcG9uZW50OiAnc3Bhbidcbn0pO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBleHBhbmQ6IHRydWUsXG4gIHZhcmlhbnQ6ICdsaWdodCcsXG4gIGNvbGxhcHNlT25TZWxlY3Q6IGZhbHNlXG59O1xuY29uc3QgTmF2YmFyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIGJzUHJlZml4OiBpbml0aWFsQnNQcmVmaXgsXG4gICAgZXhwYW5kLFxuICAgIHZhcmlhbnQsXG4gICAgYmcsXG4gICAgZml4ZWQsXG4gICAgc3RpY2t5LFxuICAgIGNsYXNzTmFtZSxcbiAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgYXM6IENvbXBvbmVudCA9ICduYXYnLFxuICAgIGV4cGFuZGVkLFxuICAgIG9uVG9nZ2xlLFxuICAgIG9uU2VsZWN0LFxuICAgIGNvbGxhcHNlT25TZWxlY3QsXG4gICAgLi4uY29udHJvbGxlZFByb3BzXG4gIH0gPSB1c2VVbmNvbnRyb2xsZWQocHJvcHMsIHtcbiAgICBleHBhbmRlZDogJ29uVG9nZ2xlJ1xuICB9KTtcbiAgY29uc3QgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoaW5pdGlhbEJzUHJlZml4LCAnbmF2YmFyJyk7XG4gIGNvbnN0IGhhbmRsZUNvbGxhcHNlID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBvblNlbGVjdCA9PSBudWxsID8gdm9pZCAwIDogb25TZWxlY3QoLi4uYXJncyk7XG4gICAgaWYgKGNvbGxhcHNlT25TZWxlY3QgJiYgZXhwYW5kZWQpIHtcbiAgICAgIG9uVG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiBvblRvZ2dsZShmYWxzZSk7XG4gICAgfVxuICB9LCBbb25TZWxlY3QsIGNvbGxhcHNlT25TZWxlY3QsIGV4cGFuZGVkLCBvblRvZ2dsZV0pO1xuXG4gIC8vIHdpbGwgcmVzdWx0IGluIHNvbWUgZmFsc2UgcG9zaXRpdmVzIGJ1dCB0aGF0IHNlZW1zIGJldHRlclxuICAvLyB0aGFuIGZhbHNlIG5lZ2F0aXZlcy4gc3RyaWN0IGB1bmRlZmluZWRgIGNoZWNrIGFsbG93cyBleHBsaWNpdFxuICAvLyBcIm51bGxpbmdcIiBvZiB0aGUgcm9sZSBpZiB0aGUgdXNlciByZWFsbHkgZG9lc24ndCB3YW50IG9uZVxuICBpZiAoY29udHJvbGxlZFByb3BzLnJvbGUgPT09IHVuZGVmaW5lZCAmJiBDb21wb25lbnQgIT09ICduYXYnKSB7XG4gICAgY29udHJvbGxlZFByb3BzLnJvbGUgPSAnbmF2aWdhdGlvbic7XG4gIH1cbiAgbGV0IGV4cGFuZENsYXNzID0gYCR7YnNQcmVmaXh9LWV4cGFuZGA7XG4gIGlmICh0eXBlb2YgZXhwYW5kID09PSAnc3RyaW5nJykgZXhwYW5kQ2xhc3MgPSBgJHtleHBhbmRDbGFzc30tJHtleHBhbmR9YDtcbiAgY29uc3QgbmF2YmFyQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBvblRvZ2dsZTogKCkgPT4gb25Ub2dnbGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uVG9nZ2xlKCFleHBhbmRlZCksXG4gICAgYnNQcmVmaXgsXG4gICAgZXhwYW5kZWQ6ICEhZXhwYW5kZWQsXG4gICAgZXhwYW5kXG4gIH0pLCBbYnNQcmVmaXgsIGV4cGFuZGVkLCBleHBhbmQsIG9uVG9nZ2xlXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChOYXZiYXJDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IG5hdmJhckNvbnRleHQsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFNlbGVjdGFibGVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogaGFuZGxlQ29sbGFwc2UsXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICAuLi5jb250cm9sbGVkUHJvcHMsXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4LCBleHBhbmQgJiYgZXhwYW5kQ2xhc3MsIHZhcmlhbnQgJiYgYCR7YnNQcmVmaXh9LSR7dmFyaWFudH1gLCBiZyAmJiBgYmctJHtiZ31gLCBzdGlja3kgJiYgYHN0aWNreS0ke3N0aWNreX1gLCBmaXhlZCAmJiBgZml4ZWQtJHtmaXhlZH1gKVxuICAgICAgfSlcbiAgICB9KVxuICB9KTtcbn0pO1xuTmF2YmFyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbk5hdmJhci5kaXNwbGF5TmFtZSA9ICdOYXZiYXInO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXZiYXIsIHtcbiAgQnJhbmQ6IE5hdmJhckJyYW5kLFxuICBDb2xsYXBzZTogTmF2YmFyQ29sbGFwc2UsXG4gIE9mZmNhbnZhczogTmF2YmFyT2ZmY2FudmFzLFxuICBUZXh0OiBOYXZiYXJUZXh0LFxuICBUb2dnbGU6IE5hdmJhclRvZ2dsZVxufSk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZmx1aWQ6IGZhbHNlXG59O1xuY29uc3QgQ29udGFpbmVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGZsdWlkLFxuICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gIGFzOiBDb21wb25lbnQgPSAnZGl2JyxcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2NvbnRhaW5lcicpO1xuICBjb25zdCBzdWZmaXggPSB0eXBlb2YgZmx1aWQgPT09ICdzdHJpbmcnID8gYC0ke2ZsdWlkfWAgOiAnLWZsdWlkJztcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIHJlZjogcmVmLFxuICAgIC4uLnByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGZsdWlkID8gYCR7cHJlZml4fSR7c3VmZml4fWAgOiBwcmVmaXgpXG4gIH0pO1xufSk7XG5Db250YWluZXIuZGlzcGxheU5hbWUgPSAnQ29udGFpbmVyJztcbkNvbnRhaW5lci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7IiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAxOSBIZW5yaWsgdG9tIFfDtnJkZW4gPGgudG9td29lcmRlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjMgVGltbSBGaXRzY2hlbiA8dC5maXRzY2hlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjMgSW5kaVNjYWxlIEdtYkggPGluZm9AaW5kaXNjYWxlLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbi8vLy8vLy8gQVVUTyBDT01QTEVUSU9OXG5jb25zdCBDUUxfV09SRFMgPSBbXG4gIFwiRklORFwiLFxuICBcIkZJTEVcIixcbiAgXCJFTlRJVFlcIixcbiAgXCJTRUxFQ1RcIixcbiAgXCJDT1VOVFwiLFxuICBcIlJFQ09SRFwiLFxuICBcIlBST1BFUlRZXCIsXG4gIFwiUkVDT1JEVFlQRVwiLFxuICBcIlJFRkVSRU5DRVNcIixcbiAgXCJSRUZFUkVOQ0VEIEJZXCIsXG4gIFwiV0hJQ0hcIixcbiAgXCJXSVRIXCIsXG4gIFwiQ1JFQVRFRCBCWVwiLFxuICBcIkNSRUFURUQgQlkgTUVcIixcbiAgXCJDUkVBVEVEIEFUXCIsXG4gIFwiQ1JFQVRFRCBPTlwiLFxuICBcIkNSRUFURUQgSU5cIixcbiAgXCJDUkVBVEVEIEJFRk9SRVwiLFxuICBcIkNSRUFURUQgVU5USUxcIixcbiAgXCJDUkVBVEVEIEFGVEVSXCIsXG4gIFwiQ1JFQVRFRCBTSU5DRVwiLFxuICBcIlNPTUVPTkVcIixcbiAgXCJTVE9SRUQgQVRcIixcbiAgXCJIQVMgQSBQUk9QRVJUWVwiLFxuICBcIkhBUyBCRUVOXCIsXG4gIFwiQU5ZIFZFUlNJT04gT0ZcIixcbiAgXCJGUk9NXCIsXG4gIFwiSU5TRVJURUQgQVRcIixcbiAgXCJJTlNFUlRFRCBPTlwiLFxuICBcIklOU0VSVEVEIElOXCIsXG4gIFwiSU5TRVJURUQgQllcIixcbiAgXCJJTlNFUlRFRCBCWSBNRVwiLFxuICBcIklOU0VSVEVEIEJFRk9SRVwiLFxuICBcIklOU0VSVEVEIFVOVElMXCIsXG4gIFwiSU5TRVJURUQgQUZURVJcIixcbiAgXCJJTlNFUlRFRCBTSU5DRVwiLFxuICBcIlVQREFURUQgQVRcIixcbiAgXCJVUERBVEVEIE9OXCIsXG4gIFwiVVBEQVRFRCBJTlwiLFxuICBcIlVQREFURUQgQllcIixcbiAgXCJVUERBVEVEIEJZIE1FXCIsXG4gIFwiVVBEQVRFRCBCRUZPUkVcIixcbiAgXCJVUERBVEVEIFVOVElMXCIsXG4gIFwiVVBEQVRFRCBBRlRFUlwiLFxuICBcIlVQREFURUQgU0lOQ0VcIixcbiAgXCJTSU5DRVwiLFxuICBcIkJFRk9SRVwiLFxuICBcIk9OXCIsXG4gIFwiSU5cIixcbiAgXCJBRlRFUlwiLFxuICBcIlVOVElMXCIsXG4gIFwiQVRcIixcbiAgXCJCWVwiLFxuICBcIkJZIE1FXCIsXG5dO1xuXG5mdW5jdGlvbiBwcmVwYXJlVGVybXModGVybXMpIHtcbiAgcmV0dXJuIHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIHZhciB0ZXJtX2VzY2FwZWQgPSB0ZXJtO1xuICAgIGlmICh0ZXJtX2VzY2FwZWQuaW5kZXhPZihcIiBcIikgPiAtMSkge1xuICAgICAgaWYgKHRlcm0uaW5kZXhPZignXCInKSA+IC0xKSB7XG4gICAgICAgIHRlcm1fZXNjYXBlZCA9IGAnJHt0ZXJtX2VzY2FwZWR9J2A7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXJtX2VzY2FwZWQgPSBgXCIke3Rlcm1fZXNjYXBlZH1cImA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvcmlnaW5hbDogdGVybSxcbiAgICAgIG5vcm1hbGl6ZWQ6IHRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCksXG4gICAgICBlc2NhcGVkOiB0ZXJtX2VzY2FwZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVDcWxXb3Jkcyh3b3Jkcykge1xuICByZXR1cm4gd29yZHMubWFwKCh3b3JkKSA9PiAoe1xuICAgIG9yaWdpbmFsOiB3b3JkLFxuICAgIG5vcm1hbGl6ZWQ6IHdvcmQudHJpbSgpLnRvTG93ZXJDYXNlKCksXG4gICAgZXNjYXBlZDogd29yZCxcbiAgfSkpO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRpb24ge1xuICBjb25zdHJ1Y3Rvcih0ZXJtcywgY3FsX3dvcmRzKSB7XG4gICAgdGhpcy5fY3FsX3dvcmRzID0gcHJlcGFyZUNxbFdvcmRzKGNxbF93b3JkcyB8fCBDUUxfV09SRFMpO1xuICAgIHRoaXMuX3Rlcm1zID0gdGVybXMgfHwgW107XG4gICAgdGhpcy5fcmVzb2x2ZWRfdGVybXMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBnZXRTdWdnZXN0aW9ucyhpc0NxbCwgZnVsbFF1ZXJ5LCB3b3JkKSB7XG4gICAgaWYgKGlzQ3FsKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRDcWxTdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKTtcbiAgfVxuXG4gIGFzeW5jIF9kb19yZXNvbHZlX3Rlcm1zKHRlcm1zKSB7XG4gICAgdmFyIHJlc29sdmVkX3Rlcm1zO1xuICAgIGlmICh0eXBlb2YgdGVybXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmVzb2x2ZWRfdGVybXMgPSBhd2FpdCB0ZXJtcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlZF90ZXJtcyA9IGF3YWl0IHRlcm1zO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgcHJlcGFyZVRlcm1zKHJlc29sdmVkX3Rlcm1zKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRUZXJtcygpIHtcbiAgICBpZiAoIXRoaXMuX3Jlc29sdmVkX3Rlcm1zKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlZF90ZXJtcyA9IHRoaXMuX2RvX3Jlc29sdmVfdGVybXModGhpcy5fdGVybXMpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fcmVzb2x2ZWRfdGVybXM7XG4gIH1cblxuICBhc3luYyBnZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKSB7XG4gICAgdmFyIHRlcm1zID0gYXdhaXQgdGhpcy5fZ2V0VGVybXMoKTtcbiAgICBpZiAoZnVsbFF1ZXJ5ID09PSB3b3JkKSB7XG4gICAgICAvLyBzdGlsbCBvbmx5IG9uZSB3b3JkIC0+IGFsc28gYXBwZW5kIEZJTkQsIFNFTEVDVCBhbmQgQ09VTlRcbiAgICAgIHRlcm1zID0gcHJlcGFyZUNxbFdvcmRzKFtcIkZJTkRcIiwgXCJTRUxFQ1RcIiwgXCJDT1VOVFwiXSkuY29uY2F0KHRlcm1zKTtcbiAgICB9XG4gICAgY29uc3Qgd29yZE5vcm1hbGl6ZWQgPSB3b3JkLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0ZXJtcy5maWx0ZXIoKHRlcm0pID0+IHRlcm0ubm9ybWFsaXplZC5zdGFydHNXaXRoKHdvcmROb3JtYWxpemVkKSk7XG4gIH1cblxuICBhc3luYyBnZXRDcWxTdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpIHtcbiAgICBjb25zdCBjcWxfd29yZHMgPSB0aGlzLl9jcWxfd29yZHM7XG5cbiAgICBjb25zdCB3b3JkTm9ybWFsaXplZCA9IHdvcmQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGNxbF93b3Jkc1xuICAgICAgLmZpbHRlcigodGVybSkgPT4gdGVybS5ub3JtYWxpemVkLnN0YXJ0c1dpdGgod29yZE5vcm1hbGl6ZWQpKVxuICAgICAgLmNvbmNhdChhd2FpdCB0aGlzLmdldFNlYXJjaFRlcm1TdWdnZXN0aW9ucyhmdWxsUXVlcnksIHdvcmQpKTtcbiAgfVxufVxuXG4vLy8vLy8vIFFVRVJZIEdFTkVSQVRJT05cblxuZXhwb3J0IGNvbnN0IGlzQ3FsID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gIHF1ZXJ5ID0gcXVlcnkudG9VcHBlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiAoXG4gICAgcXVlcnkuc3RhcnRzV2l0aChcIkZJTkRcIikgfHxcbiAgICBxdWVyeS5zdGFydHNXaXRoKFwiQ09VTlRcIikgfHxcbiAgICBxdWVyeS5zdGFydHNXaXRoKFwiU0VMRUNUXCIpXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTZWxlY3QgPSBmdW5jdGlvbiAocXVlcnkpIHtcbiAgcmV0dXJuIHF1ZXJ5LnRvVXBwZXJDYXNlKCkudHJpbSgpLnN0YXJ0c1dpdGgoXCJTRUxFQ1RcIik7XG59O1xuXG5jb25zdCB0cmFuc2xhdG9yID0ge1xuICBcIj1cIjogXCI9XCIsXG4gIFwiPlwiOiBcIj5cIixcbiAgXCLiiaVcIjogXCI+PVwiLFxuICBcIjxcIjogXCI8XCIsXG4gIFwi4omkXCI6IFwiPD1cIixcbiAgXCLiiaBcIjogXCIhPVwiLFxuICBlcXVhbHM6IFwiPVwiLFxuICBpbjogXCJpblwiLFxuICBcIm5vdCBpblwiOiBcIm5vdCBpblwiLFxuICBcImFmdGVyIGRhdGVcIjogXCI+XCIsXG4gIFwic2luY2UgZGF0ZVwiOiBcIj49XCIsXG4gIFwidW50aWwgZGF0ZVwiOiBcIjw9XCIsXG4gIFwiYmVmb3JlIGRhdGVcIjogXCI8XCIsXG4gIFwib24gZGF0ZVwiOiBcIm9uXCIsXG4gIFwibm90IG9uIGRhdGVcIjogXCJub3Qgb25cIixcbn07XG5cbi8qKlxuICogQ29udmVydCBhIChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSB0dXBsZSB0byBhIHZhbGlkIENRTCBQT1YtZmlsdGVyXG4gKiBleHByZXNzaW9uIGluY2x1ZGluZyBxdW90YXRpb24gZm9yIHRoZSB2YWx1ZSBhbmQgcGFyZW50aGVzaXMgYXJvdW5kXG4gKiBldmVyeXRoaW5nIGZvciBzYWZlIGludGVycHJldGF0aW9uIGJ5IHRoZSBDUUwgcGFyc2VyLlxuICpcbiAqICAgRS5nLiAoXCJFdmVudC5sb25naXR1ZGVcIiwgXCI+XCIsIC00MCwgXCLCsFwiKSByZXN1bHRzIGluXG4gKiAgICAgICAgJyhFdmVudC5sb25naXR1ZGUgPiBcIi00MMKwXCIpJy5cbiAqXG4gKiBOb3RlOiBUaGUgY29ycmVjdCBxdW90YXRpb24gZm9yIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBwYXNzZWRcbiAqIGBwcm9wZXJ0eWAgYWxyZWFkeSBhbmQgaGVuY2UgYmUgZGVmaW5lZCBpbiB0aGUgUXVlcnlGb3JtfkZpbHRlckRlZmluaXRpb24uXG4gKlxuICogTm90ZTogVGhpcyBpcyBuZWVkZWQgYnkgbWFrZVF1ZXJ5IGFuZCBoYW5kbGVzIHRoZSBtb3N0IGJhc2ljIGNhc2VzLiBGb3JcbiAqIG9wZXJhdG9ycyBsaWtlIGBub3QgY29udGFpbnNgIG9yIGByYW5nZWAgdGhlcmUgYXJlIHNwZWNpYWwgdHJlYXRtZW50c1xuICogZWxzZXdoZXJlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW3VuaXRdXG4gKiBAcmV0dXJuIHtzdHJpbmd9IENRTCBQT1YtZmlsdGVyIGV4cHJlc3Npb24uXG4gKi9cbmNvbnN0IHRvQ1FMID0gKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+IHtcbiAgdmFsdWUgPSB2YWx1ZSB8fCBcIlwiO1xuICB1bml0ID0gdW5pdCB8fCBcIlwiO1xuICBjb25zdCBxdW90ZXMgPSB1bml0ICE9PSBcIlwiID8gXCJcIiA6IHZhbHVlLmluZGV4T2YoJ1wiJykgPT09IC0xID8gJ1wiJyA6IFwiJ1wiO1xuICBpZiAodHJhbnNsYXRvcltvcGVyYXRvcl0pIHtcbiAgICByZXR1cm4gYCgke3Byb3BlcnR5fSAke3RyYW5zbGF0b3Jbb3BlcmF0b3JdfSAke3F1b3Rlc30ke3ZhbHVlfSR7dW5pdH0ke3F1b3Rlc30pYDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCB0cmFuc2xhdGUgJHtwcm9wZXJ0eX0gJHtvcGVyYXRvcn0gZmlsdGVyYCwgdmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFsbG93ZWRfb3BlcmF0b3JzID0ge1xuICBib29sZWFuOiBbXCJpcyB0cnVlXCIsIFwiaXMgZmFsc2VcIl0sXG4gIHRleHQ6IFtcImVxdWFsc1wiLCBcIm5vdCBlcXVhbHNcIiwgXCJjb250YWluc1wiLCBcIm5vdCBjb250YWluc1wiXSxcbiAgaW50ZWdlcjogW1wiPVwiLCBcIuKJoFwiLCBcIuKJpVwiLCBcIuKJpFwiLCBcIjxcIiwgXCI+XCIsIFwicmFuZ2VcIl0sXG4gIGRvdWJsZTogW1wiPVwiLCBcIuKJoFwiLCBcIuKJpVwiLCBcIuKJpFwiLCBcIjxcIiwgXCI+XCIsIFwicmFuZ2VcIl0sXG4gIGRhdGV0aW1lOiBbXG4gICAgXCI9XCIsXG4gICAgXCLiiaBcIixcbiAgICBcIm9uIGRhdGVcIixcbiAgICBcImluXCIsXG4gICAgXCJub3Qgb24gZGF0ZVwiLFxuICAgIFwibm90IGluXCIsXG4gICAgXCJhZnRlciBkYXRlXCIsXG4gICAgXCJiZWZvcmUgZGF0ZVwiLFxuICAgIFwidW50aWwgZGF0ZVwiLFxuICAgIFwic2luY2UgZGF0ZVwiLFxuICBdLFxufTtcblxuLyoqXG4gKiBEaWN0aW9uYXJ5IG9mIGZ1bmN0aW9uczpcbiAqXG4gKiAoZGF0YXR5cGUsb3BlcmF0b3IpIC0+IGZ1bmN0aW9uKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpXG4gKi9cbmNvbnN0IG1ha2VfcXVlcnlfZmlsdGVyID0ge1xuICBib29sZWFuOiB7XG4gICAgXCJpcyB0cnVlXCI6IChwcm9wZXJ0eSkgPT4gYCgke3Byb3BlcnR5fSA9IFRSVUUpYCxcbiAgICBcImlzIGZhbHNlXCI6IChwcm9wZXJ0eSkgPT4gYCgke3Byb3BlcnR5fSA9IEZBTFNFKWAsXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBjb250YWluczogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUpID0+IGAoJHtwcm9wZXJ0eX0gTElLRSBcIioke3ZhbHVlfSpcIilgLFxuICAgIFwibm90IGVxdWFsc1wiOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSkgPT5cbiAgICAgIGAoTk9UICR7cHJvcGVydHl9ID0gXCIke3ZhbHVlfVwiKWAsXG4gICAgXCJub3QgY29udGFpbnNcIjogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUpID0+XG4gICAgICBgKE5PVCAke3Byb3BlcnR5fSBMSUtFIFwiKiR7dmFsdWV9KlwiKWAsXG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICByYW5nZTogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+XG4gICAgICBgKCR7cHJvcGVydHl9ID4gJHt2YWx1ZVswXX0ke3VuaXR9KSBBTkQgKCR7cHJvcGVydHl9IDwgJHt2YWx1ZVsxXX0ke3VuaXR9KWAsXG4gIH0sXG4gIGRvdWJsZToge1xuICAgIHJhbmdlOiAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgPT5cbiAgICAgIGAoJHtwcm9wZXJ0eX0gPiAke3ZhbHVlWzBdfSR7dW5pdH0pIEFORCAoJHtwcm9wZXJ0eX0gPCAke3ZhbHVlWzFdfSR7dW5pdH0pYCxcbiAgfSxcbiAgX2RlZmF1bHQ6IHsgX2RlZmF1bHQ6IHRvQ1FMIH0sXG59O1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgdmFsaWQgQ1FMIFBPVi1maWx0ZXIgZXhwcmVzc2lvbnMgYXBwcm9wcmlhdGUgZm9yIGEgdHVwbGVcbiAqIChkYXRhdHlwZSwgcHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGF0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvclxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFt1bml0XVxuICogQHJldHVybiB7c3RyaW5nfSBDUUwgUE9WLWZpbHRlciBleHByZXNzaW9uLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VRdWVyeUZpbHRlciA9IChkYXRhdHlwZSwgcHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgPT4ge1xuICBpZiAoIWRhdGF0eXBlIHx8ICFvcGVyYXRvcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgdW5pdCA9IHVuaXQgfHwgXCJcIjtcblxuICBpZiAobWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdKSB7XG4gICAgaWYgKFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW29wZXJhdG9yXSB8fFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW29wZXJhdG9yXSA9PT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtvcGVyYXRvcl0oXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHVuaXQsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSB8fFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0gPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXShcbiAgICAgICAgcHJvcGVydHksXG4gICAgICAgIG9wZXJhdG9yLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdW5pdCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1ha2VfcXVlcnlfZmlsdGVyW1wiX2RlZmF1bHRcIl1bb3BlcmF0b3JdKSB7XG4gICAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW1wiX2RlZmF1bHRcIl1bb3BlcmF0b3JdKFxuICAgICAgcHJvcGVydHksXG4gICAgICBvcGVyYXRvcixcbiAgICAgIHZhbHVlLFxuICAgICAgdW5pdCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VfcXVlcnlfZmlsdGVyW1wiX2RlZmF1bHRcIl1bXCJfZGVmYXVsdFwiXShcbiAgICBwcm9wZXJ0eSxcbiAgICBvcGVyYXRvcixcbiAgICB2YWx1ZSxcbiAgICB1bml0LFxuICApO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVjb3JkX3R5cGVcbiAqIEByZXR1cm5zIHtRdWVyeUZvcm1+bWFrZVF1ZXJ5Q2FsbGJhY2t9XG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlUXVlcnlUZW1wbGF0ZSA9XG4gIChyZWNvcmRfdHlwZSkgPT4gKHNlYXJjaF90ZXJtcywgYWN0aXZlRmlsdGVycykgPT4ge1xuICAgIHZhciBxdWVyeSA9IFwiRklORCBSRUNPUkRcIjtcbiAgICBpZiAocmVjb3JkX3R5cGUpIHtcbiAgICAgIHF1ZXJ5ICs9IGAgXCIke3JlY29yZF90eXBlfVwiYDtcbiAgICB9XG4gICAgdmFyIGZpbHRlcl9jb25uZWN0b3IgPSBcIiBXSVRIIFwiO1xuICAgIGlmIChzZWFyY2hfdGVybXMgJiYgc2VhcmNoX3Rlcm1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNwbGl0dGVkX3NlYXJjaF90ZXJtcyA9IHNwbGl0U2VhcmNoVGVybXMoc2VhcmNoX3Rlcm1zKS5tYXAoXG4gICAgICAgICh3b3JkKSA9PiBgQSBQUk9QRVJUWSBMSUtFICcqJHt3b3JkLnJlcGxhY2VBbGwoXCInXCIsIGBcXFxcJ2ApfSonYCxcbiAgICAgICk7XG4gICAgICBpZiAoc3BsaXR0ZWRfc2VhcmNoX3Rlcm1zLmxlbmd0aCkge1xuICAgICAgICBmaWx0ZXJfY29ubmVjdG9yID0gXCIgQU5EIFwiO1xuICAgICAgICBxdWVyeSArPSBcIiBXSVRIIFwiICsgc3BsaXR0ZWRfc2VhcmNoX3Rlcm1zLmpvaW4oZmlsdGVyX2Nvbm5lY3Rvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGFjdGl2ZUZpbHRlcnMubWFwKChmaWx0ZXIpID0+XG4gICAgICBtYWtlUXVlcnlGaWx0ZXIoXG4gICAgICAgIGZpbHRlci5kYXRhdHlwZSxcbiAgICAgICAgZmlsdGVyLnByb3BlcnR5LFxuICAgICAgICBmaWx0ZXIub3BlcmF0b3IsXG4gICAgICAgIGZpbHRlci52YWx1ZSxcbiAgICAgICAgZmlsdGVyLnVuaXQsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAoZmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICBxdWVyeSArPSBmaWx0ZXJfY29ubmVjdG9yICsgZmlsdGVycy5qb2luKFwiIEFORCBcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9O1xuXG5jb25zdCBfc3BsaXRTZWFyY2hUZXJtc1BhdHRlcm4gPVxuICAvXCIoPzxkcT5bXlwiXSopXCIgfCcoPzxzcT5bXiddKiknIHwoPzxucT5bXiBdKykvZztcblxuLyoqXG4gKiBTcGxpdCBhIHF1ZXJ5IHN0cmluZyBpbnRvIHNpbmdsZSB0ZXJtcy5cbiAqXG4gKiBUZXJtcyBhcmUgc2VwYXJhdGVkIGJ5IHdoaXRlIHNwYWNlcy4gVGVybXMgd2hpY2ggY29udGFpbiB3aGl0ZSBzcGFjZXNcbiAqIHdoaWNoIGFyZSB0byBiZSBwcmVzZXJ2ZWQgbXVzdCBiZSBlbmNsb3NlZCBpbiBcIiBvciAnIHF1b3Rlcy4gVGhlXG4gKiBlbmNsb3NpbmcgcXVvdGF0aW9uIG1hcmtzIGFyZSBiZWluZyBzdHJpcHBlZC4gQ3VycmVudGx5IG5vIHN1cHBvcnQgZm9yXG4gKiBlc2NhcGUgc2VxdWVuY2VzIGZvciBxdW90YXRpb24gbWFya3MuXG4gKlxuICogQGZ1bmN0aW9uIHNwbGl0U2VhcmNoVGVybXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeSAtIGNvbXBsZXRlIHF1ZXJ5IHN0cmluZy5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfSBhcnJheSBvZiB0aGUgc2VhcmNoIHRlcm1zLlxuICovXG5jb25zdCBzcGxpdFNlYXJjaFRlcm1zID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gIC8vIGFkZCBlbXB0eSBzcGFjZSBhdCB0aGUgZW5kLCBzbyBldmVyeSBtYXRjaGluZyBncm91cCBlbmRzIHdpdGggaXQgLT4gZWFzaWVyIHJlZ2V4LiBBbHNvLCB1bmRlZmluZWQgaXMgZmlsdGVyZWQgb3V0XG4gIHJldHVybiBBcnJheS5mcm9tKFxuICAgIChxdWVyeSArIFwiIFwiKS5tYXRjaEFsbChfc3BsaXRTZWFyY2hUZXJtc1BhdHRlcm4pLFxuICAgIChtKSA9PiBtWzFdIHx8IG1bMl0gfHwgbVszXSxcbiAgKS5maWx0ZXIoKHdvcmQpID0+IHdvcmQpO1xufTtcblxuLy8vLy8vIFRBQlNcblxuLyoqXG4gKiBGaWx0ZXJEZWZpbml0aW9ucyBkZWZpbmUgd2hpY2ggZmlsdGVycyBjYW4gYmUgc2VsZWN0ZWQgYnkgdGhlIHVzZXJzLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFF1ZXJ5Rm9ybX5GaWx0ZXJEZWZpbml0aW9uXG4gKiBAcHVibGljXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXRhdHlwZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttaW5dXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21heF1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbc3RlcF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW50fSBbdW5pdF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaW5wdXRUeXBlXVxuICovXG5cbi8qKlxuICogUXVlcnlGaWx0ZXJzIHNwZWNpZnkgdGhlIGN1cnJlbnQgZmlsdGVycyBhIHVzZXIgaGFzIHNwZWNpZmllZCB1c2luZyB0aGVcbiAqIFF1ZXJ5Rm9ybS5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWVyeUZvcm1+UXVlcnlGaWx0ZXJcbiAqIEBwdWJsaWNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9wZXJ0eVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGRhdGF0eXBlXG4gKiBAcHJvcGVydHkge3N0aXJuZ30gb3BlcmF0b3JcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB1bml0XG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHZhbHVlXG4gKi9cblxuLyoqXG4gKiBXaGVuIHRoZSBxdWVyeSBmb3JtIGlzIGJlaW5nIHN1Ym1pdHRlZCwgdGhpcyBjYWxsYmFjayBnZW5lcmF0ZXMgdGhlIHF1ZXJ5XG4gKiBmcm9tIHRoZSBzZWFyY2ggdGVybXMgYW5kIGFjdGl2ZSBGaWx0ZXJzLlxuICpcbiAqIEBjYWxsYmFjayBRdWVyeUZvcm1+bWFrZVF1ZXJ5Q2FsbGJhY2tcbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtc1xuICogQHBhcmFtIHtRdWVyeUZvcm1+UXVlcnlGaWx0ZXJbXX0gYWN0aXZlRmlsdGVyc1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGdlbmVyYXRlZCBDUUwgcXVlcnkuXG4gKi9cblxuLyoqXG4gKiBDcmVhdGUgYSB0YWIgb2JqZWN0LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHB1YmxpY1xuICogQHBhcmFtIHtzdHJpbmd9IGlkXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVjb3JkVHlwZVxuICogQHBhcmFtIHtzdHJpbmd9IFtsYWJlbF1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0ge1F1ZXJ5Rm9ybX5tYWtlUXVlcnlDYWxsYmFja30gW21ha2VRdWVyeUNhbGxiYWNrPW1ha2VRdWVyeVRlbXBsYXRlKGlkKV1cbiAqIEBwYXJhbSB7UXVlcnlGb3JtfkZpbHRlckRlZmluaXRpb25bXX0gW2ZpbHRlckRlZmluaXRpb25zPVtdXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFiKFxuICBpZCxcbiAgcmVjb3JkVHlwZSxcbiAgbGFiZWwsXG4gIGRlc2NyaXB0aW9uLFxuICBtYWtlUXVlcnlDYWxsYmFjayxcbiAgZmlsdGVyRGVmaW5pdGlvbnMsXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBpZDogaWQsXG4gICAgcmVjb3JkVHlwZTogcmVjb3JkVHlwZSxcbiAgICBsYWJlbDogbGFiZWwgfHwgcmVjb3JkVHlwZSB8fCBpZCxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIGRlc2NyaXB0aW9uIHx8IGBTaG93IG9ubHkgcmVzdWx0cyBvZiB0eXBlICR7bGFiZWwgfHwgcmVjb3JkVHlwZSB8fCBpZH1gLFxuICAgIG1ha2VRdWVyeTogbWFrZVF1ZXJ5Q2FsbGJhY2sgfHwgbWFrZVF1ZXJ5VGVtcGxhdGUocmVjb3JkVHlwZSksXG4gICAgZmlsdGVyRGVmaW5pdGlvbnM6IGZpbHRlckRlZmluaXRpb25zIHx8IFtdLFxuICB9O1xufVxuXG4vLy8vLy8gREVCVUdHSU5HIEFORCBURVNUSU5HXG5cbi8qKlxuICogQ3JlYXRlIHNvbWUgcXVlcnkgcGFuZWwgdGFicyBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLlxuICovXG5leHBvcnQgY29uc3QgZ2V0X3Rlc3RfdGFicyA9ICgpID0+IHtcbiAgY29uc3QgbWFrZUZpbHRlckRlZmluaXRpb25zID0gKGlkKSA9PiBbXG4gICAgeyBwcm9wZXJ0eTogaWQgKyBcIi10ZXh0LXByb3BlcnR5XCIsIGRhdGF0eXBlOiBcInRleHRcIiB9LFxuICAgIHsgcHJvcGVydHk6IGlkICsgXCItZGF0ZXRpbWUtcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwiZGF0ZXRpbWVcIiB9LFxuICAgIHsgcHJvcGVydHk6IGlkICsgXCItaW50ZWdlci1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJpbnRlZ2VyXCIgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogaWQgKyBcIi1kb3VibGUtcHJvcGVydHlcIixcbiAgICAgIGRhdGF0eXBlOiBcImRvdWJsZVwiLFxuICAgICAgbWluOiBcIi01MFwiLFxuICAgICAgbWF4OiBcIjUwXCIsXG4gICAgICB1bml0OiBcIm1cIixcbiAgICB9LFxuICAgIHsgcHJvcGVydHk6IGlkICsgXCItYm9vbGVhbi1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJib29sZWFuXCIgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogYFwiJHtpZH0tcmVmZXJlbmNlLXByb3BlcnR5XCIuXCJzdWItcHJvcGVydHlcImAsXG4gICAgICBsYWJlbDogYHN1Yi1wcm9wZXJ0eSBvZiAke2lkfS1yZWZlcmVuY2UtcHJvcGVydHlgLFxuICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgIH0sXG4gIF07XG4gIHJldHVybiBbXG4gICAgY3JlYXRlVGFiKFxuICAgICAgXCJhbGxcIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIFwiQWxsXCIsXG4gICAgICBcIlNob3cgYWxsIG1hdGNoaW5nIHJlc3VsdHNcIixcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiXCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwiYWxsXCIpLFxuICAgICksXG4gICAgY3JlYXRlVGFiKFxuICAgICAgXCJkYXRhc2V0XCIsXG4gICAgICBcIkRhdGFzZXRcIixcbiAgICAgIFwiRGF0YXNldFwiLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbWFrZVF1ZXJ5VGVtcGxhdGUoXCJEYXRhc2V0XCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwiZGF0YXNldFwiKSxcbiAgICApLFxuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwiZXZlbnRcIixcbiAgICAgIFwiRXZlbnRcIixcbiAgICAgIFwiRXZlbnRcIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiRXZlbnRcIiksXG4gICAgICBtYWtlRmlsdGVyRGVmaW5pdGlvbnMoXCJldmVudFwiKSxcbiAgICApLFxuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwicGVyc29uXCIsXG4gICAgICBcIlBlcnNvblwiLFxuICAgICAgXCJQZXJzb25cIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiUGVyc29uXCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwicGVyc29uXCIpLFxuICAgICksXG4gIF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0X3Rlc3Rfc3VnZ2VzdGlvbnMgPSBhc3luYyAoaXNDcWwsIGZ1bGwsIHByZWZpeCkgPT4ge1xuICBjb25zdCBhYyA9IG5ldyBBdXRvQ29tcGxldGlvbihcbiAgICAoKSA9PiBbXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMVwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjJcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24zXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uNFwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjVcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb242XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uN1wiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjhcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb245XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTBcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xMVwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjEyXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTNcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xNFwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjE1XCIsXG4gICAgXSxcbiAgICBDUUxfV09SRFMsXG4gICk7XG4gIHJldHVybiBhYy5nZXRTdWdnZXN0aW9ucyhpc0NxbCwgZnVsbCwgcHJlZml4KTtcbn07XG4iLCIvKlxuICogVGhpcyBmaWxlIGlzIGEgcGFydCBvZiB0aGUgQ2Fvc0RCIFByb2plY3QuXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgVGltbSBGaXRzY2hlbiA8dC5maXRzY2hlbkBpbmRpc2NhbGUuY29tPlxuICogQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMgSW5kaVNjYWxlIEdtYkggPGluZm9AaW5kaXNjYWxlLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3Byb3AtdHlwZXMgKi9cbmltcG9ydCBSZWFjdCwge1xuICB1c2VNZW1vLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlUmVkdWNlcixcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VDb250ZXh0LFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcbmltcG9ydCBnZXRDYXJldENvb3JkaW5hdGVzIGZyb20gXCJ0ZXh0YXJlYS1jYXJldFwiO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRpb24gfSBmcm9tIFwiLi9RdWVyeUZvcm0uaGVscGVyc1wiO1xuaW1wb3J0IHtcbiAgYWxsb3dlZF9vcGVyYXRvcnMsXG4gIGlzU2VsZWN0IGFzIGZJc1NlbGVjdCxcbiAgaXNDcWwgYXMgZklzQ3FsLFxuICBnZXRfdGVzdF9zdWdnZXN0aW9ucyxcbiAgZ2V0X3Rlc3RfdGFicyxcbn0gZnJvbSBcIi4vUXVlcnlGb3JtLmhlbHBlcnNcIjtcblxuY29uc3QgUXVlcnlGb3JtQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuXG5jb25zdCBSYW5nZUZpbHRlcklucHV0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgb25DaGFuZ2UsIHZhbHVlIH0gPSBwcm9wcztcbiAgY29uc3Qgb25DaGFuZ2VNaW4gPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgY29uc3QgbmV3RSA9IHsgdGFyZ2V0OiB7IHZhbHVlOiBbZS50YXJnZXQudmFsdWUsIHZhbHVlWzFdXSB9IH07XG4gICAgICBvbkNoYW5nZShuZXdFKTtcbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgdmFsdWVdLFxuICApO1xuICBjb25zdCBvbkNoYW5nZU1heCA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBjb25zdCBuZXdFID0geyB0YXJnZXQ6IHsgdmFsdWU6IFt2YWx1ZVswXSwgZS50YXJnZXQudmFsdWVdIH0gfTtcbiAgICAgIG9uQ2hhbmdlKG5ld0UpO1xuICAgIH0sXG4gICAgW29uQ2hhbmdlLCB2YWx1ZV0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZVswXX1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlTWlufVxuICAgICAgICBtYXg9e3Byb3BzLnZhbHVlWzFdfVxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm14LTFcIj50bzwvc3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWVbMV19XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZU1heH1cbiAgICAgICAgbWluPXtwcm9wcy52YWx1ZVswXX1cbiAgICAgIC8+XG4gICAgICB7cHJvcHMudW5pdEVsZW1lbnR9XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBGaWx0ZXJJbnB1dCA9ICh7XG4gIG1pbixcbiAgbWF4LFxuICBzdGVwLFxuICB2YWx1ZSxcbiAgc2V0VmFsdWUsXG4gIGRhdGF0eXBlLFxuICBvcGVyYXRvcixcbiAgdW5pdCxcbiAgaW5wdXR0eXBlLFxufSkgPT4ge1xuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiBzZXRWYWx1ZShlLnRhcmdldC52YWx1ZSksIFtzZXRWYWx1ZV0pO1xuICBpZiAoIWRhdGF0eXBlIHx8ICFvcGVyYXRvcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY2xhc3NOYW1lOiBcImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIixcbiAgICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1pbjogbWluLFxuICAgIG1heDogbWF4LFxuICB9O1xuICBpZiAoaW5wdXR0eXBlKSB7XG4gICAgZGVmYXVsdFByb3BzLnR5cGUgPSBpbnB1dHR5cGU7XG4gIH1cbiAgaWYgKHN0ZXApIHtcbiAgICBkZWZhdWx0UHJvcHMuc3RlcCA9IHN0ZXA7XG4gIH1cblxuICBjb25zdCB1bml0RWxlbWVudCA9IHVuaXQgJiYgKFxuICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1zLTFcIiB0aXRsZT1cIlRoZSB1bml0XCI+XG4gICAgICB7dW5pdH1cbiAgICA8L3NwYW4+XG4gICk7XG5cbiAgY29uc3QgaW5wdXRFbGVtZW50ID0ge1xuICAgIGJvb2xlYW46IHsgX2RlZmF1bHQ6IG51bGwgfSxcbiAgICBpbnRlZ2VyOiB7XG4gICAgICBfZGVmYXVsdDogKFxuICAgICAgICA8PlxuICAgICAgICAgIDxpbnB1dCB7Li4uZGVmYXVsdFByb3BzfSB0eXBlPVwibnVtYmVyXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICAgIHt1bml0RWxlbWVudH1cbiAgICAgICAgPC8+XG4gICAgICApLFxuICAgICAgcmFuZ2U6IChcbiAgICAgICAgPFJhbmdlRmlsdGVySW5wdXRcbiAgICAgICAgICB1bml0RWxlbWVudD17dW5pdEVsZW1lbnR9XG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgZG91YmxlOiB7XG4gICAgICBfZGVmYXVsdDogKFxuICAgICAgICA8PlxuICAgICAgICAgIDxpbnB1dCBzdGVwPVwiMC4wMDFcIiB7Li4uZGVmYXVsdFByb3BzfSB0eXBlPVwibnVtYmVyXCIgLz5cbiAgICAgICAgICB7dW5pdEVsZW1lbnR9XG4gICAgICAgIDwvPlxuICAgICAgKSxcbiAgICAgIHJhbmdlOiAoXG4gICAgICAgIDxSYW5nZUZpbHRlcklucHV0XG4gICAgICAgICAgdW5pdEVsZW1lbnQ9e3VuaXRFbGVtZW50fVxuICAgICAgICAgIHN0ZXA9XCIwLjAwMVwiXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICksXG4gICAgfSxcbiAgICBfZGVmYXVsdDogeyBfZGVmYXVsdDogPGlucHV0IHsuLi5kZWZhdWx0UHJvcHN9IC8+IH0sXG4gIH07XG5cbiAgaWYgKGlucHV0RWxlbWVudFtkYXRhdHlwZV0pIHtcbiAgICBpZiAoXG4gICAgICBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW29wZXJhdG9yXSB8fFxuICAgICAgaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtvcGVyYXRvcl0gPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW29wZXJhdG9yXTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdIHx8XG4gICAgICBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0gPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiBpbnB1dEVsZW1lbnRbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl07XG4gICAgfVxuICB9XG5cbiAgaWYgKGlucHV0RWxlbWVudFtcIl9kZWZhdWx0XCJdW29wZXJhdG9yXSkge1xuICAgIHJldHVybiBpbnB1dEVsZW1lbnRbXCJfZGVmYXVsdFwiXVtvcGVyYXRvcl07XG4gIH1cblxuICByZXR1cm4gaW5wdXRFbGVtZW50W1wiX2RlZmF1bHRcIl1bXCJfZGVmYXVsdFwiXTtcbn07XG5cbmZ1bmN0aW9uIENxbEhpbnQoKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktY3FsLWhpbnRcIlxuICAgICAgdGl0bGU9XCJZb3UgYXJlIHVzaW5nIHRoZSBleHBlcnQgc2VhcmNoIG1vZGUuIEVudGVyIGEgdmFsaWQgQ1FMIFF1ZXJ5LlwiXG4gICAgPlxuICAgICAgQ1FMXG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVNpbmdsZVRhYih7IHRhYiwgc2V0QWN0aXZlVGFiLCBpc0FjdGl2ZVRhYiB9KSB7XG4gIGNvbnN0IGFjdGl2YXRlVGFiID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghaXNBY3RpdmVUYWIpIHtcbiAgICAgIHNldEFjdGl2ZVRhYih0YWIpO1xuICAgIH1cbiAgfSwgW3RhYiwgc2V0QWN0aXZlVGFiLCBpc0FjdGl2ZVRhYl0pO1xuXG4gIGNvbnN0IGNsYXNzTmFtZSA9IFwiY2Fvc2RiLWYtcXVlcnktdGFiXCIgKyAoaXNBY3RpdmVUYWIgPyBcIiBhY3RpdmVcIiA6IFwiXCIpO1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9e3RhYi5kZXNjcmlwdGlvbn1cbiAgICAgIHRhYkluZGV4PXtpc0FjdGl2ZVRhYiA/IFwiLTFcIiA6IFwiMFwifVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBvbkNsaWNrPXtpc0FjdGl2ZVRhYiA/IHVuZGVmaW5lZCA6IGFjdGl2YXRlVGFifVxuICAgID5cbiAgICAgIHt0YWIubGFiZWx9XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEFkZFRhYkZpbHRlck9wZXJhdG9yKHtcbiAgZmlsdGVyLFxuICBmaWx0ZXJJZHgsXG4gIHVwZGF0ZUZpbHRlcixcbiAgcmVzdG9yZU9wZXJhdG9yLFxuICByZXN0b3JlVmFsdWUsXG59KSB7XG4gIGNvbnN0IFtvcGVyYXRvciwgc2V0T3BlcmF0b3JdID0gdXNlU3RhdGUoXG4gICAgZmlsdGVyLm9wZXJhdG9yIHx8IGFsbG93ZWRfb3BlcmF0b3JzW2ZpbHRlci5kYXRhdHlwZV1bMF0sXG4gICk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoZmlsdGVyLnZhbHVlIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IChcbiAgICA8RmlsdGVySW5wdXRcbiAgICAgIGRhdGF0eXBlPXtmaWx0ZXIuZGF0YXR5cGV9XG4gICAgICBvcGVyYXRvcj17b3BlcmF0b3J9XG4gICAgICBzZXRWYWx1ZT17c2V0VmFsdWV9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICB1bml0PXtmaWx0ZXIudW5pdH1cbiAgICAgIG1pbj17ZmlsdGVyLm1pbn1cbiAgICAgIG1heD17ZmlsdGVyLm1heH1cbiAgICAgIHN0ZXA9e2ZpbHRlci5zdGVwfVxuICAgICAgaW5wdXR0eXBlPXtmaWx0ZXIuaW5wdXR0eXBlfVxuICAgIC8+XG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzdG9yZU9wZXJhdG9yICYmIG9wZXJhdG9yICE9PSByZXN0b3JlT3BlcmF0b3IpIHtcbiAgICAgIHNldE9wZXJhdG9yKHJlc3RvcmVPcGVyYXRvcik7XG4gICAgfVxuICB9LCBbcmVzdG9yZU9wZXJhdG9yLCBvcGVyYXRvcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc3RvcmVWYWx1ZSAmJiB2YWx1ZSAhPT0gcmVzdG9yZVZhbHVlKSB7XG4gICAgICBzZXRWYWx1ZShyZXN0b3JlVmFsdWUpO1xuICAgIH1cbiAgfSwgW3Jlc3RvcmVWYWx1ZSwgdmFsdWVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVyYXRvciAhPT0gZmlsdGVyLm9wZXJhdG9yKSB7XG4gICAgICB1cGRhdGVGaWx0ZXIoZmlsdGVySWR4LCB7XG4gICAgICAgIHJlc3RvcmVPcGVyYXRvcjogdW5kZWZpbmVkLFxuICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtvcGVyYXRvciwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXJJZHgsIHVwZGF0ZUZpbHRlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHZhbHVlICE9PSBmaWx0ZXIudmFsdWUpIHtcbiAgICAgIHVwZGF0ZUZpbHRlcihmaWx0ZXJJZHgsIHtcbiAgICAgICAgcmVzdG9yZVZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBmaWx0ZXIudmFsdWUsIGZpbHRlcklkeCwgdXBkYXRlRmlsdGVyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgICAgICB2YWx1ZT17b3BlcmF0b3J9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRPcGVyYXRvcihlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgID5cbiAgICAgICAgICB7YWxsb3dlZF9vcGVyYXRvcnNbZmlsdGVyLmRhdGF0eXBlXS5tYXAoKG9wLCBpZHgpID0+IChcbiAgICAgICAgICAgIDxvcHRpb24ga2V5PXtpZHh9PntvcH08L29wdGlvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4XCI+e2lucHV0RWxlbWVudH08L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRmlsdGVyU2VsZWN0KHsgc2VsZWN0ZWQsIGZpbHRlckRlZmluaXRpb25zLCBvbkNoYW5nZSwgdGl0bGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxzZWxlY3RcbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIGNsYXNzTmFtZT1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcbiAgICAgIHZhbHVlPXtzZWxlY3RlZH1cbiAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICA+XG4gICAgICB7ZmlsdGVyRGVmaW5pdGlvbnMubWFwKChmaWwsIGlkeCkgPT4gKFxuICAgICAgICA8b3B0aW9uIHZhbHVlPXtmaWwucHJvcGVydHl9IHN0eWxlPXtmaWwuc3R5bGV9IGtleT17aWR4fT5cbiAgICAgICAgICB7ZmlsLmxhYmVsIHx8IGZpbC5wcm9wZXJ0eX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICApKX1cbiAgICA8L3NlbGVjdD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQWRkRmlsdGVyKHsgZmlsdGVyRGVmaW5pdGlvbnMsIGFkZEZpbHRlciB9KSB7XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGFkZEZpbHRlcihlLnRhcmdldC52YWx1ZSk7XG4gICAgfSxcbiAgICBbYWRkRmlsdGVyXSxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPEZpbHRlclNlbGVjdFxuICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnMuY29uY2F0KHtcbiAgICAgICAgICBwcm9wZXJ0eTogXCJfX2FkZF9maWx0ZXJfX1wiLFxuICAgICAgICAgIGxhYmVsOiBcIkFkZCBGaWx0ZXJcIixcbiAgICAgICAgICBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9LFxuICAgICAgICB9KX1cbiAgICAgICAgc2VsZWN0ZWQ9XCJfX2FkZF9maWx0ZXJfX1wiXG4gICAgICAgIHRpdGxlPVwiQWRkIEZpbHRlclwiXG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEZpbHRlcih7XG4gIGZpbHRlckRlZmluaXRpb25zLFxuICBmaWx0ZXJJZHgsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHVwZGF0ZUZpbHRlcixcbiAgc2V0UHJvcGVydHksXG4gIHJlbW92ZUZpbHRlcixcbn0pIHtcbiAgY29uc3QgYWN0aXZlRmlsdGVyID0gYWN0aXZlRmlsdGVycyAmJiBhY3RpdmVGaWx0ZXJzW2ZpbHRlcklkeF07XG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIHNldFByb3BlcnR5KGZpbHRlcklkeCwgZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW3NldFByb3BlcnR5LCBmaWx0ZXJJZHhdLFxuICApO1xuICBjb25zdCByZW1vdmVUaGlzID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gcmVtb3ZlRmlsdGVyKGZpbHRlcklkeCksXG4gICAgW3JlbW92ZUZpbHRlciwgZmlsdGVySWR4XSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LWZpbHRlci1wcm9wZXJ0eS1zZWxlY3RvclwiPlxuICAgICAgICA8RmlsdGVyU2VsZWN0XG4gICAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zfVxuICAgICAgICAgIHNlbGVjdGVkPXthY3RpdmVGaWx0ZXIucHJvcGVydHl9XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8QWRkVGFiRmlsdGVyT3BlcmF0b3JcbiAgICAgICAgcmVzdG9yZVZhbHVlPXthY3RpdmVGaWx0ZXIucmVzdG9yZVZhbHVlfVxuICAgICAgICByZXN0b3JlT3BlcmF0b3I9e2FjdGl2ZUZpbHRlci5yZXN0b3JlT3BlcmF0b3J9XG4gICAgICAgIHVwZGF0ZUZpbHRlcj17dXBkYXRlRmlsdGVyfVxuICAgICAgICBmaWx0ZXJJZHg9e2ZpbHRlcklkeH1cbiAgICAgICAgZmlsdGVyPXthY3RpdmVGaWx0ZXJ9XG4gICAgICAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWVuZCBmbGV4LWdyb3ctMVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgIG9uQ2xpY2s9e3JlbW92ZVRoaXN9XG4gICAgICAgID5cbiAgICAgICAgICBSZW1vdmUgRmlsdGVyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVRhYkZpbHRlcnNJbm5lcih7XG4gIGZpbHRlckRlZmluaXRpb25zLFxuICBhY3RpdmVGaWx0ZXJzLFxuICBzZXRBY3RpdmVGaWx0ZXJzLFxufSkge1xuICBjb25zdCByZW1vdmVGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVySWR4KSA9PiB7XG4gICAgICBzZXRBY3RpdmVGaWx0ZXJzKGFjdGl2ZUZpbHRlcnMuZmlsdGVyKChmaWwsIGlkeCkgPT4gaWR4ICE9PSBmaWx0ZXJJZHgpKTtcbiAgICB9LFxuICAgIFthY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVGaWx0ZXJzXSxcbiAgKTtcblxuICBjb25zdCB1cGRhdGVGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsdGVySWR4LCB1cGRhdGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUZpbHRlcnMgPSBbXS5jb25jYXQoYWN0aXZlRmlsdGVycyk7XG5cbiAgICAgIG5ld0FjdGl2ZUZpbHRlcnNbZmlsdGVySWR4XSA9IHtcbiAgICAgICAgLi4ubmV3QWN0aXZlRmlsdGVyc1tmaWx0ZXJJZHhdLFxuICAgICAgICAuLi51cGRhdGUsXG4gICAgICB9O1xuXG4gICAgICBzZXRBY3RpdmVGaWx0ZXJzKG5ld0FjdGl2ZUZpbHRlcnMpO1xuICAgIH0sXG4gICAgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnNdLFxuICApO1xuXG4gIGNvbnN0IHNldFByb3BlcnR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcklkeCwgcHJvcGVydHlOYW1lKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eUZpbHRlciA9IGZpbHRlckRlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgKGZpbCkgPT4gZmlsLnByb3BlcnR5ID09PSBwcm9wZXJ0eU5hbWUsXG4gICAgICApWzBdO1xuICAgICAgdXBkYXRlRmlsdGVyKGZpbHRlcklkeCwge1xuICAgICAgICByZXN0b3JlVmFsdWU6IFwiXCIsXG4gICAgICAgIHJlc3RvcmVPcGVyYXRvcjogYWxsb3dlZF9vcGVyYXRvcnNbcHJvcGVydHlGaWx0ZXIuZGF0YXR5cGVdWzBdLFxuICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHlOYW1lLFxuICAgICAgICBkYXRhdHlwZTogcHJvcGVydHlGaWx0ZXIuZGF0YXR5cGUsXG4gICAgICAgIHVuaXQ6IHByb3BlcnR5RmlsdGVyLnVuaXQsXG4gICAgICAgIG1pbjogcHJvcGVydHlGaWx0ZXIubWluLFxuICAgICAgICBtYXg6IHByb3BlcnR5RmlsdGVyLm1heCxcbiAgICAgICAgZmlsdGVyOiBwcm9wZXJ0eUZpbHRlcixcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW3VwZGF0ZUZpbHRlciwgZmlsdGVyRGVmaW5pdGlvbnNdLFxuICApO1xuXG4gIGNvbnN0IGFkZEZpbHRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChwcm9wZXJ0eU5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5RmlsdGVyID0gZmlsdGVyRGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgICAgICAoZmlsKSA9PiBmaWwucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZSxcbiAgICAgIClbMF07XG4gICAgICBzZXRBY3RpdmVGaWx0ZXJzKFxuICAgICAgICBhY3RpdmVGaWx0ZXJzLmNvbmNhdCh7XG4gICAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgICBkYXRhdHlwZTogcHJvcGVydHlGaWx0ZXIuZGF0YXR5cGUsXG4gICAgICAgICAgdW5pdDogcHJvcGVydHlGaWx0ZXIudW5pdCxcbiAgICAgICAgICBtaW46IHByb3BlcnR5RmlsdGVyLm1pbixcbiAgICAgICAgICBtYXg6IHByb3BlcnR5RmlsdGVyLm1heCxcbiAgICAgICAgICBmaWx0ZXI6IHByb3BlcnR5RmlsdGVyLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSxcbiAgICBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVycywgZmlsdGVyRGVmaW5pdGlvbnNdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHthY3RpdmVGaWx0ZXJzLm1hcCgoZmlsLCBpZHgpID0+IChcbiAgICAgICAgPEZpbHRlclxuICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgIGZpbHRlcklkeD17aWR4fVxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgdXBkYXRlRmlsdGVyPXt1cGRhdGVGaWx0ZXJ9XG4gICAgICAgICAgc2V0UHJvcGVydHk9e3NldFByb3BlcnR5fVxuICAgICAgICAgIHJlbW92ZUZpbHRlcj17cmVtb3ZlRmlsdGVyfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleFwiPlxuICAgICAgICA8QWRkRmlsdGVyXG4gICAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zfVxuICAgICAgICAgIGFkZEZpbHRlcj17YWRkRmlsdGVyfVxuICAgICAgICAvPlxuICAgICAgICB7YWN0aXZlRmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIHRpdGxlPVwiU2VhcmNoIHdpdGggZmlsdGVyc1wiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG1zLWF1dG9cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNlYXJjaFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVRhYkZpbHRlcnMoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgW3Nob3dGaWx0ZXJzLCBzZXRTaG93RmlsdGVyc10gPSB1c2VTdGF0ZShhY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDApO1xuXG4gIGNvbnN0IHRpdGxlID0gc2hvd0ZpbHRlcnNcbiAgICA/IFwiQ2FuY2VsIEFkdmFuY2VkIEZpbHRlcmluZ1wiXG4gICAgOiBcIkFkdmFuY2VkIEZpbHRlcmluZ1wiO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dGaWx0ZXJzKCFzaG93RmlsdGVycyl9XG4gICAgICAgIGNsYXNzTmFtZT1cImJ0biBtcy1hdXRvIGNhb3NkYi1mLXF1ZXJ5LWZpbHRlcnMtdG9nZ2xlXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgPlxuICAgICAgICB7c2hvd0ZpbHRlcnMgPyAoXG4gICAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmkteFwiPjwvaT5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1maWx0ZXJcIj48L2k+XG4gICAgICAgICl9XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIHtzaG93RmlsdGVycyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgdy0xMDBcIj5cbiAgICAgICAgICA8UXVlcnlGb3JtVGFiRmlsdGVyc0lubmVyXG4gICAgICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnN9XG4gICAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVRhYnMoe1xuICB0YWJzLFxuICBzZXRBY3RpdmVUYWIsXG4gIGFjdGl2ZVRhYixcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgaGFzRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhY3RpdmVUYWIgJiZcbiAgICAgIGFjdGl2ZVRhYi5maWx0ZXJEZWZpbml0aW9ucyAmJlxuICAgICAgYWN0aXZlVGFiLmZpbHRlckRlZmluaXRpb25zLmxlbmd0aCA+IDBcbiAgICApO1xuICB9LCBbYWN0aXZlVGFiXSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS10YWItbGlzdCBkLWZsZXggZmxleC13cmFwXCI+XG4gICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICA8UXVlcnlGb3JtU2luZ2xlVGFiXG4gICAgICAgICAgaXNBY3RpdmVUYWI9e2FjdGl2ZVRhYi5pZCA9PT0gdGFiLmlkfVxuICAgICAgICAgIHNldEFjdGl2ZVRhYj17c2V0QWN0aXZlVGFifVxuICAgICAgICAgIGtleT17dGFiLmxhYmVsfVxuICAgICAgICAgIHRhYj17dGFifVxuICAgICAgICAvPlxuICAgICAgKSl9e1wiIFwifVxuICAgICAge2hhc0ZpbHRlcnMgJiYgKFxuICAgICAgICA8UXVlcnlGb3JtVGFiRmlsdGVyc1xuICAgICAgICAgIHsuLi5hY3RpdmVUYWJ9XG4gICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJzPXtzZXRBY3RpdmVGaWx0ZXJzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gUXVlcnlTdWJtaXRCdXR0b24oeyBpc1N1Ym1pdHRlZCwgYWN0aXZlIH0pIHtcbiAgaWYgKGlzU3VibWl0dGVkKSB7XG4gICAgcmV0dXJuIDxMb2FkaW5nSW5mbyBjbGFzc05hbWU9XCJhbGlnbi1zZWxmLWNlbnRlclwiIHNpemU9XCJzbVwiIC8+O1xuICB9XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvbiBhcmlhLWxhYmVsPVwic2VhcmNoXCIgdGl0bGU9XCJTZWFyY2hcIiB0eXBlPVwic3VibWl0XCIgZGlzYWJsZWQ9eyFhY3RpdmV9PlxuICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktc2VhcmNoXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5mdW5jdGlvbiBTaW5nbGVRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW0oe1xuICBzdWdnZXN0aW9uLFxuICBpc0hpZ2hsaWdodGVkLFxuICBvbk1vdXNlRW50ZXIsXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIGNsYXNzTmFtZT17aXNIaWdobGlnaHRlZCA/IFwiaGlnaGxpZ2h0XCIgOiBcIlwifVxuICAgID5cbiAgICAgIHtzdWdnZXN0aW9uLm9yaWdpbmFsfVxuICAgIDwvbGk+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbXMoe1xuICBzdWdnZXN0aW9ucyxcbiAgaGlnaGxpZ2h0SW5kZXgsXG4gIHNlbGVjdFN1Z2dlc3Rpb24sXG59KSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzdWdnZXN0aW9ucy5tYXAoKHN1ZywgaW5kZXgpID0+IChcbiAgICAgICAgPFNpbmdsZVF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbVxuICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2VsZWN0U3VnZ2VzdGlvbihpbmRleCl9XG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICBpc0hpZ2hsaWdodGVkPXtoaWdobGlnaHRJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgc3VnZ2VzdGlvbj17c3VnfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zKHtcbiAgdW5zZWxlY3RTdWdnZXN0aW9ucyxcbiAgc2VsZWN0U3VnZ2VzdGlvbixcbiAgaGlnaGxpZ2h0SW5kZXgsXG4gIHN1Z2dlc3Rpb25zLFxuICBnZXRJbnB1dFJlZixcbiAgd29yZFBvcyxcbiAgd29yZCxcbiAgeE9mZnNldCxcbn0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGl0ZW1zID0gKFxuICAgIDxRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1zXG4gICAgICBzZWxlY3RTdWdnZXN0aW9uPXtzZWxlY3RTdWdnZXN0aW9ufVxuICAgICAgaGlnaGxpZ2h0SW5kZXg9e2hpZ2hsaWdodEluZGV4fVxuICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgIC8+XG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaGlnaGxpZ2h0SW5kZXggPiAtMSkge1xuICAgICAgcmVmLmN1cnJlbnQuc2Nyb2xsKDAsIDI0ICogaGlnaGxpZ2h0SW5kZXggLSA0OCk7XG4gICAgfVxuICB9LCBbaGlnaGxpZ2h0SW5kZXhdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpbnB1dFJlZiA9IGdldElucHV0UmVmKCk7XG4gICAgdmFyIGNvb3JkcyA9IGdldENhcmV0Q29vcmRpbmF0ZXMoaW5wdXRSZWYuY3VycmVudCwgd29yZFBvcyk7XG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IGlucHV0UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgaWYgKGNvb3Jkcy5sZWZ0ID4gaW5wdXRXaWR0aCkge1xuICAgICAgY29uc3QgcmlnaHRPZmZzZXQgPVxuICAgICAgICBnZXRDYXJldENvb3JkaW5hdGVzKGlucHV0UmVmLmN1cnJlbnQsIHdvcmRQb3MgKyB3b3JkLmxlbmd0aCkubGVmdCAtXG4gICAgICAgIGNvb3Jkcy5sZWZ0O1xuXG4gICAgICByZWYuY3VycmVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gYCR7aW5wdXRXaWR0aCAtIHJpZ2h0T2Zmc2V0fXB4YDtcbiAgICB9IGVsc2UgaWYgKGNvb3Jkcy5sZWZ0ID4gOCkge1xuICAgICAgcmVmLmN1cnJlbnQuc3R5bGUubWFyZ2luTGVmdCA9IGAke2Nvb3Jkcy5sZWZ0IC0gOH1weGA7XG4gICAgfVxuICB9LCBbd29yZCwgZ2V0SW5wdXRSZWYsIHdvcmRQb3NdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIG9uTW91c2VMZWF2ZT17dW5zZWxlY3RTdWdnZXN0aW9uc31cbiAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiB4T2Zmc2V0IH19XG4gICAgICBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1mb3JtLXN1Zy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxvbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWdcIj5cbiAgICAgICAge2l0ZW1zfVxuICAgICAgPC9vbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZXIoc3RhdGUsIGFjdGlvbikge1xuICB2YXIgY3Vyc29yX3Bvcywgd29yZF9wb3MsIHdvcmQsIG9wZW4sIHVucmVzb2x2ZWRfc3VnZ2VzdGlvbnM7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIFwib25Gb2N1c1wiOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHJlZm9jdXM6IGZhbHNlLCBmb2N1czogdHJ1ZSB9O1xuICAgIGNhc2UgXCJvbkJsdXJcIjpcbiAgICAgIGlmIChzdGF0ZS5vbkNsaWNrVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2YWx1ZTogc3RhdGUub25DbGlja1ZhbHVlLFxuICAgICAgICAgIGN1cnNvclBvczogc3RhdGUub25DbGlja0N1cnNvclBvcyxcbiAgICAgICAgICBvbkNsaWNrQ3Vyc29yUG9zOiB1bmRlZmluZWQsXG4gICAgICAgICAgb25DbGlja1ZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgcmVmb2N1czogdHJ1ZSxcbiAgICAgICAgICBvcGVuOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmb2N1czogZmFsc2UgfTtcbiAgICBjYXNlIFwib25DaGFuZ2VcIjpcbiAgICAgIGN1cnNvcl9wb3MgPSBhY3Rpb24udGFyZ2V0LnNlbGVjdGlvbkVuZDtcbiAgICAgIHdvcmRfcG9zID0gYWN0aW9uLnRhcmdldC52YWx1ZS5zbGljZSgwLCBjdXJzb3JfcG9zKS5sYXN0SW5kZXhPZihcIiBcIikgKyAxO1xuICAgICAgd29yZCA9IGFjdGlvbi50YXJnZXQudmFsdWUuc2xpY2Uod29yZF9wb3MsIGN1cnNvcl9wb3MpO1xuICAgICAgb3BlbiA9IHdvcmQubGVuZ3RoID4gMjtcbiAgICAgIHVucmVzb2x2ZWRfc3VnZ2VzdGlvbnMgPVxuICAgICAgICBvcGVuICYmIGFjdGlvbi5nZXRTdWdnZXN0aW9uc0NhbGxiYWNrXG4gICAgICAgICAgPyBhY3Rpb24uZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayhcbiAgICAgICAgICAgICAgZklzQ3FsKGFjdGlvbi50YXJnZXQudmFsdWUpLFxuICAgICAgICAgICAgICBhY3Rpb24udGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICB3b3JkLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9uQ2xpY2tWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICBvbkNsaWNrQ3Vyc29yUG9zOiB1bmRlZmluZWQsXG4gICAgICAgIGhpZ2hsaWdodEluZGV4OiAtMSxcbiAgICAgICAgY3Vyc29yUG9zOiBjdXJzb3JfcG9zLFxuICAgICAgICBjdXJzb3JQb3NOb0NvbXBsZXRpb246IGN1cnNvcl9wb3MsXG4gICAgICAgIHdvcmRQb3M6IHdvcmRfcG9zLFxuICAgICAgICB2YWx1ZTogYWN0aW9uLnRhcmdldC52YWx1ZSxcbiAgICAgICAgdmFsdWVOb0NvbXBsZXRpb246IGFjdGlvbi50YXJnZXQudmFsdWUsXG4gICAgICAgIHJlZm9jdXM6IGZhbHNlLFxuICAgICAgICB3b3JkOiB3b3JkLFxuICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICBjaGFuZ2VJZDogKHN0YXRlLmNoYW5nZUlkICsgMSkgfCAwLFxuICAgICAgICB1bnJlc29sdmVkU3VnZ2VzdGlvbnM6IHVucmVzb2x2ZWRfc3VnZ2VzdGlvbnMsXG4gICAgICB9O1xuICAgIGNhc2UgXCJyZXNvbHZlU3VnZ2VzdGlvbnNcIjpcbiAgICAgIGlmIChzdGF0ZS5jaGFuZ2VJZCA9PT0gYWN0aW9uLmNoYW5nZUlkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6IGFjdGlvbi5zdWdnZXN0aW9ucyxcbiAgICAgICAgICB1bnJlc29sdmVkU3VnZ2VzdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIGVsc2UgeyAvKiBzdWdnZXN0aW9ucyBhcmUgb3V0ZGF0ZWQgZHVlIHRvIG5ldyBjaGFuZ2VzICovIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJvbkFycm93RG93blwiOlxuICAgICAgaWYgKFxuICAgICAgICBzdGF0ZS5vcGVuICYmXG4gICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zICYmXG4gICAgICAgIHN0YXRlLmhpZ2hsaWdodEluZGV4IDwgc3RhdGUuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG5ld0hpZ2hsaWdodEluZGV4ID0gc3RhdGUuaGlnaGxpZ2h0SW5kZXggKyAxO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2UoMCwgc3RhdGUud29yZFBvcykgK1xuICAgICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zW25ld0hpZ2hsaWdodEluZGV4XS5lc2NhcGVkICtcbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZShzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb24pO1xuICAgICAgICBjb25zdCBuZXdDdXJzb3JQb3MgPVxuICAgICAgICAgIHN0YXRlLndvcmRQb3MgKyBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgY3Vyc29yUG9zOiBuZXdDdXJzb3JQb3MsXG4gICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICAgIGhpZ2hsaWdodEluZGV4OiBuZXdIaWdobGlnaHRJbmRleCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ1bnNlbGVjdFN1Z2dlc3Rpb25zXCI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgY2FzZSBcInNlbGVjdFN1Z2dlc3Rpb25cIjpcbiAgICAgIGlmIChhY3Rpb24uaW5kZXggPiAtMSAmJiBhY3Rpb24uaW5kZXggPCBzdGF0ZS5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKDAsIHN0YXRlLndvcmRQb3MpICtcbiAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1thY3Rpb24uaW5kZXhdLmVzY2FwZWQgK1xuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvbikgK1xuICAgICAgICAgIFwiIFwiO1xuICAgICAgICBjb25zdCBuZXdDdXJzb3JQb3MgPVxuICAgICAgICAgIHN0YXRlLndvcmRQb3MgKyBzdGF0ZS5zdWdnZXN0aW9uc1thY3Rpb24uaW5kZXhdLmVzY2FwZWQubGVuZ3RoICsgMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBvbkNsaWNrVmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IG5ld0N1cnNvclBvcyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJyZXN0b3JlXCI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdmFsdWU6IGFjdGlvbi52YWx1ZSB9O1xuICAgIGNhc2UgXCJvbkFycm93VXBcIjpcbiAgICAgIGlmIChzdGF0ZS5vcGVuICYmIHN0YXRlLmhpZ2hsaWdodEluZGV4ID4gLTEpIHtcbiAgICAgICAgY29uc3QgbmV3SGlnaGxpZ2h0SW5kZXggPSBzdGF0ZS5oaWdobGlnaHRJbmRleCAtIDE7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICAgICBuZXdIaWdobGlnaHRJbmRleCA8IDBcbiAgICAgICAgICAgID8gc3RhdGUudmFsdWVOb0NvbXBsZXRpb25cbiAgICAgICAgICAgIDogc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2UoMCwgc3RhdGUud29yZFBvcykgK1xuICAgICAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZCArXG4gICAgICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvbik7XG4gICAgICAgIGNvbnN0IG5ld0N1cnNvclBvcyA9XG4gICAgICAgICAgbmV3SGlnaGxpZ2h0SW5kZXggPCAwXG4gICAgICAgICAgICA/IHN0YXRlLmN1cnNvclBvc05vQ29tcGxldGlvblxuICAgICAgICAgICAgOiBzdGF0ZS53b3JkUG9zICtcbiAgICAgICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGN1cnNvclBvczogbmV3Q3Vyc29yUG9zLFxuICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICBoaWdobGlnaHRJbmRleDogbmV3SGlnaGxpZ2h0SW5kZXgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UZXh0RmllbGQoeyBzZXRRdWVyeVN0cmluZywgaXNDcWwsIHJlc3RvcmVRdWVyeVN0cmluZyB9KSB7XG4gIGNvbnN0IHsgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjaywgaXNTdWJtaXR0ZWQgfSA9IHVzZUNvbnRleHQoUXVlcnlGb3JtQ29udGV4dCk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZVJlZHVjZXIocmVkdWNlciwge1xuICAgIHJlZm9jdXM6IGZhbHNlLFxuICAgIHZhbHVlOiBcIlwiLFxuICAgIGZvY3VzOiBmYWxzZSxcbiAgICBvcGVuOiBmYWxzZSxcbiAgICB3b3JkOiBcIlwiLFxuICAgIGhpZ2hsaWdodEluZGV4OiAtMSxcbiAgICB1bnJlc29sdmVkU3VnZ2VzdGlvbnM6IG51bGwsXG4gICAgc3VnZ2VzdGlvbnM6IG51bGwsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UXVlcnlTdHJpbmcoc3RhdGUudmFsdWUpO1xuICB9LCBbc3RhdGUudmFsdWUsIHNldFF1ZXJ5U3RyaW5nXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVzdG9yZVF1ZXJ5U3RyaW5nKSB7XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6IFwicmVzdG9yZVwiLCB2YWx1ZTogcmVzdG9yZVF1ZXJ5U3RyaW5nIH0pO1xuICAgIH1cbiAgfSwgW3Jlc3RvcmVRdWVyeVN0cmluZ10pO1xuXG4gIGNvbnN0IG9uRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uRm9jdXNcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwib25CbHVyXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkFycm93VXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uQXJyb3dVcFwiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25BcnJvd0Rvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uQXJyb3dEb3duXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFwib25DaGFuZ2VcIixcbiAgICAgICAgdGFyZ2V0OiBlLnRhcmdldCxcbiAgICAgICAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjazogZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2dldFN1Z2dlc3Rpb25zQ2FsbGJhY2tdLFxuICApO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gb25BcnJvd0Rvd24oZSk7XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93VXBcIikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBvbkFycm93VXAoZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25BcnJvd1VwLCBvbkFycm93RG93bl0sXG4gICk7XG5cbiAgY29uc3QgdW5zZWxlY3RTdWdnZXN0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwidW5zZWxlY3RTdWdnZXN0aW9uc1wiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgc2VsZWN0U3VnZ2VzdGlvbiA9IHVzZUNhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJzZWxlY3RTdWdnZXN0aW9uXCIsIGluZGV4OiBpbmRleCB9KTtcbiAgfSwgW10pO1xuXG4gIHZhciBjbGFzc05hbWUgPSBcImNhb3NkYi1mLXF1ZXJ5LWZvcm1cIjtcbiAgaWYgKHN0YXRlLm9wZW4pIHtcbiAgICBjbGFzc05hbWUgKz0gXCIgb3BlblwiO1xuICB9XG4gIGlmIChzdGF0ZS5mb2N1cykge1xuICAgIGNsYXNzTmFtZSArPSBcIiBmb2N1c1wiO1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RhdGUudW5yZXNvbHZlZFN1Z2dlc3Rpb25zKSB7XG4gICAgICBjb25zdCBjaGFuZ2VJZCA9IHN0YXRlLmNoYW5nZUlkO1xuICAgICAgc3RhdGUudW5yZXNvbHZlZFN1Z2dlc3Rpb25zLnRoZW4oKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBcInJlc29sdmVTdWdnZXN0aW9uc1wiLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyxcbiAgICAgICAgICBjaGFuZ2VJZDogY2hhbmdlSWQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RhdGUudW5yZXNvbHZlZFN1Z2dlc3Rpb25zLCBzdGF0ZS5jaGFuZ2VJZF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5wdXRSZWYuY3VycmVudC5zZXRTZWxlY3Rpb25SYW5nZShzdGF0ZS5jdXJzb3JQb3MsIHN0YXRlLmN1cnNvclBvcyk7XG4gIH0sIFtzdGF0ZS52YWx1ZSwgc3RhdGUuY3Vyc29yUG9zXSk7XG5cbiAgY29uc3QgZ2V0SW5wdXRSZWYgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIGlucHV0UmVmO1xuICB9LCBbaW5wdXRSZWZdKTtcblxuICAvLyBoYW5kbGUgZm9jdXMgYWZ0ZXIgcmVzZXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RhdGUucmVmb2N1cykge1xuICAgICAgaW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSwgW3N0YXRlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleFwiPlxuICAgICAgICB7aXNDcWwgJiYgPENxbEhpbnQgLz59XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LWdyb3ctMVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cImVudGVyIHNlYXJjaCB0ZXJtc1wiXG4gICAgICAgICAgbmFtZT1cInF1ZXJ5XCJcbiAgICAgICAgICB0aXRsZT1cIkVudGVyIHNlYXJjaCB0ZXJtc1wiXG4gICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgdmFsdWU9e3N0YXRlLnZhbHVlfVxuICAgICAgICAgIHJlZj17aW5wdXRSZWZ9XG4gICAgICAgID48L2lucHV0PlxuICAgICAgICA8UXVlcnlTdWJtaXRCdXR0b25cbiAgICAgICAgICBhY3RpdmU9e3N0YXRlLnZhbHVlLmxlbmd0aCA+IDB9XG4gICAgICAgICAgaXNTdWJtaXR0ZWQ9e2lzU3VibWl0dGVkfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICB7c3RhdGUub3BlbiAmJiBzdGF0ZS5zdWdnZXN0aW9ucyAmJiAoXG4gICAgICAgIDxRdWVyeUZvcm1TdWdnZXN0aW9uc1xuICAgICAgICAgIHVuc2VsZWN0U3VnZ2VzdGlvbnM9e3Vuc2VsZWN0U3VnZ2VzdGlvbnN9XG4gICAgICAgICAgc2VsZWN0U3VnZ2VzdGlvbj17c2VsZWN0U3VnZ2VzdGlvbn1cbiAgICAgICAgICB3b3JkPXtzdGF0ZS53b3JkfVxuICAgICAgICAgIHdvcmRQb3M9e3N0YXRlLndvcmRQb3N9XG4gICAgICAgICAgZ2V0SW5wdXRSZWY9e2dldElucHV0UmVmfVxuICAgICAgICAgIHN1Z2dlc3Rpb25zPXtzdGF0ZS5zdWdnZXN0aW9uc31cbiAgICAgICAgICBoaWdobGlnaHRJbmRleD17c3RhdGUuaGlnaGxpZ2h0SW5kZXh9XG4gICAgICAgICAgeE9mZnNldD17aXNDcWwgPyA0NCA6IDB9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBzdG9yZShhY3RpdmVUYWIsIGFjdGl2ZUZpbHRlcnMsIHF1ZXJ5U3RyaW5nKSB7XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZVRhYlwiKTtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkuYWN0aXZlRmlsdGVyc1wiKTtcbiAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkucXVlcnlTdHJpbmdcIik7XG4gIGlmIChhY3RpdmVUYWIpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlVGFiXCJdID0gSlNPTi5zdHJpbmdpZnkoYWN0aXZlVGFiKTtcbiAgfVxuICBpZiAoYWN0aXZlRmlsdGVycyAmJiBhY3RpdmVGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlRmlsdGVyc1wiXSA9IEpTT04uc3RyaW5naWZ5KGFjdGl2ZUZpbHRlcnMpO1xuICB9XG4gIGlmIChxdWVyeVN0cmluZyAmJiBxdWVyeVN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCJdID0gcXVlcnlTdHJpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdG9yZSh0YWJzKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICByZXN0b3JlQWN0aXZlVGFiOlxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZVRhYlwiXSAmJlxuICAgICAgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlVGFiXCJdKSxcbiAgICByZXN0b3JlQWN0aXZlRmlsdGVyczpcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCJdICYmXG4gICAgICBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVGaWx0ZXJzXCJdKSxcbiAgICByZXN0b3JlUXVlcnlTdHJpbmc6IHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5xdWVyeVN0cmluZ1wiXSB8fCBcIlwiLFxuICB9O1xuICBpZiAoXG4gICAgcmVzdWx0LnJlc3RvcmVBY3RpdmVUYWIgJiZcbiAgICB0YWJzLmZpbHRlcigodGFiKSA9PiB0YWIuaWQgPT09IHJlc3VsdC5yZXN0b3JlQWN0aXZlVGFiLmlkKS5sZW5ndGggPT09IDBcbiAgKSB7XG4gICAgLy8gY29uZmlnIGNoYW5nZWRcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVUYWJcIik7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkuYWN0aXZlRmlsdGVyc1wiKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5xdWVyeVN0cmluZ1wiKTtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFF1ZXJ5Rm9ybSh7XG4gIHN1Ym1pdENhbGxiYWNrLFxuICB0YWJzLFxuICBkZWZhdWx0VGFiLFxuICBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrLFxuICByZXN0b3JlQ2FsbGJhY2ssXG4gIHN0b3JlQ2FsbGJhY2ssXG4gIHJlc3RvcmUsXG59KSB7XG4gIGNvbnN0IHsgcmVzdG9yZVF1ZXJ5U3RyaW5nLCByZXN0b3JlQWN0aXZlRmlsdGVycywgcmVzdG9yZUFjdGl2ZVRhYiB9ID0gcmVzdG9yZVxuICAgID8gcmVzdG9yZUNhbGxiYWNrKHRhYnMpXG4gICAgOiB7fTtcbiAgY29uc3QgW2lzU3VibWl0dGVkLCBzZXRJc1N1Ym1pdHRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtxdWVyeVN0cmluZywgc2V0UXVlcnlTdHJpbmddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZShcbiAgICByZXN0b3JlQWN0aXZlVGFiIHx8IHRhYnNbZGVmYXVsdFRhYl0sXG4gICk7XG4gIGNvbnN0IFthY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVGaWx0ZXJzXSA9IHVzZVN0YXRlKFxuICAgIHJlc3RvcmVBY3RpdmVGaWx0ZXJzIHx8IFtdLFxuICApO1xuXG4gIGNvbnN0IG9uU3VibWl0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU3VibWl0dGVkKHRydWUpO1xuICAgICAgc3RvcmVDYWxsYmFjayhhY3RpdmVUYWIsIGFjdGl2ZUZpbHRlcnMsIHF1ZXJ5U3RyaW5nKTtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYkRlZiA9IHRhYnMuZmlsdGVyKCh0KSA9PiB0LmlkID09PSBhY3RpdmVUYWIuaWQpWzBdIHx8IHt9O1xuICAgICAgY29uc3QgaXNDcWwgPSBmSXNDcWwocXVlcnlTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3QgPSBpc0NxbCAmJiBmSXNTZWxlY3QocXVlcnlTdHJpbmcpO1xuICAgICAgY29uc3QgbWFrZVF1ZXJ5ID1cbiAgICAgICAgaXNDcWwgfHwgIWFjdGl2ZVRhYkRlZi5tYWtlUXVlcnkgPyAoeCkgPT4geCA6IGFjdGl2ZVRhYkRlZi5tYWtlUXVlcnk7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IGlzU2VsZWN0ID8gLTEgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiBzdWJtaXRDYWxsYmFjayhtYWtlUXVlcnkocXVlcnlTdHJpbmcsIGFjdGl2ZUZpbHRlcnMpLCBwYWdlU2l6ZSk7XG4gICAgfSxcbiAgICBbXG4gICAgICB0YWJzLFxuICAgICAgYWN0aXZlVGFiLFxuICAgICAgYWN0aXZlRmlsdGVycyxcbiAgICAgIHF1ZXJ5U3RyaW5nLFxuICAgICAgc3VibWl0Q2FsbGJhY2ssXG4gICAgICBzdG9yZUNhbGxiYWNrLFxuICAgIF0sXG4gICk7XG5cbiAgY29uc3QgaXNDcWwgPSBmSXNDcWwocXVlcnlTdHJpbmcpO1xuXG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNTdWJtaXR0ZWQ6IGlzU3VibWl0dGVkLFxuICAgICAgcXVlcnlTdHJpbmc6IHF1ZXJ5U3RyaW5nLFxuICAgICAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjazogZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgICB9O1xuICB9LCBbcXVlcnlTdHJpbmcsIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssIGlzU3VibWl0dGVkXSk7XG5cbiAgY29uc3Qgc2V0QWN0aXZlVGFiUmVzZXRGaWx0ZXJzID0gdXNlQ2FsbGJhY2soXG4gICAgKHRhYikgPT4ge1xuICAgICAgc2V0QWN0aXZlVGFiKHRhYik7XG4gICAgICBzZXRBY3RpdmVGaWx0ZXJzKFtdKTtcbiAgICB9LFxuICAgIFtzZXRBY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVUYWJdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gYXV0b0NvbXBsZXRlPVwib2ZmXCIgb25TdWJtaXQ9e29uU3VibWl0fT5cbiAgICAgIDxRdWVyeUZvcm1Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0fT5cbiAgICAgICAgPFF1ZXJ5Rm9ybVRleHRGaWVsZFxuICAgICAgICAgIHJlc3RvcmVRdWVyeVN0cmluZz17cmVzdG9yZVF1ZXJ5U3RyaW5nfVxuICAgICAgICAgIGlzQ3FsPXtpc0NxbH1cbiAgICAgICAgICBzZXRRdWVyeVN0cmluZz17c2V0UXVlcnlTdHJpbmd9XG4gICAgICAgIC8+XG4gICAgICAgIHshaXNDcWwgJiYgKFxuICAgICAgICAgIDxRdWVyeUZvcm1UYWJzXG4gICAgICAgICAgICB0YWJzPXt0YWJzfVxuICAgICAgICAgICAgYWN0aXZlVGFiPXthY3RpdmVUYWJ9XG4gICAgICAgICAgICBzZXRBY3RpdmVUYWI9e3NldEFjdGl2ZVRhYlJlc2V0RmlsdGVyc31cbiAgICAgICAgICAgIGFjdGl2ZUZpbHRlcnM9e2FjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJzPXtzZXRBY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1F1ZXJ5Rm9ybUNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9mb3JtPlxuICApO1xufVxuXG5RdWVyeUZvcm0uQXV0b0NvbXBsZXRpb24gPSBBdXRvQ29tcGxldGlvbjtcblxuLy8gRGVmYXVsdHMgYXJlIHN1aXRhYmxlIGZvciB0ZXN0aW5nIGJ1dCBub3QgZm9yIHByb2R1Y3Rpb24uXG5RdWVyeUZvcm0uZGVmYXVsdFByb3BzID0ge1xuICBzdWJtaXRDYWxsYmFjazogKHF1ZXJ5U3RyaW5nLCBwYWdlU2l6ZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKFwic3VibWl0IHF1ZXJ5OiBcIiwgcXVlcnlTdHJpbmcsIHBhZ2VTaXplKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGFsZXJ0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgIC8vIHJlbG9hZCBwYWdlXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgfSwgMTAwMCk7XG4gIH0sXG4gIHRhYnM6IGdldF90ZXN0X3RhYnMoKSxcbiAgZGVmYXVsdFRhYjogMCxcbiAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjazogZ2V0X3Rlc3Rfc3VnZ2VzdGlvbnMsXG4gIHJlc3RvcmVDYWxsYmFjazogcmVzdG9yZSxcbiAgc3RvcmVDYWxsYmFjazogc3RvcmUsXG4gIHJlc3RvcmU6IGZhbHNlLFxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUXVlcnlGb3JtIH0gZnJvbSBcIi4vUXVlcnlGb3JtXCI7XG5cbmxldCBsYXN0UXVlcnlGb3JtSGVpZ2h0ID0gMDtcbmxldCBzY3JvbGxEb3duVGltZW91dCA9IHVuZGVmaW5lZDtcblxuY29uc3QgdG9nZ2xlUXVlcnlQYW5lbCA9IChjb250YWluZXIpID0+IHtcbiAgaWYgKHR5cGVvZiBzY3JvbGxEb3duVGltZW91dCA9PT0gXCJudW1iZXJcIikge1xuICAgIGNsZWFyVGltZW91dChzY3JvbGxEb3duVGltZW91dCk7XG4gIH1cbiAgY29uc3QgeyB0b3AsIGJvdHRvbSB9ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBpZiAobGFzdFF1ZXJ5Rm9ybUhlaWdodCAhPT0gYm90dG9tIC0gdG9wKSB7XG4gICAgLy8gT25seSB0aGUgaGVpZ2h0IG9mIHRoZSBmb3JtIGhhcyBjaGFuZ2VkLiBUaGlzIGlzIG5vdCBhY3R1YWxseSBhIHNjcm9sbCBldmVudC5cbiAgICBsYXN0UXVlcnlGb3JtSGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNjcm9sbERvd25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgc2Nyb2xsRG93blRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCA+IGxhc3RRdWVyeUZvcm1IZWlnaHQpIHtcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiY29uZGVuc2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcImNvbmRlbnNlZFwiKTtcbiAgICB9XG4gIH0sIDIwMCk7XG59O1xuXG5jb25zdCBRdWVyeVBhbmVsID0gKHByb3BzKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgcHJvcHMuc2Nyb2xsSGFuZGxlcik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHByb3BzLnNjcm9sbEhhbmRsZXIpO1xuICAgIH07XG4gIH0sIFtwcm9wcy5zY3JvbGxIYW5kbGVyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPFF1ZXJ5Rm9ybSB7Li4ucHJvcHN9IC8+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5RdWVyeVBhbmVsLnByb3BUeXBlcyA9IHtcbiAgc2Nyb2xsSGFuZGxlcjogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgeyBRdWVyeVBhbmVsLCB0b2dnbGVRdWVyeVBhbmVsIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBCcmFuZGluZyB9IGZyb20gXCIuLi9CcmFuZGluZ1wiO1xuaW1wb3J0IHsgTmF2YmFyLCBDb250YWluZXIsIE5hdiwgTmF2RHJvcGRvd24gfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwXCI7XG5pbXBvcnQgeyBVc2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vVXNlckNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUXVlcnlQYW5lbCwgdG9nZ2xlUXVlcnlQYW5lbCB9IGZyb20gXCIuL1F1ZXJ5UGFuZWxcIjtcblxuY2xhc3MgTmF2aWdhdGlvbk1hbmFnZXJJbXBsIHtcbiAgY29uc3RydWN0b3IoeyBpdGVtcywgYnJhbmQsIHVzZXJfY29tcG9uZW50IH0pIHtcbiAgICB0aGlzLml0ZW1zID0gaXRlbXMgfHwgW107XG4gICAgdGhpcy5icmFuZCA9IGJyYW5kIHx8IEJyYW5kaW5nLm5hbWU7XG4gICAgdGhpcy51cGRhdGVfbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy51c2VyX2NvbXBvbmVudCA9IHVzZXJfY29tcG9uZW50O1xuICB9XG4gIHJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgICB0aGlzLnVwZGF0ZV9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gIH1cbiAgYWRkTGluayhsaW5rKSB7XG4gICAgdGhpcy5pdGVtcy5wdXNoKGxpbmspO1xuICAgIHRoaXMubm90aWZ5VXBkYXRlTGlzdGVuZXJzKCk7XG4gIH1cbiAgbm90aWZ5VXBkYXRlTGlzdGVuZXJzKCkge1xuICAgIHRoaXMudXBkYXRlX2xpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE5hdmlnYXRpb25NYW5hZ2VyID0gbmV3IE5hdmlnYXRpb25NYW5hZ2VySW1wbCh7XG4gIGl0ZW1zOiBbXG4gICAgPE5hdi5MaW5rIGtleT1cIjBcIiBocmVmPVwiI2FjdGlvbjFcIj5cbiAgICAgIEhvbWVcbiAgICA8L05hdi5MaW5rPixcbiAgICA8TmF2Lkxpbmsga2V5PVwiMVwiIGhyZWY9XCIjYWN0aW9uMlwiPlxuICAgICAgTGlua1xuICAgIDwvTmF2Lkxpbms+LFxuICAgIDxOYXZEcm9wZG93biBrZXk9XCIyXCIgdGl0bGU9XCJMaW5rXCI+XG4gICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPVwiI2FjdGlvbjNcIj5BY3Rpb248L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPVwiI2FjdGlvbjRcIj5Bbm90aGVyIGFjdGlvbjwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICAgIDxOYXZEcm9wZG93bi5EaXZpZGVyIC8+XG4gICAgICA8TmF2RHJvcGRvd24uSXRlbSBocmVmPVwiI2FjdGlvbjVcIj5Tb21ldGhpbmcgZWxzZSBoZXJlPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgIDwvTmF2RHJvcGRvd24+LFxuICAgIDxOYXYuTGluayBrZXk9XCIzXCIgaHJlZj1cIiNcIiBkaXNhYmxlZD5cbiAgICAgIExpbmtcbiAgICA8L05hdi5MaW5rPixcbiAgXSxcbiAgdXNlcl9jb21wb25lbnQ6IDxVc2VyQ29tcG9uZW50IC8+LFxufSk7XG5cbmV4cG9ydCBjb25zdCBUb3BOYXZpZ2F0aW9uQmFyID0gKCkgPT4ge1xuICBjb25zdCBwYW5lbFJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBzY3JvbGxIYW5kbGVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHRvZ2dsZVF1ZXJ5UGFuZWwocGFuZWxSZWYuY3VycmVudCk7XG4gIH0sIFtwYW5lbFJlZl0pO1xuXG4gIHJldHVybiAoXG4gICAgPE5hdmJhciBiZz1cImxpZ2h0XCIgZXhwYW5kPVwibGdcIj5cbiAgICAgIDxDb250YWluZXIgZmx1aWQ+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImQtbGctbm9uZSBkLWlubGluZVwiPntOYXZpZ2F0aW9uTWFuYWdlci5icmFuZH08L3NwYW4+XG4gICAgICAgIDxOYXZiYXIuVG9nZ2xlIGFyaWEtY29udHJvbHM9XCJuYXZiYXJTY3JvbGxcIiAvPlxuICAgICAgICA8TmF2YmFyLkNvbGxhcHNlIGlkPVwibmF2YmFyU2Nyb2xsXCI+XG4gICAgICAgICAgPE5hdmJhci5CcmFuZCBjbGFzc05hbWU9XCJkLW5vbmUgZC1sZy1pbmxpbmVcIj5cbiAgICAgICAgICAgIHtOYXZpZ2F0aW9uTWFuYWdlci5icmFuZH1cbiAgICAgICAgICA8L05hdmJhci5CcmFuZD5cbiAgICAgICAgICA8TmF2IGNsYXNzTmFtZT1cIm1lLWF1dG8gbXktMiBteS1sZy0wXCI+XG4gICAgICAgICAgICB7TmF2aWdhdGlvbk1hbmFnZXIuaXRlbXMubWFwKChpdGVtLCBrZXkpID0+IChcbiAgICAgICAgICAgICAgPHNwYW4ga2V5PXtrZXl9PntpdGVtfTwvc3Bhbj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvTmF2PlxuICAgICAgICAgIDxOYXYgcmVmPXtwYW5lbFJlZn0gY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktcGFuZWwgbWUtbGctMiBmdWxsXCI+XG4gICAgICAgICAgICA8UXVlcnlQYW5lbCByZXN0b3JlPXt0cnVlfSBzY3JvbGxIYW5kbGVyPXtzY3JvbGxIYW5kbGVyfSAvPlxuICAgICAgICAgIDwvTmF2PlxuICAgICAgICAgIDxOYXY+e05hdmlnYXRpb25NYW5hZ2VyLnVzZXJfY29tcG9uZW50fTwvTmF2PlxuICAgICAgICA8L05hdmJhci5Db2xsYXBzZT5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgIDwvTmF2YmFyPlxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRvcE5hdmlnYXRpb25CYXIgfSBmcm9tIFwiLi9Ub3BOYXZpZ2F0aW9uQmFyXCI7XG5cbmV4cG9ydCBjb25zdCBIZWFkZXIgPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJzaGFkb3ctc20gYmctbGlnaHRcIj5cbiAgICAgIDxUb3BOYXZpZ2F0aW9uQmFyPjwvVG9wTmF2aWdhdGlvbkJhcj5cbiAgICA8L2hlYWRlcj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNsYXNzIEZvb3Rlck1hbmFnZXJJbXBsIHtcbiAgY29uc3RydWN0b3IoeyBpdGVtcywgY29weVJpZ2h0IH0pIHtcbiAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5jb3B5UmlnaHQgPSBjb3B5UmlnaHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEZvb3Rlck1hbmFnZXIgPSBuZXcgRm9vdGVyTWFuYWdlckltcGwoe1xuICBpdGVtczogW1xuICAgIDxhXG4gICAgICBrZXk9XCIwXCJcbiAgICAgIGNsYXNzTmFtZT1cIm5hdi1saW5rIHB4LTJcIlxuICAgICAgaHJlZj1cImh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC0zLjAuZW4uaHRtbFwiXG4gICAgPlxuICAgICAgTGljZW5zZSAoQUdQTC12MylcbiAgICA8L2E+LFxuICAgIDxhIGtleT1cIjFcIiBjbGFzc05hbWU9XCJuYXYtbGluayBweC0yXCIgaHJlZj1cImh0dHBzOi8vZ2l0bGFiLmNvbS9jYW9zZGJcIj5cbiAgICAgIFNvdXJjZXNcbiAgICA8L2E+LFxuICAgIDxhIGtleT1cIjNcIiBjbGFzc05hbWU9XCJuYXYtbGluayBweC0yXCIgaHJlZj1cImh0dHBzOi8vZG9jcy5pbmRpc2NhbGUuY29tL1wiPlxuICAgICAgRG9jdW1lbnRhdGlvblxuICAgIDwvYT4sXG4gIF0sXG4gIGNvcHlSaWdodDogXCLCqSAyMDIxIEluZGlTY2FsZSBHbWJIXCIsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZvb3RlciA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Zm9vdGVyPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb290ZXItYm9yZGVyXCIgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9vdGVyLWJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgcHktMyBteS00XCI+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cIm5hdiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBwYi0zIG1iLTNcIj5cbiAgICAgICAgICAgIHtGb290ZXJNYW5hZ2VyLml0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3BhY2VyID1cbiAgICAgICAgICAgICAgICBpbmRleCA9PT0gMCA/IG51bGwgOiA8bGkgY2xhc3NOYW1lPVwibmF2LWl0ZW0gcHgtMVwiPuKAojwvbGk+O1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzcGFjZXJ9XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwibmF2LWl0ZW1cIj57aXRlbX08L2xpPlxuICAgICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+e0Zvb3Rlck1hbmFnZXIuY29weVJpZ2h0fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgKTtcbn07XG4iLCIvKlxuICogVGhpcyBmaWxlIGlzIGEgcGFydCBvZiB0aGUgQ2Fvc0RCIFByb2plY3QuXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDIzIFRpbW0gRml0c2NoZW4gPHQuZml0c2NoZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAyMyBJbmRpU2NhbGUgR21iSCA8aW5mb0BpbmRpc2NhbGUuY29tPlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlXG4gKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTG9hZGluZ0luZm8gfSBmcm9tIFwiLi9Mb2FkaW5nSW5mb1wiO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIFdyYXBwZXIgZm9yIGhhbmRsaW5nIFByb21pc2VzLiBUaGUgcmVzdWx0cyBvZiB0aGUgcHJvbWlzZSBhcmUgYmVpbmdcbiAqIHJlbmRlcmVkLiBJbiB0aGUgbWVhbiB0aW1lLCBhIExvYWRpbmdJbmZvIGlzIGJlaW5nIHNob3duLlxuICpcbiAqIEV4YW1wbGU6XG4gKiAgIDxBd2FpdCBwcm9taXNlPXtmZXRjaERhdGEoKX1cbiAqICAgICAgICAgIHRoZW49e2RhdGEgPT4gY3JlYXRlVGFibGUoZGF0YSl9XG4gKiAgICAgICAgICBjYXRjaD17ZXJyb3IgPT4gXCI8ZGl2PkVycm9yOiBcIiArIGVycm9yLm1lc3NhZ2U8L2Rpdj59Lz5cbiAqXG4gKiBXaGVuIGZldGNoRGF0YSByZXNvbHZlcywgdGhlIGRhdGEgaXMgYmVpbmcgcHJlc2VudGVkIGFzIGEgdGFibGUuIEFuIGVycm9yXG4gKiBkaXYgaXMgYmVpbmcgc2hvd24gaWYgZmV0Y2hEYXRhIGZhaWxzLlxuICpcbiAqIE5CLiBFcXVpdmFsZW50bHksIHlvdSBjb3VsZCBhbHNvIGRvOlxuICogICA8QXdhaXQgcHJvbWlzZT17ZmV0Y2hEYXRhKClcbiAqICAgICAgICAgIC50aGVuKGRhdGEgPT4gY3JlYXRlVGFibGUoZGF0YSlcbiAqICAgICAgICAgIC5jYXRjaD0oZXJyb3IgPT4gXCI8ZGl2PkVycm9yOiBcIiArIGVycm9yLm1lc3NhZ2U8L2Rpdj4pXG4gKiAgIH0vPlxuICpcbiAqIEBwYXJhbSB7UHJvbWlzZX0gcHJvbWlzZSAtIE11c3QgcmVzb2x2ZSB0byBhIFJlYWN0LkNvbXBvbmVudCB1bmxlc3MgdGhlXG4gKiBwYXJhbWV0ZXIgYHRoZW5gIGRvZXMgdGhlIGNvbnZlc2lvbi5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFt0aGVuXSAtIGZ1bmN0aW9uIHdpdGggb25lIHBhcmFtZXRlci4gSXQgaXMgYmVpbmcgY2FsbGVkXG4gKiB3aGVuIHRoZSBwcm9taXNlIHJlc29sdmVzLiBJdCBzaG91bGQgcHJlcHJvY2VzcyB0aGUgcHJvbWlzZXMnIHJlc3VsdHMgYW5kXG4gKiBtdXN0IGEgY29tcG9uZW50LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhdGNoXSAtIGZ1bmN0aW9uIHdpdGggb25lIHBhcmFtZXRlci4gSXQgaXMgYmVpbmcgY2FsbGVkXG4gKiB3aGVuIHRoZSBwcm9taXNlIHJlamVjdHMuIEl0IHNob3VsZCBwcmVwcm9jZXNzIHRoZSBlcnJvciBhbmQgbXVzdCByZXR1cm4gYVxuICogY29tcG9uZW50LlxuICogQHBhcmFtIHtSZWFjdC5Db21wb25lbnR9IFtsb2FkaW5nXSAtIEEgY29tcG9uZW50IHdoaWNoIHdpbGwgc2hvdyB1bnRpbCB0aGVcbiAqIHByb21pc2UgcmVzb2x2ZXMuIElmIHVuZGVmaW5lZCwgbm90aGluZyB3aWxsIGJlIHNob3duLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBBd2FpdChwcm9wcykge1xuICBjb25zdCBsb2FkaW5nID0gcHJvcHMubG9hZGluZyB8fCA8TG9hZGluZ0luZm8gLz47XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUobG9hZGluZyk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGUgPSBhc3luYyAodGhlUHJvbWlzZSwgZG9UaGVuLCBkb0NhdGNoKSA9PiB7XG4gICAgICB2YXIgcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhlUHJvbWlzZTtcbiAgICAgICAgaWYgKGRvVGhlbikge1xuICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGRvVGhlbihyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZG9DYXRjaCkge1xuICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGRvQ2F0Y2goZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IF9lcnJvciA9IGVycm9yICYmIGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgICAgICAgcmVzdWx0ID0gPHNwYW4+QW4gdW5oYW5kbGVkIGVycm9yIG9jY3VyZWQ6IHtfZXJyb3J9PC9zcGFuPjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2V0U3RhdGUocmVzdWx0KTtcbiAgICB9O1xuXG4gICAgaGFuZGxlKHByb3BzLnByb21pc2UsIHByb3BzLnRoZW4sIHByb3BzLmNhdGNoKTtcbiAgfSwgW3Byb3BzLnByb21pc2UsIHByb3BzLnRoZW4sIHByb3BzLmNhdGNoLCBzZXRTdGF0ZV0pO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgQ2hlY2tib3ggPSAoe1xuICBuYW1lLFxuICB2YWx1ZSxcbiAgaWNvbnMsXG4gIHN0eWxlLFxuICBjb2xvcixcbiAgcmVhZE9ubHksXG4gIG9uQ2hhbmdlLFxuICBvbkJsdXIsXG4gIHNldFZhbHVlLFxuICB0aXRsZSxcbn0pID0+IHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSh2YWx1ZSB8fCBcImZhbHNlXCIpO1xuICBzdHlsZSA9IHN0eWxlIHx8IFwiY2hlY2tcIjtcbiAgY29sb3IgPVxuICAgIGNvbG9yIHx8XG4gICAge1xuICAgICAgY2hlY2s6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1zdWNjZXNzXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgY29sb3ItbGlnaHQtZ3JlZW5cIixcbiAgICAgIH0sXG4gICAgICBcImNoZWNrLWZpbGxcIjoge1xuICAgICAgICB0cnVlOiBcIiB0ZXh0LXN1Y2Nlc3NcIixcbiAgICAgICAgZmFsc2U6IFwiIHRleHQtYm9keVwiLFxuICAgICAgICBwYXJ0aWFsOiBcIiBjb2xvci1saWdodC1ncmVlblwiLFxuICAgICAgfSxcbiAgICAgIHg6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1kYW5nZXJcIixcbiAgICAgICAgZmFsc2U6IFwiIHRleHQtYm9keVwiLFxuICAgICAgICBwYXJ0aWFsOiBcIiB0ZXh0LXdhcm5pbmdcIixcbiAgICAgIH0sXG4gICAgICBcIngtZmlsbFwiOiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtZGFuZ2VyXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgdGV4dC13YXJuaW5nXCIsXG4gICAgICB9LFxuICAgIH1bc3R5bGVdO1xuXG4gIGNvbnN0IGljb25DbGFzc05hbWVNYXAgPSB7XG4gICAgeDoge1xuICAgICAgdHJ1ZTogXCJiaSBiaS14LXNxdWFyZVwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmVcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICAgIFwieC1maWxsXCI6IHtcbiAgICAgIHRydWU6IFwiYmkgYmkteC1zcXVhcmUtZmlsbFwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmUtZmlsbFwiICsgY29sb3JbXCJwYXJ0aWFsXCJdLFxuICAgIH0sXG4gICAgY2hlY2s6IHtcbiAgICAgIHRydWU6IFwiYmkgYmktY2hlY2stc3F1YXJlXCIgKyBjb2xvcltcInRydWVcIl0sXG4gICAgICBmYWxzZTogXCJiaSBiaS1zcXVhcmVcIiArIGNvbG9yW1wiZmFsc2VcIl0sXG4gICAgICBwYXJ0aWFsOiBcImJpIGJpLXNsYXNoLXNxdWFyZVwiICsgY29sb3JbXCJwYXJ0aWFsXCJdLFxuICAgIH0sXG4gICAgXCJjaGVjay1maWxsXCI6IHtcbiAgICAgIHRydWU6IFwiYmkgYmktY2hlY2stc3F1YXJlLWZpbGxcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlLWZpbGxcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IHRyYW5zaXRpb25zID0ge1xuICAgIHBhcnRpYWw6IFwiZmFsc2VcIixcbiAgICB0cnVlOiBcImZhbHNlXCIsXG4gICAgZmFsc2U6IFwidHJ1ZVwiLFxuICB9O1xuXG4gIGNvbnN0IHByb3BzID0ge307XG5cbiAgdmFyIGlucHV0O1xuICBpZiAoIXJlYWRPbmx5KSB7XG4gICAgaW5wdXQgPSAoXG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3NOYW1lPVwiY2Fvc2RiLWNoZWNrLWJveC1pbnB1dFwiXG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICB2YWx1ZT17c3RhdGV9XG4gICAgICAvPlxuICAgICk7XG5cbiAgICBwcm9wcy5vbkNsaWNrID0gKCkgPT4ge1xuICAgICAgc2V0VmFsdWUobmFtZSwgdHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICAgIHNldFN0YXRlKHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgfTtcblxuICAgIHByb3BzLm9uS2V5RG93biA9IChlKSA9PiB7XG4gICAgICBpZiAoZS5jb2RlID09PSBcIlNwYWNlXCIpIHtcbiAgICAgICAgc2V0VmFsdWUobmFtZSwgdHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICAgICAgc2V0U3RhdGUodHJhbnNpdGlvbnNbc3RhdGVdKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBwcm9wcy50YWJJbmRleCA9IFwiMFwiO1xuICAgIHByb3BzLm9uQmx1ciA9IG9uQmx1cjtcbiAgfVxuXG4gIGljb25zID0gaWNvbnMgfHwge307XG5cbiAgY29uc3QgaWNvbiA9IGljb25zW3N0YXRlXSB8fCAoXG4gICAgPGlcbiAgICAgIGNsYXNzTmFtZT17XCJtcy0xIGNhb3NkYi1jaGVja2JveC1pY29uIFwiICsgaWNvbkNsYXNzTmFtZU1hcFtzdHlsZV1bc3RhdGVdfVxuICAgIC8+XG4gICk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IFwiY2Fvc2RiLWNoZWNrYm94IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIjtcbiAgaWYgKHJlYWRPbmx5KSB7XG4gICAgY2xhc3NOYW1lICs9IFwiIHJlYWQtb25seVwiO1xuICB9XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgIGFyaWEtY2hlY2tlZD17c3RhdGV9XG4gICAgPlxuICAgICAge2lucHV0fVxuICAgICAgPHNwYW4gey4uLnByb3BzfT57aWNvbn08L3NwYW4+XG4gICAgPC9zcGFuPlxuICApO1xufTtcblxuQ2hlY2tib3gucHJvcFR5cGVzID0ge1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2YoW1widHJ1ZVwiLCBcImZhbHNlXCJdKSxcbiAgaWNvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN0eWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjb2xvcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIHNldFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5jb25zdCBDYXJkID0gZnVuY3Rpb24gKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiB9KSB7XG4gIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSB8fCBcIlwiO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2BjYXJkIG10LTMgcm91bmRlZCBzaGFkb3cgJHtjbGFzc05hbWV9YH0+e2NoaWxkcmVufTwvZGl2PlxuICApO1xufTtcblxuQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLkJvZHkgPSBmdW5jdGlvbiBDYXJkQm9keSh7IGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1ib2R5XCI+e2NoaWxkcmVufTwvZGl2Pjtcbn07XG5cbkNhcmQuQm9keS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuQ2FyZC5Gb290ZXIgPSBmdW5jdGlvbiBDYXJkRm9vdGVyKHsgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZC1mb290ZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+e2NoaWxkcmVufTwvZGl2PlxuICApO1xufTtcblxuQ2FyZC5Gb290ZXIucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuVGl0bGUgPSBmdW5jdGlvbiBDYXJkVGl0bGUoeyBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiA8aDMgY2xhc3NOYW1lPVwiY2FyZC10aXRsZVwiPntjaGlsZHJlbn08L2gzPjtcbn07XG5cbkNhcmQuVGl0bGUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuSGVhZGVyID0gZnVuY3Rpb24gQ2FyZEhlYWRlcih7IHRpdGxlLCBjaGlsZHJlbiB9KSB7XG4gIHRpdGxlID0gdGl0bGUgPyA8Q2FyZC5UaXRsZT57dGl0bGV9PC9DYXJkLlRpdGxlPiA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtaGVhZGVyXCI+XG4gICAgICB7dGl0bGV9XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DYXJkLkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIHRpdGxlOiBQcm9wVHlwZXMubm9kZSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5leHBvcnQgeyBDYXJkIH07XG4iLCJmdW5jdGlvbiBfX18kaW5zZXJ0U3R5bGUoY3NzKSB7XG4gICAgaWYgKCFjc3MgfHwgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvY3NzJyk7XG4gICAgc3R5bGUuaW5uZXJIVE1MID0gY3NzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIHJldHVybiBjc3M7XG59XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdF9fZGVmYXVsdCBmcm9tICdyZWFjdCc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG5cclxudmFyIF9fYXNzaWduJDEgPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduJDEgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIF9fYXNzaWduJDEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZnVuY3Rpb24gX19hd2FpdGVyJDEodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBfX2dlbmVyYXRvciQxKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkkMSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxuXG4vKipcbiAqIEdpdmVzIGEgWFguWFggZm9ybWF0IGluIEJ5dGVzIEtCLCBNQiwgR0Igb3IgVEJcbiAqIEBwYXJhbSBmaWxlU2l6ZSBmaWxlIHNpemUgdG8gZ2l2ZSBmb3JtYXQgaW4gQnl0ZXNcbiAqL1xudmFyIGZpbGVTaXplRm9ybWF0ZXIgPSBmdW5jdGlvbiAoZmlsZVNpemUpIHtcbiAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAoIWZpbGVTaXplKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChmaWxlU2l6ZSA8IDEwMjQpIHtcbiAgICAgICAgcmVzdWx0ID0gZmlsZVNpemUgKyBcIiBCeXRlc1wiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy9LQlxuICAgICAgICBpZiAoZmlsZVNpemUgPCAxMDI0ICogMTAyNCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGZpbGVTaXplIC8gMTAyNCkudG9GaXhlZCgyKSArIFwiIEtCXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlsZVNpemUgPCAxMDI0ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9ICgoZmlsZVNpemUgLyAxMDI0KSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcIiBNQlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpbGVTaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0ICogMTAyNCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gKCgoZmlsZVNpemUgLyAxMDI0KSAvIDEwMjQpIC8gMTAyNCkudG9GaXhlZCgyKSArIFwiIEdCXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoKCgoZmlsZVNpemUgLyAxMDI0KSAvIDEwMjQpIC8gMTAyNCkgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCIgVEJcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBJdGFsaWFuIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lSXRhbGlhbiA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwiVHJhc2NpbmEgcXVpIGkgdHVvaSBmaWxlXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiQ2FyaWNhbWVudG8gZGkgXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIGZpbGVcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiRmlsZSBjYXJpY2F0aTogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgRmlsZSByaWZpdXRhdGk6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIk5lc3N1biBmaWxlIHZhbGlkbyBpbiBhdHRlc2EgZGkgZXNzZXJlIGNhcmljYXRvXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJUdXR0aSBpIHRpcGkgZGkgZmlsZSBzb25vIGFjY2V0dGF0aVwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiVGlwaSBkaSBmaWxlIGNvbnNlbnRpdGk6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIkNhcmljYW1lbnRvXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiRGltZW5zaW9uZSBtYXNzaW1hIFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJGaWxlICBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwiSWwgZmlsZSDDqCBzdGF0byBjYXJpY2F0byBjb24gc3VjY2Vzc28gXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIkVycm9yZSBkaSBjYXJpY2FtZW50byBkZWwgZmlsZVwiLFxufTtcbi8qKlxuICogSXRhbGlhbiB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbUl0YWxpYW4gPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIk5vbWU6IFwiLFxuICAgICAgICBzaXplOiBcIkRpbWVuc2lvbmU6IFwiLFxuICAgICAgICB0eXBlOiBcIlRpcG86IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcInByZXBhcmF6aW9uZVwiLFxuICAgICAgICB1cGxvYWRpbmc6IFwiSW4gY29yc29cIixcbiAgICAgICAgc3VjY2VzczogXCJTdWNjZXNzb1wiLFxuICAgICAgICB2YWxpZDogXCJWYWxpZG9cIixcbiAgICAgICAgZGVuaWVkOiBcIk5vbiB2w6FsaWRvXCIsXG4gICAgICAgIGVycm9yOiBcIkVycm9yZVwiLFxuICAgICAgICBhYm9ydGVkOiBcIkludGVycm90dG9cIlxuICAgIH0sXG59O1xuLyoqXG4gKiBJdGFsaWFuIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvckl0YWxpYW4gPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkgeyByZXR1cm4gXCJJbCBmaWxlIFxcdTAwRTggbW9sdG8gZ3JhbmRlLiBJbCB0YW0uIGlsIG1hc3NpbW8gXFx1MDBFOCBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7IH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiVGlwbyBkaSBmaWxlIGlsbGVnYWxlXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHsgcmV0dXJuIFwiTnVtZXJvIG1hc3NpbW8gZGkgZmlsZSAoXCIuY29uY2F0KG1heEZpbGVzLCBcIikgcmFnZ2l1bnRvXCIpOyB9XG59O1xuXG4vKipcbiAqIEZyZW5jaCB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZUZyZW5jaCA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwiRMOpcG9zZXogdm9zIGZpY2hpZXJzIGljaVwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIkVudm9pIGRlIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBmaWNoaWVyc1wiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJGaWNoaWVycyB0XFx1MDBFOWxcXHUwMEU5Y2hhcmdcXHUwMEU5cyA6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIEZpY2hpZXJzIHJlamV0XFx1MDBFOXM6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIkF1Y3VuIGZpY2hpZXIgdmFsaWRlIG5lIG1hbnF1ZVwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiVG91cyB0eXBlcyBkZSBmaWNoaWVycyBhY2NlcHRcXHUwMEU5cyBcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlR5cGVzIGRlIGZpY2hpZXI6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIkVudm95ZXJcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJUYWlsbGUgbWF4aW1hbGUgXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIkZpY2hpZXJzICBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwiTGUgZmljaGllciBhIMOpdMOpIHTDqWzDqWNoYXJnw6kgYXZlYyBzdWNjw6hzXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIkVycmV1ciBsb3JzIGR1IHTDqWzDqWNoYXJnZW1lbnQgXCIsXG59O1xuLyoqXG4gKiBGcmVuY2ggdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1GcmVuY2ggPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIkxlIG5vbTogXCIsXG4gICAgICAgIHNpemU6IFwiTGUgdGFpbGxlOiBcIixcbiAgICAgICAgdHlwZTogXCJMZSB0eXBlOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJwcsOpcGFyZXJcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIkVuIGNvdXJzXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiU3VjY8Ooc1wiLFxuICAgICAgICB2YWxpZDogXCJWYWxpZGVcIixcbiAgICAgICAgZGVuaWVkOiBcIlJlZnVzw6lcIixcbiAgICAgICAgZXJyb3I6IFwiRXJyZXVyXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiSW50ZXJyb21wdVwiXG4gICAgfSxcbn07XG4vKipcbiAqIEZyZW5jaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JGcmVuY2ggPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkgeyByZXR1cm4gXCJMZSBmaWNoaWVyIGVzdCB0clxcdTAwRThzIHZvbHVtaW5ldXguIExlIHRhbS4gbGUgbWF4aW11bSBlc3QgZGUgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpOyB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlR5cGUgZGUgZmljaGllciBpbGxcXHUwMEU5Z2FsIFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7IHJldHVybiBcIkxpbWl0ZSBkZSBmaWNoaWVycyBhdHRlaW50ZSAoXCIuY29uY2F0KG1heEZpbGVzLCBcIilcIik7IH1cbn07XG5cbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZUVuZ2xpc2ggPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIkRyb3AgeW91ciBmaWxlcyBoZXJlXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiVXBsb2FkaW5nIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBmaWxlc1wiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJVcGxvYWRlZCBmaWxlczogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgUmVqZWN0ZWQgZmlsZXM6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIlRoZXJlIGlzIG5vIG1pc3NpbmcgdmFsaWQgZmlsZSB0byB1cGxvYWRcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIkFsbCBmaWxlIHR5cGVzIGFjY2VwdGVkXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJBbGxvd2VkIHR5cGVzOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJVcGxvYWQgZmlsZXNcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJNYXggZmlsZSBzaXplOiBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiRmlsZXMgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIkZpbGUgd2FzIHN1Y2Nlc3NmdWx5IHVwbG9hZGVkXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIkVycm9yIG9uIHVwbG9hZGluZy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIixcbn07XG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1FbmdsaXNoID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJOYW1lOiBcIixcbiAgICAgICAgc2l6ZTogXCJTaXplOiBcIixcbiAgICAgICAgdHlwZTogXCJUeXBlOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJQcmVwYXJpbmdcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIlVwbG9hZGluZ1wiLFxuICAgICAgICBzdWNjZXNzOiBcIlN1Y2Nlc3NcIixcbiAgICAgICAgdmFsaWQ6IFwiVmFsaWRcIixcbiAgICAgICAgZGVuaWVkOiBcIk5vdCB2YWxpZFwiLFxuICAgICAgICBlcnJvcjogXCJFcnJvclwiLFxuICAgICAgICBhYm9ydGVkOiBcIkFib3J0ZWRcIlxuICAgIH0sXG59O1xuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvckVuZ2xpc2ggPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkge1xuICAgICAgICByZXR1cm4gXCJGaWxlIGlzIHRvbyBiaWcuIE1heCBmaWxlIHNpemUgYWxsb3dlZCBpcyBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7XG4gICAgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJGaWxlIHR5cGUgaXMgbm90IGFsbG93ZWRcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykge1xuICAgICAgICByZXR1cm4gXCJNYXggYW1vdW50IG9mIGZpbGVzIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKSBoYXMgYmVlbiByZWFjaGVkXCIpO1xuICAgIH1cbn07XG5cbi8qKlxuICogU3BhbmlzaCB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZVNwYW5pc2ggPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIlN1ZWx0YSB0dXMgYXJjaGl2b3MgYXF1w61cIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJTdWJpZW5kbyBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgYXJjaGl2b3NcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiQXJjaGl2b3Mgc3ViaWRvczogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgQXJjaGl2b3MgcmVjaGF6YWRvczogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiTm8gaGF5IGFyY2hpdm9zIHZcXHUwMEUxbGlkb3MgcGVuZGllbnRlcyBwb3Igc3ViaXJcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlRvZG9zIGxvcyB0aXBvcyBkZSBhcmNoaXZvIGFjZXB0YWRvc1wiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiVGlwbyhzKSBkZSBhcmNoaXZvIHBlcm1pdGlkb3M6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIlN1YmlyXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiVGFtLiBtXFx1MDBFMXhpbW8gXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIkFyY2hpdm9zIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCJFbCBhcmNoaXZvIHNlIHN1YmnDsyBjb3JyZWN0YW1lbnRlXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIkVycm9yIGFsIHN1YmlyIGVsIGFyY2hpdm9cIixcbn07XG4vKipcbiAqIFNwYW5pc2ggdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1TcGFuaXNoID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJOb21icmU6IFwiLFxuICAgICAgICBzaXplOiBcIlRhbWHDsW86IFwiLFxuICAgICAgICB0eXBlOiBcIlRpcG86IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIlByZXBhcmFuZG9cIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIlN1YmllbmRvXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiw4l4aXRvXCIsXG4gICAgICAgIHZhbGlkOiBcIlbDoWxpZG9cIixcbiAgICAgICAgZGVuaWVkOiBcIk5vIHbDoWxpZG9cIixcbiAgICAgICAgZXJyb3I6IFwiRXJyb3JcIixcbiAgICAgICAgYWJvcnRlZDogXCJBbnVsYWRvXCJcbiAgICB9LFxufTtcbi8qKlxuICogU3BhbmlzaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JTcGFuaXNoID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHsgcmV0dXJuIFwiRWwgYXJjaGl2byBlcyBtdXkgZ3JhbmRlLiBFbCB0YW0uIG1cXHUwMEUxeGltbyBlcyBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7IH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiVGlwbyBkZSBhcmNoaXZvIG5vIHBlcm1pdGlkb1wiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7IHJldHVybiBcIkNhbnRpZGFkIG1cXHUwMEUxeGltYSBkZSBhcmNoaXZvcyAoXCIuY29uY2F0KG1heEZpbGVzLCBcIikgYWxjYW56YWRhXCIpOyB9XG59O1xuXG4vKipcbiAqIFJ1c3NpYW4gdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVSdXNzaWFuID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCLQn9C10YDQtdGC0LDRidC40YLQtSDRgdGO0LTQsCDRgdCy0L7QuCDRhNCw0LnQu9GLLlwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIlxcdTA0MTJcXHUwNDRCXFx1MDQzM1xcdTA0NDBcXHUwNDQzXFx1MDQzN1xcdTA0M0FcXHUwNDMwIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzJcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiXFx1MDQxN1xcdTA0MzBcXHUwNDMzXFx1MDQ0MFxcdTA0NDNcXHUwNDM2XFx1MDQzNVxcdTA0M0RcXHUwNDNFIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMjogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgXFx1MDQzRVxcdTA0NDJcXHUwNDNBXFx1MDQzQlxcdTA0M0VcXHUwNDNEXFx1MDQzNVxcdTA0M0RcXHUwNDNEXFx1MDQ0QlxcdTA0NDUgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0M0VcXHUwNDMyOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJcXHUwNDE0XFx1MDQzNVxcdTA0MzlcXHUwNDQxXFx1MDQ0MlxcdTA0MzJcXHUwNDM4XFx1MDQ0MlxcdTA0MzVcXHUwNDNCXFx1MDQ0Q1xcdTA0M0RcXHUwNDRCXFx1MDQzOSBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCIFxcdTA0M0RcXHUwNDM1IFxcdTA0M0VcXHUwNDQyXFx1MDQ0MVxcdTA0NDNcXHUwNDQyXFx1MDQ0MVxcdTA0NDJcXHUwNDMyXFx1MDQ0M1xcdTA0MzVcXHUwNDQyIFxcdTA0MzRcXHUwNDNCXFx1MDQ0RiBcXHUwNDM3XFx1MDQzMFxcdTA0MzNcXHUwNDQwXFx1MDQ0M1xcdTA0MzdcXHUwNDNBXFx1MDQzOFwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiXFx1MDQxRlxcdTA0NDBcXHUwNDM4XFx1MDQzRFxcdTA0MzhcXHUwNDNDXFx1MDQzMFxcdTA0NEVcXHUwNDQyXFx1MDQ0MVxcdTA0NEYgXFx1MDQzMlxcdTA0NDFcXHUwNDM1IFxcdTA0NDJcXHUwNDM4XFx1MDQzRlxcdTA0NEIgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0M0VcXHUwNDMyIFwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiXFx1MDQxNFxcdTA0M0VcXHUwNDNGXFx1MDQ0M1xcdTA0NDFcXHUwNDQyXFx1MDQzOFxcdTA0M0NcXHUwNDRCXFx1MDQzNSBcXHUwNDQyXFx1MDQzOFxcdTA0M0ZcXHUwNDRCOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCLQntGC0L/RgNCw0LLQuNGC0YxcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJcXHUwNDNDXFx1MDQzMFxcdTA0M0FcXHUwNDQxIFxcdTA0NDBcXHUwNDMwXFx1MDQzN1xcdTA0M0NcXHUwNDM1XFx1MDQ0MDogXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIlxcdTA0MjRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDRCIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCLQpNCw0LnQuyDQsdGL0Lsg0YPRgdC/0LXRiNC90L4g0LfQsNCz0YDRg9C20LXQvVwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCLQntGI0LjQsdC60LAg0L/RgNC4INC30LDQs9GA0YPQt9C60LVcIixcbn07XG4vKipcbiAqIFJ1c3NpYW4gdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICpcbiAqL1xudmFyIEZpbGVJdGVtUnVzc2lhbiA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiXFx1MDQxOFxcdTA0M0NcXHUwNDRGOiBcIixcbiAgICAgICAgc2l6ZTogXCLQoNCw0LfQvNC10YA6IFwiLFxuICAgICAgICB0eXBlOiBcIlTQuNC/OiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCLQv9C+0LTQs9C+0YLQvtCy0LrQsFwiLFxuICAgICAgICB1cGxvYWRpbmc6IFwi0JfQsNCz0YDRg9C30LrQsFwiLFxuICAgICAgICBzdWNjZXNzOiBcItGD0YHQv9C10YVcIixcbiAgICAgICAgdmFsaWQ6IFwi0LPQvtC00L3Ri9C5XCIsXG4gICAgICAgIGRlbmllZDogXCLQstGL0LrQuNC90YPRgtGL0LlcIixcbiAgICAgICAgZXJyb3I6IFwi0L7RiNC40LHQutCwXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwi0L/RgNC10YDQstCw0L3QvdGL0LlcIlxuICAgIH0sXG59O1xuLyoqXG4gKiBSdXNzaWFuIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvclJ1c3NpYW4gPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkge1xuICAgICAgICByZXR1cm4gXCJcXHUwNDI0XFx1MDQzMFxcdTA0MzlcXHUwNDNCIFxcdTA0NDFcXHUwNDNCXFx1MDQzOFxcdTA0NDhcXHUwNDNBXFx1MDQzRVxcdTA0M0MgXFx1MDQzMVxcdTA0M0VcXHUwNDNCXFx1MDQ0Q1xcdTA0NDhcXHUwNDNFXFx1MDQzOS4gXFx1MDQxQ1xcdTA0MzBcXHUwNDNBXFx1MDQ0MVxcdTA0MzhcXHUwNDNDXFx1MDQzMFxcdTA0M0JcXHUwNDRDXFx1MDQzRFxcdTA0M0UgXFx1MDQzNFxcdTA0M0VcXHUwNDNGXFx1MDQ0M1xcdTA0NDFcXHUwNDQyXFx1MDQzOFxcdTA0M0NcXHUwNDRCXFx1MDQzOSBcXHUwNDQwXFx1MDQzMFxcdTA0MzdcXHUwNDNDXFx1MDQzNVxcdTA0NDAgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0MzAgLSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7XG4gICAgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJcXHUwNDIyXFx1MDQzOFxcdTA0M0YgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0MzAgXFx1MDQzRFxcdTA0MzUgXFx1MDQ0MFxcdTA0MzBcXHUwNDM3XFx1MDQ0MFxcdTA0MzVcXHUwNDQ4XFx1MDQzNVxcdTA0M0RcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykge1xuICAgICAgICByZXR1cm4gXCJcXHUwNDE0XFx1MDQzRVxcdTA0NDFcXHUwNDQyXFx1MDQzOFxcdTA0MzNcXHUwNDNEXFx1MDQ0M1xcdTA0NDJcXHUwNDNFIFxcdTA0M0NcXHUwNDMwXFx1MDQzQVxcdTA0NDFcXHUwNDM4XFx1MDQzQ1xcdTA0MzBcXHUwNDNCXFx1MDQ0Q1xcdTA0M0RcXHUwNDNFXFx1MDQzNSBcXHUwNDNBXFx1MDQzRVxcdTA0M0JcXHUwNDM4XFx1MDQ0N1xcdTA0MzVcXHUwNDQxXFx1MDQ0MlxcdTA0MzJcXHUwNDNFIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMiAoXCIuY29uY2F0KG1heEZpbGVzLCBcIilcIik7XG4gICAgfVxufTtcblxuLyoqXG4gKiBQb3J0dWd1ZXNlIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZVxuICovXG52YXIgRHJvcHpvbmVQb3J0dWd1ZXNlID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJTb2x0ZSBzZXVzIGFycXVpdm9zIGFxdWkgXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiRW52aWFuZG8gXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIGFycXVpdm9zXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIkFycXVpdm9zIGVudmlhZG9zOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBBcnF1aXZvcyByZWplaXRhZG9zOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJOZW5odW0gYXJxdWl2byB2XFx1MDBFMWxpZG8gZXN0XFx1MDBFMSBmYWx0YW5kbyBwYXJhIGVudmlhclwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiVG9kb3Mgb3MgdGlwb3MgZGUgYXJxdWl2byBzXFx1MDBFM28gYWNlaXRvc1wiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiVGlwb3MgcGVybWl0aWRvczogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwiRW52aWFyXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiVGFtYW5obyBtXFx1MDBFMXhpbW86IFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJBcnF1aXZvcyBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwiTyBhcnF1aXZvIGZvaSBlbnZpYWRvIGNvbSBzdWNlc3NvXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIkVycm8gYW8gZW52aWFyXCIsXG59O1xuLyoqXG4gKiBQb3J0dWd1ZXNlIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtUG9ydHVndWVzZSA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTm9tZTogXCIsXG4gICAgICAgIHNpemU6IFwiVGFtYW5obzogXCIsXG4gICAgICAgIHR5cGU6IFwiVGlwbzogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwiUHJlcGFyYW5kb1wiLFxuICAgICAgICB1cGxvYWRpbmc6IFwiRW52aWFuZG9cIixcbiAgICAgICAgc3VjY2VzczogXCLDinhpdG9cIixcbiAgICAgICAgdmFsaWQ6IFwidsOhbGlkb1wiLFxuICAgICAgICBkZW5pZWQ6IFwiTmVnYWRvXCIsXG4gICAgICAgIGVycm9yOiBcIkVycm9cIixcbiAgICAgICAgYWJvcnRlZDogXCJBYm9ydGFkb1wiXG4gICAgfSxcbn07XG4vKipcbiAqIFBvcnR1Z3Vlc2UgdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yUG9ydHVndWVzZSA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7IHJldHVybiBcIk8gYXJxdWl2byBcXHUwMEU5IG11aXRvIGdyYW5kZS4gTyB0YW1hbmhvIG1cXHUwMEUxeGltbyBkZSBhcnF1aXZvIHBlcm1pdGlkbyBcXHUwMEU5IFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTsgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJPIHRpcG8gZGUgYXJxdWl2byBuXFx1MDBFM28gXFx1MDBFOSBwZXJtaXRpZG8gXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHsgcmV0dXJuIFwiUXVhbnRpZGFkZSBtXFx1MDBFMXhpbWEgZGUgYXJxdWl2b3MgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpIGFsY2FuXFx1MDBFN2FkYVwiKTsgfVxufTtcblxuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lU2ltcGxpZmllZENoaW5lc2UgPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIuWwhuaCqOeahOaWh+S7tuaUvuWcqOi/memHjFwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIlxcdTRFMEFcXHU0RjIwIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBcXHU0RTJBXFx1NjU4N1xcdTRFRjZcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiXFx1NEUwQVxcdTRGMjBcXHU2NTg3XFx1NEVGNlxcdUZGMUFcIi5jb25jYXQodXBsb2FkZWQsIFwiXFx1RkYwQ1xcdTYyRDJcXHU3RUREXFx1NjU4N1xcdTRFRjZcXHVGRjFBXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiXFx1NkNBMVxcdTY3MDlcXHU3RjNBXFx1NUMxMVxcdTg5ODFcXHU1MkEwXFx1OEY3RFxcdTc2ODRcXHU2NzA5XFx1NjU0OFxcdTY1ODdcXHU0RUY2XCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJcXHU2M0E1XFx1NTNEN1xcdTYyNDBcXHU2NzA5XFx1NjU4N1xcdTRFRjZcXHU3QzdCXFx1NTc4QlwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiXFx1NTE0MVxcdThCQjhcXHU3Njg0XFx1N0M3QlxcdTU3OEI6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIuS4iuS8oOaWh+S7tlwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU1OTI3XFx1NUMwRlxcdUZGMUFcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiXFx1NjU4N1xcdTY4NjMgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIuaWh+S7tuW3suaIkOWKn+S4iuS8oFwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCLkuIrkvKDml7blh7rplJlcIixcbn07XG4vKipcbiAqIENoaW5uZXNlIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtU2ltcGxpZmllZENoaW5lc2UgPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIlxcdTY1ODdcXHU2ODYzXFx1NTQwRFxcdTc5RjA6IFwiLFxuICAgICAgICBzaXplOiBcIuWwuuWvuDogXCIsXG4gICAgICAgIHR5cGU6IFwi5paH5Lu257G75Z6LOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCLpooTliqDovb1cIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIuS4iuS8oFwiLFxuICAgICAgICBzdWNjZXNzOiBcIuaIkOWKn1wiLFxuICAgICAgICB2YWxpZDogXCLmjqXlj5fnmoTmlofku7ZcIixcbiAgICAgICAgZGVuaWVkOiBcIuiiq+aLkue7neeahOaWh+S7tlwiLFxuICAgICAgICBlcnJvcjogXCLplJnor69cIixcbiAgICAgICAgYWJvcnRlZDogXCLkuK3mraJcIlxuICAgIH0sXG59O1xuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvclNpbXBsaWZpZWRDaGluZXNlID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1NjU4N1xcdTRFRjZcXHU1OTJBXFx1NTkyN1xcdTMwMDIgXFx1NTE0MVxcdThCQjhcXHU3Njg0XFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTU5MjdcXHU1QzBGXFx1NEUzQSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7XG4gICAgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJcXHU2NTg3XFx1NEVGNlxcdTdDN0JcXHU1NzhCXFx1NEUwRFxcdTUxNDFcXHU4QkI4XCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1NURGMlxcdThGQkVcXHU1MjMwXFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTY1NzAgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpO1xuICAgIH1cbn07XG5cbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZVRyYWRpdGlvbmFsQ2hpbmVzZSA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwi5oqK5L2g55qE5paH5Lu25pS+5Zyo6YCZ6KOhIFwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIlxcdTRFMEFcXHU1MEIzXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiXFx1NTAwQlxcdTY1ODdcXHU0RUY2XCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIlxcdTRFMEFcXHU1MEIzXFx1NjU4N1xcdTRFRjY6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIFxcdTYyRDJcXHU3RDU1XFx1NzY4NFxcdTY1ODdcXHU0RUY2XFx1RkYxQVwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIlxcdTZDOTJcXHU2NzA5XFx1N0YzQVxcdTVDMTFcXHU4OTgxXFx1NEUwQVxcdTUwQjNcXHU3Njg0XFx1NjcwOVxcdTY1NDhcXHU2NTg3XFx1NEVGNlwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiXFx1NjNBNVxcdTUzRDdcXHU2MjQwXFx1NjcwOVxcdTY1ODdcXHU0RUY2XFx1OTg1RVxcdTU3OEJcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlxcdTUxNDFcXHU4QTMxXFx1NzY4NFxcdTk4NUVcXHU1NzhCXFx1RkYxQVwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIuS4iuWCs+aWh+S7tlwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU1OTI3XFx1NUMwRlxcdUZGMUFcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiIFxcdTY1ODdcXHU0RUY2IFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCLmlofku7blt7LmiJDlip/kuIrlgrNcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwi5LiK5YKz5pmC5Ye66YyvXCIsXG59O1xuLyoqXG4gKiBDaGluZXNlIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtVHJhZGl0aW9uYWxDaGluZXNlID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJcXHU2NTg3XFx1NkE5NFxcdTU0MERcXHU3QTMxOiBcIixcbiAgICAgICAgc2l6ZTogXCLmlofku7blpKflsI86IFwiLFxuICAgICAgICB0eXBlOiBcIuaWh+S7tumhnuWeizogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwi6aCQ5Yqg6LyJXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCLkuIrlgrNcIixcbiAgICAgICAgc3VjY2VzczogXCLmiJDlip9cIixcbiAgICAgICAgdmFsaWQ6IFwi5pyJ5pWI5paH5Lu2XCIsXG4gICAgICAgIGRlbmllZDogXCLnhKHmlYjmlofku7ZcIixcbiAgICAgICAgZXJyb3I6IFwi6Yyv6KqkXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwi5Lit5q2iXCJcbiAgICB9LFxufTtcbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JUcmFkaXRpb25hbENoaW5lc2UgPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkge1xuICAgICAgICByZXR1cm4gXCJcXHU2NTg3XFx1NEVGNlxcdTU5MkFcXHU1OTI3XFx1MzAwMiBcXHU1MTQxXFx1OEEzMVxcdTc2ODRcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NTkyN1xcdTVDMEZcXHU3MEJBIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTtcbiAgICB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlxcdTY1ODdcXHU0RUY2XFx1OTg1RVxcdTU3OEJcXHU0RTBEXFx1NTE0MVxcdThBMzFcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykge1xuICAgICAgICByZXR1cm4gXCJcXHU1REYyXFx1OTA1NFxcdTUyMzBcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NjU3OCAoXCIuY29uY2F0KG1heEZpbGVzLCBcIilcIik7XG4gICAgfVxufTtcblxudmFyIEZpbGVJdGVtTG9jYWxpemVyID0ge1xuICAgIFwiRVMtZXNcIjogRmlsZUl0ZW1TcGFuaXNoLFxuICAgIFwiRU4tZW5cIjogRmlsZUl0ZW1FbmdsaXNoLFxuICAgIFwiRlItZnJcIjogRmlsZUl0ZW1GcmVuY2gsXG4gICAgXCJJVC1pdFwiOiBGaWxlSXRlbUl0YWxpYW4sXG4gICAgXCJQVC1wdFwiOiBGaWxlSXRlbVBvcnR1Z3Vlc2UsXG4gICAgXCJSVS1ydVwiOiBGaWxlSXRlbVJ1c3NpYW4sXG4gICAgXCJaSC1jblwiOiBGaWxlSXRlbVNpbXBsaWZpZWRDaGluZXNlLFxuICAgIFwiWkgtaGtcIjogRmlsZUl0ZW1UcmFkaXRpb25hbENoaW5lc2Vcbn07XG4vKipcbiAqIFNlY3VyZSB0cmFuc2xhdGlvbiB0aHJvdWdoIGEgc2VsZWN0b3JcbiAqIEBwYXJhbSBsb2NhbCB0aGUgTG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIENvbXBvbmVudExvY2FsaXplciBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdHJhbnNsYXRpb25cbiAqL1xudmFyIEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IgPSBmdW5jdGlvbiAobG9jYWwpIHtcbiAgICBzd2l0Y2ggKGxvY2FsKSB7XG4gICAgICAgIGNhc2UgXCJFUy1lc1wiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJFUy1lc1wiXTtcbiAgICAgICAgY2FzZSBcIkVOLWVuXCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIkVOLWVuXCJdO1xuICAgICAgICBjYXNlIFwiRlItZnJcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiRlItZnJcIl07XG4gICAgICAgIGNhc2UgXCJJVC1pdFwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJJVC1pdFwiXTtcbiAgICAgICAgY2FzZSBcIlBULXB0XCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIlBULXB0XCJdO1xuICAgICAgICBjYXNlIFwiUlUtcnVcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiUlUtcnVcIl07XG4gICAgICAgIGNhc2UgXCJaSC1jblwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJaSC1jblwiXTtcbiAgICAgICAgY2FzZSBcIlpILWhrXCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIlpILWhrXCJdO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICB9XG59O1xuXG52YXIgRHJvcHpvbmVMb2NhbGl6ZXIgPSB7XG4gICAgXCJFUy1lc1wiOiBEcm9wem9uZVNwYW5pc2gsXG4gICAgXCJFTi1lblwiOiBEcm9wem9uZUVuZ2xpc2gsXG4gICAgXCJGUi1mclwiOiBEcm9wem9uZUZyZW5jaCxcbiAgICBcIklULWl0XCI6IERyb3B6b25lSXRhbGlhbixcbiAgICBcIlBULXB0XCI6IERyb3B6b25lUG9ydHVndWVzZSxcbiAgICBcIlJVLXJ1XCI6IERyb3B6b25lUnVzc2lhbixcbiAgICBcIlpILWNuXCI6IERyb3B6b25lU2ltcGxpZmllZENoaW5lc2UsXG4gICAgXCJaSC1oa1wiOiBEcm9wem9uZVRyYWRpdGlvbmFsQ2hpbmVzZVxufTtcbi8qKlxuICogU2VjdXJlIHRyYW5zbGF0aW9uIHRocm91Z2ggYSBzZWxlY3RvclxuICogQHBhcmFtIGxvY2FsIHRoZSBMb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zIGEgQ29tcG9uZW50TG9jYWxpemVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvblxuICovXG52YXIgRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3RvciA9IGZ1bmN0aW9uIChsb2NhbCkge1xuICAgIHN3aXRjaCAobG9jYWwpIHtcbiAgICAgICAgY2FzZSBcIkVTLWVzXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIkVTLWVzXCJdO1xuICAgICAgICBjYXNlIFwiRU4tZW5cIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgICAgIGNhc2UgXCJGUi1mclwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJGUi1mclwiXTtcbiAgICAgICAgY2FzZSBcIklULWl0XCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIklULWl0XCJdO1xuICAgICAgICBjYXNlIFwiUFQtcHRcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiUFQtcHRcIl07XG4gICAgICAgIGNhc2UgXCJSVS1ydVwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJSVS1ydVwiXTtcbiAgICAgICAgY2FzZSBcIlpILWNuXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIlpILWNuXCJdO1xuICAgICAgICBjYXNlIFwiWkgtaGtcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiWkgtaGtcIl07XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIkVOLWVuXCJdO1xuICAgIH1cbn07XG5cbnZhciBWYWxpZGF0ZUVycm9yTG9jYWxpemVyID0ge1xuICAgIFwiRVMtZXNcIjogVmFsaWRhdGVFcnJvclNwYW5pc2gsXG4gICAgXCJFTi1lblwiOiBWYWxpZGF0ZUVycm9yRW5nbGlzaCxcbiAgICBcIkZSLWZyXCI6IFZhbGlkYXRlRXJyb3JGcmVuY2gsXG4gICAgXCJJVC1pdFwiOiBWYWxpZGF0ZUVycm9ySXRhbGlhbixcbiAgICBcIlBULXB0XCI6IFZhbGlkYXRlRXJyb3JQb3J0dWd1ZXNlLFxuICAgIFwiUlUtcnVcIjogVmFsaWRhdGVFcnJvclJ1c3NpYW4sXG4gICAgXCJaSC1jblwiOiBWYWxpZGF0ZUVycm9yU2ltcGxpZmllZENoaW5lc2UsXG4gICAgXCJaSC1oa1wiOiBWYWxpZGF0ZUVycm9yVHJhZGl0aW9uYWxDaGluZXNlLFxufTtcbi8qKlxuICogU2VjdXJlIHRyYW5zbGF0aW9uIHRocm91Z2ggYSBzZWxlY3RvclxuICogQHBhcmFtIGxvY2FsIHRoZSBMb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zIGEgQ29tcG9uZW50TG9jYWxpemVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvblxuICovXG52YXIgVmFsaWRhdGVFcnJvckxvY2FsaXplclNlbGVjdG9yID0gZnVuY3Rpb24gKGxvY2FsKSB7XG4gICAgaWYgKCFsb2NhbCB8fCAhW1wiRVMtZXNcIiwgXCJFTi1lblwiLCBcIkZSLWZyXCIsIFwiSVQtaXRcIiwgXCJQVC1wdFwiLCBcIlJVLXJ1XCIsIFwiWkgtY25cIiwgXCJaSC1oa1wiXS5pbmNsdWRlcyhsb2NhbCkpIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICB9XG4gICAgcmV0dXJuIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJbbG9jYWxdO1xufTtcblxuLyoqXG4gKiBSZWFkcyBhbiBpbWFnZSAob3Igb3RoZXIgdHlwZSkgZmlsZSBhcyBkYXRhIFVSTCBpbiBhIHByb21pc2Ugd2F5LFxuICogc28geW91IGNhbiB1c2UgYXdhaXQuXG4gKiBJdCB3aWxsIHJldHVybiBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBVUkwgcmVwcmVzZW50YXRpb25cbiAqIEBwYXJhbSBmaWxlIEZpbGUgb3IgQmxvYiBvYmplY3RcbiAqIEByZXR1cm5zIGRhdGEgVVJMIG9mIHRoZSBmaWxlXG4gKi9cbnZhciByZWFkQXNEYXRhVVJMID0gZnVuY3Rpb24gKGZpbGUsIG9uUHJvZ3Jlc3MsIG9uRXJyb3IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlYWRlcl8xID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlcl8xLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfMS5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8xLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbi8qKlxuICogUmVhZHMgYSBmaWxlIGFzIFRleHQgaW4gYSBwcm9taXNlIHdheSwgc28geW91IGNhbiB1c2UgYXdhaXQuXG4gKiBJZiBvdGhlciBraW5kIG9mIGZpbGUgaXMgc2VudCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgaXQgYW55d2F5XG4gKiBhbmQgd2lsbCByZXR1cm4gYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgVVJMIHJlcHJlc2VudGF0aW9uXG4gKiBAcGFyYW0gZmlsZSBGaWxlIG9yIEJsb2Igb2JqZWN0XG4gKiBAcGFyYW0gZW5jb2RpbmcgVGhlIHR5cGUgb2YgZW5jb2Rpbmcgc3VjaCBhcyBcImJhc2U2NFwiXG4gKiBAcmV0dXJucyBkYXRhIHRleHQgb2YgdGhlIGZpbGVcbiAqL1xudmFyIHJlYWRBc1RleHQgPSBmdW5jdGlvbiAoZmlsZSwgZW5jb2RpbmcsIG9uUHJvZ3Jlc3MsIG9uRXJyb3IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlYWRlcl8yID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlcl8yLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlcl8yLnJlc3VsdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzIub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzID09PSBudWxsIHx8IG9uUHJvZ3Jlc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUHJvZ3Jlc3MoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMi5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8yLnJlYWRBc1RleHQoZmlsZSwgZW5jb2RpbmcgPyBlbmNvZGluZyA6IFwiYmFzZTY0XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4vKipcbiAqIFJlYWRzIGEgZmlsZSBhbmQgcmV0dXJuIHRoZSByYXcgYmluYXJ5IGRhdGEgZnJvbSB0aGUgZmlsZS5cbiAqIEBwYXJhbSBmaWxlIEZpbGUgb3IgQmxvYiBvYmplY3RcbiAqIEBwYXJhbSBlbmNvZGluZyBUaGUgdHlwZSBvZiBlbmNvZGluZyBzdWNoIGFzIFwiYmFzZTY0XCJcbiAqIEByZXR1cm5zIHJhdyBiaW5hcnkgZGF0YSBvZiB0aGUgZmlsZVxuICovXG52YXIgcmVhZEFzQmluYXJ5U3RyaW5nID0gZnVuY3Rpb24gKGZpbGUsIG9uUHJvZ3Jlc3MsIG9uRXJyb3IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlYWRlcl8zID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlcl8zLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlcl8zLnJlc3VsdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzMub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzID09PSBudWxsIHx8IG9uUHJvZ3Jlc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUHJvZ3Jlc3MoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMy5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8zLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSZWFkcyBhIGZpbGUgYW5kIHJldHVybnMgYW4gQXJyYXlCdWZmZXIgcmVwcmVzZW50aW5nIHRoZSBmaWxlJ3MgZGF0YVxuICogQHBhcmFtIGZpbGUgRmlsZSBvciBibG9iIG9iamVjdFxuICogQHBhcmFtIGVuY29kaW5nIFRoZSB0eXBlIG9mIGVuY29kaW5nIHN1Y2ggYXMgXCJiYXNlNjRcIlxuICogQHJldHVybnMgQXJyYXlCdWZmZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGZpbGVcbiAqL1xudmFyIHJlYWRBc0FycmF5QnVmZmVyID0gZnVuY3Rpb24gKGZpbGUsIG9uUHJvZ3Jlc3MsIG9uRXJyb3IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlYWRlcl80ID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlcl80Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlYWRlcl80LnJlc3VsdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzQub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzID09PSBudWxsIHx8IG9uUHJvZ3Jlc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUHJvZ3Jlc3MoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfNC5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl80LnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8qKlxuICogUmVzaXplIGFuIGltYWdlIHJlc29sdXRpb24gZ2l2ZW4gbWF4V2lkdGggYW5kIG1heEhlaWdodFxuICpcbiAqIFNob3VsZCBiZSBjYWxsZWQgd2l0aCBhd2FpdFxuICogQHBhcmFtIGJhc2U2NFN0ciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbWFlIGZpbGVcbiAqIEBwYXJhbSBtYXhXaWR0aCB0aGUgbWF4IHdpZHRoIG9mIGhlIGltYWdlXG4gKiBAcGFyYW0gbWF4SGVpZ2h0IHRoZSBtYXggaGVpZ2h0IG9mIGhlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgcmVzaXplZCBpbWFnZVxuICovXG5mdW5jdGlvbiByZXNpemVJbWFnZShiYXNlNjRTdHIsIG1heFdpZHRoLCBtYXhIZWlnaHQpIHtcbiAgICBpZiAobWF4V2lkdGggPT09IHZvaWQgMCkgeyBtYXhXaWR0aCA9IDEzNTsgfVxuICAgIGlmIChtYXhIZWlnaHQgPT09IHZvaWQgMCkgeyBtYXhIZWlnaHQgPSAxMjA7IH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGltZ18xID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWdfMS5zcmMgPSBiYXNlNjRTdHI7XG4gICAgICAgICAgICBpbWdfMS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgICAgIHZhciBNQVhfV0lEVEggPSBtYXhXaWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgTUFYX0hFSUdIVCA9IG1heEhlaWdodDtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBpbWdfMS53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nXzEuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmIChtYXhXaWR0aCA+IHdpZHRoICYmIG1heEhlaWdodCA+IGhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGJhc2U2NFN0cik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IE1BWF9XSURUSCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICo9IE1BWF9XSURUSCAvIHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBNQVhfV0lEVEg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiBNQVhfSEVJR0hUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAqPSBNQVhfSEVJR0hUIC8gaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gTUFYX0hFSUdIVDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nXzEsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGNhbnZhcy50b0RhdGFVUkwoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkFuIGVycm9yIG9jdXJyZWQgd2hlbiB0cnlpbmcgdG8gbWFrZSBhIHRodW1uYWlsXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBbiBlcnJvciBvY3VycmVkIHdoZW4gdHJ5aW5nIHRvIG1ha2UgYSB0aHVtbmFpbFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogUmVzaXplIGFuIGltYWdlIHJlc29sdXRpb24gZ2l2ZW4gbWF4V2lkdGggYW5kIG1heEhlaWdodFxuICpcbiAqIFNob3VsZCBiZSBjYWxsZWQgd2l0aCBhd2FpdFxuICogQHBhcmFtIGJhc2U2NFN0ciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbWFlIGZpbGVcbiAqIEBwYXJhbSBtYXhXaWR0aCB0aGUgbWF4IHdpZHRoIG9mIGhlIGltYWdlXG4gKiBAcGFyYW0gbWF4SGVpZ2h0IHRoZSBtYXggaGVpZ2h0IG9mIGhlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgcmVzaXplZCBpbWFnZVxuICovXG5mdW5jdGlvbiBnZXRJbWFnZU9yaWVudGF0aW9uKGltYWdlU291cmNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImdldEltYWdlT3JpZW50YXRpb24gaW1hZ2VTb3VyY2VcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICBpZiAoIWltYWdlU291cmNlIHx8IGltYWdlU291cmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJnZXRJbWFnZU9yaWVudGF0aW9uIHJlamVjdGVkXCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgICAgIHJlamVjdChcImxhbmRzY2FwZVwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImdldEltYWdlT3JpZW50YXRpb24gdHJ5IGluaVwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICB2YXIgaW1nXzEgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgIGltZ18xLnNyYyA9IGltYWdlU291cmNlO1xuICAgICAgICAgICAgaW1nXzEub25lcnJvciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJnZXRJbWFnZU9yaWVudGF0aW9uIFRoZXJlIHdhcyBhIG5lIGVycm9yIHJlYWRpbmdcIiwgZXYpO1xuICAgICAgICAgICAgICAgIHJlamVjdChcImxhbmRzY2FwZVwiKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpbWdfMS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nXzEud2lkdGg7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IGltZ18xLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShcImxhbmRzY2FwZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoXCJwb3J0cmFpdFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy9jb25zb2xlLmVycm9yKFwiQW4gZXJyb3Igb2N1cnJlZCB3aGVuIHRyeWluZyB0byBnZXQgdGhlIGltYWdlIG9yaWVudGF0aW9uXCIpO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQW4gZXJyb3Igb2N1cnJlZCB3aGVuIHRyeWluZyB0byBnZXQgdGhlIGltYWdlIG9yaWVudGF0aW9uXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVqZWN0KFwibGFuZHNjYXBlXCIpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbnZhciBzZXZlbnppcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTE3LTcyYTUxYTEyLWU0MDMtNDY3NS1iZmQ3LTIyYzIzYWZmYTczMC5wbmdcIjtcbnZhciBhYWMgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUxOC03MDI2ZDRmMS1lYTE2LTRlZDAtODlmZC0zN2MxYWE4YWMzZWQucG5nXCI7XG52YXIgYWJ3ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MTktODYzYzYzYjQtOTE3ZS00NDcxLTk0ZmYtN2UxNTY1MWNjMTRiLnBuZ1wiO1xudmFyIGFjY2RiID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MjAtOWJjNmFhM2ItNTFjOS00ZGEyLTllZjctMzQ5MTYyYjg2ZDBiLnBuZ1wiO1xudmFyIGF2aSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTIxLWRiZDZjZjBkLWQ0ZDctNGI5Mi1iYjI2LTE3ZThhNTFhOTM4My5wbmdcIjtcbnZhciBhencgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUyMi0wNzBmNDhlOC03OGE4LTQyOTQtOGRiYi1hYWI4MTUyNWUxNjQucG5nXCI7XG52YXIgYm1wID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1OTUtOTBhYjdmOTAtZjg3ZS00OTAwLTk0ZDktZDBiMjY3NDVkZjQ4LnBuZ1wiO1xudmFyIGJ6ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1OTctZTI4NWFkNWMtNjEzYS00Njc5LWEyNzAtNDkzZTViZTRmZmQ5LnBuZ1wiO1xudmFyIGJ6MiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTk4LTYyM2M0MTBhLTA4NGEtNDM5NS1hNDQ4LTIxMWIyZmY2MWNmZS5wbmdcIjtcbnZhciBjZGEgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwMC04YjcwYTAwNy01MTJkLTQyNTItOWM2Ni1lYWJkM2RkZDY1NzMucG5nXCI7XG52YXIgY3NoID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDEtZTYyZTVkMWEtZDhhMi00NDc1LWExNGYtODU5MjJjZWM5MjcyLnBuZ1wiO1xudmFyIGNzcyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjAyLTRjNzcyOTM0LWY2MDgtNGYwMS04NDU5LWM0NjIyY2VlOGFkNS5wbmdcIjtcbnZhciBjc3YgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwNC1iNWIwMTlmZS01NzJlLTQ3N2UtOTJjMi0zNzY5YTQ4YTEzMDQucG5nXCI7XG52YXIgZG9jeCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjA2LTcxNWNjYjY2LTQ3MDItNGY3ZC05YjA5LWFjOTNiYTE3YjY0My5wbmdcIjtcbnZhciBkcmF3aW8gPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwOC1iY2FlOWQ1Ny04ZTU0LTQ4OGMtOTBjNC00OTUyYWU1MzBiNWUucG5nXCI7XG52YXIgZW90ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MTgtMzk3ZDZiZDItOWZkYS00M2VkLWExMzUtY2I0MDM4OGMzNWFmLnBuZ1wiO1xudmFyIGVwdWIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyMC0yNTg2YmE0MC1jNTgzLTQ1ODktYjFhNC04YmI1YjI1OGI0NGQucG5nXCI7XG52YXIgZnJlZWFyYyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjIxLTNiOTVmYjY0LTI1MzMtNGNjYy1hYmNkLWJkMmJlYmE1NzJlOS5wbmdcIjtcbnZhciBnaWYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyMi1hZjcwNWEwYy0yYjI1LTRiYTctOGFiNi1iZDY5ZWM5N2Y3ZTIucG5nXCI7XG52YXIgZ3ppcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjI0LTg5MTQxYTQ2LTY0ZTQtNGZhMC1iZjY5LTU0YTBlYjRkNDhjOS5wbmdcIjtcbnZhciBodG1sID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjUtMWI4ZjI2NTItMWRlMC00NDc1LThjMTItN2RhNGE5OTczZmZiLnBuZ1wiO1xudmFyIGljYWxlbmRhciA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjI2LTM4Njk5NzA1LTFlNmYtNGJjYS05ODRiLTAzMTY3YjIzNmZhYS5wbmdcIjtcbnZhciBqYXZhID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTAtZjExNjYyNDYtYjM2MS00YzMwLWEwNGUtOTc4MWM1NTVkMTRhLnBuZ1wiO1xudmFyIGphciA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjUwLWYxMTY2MjQ2LWIzNjEtNGMzMC1hMDRlLTk3ODFjNTU1ZDE0YS5wbmdcIjtcbnZhciBqYXZhc2NyaXB0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTItNDU2Mjk0MmUtYWFlYS00NjZjLTk2OGYtMzgwZmZmYWJmM2Y5LnBuZ1wiO1xudmFyIGpwZWcgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1My0wNDg3ZTdlMi0xZWUzLTQ5ZTItOGNmZS0zZTIwZjFmNzQ5MGEucG5nXCI7XG52YXIganNvbiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjU2LTZlOTZjODE1LWU0ZTItNGZmZC05ZDcxLTU3ZTljYzI0NTBiYy5wbmdcIjtcbnZhciBqc29ubGQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1OC01ZDI3ZDNjMi0zOTRmLTQzZmItYjUxMi05YjQxNGEyNTc4NzUucG5nXCI7XG52YXIgbWlkaSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjU5LTk4ZjNlZjZlLWI5ZjMtNGI2ZC1iMThmLTQ2OWI1MzM0YmEyNy5wbmdcIjtcbnZhciBtcDMgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2MS1hNTQ4NDU1My0wNmM3LTRmZmEtYThmOS05NmI1N2IxYjAzNDQucG5nXCI7XG52YXIgbXA0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjItMDVhZDE1OTctZDVlNS00ZWZhLTgzM2UtMjg3NmU5NjZhNzQ1LnBuZ1wiO1xudmFyIG1wZWcgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2My05MGM1ODk1NS1mN2ZiLTRiZGItYWM1My05MjY2N2QxNmQ0YTMucG5nXCI7XG52YXIgbXBrZyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjY0LTlhNzUzMGU3LTZkNzgtNGVmMy1hMTc2LTIwY2Y3ZjU3YjU1NS5wbmdcIjtcbnZhciBvY3RldCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjY2LWFiM2M1MDVkLWIyYzAtNDE3Ny05YTA2LWFlZDVkOWMzOWVlNC5wbmdcIjtcbnZhciBvZHAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2Ny02YzdkY2JjYy04ZDgzLTQxYTItOGUwYS04NWIwOWUyNzkxYWUucG5nXCI7XG52YXIgb2RzID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjgtOWYyNDZlOTEtY2YyZS00OWNmLTk2MTctZTFmYmI3MWFiYmJiLnBuZ1wiO1xudmFyIG9kdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjY5LTQ2MTEzNzYyLTg0ZDEtNGIzMi05NDQxLWIwMTM4Y2UxN2E1ZC5wbmdcIjtcbnZhciBvZ2EgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzE0NTgzNTM2NC0yMDU0NTA5ZC0zNDQ4LTRkMzQtOTIxZi03M2RkNmUyOTdmYzcucG5nXCI7XG52YXIgb2d2ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xNDU4MzUzNjctMTkxNzJiZjgtY2Q1YS00Y2JlLWI1MTItZDBkZTFkOTFmMjY5LnBuZ1wiO1xudmFyIG9neCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTQ1ODM1MzczLWE1N2VmMGY1LTM5NjgtNDgzYi05ZjU1LTZkNjdlN2YxZGNlYS5wbmdcIjtcbnZhciBvcHVzID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzAtMGY5NmU3NzAtY2VkYy00NjM1LWE1ZjktY2Y5Nzg5NGMxZDdhLnBuZ1wiO1xudmFyIG90ZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjcxLTAyYWQzNWVmLWVjM2EtNGE2NS1hYmQ1LTViZjc5NGRmY2Y3Yi5wbmdcIjtcbnZhciBwZGYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3Mi0zYTg1NmZkYS04MjNkLTQ5OTctYjgwMi1jN2M2NDBlNmVmNDQucG5nXCI7XG52YXIgcGhwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzMtMGM0NDA5YWItNzU0ZS00NjE5LThjZmEtMTc5ZDBjY2YxYmQ5LnBuZ1wiO1xudmFyIHBuZyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njc0LWZkYjU2ZDAyLTU4NDUtNDliNy04NDYyLTYzNTdiYzk2MzQ2NC5wbmdcIjtcbnZhciBwcHR4ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzUtYzg3OTY0NWQtYWNiNC00MWE2LWFiM2MtNGU2YzIwNDhiYWRiLnBuZ1wiO1xudmFyIHBzZCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njg1LTRlMzI3YzRjLWE0MDktNGI4My1iMzZhLThkODg5MzZiMzE0Yi5wbmdcIjtcbnZhciBweXRob24gPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY4OC04ZTgyZmFlNC0zYTliLTQ5YzAtYmY5OS03NzE4OTUyNTUxNGMucG5nXCI7XG52YXIgdGFyID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2ODktZmUxZmVmOWYtZDJkYi00NTViLThmNGItMDlhY2QwOTVmNTcxLnBuZ1wiO1xudmFyIHJhciA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njg5LWZlMWZlZjlmLWQyZGItNDU1Yi04ZjRiLTA5YWNkMDk1ZjU3MS5wbmdcIjtcbnZhciByZWFjdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjkxLWQ0NzI1NzZiLWVjNmEtNDMzMi1hY2QyLWRkNmEwMGI3Mjk1Mi5wbmdcIjtcbnZhciBydGYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5My05ZDQzNTcxZS0wYzg2LTQzOGYtYjI0Ny1lMmNiNDJlMTllMDYucG5nXCI7XG52YXIgc2FzcyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njk0LTRlNjYxZDZhLTExMTgtNDQxZS04YmMzLWM1MmZjYjIxMzNiNi5wbmdcIjtcbnZhciBzaCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njk3LTFkODJkNzI0LTM1YjYtNGYwNi04NDdhLTNjNTlhNWRlZGE2ZS5wbmdcIjtcbnZhciBzd2YgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5OC0xOTM4NDIzMC1kYmQ3LTRlMDUtYmM2OS1lZjQ1MzdiNmFhZTMucG5nXCI7XG52YXIgdGV4dCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njk5LTU5OTNhNDgyLTA0ZjQtNDkxNS1iMTA1LTkwMzdmNTI3Y2Y2MS5wbmdcIjtcbnZhciB0aWZmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDAtYzIzNDYxYzgtNjgxOS00NmUxLWFlY2QtMGExZjhkMzUwN2JiLnBuZ1wiO1xudmFyIHR0ZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzAxLWM4MDQ0YzA5LThkOTUtNGFmMS05NDEwLTY2NzYxMDAxZDdkYS5wbmdcIjtcbnZhciB0eXBlc2NyaXB0ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDItNTkyOTQzMzctZWQ5OS00MzAyLWJhZGQtMzE2YjJjMWZmNjJmLnBuZ1wiO1xudmFyIHZzZCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA0LThmZDUxZTdjLWFmYTItNDdhMy1hYjJmLWQwYmNkMGVjYWU5Zi5wbmdcIjtcbnZhciB2dWUgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNS0zMzI5NGRhMS01YzBmLTQ5ZjctYjg5MC1lNDg1N2NlYzBhNmQucG5nXCI7XG52YXIgd2F2ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDYtMjJmODA1ZDAtMzlkNC00OTRiLTgyNGUtNDdkYzc1ZDA1ZWI3LnBuZ1wiO1xudmFyIHdlYm0gPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNy1lNjFhODRkZS1kMzk2LTRkYmYtOGQxYi0xZDZlZTE5ZTFhYzgucG5nXCI7XG52YXIgd2ViYSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA3LWU2MWE4NGRlLWQzOTYtNGRiZi04ZDFiLTFkNmVlMTllMWFjOC5wbmdcIjtcbnZhciB3ZWJwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDgtMjFkMDk2ZGQtNzE0OC00MGFhLTk3ZjEtY2JiMDk5MzM5NzQwLnBuZ1wiO1xudmFyIHdtYSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA5LTgxMWQ0ZTkwLTNjZmEtNDA0NC1hOTU2LWFlZGE5YzY3ZmM5Mi5wbmdcIjtcbnZhciB3bXYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxMC1jNTQ3OWM2Yy0wMjQ5LTQ1NDItYWRhZC00OGIwZWY0MGI3NzUucG5nXCI7XG52YXIgd29mZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzExLTE1MjRhM2U3LTNlMzMtNDgyMi1hMzRmLWZmMzIzNTQwNDA0NS5wbmdcIjtcbnZhciB4bHN4ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTItMTdlMmM0OTEtZjZlNC00NTg2LWFlZjYtMDZiY2M1ZjRiMGU1LnBuZ1wiO1xudmFyIHhtbCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzE1LTIwNGI1YThiLTljNWEtNGJhYy04Mjk0LTkyMzdlYmMxNjA4OS5wbmdcIjtcbnZhciB4dWwgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxNi02NDUxMWQyMC01OGNiLTQ1YTgtODVkZi1mNGQ5NDA4YjQ2OWQucG5nXCI7XG52YXIgemlwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTgtYTg0OTkzMzMtNjI4Mi00ODIwLWFhMWYtNGQxMzNlYjU0NjQ4LnBuZ1wiO1xuXG4vKipcbiAqIExvb2tzIGZvciB0aGUgZmlyc3QgZmlsZSBleHRlbnNpb25cbiAqIEBwYXJhbSBmaWxlTmFtZSBmaWxlIG5hbWVcbiAqIEByZXR1cm5zIHRoZSBmaWxlIG5hbWUgZXh0ZW5zaW9uXG4gKi9cbnZhciBnZXRFeHQgPSBmdW5jdGlvbiAoZmlsZU5hbWUpIHtcbiAgICB2YXIgcmUgPSAvKD86XFwuKFteLl0rKSk/JC87XG4gICAgdmFyIHJlc3VsdCA9IHJlLmV4ZWMoZmlsZU5hbWUpO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFsxXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbn07XG5cbnZhciBERUZfR0VOX01JTUUgPSBcIm9jdGV0XCI7XG4vKipcbiAqXG4gKiBAcGFyYW0gdGFpbE1pbWVcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBhdWRpb1NlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwiYWFjXCI6IHJldHVybiBcImFhY1wiO1xuICAgICAgICBjYXNlIFwibWlkaVwiOiByZXR1cm4gXCJtaWRpXCI7XG4gICAgICAgIGNhc2UgXCJ4LW1pZGlcIjogcmV0dXJuIFwibWlkaVwiO1xuICAgICAgICBjYXNlIFwibXBlZ1wiOiByZXR1cm4gXCJtcGVnXCI7IC8vbXAzXG4gICAgICAgIGNhc2UgXCJvZ2dcIjogcmV0dXJuIFwib2dhXCI7XG4gICAgICAgIGNhc2UgXCJvcHVzXCI6IHJldHVybiBcIm9wdXNcIjtcbiAgICAgICAgY2FzZSBcIndhdlwiOiByZXR1cm4gXCJ3YXZcIjtcbiAgICAgICAgY2FzZSBcIndlYm1cIjogcmV0dXJuIFwid2VibVwiO1xuICAgICAgICAvL2Nhc2UgXCIzZ3BwXCI6IHJldHVybiBcInRocmVlZ3BcIjtcbiAgICAgICAgLy9jYXNlIFwiM2dwcDJcIjogcmV0dXJuIFwidGhyZWVncFwiO1xuICAgICAgICAvL2Nhc2UgXCJtcDNcIjogcmV0dXJuIFwibXAzXCI7XG4gICAgICAgIGNhc2UgXCJ3bWFcIjogcmV0dXJuIFwid21hXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbnZhciB0ZXh0U2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJjc3NcIjogcmV0dXJuIFwiY3NzXCI7XG4gICAgICAgIGNhc2UgXCJjc3ZcIjogcmV0dXJuIFwiY3N2XCI7XG4gICAgICAgIGNhc2UgXCJodG1sXCI6IHJldHVybiBcImh0bWxcIjtcbiAgICAgICAgY2FzZSBcImNhbGVuZGFyXCI6IHJldHVybiBcImljYWxlbmRhclwiO1xuICAgICAgICBjYXNlIFwiamF2YXNjcmlwdFwiOiByZXR1cm4gXCJqYXZhc2NyaXB0XCI7XG4gICAgICAgIGNhc2UgXCJ4LWphdmFzY3JpcHRcIjogcmV0dXJuIFwiamF2YXNjcmlwdFwiO1xuICAgICAgICBjYXNlIFwicGxhaW5cIjogcmV0dXJuIFwidGV4dFwiO1xuICAgICAgICBjYXNlIFwieG1sXCI6IHJldHVybiBcInhtbFwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG52YXIgaW1hZ2VTZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcImJtcFwiOiByZXR1cm4gXCJibXBcIjtcbiAgICAgICAgY2FzZSBcImdpZlwiOiByZXR1cm4gXCJnaWZcIjtcbiAgICAgICAgLy8gY2FzZSBcInZuZC5taWNyb3NvZnQuaWNvblwiOiByZXR1cm4gXCJpY29cIjtcbiAgICAgICAgLy9jYXNlIFwiaWNvXCI6IHJldHVybiBcImljb1wiO1xuICAgICAgICBjYXNlIFwianBnXCI6IHJldHVybiBcImpwZWdcIjtcbiAgICAgICAgY2FzZSBcImpwZWdcIjogcmV0dXJuIFwianBlZ1wiO1xuICAgICAgICBjYXNlIFwicG5nXCI6IHJldHVybiBcInBuZ1wiO1xuICAgICAgICAvL2Nhc2UgXCJzdmcreG1sXCI6IHJldHVybiBcInN2Z1wiO1xuICAgICAgICAvL2Nhc2UgXCJzdmdcIjogcmV0dXJuIFwic3ZnXCI7XG4gICAgICAgIGNhc2UgXCJ0aWZmXCI6IHJldHVybiBcInRpZmZcIjtcbiAgICAgICAgY2FzZSBcIndlYnBcIjogcmV0dXJuIFwid2VicFwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG52YXIgZm9udFNlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwib3RmXCI6IHJldHVybiBcIm90ZlwiO1xuICAgICAgICBjYXNlIFwidHRmXCI6IHJldHVybiBcInR0ZlwiO1xuICAgICAgICBjYXNlIFwid29mZlwiOiByZXR1cm4gXCJ3b2ZmXCI7XG4gICAgICAgIGNhc2UgXCJ3b2ZmMlwiOiByZXR1cm4gXCJ3b2ZmXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbnZhciB2aWRlb1NlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwieC1tc3ZpZGVvXCI6IHJldHVybiBcImF2aVwiO1xuICAgICAgICBjYXNlIFwibXN2aWRlb1wiOiByZXR1cm4gXCJhdmlcIjtcbiAgICAgICAgY2FzZSBcImF2aVwiOiByZXR1cm4gXCJhdmlcIjtcbiAgICAgICAgY2FzZSBcIm1wNFwiOiByZXR1cm4gXCJtcDRcIjtcbiAgICAgICAgY2FzZSBcIm1wZWdcIjogcmV0dXJuIFwibXBlZ1wiO1xuICAgICAgICBjYXNlIFwib2dnXCI6IHJldHVybiBcIm9ndlwiO1xuICAgICAgICBjYXNlIFwibXAydFwiOiByZXR1cm4gXCJtcDJ0XCI7XG4gICAgICAgIGNhc2UgXCJ3bXZcIjogcmV0dXJuIFwid212XCI7XG4gICAgICAgIGNhc2UgXCJ3ZWJtXCI6IHJldHVybiBcIndlYm1cIjtcbiAgICAgICAgLy8gY2FzZSBcIjNncHBcIjogcmV0dXJuIFwidGhyZWVncFwiO1xuICAgICAgICAvLyBjYXNlIFwiM2dwcDJcIjogcmV0dXJuIFwidGhyZWVncDJcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIHRhaWxNaW1lXG4gKiBAcmV0dXJuc1xuICovXG52YXIgYXBwbGljYXRpb25TZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcIngtYWJpd29yZFwiOiByZXR1cm4gXCJhYndcIjtcbiAgICAgICAgY2FzZSBcImFiaXdvcmRcIjogcmV0dXJuIFwiYWJ3XCI7XG4gICAgICAgIGNhc2UgXCJ4LWZyZWVhcmNcIjogcmV0dXJuIFwiYXJjXCI7XG4gICAgICAgIGNhc2UgXCJmcmVlYXJjXCI6IHJldHVybiBcImFyY1wiO1xuICAgICAgICBjYXNlIFwidm5kLmFtYXpvbi5lYm9va1wiOiByZXR1cm4gXCJhendcIjtcbiAgICAgICAgY2FzZSBcIm9jdGV0LXN0cmVhbVwiOiByZXR1cm4gXCJvY3RldFwiO1xuICAgICAgICBjYXNlIFwieC1iemlwXCI6IHJldHVybiBcImJ6XCI7XG4gICAgICAgIGNhc2UgXCJ4LWJ6aXAyXCI6IHJldHVybiBcImJ6MlwiO1xuICAgICAgICBjYXNlIFwiYnppcFwiOiByZXR1cm4gXCJielwiO1xuICAgICAgICBjYXNlIFwiYnppcDJcIjogcmV0dXJuIFwiYnoyXCI7XG4gICAgICAgIGNhc2UgXCJ4LWNkZlwiOiByZXR1cm4gXCJjZGFcIjtcbiAgICAgICAgY2FzZSBcIm1zYWNjZXNzXCI6IHJldHVybiBcImFjY2RiXCI7XG4gICAgICAgIGNhc2UgXCJjc2hcIjogcmV0dXJuIFwiY3NoXCI7XG4gICAgICAgIGNhc2UgXCJ4LWNzaFwiOiByZXR1cm4gXCJjc2hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5tcy1mb250b2JqZWN0XCI6IHJldHVybiBcImVvdFwiO1xuICAgICAgICBjYXNlIFwiZXB1Yit6aXBcIjogcmV0dXJuIFwiZXB1YlwiO1xuICAgICAgICBjYXNlIFwiZ3ppcFwiOiByZXR1cm4gXCJnemlwXCI7XG4gICAgICAgIGNhc2UgXCJqYXZhLWFyY2hpdmVcIjogcmV0dXJuIFwiamFyXCI7XG4gICAgICAgIGNhc2UgXCJ4LWphdmFzY3JpcHRcIjogcmV0dXJuIFwiamF2YXNjcmlwdFwiO1xuICAgICAgICBjYXNlIFwianNvblwiOiByZXR1cm4gXCJqc29uXCI7XG4gICAgICAgIGNhc2UgXCJsZCtqc29uXCI6IHJldHVybiBcImpzb25sZFwiO1xuICAgICAgICBjYXNlIFwidm5kLmFwcGxlLmluc3RhbGxlcit4bWxcIjogcmV0dXJuIFwibXBrZ1wiO1xuICAgICAgICBjYXNlIFwib2dnXCI6IHJldHVybiBcIm9neFwiO1xuICAgICAgICBjYXNlIFwidm5kLnJhclwiOiByZXR1cm4gXCJyYXJcIjtcbiAgICAgICAgY2FzZSBcInJ0ZlwiOiByZXR1cm4gXCJydGZcIjtcbiAgICAgICAgY2FzZSBcIngtc2hcIjogcmV0dXJuIFwic2hcIjtcbiAgICAgICAgY2FzZSBcInNoXCI6IHJldHVybiBcInNoXCI7XG4gICAgICAgIGNhc2UgXCJ4LXNob2Nrd2F2ZS1mbGFzaFwiOiByZXR1cm4gXCJzd2ZcIjtcbiAgICAgICAgY2FzZSBcIngtdGFyXCI6IHJldHVybiBcInRhclwiO1xuICAgICAgICBjYXNlIFwieC1odHRwZC1waHBcIjogcmV0dXJuIFwicGhwXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQudmlzaW9cIjogcmV0dXJuIFwidnNkXCI7XG4gICAgICAgIGNhc2UgXCJ4aHRtbCt4bWxcIjogcmV0dXJuIFwieGh0bWxcIjtcbiAgICAgICAgY2FzZSBcInhtbFwiOiByZXR1cm4gXCJ4bWxcIjtcbiAgICAgICAgY2FzZSBcInZuZC5tb3ppbGxhLnh1bCt4bWxcIjogcmV0dXJuIFwieHVsXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiOiByZXR1cm4gXCJkb2N4XCI7XG4gICAgICAgIGNhc2UgXCJtc3dvcmRcIjogcmV0dXJuIFwiZG9jeFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIjogcmV0dXJuIFwieGxzeFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiOiByZXR1cm4gXCJwcHR4XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQubXMtcG93ZXJwb2ludFwiOiByZXR1cm4gXCJwcHR4XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvblwiOiByZXR1cm4gXCJvZHBcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiOiByZXR1cm4gXCJvZHRcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIjogcmV0dXJuIFwib2RzXCI7XG4gICAgICAgIGNhc2UgXCJ6aXBcIjogcmV0dXJuIFwiemlwXCI7XG4gICAgICAgIGNhc2UgXCJ4LXppcC1jb21wcmVzc2VkXCI6IHJldHVybiBcInppcFwiO1xuICAgICAgICBjYXNlIFwicGRmXCI6IHJldHVybiBcInBkZlwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG4vKipcbiAqIFNlbGVjdHMgdG8gd2ljaCBtaW1lIHR5cGUgdGhlIG1pbWUgdHlwZSBnaXZlbiBiZWxvbmdzIHRvXG4gKiBAcGFyYW0gbWltZVR5cGUgbWltZSB0eXBlIHRvIGJlIHNlYXJjaGVkXG4gKiBAcmV0dXJucyB0aGUgZ2VuZXJpYyB0eXBlLFxuaWYgbm90IGZvdW5kIGl0IHJldHVybiBcIm9jdGV0XCIgdGhhdCBtZWFucyBnZW5lcmljIGJpbmFyeSBmaWxlXG4gKi9cbnZhciBtaW1lU2VsZWN0b3IgPSBmdW5jdGlvbiAobWltZVR5cGUpIHtcbiAgICAvLyBsZXQgZ2VuZXJpY01pbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoIW1pbWVUeXBlIHx8ICFtaW1lVHlwZS5pbmNsdWRlcyhcIi9cIikpIHtcbiAgICAgICAgcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG4gICAgdmFyIGhlYWRlck1pbWUgPSBtaW1lVHlwZS5zcGxpdChcIi9cIilbMF07XG4gICAgdmFyIHRhaWxNaW1lID0gbWltZVR5cGUuc3BsaXQoXCIvXCIpWzFdO1xuICAgIC8qKlxuICAgICAqIEV2ZXJ5IG1pbWV0eXBlIHRoYXRcbiAgICAgKiBzdGFydHMgd2l0aDogXCJhcHBsaWNhdGlvbi8uLi4uXCJcbiAgICAgKi9cbiAgICBzd2l0Y2ggKGhlYWRlck1pbWUpIHtcbiAgICAgICAgY2FzZSBcImFwcGxpY2F0aW9uXCI6IHJldHVybiBhcHBsaWNhdGlvblNlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgY2FzZSBcImF1ZGlvXCI6IHJldHVybiBhdWRpb1NlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgY2FzZSBcInZpZGVvXCI6IHJldHVybiB2aWRlb1NlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgY2FzZSBcInRleHRcIjogcmV0dXJuIHRleHRTZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJpbWFnZVwiOiByZXR1cm4gaW1hZ2VTZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJmb250XCI6IHJldHVybiBmb250U2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG4vKipcbiAqIFNlbGVjdHMgdG8gd2ljaCBtYXBwZWQgZXh0ZW5zaW9uXG4gKiB0aGUgZ2l2ZW4gZXhlbnNpb24gYmVsb25ncyB0b1xuICpcbiAqIEBwYXJhbSBleHRlbnNpb25cbiAqIEByZXR1cm5zXG4gKi9cbnZhciBleHRlbnNpb25TZWxlY3RvciA9IGZ1bmN0aW9uIChleHRlbnNpb24pIHtcbiAgICB2YXIgZ2VuZXJpY01pbWUgPSBcIm9jdGV0XCI7XG4gICAgaWYgKGV4dGVuc2lvbiAmJiBleHRlbnNpb24gIT09IFwiXCIpIHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcInppcFwiKSB8fCBleHRlbnNpb24uaW5jbHVkZXMoXCJyYXJcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ6aXBcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJkb2NcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJkb2N4XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwieGxzXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwieGxzeFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcImRyYXdpb1wiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImRyYXdpb1wiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcInBzZFwiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInBzZFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcImNzdlwiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImNzdlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJqc3hcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInJlYWN0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInB5XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJweXRob25cIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwidnVlXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ2dWVcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwiamF2YVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiamF2YVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJ0c1wiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwidHlwZXNjcmlwdFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJzYXNzXCIgfHwgZXh0ZW5zaW9uID09PSBcInNjc3NcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInNhc3NcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ2VuZXJpY01pbWU7XG59O1xuLyoqXG4gKiBDaGFjayBmb3IgZXh0ZW50aW9uIHdoZXRoZXIgdGhlIGZpbGUgaXMgY29kZSBvcyBub3RcbiAqIEBwYXJhbSBleHRlbnNpb25cbiAqIEByZXR1cm5zXG4gKi9cbnZhciBjaGVja0lzQ29kZSA9IGZ1bmN0aW9uIChleHRlbnNpb24pIHtcbiAgICB2YXIgZ2VuZXJpY01pbWUgPSBcInRleHRcIjtcbiAgICBpZiAoZXh0ZW5zaW9uICYmIGV4dGVuc2lvbiAhPT0gXCJcIikge1xuICAgICAgICBpZiAoZXh0ZW5zaW9uID09PSBcImpzeFwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicmVhY3RcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwicHlcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInB5dGhvblwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJ2dWVcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInZ1ZVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJqYXZhXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJqYXZhXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInRzXCIgfHwgZXh0ZW5zaW9uID09PSBcInRzeFwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwidHlwZXNjcmlwdFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJqc1wiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiamF2YXNjcmlwdFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJ4bWxcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInhtbFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJwaHBcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInBocFwiO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBnZW5lcmljTWltZTtcbn07XG4vKipcbiAqIExvb2tzIGZvciBhIHN1aXRhYmxlIGZpbGUgaWNvblxuICogSWYgbm90IGZvdW5kLCByZXR1cm5zIG9jdGV0LXN0cmVhbSB1cmxcbiAqIEBwYXJhbSBwcm9wcyBtaW1lIGFuZCBleHRlbnNpb24gZnJvbSBmaWxlIHRvIHNlYXJjaFxuICogQHJldHVybnMgdGhlIHJlc3VsdCBmaWxlIGljb1xuICovXG52YXIgZ2V0VVJMRmlsZUljbyA9IGZ1bmN0aW9uIChmaWxlLCBjdXN0b21JY29ucykge1xuICAgIHZhciByZXN1bHQgPSBcImZhbGxCYWNrXCI7XG4gICAgLy9pZiBub3QgZmlsZSwgcmV0dXJuIG9jdGV0XG4gICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIHJlc3VsdCA9IERFRl9HRU5fTUlNRTtcbiAgICAgICAgaWYgKGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29ucy5mYWxsQmFjaylcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zLmZhbGxCYWNrLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbiAgICAgICAgcmV0dXJuIHsgdXJsOiBtaW1lVXJsTGlzdFtyZXN1bHRdLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG1pbWVTZWxlY3RvcihmaWxlLnR5cGUpO1xuICAgIH1cbiAgICAvL0lmIHBsYWluIHRleHRcbiAgICB2YXIgZXh0ZW50aW9uID0gZ2V0RXh0KGZpbGUubmFtZSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgcmVzdWx0ID0gY2hlY2tJc0NvZGUoZXh0ZW50aW9uKTtcbiAgICB9XG4gICAgLy9JZiBvY3RldCBzdHJlYW0gcmVzdWx0LCBzZWNvbmQgY2hhbmNlOiBmaWxlIGV4dGVudGlvblxuICAgIGlmIChyZXN1bHQgPT09IERFRl9HRU5fTUlNRSkge1xuICAgICAgICByZXN1bHQgPSBleHRlbnNpb25TZWxlY3RvcihleHRlbnRpb24pO1xuICAgIH1cbiAgICB2YXIgY3VzdG9tVXJsID0gY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zW3Jlc3VsdF07XG4gICAgaWYgKGN1c3RvbVVybCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbVVybCwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgcmV0dXJuIHsgdXJsOiBtaW1lVXJsTGlzdFtyZXN1bHRdLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbn07XG4vKipcbiAqIExvb2tzIGZvciBhIHN1aXRhYmxlIGZpbGUgaWNvblxuICogQHBhcmFtIHByb3BzIG1pbWUgYW5kIGV4dGVuc2lvbiBmcm9tIGZpbGUgdG8gc2VhcmNoXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0IGZpbGUgaWNvLCBpZiBub3QgZm91bmQsIHR1cm5zIG9jdGV0LXN0cmVhbSB1cmxcbiAqL1xudmFyIGdldFVSTEZpbGVJY29Gcm9tTmFtZUFuZFR5cGUgPSBmdW5jdGlvbiAobmFtZSwgdHlwZSwgY3VzdG9tSWNvbnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gXCJvY3RldFwiO1xuICAgIC8vaWYgbm90IG5hbSBhbmQgdHlwZSwgcmV0dXJuIG9jdGV0XG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICAgIHJlc3VsdCA9IERFRl9HRU5fTUlNRTtcbiAgICAgICAgaWYgKGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29ucy5mYWxsQmFjaylcbiAgICAgICAgICAgIHJldHVybiB7IHVybDogY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zLmZhbGxCYWNrLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbiAgICAgICAgcmV0dXJuIHsgdXJsOiBtaW1lVXJsTGlzdFtyZXN1bHRdLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IG1pbWVTZWxlY3Rvcih0eXBlKTtcbiAgICB9XG4gICAgLy9JZiBwbGFpbiB0ZXh0XG4gICAgdmFyIGV4dGVudGlvbiA9IGdldEV4dChuYW1lKTtcbiAgICBpZiAocmVzdWx0ID09PSBcInRleHRcIikge1xuICAgICAgICByZXN1bHQgPSBjaGVja0lzQ29kZShleHRlbnRpb24pO1xuICAgIH1cbiAgICAvL0lmIG9jdGV0IHN0cmVhbSByZXN1bHQsIHNlY29uZCBjaGFuY2U6IGZpbGUgZXh0ZW50aW9uXG4gICAgaWYgKHJlc3VsdCA9PT0gREVGX0dFTl9NSU1FKSB7XG4gICAgICAgIHJlc3VsdCA9IGV4dGVuc2lvblNlbGVjdG9yKGV4dGVudGlvbik7XG4gICAgfVxuICAgIHZhciBjdXN0b21VcmwgPSBjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnNbcmVzdWx0XTtcbiAgICBpZiAoY3VzdG9tVXJsICE9PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB7IHVybDogY3VzdG9tVXJsLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbiAgICByZXR1cm4geyB1cmw6IG1pbWVVcmxMaXN0W3Jlc3VsdF0sIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xufTtcbnZhciBtaW1lVXJsTGlzdCA9IHtcbiAgICBhYWM6IGFhYyxcbiAgICBhY2NkYjogYWNjZGIsXG4gICAgYWJ3OiBhYncsXG4gICAgYXJjOiBmcmVlYXJjLFxuICAgIGF2aTogYXZpLFxuICAgIGF6dzogYXp3LFxuICAgIG9jdGV0OiBvY3RldCxcbiAgICBibXA6IGJtcCxcbiAgICBiejogYnosXG4gICAgYnoyOiBiejIsXG4gICAgY2RhOiBjZGEsXG4gICAgY3NoOiBjc2gsXG4gICAgY3NzOiBjc3MsXG4gICAgY3N2OiBjc3YsXG4gICAgZG9jeDogZG9jeCxcbiAgICBkcmF3aW86IGRyYXdpbyxcbiAgICBlb3Q6IGVvdCxcbiAgICBlcHViOiBlcHViLFxuICAgIGd6aXA6IGd6aXAsXG4gICAgZ2lmOiBnaWYsXG4gICAgaHRtbDogaHRtbCxcbiAgICAvL2ljbzogaWNvLFxuICAgIGljYWxlbmRhcjogaWNhbGVuZGFyLFxuICAgIGphcjogamFyLFxuICAgIGpwZWc6IGpwZWcsXG4gICAgamF2YXNjcmlwdDogamF2YXNjcmlwdCxcbiAgICBqc29uOiBqc29uLFxuICAgIGpzb25sZDoganNvbmxkLFxuICAgIG1pZGk6IG1pZGksXG4gICAgLy8gIGpzOiBqcyxcbiAgICBtcDM6IG1wMyxcbiAgICBtcDQ6IG1wNCxcbiAgICBtcGVnOiBtcGVnLFxuICAgIG1wa2c6IG1wa2csXG4gICAgbXAydDogb2N0ZXQsXG4gICAgb2RwOiBvZHAsXG4gICAgb2RzOiBvZHMsXG4gICAgb2R0OiBvZHQsXG4gICAgb2dhOiBvZ2EsXG4gICAgb2d2OiBvZ3YsXG4gICAgb2d4OiBvZ3gsXG4gICAgb3B1czogb3B1cyxcbiAgICBvdGY6IG90ZixcbiAgICBwbmc6IHBuZyxcbiAgICBwZGY6IHBkZixcbiAgICBwaHA6IHBocCxcbiAgICBwcHR4OiBwcHR4LFxuICAgIHBzZDogcHNkLFxuICAgIHJhcjogcmFyLFxuICAgIHJ0ZjogcnRmLFxuICAgIHNhc3M6IHNhc3MsXG4gICAgc2g6IHNoLFxuICAgIC8vc3ZnOiBzdmcsXG4gICAgc3dmOiBzd2YsXG4gICAgdGFyOiB0YXIsXG4gICAgdGlmZjogdGlmZixcbiAgICB0dGY6IHR0ZixcbiAgICAvL3RzOiB0cyxcbiAgICB0eXBlc2NyaXB0OiB0eXBlc2NyaXB0LFxuICAgIHRleHQ6IHRleHQsXG4gICAgdnNkOiB2c2QsXG4gICAgd2F2OiB3YXYsXG4gICAgd2ViYTogd2ViYSxcbiAgICB3ZWJtOiB3ZWJtLFxuICAgIHdlYnA6IHdlYnAsXG4gICAgd29mZjogd29mZixcbiAgICB3bWE6IHdtYSxcbiAgICB3bXY6IHdtdixcbiAgICB4aHRtbDogaHRtbCxcbiAgICB4bHN4OiB4bHN4LFxuICAgIHhtbDogeG1sLFxuICAgIHh1bDogeHVsLFxuICAgIHppcDogemlwLFxuICAgIC8vIHRocmVlZ3A6IHRocmVlZ3AsXG4gICAgc2V2ZW56aXA6IHNldmVuemlwLFxuICAgIHB5dGhvbjogcHl0aG9uLFxuICAgIGphdmE6IGphdmEsXG4gICAgcmVhY3Q6IHJlYWN0LFxuICAgIHZ1ZTogdnVlLFxuICAgIGZhbGxCYWNrOiBvY3RldCxcbn07XG5cbi8qKlxuICogQSBjbGFzcyBkZWZpbml0aW9uIGZvciBFeHRGaWxlLlxuICogVGhpcyBjbGFzcyBoYXMgdGhlIHB1cnBvc2UgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGluc3RhbmNlc1xuICogb2YgYW4gRXh0RmlsZSBmb3IgcGVyZm9ybWluZyBjb21wbGV4IG9wZXJhdGlvbnMgdGhhdCBjYW5ub3QgYmVcbiAqIGFjY29tcGxpc2hlZCBqdXN0IGJ5IHVzaW5nIHRoZSBFeHRGaWxlIHR5cGUuXG4gKiBGb3IgaW5zdGFuY2UsIGl0IGNhbiBoZWxwIGluIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBzb21lIGF0dHJpYnV0ZXNcbiAqIGFjcm9zcyBkaWZmZXJlbnQgc2NvcGVzIHRoYW5rcyB0byBtZW1vcnkgcmVmZXJlbmNlLlxuICovXG52YXIgRXh0RmlsZUluc3RhbmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV4dEZpbGVJbnN0YW5jZShleHRGaWxlKSB7XG4gICAgICAgIHZhciBpZCA9IGV4dEZpbGUuaWQsIGZpbGUgPSBleHRGaWxlLmZpbGUsIG5hbWUgPSBleHRGaWxlLm5hbWUsIHNpemUgPSBleHRGaWxlLnNpemUsIHR5cGUgPSBleHRGaWxlLnR5cGUsIGltYWdlVXJsID0gZXh0RmlsZS5pbWFnZVVybCwgdmFsaWQgPSBleHRGaWxlLnZhbGlkLCBlcnJvcnMgPSBleHRGaWxlLmVycm9ycywgdXBsb2FkTWVzc2FnZSA9IGV4dEZpbGUudXBsb2FkTWVzc2FnZSwgdXBsb2FkU3RhdHVzID0gZXh0RmlsZS51cGxvYWRTdGF0dXMsIHByb2dyZXNzID0gZXh0RmlsZS5wcm9ncmVzcywgeGhyID0gZXh0RmlsZS54aHIsIGV4dHJhRGF0YSA9IGV4dEZpbGUuZXh0cmFEYXRhLCBleHRyYVVwbG9hZERhdGEgPSBleHRGaWxlLmV4dHJhVXBsb2FkRGF0YSwgc2VydmVyUmVzcG9uc2UgPSBleHRGaWxlLnNlcnZlclJlc3BvbnNlLCBkb3dubG9hZFVybCA9IGV4dEZpbGUuZG93bmxvYWRVcmwsIHZpZGVvVXJsID0gZXh0RmlsZS52aWRlb1VybDtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmltYWdlVXJsID0gaW1hZ2VVcmw7XG4gICAgICAgIHRoaXMudmFsaWQgPSB2YWxpZDtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICAgIHRoaXMudXBsb2FkU3RhdHVzID0gdXBsb2FkU3RhdHVzO1xuICAgICAgICB0aGlzLnVwbG9hZE1lc3NhZ2UgPSB1cGxvYWRNZXNzYWdlO1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMueGhyID0geGhyO1xuICAgICAgICB0aGlzLmV4dHJhRGF0YSA9IGV4dHJhRGF0YTtcbiAgICAgICAgdGhpcy5leHRyYVVwbG9hZERhdGEgPSBleHRyYVVwbG9hZERhdGE7XG4gICAgICAgIHRoaXMuc2VydmVyUmVzcG9uc2UgPSBzZXJ2ZXJSZXNwb25zZTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFVybCA9IGRvd25sb2FkVXJsO1xuICAgICAgICB0aGlzLnZpZGVvVXJsID0gdmlkZW9Vcmw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIG1ldGhvZCB1bmRlciBjb25zdHJ1Y3Rpb25cbiAgICAgKi9cbiAgICAvKiAgcHJpdmF0ZSBzdGF0aWMga2FtdWlGaWxlKCkge1xuIFxuICAgICB9XG4gICovXG4gICAgLyoqXG4gICAgICogQ29waWVzIGFsbCBub24gdW5kZWZpbmVkIGF0dHJpYnV0ZXMgZnJvbSBFeHRGaWxlSW5zdGFuY2UgdG8gYSBuZXcgRXh0RmlsZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gZXh0RmlsZUluc3RhbmNlIHRoZSBpbnN0YW5jZSBvZiBFeHRGaWxlXG4gICAgICogQHJldHVybnMgYW4gRXh0RmlsZSBvYmplY3RcbiAgICAgKi9cbiAgICBFeHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiYmVmb3JlIHRvRXh0RmlsZSgpXCIsIGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgICAgIHZhciBleHRGaWxlQ2xvbmUgPSB7fTsgLy8gdGhlIG5ldyBlbXB0eSBvYmplY3RcbiAgICAgICAgdmFyIGV4dEZpbGVJbnN0YW5jZUtleXMgPSBPYmplY3Qua2V5cyhleHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICB2YXIgZXh0RmlsZUluc3RhbmNlVmFsdWVzID0gT2JqZWN0LnZhbHVlcyhleHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICAvLyBsZXQncyBjb3B5IGFsbCB1c2VyIHByb3BlcnRpZXMgaW50byBpdFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4dEZpbGVJbnN0YW5jZVZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IGV4dEZpbGVJbnN0YW5jZVZhbHVlc1tpXTtcbiAgICAgICAgICAgIHZhciBjdXJyS2V5ID0gZXh0RmlsZUluc3RhbmNlS2V5c1tpXTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGV4dEZpbGVDbG9uZVtjdXJyS2V5XSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiYWZ0ZXIgdG9FeHRGaWxlKClcIiwgZXh0RmlsZUNsb25lKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImN1cnJlbnQgZXh0RmlsZUNsb25lIGtleXNcIixPYmplY3Qua2V5cyggZXh0RmlsZUNsb25lKS5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gZXh0RmlsZUNsb25lO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ29waWVzIGFsbCBub24gdW5kZWZpbmVkIGF0dHJpYnV0ZXMgZnJvbSBFeHRGaWxlSW5zdGFuY2UgdG8gYSBuZXcgRXh0RmlsZSBvYmplY3QuXG4gICAgICogQHJldHVybnMgYW4gRXh0RmlsZSBvYmplY3RcbiAgICAgKi9cbiAgICBFeHRGaWxlSW5zdGFuY2UucHJvdG90eXBlLnRvRXh0RmlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEV4dEZpbGVJbnN0YW5jZS50b0V4dEZpbGUodGhpcyk7XG4gICAgfTtcbiAgICByZXR1cm4gRXh0RmlsZUluc3RhbmNlO1xufSgpKTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcblxyXG52YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxuXG52YXIgRXh0RmlsZU1hbmFnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRXh0RmlsZU1hbmFnZXIoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluY3JlYXNlcyB0aGUgaWQgY291bnRlciBhbmQgcmV0dXJucyB0aGUgbmV4dCBpZCBhdmFpbGFibGUuXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgaW50ZWdlciBpZCBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5nZXROZXh0SWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIEV4dEZpbGVNYW5hZ2VyLm5leHRJZCsrO1xuICAgICAgICByZXR1cm4gRXh0RmlsZU1hbmFnZXIubmV4dElkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBhIGR1aSBmaWxlIGxpc3QgZ2l2ZW4gYW4gaWRcbiAgICAgKiBAcGFyYW0gaWQgaWQgb2YgdGhlIGZpbGVMaXN0XG4gICAgICogQHBhcmFtIGV4dEZpbGVzIGxpc3Qgb2YgRHVpRmlsZXMgZm9yaW5pdGlhbGl6aW5nIHRoZSBhcnJheVxuICAgICAqIEByZXR1cm5zIHRoZSBpZCBvZiB0aGUgZmlsZUxpc3RcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdCA9IGZ1bmN0aW9uIChpZCwgZXh0RmlsZXNJbnN0YW5jZXMpIHtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbaWRdID0gX19zcHJlYWRBcnJheShbXSwgZXh0RmlsZXNJbnN0YW5jZXMsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBuZXcgSURcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV4dCBJZCBhc29jaWF0ZWQgd2l0aCBhIER1aUZJbGUgbGlzdFxuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLmNyZWF0ZUZpbGVMaXN0TWFwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV4dElkID0gRXh0RmlsZU1hbmFnZXIuZ2V0TmV4dElkKCk7XG4gICAgICAgIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0c1tuZXh0SWRdID0gW107XG4gICAgICAgIHJldHVybiBuZXh0SWQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGEgbGlzdCBtYXBcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV4dCBJZCBhc29jaWF0ZWQgd2l0aCBhIER1aUZJbGUgbGlzdFxuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLnJlbW92ZUZpbGVMaXN0TWFwID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbaWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igb24gcmVtb3ZlXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBkcm9wem9uZVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW2lkXTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBvbiBnZXRFeHRGaWxlSW5zdGFuY2VMaXN0XCIsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMocmVwbGFjZXMpIHRoZSBleHRGaWxlIGxpc3Qgb24gcHJlcGFyaW5nIHN0YWdlIGFuZCByZXR1cm5zIHRoZSBuZXcgYXJyYXkuXG4gICAgICogUmVtb3ZlcyB0aGUgbm9uIHZhbGlkIGZpbGVzIGlmIGNsZWFuT25VcGxvYWQgaXMgdHJ1ZSBhbmQgdmFsaWRhdGVGaWxlcyBpcyBhbHNvIHRydWVcbiAgICAgKiBUaGVuIHNldHMgb24gcHJlcGFyaW5nIHN0YWdlIGFsbCBmaWxlcyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBjcmVpdGVyaWE6XG4gICAgICogSWYgdGhldXBsb2FkU3RhdHVzIGlzIGRpZmVyZW50IHRoYW4gXCJzdWNlc3NcIiBBTkRcbiAgICAgKiB0aGVuLCB1cGRhdGUgdGhlIGZpbGVzIG9uIHByZXBhcmluZyBzdGFnZS4gT3RoZXJ3aXNlIGtlZXAgdGhlIGV4dEZpbGUgcHJvcHMuXG4gICAgICogRmluYWxseSwgdXBkYXRlcyB0aGUgRXh0RmlsZUluc3RhbmNlIGxpc3Qgb24gRXh0RmlsZU1hbmFnZXIuXG4gICAgICogQHBhcmFtIGRyb3B6b25lSWQgdGhlIGlkIHRvIGFjY2VzcyB0aGUgcmlnaHQgbGlzdFxuICAgICAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzXG4gICAgICogQHBhcmFtIHZhbGlkYXRlRmlsZXMgZmxhZyB0aGF0IGluZGljYXRlcyB0aGF0IHZhbGlkYXRpb24gaXMgYWN0aXZlIG9yIG/Cv25vdFxuICAgICAqIEBwYXJhbSBjbGVhbk9uVXBsb2FkIGZsYWcgdG8gZGV0ZXJtaW5lIHdodGhlciB0byBjbGVuYSB0aGUgbGlzdCBvb2Ygbm9uIHZhbGlkIGZpbGVzIG9yIG5vdFxuICAgICAqIEByZXR1cm5zIGEgbGlzdCBvZiBFeHRGaWxlSW5zdGFuY2VcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdE1hcFByZXBhcmluZyA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzLCBjbGVhbk9uVXBsb2FkKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBiZWZvcmUgaWZcIiwgZHJvcHpvbmVJZCwgbG9jYWxGaWxlcywgY2xlYW5PblVwbG9hZCk7XG4gICAgICAgIGlmICghKHR5cGVvZiBkcm9wem9uZUlkID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBkcm9wem9uZUlkID09PSBcInN0cmluZ1wiKSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBiZWZvcmUgdHJ5XCIsIGxvY2FsRmlsZXMsIGNsZWFuT25VcGxvYWQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdEV4dExpc3QgPSBbXTtcbiAgICAgICAgICAgIC8vaW5pdGlhbGl6ZXMgdGhlIGV4dEZpbGVMSW5zdGFuY2UgbGlzdFxuICAgICAgICAgICAgdmFyIHRlbUxvY2FsRmlsZXMgPSBfX3NwcmVhZEFycmF5KFtdLCBsb2NhbEZpbGVzLCB0cnVlKTtcbiAgICAgICAgICAgIC8vcmVtb3ZlIG5vbiB2YWxpZHMgaWYgY2xlYW5PblVwbG9hZCBpcyB0cnVlIGFuZCB2YWxpZGF0ZUZpbGVzIGlzIGFsc28gdHJ1ZVxuICAgICAgICAgICAgaWYgKGNsZWFuT25VcGxvYWQgJiYgdmFsaWRhdGVGaWxlcykge1xuICAgICAgICAgICAgICAgIC8vIGNsZWFuIG9uIFVwbG9hZCBpcyB0cnVlLCBzbyBub24gdmFsaWQgZmlsZXMgbXVzdCBiZSByZW1vdmVkXG4gICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlcyA9IHRlbUxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChleHRGaWxlKSB7IHJldHVybiBleHRGaWxlLnZhbGlkOyB9KTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidGVtTG9jYWxGaWxlcyBmaWx0ZXJcIiwgdGVtTG9jYWxGaWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgYWZ0ZXIgcmVtb3ZlIG5vbiB2YWxpZHNcIiwgdGVtTG9jYWxGaWxlcyk7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGVGaWxlcykge1xuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRpb24gZmxhZyB3YXMgc2V0IHRvIHRydWUsIHNvIG9ubHkgdmFsaWQ9dHJ1ZSBmaWxlcyB3aWxsIGJlIHNldCB0byBcInByZXBhcmluZ1wiXG4gICAgICAgICAgICAgICAgLy9zbywgb25seSB2YWxpZCBmaWxlcyB3YXMga2VwdCBpbiB0aGUgdGVtTG9jYWxmaWxlcyBhcnJheVxuICAgICAgICAgICAgICAgIC8vbm93IHNldCB0aGUgcHJlcGFyaW5nIHN0YXRlIG9ubHkgZm9yIGZpbGVzIHdpdGggdXBsb2FkU3RhdHVzICE9PSBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXMgPVxuICAgICAgICAgICAgICAgICAgICB0ZW1Mb2NhbEZpbGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXh0RmlsZS51cGxvYWRTdGF0dXMgIT09IFwic3VjY2Vzc1wiICYmIGV4dEZpbGUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJwcmVwYXJpbmdcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbih7fSwgZXh0RmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gYWxsIGZpbGVzIHdpbGwgYmUgc2V0IHRvIFwicHJlcGFyaW5nXCIgd2hldGhlciB0aGUgdmFsaWQgdmFsdWVcbiAgICAgICAgICAgICAgICAvLyBleGNlcHQgdGhvc2UgZmlsZXMgd2l0aCB1cGxvYWRTdGF0dXMgPT09XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICB0ZW1Mb2NhbEZpbGVzID1cbiAgICAgICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dEZpbGUudXBsb2FkU3RhdHVzICE9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInByZXBhcmluZ1wiIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKHt9LCBleHRGaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgcmVzdWx0XCIsIHRlbUxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgLy9jb252ZXJ0byB0byBPYmplY3QgaW5zdGFuY2VzXG4gICAgICAgICAgICByZXN1bHRFeHRMaXN0ID0gdGVtTG9jYWxGaWxlcy5tYXAoZnVuY3Rpb24gKEYpIHsgcmV0dXJuIG5ldyBFeHRGaWxlSW5zdGFuY2UoRik7IH0pO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIFJFU1VMVCByZXN1bHRFeHRMaXN0XCIsIHJlc3VsdEV4dExpc3QpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdFNldCA9IEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0KGRyb3B6b25lSWQsIHJlc3VsdEV4dExpc3QpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIFJFU1VMVCByZXN1bHRTZXRcIiwgcmVzdWx0U2V0KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRFeHRMaXN0O1xuICAgICAgICAgICAgLy8gcmV0dXJuIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0c1tkcm9wem9uZUlkXTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKVxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBFcnJvciBvbiBnZXQgTGlzdFwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAqIFVwZGF0ZXMocmVwbGFjZXMpIHRoZSBleHRGaWxlIGxpc3Qgb24gcHJlcGFyaW5nIHN0YWdlIGFuZCByZXR1cm5zIHRoZSBuZXcgYXJyYXkuXG4gKiBSZW1vdmVzIHRoZSBub24gdmFsaWQgZmlsZXMgaWYgY2xlYW5PblVwbG9hZCBpcyB0cnVlIGFuZCB2YWxpZGF0ZUZpbGVzIGlzIGFsc28gdHJ1ZVxuICogVGhlbiBzZXRzIG9uIHByZXBhcmluZyBzdGFnZSBhbGwgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgY3JlaXRlcmlhOlxuICogSWYgdGhldXBsb2FkU3RhdHVzIGlzIGRpZmVyZW50IHRoYW4gXCJzdWNlc3NcIiBBTkRcbiAqIHRoZW4sIHVwZGF0ZSB0aGUgZmlsZXMgb24gcHJlcGFyaW5nIHN0YWdlLiBPdGhlcndpc2Uga2VlcCB0aGUgZXh0RmlsZSBwcm9wcy5cbiAqIEZpbmFsbHksIHVwZGF0ZXMgdGhlIEV4dEZpbGVJbnN0YW5jZSBsaXN0IG9uIEV4dEZpbGVNYW5hZ2VyLlxuICogQHBhcmFtIGRyb3B6b25lSWQgdGhlIGlkIHRvIGFjY2VzcyB0aGUgcmlnaHQgbGlzdFxuICogQHBhcmFtIGxvY2FsRmlsZXMgdGhlIGxpc3Qgb2YgZXh0RmlsZXNcbiAqIEBwYXJhbSB2YWxpZGF0ZUZpbGVzIGZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhhdCB2YWxpZGF0aW9uIGlzIGFjdGl2ZSBvciBvwr9ub3RcbiAqIEBwYXJhbSBjbGVhbk9uVXBsb2FkIGZsYWcgdG8gZGV0ZXJtaW5lIHdodGhlciB0byBjbGVuYSB0aGUgbGlzdCBvb2Ygbm9uIHZhbGlkIGZpbGVzIG9yIG5vdFxuICogQHJldHVybnMgYSBsaXN0IG9mIEV4dEZpbGVJbnN0YW5jZVxuICovXG4gICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcyID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGxvY2FsRmlsZXMsIHZhbGlkYXRlRmlsZXMsIGNsZWFuT25VcGxvYWQpIHtcbiAgICAgICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3QoZHJvcHpvbmVJZCwgbG9jYWxGaWxlcy5tYXAoZnVuY3Rpb24gKEYpIHsgcmV0dXJuIG5ldyBFeHRGaWxlSW5zdGFuY2UoX19hc3NpZ24oX19hc3NpZ24oe30sIEYpLCB7IHVwbG9hZFN0YXR1czogXCJwcmVwYXJpbmdcIiB9KSk7IH0pKTtcbiAgICAgICAgcmV0dXJuIEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QoZHJvcHpvbmVJZCk7XG4gICAgfTtcbiAgICBFeHRGaWxlTWFuYWdlci5uZXh0SWQgPSAwO1xuICAgIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0cyA9IHt9O1xuICAgIHJldHVybiBFeHRGaWxlTWFuYWdlcjtcbn0oKSk7XG5cbnZhciBjcmVhdGVVcGxvYWRDb25maWcgPSBmdW5jdGlvbiAodXJsLCBtZXRob2QsIGhlYWRlcnMsIHVwbG9hZExhYmVsLCBjbGVhbm9uVXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICB1cGxvYWRMYWJlbDogdXBsb2FkTGFiZWwsXG4gICAgICAgIGNsZWFub25VcGxvYWQ6IGNsZWFub25VcGxvYWRcbiAgICB9O1xufTtcblxuLyoqXG4gKiBBIHN5bnRldGljIGZpbGUgY3JlYXRvci5cbiAqIFZlcnkgdXNlZnVsIGZvciB0ZXN0c1xuICovXG52YXIgU3ludGhldGljRmlsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTeW50aGV0aWNGaWxlKCkge1xuICAgIH1cbiAgICAvKipcbiAqXG4gKiBAcGFyYW0gbmFtZSB0aGUgZmlsZSBuYW1lXG4gKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gKiBAcGFyYW0gdHlwZSB0aGUgZmlsZSB0eXBlXG4gKiBAcmV0dXJuc1xuICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVGaWxlID0gZnVuY3Rpb24gKG5hbWUsIHNpemUsIHR5cGUpIHtcbiAgICAgICAgdmFyIGZpbGUgPSBuZXcgRmlsZShbXSwgbmFtZSwgeyB0eXBlOiB0eXBlIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmlsZSwgXCJzaXplXCIsIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaWxlO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYWFjID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImFjY19hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hYWNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL2FhY1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2FidyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJhYml3b3JkLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmFid1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1hYml3b3JkXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZnJlZWFyYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJmcmVlYXJjLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmFyY1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1mcmVlYXJjXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYXZpID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImF2aS1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hdmlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL3gtbXN2aWRlb1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2F6dyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJhbWF6b25fa2luZGxlX2Vib29rLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmF6d1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9va1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29jdGV0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImJpbmFyeV9vY3RldF9zdHJlYW0tZmlsZS13aXRoLWxhcmdlLW5hbWUuYmluXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9ibXAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYml0X21hcC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5ibXBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL2JtcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2J6ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInhfYnppcC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5ielwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1iemlwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYnoyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInhfYnppcF8yLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmJ6MlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1iemlwMlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NkYSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJjZF9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS5jZGFcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtY2RmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfY3NoID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuY3NoXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWNzaFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzcyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmNzc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9jc3NcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc3YgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5jc3ZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvY3N2XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZG9jID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZG9jXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9kb2N4ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZG9jeFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9lb3QgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5lb3RcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZXB1YiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmVwdWJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2VwdWIremlwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZ3ppcCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmd6XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9nemlwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZ2lmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZ2lmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9naWZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9odG0gPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5odG1cIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvaHRtbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2h0bWwgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5odG1sXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9pY28gPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5pY29cIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ljYWxlbmRhciA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmljc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9jYWxlbmRhclwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2phciA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmphclwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanBlZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpwZWdcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL2pwZWdcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qcGcgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qcGdcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL2pwZWdcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qcyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2phdmFzY3JpcHRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qc29uID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuanNvblwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzb25sZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpzb25sZFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vbGQranNvblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21pZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vbWlkaVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hfbWlkID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubWlkXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby94LW1pZGlcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9taWRpID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubWlkaVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8veC1taWRpXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeF9taWRpID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubWlkaVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8veC1taWRpXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbWpzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubWpzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2phdmFzY3JpcHRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcDMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5tcDNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL21wZWdcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcDQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5tcDRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL21wNFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wZWcgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5tcGVnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby9tcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbXBrZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1wa2dcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2RwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2RwXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kcyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9kc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kdCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9kdFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2dhID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2dhXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9vZ2dcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ3YgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZ3ZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL29nZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29neCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9neFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vb2dnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb3B1cyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9wdXNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL29wdXNcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vdGYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vdGZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImZvbnQvb3RmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcG5nID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucG5nXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9wbmdcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9wZGYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wZGZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3BkZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BocCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBocFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1odHRwZC1waHBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9wcHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wcHRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcHB0eCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBwdHhcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9yYXIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5yYXJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5yYXJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9ydGYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5ydGZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3J0ZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3NoID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuc2hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtc2hcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9zdmcgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5zdmdcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3N2Zyt4bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9zd2YgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5zd2ZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdGFyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUudGFyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LXRhclwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RpZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnRpZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvdGlmZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RpZmYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50aWZmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS90aWZmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdHMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwibXAydF92aWRlby1maWxlLXdpdGgtbGFyZ2UtbmFtZS50c1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vbXAydFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3R0ZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnR0ZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiZm9udC90dGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90ZXh0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUudHh0XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdHlwZXNjcmlwdCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0eXBlc2NyaXB0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnRzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdnNkID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIm1zX3Zpc2lvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnZzZFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLnZpc2lvXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd2F2ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIndhdl9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS53YXZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3dhdlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYmEgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwid2ViX2F1ZGlvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLndlYmFcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3dlYm1cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJtID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIndlYl92aWRlby1maWxlLXdpdGgtbGFyZ2UtbmFtZS53ZWJtXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby93ZWJtXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd2VicCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ3ZWJfaW1hZ2UtZmlsZS13aXRoLWxhcmdlLW5hbWUud2VicFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2Uvd2VicFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dvZmYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS53b2ZmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJmb250L3dvZmZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmMiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLndvZmYyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJmb250L3dvZmYyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeGh0bWwgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54aHRtbFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veGh0bWwreG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeGxzeCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnhsc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeGxzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUueGxzeFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94bWwgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwieG1sLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnhtbFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeG1sX3R4dCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ4bWxfcGxhaW5fdGV4dC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54bWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3h1bCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnh1bFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ppcCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ6aXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuemlwXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi96aXBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3AgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiM2dwX3ZpZGVvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLjNncFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vM2dwcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncDIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiM2dwMl92aWRlby1maWxlLXdpdGgtbGFyZ2UtbmFtZS4zZzJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvLzNncHAyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfM2dwX2EgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiM2dwX2F1ZGlvLWZpbGUtd2l0aC1sYXJnZS1uYW1lLjNncFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vM2dwcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncF92ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncF9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS4zZ3AyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby8zZ3BwMlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzd6ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInNldmVuX3ppcC1maWxlLXdpdGgtbGFyZ2UtbmFtZS43elwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcHl0aG9uID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInB5dGhvbi1maWxlLXdpdGgtbGFyZ2UtbmFtZS5weVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2phdmEgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiamF2YS1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qYXZhXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcmVhY3QgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwicmVhY3RfanN4LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpzeFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3Z1ZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ2dWUtZmlsZS13aXRoLWxhcmdlLW5hbWUudnVlXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L3BsYWluXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmYWtlIChzeW50aGV0aWMpIGZpbGVzXG4gICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZSBmb3IgYWxsIHN5bnRoZXRpYyBmaWxlc1xuICAgICAqIEByZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBmaWxlIGljb24gcHJldmlldyBzdXBwb3J0ZWQgZmlsZXNcbiAgICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGVMaXN0TWlzY2VsYW5pb3VzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgdmFyIGxpc3RGaWxlID0gW107XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYWFjKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9hYncoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ZyZWVhcmMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2F2aShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYXp3KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vY3RldChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYm1wKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9ieihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYnoyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9jZGEoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzaChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfY3NzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc3Yoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2RvYyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZG9jeChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZW90KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9lcHViKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9nemlwKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9naWYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2h0bShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfaHRtbChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfaWNvKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9pY2FsZW5kYXIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2phcihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfanBlZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfanBnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qcyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfanNvbihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfanNvbmxkKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9taWQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21pZGkoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hfbWlkKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94X21pZGkoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21qcyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbXAzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcDQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wZWcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wa2coc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kcChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2RzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29nYShzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2d2KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ3goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29wdXMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX290ZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcG5nKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9wZGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BocChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcHB0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9wcHR4KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9yYXIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3J0ZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfc2goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3N2ZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfc3dmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90YXIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RpZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdGlmZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdHMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3R0ZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdGV4dChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdHlwZXNjcmlwdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdnNkKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93YXYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYmEoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYm0oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYnAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dvZmYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dvZmYyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94aHRtbChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeGxzeChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeGxzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94bWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3htbF90eHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3h1bChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfemlwKHNpemUpKTtcbiAgICAgICAgLy9saXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncChzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3AyKHNpemUpKTtcbiAgICAgICAgLy9saXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncF9hKHNpemUpKTtcbiAgICAgICAgLy9saXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncF92KHNpemUpKTtcbiAgICAgICAgLy9saXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzd6KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9weXRob24oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2phdmEoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3JlYWN0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV92dWUoc2l6ZSkpO1xuICAgICAgICByZXR1cm4gbGlzdEZpbGU7XG4gICAgfTtcbiAgICByZXR1cm4gU3ludGhldGljRmlsZTtcbn0oKSk7XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8gU0hPUlRDVVRTXG4vKipcbiAqIENyZWF0ZSBhIGxpc3Qgb2Ygc3ludGhldGljIGZpbGVzIHdpdGggZGlmZmVyZW50IG1pbWUgdHlwZXNcbiAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemUgZm9yIGVhY2ggc3ludGhldGljIGZpbGVcbiAqIEByZXR1cm5zIGEgbGlzdCBvZiBzeW50aGV0aWMgZmlsZVxuICovXG52YXIgY3JlYXRlTGlzdE9mTXVsdGlUeXBlRmlsZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZUxpc3RNaXNjZWxhbmlvdXMoc2l6ZSk7XG59O1xuLyoqXG4gKiBDcmVhdGVzIGEgc3ludGhldGljIGZpbGUuXG4gKiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEgcG5nIGltYWdlIGZpbGVcbiAqIEBwYXJhbSBuYW1lIHRoZSBmaWxlIG5hbWUgdG8gc2hvdy4gQnkgZGVmYXVsdCBpcyBzZXQgdG8gXCJwbmctaW1hZ2UtZmlsZS13aXRoLWxhcmdlLW5hbWUucG5nXCJcbiAqIEBwYXJhbSBzaXplIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBmaWxlLiBCeSBkZWZhdWx0IHRoaXMgdmFsdWUgaXMgc2V0IHRvIDQ1NTU1NVxuICogQHBhcmFtIHR5cGUgdGhlIG1pbWUgdHlwZSBvZiB0aGUgZmlsZS4gQnkgZGVmYXVsdCBpcyBzZXQgdG8gXCJpbWFnZS9wbmdcIlxuICogQHJldHVybnNcbiAqL1xudmFyIGNyZWF0ZVN5bnRoZXRpY0ZpbGUgPSBmdW5jdGlvbiAobmFtZSwgc2l6ZSwgdHlwZSkge1xuICAgIGlmIChuYW1lID09PSB2b2lkIDApIHsgbmFtZSA9IFwicG5nLWltYWdlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBuZ1wiOyB9XG4gICAgaWYgKHNpemUgPT09IHZvaWQgMCkgeyBzaXplID0gNDU1NTU1OyB9XG4gICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gXCJpbWFnZS9wbmdcIjsgfVxuICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUobmFtZSwgc2l6ZSwgdHlwZSk7XG59O1xuXG4vKipcbiAqIEFuIGlkIGdlbmVyYXRvciBmb3IgRmlsZUl0ZW1zXG4gKi9cbnZhciBGaWxlSWRHZW5lcmF0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmlsZUlkR2VuZXJhdG9yKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmNyZWFzZXMgdGhlIGlkIGNvdW50ZXIgYW5kIHJldHVybnMgdGhlIG5leHQgaWQgYXZhaWxhYmxlLlxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IGludGVnZXIgaWQgYXZhaWxhYmxlXG4gICAgICovXG4gICAgRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgRmlsZUlkR2VuZXJhdG9yLm5leHRJZCsrO1xuICAgICAgICByZXR1cm4gRmlsZUlkR2VuZXJhdG9yLm5leHRJZDtcbiAgICB9O1xuICAgIEZpbGVJZEdlbmVyYXRvci5uZXh0SWQgPSAwO1xuICAgIHJldHVybiBGaWxlSWRHZW5lcmF0b3I7XG59KCkpO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaWxlTGlzdCBpbnRvIGFuIGFycmF5IG9mIHNlcGFyYXRlZCBFeHRGaWxlIG9iamVjdHNcbiAqIEBwYXJhbSBmaWxlTGlzdCB0aGUgRmlsZUxpc3Qgb2JqZWN0IGdpdmVuIGJ5IGlucHV0KGV2ZW50LnRhcmdldC5maWxlcykgb3IgZHJvcCBvcGVyYXRpb24gKGV2ZW50LmRhdGFUcmFuc2ZlcilcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIEV4dEZpbGUgb2JqZWN0c1xuICovXG52YXIgZmlsZUxpc3RUb0V4dEZpbGVBcnJheSA9IGZ1bmN0aW9uIChmaWxlTGlzdCkge1xuICAgIHZhciBleHRGaWxlQXJyYXkgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgZiA9IHZvaWQgMDsgKGYgPSBmaWxlTGlzdFtpXSk7IGkrKykge1xuICAgICAgICBleHRGaWxlQXJyYXkucHVzaCh7IGlkOiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCksIGZpbGU6IGYsIG5hbWU6IGYubmFtZSwgc2l6ZTogZi5zaXplLCB0eXBlOiBmLnR5cGUgfSk7XG4gICAgfVxuICAgIHJldHVybiBleHRGaWxlQXJyYXk7XG59O1xuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZmlsZUxpc3QgaW50byBhbiBhcnJheSBvZiBzZXBhcmF0ZWQgRXh0RmlsZSBpbnN0YW5jZXNcbiAqIEBwYXJhbSBmaWxlTGlzdCB0aGUgRmlsZUxpc3Qgb2JqZWN0IGdpdmVuIGJ5IGlucHV0IChldmVudC50YXJnZXQuZmlsZXMpIG9yIGRyb3Agb3BlcmF0aW9uIChldmVudC5kYXRhVHJhbnNmZXIpXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBFeHRGaWxlIGluc3RhbmNlc1xuICovXG52YXIgZmlsZUxpc3RUb0V4dEZpbGVJbnN0YW5jZUFycmF5ID0gZnVuY3Rpb24gKGZpbGVMaXN0KSB7XG4gICAgdmFyIGV4dEZpbGVBcnJheSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBmID0gdm9pZCAwOyAoZiA9IGZpbGVMaXN0W2ldKTsgaSsrKSB7XG4gICAgICAgIGV4dEZpbGVBcnJheS5wdXNoKG5ldyBFeHRGaWxlSW5zdGFuY2UoeyBpZDogRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpLCBmaWxlOiBmLCBuYW1lOiBmLm5hbWUsIHNpemU6IGYuc2l6ZSwgdHlwZTogZi50eXBlIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dEZpbGVBcnJheTtcbn07XG5cbnZhciBpc1ZhbGlkYXRlQWN0aXZlID0gZnVuY3Rpb24gKGFjY2VwdCwgbWF4RmlsZVNpemUsIG1heEZpbGVzLCB2YWxpZGF0b3IpIHtcbiAgICByZXR1cm4gKChhY2NlcHQgIT09IHVuZGVmaW5lZCAmJiBhY2NlcHQgIT09IG51bGwpIHx8XG4gICAgICAgIChtYXhGaWxlU2l6ZSAhPT0gdW5kZWZpbmVkICYmIG1heEZpbGVTaXplICE9PSBudWxsKSB8fFxuICAgICAgICAobWF4RmlsZXMgIT09IHVuZGVmaW5lZCAmJiBtYXhGaWxlcyAhPT0gbnVsbCkgfHxcbiAgICAgICAgKHZhbGlkYXRvciAhPT0gdW5kZWZpbmVkICYmIHZhbGlkYXRvciAhPT0gbnVsbCkpO1xufTtcblxuLyoqXG4gKiBUaGUgbWF4IHNpemUgb2YgdGhlIHdvcmQgaW4gY2hhcmFjdGVyc1xuICovXG52YXIgREVGQVVMVF9NQVhfU0laRV9XT1JEID0gMzA7XG4vKipcbiAqXG4gKiBAcGFyYW0gd29yZCB0aGUgd29yZCB0byBiZSBzaHJpbmtlZFxuICogQHJldHVybnMgdGhlIHNocmlua2VkIHdvcmRcbiAqL1xudmFyIHNocmlua1dvcmQgPSBmdW5jdGlvbiAod29yZCwgY2FyZCkge1xuICAgIGlmICh3b3JkID09PSB2b2lkIDApIHsgd29yZCA9IFwiXCI7IH1cbiAgICBpZiAoY2FyZCA9PT0gdm9pZCAwKSB7IGNhcmQgPSBmYWxzZTsgfVxuICAgIHZhciBuZXdXb3JkID0gd29yZDtcbiAgICBpZiAoY2FyZCkge1xuICAgICAgICBpZiAod29yZC5sZW5ndGggPj0gMjApIHtcbiAgICAgICAgICAgIG5ld1dvcmQgPSB3b3JkLnNsaWNlKDAsIDEwKSArIFwiLi4uXCIgKyB3b3JkLnNsaWNlKC03KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh3b3JkLmxlbmd0aCA+PSBERUZBVUxUX01BWF9TSVpFX1dPUkQpIHtcbiAgICAgICAgbmV3V29yZCA9IHdvcmQuc2xpY2UoMCwgMTMpICsgXCIuLi5cIiArIHdvcmQuc2xpY2UoLTgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3V29yZDtcbn07XG5cbi8qKlxuICogVXBkYXRlcyBhIGV4dEZpbGUgYW5kIHNldHMgaXRzIHVwbG9hZFN0YXR1cyB0byBcInVwbG9hZGluZ1wiXG4gKiBAcGFyYW0gZXh0RmlsZSB0aGUgZXh0ZW5kZWQgZmlsZSBvYmplY3RcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBmaWxlIHdpdGggdGhlIHVwbG9hZFN0YXR1cyBhdHRyaWJ1dGUgbW9kaWZpZWRcbiAqL1xudmFyIHNldFByZXBUb1VwbG9hZGluZyA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInByZXBUb1VwbG9hZCBPbmVcIiwgZXh0RmlsZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwidXBsb2FkaW5nXCIgfSkpO1xuICAgICAgICB9LCAxNTAwKTtcbiAgICB9KTtcbn07XG4vKipcbiAqIFVwZGF0ZXMgYSBleHRGaWxlIGFuZCBzZXRzIGl0cyB1cGxvYWRTdGF0dXMgdG8gXCJzdWNjZXNzXCJcbiAqIEBwYXJhbSBleHRGaWxlIHRoZSBleHRlbmRlZCBmaWxlIG9iamVjdFxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGZpbGUgd2l0aCB0aGUgdXBsb2FkU3RhdHVzIGF0dHJpYnV0ZSBtb2RpZmllZFxuICovXG52YXIgdXBsb2FkT25lID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkIE9uZVwiLCBleHRGaWxlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJzdWNjZXNzXCIgfSkpO1xuICAgICAgICB9LCAyMDAwKTtcbiAgICB9KTtcbn07XG4vKipcbiAqIEF3YWl0cyB0aGUgZ2l2ZW4gdGltZSBiZWZvcmUgc3RhcnQgdXBsb2FkaW5nXG4gKiBAcGFyYW0gcHJlcGFyaW5nVGltZSB0aGUgdGltZSBpbiBtaWxpc2Vjb25kcywgYnkgZGVmYXVsdCBpdCB3aWxsIHdhaXQgMS41IHNlY3NcbiAqIEByZXR1cm5zIGFuIGVtcHR5IG9iamVjdFxuICovXG52YXIgc2xlZXBQcmVwYXJpbmcgPSBmdW5jdGlvbiAocHJlcGFyaW5nVGltZSkge1xuICAgIGlmIChwcmVwYXJpbmdUaW1lID09PSB2b2lkIDApIHsgcHJlcGFyaW5nVGltZSA9IDUwMDA7IH1cbiAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkZmlsZXMgcHJlcGFyaW5nVGltZSBPbmVcIiwgcHJlcGFyaW5nVGltZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0sIHByZXBhcmluZ1RpbWUpO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlSW5zdGFuY2VcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBwcmVwVG9VcGxvYWRPbmUgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInByZXBUb1VwbG9hZCBPbmVcIiwgZXh0RmlsZUluc3RhbmNlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcInVwbG9hZGluZ1wiO1xuICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZUluc3RhbmNlKSwgeyB1cGxvYWRTdGF0dXM6IFwidXBsb2FkaW5nXCIgfSkpO1xuICAgICAgICB9LCAxNTAwKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZUluc3RhbmNlXG4gKiBAcmV0dXJuc1xuICovXG52YXIgdXBsb2FkT25lRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkIE9uZVwiLCBleHRGaWxlSW5zdGFuY2UpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwic3VjY2Vzc1wiO1xuICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZUluc3RhbmNlKSwgeyB1cGxvYWRTdGF0dXM6IFwic3VjY2Vzc1wiIH0pKTtcbiAgICAgICAgfSwgMjAwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dEZpbGUgdG8gdXBsb2FkXG4gKiBAcGFyYW0gRHJvcHpvbmVMb2NhbGl6ZXIgdGhlIGxvY2FsaXphdGlvblxuICogQHJldHVybnMgYSBkdWlVcGxvYWRSZXNwb25zZSBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIHJlc3VsdFxuICovXG52YXIgZmFrZUZ1aVVwbG9hZCA9IGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UsIERyb3B6b25lTG9jYWxpemVyKSB7XG4gICAgaWYgKERyb3B6b25lTG9jYWxpemVyID09PSB2b2lkIDApIHsgRHJvcHpvbmVMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKFwiRU4tZW5cIik7IH1cbiAgICB2YXIgZXh0RmlsZSA9IGV4dEZpbGVJbnN0YW5jZS50b0V4dEZpbGUoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByYW5kb21OdW1iZXIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCk7XG4gICAgICAgICAgICBpZiAocmFuZG9tTnVtYmVyICUgMiA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHZhciBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IERyb3B6b25lTG9jYWxpemVyLmZha2V1cGxvYWRzdWNjZXNzO1xuICAgICAgICAgICAgICAgIHZhciBwYXlsb2FkID0geyB1cmw6IFwiXCIgfTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyBzZXJ2ZXJSZXNwb25zZTogeyBzdWNjZXNzOiBzdWNjZXNzLCBtZXNzYWdlOiBtZXNzYWdlLCBwYXlsb2FkOiBwYXlsb2FkIH0sIHVwbG9hZFN0YXR1czogXCJzdWNjZXNzXCIsIHVwbG9hZE1lc3NhZ2U6IG1lc3NhZ2UgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IERyb3B6b25lTG9jYWxpemVyLmZha2VVcGxvYWRFcnJvcjtcbiAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZCA9IHt9O1xuICAgICAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHNlcnZlclJlc3BvbnNlOiB7IHN1Y2Nlc3M6IHN1Y2Nlc3MsIG1lc3NhZ2U6IG1lc3NhZ2UsIHBheWxvYWQ6IHBheWxvYWQgfSwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIsIHVwbG9hZE1lc3NhZ2U6IG1lc3NhZ2UgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxNzAwKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUmFuZG9tIGludGVnZXIgYmV0d2VlbiBtaW4gKGluY2x1ZGVkKSBhbmQgbWF4IChleGNsdWRlZClcbiAqIEBwYXJhbSBtaW4gdGhlIG1pbiBudW1iZXJcbiAqIEBwYXJhbSBtYXggdGhlIG1heCBudW1iZXJcbiAqIEByZXR1cm5zIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIG1pbiAoaW5jbHVkZWQpIGFuZCBtYXggKGV4Y2x1ZGVkKVxuICovXG5mdW5jdGlvbiBnZXRSYW5kb21JbnQobWluLCBtYXgpIHtcbiAgICBpZiAobWluID09PSB2b2lkIDApIHsgbWluID0gMDsgfVxuICAgIGlmIChtYXggPT09IHZvaWQgMCkgeyBtYXggPSAwOyB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcbn1cblxuLyoqXG4gKiBDbGVhbnMgdGhlIGlucHV0LnZhbHVlIGF0dHJpYnV0ZVxuICogQHBhcmFtIGlucHV0RWxlbWVudFxuICovXG52YXIgY2xlYW5JbnB1dCA9IGZ1bmN0aW9uIChpbnB1dEVsZW1lbnQpIHtcbiAgICBpZiAoIWlucHV0RWxlbWVudClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlucHV0RWxlbWVudC52YWx1ZSA9IFwiXCI7XG59O1xuXG4vKipcbiAqIElmIGNsYXNzTmFtZSBpcyBnaXZlbiwgYWRkcyBjbGFzcyBuYW1lIGluIHN0cmluZyBmb3JtYXQgdG8gYSBiYXNlIGNsYXNzIG5hbWVcbiAqIEBwYXJhbSBiYXNlQ2xhc3NOYW1lIHRoZSBiYXNlIGNsYXNzIG5hbWVcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIGNsYXNzIG5hbWUgdG8gYmUgYWRkZWRcbiAqIEByZXR1cm5zIGEgbmV3IGNsYXNzIG5hbWUgb2J0YWluZWQgYnkgYWRkaW5nIHRoZSBzZWNvbmQgcGFyYW1hdGVyXG4gKi9cbnZhciBhZGRDbGFzc05hbWUgPSBmdW5jdGlvbiAoYmFzZUNsYXNzTmFtZSwgY2xhc3NOYW1lKSB7XG4gICAgaWYgKGNsYXNzTmFtZSlcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGJhc2VDbGFzc05hbWUsIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gYmFzZUNsYXNzTmFtZTtcbn07XG5cbnZhciBpc1VwbG9hZEFibGVFeHRGaWxlID0gZnVuY3Rpb24gKGV4dEZpbGUsIHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgcmV0dXJuICghdmFsaWRhdGVGaWxlc0ZsYWcgfHwgKHZhbGlkYXRlRmlsZXNGbGFnICYmIGV4dEZpbGUudmFsaWQpKSAmJiBleHRGaWxlLnVwbG9hZFN0YXR1cyAhPT0gXCJzdWNjZXNzXCI7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gZmlsZVxuICogQHBhcmFtIG5hbWVcbiAqIEBwYXJhbSB0eXBlXG4gKiBAcGFyYW0gc2l6ZVxuICogQHJldHVybnMgdGhlIGZpbGUgbmFtZSwgdHlwZSBhbmQgc2l6ZVxuICovXG52YXIgZ2V0TG9jYWxGaWxlSXRlbURhdGEgPSBmdW5jdGlvbiAoZmlsZSwgbmFtZSwgdHlwZSwgc2l6ZSkge1xuICAgIHZhciBsb2NhbEZpbGVOYW1lID0gXCJcIjtcbiAgICB2YXIgbG9jYWxGaWxlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgbG9jYWxGaWxlU2l6ZSA9IHVuZGVmaW5lZDtcbiAgICAvLyBpZiBmaWxlIG9iamVjdCBpcyB2YWxpZCwgb2J0YWluIG1ldGFkYXRhIGZyb20gaXRcbiAgICAvLyBvdGhlcndpc2UgdHJ5IHRvIGdldCBmaWxlIGRhdGEgZnJvbSBpbmRpdmlkdWFsIHByb3BzIGluIHN0cmluZyBmb3JtYXRcbiAgICBpZiAoZmlsZSAmJiB0eXBlb2YgZmlsZS5uYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGxvY2FsRmlsZU5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgIGxvY2FsRmlsZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgICAgIGxvY2FsRmlsZVNpemUgPSBmaWxlLnNpemU7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5hbWUgJiYgdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbG9jYWxGaWxlTmFtZSA9IG5hbWU7XG4gICAgICAgIGxvY2FsRmlsZVR5cGUgPSB0eXBlO1xuICAgICAgICBsb2NhbEZpbGVTaXplID0gc2l6ZTtcbiAgICB9XG4gICAgcmV0dXJuIFtsb2NhbEZpbGVOYW1lLCBsb2NhbEZpbGVUeXBlLCBsb2NhbEZpbGVTaXplXTtcbn07XG5cbi8qKlxuICogU2VwYXJhdGUgdGhlIGFjY2VwdCBzdHJpbmcgYXJyYXkgaW50byBhbiBhcnJheSBvZiBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXNcbiAqIEBwYXJhbSBhY2NlcHQgdGhlIHN0cmluZyBhY2NlcHQgYXJyYXlcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MgaW4gd2ljaCBldmVyeSBpdGVtXG4gKi9cbnZhciBzZXBhcmF0ZUFjY2VwdCA9IGZ1bmN0aW9uIChhY2NlcHQpIHtcbiAgICBpZiAoIWFjY2VwdCB8fCBhY2NlcHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdmFyIGNvbW1hU2VwYXJhdGVkQWNjcGV0ID0gYWNjZXB0LnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24gKGFjY2VwdEl0ZW0pIHsgcmV0dXJuIGFjY2VwdEl0ZW0udHJpbSgpOyB9KTtcbiAgICByZXR1cm4gY29tbWFTZXBhcmF0ZWRBY2NwZXQ7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZmlsZSBpcyB2YWxpZCBvciBub3QgZ2l2ZW4gYW4gYXJyYXkgb2YgZmlsZSBleHRlbnRpb25zIGFuZCBtaW1lIHR5cGVzXG4gKiBlLmcuIGFjY2VwdCA9ICBbXCIuZG9jXCIsIFwiLmRvY3hcIiwgXCIueG1sXCIsIFwiYXBwbGljYXRpb24vbXN3b3JkXCIsIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIl1cbiAqIEBwYXJhbSBhY2NlcHQgdGhlIGFycmF5IG9mIHN0cmluZ3MgYWNjZXB0IGl0ZW1zXG4gKiBAcGFyYW0gZmlsZSBhIEZpbGUgb2JqZWN0IHRvIGJlIGV2YWx1YXRlZFxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgbWltZSB0eXBlIGZpbGUgaXMgaW5jbHVkZWQgaW4gdGhlIGFjY2VwdCBwYXJhbVxuICovXG52YXIgdmFsaWRhdGVBY2NlcHQgPSBmdW5jdGlvbiAoYWNjZXB0LCBmaWxlKSB7XG4gICAgdmFyIHZhbGlkID0gZmFsc2U7XG4gICAgdmFyIG5hbWUgPSBmaWxlLm5hbWUsIHR5cGUgPSBmaWxlLnR5cGU7XG4gICAgLy9BcnJheSg1KSBbIFwiLmRvY1wiLCBcIi5kb2N4XCIsIFwiLnhtbFwiLCBcImFwcGxpY2F0aW9uL21zd29yZFwiLCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCIgXVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWNjZXB0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhY2NlcHRJdGVtID0gYWNjZXB0W2ldO1xuICAgICAgICAvL2NoZWNrIGlzIG5vdCBlbXB0eVxuICAgICAgICBpZiAoYWNjZXB0SXRlbS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIC8vY2hlY2sgZXh0ZW50aW9uXG4gICAgICAgICAgICBpZiAoYWNjZXB0SXRlbS5jaGFyQXQoMCkgPT09IFwiLlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjY2VwdEl0ZW0uaW5jbHVkZXMoZ2V0RXh0KG5hbWUpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NoZWNrIG1pbWVcbiAgICAgICAgICAgIC8vIGhlYWRlci90YWlsICA9PiBpbWFnZS9wbmcgIDsgIGltYWdlLyogOyBhdWRpb1xuICAgICAgICAgICAgaWYgKHR5cGUgJiYgdHlwZS5sZW5ndGggPiAwICYmIGFjY2VwdEl0ZW0uaW5jbHVkZXMoXCIvXCIpICYmIHR5cGUuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhlYWRlck1pbWUgPSBhY2NlcHRJdGVtLnNwbGl0KFwiL1wiKVswXTtcbiAgICAgICAgICAgICAgICB2YXIgdGFpbE1pbWUgPSBhY2NlcHRJdGVtLnNwbGl0KFwiL1wiKVsxXTtcbiAgICAgICAgICAgICAgICB2YXIgaGVhZGVyTWltZUZpbGUgPSB0eXBlLnNwbGl0KFwiL1wiKVswXTtcbiAgICAgICAgICAgICAgICB2YXIgdGFpbE1pbWVGaWxlID0gdHlwZS5zcGxpdChcIi9cIilbMV07XG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlck1pbWUgPT09IGhlYWRlck1pbWVGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICAgIGltYWdlLypcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhaWxNaW1lID09PSBcIipcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGFpbE1pbWUgPT09IHRhaWxNaW1lRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHByZVZhbGlkYXRlZEZpbGVzIEZpbGVMaXN0XG4gKiBAcGFyYW0gcmVtYWluaW5nVmFsaWRzIFRoZSBudW1iZXIgb2YgcmVtYWluaW5nIHZhbGlkIGZpbGVzXG4gKiBAcGFyYW0gbG9jYWxWYWxpZGF0b3JcbiAqIEBwYXJhbSB2YWxpZGF0b3JcbiAqIEBwYXJhbSBtYXhGaWxlc1xuICogQHBhcmFtIGxvY2FsaXphdGlvblxuICogQHJldHVybnNcbiAqL1xudmFyIGZpbGVMaXN0dmFsaWRhdG9yID0gZnVuY3Rpb24gKHByZVZhbGlkYXRlZEZpbGVzLCByZW1haW5pbmdWYWxpZHMsIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pIHtcbiAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgLy9zZXQgYSBjb3VudGRvd24gd2hlbiB0aGVyZSBpcyBhIGxpbWl0IG9uIGZpbGVzXG4gICAgdmFyIGNvdW50ZG93biA9IHJlbWFpbmluZ1ZhbGlkcztcbiAgICAvLyBnZXQgbG9jYWxpemVkIGxhYmVsc1xuICAgIHZhciBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIgPSBWYWxpZGF0ZUVycm9yTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICAvL0l0ZXJhdGUgdGhlIEZpbGUgbGlzdFxuICAgIGZvciAodmFyIGkgPSAwLCBmID0gdm9pZCAwOyAoZiA9IHByZVZhbGlkYXRlZEZpbGVzW2ldKTsgaSsrKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBmaWxlIGxpc3Qgd2l0aFxuICAgICAgICB2YXIgdmFsaWRhdGVkRmlsZSA9IHZhbGlkYXRlRmlsZShmLCB2YWxpZGF0b3IsIGxvY2FsVmFsaWRhdG9yLCBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIpO1xuICAgICAgICBpZiAodmFsaWRhdGVkRmlsZS52YWxpZCkge1xuICAgICAgICAgICAgLy9ub3QgdmFsaWQgZHVlIHRvIGZpbGUgY291bnQgbGltaXRcbiAgICAgICAgICAgIHZhciB2YWxpZCA9IGNvdW50ZG93biA+IDA7XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWxlLnZhbGlkID0gdmFsaWQ7XG4gICAgICAgICAgICAvL2FkZCBlcnJvciBhYm91dCBhbW91bnRcbiAgICAgICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWF4RmlsZUVycm9yTWVzc2VuZ2VyID0gVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyLm1heEZpbGVDb3VudDtcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZWRGaWxlLmVycm9ycyA9IHZhbGlkYXRlZEZpbGUuZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgID8gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCB2YWxpZGF0ZWRGaWxlLmVycm9ycywgdHJ1ZSksIFttYXhGaWxlRXJyb3JNZXNzZW5nZXIobWF4RmlsZXMgfHwgSW5maW5pdHkpXSwgZmFsc2UpIDogW21heEZpbGVFcnJvck1lc3NlbmdlcihtYXhGaWxlcyB8fCBJbmZpbml0eSldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY291bnRkb3duLS07XG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0LnB1c2godmFsaWRhdGVkRmlsZSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59O1xuLyoqXG4gKiBGb3IgZWFjaCBFeHRGaWxlIHNldHMgdGhlIHZhbGlkIHByb3Agb2YgRXh0RmlsZSB0byBcInRydWVcIiBvciBcImZhbHNlXCJcbiAqIGRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBpbmRpdmlkdWFsIHZhbGlkYXRpb24uXG4gKiBJdCBhbHNvIGFkZCB0aGUgbGlzdCBvZiBlcnJvcnMuXG4gKiBAcGFyYW0gZXh0RmlsZUxpc3RcbiAqIEBwYXJhbSByZW1haW5pbmdWYWxpZHNcbiAqIEBwYXJhbSBsb2NhbFZhbGlkYXRvclByb3BzXG4gKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gbWF4RmlsZXNcbiAqIEBwYXJhbSBsb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zIGEgbmV3IEV4dEZpbGUgbGlzdCB3aXRoIGVhY2ggaXRlbSB2YWxpZGF0ZWRcbiAqL1xudmFyIHZhbGlkYXRlRXh0RmlsZUxpc3QgPSBmdW5jdGlvbiAoZXh0RmlsZUxpc3QsIHJlbWFpbmluZ1ZhbGlkcywgbG9jYWxWYWxpZGF0b3JQcm9wcywgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInJlbWFuaW5nIHZhbGlkc1wiLCByZW1haW5pbmdWYWxpZHMpO1xuICAgIHZhciBmaWxlTGlzdFJlc3VsdCA9IFtdO1xuICAgIGlmICghcmVtYWluaW5nVmFsaWRzKVxuICAgICAgICByZXR1cm4gZmlsZUxpc3RSZXN1bHQ7XG4gICAgdmFyIHJlbWFpbmluZyA9IHJlbWFpbmluZ1ZhbGlkcztcbiAgICB2YXIgVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyID0gVmFsaWRhdGVFcnJvckxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgdmFyIG1heEZpbGVFcnJvck1lc3NlbmdlciA9IFZhbGlkYXRpb25FcnJvckxvY2FsaXplci5tYXhGaWxlQ291bnQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRGaWxlTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3VycmVudEV4dEZpbGUgPSBleHRGaWxlTGlzdFtpXTtcbiAgICAgICAgY3VycmVudEV4dEZpbGUgPSB2YWxpZGF0ZUV4dEZpbGUoY3VycmVudEV4dEZpbGUsIHZhbGlkYXRvciwgbG9jYWxWYWxpZGF0b3JQcm9wcywgVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInZhbGlkYXRlRXh0RmlsZUxpc3QgYWZ0ZXIgdmFsaWRhdGlvblwiLCBjdXJyZW50RXh0RmlsZSk7XG4gICAgICAgIGlmIChjdXJyZW50RXh0RmlsZS52YWxpZCkge1xuICAgICAgICAgICAgLy9ub3QgdmFsaWQgZHVlIHRvIGZpbGUgY291bnQgbGltaXRcbiAgICAgICAgICAgIHZhciB2YWxpZCA9IHJlbWFpbmluZyA+IDA7XG4gICAgICAgICAgICBjdXJyZW50RXh0RmlsZS52YWxpZCA9IHZhbGlkO1xuICAgICAgICAgICAgLy9hZGQgZXJyb3IgYWJvdXQgYW1vdW50XG4gICAgICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGUuZXJyb3JzID0gY3VycmVudEV4dEZpbGUuZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgID8gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBjdXJyZW50RXh0RmlsZS5lcnJvcnMsIHRydWUpLCBbbWF4RmlsZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVzIHx8IEluZmluaXR5KV0sIGZhbHNlKSA6IFttYXhGaWxlRXJyb3JNZXNzZW5nZXIobWF4RmlsZXMgfHwgSW5maW5pdHkpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbWFpbmluZy0tO1xuICAgICAgICB9XG4gICAgICAgIGZpbGVMaXN0UmVzdWx0LnB1c2goY3VycmVudEV4dEZpbGUpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZUxpc3RSZXN1bHQ7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGVcbiAqIEBwYXJhbSB2YWxpZGF0b3JcbiAqIEBwYXJhbSB2YWxpZGF0b3JQcm9wc1xuICogQHBhcmFtIGxvY2FsRXJyb3JzXG4gKiBAcmV0dXJuc1xuICovXG52YXIgdmFsaWRhdGVFeHRGaWxlID0gZnVuY3Rpb24gKGV4dEZpbGUsIHZhbGlkYXRvciwgdmFsaWRhdG9yUHJvcHMsIGxvY2FsRXJyb3JzKSB7XG4gICAgdmFyIGV4dEZpbGVSZXN1bHQgPSBfX2Fzc2lnbih7fSwgZXh0RmlsZSk7XG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIC8vVE8tRE86IEFkZCBleHRyYSB2YWxpZGF0aW9uIGZvciBpbmRpdmlkdWFsIHByb3BzIGV2ZW4gaWYgRklsZSBvYmplY3Qgd2FzIG5vdCBnaXZlblxuICAgIGlmICghZXh0RmlsZS5maWxlKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7fSwgZXh0RmlsZVJlc3VsdCk7XG4gICAgfVxuICAgIC8vVE8tRE86IGFkZCBcIm92ZXJyaWRlVmFsaWRhdGlvblwiIHByb3AgdG8gaWdub3JlIHRoZSByZXN0IG9mIHZhbGlkYXRvcnMgbGlrZSBhY2NlcHQgYW5kIG1heEZpbGVTaXplXG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgICB2YXIgcmVzdWx0Q3VzdG9tVmFsaWRhdGlvbiA9IHZhbGlkYXRvcihleHRGaWxlUmVzdWx0LmZpbGUpO1xuICAgICAgICB2YXIgZXJyb3JzUmVzdWx0ID0gcmVzdWx0Q3VzdG9tVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICAgIGlmIChlcnJvcnNSZXN1bHQpXG4gICAgICAgICAgICBlcnJvcnMucHVzaC5hcHBseShlcnJvcnMsIGVycm9yc1Jlc3VsdCk7XG4gICAgICAgIC8vcmV0dXJuIHsgLi4uZXh0RmlsZVJlc3VsdCwgLi4udmFsaWRhdG9yKGV4dEZpbGVSZXN1bHQuZmlsZSBhcyBGaWxlKSB9O1xuICAgIH1cbiAgICB2YXIgbWF4RmlsZVNpemUgPSB2YWxpZGF0b3JQcm9wcy5tYXhGaWxlU2l6ZSwgYWNjZXB0ID0gdmFsaWRhdG9yUHJvcHMuYWNjZXB0O1xuICAgIC8vY29uc29sZS5sb2coXCJWYWxpZGF0aW9uXCIsIG1heEZpbGVTaXplLCBhY2NlcHQpO1xuICAgIC8vY2hlY2sgZmlsZSBzaXplXG4gICAgdmFyIGZpbGUgPSBleHRGaWxlLmZpbGU7XG4gICAgaWYgKG1heEZpbGVTaXplICYmIGZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG4gICAgICAgIHZhciBtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyID0gbG9jYWxFcnJvcnMubWF4U2l6ZUVycm9yO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiU2l6ZSBlcnJvclwiLCBtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVTaXplKSk7XG4gICAgICAgIGVycm9ycy5wdXNoKG1heEZpbGVTaXplRXJyb3JNZXNzZW5nZXIobWF4RmlsZVNpemUpKTtcbiAgICB9XG4gICAgLy9jaGVjayBmaWxlIHR5cGVcbiAgICBpZiAoYWNjZXB0ICYmICF2YWxpZGF0ZUFjY2VwdChzZXBhcmF0ZUFjY2VwdChhY2NlcHQpLCBmaWxlKSkge1xuICAgICAgICBlcnJvcnMucHVzaChsb2NhbEVycm9ycy5hY2NlcHRFcnJvcik7XG4gICAgfVxuICAgIHZhciBpc1ZhbGlkID0gZXJyb3JzLmxlbmd0aCA9PT0gMDtcbiAgICBleHRGaWxlUmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGVSZXN1bHQpLCB7IHZhbGlkOiBpc1ZhbGlkLCBlcnJvcnM6ICFpc1ZhbGlkID8gZXJyb3JzIDogdW5kZWZpbmVkIH0pO1xuICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0aW9uIGV4dEZpbGVSZXN1bHRcIiwgZXh0RmlsZVJlc3VsdCk7XG4gICAgcmV0dXJuIGV4dEZpbGVSZXN1bHQ7XG59O1xuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IHZhbGlkYXRlIHdoZXRoZXIgYSBmaWxlIGlzIHZhbGlkLCBvciBub3RcbiAqIGFjY29yZGluZyB0byB0aGUgRmlsZXZhbGlkYXRvciBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0gZmlsZSBhIEZpbGUgb2JqZWN0IHRvIGJlIGV2YWx1YXRlZFxuICogQHBhcmFtIHZhbGlkYXRvclByb3BzIHRoZSB2YWxpZGF0b3Igb2JqZWN0XG4gKiBAcmV0dXJucyBhIEZpbGVWYWxpZGF0ZWQgb2JqZWN0XG4gKi9cbnZhciB2YWxpZGF0ZUZpbGUgPSBmdW5jdGlvbiAoZmlsZSwgdmFsaWRhdG9yLCB2YWxpZGF0b3JQcm9wcywgbG9jYWxFcnJvcnMpIHtcbiAgICB2YXIgaWRHZW5lcmF0ZWQgPSBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCk7XG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgaWQ6IGlkR2VuZXJhdGVkLCBmaWxlOiBmaWxlIH0sIHZhbGlkYXRvcihmaWxlKSk7XG4gICAgfVxuICAgIHZhciBtYXhGaWxlU2l6ZSA9IHZhbGlkYXRvclByb3BzLm1heEZpbGVTaXplLCBhY2NlcHQgPSB2YWxpZGF0b3JQcm9wcy5hY2NlcHQ7XG4gICAgLy9jaGVjayBmaWxlIHNpemVcbiAgICBpZiAobWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcbiAgICAgICAgdmFyIG1heEZpbGVTaXplRXJyb3JNZXNzZW5nZXIgPSBsb2NhbEVycm9ycy5tYXhTaXplRXJyb3I7XG4gICAgICAgIGVycm9ycy5wdXNoKG1heEZpbGVTaXplRXJyb3JNZXNzZW5nZXIobWF4RmlsZVNpemUpKTtcbiAgICB9XG4gICAgLy9jaGVjayBmaWxlIHR5cGVcbiAgICAvLyBjb25zdCBhbGxvd2VkVHlwZXMgPSBhY2NlcHQuZmlsdGVyKCh0eXBlKSA9PiAoZmlsZS50eXBlID09PSB0eXBlKSlcbiAgICBpZiAoYWNjZXB0ICYmICF2YWxpZGF0ZUFjY2VwdChzZXBhcmF0ZUFjY2VwdChhY2NlcHQpLCBmaWxlKSkge1xuICAgICAgICBlcnJvcnMucHVzaChsb2NhbEVycm9ycy5hY2NlcHRFcnJvcik7XG4gICAgfVxuICAgIHZhciBmaWxlUmVzdWx0ID0ge1xuICAgICAgICBpZDogaWRHZW5lcmF0ZWQsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgIHZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLFxuICAgICAgICBlcnJvcnM6IGVycm9yc1xuICAgIH07XG4gICAgLy8gbG9naWMgaGVyZVxuICAgIHJldHVybiBmaWxlUmVzdWx0O1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIGJldHdlbiAwIGFuZCAzXG4gKiB3aGVyZVxuICogMCA9PiBlcnJvclxuICogMSA9PiB1cGxvYWRpbmdcbiAqIDIgPT4gc3VjY2Vzc1xuICogMyA9PiB1bmRlZmluZWRcbiAqIEByZXR1cm5zIGEgcmFuZG9tIHVwbG9hZCBzdGF0dXMgb3IgdW5kZWZpbmVkXG4gKi9cbnZhciBnZXRSYW5kb21VcGxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdCA9IGdldFJhbmRvbUludCgwLCA0KTtcbiAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBcImVycm9yXCI7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIFwidXBsb2FkaW5nXCI7XG4gICAgICAgIGNhc2UgMjogcmV0dXJuIFwic3VjY2Vzc1wiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59O1xuXG4vKipcbiAqIGxpc3Qgb2YgZHVteSBlcnJvcnMgaW4gZW5nbGlzaFxuICovXG52YXIgbGlzdE9mRXJyb3JzID0gW1xuICAgIFwiRmlsZSBpcyB0b28gYmlnLiBNYXggZmlsZSBzaXplIGFsbG93ZWQgaXMgODBtYi5cIixcbiAgICBcIkZpbGUncyB0eXBlIGlzIG5vdCBhbGxvd2VkLlwiLFxuICAgIFwiTWF4IGFtb3VudCBvZiBmaWxlcyAoMjgpIGhhcyBiZWVuIHJlYWNoZWQuXCJcbl07XG5cbi8qKlxuICogTWFrZSBhIHZhbGlkYXRlZCBmaWxlIHRoYXQgaXMgcmVhZHkgdG8gYmUgdXNlZCBvbiBGaWxlSXRlbSBjb21wb25lbnQsXG4gKiBpZiB2YWxpZCBpcyBub3Qgc2V0LCBhIHJhbmRvbSBvcGVyYXRpb24gd2lsbCBkZWNpZGUgd2hldGhlciB0aGUgZmlsZSBpcyB2YWxpZCBvciBub3RcbiAqIElmIHZhbGlkIGlzIGZhbHNlLCB0aGVuIHRoZSBuYXR1cmFsIG9yZGVyIGlzIG5vdCB0byBiZSB1cGxvYWRhYmxlIGFuZCB3b250IGhhdmUgdXBsb2FkIG1lc3NhZ2Ugbm9yIHVwbG9hZCBzdGF0dXNcbiAqIElmIHZhbGlkIGlzIHRydWUsIHRoZW4gZmlsZSBjYW4gYmUgdXBsb2FkZWQgYW5kIGNhbiBoYXZlIHVwbG9hZCBtZXNzYWdlIGlmIHRoZSBzdGF0dXMgaXMgc3VjY2VzIG9yIGVycm9yXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZVxuICogQHBhcmFtIHZhbGlkIHRydWUgaWYgaXQgaXMgYSB2YWxpZCBmaWxlLCBvdGhlcndpc2UgaXMgZmFsc2VcbiAqIEBwYXJhbSB1cGxvYWRTdGF0dXMgdGhlIGN1cnJlbnQgdXBsb2FkIHN0YXR1cy4gSWYgbm90IGdpdmVuIGEgcmFuZG9tIHVwbG9hZCBzdGF0dXMgd2lsbCBiZSBzZXRcbiAqIEBwYXJhbSB1cGxvYWRNZXNzYWdlIHRoZSB1cGxvYWQgbWVzc2FnZSBhZnRlciB1cGxvYWRpbmdcbiAqIEByZXR1cm5zIGEgVmFpZGF0ZWQgRmlsZSBvYmplY3RcbiAqL1xudmFyIG1ha2VTeW50aGV0aWNFeHRGaWxlID0gZnVuY3Rpb24gKGZpbGUsIHZhbGlkLCB1cGxvYWRTdGF0dXMsIHVwbG9hZE1lc3NhZ2UpIHtcbiAgICBpZiAodmFsaWQgPT09IHZvaWQgMCkgeyB2YWxpZCA9IChNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDI4KSAlIDIgPT09IDApOyB9XG4gICAgLy9pZiB2YWxpZCwgbmF0dXJhbGx5LCBjYW4gYmUgdXBsb2FkZWRcbiAgICB2YXIgZXJyb3JzID0gW107XG4gICAgdmFyIG5ld1Vwb2FkU3RhdHVzID0gdXBsb2FkU3RhdHVzIHx8IGdldFJhbmRvbVVwbG9hZFN0YXR1cygpO1xuICAgIHZhciBjdXN0b21VcGxvYWRNZXNzYWdlID0gdXBsb2FkTWVzc2FnZSB8fCBcIlwiO1xuICAgIGlmICh2YWxpZCkge1xuICAgICAgICAvL3dlIGNhbiBkZWNpZGUgYWNjb3JkaW5nIHRvIHVwbG9hZCBzdGF0dXMgXG4gICAgICAgIGlmICghdXBsb2FkTWVzc2FnZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuZXdVcG9hZFN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgICAgICAgICAgICBjdXN0b21VcGxvYWRNZXNzYWdlID0gXCJVcGxvYWQgZmFpbGVkLiBUaGVyZSB3YXMgYW4gZXJyb3JcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IFwiRmlsZSB3YXMgc3VjY2Vzc2Z1bGx5IHVwbG9hZFwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB1cGxvYWRNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVycm9ycyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vaWYgbm90IHZhbGlkLCBqdXN0IHNob3cgZXJyb3IgbWVzc2FnZXNcbiAgICAgICAgdmFyIHJhbmRJbnQgPSBnZXRSYW5kb21JbnQoMCwgMyk7XG4gICAgICAgIGVycm9ycy5wdXNoKGxpc3RPZkVycm9yc1tyYW5kSW50XSk7XG4gICAgICAgIG5ld1Vwb2FkU3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICBjdXN0b21VcGxvYWRNZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvL25vdyBtYWtlIGEgRmlsZSBWYWxpZGF0ZWQgaW5zdGFuY2UgXG4gICAgdmFyIG5ld0ZpbGVWYWxpZGF0ZWQgPSB7XG4gICAgICAgIGlkOiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCksXG4gICAgICAgIHZhbGlkOiB2YWxpZCxcbiAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgdXBsb2FkU3RhdHVzOiBuZXdVcG9hZFN0YXR1cyxcbiAgICAgICAgdXBsb2FkTWVzc2FnZTogY3VzdG9tVXBsb2FkTWVzc2FnZSxcbiAgICAgICAgZXJyb3JzOiBlcnJvcnNcbiAgICB9O1xuICAgIHJldHVybiBuZXdGaWxlVmFsaWRhdGVkO1xufTtcblxudmFyIGV4dEZpbGVNb2NrID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGlkIHx8IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSxcbiAgICAgICAgbmFtZTogXCJmaWxlTmFtZS5leHRcIixcbiAgICAgICAgc2l6ZTogMjggKiAxMDI0ICogMTAyNCxcbiAgICAgICAgdHlwZTogXCJmaWxlcy11aS9tb2NrXCIsXG4gICAgICAgIGZpbGU6IGNyZWF0ZVN5bnRoZXRpY0ZpbGUoXCJmaWxlTmFtZS5leHRcIiwgMjggKiAxMDI0ICogMTAyNCwgXCJmaWxlcy11aS9tb2NrXCIpLFxuICAgICAgICBlcnJvcnM6IGxpc3RPZkVycm9ycyxcbiAgICAgICAgdXBsb2FkTWVzc2FnZTogXCJ1cGxvYWRlZFwiLFxuICAgICAgICB1cGxvYWRTdGF0dXM6IFwicHJlcGFyaW5nXCIsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgcHJvZ3Jlc3M6IDI4LFxuICAgICAgICB4aHI6IG5ldyBYTUxIdHRwUmVxdWVzdCgpLFxuICAgICAgICBleHRyYURhdGE6IHtcbiAgICAgICAgICAgIGV4dHJhRGF0YTE6IFwiZmlsZXMtdWkgaXMgdGhlIGJlc3RcIixcbiAgICAgICAgICAgIGV4dHJhRGF0YTI6IHtcbiAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcImZpbGVzLXVpLm1vY2tcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlbGV0ZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgZG93bmxvYWRVcmw6IFwiaHR0cHM6Ly93d3cuZmlsZXMtdWkuY29tL21vY2svZmlsZS1kb3dubG9hZFwiXG4gICAgfTtcbn07XG5cbmZ1bmN0aW9uIGFkZEV4dHJhRGF0YShmb3JtRGF0YSwgZXh0cmFEYXRhKSB7XG4gICAgLy9oZWFkZXJzXG4gICAgdmFyIGV4dHJhRGF0YUtleXMgPSBPYmplY3Qua2V5cyhleHRyYURhdGEgfHwge30pO1xuICAgIC8vY29uc3QgaGVhZGVyVmFsdWVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoaGVhZGVycyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRyYURhdGFLZXlzLmxlbmd0aCAmJiBleHRyYURhdGE7IGkrKykge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkRmlsZSBleHRyYURhdGFcIiwgZXh0cmFEYXRhS2V5c1tpXSwgZXh0cmFEYXRhW2V4dHJhRGF0YUtleXNbaV1dKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGV4dHJhRGF0YUtleXNbaV0sIGV4dHJhRGF0YVtleHRyYURhdGFLZXlzW2ldXSk7XG4gICAgfVxuICAgIC8vIGZvcm1EYXRhLmFwcGVuZChcIm90aGVyVmFsdWVcIiwgXCJIQUFBQUFBQUFBQUFBQUFhXCIpO1xufVxuXG5mdW5jdGlvbiBhZGRIZWFkZXJzKHhociwgaGVhZGVycykge1xuICAgIC8vaGVhZGVyc1xuICAgIHZhciBoZWFkZXJLZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycyB8fCB7fSk7XG4gICAgLy9jb25zdCBoZWFkZXJWYWx1ZXM6IHN0cmluZ1tdID0gT2JqZWN0LnZhbHVlcyhoZWFkZXJzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlcktleXMubGVuZ3RoICYmIGhlYWRlcnM7IGkrKykge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkRmlsZSBoZWFkZXJzXCIsIGhlYWRlcktleXNbaV0sIGhlYWRlcnNbaGVhZGVyS2V5c1tpXV0pO1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXJLZXlzW2ldLCBoZWFkZXJzW2hlYWRlcktleXNbaV1dKTtcbiAgICB9XG59XG5cbnZhciBUSU1FT1VUX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiVGltZW91dCBlcnJvclwiLFxuICAgIHBheWxvYWQ6IHt9XG59O1xudmFyIEFCT1JURURfRVJST1JfUkVTUE9OU0UgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgbWVzc2FnZTogXCJVcGxvYWQgYWJvcnRlZFwiLFxuICAgIHBheWxvYWQ6IHt9XG59O1xudmFyIEpTT05fUEFSU0VfRVJST1JfUkVTUE9OU0UgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgbWVzc2FnZTogXCJFcnJvciB3aGVuIHBhcnNpbmcgSlNPTiByZXNwb25zZVwiLFxuICAgIHBheWxvYWQ6IHt9XG59O1xudmFyIFVORVhQRUNURURfRVJST1JfUkVTUE9OU0UgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgbWVzc2FnZTogXCJVbmV4cGVjdGVkIGVycm9yXCIsXG4gICAgcGF5bG9hZDoge31cbn07XG52YXIgTk9fWEhSX1BST1ZJREVEX0VSUk9SID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZE1lc3NhZ2U6IFwiVW5hYmxlIHRvIHVwbG9hZC4geGhyIG9iamVjdCB3YXMgbm90IHByb3ZpZGVkXCIsIHVwbG9hZFN0YXR1czogXCJlcnJvclwiLCBzZXJ2ZXJSZXNwb25zZTogeyBzdWNjZXNzOiBmYWxzZSwgfSB9KTtcbn07XG5cbnZhciBtYWtlU2VydmVyUmVzcG9uc2UgPSBmdW5jdGlvbiAoc3VjY2VzcywgbWVzc2FnZSwgcGF5bG9hZCkge1xuICAgIHZhciByZXN1bHQgPSB7IHN1Y2Nlc3M6IHN1Y2Nlc3MsIG1lc3NhZ2U6IG1lc3NhZ2UsIHBheWxvYWQ6IHBheWxvYWQgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciBKc29uUGFyc2VSZXNwb25zZSA9IGZ1bmN0aW9uICh4aHIpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIganNvblJlc3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2UpO1xuICAgICAgICB2YXIgc3VjY2VzcyA9IGpzb25SZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICB2YXIgbWVzc2FnZSA9IGpzb25SZXNwb25zZS5tZXNzYWdlO1xuICAgICAgICB2YXIgcGF5bG9hZCA9IGpzb25SZXNwb25zZS5wYXlsb2FkO1xuICAgICAgICB2YXIgZnVpUmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiB0eXBlb2Ygc3VjY2VzcyA9PT0gXCJib29sZWFuXCIgPyBzdWNjZXNzIDogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiB0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2UgOiBcIkVycm9yIG9uIG1lc3NhZ2UgcmVzcG9uc2VcIixcbiAgICAgICAgICAgIHBheWxvYWQ6IHBheWxvYWQgfHwge31cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZ1aVJlc3BvbnNlO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aVVwbG9hZCBFUlJPUlwiLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBKU09OX1BBUlNFX0VSUk9SX1JFU1BPTlNFO1xuICAgIH1cbn07XG52YXIgbWFrZVN1Y2Nlc3NVcGxvYWRSZXNwb25zZSA9IGZ1bmN0aW9uIChleHRGaWxlLCByZXNwb25zZUZ1aSkge1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgc2VydmVyUmVzcG9uc2U6IHJlc3BvbnNlRnVpLCB1cGxvYWRNZXNzYWdlOiByZXNwb25zZUZ1aS5tZXNzYWdlLCB1cGxvYWRTdGF0dXM6IFwic3VjY2Vzc1wiIH0pO1xufTtcbnZhciBtYWtlRXJyb3JVcGxvYWRSZXNwb25zZSA9IGZ1bmN0aW9uIChleHRGaWxlLCByZXNwb25zZUZ1aSkge1xuICAgIC8vY29uc29sZS5sb2coXCJtYWtlRXJyb3JVcGxvYWRSZXNwb25zZVwiLCBleHRGaWxlLCByZXNwb25zZUZ1aSk7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiByZXNwb25zZUZ1aS5tZXNzYWdlLCB1cGxvYWRTdGF0dXM6IFwiZXJyb3JcIiwgc2VydmVyUmVzcG9uc2U6IHJlc3BvbnNlRnVpIH0pO1xufTtcblxuLyoqXG4gKiBVcGxvYWRzIG9uZSBmb3JtRGF0YSBvYmplY3QgdG8gYSBnaXZlbiBlbmRwb2ludCBpbiBhIHByb21pc2lmaWVkIHdheVxuICogQHBhcmFtIHhociBYTUxIVFRQcmVxdWVzdCBvYmplY3RcbiAqIEBwYXJhbSBtZXRob2QgbWV0aG9kIGZvciB1cGxvYWRpbmdcbiAqIEBwYXJhbSBlbmRwb2ludCBlbmRwb2ludCB0byB1cGxvYWQgdGhlIGZpbGVcbiAqIEBwYXJhbSBkYXRhIEZyb21EYXRhIG9iamVjdCB0byBwZXJmb3JtIG11bHRpcGFydCBmb3JtIGRhdGEgdXBsb2FkXG4gKiBAcGFyYW0gaGVhZGVycyB0aGUgc2V0IG9mIGhlYWRlcnNcbiAqIEByZXR1cm5zIGEgc2VydmVyIHJlc3BvbnNlIHRoYXQgY29uc2lzdHMgb24ge3N0YXR1cywgcGF5bG9hZCwgbWVzc2FnZX1cbiAqL1xudmFyIHVwbG9hZEZvcm1EYXRhID0gZnVuY3Rpb24gKHhociwgbWV0aG9kLCBlbmRwb2ludCwgZGF0YSwgaGVhZGVycykge1xuICAgIGlmIChtZXRob2QgPT09IHZvaWQgMCkgeyBtZXRob2QgPSBcIlBPU1RcIjsgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgdXBsb2FkRmlsZVwiLCB4aHIsIG1ldGhvZCwgZW5kcG9pbnQsIGRhdGEsIGhlYWRlcnMpO1xuICAgICAgICB2YXIgZmluYWxNZXRob2QgPSBbXCJQT1NUXCIsIFwiUFVUXCIsIFwiUEFUQ0hcIl0uaW5jbHVkZXMobWV0aG9kLnRvVXBwZXJDYXNlKCkpID8gbWV0aG9kIDogXCJQT1NUXCI7XG4gICAgICAgIC8qICAgbGV0IGxhc3RMYXN0U3RhdGU6IG51bWJlciA9IC0xO1xuICAgICAgICAgIGxldCBsYXN0U3RhdGU6IG51bWJlciA9IDA7XG4gICAgICAgICAgbGV0IGp1bXBlZDogYm9vbGVhbiA9IGZhbHNlOyAqL1xuICAgICAgICB4aHIudXBsb2FkLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgdXBsb2FkRmlsZSBvbkxvYWRcIiwgeGhyLnJlYWR5U3RhdGUsIHhoci5yZXNwb25zZSk7XG4gICAgICAgIH07XG4gICAgICAgIHhoci51cGxvYWQub250aW1lb3V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVzb2x2ZShUSU1FT1VUX0VSUk9SX1JFU1BPTlNFKTsgfTtcbiAgICAgICAgeGhyLnVwbG9hZC5vbmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSBBQk9SVEVFRUVEREREXCIpO1xuICAgICAgICAgICAgcmVzb2x2ZShBQk9SVEVEX0VSUk9SX1JFU1BPTlNFKTtcbiAgICAgICAgfTtcbiAgICAgICAgeGhyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTsgfTtcbiAgICAgICAgLy8gbGlzdGVuIGZvciBgcHJvZ3Jlc3NgIGV2ZW50XG4gICAgICAgIC8vY3VycmVudGx5IGxpc3RlbmluZyBvbiBGaWxlSXRlbSBjb21wb25lbnQgaG9va1xuICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZpbmlzaGVkXCIsIHhocik7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSB1cGxvYWRGaWxlIG9ucmVhZHlzdGF0ZWNoYW5nZSBlLnR5cGVcIiwgZS50eXBlKTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIHVwbG9hZEZpbGUgb25yZWFkeXN0YXRlY2hhbmdlXCIsIHhoci5yZWFkeVN0YXRlLCB4aHIucmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIC8vbGFzdExhc3RTdGF0ZSA9IGxhc3RTdGF0ZTtcbiAgICAgICAgICAgICAgICAvL2xhc3RTdGF0ZSA9IHhoci5yZWFkeVN0YXRlO1xuICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnJlc3BvbnNlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoZXJlIGlzIHRoIGFuc3dlclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShKc29uUGFyc2VSZXNwb25zZSh4aHIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZXJyb3IgdW5leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgRU1QVFkgc3RhdHVzXCIsIHhoci5zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgRU1QVFkgcmVhZHlTdGF0ZVwiLCB4aHIucmVhZHlTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSBFTVBUWSB1cGxvYWRcIiwgeGhyLnVwbG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEVNUFRZIGFib3J0XCIsIHhoci5hYm9ydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnN0IGp1bXBlZCA9IGxhc3RMYXN0U3RhdGUgLSBsYXN0TGFzdFN0YXRlICE9PSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShBQk9SVEVEX0VSUk9SX1JFU1BPTlNFKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8vIG9wZW4gcmVxdWVzdFxuICAgICAgICB4aHIub3BlbihmaW5hbE1ldGhvZCwgZW5kcG9pbnQsIHRydWUpO1xuICAgICAgICAvL2FkZCBoZWFkZXIgdG8gcmVxdWVzdFxuICAgICAgICBhZGRIZWFkZXJzKHhociwgaGVhZGVycyk7XG4gICAgICAgIC8vc3RhcnQgdXBsb2FkaW5nXG4gICAgICAgIHhoci5zZW5kKGRhdGEpO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlIHRoZSBleHRlbmRlZCBmaWxlIHRvIGJlIHVwbG9hZGVkXG4gKiBAcGFyYW0gdXJsIHRoZSBlbmRwb2ludFxuICogQHBhcmFtIG1ldGhvZCB0aGUgbWV0aG9kIGZvciB1cGxvYWRpbmdcbiAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnMgZm9yIHJlcXVlc3RcbiAqIEByZXR1cm5zXG4gKi9cbnZhciB1cGxvYWRFeHRGaWxlID0gZnVuY3Rpb24gKGV4dEZpbGUsIHVybCwgbWV0aG9kLCBoZWFkZXJzLCB1cGxvYWRMYWJlbCkgeyByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciB1cGxvYWRlciwgbG9jYWxNZXRob2QsIGZpbGVUb1VwbG9hZCwgZm9ybURhdGEsIGZpbmFsRXh0cmFEYXRhLCByZXNwb25zZUZ1aTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGVyID0gZXh0RmlsZS54aHI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1cGxvYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKE5PX1hIUl9QUk9WSURFRF9FUlJPUihleHRGaWxlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxNZXRob2QgPSBtZXRob2QgfHwgXCJQT1NUXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVRvVXBsb2FkID0gZXh0RmlsZS5maWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKHVwbG9hZExhYmVsIHx8IFwiZmlsZVwiLCBmaWxlVG9VcGxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRXh0cmFEYXRhID0gX19hc3NpZ24oe30sIGV4dEZpbGUuZXh0cmFVcGxvYWREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFeHRyYURhdGEoZm9ybURhdGEsIGZpbmFsRXh0cmFEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUZ1aSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB1cGxvYWRGb3JtRGF0YSh1cGxvYWRlciwgbG9jYWxNZXRob2QsIHVybCwgZm9ybURhdGEsIGhlYWRlcnMgfHwge30pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUZ1aSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VGdWkuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgaXMgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1ha2VTdWNjZXNzVXBsb2FkUmVzcG9uc2UoZXh0RmlsZSwgcmVzcG9uc2VGdWkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXR1cyBpcyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1ha2VFcnJvclVwbG9hZFJlc3BvbnNlKGV4dEZpbGUsIHJlc3BvbnNlRnVpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWRQcm9taXNlWEhSIHVwbG9hZFByb21pc2VYSFIgRVJST1JcIiwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWFrZUVycm9yVXBsb2FkUmVzcG9uc2UoZXh0RmlsZSwgVU5FWFBFQ1RFRF9FUlJPUl9SRVNQT05TRSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pOyB9KV07XG4gICAgfSk7XG59KTsgfTtcbmZ1bmN0aW9uIHVwbG9hZEZpbGUoZmlsZSwgdXJsLCBtZXRob2QsIGxhYmVsLCBoZWFkZXJzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZm9ybURhdGEsIHNlcnZlclJlc3BvbnNlO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQobGFiZWwgfHwgXCJmaWxlXCIsIGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzEsIDMsICwgNF0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB1cGxvYWRGb3JtRGF0YShuZXcgWE1MSHR0cFJlcXVlc3QoKSwgbWV0aG9kLCB1cmwsIGZvcm1EYXRhLCBoZWFkZXJzKV07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShzZXJ2ZXJSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBvbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkUHJvbWlzZVhIUiB1cGxvYWRQcm9taXNlWEhSIEVSUk9SXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShVTkVYUEVDVEVEX0VSUk9SX1JFU1BPTlNFKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9KTtcbn1cblxudmFyIHVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdCA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiBcIlVuZXhwZWN0ZWQgZXJyb3JcIiwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIsIHNlcnZlclJlc3BvbnNlOiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiRXJyb3Igb24gdXBsb2FkOiB1bmV4cGVjdGVkIGVycm9yIFwiLFxuICAgICAgICAgICAgcGF5bG9hZDoge30sXG4gICAgICAgIH0gfSk7XG59O1xudmFyIHVuYWJsZVRvVXBsb2FkUmVzdWx0ID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZXh0RmlsZS5pZCxcbiAgICAgICAgdXBsb2FkZWRGaWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogXCJVbmFibGUgdG8gdXBsb2FkLiBYSFIgd2FzIG5vdCBwcm92aWRlZFwiLCB1cGxvYWRTdGF0dXM6IFwiZXJyb3JcIiB9KSxcbiAgICAgICAgc2VydmVyUmVzcG9uc2U6IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogXCJFcnJvciBvbiB1cGxvYWQ6IFVuYWJsZSB0byB1cGxvYWQuIFhIUiB3YXMgbm90IHByb3ZpZGVkIFwiLFxuICAgICAgICAgICAgcGF5bG9hZDoge30sXG4gICAgICAgIH1cbiAgICB9O1xufTtcbnZhciBjb21wbGV0ZVVwbG9hZFJlc3VsdCA9IGZ1bmN0aW9uIChleHRGaWxlLCBzZXJ2ZXJSZXNwb25zZSwgdXBsb2FkU3RhdHVzcmVzdWx0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGV4dEZpbGUuaWQsXG4gICAgICAgIHVwbG9hZGVkRmlsZTogX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZE1lc3NhZ2U6IHNlcnZlclJlc3BvbnNlLm1lc3NhZ2UsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzcmVzdWx0IH0pLFxuICAgICAgICBzZXJ2ZXJSZXNwb25zZTogc2VydmVyUmVzcG9uc2VcbiAgICB9O1xufTtcbi8qKlxuICogSW5pdGlhbGl6ZXMgdGhlIHhociBhdHRyaWJ1dGUgZm9yIHBlcmZvcm1pbmcgdXBsb2Fkc1xuICogQHBhcmFtIGV4dEZpbGVMaXN0IHRoZSBsaXN0IG9mIGV4dGVuZGVkIGZpbGVzXG4gKiBAcmV0dXJucyB0aGUgYXJyYXkgb2YgZXh0RmlsZXMgd2l0aCB0aGUgeGhyIGF0dHJpYnV0ZSBpbml0aWFsaXplZFxuICovXG52YXIgdG9VcGxvYWRhYmxlRXh0RmlsZUxpc3QgPSBmdW5jdGlvbiAoZXh0RmlsZUxpc3QpIHtcbiAgICBpZiAoIWV4dEZpbGVMaXN0KVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIGV4dEZpbGVMaXN0Lm1hcChmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHhocjogbmV3IFhNTEh0dHBSZXF1ZXN0KCkgfSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBVcGRhdGVzIHRoZSB1cGxvYWRTdGF0dXMgb2YgdGhlIGdpdmVuIGV4dEZpbGVcbiAqIGZyb20gXCJwcmVwYXJpbmdcIiB0byBcInVwbG9hZGluZ1wiXG4gKiBAcGFyYW0gZXh0RmlsZSB0aGUgZXh0ZW5kZWQgZmlsZVxuICogQHJldHVybnMgdGhlIGV4dGVuZGVkIGZpbGUgd2l0aCB1cGxvYWRTdGF0dXMgdXBkYXRlZCB0byBcInVwbG9hZGluZ1wiXG4gKi9cbnZhciBpbnN0YW50UHJlcGFyaW5nVG9VcGxvYWRPbmUgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIGlmIChleHRGaWxlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIikge1xuICAgICAgICAvL2ZvciBFeHRGaWxlIGluc3RhbmNlXG4gICAgICAgIGV4dEZpbGUudXBsb2FkU3RhdHVzID0gXCJ1cGxvYWRpbmdcIjtcbiAgICAgICAgLy9mb3IgRXh0RmlsZSB0eXBlXG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInVwbG9hZGluZ1wiIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZXh0RmlsZTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZSB0aGUgZXh0ZW5kZWQgZmlsZVxuICogQHJldHVybnNcbiAqL1xudmFyIHByZXBhcmluZ1RvVXBsb2FkT25lID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChleHRGaWxlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIikge1xuICAgICAgICAgICAgICAgIC8vZm9yIEV4dEZpbGUgaW5zdGFuY2VcbiAgICAgICAgICAgICAgICBleHRGaWxlLnVwbG9hZFN0YXR1cyA9IFwidXBsb2FkaW5nXCI7XG4gICAgICAgICAgICAgICAgLy9mb3IgRXh0RmlsZSB0eXBlXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInVwbG9hZGluZ1wiIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXNvbHZlKGV4dEZpbGUpO1xuICAgICAgICB9LCAxNTAwKTtcbiAgICB9KTtcbn07XG4vKipcbiAqIFNsZWVwcyBmb3IgMTIwMCBtaWxpc2Vjb25kcyBmb3Igc2hvd2luZyBhIGJldHRlciB0cmFuc2l0aW9uXG4gKiBvbiB1cGxvYWRpbmdcbiAqIEBwYXJhbSB0aW1lIHRoZSB0aW1lIHRvIHNsZWVwIGluIG1pbGlzZWNvbmRzXG4gKiBAcmV0dXJucyB0cnVlIGlzIGV2ZXJ5dGhpbmcgaXMgb2tcbiAqL1xudmFyIHNsZWVwVHJhbnNpdGlvbiA9IGZ1bmN0aW9uICh0aW1lKSB7XG4gICAgaWYgKHRpbWUgPT09IHZvaWQgMCkgeyB0aW1lID0gMTUwMDsgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfSwgdGltZSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSZW1vdmVzIHRoZSBkZWxldGVkIGZpbGVzIGFuZCB1cGRhdGVzIHRoZSBhYm9ydGVkIG9uZXMgd2l0aCBhIG1lc3NhZ2VcbiAqIEBwYXJhbSBhcnJFeHRGaWxlIGluY29tbWluZyBhcnIgb2YgZXh0RmxlIGluc3RhbmNlc1xuICogQHJldHVybnMgYW4gYXJyYXkgb2YgRXh0RmxlIG9iamVjdHNcbiAqL1xudmFyIHNhbml0aXplQXJyRXh0RmlsZSA9IGZ1bmN0aW9uIChhcnJFeHRGaWxlKSB7XG4gICAgcmV0dXJuIGFyckV4dEZpbGUuZmlsdGVyKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHsgdmFyIF9hOyByZXR1cm4gISgoX2EgPSBleHRGaWxlSW5zdGFuY2UuZXh0cmFEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsZXRlZCk7IH0pXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICBpZiAoZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJhYm9ydGVkXCJcbiAgICAgICAgICAgICYmICFleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSkge1xuICAgICAgICAgICAgLy8gVE8tRE86IGFkIGxvY2FsaXphdGlvbiBmb3IgdGhpcyBtZXNzYWdlXG4gICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IFwiVXBsb2FkIGFib3J0ZWQgYnkgdXNlclwiO1xuICAgICAgICAgICAgLy9leHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJlcnJvclwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBFeHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGVJbnN0YW5jZVxuICogQHBhcmFtIGV4dEZpbGVvYmpcbiAqL1xudmFyIHNldE5leHRVcGxvYWRTdGF0dXMgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlLCBleHRGaWxlb2JqKSB7XG4gICAgdmFyIHByZXZTdGF0dXMgPSBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzO1xuICAgIHZhciBuZXh0U3RzdGF1cyA9IGV4dEZpbGVvYmoudXBsb2FkU3RhdHVzO1xuICAgIC8vY29uc29sZS5sb2coXCJzZXROZXh0VXBsb2FkU3RhdHVzXCIsIHByZXZTdGF0dXMsIG5leHRTdHN0YXVzKTtcbiAgICAvL2NvbnNvbGUubG9nKFwic2V0TmV4dFVwbG9hZFN0YXR1c1wiLCBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSwgZXh0RmlsZW9iai51cGxvYWRNZXNzYWdlKTtcbiAgICBpZiAocHJldlN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICBbXCJhYm9ydGVkXCIsIHVuZGVmaW5lZF0uaW5jbHVkZXMobmV4dFN0c3RhdXMpKSB7XG4gICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gZXh0RmlsZW9iai51cGxvYWRNZXNzYWdlO1xuICAgIH1cbiAgICBlbHNlIGlmIChwcmV2U3RhdHVzID09PSBcInVwbG9hZGluZ1wiICYmXG4gICAgICAgIFtcImFib3J0ZWRcIiwgdW5kZWZpbmVkXS5pbmNsdWRlcyhuZXh0U3RzdGF1cykpIHtcbiAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiYWJvcnRlZFwiO1xuICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IGV4dEZpbGVvYmoudXBsb2FkTWVzc2FnZTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFRoZSBmdWxsIGxpc3Qgb2YgbmFtZWQgQ29sb3JzIHByb3ZpZGVkIGJ5XG4gKiBodHRwczovL2h0bWxjb2xvcmNvZGVzLmNvbS9lcy9ub21icmVzLWRlLWxvcy1jb2xvcmVzL1xuICovXG52YXIgTkFNRURfQ09MT1JTID0ge1xuICAgIC8vUkVEXG4gICAgaW5kaWFucmVkOiBcIiNDRDVDNUNcIixcbiAgICBsaWdodGNvcmFsOiBcIiNGMDgwODBcIixcbiAgICBzYWxtb246IFwiI0ZBODA3MlwiLFxuICAgIGRhcmtzYWxtb246IFwiI0U5OTY3QVwiLFxuICAgIGxpZ2h0c2FsbW9uOiBcIiNGRkEwN0FcIixcbiAgICBjcmltc29uOiBcIiNEQzE0M0NcIixcbiAgICByZWQ6IFwiI0ZGMDAwMFwiLFxuICAgIGZpcmVicmljazogXCIjQjIyMjIyXCIsXG4gICAgZGFya3JlZDogXCIjOEIwMDAwXCIsXG4gICAgLy9QSU5LXG4gICAgcGluazogXCIjRkZDMENCXCIsXG4gICAgbGlnaHRwaW5rOiBcIiNGRkI2QzFcIixcbiAgICBob3RwaW5rOiBcIiNGRjY5QjRcIixcbiAgICBkZWVwcGluazogXCIjRkYxNDkzXCIsXG4gICAgbWVkaXVtdmlvbGV0cmVkOiBcIiNDNzE1ODVcIixcbiAgICBwYWxldmlvbGV0cmVkOiBcIiNEQjcwOTNcIixcbiAgICAvL09SQU5HRVxuICAgIC8vXCJsaWdodHNhbG1vbjogXCIjRkZBMDdBXCIsXG4gICAgY29yYWw6IFwiI0ZGN0Y1MFwiLFxuICAgIHRvbWF0bzogXCIjRkY2MzQ3XCIsXG4gICAgb3JhbmdlcmVkOiBcIiNGRjQ1MDBcIixcbiAgICBkYXJrb3JhbmdlOiBcIiNGRjhDMDBcIixcbiAgICBvcmFuZ2U6IFwiI0ZGQTUwMFwiLFxuICAgIC8vWUVMTE9XXG4gICAgZ29sZDogXCIjRkZENzAwXCIsXG4gICAgeWVsbG93OiBcIiNGRkZGMDBcIixcbiAgICBsaWdodHllbGxvdzogXCIjRkZGRkUwXCIsXG4gICAgbGVtb25jaGlmZm9uOiBcIiNGRkZBQ0RcIixcbiAgICBsaWdodGdvbGRlbnJvZHllbGxvdzogXCIjRkFGQUQyXCIsXG4gICAgcGFwYXlhd2hpcDogXCIjRkZFRkQ1XCIsXG4gICAgbW9jY2FzaW46IFwiI0ZGRTRCNVwiLFxuICAgIHBlYWNocHVmZjogXCIjRkZEQUI5XCIsXG4gICAgcGFsZWdvbGRlbnJvZDogXCIjRUVFOEFBXCIsXG4gICAga2hha2k6IFwiI0YwRTY4Q1wiLFxuICAgIGRhcmtraGFraTogXCIjQkRCNzZCXCIsXG4gICAgLy9QVVJQTEVcbiAgICBsYXZlbmRlcjogXCIjRTZFNkZBXCIsXG4gICAgdGhpc3RsZTogXCIjRDhCRkQ4XCIsXG4gICAgcGx1bTogXCIjRERBMEREXCIsXG4gICAgdmlvbGV0OiBcIiNFRTgyRUVcIixcbiAgICBvcmNoaWQ6IFwiI0RBNzBENlwiLFxuICAgIGZ1Y2hzaWE6IFwiI0ZGMDBGRlwiLFxuICAgIG1hZ2VudGE6IFwiI0ZGMDBGRlwiLFxuICAgIG1lZGl1bW9yY2hpZDogXCIjQkE1NUQzXCIsXG4gICAgbWVkaXVtcHVycGxlOiBcIiM5MzcwREJcIixcbiAgICByZWJlY2NhcHVycGxlOiBcIiM2NjMzOTlcIixcbiAgICBibHVldmlvbGV0OiBcIiM4QTJCRTJcIixcbiAgICBkYXJrdmlvbGV0OiBcIiM5NDAwRDNcIixcbiAgICBkYXJrb3JjaGlkOiBcIiM5OTMyQ0NcIixcbiAgICBkYXJrbWFnZW50YTogXCIjOEIwMDhCXCIsXG4gICAgcHVycGxlOiBcIiM4MDAwODBcIixcbiAgICBpbmRpZ286IFwiIzRCMDA4MlwiLFxuICAgIHNsYXRlYmx1ZTogXCIjNkE1QUNEXCIsXG4gICAgZGFya3NsYXRlYmx1ZTogXCIjNDgzRDhCXCIsXG4gICAgbWVkaXVtc2xhdGVibHVlOiBcIiM3QjY4RUVcIixcbiAgICAvL0dSRUVOXG4gICAgZ3JlZW55ZWxsb3c6IFwiI0FERkYyRlwiLFxuICAgIGNoYXJ0cmV1c2U6IFwiIzdGRkYwMFwiLFxuICAgIGxhd25ncmVlbjogXCIjN0NGQzAwXCIsXG4gICAgbGltZTogXCIjMDBGRjAwXCIsXG4gICAgbGltZWdyZWVuOiBcIiMzMkNEMzJcIixcbiAgICBwYWxlZ3JlZW46IFwiIzk4RkI5OFwiLFxuICAgIGxpZ2h0Z3JlZW46IFwiIzkwRUU5MFwiLFxuICAgIG1lZGl1bXNwcmluZ2dyZWVuOiBcIiMwMEZBOUFcIixcbiAgICBzcHJpbmdncmVlbjogXCIjMDBGRjdGXCIsXG4gICAgbWVkaXVtc2VhZ3JlZW46IFwiIzNDQjM3MVwiLFxuICAgIHNlYWdyZWVuOiBcIiMyRThCNTdcIixcbiAgICBmb3Jlc3RncmVlbjogXCIjMjI4QjIyXCIsXG4gICAgZ3JlZW46IFwiIzAwODAwMFwiLFxuICAgIGRhcmtncmVlbjogXCIjMDA2NDAwXCIsXG4gICAgeWVsbG93Z3JlZW46IFwiIzlBQ0QzMlwiLFxuICAgIG9saXZlZHJhYjogXCIjNkI4RTIzXCIsXG4gICAgb2xpdmU6IFwiIzgwODAwMFwiLFxuICAgIGRhcmtvbGl2ZWdyZWVuOiBcIiM1NTZCMkZcIixcbiAgICBtZWRpdW1hcXVhbWFyaW5lOiBcIiM2NkNEQUFcIixcbiAgICBkYXJrc2VhZ3JlZW46IFwiIzhGQkM4QlwiLFxuICAgIGxpZ2h0c2VhZ3JlZW46IFwiIzIwQjJBQVwiLFxuICAgIGRhcmtjeWFuOiBcIiMwMDhCOEJcIixcbiAgICB0ZWFsOiBcIiMwMDgwODBcIixcbiAgICAvL0JMVUVcbiAgICBhcXVhOiBcIiMwMEZGRkZcIixcbiAgICBjeWFuOiBcIiMwMEZGRkZcIixcbiAgICBsaWdodGN5YW46IFwiI0UwRkZGRlwiLFxuICAgIHBhbGV0dXJxdW9pc2U6IFwiI0FGRUVFRVwiLFxuICAgIGFxdWFtYXJpbmU6IFwiIzdGRkZENFwiLFxuICAgIHR1cnF1b2lzZTogXCIjNDBFMEQwXCIsXG4gICAgbWVkaXVtdHVycXVvaXNlOiBcIiM0OEQxQ0NcIixcbiAgICBkYXJrdHVycXVvaXNlOiBcIiMwMENFRDFcIixcbiAgICBjYWRldGJsdWU6IFwiIzVGOUVBMFwiLFxuICAgIHN0ZWVsYmx1ZTogXCIjNDY4MkI0XCIsXG4gICAgbGlnaHRzdGVlbGJsdWU6IFwiI0IwQzRERVwiLFxuICAgIHBvd2RlcmJsdWU6IFwiI0IwRTBFNlwiLFxuICAgIGxpZ2h0Ymx1ZTogXCIjQUREOEU2XCIsXG4gICAgc2t5Ymx1ZTogXCIjODdDRUVCXCIsXG4gICAgbGlnaHRza3libHVlOiBcIiM4N0NFRkFcIixcbiAgICBkZWVwc2t5Ymx1ZTogXCIjMDBCRkZGXCIsXG4gICAgZG9kZ2VyYmx1ZTogXCIjMUU5MEZGXCIsXG4gICAgY29ybmZsb3dlcmJsdWU6IFwiIzY0OTVFRFwiLFxuICAgIC8vXCJtZWRpdW1zbGF0ZWJsdWU6IFwiIzdCNjhFRVwiLFxuICAgIHJveWFsYmx1ZTogXCIjNDE2OUUxXCIsXG4gICAgYmx1ZTogXCIjMDAwMEZGXCIsXG4gICAgbWVkaXVtYmx1ZTogXCIjMDAwMENEXCIsXG4gICAgZGFya2JsdWU6IFwiIzAwMDA4QlwiLFxuICAgIG5hdnk6IFwiIzAwMDA4MFwiLFxuICAgIG1pZG5pZ2h0Ymx1ZTogXCIjMTkxOTcwXCIsXG4gICAgLy9CUk9XTlxuICAgIGNvcm5zaWxrOiBcIiNGRkY4RENcIixcbiAgICBibGFuY2hlZGFsbW9uZDogXCIjRkZFQkNEXCIsXG4gICAgYmlzcXVlOiBcIiNGRkU0QzRcIixcbiAgICBuYXZham93aGl0ZTogXCIjRkZERUFEXCIsXG4gICAgd2hlYXQ6IFwiI0Y1REVCM1wiLFxuICAgIGJ1cmx5d29vZDogXCIjREVCODg3XCIsXG4gICAgdGFuOiBcIiNEMkI0OENcIixcbiAgICByb3N5YnJvd246IFwiI0JDOEY4RlwiLFxuICAgIHNhbmR5YnJvd246IFwiI0Y0QTQ2MFwiLFxuICAgIGdvbGRlbnJvZDogXCIjREFBNTIwXCIsXG4gICAgZGFya2dvbGRlbnJvZDogXCIjQjg4NjBCXCIsXG4gICAgcGVydTogXCIjQ0Q4NTNGXCIsXG4gICAgY2hvY29sYXRlOiBcIiNEMjY5MUVcIixcbiAgICBzYWRkbGVicm93bjogXCIjOEI0NTEzXCIsXG4gICAgc2llbm5hOiBcIiNBMDUyMkRcIixcbiAgICBicm93bjogXCIjQTUyQTJBXCIsXG4gICAgbWFyb29uOiBcIiM4MDAwMDBcIixcbiAgICAvL1dISVRFXG4gICAgd2hpdGU6IFwiI0ZGRkZGRlwiLFxuICAgIHNub3c6IFwiI0ZGRkFGQVwiLFxuICAgIGhvbmV5ZGV3OiBcIiNGMEZGRjBcIixcbiAgICBtaW50Y3JlYW06IFwiI0Y1RkZGQVwiLFxuICAgIGF6dXJlOiBcIiNGMEZGRkZcIixcbiAgICBhbGljZWJsdWU6IFwiI0YwRjhGRlwiLFxuICAgIGdob3N0d2hpdGU6IFwiI0Y4RjhGRlwiLFxuICAgIHdoaXRlc21va2U6IFwiI0Y1RjVGNVwiLFxuICAgIHNlYXNoZWxsOiBcIiNGRkY1RUVcIixcbiAgICBiZWlnZTogXCIjRjVGNURDXCIsXG4gICAgb2xkbGFjZTogXCIjRkRGNUU2XCIsXG4gICAgZmxvcmFsd2hpdGU6IFwiI0ZGRkFGMFwiLFxuICAgIGl2b3J5OiBcIiNGRkZGRjBcIixcbiAgICBhbnRpcXVld2hpdGU6IFwiI0ZBRUJEN1wiLFxuICAgIGxpbmVuOiBcIiNGQUYwRTZcIixcbiAgICBsYXZlbmRlcmJsdXNoOiBcIiNGRkYwRjVcIixcbiAgICBtaXN0eXJvc2U6IFwiI0ZGRTRFMVwiLFxuICAgIC8vR1JFWVxuICAgIGdhaW5zYm9ybzogXCIjRENEQ0RDXCIsXG4gICAgbGlnaHRncmF5OiBcIiNEM0QzRDNcIixcbiAgICBzaWx2ZXI6IFwiI0MwQzBDMFwiLFxuICAgIGRhcmtncmF5OiBcIiNBOUE5QTlcIixcbiAgICBncmF5OiBcIiM4MDgwODBcIixcbiAgICBkaW1ncmF5OiBcIiM2OTY5NjlcIixcbiAgICBsaWdodHNsYXRlZ3JheTogXCIjNzc4ODk5XCIsXG4gICAgc2xhdGVncmF5OiBcIiM3MDgwOTBcIixcbiAgICBkYXJrc2xhdGVncmF5OiBcIiMyRjRGNEZcIixcbiAgICBibGFjazogXCIjMDAwMDAwXCJcbn07XG5cbi8qKlxuICogTWFrZSB0aGUgY29sb3IgaW50byBhIGRhcmtlciBjb2xvclxuICogQHBhcmFtIGNvbG9ySW5wdXRcbiAqIEByZXR1cm5zIHRoZSBkYXJrZWQgY29sb3IgaW5cbiAqL1xudmFyIGRhcmtlckNvbG9yID0gZnVuY3Rpb24gKGNvbG9ySW5wdXQsIHBlcmNlbnRhZ2UpIHtcbiAgICBpZiAocGVyY2VudGFnZSA9PT0gdm9pZCAwKSB7IHBlcmNlbnRhZ2UgPSAyNTsgfVxuICAgIHZhciBkYXJrZWRDb2xvciA9IFwiXCI7XG4gICAgdmFyIHJlZHVjZSA9ICgxMDAgLSBwZXJjZW50YWdlKSAvIDEwMDtcbiAgICB2YXIgY29tcG9uZW50MSA9IDA7XG4gICAgdmFyIGNvbXBvbmVudDIgPSAwO1xuICAgIHZhciBjb21wb25lbnQzID0gMDtcbiAgICBpZiAoaXNIZXhDb2xvcihjb2xvdXJOYW1lVG9IZXgoY29sb3JJbnB1dCkpKSB7XG4gICAgICAgIGNvbXBvbmVudDEgPSBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCgxKSkgKiAxNiArIGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDIpKTtcbiAgICAgICAgY29tcG9uZW50MiA9IGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDMpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoNCkpO1xuICAgICAgICBjb21wb25lbnQzID0gaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoNSkpICogMTYgKyBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCg2KSk7XG4gICAgICAgIGRhcmtlZENvbG9yID0gXCJyZ2IoXCIuY29uY2F0KGNvbXBvbmVudDEgKiByZWR1Y2UsIFwiLCBcIikuY29uY2F0KGNvbXBvbmVudDIgKiByZWR1Y2UsIFwiLFwiKS5jb25jYXQoY29tcG9uZW50MyAqIHJlZHVjZSwgXCIpXCIpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKGNvbG9ySW5wdXQuaW5jbHVkZXMoXCJyZ2JhXCIpKSB7XG4gICAgICAgICAgICB2YXIgc2xpY2VyID0gY29sb3JJbnB1dC5yZXBsYWNlKFwicmdiYShcIiwgXCJcIik7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50cyA9IHNsaWNlci5zcGxpdChcIixcIik7XG4gICAgICAgICAgICBkYXJrZWRDb2xvciA9IFwicmdiKFwiLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzBdLCAxMCkgKiByZWR1Y2UsIFwiLCBcIikuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMV0sIDEwKSAqIHJlZHVjZSwgXCIsXCIpLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzJdLCAxMCkgKiByZWR1Y2UsIFwiKVwiKTtcbiAgICAgICAgICAgIC8vcmV0dXJuIGRhcmtlZENvbG9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvbG9ySW5wdXQuaW5jbHVkZXMoXCJyZ2JcIikpIHtcbiAgICAgICAgICAgIHZhciBzbGljZXIgPSBjb2xvcklucHV0LnJlcGxhY2UoXCJyZ2IoXCIsIFwiXCIpO1xuICAgICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBzbGljZXIuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgZGFya2VkQ29sb3IgPSBcInJnYihcIi5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1swXSwgMTApICogcmVkdWNlLCBcIiwgXCIpLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzFdLCAxMCkgKiByZWR1Y2UsIFwiLFwiKS5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1syXSwgMTApICogcmVkdWNlLCBcIilcIik7XG4gICAgICAgICAgICAvLyByZXR1cm4gZGFya2VkQ29sb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhcmtlZENvbG9yO1xufTtcbi8qKlxuICogSW4gb3JkZXIgdG8gbWFuYWdhZSByZ2JhKCkgd2UgY29udmVydCBoZXggY29sb3JzIGludG8gcmdiYSgpXG4gKiBJZiB0aGUgZ2l2ZW4gY29sb3IgaXMgYWxyZWFkeSBhIHJnYigpIGNvbG9yLCBpdCBjYW4gYWRkIHRoZSBwZXJjZW50YWdlIHRvIGNvbnZlcnQgaXQgaW50byByZ2JhKClcbiAqXG4gKlxuICogQHBhcmFtIGNvbG9ySW5wdXQgY29sb3IgaW4gaGV4IG9yIGluIHJnYlxuICogQHBhcmFtIHBlcmMgcGVyY2VudGFnZSBmb3IgUkdCQSgpIGNvbG9yXG4gKiBAcmV0dXJucyB0aGUgcmdiYSByZXByZXNlbnRhdGlvbiBvZiBhIGhleCBjb2xvclxuICovXG52YXIgaGV4Q29sb3JUb1JHQiA9IGZ1bmN0aW9uIChjb2xvcklucHV0LCBwZXJjLCBkZWZhdWx0Q29sb3IpIHtcbiAgICBpZiAocGVyYyA9PT0gdm9pZCAwKSB7IHBlcmMgPSAwOyB9XG4gICAgdmFyIHJlc3VsdERlZmF1bHQgPSBkZWZhdWx0Q29sb3IgPyBkZWZhdWx0Q29sb3IgOiBcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KVwiO1xuICAgIGlmICghY29sb3JJbnB1dCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0RGVmYXVsdDtcbiAgICB9XG4gICAgLy93b3JrIG9ubHkgaW4gdXBwZXJjYXNlXG4gICAgdmFyIGNvbG9yID0gY29sb3JJbnB1dC50b1VwcGVyQ2FzZSgpO1xuICAgIC8vIGlzIGFscmVhZHkgYSByZ2JhIGNvbG9yXG4gICAgaWYgKGNvbG9yLmluY2x1ZGVzKFwiUkdCQVwiKSkge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuICAgIC8vcmV0dXJuIHJiZyA9PiByZ2JhXG4gICAgaWYgKGNvbG9yLmluY2x1ZGVzKFwiUkdCXCIpKSB7XG4gICAgICAgIHJldHVybiBjb2xvci5yZXBsYWNlKCdSR0InLCBcInJnYmFcIikucmVwbGFjZSgnKScsIFwiLCBcIi5jb25jYXQocGVyYywgXCIpXCIpKTtcbiAgICB9XG4gICAgLy8gaWYgaXMgYSBoZXggY29sb3Igb3IgbmFtZWQgY29sb3JcbiAgICBpZiAoIWlzSGV4Q29sb3IoY29sb3VyTmFtZVRvSGV4KGNvbG9yKSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdERlZmF1bHQ7XG4gICAgfVxuICAgIHZhciByZXN1bHRPayA9IFwiXCI7XG4gICAgLy9sZXQgc3RyVmFyOiBzdHJpbmcgPSBcIlwiO1xuICAgIHZhciBjb21wb25lbnQxID0gMDtcbiAgICB2YXIgY29tcG9uZW50MiA9IDA7XG4gICAgdmFyIGNvbXBvbmVudDMgPSAwO1xuICAgIC8vSWYgcGFzc2VkIGFsbCB2YWxpZGF0aW9ucywgcHJvY2VlZCB0byB0cmFuc2Zvcm1cbiAgICBjb21wb25lbnQxID0gaGV4VG9kZWMoY29sb3IuY2hhckF0KDEpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3IuY2hhckF0KDIpKTtcbiAgICBjb21wb25lbnQyID0gaGV4VG9kZWMoY29sb3IuY2hhckF0KDMpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3IuY2hhckF0KDQpKTtcbiAgICBjb21wb25lbnQzID0gaGV4VG9kZWMoY29sb3IuY2hhckF0KDUpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3IuY2hhckF0KDYpKTtcbiAgICByZXN1bHRPayA9IFwicmdiYShcIi5jb25jYXQoY29tcG9uZW50MSwgXCIsIFwiKS5jb25jYXQoY29tcG9uZW50MiwgXCIsXCIpLmNvbmNhdChjb21wb25lbnQzLCBcIiAsIFwiKS5jb25jYXQocGVyYywgXCIpXCIpO1xuICAgIHJldHVybiByZXN1bHRPaztcbn07XG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0ZWhlciB0aGUgY29sb3IgaXMgaGV4YWRlY2ltYWwgY3NzIGNvbG9yXG4gKiBFeGFtcGxlOiAgI0ZGNTZBQ1xuICpcbiAqXG4gKiBAcGFyYW0gY29sb3JJbnB1dCB0aGUgY29sb3IgaW5wdCB0byB0ZXN0XG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbnB1dENvbG9yIGlzIGEgaGV4YWRlY2ltYWwgY3NzIGNvbG9yXG4gKi9cbnZhciBpc0hleENvbG9yID0gZnVuY3Rpb24gKGNvbG9ySW5wdXQpIHtcbiAgICAvLyBpZiBmaXJzdCBlbGVtZW50IGlzIG5vICcjJyByZXR1cm4gZGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgaWYgKGNvbG9ySW5wdXQuY2hhckF0KDApICE9PSAnIycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBpZiBjb2xvciBsZW5naHQgaXMgbm90IGV4YWN0bHkgNyByZXR1cm4gZGVmYXVsdFxuICAgIGlmIChjb2xvcklucHV0Lmxlbmd0aCAhPT0gNykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGlmIG9uZSBvZiB0aGUgbGV0dGVycyBpcyBub3QgaW5jbHVkZWQgaW4gaGV4IGFycmF5IHJldHVybiAgZGVmYXVsdFxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY29sb3JJbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIWhleEFycmF5LmluY2x1ZGVzKGNvbG9ySW5wdXQuY2hhckF0KGkpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogQ29udmVydHMgYSBuYW1lZCBjb2xvciBpbnRvIGhleGFkZWNpbWFsIGNvbG9yXG4gKiBmcm9tIGEgbGlzdCBvZiB3ZWxsIGtub3duIG5hbWQgY29sb3JzIGlmIGZvdW5kLlxuICogV2hlbiBub3QgZ2l2ZW4gcmV0dXJucyBhIFwiXCJcbiAqIFdoZW4gbm90IGZvdW5kIGluIHRoZSBsaXN0LCByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIGdpdmVuXG4gKiBAcGFyYW0gY29sb3VyIHRoZSBuYW1lZCBjb2xvclxuICogQHJldHVybnMgVGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29sb3Igb3IgXCJcIiBvciB0aGUgc2FtZSBjb2xvclxuICovXG5mdW5jdGlvbiBjb2xvdXJOYW1lVG9IZXgoY29sb3VyKSB7XG4gICAgLyoqXG4gICAgICogV2hlbiBub3QgZ2l2ZW5cbiAgICAgKi9cbiAgICBpZiAoIWNvbG91cikge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogd2hlbiBuYW1lZCBjb2xvciBpcyBmb3VuZFxuICAgICAqL1xuICAgIGlmIChOQU1FRF9DT0xPUlNbY29sb3VyLnRvTG9jYWxlTG93ZXJDYXNlKCldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIE5BTUVEX0NPTE9SU1tjb2xvdXIudG9Mb2NhbGVMb3dlckNhc2UoKV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIG5hbWVkIGNvbG9yIHdhcyBub3QgZm91bmRcbiAgICAgKi9cbiAgICByZXR1cm4gY29sb3VyO1xufVxuLyoqXG4gKiBoZXhBcnJheSAmIGRlY0FycmF5XG4gKlxuICogYXJyYXlzIG9mIG51bWJlcnMgdXNlZCB0byBjb252ZXJ0IGhleGFkZWNpbWFsIG51bWJlcnMgaW50byBkZWNpbWFsIGFuZCB2aWNldmVyc2FcbiAqL1xudmFyIGhleEFycmF5ID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJ107XG52YXIgZGVjQXJyYXkgPSBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV07XG4vKipcbiAqIENvbnZlcnRzIGhleCBudW1iZXIgaW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIHRvIGRlY2ltYWwgbnVtYmVyXG4gKlxuICpcbiAqIEBwYXJhbSBsZXR0ZXIgdGhlIHN0cmluZyBoZXggbnVtYmVyXG4gKiBAcmV0dXJucyBhIGRlY2ltYWwgbnVtYmVyXG4gKi9cbnZhciBoZXhUb2RlYyA9IGZ1bmN0aW9uIChsZXR0ZXIpIHtcbiAgICBpZiAoaGV4QXJyYXkuaW5jbHVkZXMobGV0dGVyKSkge1xuICAgICAgICByZXR1cm4gZGVjQXJyYXlbaGV4QXJyYXkuaW5kZXhPZihsZXR0ZXIpXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbn07XG4vKipcbiAqIEFzdXJlIGEgYmFzZSBjb2xvci4gV2hlbiBub3QgZ2l2ZW4gb3Igd2hlbiBnaXZlbiBhbiBpbmNvcnJlY3QgY29sb3IgZm9ybWF0XG4gKiBkZWZhdWx0IGNvbG9yIGlzIHRoaXMga2luZCBvZiBncmV5ICM1ZDY0NzVcbiAqXG4gKiBAcGFyYW0gY29sb3IgcGFyYW0gY29sb3IgZ2l2ZW4gYnkgdXNlclxuICogQHJldHVybnMgcmV0dXJucyB0aGUgc2FtZSBjb2xvclxuICovXG52YXIgYXN1cmVDb2xvciA9IGZ1bmN0aW9uIChjb2xvcikge1xuICAgIGlmIChjb2xvciAhPT0gdW5kZWZpbmVkICYmIGNvbG9yICE9PSBcIlwiKSB7XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBERUZBVUxUX0ZPTlRfQ09MT1I7XG4gICAgfVxufTtcbi8qKlxuICogQXN1cmUgYSBiYXNlIGNvbG9yLiBXaGVuIG5vdCBnaXZlbiBvciB3aGVuIGdpdmVuIGFuIGluY29ycmVjdCBjb2xvciBmb3JtYXRcbiAqIGRlZmF1bHQgY29sb3IgaXMgdGhpcyBraW5kIG9mIGdyZXkgIzVkNjQ3NVxuICpcbiAqIEBwYXJhbSBjb2xvciBwYXJhbSBjb2xvciBnaXZlbiBieSB1c2VyXG4gKiBAcmV0dXJucyByZXR1cm5zIHRoZSBzYW1lIGNvbG9yXG4gKi9cbnZhciBjb21wbGV0ZUFzdXJlQ29sb3IgPSBmdW5jdGlvbiAoY29sb3IsIHBlcmMpIHtcbiAgICBpZiAocGVyYyA9PT0gdm9pZCAwKSB7IHBlcmMgPSAxOyB9XG4gICAgcmV0dXJuIGhleENvbG9yVG9SR0IoYXN1cmVDb2xvcihjb2xvdXJOYW1lVG9IZXgoY29sb3IpKSwgcGVyYyk7XG59O1xudmFyIERFRkFVTFRfRk9OVF9DT0xPUiA9IFwiIzY0NmM3ZlwiO1xuXG52YXIgZXh0RmlsZVJlY29uY2lsYXRpb24gPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgZXh0RmlsZUluY29tbWluZykge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgYXJyT2ZFeHRGaWxlcyA9IEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QoZHJvcHpvbmVJZCk7XG4gICAgLy8gY29udGludWUgb25seSBpZiBhcnJPZkV4dEZpbGVzIGV4aXN0c1xuICAgIGlmIChhcnJPZkV4dEZpbGVzKSB7XG4gICAgICAgIC8vZGlmZmVyZW50IHNpemVzIG1lYW5zIHRoZXJlIHdhcyBkZWxldGVkIGZpbGVzXG4gICAgICAgIC8vYWxzbyBjYW4gYmUgbmV3IGZpbGVzIHRvIGJlIHVwbG9hZGVkXG4gICAgICAgIC8vbmVlZGVkIGFuIGV4dHJhIGZsYWcgdG8gYWxsb3cgYWRkIGZpbGVzIGluIHRoZSBtaWRkbGUgb2YgdXBsb2FkaW5nIHByb2Nlc3NcbiAgICAgICAgLy8gaWYgbmV3IGZpbGVzIGFyZSBhZGRlZCwgdGhleSBhcmUgYWRkZWQgdG8gdGhlIE1hbmFnZXJcbiAgICAgICAgLy8gb3V0c2lkZSB0aGV5IHdlcmUgYWxyZWFkeSBhZGRlZCB0byB0aGUgVUlcbiAgICAgICAgLy8gaW5zaWRlIERyb3B6b25lLCB3aWxsIGJlIG5lZWRlZCBhIC5uZXh0KCkgbWV0aG9kIGZvciBtYW5hZ2VyXG4gICAgICAgIC8vIDFzdCBhbGxvdyBkZWxldGVkIGZpbGVzIGFuZCBpZ25vcmUgbmV3IG9uZXNcbiAgICAgICAgLy8gcmVkdWNlIHRoZSBhcnJPZkV4dEZpbGVJbnN0YW5jZXMgYXJyYXlcbiAgICAgICAgLy8gcGFyZWNpZG8gYSBsaXN0YXMgbGlnYWRhcywgaXRlcmFyIGhhc3RhIGVuY29udHJhciBudWxsIFhEXG4gICAgICAgIHZhciBpbmNvbW1pbmdUZW1wID0gX19zcHJlYWRBcnJheShbXSwgZXh0RmlsZUluY29tbWluZywgdHJ1ZSk7XG4gICAgICAgIGluY29tbWluZ1RlbXAgPSBpbmNvbW1pbmdUZW1wLmZpbHRlcihmdW5jdGlvbiAoRikgeyByZXR1cm4gKGFyck9mRXh0RmlsZXMgPT09IG51bGwgfHwgYXJyT2ZFeHRGaWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyT2ZFeHRGaWxlcy5maW5kSW5kZXgoZnVuY3Rpb24gKEkpIHsgcmV0dXJuIEkuaWQgPT09IEYuaWQ7IH0pKSA9PT0gLTE7IH0pO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwicmVjb25jaWxpYXRpb24gaW5jb21taW5nVGVtcFwiLCBpbmNvbW1pbmdUZW1wKTtcbiAgICAgICAgLy9kaWZmZXJlbnQgc2l6ZXMgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKGFyck9mRXh0RmlsZXMubGVuZ3RoICE9PSBleHRGaWxlSW5jb21taW5nLmxlbmd0aCB8fCBleHRGaWxlSW5jb21taW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyck9mRXh0RmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgoZXh0RmlsZUluY29tbWluZ1tpXS51cGxvYWRTdGF0dXMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAoYXJyT2ZFeHRGaWxlc1tpXS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyIG9uQ2FuY2VsIGlcIiwgaSk7XG4gICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc1tpXS51cGxvYWRTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogTWVyZ2UgcHJvcHMgdGhhdCBjb21lIGZvcm0gdXNlciBhbmQgdGhvc2Ugb25lcyB0aGF0IGFyZSBieSBkZWZhdWx0XG4gKiBpZiBpbmNvbW1pbmdQcm9wcyBpcyBudWxsIHRoaXMgcmV0dXJucyB0aGUgZGVmYXVsdCBwcm9wcyB2YWx1ZVxuICpcbiAqIEBwYXJhbSBpbmNvbW1pbmdQcm9wcyBwcm9wIHRoYXQgY29tZXMgZnJvbSBwcm9wcyBhdHRyaWJ1dG9vIG9mIGEgUmVhY3QgTm9kZVxuICogQHBhcmFtIGRlZmF1bHRQcm9wcyBkZWZhdWx0IHByb3AgZGVmaW5lZCBmb3IgdGhhdCAgUmVhY3QgTm9kZVxuICogQHJldHVybnMgbWVyZ2VkIHByb3BzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlUHJvcHMoaW5jb21taW5nUHJvcHMsIGRlZmF1bHRQcm9wcykge1xuICAgIC8vY29uc29sZS5sb2coXCJpbmNvbW1pbmdQcm9wc1wiLGluY29tbWluZ1Byb3BzKTtcbiAgICBpZiAoIWluY29tbWluZ1Byb3BzKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0UHJvcHM7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBkZWZhdWx0UHJvcHMpLCBpbmNvbW1pbmdQcm9wcyk7XG4gICAgfVxufVxuXG52YXIgSW5wdXRIaWRkZW4gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSwgaW5wdXRSZWYgPSBwcm9wcy5pbnB1dFJlZiwgYWNjZXB0ID0gcHJvcHMuYWNjZXB0LCBtdWx0aXBsZSA9IHByb3BzLm11bHRpcGxlO1xuICAgIC8qIGZ1bmN0aW9uIGhhbmRsZUNsaWNrPFQgZXh0ZW5kcyBIVE1MSW5wdXRFbGVtZW50PihcbiAgICAgIGV2dDogUmVhY3QuTW91c2VFdmVudDxULCBNb3VzZUV2ZW50PlxuICAgICk6IHZvaWQge1xuICAgICAgaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgfSAqL1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHsgXCJhcmlhLWxhYmVsXCI6IFwiZnVpLWhpZGRlbi1pbnB1dFwiLCBzdHlsZTogeyBkaXNwbGF5OiBcIm5vbmVcIiB9LCByZWY6IGlucHV0UmVmLCBvbkNoYW5nZTogb25DaGFuZ2UsIHR5cGU6IFwiZmlsZVwiLCBhY2NlcHQ6IGFjY2VwdCwgbXVsdGlwbGU6IG11bHRpcGxlIH0pKSk7XG59O1xuXG52YXIgZGVmYXVsdERyb3pvbmVQcm9wcyA9IHtcbiAgICBjbGlja2FibGU6IHRydWUsXG4gICAgYmVoYXZpb3VyOiBcImFkZFwiLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBkcm9wT25MYXllcjogdHJ1ZSxcbiAgICB1cGxvYWRDb25maWc6IHt9LFxuICAgIGFjdGlvbkJ1dHRvbnM6IHt9LFxuICAgIGhlYWRlcjogdHJ1ZSxcbiAgICBmb290ZXI6IHRydWUsXG4gICAgdmFsdWU6IFtdLFxuICAgIC8vYm9yZGVyUmFkaXVzOiBcIjhweFwiXG59O1xudmFyIERFRkFVTFRfQk9SREVSX1JBRElVUyA9IFwiOHB4XCI7XG4vKlxuZXhwb3J0IGludGVyZmFjZSBBZHZhbmNlZENvbmZpZ0l0ZW0ge1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRHJvcHpvbmVBZHZhbmNlZENvbmZpZyA9IHtcbiAgZHJvcHpvbmVMYXllcjogYW55O1xuICBkcm9wem9uZUNvbnRhaW5lcjogYW55O1xuICBkcm9wem9uZUxhYmVsOiBhbnk7XG59XG4gKi9cblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWRyb3B6b25lLWNoaWxkcmVuLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBnYXA6IDhweDtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG4gIHBhZGRpbmc6IDVweCAwO1xcbn1cIik7XG5cbnZhciBEcm9wem9uZUNoaWxkcmVuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGxhYmVsID0gcHJvcHMubGFiZWwsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgaXNFbXB0eUFycmF5ID0gQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xuICAgIC8vY29uc29sZS5sb2coXCJpc0VtcHR5QXJyYXlcIiwgaXNFbXB0eUFycmF5LGNoaWxkcmVuKTtcbiAgICB2YXIgRHJvcHpvbmVMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgLy9jaGlsZHJlbiB3aWxsIGJlIGFsd2F5cyBjb25zaWRlciBhcyBtb3JlIGltcG9ydGFudFxuICAgIGlmIChjaGlsZHJlbiAmJiAhaXNFbXB0eUFycmF5KSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1kcm9wem9uZS1jaGlsZHJlbi1jb250YWluZXJcIiB9LCBjaGlsZHJlbikpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1kcm9wem9uZS1jaGlsZHJlbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIG51bGwsXG4gICAgICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICAgICAgbGFiZWwgfHwgRHJvcHpvbmVMb2NhbGl6ZXIuZGVmYXVsdExhYmVsKSkpO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyBzdG9wUHJvcGFnYXRpb24gYW5kIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9ucyBvbiBhbiBkcm9wIGV2ZW50IGluc3RhbmNlXG4gKiBAcGFyYW0gZXZ0IGRyYWcgZXZlbnQgaGFuZGxlciBvYmplY3RcbiAqL1xudmFyIGhhbmRsZURyb3BVdGlsID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbn07XG4vKipcbiAqIFBlcmZvcm1zIHN0b3BQcm9wYWdhdGlvbiBhbmQgcHJldmVudERlZmF1bHQgZnVuY3Rpb25zIG9uIGFuIGRyb3AgZXZlbnQgaW5zdGFuY2VcbiAqIGFuZCBhbHNvIHNwZWNpZmllcyB0aGF0IHRoZSBkcm9wIGVmZmVjdCBpcyBsaW5rXG4gKiBAcGFyYW0gZXZ0IGRyYWcgZXZlbnQgaGFuZGxlciBvYmplY3RcbiAqL1xudmFyIGhhbmRsZURyYWdVdGlsID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGV2dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IFwibGlua1wiO1xuICAgIGhhbmRsZURyb3BVdGlsKGV2dCk7XG59O1xuXG4vKipcbiAqIFBlcmZvcm1zIHN0b3BQcm9wYWdhdGlvbiBhbmQgcHJldmVudERlZmF1bHQgZnVuY3Rpb25zIG9uIGFuIGNsaWNrIGV2ZW50IGluc3RhbmNlXG4gKiBAcGFyYW0gZXZ0IGNsaWNrIGV2ZW50IGhhbmRsZXIgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUNsaWNrVXRpbChldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG4vKipcbiAqIENsaWNrIHByb2dyYW1hdGljYWxseSBhbiBpbnB1dCBlbGVtZW50LlxuICogSWYgdGhlIGlucHV0IGVsZW1lbnQgaXMgbnVsbCwgbm90aGluZyB3aWxsIGhhcHBlbmRcbiAqIEBwYXJhbSBpbnB1dCB0aGUgaW5wdXQgZWxlbWVudCB0YXJnZXQgdG8gbWFrZSBhIGNsaWNrXG4gKi9cbnZhciBoYW5kbGVDbGlja0lucHV0ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgaWYgKCFpbnB1dClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlucHV0LmNsaWNrKCk7XG59O1xuXG52YXIgYXN1cmVSaXBwbGVDb2xvciA9IGZ1bmN0aW9uIChjb2xvcikge1xuICAgIHJldHVybiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuNCk7XG59O1xuZnVuY3Rpb24gY3JlYXRlRnVpUmlwcGxlRnJvbURpdihmdWlDb250YWluZXJBYnMsIGZ1aUNvbnRhaW5lclJlbCwgY29sb3IpIHtcbiAgICBpZiAoIWZ1aUNvbnRhaW5lclJlbCB8fCAhZnVpQ29udGFpbmVyQWJzKVxuICAgICAgICByZXR1cm47XG4gICAgZnVpQ29udGFpbmVyQWJzLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gICAgLy9yZW1vdmVSaXBwbGVJZkV4aXN0KGZ1aUNvbnRhaW5lclJlbCwgXCJkdWktcmlwcGxlXCIpO1xuICAgIC8vIGNyZWF0aW5nIHRoZSBzcGFuIGNpcmNsZSByaXBwbGVcbiAgICB2YXIgY2lyY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgLy9mb3Igc2VhcmNoaW5nXG4gICAgY2lyY2xlLmlkID0gXCJmaWxlc3VpLXJpcHBsZVwiO1xuICAgIC8vZm9yIHN0eWxlc1xuICAgIGNpcmNsZS5jbGFzc05hbWUgPSBcInJpcHBsZVwiO1xuICAgIC8vIGNhbGN1bGF0ZXMgdGhlIGRpYW1ldGVyXG4gICAgdmFyIGRpYW1ldGVyID0gTWF0aC5tYXgoZnVpQ29udGFpbmVyUmVsLmNsaWVudFdpZHRoLCBmdWlDb250YWluZXJSZWwuY2xpZW50SGVpZ2h0KTtcbiAgICAvL2NvbnN0IHJpcHBsZUNpcmNsZVJhZGl1czogbnVtYmVyID0gZGlhbWV0ZXIgLyAyO1xuICAgIC8vY29uc29sZS5sb2coXCJ3LGhcIiwgZnVpQ29udGFpbmVyUmVsLmNsaWVudFdpZHRoLCBmdWlDb250YWluZXJSZWwuY2xpZW50SGVpZ2h0KTtcbiAgICBjaXJjbGUuc3R5bGUud2lkdGggPSBjaXJjbGUuc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZGlhbWV0ZXIsIFwicHhcIik7XG4gICAgY2lyY2xlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGFzdXJlUmlwcGxlQ29sb3IoY29sb3IpO1xuICAgIGZ1aUNvbnRhaW5lclJlbC5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgIC8vcmVtb3ZlIHRyYXNoXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZ1aUNvbnRhaW5lckFicy5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgICAgIGNpcmNsZSA9PT0gbnVsbCB8fCBjaXJjbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNpcmNsZS5yZW1vdmUoKTtcbiAgICB9LCA1MDEpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmlwcGxlQnV0dG9uKGV2ZW50LCB2YXJpYW50LCBjb2xvcikge1xuICAgIHZhciBidXR0b25BbmNob3JEaXYgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgIHZhciBjaXJjbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICB2YXIgZGlhbWV0ZXIgPSBNYXRoLm1heChidXR0b25BbmNob3JEaXYuY2xpZW50V2lkdGgsIGJ1dHRvbkFuY2hvckRpdi5jbGllbnRIZWlnaHQpO1xuICAgIC8vY29uc3QgcmFkaXVzID0gZGlhbWV0ZXIgLyAyO1xuICAgIGNpcmNsZS5zdHlsZS53aWR0aCA9IGNpcmNsZS5zdHlsZS5oZWlnaHQgPSBcIlwiLmNvbmNhdChkaWFtZXRlciwgXCJweFwiKTtcbiAgICAvKiBjaXJjbGUuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggLSByYWRpdXNcbiAgICAgfXB4YDtcbiAgIGNpcmNsZS5zdHlsZS50b3AgPSBgJHtldmVudC5jbGllbnRZIC0gcmFkaXVzXG4gICAgIH1weGA7ICovXG4gICAgY2lyY2xlLmNsYXNzTGlzdC5hZGQoXCJyaXBwbGVcIik7XG4gICAgaWYgKHZhcmlhbnQgIT09IFwiY29udGFpbmVkXCIpIHtcbiAgICAgICAgY2lyY2xlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGFzdXJlUmlwcGxlQ29sb3IoY29sb3IpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY2lyY2xlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGhleENvbG9yVG9SR0IoXCIjZmZmZmZmXCIsIDAuNCk7XG4gICAgfVxuICAgIGJ1dHRvbkFuY2hvckRpdi5hcHBlbmRDaGlsZChjaXJjbGUpO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBjaXJjbGUgPT09IG51bGwgfHwgY2lyY2xlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjaXJjbGUucmVtb3ZlKCk7XG4gICAgfSwgNTAxKTtcbn1cblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzdWktZGlzYWJsZWQtcm9vdCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XFxufVwiKTtcblxudmFyIERyb3B6b25lRGlzYWJsZWRMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvcGVuID0gcHJvcHMub3BlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBzdHlsZSA9IHByb3BzLnN0eWxlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2dCkge1xuICAgICAgICBoYW5kbGVDbGlja1V0aWwoZXZ0KTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZURyYWcgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIGhhbmRsZURyYWdVdGlsKGV2dCk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlRHJvcCA9IGZ1bmN0aW9uIChldnQpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBoYW5kbGVEcm9wVXRpbChldnQpO1xuICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICB2YXIgZmluYWxEaXNhYmxlZExheWVyQ2xhc3NOYW1lID0gYWRkQ2xhc3NOYW1lKFwiZmlsZXN1aS1kaXNhYmxlZC1yb290XCIsIGNsYXNzTmFtZSk7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHN0eWxlLCBjbGFzc05hbWU6IGZpbmFsRGlzYWJsZWRMYXllckNsYXNzTmFtZSwgb25Ecm9wOiBoYW5kbGVEcm9wLCBvbkRyYWdPdmVyOiBoYW5kbGVEcmFnLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG4gICAgfVxufTtcblxuX19fJGluc2VydFN0eWxlKFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVBvcHBpbnM6MzAwLDQwMCw1MDAsNjAwLDcwMCw5MDApO1xcbi5mdWktZHJvcHpvbmUtcm9vdCB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1pbi13aWR0aDogMTUwcHg7XFxuICBtaW4taGVpZ2h0OiAxODBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZ2FwOiAwIDhweDtcXG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XFxuICBmb250LXNpemU6IDEuNWVtO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wMjg1N2VtO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcXG4gIC8qICAmLmZ1aS1kcm9wem9uZS1ib3JkZXIge1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgIzBjMjM1ODtcXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gICAgJi5mdWktaGlkZS1ib3JkZXIge1xcbiAgICAgIGJvcmRlcjogbm9uZTtcXG4gICAgfVxcbiAgfSAqL1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcXG4gIC5mdWktZHJvcHpvbmUtcm9vdCB7XFxuICAgIGZvbnQtc2l6ZTogMS4zZW07XFxuICB9XFxufVxcbi5mdWktZHJvcHpvbmUtcm9vdC5jbGlja2FibGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4uZmlsZXMtdWktaGVhZGVyIHtcXG4gIG1pbi1oZWlnaHQ6IDIzcHg7XFxuICAvKiAgaGVpZ2h0OiAyMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlOyBcXG4gIHRvcDogMDtcXG4gICovXFxuICBjdXJzb3I6IHRleHQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KSB7XFxuICAuZmlsZXMtdWktaGVhZGVyIHtcXG4gICAgZm9udC1zaXplOiAwLjhyZW07XFxuICB9XFxufVxcblxcbi5maWxlcy11aS1mb290ZXIge1xcbiAgLyogICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOHB4OyAqL1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGN1cnNvcjogdGV4dDtcXG4gIC8qIGhlaWdodDogMjNweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7ICovXFxuICB3aWR0aDogMTAwJTtcXG4gIC8qIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgKi9cXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7IC8qIG51bWJlciBvZiBsaW5lcyB0byBzaG93ICovXFxuICBsaW5lLWNsYW1wOiAxO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiA5NjBweCkge1xcbiAgLmZpbGVzLXVpLWZvb3RlciB7XFxuICAgIHBhZGRpbmctbGVmdDogMXB4O1xcbiAgICBmb250LXNpemU6IDAuOXJlbTtcXG4gIH1cXG59XCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXN1aS1iYXNlLXJpcHBsZS1hYnNvbHV0ZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlc3VpLWJhc2UtcmlwcGxlLWFic29sdXRlIC5maWxlc3VpLWJhc2UtcmlwcGxlLXJlbGF0aXZlIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXN1aS1iYXNlLXJpcHBsZS1hYnNvbHV0ZSAuZmlsZXN1aS1iYXNlLXJpcHBsZS1yZWxhdGl2ZSBzcGFuLnJpcHBsZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbiAgYW5pbWF0aW9uOiByaXBwbGUgNTAwbXMgbGluZWFyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG5Aa2V5ZnJhbWVzIHJpcHBsZSB7XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoNCk7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVwiKTtcblxuLyoqXG4gKiBBZGRlZCBzdXBwb3J0IGZvciBsaXRlcmFscyAlIGFuZCBweFxuICogQHBhcmFtIHNpemVTdHJcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBwYXJzZVNpemUgPSBmdW5jdGlvbiAoc2l6ZVN0cikge1xuICAgIGlmICh0eXBlb2Ygc2l6ZVN0ciA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gc2l6ZVN0cjtcbiAgICB9XG4gICAgc3dpdGNoIChzaXplU3RyKSB7XG4gICAgICAgIGNhc2UgXCJtaWNyb1wiOlxuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIGNhc2UgXCJzbWFsbFwiOlxuICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICBjYXNlIFwic2VtaS1tZWRpdW1cIjpcbiAgICAgICAgICAgIHJldHVybiAxODtcbiAgICAgICAgY2FzZSBcIm1lZGl1bVwiOlxuICAgICAgICAgICAgcmV0dXJuIDI1O1xuICAgICAgICBjYXNlIFwibGFyZ2VcIjpcbiAgICAgICAgICAgIHJldHVybiAyODtcbiAgICAgICAgY2FzZSBcImV4dHJhLWxhcmdlXCI6XG4gICAgICAgICAgICByZXR1cm4gMzI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gMjQ7XG4gICAgfVxufTtcblxudmFyIENhbmNlbCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogXCJub25lXCIsIG9wYWNpdHk6IFwiLjg3XCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNGMtNC40MSAwLTggMy41OS04IDhzMy41OSA4IDggOCA4LTMuNTkgOC04LTMuNTktOC04LTh6bTUgMTEuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5elwiLCBmaWxsOiBjb2xvckZpbGwgPyBjb2xvckZpbGwgOiBcIm5vbmVcIiwgb3BhY2l0eTogXCIuNVwiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLjU5LTEzTDEyIDEwLjU5IDguNDEgNyA3IDguNDEgMTAuNTkgMTIgNyAxNS41OSA4LjQxIDE3IDEyIDEzLjQxIDE1LjU5IDE3IDE3IDE1LjU5IDEzLjQxIDEyIDE3IDguNDF6XCIgfSkpKTtcbn07XG5cbnZhciBDaGVja0NpcmNsZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwelwiLCBmaWxsOiBjb2xvckZpbGwgPyBjb2xvckZpbGwgOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5elwiIH0pKSk7XG59O1xuXG52YXIgQ2xlYW4gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBlbmFibGVCYWNrZ3JvdW5kOiBcIm5ldyAwIDAgMjQgMjRcIiwgaGVpZ2h0OiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHsgZmlsbDogXCJub25lXCIsIGhlaWdodDogZmluYWxTaXplIHx8IFwiMjRcIiwgd2lkdGg6IGZpbmFsU2l6ZSB8fCBcIjI0XCIgfSkpLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE2LDExaC0xVjNjMC0xLjEtMC45LTItMi0yaC0yQzkuOSwxLDksMS45LDksM3Y4SDhjLTIuNzYsMC01LDIuMjQtNSw1djdoMTh2LTdDMjEsMTMuMjQsMTguNzYsMTEsMTYsMTF6IE0xMSwzaDJ2OGgtMlYzIHogTTE5LDIxaC0ydi0zYzAtMC41NS0wLjQ1LTEtMS0xcy0xLDAuNDUtMSwxdjNoLTJ2LTNjMC0wLjU1LTAuNDUtMS0xLTFzLTEsMC40NS0xLDF2M0g5di0zYzAtMC41NS0wLjQ1LTEtMS0xcy0xLDAuNDUtMSwxdjNINSB2LTVjMC0xLjY1LDEuMzUtMywzLTNoOGMxLjY1LDAsMywxLjM1LDMsM1YyMXpcIiB9KSkpKSk7XG59O1xuXG52YXIgQ2xlYXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogY29sb3JGaWxsIHx8IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMiAxOSA2LjQxelwiIH0pKSk7XG59O1xuXG52YXIgQ2xvdWREb25lID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgZW5hYmxlQmFja2dyb3VuZDogXCJuZXcgMCAwIDI0IDI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciB8fCBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IGNvbG9yRmlsbCB8fCBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00IDAtMi4wNSAxLjUzLTMuNzYgMy41Ni0zLjk3bDEuMDctLjExLjUtLjk1QzguMDggNy4xNCA5Ljk0IDYgMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMWMxLjU2LjEgMi43OCAxLjQxIDIuNzggMi45NiAwIDEuNjUtMS4zNSAzLTMgM3ptLTktMy44MmwtMi4wOS0yLjA5TDYuNSAxMy41IDEwIDE3bDYuMDEtNi4wMS0xLjQxLTEuNDF6XCIgfSkpKTtcbn07XG5cbnZhciBEb0Rpc3R1cmIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDRjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDggOC0zLjU5IDgtOC0zLjU5LTgtOC04elwiLCBvcGFjaXR5OiBcIi40XCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LTggMC0xLjg1LjYzLTMuNTUgMS42OS00LjlMMTYuOSAxOC4zMUMxNS41NSAxOS4zNyAxMy44NSAyMCAxMiAyMHptNi4zMS0zLjFMNy4xIDUuNjlDOC40NSA0LjYzIDEwLjE1IDQgMTIgNGM0LjQyIDAgOCAzLjU4IDggOCAwIDEuODUtLjYzIDMuNTUtMS42OSA0Ljl6XCIgfSkpKTtcbn07XG5cbnZhciBEb3dubG9hZEZpbGUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCBlbmFibGVCYWNrZ3JvdW5kOiBcIm5ldyAwIDAgMjQgMjRcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yIHx8IFwiIzAwMDAwMFwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IGZpbGw6IGNvbG9yRmlsbCB8fCBcIm5vbmVcIiwgaGVpZ2h0OiBmaW5hbFNpemUsIHdpZHRoOiBmaW5hbFNpemUgfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xOCwxNXYzSDZ2LTNINHYzYzAsMS4xLDAuOSwyLDIsMmgxMmMxLjEsMCwyLTAuOSwyLTJ2LTNIMTh6IE0xNywxMWwtMS40MS0xLjQxTDEzLDEyLjE3VjRoLTJ2OC4xN0w4LjQxLDkuNTlMNywxMWw1LDUgTDE3LDExelwiIH0pKSkpO1xufTtcblxudmFyIEluZm9EaXNuZXkgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKSAtIDI7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgXG4gICAgICAgIC8vYWx0PVwiXCJcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsIFwiYXJpYS1sYWJlbFwiOiBcImluZm9cIiwgZmlsbDogY29sb3IgfHwgXCIjMDAwMDAwXCIsIHJvbGU6IFwiaW1nXCIsIHRyYW5zZm9ybTogXCJcIiwgdmVyc2lvbjogXCIxLjFcIiwgdmlld0JveDogXCIwIDAgMzYgMzZcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0yMi4zNzggMGMyLjQxMiAwIDMuNjE4IDEuNjQyIDMuNjE4IDMuNTIzIDAgMi4zNDktMi4wOTUgNC41MjItNC44MjIgNC41MjItMi4yODQgMC0zLjYxNi0xLjM1LTMuNTUzLTMuNTgyIDAtMS44NzcgMS41ODYtNC40NjIgNC43NTctNC40NjJ6TTE0Ljk1NiAzNmMtMS45MDQgMC0zLjI5OS0xLjE3NC0xLjk2Ny02LjM0M2wyLjE4NS05LjE2NmMwLjM4LTEuNDY1IDAuNDQzLTIuMDU0IDAtMi4wNTQtMC41NzEgMC0zLjA0MCAxLjAxMi00LjUwNCAyLjAxMWwtMC45NS0xLjU4NGM0LjYzLTMuOTM1IDkuOTU2LTYuMjQxIDEyLjI0Mi02LjI0MSAxLjkwMyAwIDIuMjE5IDIuMjkxIDEuMjY5IDUuODE0bC0yLjUwNCA5LjYzNGMtMC40NDMgMS43MDEtMC4yNTQgMi4yODggMC4xOTEgMi4yODggMC41NzEgMCAyLjQ0My0wLjcwNiA0LjI4Mi0yLjE3M2wxLjA4MCAxLjQ2NWMtNC41MDQgNC41ODUtOS40MjMgNi4zNDktMTEuMzI0IDYuMzQ5elwiIH0pKSk7XG59O1xuXG52YXIgUGxheUljb24gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgb3BhY2l0eTogXCIuOVwiLCBmaWxsOiBjb2xvckZpbGwgPyBjb2xvckZpbGwgOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk04IDV2MTRsMTEtN0w4IDV6XCIgfSkpKTtcbn07XG5cbnZhciBVcGxvYWQgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGVuYWJsZUJhY2tncm91bmQ6IFwibmV3IDAgMCAyNCAyNFwiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IGZpbGw6IGNvbG9yRmlsbCB8fCBcIm5vbmVcIiwgaGVpZ2h0OiBzaXplIHx8IFwiMjRcIiwgd2lkdGg6IHNpemUgfHwgXCIyNFwiIH0pKSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTgsMTV2M0g2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTJjMS4xLDAsMi0wLjksMi0ydi0zSDE4eiBNNyw5bDEuNDEsMS40MUwxMSw3LjgzVjE2aDJWNy44M2wyLjU5LDIuNThMMTcsOWwtNS01TDcsOXpcIiB9KSkpKTtcbn07XG5cbnZhciBVcGxvYWRFcnJvciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IGZpbGw6IGNvbG9yRmlsbCA/IGNvbG9yRmlsbCA6IFwibm9uZVwiLCBoZWlnaHQ6IGZpbmFsU2l6ZSwgd2lkdGg6IGZpbmFsU2l6ZSB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xOCwxNS4xN1YxNWgydjIuMTdMMTgsMTUuMTd6IE0xNS40MSwxMi41OUwxNywxMWwtMS40MS0xLjQxTDE0LDExLjE3TDE1LjQxLDEyLjU5eiBNMTMsMTAuMTdWNGgtMnY0LjE3TDEzLDEwLjE3eiBNMjEuMTksMjEuMTlsLTEuNzgtMS43OEwyLjgxLDIuODFMMS4zOSw0LjIybDYuMTksNi4xOUw3LDExbDUsNWwwLjU5LTAuNTlMMTUuMTcsMThINnYtM0g0djNjMCwxLjEsMC45LDIsMiwyaDExLjE3bDIuNjEsMi42MSBMMjEuMTksMjEuMTl6XCIgfSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBrZXlmcmFtZXMgZmlsZXN1aS1yb3RhdGUtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcbi5maWxlc3VpLXJvdGF0ZSB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxufVxcblxcbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xcbiAgLmZpbGVzdWktcm90YXRlIHtcXG4gICAgYW5pbWF0aW9uOiBmaWxlc3VpLXJvdGF0ZS1zcGluIGluZmluaXRlIDJzIGxpbmVhcjtcXG4gIH1cXG59XCIpO1xuXG52YXIgVXBsb2FkaW5nUHJvY2VzcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgc3BpbiA9IHByb3BzLnNwaW47XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICB2YXIgZmluYWxDbGFzc25hbWUgPSBjbGFzc05hbWUgfHwgXCJcIjtcbiAgICBmaW5hbENsYXNzbmFtZSArPSBzcGluID8gXCJmaWxlc3VpLXJvdGF0ZVwiIDogXCJcIjtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NuYW1lLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IFwibm9uZVwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDRWMUw4IDVsNCA0VjZjMy4zMSAwIDYgMi42OSA2IDYgMCAxLjAxLS4yNSAxLjk3LS43IDIuOGwxLjQ2IDEuNDZDMTkuNTQgMTUuMDMgMjAgMTMuNTcgMjAgMTJjMC00LjQyLTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02IDAtMS4wMS4yNS0xLjk3LjctMi44TDUuMjQgNy43NEM0LjQ2IDguOTcgNCAxMC40MyA0IDEyYzAgNC40MiAzLjU4IDggOCA4djNsNC00LTQtNHYzelwiIH0pKSk7XG59O1xuXG52YXIgVmlzaWJpbGl0eSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4IDgtMy41OSA4LTgtMy41OS04LTgtOHpcIiwgXG4gICAgICAgICAgICAvL29wYWNpdHk9XCIuOVwiXG4gICAgICAgICAgICBmaWxsOiBjb2xvckZpbGwgPyBjb2xvckZpbGwgOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0QzcgNCAyLjczIDcuMTEgMSAxMS41IDIuNzMgMTUuODkgNyAxOSAxMiAxOXM5LjI3LTMuMTEgMTEtNy41QzIxLjI3IDcuMTEgMTcgNCAxMiA0em0wIDEyLjVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zelwiIH0pKSk7XG59O1xuXG52YXIgRHJvcHpvbmVIZWFkZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbWF4RmlsZVNpemUgPSBwcm9wcy5tYXhGaWxlU2l6ZSwgbnVtYmVyT2ZWYWxpZEZpbGVzID0gcHJvcHMubnVtYmVyT2ZWYWxpZEZpbGVzLCBvblJlc2V0ID0gcHJvcHMub25SZXNldCwgb25DbGVhbiA9IHByb3BzLm9uQ2xlYW4sIG1heEZpbGVzID0gcHJvcHMubWF4RmlsZXMsIG9uVXBsb2FkU3RhcnQgPSBwcm9wcy5vblVwbG9hZFN0YXJ0LCBpc1VwbG9hZGluZyA9IHByb3BzLmlzVXBsb2FkaW5nLCB1cmxQcmVzZW50ID0gcHJvcHMudXJsUHJlc2VudCwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBib3JkZXJSYWRpdXMgPSBwcm9wcy5ib3JkZXJSYWRpdXMsIHN0eWxlID0gcHJvcHMuc3R5bGUsIF9hID0gcHJvcHMuY2xhc3NOYW1lLCBjbGFzc05hbWUgPSBfYSA9PT0gdm9pZCAwID8gXCJcIiA6IF9hLCByZXNldFN0eWxlcyA9IHByb3BzLnJlc2V0U3R5bGVzLCBjb2xvciA9IHByb3BzLmNvbG9yLCBfYiA9IHByb3BzLmZpcnN0Q2xhc3NOYW1lLCBmaXJzdENsYXNzTmFtZSA9IF9iID09PSB2b2lkIDAgPyBcIlwiIDogX2I7XG4gICAgdmFyIERyb3B6b25lSGVhZGVyTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLmhlYWRlcjtcbiAgICB2YXIgaGFuZGxlQ2xlYW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uQ2xlYW4gPT09IG51bGwgfHwgb25DbGVhbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGVhbigpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZVN0YXJ0VXBsb2FkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvblVwbG9hZFN0YXJ0ID09PSBudWxsIHx8IG9uVXBsb2FkU3RhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVXBsb2FkU3RhcnQoKTtcbiAgICB9O1xuICAgIHZhciBtYWtlSGVhZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIGlmIChvblVwbG9hZFN0YXJ0ICYmIHVybFByZXNlbnQgJiYgbnVtYmVyT2ZWYWxpZEZpbGVzKSB7XG4gICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZGluZ1Byb2Nlc3MsIHsgc3BpbjogdHJ1ZSwgY29sb3I6IGNvbG9yIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIERyb3B6b25lSGVhZGVyTG9jYWxpemVyLnVwbG9hZEZpbGVzTWVzc2FnZSksXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVXBsb2FkLCB7IGNvbG9yOiBjb2xvciwgb25DbGljazogaGFuZGxlU3RhcnRVcGxvYWRpbmcgfSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgXCIsXCIsXG4gICAgICAgICAgICAgICAgXCJcXHUwMEEwXCIpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWF4RmlsZVNpemVNZXNzZW5nZXIgPSBEcm9wem9uZUhlYWRlckxvY2FsaXplci5tYXhTaXplTWVzc2FnZTtcbiAgICAgICAgdmFyIG1heEZpbGVTaXplRm9ybWF0dGVkID0gZmlsZVNpemVGb3JtYXRlcihtYXhGaWxlU2l6ZSk7XG4gICAgICAgIGlmIChtYXhGaWxlU2l6ZUZvcm1hdHRlZCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobWF4RmlsZVNpemVNZXNzZW5nZXIobWF4RmlsZVNpemVGb3JtYXR0ZWQpKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgXCIsXCIsXG4gICAgICAgICAgICAgICAgXCJcXHUwMEEwXCIpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsaWRGaWxlU2l6ZU1lc3NlbmdlciA9IERyb3B6b25lSGVhZGVyTG9jYWxpemVyLnZhbGlkRmlsZXNNZXNzYWdlO1xuICAgICAgICBpZiAobWF4RmlsZXMpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbGlkRmlsZVNpemVNZXNzZW5nZXIobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBcIixcIixcbiAgICAgICAgICAgICAgICBcIlxcdTAwQTBcIikpO1xuICAgICAgICB9XG4gICAgICAgIC8vY2xlYW4gbm90IHZhbGlkIGZpbGVzIG9uIGNsaWNrXG4gICAgICAgIGlmIChvbkNsZWFuKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFuLCB7IGNvbG9yOiBjb2xvciwgb25DbGljazogaGFuZGxlQ2xlYW4sIHNpemU6IFwic2VtaS1tZWRpdW1cIiB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uUmVzZXQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FuY2VsLCB7IGNvbG9yOiBjb2xvciwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7IH0gfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSByZXNldFN0eWxlc1xuICAgICAgICA/IGNsYXNzTmFtZVxuICAgICAgICA6IGFkZENsYXNzTmFtZShcImZpbGVzLXVpLWhlYWRlclwiICsgXCIgXCIgKyBmaXJzdENsYXNzTmFtZSwgY2xhc3NOYW1lKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHJlc2V0U3R5bGVzXG4gICAgICAgID8gc3R5bGVcbiAgICAgICAgOiBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIHN0eWxlKSwgeyBib3JkZXJUb3BMZWZ0UmFkaXVzOiBib3JkZXJSYWRpdXMsIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiBib3JkZXJSYWRpdXMgfSk7XG4gICAgLy9jb25zb2xlLmxvZyhcImhlYWRlcnggcmVzZXRTdHlsZXNcIiwgcmVzZXRTdHlsZXMpO1xuICAgIC8vY29uc29sZS5sb2coXCJoZWFkZXJ4IHN0eWxlXCIsIHN0eWxlKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiaGVhZGVyeCBmaW5hbFN0eWxlXCIsIGZpbmFsU3R5bGUpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBzdHlsZTogZmluYWxTdHlsZSB9LCBtYWtlSGVhZGVyKCkubWFwKGZ1bmN0aW9uIChIZWFkZXJJdGVtLCBpbmRleCkgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsga2V5OiBpbmRleCwgc3R5bGU6IHsgZGlzcGxheTogXCJmbGV4XCIgfSB9LCBIZWFkZXJJdGVtKSk7IH0pKSk7XG59O1xuXG52YXIgRHJvcHpvbmVGb290ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgYWNjZXB0ID0gcHJvcHMuYWNjZXB0LCBtZXNzYWdlID0gcHJvcHMubWVzc2FnZSwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBib3JkZXJSYWRpdXMgPSBwcm9wcy5ib3JkZXJSYWRpdXMsIHN0eWxlID0gcHJvcHMuc3R5bGUsIF9hID0gcHJvcHMuY2xhc3NOYW1lLCBjbGFzc05hbWUgPSBfYSA9PT0gdm9pZCAwID8gXCJcIiA6IF9hLCBfYiA9IHByb3BzLnJlc2V0U3R5bGVzLCByZXNldFN0eWxlcyA9IF9iID09PSB2b2lkIDAgPyBmYWxzZSA6IF9iLCBfYyA9IHByb3BzLmFsbG93ZWRUeXBlc0xhYmVsLCBhbGxvd2VkVHlwZXNMYWJlbCA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2MsIF9kID0gcHJvcHMuY3VzdG9tTWVzc2FnZSwgY3VzdG9tTWVzc2FnZSA9IF9kID09PSB2b2lkIDAgPyB1bmRlZmluZWQgOiBfZCwgX2UgPSBwcm9wcy5maXJzdENsYXNzTmFtZSwgZmlyc3RDbGFzc05hbWUgPSBfZSA9PT0gdm9pZCAwID8gXCJcIiA6IF9lO1xuICAgIHZhciBEcm9wem9uZUZvb3RlckxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5mb290ZXI7XG4gICAgdmFyIGFjY2VwQ3VzdG9tTWVzc2VuZ2VyID0gRHJvcHpvbmVGb290ZXJMb2NhbGl6ZXIuYWNjZXB0Q3VzdG9tO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2dCkge1xuICAgICAgICBoYW5kbGVDbGlja1V0aWwoZXZ0KTtcbiAgICB9XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gcmVzZXRTdHlsZXNcbiAgICAgICAgPyBjbGFzc05hbWVcbiAgICAgICAgOiBhZGRDbGFzc05hbWUoXCJmaWxlcy11aS1mb290ZXIgXCIuY29uY2F0KGZpcnN0Q2xhc3NOYW1lKSwgY2xhc3NOYW1lKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHJlc2V0U3R5bGVzXG4gICAgICAgID8gc3R5bGVcbiAgICAgICAgOiBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIHN0eWxlKSwgeyBib3JkZXJCb3RvbUxlZnRSYWRpdXM6IGJvcmRlclJhZGl1cywgYm9yZGVyQm90b21SaWdodFJhZGl1czogYm9yZGVyUmFkaXVzIH0pO1xuICAgIC8vY29uc29sZS5sb2coXCJmaWxlcy11aS1mb290ZXJcIiwgZmluYWxTdHlsZSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgb25DbGljazogaGFuZGxlQ2xpY2ssIHN0eWxlOiBmaW5hbFN0eWxlIH0sIGN1c3RvbU1lc3NhZ2UgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tTWVzc2FnZSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIG1lc3NhZ2VcbiAgICAgICAgPyBtZXNzYWdlXG4gICAgICAgIDogIWFjY2VwdFxuICAgICAgICAgICAgPyBhbGxvd2VkVHlwZXNMYWJlbFxuICAgICAgICAgICAgICAgID8gRHJvcHpvbmVGb290ZXJMb2NhbGl6ZXIuYWNjZXB0QWxsXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIDogYWNjZXBDdXN0b21NZXNzZW5nZXIoYWNjZXB0KSkpKSk7XG59O1xuXG52YXIgRHluYW1pQ1NTO1xyXG4oZnVuY3Rpb24gKER5bmFtaUNTUykge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnRzIGEgc3R5bGVzaGVldCBpbnRvIHRoZSBET00uXHJcbiAgICAgKiBXaGVuIGFuIGVycm9yIG9jY3VycyByZXR1cm5zIGFuIGVtcHR5IHN0cmluZ1xyXG4gICAgICogQHBhcmFtIGR5bmFtaWNTaGVldCBhIGR5bmNhbWljIHNoZWV0XHJcbiAgICAgKiBAcmV0dXJuIHRoZSBpZCBvZiB0aGUgc3R5bGVzaGVldCBpbiBzdHJpbmcgZm9ybWF0XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGluc2VydFN0eWxlU2hlZXQoZHluYW1pY1NoZWV0KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdF9pZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgZHluYW1pY1NoZWV0ID09PSBcInVuZGVmaW5lZFwiIHx8IGR5bmFtaWNTaGVldCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9pZiBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkeW5hbWljU2hlZXQuaWQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkeW5hbWljU2hlZXQuaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdF9pZCA9IGR5bmFtaWNTaGVldC5pZDtcclxuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcclxuICAgICAgICBzdHlsZVNoZWV0LmlkID0gcmVzdWx0X2lkO1xyXG4gICAgICAgIHN0eWxlU2hlZXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xyXG4gICAgICAgIHZhciBjb250ZXRSYXcgPSB0b1Jhd1N0eWxlU2hlZXQoZHluYW1pY1NoZWV0LnNoZWV0UnVsZXMgfHwgW10pICsgZHluYW1pY1NoZWV0LnJhdyB8fCBcIlwiO1xyXG4gICAgICAgIHN0eWxlU2hlZXQudGV4dENvbnRlbnQgPSBjb250ZXRSYXc7XHJcbiAgICAgICAgdmFyIGFwcGVuZFJlc3VsdCA9IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVTaGVldCk7XHJcbiAgICAgICAgaWYgKCFhcHBlbmRSZXN1bHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHRfaWQ7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldCA9IGluc2VydFN0eWxlU2hlZXQ7XHJcbiAgICAvKipcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIGhlIHN0eWxlIHNoZWV0XHJcbiAgICAgKiBAcGFyYW0gc2hlZXRSdWxlcyB0aGUgc2V0IG9mIHJ1bGVzXHJcbiAgICAgKiBAcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb3IgdGhlIGlkXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGVkaXRTdHlsZVNoZWV0KGlkLCBzaGVldFJ1bGVzKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdF9pZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgaWQgPT09IFwidW5kZWZpbmVkXCIgfHwgaWQgPT09IG51bGwgfHwgc2hlZXRSdWxlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9pZiBkb250IGV4aXN0cyB5ZXRcclxuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgICBpZiAoIXN0eWxlU2hlZXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qICByZXN1bHRfaWQgPSBpZDtcclxuICAgICAgICAgLy92YXIgc3R5bGVTaGVldDogSFRNTFN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcclxuICAgICAgICAgc3R5bGVTaGVldC5pZCA9IHJlc3VsdF9pZDtcclxuICAgICAgICAgc3R5bGVTaGVldC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7ICovXHJcbiAgICAgICAgc3R5bGVTaGVldC50ZXh0Q29udGVudCA9IHRvUmF3U3R5bGVTaGVldChzaGVldFJ1bGVzKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0X2lkO1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0ID0gZWRpdFN0eWxlU2hlZXQ7XHJcbiAgICAvKipcclxuICAgICAqIEdpdmVuIGFuIGlkIGluIHN0cmluZyBmb3JtYXQsIGNoZWNrcyBpbnRvIHRoZSBET00gd2hldGhlciB0aGVyZSBpcyBhIHN0eWxlXHJcbiAgICAgKiB3aXRoIHRoZSBnaXZlbiBpZC4gSWYgdHJ1ZSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJlbW92ZSB0aGUgc3R5bGVzaGVldCBhbmQgcmV0dXJuIHRoZSBpZC5cclxuICAgICAqIElmIG5vdCBwcmVzZW50LCB3aWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmdcclxuICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIHN0eWxlc2hlZXQgdG8gcmVtb3ZlIGlmIGV4aXN0c1xyXG4gICAgICogQHJldHVybnMgdGhlIGlkIG9yIGFuIGVtcHR5IHN0cmluZ1xyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByZW1vdmVTdHlsZVNoZWV0KGlkKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdF9pZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKCFpZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGh0bWxPYmplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgaWYgKGh0bWxPYmplY3QpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChodG1sT2JqZWN0KTtcclxuICAgICAgICAgICAgcmVzdWx0X2lkID0gaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHRfaWQ7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MucmVtb3ZlU3R5bGVTaGVldCA9IHJlbW92ZVN0eWxlU2hlZXQ7XHJcbiAgICAvKipcclxuICAgICAqIEdpdmVuIGFuIGlkIGluIHN0cmluZyBmb3JtYXQsIGNoZWNrcyBpbnRvIHRoZSBET00gd2hldGhlciB0aGVyZSBpcyBhIHN0eWxlXHJcbiAgICAgKiB3aXRoIHRoZSBnaXZlbiBpZCBleGlzdHMgYW5kIHJldHVybmEgYm9vbGVhbiByZXN1bHRcclxuICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIHN0eWxlc2hlZXQgdG8gY2hlY2sgaWYgZXhpc3RzXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzdHlsZXNoZWV0IHdhcyBmb3VuZFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBleGlzdFN0eWxlU2hlZXQoaWQpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGlkID09PSBcInVuZGVmaW5lZFwiIHx8IGlkID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGh0bWxPYmplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgaWYgKGh0bWxPYmplY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIER5bmFtaUNTUy5leGlzdFN0eWxlU2hlZXQgPSBleGlzdFN0eWxlU2hlZXQ7XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBzdHlsZXNoZWV0IGdpdmVuIGEgc3R5bGVzaGVldFxyXG4gICAgICogQHBhcmFtIHN0eWxlU2hlZXQgYXN0eWxlc2hlZXRcclxuICAgICAqIEByZXR1cm5zIHRoZSBuZXcgc3R5bGVzaGVldCBvYmplY3RcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gbWFrZVN0eWxlU2hlZXQoc3R5bGVTaGVldCkge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc3R5bGVTaGVldCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBzdHlsZVNoZWV0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3R5bGVTaGVldDtcclxuICAgIH1cclxuICAgIER5bmFtaUNTUy5tYWtlU3R5bGVTaGVldCA9IG1ha2VTdHlsZVNoZWV0O1xyXG59KShEeW5hbWlDU1MgfHwgKER5bmFtaUNTUyA9IHt9KSk7XHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgdXBwZXJDYXNlIG9yIG5vdFxyXG4gKiBAcGFyYW0gY2hhcmFjdGVyIGEgY2hhcmFjdGVyXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgc3RyIGNvbnRhaW5zIGEgc3RyaW5nIGNoYXJhY3RlclxyXG4gKi9cclxuZnVuY3Rpb24gaXNVcHBlcihjaGFyYWN0ZXIpIHtcclxuICAgIGlmICghY2hhcmFjdGVyKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAhL1thLXpdLy50ZXN0KGNoYXJhY3RlcikgJiYgL1tBLVpdLy50ZXN0KGNoYXJhY3Rlcik7XHJcbn1cclxuLyoqXHJcbiAqIENvbnZlcnRzIGEgcnVsZSB3aXRoIHVwcGVyY2FzZSB0byBhIGh5cGhlbi1sb3dlcmNhc2UgdmVyc2lvblxyXG4gKiBAcGFyYW0gcnVsZUxhYmVsIHRoZSBydWxlXHJcbiAqIEByZXR1cm5zIGEgaHlwaGVuLWxvd2VyY2FzZSBsYWJlbFxyXG4gKi9cclxuZnVuY3Rpb24gZnJvbVVwcGVyQ2FzZVRvSHlwaGVuKHJ1bGVMYWJlbCkge1xyXG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcbiAgICB2YXIgY2hhclVwcGVyID0gJyAnO1xyXG4gICAgdmFyIGlzdXBwZXIgPSBmYWxzZTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZUxhYmVsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGN1cnJlbnRDaGFyID0gcnVsZUxhYmVsW2ldO1xyXG4gICAgICAgIGlmIChpc1VwcGVyKGN1cnJlbnRDaGFyKSkge1xyXG4gICAgICAgICAgICBjaGFyVXBwZXIgPSBjdXJyZW50Q2hhcjtcclxuICAgICAgICAgICAgaXN1cHBlciA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vYWRkIGh5cGhlblxyXG4gICAgaWYgKGlzdXBwZXIpIHtcclxuICAgICAgICB2YXIgcGFydHMgPSBydWxlTGFiZWwuc3BsaXQoY2hhclVwcGVyKTtcclxuICAgICAgICByZXN1bHQgPSBcIlwiLmNvbmNhdChwYXJ0c1swXSwgXCItXCIpLmNvbmNhdChjaGFyVXBwZXIudG9Mb3dlckNhc2UoKSkuY29uY2F0KHBhcnRzWzFdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IHJ1bGVMYWJlbDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyBpZiB0aGUgbGFiZWwgY29udGFpbnMgdGhlIFwiOlwiIGNoYXJhY3RlclxyXG4gKiBAcGFyYW0gcnVsZUxhYmVsIHRoZSBydWxlXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHJ1bGUgbGFiZWwgY29ycmVzcG9uZHMgdG8gYSBwc2V1ZG8gY2xhc3NcclxuICovXHJcbmZ1bmN0aW9uIGlzUHNldWRvKHJ1bGVMYWJlbCkge1xyXG4gICAgaWYgKCFydWxlTGFiZWwpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHJ1bGVMYWJlbC5pbmNsdWRlcyhcIjpcIik7XHJcbn1cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBjbGFzc05hbWVcclxuICogQHJldHVybnNcclxuICovXHJcbmZ1bmN0aW9uIG1ha2VSYXdSdWxlTGFiZWwoY2xhc3NOYW1lKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gXCJcIjtcclxuICAgIHZhciBzcGxpdGVkQ2xhc3NOYW1lID0gY2xhc3NOYW1lLnRyaW0oKS5zcGxpdChcIiBcIik7XHJcbiAgICAvL2lzIGNvbXBvc2VkIGNsYXNzbmFtZT9cclxuICAgIGlmIChzcGxpdGVkQ2xhc3NOYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwbGl0ZWRDbGFzc05hbWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0ICs9IFwiLlwiLmNvbmNhdChzcGxpdGVkQ2xhc3NOYW1lW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0ICs9IFwie1xcblwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ICs9IFwiLlwiLmNvbmNhdChjbGFzc05hbWUsIFwie1xcblwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBzaGVldFJ1bGVzXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5mdW5jdGlvbiB0b1Jhd1N0eWxlU2hlZXQoc2hlZXRSdWxlcykge1xyXG4gICAgaWYgKHR5cGVvZiBzaGVldFJ1bGVzID09PSBcInVuZGVmaW5lZFwiIHx8IHNoZWV0UnVsZXMgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICAgIHZhciByYXdTdHlsZVNoZWV0ID0gXCJcIjtcclxuICAgIHZhciBuZXN0ZWRQc2V1ZG9zID0gW107XHJcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNoZWV0UnVsZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB2YXIgY3VycmVudFJ1bGUgPSBzaGVldFJ1bGVzW2pdO1xyXG4gICAgICAgIHZhciBjdXJybmV0UmF3UnVsZSA9IFwiXCI7XHJcbiAgICAgICAgLy8gY3Vycm5ldFJhd1J1bGUgKz0gYC4ke2N1cnJlbnRSdWxlLmNsYXNzTmFtZX17XFxuYDtcclxuICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBtYWtlUmF3UnVsZUxhYmVsKGN1cnJlbnRSdWxlLmNsYXNzTmFtZSk7XHJcbiAgICAgICAgLy9saXN0IG9mIGxhYmVscyBmb3IgcnVsZXNcclxuICAgICAgICB2YXIgcnVsZXNrZXlzID0gT2JqZWN0LmtleXMoY3VycmVudFJ1bGUucnVsZXMpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXNrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjdXJyZW50S2V5ID0gcnVsZXNrZXlzW2ldO1xyXG4gICAgICAgICAgICB2YXIgc3R5bGVMYWJlbCA9IGZyb21VcHBlckNhc2VUb0h5cGhlbihjdXJyZW50S2V5KTtcclxuICAgICAgICAgICAgLy9pZiBhIHBzZXVkbyBjbGFzcyBmb3VuZCwgc2VwYXJhdGUgaXRcclxuICAgICAgICAgICAgaWYgKGlzUHNldWRvKHN0eWxlTGFiZWwpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHNldWRvQ2xhc3NOYW1lID0gY3VycmVudFJ1bGUuY2xhc3NOYW1lICsgc3R5bGVMYWJlbDtcclxuICAgICAgICAgICAgICAgIG5lc3RlZFBzZXVkb3MucHVzaCh7IGNsYXNzTmFtZTogcHNldWRvQ2xhc3NOYW1lLCBydWxlczogY3VycmVudFJ1bGUucnVsZXNbc3R5bGVMYWJlbF0gfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3R5bGVSdWxlID0gY3VycmVudFJ1bGUucnVsZXNbY3VycmVudEtleV07XHJcbiAgICAgICAgICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBcIlxcdFwiLmNvbmNhdChzdHlsZUxhYmVsLCBcIiA6IFwiKS5jb25jYXQoc3R5bGVSdWxlLCBcIjtcXG5cIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCJ9XFxuXCI7XHJcbiAgICAgICAgcmF3U3R5bGVTaGVldCArPSBjdXJybmV0UmF3UnVsZTtcclxuICAgIH1cclxuICAgIC8vbmVzdGVkIHBzZXVkb3NcclxuICAgIGZvciAodmFyIHAgPSAwOyBwIDwgbmVzdGVkUHNldWRvcy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgIHZhciBjdXJybmV0UmF3UnVsZSA9IFwiXCI7XHJcbiAgICAgICAgdmFyIGN1cnJlbnRSdWxlID0gbmVzdGVkUHNldWRvc1twXTtcclxuICAgICAgICB2YXIgcnVsZXNrZXlzID0gT2JqZWN0LmtleXMoY3VycmVudFJ1bGUucnVsZXMpO1xyXG4gICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwiLlwiLmNvbmNhdChjdXJyZW50UnVsZS5jbGFzc05hbWUsIFwie1xcblwiKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVza2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgY3VycmVudEtleSA9IHJ1bGVza2V5c1tpXTtcclxuICAgICAgICAgICAgdmFyIHN0eWxlTGFiZWwgPSBmcm9tVXBwZXJDYXNlVG9IeXBoZW4oY3VycmVudEtleSk7XHJcbiAgICAgICAgICAgIHZhciBzdHlsZVJ1bGUgPSBjdXJyZW50UnVsZS5ydWxlc1tjdXJyZW50S2V5XTtcclxuICAgICAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCJcXHRcIi5jb25jYXQoc3R5bGVMYWJlbCwgXCIgOiBcIikuY29uY2F0KHN0eWxlUnVsZSwgXCI7XFxuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBcIn1cXG5cIjtcclxuICAgICAgICByYXdTdHlsZVNoZWV0ICs9IGN1cnJuZXRSYXdSdWxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJhd1N0eWxlU2hlZXQ7XHJcbn1cblxudmFyIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmNyZWFzZXMgdGhlIGNvdW50IGFuZCByZXRyaWV2ZXMgdGhlIG5leHQgbnVtYmVyXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgc3RhdGljIG51bWJlciBpbiBzdHlsZXNcbiAgICAgKi9cbiAgICBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5nZXROZXh0SWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm5leHRCdXR0b25DbGFzc05hbWVOdW1iZXIrKztcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIklkIGNhbGxlZCBcIiArIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm5leHRCdXR0b25DbGFzc05hbWVOdW1iZXIpO1xuICAgICAgICByZXR1cm4gTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIubmV4dEJ1dHRvbkNsYXNzTmFtZU51bWJlcjtcbiAgICB9O1xuICAgIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm5leHRCdXR0b25DbGFzc05hbWVOdW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGlkQ2xhc3NOYW1lIGlkZW50aWZ5ZXJcbiAgICAgKiBAcGFyYW0gdmFyaWFudCB0aGUgdmFyaWFudCBvZiB0aGUgYnV0dG9uXG4gICAgICogQHBhcmFtIGRpc2FibGVkIGRpc2FibGVkIHByb3BcbiAgICAgKiBAcGFyYW0gY29sb3IgdGhlIHRoZW1lIGNvbG9yXG4gICAgICogQHBhcmFtIHRleHRDb2xvciB0aGUgdGV4dCBjb2xvclxuICAgICAqIEByZXR1cm5zIGEgRHluYW1pY1NoZWV0XG4gICAgICovXG4gICAgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIubWFrZUR5bmFtaWNTdHlsZSA9IGZ1bmN0aW9uIChpZENsYXNzTmFtZSwgdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsIHRleHREZWNvcmF0aW9uKSB7XG4gICAgICAgIC8vKFt7IHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCBuZXh0Q2xhc3NOYW1lIH1dKTtcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSB7XG4gICAgICAgICAgICBpZDogXCJtYXRlcmlhbC1idXR0b24tc3R5bGVzLVwiLmNvbmNhdChpZENsYXNzTmFtZSksXG4gICAgICAgICAgICAvLyBpZDogYGR1aS1idXR0b24tc3R5bGVzYCxcbiAgICAgICAgICAgIHNoZWV0UnVsZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJtYXRlcmlhbC1idXR0b24uXCIuY29uY2F0KHZhcmlhbnQsIFwiLVwiKS5jb25jYXQoaWRDbGFzc05hbWUpLFxuICAgICAgICAgICAgICAgICAgICAvL2NsYXNzTmFtZTogYGR1aS1idXR0b24uJHt2YXJpYW50fWAsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcIm1hdGVyaWFsLWJ1dHRvbi1yb290LlwiLmNvbmNhdCh2YXJpYW50LCBcIi1cIikuY29uY2F0KGlkQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xhc3NOYW1lOiBgZHVpLWJ1dHRvbi1yb290LiR7dmFyaWFudH1gLFxuICAgICAgICAgICAgICAgICAgICBydWxlczoge30sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNoZWV0UnVsZXMgPSBzdHlsZVNoZWV0LnNoZWV0UnVsZXM7XG4gICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodmFyaWFudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjb250YWluZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1swXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBhc3VyZUNvbG9yKGNvbG91ck5hbWVUb0hleCh0ZXh0Q29sb3IpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiB0ZXh0RGVjb3JhdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzFdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCI6aG92ZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZGFya2VyQ29sb3IoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwib3V0bGluZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1swXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC41KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IHRleHREZWNvcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMV0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIjpob3ZlclwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuMDg1KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMF0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IHRleHREZWNvcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMV0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIjpob3ZlclwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuMDg1KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0eWxlU2hlZXQuc2hlZXRSdWxlcyA9IHNoZWV0UnVsZXM7XG4gICAgICAgIHJldHVybiBzdHlsZVNoZWV0O1xuICAgIH07XG4gICAgcmV0dXJuIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyO1xufSgpKTtcblxudmFyIHVzZU1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lID0gZnVuY3Rpb24gKHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCB0ZXh0RGVjb3JhdGlvbiwgY2xhc3NOYW1lLCBpZENsYXNzTmFtZSwgcmVzZXRTdHlsZXMpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwidXNlTWF0ZXJpYWxCdXR0b25DbGFzc05hbWVcIiwgdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsXG4gICAgLy8gdGV4dERlY29yYXRpb24sIGNsYXNzTmFtZSwgaWRDbGFzc05hbWUsIHJlc2V0U3R5bGVzKTtcbiAgICB2YXIgYmFzZUNsYXNzTmFtZSA9IFwibWF0ZXJpYWwtYnV0dG9uLXJvb3QgbWF0ZXJpYWwtYnV0dG9uXCI7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIGlkU3R5bGVzID0gX2FbMF0sIHNldElkU3R5bGVzID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzdHlsZUluamVjdGVkID0gX2JbMF0sIHNldFN0eWxlSW5qZWN0ZWQgPSBfYlsxXTtcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBmaW5hbENsYXNzTmFtZSA9IF9jWzBdLCBzZXRGaW5hbENsYXNzTmFtZSA9IF9jWzFdO1xuICAgIC8vY29uc3QgW25leHRDbGFzc05hbWUsIHNldE5leHRDbGFzc05hbWVdID0gUmVhY3QudXNlU3RhdGU8bnVtYmVyPigwKTtcbiAgICB2YXIgaGFuZGxlSW5zZXJTdHlsZSA9IGZ1bmN0aW9uIChpZENsYXNzTmFtZSwgdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0RGVjb3JhdGlvbiwgdGV4dENvbG9yKSB7XG4gICAgICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGJhc2VDbGFzc05hbWU7XG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIubWFrZUR5bmFtaWNTdHlsZShpZENsYXNzTmFtZSwgdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsIHRleHREZWNvcmF0aW9uKTtcbiAgICAgICAgdmFyIGlkU3R5bGUgPSBcIlwiO1xuICAgICAgICBpZiAoIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJEeW5hbWlDU1MgaW5zZXJ0XCIsIGlkU3R5bGUpO1xuICAgICAgICAgICAgc2V0SWRTdHlsZXMoaWRTdHlsZSk7XG4gICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIilcbiAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9hbHJlYWR5IGEgc3R5bGVzaGVldCBhc3NvY2lhdGVkXG4gICAgICAgICAgICBEeW5hbWlDU1MuZWRpdFN0eWxlU2hlZXQoaWRTdHlsZXMsIHN0eWxlU2hlZXQuc2hlZXRSdWxlcyB8fCBbXSk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRHluYW1pQ1NTIGVkaXRcIiwgaWRTdHlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9sZXQgZmluYWxDbGFzc05hbWUgPSBgbWF0ZXJpYWwtYnV0dG9uLXJvb3QgbWF0ZXJpYWwtYnV0dG9uIGA7XG4gICAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIC8vZmluYWxDbGFzc05hbWUgKz0gYCR7dmFyaWFudH0gJHt2YXJpYW50fS0ke25leHRDbGFzc05hbWV9YDtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIFwiLmNvbmNhdCh2YXJpYW50LCBcIiBcIikuY29uY2F0KHZhcmlhbnQsIFwiLVwiKS5jb25jYXQoaWRDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgZGlzYWJsZWRcIjtcbiAgICAgICAgfVxuICAgICAgICAvL2NsYXNzbmFtZSB0byBvdmVycmlkZSBzdHlsZXMgaW4gc3R5bGVzaGVldFxuICAgICAgICBpZiAoY2xhc3NOYW1lICYmIGNsYXNzTmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBcIi5jb25jYXQoY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvL3NvbWUgdGV4dCBpbiBjbGFzc05hbWVcbiAgICAgICAgaWYgKHRleHREZWNvcmF0aW9uKSB7XG4gICAgICAgICAgICB2YXIgZmluYWxUZXh0RGVjb3JhdGlvbiA9IHRleHREZWNvcmF0aW9uICYmXG4gICAgICAgICAgICAgICAgW1widXBwZXJjYXNlXCIsIFwiY2FwaXRhbGl6ZVwiLCBcImxvd2VyY2FzZVwiLCBcIm5vbmVcIl0uaW5jbHVkZXModGV4dERlY29yYXRpb24gPT09IG51bGwgfHwgdGV4dERlY29yYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRleHREZWNvcmF0aW9uLnRvTG93ZXJDYXNlKCkpID8gdGV4dERlY29yYXRpb24udG9Mb3dlckNhc2UoKSA6IFwidXBwZXJjYXNlXCI7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBcIi5jb25jYXQoZmluYWxUZXh0RGVjb3JhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWUoZmluYWxDbGFzc05hbWUpO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFyZXNldFN0eWxlcylcbiAgICAgICAgICAgIGhhbmRsZUluc2VyU3R5bGUoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dERlY29yYXRpb24sIHRleHRDb2xvcik7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFt2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHREZWNvcmF0aW9uLCB0ZXh0Q29sb3IsIGNsYXNzTmFtZSwgaWRDbGFzc05hbWUsIHJlc2V0U3R5bGVzXSk7XG4gICAgdmFyIHJlbW92ZVN0eWxlID0gZnVuY3Rpb24gKHN0eWxlSW5qZWN0ZWQsIGlkU3R5bGVzKSB7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkR5bmFtaUNTUyByZW1vdmluZ1wiLCBzdHlsZUluamVjdGVkLCBpZFN0eWxlcyk7XG4gICAgICAgIGlmIChzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAvKiBjb25zdCByZXMgPSAgKi8gRHluYW1pQ1NTLnJlbW92ZVN0eWxlU2hlZXQoaWRTdHlsZXMpO1xuICAgICAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiRHluYW1pQ1NTIHJlbW92aW5nIHJlc1wiLCByZXMpO1xuICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZChmYWxzZSk7XG4gICAgICAgICAgICBzZXRJZFN0eWxlcyhcIlwiKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZVN0eWxlKHN0eWxlSW5qZWN0ZWQsIGlkU3R5bGVzKTsgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3N0eWxlSW5qZWN0ZWQsIGlkU3R5bGVzXSk7XG4gICAgcmV0dXJuIGZpbmFsQ2xhc3NOYW1lO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVBvcHBpbnM6MzAwLDQwMCw1MDAsNjAwLDcwMCw5MDApO1xcbi5tYXRlcmlhbC1idXR0b24tcm9vdCB7XFxuICBib3JkZXI6IDA7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIG91dGxpbmU6IDA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxuICBjb2xvcjogd2hpdGU7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24ge1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIDBtcywgYm94LXNoYWRvdyAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIDBtcywgYm9yZGVyIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgMG1zO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIG1pbi13aWR0aDogNjRweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBsaW5lLWhlaWdodDogMS43NTtcXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24udXBwZXJjYXNlIHtcXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24ubG93ZXJjYXNlIHtcXG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24uY2FwaXRhbGl6ZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi5jb250YWluZWQge1xcbiAgcGFkZGluZzogNnB4IDE2cHg7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLm91dGxpbmVkIHtcXG4gIHBhZGRpbmc6IDVweCAxNXB4O1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLnRleHQge1xcbiAgcGFkZGluZzogNXB4IDE1cHg7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24tcm9vdC5jb250YWluZWQ6aG92ZXIge1xcbiAgYm94LXNoYWRvdzogMHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24gc3Bhbi5tYXRlcmlhbC1idXR0b24tbGFiZWwge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBpbmhlcml0O1xcbiAgYWxpZ24taXRlbXM6IGluaGVyaXQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGluaGVyaXQ7XFxufVxcblxcbnNwYW4ucmlwcGxlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XFxuICBhbmltYXRpb246IHJpcHBsZSA1MDBtcyBsaW5lYXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxufVxcblxcbkBrZXlmcmFtZXMgcmlwcGxlIHtcXG4gIHRvIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSg0KTtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuLm1hdGVyaWFsLWJ1dHRvbi1yb290LmRpc2FibGVkIHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI2KTtcXG4gIHBhZGRpbmc6IDZweCAxNnB4O1xcbn1cXG4ubWF0ZXJpYWwtYnV0dG9uLXJvb3QuZGlzYWJsZWQuZGFya21vZGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XFxufVxcblxcbi8qIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XFxuICAubWF0ZXJpYWwtYnV0dG9uIHtcXG4gICAgbWluLXdpZHRoOiAzMHB4O1xcbiAgICBmb250LXNpemU6IDAuNzhyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xcbiAgfVxcbiAgLm1hdGVyaWFsLWJ1dHRvbi5jb250YWluZWQge1xcbiAgICBwYWRkaW5nOiA0cHggMTNweDtcXG4gIH1cXG4gIC5tYXRlcmlhbC1idXR0b24ub3V0bGluZWQge1xcbiAgICBwYWRkaW5nOiA0cHggMTJweDtcXG4gIH1cXG59XFxuICovXCIpO1xuXG52YXIgRmlsZXNVaUNvbnRleHQgPSBSZWFjdF9fZGVmYXVsdC5jcmVhdGVDb250ZXh0KHt9KTtcblxudmFyIE1hdGVyaWFsQnV0dG9uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsIGhyZWYgPSBwcm9wcy5ocmVmLCB0ZXh0RGVjb3JhdGlvbiA9IHByb3BzLnRleHRUcmFuc2Zvcm0sIF9hID0gcHJvcHMudmFyaWFudCwgdmFyaWFudCA9IF9hID09PSB2b2lkIDAgPyBcImNvbnRhaW5lZFwiIDogX2EsIF9iID0gcHJvcHMuY29sb3IsIGNvbG9yID0gX2IgPT09IHZvaWQgMCA/IFwiIzE5NzZkMlwiIDogX2IsIF9jID0gcHJvcHMudGV4dENvbG9yLCB0ZXh0Q29sb3IgPSBfYyA9PT0gdm9pZCAwID8gXCJ3aGl0ZVwiIDogX2MsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgc3R5bGUgPSBwcm9wcy5zdHlsZSwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHJlc2V0U3R5bGVzID0gcHJvcHMucmVzZXRTdHlsZXMsIGRpc2FibGVSaXBwbGUgPSBwcm9wcy5kaXNhYmxlUmlwcGxlLCBkYXJrTW9kZVByb3AgPSBwcm9wcy5kYXJrTW9kZSwgaWQgPSBwcm9wcy5pZCwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZGlzYWJsZWRcIiwgXCJocmVmXCIsIFwidGV4dFRyYW5zZm9ybVwiLCBcInZhcmlhbnRcIiwgXCJjb2xvclwiLCBcInRleHRDb2xvclwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJvbkNsaWNrXCIsIFwicmVzZXRTdHlsZXNcIiwgXCJkaXNhYmxlUmlwcGxlXCIsIFwiZGFya01vZGVcIiwgXCJpZFwiXSk7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIGRhcmtNb2RlQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRmlsZXNVaUNvbnRleHQpLmRhcmtNb2RlO1xuICAgIHZhciBkYXJrTW9kZSA9IGRhcmtNb2RlUHJvcCAhPT0gdW5kZWZpbmVkID8gZGFya01vZGVQcm9wIDogZGFya01vZGVDb250ZXh0O1xuICAgIC8vICBjb25zdCBpZENsYXNzTmFtZSA9IFJlYWN0LnVzZUlkKCk7XG4gICAgdmFyIGlkQ2xhc3NOYW1lID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBpZCB8fCBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCkgKyBcIlwiOyB9LCBbaWRdKTtcbiAgICB2YXIgbWF0ZXJpYWxCdXR0b25DbGFzc05hbWUgPSB1c2VNYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZSh2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgdGV4dERlY29yYXRpb24sIGNsYXNzTmFtZSwgaWRDbGFzc05hbWUucmVwbGFjZShcIjpcIiwgXCJcIikucmVwbGFjZShcIjpcIiwgXCJcIiksIHJlc2V0U3R5bGVzKTtcbiAgICB2YXIgZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlID0gbWF0ZXJpYWxCdXR0b25DbGFzc05hbWUgJiYgZGFya01vZGVcbiAgICAgICAgPyBhZGRDbGFzc05hbWUobWF0ZXJpYWxCdXR0b25DbGFzc05hbWUsIFwiZGFya21vZGVcIilcbiAgICAgICAgOiBtYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZTtcbiAgICAvL2NvbnNvbGUubG9nKFwiZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlXCIsIGZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZSwgZGFya01vZGUpO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvL3JpcHBsZVxuICAgICAgICBpZiAoIWRpc2FibGVSaXBwbGUpXG4gICAgICAgICAgICBjcmVhdGVSaXBwbGVCdXR0b24oZSwgdmFyaWFudCwgY29sb3IpO1xuICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgfVxuICAgIGlmIChmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGUgIT09IHVuZGVmaW5lZCB8fCByZXNldFN0eWxlcylcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoaHJlZiA/IFwiYVwiIDogXCJidXR0b25cIiwgX19hc3NpZ24kMSh7IGNsYXNzTmFtZTogcmVzZXRTdHlsZXMgJiYgY2xhc3NOYW1lID8gY2xhc3NOYW1lIDogZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlLCBcImRhdGEtdGVzdGlkXCI6IGhyZWYgPyBcImR1aS1hbmNob3JcIiA6IFwiZHVpLWJ1dHRvblwiLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgaHJlZjogaHJlZiwgc3R5bGU6IHN0eWxlLCBjaGlsZHJlbjogUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IFwibWF0ZXJpYWwtYnV0dG9uLWxhYmVsXCIgfSwgY2hpbGRyZW4pLCBkaXNhYmxlZDogZGlzYWJsZWQgfSwgcmVzdCkpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIFwibG9hZGluZyBzdHllc1wiKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1idXR0b25zLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGdhcDogMTBweDtcXG59XFxuLmZpbGVzLXVpLWJ1dHRvbnMtY29udGFpbmVyLnRvcCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcXG59XFxuLmZpbGVzLXVpLWJ1dHRvbnMtY29udGFpbmVyLmJvdHRvbSB7XFxuICBwYWRkaW5nLXRvcDogMTBweDtcXG59XCIpO1xuXG52YXIgRHJvcHpvbmVCdXR0b25zID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNsZWFuQnV0dG9uID0gcHJvcHMuY2xlYW5CdXR0b24sIGFib3J0QnV0dG9uID0gcHJvcHMuYWJvcnRCdXR0b24sIGNvbnRhaW5lckNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgY29udGFpbmVyU3R5bGUgPSBwcm9wcy5zdHlsZSwgZGVsZXRlQnV0dG9uID0gcHJvcHMuZGVsZXRlQnV0dG9uLCB1cGxvYWRCdXR0b24gPSBwcm9wcy51cGxvYWRCdXR0b24sIFxuICAgIC8vbG9jYWxpemF0aW9uLFxuICAgIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBvbkNsZWFuID0gcHJvcHMub25DbGVhbiwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25VcGxvYWQgPSBwcm9wcy5vblVwbG9hZCwgdG9wID0gcHJvcHMudG9wLCBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkO1xuICAgIHZhciBhY3Rpb25CdXR0b25zTGlzdCA9IFtcbiAgICAgICAgY2xlYW5CdXR0b25cbiAgICAgICAgICAgID8gX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBjbGVhbkJ1dHRvbiksIHsgbGFiZWw6IFwiQ2xlYW5cIiwgb25DbGljazogY2xlYW5CdXR0b24ub25DbGljayB8fCBvbkNsZWFuIH0pIDogdW5kZWZpbmVkLFxuICAgICAgICBkZWxldGVCdXR0b25cbiAgICAgICAgICAgID8gX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBkZWxldGVCdXR0b24pLCB7IGxhYmVsOiBcIkRlbGV0ZVwiLCBvbkNsaWNrOiBkZWxldGVCdXR0b24ub25DbGljayB8fCBvbkRlbGV0ZSB9KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXBsb2FkQnV0dG9uXG4gICAgICAgICAgICA/IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgdXBsb2FkQnV0dG9uKSwgeyBsYWJlbDogXCJVcGxvYWRcIiwgb25DbGljazogdXBsb2FkQnV0dG9uLm9uQ2xpY2sgfHwgb25VcGxvYWQgfSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGFib3J0QnV0dG9uXG4gICAgICAgICAgICA/IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgYWJvcnRCdXR0b24pLCB7IGxhYmVsOiBcIkFib3J0XCIsIG9uQ2xpY2s6IGFib3J0QnV0dG9uLm9uQ2xpY2sgfHwgb25BYm9ydCB9KSA6IHVuZGVmaW5lZCxcbiAgICBdLmZpbHRlcihmdW5jdGlvbiAoYWIpIHsgcmV0dXJuIGFiICE9PSB1bmRlZmluZWQ7IH0pO1xuICAgIHZhciB0YWlsQ2xhc3NOYW1lID0gXCJcIi5jb25jYXQodG9wID8gXCIgdG9wXCIgOiBcIiBib3R0b21cIik7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYWRkQ2xhc3NOYW1lKFwiZmlsZXMtdWktYnV0dG9ucy1jb250YWluZXJcIiArIHRhaWxDbGFzc05hbWUsIGNvbnRhaW5lckNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IGNvbnRhaW5lclN0eWxlIH0sIGFjdGlvbkJ1dHRvbnNMaXN0Lm1hcChmdW5jdGlvbiAoYWN0aW9uQnV0dG9uUHJvcHMsIGluZGV4KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IGFjdGlvbkJ1dHRvblByb3BzLmNoaWxkcmVuLCBsYWJlbCA9IGFjdGlvbkJ1dHRvblByb3BzLmxhYmVsLCByZXNldFN0eWxlcyA9IGFjdGlvbkJ1dHRvblByb3BzLnJlc2V0U3R5bGVzLCBjbGFzc05hbWUgPSBhY3Rpb25CdXR0b25Qcm9wcy5jbGFzc05hbWUsIHN0eWxlID0gYWN0aW9uQnV0dG9uUHJvcHMuc3R5bGUsIG9uQ2xpY2sgPSBhY3Rpb25CdXR0b25Qcm9wcy5vbkNsaWNrO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWF0ZXJpYWxCdXR0b24sIHsga2V5OiBpbmRleCwgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHN0eWxlOiBzdHlsZSwgcmVzZXRTdHlsZXM6IHJlc2V0U3R5bGVzLCBvbkNsaWNrOiBmdW5jdGlvbiAoZXZ0KSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZXZ0KTsgfSwgZGlzYWJsZWQ6IGRpc2FibGVkIH0sIGNoaWxkcmVuIHx8IGxhYmVsKSk7XG4gICAgfSkpKTtcbn07XG5cbnZhciBEcm9wTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb25Ecm9wID0gcHJvcHMub25Ecm9wLCBvbkRyYWdMZWF2ZSA9IHByb3BzLm9uRHJhZ0xlYXZlLCBjbGFzc05hbWVMYXllciA9IHByb3BzLmNsYXNzTmFtZSwgb3BlbiA9IHByb3BzLm9wZW4sIHN0eWxlID0gcHJvcHMuc3R5bGU7XG4gICAgLy9jb25zb2xlLmxvZyhcIkRyb3BMYXllclwiLCBjbGFzc05hbWVMYXllcik7XG4gICAgLyogIGNvbnN0IG9uRHJhZ0VuZCA9IChldnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgICAvL2NvbnNvbGUubG9nKFwiRHJhZyBlbmRlZFwiKTtcbiAgICAgICBvbkRyYWdMZWF2ZT8uKGV2dCk7XG4gICAgIH07ICovXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVMYXllciwgb25EcmFnTGVhdmU6IG9uRHJhZ0xlYXZlLCBvbkRyb3A6IG9uRHJvcCwgXG4gICAgICAgIC8vb25EcmFnRW5kPXtvbkRyYWdFbmR9XG4gICAgICAgIHN0eWxlOiBzdHlsZSB8fCB7IGRpc3BsYXk6IG9wZW4gPyB1bmRlZmluZWQgOiBcIm5vbmVcIiB9IH0pKTtcbn07XG5cbmZ1bmN0aW9uIHVzZURyb3B6b25lQ2xhc3NOYW1lKGRyb3B6b25lSWQsIGNsYXNzTmFtZSwgXG4vL2lzRHJhZ2dpbmc6IGJvb2xlYW4sXG4vL2hlYWRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlLFxuLy9mb290ZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZSxcbmNvbG9yLCBcbi8vYm9yZGVyUmFkaXVzOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQsXG5iYWNrZ3JvdW5kLCBtaW5IZWlnaHQpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwidXNlRHJvcHpvbmVDbGFzc05hbWVcIiwgY2xhc3NOYW1lLCBpc0RyYWdnaW5nLCBoZWFkZXIsIGZvb3RlciwgY29sb3IsIGJhY2tncm91bmQsIG1pbkhlaWdodCk7XG4gICAgdmFyIGZpbmFsRHJvcHpvbmVJZCA9IChjb2xvciA9PT0gdW5kZWZpbmVkICYmIGJhY2tncm91bmQgPT09IHVuZGVmaW5lZCAmJiBtaW5IZWlnaHQgPT09IHVuZGVmaW5lZCkgPyBcImRlZmF1bHRcIiA6IGRyb3B6b25lSWQucmVwbGFjZShcIjpcIiwgXCJfXCIpLnJlcGxhY2UoXCI6XCIsIFwiX1wiKTtcbiAgICB2YXIgYmFzZUNsYXNzTmFtZSA9IFwiZnVpLWRyb3B6b25lLXJvb3QgZnVpLWRyb3B6b25lLWJvcmRlclwiO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBpZFN0eWxlcyA9IF9hWzBdLCBzZXRJZFN0eWxlcyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc3R5bGVJbmplY3RlZCA9IF9iWzBdLCBzZXRTdHlsZUluamVjdGVkID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWUgPSBfY1swXSwgc2V0RmluYWxDbGFzc05hbWUgPSBfY1sxXTtcbiAgICB2YXIgX2QgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBmaW5hbENsYXNzTmFtZUhlYWRlciA9IF9kWzBdLCBzZXRGaW5hbENsYXNzTmFtZUhlYWRlciA9IF9kWzFdO1xuICAgIHZhciBfZSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lRm9vdGVyID0gX2VbMF0sIHNldEZpbmFsQ2xhc3NOYW1lRm9vdGVyID0gX2VbMV07XG4gICAgdmFyIF9mID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWVEaXNhYmxlZCA9IF9mWzBdLCBzZXRGaW5hbENsYXNzTmFtZURpc2FibGVkID0gX2ZbMV07XG4gICAgLy9jb25zdCBbb2Zmc2V0LCBzZXRPZmZzZXRdID0gUmVhY3QudXNlU3RhdGU8bnVtYmVyPigwKTtcbiAgICB2YXIgbWFrZUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUsIFxuICAgIC8vaXNEcmFnZ2luZzogYm9vbGVhbixcbiAgICAvLyBvZmZzZXQ6IG51bWJlcixcbiAgICBjb2xvciwgXG4gICAgLy9ib3JkZXJSYWRpdXM6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpIHtcbiAgICAgICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYmFzZUNsYXNzTmFtZTtcbiAgICAgICAgLy8gYmV0dGVyIHRvIGNvbWUgYmFjayB0byB0aGUgY3VzdG9tIHN0eWxlc2hlZXQgZm9yIGVhY2ggZHJvcHpvbmUgd2l0aCB0aGUgdW5pcXVlIGlkXG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0gbWFrZUR5bmFtaWNEcm9wem9uZVN0eWxlU2hlZXQoZmluYWxEcm9wem9uZUlkLCBcbiAgICAgICAgLy8gb2Zmc2V0LFxuICAgICAgICAvL2lzRHJhZ2dpbmcsXG4gICAgICAgIGNvbG9yLCBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpO1xuICAgICAgICB2YXIgaWRTdHlsZSA9IFwiXCI7XG4gICAgICAgIGlmICghc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgc2V0SWRTdHlsZXMoaWRTdHlsZSk7XG4gICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIilcbiAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9hbHJlYWR5IGEgc3R5bGVzaGVldCBhc3NvY2lhdGVkXG4gICAgICAgICAgICBEeW5hbWlDU1MuZWRpdFN0eWxlU2hlZXQoaWRTdHlsZXMsIHN0eWxlU2hlZXQuc2hlZXRSdWxlcyB8fCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgZmlsZXMtdWktZHJvcHpvbmUtZXh0cmEtXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCk7XG4gICAgICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lID0gXCJcIi5jb25jYXQoZmluYWxDbGFzc05hbWUsIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgPSBgJHtmaW5hbENsYXNzTmFtZX0gZnVpLWhpZGUtYm9yZGVyYDtcbiAgICAgICAgfSAqL1xuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZShmaW5hbENsYXNzTmFtZSk7XG4gICAgICAgIHNldEZpbmFsQ2xhc3NOYW1lSGVhZGVyKFwiZmlsZXMtdWktaGVhZGVyLWJvcmRlci1yZC1cIi5jb25jYXQoZmluYWxEcm9wem9uZUlkKSk7XG4gICAgICAgIHNldEZpbmFsQ2xhc3NOYW1lRm9vdGVyKFwiZmlsZXMtdWktZm9vdGVyLWJvcmRlci1yZC10b3AtYmctY29sb3ItXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCkpO1xuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZURpc2FibGVkKFwiZmlsZXMtdWktZGlzYWJsZWQtbGF5ZXItY29sb3ItXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCkpO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbWFrZUNsYXNzTmFtZShjbGFzc05hbWUsIFxuICAgICAgICAvL2lzRHJhZ2dpbmcsXG4gICAgICAgIC8vb2Zmc2V0LCBcbiAgICAgICAgY29sb3IsIFxuICAgICAgICAvLyBib3JkZXJSYWRpdXMsIFxuICAgICAgICBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbY2xhc3NOYW1lLFxuICAgICAgICAvL2lzRHJhZ2dpbmcsXG4gICAgICAgIC8vIG9mZnNldCwgXG4gICAgICAgIGNvbG9yLFxuICAgICAgICAvL2JvcmRlclJhZGl1cywgXG4gICAgICAgIGJhY2tncm91bmQsIG1pbkhlaWdodF0pO1xuICAgIHJldHVybiBbZmluYWxDbGFzc05hbWUsIGZpbmFsQ2xhc3NOYW1lSGVhZGVyLCBmaW5hbENsYXNzTmFtZUZvb3RlciwgZmluYWxDbGFzc05hbWVEaXNhYmxlZF07XG59XG52YXIgbWFrZUR5bmFtaWNEcm9wem9uZVN0eWxlU2hlZXQgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgXG4vLyBvZmZzZXQ6IG51bWJlcixcbi8vaXNEcmFnZ2luZzogYm9vbGVhbixcbmNvbG9yLCBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpIHtcbiAgICB2YXIgcm9vdENvbG9yQm9yZGVyU3R5bGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmaWxlcy11aS1kcm9wem9uZS1leHRyYS1cIi5jb25jYXQoZHJvcHpvbmVJZCksXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICBjb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSxcbiAgICAgICAgICAgIGJvcmRlcjogXCIxcHggZGFzaGVkIFwiLmNvbmNhdChjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpKSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogYmFja2dyb3VuZCxcbiAgICAgICAgICAgIG1pbkhlaWdodDogdHlwZW9mIG1pbkhlaWdodCA9PT0gXCJudW1iZXJcIiA/IFwiXCIuY29uY2F0KG1pbkhlaWdodCwgXCJweFwiKSA6IG1pbkhlaWdodCxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHZhciByb290Q29sb3JCb3JkZXJTdHlsZUhpZGVCb3JkZXIgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmaWxlcy11aS1yb290LWJvcmRlci1oaWRlXCIsXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICBib3JkZXJDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgdmFyIGhlYWRlckJvcmRlclN0eWxlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktaGVhZGVyLWJvcmRlci1yZC1cIi5jb25jYXQoZHJvcHpvbmVJZCksXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICBcImJvcmRlci10b3AtbGVmdC1yYWRpdXNcIjogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgXCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1c1wiOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB2YXIgZm9vdGVyQm9yZGVyU3R5bGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmaWxlcy11aS1mb290ZXItYm9yZGVyLXJkLXRvcC1iZy1jb2xvci1cIi5jb25jYXQoZHJvcHpvbmVJZCksXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICBcImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXNcIjogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgXCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1c1wiOiBERUZBVUxUX0JPUkRFUl9SQURJVVMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuMTI5KSxcbiAgICAgICAgICAgIGJvcmRlclRvcDogXCIxcHggZG90dGVkIFwiLmNvbmNhdChjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgdmFyIGRpc2FibGVkTGF5ZXJTdHlsZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWRpc2FibGVkLWxheWVyLWNvbG9yLVwiLmNvbmNhdChkcm9wem9uZUlkKSxcbiAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjM4KSxcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIHNoZWV0UnVsZXMgPSBbXG4gICAgICAgIHJvb3RDb2xvckJvcmRlclN0eWxlLFxuICAgICAgICByb290Q29sb3JCb3JkZXJTdHlsZUhpZGVCb3JkZXIsXG4gICAgICAgIGhlYWRlckJvcmRlclN0eWxlLFxuICAgICAgICBmb290ZXJCb3JkZXJTdHlsZSxcbiAgICAgICAgZGlzYWJsZWRMYXllclN0eWxlXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogXCJmaWxlcy1kcm9wem9uZS11aS1zdHlsZS1pZC1cIiArIGRyb3B6b25lSWQsXG4gICAgICAgIHNoZWV0UnVsZXM6IHNoZWV0UnVsZXNcbiAgICB9O1xufTtcblxuLyoqXG4gKiBFZmZlY3QgZm9yIGtlZXBpbmcgdHJhY2sgb2YgY2hhbmdlc1xuICogdXBkYXRlIGZpbGVzIHdoZW4gdmFsdWUgY2hhbmdlc1xuICogYWxzbyB1cGRhdGVzIHRoZSBudW1iZXIgb2YgdmFsaWQgZmlsZXNcbiAqIFdoZW4gYGlzVXBsb2FkaW5nYCBpcyB0cnVlLCBpdCBvbmx5IHVwZGF0ZXMgd2hlbiB2YWx1ZSBhbmQgYXJyT2ZFeHRGaWxlc1xuICogaGF2ZSBzYW1lIGxlbmdodC4gQWxzbywgb25seSB1cGRhdGVzIHRoZSB1cGxvYWRTdGF0dXMgYXR0cmlidXRlXG4gKiBmcm9tIFwicHJlcGFyaW5nXCIsIHRvIHVuZGVmaW5lZCB3aGVuIG9uQ2FuY2VsKCkgbWV0aG9kIGlzIGNhbGxlZCBpblxuICogRmlsZUl0ZW0gY29tcG9uZW50XG4gKiBAcGFyYW0gZHJvcHpvbmVJZCB0aGUgYXNvY2lhdGVkIGRyb3B6b25lSWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGFycmF5IG9mIEV4dEZpbGVzIGluIGNhc2Ugb2YgbXVsdGlwbGUgZHJvcHpvbmVzXG4gKiBAcGFyYW0gdmFsdWUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxpc3Qgb2YgRmlsZXMgZnJvbSBwcm9wc1xuICogQHBhcmFtIGlzVXBsb2FkaW5nXG4gKiBAcmV0dXJucyB0aGUgbG9jYWwgbGlzdCBvZiBGaWxlc1xuICovXG52YXIgdXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgdmFsdWUsIGlzVXBsb2FkaW5nLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgdmFsaWRhdG9yLCBsb2NhbGl6YXRpb24sIHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcImluY29tbWluZyBleHRmaWxlcyBmaWxldXBkYXRlciB2YWx1ZVwiLCB2YWx1ZS5tYXAoeCA9PiB4LnVwbG9hZFN0YXR1cykpO1xuICAgIC8vY29uc29sZS5sb2coXCJGaWxlTGlzdFVwZGF0ZXJcIiwgZHJvcHpvbmVJZCwgdmFsdWUsIGlzVXBsb2FkaW5nLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgdmFsaWRhdGVGaWxlc0ZsYWcpO1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBmaWxlcyBsb2NhbGx5XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoW10pLCBsb2NhbEZpbGVzID0gX2FbMF0sIHNldExvY2FsRmlsZXMgPSBfYVsxXTtcbiAgICAvLyB0aGUgY3VycmVudCBudW1iZXIgb2YgdmFsaWQgZmlsZXNcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZSgwKSwgbnVtYmVyT2ZWYWxpZEZpbGVzID0gX2JbMF0sIHNldE51bWJlck9mVmFsaWRGaWxlcyA9IF9iWzFdO1xuICAgIC8vRGV0ZWN0IGNoYW5nZXMgaW4gdGhlIGZpbGUgaXRlbSBwcm9wcyB3aGVuIHVwbG9hZCBzdGFydGVkXG4gICAgLy9tb3N0bHkgZm9yIGRldGVjdGluZyBcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJyT2ZFeHRGaWxlcyA9IEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QoZHJvcHpvbmVJZCk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWx1ZSBjaGFuZ2VkXCIsIGlzVXBsb2FkaW5nLCB2YWx1ZS5tYXAoRiA9PiBGLnVwbG9hZFN0YXR1cyksIGRyb3B6b25lSWQpO1xuICAgICAgICAvLyAvL2NvbnNvbGUubG9nKFwidmFsdWUgY2hhbmdlZFwiLCB2YWx1ZS5tYXAoRiA9PiBGLnVwbG9hZFN0YXR1cykpO1xuICAgICAgICBpZiAoIWlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHdoZW4gaXMgdXBsb2FkaW5nXG4gICAgICAgICAgICBpZiAoYXJyT2ZFeHRGaWxlcykge1xuICAgICAgICAgICAgICAgIC8vbGVuZ2h0IG9mIHRoZSBuZXcgYXJyIGNhbiBiZSBlcXVhbCBvciBsb3dlclxuICAgICAgICAgICAgICAgIC8vd2hlbiBsb3dlciwgaXQgbWVhbnMgYSBmaWxlIHdhcyBkZWxldGVkLCBpdCB3aWxsIGJlIHJlbW92ZWQgb25seSBpZiB3YXMgbm90IHVwbG9hZGVkXG4gICAgICAgICAgICAgICAgLy93aGVuIHNhbWUgbGVuZ2h0IGl0IG1lYW5zIHRoYXQgYSBmaWxlIGNvdWxkIGJlXG4gICAgICAgICAgICAgICAgLy9ubyBtYXRoZXIgdGhlIHNpemUsIGl0IHdpbGwgc2VhcmNoIGZvciB0aGUgbWlzc2luZyBhbmQgdGhlIHN0YXR1cyB0aGF0IGNoYW5nZWRcbiAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzLmZvckVhY2goZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAvL2lmIHRoZSBjdXJyZW50IEV4dCBmaWxlIGlzIG5vdCBwcmVzZW50IGFueW1vcmVcbiAgICAgICAgICAgICAgICAgICAgLy9hZGQgZGVsZXRlZCBmbGFnXG4gICAgICAgICAgICAgICAgICAgIHZhciBleHRGaWxlSW5kZXggPSB2YWx1ZS5maW5kSW5kZXgoZnVuY3Rpb24gKGV4dEZpbGUpIHsgcmV0dXJuIGV4dEZpbGUuaWQgPT09IGV4dEZpbGVJbnN0YW5jZS5pZDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHRGaWxlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UuZXh0cmFEYXRhID0geyBkZWxldGVkOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZXh0RmlsZVVwZGF0ZXIgbm90IGZvdW5kXCIsIGV4dEZpbGVJbnN0YW5jZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyckV4dEZpbGVPYmogPSB2YWx1ZVtleHRGaWxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TmV4dFVwbG9hZFN0YXR1cyhleHRGaWxlSW5zdGFuY2UsIGN1cnJFeHRGaWxlT2JqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8qaWYgKGFyck9mRXh0RmlsZXMubGVuZ3RoICE9PSB2YWx1ZS5sZW5ndGggfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJPZkV4dEZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZVtpXS51cGxvYWRTdGF0dXMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoYXJyT2ZFeHRGaWxlc1tpXS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyIG9uQ2FuY2VsIGlcIiwgaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzW2ldLnVwbG9hZFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbZHJvcHpvbmVJZCwgdmFsdWUsXG4gICAgICAgIC8vIGlzVXBsb2FkaW5nXG4gICAgXSk7XG4gICAgLy9EZXRlY3QgY2hhbmdlcyBpbiB2YWxpZGF0aW9uIHByb3BzIGZvciByZS12YWxpZGF0aW5nIGZpbGVzXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhsb2NhbEZpbGVzLm1hcChmdW5jdGlvbiAoRikgeyByZXR1cm4gX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBGKSwgeyB2YWxpZDogdW5kZWZpbmVkIH0pOyB9KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxvY2FsVmFsaWRhdG9yID0geyBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsIGFjY2VwdDogYWNjZXB0IH07XG4gICAgICAgIHZhciB2YWxpZGF0ZWRFeHRGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QobG9jYWxGaWxlcywgbWF4RmlsZXMgPyBtYXhGaWxlcyAtIG51bWJlck9mVmFsaWRGaWxlcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgc2V0TG9jYWxGaWxlcyh2YWxpZGF0ZWRFeHRGaWxlTGlzdCk7XG4gICAgICAgIC8vbWlzc2luZyBkZXBlbmRlbmNpZSBsb2NhbEZpbGVzIHdhcyBub3QgYWRkZWQgYnkgcHVycG9zZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbdmFsaWRhdGVGaWxlc0ZsYWcsIG1heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCBsb2NhbGl6YXRpb25dKTtcbiAgICAvLyB0aGUgY3VycmVudCBudW1iZXIgb2YgdmFsaWQgZmlsZXNcbiAgICAvLyB1cGRhdGUgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICBzZXROdW1iZXJPZlZhbGlkRmlsZXMobG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHgudmFsaWQ7IH0pLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXROdW1iZXJPZlZhbGlkRmlsZXMobG9jYWxGaWxlcy5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgfSwgW2xvY2FsRmlsZXMsIHZhbGlkYXRlRmlsZXNGbGFnXSk7XG4gICAgcmV0dXJuIFtsb2NhbEZpbGVzLCBudW1iZXJPZlZhbGlkRmlsZXMsIHNldExvY2FsRmlsZXNdO1xufTtcblxudmFyIHVzZUZha2VQcm9ncmVzcyA9IGZ1bmN0aW9uICh0aW1lKSB7XG4gICAgaWYgKHRpbWUgPT09IHZvaWQgMCkgeyB0aW1lID0gMTUwMDsgfVxuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKDI4KSwgcHJvZ3Jlc3MgPSBfYVswXSwgc2V0UHJvZ3Jlc3MgPSBfYVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdXBkYXRlUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoY3VyclByb2dyZXNzKSB7XG4gICAgICAgICAgICBpZiAoY3VyclByb2dyZXNzID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSBnZXRSYW5kb21JbnQoNSwgMjQpO1xuICAgICAgICAgICAgdmFyIG5ld1Byb2dyZXNzID0gY3VyclByb2dyZXNzICsgb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKG5ld1Byb2dyZXNzID4gMTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdQcm9ncmVzcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIF9teUludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0UHJvZ3Jlc3MoZnVuY3Rpb24gKF9wcm9ncmVzcykgeyByZXR1cm4gdXBkYXRlUHJvZ3Jlc3MoX3Byb2dyZXNzKTsgfSk7XG4gICAgICAgIH0sIHRpbWUpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidXNlRmFrZVByb2dyZXNzIFNFVCBpbnRlcnZhbFwiLCBfbXlJbnRlcnZhbCk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXNlRmFrZVByb2dyZXNzIENMRUFSIGludGVydmFsXCIsIF9teUludGVydmFsKTtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoX215SW50ZXJ2YWwpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIHByb2dyZXNzO1xufTtcblxudmFyIG1ha2VEcm9wTGF5ZXJEeW5hbWljU3R5bGUgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgY29sb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogXCJmaWxlcy11aS1kcm9wLWxheWVyLXN0eWxlLWlkLVwiICsgZHJvcHpvbmVJZCxcbiAgICAgICAgc2hlZXRSdWxlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJkcm9wem9uZS1sYXllci1cIi5jb25jYXQoZHJvcHpvbmVJZCksXG4gICAgICAgICAgICAgICAgcnVsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuNCksXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIwJVwiLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IDIwLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IFwiMHB4IGRhc2hlZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZHJvcHpvbmUtbGF5ZXItZHJhZ1wiLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IFwiMnB4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgIH07XG59O1xuXG4vL2NvbnN0IEJBU0VfRFJPUF9MQVlFUl9TVFlMRTogc3RyaW5nID0gXCJmaWxlcy11aS1zdHlsZXMtZHJvcC1sYXllclwiOyBcbi8qKlxuICpcbiAqIEBwYXJhbSBjb2xvclxuICogQHBhcmFtIGlzRHJhZ2dpbmdcbiAqIEBwYXJhbSBtYWtlQ2xhc3NOYW1lIHdoZXRoZXIgdG8gbWFrZSB0aGUgY2xhc3NuYW1lIG9yIG5vdFxuICogQHJldHVybnMgdGhlIGNsYXNzbmFtZSBmb3IgbGF5ZXJcbiAqL1xudmFyIHVzZURyb3BMYXllckNsYXNzTmFtZSA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBjb2xvciwgXG4vL2lzRHJhZ2dpbmc/OiBib29sZWFuLFxubWFrZUNsYXNzTmFtZSkge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBpZFN0eWxlcyA9IF9hWzBdLCBzZXRJZFN0eWxlcyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc3R5bGVJbmplY3RlZCA9IF9iWzBdLCBzZXRTdHlsZUluamVjdGVkID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIGNsYXNzTmFtZUNyZWF0ZWQgPSBfY1swXSwgc2V0Q2xhc3NOYW1lQ3JlYXRlZCA9IF9jWzFdO1xuICAgIHZhciBmaW5hbERyb3B6b25lSWQgPSAoY29sb3IgPT09IHVuZGVmaW5lZCkgPyBcImRlZmF1bHRcIiA6IGRyb3B6b25lSWQucmVwbGFjZShcIjpcIiwgXCJfXCIpLnJlcGxhY2UoXCI6XCIsIFwiX1wiKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJ1c2VEcm9wTGF5ZXJDbGFzc05hbWVcIiwgY29sb3IsIGlzRHJhZ2dpbmcsIG1ha2VDbGFzc05hbWUpO1xuICAgICAgICB2YXIgaGFuZGxlSW5zZXJTdHlsZSA9IGZ1bmN0aW9uIChjb2xvcikge1xuICAgICAgICAgICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gXCJcIjtcbiAgICAgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gbWFrZURyb3BMYXllckR5bmFtaWNTdHlsZShmaW5hbERyb3B6b25lSWQsIGNvbG9yXG4gICAgICAgICAgICAvL2lzRHJhZ2dpbmdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB2YXIgaWRTdHlsZSA9IFwiXCI7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXNlRHJvcExheWVyQ2xhc3NOYW1lIGhhbmRsZUluc2VyU3R5bGVcIiwgY29sb3IsIHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgaWYgKGZpbmFsRHJvcHpvbmVJZCA9PT0gXCJkZWZhdWx0XCIgJiYgIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAvL2NoZWNrIGlmIGFscmVhZHkgaW5zZXJ0ZWRcbiAgICAgICAgICAgICAgICBpZiAoRHluYW1pQ1NTLmV4aXN0U3R5bGVTaGVldChcImZpbGVzLXVpLWRyb3AtbGF5ZXItc3R5bGUtaWQtXCIgKyBmaW5hbERyb3B6b25lSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldElkU3R5bGVzKFwiZmlsZXMtdWktZHJvcC1sYXllci1zdHlsZS1pZC1cIiArIGZpbmFsRHJvcHpvbmVJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElkU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgICAgIHNldElkU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgICAgIGlmIChpZFN0eWxlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy9hbHJlYWR5IGEgc3R5bGVzaGVldCBhc3NvY2lhdGVkXG4gICAgICAgICAgICAgICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0KGlkU3R5bGVzLCBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgfHwgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCJkcm9wem9uZS1sYXllci1cIi5jb25jYXQoZmluYWxEcm9wem9uZUlkKTtcbiAgICAgICAgICAgIC8qICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBgIGRyb3B6b25lLWxheWVyLWRyYWdgO1xuICAgICAgICAgICAgIH0gKi9cbiAgICAgICAgICAgIHNldENsYXNzTmFtZUNyZWF0ZWQoZmluYWxDbGFzc05hbWUpO1xuICAgICAgICB9O1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCI9PlwiLCBpc0RyYWdnaW5nKTtcbiAgICAgICAgaWYgKG1ha2VDbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGhhbmRsZUluc2VyU3R5bGUoY29sb3IpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtjb2xvcixcbiAgICAgICAgLy8gaXNEcmFnZ2luZyxcbiAgICAgICAgbWFrZUNsYXNzTmFtZV0pO1xuICAgIHJldHVybiBjbGFzc05hbWVDcmVhdGVkO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplciBob29rIGZvciBGaWxlSXRlbU5lb1xuICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgT2JqZWN0XG4gKiBAcGFyYW0gdmFsaWQgV2hldGhlciB0aGUgZmlsZSBpcyB2YWxpZCwgbm90IHZhbGlkIG9yIG5vdCBzZXRcbiAqIEBwYXJhbSBwcmV2aWV3IFdoZXRoZXIgdG8gc2hvdyBhIHByZXZpZXcgb24gRmlsZUl0ZW1cbiAqIEBwYXJhbSBpbWFnZVVybCBUaGUgaW1hZ2UgdXJsXG4gKiBAcGFyYW0geGhyIHRoZSB4aHIgb2JqZWN0XG4gKiBAcGFyYW0gcHJvZ3Jlc3MgdGhlIGN1cnJlbnQgcHJvZ3Jlc3MgZ2l2ZW4gYnkgcHJvcHNcbiAqIEByZXR1cm5zIGFuIGFycmF5IHRodGEgY29udGFpbnMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIFtpc0ltYWdlLCBpc1ZpZGVvLCB1cmwsIGltYWdlU291cmNlLCBsb2NhbFByb2dyZXNzXVxuICovXG52YXIgdXNlRmlsZU1vc2FpY0luaXRpYWxpemVyID0gZnVuY3Rpb24gKGZpbGUsIG5hbWUsIHR5cGUsIHZhbGlkLCBwcmV2aWV3LCBpbWFnZVVybCwgdmlkZW9VcmwsIGN1c3RvbUljb25zLCB4aHIpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzSW1hZ2UgPSBfYVswXSwgc2V0SXNJbWFnZSA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNWaWRlbyA9IF9iWzBdLCBzZXRJc1ZpZGVvID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIHVybCA9IF9jWzBdLCBzZXRVcmwgPSBfY1sxXTtcbiAgICB2YXIgX2QgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBpbWFnZVNvdXJjZSA9IF9kWzBdLCBzZXRJbWFnZVNvdXJjZSA9IF9kWzFdO1xuICAgIHZhciBfZSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIHZpZGVvU291cmNlID0gX2VbMF0sIHNldFZpZGVvU291cmNlID0gX2VbMV07XG4gICAgdmFyIF9mID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc1JlYWR5ID0gX2ZbMF0sIHNldElzUmVhZHkgPSBfZlsxXTtcbiAgICB2YXIgaW5pdCA9IGZ1bmN0aW9uIChmaWxlLCBuYW1lLCB0eXBlLCB2YWxpZCwgcHJldmlldywgaW1hZ2VVcmwsIHZpZGVvVXJsLCBjdXN0b21JY29ucywgeGhyLCBwcm9ncmVzcykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdXJsLCByZXNwb25zZSwgcmVzcG9uc2VfMTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImluaXRcIiwgZmlsZSwgbmFtZSwgdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsZSAmJiAoIW5hbWUgJiYgIXR5cGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB1cmwgPSAoZmlsZSA/IGdldFVSTEZpbGVJY28oZmlsZSwgY3VzdG9tSWNvbnMpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFVSTEZpbGVJY29Gcm9tTmFtZUFuZFR5cGUobmFtZSwgdHlwZSwgY3VzdG9tSWNvbnMpKS51cmw7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJpbml0XCIsIHVybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFVybCh1cmwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShpbWFnZVVybCAmJiB2aWRlb1VybCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDFdO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1ZpZGVvKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZVNvdXJjZShpbWFnZVVybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlKHZpZGVvVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNSZWFkeSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbWFnZVVybCkgcmV0dXJuIFszIC8qYnJlYWsqLywgMl07XG4gICAgICAgICAgICAgICAgICAgIHNldElzSW1hZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEltYWdlU291cmNlKGltYWdlVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNSZWFkeSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aWRlb1VybCkgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgIHNldElzVmlkZW8odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpZGVvU291cmNlKHZpZGVvVXJsKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNSZWFkeSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGdldEhlYWRlckFuZFRhaWwoZmlsZSwgdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzSW1hZ2UocmVzcG9uc2VbMF0gPT09IFwiaW1hZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChbXCJtcDRcIiwgXCJvZ2dcIiwgXCJ3ZWJtXCJdLmluY2x1ZGVzKHJlc3BvbnNlWzFdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVmlkZW8ocmVzcG9uc2VbMF0gPT09IFwidmlkZW9cIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHByZXZpZXcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWxpZCB8fCB0eXBlb2YgdmFsaWQgPT09IFwidW5kZWZpbmVkXCIgfHwgdmFsaWQgPT09IG51bGwpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVswXSA9PT0gXCJpbWFnZVwiKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlXzEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsZSkgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHJlYWRBc0RhdGFVUkwoZmlsZSldO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEltYWdlU291cmNlKHJlc3BvbnNlXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gNTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgLy8vLy8vICAgQ0xFQU4gVVBcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpbml0KGZpbGUsIG5hbWUsIHR5cGUsIHZhbGlkLCBwcmV2aWV3IHx8IGZhbHNlLCBpbWFnZVVybCwgdmlkZW9VcmwsIGN1c3RvbUljb25zKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldEltYWdlU291cmNlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBzZXRJc0ltYWdlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldElzVmlkZW8oZmFsc2UpO1xuICAgICAgICAgICAgc2V0SXNSZWFkeShmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtmaWxlLCBuYW1lLCB0eXBlLCB2YWxpZCwgcHJldmlldywgaW1hZ2VVcmwsIHZpZGVvVXJsLCBjdXN0b21JY29uc10pO1xuICAgIHJldHVybiBbaXNSZWFkeSwgaXNJbWFnZSwgaXNWaWRlbywgdXJsLCBpbWFnZVNvdXJjZSwgdmlkZW9Tb3VyY2VdO1xufTtcbi8qIGV4cG9ydCBjb25zdCBpZGVudGlmeUZpbGVTb3VyY2UgPSAoZmlsZTogRmlsZSB8IHVuZGVmaW5lZCwgbmFtZTogc3RyaW5nLCBmaWxlVHlwZTogc3RyaW5nKSA9PiB7XG4gICAgaWYoIWZpbGUpe1xuXG4gICAgfVxufSAqL1xudmFyIGdldEhlYWRlckFuZFRhaWwgPSBmdW5jdGlvbiAoZmlsZSwgdHlwZSkge1xuICAgIGlmIChmaWxlKSB7XG4gICAgICAgIGlmIChmaWxlLnR5cGUpIHtcbiAgICAgICAgICAgIHZhciBzcGxpdHRlZFR5cGUgPSBmaWxlLnR5cGUuc3BsaXQoXCIvXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFtzcGxpdHRlZFR5cGVbMF0sIHNwbGl0dGVkVHlwZVsxXV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW1wib2N0ZXRcIiwgXCJvY3RldFwiXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHNwbGl0dGVkVHlwZSA9IHR5cGUgPT09IG51bGwgfHwgdHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHlwZS5zcGxpdChcIi9cIik7XG4gICAgICAgIGlmIChzcGxpdHRlZFR5cGUgJiYgc3BsaXR0ZWRUeXBlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBbc3BsaXR0ZWRUeXBlWzBdLCBzcGxpdHRlZFR5cGVbMV1dO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtcIm9jdGV0XCIsIFwib2N0ZXRcIl07XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG52YXIgdXNlSXNVcGxvYWRpbmcgPSBmdW5jdGlvbiAodXBsb2FkU3RhdHVzKSB7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc1VwbG9hZGluZyA9IF9hWzBdLCBzZXRJc1VwbG9hZGluZyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKHVwbG9hZFN0YXR1cyksIGxhc3RVcGxvYWRTdGF0dXMgPSBfYlswXSwgc2V0TGFzdFVwbG9hZFN0YXR1cyA9IF9iWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldExhc3RVcGxvYWRTdGF0dXModXBsb2FkU3RhdHVzKTtcbiAgICAgICAgaWYgKFtcInVwbG9hZGluZ1wiLCBcInByZXBhcmluZ1wiXS5pbmNsdWRlcyhsYXN0VXBsb2FkU3RhdHVzIHx8IFwiXCIpICYmXG4gICAgICAgICAgICBbXCJzdWNjZXNzXCIsIFwiZXJyb3JcIiwgXCJhYm9ydGVkXCJdLmluY2x1ZGVzKHVwbG9hZFN0YXR1cyB8fCBcIlwiKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSwgMzUwMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL2Jhc2UgY29tcGFyaXNvblxuICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcodXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiIHx8IHVwbG9hZFN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3VwbG9hZFN0YXR1c10pO1xuICAgIHJldHVybiBpc1VwbG9hZGluZztcbn07XG5cbi8qKlxuICogQHBhcmFtIHByb2dyZXNzIHRoZSBwcm9ncmVzcyBnaXZlbiBhcyBhIHByb3AgdG8gdGhlIGNvbXBvbmVudFxuICogQHBhcmFtIHhociB0aGUgWE1MSHR0cFJlcXVlc3Qgb2JqZWN0IGZvciBBSkFYIG9wZXJhdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBwcm9ncmVzcyB0byBiZSBzaG93biBpbiB0aGUgY29tcG9uZW50XG4gKi9cbnZhciB1c2VQcm9ncmVzcyA9IGZ1bmN0aW9uIChwcm9ncmVzcywgeGhyKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcImdldFByb2dyZXNzXCIsIHByb2dyZXNzLCB4aHIpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGxvY2FsUHJvZ3Jlc3MgPSBfYVswXSwgc2V0TG9jYWxQcm9ncmVzcyA9IF9hWzFdO1xuICAgIGlmIChwcm9ncmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChsb2NhbFByb2dyZXNzICE9PSBwcm9ncmVzcykge1xuICAgICAgICAgICAgc2V0TG9jYWxQcm9ncmVzcyhwcm9ncmVzcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmICh4aHIgIT09IHVuZGVmaW5lZCAmJiB4aHIgIT09IG51bGwgJiYgeGhyLnVwbG9hZC5vbnByb2dyZXNzID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyB4aHIgd2FzIGdpdmVuIGJ1dCBpdCB3YXMgbm90IGluaXRpYWxpemVkIHRoZSBgb25wcm9ncmVzc2AgZXZlbnRcbiAgICAgICAgICAgIHhoci51cGxvYWQub25wcm9ncmVzcyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJnZXRQcm9ncmVzcyBwcm9ncmVzc1wiLCBwcm9ncmVzcywgKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqIDEwMCk7XG4gICAgICAgICAgICAgICAgc2V0TG9jYWxQcm9ncmVzcygoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpICogMTAwKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvL2luaXRpYWwgcHJvZ3Jlc3MgdmFsdWUgc2V0IHRvIDBcbiAgICAgICAgICAgIHNldExvY2FsUHJvZ3Jlc3MoMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9yZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxQcm9ncmVzcztcbn07XG5cbi8vaW1wb3J0IHsgcHJpbnRfbWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi91dGlsc1wiO1xuLyoqXG4gKlxuICogRGVtb3M6XG4gKlxuICogLSBbRHJvcHpvbmVdKGh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9jb21wb25lbnRzL2Ryb3B6b25lKVxuICpcbiAqIEFQSTpcbiAqXG4gKiAtIFtEcm9wem9uZSBBUEldKGh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9hcGkvZHJvcHpvbmUvKVxuICovXG52YXIgRHJvcHpvbmUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2EgPSBtZXJnZVByb3BzKHByb3BzLCBkZWZhdWx0RHJvem9uZVByb3BzKSwgXG4gICAgLy9iYXNpY1xuICAgIG9uQ2hhbmdlID0gX2Eub25DaGFuZ2UsIF9iID0gX2EudmFsdWUsIHZhbHVlID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2IsIFxuICAgIC8vdmFsaWRhdGlvblxuICAgIGFjY2VwdCA9IF9hLmFjY2VwdCwgbWF4RmlsZVNpemUgPSBfYS5tYXhGaWxlU2l6ZSwgbWF4RmlsZXMgPSBfYS5tYXhGaWxlcywgdmFsaWRhdG9yID0gX2EudmFsaWRhdG9yLCBjbGVhbkZpbGVzID0gX2EuY2xlYW5GaWxlcywgb25DbGVhbiA9IF9hLm9uQ2xlYW4sIGF1dG9DbGVhbiA9IF9hLmF1dG9DbGVhbiwgXG4gICAgLy91cGxvYWRpbmdcbiAgICB1cGxvYWRDb25maWcgPSBfYS51cGxvYWRDb25maWcsIGZha2VVcGxvYWQgPSBfYS5mYWtlVXBsb2FkLCBvblVwbG9hZFN0YXJ0ID0gX2Eub25VcGxvYWRTdGFydCwgb25VcGxvYWRGaW5pc2ggPSBfYS5vblVwbG9hZEZpbmlzaCwgXG4gICAgLy9zdHlsaW5nXG4gICAgYmFja2dyb3VuZCA9IF9hLmJhY2tncm91bmQsIGNvbG9yID0gX2EuY29sb3IsIG1pbkhlaWdodCA9IF9hLm1pbkhlaWdodCwgc3R5bGUgPSBfYS5zdHlsZSwgXG4gICAgLy90ZXh0Q29sb3IsXG4gICAgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLCBcbiAgICAvL2xhYmVsXG4gICAgbGFiZWwgPSBfYS5sYWJlbCwgXG4gICAgLy9sb2NhbGl6YXRpb25cbiAgICBsb2NQcm9wcyA9IF9hLmxvY2FsaXphdGlvbiwgXG4gICAgLy9yaXBwbGVcbiAgICBkaXNhYmxlUmlwcGxlID0gX2EuZGlzYWJsZVJpcHBsZSwgXG4gICAgLy9kcmFnIG9wZXJhdGlvbnNcbiAgICBvbkRyYWdFbnRlciA9IF9hLm9uRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZSA9IF9hLm9uRHJhZ0xlYXZlLCBcbiAgICAvL2FjdGlvbiBidXRvdG5zXG4gICAgYWN0aW9uQnV0dG9ucyA9IF9hLmFjdGlvbkJ1dHRvbnMsIFxuICAgIC8vZHJvcCBsYXllclxuICAgIGRyb3BPbkxheWVyID0gX2EuZHJvcE9uTGF5ZXIsIFxuICAgIC8vaGVhZGVyIGFuZCBmb290ZXJcbiAgICBoZWFkZXIgPSBfYS5oZWFkZXIsIGZvb3RlciA9IF9hLmZvb3RlciwgX2MgPSBfYS5oZWFkZXJDb25maWcsIGhlYWRlckNvbmZpZyA9IF9jID09PSB2b2lkIDAgPyB7fSA6IF9jLCBfZCA9IF9hLmZvb3RlckNvbmZpZywgZm9vdGVyQ29uZmlnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2QsIFxuICAgIC8vZGlzYWJsZWRcbiAgICBkaXNhYmxlZCA9IF9hLmRpc2FibGVkLCBcbiAgICAvL29wZW4gZmlsZSBkaWFsb2dcbiAgICBjbGlja2FibGUgPSBfYS5jbGlja2FibGUsIFxuICAgIC8vYWRkIG9yIHJlcGxhY2VcbiAgICBiZWhhdmlvdXIgPSBfYS5iZWhhdmlvdXIsIFxuICAgIC8vY29udGVudFxuICAgIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIFxuICAgIC8vYWR2YW5jZWRDb25maWcsXG4gICAgcmVzdCA9IF9fcmVzdChfYSwgW1wib25DaGFuZ2VcIiwgXCJ2YWx1ZVwiLCBcImFjY2VwdFwiLCBcIm1heEZpbGVTaXplXCIsIFwibWF4RmlsZXNcIiwgXCJ2YWxpZGF0b3JcIiwgXCJjbGVhbkZpbGVzXCIsIFwib25DbGVhblwiLCBcImF1dG9DbGVhblwiLCBcInVwbG9hZENvbmZpZ1wiLCBcImZha2VVcGxvYWRcIiwgXCJvblVwbG9hZFN0YXJ0XCIsIFwib25VcGxvYWRGaW5pc2hcIiwgXCJiYWNrZ3JvdW5kXCIsIFwiY29sb3JcIiwgXCJtaW5IZWlnaHRcIiwgXCJzdHlsZVwiLCBcImNsYXNzTmFtZVwiLCBcImxhYmVsXCIsIFwibG9jYWxpemF0aW9uXCIsIFwiZGlzYWJsZVJpcHBsZVwiLCBcIm9uRHJhZ0VudGVyXCIsIFwib25EcmFnTGVhdmVcIiwgXCJhY3Rpb25CdXR0b25zXCIsIFwiZHJvcE9uTGF5ZXJcIiwgXCJoZWFkZXJcIiwgXCJmb290ZXJcIiwgXCJoZWFkZXJDb25maWdcIiwgXCJmb290ZXJDb25maWdcIiwgXCJkaXNhYmxlZFwiLCBcImNsaWNrYWJsZVwiLCBcImJlaGF2aW91clwiLCBcImNoaWxkcmVuXCJdKTtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgXG4gICAgLy8gZGFya01vZGU6IGRhcmtNb2RlQ29udGV4dCxcbiAgICAvL2ljb25zLFxuICAgIGxvY0NvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KS5sb2NhbGl6YXRpb247XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IGxvY1Byb3BzICE9PSB1bmRlZmluZWQgPyBsb2NQcm9wcyA6IGxvY0NvbnRleHQ7XG4gICAgdmFyIF9lID0gdXBsb2FkQ29uZmlnLCB1cmwgPSBfZS51cmwsIG1ldGhvZCA9IF9lLm1ldGhvZCwgaGVhZGVycyA9IF9lLmhlYWRlcnMsIHVwbG9hZExhYmVsID0gX2UudXBsb2FkTGFiZWwsIF9mID0gX2UuY2xlYW5PblVwbG9hZCwgY2xlYW5PblVwbG9hZCA9IF9mID09PSB2b2lkIDAgPyB0cnVlIDogX2YsIF9nID0gX2UucHJlcGFyaW5nVGltZSwgcHJlcGFyaW5nVGltZSA9IF9nID09PSB2b2lkIDAgPyAxNTAwIDogX2csIF9oID0gX2UuYXV0b1VwbG9hZCwgYXV0b1VwbG9hZCA9IF9oID09PSB2b2lkIDAgPyBmYWxzZSA6IF9oO1xuICAgIHZhciBfaiA9IGFjdGlvbkJ1dHRvbnMsIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9IF9qLnBvc2l0aW9uLCBhYm9ydEJ1dHRvbiA9IF9qLmFib3J0QnV0dG9uLCBkZWxldGVCdXR0b24gPSBfai5kZWxldGVCdXR0b24sIHVwbG9hZEJ1dHRvbiA9IF9qLnVwbG9hZEJ1dHRvbiwgY2xlYW5CdXR0b24gPSBfai5jbGVhbkJ1dHRvbiwgY29udGFpbmVyU3R5bGUgPSBfai5zdHlsZSwgY29udGFpbmVyQ2xhc3NOYW1lID0gX2ouY2xhc3NOYW1lO1xuICAgIHZhciBzdHlsZUJvcmRlclJhZGl1cyA9IHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZS5ib3JkZXJSYWRpdXM7XG4gICAgdmFyIF9rID0gaGVhZGVyQ29uZmlnLmNsZWFuRmlsZXMsIGNsZWFuRmlsZXNIZWFkZXIgPSBfayA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9rLCBfbCA9IGhlYWRlckNvbmZpZy5kZWxldGVGaWxlcywgZGVsZXRlRmlsZXNIZWFkZXIgPSBfbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9sLCBfbSA9IGhlYWRlckNvbmZpZy5tYXhGaWxlU2l6ZSwgbWF4RmlsZVNpemVIZWFkZXIgPSBfbSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9tLCBfbyA9IGhlYWRlckNvbmZpZy51cGxvYWRGaWxlcywgdXBsb2FkRmlsZXNIZWFkZXIgPSBfbyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vLCBfcCA9IGhlYWRlckNvbmZpZy51cGxvYWRpbmdJY29uLCB1cGxvYWRpbmdJY29uSGVkYWVyID0gX3AgPT09IHZvaWQgMCA/IHRydWUgOiBfcCwgX3EgPSBoZWFkZXJDb25maWcudmFsaWRGaWxlc0NvdW50LCB2YWxpZEZpbGVzQ291bnRIZWFkZXIgPSBfcSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9xLCBjdXN0b21IZWFkZXIgPSBoZWFkZXJDb25maWcuY3VzdG9tSGVhZGVyLCBjbGFzc05hbWVIZWFkZXIgPSBoZWFkZXJDb25maWcuY2xhc3NOYW1lLCBfciA9IGhlYWRlckNvbmZpZy5yZXNldFN0eWxlcywgcmVzZXRTdHlsZXNIZWFkZXIgPSBfciA9PT0gdm9pZCAwID8gZmFsc2UgOiBfciwgc3R5bGVIZWFkZXIgPSBoZWFkZXJDb25maWcuc3R5bGU7XG4gICAgdmFyIGN1c3RvbUZvb3RlciA9IGZvb3RlckNvbmZpZy5jdXN0b21Gb290ZXIsIF9zID0gZm9vdGVyQ29uZmlnLm5vTWlzc2luZ0ZpbGVzTGFiZWwsIG5vTWlzc2luZ0ZpbGVzTGFiZWwgPSBfcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9zLCBfdCA9IGZvb3RlckNvbmZpZy51cGxvYWRQcm9ncmVzc01lc3NhZ2UsIHVwbG9hZFByb2dyZXNzTWVzc2FnZSA9IF90ID09PSB2b2lkIDAgPyB0cnVlIDogX3QsIF91ID0gZm9vdGVyQ29uZmlnLnVwbG9hZFJlc3VsdE1lc3NhZ2UsIHVwbG9hZFJlc3VsdE1lc3NhZ2UgPSBfdSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF91O1xuICAgIC8vY29uc29sZS5sb2coXCJEcm9wem9uZSBwcm9wc1wiLCBkcm9wT25MYXllcik7XG4gICAgLy9sb2NhbGl6ZXJzXG4gICAgdmFyIERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIC8vcmVmIHRvIGhhbmRsZSByaXBwbGVcbiAgICB2YXIgZnVpUmlwcGxlUmVmQWJzID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBmdWlSaXBwbGVSZWZSZWwgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy9yZWYgdG8gdGhlIGhpZGRlbiBpbnB1dCB0YWdcbiAgICB2YXIgaW5wdXRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy9zdGF0ZSBmb3IgZHJhZyBvcGVyYXRpb25cbiAgICB2YXIgX3YgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzRHJhZ2dpbmcgPSBfdlswXSwgc2V0SXNEcmFnZ2luZyA9IF92WzFdO1xuICAgIC8vc3RhdGUgZm9yIGNoZWNraW5nIHVwbG9hZCBzdGFydFxuICAgIHZhciBfdyA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNVcGxvYWRpbmcgPSBfd1swXSwgc2V0SXNVcGxvYWRpbmcgPSBfd1sxXTtcbiAgICAvL3N0YXRlIGZvciBtZXNzYWdlIG9uIGZvb3RlclxuICAgIHZhciBfeCA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBsb2NhbE1lc3NhZ2UgPSBfeFswXSwgc2V0TG9jYWxNZXNzYWdlID0gX3hbMV07XG4gICAgLy9JZCBmb3IgdXBsb2RpbmcgdGhyb3VnaCBGdWlGaWxlTWFuYWdlclxuICAgIC8vY29uc3QgZHJvcHpvbmVJZDogc3RyaW5nIHwgbnVtYmVyID0gdXNlRHJvcHpvbmVGaWxlTGlzdElEKCk7XG4gICAgLy8gY29uc3QgZHJvcHpvbmVJZDogc3RyaW5nIHwgbnVtYmVyID0gUmVhY3QudXNlSWQoKTtcbiAgICB2YXIgZHJvcHpvbmVJZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpICsgXCJcIjsgfSwgW10pO1xuICAgIC8vUmVhY3QudXNlSWQoKTtcbiAgICAvL0ZsYWcgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgb3Igbm90XG4gICAgdmFyIHZhbGlkYXRlRmlsZXNGbGFnID0gaXNWYWxpZGF0ZUFjdGl2ZShhY2NlcHQsIG1heEZpbGVTaXplLCBtYXhGaWxlcywgdmFsaWRhdG9yKTtcbiAgICAvL3N0YXRlIGZvciBtYW5hZ2luZyB0aGUgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIGZpbGVzIGxvY2FsbHlcbiAgICB2YXIgX3kgPSB1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlcihkcm9wem9uZUlkLCB2YWx1ZSB8fCBbXSwgaXNVcGxvYWRpbmcsIG1heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCB2YWxpZGF0b3IsIGxvY2FsaXphdGlvbiwgdmFsaWRhdGVGaWxlc0ZsYWcpLCBsb2NhbEZpbGVzID0gX3lbMF0sIG51bWJlck9mVmFsaWRGaWxlcyA9IF95WzFdLCBzZXRMb2NhbEZpbGVzID0gX3lbMl07XG4gICAgLyoqXG4gICAgICogVXBsb2FkcyBlYWNoIGZpbGUgaW4gdGhlIGFycmF5IG9mIEV4dEZpbGVzXG4gICAgICogRmlyc3QsIHNldHMgYWxsIHRoZSBmaWxlcyBpbiBwcmVwYXJpbmcgc3RhdHVzIGFuZCBhd2FpdHMgYHByZXBhcmluZ1RpbWVgIG1pbGlzZWNvbmRzLlxuICAgICAqIElmIGBwcmVwYXJpbmdUaW1lYCBpcyBub3QgZ2l2ZW4gb3IgaXRzIHZhbHVlIGlzIGZhbHNlIG9yIDAsIHRoZXJlIHdvbsK0dCBiZSBhIHByZXBhcmluZyBwaGFzZS5cbiAgICAgKiAgICAgICAgVGhpcyBpcyBvbmx5IGZvciB0aGUgZmlyc3QgZmlsZSwgdGhlIHJlc3Qgb2YgZmlsZXMgd2lsbCBoYXZlIHByZXBhcmluZyB0aW1lIHVudGlsIHRoZSBmaWxlIGJlZm9yZSB3YXMgdXBsb2FkZWRcbiAgICAgKiAgICAgICAgVGhlIGZpcnN0IGZpbGUgd2lsbCBqdW1wIGZyb20gdW5kZWYgdG8gXCJ1cGxvYWRpbmdcIlxuICAgICAqIFRoZW4gb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqXG4gICAgICogSWYgYG9uQ2FuY2VsYCBldmVudCBvY3VycnMgb3V0c2lkZSBvbiBhbnkgb24gdGhlXG4gICAgICogRmlsZUl0ZW1zKGUuZy4gYnkgY2xpY2tpbmcgdGhlIGNhbmNlbCBidXR0b24gb24gYEZpbGVJdGVtYCksXG4gICAgICogdGhlIGV4dEZpbGVJbnN0YW5jZSB3aWxsIGNoYW5nZSBpdHMgc3RhdHVzIGZyb20gJ3ByZXBhcmluZycgdG8gdW5kZWZpbmVkLiBJZiBzbyxcbiAgICAgKiBhZnRlciB0aGUgd2FpdGluZyB0aW1lIHRoZSB2YWx1ZSBvZiBzdGF0dXMgd2lsbCBiZSBmb3VuZCBhcyB1bmRlZmluZWQgYW5kXG4gICAgICogd29uwrR0IHBlcmZvbSB0aGUgdXBsb2FkIGZvciB0aGF0IGZpbGUgb3IgYW55IG90aGVyIHRoYXQgZml0cyB0aGF0IGNvbmRpdGlvbi5cbiAgICAgKiBUaGVuLCBmb3IgZWFjaCBmaWxlIHNldHMgdGhlIGZpbGUgaW4gJ3VwbG9hZGluZycgc3RhdHVzLlxuICAgICAqIFRoZW4gb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqIFRoZW4gdXBsb2FkcyB0aGUgZmlsZSB3aXRoIHRoZSBgeGhyYCBpbnN0YW5jZS5cbiAgICAgKiBBZnRlciB0aGF0LCB0aGF0IGZpbGUgcmVjaWV2ZXMgdGhlIG5ldyB1cGxvYWRTdGF0dXMgdGhhdCBjYW4gYmVcbiAgICAgKiAgJ3N1Y2Nlc3MnLCAnZXJyb3InIG9yICdhYm9ydGVkJ1xuICAgICAqIGFuZCBvbkNoYW5nZSBldmVudCB3aWxsIGJlIGNhbGxlZCB0byB1cGRhdGUgdGhlIGZpbGVzIG91dHNpZGUuXG4gICAgICogQHBhcmFtIGxvY2FsRmlsZXMgdGhlIGxpc3Qgb2YgZXh0RmlsZXMgdG8gdXBsb2FkXG4gICAgICogQHJldHVybnMgbm90aGluZ1xuICAgICAqL1xuICAgIHZhciB1cGxvYWRmaWxlcyA9IGZ1bmN0aW9uIChsb2NhbEZpbGVzKSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLCB0b3RhbE51bWJlciwgbWlzc2luZ1VwbG9hZCwgdG90YWxSZWplY3RlZCwgY3VycmVudENvdW50VXBsb2FkLCB1cGxvYWRpbmdNZXNzZW5nZXIsIG5ld0V4dEZpbGVMb2NhbCwgc2VydmVyUmVzcG9uc2VzLCBpLCBjdXJyZW50RXh0RmlsZUluc3RhbmNlLCB1cGxvYWRSZXNwb25zZSwgZmFrZVByb2dyZXNzLCB1cGxvYWRlZEZpbGUsIGZpbmlzaFVwbG9hZE1lc3NlbmdlcjtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHVwbG9hZGluZyBmbGFnIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vYXZvaWQgdG8gY2FsbCB1cGxvYWQgaWYgbm90IGFsbG93ZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZmxhZyBpcyBhbHJlYWR5IHRydWUgb3IgdGhlcmUgaXNudCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICAvL3VybCB3YXMgbm90IHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VwbG9hZGluZyB8fCBsb2NhbEZpbGVzLmxlbmd0aCA9PT0gMCB8fCAhdXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbE1lc3NhZ2UoRHJvcHpvbmVMb2NhbGl6ZXIubm9GaWxlc01lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTUwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0b3RhbE51bWJlciA9IGxvY2FsRmlsZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nVXBsb2FkID0gbG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1VwbG9hZEFibGVFeHRGaWxlKGV4dEZpbGUsIHZhbGlkYXRlRmlsZXNGbGFnKTtcbiAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB0b3RhbFJlamVjdGVkID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvdW50VXBsb2FkID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkaW5nTWVzc2VuZ2VyID0gRHJvcHpvbmVMb2NhbGl6ZXIudXBsb2FkaW5nTWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgLy9ubyBtaXNzaW5nIHRvIHVwbG9hZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIShtaXNzaW5nVXBsb2FkID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub01pc3NpbmdGaWxlc0xhYmVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbE1lc3NhZ2UoRHJvcHpvbmVMb2NhbGl6ZXIubm9GaWxlc01lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cGxvYWRQcm9ncmVzc01lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbE1lc3NhZ2UodXBsb2FkaW5nTWVzc2VuZ2VyKFwiXCIuY29uY2F0KG1pc3NpbmdVcGxvYWQsIFwiL1wiKS5jb25jYXQodG90YWxOdW1iZXIpKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vICBzZXRJc1VwbG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9QUkVQQVJJTkcgc3RhZ2VcbiAgICAgICAgICAgICAgICAgICAgb25VcGxvYWRTdGFydCA9PT0gbnVsbCB8fCBvblVwbG9hZFN0YXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZFN0YXJ0KGxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0TWFwUHJlcGFyaW5nKGRyb3B6b25lSWQsIGxvY2FsRmlsZXMsIHZhbGlkYXRlRmlsZXNGbGFnLCBjbGVhbk9uVXBsb2FkKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXh0RmlsZUxvY2FsID0gX19zcHJlYWRBcnJheSQxKFtdLCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLCB0cnVlKS5tYXAoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LnRvRXh0RmlsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy9DSEFOR0UgKG8gYWxlam8gZWwgaXNVcGxvYWRpbmcgbyBsbyBhbGVqbyBwYXJhIHF1ZSB0ZW5nYSBtLGFzIHRpZW1wbyBhbnRlcyBkZSBsYSByZXNwdXllc3RhKVxuICAgICAgICAgICAgICAgICAgICAvLyBzZXRJc1VwbG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2UobmV3RXh0RmlsZUxvY2FsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9BV0FJVCB3aGVuIHByZXBhcmluZyB0aW1lIGlzIGdpdmVuXG4gICAgICAgICAgICAgICAgICAgIC8vZ2VuZXJhbCBzbGVlcCBmb3IgYWxsIGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwUHJlcGFyaW5nKHByZXBhcmluZ1RpbWUpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIC8vQVdBSVQgd2hlbiBwcmVwYXJpbmcgdGltZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAgICAvL2dlbmVyYWwgc2xlZXAgZm9yIGFsbCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAyO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IGFyck9mRXh0RmlsZXNJbnN0YW5jZXMubGVuZ3RoKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTZdO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlID0gYXJyT2ZFeHRGaWxlc0luc3RhbmNlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoKF9hID0gY3VycmVudEV4dEZpbGVJbnN0YW5jZS5leHRyYURhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWxldGVkKSkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDE0XTtcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhZ2UgdG8gXCJ1cGxvYWRpbmdcIiBpbiBvbmUgZmlsZSBhbmQgbm90aWZ5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAvLyBQUkVQQVJJTkcgPT4gVVBMT0FESU5HXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YWdlIHRvIFwidXBsb2FkaW5nXCIgaW4gb25lIGZpbGUgYW5kIG5vdGlmeSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgLy8gUFJFUEFSSU5HID0+IFVQTE9BRElOR1xuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbnRQcmVwYXJpbmdUb1VwbG9hZE9uZShjdXJyZW50RXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9tZXNzZ2UgaW4gZm9vdGVyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cGxvYWRQcm9ncmVzc01lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbE1lc3NhZ2UodXBsb2FkaW5nTWVzc2VuZ2VyKFwiXCIuY29uY2F0KCsrY3VycmVudENvdW50VXBsb2FkLCBcIi9cIikuY29uY2F0KG1pc3NpbmdVcGxvYWQpKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQ0hBTkdFIEZJTEVTXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZha2VVcGxvYWQpIHJldHVybiBbMyAvKmJyZWFrKi8sIDhdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBmYWtlRnVpVXBsb2FkKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIERyb3B6b25lTG9jYWxpemVyKV07XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSA1O1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZmFrZVByb2dyZXNzIDwgMTAwKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgN107XG4gICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyArPSBnZXRSYW5kb21JbnQoMjEsIDM1KTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS5wcm9ncmVzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgPiAxMDAgPyAxMDAgOiBmYWtlUHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigxMDAwKV07XG4gICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFs4LCAxMCwgLCAxMV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB1cGxvYWRFeHRGaWxlKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIHVybCwgbWV0aG9kLCBoZWFkZXJzLCB1cGxvYWRMYWJlbCldO1xuICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gdW5leHBlY3RlZEVycm9yVXBsb2FkUmVzdWx0KGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gdXBsb2FkUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIC8vdXBkYXRlIGluc3RhbmNlc1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IHVwbG9hZGVkRmlsZS51cGxvYWRTdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IHVwbG9hZGVkRmlsZS51cGxvYWRNZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISEoY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwiYWJvcnRlZFwiKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTNdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDEzO1xuICAgICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cGxvYWRlZEZpbGUudXBsb2FkU3RhdHVzID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVqZWN0ZWQrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZXMucHVzaCh1cGxvYWRSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDE1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDE1O1xuICAgICAgICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMl07XG4gICAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcykpO1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGxvYWQgZ3JvdXAgZmluaXNoZWQgOkRcbiAgICAgICAgICAgICAgICAgICAgb25VcGxvYWRGaW5pc2ggPT09IG51bGwgfHwgb25VcGxvYWRGaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVXBsb2FkRmluaXNoKHNlcnZlclJlc3BvbnNlcyk7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaFVwbG9hZE1lc3NlbmdlciA9IERyb3B6b25lTG9jYWxpemVyLnVwbG9hZEZpbmlzaGVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkUmVzdWx0TWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsTWVzc2FnZShmaW5pc2hVcGxvYWRNZXNzZW5nZXIobWlzc2luZ1VwbG9hZCAtIHRvdGFsUmVqZWN0ZWQsIHRvdGFsUmVqZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIHZhciBoYW5kbGVBYm9ydFVwbG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxpc3RFeHRGaWxlTG9jYWwgPSBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgICAgICBpZiAoIWxpc3RFeHRGaWxlTG9jYWwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxpc3RFeHRGaWxlTG9jYWwuZm9yRWFjaChmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAoZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIiB8fFxuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0RmlsZUluc3RhbmNlLnhociAhPT0gbnVsbCAmJiBleHRGaWxlSW5zdGFuY2UueGhyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS54aHIuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJhYm9ydGVkXCI7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBcIlVwbG9hZCB3YXMgYWJvcnRlZCBieSB1c2VyXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy90aGUgZmluYWwgY2xhc3NOYW1lXG4gICAgdmFyIF96ID0gdXNlRHJvcHpvbmVDbGFzc05hbWUoZHJvcHpvbmVJZCwgY2xhc3NOYW1lLCBcbiAgICAvL2lzRHJhZ2dpbmcgJiYgQm9vbGVhbihkcm9wT25MYXllciksXG4gICAgLy8gaGVhZGVyLFxuICAgIC8vIGZvb3RlcixcbiAgICBjb2xvciwgXG4gICAgLy9zdHlsZT8uYm9yZGVyUmFkaXVzIHx8IGJvcmRlclJhZGl1cyxcbiAgICBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpLCBkcm9wem9uZUNsYXNzTmFtZSA9IF96WzBdLCBoZWFkZXJDbGFzc05hbWUgPSBfelsxXSwgZm9vdGVyQ2xhc3NOYW1lID0gX3pbMl0sIGRpc2FibGVkTGF5ZXJDbGFzc05hbWUgPSBfelszXTtcbiAgICB2YXIgZHJvcExheWVyQ2xhc3NOYW1lID0gdXNlRHJvcExheWVyQ2xhc3NOYW1lKGRyb3B6b25lSWQsIGNvbG9yLCBcbiAgICAvLyBpc0RyYWdnaW5nLFxuICAgICFvbkRyYWdFbnRlciAmJiAhb25EcmFnTGVhdmUpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICB2YXIgdmFsaWRhdGVkRnVpRmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGxvY2FsRmlsZXMsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBudW1iZXJPZlZhbGlkRmlsZXMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIHNldExvY2FsRmlsZXModmFsaWRhdGVkRnVpRmlsZUxpc3QpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbl0pO1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBjaGFuZ2VzIGluIHRoZSBleHRGaWxlIGxpc3QuXG4gICAgICogTWFrZXMgYSBuZXcgYXJyYXkgb2YgZXh0RmlsZSBhY2NvcmRpbmcgdG8gdGhlIFwiYmVoYXZpb3VyXCIgcHJvcC5cbiAgICAgKiBJZiBpc1VwbG9hZGluZyBzdGF0ZSBpcyBub3QgdHJ1ZSBhbmQgdGhlIGJlaGF2aW91ciBwcm9wcyBpcyBlcXVhbCB0byBcImFkZFwiLFxuICAgICAqIHRoZSBpbmNvbWluZyBleHRGaWxlTGlzdCBpcyBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpc3Qgb2YgZXh0RmlsZS5cbiAgICAgKiBPdGhlcndpc2UsIHRoZSBjb21wbGV0ZSBleHRGaWxlIGxpc3QgaXMgcmVwbGFjZWQgYnkgdGhlIGluY29tbWluZyBleHRGaWxlIGxpc3RcbiAgICAgKiBAcGFyYW0gZXh0RmlsZUxpc3QgdGhlIG5ldyBmaWxlTGlzdFxuICAgICAqIEBwYXJhbSBpc1VwbG9hZGluZyBhIGZsYWcgdGhhdCBkc2NyaWJlcyB3aHRoZXIgdGhlIHVwbG9hZGluZyBwcm9jZXNzIGlzIGFjdGl2ZSBvciBub3RcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlRmlsZXNDaGFuZ2UgPSBmdW5jdGlvbiAoZXh0RmlsZUxpc3QsIGlzVXBsb2FkaW5nKSB7XG4gICAgICAgIHZhciBmaW5hbEV4dEZpbGVMaXN0ID0gYmVoYXZpb3VyID09PSBcImFkZFwiICYmICFpc1VwbG9hZGluZ1xuICAgICAgICAgICAgPyBfX3NwcmVhZEFycmF5JDEoX19zcHJlYWRBcnJheSQxKFtdLCBsb2NhbEZpbGVzLCB0cnVlKSwgZXh0RmlsZUxpc3QsIHRydWUpIDogX19zcHJlYWRBcnJheSQxKFtdLCBleHRGaWxlTGlzdCwgdHJ1ZSk7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRvVXBsb2FkICYmICFpc1VwbG9hZGluZykge1xuICAgICAgICAgICAgdXBsb2FkZmlsZXMoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBhY3Rpb24gb2YgcmVjaWV2aW5nIHRoZSBmaWxlcyB3aGVuIHVzZXIgc2VsZWN0cyB0aGUgZmlsZXNcbiAgICAgKiBieSBjbGlja2luZyB0aGUgSW5wdXRCdXR0b25cbiAgICAgKiBAcGFyYW0gZXZ0IGV2ZW50IGhhbmRsZXIgZm9yIGdldHRpbmcgZmlsZXMgZnJvbSBpbnB1dCBlbGVtZW50IHRhcmdldFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVDaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy9pZiAoaXNVcGxvYWRpbmcpIHJldHVybjtcbiAgICAgICAgdmFyIGZpbGVMaXN0ID0gZXZ0LnRhcmdldC5maWxlcztcbiAgICAgICAgdmFyIGV4dEZpbGVMaXN0T3V0cHV0ID0gZmlsZUxpc3RUb0V4dEZpbGVBcnJheShmaWxlTGlzdCk7XG4gICAgICAgIC8vdmFsaWRhdGUgZXh0IGZpbGVzXG4gICAgICAgIGlmICh2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBvdXRlckZ1aVZhbGlkYXRpb24oZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAgICAgaWYgKGF1dG9DbGVhbikge1xuICAgICAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gZXh0RmlsZUxpc3RPdXRwdXQuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL2luaXQgeGhyIG9uIGVhY2ggZXh0IGZpbGVcbiAgICAgICAgaWYgKHVybClcbiAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gdG9VcGxvYWRhYmxlRXh0RmlsZUxpc3QoZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAvLyBDbGVhbiBpbnB1dCBlbGVtZW50IHRvIHRyaWdnZXIgb25DaGFuZ2UgZXZlbnQgb24gaW5wdXRcbiAgICAgICAgY2xlYW5JbnB1dChpbnB1dFJlZi5jdXJyZW50KTtcbiAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2UoZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIHZhbGlkYXRpb24gcHJvY2VzcyBmb3IgZWFjaCBGdWlGaWxlXG4gICAgICogb3V0c2lkZSB0aGUgRHJvcHpvbmVOZW8gY29tcG9uZW50IGZpbGUgZGVjbGFyYXRpb25cbiAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIGNyaXRlcmlhIGdpdmVuIGJ5IG1heEZpbGVzIGFuZCBtYXhGaWxlU2l6ZSBhbmQgYWNjZXB0IHByb3BzXG4gICAgICogVGhpcyBmdW5jdGlvbiBjYWxscyB2YWxpZGF0ZUZ1aUZpbGVMaXN0IGFuZCBzZXRzIHRoZSB2YWxpZCBwcm9wIG9mIEZ1aUZpbGUgdG8gXCJ0cnVlXCIgb3IgXCJmYWxzZVwiXG4gICAgICogZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgdGhlIGluZGl2aWR1YWwgdmFsaWRhdGlvbi5cbiAgICAgKiBJdCBhbHNvIGFkZCB0aGUgbGlzdCBvZiBlcnJvcnMuXG4gICAgICogQHBhcmFtIGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSB0aGUgZnVpRmlsZUxpc3QgdG8gdmFsaWRhdGVcbiAgICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgdmFsaWRhdGVkIEZ1aUZpbGUgbGlzdFxuICAgICAqL1xuICAgIHZhciBvdXRlckZ1aVZhbGlkYXRpb24gPSBmdW5jdGlvbiAoZnVpRmlsZUxpc3RUb1ZhbGlkYXRlKSB7XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICB2YXIgZmluYWxOdW1iZXJPZlZhbGlkcyA9IG51bWJlck9mVmFsaWRGaWxlcztcbiAgICAgICAgaWYgKGJlaGF2aW91ciA9PT0gXCJyZXBsYWNlXCIpIHtcbiAgICAgICAgICAgIC8vcmUtc3RhcnQgbnVtYmVyIG9mIHZhbGlkc1xuICAgICAgICAgICAgZmluYWxOdW1iZXJPZlZhbGlkcyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbGlkYXRlZEZ1aUZpbGVMaXN0ID0gdmFsaWRhdGVFeHRGaWxlTGlzdChmdWlGaWxlTGlzdFRvVmFsaWRhdGUsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBmaW5hbE51bWJlck9mVmFsaWRzIDogSW5maW5pdHksIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVkRnVpRmlsZUxpc3Q7XG4gICAgfTtcbiAgICAvLyBIQU5ETEVSUyBmb3IgQ0xJQ0ssIERSQUcgTkFEIERST1BcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljaygpIHtcbiAgICAgICAgLy9oYW5kbGVDbGlja1V0aWwoZXZ0KTtcbiAgICAgICAgaWYgKCFjbGlja2FibGUgfHwgZGlzYWJsZWQgfHwgaXNVcGxvYWRpbmcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIG1ha2VSaXBwbGUoKTtcbiAgICAgICAgaGFuZGxlQ2xpY2tJbnB1dChpbnB1dFJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZURyYWdFbnRlciA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgaGFuZGxlRHJhZ1V0aWwoZXZ0KTtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRJc0RyYWdnaW5nKHRydWUpO1xuICAgICAgICAvKiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRJc0RyYWdnaW5nKChfaXNEcmFnZ2luZykgPT4ge1xuICAgICAgICAgICAgLy9pZiAoX2lzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgLy99XG4gICAgICAgICAgICAvL3JldHVybiB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAyMDAwKTsgKi9cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZURyYWdFbnRlclwiKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVEcmFnTGVhdmUgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaGFuZGxlRHJhZ1V0aWwoZXZ0KTtcbiAgICAgICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgfTtcbiAgICAvLyBSSVBQTEVcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcmlwcGxlIGluIHRoZSBtaWRkbGUgb2YgdGhlIG1haW4gY29udGFpbmVyXG4gICAgICovXG4gICAgdmFyIG1ha2VSaXBwbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNyZWF0ZUZ1aVJpcHBsZUZyb21EaXYoZnVpUmlwcGxlUmVmQWJzLmN1cnJlbnQsIGZ1aVJpcHBsZVJlZlJlbC5jdXJyZW50LCBjb2xvcik7XG4gICAgfTtcbiAgICAvLyBLQU1VSSA9PiBSRUNJRVZFIEZJTEVTIEZST00gRFJPUCBPUiBJTlBVVCggQ0xJQ0sgKSwgVkFMSURBVEUgQU5EIENIQU5HRVxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBhY3Rpb24gb2YgcmVjaWV2aW5nIHRoZSBmaWxlcyB3aGVuIHVzZXIgZHJvcHMgdGhlIGZpbGVzXG4gICAgICogaW4gdGhlIERyb3B6b25lIGNvbnRhaW5lci5cbiAgICAgKiBBY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGNvbmZpZyBmcm9tIHByb3BzLCB0aGlzIGZ1bmN0aW9uIGNvdWxkXG4gICAgICogdmFsaWRhdGUgZmlsZXMgYW5kIGFsc28gc3RhcnQgdGhlIHVwbG9hZGluZyBwaGFzZVxuICAgICAqIEBwYXJhbSBldnQgZXZlbiBoYW5kbGVyIGZvciBnZXR0aW5nIGZpbGVzIGZyb20gZGF0YVRyYW5zZmVyXG4gICAgICovXG4gICAgdmFyIGthbXVpID0gZnVuY3Rpb24gKGV2dCkgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZmlsZUxpc3QsIGV4dEZpbGVMaXN0T3V0cHV0O1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIGhhbmRsZURyb3BVdGlsKGV2dCk7XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nKVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIGlmICghZGlzYWJsZVJpcHBsZSlcbiAgICAgICAgICAgICAgICBtYWtlUmlwcGxlKCk7XG4gICAgICAgICAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIGZpbGVMaXN0ID0gZXZ0LmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gZmlsZUxpc3RUb0V4dEZpbGVBcnJheShmaWxlTGlzdCk7XG4gICAgICAgICAgICAvL3ZhbGlkYXRlIGV4dGVuZGVkIGZpbGVzXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IG91dGVyRnVpVmFsaWRhdGlvbihleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgICAgICAgICAgaWYgKGF1dG9DbGVhbikge1xuICAgICAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IGV4dEZpbGVMaXN0T3V0cHV0LmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9pbml0IHhociBvbiBlYWNoIGV4dCBmaWxlXG4gICAgICAgICAgICBpZiAodXJsKVxuICAgICAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gdG9VcGxvYWRhYmxlRXh0RmlsZUxpc3QoZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2UoZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICAvKioqKioqKioqKioqKiBIRUFERVIgJiBGT09URVIgKioqKioqKiogKi9cbiAgICAvKipcbiAgICAgKiByZXNldCB0aGUgY29tcGxldGUgZmlsZSBsaXN0XG4gICAgICovXG4gICAgdmFyIGhhbmRsZVJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKFtdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMoW10pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlQ2xlYW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkNsZWFuKSB7XG4gICAgICAgICAgICBvbkNsZWFuKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyID0gIWRyb3B6b25lQ2xhc3NOYW1lXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogKGlzRHJhZ2dpbmcgJiYgZHJvcE9uTGF5ZXIpIHx8IGRpc2FibGVkXG4gICAgICAgICAgICA/IGFkZENsYXNzTmFtZShkcm9wem9uZUNsYXNzTmFtZSwgXCJmaWxlcy11aS1yb290LWJvcmRlci1oaWRlXCIpXG4gICAgICAgICAgICA6IGRyb3B6b25lQ2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyQ2xpY2thYmxlID0gIWZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBjbGlja2FibGUgJiYgIWRpc2FibGVkXG4gICAgICAgICAgICA/IGFkZENsYXNzTmFtZShmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyLCBcImNsaWNrYWJsZVwiKVxuICAgICAgICAgICAgOiBmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyO1xuICAgIGlmICghZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlckNsaWNrYWJsZSlcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID09PSBcImJlZm9yZVwiICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQnV0dG9ucywgeyBkaXNhYmxlZDogZGlzYWJsZWQsIGFib3J0QnV0dG9uOiBpc1VwbG9hZGluZyA/IGFib3J0QnV0dG9uIDogdW5kZWZpbmVkLCBvbkFib3J0OiBoYW5kbGVBYm9ydFVwbG9hZCwgZGVsZXRlQnV0dG9uOiBkZWxldGVCdXR0b24sIG9uRGVsZXRlOiAhaXNVcGxvYWRpbmcgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgdXBsb2FkQnV0dG9uOiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9VcGxvYWQgPyB1cGxvYWRCdXR0b24gOiB1bmRlZmluZWQsIG9uVXBsb2FkOiAhYXV0b1VwbG9hZCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9IDogdW5kZWZpbmVkLCBjbGVhbkJ1dHRvbjogdmFsaWRhdGVGaWxlc0ZsYWcgJiYgIWlzVXBsb2FkaW5nICYmICFhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICA/IGNsZWFuQnV0dG9uXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG9uQ2xlYW46IGhhbmRsZUNsZWFuLCBzdHlsZTogY29udGFpbmVyU3R5bGUsIGNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLCB0b3A6IHRydWUgfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduJDEoeyBzdHlsZTogc3R5bGUsIGNsYXNzTmFtZTogZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlckNsaWNrYWJsZSB9LCByZXN0LCB7IG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBvbkRyYWdPdmVyOiBoYW5kbGVEcmFnRW50ZXIsIG9uRHJhZ0xlYXZlOiAhZHJvcE9uTGF5ZXIgPyBoYW5kbGVEcmFnTGVhdmUgOiB1bmRlZmluZWQsIG9uRHJvcDogIWRyb3BPbkxheWVyID8ga2FtdWkgOiB1bmRlZmluZWQgfSksXG4gICAgICAgICAgICAhZGlzYWJsZVJpcHBsZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHJlZjogZnVpUmlwcGxlUmVmQWJzLCBjbGFzc05hbWU6IFwiZmlsZXN1aS1iYXNlLXJpcHBsZS1hYnNvbHV0ZVwiLCBzdHlsZTogeyBib3JkZXJSYWRpdXM6IHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZS5ib3JkZXJSYWRpdXMgfSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByZWY6IGZ1aVJpcHBsZVJlZlJlbCwgY2xhc3NOYW1lOiBcImZpbGVzdWktYmFzZS1yaXBwbGUtcmVsYXRpdmVcIiB9KSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgaGVhZGVyID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1c3RvbUhlYWRlciA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21IZWFkZXIpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lSGVhZGVyLCB7IGZpcnN0Q2xhc3NOYW1lOiBoZWFkZXJDbGFzc05hbWUsIGNvbG9yOiBjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IpLCBzdHlsZTogc3R5bGVIZWFkZXIsIGNsYXNzTmFtZTogY2xhc3NOYW1lSGVhZGVyLCByZXNldFN0eWxlczogcmVzZXRTdHlsZXNIZWFkZXIsIGJvcmRlclJhZGl1czogc3R5bGVCb3JkZXJSYWRpdXMsIGlzVXBsb2FkaW5nOiBpc1VwbG9hZGluZyAmJiB1cGxvYWRpbmdJY29uSGVkYWVyLCBvblJlc2V0OiAhaXNVcGxvYWRpbmcgJiYgZGVsZXRlRmlsZXNIZWFkZXIgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplICYmIG1heEZpbGVTaXplSGVhZGVyID8gbWF4RmlsZVNpemUgOiB1bmRlZmluZWQsIG1heEZpbGVzOiBtYXhGaWxlcyAmJiB2YWxpZEZpbGVzQ291bnRIZWFkZXIgPyBtYXhGaWxlcyA6IHVuZGVmaW5lZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24sIHVybFByZXNlbnQ6IHVybCAhPT0gdW5kZWZpbmVkICYmIHVwbG9hZEZpbGVzSGVhZGVyLCBvblVwbG9hZFN0YXJ0OiAhYXV0b1VwbG9hZCAmJiAhdXBsb2FkQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gdXBsb2FkZmlsZXMobG9jYWxGaWxlcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG51bWJlck9mVmFsaWRGaWxlczogbnVtYmVyT2ZWYWxpZEZpbGVzLCBcbiAgICAgICAgICAgICAgICAvL29uQ2xlYW49e2F1dG9DbGVhbiA/IHVuZGVmaW5lZCA6IGNsZWFuQnV0dG9uID8gdW5kZWZpbmVkIDogb25DbGVhbn1cbiAgICAgICAgICAgICAgICBvbkNsZWFuOiAhY2xlYW5GaWxlc0hlYWRlciB8fCBpc1VwbG9hZGluZyB8fCBjbGVhbkJ1dHRvbiB8fCBhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgOiAoY2xlYW5GaWxlcyB8fCBvbkNsZWFuKSAmJiB2YWxpZGF0ZUZpbGVzRmxhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBoYW5kbGVDbGVhblxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQgfSkpKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVDaGlsZHJlbiwgeyBsYWJlbDogbGFiZWwsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0sIGNoaWxkcmVuKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1c3RvbUZvb3RlciA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21Gb290ZXIpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBmb290ZXIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVGb290ZXIsIF9fYXNzaWduJDEoeyBmaXJzdENsYXNzTmFtZTogZm9vdGVyQ2xhc3NOYW1lLCBib3JkZXJSYWRpdXM6IHN0eWxlQm9yZGVyUmFkaXVzLCBhY2NlcHQ6IGFjY2VwdCwgbWVzc2FnZTogaXNVcGxvYWRpbmcgPyBsb2NhbE1lc3NhZ2UgOiB1bmRlZmluZWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0sIGZvb3RlckNvbmZpZykpKSkpKSxcbiAgICAgICAgICAgIGRyb3BPbkxheWVyICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3BMYXllciwgeyBvcGVuOiBpc0RyYWdnaW5nLCBjbGFzc05hbWU6ICFpc0RyYWdnaW5nXG4gICAgICAgICAgICAgICAgICAgID8gZHJvcExheWVyQ2xhc3NOYW1lXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIi5jb25jYXQoZHJvcExheWVyQ2xhc3NOYW1lLCBcIiBkcm9wem9uZS1sYXllci1kcmFnXCIpLCBvbkRyYWdMZWF2ZTogaGFuZGxlRHJhZ0xlYXZlLCBvbkRyb3A6IGthbXVpLCBzdHlsZTogeyBib3JkZXJSYWRpdXM6IHN0eWxlID09PSBudWxsIHx8IHN0eWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZS5ib3JkZXJSYWRpdXMgfSB9KSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KElucHV0SGlkZGVuLCB7IG11bHRpcGxlOiBtYXhGaWxlcyA/IG1heEZpbGVzID4gMSA6IHRydWUsIGFjY2VwdDogYWNjZXB0IHx8IFwiXCIsIGlucHV0UmVmOiBpbnB1dFJlZiwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZUlucHV0IH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZURpc2FibGVkTGF5ZXIsIHsgb3BlbjogZGlzYWJsZWQsIGNsYXNzTmFtZTogZGlzYWJsZWRMYXllckNsYXNzTmFtZSB9KSksXG4gICAgICAgIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9PT0gXCJhZnRlclwiICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQnV0dG9ucywgeyBkaXNhYmxlZDogZGlzYWJsZWQsIGFib3J0QnV0dG9uOiBpc1VwbG9hZGluZyA/IGFib3J0QnV0dG9uIDogdW5kZWZpbmVkLCBvbkFib3J0OiBoYW5kbGVBYm9ydFVwbG9hZCwgZGVsZXRlQnV0dG9uOiBkZWxldGVCdXR0b24sIG9uRGVsZXRlOiAhaXNVcGxvYWRpbmcgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgdXBsb2FkQnV0dG9uOiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9VcGxvYWQgPyB1cGxvYWRCdXR0b24gOiB1bmRlZmluZWQsIG9uVXBsb2FkOiAhYXV0b1VwbG9hZCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9IDogdW5kZWZpbmVkLCBjbGVhbkJ1dHRvbjogdmFsaWRhdGVGaWxlc0ZsYWcgJiYgIWlzVXBsb2FkaW5nICYmICFhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICA/IGNsZWFuQnV0dG9uXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG9uQ2xlYW46IGhhbmRsZUNsZWFuLCBzdHlsZTogY29udGFpbmVyU3R5bGUsIGNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLCB0b3A6IGZhbHNlIH0pKSkpO1xufTtcblxudmFyIGRlZmF1bHRGaWxlSW5wdXRCdXR0b25Qcm9wcyA9IHtcbiAgICB0ZXh0VHJhbnNmb3JtOiBcInVwcGVyY2FzZVwiLFxuICAgIGxhYmVsOiBcImJyb3dzZS4uLlwiLFxuICAgIGJlaGF2aW91cjogXCJhZGRcIixcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdXBsb2FkQ29uZmlnOiB7fSxcbiAgICBhY3Rpb25CdXR0b25zOiB7fSxcbiAgICB2YWx1ZTogW10sXG59O1xuXG52YXIgRmlsZUlucHV0QnV0dG9uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gbWVyZ2VQcm9wcyhwcm9wcywgZGVmYXVsdEZpbGVJbnB1dEJ1dHRvblByb3BzKSwgXG4gICAgLy9iYXNpY1xuICAgIF9iID0gX2EudmFsdWUsIFxuICAgIC8vYmFzaWNcbiAgICB2YWx1ZSA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBvbkNoYW5nZSA9IF9hLm9uQ2hhbmdlLCBcbiAgICAvL3ZhbGlkYXRpb25cbiAgICBhY2NlcHQgPSBfYS5hY2NlcHQsIG1heEZpbGVTaXplID0gX2EubWF4RmlsZVNpemUsIG1heEZpbGVzID0gX2EubWF4RmlsZXMsIHZhbGlkYXRvciA9IF9hLnZhbGlkYXRvciwgXG4gICAgLy9jbGVhbkZpbGVzLFxuICAgIC8vb25DbGVhbixcbiAgICBhdXRvQ2xlYW4gPSBfYS5hdXRvQ2xlYW4sIFxuICAgIC8vdXBsb2FkaW5nXG4gICAgdXBsb2FkQ29uZmlnID0gX2EudXBsb2FkQ29uZmlnLCBmYWtlVXBsb2FkID0gX2EuZmFrZVVwbG9hZCwgb25VcGxvYWRTdGFydCA9IF9hLm9uVXBsb2FkU3RhcnQsIG9uVXBsb2FkRmluaXNoID0gX2Eub25VcGxvYWRGaW5pc2gsIFxuICAgIC8vc3R5bGluZ1xuICAgIC8vYmFja2dyb3VuZCxcbiAgICAvL21pbkhlaWdodCxcbiAgICBjb2xvciA9IF9hLmNvbG9yLCBzdHlsZSA9IF9hLnN0eWxlLCB0ZXh0Q29sb3IgPSBfYS50ZXh0Q29sb3IsIHRleHRUcmFuc2Zvcm0gPSBfYS50ZXh0VHJhbnNmb3JtLCBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsIFxuICAgIC8vbGFiZWxcbiAgICBsYWJlbCA9IF9hLmxhYmVsLCBcbiAgICAvL2xvY2FsaXphdGlvblxuICAgIGxvY1Byb3BzID0gX2EubG9jYWxpemF0aW9uLCBcbiAgICAvL3JpcHBsZVxuICAgIGRpc2FibGVSaXBwbGUgPSBfYS5kaXNhYmxlUmlwcGxlLCBcbiAgICAvL2FjdGlvbiBidXRvdG5zXG4gICAgYWN0aW9uQnV0dG9ucyA9IF9hLmFjdGlvbkJ1dHRvbnMsIFxuICAgIC8vZHJvcCBsYXllclxuICAgIC8vIGRyb3BPbkxheWVyLFxuICAgIC8vaGVhZGVyIGFuZCBmb290ZXJcbiAgICAvL2hlYWRlcixcbiAgICAvL2Zvb3RlcixcbiAgICAvL2hlYWRlckNvbmZpZyA9IHt9LFxuICAgIC8vZm9vdGVyQ29uZmlnID0ge30sXG4gICAgLy9kaXNhYmxlZFxuICAgIGRpc2FibGVkID0gX2EuZGlzYWJsZWQsIFxuICAgIC8vY2xpY2thYmxlLFxuICAgIC8vYWRkIG9yIHJlcGxhY2VcbiAgICBiZWhhdmlvdXIgPSBfYS5iZWhhdmlvdXIsIFxuICAgIC8vY29udGVudFxuICAgIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIFxuICAgIC8vYWR2YW5jZWRDb25maWcsXG4gICAgdmFyaWFudCA9IF9hLnZhcmlhbnQsIHJlc2V0U3R5bGVzID0gX2EucmVzZXRTdHlsZXMsIGRhcmtNb2RlUHJvcCA9IF9hLmRhcmtNb2RlLCByZXN0ID0gX19yZXN0KF9hLCBbXCJ2YWx1ZVwiLCBcIm9uQ2hhbmdlXCIsIFwiYWNjZXB0XCIsIFwibWF4RmlsZVNpemVcIiwgXCJtYXhGaWxlc1wiLCBcInZhbGlkYXRvclwiLCBcImF1dG9DbGVhblwiLCBcInVwbG9hZENvbmZpZ1wiLCBcImZha2VVcGxvYWRcIiwgXCJvblVwbG9hZFN0YXJ0XCIsIFwib25VcGxvYWRGaW5pc2hcIiwgXCJjb2xvclwiLCBcInN0eWxlXCIsIFwidGV4dENvbG9yXCIsIFwidGV4dFRyYW5zZm9ybVwiLCBcImNsYXNzTmFtZVwiLCBcImxhYmVsXCIsIFwibG9jYWxpemF0aW9uXCIsIFwiZGlzYWJsZVJpcHBsZVwiLCBcImFjdGlvbkJ1dHRvbnNcIiwgXCJkaXNhYmxlZFwiLCBcImJlaGF2aW91clwiLCBcImNoaWxkcmVuXCIsIFwidmFyaWFudFwiLCBcInJlc2V0U3R5bGVzXCIsIFwiZGFya01vZGVcIl0pO1xuICAgIC8vY29udGV4dFxuICAgIHZhciBfYyA9IFJlYWN0LnVzZUNvbnRleHQoRmlsZXNVaUNvbnRleHQpLCBkYXJrTW9kZUNvbnRleHQgPSBfYy5kYXJrTW9kZSwgXG4gICAgLy9pY29ucyxcbiAgICBsb2NDb250ZXh0ID0gX2MubG9jYWxpemF0aW9uO1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NQcm9wcyAhPT0gdW5kZWZpbmVkID8gbG9jUHJvcHMgOiBsb2NDb250ZXh0O1xuICAgIHZhciBkYXJrTW9kZSA9IGRhcmtNb2RlUHJvcCAhPT0gdW5kZWZpbmVkID8gZGFya01vZGVQcm9wIDogZGFya01vZGVDb250ZXh0O1xuICAgIHZhciBfZCA9IHVwbG9hZENvbmZpZywgdXJsID0gX2QudXJsLCBtZXRob2QgPSBfZC5tZXRob2QsIGhlYWRlcnMgPSBfZC5oZWFkZXJzLCB1cGxvYWRMYWJlbCA9IF9kLnVwbG9hZExhYmVsLCBfZSA9IF9kLmNsZWFuT25VcGxvYWQsIGNsZWFuT25VcGxvYWQgPSBfZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9lLCBfZiA9IF9kLnByZXBhcmluZ1RpbWUsIHByZXBhcmluZ1RpbWUgPSBfZiA9PT0gdm9pZCAwID8gMTUwMCA6IF9mLCBfZyA9IF9kLmF1dG9VcGxvYWQsIGF1dG9VcGxvYWQgPSBfZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZztcbiAgICB2YXIgX2ggPSBhY3Rpb25CdXR0b25zLCBhY3Rpb25CdXR0b25zUG9zaXRpb24gPSBfaC5wb3NpdGlvbiwgYWJvcnRCdXR0b24gPSBfaC5hYm9ydEJ1dHRvbiwgZGVsZXRlQnV0dG9uID0gX2guZGVsZXRlQnV0dG9uLCB1cGxvYWRCdXR0b24gPSBfaC51cGxvYWRCdXR0b24sIGNsZWFuQnV0dG9uID0gX2guY2xlYW5CdXR0b24sIGNvbnRhaW5lclN0eWxlID0gX2guc3R5bGUsIGNvbnRhaW5lckNsYXNzTmFtZSA9IF9oLmNsYXNzTmFtZTtcbiAgICAvL2xvY2FsaXplcnNcbiAgICB2YXIgRHJvcHpvbmVMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgLy9yZWYgdG8gdGhlIGhpZGRlbiBpbnB1dCB0YWdcbiAgICB2YXIgaW5wdXRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy9zdGF0ZSBmb3IgY2hlY2tpbmcgdXBsb2FkIHN0YXJ0XG4gICAgdmFyIF9qID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc1VwbG9hZGluZyA9IF9qWzBdLCBzZXRJc1VwbG9hZGluZyA9IF9qWzFdO1xuICAgIC8vSWQgZm9yIHVwbG9kaW5nIHRocm91Z2ggRnVpRmlsZU1hbmFnZXJcbiAgICAvL2NvbnN0IGlucHV0QnV0dG9uSWQ6IHN0cmluZyB8IG51bWJlciA9IFJlYWN0LnVzZUlkKCk7XG4gICAgdmFyIGlucHV0QnV0dG9uSWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSArIFwiXCI7IH0sIFtdKTtcbiAgICAvL0ZsYWcgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgb3Igbm90XG4gICAgdmFyIHZhbGlkYXRlRmlsZXNGbGFnID0gaXNWYWxpZGF0ZUFjdGl2ZShhY2NlcHQsIG1heEZpbGVTaXplLCBtYXhGaWxlcywgdmFsaWRhdG9yKTtcbiAgICAvL3N0YXRlIGZvciBtYW5hZ2luZyB0aGUgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIGZpbGVzIGxvY2FsbHlcbiAgICB2YXIgX2sgPSB1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlcihpbnB1dEJ1dHRvbklkLCB2YWx1ZSB8fCBbXSwgaXNVcGxvYWRpbmcsIG1heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCB2YWxpZGF0b3IsIGxvY2FsaXphdGlvbiwgdmFsaWRhdGVGaWxlc0ZsYWcpLCBsb2NhbEZpbGVzID0gX2tbMF0sIG51bWJlck9mVmFsaWRGaWxlcyA9IF9rWzFdLCBzZXRMb2NhbEZpbGVzID0gX2tbMl07XG4gICAgLyoqXG4gICAgICogVXBsb2FkcyBlYWNoIGZpbGUgaW4gdGhlIGFycmF5IG9mIEV4dEZpbGVzXG4gICAgICogRmlyc3QsIHNldHMgYWxsIHRoZSBmaWxlcyBpbiBwcmVwYXJpbmcgc3RhdHVzIGFuZCBhd2FpdHMgYHByZXBhcmluZ1RpbWVgIG1pbGlzZWNvbmRzLlxuICAgICAqIElmIGBwcmVwYXJpbmdUaW1lYCBpcyBub3QgZ2l2ZW4gb3IgaXRzIHZhbHVlIGlzIGZhbHNlIG9yIDAsIHRoZXJlIHdvbsK0dCBiZSBhIHByZXBhcmluZyBwaGFzZS5cbiAgICAgKiAgICAgICAgVGhpcyBpcyBvbmx5IGZvciB0aGUgZmlyc3QgZmlsZSwgdGhlIHJlc3Qgb2YgZmlsZXMgd2lsbCBoYXZlIHByZXBhcmluZyB0aW1lIHVudGlsIHRoZSBmaWxlIGJlZm9yZSB3YXMgdXBsb2FkZWRcbiAgICAgKiAgICAgICAgVGhlIGZpcnN0IGZpbGUgd2lsbCBqdW1wIGZyb20gdW5kZWYgdG8gXCJ1cGxvYWRpbmdcIlxuICAgICAqIFRoZW4gb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqXG4gICAgICogSWYgYG9uQ2FuY2VsYCBldmVudCBvY3VycnMgb3V0c2lkZSBvbiBhbnkgb24gdGhlXG4gICAgICogRmlsZUl0ZW1zKGUuZy4gYnkgY2xpY2tpbmcgdGhlIGNhbmNlbCBidXR0b24gb24gYEZpbGVJdGVtYCksXG4gICAgICogdGhlIGV4dEZpbGVJbnN0YW5jZSB3aWxsIGNoYW5nZSBpdHMgc3RhdHVzIGZyb20gJ3ByZXBhcmluZycgdG8gdW5kZWZpbmVkLiBJZiBzbyxcbiAgICAgKiBhZnRlciB0aGUgd2FpdGluZyB0aW1lIHRoZSB2YWx1ZSBvZiBzdGF0dXMgd2lsbCBiZSBmb3VuZCBhcyB1bmRlZmluZWQgYW5kXG4gICAgICogd29uwrR0IHBlcmZvbSB0aGUgdXBsb2FkIGZvciB0aGF0IGZpbGUgb3IgYW55IG90aGVyIHRoYXQgZml0cyB0aGF0IGNvbmRpdGlvbi5cbiAgICAgKiBUaGVuLCBmb3IgZWFjaCBmaWxlIHNldHMgdGhlIGZpbGUgaW4gJ3VwbG9hZGluZycgc3RhdHVzLlxuICAgICAqIFRoZW4gb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqIFRoZW4gdXBsb2FkcyB0aGUgZmlsZSB3aXRoIHRoZSBgeGhyYCBpbnN0YW5jZS5cbiAgICAgKiBBZnRlciB0aGF0LCB0aGF0IGZpbGUgcmVjaWV2ZXMgdGhlIG5ldyB1cGxvYWRTdGF0dXMgdGhhdCBjYW4gYmVcbiAgICAgKiAgJ3N1Y2Nlc3MnLCAnZXJyb3InIG9yICdhYm9ydGVkJ1xuICAgICAqIGFuZCBvbkNoYW5nZSBldmVudCB3aWxsIGJlIGNhbGxlZCB0byB1cGRhdGUgdGhlIGZpbGVzIG91dHNpZGUuXG4gICAgICogQHBhcmFtIGxvY2FsRmlsZXMgdGhlIGxpc3Qgb2YgZXh0RmlsZXMgdG8gdXBsb2FkXG4gICAgICogQHJldHVybnMgbm90aGluZ1xuICAgICAqL1xuICAgIHZhciB1cGxvYWRmaWxlcyA9IGZ1bmN0aW9uIChsb2NhbEZpbGVzKSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLCBtaXNzaW5nVXBsb2FkLCBuZXdFeHRGaWxlTG9jYWwsIHNlcnZlclJlc3BvbnNlcywgaSwgY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgdXBsb2FkUmVzcG9uc2UsIGZha2VQcm9ncmVzcywgdXBsb2FkZWRGaWxlO1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgc3dpdGNoIChfYi5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgdXBsb2FkaW5nIGZsYWcgdG8gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy9hdm9pZCB0byBjYWxsIHVwbG9hZCBpZiBub3QgYWxsb3dlZFxuICAgICAgICAgICAgICAgICAgICAvLyBmbGFnIGlzIGFscmVhZHkgdHJ1ZSBvciB0aGVyZSBpc250IGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsIHdhcyBub3QgcHJvdmlkZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nIHx8IGxvY2FsRmlsZXMubGVuZ3RoID09PSAwIHx8ICF1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgIG1pc3NpbmdVcGxvYWQgPSBsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVXBsb2FkQWJsZUV4dEZpbGUoZXh0RmlsZSwgdmFsaWRhdGVGaWxlc0ZsYWcpO1xuICAgICAgICAgICAgICAgICAgICB9KS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1cGxvYWQgc3RhcnQ6IG1pc3NpbmdVcGxvYWRcIiwgbWlzc2luZ1VwbG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIC8vbm8gbWlzc2luZyB0byB1cGxvYWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEobWlzc2luZ1VwbG9hZCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkIHN0YXJ0OiBub0ZpbGVzTWVzc2FnZVwiLCBtaXNzaW5nVXBsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAgc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vUFJFUEFSSU5HIHN0YWdlXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0ZUZpbGVzRmxhZ1wiLCB2YWxpZGF0ZUZpbGVzRmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkU3RhcnQgPT09IG51bGwgfHwgb25VcGxvYWRTdGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25VcGxvYWRTdGFydChsb2NhbEZpbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdE1hcFByZXBhcmluZyhpbnB1dEJ1dHRvbklkLCBsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzRmxhZywgY2xlYW5PblVwbG9hZCkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIG5ld0V4dEZpbGVMb2NhbCA9IF9fc3ByZWFkQXJyYXkkMShbXSwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgdHJ1ZSkubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC50b0V4dEZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQ0hBTkdFIChvIGFsZWpvIGVsIGlzVXBsb2FkaW5nIG8gbG8gYWxlam8gcGFyYSBxdWUgdGVuZ2EgbSxhcyB0aWVtcG8gYW50ZXMgZGUgbGEgcmVzcHV5ZXN0YSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKG5ld0V4dEZpbGVMb2NhbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGaWxlTWFuYWdlckxvZyBiZWZvcmUgc2xlZXBcIiwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyk7XG4gICAgICAgICAgICAgICAgICAgIC8vQVdBSVQgd2hlbiBwcmVwYXJpbmcgdGltZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAgICAvL2dlbmVyYWwgc2xlZXAgZm9yIGFsbCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFByZXBhcmluZyhwcmVwYXJpbmdUaW1lKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRmlsZU1hbmFnZXJMb2cgYmVmb3JlIHNsZWVwXCIsIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpO1xuICAgICAgICAgICAgICAgICAgICAvL0FXQUlUIHdoZW4gcHJlcGFyaW5nIHRpbWUgaXMgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmFsIHNsZWVwIGZvciBhbGwgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGkgPCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLmxlbmd0aCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDE2XTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZSA9IGFyck9mRXh0RmlsZXNJbnN0YW5jZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKChfYSA9IGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UuZXh0cmFEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsZXRlZCkpKSByZXR1cm4gWzMgLypicmVhayovLCAxNF07XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YWdlIHRvIFwidXBsb2FkaW5nXCIgaW4gb25lIGZpbGUgYW5kIG5vdGlmeSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgLy8gUFJFUEFSSU5HID0+IFVQTE9BRElOR1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFnZSB0byBcInVwbG9hZGluZ1wiIGluIG9uZSBmaWxlIGFuZCBub3RpZnkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIC8vIFBSRVBBUklORyA9PiBVUExPQURJTkdcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW50UHJlcGFyaW5nVG9VcGxvYWRPbmUoY3VycmVudEV4dEZpbGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQ0hBTkdFIEZJTEVTXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZha2VVcGxvYWQpIHJldHVybiBbMyAvKmJyZWFrKi8sIDhdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBmYWtlRnVpVXBsb2FkKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIERyb3B6b25lTG9jYWxpemVyKV07XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSA1O1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZmFrZVByb2dyZXNzIDwgMTAwKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgN107XG4gICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyArPSBnZXRSYW5kb21JbnQoMjEsIDM1KTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS5wcm9ncmVzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgPiAxMDAgPyAxMDAgOiBmYWtlUHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigxMDAwKV07XG4gICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKHNhbml0aXplQXJyRXh0RmlsZShhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFs4LCAxMCwgLCAxMV0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCB1cGxvYWRFeHRGaWxlKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIHVybCwgbWV0aG9kLCBoZWFkZXJzLCB1cGxvYWRMYWJlbCldO1xuICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gdW5leHBlY3RlZEVycm9yVXBsb2FkUmVzdWx0KGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkZWRGaWxlID0gdXBsb2FkUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJmYWtlIHVwbG9hZFJlc3BvbnNlIHVwbG9hZGVkRmlsZVwiLCB1cGxvYWRlZEZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAvL3VwZGF0ZSBpbnN0YW5jZXNcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSB1cGxvYWRlZEZpbGUudXBsb2FkU3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSB1cGxvYWRlZEZpbGUudXBsb2FkTWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcImFib3J0ZWRcIikpIHJldHVybiBbMyAvKmJyZWFrKi8sIDEzXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKCldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxMztcbiAgICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZXMucHVzaCh1cGxvYWRSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDE1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDE1O1xuICAgICAgICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMl07XG4gICAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcykpO1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGxvYWQgZ3JvdXAgZmluaXNoZWQgOkRcbiAgICAgICAgICAgICAgICAgICAgb25VcGxvYWRGaW5pc2ggPT09IG51bGwgfHwgb25VcGxvYWRGaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVXBsb2FkRmluaXNoKHNlcnZlclJlc3BvbnNlcyk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICB2YXIgaGFuZGxlQWJvcnRVcGxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsaXN0RXh0RmlsZUxvY2FsID0gRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdChpbnB1dEJ1dHRvbklkKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkFib3J0aW5nXCIsIGxpc3RFeHRGaWxlTG9jYWwsIGlucHV0QnV0dG9uSWQpO1xuICAgICAgICBpZiAoIWxpc3RFeHRGaWxlTG9jYWwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxpc3RFeHRGaWxlTG9jYWwuZm9yRWFjaChmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAoZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIiB8fFxuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0RmlsZUluc3RhbmNlLnhociAhPT0gbnVsbCAmJiBleHRGaWxlSW5zdGFuY2UueGhyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS54aHIuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJhYm9ydGVkXCI7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBcIlVwbG9hZCB3YXMgYWJvcnRlZCBieSB1c2VyXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGxvY2FsVmFsaWRhdG9yID0geyBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsIGFjY2VwdDogYWNjZXB0IH07XG4gICAgICAgIHZhciB2YWxpZGF0ZWRGdWlGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QobG9jYWxGaWxlcywgbWF4RmlsZXMgPyBtYXhGaWxlcyAtIG51bWJlck9mVmFsaWRGaWxlcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgc2V0TG9jYWxGaWxlcyh2YWxpZGF0ZWRGdWlGaWxlTGlzdCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFttYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgbG9jYWxpemF0aW9uXSk7XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGNoYW5nZXMgaW4gdGhlIGV4dEZpbGUgbGlzdC5cbiAgICAgKiBNYWtlcyBhIG5ldyBhcnJheSBvZiBleHRGaWxlIGFjY29yZGluZyB0byB0aGUgXCJiZWhhdmlvdXJcIiBwcm9wLlxuICAgICAqIElmIGlzVXBsb2FkaW5nIHN0YXRlIGlzIG5vdCB0cnVlIGFuZCB0aGUgYmVoYXZpb3VyIHByb3BzIGlzIGVxdWFsIHRvIFwiYWRkXCIsXG4gICAgICogdGhlIGluY29taW5nIGV4dEZpbGVMaXN0IGlzIGFkZGVkIGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGlzdCBvZiBleHRGaWxlLlxuICAgICAqIE90aGVyd2lzZSwgdGhlIGNvbXBsZXRlIGV4dEZpbGUgbGlzdCBpcyByZXBsYWNlZCBieSB0aGUgaW5jb21taW5nIGV4dEZpbGUgbGlzdFxuICAgICAqIEBwYXJhbSBleHRGaWxlTGlzdCB0aGUgbmV3IGZpbGVMaXN0XG4gICAgICogQHBhcmFtIGlzVXBsb2FkaW5nIGEgZmxhZyB0aGF0IGRzY3JpYmVzIHdodGhlciB0aGUgdXBsb2FkaW5nIHByb2Nlc3MgaXMgYWN0aXZlIG9yIG5vdFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVGaWxlc0NoYW5nZSA9IGZ1bmN0aW9uIChleHRGaWxlTGlzdCwgaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgdmFyIGZpbmFsRXh0RmlsZUxpc3QgPSBiZWhhdmlvdXIgPT09IFwiYWRkXCIgJiYgIWlzVXBsb2FkaW5nXG4gICAgICAgICAgICA/IF9fc3ByZWFkQXJyYXkkMShfX3NwcmVhZEFycmF5JDEoW10sIGxvY2FsRmlsZXMsIHRydWUpLCBleHRGaWxlTGlzdCwgdHJ1ZSkgOiBfX3NwcmVhZEFycmF5JDEoW10sIGV4dEZpbGVMaXN0LCB0cnVlKTtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF1dG9VcGxvYWQgJiYgIWlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXV0b1VwbG9hZFwiLCBmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgICAgIHVwbG9hZGZpbGVzKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0aW9uIG9mIHJlY2lldmluZyB0aGUgZmlsZXMgd2hlbiB1c2VyIHNlbGVjdHMgdGhlIGZpbGVzXG4gICAgICogYnkgY2xpY2tpbmcgdGhlIElucHV0QnV0dG9uXG4gICAgICogQHBhcmFtIGV2dCBldmVudCBoYW5kbGVyIGZvciBnZXR0aW5nIGZpbGVzIGZyb20gaW5wdXQgZWxlbWVudCB0YXJnZXRcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlQ2hhbmdlSW5wdXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vaWYgKGlzVXBsb2FkaW5nKSByZXR1cm47XG4gICAgICAgIHZhciBmaWxlTGlzdCA9IGV2dC50YXJnZXQuZmlsZXM7XG4gICAgICAgIHZhciBleHRGaWxlTGlzdE91dHB1dCA9IGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkoZmlsZUxpc3QpO1xuICAgICAgICAvL3ZhbGlkYXRlIGR1aSBmaWxlc1xuICAgICAgICBpZiAodmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gb3V0ZXJGdWlWYWxpZGF0aW9uKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIGlmIChhdXRvQ2xlYW4pIHtcbiAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IGV4dEZpbGVMaXN0T3V0cHV0LmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pbml0IHhociBvbiBlYWNoIGR1aSBmaWxlXG4gICAgICAgIGlmICh1cmwpXG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0KGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgLy8gQ2xlYW4gaW5wdXQgZWxlbWVudCB0byB0cmlnZ2VyIG9uQ2hhbmdlIGV2ZW50IG9uIGlucHV0XG4gICAgICAgIGNsZWFuSW5wdXQoaW5wdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGVhY2ggRnVpRmlsZVxuICAgICAqIG91dHNpZGUgdGhlIERyb3B6b25lTmVvIGNvbXBvbmVudCBmaWxlIGRlY2xhcmF0aW9uXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSBnaXZlbiBieSBtYXhGaWxlcyBhbmQgbWF4RmlsZVNpemUgYW5kIGFjY2VwdCBwcm9wc1xuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FsbHMgdmFsaWRhdGVGdWlGaWxlTGlzdCBhbmQgc2V0cyB0aGUgdmFsaWQgcHJvcCBvZiBGdWlGaWxlIHRvIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIlxuICAgICAqIGRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBpbmRpdmlkdWFsIHZhbGlkYXRpb24uXG4gICAgICogSXQgYWxzbyBhZGQgdGhlIGxpc3Qgb2YgZXJyb3JzLlxuICAgICAqIEBwYXJhbSBmdWlGaWxlTGlzdFRvVmFsaWRhdGUgdGhlIGZ1aUZpbGVMaXN0IHRvIHZhbGlkYXRlXG4gICAgICogQHJldHVybnMgYSBsaXN0IG9mIHZhbGlkYXRlZCBGdWlGaWxlIGxpc3RcbiAgICAgKi9cbiAgICB2YXIgb3V0ZXJGdWlWYWxpZGF0aW9uID0gZnVuY3Rpb24gKGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSkge1xuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInZhbGlkYXRlZEZ1aUZpbGVMaXN0IHByZVwiLCBmdWlGaWxlTGlzdFRvVmFsaWRhdGUpO1xuICAgICAgICB2YXIgZmluYWxOdW1iZXJPZlZhbGlkcyA9IG51bWJlck9mVmFsaWRGaWxlcztcbiAgICAgICAgaWYgKGJlaGF2aW91ciA9PT0gXCJyZXBsYWNlXCIpIHtcbiAgICAgICAgICAgIC8vcmUtc3RhcnQgbnVtYmVyIG9mIHZhbGlkc1xuICAgICAgICAgICAgZmluYWxOdW1iZXJPZlZhbGlkcyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbGlkYXRlZEZ1aUZpbGVMaXN0ID0gdmFsaWRhdGVFeHRGaWxlTGlzdChmdWlGaWxlTGlzdFRvVmFsaWRhdGUsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBmaW5hbE51bWJlck9mVmFsaWRzIDogSW5maW5pdHksIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGVkRnVpRmlsZUxpc3QgYWZ0XCIsIHZhbGlkYXRlZEZ1aUZpbGVMaXN0KTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1aUZpbGVMaXN0O1xuICAgIH07XG4gICAgLy8gSEFORExFUlMgZm9yIENMSUNLXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkhBQUFBQUFBQVwiKTtcbiAgICAgICAgLy9oYW5kbGVDbGlja1V0aWwoZXZ0KTtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBoYW5kbGVDbGlja0lucHV0KGlucHV0UmVmLmN1cnJlbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiByZXNldCB0aGUgY29tcGxldGUgZmlsZSBsaXN0XG4gICAgICovXG4gICAgdmFyIGhhbmRsZVJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKFtdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMoW10pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlQ2xlYW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UobG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMobG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBhY3Rpb25CdXR0b25zUG9zaXRpb24gPT09IFwiYmVmb3JlXCIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVCdXR0b25zLCB7IGRpc2FibGVkOiBkaXNhYmxlZCwgYWJvcnRCdXR0b246IGlzVXBsb2FkaW5nID8gYWJvcnRCdXR0b24gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IGhhbmRsZUFib3J0VXBsb2FkLCBkZWxldGVCdXR0b246IGRlbGV0ZUJ1dHRvbiwgb25EZWxldGU6ICFpc1VwbG9hZGluZyA/IGhhbmRsZVJlc2V0IDogdW5kZWZpbmVkLCB1cGxvYWRCdXR0b246ICFpc1VwbG9hZGluZyAmJiAhYXV0b1VwbG9hZCA/IHVwbG9hZEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25VcGxvYWQ6ICFhdXRvVXBsb2FkID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gdXBsb2FkZmlsZXMobG9jYWxGaWxlcyk7IH0gOiB1bmRlZmluZWQsIGNsZWFuQnV0dG9uOiB2YWxpZGF0ZUZpbGVzRmxhZyAmJiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9DbGVhblxuICAgICAgICAgICAgICAgID8gY2xlYW5CdXR0b25cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgb25DbGVhbjogaGFuZGxlQ2xlYW4sIHN0eWxlOiBjb250YWluZXJTdHlsZSwgY2xhc3NOYW1lOiBjb250YWluZXJDbGFzc05hbWUsIHRvcDogdHJ1ZSB9KSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWF0ZXJpYWxCdXR0b24sIF9fYXNzaWduJDEoeyBkaXNhYmxlZDogZGlzYWJsZWQsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIGNvbG9yOiBjb2xvciwgdmFyaWFudDogdmFyaWFudCwgdGV4dFRyYW5zZm9ybTogdGV4dFRyYW5zZm9ybSwgdGV4dENvbG9yOiB0ZXh0Q29sb3IsIHJlc2V0U3R5bGVzOiByZXNldFN0eWxlcywgb25DbGljazogaGFuZGxlQ2xpY2ssIGRpc2FibGVSaXBwbGU6IGRpc2FibGVSaXBwbGUsIGRhcmtNb2RlOiBkYXJrTW9kZSwgaWQ6IGlucHV0QnV0dG9uSWQgfSwgcmVzdCksIGNoaWxkcmVuIHx8IGxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dEhpZGRlbiwgeyBtdWx0aXBsZTogbWF4RmlsZXMgPyBtYXhGaWxlcyA+IDEgOiB0cnVlLCBhY2NlcHQ6IGFjY2VwdCB8fCBcIlwiLCBpbnB1dFJlZjogaW5wdXRSZWYsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2VJbnB1dCB9KSxcbiAgICAgICAgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID09PSBcImFmdGVyXCIgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVCdXR0b25zLCB7IGRpc2FibGVkOiBkaXNhYmxlZCwgYWJvcnRCdXR0b246IGlzVXBsb2FkaW5nID8gYWJvcnRCdXR0b24gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IGhhbmRsZUFib3J0VXBsb2FkLCBkZWxldGVCdXR0b246IGRlbGV0ZUJ1dHRvbiwgb25EZWxldGU6ICFpc1VwbG9hZGluZyA/IGhhbmRsZVJlc2V0IDogdW5kZWZpbmVkLCB1cGxvYWRCdXR0b246ICFpc1VwbG9hZGluZyAmJiAhYXV0b1VwbG9hZCA/IHVwbG9hZEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25VcGxvYWQ6ICFhdXRvVXBsb2FkID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gdXBsb2FkZmlsZXMobG9jYWxGaWxlcyk7IH0gOiB1bmRlZmluZWQsIGNsZWFuQnV0dG9uOiB2YWxpZGF0ZUZpbGVzRmxhZyAmJiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9DbGVhblxuICAgICAgICAgICAgICAgID8gY2xlYW5CdXR0b25cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgb25DbGVhbjogaGFuZGxlQ2xlYW4sIHN0eWxlOiBjb250YWluZXJTdHlsZSwgY2xhc3NOYW1lOiBjb250YWluZXJDbGFzc05hbWUsIHRvcDogZmFsc2UgfSkpKSk7XG59O1xuXG4vL1JlYWN0LkhUTUxQcm9wczxIVE1MRGl2RWxlbWVudD5cbnZhciBkZWZhdWx0QXZhdGFyUHJvcHMgPSB7XG4gICAgdmFyaWFudDogXCJzcXVhcmVcIixcbiAgICBhbHQ6IFwiYXZhdGFyXCIsXG4gICAgZW1wdHlMYWJlbDogXCJBZ3JlZ2FyIGZvdG9cIixcbiAgICBjaGFuZ2VMYWJlbDogXCJDYW1iaWFyIGZvdG9cIixcbiAgICBsb2FkaW5nTGFiZWw6IFwiTG9hZGluZy4uLlwiLFxuICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAvL3NtYXJ0OiBmYWxzZSxcbiAgICBzbWFydEltZ0ZpdDogXCJjZW50ZXJcIixcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMjAwcHg7XFxuICBoZWlnaHQ6IDIwMHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC40ODYpO1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyLnNxdWFyZSB7XFxuICBib3JkZXItcmFkaXVzOiAwcHg7XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyLmNpcmNsZSB7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyIC5mdWktYXZhdGFyLWltYWdlIHtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lcjpob3ZlciAuZnVpLWF2YXRhci1sYWJlbC5oaWRlIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyIC5mdWktYXZhdGFyLWxhYmVsIHtcXG4gIG1hcmdpbjogMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNDg2KTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGNvbG9yOiB3aGl0ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1sYWJlbC5oaWRlIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5mdWktYXZhdGFyLW1haW4tY29udGFpbmVyIC5mdWktYXZhdGFyLWxhYmVsOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzEsIDcxLCA3MSwgMC43NCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cIik7XG5cbnZhciB1c2VBdmF0YXJTdHlsZSA9IGZ1bmN0aW9uIChhdmF0YXJJZCwgYm9yZGVyUmFkaXVzKSB7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoXCJcIiksIGlkQXZhdGFyU3R5bGVzID0gX2FbMF0sIHNldElkQXZhdGFyU3R5bGVzID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzdHlsZUluamVjdGVkID0gX2JbMF0sIHNldFN0eWxlSW5qZWN0ZWQgPSBfYlsxXTtcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBjbGFzc05hbWVCb3JkZXIgPSBfY1swXSwgc2V0Q2xhc3NOYW1lQm9yZGVyID0gX2NbMV07XG4gICAgLy9jb25zb2xlLmxvZyhcImJvcmRlclJhZGl1c1wiLGJvcmRlclJhZGl1cyk7XG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBhIGR5bmFtaWMgY3NzIHNoZWV0IGZvciBhdmF0YXJcbiAgICAgKiBAcGFyYW0gYm9yZGVyUmFkaXVzIHRoZSBib3JkZXIgcmFkaXVzXG4gICAgICogQHJldHVybnMgYSBkeW5hbWljIGNzcyBzaGVldFxuICAgICAqL1xuICAgIHZhciBtYWtlRHluYW1pY0F2YXRhckNTU1J1bGVzID0gZnVuY3Rpb24gKGF2YXRhcklkLCBib3JkZXJSYWRpdXMpIHtcbiAgICAgICAgdmFyIGZpbmFsSWRTdHlsZSA9ICFib3JkZXJSYWRpdXMgPyBcIi1kZWZhdWx0XCIgOiBcIi1cIi5jb25jYXQoYXZhdGFySWQpO1xuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IER5bmFtaUNTUy5tYWtlU3R5bGVTaGVldCh7XG4gICAgICAgICAgICBpZDogXCJmdWktYXZhdGFyLXN0eWxlc1wiICsgZmluYWxJZFN0eWxlLFxuICAgICAgICAgICAgc2hlZXRSdWxlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItYm9yZGVyXCIgKyBmaW5hbElkU3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiXCIuY29uY2F0KGJvcmRlclJhZGl1cyB8fCBcIjZweFwiLCBcIiAhaW1wb3J0YW50XCIpLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdHlsZVNoZWV0O1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdmF0YXIsIGRlbGV0aW5nIGluaXRcIiwgc3R5bGVJbmplY3RlZCwgaWRBdmF0YXJTdHlsZXMpO1xuICAgICAgICAgICAgaWYgKHN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXZhdGFyLCBjYXRjaCBjc3MgZGVsZXRlXCIpO1xuICAgICAgICAgICAgICAgIER5bmFtaUNTUy5yZW1vdmVTdHlsZVNoZWV0KGlkQXZhdGFyU3R5bGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldElkQXZhdGFyU3R5bGVzKFwiXCIpO1xuICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZChmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvKiAgICAgIGlmICghYm9yZGVyUmFkaXVzKSB7XG4gICAgICAgICAgICAgICAgIER5bmFtaUNTUy5yZW1vdmVTdHlsZVNoZWV0KGlkQXZhdGFyU3R5bGVzKTtcbiAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgIH0gKi9cbiAgICAgICAgdmFyIGlkU3R5bGUgPSBcIlwiO1xuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IG1ha2VEeW5hbWljQXZhdGFyQ1NTUnVsZXMoYXZhdGFySWQsIGJvcmRlclJhZGl1cyk7XG4gICAgICAgIC8vY2hlY2sgaWYgZGVmYXVsdCBpcyBpbiBET01cbiAgICAgICAgaWYgKCFib3JkZXJSYWRpdXMgJiYgIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChEeW5hbWlDU1MuZXhpc3RTdHlsZVNoZWV0KFwiZnVpLWF2YXRhci1zdHlsZXMtZGVmYXVsdFwiKSkge1xuICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2V0SWRBdmF0YXJTdHlsZXMoXCJmdWktYXZhdGFyLXN0eWxlcy1kZWZhdWx0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgICAgIHNldElkQXZhdGFyU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgICAgIGlmIChpZFN0eWxlICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAvLyBjaGVjayBpZiBjbGFzc25hbWUgd2FzIGFkZGVkXG4gICAgICAgICAgICAvLyBpZiB5ZXMsIGVkaXQgY3NzXG4gICAgICAgICAgICAvLyBpZiBub3QgaW5zZXJ0IGNzc1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgbm8gY3NzLCBpbnNlcnRpbmdcIik7XG4gICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXZhdGFyLCBubyBjc3MsIGluc2VydGVkIE9LXCIsIGlkU3R5bGUpO1xuICAgICAgICAgICAgc2V0SWRBdmF0YXJTdHlsZXMoaWRTdHlsZSk7XG4gICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXZhdGFyLCBjYXRjaCBjc3MsIG1vZGlmaXlpbmdcIiwgaWRBdmF0YXJTdHlsZXMpO1xuICAgICAgICAgICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0KGlkQXZhdGFyU3R5bGVzLCBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIHNldENsYXNzTmFtZUJvcmRlcihcImZ1aS1hdmF0YXItYm9yZGVyLVwiICsgYXZhdGFySWQpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbYm9yZGVyUmFkaXVzXSk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZUJvcmRlcjtcbn07XG5cbnZhciBCYXNlUHJlcGFyaW5nTG9hZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICAvL29uQ2xpY2ssXG4gICAgc3R5bGUgPSBwcm9wcy5zdHlsZSwgXG4gICAgLy9jbGFzc05hbWUsXG4gICAgcmFkaXVzID0gcHJvcHMucmFkaXVzLCB4ID0gcHJvcHMueCwgeSA9IHByb3BzLnksIHdpZHRoID0gcHJvcHMud2lkdGg7XG4gICAgdmFyIGZpbmFsUmFkaXVzID0gcmFkaXVzIHx8IDQ2O1xuICAgIHZhciBmaW5hbFggPSB4IHx8IDUwO1xuICAgIHZhciBmaW5hbFkgPSB5IHx8IDUwO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgeG1sbnNYbGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBzdHlsZTogZmluYWxTdHlsZSwgdmlld0JveDogXCIwIDAgMTAwIDEwMFwiLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBcInhNaWRZTWlkXCIgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImNpcmNsZVwiLCB7IGN4OiBcIlwiLmNvbmNhdChmaW5hbFgpLCBjeTogXCJcIi5jb25jYXQoZmluYWxZKSwgcjogXCJcIi5jb25jYXQoZmluYWxSYWRpdXMpLCBmaWxsOiBcIm5vbmVcIiwgc3Ryb2tlOiBjb2xvciB8fCBcIiMxNGZmMDBcIiwgc3Ryb2tlV2lkdGg6IFwiXCIuY29uY2F0KHdpZHRoIHx8IDgsIFwicHhcIiksIHN0cm9rZURhc2hhcnJheTogXCIxNjQuOTMzNjE0MzEzNDY0MTUgMTAwLjk3Nzg3MTQzNzgyMTM4XCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhbmltYXRlVHJhbnNmb3JtXCIsIHsgYXR0cmlidXRlTmFtZTogXCJ0cmFuc2Zvcm1cIiwgdHlwZTogXCJyb3RhdGVcIiwgcmVwZWF0Q291bnQ6IFwiaW5kZWZpbml0ZVwiLCBkdXI6IFwiMXNcIiwgdmFsdWVzOiBcIjAgXCIuY29uY2F0KGZpbmFsWCwgXCIgXCIpLmNvbmNhdChmaW5hbFgsIFwiOzM2MCBcIikuY29uY2F0KGZpbmFsWCwgXCIgXCIpLmNvbmNhdChmaW5hbFgpLCBrZXlUaW1lczogXCIwOzFcIiB9KSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1sb2FkZXItY29udGFpbmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40MSk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmZpbGVzLXVpLWxvYWRlci1jb250YWluZXIuY2xpY2thYmxlIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmZpbGVzLXVpLWxvYWRlci1jb250YWluZXI6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYxKTtcXG59XCIpO1xuXG52YXIgTG9hZGVyQ29udGFpbmVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgc3R5bGUgPSBwcm9wcy5zdHlsZSwgc2l6ZSA9IHByb3BzLnNpemUsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrO1xuICAgIHZhciBmaW5hbFNpemUgPSBzaXplID8gcGFyc2VTaXplKHNpemUpIDogdW5kZWZpbmVkO1xuICAgIC8vY29uc3QgaXNDbGlja2FibGUgPSBvbkNsaWNrICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gb25DbGlja1xuICAgICAgICA/IFwiZmlsZXMtdWktbG9hZGVyLWNvbnRhaW5lciBjbGlja2FibGVcIlxuICAgICAgICA6IFwiZmlsZXMtdWktbG9hZGVyLWNvbnRhaW5lclwiO1xuICAgIHZhciBoYW5kbGVDbGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7XG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBvbkNsaWNrOiBoYW5kbGVDbGljaywgY2xhc3NOYW1lOiBjbGFzc05hbWUgPyBcIlwiLmNvbmNhdChmaW5hbENsYXNzTmFtZSwgXCIgXCIpLmNvbmNhdChjbGFzc05hbWUpIDogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIHN0eWxlKSwgeyBoZWlnaHQ6IGZpbmFsU2l6ZSwgd2lkdGg6IGZpbmFsU2l6ZSB9KSB9LCBjaGlsZHJlbikpO1xufTtcblxudmFyIEluZmluaXRlTG9hZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBcbiAgICAvL3RleHQsXG4gICAgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KExvYWRlckNvbnRhaW5lciwgeyBvbkNsaWNrOiBvbkNsaWNrLCBzaXplOiBzaXplIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJhc2VQcmVwYXJpbmdMb2FkZXIsIHsgc2l6ZTogc2l6ZSB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICB9IH0sIG9uQ2xpY2sgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjc1KVwiLCBzaXplOiA0NSwgb25DbGljazogb25DbGljayB9KSkpKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG59XCIpO1xuXG52YXIgTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCB2aXNpYmxlID0gcHJvcHMudmlzaWJsZSwgb3RoZXJQcm9wcyA9IF9fcmVzdChwcm9wcywgW1wic3R5bGVcIiwgXCJjbGFzc05hbWVcIiwgXCJjaGlsZHJlblwiLCBcInZpc2libGVcIl0pO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShjbGFzc05hbWUgfHwgXCJcIiwgXCJmaWxlcy11aS1sYXllclwiKTtcbiAgICBpZiAodmlzaWJsZSlcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduJDEoeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUgfSwgb3RoZXJQcm9wcyksIGNoaWxkcmVuKSk7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG52YXIgSW1hZ2VQcmV2aWV3RGVmYXVsdFByb3BzID0ge1xuICAgIC8vd2lkdGg6IFwiMTAwJVwiLFxuICAgIC8vaGVpZ2h0OiBcIjEwMCVcIixcbiAgICBhbHQ6IFwiaW1hZ2UtcHJldmlld1wiLFxuICAgIC8vY2xhc3NOYW1lOiBcImZ1aS1pbWFnZS1wcmV2aWV3XCJcbiAgICBzbWFydEltZ0ZpdDogXCJvcmllbnRhdGlvblwiXG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZnVpLWltYWdlLXByZXZpZXcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG59XCIpO1xuXG52YXIgSW1hZ2VQcmV2aWV3ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gbWVyZ2VQcm9wcyhwcm9wcywgSW1hZ2VQcmV2aWV3RGVmYXVsdFByb3BzKSwgc3JjID0gX2Euc3JjLCBhbHQgPSBfYS5hbHQsIHdpZHRoID0gX2Eud2lkdGgsIGhlaWdodCA9IF9hLmhlaWdodCwgb25FcnJvciA9IF9hLm9uRXJyb3IsIFxuICAgIC8vc21hcnQsXG4gICAgc21hcnRJbWdGaXQgPSBfYS5zbWFydEltZ0ZpdCwgc3R5bGUgPSBfYS5zdHlsZSwgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lO1xuICAgIC8vY29uc29sZS5sb2coXCJJbWFnZVByZXZpZXcgc21hcnRJbWdGaXRcIixzbWFydEltZ0ZpdCk7XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoW3VuZGVmaW5lZCwgdW5kZWZpbmVkXSksIF9jID0gX2JbMF0sIGZpbmFsSGVpZ2h0ID0gX2NbMF0sIGZpbmFsV2lkdGggPSBfY1sxXSwgc2V0ZmluYWxEaW1lbnNpb25zID0gX2JbMV07XG4gICAgLy8vL2NvbnNvbGUudGFibGUoeyBzcmMsIGFsdCwgY2xhc3NOYW1lLCBzdHlsZSwgd2lkdGgsIGhlaWdodCB9KTtcbiAgICB2YXIgX2QgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBzb3VyY2UgPSBfZFswXSwgc2V0U291cmNlID0gX2RbMV07XG4gICAgLyogIGNvbnN0IFtvcmllbnRhdGlvbiwgc2V0T3JpZW50YXRpb25dID0gUmVhY3QudXNlU3RhdGU8XG4gICAgICBcImxhbmRzY2FwZVwiIHwgXCJwb3J0cmFpdFwiIHwgdW5kZWZpbmVkXG4gICAgPih1bmRlZmluZWQpOyAqL1xuICAgIHZhciBnZXRTb3VyY2UgPSBmdW5jdGlvbiAoc3JjKSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBuZXdJbWFnZVNyYztcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCByZWFkQXNEYXRhVVJMKHNyYyldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgbmV3SW1hZ2VTcmMgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldFN0clNvdXJjZShuZXdJbWFnZVNyYyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgdmFyIGhhbmRsZVNldFN0clNvdXJjZSA9IGZ1bmN0aW9uIChpbWFnZVNvdXJjZSkgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZmluYWxIZWlnaHQsIGZpbmFsV2lkdGgsIG9yaWVudGF0aW9uXzE7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZVNldFN0clNvdXJjZVwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZVNvdXJjZSA9PT0gXCJcIiB8fCAhaW1hZ2VTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVTZXRTdHJTb3VyY2UgcmV0dXJuXCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbEhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhc21hcnRJbWdGaXQpIHJldHVybiBbMyAvKmJyZWFrKi8sIDFdO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlU2V0U3RyU291cmNlIG5vIGltZ2ZpdFwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vaWYgbm90IGdpdmVuXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzEsIDMsICwgNF0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBnZXRJbWFnZU9yaWVudGF0aW9uKGltYWdlU291cmNlKV07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbl8xID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlU2V0U3RyU291cmNlIG9yaWVudGF0aW9uIG9idGFpbmVkXCIsIG9yaWVudGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uXzEgPT09IFwibGFuZHNjYXBlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbWFydEltZ0ZpdCA9PT0gXCJvcmllbnRhdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNtYXJ0SW1nRml0ID09PSBcImNlbnRlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgc2V0ZmluYWxEaW1lbnNpb25zKFtmaW5hbEhlaWdodCwgZmluYWxXaWR0aF0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRTb3VyY2UoaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vaWYgbm90IHVuZGVmaW5lZFxuICAgICAgICBpZiAoIXNyYylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiSW1hZ2VQcmV2aWV3IFRoZXJlIGlzIHNvdXJjZSA6RFwiKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzcmMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIC8vaWYgYSB1cmwgc3RyaW5nIGlzIGdpdmVuLCBhc3NpZ24gaXQgZGlyZWN0bHlcbiAgICAgICAgICAgIGhhbmRsZVNldFN0clNvdXJjZShzcmMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9pZiBhIEZpbGUgb2JqZWN0IGlzIGdpdmVuLCBjaGVjayBpZiBpcyBhIHN1cHBvcnRlZCBmb3JtYXQgYW5kIHJlYWQgaXRcbiAgICAgICAgICAgIHZhciBoZWFkZXJNaW1lID0gc3JjLnR5cGUgPyBzcmMudHlwZS5zcGxpdChcIi9cIilbMF0gOiBcIm9jdGV0XCI7XG4gICAgICAgICAgICBpZiAoaGVhZGVyTWltZSA9PT0gXCJpbWFnZVwiKSB7XG4gICAgICAgICAgICAgICAgLy9zZXQgdGhlIGltYWdlIHNvdXJjZSBhbmQgY3JlYXRlIHRoZSB1cmkgc3RyaW5nIGlmIGl0J3MgYSBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0XG4gICAgICAgICAgICAgICAgZ2V0U291cmNlKHNyYyk7XG4gICAgICAgICAgICAgICAgLy9pZiBub3QgaW1hZ2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtzcmNdKTtcbiAgICAvLy8vY29uc29sZS5sb2coXCJJbWFnZVByZXZpZXdcIiwgc3JjLCBzb3VyY2UpO1xuICAgIC8qIGNvbnN0IGZpbmFsV2lkdGg6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCA9XG4gICAgICB3aWR0aCB8fCAob3JpZW50YXRpb24gPT09IFwibGFuZHNjYXBlXCIgJiYgc21hcnQgPyBcIjEwMCVcIiA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZmluYWxIZWlnaHQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCA9XG4gICAgICBoZWlnaHQgfHwgKG9yaWVudGF0aW9uID09PSBcInBvcnRyYWl0XCIgJiYgc21hcnQgPyBcIjEwMCVcIiA6IHVuZGVmaW5lZCk7ICovXG4gICAgLy9jb25zb2xlLmxvZyhcIkltYWdlIHJlc3VsdFwiLCBzcmMsIHNvdXJjZSwgZmluYWxIZWlnaHQsIGZpbmFsV2lkdGgpO1xuICAgIHZhciBoYW5kbGVFcnJvciA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZUVycm9yXCIsIG9uRXJyb3IpO1xuICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICB9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgc3JjICYmIHNvdXJjZSAmJiAoZmluYWxIZWlnaHQgfHwgZmluYWxXaWR0aCkgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgeyBcbiAgICAgICAgLy9vbkxvYWQ9e2hhbmRsZUxvYWR9XG4gICAgICAgIHN0eWxlOiBzdHlsZSB8fCB7fSwgb25DbGljazogZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0sIHdpZHRoOiBmaW5hbFdpZHRoLCBoZWlnaHQ6IGZpbmFsSGVpZ2h0LCBzcmM6IHNvdXJjZSwgYWx0OiBhbHQsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBvbkVycm9yOiBoYW5kbGVFcnJvciB9KSkpKTtcbn07XG5cbi8qKlxuICpcbiAqIERlbW9zOlxuICpcbiAqIC0gW0F2YXRhcl0oaHR0cHM6Ly93d3cuZmlsZXMtdWkuY29tL2NvbXBvbmVudHMvYXZhdGFyKVxuICpcbiAqIEFQSTpcbiAqXG4gKiAtIFtBdmF0YXIgQVBJXShodHRwczovL3d3dy5maWxlcy11aS5jb20vYXBpL2F2YXRhci8pXG4gKi9cbnZhciBBdmF0YXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2EgPSBtZXJnZVByb3BzKHByb3BzLCBkZWZhdWx0QXZhdGFyUHJvcHMpLCByZWFkT25seSA9IF9hLnJlYWRPbmx5LCBzcmMgPSBfYS5zcmMsIGFsdCA9IF9hLmFsdCwgYWNjZXB0ID0gX2EuYWNjZXB0LCBvbkNoYW5nZSA9IF9hLm9uQ2hhbmdlLCBlbXB0eUxhYmVsID0gX2EuZW1wdHlMYWJlbCwgY2hhbmdlTGFiZWwgPSBfYS5jaGFuZ2VMYWJlbCwgdmFyaWFudCA9IF9hLnZhcmlhbnQsIGJvcmRlclJhZGl1cyA9IF9hLmJvcmRlclJhZGl1cywgdXBsb2FkaW5nTGFiZWwgPSBfYS5sb2FkaW5nTGFiZWwsIGlzVWxvYWRpbmcgPSBfYS5pc0xvYWRpbmcsIG9uRXJyb3IgPSBfYS5vbkVycm9yLCBzbWFydEltZ0ZpdCA9IF9hLnNtYXJ0SW1nRml0LCBzdHlsZSA9IF9hLnN0eWxlLCByZXN0ID0gX19yZXN0KF9hLCBbXCJyZWFkT25seVwiLCBcInNyY1wiLCBcImFsdFwiLCBcImFjY2VwdFwiLCBcIm9uQ2hhbmdlXCIsIFwiZW1wdHlMYWJlbFwiLCBcImNoYW5nZUxhYmVsXCIsIFwidmFyaWFudFwiLCBcImJvcmRlclJhZGl1c1wiLCBcImxvYWRpbmdMYWJlbFwiLCBcImlzTG9hZGluZ1wiLCBcIm9uRXJyb3JcIiwgXCJzbWFydEltZ0ZpdFwiLCBcInN0eWxlXCJdKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiQXZhdGFyIHNtYXJ0SW1nRml0XCIsIHNtYXJ0SW1nRml0KTtcbiAgICB2YXIgaW5wdXRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgLy9jb25zdCBhdmF0YXJJZCA9IFJlYWN0LnVzZUlkKCk7XG4gICAgdmFyIGF2YXRhcklkID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCkgKyBcIlwiOyB9LCBbXSk7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lQm9yZGVyID0gdXNlQXZhdGFyU3R5bGUoYXZhdGFySWQucmVwbGFjZShcIjpcIiwgXCJcIikucmVwbGFjZShcIjpcIiwgXCJcIiksIGJvcmRlclJhZGl1cyk7XG4gICAgLy9jb25zb2xlLmxvZyhcImZpbmFsQ2xhc3NOYW1lQm9yZGVyXCIsIGZpbmFsQ2xhc3NOYW1lQm9yZGVyKTtcbiAgICB2YXIgaGFuZGxlQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gYWxlcnQoXCJBZ3JlZ2FyIGZvdG9vb29vb29cIik7XG4gICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGljaygpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZUNoYW5nZUlucHV0ID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICB2YXIgZmlsZUxpc3QgPSBldnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICB2YXIgZmlsZUxpc3RPdXRwdXQgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGYgPSB2b2lkIDA7IChmID0gZmlsZUxpc3RbaV0pOyBpKyspIHtcbiAgICAgICAgICAgIGZpbGVMaXN0T3V0cHV0LnB1c2goZik7XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGZpbGVMaXN0T3V0cHV0WzBdKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVFcnJvciA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkF2YXRhciBlcnJvclwiLCBldnQpO1xuICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoZXZ0KTtcbiAgICB9O1xuICAgIGlmICghZmluYWxDbGFzc05hbWVCb3JkZXIpXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbiQxKHsgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItbWFpbi1jb250YWluZXJcIi5jb25jYXQodmFyaWFudCA9PT0gXCJjaXJjbGVcIiA/IFwiIGNpcmNsZVwiIDogXCJcIiwgXCIgXCIpLmNvbmNhdChmaW5hbENsYXNzTmFtZUJvcmRlciksIHN0eWxlOiBzdHlsZSB9LCByZXN0KSxcbiAgICAgICAgICAgICAgICBpc1Vsb2FkaW5nID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItbGFiZWxcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbmZpbml0ZUxvYWRlciwgeyBzaXplOiA1MCB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGluZ0xhYmVsKSkpIDogc3JjID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW1hZ2VQcmV2aWV3LCB7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWltYWdlXCIsIHNyYzogc3JjLCBhbHQ6IGFsdCwgb25FcnJvcjogaGFuZGxlRXJyb3IsIHNtYXJ0SW1nRml0OiBzbWFydEltZ0ZpdCB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWxhYmVsXCIgfSwgZW1wdHlMYWJlbCkpLFxuICAgICAgICAgICAgICAgICFyZWFkT25seSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgIWlzVWxvYWRpbmcgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1sYWJlbCBoaWRlXCIsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrIH0sIHNyYyA/IGNoYW5nZUxhYmVsIDogZW1wdHlMYWJlbCkpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KElucHV0SGlkZGVuLCB7IG11bHRpcGxlOiBmYWxzZSwgYWNjZXB0OiBhY2NlcHQgfHwgXCJpbWFnZS8qXCIsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2VJbnB1dCwgaW5wdXRSZWY6IGlucHV0UmVmIH0pKSkpKSk7XG4gICAgfVxufTtcbi8qKlxuICogY3JlYXRlcyBhIGR5bmFtaWMgY3NzIHNoZWV0IGZvciBhdmF0YXJcbiAqIEBwYXJhbSBib3JkZXJSYWRpdXMgdGhlIGJvcmRlciByYWRpdXNcbiAqIEByZXR1cm5zIGEgZHluYW1pYyBjc3Mgc2hlZXRcbiAqL1xuLyogY29uc3QgbWFrZUR5bmFtaWNBdmF0YXJDU1NSdWxlcyA9IChcbiAgYm9yZGVyUmFkaXVzOiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IER5bmFtaWNTaGVldCA9PiB7XG4gIGNvbnN0IHN0eWxlU2hlZXQ6IER5bmFtaWNTaGVldCA9IER5bmFtaUNTUy5tYWtlU3R5bGVTaGVldCh7XG4gICAgaWQ6IFwiYXZhdGFyLXN0eWxlc1wiLFxuICAgIHNoZWV0UnVsZXM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItYm9yZGVyXCIsXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuICByZXR1cm4gc3R5bGVTaGVldDtcbn07ICovXG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODU4KTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG1pbi1oZWlnaHQ6IDEwMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB3aWR0aDogMzIwcHg7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIge1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHdpZHRoOiAzMjBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXG4gIGdhcDogNXB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTAwcHg7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciAuZmlsZS1jYXJkLWljb24tbGF5ZXIge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAxMDBweDtcXG4gIGhlaWdodDogMTAwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWljb24tY29udGFpbmVyIC5maWxlLWNhcmQtaWNvbi1sYXllciBpbWcge1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWljb24tY29udGFpbmVyIC5maWxlLWNhcmQtaWNvbi1sYXllci5ibHVyIGltZyB7XFxuICBmaWx0ZXI6IGJsdXIoNHB4KTtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAyMDAlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciAuZmlsZS1jYXJkLXN0YXR1cy1sYXllciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgcGFkZGluZzogNXB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtZGF0YSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGxpbmUtaGVpZ2h0OiAxOXB4O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAxMDBweCk7XFxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XFxuICBjb2xvcjogYmxhY2s7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEuZGFyay1tb2RlIHtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEgLmZpbGUtY2FyZC1zaXplIHtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBmb250LXNpemU6IDAuOXJlbTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtZGF0YSAuZmlsZS1jYXJkLW5hbWUge1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAtd2Via2l0LWxpbmUtY2xhbXA6IDE7IC8qIG51bWJlciBvZiBsaW5lcyB0byBzaG93ICovXFxuICBsaW5lLWNsYW1wOiAxO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtZGF0YSAuZmlsZS1jYXJkLW5hbWUubm90LWFsbG93ZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxODAsIDE2LCAxNiwgMC43KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtdXBsb2FkLWxheWVyLWNvbnRhaW5lciB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjIpLCByZ2JhKDAsIDAsIDAsIDAuMzUpLCByZ2JhKDAsIDAsIDAsIDAuNjI1KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSkpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC4yKSwgcmdiYSgwLCAwLCAwLCAwLjMpLCByZ2JhKDAsIDAsIDAsIDAuNCksIHJnYmEoMCwgMCwgMCwgMC43NSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSk7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbyB7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gMTAwcHgpO1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIHNjcm9sbGJhci1jb2xvcjogcmdiYSgxMDAsIDEwOCwgMTI3LCAwLjY2Mjc0NTA5OCkgdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvOjotd2Via2l0LXNjcm9sbGJhciB7XFxuICB3aWR0aDogOXB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbzo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMTA4LCAxMjcsIDAuNjYyNzQ1MDk4KTtcXG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XFxuICBib3JkZXI6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbyAuZmlsZXMtdWktZmlsZS1jYXJkLWluZm8tbGF5ZXItaGVhZGVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIC8qICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDU7XFxuICByaWdodDogNTsgKi9cXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8gLmhlYWRpbmcge1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIHBhZGRpbmc6IDAgNXB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbyAubGFiZWwge1xcbiAgcGFkZGluZzogMCA1cHg7XFxuICBmb250LXdlaWdodDogMzk5O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmNsaWNrYWJsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi8qIC5maWxlcy11aS1maWxlLWljb24ge1xcbiAgZm9udC1zaXplOiAwLjdyZW07XFxuICBtaW4td2lkdGg6IDE5cHg7XFxuICBtaW4taGVpZ2h0OiAxOXB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC42NSk7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICAmOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjg1KTtcXG4gIH1cXG4gICYuZGFyay1tb2RlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjY1KTtcXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjg1KTtcXG4gICAgfVxcbiAgfVxcbn0gKi9cIik7XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1maWxlLWljb24ge1xcbiAgZm9udC1zaXplOiAwLjdyZW07XFxuICBtaW4td2lkdGg6IDE5cHg7XFxuICBtaW4taGVpZ2h0OiAxOXB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC42NSk7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjg1KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaWNvbi5kYXJrLW1vZGUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjY1KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaWNvbi5kYXJrLW1vZGU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjg1KTtcXG59XCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZSB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEyMTIxMjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTAge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTMge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tNCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA5KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA5KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi01IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi02IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTcge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tOCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi05IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTEwIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTExIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTEyIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTEzIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTE0IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTE1IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTE2IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTE3IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTE4IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTE5IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTIwIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTIxIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTIyIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTIzIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTI0IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMCB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xIHtcXG4gIGJveC1zaGFkb3c6IDBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTIge1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMyB7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi00IHtcXG4gIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi01IHtcXG4gIGJveC1zaGFkb3c6IDBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi02IHtcXG4gIGJveC1zaGFkb3c6IDBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNyB7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTgge1xcbiAgYm94LXNoYWRvdzogMHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi05IHtcXG4gIGJveC1zaGFkb3c6IDBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTAge1xcbiAgYm94LXNoYWRvdzogMHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTEge1xcbiAgYm94LXNoYWRvdzogMHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTIge1xcbiAgYm94LXNoYWRvdzogMHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTMge1xcbiAgYm94LXNoYWRvdzogMHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTQge1xcbiAgYm94LXNoYWRvdzogMHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTUge1xcbiAgYm94LXNoYWRvdzogMHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTYge1xcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE3IHtcXG4gIGJveC1zaGFkb3c6IDBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xOCB7XFxuICBib3gtc2hhZG93OiAwcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTkge1xcbiAgYm94LXNoYWRvdzogMHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTIwIHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMjEge1xcbiAgYm94LXNoYWRvdzogMHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yMiB7XFxuICBib3gtc2hhZG93OiAwcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTIzIHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMjQge1xcbiAgYm94LXNoYWRvdzogMHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cIik7XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlLWNhcmQtcmlnaHQtbGF5ZXItaGVhZGVyIHtcXG4gIG1hcmdpbi10b3A6IDNweDtcXG4gIG1hcmdpbi1yaWdodDogM3B4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiB1bnNldDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGdhcDogMnB4O1xcbn1cXG5cXG4uZmlsZS1jYXJkLXJpZ2h0LWxheWVyLWZvb3RlciB7XFxuICBtYXJnaW4tYm90dG9tOiAzcHg7XFxuICBtYXJnaW4tcmlnaHQ6IDNweDtcXG4gIGxlZnQ6IHVuc2V0O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgZ2FwOiAycHg7XFxuICBib3R0b206IDA7XFxuICByaWdodDogMDtcXG59XCIpO1xuXG52YXIgRmlsZUNhcmRSaWdodEFjdGlvbnMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgZGFya01vZGUgPSBwcm9wcy5kYXJrTW9kZSwgZGVsZXRlSWNvbiA9IHByb3BzLmRlbGV0ZUljb24sIGRvd25sb2FkSWNvbiA9IHByb3BzLmRvd25sb2FkSWNvbiwgaW1hZ2VJY29uID0gcHJvcHMuaW1hZ2VJY29uLCBpbmZvSWNvbiA9IHByb3BzLmluZm9JY29uLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvbkRvd25sb2FkID0gcHJvcHMub25Eb3dubG9hZCwgb25PcGVuSW5mbyA9IHByb3BzLm9uT3BlbkluZm8sIG9uU2VlID0gcHJvcHMub25TZWUsIG9uV2F0Y2ggPSBwcm9wcy5vbldhdGNoLCB2aWRlb0ljb24gPSBwcm9wcy52aWRlb0ljb24sIGlzQWN0aXZlID0gcHJvcHMuaXNBY3RpdmUsIHZpc2libGUgPSBwcm9wcy52aXNpYmxlO1xuICAgIGlmICh2aXNpYmxlKVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1yaWdodC1sYXllci1oZWFkZXJcIiB9LCBpc0FjdGl2ZSAmJiBkZWxldGVJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNsYXNzTmFtZTogZGFya01vZGUgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIiA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbkRlbGV0ZSwgc2l6ZTogXCJzbWFsbFwiLCBjb2xvckZpbGw6IFwidHJhbnNwYXJlbnRcIiB9KSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtcmlnaHQtbGF5ZXItZm9vdGVyXCIgfSwgaXNBY3RpdmUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgaW1hZ2VJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc2liaWxpdHksIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25TZWUsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgdmlkZW9JY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFBsYXlJY29uLCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uV2F0Y2gsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgZG93bmxvYWRJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERvd25sb2FkRmlsZSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbkRvd25sb2FkLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIGluZm9JY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEluZm9EaXNuZXksIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBvbkNsaWNrOiBvbk9wZW5JbmZvLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgc2l6ZTogXCJtaWNyb1wiIH0pKSkpKSkpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbnZhciBGaWxlQ2FyZEluZm9MYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBcbiAgICAvL3ZhbGlkLFxuICAgIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgb25DbG9zZUluZm8gPSBwcm9wcy5vbkNsb3NlSW5mbywgXG4gICAgLy8gdXBsb2FkU3RhdHVzLFxuICAgIGxvY2FsTmFtZSA9IHByb3BzLmxvY2FsTmFtZSwgc2l6ZUZvcm1hdHRlZCA9IHByb3BzLnNpemVGb3JtYXR0ZWQsIGxvY2FsVHlwZSA9IHByb3BzLmxvY2FsVHlwZTtcbiAgICB2YXIgRmlsZUl0ZW1Mb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgdmFyIF9hID0gRmlsZUl0ZW1Mb2NhbGl6ZXIuZnVsbEluZm9MYXllciwgbmFtZUxhYmVsID0gX2EubmFtZSwgc2l6ZUxhYmVsID0gX2Euc2l6ZSwgdHlwZUxhYmVsID0gX2EudHlwZTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWZpbGUtaW5mb1wiIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FuY2VsLCB7IHN0eWxlOiB7IG1hcmdpbjogMCwgcmlnaHQ6IDUsIHRvcDogMCwgcG9zaXRpb246IFwiYWJzb2x1dGVcIiB9LCBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIiwgb25DbGljazogb25DbG9zZUluZm8sIGNvbG9yRmlsbDogXCJibGFja1wiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCBuYW1lTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgbG9jYWxOYW1lKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgc2l6ZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIHNpemVGb3JtYXR0ZWQpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCB0eXBlTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgbG9jYWxUeXBlKSkpO1xufTtcblxudmFyIEFib3J0ZWRTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEb0Rpc3R1cmIsIHsgY29sb3I6IFwiI2Y0NDMzNlwiLCBzaXplOiBzaXplIHx8IDY1IH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLFxuICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5hYm9ydGVkKSkpO1xufTtcblxudmFyIEVtcHR5U3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGhlaWdodCA9IHByb3BzLmhlaWdodDtcbiAgICB2YXIgZmluYWxIZWlnaHQgPSAhaGVpZ2h0XG4gICAgICAgID8gXCIxMzJweFwiXG4gICAgICAgIDogdHlwZW9mIGhlaWdodCA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyBcIlwiLmNvbmNhdChoZWlnaHQsIFwicHhcIilcbiAgICAgICAgICAgIDogaGVpZ2h0O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB7IHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBmaW5hbEhlaWdodCB9IH0pKSk7XG59O1xuXG52YXIgRXJyb3JTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuNClcIiwgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwicmdiYSgyNDQsIDY3LCA1NCwgMC44KVwiLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogXCI1MCVcIixcbiAgICAgICAgICAgIH0sIHNpemU6IHNpemUgfHwgNjUgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsXG4gICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLmVycm9yKSkpO1xufTtcblxudmFyIFByZXBhcmluZ1N0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHNpemUgPSBwcm9wcy5zaXplO1xuICAgIHZhciBGaWxlSXRlbVN0YXR1c0xvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5zdGF0dXM7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEluZmluaXRlTG9hZGVyLCB7IG9uQ2xpY2s6IG9uQ2FuY2VsLCBzaXplOiBzaXplIHx8IDY1IH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5wcmVwYXJpbmcpKSk7XG59O1xuXG52YXIgU3VjY2Vzc1N0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHNpemUgPSBwcm9wcy5zaXplO1xuICAgIHZhciBGaWxlSXRlbVN0YXR1c0xvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5zdGF0dXM7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrQ2lyY2xlLCB7IGNvbG9yOiBcIiM0Y2FmNTBcIiwgc2l6ZTogc2l6ZSB8fCA2NSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCxcbiAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuc3VjY2VzcykpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcInRleHQuZmlsZXMtdWktdGV4dC1keW5hbWljLWxvYWRlciB7XFxuICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xcbiAgZm9udC1zaXplOiAxZW07XFxuICBmaWxsOiBhbGljZWJsdWU7XFxufVwiKTtcblxudmFyIER5bmFtaWNMb2FkZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIC8vb25DbGljayxcbiAgICBzdHlsZSA9IHByb3BzLnN0eWxlLCBcbiAgICAvL2NsYXNzTmFtZSxcbiAgICBwZXJjZW50YWdlID0gcHJvcHMucGVyY2VudGFnZSwgaGlkZVBlcm5jZW50YWdlID0gcHJvcHMuaGlkZVBlcm5jZW50YWdlLCByYWRpdXMgPSBwcm9wcy5yYWRpdXMsIHggPSBwcm9wcy54LCB5ID0gcHJvcHMueSwgd2lkdGggPSBwcm9wcy53aWR0aCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2s7XG4gICAgLy9jb25zb2xlLnRhYmxlKHByb3BzKTtcbiAgICAvLy8vY29uc29sZS5sb2coXCJwZXJjZW50YWdlXCIsIHBlcmNlbnRhZ2UpO1xuICAgIHZhciBmaW5hbFJhZGl1cyA9IHJhZGl1cyB8fCAyODtcbiAgICB2YXIgZmluYWxYID0geCB8fCAzMDtcbiAgICB2YXIgZmluYWxZID0geSB8fCAzMDtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHZhciBjaXJjbGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgZnVuY3Rpb24gc2V0UHJvZ3Jlc3MocGVyY2VudCwgbXlDaXJjbGUsIGNpcmN1bWZlcmVuY2UpIHtcbiAgICAgICAgbXlDaXJjbGUuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IFwiXCIuY29uY2F0KGNpcmN1bWZlcmVuY2UgKiAoMSAtIHBlcmNlbnQgLyAxMDApKTtcbiAgICAgICAgLy9teUNpcmNsZS5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gYDBgO1xuICAgICAgICAvKiBsZXQgcGN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwY3RcIik7XG4gICAgICAgIHBjdC5pbm5lckhUTUwgPSBwZXJjZW50LnRvRml4ZWQoMCkgKyBcIiVcIjsgKi9cbiAgICB9XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG15Q2lyY2xlID0gY2lyY2xlUmVmLmN1cnJlbnQ7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJwZXJjZW50YWdlIHVzZUVmZmVjdFwiLCBwZXJjZW50YWdlKTtcbiAgICAgICAgaWYgKG15Q2lyY2xlICE9PSBudWxsICYmXG4gICAgICAgICAgICBteUNpcmNsZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBwZXJjZW50YWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBjaXJjdW1mZXJlbmNlID0gMiAqIE1hdGguUEkgKiBteUNpcmNsZS5yLmJhc2VWYWwudmFsdWU7XG4gICAgICAgICAgICBteUNpcmNsZS5zdHlsZS5zdHJva2VEYXNoYXJyYXkgPSBcIlwiLmNvbmNhdChjaXJjdW1mZXJlbmNlLCBcIiAxMDAwXCIpO1xuICAgICAgICAgICAgc2V0UHJvZ3Jlc3MocGVyY2VudGFnZSA+PSAxMDAgPyAxMDAgOiBwZXJjZW50YWdlLCBteUNpcmNsZSwgY2lyY3VtZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9LCBbcGVyY2VudGFnZV0pO1xuICAgIGlmIChwZXJjZW50YWdlICE9PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkZXJDb250YWluZXIsIHsgc2l6ZTogc2l6ZSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBcImR1aV9zdmdfY2lyY2xlX2xvYWRlclwiLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB4bWxuc1hsaW5rOiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHN0eWxlOiBmaW5hbFN0eWxlIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjaXJjbGVcIiwgeyBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJyb3RhdGUoLTkwZGVnKVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHN0cm9rZTogY29sb3IgfHwgXCIjMTRmZjAwXCIsIGN4OiBcIlwiLmNvbmNhdChmaW5hbFgpLCBjeTogXCJcIi5jb25jYXQoZmluYWxZKSwgcjogXCJcIi5jb25jYXQoZmluYWxSYWRpdXMpLCBzdHJva2VXaWR0aDogXCJcIi5jb25jYXQod2lkdGggfHwgOCwgXCJweFwiKSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NsYXNzTmFtZT1cImNpcmNsZV9sb2FkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY2lyY2xlXCIsIHJlZjogY2lyY2xlUmVmLCBmaWxsOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgIWhpZGVQZXJuY2VudGFnZSAmJiBwZXJjZW50YWdlICE9PSB1bmRlZmluZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLXRleHQtZHluYW1pYy1sb2FkZXJcIiwgeDogXCJcIi5jb25jYXQoZmluYWxYKSwgeTogXCJcIi5jb25jYXQoKGZpbmFsWCAqIDcpIC8gNikgfSwgXCJcIi5jb25jYXQocGVyY2VudGFnZS50b0ZpeGVkKDApLCBcIiAlXCIpKSkpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgfSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC43NSlcIiwgc2l6ZTogNDUsIG9uQ2xpY2s6IG9uQ2xpY2sgfSkpKSkpKTtcbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIH1cbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5sZHMtY29sb3JiYXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbn1cXG4ubGRzLWNvbG9yYmFyIC5maWxlcy11aS10ZXh0LWRlZmF1bHQtbG9hZGVyIHtcXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHRleHQtYW5jaG9yOiBtaWRkbGU7XFxufVwiKTtcblxudmFyIFVwbG9hZGluZ1N0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHNpemUgPSBwcm9wcy5zaXplLCBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgcHJvZ3Jlc3MgPSBwcm9wcy5wcm9ncmVzcztcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgcHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCA/IChSZWFjdC5jcmVhdGVFbGVtZW50KER5bmFtaWNMb2FkZXIsIHsgc2l6ZTogNzAsIHg6IDM1LCB5OiAzNSwgcmFkaXVzOiAzMiwgcGVyY2VudGFnZTogcHJvZ3Jlc3MsIHdpZHRoOiA2LCBoaWRlUGVybmNlbnRhZ2U6IHByb2dyZXNzID09PSB1bmRlZmluZWQgfHwgb25BYm9ydCAhPT0gdW5kZWZpbmVkLCBvbkNsaWNrOiBvbkFib3J0IH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEluZmluaXRlTG9hZGVyLCB7IG9uQ2xpY2s6IG9uQWJvcnQsIHNpemU6IHNpemUgfHwgNzAgfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLFxuICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci51cGxvYWRpbmcpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZmlsZS1jYXJkLXVwbG9hZC1sYXllciB7XFxuICB3aWR0aDogMTAwcHg7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0LWNhcmQge1xcbiAgdHJhbnNpdGlvbjogYWxsIDEuNXMgZWFzZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QtY2FyZCAuZWxldmF0aW9uLWl0ZW0tY2FyZCB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIHBhZGRpbmc6IDAgMTBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdC1jYXJkIC5lbGV2YXRpb24taXRlbS1jYXJkIHNwYW4ge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMjtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxufVwiKTtcblxudmFyIEZpbGVDYXJkVXBsb2FkTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLCBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgcHJvZ3Jlc3MgPSBwcm9wcy5wcm9ncmVzcywgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uO1xuICAgIHZhciBlbGV2YXRpb25Db250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGxpc3RDb250YWluZXJTdG9yeVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShbdW5kZWZpbmVkXSksIHN0YXR1c0hpc3RvcnkgPSBfYVswXSwgc2V0U3RhdHVzSGlzdG9yeSA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFN0YXR1c0hpc3RvcnkoZnVuY3Rpb24gKHN0YXR1c0hpc3RvcnkpIHtcbiAgICAgICAgICAgIGlmIChzdGF0dXNIaXN0b3J5W3N0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMV0gPT09IFwicHJlcGFyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICB1cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGVtcFN0YXR1c0hpc3RvcnkgPSBfX3NwcmVhZEFycmF5JDEoW10sIHN0YXR1c0hpc3RvcnksIHRydWUpO1xuICAgICAgICAgICAgICAgIHRlbXBTdGF0dXNIaXN0b3J5W3N0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMV0gPSB1cGxvYWRTdGF0dXM7XG4gICAgICAgICAgICAgICAgLy9yZXBsYWNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkkMShbXSwgdGVtcFN0YXR1c0hpc3RvcnksIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkkMShfX3NwcmVhZEFycmF5JDEoW10sIHN0YXR1c0hpc3RvcnksIHRydWUpLCBbdXBsb2FkU3RhdHVzXSwgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9LCBbdXBsb2FkU3RhdHVzXSk7XG4gICAgdmFyIGVsZXZhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50RWxldmF0aW9uQ29udGFpbmVyID0gZWxldmF0aW9uQ29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHZhciBjdXJyZW50RWxldmF0aW9uTGlzdCA9IGxpc3RDb250YWluZXJTdG9yeVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoY3VycmVudEVsZXZhdGlvbkNvbnRhaW5lciA9PT0gbnVsbCB8fCBjdXJyZW50RWxldmF0aW9uTGlzdCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY3VycmVudEVsZXZhdGlvbkxpc3Quc3R5bGUudG9wID1cbiAgICAgICAgICAgIDAgLSAoc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxKSAqIDEwMCArIFwicHhcIjtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChzdGF0dXNIaXN0b3J5Lmxlbmd0aCA+IDEpXG4gICAgICAgICAgICBlbGV2YXRlKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtzdGF0dXNIaXN0b3J5Lmxlbmd0aF0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24tbGF5ZXItY29udGFpbmVyXCIsIHJlZjogZWxldmF0aW9uQ29udGFpbmVyUmVmIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWxpc3QtY2FyZFwiLCByZWY6IGxpc3RDb250YWluZXJTdG9yeVJlZiB9LCBzdGF0dXNIaXN0b3J5Lm1hcChmdW5jdGlvbiAoc3RhdHVzLCBpbmRleCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJlcGFyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFByZXBhcmluZ1N0YXR1cywgeyBvbkNhbmNlbDogb25DYW5jZWwsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcInVwbG9hZGluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWRpbmdTdGF0dXMsIHsgb25BYm9ydDogb25BYm9ydCwgcHJvZ3Jlc3M6IHByb2dyZXNzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFcnJvclN0YXR1cywgeyBzaXplOiA2MCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdWNjZXNzU3RhdHVzLCB7IGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImFib3J0ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWJvcnRlZFN0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEVtcHR5U3RhdHVzLCBudWxsKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS10b29sdGlwIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXA6aG92ZXIge1xcbiAgei1pbmRleDogMjtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXA6aG92ZXIgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0IHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBvcGFjaXR5OiAxO1xcbiAgei1pbmRleDogMjtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZDpob3ZlciB7XFxuICB6LWluZGV4OiAyO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkOmhvdmVyIC5maWxlcy11aS10b29sdGlwdGV4dCB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgb3BhY2l0eTogMTtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0IHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgd2lkdGg6IDIwMHB4O1xcbiAgY29sb3I6ICNmZmY7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBwYWRkaW5nOiAycHggMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMjtcXG4gIGxlZnQ6IGNhbGMoNTAlIC0gMTAwcHgpO1xcbiAgbGVmdDogMDtcXG4gIG1hcmdpbi10b3A6IDVweDtcXG4gIHRvcDogMTAwJTtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dC5ub3QtdmFsaWQtZXJyb3Ige1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI2M2MjgyOCwgI2QzMmYyZik7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0Lm5vdC12YWxpZC1lcnJvcjo6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZDMyZjJmIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dC5zdWNjZXNzIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICMxYjVlMjAsICMyZTdkMzIpO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dC5zdWNjZXNzOjphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMyZTdkMzIgdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0OjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMTAwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIG1hcmdpbi1sZWZ0OiAtNXB4O1xcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDAuOHJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICB3aWR0aDogMTMycHg7XFxuICBjb2xvcjogI2ZmZjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiAyO1xcbiAgbGVmdDogMDtcXG4gIG9wYWNpdHk6IDA7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQubm90LXZhbGlkLWVycm9yIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICNjNjI4MjgsICNkMzJmMmYpO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQubm90LXZhbGlkLWVycm9yOjphZnRlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNkMzJmMmYgdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS10b29sdGlwIC5maWxlcy11aS10b29sdGlwdGV4dC5zdWNjZXNzIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICMxYjVlMjAsICMyZTdkMzIpO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2Vzczo6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjMmU3ZDMyIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQ6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm90dG9tOiAxMDAlO1xcbiAgbGVmdDogNTAlO1xcbiAgbWFyZ2luLWxlZnQ6IC01cHg7XFxuICBib3JkZXItd2lkdGg6IDVweDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxufVwiKTtcblxudmFyIFRvb2x0aXAgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgXG4gICAgLy9tZXNzYWdlLFxuICAgIC8vc3R5bGUsXG4gICAgLy9jaGlsZHJlbixcbiAgICAvL2NvbG9yLFxuICAgIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgdmFsaWQgPSBwcm9wcy52YWxpZCwgZXJyb3JzID0gcHJvcHMuZXJyb3JzLCBcbiAgICAvL2NsYXNzTmFtZSxcbiAgICB1cGxvYWRNZXNzYWdlID0gcHJvcHMudXBsb2FkTWVzc2FnZSwgb3BlbiA9IHByb3BzLm9wZW47XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgc3RhdHVzQ2xhc3NOYW1lID0gX2FbMF0sIHNldFNhdHVzQ2xhc3NOYW1lID0gX2FbMV07XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgbWVzc2FnZSA9IF9iWzBdLCBzZXRNZXNzYWdlID0gX2JbMV07XG4gICAgdmFyIGhhbmRsZUNoYW5nZVN0YXR1cyA9IGZ1bmN0aW9uICh1cGxvYWRTdGF0dXMsIHZhbGlkKSB7XG4gICAgICAgIC8vaGlnaGVyIHByaW9yaXR5XG4gICAgICAgIGlmICh1cGxvYWRTdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0TWVzc2FnZSh1cGxvYWRNZXNzYWdlKTtcbiAgICAgICAgICAgIGlmICh1cGxvYWRTdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICAgICAgc2V0U2F0dXNDbGFzc05hbWUoXCJzdWNjZXNzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0U2F0dXNDbGFzc05hbWUoXCJub3QtdmFsaWQtZXJyb3JcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodmFsaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2F0dXNDbGFzc05hbWUoXCJub3QtdmFsaWQtZXJyb3JcIik7XG4gICAgICAgICAgICAgICAgICAgIHNldE1lc3NhZ2UoZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGVycm9ycy5yZWR1Y2UoZnVuY3Rpb24gKGFjdW0sIGN1cnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3VtICs9IFwiXCIuY29uY2F0KGN1cnIsIFwiLiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdW07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGhhbmRsZUNoYW5nZVN0YXR1cyh1cGxvYWRTdGF0dXMsIHZhbGlkKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3VwbG9hZFN0YXR1cywgdmFsaWRdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIG9wZW4gJiYgbWVzc2FnZSAmJiBzdGF0dXNDbGFzc05hbWUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLXRvb2x0aXB0ZXh0IFwiLmNvbmNhdChzdGF0dXNDbGFzc05hbWUpIH0sIG1lc3NhZ2UpKSkpO1xufTtcblxudmFyIERvd25sb2FkSGlkZGVuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGRvd25sb2FkVXJsID0gcHJvcHMuZG93bmxvYWRVcmwsIGFuY2hvclJlZiA9IHByb3BzLmFuY2hvclJlZiwgZmlsZU5hbWUgPSBwcm9wcy5maWxlTmFtZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoZG93bmxvYWRVcmwpXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgeyByZWY6IGFuY2hvclJlZiwgdGFyZ2V0OiBcIl9ibGFua1wiLCBocmVmOiBkb3dubG9hZFVybCwgZG93bmxvYWQ6IGZpbGVOYW1lLCBoaWRkZW46IHRydWUsIHJlbDogXCJub29wZW5lciBub3JlZmVycmVyXCIsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrIH0sIFwiZG93bmxvYWRfZmlsZVwiKSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiQGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVBvcHBpbnM6MzAwLDQwMCw1MDAsNjAwLDcwMCw5MDApO1xcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTMycHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIHtcXG4gIHdpZHRoOiAxMzJweDtcXG4gIGhlaWdodDogMTMycHg7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbWFnZS1sYXllciBpbWcge1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyLmJsdXIgaW1nIHtcXG4gIGZpbHRlcjogYmx1cig0cHgpO1xcbiAgd2lkdGg6IDIwMCU7XFxuICBoZWlnaHQ6IDIwMCU7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXIgLmZpbGUtbW9zYWljLW1haW4tbGF5ZXItaGVhZGVyIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIC5maWxlLW1vc2FpYy1tYWluLWxheWVyLWZvb3RlciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIC5maWxlLW1vc2FpYy1tYWluLWxheWVyLWZvb3RlciAuZmlsZS1tb3NhaWMtZm9vdGVyLXJpZ2h0IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGZsZXgtZ3JvdzogMTtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXIgLmZpbGUtbW9zYWljLW1haW4tbGF5ZXItZm9vdGVyIC5maWxlLW1vc2FpYy1mb290ZXItbGVmdCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4LWdyb3c6IDE7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDI4NTdlbTtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICB3aWR0aDogaW5oZXJpdDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NSk7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmb250LXNpemU6IDAuOHJlbTtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2UgMHM7XFxuICBvdmVyZmxvdzogYXV0bztcXG4gIGNvbG9yOiB3aGl0ZTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDlweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAxMDgsIDEyNywgMC42NjI3NDUwOTgpO1xcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcXG4gIGJvcmRlcjogdHJhbnNwYXJlbnQ7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXItaGVhZGVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyIC5oZWFkaW5nIHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBwYWRkaW5nOiAwIDVweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllciAubGFiZWwge1xcbiAgcGFkZGluZzogMCA1cHg7XFxuICBmb250LXdlaWdodDogMzk5O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWZpbGUtbmFtZSB7XFxuICBtYXJnaW4tdG9wOiAxcHg7XFxuICBoZWlnaHQ6IDMxcHg7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3aWR0aDogMTAwJTtcXG4gIGNvbG9yOiBibGFjaztcXG4gIGZvbnQtc2l6ZTogMC45NWVtO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGxldHRlci1zcGFjaW5nOiAwLjA3cmVtO1xcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7IC8qIG51bWJlciBvZiBsaW5lcyB0byBzaG93ICovXFxuICBsaW5lLWNsYW1wOiAyO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC8qICBkaXNwbGF5OiBmbGV4O1xcbiAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICovXFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtZmlsZS1uYW1lLmRhcmstbW9kZSB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIuY2xpY2thYmxlIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLyogLmZpbGVzLXVpLWZpbGUtaWNvbiB7XFxuICBmb250LXNpemU6IDAuN3JlbTtcXG4gIG1pbi13aWR0aDogMTlweDtcXG4gIG1pbi1oZWlnaHQ6IDE5cHg7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAycHggMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjY1KTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICY6aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuODUpO1xcbiAgfVxcbiAgJi5kYXJrLW1vZGUge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NCwgMTYwLCAxNjYsIDAuNjUpO1xcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NCwgMTYwLCAxNjYsIDAuODUpO1xcbiAgICB9XFxuICB9XFxufVxcbiAqL1wiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWxheWVyLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVwiKTtcblxudmFyIExheWVyQ29udGFpbmVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoY2xhc3NOYW1lIHx8IFwiXCIsIFwiZmlsZXMtdWktbGF5ZXItY29udGFpbmVyXCIpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBzdHlsZSB9LCBjaGlsZHJlbikpO1xufTtcblxudmFyIEZpbGVNb3NhaWNOYW1lID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGZpbGVOYW1lID0gcHJvcHMuZmlsZU5hbWU7XG4gICAgaWYgKGZpbGVOYW1lKVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgZmlsZU5hbWUpO1xuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG4gICAgfVxufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42NSk7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3Qge1xcbiAgdHJhbnNpdGlvbjogYWxsIDEuNXMgZWFzZTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdCAuZWxldmF0aW9uLWl0ZW0ge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEzMnB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdCAuZWxldmF0aW9uLWl0ZW0gc3BhbiB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7IC8qIG51bWJlciBvZiBsaW5lcyB0byBzaG93ICovXFxuICBsaW5lLWNsYW1wOiAyO1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG59XCIpO1xuXG52YXIgRmlsZU1vc2FpY1VwbG9hZExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3MsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbjtcbiAgICAvL2NvbnNvbGUubG9nKFwiRmlsZU1vc2FpY1VwbG9hZExheWVyIENIQU5HRSBwcm9ncmVzc1wiLCBwcm9ncmVzcywgdXBsb2FkU3RhdHVzKTtcbiAgICB2YXIgZWxldmF0aW9uQ29udGFpbmVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBsaXN0Q29udGFpbmVyU3RvcnlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoW3VuZGVmaW5lZF0pLCBzdGF0dXNIaXN0b3J5ID0gX2FbMF0sIHNldFN0YXR1c0hpc3RvcnkgPSBfYVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRTdGF0dXNIaXN0b3J5KGZ1bmN0aW9uIChzdGF0dXNIaXN0b3J5KSB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzSGlzdG9yeVtzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDFdID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdXBsb2FkU3RhdHVzID09PSBcInVwbG9hZGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRlbXBTdGF0dXNIaXN0b3J5ID0gX19zcHJlYWRBcnJheSQxKFtdLCBzdGF0dXNIaXN0b3J5LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0ZW1wU3RhdHVzSGlzdG9yeVtzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDFdID0gdXBsb2FkU3RhdHVzO1xuICAgICAgICAgICAgICAgIC8vcmVwbGFjZVxuICAgICAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5JDEoW10sIHRlbXBTdGF0dXNIaXN0b3J5LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5JDEoX19zcHJlYWRBcnJheSQxKFtdLCBzdGF0dXNIaXN0b3J5LCB0cnVlKSwgW3VwbG9hZFN0YXR1c10sIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSwgW3VwbG9hZFN0YXR1c10pO1xuICAgIHZhciBlbGV2YXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudEVsZXZhdGlvbkNvbnRhaW5lciA9IGVsZXZhdGlvbkNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgY3VycmVudEVsZXZhdGlvbkxpc3QgPSBsaXN0Q29udGFpbmVyU3RvcnlSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGN1cnJlbnRFbGV2YXRpb25Db250YWluZXIgPT09IG51bGwgfHwgY3VycmVudEVsZXZhdGlvbkxpc3QgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGN1cnJlbnRFbGV2YXRpb25MaXN0LnN0eWxlLnRvcCA9XG4gICAgICAgICAgICAwIC0gKHN0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMSkgKiAxMzIgKyBcInB4XCI7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoc3RhdHVzSGlzdG9yeS5sZW5ndGggPiAxKVxuICAgICAgICAgICAgZWxldmF0ZSgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbc3RhdHVzSGlzdG9yeS5sZW5ndGhdKTtcbiAgICAvL2RlZmF1bHQgcGhhc2VcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWxheWVyLWNvbnRhaW5lclwiLCByZWY6IGVsZXZhdGlvbkNvbnRhaW5lclJlZiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1saXN0XCIsIHJlZjogbGlzdENvbnRhaW5lclN0b3J5UmVmIH0sIHN0YXR1c0hpc3RvcnkubWFwKGZ1bmN0aW9uIChzdGF0dXMsIGluZGV4KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJwcmVwYXJpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFByZXBhcmluZ1N0YXR1cywgeyBvbkNhbmNlbDogb25DYW5jZWwsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcInVwbG9hZGluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVXBsb2FkaW5nU3RhdHVzLCB7IG9uQWJvcnQ6IG9uQWJvcnQsIHByb2dyZXNzOiBwcm9ncmVzcywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEVycm9yU3RhdHVzLCB7IGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN1Y2Nlc3NTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYWJvcnRlZFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWJvcnRlZFN0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFbXB0eVN0YXR1cywgbnVsbCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpKSk7XG59O1xuXG52YXIgRmlsZU1vc2FpY0ltYWdlTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAvLy8vY29uc29sZS5sb2coXCJGaWxlTW9zYWljSW1hZ2VMYXllclwiLCBwcm9wcyk7XG4gICAgdmFyIGltYWdlU291cmNlID0gcHJvcHMuaW1hZ2VTb3VyY2UsIHVybCA9IHByb3BzLnVybCwgZmlsZU5hbWUgPSBwcm9wcy5maWxlTmFtZSwgY2FyZCA9IHByb3BzLmNhcmQsIGlzQmx1ciA9IHByb3BzLmlzQmx1ciwgc21hcnRJbWdGaXQgPSBwcm9wcy5zbWFydEltZ0ZpdDtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBsb2NhbFNvdXJjZSA9IF9hWzBdLCBzZXRMb2NhbFNvdXJjZSA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgZXJyb3IgPSBfYlswXSwgc2V0RXJyb3IgPSBfYlsxXTtcbiAgICAvL2Fzc2lnbiB0byBsb2NhbFNvdXJjZSB0aGUgaW1hZ2VTb3VyY2Ugb3IgdGhlIHVybCBvZiB0aGUgaWxlIHR5cGVcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRMb2NhbFNvdXJjZShpbWFnZVNvdXJjZSB8fCB1cmwpO1xuICAgIH0sIFtpbWFnZVNvdXJjZSwgdXJsXSk7XG4gICAgLyoqXG4gICAgICogV2hlbiBhbiBlcnJvciBvY2N1cnMgd2hlbiBzZXR0aW5nIHRoZSBzb3VyY2UsIHRoZSB1cmwgd2lsbCBiZSB1c2VkIGluc3RlYWQuXG4gICAgICogVGhlIHVybCBhbHdheXMgaXMgYSB2YWxpZCBpbWFnZSB1cmxcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpO1xuICAgICAgICBzZXRMb2NhbFNvdXJjZSh1cmwpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRmlsZU1vc2FpY0ltYWdlTGF5ZXIgZXJyb3JcIiwgdXJsKTtcbiAgICB9O1xuICAgIC8vSWYgYmx1ciBpcyB0cnVlXG4gICAgaWYgKGlzQmx1cikge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsICFjYXJkICYmICFlcnJvciAmJiBpbWFnZVNvdXJjZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbWFnZVByZXZpZXcsIHsgc3JjOiBsb2NhbFNvdXJjZSwgYWx0OiBcImJsdXIgXCIuY29uY2F0KGZpbGVOYW1lKSwgc21hcnRJbWdGaXQ6IGZhbHNlIH0pKSkpO1xuICAgIH1cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW1hZ2VQcmV2aWV3LCB7IG9uRXJyb3I6IGhhbmRsZUVycm9yLCBzcmM6IGxvY2FsU291cmNlLCBzdHlsZTogeyBib3JkZXJSYWRpdXM6IFwiMHB4XCIgfSwgYWx0OiBcInByZXZpZXcgXCIuY29uY2F0KGZpbGVOYW1lKSwgc21hcnRJbWdGaXQ6IHNtYXJ0SW1nRml0IH0pKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBwYWRkaW5nOiAwLjVweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1lcnJvciB7XFxuICBjb2xvcjogI2Y0NDMzNjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLW9rIHtcXG4gIGNvbG9yOiAjNWM3YTFmO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtbG9hZGluZyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgY29sb3I6ICM4YjZiMTA7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtbG9hZGluZy5wZXJjZW50YWdlIHtcXG4gIHBhZGRpbmc6IDdweCA0cHggMnB4IDVweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcgLmFib3J0LWJ1dHRvbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogLTJweDtcXG4gIHRvcDogLTJweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcgLnVwbG9hZGluZy10ZXh0LnVwIHtcXG4gIG1hcmdpbi1ib3R0b206IC0yMnB4O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtbG9hZGluZyAudXBsb2FkaW5nLXRleHQuZG93biB7XFxuICBtYXJnaW4tdG9wOiAtMjBweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcgLnVwbG9hZGluZy10ZXh0IHAucGVyY2VudGFnZSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbn1cIik7XG5cbnZhciBGaWxlTW9zYWljU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHZhbGlkID0gcHJvcHMudmFsaWQsIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzdHlsZSA9IHByb3BzLnN0eWxlO1xuICAgIHZhciBGaWxlSXRlbVN0YXR1c0xvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5zdGF0dXM7XG4gICAgaWYgKHVwbG9hZFN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIGZpbGUtc3RhdHVzLW9rXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDbG91ZERvbmUsIHsgY29sb3I6IFwiIzRjYWY1MFwiLCBzaXplOiBcInNtYWxsXCIsIGNsYXNzTmFtZTogXCJzdGF0dXMtaWNvblwiIH0pLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuc3VjY2VzcykpO1xuICAgIH1cbiAgICBpZiAodXBsb2FkU3RhdHVzID09PSBcImVycm9yXCIgfHwgdXBsb2FkU3RhdHVzID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIgZmlsZS1zdGF0dXMtZXJyb3JcIiwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZEVycm9yLCB7IGNvbG9yOiBcIiNmNDQzMzZcIiwgc2l6ZTogXCJzZW1pLW1lZGl1bVwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLmVycm9yKSk7XG4gICAgfVxuICAgIGlmICh2YWxpZCAhPT0gdW5kZWZpbmVkICYmIHZhbGlkICE9PSBudWxsKSB7XG4gICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIGZpbGUtc3RhdHVzLW9rXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tDaXJjbGUsIHsgY29sb3I6IFwiIzRjYWY1MFwiLCBzaXplOiBcInNtYWxsXCIsIGNsYXNzTmFtZTogXCJzdGF0dXMtaWNvblwiIH0pLFxuICAgICAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnZhbGlkKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIgZmlsZS1zdGF0dXMtZXJyb3JcIiwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEb0Rpc3R1cmIsIHsgY29sb3I6IFwiI2Y0NDMzNlwiLCBzaXplOiBcInNtYWxsXCIsIGNsYXNzTmFtZTogXCJzdGF0dXMtaWNvblwiIH0pLFxuICAgICAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLmRlbmllZCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbnZhciBGaWxlTW9zYWljSW5mb0xheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHZhbGlkID0gcHJvcHMudmFsaWQsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgb25DbG9zZUluZm8gPSBwcm9wcy5vbkNsb3NlSW5mbywgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCBsb2NhbE5hbWUgPSBwcm9wcy5sb2NhbE5hbWUsIHNpemVGb3JtYXR0ZWQgPSBwcm9wcy5zaXplRm9ybWF0dGVkLCBsb2NhbFR5cGUgPSBwcm9wcy5sb2NhbFR5cGU7XG4gICAgdmFyIEZpbGVJdGVtTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIHZhciBfYSA9IEZpbGVJdGVtTG9jYWxpemVyLmZ1bGxJbmZvTGF5ZXIsIG5hbWVMYWJlbCA9IF9hLm5hbWUsIHNpemVMYWJlbCA9IF9hLnNpemUsIHR5cGVMYWJlbCA9IF9hLnR5cGU7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXItaGVhZGVyXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FuY2VsXG4gICAgICAgICAgICAvL3N0eWxlPXt7IG1hcmdpbjogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAgICAgLCB7IFxuICAgICAgICAgICAgICAgIC8vc3R5bGU9e3sgbWFyZ2luOiAwLCByaWdodDogMCwgdG9wOiAwIH19XG4gICAgICAgICAgICAgICAgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjgpXCIsIG9uQ2xpY2s6IG9uQ2xvc2VJbmZvLCBjb2xvckZpbGw6IFwiYmxhY2tcIiB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1N0YXR1cywgeyB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIG5hbWVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBsb2NhbE5hbWUpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCBzaXplTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgc2l6ZUZvcm1hdHRlZCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIHR5cGVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBsb2NhbFR5cGUpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXN1aS1maWxlLWl0ZW0tc2l6ZSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZm9udC1zaXplOiAwLjdyZW07XFxuICBib3JkZXI6IDAuNXB4IHNvbGlkIHdoZWF0O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44OSk7XFxuICBwYWRkaW5nOiAycHggMS41cHg7XFxuICBib3JkZXItcmFkaXVzOiA3cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuNzUpO1xcbiAgbWluLXdpZHRoOiA0NXB4O1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbn1cXG4uZmlsZXN1aS1maWxlLWl0ZW0tc2l6ZTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuODUpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45Nyk7XFxufVwiKTtcblxudmFyIEZpbGVNb3NhaWNTaXplID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemVGb3JtYXR0ZWQgPSBwcm9wcy5zaXplRm9ybWF0dGVkO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgc2l6ZUZvcm1hdHRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlc3VpLWZpbGUtaXRlbS1zaXplXCIgfSwgc2l6ZUZvcm1hdHRlZCkpKSk7XG59O1xuXG52YXIgRmlsZU1vc2FpY01haW5MYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBkYXJrTW9kZSA9IHByb3BzLmRhcmtNb2RlLCBkZWxldGVJY29uID0gcHJvcHMuZGVsZXRlSWNvbiwgZG93bmxvYWRJY29uID0gcHJvcHMuZG93bmxvYWRJY29uLCBpbWFnZUljb24gPSBwcm9wcy5pbWFnZUljb24sIGluZm9JY29uID0gcHJvcHMuaW5mb0ljb24sIG9uRGVsZXRlID0gcHJvcHMub25EZWxldGUsIG9uRG93bmxvYWQgPSBwcm9wcy5vbkRvd25sb2FkLCBvbk9wZW5JbmZvID0gcHJvcHMub25PcGVuSW5mbywgb25TZWUgPSBwcm9wcy5vblNlZSwgb25XYXRjaCA9IHByb3BzLm9uV2F0Y2gsIHNpemVGb3JtYXR0ZWQgPSBwcm9wcy5zaXplRm9ybWF0dGVkLCB2YWxpZCA9IHByb3BzLnZhbGlkLCB2aWRlb0ljb24gPSBwcm9wcy52aWRlb0ljb24sIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCBpc0FjdGl2ZSA9IHByb3BzLmlzQWN0aXZlO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLW1vc2FpYy1tYWluLWxheWVyLWhlYWRlclwiIH0sIGlzQWN0aXZlICYmIGRlbGV0ZUljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY2xhc3NOYW1lOiBkYXJrTW9kZSA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uRGVsZXRlLCBzaXplOiBcInNtYWxsXCIsIGNvbG9yRmlsbDogXCJ0cmFuc3BhcmVudFwiIH0pKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtbWFpbi1sYXllci1mb290ZXJcIiB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLW1vc2FpYy1mb290ZXItbGVmdFwiIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljU3RhdHVzLCB7IHZhbGlkOiB2YWxpZCwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pLFxuICAgICAgICAgICAgICAgIGlzQWN0aXZlICYmIHNpemVGb3JtYXR0ZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1NpemUsIHsgc2l6ZUZvcm1hdHRlZDogc2l6ZUZvcm1hdHRlZCB9KSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLW1vc2FpYy1mb290ZXItcmlnaHRcIiB9LCBpc0FjdGl2ZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICAgICBpbWFnZUljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmlzaWJpbGl0eSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvblNlZSwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICB2aWRlb0ljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUGxheUljb24sIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25XYXRjaCwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICBkb3dubG9hZEljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG93bmxvYWRGaWxlLCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uRG93bmxvYWQsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgaW5mb0ljb24gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5mb0Rpc25leSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIG9uQ2xpY2s6IG9uT3BlbkluZm8sIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBzaXplOiBcIm1pY3JvXCIgfSkpKSkpKSkpO1xufTtcblxudmFyIEZpbGVNb3NhaWMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBmaWxlID0gcHJvcHMuZmlsZSwgcHJvcE5hbWUgPSBwcm9wcy5uYW1lLCBwcm9wU2l6ZSA9IHByb3BzLnNpemUsIHByb3BUeXBlID0gcHJvcHMudHlwZSwgaWQgPSBwcm9wcy5pZCwgdmFsaWQgPSBwcm9wcy52YWxpZCwgZXJyb3JzID0gcHJvcHMuZXJyb3JzLCB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIHVwbG9hZE1lc3NhZ2UgPSBwcm9wcy51cGxvYWRNZXNzYWdlLCBwcm9ncmVzcyA9IHByb3BzLnByb2dyZXNzLCB4aHIgPSBwcm9wcy54aHIsIGxvY1Byb3BzID0gcHJvcHMubG9jYWxpemF0aW9uLCBwcmV2aWV3ID0gcHJvcHMucHJldmlldywgaW1hZ2VVcmwgPSBwcm9wcy5pbWFnZVVybCwgdmlkZW9VcmwgPSBwcm9wcy52aWRlb1VybCwgaW5mbyA9IHByb3BzLmluZm8sIF9hID0gcHJvcHMuYmFja2dyb3VuZEJsdXJJbWFnZSwgYmFja2dyb3VuZEJsdXJJbWFnZSA9IF9hID09PSB2b2lkIDAgPyB0cnVlIDogX2EsIGRhcmtNb2RlUHJvcCA9IHByb3BzLmRhcmtNb2RlLCBfYiA9IHByb3BzLmFsd2F5c0FjdGl2ZSwgYWx3YXlzQWN0aXZlID0gX2IgPT09IHZvaWQgMCA/IHRydWUgOiBfYiwgX2MgPSBwcm9wcy5yZXN1bHRPblRvb2x0aXAsIHJlc3VsdE9uVG9vbHRpcCA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2MsIGRvd25sb2FkVXJsID0gcHJvcHMuZG93bmxvYWRVcmwsIG9uRGVsZXRlID0gcHJvcHMub25EZWxldGUsIG9uQ2FuY2VsID0gcHJvcHMub25DYW5jZWwsIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBvbkRvd25sb2FkID0gcHJvcHMub25Eb3dubG9hZCwgb25TZWUgPSBwcm9wcy5vblNlZSwgb25XYXRjaCA9IHByb3BzLm9uV2F0Y2gsIG9uRG91YmxlQ2xpY2sgPSBwcm9wcy5vbkRvdWJsZUNsaWNrLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgb25SaWdodENsaWNrID0gcHJvcHMub25SaWdodENsaWNrLCBfZCA9IHByb3BzLnNtYXJ0SW1nRml0LCBzbWFydEltZ0ZpdCA9IF9kID09PSB2b2lkIDAgPyBcIm9yaWVudGF0aW9uXCIgOiBfZDtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgX2UgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KSwgZGFya01vZGVDb250ZXh0ID0gX2UuZGFya01vZGUsIGljb25zID0gX2UuaWNvbnMsIGxvY0NvbnRleHQgPSBfZS5sb2NhbGl6YXRpb247XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IGxvY1Byb3BzICE9PSB1bmRlZmluZWQgPyBsb2NQcm9wcyA6IGxvY0NvbnRleHQ7XG4gICAgdmFyIGRhcmtNb2RlID0gZGFya01vZGVQcm9wICE9PSB1bmRlZmluZWQgPyBkYXJrTW9kZVByb3AgOiBkYXJrTW9kZUNvbnRleHQ7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwiZ2xvYmFsQ29uZmlnXCIsIGRhcmtNb2RlLCBpY29ucyk7XG4gICAgLy9sb2NhbGl6ZXJzXG4gICAgLy9yZWYgZm9yIGFuY2hvciBkb3dubG9hZCBlbGVtZW50XG4gICAgdmFyIGRvd25sb2FkUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShhZGRDbGFzc05hbWUoXCJmaWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciBmaWxlcy11aS10b29sdGlwXCIsIGNsYXNzTmFtZSksIG9uQ2xpY2sgPyBcImNsaWNrYWJsZVwiIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgZmlsZU1vc2FpY0ZpbGVOYW1lQ2xhc3NOYW1lID0gZGFya01vZGVcbiAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWZpbGUtbmFtZSBkYXJrLW1vZGVcIlxuICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtZmlsZS1uYW1lXCI7XG4gICAgLy8gbG9jYWwgcHJvcGVydGllcyBmcm9tIGZpbGVcbiAgICB2YXIgX2YgPSBnZXRMb2NhbEZpbGVJdGVtRGF0YShmaWxlLCBwcm9wTmFtZSwgcHJvcFR5cGUsIHByb3BTaXplKSwgbG9jYWxOYW1lID0gX2ZbMF0sIGxvY2FsVHlwZSA9IF9mWzFdLCBsb2NhbFNpemUgPSBfZlsyXTtcbiAgICAvLyBoYW5kbGUgcHJvZ3Jlc3NcbiAgICB2YXIgbG9jYWxQcm9ncmVzcyA9IHVzZVByb2dyZXNzKHByb2dyZXNzLCB4aHIpO1xuICAgIC8vLy9jb25zb2xlLmxvZyhcIkZpbGVNb3NhaWMgcHJvZ3Jlc3MgbG9jYWxQcm9ncmVzcyBcIiArIGxvY2FsUHJvZ3Jlc3MpO1xuICAgIC8vSW5pdGlhbGl6ZSBGaWxlIEl0ZW1cbiAgICB2YXIgX2cgPSB1c2VGaWxlTW9zYWljSW5pdGlhbGl6ZXIoZmlsZSwgcHJvcE5hbWUsIHByb3BUeXBlLCB2YWxpZCwgcHJldmlldywgaW1hZ2VVcmwsIHZpZGVvVXJsLCBpY29ucyksIGlzUmVhZHkgPSBfZ1swXSwgaXNJbWFnZSA9IF9nWzFdLCBpc1ZpZGVvID0gX2dbMl0sIHVybCA9IF9nWzNdLCBpbWFnZVNvdXJjZSA9IF9nWzRdLCB2aWRlb1NvdXJjZSA9IF9nWzVdO1xuICAgIC8vVGhlIHNpemUgZm9ybWF0dGVkIGFuZCByb3VuZGVkIGluIDIgZGVjaW1hbHNcbiAgICB2YXIgc2l6ZUZvcm1hdHRlZCA9IGZpbGVTaXplRm9ybWF0ZXIobG9jYWxTaXplKTtcbiAgICAvL2Fsd2F5c0FjdGl2ZVxuICAgIHZhciBfaCA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc2hvd0luZm8gPSBfaFswXSwgc2V0U2hvd0luZm8gPSBfaFsxXTtcbiAgICAvKioqKioqKioqIEFMV0FZUyBBQ1RJVkUgTE9HSUMgICoqKioqKioqKioqKioqKi9cbiAgICAvL3N0YXRlIGZvciBhY3Rpb25PbkhvdmVyXG4gICAgdmFyIF9qID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBob3ZlcmluZyA9IF9qWzBdLCBzZXRIb3ZlcmluZyA9IF9qWzFdO1xuICAgIHZhciBoYW5kbGVPbkhvdmVyRW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChhbHdheXNBY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldEhvdmVyaW5nKHRydWUpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZU9uSG92ZXJMZWF2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGFsd2F5c0FjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SG92ZXJpbmcoZmFsc2UpO1xuICAgIH07XG4gICAgLyoqKioqKioqKioqKioqKioqIEhBTkRMRVJTICoqKioqKioqKiovXG4gICAgLy9kZWxldGUgZmlsZSBpdGVtXG4gICAgdmFyIGhhbmRsZURlbGV0ZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uRGVsZXRlID09PSBudWxsIHx8IG9uRGVsZXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRlbGV0ZShpZCk7IH07XG4gICAgLy9vcGVuIGluZm8gbGF5ZXJcbiAgICB2YXIgaGFuZGxlT3BlbkluZm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRTaG93SW5mbyh0cnVlKTsgfTtcbiAgICAvL2Nsb3NlIGluZm8gbGF5ZXJcbiAgICB2YXIgaGFuZGxlQ2xvc2VJbmZvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0U2hvd0luZm8oZmFsc2UpOyB9O1xuICAgIHZhciBpc1VwbG9hZGluZyA9IHVzZUlzVXBsb2FkaW5nKHVwbG9hZFN0YXR1cyk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiQ2hhbmdlIGlzVXBsb2FkaW5nXCIsIGlzVXBsb2FkaW5nKTtcbiAgICAgICAgaWYgKGlzVXBsb2FkaW5nICYmIHNob3dJbmZvKSB7XG4gICAgICAgICAgICBoYW5kbGVDbG9zZUluZm8oKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbaXNVcGxvYWRpbmddKTtcbiAgICAvKioqKioqKioqKioqKioqIENMSUNLICoqKioqKioqKioqKioqKi9cbiAgICAvKipcbiAgICAgKiBUTy1ETzogQWRkIGZ1bmN0aW9uYWxsaXR5IG9uIGNsaWNrIGV2ZW50XG4gICAgICogQHBhcmFtIGUgZXZlbnQgb2JqZWN0XG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZSkge1xuICAgICAgICAvL2F2b2lkIGNoaWxkcmVuIHRvIHRyaWdnZXIgb25DbGljayByaXBwbGUgZnJvbSBwYXJlbnRcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgIH1cbiAgICB2YXIgaGFuZGxlRG91YmxlQ2xpY2sgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vYWxlcnQoXCJkb3VibGUgY2xpY2sgb24gZmlsZVwiKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uRG91YmxlQ2xpY2sgPT09IG51bGwgfHwgb25Eb3VibGVDbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Eb3VibGVDbGljayhldnQpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayhldnQpIHtcbiAgICAgICAgLy8gYWxlcnQoXCJyaWdodCBjbGljayEhISFcIik7XG4gICAgICAgIC8vZ2V0IGNvb3JkaW5hdGVzXG4gICAgICAgIC8vemluZGV4XG4gICAgICAgIC8vY3JlYXRlIG1lbnUgY29tcG9uZW50XG4gICAgICAgIC8vIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvblJpZ2h0Q2xpY2sgPT09IG51bGwgfHwgb25SaWdodENsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJpZ2h0Q2xpY2soZXZ0KTtcbiAgICB9XG4gICAgLy8gRE9XTkxPQUQgRklMRVxuICAgIC8qKlxuICAgICAqIG9uRG93bmxvYWQsIGZvcm0gMVxuICAgICAqIFRyaWdnZXIgZG93bG9hZCBkaXJlY3RseSBwZXJmb3JtaW5nIGEgY2xpY2sgb24gYW5jaG9yIGVsZW1lbnRcbiAgICAgKi9cbiAgICB2YXIgaW5uZXJEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBkb3dubG9hZFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoYW5jaG9yRWxlbWVudCkge1xuICAgICAgICAgICAgYW5jaG9yRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBvbkRvd25sYWQsIGZvcm0gMlxuICAgICAqIEhhbmRsZSB0aGUgZG93bmxvYWQgdHJpZ2dlcmluZyBhbiBvdXRzaWRlIGV2ZW50XG4gICAgICovXG4gICAgdmFyIGhhbmRsZURvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25Eb3dubG9hZCkge1xuICAgICAgICAgICAgb25Eb3dubG9hZCA9PT0gbnVsbCB8fCBvbkRvd25sb2FkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRvd25sb2FkKGlkLCBkb3dubG9hZFVybCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRvd25sb2FkVXJsID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGlubmVyRG93bmxvYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhbmRsZUFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB4aHIgPT09IG51bGwgfHwgeGhyID09PSB2b2lkIDAgPyB2b2lkIDAgOiB4aHIuYWJvcnQoKTtcbiAgICAgICAgb25BYm9ydCA9PT0gbnVsbCB8fCBvbkFib3J0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFib3J0KGlkKTtcbiAgICB9O1xuICAgIGlmIChpc1JlYWR5KVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBvbk1vdXNlRW50ZXI6IGhhbmRsZU9uSG92ZXJFbnRlciwgb25Nb3VzZUxlYXZlOiBoYW5kbGVPbkhvdmVyTGVhdmUsIG9uRG91YmxlQ2xpY2s6IGhhbmRsZURvdWJsZUNsaWNrLCBvbkNvbnRleHRNZW51OiBoYW5kbGVSaWdodENsaWNrIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyQ29udGFpbmVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lclwiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1pbWFnZS1sYXllciBibHVyXCIsIHZpc2libGU6IGJhY2tncm91bmRCbHVySW1hZ2UgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW1hZ2VMYXllciwgeyBpbWFnZVNvdXJjZTogaW1hZ2VTb3VyY2UsIHVybDogdXJsLCBmaWxlTmFtZTogbG9jYWxOYW1lLCBpc0JsdXI6IHRydWUsIHNtYXJ0SW1nRml0OiBmYWxzZSB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXJcIiwgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbWFnZUxheWVyLCB7IGltYWdlU291cmNlOiBpbWFnZVNvdXJjZSwgdXJsOiB1cmwsIGZpbGVOYW1lOiBsb2NhbE5hbWUsIGlzQmx1cjogZmFsc2UsIHNtYXJ0SW1nRml0OiBzbWFydEltZ0ZpdCB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllclwiLCB2aXNpYmxlOiAhaXNVcGxvYWRpbmcgJiYgIXNob3dJbmZvIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY01haW5MYXllciwgeyBkZWxldGVJY29uOiBvbkRlbGV0ZSAhPT0gdW5kZWZpbmVkLCBvbkRlbGV0ZTogaGFuZGxlRGVsZXRlLCBkYXJrTW9kZTogZGFya01vZGUsIHZhbGlkOiB2YWxpZCwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uLCBzaXplRm9ybWF0dGVkOiBzaXplRm9ybWF0dGVkLCBpbWFnZUljb246IGlzSW1hZ2UgJiYgb25TZWUgIT09IHVuZGVmaW5lZCwgb25TZWU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uU2VlID09PSBudWxsIHx8IG9uU2VlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlZShpbWFnZVNvdXJjZSk7IH0sIHZpZGVvSWNvbjogaXNWaWRlbyAmJiBvbldhdGNoICE9PSB1bmRlZmluZWQsIG9uV2F0Y2g6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uV2F0Y2ggPT09IG51bGwgfHwgb25XYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25XYXRjaCh2aWRlb1NvdXJjZSk7IH0sIGRvd25sb2FkSWNvbjogb25Eb3dubG9hZCAhPT0gdW5kZWZpbmVkIHx8IGRvd25sb2FkVXJsICE9PSB1bmRlZmluZWQsIG9uRG93bmxvYWQ6IGhhbmRsZURvd25sb2FkLCBpbmZvSWNvbjogaW5mbyAhPT0gdW5kZWZpbmVkLCBvbk9wZW5JbmZvOiBoYW5kbGVPcGVuSW5mbywgaXNBY3RpdmU6IGFsd2F5c0FjdGl2ZSB8fCBob3ZlcmluZyB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllclwiLCB2aXNpYmxlOiBzaG93SW5mbywgb25DbGljazogaGFuZGxlQ2xpY2tVdGlsIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY0luZm9MYXllciwgeyBvbkNsb3NlSW5mbzogaGFuZGxlQ2xvc2VJbmZvLCB2YWxpZDogdmFsaWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uLCBsb2NhbE5hbWU6IGxvY2FsTmFtZSwgc2l6ZUZvcm1hdHRlZDogc2l6ZUZvcm1hdHRlZCwgbG9jYWxUeXBlOiBsb2NhbFR5cGUgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllclwiLCB2aXNpYmxlOiBpc1VwbG9hZGluZywgb25DbGljazogaGFuZGxlQ2xpY2tVdGlsIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1VwbG9hZExheWVyLCB7IHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBwcm9ncmVzczogbG9jYWxQcm9ncmVzcywgb25DYW5jZWw6IG9uQ2FuY2VsID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DYW5jZWwgPT09IG51bGwgfHwgb25DYW5jZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2FuY2VsKGlkKTsgfSA6IHVuZGVmaW5lZCwgb25BYm9ydDogb25BYm9ydCA/IGhhbmRsZUFib3J0IDogdW5kZWZpbmVkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmlsZU1vc2FpY0ZpbGVOYW1lQ2xhc3NOYW1lIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljTmFtZSwgeyBmaWxlTmFtZTogbG9jYWxOYW1lIH0pKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwgeyBvcGVuOiByZXN1bHRPblRvb2x0aXAsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCB2YWxpZDogdmFsaWQsIGVycm9yczogZXJyb3JzLCB1cGxvYWRNZXNzYWdlOiB1cGxvYWRNZXNzYWdlIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEb3dubG9hZEhpZGRlbiwgeyBmaWxlTmFtZTogbG9jYWxOYW1lLCBhbmNob3JSZWY6IGRvd25sb2FkUmVmLCBkb3dubG9hZFVybDogZG93bmxvYWRVcmwgfSkpKTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG52YXIgc2V0RmluYWxFbGV2YXRpb24gPSBmdW5jdGlvbiAoZWxldmF0aW9uKSB7XG4gICAgLy8gIGxldCBmaW5hbEVsZXZhdGlvbjogbnVtYmVyICA9IFwiXCI7XG4gICAgdmFyIGZpbmFsRWxldmF0aW9uID0gTnVtYmVyKGVsZXZhdGlvbik7XG4gICAgaWYgKCFpc05hTihmaW5hbEVsZXZhdGlvbikpIHtcbiAgICAgICAgaWYgKGZpbmFsRWxldmF0aW9uID4gMjQpIHtcbiAgICAgICAgICAgIHJldHVybiAyNDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaW5hbEVsZXZhdGlvbiA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZpbmFsRWxldmF0aW9uO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG59O1xudmFyIG1ha2VGaWxlQ2FyZENsYXNzTmFtZSA9IGZ1bmN0aW9uIChlbGV2YXRpb24sIGRhcmtNb2RlLCBjbGFzc05hbWUsIGNsaWNrYWJsZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJGaWxlQ2FyZCBtYWtlRmlsZUNhcmRDbGFzc05hbWVcIiwgZWxldmF0aW9uLCBkYXJrTW9kZSwgY2xhc3NOYW1lKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBcImZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciBmaWxlcy11aS10b29sdGlwIGNhcmRcIjtcbiAgICBpZiAoZWxldmF0aW9uKSB7XG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGVsZXZhdGlvbi1cIiArIHNldEZpbmFsRWxldmF0aW9uKGVsZXZhdGlvbik7XG4gICAgfVxuICAgIGlmIChkYXJrTW9kZSkge1xuICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBkYXJrLW1vZGVcIjtcbiAgICB9XG4gICAgaWYgKGNsaWNrYWJsZSlcbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgY2xpY2thYmxlXCI7XG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBcIi5jb25jYXQoY2xhc3NOYW1lKTtcbiAgICB9XG4gICAgLy9jb25zb2xlLmxvZyhcIkZpbGVDYXJkIGZpbmFsQ2xhc3NOYW1lXCIsIGZpbmFsQ2xhc3NOYW1lKTtcbiAgICByZXR1cm4gZmluYWxDbGFzc05hbWU7XG59O1xudmFyIEZpbGVDYXJkID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgZmlsZSA9IHByb3BzLmZpbGUsIHByb3BOYW1lID0gcHJvcHMubmFtZSwgcHJvcFNpemUgPSBwcm9wcy5zaXplLCBwcm9wVHlwZSA9IHByb3BzLnR5cGUsIGlkID0gcHJvcHMuaWQsIHZhbGlkID0gcHJvcHMudmFsaWQsIGVycm9ycyA9IHByb3BzLmVycm9ycywgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCB1cGxvYWRNZXNzYWdlID0gcHJvcHMudXBsb2FkTWVzc2FnZSwgcHJvZ3Jlc3MgPSBwcm9wcy5wcm9ncmVzcywgeGhyID0gcHJvcHMueGhyLCBsb2NQcm9wcyA9IHByb3BzLmxvY2FsaXphdGlvbiwgcHJldmlldyA9IHByb3BzLnByZXZpZXcsIGltYWdlVXJsID0gcHJvcHMuaW1hZ2VVcmwsIHZpZGVvVXJsID0gcHJvcHMudmlkZW9VcmwsIGluZm8gPSBwcm9wcy5pbmZvLCBfYSA9IHByb3BzLmJhY2tncm91bmRCbHVySW1hZ2UsIGJhY2tncm91bmRCbHVySW1hZ2UgPSBfYSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9hLCBkYXJrTW9kZVByb3AgPSBwcm9wcy5kYXJrTW9kZSwgX2IgPSBwcm9wcy5hbHdheXNBY3RpdmUsIGFsd2F5c0FjdGl2ZSA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIF9jID0gcHJvcHMucmVzdWx0T25Ub29sdGlwLCByZXN1bHRPblRvb2x0aXAgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCBkb3dubG9hZFVybCA9IHByb3BzLmRvd25sb2FkVXJsLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLCBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgb25Eb3dubG9hZCA9IHByb3BzLm9uRG93bmxvYWQsIG9uU2VlID0gcHJvcHMub25TZWUsIG9uV2F0Y2ggPSBwcm9wcy5vbldhdGNoLCBvbkRvdWJsZUNsaWNrID0gcHJvcHMub25Eb3VibGVDbGljaywgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIG9uUmlnaHRDbGljayA9IHByb3BzLm9uUmlnaHRDbGljaywgX2QgPSBwcm9wcy5lbGV2YXRpb24sIGVsZXZhdGlvbiA9IF9kID09PSB2b2lkIDAgPyA0IDogX2QsIF9lID0gcHJvcHMuc21hcnRJbWdGaXQsIHNtYXJ0SW1nRml0ID0gX2UgPT09IHZvaWQgMCA/IFwib3JpZW50YXRpb25cIiA6IF9lO1xuICAgIC8vY29udGV4dFxuICAgIHZhciBfZiA9IFJlYWN0LnVzZUNvbnRleHQoRmlsZXNVaUNvbnRleHQpLCBkYXJrTW9kZUNvbnRleHQgPSBfZi5kYXJrTW9kZSwgaWNvbnMgPSBfZi5pY29ucywgbG9jQ29udGV4dCA9IF9mLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gbG9jUHJvcHMgIT09IHVuZGVmaW5lZCA/IGxvY1Byb3BzIDogbG9jQ29udGV4dDtcbiAgICB2YXIgZGFya01vZGUgPSBkYXJrTW9kZVByb3AgIT09IHVuZGVmaW5lZCA/IGRhcmtNb2RlUHJvcCA6IGRhcmtNb2RlQ29udGV4dDtcbiAgICAvL2NvbnNvbGUubG9nKFwiZ2xvYmFsQ29uZmlnXCIsIGRhcmtNb2RlLCBpY29ucyk7XG4gICAgLy9yZWYgZm9yIGFuY2hvciBlbGVtZW50XG4gICAgdmFyIGRvd25sb2FkUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vY2xhc3NOYW1lIGNyZWF0ZWRcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBtYWtlRmlsZUNhcmRDbGFzc05hbWUoZWxldmF0aW9uLCBkYXJrTW9kZSwgY2xhc3NOYW1lLCBvbkNsaWNrICE9PSB1bmRlZmluZWQpO1xuICAgIC8vIGxvY2FsIHByb3BlcnRpZXMgZnJvbSBmaWxlXG4gICAgdmFyIF9nID0gZ2V0TG9jYWxGaWxlSXRlbURhdGEoZmlsZSwgcHJvcE5hbWUsIHByb3BUeXBlLCBwcm9wU2l6ZSksIGxvY2FsTmFtZSA9IF9nWzBdLCBsb2NhbFR5cGUgPSBfZ1sxXSwgbG9jYWxTaXplID0gX2dbMl07XG4gICAgLy8gaGFuZGxlIHByb2dyZXNzXG4gICAgdmFyIGxvY2FsUHJvZ3Jlc3MgPSB1c2VQcm9ncmVzcyhwcm9ncmVzcywgeGhyKTtcbiAgICAvL0luaXRpYWxpemUgRmlsZSBJdGVtXG4gICAgdmFyIF9oID0gdXNlRmlsZU1vc2FpY0luaXRpYWxpemVyKGZpbGUsIHByb3BOYW1lLCBwcm9wVHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgaWNvbnMpLCBpc1JlYWR5ID0gX2hbMF0sIGlzSW1hZ2UgPSBfaFsxXSwgaXNWaWRlbyA9IF9oWzJdLCB1cmwgPSBfaFszXSwgaW1hZ2VTb3VyY2UgPSBfaFs0XSwgdmlkZW9Tb3VyY2UgPSBfaFs1XTtcbiAgICAvL1RoZSBzaXplIGZvcm1hdHRlZCBhbmQgcm91bmRlZCBpbiAyIGRlY2ltYWxzXG4gICAgdmFyIHNpemVGb3JtYXR0ZWQgPSBmaWxlU2l6ZUZvcm1hdGVyKGxvY2FsU2l6ZSk7XG4gICAgLy9hbHdheXNBY3RpdmVcbiAgICB2YXIgX2ogPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHNob3dJbmZvID0gX2pbMF0sIHNldFNob3dJbmZvID0gX2pbMV07XG4gICAgLyoqKioqKioqKiBBTFdBWVMgQUNUSVZFIExPR0lDICAqKioqKioqKioqKioqKiovXG4gICAgLy9zdGF0ZSBmb3IgYWN0aW9uT25Ib3ZlclxuICAgIHZhciBfayA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaG92ZXJpbmcgPSBfa1swXSwgc2V0SG92ZXJpbmcgPSBfa1sxXTtcbiAgICB2YXIgaGFuZGxlT25Ib3ZlckVudGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYWx3YXlzQWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRIb3ZlcmluZyh0cnVlKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVPbkhvdmVyTGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChhbHdheXNBY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldEhvdmVyaW5nKGZhbHNlKTtcbiAgICB9O1xuICAgIC8qKioqKioqKioqKioqKioqKiBIQU5ETEVSUyAqKioqKioqKioqL1xuICAgIC8vZGVsZXRlIGZpbGUgaXRlbVxuICAgIHZhciBoYW5kbGVEZWxldGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkRlbGV0ZSA9PT0gbnVsbCB8fCBvbkRlbGV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25EZWxldGUoaWQpOyB9O1xuICAgIC8vb3BlbiBpbmZvIGxheWVyXG4gICAgdmFyIGhhbmRsZU9wZW5JbmZvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0U2hvd0luZm8odHJ1ZSk7IH07XG4gICAgLy9jbG9zZSBpbmZvIGxheWVyXG4gICAgdmFyIGhhbmRsZUNsb3NlSW5mbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFNob3dJbmZvKGZhbHNlKTsgfTtcbiAgICB2YXIgaXNVcGxvYWRpbmcgPSB1c2VJc1VwbG9hZGluZyh1cGxvYWRTdGF0dXMpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkNoYW5nZSBpc1VwbG9hZGluZ1wiLCBpc1VwbG9hZGluZyk7XG4gICAgICAgIGlmIChpc1VwbG9hZGluZyAmJiBzaG93SW5mbylcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlSW5mbygpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbaXNVcGxvYWRpbmddKTtcbiAgICAvKioqKioqKioqKioqKioqIENsaWNrICoqKioqKioqKioqKioqKi9cbiAgICAvKipcbiAgICAgKiBUTy1ETzogQWRkIGZ1bmN0aW9uYWxsaXR5IG9uIGNsaWNrIGV2ZW50XG4gICAgICogQHBhcmFtIGUgZXZlbnQgb2JqZWN0XG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZSkge1xuICAgICAgICAvL2F2b2lkIGNoaWxkcmVuIHRvIHRyaWdnZXIgb25DbGljayByaXBwbGUgZnJvbSBwYXJlbnRcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgIH1cbiAgICB2YXIgaGFuZGxlRG91YmxlQ2xpY2sgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vYWxlcnQoXCJkb3VibGUgY2xpY2sgb24gZmlsZVwiKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uRG91YmxlQ2xpY2sgPT09IG51bGwgfHwgb25Eb3VibGVDbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Eb3VibGVDbGljayhldnQpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayhldnQpIHtcbiAgICAgICAgLy8gYWxlcnQoXCJyaWdodCBjbGljayEhISFcIik7XG4gICAgICAgIC8vZ2V0IGNvb3JkaW5hdGVzXG4gICAgICAgIC8vemluZGV4XG4gICAgICAgIC8vY3JlYXRlIG1lbnUgY29tcG9uZW50XG4gICAgICAgIC8vIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvblJpZ2h0Q2xpY2sgPT09IG51bGwgfHwgb25SaWdodENsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJpZ2h0Q2xpY2soZXZ0KTtcbiAgICB9XG4gICAgLy8gRE9XTkxPQUQgRklMRVxuICAgIC8qKlxuICAgICAqIG9uRG93bmxvYWQsIGZvcm0gMVxuICAgICAqIFRyaWdnZXIgZG93bG9hZCBkaXJlY3RseSBwZXJmb3JtaW5nIGEgY2xpY2sgb24gYW5jaG9yIGVsZW1lbnRcbiAgICAgKi9cbiAgICB2YXIgaW5uZXJEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBkb3dubG9hZFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoYW5jaG9yRWxlbWVudCkge1xuICAgICAgICAgICAgYW5jaG9yRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBvbkRvd25sYWQsIGZvcm0gMlxuICAgICAqIEhhbmRsZSB0aGUgZG93bmxvYWQgdHJpZ2dlcmluZyBhbiBvdXRzaWRlIGV2ZW50XG4gICAgICovXG4gICAgdmFyIGhhbmRsZURvd25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25Eb3dubG9hZCkge1xuICAgICAgICAgICAgb25Eb3dubG9hZCA9PT0gbnVsbCB8fCBvbkRvd25sb2FkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRvd25sb2FkKGlkLCBkb3dubG9hZFVybCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRvd25sb2FkVXJsID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGlubmVyRG93bmxvYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhbmRsZUFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB4aHIgPT09IG51bGwgfHwgeGhyID09PSB2b2lkIDAgPyB2b2lkIDAgOiB4aHIuYWJvcnQoKTtcbiAgICAgICAgb25BYm9ydCA9PT0gbnVsbCB8fCBvbkFib3J0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFib3J0KGlkKTtcbiAgICB9O1xuICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBzdHlsZSwgb25DbGljazogaGFuZGxlQ2xpY2ssIG9uTW91c2VFbnRlcjogaGFuZGxlT25Ib3ZlckVudGVyLCBvbk1vdXNlTGVhdmU6IGhhbmRsZU9uSG92ZXJMZWF2ZSwgb25Eb3VibGVDbGljazogaGFuZGxlRG91YmxlQ2xpY2ssIG9uQ29udGV4dE1lbnU6IGhhbmRsZVJpZ2h0Q2xpY2sgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXJDb250YWluZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLW1haW4tbGF5ZXJcIiwgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pY29uLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllckNvbnRhaW5lciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tbGF5ZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1sYXllciBibHVyXCIsIHZpc2libGU6IGJhY2tncm91bmRCbHVySW1hZ2UgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY0ltYWdlTGF5ZXIsIHsgaW1hZ2VTb3VyY2U6IGltYWdlU291cmNlLCBmaWxlTmFtZTogbG9jYWxOYW1lLCB1cmw6IHVybCwgaXNCbHVyOiB0cnVlLCBzbWFydEltZ0ZpdDogZmFsc2UgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1sYXllclwiLCB2aXNpYmxlOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbWFnZUxheWVyLCB7IGltYWdlU291cmNlOiBpbWFnZVNvdXJjZSwgdXJsOiB1cmwsIGZpbGVOYW1lOiBsb2NhbE5hbWUsIGlzQmx1cjogZmFsc2UsIHNtYXJ0SW1nRml0OiBzbWFydEltZ0ZpdCB9KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1zdGF0dXMtbGF5ZXJcIiwgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljU3RhdHVzLCB7IHZhbGlkOiB2YWxpZCwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZGFya01vZGUgPyBcImZpbGUtY2FyZC1kYXRhIGRhcmstbW9kZVwiIDogXCJmaWxlLWNhcmQtZGF0YVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtbmFtZVwiIH0sIGxvY2FsTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtc2l6ZVwiIH0sIHNpemVGb3JtYXR0ZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXNpemVcIiB9LCBzaHJpbmtXb3JkKGxvY2FsVHlwZSkpKSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lclwiLCB2aXNpYmxlOiBzaG93SW5mbywgb25DbGljazogaGFuZGxlQ2xpY2tVdGlsIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZUNhcmRJbmZvTGF5ZXIsIHsgb25DbG9zZUluZm86IGhhbmRsZUNsb3NlSW5mbywgdmFsaWQ6IHZhbGlkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiwgbG9jYWxOYW1lOiBsb2NhbE5hbWUsIHNpemVGb3JtYXR0ZWQ6IHNpemVGb3JtYXR0ZWQsIGxvY2FsVHlwZTogbG9jYWxUeXBlIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtdXBsb2FkLWxheWVyLWNvbnRhaW5lclwiLCB2aXNpYmxlOiBpc1VwbG9hZGluZywgb25DbGljazogaGFuZGxlQ2xpY2tVdGlsIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1jYXJkLXVwbG9hZC1sYXllclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVDYXJkVXBsb2FkTGF5ZXIsIHsgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIHByb2dyZXNzOiBsb2NhbFByb2dyZXNzLCBvbkNhbmNlbDogb25DYW5jZWwgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNhbmNlbCA9PT0gbnVsbCB8fCBvbkNhbmNlbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DYW5jZWwoaWQpOyB9IDogdW5kZWZpbmVkLCBvbkFib3J0OiBvbkFib3J0ID8gaGFuZGxlQWJvcnQgOiB1bmRlZmluZWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlQ2FyZFJpZ2h0QWN0aW9ucywgeyBkZWxldGVJY29uOiBvbkRlbGV0ZSAhPT0gdW5kZWZpbmVkLCBvbkRlbGV0ZTogaGFuZGxlRGVsZXRlLCBkYXJrTW9kZTogZGFya01vZGUsIGltYWdlSWNvbjogaXNJbWFnZSAmJiBvblNlZSAhPT0gdW5kZWZpbmVkLCBvblNlZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25TZWUgPT09IG51bGwgfHwgb25TZWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VlKGltYWdlU291cmNlKTsgfSwgdmlkZW9JY29uOiBpc1ZpZGVvICYmIG9uV2F0Y2ggIT09IHVuZGVmaW5lZCwgb25XYXRjaDogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25XYXRjaCA9PT0gbnVsbCB8fCBvbldhdGNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbldhdGNoKHZpZGVvU291cmNlKTsgfSwgZG93bmxvYWRJY29uOiBvbkRvd25sb2FkICE9PSB1bmRlZmluZWQgfHwgZG93bmxvYWRVcmwgIT09IHVuZGVmaW5lZCwgb25Eb3dubG9hZDogaGFuZGxlRG93bmxvYWQsIGluZm9JY29uOiBpbmZvICE9PSB1bmRlZmluZWQsIG9uT3BlbkluZm86IGhhbmRsZU9wZW5JbmZvLCBpc0FjdGl2ZTogYWx3YXlzQWN0aXZlIHx8IGhvdmVyaW5nLCB2aXNpYmxlOiAhaXNVcGxvYWRpbmcgJiYgIXNob3dJbmZvIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwLCB7IG9wZW46IHJlc3VsdE9uVG9vbHRpcCwgdXBsb2FkU3RhdHVzOiB1cGxvYWRTdGF0dXMsIHZhbGlkOiB2YWxpZCwgZXJyb3JzOiBlcnJvcnMsIHVwbG9hZE1lc3NhZ2U6IHVwbG9hZE1lc3NhZ2UgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERvd25sb2FkSGlkZGVuLCB7IGZpbGVOYW1lOiBsb2NhbE5hbWUsIGFuY2hvclJlZjogZG93bmxvYWRSZWYsIGRvd25sb2FkVXJsOiBkb3dubG9hZFVybCB9KSkpO1xuICAgIH1cbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZnVpLWZ1bGxzY3JlZW4tY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwdmg7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjczNCk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlKTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UtaW4tb3V0O1xcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuICB6LWluZGV4OiA0MDAwO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZ1aS1mdWxsc2NyZWVuLWNvbnRhaW5lci5zaG93LWZzIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDApO1xcbn1cXG5cXG4uZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHdpZHRoOiA5MCU7XFxuICBoZWlnaHQ6IDkwJTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgLyogICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcXG4gICAgd2lkdGg6IDgwJTtcXG4gICAgaGVpZ2h0OiBhdXRvO1xcbiAgfSovXFxufVxcbi5mdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXIgaW1nIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiBhdXRvO1xcbn1cXG4uZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIHZpZGVvIHtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiBhdXRvO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogOTYwcHgpIHtcXG4gIC5mdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXIge1xcbiAgICBoZWlnaHQ6IDkwJTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuICAuZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIHZpZGVvIHtcXG4gICAgaGVpZ2h0OiBhdXRvO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG4gIC5mdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXIgaW1nIHtcXG4gICAgaGVpZ2h0OiBhdXRvO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG59XFxuXFxuLmJ1dHRvbi1mdWxsLXNjcmVlbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG59XCIpO1xuXG52YXIgRnVsbFNjcmVlbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvcGVuID0gcHJvcHMub3Blbiwgb25DbG9zZSA9IHByb3BzLm9uQ2xvc2UsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xvc2UoZSkge1xuICAgICAgICAvL2F2b2lkIGNoaWxkcmVuIHRvIHRyaWdnZXIgb25DbGljayByaXBwbGUgZnJvbSBwYXJlbnRcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgb25DbG9zZSA9PT0gbnVsbCB8fCBvbkNsb3NlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsb3NlKCk7XG4gICAgfVxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBoYW5kbGVDbG9zZUVzYyA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIGlmIChldnQua2V5ID09PSBcIkVzY2FwZVwiKVxuICAgICAgICAgICAgICAgIG9uQ2xvc2UgPT09IG51bGwgfHwgb25DbG9zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiYWRkaW5nIGxpc3RlbmVyXCIpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVDbG9zZUVzYyk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwicmVtb3ZpbmcgbGlzdGVuZXJcIik7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVDbG9zZUVzYyk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IG9wZW4gPyBcImZ1aS1mdWxsc2NyZWVuLWNvbnRhaW5lciBzaG93LWZzXCIgOiBcImZ1aS1mdWxsc2NyZWVuLWNvbnRhaW5lclwiLCBvbkNsaWNrOiBoYW5kbGVDbG9zZSB9LFxuICAgICAgICBvcGVuICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lclwiLCBvbkNsaWNrOiBoYW5kbGVDbG9zZSB9LCBjaGlsZHJlbikpLFxuICAgICAgICBvbkNsb3NlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44KVwiLCBvbkNsaWNrOiBoYW5kbGVDbG9zZSwgY29sb3JGaWxsOiBcInRyYW5zcGFyZW50XCIsIGNsYXNzTmFtZTogXCJidXR0b24tZnVsbC1zY3JlZW5cIiwgc2l6ZTogXCJleHRyYS1sYXJnZVwiIH0pKSkpO1xufTtcblxudmFyIFZpZGVvUHJldmlldyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB2aWRlb1NyYyA9IHByb3BzLnNyYywgXG4gICAgLyogYXV0b1BsYXksIGNvbnRyb2xzLCAgKi9cbiAgICBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIG90aGVycyA9IF9fcmVzdChwcm9wcywgW1wic3JjXCIsIFwic3R5bGVcIiwgXCJjbGFzc05hbWVcIl0pO1xuICAgIHZhciB2aWRlb1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBzb3VyY2UgPSBfYVswXSwgc2V0U291cmNlID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy9pZiBub3QgdW5kZWZpbmVkXG4gICAgICAgIGlmICghdmlkZW9TcmMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZpZGVvU3JjID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAvL2lmIGEgdXJsIHN0cmluZyBpcyBnaXZlbiwgYXNzaWduIGl0IGRpcmVjdGx5XG4gICAgICAgICAgICBzZXRTb3VyY2UodmlkZW9TcmMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9pZiBhIEZpbGUgb2JqZWN0IGlzIGdpdmVuLCBjaGVjayBpZiBpcyBhIHN1cHBvcnRlZCBmb3JtYXRcbiAgICAgICAgICAgIHZhciBoZWFkZXJNaW1lID0gdmlkZW9TcmMudHlwZSA/IHZpZGVvU3JjLnR5cGUuc3BsaXQoXCIvXCIpWzBdIDogXCJvY3RldFwiO1xuICAgICAgICAgICAgdmFyIHRhaWxNaW1lID0gdmlkZW9TcmMudHlwZSA/IHZpZGVvU3JjLnR5cGUuc3BsaXQoXCIvXCIpWzFdIDogXCJvY3RldFwiO1xuICAgICAgICAgICAgaWYgKGhlYWRlck1pbWUgPT09IFwidmlkZW9cIiAmJiBbXCJtcDRcIiwgXCJvZ2dcIiwgXCJ3ZWJtXCJdLmluY2x1ZGVzKHRhaWxNaW1lKSkge1xuICAgICAgICAgICAgICAgIC8vc2V0IHRoZSB2aWRlbyBzb3VyY2UgYW5kIGNyZWF0ZSB0aGUgdXJpIHN0cmluZyBpZiBpcyBhIHN1cHBvcnRlZCB2aWRlbyBmb3JtYXRcbiAgICAgICAgICAgICAgICB2YXIgbmV3VmlkZW9TcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHZpZGVvU3JjKTtcbiAgICAgICAgICAgICAgICBzZXRTb3VyY2UobmV3VmlkZW9TcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW3ZpZGVvU3JjXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHNvdXJjZSAmJiB2aWRlb1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICB2aWRlb1JlZi5jdXJyZW50LmxvYWQoKTtcbiAgICAgICAgfVxuICAgIH0sIFtzb3VyY2VdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHZpZGVvU3JjICYmIHNvdXJjZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInZpZGVvXCIsIF9fYXNzaWduJDEoeyBvbkNsaWNrOiBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSwgXG4gICAgICAgIC8vb25Mb2FkZWRNZXRhZGF0YT17aGFuZGxlTG9hZGVkfVxuICAgICAgICBpZDogXCJmaWxlcy11aS12aWRlb1wiLCBcbiAgICAgICAgLy9jb250cm9scz17Y29udHJvbHN9XG4gICAgICAgIHJlZjogdmlkZW9SZWYsIGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiZmlsZXN1aS12aWRlby1wcmV2aWV3XCIsIFxuICAgICAgICAvL2F1dG9QbGF5PXthdXRvcGxheX1cbiAgICAgICAgc3JjOiBzb3VyY2UsIFxuICAgICAgICAvL3dpZHRoPXtcIjEwMCVcIn1cbiAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIiwgc3R5bGU6IHN0eWxlIH0sIG90aGVycyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzb3VyY2VcIiwgeyB0eXBlOiBcInZpZGVvL3dlYm1cIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNvdXJjZVwiLCB7IHR5cGU6IFwidmlkZW8vb2dnXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzb3VyY2VcIiwgeyB0eXBlOiBcInZpZGVvL21wNFwiIH0pKSkpKTtcbn07XG5cbnZhciBGaWxlc1VpUHJvdmlkZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY29uZmlnID0gcHJvcHMuY29uZmlnO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlc1VpQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29uZmlnIHx8IHt9IH0sIGNoaWxkcmVuKSk7XG59O1xuXG5leHBvcnQgeyBBQk9SVEVEX0VSUk9SX1JFU1BPTlNFLCBBdmF0YXIsIERyb3B6b25lLCBEcm9wem9uZUVuZ2xpc2gsIERyb3B6b25lRnJlbmNoLCBEcm9wem9uZUl0YWxpYW4sIERyb3B6b25lTG9jYWxpemVyLCBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yLCBEcm9wem9uZVBvcnR1Z3Vlc2UsIERyb3B6b25lUnVzc2lhbiwgRHJvcHpvbmVTaW1wbGlmaWVkQ2hpbmVzZSwgRHJvcHpvbmVTcGFuaXNoLCBEcm9wem9uZVRyYWRpdGlvbmFsQ2hpbmVzZSwgRXh0RmlsZUluc3RhbmNlLCBGaWxlQ2FyZCwgRmlsZUlkR2VuZXJhdG9yLCBGaWxlSW5wdXRCdXR0b24sIEZpbGVJdGVtRW5nbGlzaCwgRmlsZUl0ZW1GcmVuY2gsIEZpbGVJdGVtSXRhbGlhbiwgRmlsZUl0ZW1Mb2NhbGl6ZXIsIEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IsIEZpbGVJdGVtUG9ydHVndWVzZSwgRmlsZUl0ZW1SdXNzaWFuLCBGaWxlSXRlbVNpbXBsaWZpZWRDaGluZXNlLCBGaWxlSXRlbVNwYW5pc2gsIEZpbGVJdGVtVHJhZGl0aW9uYWxDaGluZXNlLCBGaWxlTW9zYWljLCBGaWxlc1VpUHJvdmlkZXIsIEZ1bGxTY3JlZW4sIEltYWdlUHJldmlldywgSlNPTl9QQVJTRV9FUlJPUl9SRVNQT05TRSwgSnNvblBhcnNlUmVzcG9uc2UsIE1hdGVyaWFsQnV0dG9uLCBOQU1FRF9DT0xPUlMsIE5PX1hIUl9QUk9WSURFRF9FUlJPUiwgU3ludGhldGljRmlsZSwgVElNRU9VVF9FUlJPUl9SRVNQT05TRSwgVU5FWFBFQ1RFRF9FUlJPUl9SRVNQT05TRSwgVmFsaWRhdGVFcnJvckVuZ2xpc2gsIFZhbGlkYXRlRXJyb3JGcmVuY2gsIFZhbGlkYXRlRXJyb3JJdGFsaWFuLCBWYWxpZGF0ZUVycm9yTG9jYWxpemVyLCBWYWxpZGF0ZUVycm9yTG9jYWxpemVyU2VsZWN0b3IsIFZhbGlkYXRlRXJyb3JQb3J0dWd1ZXNlLCBWYWxpZGF0ZUVycm9yUnVzc2lhbiwgVmFsaWRhdGVFcnJvclNpbXBsaWZpZWRDaGluZXNlLCBWYWxpZGF0ZUVycm9yU3BhbmlzaCwgVmFsaWRhdGVFcnJvclRyYWRpdGlvbmFsQ2hpbmVzZSwgVmlkZW9QcmV2aWV3LCBhYWMsIGFidywgYWNjZGIsIGFkZENsYXNzTmFtZSwgYWRkRXh0cmFEYXRhLCBhZGRIZWFkZXJzLCBhc3VyZUNvbG9yLCBjbGVhbklucHV0LCBjb2xvdXJOYW1lVG9IZXgsIGNvbXBsZXRlQXN1cmVDb2xvciwgY29tcGxldGVVcGxvYWRSZXN1bHQsIGNyZWF0ZUxpc3RPZk11bHRpVHlwZUZpbGUsIGNyZWF0ZVN5bnRoZXRpY0ZpbGUsIGNyZWF0ZVVwbG9hZENvbmZpZywgZGFya2VyQ29sb3IsIGV4dEZpbGVNb2NrLCBleHRGaWxlUmVjb25jaWxhdGlvbiwgZmFrZUZ1aVVwbG9hZCwgZmlsZUxpc3RUb0V4dEZpbGVBcnJheSwgZmlsZUxpc3RUb0V4dEZpbGVJbnN0YW5jZUFycmF5LCBmaWxlTGlzdHZhbGlkYXRvciwgZmlsZVNpemVGb3JtYXRlciwgZ2V0RXh0LCBnZXRJbWFnZU9yaWVudGF0aW9uLCBnZXRMb2NhbEZpbGVJdGVtRGF0YSwgZ2V0UmFuZG9tSW50LCBnZXRVUkxGaWxlSWNvLCBnZXRVUkxGaWxlSWNvRnJvbU5hbWVBbmRUeXBlLCBoZXhDb2xvclRvUkdCLCBoZXhUb2RlYywgaW5zdGFudFByZXBhcmluZ1RvVXBsb2FkT25lLCBpc0hleENvbG9yLCBpc1VwbG9hZEFibGVFeHRGaWxlLCBpc1ZhbGlkYXRlQWN0aXZlLCBtYWtlRXJyb3JVcGxvYWRSZXNwb25zZSwgbWFrZVNlcnZlclJlc3BvbnNlLCBtYWtlU3VjY2Vzc1VwbG9hZFJlc3BvbnNlLCBtYWtlU3ludGhldGljRXh0RmlsZSwgcHJlcFRvVXBsb2FkT25lLCBwcmVwYXJpbmdUb1VwbG9hZE9uZSwgcmVhZEFzQXJyYXlCdWZmZXIsIHJlYWRBc0JpbmFyeVN0cmluZywgcmVhZEFzRGF0YVVSTCwgcmVhZEFzVGV4dCwgcmVzaXplSW1hZ2UsIHNhbml0aXplQXJyRXh0RmlsZSwgc2VwYXJhdGVBY2NlcHQsIHNldE5leHRVcGxvYWRTdGF0dXMsIHNldFByZXBUb1VwbG9hZGluZywgc2hyaW5rV29yZCwgc2xlZXBQcmVwYXJpbmcsIHNsZWVwVHJhbnNpdGlvbiwgdG9VcGxvYWRhYmxlRXh0RmlsZUxpc3QsIHVuYWJsZVRvVXBsb2FkUmVzdWx0LCB1bmV4cGVjdGVkRXJyb3JVcGxvYWRSZXN1bHQsIHVwbG9hZEV4dEZpbGUsIHVwbG9hZEZpbGUsIHVwbG9hZEZvcm1EYXRhLCB1cGxvYWRPbmUsIHVwbG9hZE9uZUV4dEZpbGUsIHVzZUZha2VQcm9ncmVzcywgdmFsaWRhdGVBY2NlcHQsIHZhbGlkYXRlRXh0RmlsZSwgdmFsaWRhdGVFeHRGaWxlTGlzdCwgdmFsaWRhdGVGaWxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5lcy5qcy5tYXBcbiIsIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3Byb3AtdHlwZXMgKi9cbmltcG9ydCBSZWFjdCwge1xuICB1c2VSZWYsXG4gIHVzZU1lbW8sXG4gIHVzZUVmZmVjdCxcbiAgdXNlU3RhdGUsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IERyb3B6b25lLCBGaWxlTW9zYWljIH0gZnJvbSBcIkBmaWxlcy11aS9yZWFjdFwiO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCIuL01lc3NhZ2VcIjtcbmltcG9ydCB7IEF3YWl0IH0gZnJvbSBcIi4vQXdhaXRcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIG5ldyBkaXJlY3RvcnkgKGZvbGRlcikuXG4gKlxuICogQ29tcG9uZW50IGlzIGVkaXRhYmxlIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIGl0IGFuZCBjaGFuZ2VzIGJhY2sgdG8gXCJ0ZXh0XCJcbiAqIHdoZW4gdGhleSBhcmUgZG9uZS5cbiAqL1xuY29uc3QgU2luZ2xlTmV3RGlyID0gKHsgbmFtZSwgZWRpdCwgc2V0TmV3RGlyLCBpZHggfSkgPT4ge1xuICBjb25zdCByZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgW19uYW1lLCBzZXROYW1lXSA9IHVzZVN0YXRlKG5hbWUgfHwgXCJcIik7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZWRpdCkge1xuICAgICAgcmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtyZWYsIGVkaXRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfbmFtZS5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG4gICAgICBjb25zdCBkaXJzID0gX25hbWUuc3BsaXQoXCIvXCIsIDIpO1xuICAgICAgc2V0TmFtZShkaXJzWzBdKTtcbiAgICAgIGNvbnN0IGFkZCA9IHsgbmFtZTogZGlyc1sxXSwgZWRpdDogdHJ1ZSB9O1xuICAgICAgc2V0TmV3RGlyKHsgbmFtZTogZGlyc1swXSwgZWRpdDogZmFsc2UgfSwgaWR4LCBhZGQpO1xuICAgIH1cbiAgfSwgW19uYW1lLCBzZXROZXdEaXIsIGlkeF0pO1xuXG4gIGlmICghZWRpdCkge1xuICAgIGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBzZXROZXdEaXIoeyBuYW1lOiBfbmFtZSwgZWRpdDogdHJ1ZSB9LCBpZHgpO1xuICAgIH07XG4gICAgcmV0dXJuIChcbiAgICAgIDxidXR0b25cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tbGlua1wiXG4gICAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBcIjAuMXJlbVwiLCBwYWRkaW5nUmlnaHQ6IFwiMHJlbVwiIH19XG4gICAgICA+XG4gICAgICAgIHtfbmFtZX0vXG4gICAgICA8L2J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAoZSkgPT4ge1xuICAgIHNldE5hbWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IG9uQmx1ciA9IChlKSA9PiB7XG4gICAgaWYgKGUucmVsYXRlZFRhcmdldD8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2Fvc2RiLWYtY2FuY2VsLW5ldy1kaXJlY3RvcnlcIikpIHtcbiAgICAgIHNldE5ld0Rpcih7IGVkaXQ6IGZhbHNlIH0sIGlkeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldE5ld0Rpcih7IG5hbWU6IF9uYW1lLCBlZGl0OiBmYWxzZSB9LCBpZHgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGUpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgc2V0TmV3RGlyKHsgbmFtZTogX25hbWUsIGVkaXQ6IGZhbHNlIH0sIGlkeCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgdmFsdWU9e19uYW1lfVxuICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgdGl0bGU9XCJJbnNlcnQgbmV3IGRpcmVjdG9yeSBuYW1lLiBBIGRpcmVjdG9yeSBuYW1lIG11c3Qgbm90IGNvbnRhaW4gdGhlIHNsYXNoICcvJy5cIlxuICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY2Fvc2RiLWYtY2FuY2VsLW5ldy1kaXJlY3RvcnlcIj5cbiAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmkteFwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiPlxuICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1jaGVja1wiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG4gICk7XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYWxsIGRpcmVjdG9yaWVzIGJlbmVhdGggdGhlIGRpcmVjdG9yeUJhc2UuXG4gKi9cbmNvbnN0IE5ld0RpcnMgPSAoeyBzZXREaXJlY3RvcnksIHZhbHVlIH0pID0+IHtcbiAgY29uc3QgW25ld0RpcnMsIHNldE5ld0RpcnNdID0gdXNlU3RhdGUoXG4gICAgdmFsdWUubWFwKChkKSA9PiB7XG4gICAgICByZXR1cm4geyBuYW1lOiBkIH07XG4gICAgfSksXG4gICk7XG5cbiAgY29uc3Qgc2V0U2luZ2xlTmV3RGlyID0gdXNlQ2FsbGJhY2soXG4gICAgKGQsIGlkeCwgYWRkKSA9PiB7XG4gICAgICB2YXIgX25ld0RpcnMgPSBbXS5jb25jYXQobmV3RGlycyk7XG4gICAgICBpZiAoZC5uYW1lKSB7XG4gICAgICAgIF9uZXdEaXJzW2lkeF0gPSBkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25ld0RpcnMgPSBfbmV3RGlycy5zbGljZSgwLCBpZHgpLmNvbmNhdChfbmV3RGlycy5zbGljZShpZHggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAoYWRkKSB7XG4gICAgICAgIF9uZXdEaXJzID0gX25ld0RpcnNcbiAgICAgICAgICAuc2xpY2UoMCwgaWR4ICsgMSlcbiAgICAgICAgICAuY29uY2F0KFthZGRdLCBfbmV3RGlycy5zbGljZShpZHggKyAxKSk7XG4gICAgICB9XG4gICAgICBzZXROZXdEaXJzKF9uZXdEaXJzKTtcbiAgICAgIHNldERpcmVjdG9yeShfbmV3RGlycy5tYXAoKGQpID0+IGQubmFtZSkpO1xuICAgIH0sXG4gICAgW25ld0RpcnMsIHNldE5ld0RpcnMsIHNldERpcmVjdG9yeV0sXG4gICk7XG5cbiAgY29uc3QgYWRkRGlyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IF9uZXdEaXJzID0gbmV3RGlycy5tYXAoKGQpID0+IHtcbiAgICAgIHJldHVybiB7IC4uLmQsIGVkaXQ6IGZhbHNlIH07XG4gICAgfSk7XG4gICAgX25ld0RpcnMucHVzaCh7IGVkaXQ6IHRydWUgfSk7XG4gICAgc2V0TmV3RGlycyhfbmV3RGlycyk7XG4gIH0sIFtuZXdEaXJzLCBzZXROZXdEaXJzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge25ld0RpcnMubWFwKChuZXdEaXIsIGlkeCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTaW5nbGVOZXdEaXJcbiAgICAgICAgICAgIGtleT17YCR7bmV3RGlyLm5hbWV9LSR7aWR4fWB9XG4gICAgICAgICAgICBpZHg9e2lkeH1cbiAgICAgICAgICAgIG5hbWU9e25ld0Rpci5uYW1lfVxuICAgICAgICAgICAgc2V0TmV3RGlyPXtzZXRTaW5nbGVOZXdEaXJ9XG4gICAgICAgICAgICBlZGl0PXtuZXdEaXIuZWRpdH1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgICB7bmV3RGlycy5maWx0ZXIoKGQpID0+IGQuZWRpdCkubGVuZ3RoID4gMCB8fCAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9XCJtcy1hdXRvIGJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFkZERpcigpfVxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktZm9sZGVyLXBsdXNcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGNvbXBsZXRlIGRpcmVjdG9yeSBwYXRoIG9mIHRoZSBuZXcgZmlsZSBlbnRpdGllc1xuICogKGRpcmVjb3R5QmFzZSArIG5ldyBkaXJlY3RvcmllcykuXG4gKi9cbmNvbnN0IERpcmVjdG9yeUZpZWxkID0gKHtcbiAgZGlyZWN0b3J5QmFzZSxcbiAgcmVhZE9ubHksXG4gIHZhbHVlLFxuICBzZXREaXJlY3RvcnksXG4gIGxhYmVsLFxufSkgPT4ge1xuICBjb25zdCBfbGFiZWwgPSBsYWJlbCB8fCBcIkRpcmVjdG9yeVwiO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWItMSByb3cgY2Fvc2RiLWYtZmlsZS11cGxvYWQtZGlyZWN0b3J5LWlucHV0XCI+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57X2xhYmVsfTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS05IGQtZmxleFwiPlxuICAgICAgICB7IWRpcmVjdG9yeUJhc2UgfHwgKFxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCJ1bnNldFwiLCBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2wtcGxhaW50ZXh0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZGlyZWN0b3J5QmFzZS5qb2luKFwiL1wiKSArIFwiL1wifVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgICAge3JlYWRPbmx5IHx8IDxOZXdEaXJzIHNldERpcmVjdG9yeT17c2V0RGlyZWN0b3J5fSB2YWx1ZT17dmFsdWV9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vKipcbiAqIFNlbGVjdCBhIFJlY29yZFR5cGUgZnJvbSBhIGRyb3cgZG93bi5cbiAqL1xuY29uc3QgU2VsZWN0ID0gKHsgb3B0aW9ucywgb25DaGFuZ2UsIHZhbHVlLCBjbGFzc05hbWUgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzZWxlY3QgY2xhc3NOYW1lPXtjbGFzc05hbWV9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gdmFsdWU9e3ZhbHVlfT5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj48L29wdGlvbj5cbiAgICAgIHtvcHRpb25zLm1hcCgobywgaWR4KSA9PiAoXG4gICAgICAgIDxvcHRpb24ga2V5PXtpZHh9IHZhbHVlPXtvLnZhbHVlfSB0aXRsZT17by50aXRsZX0+XG4gICAgICAgICAge28ubGFiZWwgfHwgby52YWx1ZX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICApKX1cbiAgICA8L3NlbGVjdD5cbiAgKTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIFNlbGVjdG9yIGFuZCBoYW5kbGVzIGFzeW5jaHJvbm91cyByZXNvbHV0aW9uIG9mIHRoZSBlbGlnaWJsZVxuICogcmVjb3JkIHR5cGVzLlxuICovXG5jb25zdCBSZWNvcmRUeXBlRmllbGQgPSAoeyBvcHRpb25zLCB2YWx1ZSwgb25DaGFuZ2UsIGxhYmVsIH0pID0+IHtcbiAgY29uc3QgX2xhYmVsID0gbGFiZWwgfHwgXCJSZWNvcmRUeXBlXCI7XG4gIGNvbnN0IF9yZWFkT25seSA9ICFvcHRpb25zO1xuICBjb25zdCBjbGFzc05hbWUgPSBfcmVhZE9ubHkgPyBcImZvcm0tY29udHJvbC1wbGFpbnRleHRcIiA6IFwiZm9ybS1jb250cm9sIGZvcm0tc2VsZWN0XCI7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTEgcm93IGNhb3NkYi1mLWZpbGUtdXBsb2FkLXJlY29yZHR5cGUtc2VsZWN0XCI+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPVwicGUtMSBjb2wtc20tMyBjb2wtZm9ybS1sYWJlbFwiPntfbGFiZWx9PC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTlcIj5cbiAgICAgICAgeyFfcmVhZE9ubHkgfHwgKFxuICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVhZE9ubHk9e19yZWFkT25seX0gdmFsdWU9e3ZhbHVlfSAvPlxuICAgICAgICApfVxuICAgICAgICB7X3JlYWRPbmx5IHx8IChcbiAgICAgICAgICA8QXdhaXRcbiAgICAgICAgICAgIHByb21pc2U9e1Byb21pc2UuYWxsKFtvcHRpb25zLCB2YWx1ZV0pfVxuICAgICAgICAgICAgdGhlbj17KHJlc29sdmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICBvcHRpb25zPXtyZXNvbHZlZFswXX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3Jlc29sdmVkWzFdfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vKipcbiAqIFNpbmdsZSBmaWxlIGluIHRoZSBEcm9wem9uZS5cbiAqL1xuY29uc3QgRmlsZSA9ICh7IGZpbGUsIHJlbW92ZUZpbGUgfSkgPT4ge1xuICByZXR1cm4gPEZpbGVNb3NhaWMgey4uLmZpbGV9IG9uRGVsZXRlPXtyZW1vdmVGaWxlfSAvPjtcbn07XG5cbi8qKlxuICogSGFuZGxlIGZhaWxlZCBmaWxlIHVwbG9hZC5cbiAqL1xuY29uc3QgRmlsZVVwbG9hZEZhaWxlZCA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8TWVzc2FnZSB0eXBlPVwiZXJyb3JcIj5cbiAgICAgIHtcIlRoZSBmaWxlIHVwbG9hZCBmYWlsZWQ6IFwifVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvTWVzc2FnZT5cbiAgKTtcbn07XG5cbi8qKlxuICogSGFuZGxlIHN1Y2Nlc3NmdWwgZmlsZSB1cGxvYWQuXG4gKi9cbmNvbnN0IEZpbGVVcGxvYWRTdWNjZXNzID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7Y2hpbGRyZW4gfHwgKFxuICAgICAgICA8TWVzc2FnZSB0eXBlPVwic3VjY2Vzc1wiPllvdXIgZmlsZXMgaGF2ZSBiZWVuIHVwbG9hZGVkLjwvTWVzc2FnZT5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vKipcbiAqIFNob3cgdGhlIHtuYW1lLCBpZCwgbGlua30gb2Ygc3VjY2Vzc2Z1bGx5IGluc2VydGVkIGZpbGVzIG9yIHtuYW1lLCBlcnJvcn0gb2ZcbiAqIGZhaWxlZCBvbmVzLlxuICovXG5jb25zdCBTaW5nbGVGaWxlUmVzcG9uc2UgPSAoeyBkaXJlY3RvcnksIGZpbGUsIHJlc3BvbnNlRXJyb3JzIH0pID0+IHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKHJlc3BvbnNlRXJyb3JzKSB7XG4gICAgcmVzdWx0ID0gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNlwiPntmaWxlLnBhdGgucmVwbGFjZUFsbChkaXJlY3RvcnksIFwiXCIpfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IHRleHQtZW5kXCI+XG4gICAgICAgICAge2ZpbGUuZXJyb3IgPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtZGFuZ2VyXCI+e2ZpbGUuZXJyb3J9PC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cInRleHQtc3VjY2VzcyBiaSBiaS1jaGVja1wiIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTZcIj57ZmlsZS5wYXRoLnJlcGxhY2VBbGwoZGlyZWN0b3J5LCBcIlwiKX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNFwiPntmaWxlLmlkfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS0yIHRleHQtZW5kXCI+XG4gICAgICAgICAgPGEgY2xhc3NOYW1lPVwiYnRuIGNhb3NkYi1mcy1idG4tZmlsZVwiIGhyZWY9e2ZpbGUudXJsfT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJhZGdlIGNhb3NkYi1sYWJlbC1maWxlXCI+Rjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGxpIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj57cmVzdWx0fTwvZGl2PlxuICAgIDwvbGk+XG4gICk7XG59O1xuXG4vKipcbiAqIEhhbmRsZSB0aGUgcmVzcG9uc2Ugb2YgdGhlIGZpbGUgdXBsb2FkIChzdWNjZXNzIGFuZCBmYWlsdXJlKS5cbiAqL1xuY29uc3QgaGFuZGxlUmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgdmFyIGhlYWRlciA9IHJlc3BvbnNlLmhhc0Vycm9ycyA/IChcbiAgICA8TWVzc2FnZSB0eXBlPVwiZXJyb3JcIj5UaGUgZmlsZSB1cGxvYWQgZmFpbGVkLjwvTWVzc2FnZT5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPE1lc3NhZ2UgdHlwZT1cInN1Y2Nlc3NcIj5Zb3VyIGZpbGVzIGhhdmUgYmVlbiB1cGxvYWRlZC48L01lc3NhZ2U+XG4gICAgICB7IXJlc3BvbnNlLnVybCB8fCAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItM1wiPlxuICAgICAgICAgIEdvIHRvIGRpcmVjdG9yeTogPGEgaHJlZj17cmVzcG9uc2UudXJsfT57cmVzcG9uc2UuZGlyZWN0b3J5fTwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7aGVhZGVyfVxuICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02XCI+PC9kaXY+XG4gICAgICAgICAgICB7cmVzcG9uc2UuaGFzRXJyb3JzID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IHRleHQtZW5kIGZ3LWJvbGRcIj5FcnJvcjwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS0zIGZ3LWJvbGRcIj5JRDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTMgdGV4dC1lbmQgZnctYm9sZFwiPkZpbGUgRW50aXR5PC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAge3Jlc3BvbnNlLm5ld0ZpbGVzPy5tYXAoKGYsIGlkeCkgPT4gKFxuICAgICAgICAgIDxTaW5nbGVGaWxlUmVzcG9uc2VcbiAgICAgICAgICAgIHJlc3BvbnNlRXJyb3JzPXtyZXNwb25zZS5oYXNFcnJvcnN9XG4gICAgICAgICAgICBkaXJlY3Rvcnk9e3Jlc3BvbnNlLmRpcmVjdG9yeX1cbiAgICAgICAgICAgIGZpbGU9e2Z9XG4gICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vKipcbiAqIEFzc3VyZSB0aGF0IGEgZGlyZWN0b3J5IGlzIGFuIGFycmF5IFtcImRpclwiLFwic3ViZGlyXCJdLCBub3QgYSBzdHJpbmdcbiAqIFwiZGlyL3N1YmRpclwiLlxuICovXG5jb25zdCB0b0RpcmVjdG9yeUFycmF5ID0gKGRpcikgPT4ge1xuICBpZiAoZGlyPy5zcGxpdCkge1xuICAgIHJldHVybiBkaXIuc3BsaXQoXCIvXCIpLmZpbHRlcigoeCkgPT4geCk7XG4gIH1cbiAgcmV0dXJuIGRpcjtcbn07XG5cbi8qKlxuICogVGhlIEZpbGVVcGxvYWQgd2lkZ2V0LlxuICovXG5jb25zdCBGaWxlVXBsb2FkID0gKHtcbiAgZmlsZXMsXG4gIG9uQ2FuY2VsLFxuICByZWNvcmRUeXBlU2hvdyxcbiAgcmVjb3JkVHlwZXMsXG4gIGRpcmVjdG9yeUJhc2UsXG4gIGRpcmVjdG9yeSxcbiAgZGlyZWN0b3J5UmVhZE9ubHksXG4gIGRpcmVjdG9yeVNob3csXG4gIHJlY29yZFR5cGUsXG4gIG9uQ2hhbmdlLFxuICBvblN1Ym1pdCxcbiAgYWNjZXB0LFxuICBzdGF0ZSxcbiAgb25GaW5pc2gsXG59KSA9PiB7XG4gIGNvbnN0IFtfZmlsZXMsIHNldEZpbGVzXSA9IHVzZVN0YXRlKGZpbGVzIHx8IFtdKTtcbiAgY29uc3QgW19kaXJlY3RvcnksIHNldERpcmVjdG9yeV0gPSB1c2VTdGF0ZShcbiAgICB0b0RpcmVjdG9yeUFycmF5KGRpcmVjdG9yeSkgfHwgW10sXG4gICk7XG4gIGNvbnN0IFtfcmVjb3JkVHlwZSwgc2V0UmVjb3JkVHlwZV0gPSB1c2VTdGF0ZShyZWNvcmRUeXBlKTtcbiAgY29uc3QgW19zdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoc3RhdGUgfHwgXCJSRUFEWVwiKTtcbiAgY29uc3QgW19lcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUoKTtcbiAgY29uc3QgW19yZXN1bHRzLCBzZXRSZXN1bHRzXSA9IHVzZVN0YXRlKCk7XG5cbiAgLy8gY29udmVuaWVuY2Ugb2JqZWN0XG4gIGNvbnN0IGNvbXBsZXRlU3RhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZXM6IF9maWxlcyxcbiAgICAgIGRpcmVjdG9yeTogdG9EaXJlY3RvcnlBcnJheShkaXJlY3RvcnlCYXNlKS5jb25jYXQoX2RpcmVjdG9yeSksXG4gICAgICByZWNvcmRUeXBlOiBfcmVjb3JkVHlwZSxcbiAgICB9O1xuICB9LCBbX2ZpbGVzLCBfcmVjb3JkVHlwZSwgX2RpcmVjdG9yeSwgZGlyZWN0b3J5QmFzZV0pO1xuXG4gIC8vIHByb3BhZ2F0ZSBjaGFuZ2VzIHRvIHBhcmVudCBjb21wb25lbnQgaWYgbmVjZXNzYXJ5XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZShjb21wbGV0ZVN0YXRlKTtcbiAgICB9XG4gIH0sIFtjb21wbGV0ZVN0YXRlLCBvbkNoYW5nZV0pO1xuXG4gIGNvbnN0IGFjdGlvbkJ1dHRvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IFwiYWZ0ZXJcIixcbiAgICAgIGRlbGV0ZUJ1dHRvbjogb25DYW5jZWwgJiYge1xuICAgICAgICBjbGFzc05hbWU6IFwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiLFxuICAgICAgICBjaGlsZHJlbjogW1wiQ2FuY2VsXCJdLFxuICAgICAgICByZXNldFN0eWxlczogdHJ1ZSxcbiAgICAgICAgb25DbGljazogb25DYW5jZWwsXG4gICAgICB9LFxuICAgICAgdXBsb2FkQnV0dG9uOiBvblN1Ym1pdCAmJiB7XG4gICAgICAgIGRpc2FibGVkOiAhY29tcGxldGVTdGF0ZS5maWxlcz8ubGVuZ3RoID4gMCxcbiAgICAgICAgY2xhc3NOYW1lOlxuICAgICAgICAgIGNvbXBsZXRlU3RhdGUuZmlsZXM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gXCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgOiBcImJ0biBidG4tcHJpbWFyeSBkaXNhYmxlZFwiLFxuICAgICAgICByZXNldFN0eWxlczogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtcIlVwbG9hZFwiXSxcbiAgICAgICAgb25DbGljazogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHNldFN0YXRlKFwiU0VORElOR1wiKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvblN1Ym1pdCh7XG4gICAgICAgICAgICAgIC4uLmNvbXBsZXRlU3RhdGUsXG4gICAgICAgICAgICAgIHJlY29yZFR5cGU6IGF3YWl0IGNvbXBsZXRlU3RhdGUucmVjb3JkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IGhhbmRsZVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHNldFN0YXRlKFwiU1VDQ0VTU1wiKTtcbiAgICAgICAgICAgIHNldFJlc3VsdHMocmVzdWx0cyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHNldFN0YXRlKFwiRkFJTEVEXCIpO1xuICAgICAgICAgICAgc2V0RXJyb3IoPEZpbGVVcGxvYWRGYWlsZWQ+e2Vycm9yLm1lc3NhZ2V9PC9GaWxlVXBsb2FkRmFpbGVkPik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9LCBbY29tcGxldGVTdGF0ZSwgb25TdWJtaXQsIHNldFN0YXRlLCBzZXRFcnJvciwgb25DYW5jZWxdKTtcblxuICBjb25zdCB1cGRhdGVGaWxlcyA9IHVzZUNhbGxiYWNrKFxuICAgIChpbmNvbW1pbmdGaWxlcykgPT4ge1xuICAgICAgc2V0RmlsZXMoaW5jb21taW5nRmlsZXMpO1xuICAgIH0sXG4gICAgW3NldEZpbGVzXSxcbiAgKTtcbiAgY29uc3QgdXBkYXRlUmVjb3JkVHlwZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBzZXRSZWNvcmRUeXBlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRSZWNvcmRUeXBlXSxcbiAgKTtcblxuICBjb25zdCByZW1vdmVGaWxlID0gKGlkKSA9PiB7XG4gICAgc2V0RmlsZXMoX2ZpbGVzLmZpbHRlcigoeCkgPT4geC5pZCAhPT0gaWQpKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXt7IG1pbldpZHRoOiBcIjUwMHB4XCIgfX0+XG4gICAgICB7X3N0YXRlID09PSBcIlNFTkRJTkdcIiA/IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxMb2FkaW5nSW5mbyBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkgOiAoXG4gICAgICAgIGZhbHNlXG4gICAgICApfVxuICAgICAge19zdGF0ZSA9PT0gXCJSRUFEWVwiID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHsocmVjb3JkVHlwZXMgfHwgX3JlY29yZFR5cGUpICYmIHJlY29yZFR5cGVTaG93ICYmIChcbiAgICAgICAgICAgIDxSZWNvcmRUeXBlRmllbGRcbiAgICAgICAgICAgICAgb3B0aW9ucz17cmVjb3JkVHlwZXN9XG4gICAgICAgICAgICAgIHZhbHVlPXtfcmVjb3JkVHlwZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3VwZGF0ZVJlY29yZFR5cGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyFkaXJlY3RvcnlTaG93IHx8IChcbiAgICAgICAgICAgIDxEaXJlY3RvcnlGaWVsZFxuICAgICAgICAgICAgICBkaXJlY3RvcnlCYXNlPXt0b0RpcmVjdG9yeUFycmF5KGRpcmVjdG9yeUJhc2UpfVxuICAgICAgICAgICAgICByZWFkT25seT17ZGlyZWN0b3J5UmVhZE9ubHl9XG4gICAgICAgICAgICAgIHZhbHVlPXtfZGlyZWN0b3J5fVxuICAgICAgICAgICAgICBzZXREaXJlY3Rvcnk9e3NldERpcmVjdG9yeX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8RHJvcHpvbmVcbiAgICAgICAgICAgIGFjY2VwdD17YWNjZXB0fVxuICAgICAgICAgICAgYWN0aW9uQnV0dG9ucz17YWN0aW9uQnV0dG9uc31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt1cGRhdGVGaWxlc31cbiAgICAgICAgICAgIHZhbHVlPXtfZmlsZXN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge19maWxlcy5tYXAoKGZpbGUpID0+IChcbiAgICAgICAgICAgICAgPEZpbGUga2V5PXtmaWxlLmlkfSBmaWxlPXtmaWxlfSByZW1vdmVGaWxlPXtyZW1vdmVGaWxlfSAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9Ecm9wem9uZT5cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICBmYWxzZVxuICAgICAgKX1cbiAgICAgIHtfZXJyb3J9XG4gICAgICB7IShfc3RhdGUgPT09IFwiU1VDQ0VTU1wiKSB8fCAoXG4gICAgICAgIDxGaWxlVXBsb2FkU3VjY2Vzcz57X3Jlc3VsdHN9PC9GaWxlVXBsb2FkU3VjY2Vzcz5cbiAgICAgICl9XG4gICAgICB7KF9zdGF0ZSA9PT0gXCJTVUNDRVNTXCIgfHwgX3N0YXRlID09PSBcIkZBSUxFRFwiKSAmJiBvbkZpbmlzaCAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyB0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJyZXNldFwiXG4gICAgICAgICAgICB0aXRsZT1cIkNsb3NlIHRoaXMgZmlsZSB1cGxvYWQgZGlhbG9ndWUuXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgb25DbGljaz17b25GaW5pc2h9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgT2tcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRmlsZVVwbG9hZC5kZWZhdWx0UHJvcHMgPSB7XG4gIGRpcmVjdG9yeVNob3c6IHRydWUsXG4gIGRpcmVjdG9yeVJlYWRPbmx5OiBmYWxzZSxcbiAgcmVjb3JkVHlwZVNob3c6IHRydWUsXG4gIGRpcmVjdG9yeUJhc2U6IFtdLFxuICBkaXJlY3Rvcnk6IFtdLFxufTtcblxuZXhwb3J0IHsgRmlsZVVwbG9hZCB9O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2luZGV4LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2luZGV4LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNjM5X18iLCJfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xODlfXyIsImhhc093biIsImhhc093blByb3BlcnR5IiwiY2xhc3NOYW1lcyIsImNsYXNzZXMiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJnIiwiYXJnVHlwZSIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJpbm5lciIsImFwcGx5IiwidG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJpbmNsdWRlcyIsImtleSIsImNhbGwiLCJqb2luIiwiZGVmYXVsdCIsIl9fX0NTU19MT0FERVJfRVhQT1JUX19fIiwiaWQiLCJjc3NXaXRoTWFwcGluZ1RvU3RyaW5nIiwibGlzdCIsInRoaXMiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsIm5lZWRMYXllciIsImNvbmNhdCIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJ1bmRlZmluZWQiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsImNvbmRpdGlvbiIsImZvcm1hdCIsImEiLCJiIiwiYyIsImQiLCJmIiwiZXJyb3IiLCJFcnJvciIsImFyZ3MiLCJhcmdJbmRleCIsInJlcGxhY2UiLCJuYW1lIiwiZnJhbWVzVG9Qb3AiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiX2xlbiIsInZhbGlkYXRvcnMiLCJfa2V5IiwiYWxsUHJvcFR5cGVzIiwiX2xlbjIiLCJfa2V5MiIsImZvckVhY2giLCJ2YWxpZGF0b3IiLCJyZXN1bHQiLCJfY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIyIiwib2JqIiwiX19lc01vZHVsZSIsInZhbGlkYXRlIiwiY2hlY2tUeXBlIiwiaXNSZXF1aXJlZCIsInByb3BzIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJjb21wb25lbnROYW1lU2FmZSIsInByb3BGdWxsTmFtZVNhZmUiLCJjaGFpbmVkQ2hlY2tUeXBlIiwiYmluZCIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJzZWNyZXQiLCJlcnIiLCJnZXRTaGltIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIlByb3BUeXBlcyIsImFhIiwiY2EiLCJwIiwiZGEiLCJTZXQiLCJlYSIsImZhIiwiaGEiLCJhZGQiLCJpYSIsIndpbmRvdyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImphIiwia2EiLCJsYSIsIm1hIiwidiIsImciLCJhY2NlcHRzQm9vbGVhbnMiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlTmFtZXNwYWNlIiwibXVzdFVzZVByb3BlcnR5IiwicHJvcGVydHlOYW1lIiwidHlwZSIsInNhbml0aXplVVJMIiwicmVtb3ZlRW1wdHlTdHJpbmciLCJ6Iiwic3BsaXQiLCJ0b0xvd2VyQ2FzZSIsInJhIiwic2EiLCJ0b1VwcGVyQ2FzZSIsInRhIiwic2xpY2UiLCJwYSIsImlzTmFOIiwicWEiLCJ0ZXN0Iiwib2EiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGVOUyIsInhsaW5rSHJlZiIsInVhIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJ2YSIsIlN5bWJvbCIsImZvciIsIndhIiwieWEiLCJ6YSIsIkFhIiwiQmEiLCJDYSIsIkRhIiwiRWEiLCJGYSIsIkdhIiwiSGEiLCJJYSIsIkphIiwiaXRlcmF0b3IiLCJLYSIsIkxhIiwiQSIsImFzc2lnbiIsIk1hIiwic3RhY2siLCJ0cmltIiwibWF0Y2giLCJOYSIsIk9hIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJzZXQiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwibCIsImgiLCJkaXNwbGF5TmFtZSIsIlBhIiwidGFnIiwicmVuZGVyIiwiUWEiLCIkJHR5cGVvZiIsIl9jb250ZXh0IiwiX3BheWxvYWQiLCJfaW5pdCIsIlJhIiwiU2EiLCJUYSIsIm5vZGVOYW1lIiwiVmEiLCJfdmFsdWVUcmFja2VyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY29uc3RydWN0b3IiLCJnZXQiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0VmFsdWUiLCJzZXRWYWx1ZSIsInN0b3BUcmFja2luZyIsIlVhIiwiV2EiLCJjaGVja2VkIiwiWGEiLCJhY3RpdmVFbGVtZW50IiwiYm9keSIsIllhIiwiZGVmYXVsdENoZWNrZWQiLCJkZWZhdWx0VmFsdWUiLCJfd3JhcHBlclN0YXRlIiwiaW5pdGlhbENoZWNrZWQiLCJaYSIsImluaXRpYWxWYWx1ZSIsImNvbnRyb2xsZWQiLCJhYiIsImJiIiwiY2IiLCJkYiIsIm93bmVyRG9jdW1lbnQiLCJlYiIsImZiIiwib3B0aW9ucyIsInNlbGVjdGVkIiwiZGVmYXVsdFNlbGVjdGVkIiwiZGlzYWJsZWQiLCJnYiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJoYiIsImliIiwiamIiLCJ0ZXh0Q29udGVudCIsImtiIiwibGIiLCJtYiIsIm5iIiwibmFtZXNwYWNlVVJJIiwiaW5uZXJIVE1MIiwidmFsdWVPZiIsImZpcnN0Q2hpbGQiLCJyZW1vdmVDaGlsZCIsImFwcGVuZENoaWxkIiwiTVNBcHAiLCJleGVjVW5zYWZlTG9jYWxGdW5jdGlvbiIsIm9iIiwibGFzdENoaWxkIiwibm9kZVR5cGUiLCJub2RlVmFsdWUiLCJwYiIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiYXNwZWN0UmF0aW8iLCJib3JkZXJJbWFnZU91dHNldCIsImJvcmRlckltYWdlU2xpY2UiLCJib3JkZXJJbWFnZVdpZHRoIiwiYm94RmxleCIsImJveEZsZXhHcm91cCIsImJveE9yZGluYWxHcm91cCIsImNvbHVtbkNvdW50IiwiY29sdW1ucyIsImZsZXgiLCJmbGV4R3JvdyIsImZsZXhQb3NpdGl2ZSIsImZsZXhTaHJpbmsiLCJmbGV4TmVnYXRpdmUiLCJmbGV4T3JkZXIiLCJncmlkQXJlYSIsImdyaWRSb3ciLCJncmlkUm93RW5kIiwiZ3JpZFJvd1NwYW4iLCJncmlkUm93U3RhcnQiLCJncmlkQ29sdW1uIiwiZ3JpZENvbHVtbkVuZCIsImdyaWRDb2x1bW5TcGFuIiwiZ3JpZENvbHVtblN0YXJ0IiwiZm9udFdlaWdodCIsImxpbmVDbGFtcCIsImxpbmVIZWlnaHQiLCJvcGFjaXR5Iiwib3JkZXIiLCJvcnBoYW5zIiwidGFiU2l6ZSIsIndpZG93cyIsInpJbmRleCIsInpvb20iLCJmaWxsT3BhY2l0eSIsImZsb29kT3BhY2l0eSIsInN0b3BPcGFjaXR5Iiwic3Ryb2tlRGFzaGFycmF5Iiwic3Ryb2tlRGFzaG9mZnNldCIsInN0cm9rZU1pdGVybGltaXQiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lkdGgiLCJxYiIsInJiIiwic2IiLCJzdHlsZSIsImluZGV4T2YiLCJzZXRQcm9wZXJ0eSIsImtleXMiLCJjaGFyQXQiLCJzdWJzdHJpbmciLCJ0YiIsIm1lbnVpdGVtIiwiYXJlYSIsImJhc2UiLCJiciIsImNvbCIsImVtYmVkIiwiaHIiLCJpbWciLCJpbnB1dCIsImtleWdlbiIsImxpbmsiLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciIsInViIiwidmIiLCJpcyIsIndiIiwieGIiLCJ0YXJnZXQiLCJzcmNFbGVtZW50IiwiY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQiLCJwYXJlbnROb2RlIiwieWIiLCJ6YiIsIkFiIiwiQmIiLCJDYiIsInN0YXRlTm9kZSIsIkRiIiwiRWIiLCJGYiIsIkdiIiwiSGIiLCJJYiIsIkpiIiwiS2IiLCJMYiIsIk1iIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJOYiIsIm0iLCJvbkVycm9yIiwiT2IiLCJQYiIsIlFiIiwiUmIiLCJTYiIsIlRiIiwiVmIiLCJhbHRlcm5hdGUiLCJyZXR1cm4iLCJmbGFncyIsIldiIiwibWVtb2l6ZWRTdGF0ZSIsImRlaHlkcmF0ZWQiLCJYYiIsIlpiIiwiY2hpbGQiLCJzaWJsaW5nIiwiY3VycmVudCIsIlliIiwiJGIiLCJhYyIsInVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2siLCJiYyIsInVuc3RhYmxlX2NhbmNlbENhbGxiYWNrIiwiY2MiLCJ1bnN0YWJsZV9zaG91bGRZaWVsZCIsImRjIiwidW5zdGFibGVfcmVxdWVzdFBhaW50IiwiQiIsInVuc3RhYmxlX25vdyIsImVjIiwidW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwiLCJmYyIsInVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5IiwiZ2MiLCJ1bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSIsImhjIiwidW5zdGFibGVfTm9ybWFsUHJpb3JpdHkiLCJpYyIsInVuc3RhYmxlX0xvd1ByaW9yaXR5IiwiamMiLCJ1bnN0YWJsZV9JZGxlUHJpb3JpdHkiLCJrYyIsImxjIiwib2MiLCJNYXRoIiwiY2x6MzIiLCJwYyIsInFjIiwibG9nIiwiTE4yIiwicmMiLCJzYyIsInRjIiwidWMiLCJwZW5kaW5nTGFuZXMiLCJzdXNwZW5kZWRMYW5lcyIsInBpbmdlZExhbmVzIiwiZW50YW5nbGVkTGFuZXMiLCJlbnRhbmdsZW1lbnRzIiwidmMiLCJ4YyIsInljIiwiemMiLCJBYyIsImV2ZW50VGltZXMiLCJDYyIsIkMiLCJEYyIsIkVjIiwiRmMiLCJHYyIsIkhjIiwiSWMiLCJKYyIsIktjIiwiTGMiLCJNYyIsIk5jIiwiT2MiLCJNYXAiLCJQYyIsIlFjIiwiUmMiLCJTYyIsImRlbGV0ZSIsInBvaW50ZXJJZCIsIlRjIiwibmF0aXZlRXZlbnQiLCJibG9ja2VkT24iLCJkb21FdmVudE5hbWUiLCJldmVudFN5c3RlbUZsYWdzIiwidGFyZ2V0Q29udGFpbmVycyIsIlZjIiwiV2MiLCJwcmlvcml0eSIsImlzRGVoeWRyYXRlZCIsImNvbnRhaW5lckluZm8iLCJYYyIsIlljIiwiZGlzcGF0Y2hFdmVudCIsInNoaWZ0IiwiWmMiLCIkYyIsImFkIiwiYmQiLCJjZCIsIlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnIiwiZGQiLCJlZCIsInRyYW5zaXRpb24iLCJmZCIsImdkIiwiaGQiLCJVYyIsInN0b3BQcm9wYWdhdGlvbiIsImpkIiwia2QiLCJsZCIsIm1kIiwibmQiLCJvZCIsImtleUNvZGUiLCJjaGFyQ29kZSIsInBkIiwicWQiLCJyZCIsIl9yZWFjdE5hbWUiLCJfdGFyZ2V0SW5zdCIsImN1cnJlbnRUYXJnZXQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwicmV0dXJuVmFsdWUiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsInByZXZlbnREZWZhdWx0IiwiY2FuY2VsQnViYmxlIiwicGVyc2lzdCIsImlzUGVyc2lzdGVudCIsIndkIiwieGQiLCJ5ZCIsInNkIiwiZXZlbnRQaGFzZSIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwidGltZVN0YW1wIiwiRGF0ZSIsIm5vdyIsImlzVHJ1c3RlZCIsInRkIiwidWQiLCJ2aWV3IiwiZGV0YWlsIiwidmQiLCJBZCIsInNjcmVlblgiLCJzY3JlZW5ZIiwiY2xpZW50WCIsImNsaWVudFkiLCJwYWdlWCIsInBhZ2VZIiwiY3RybEtleSIsInNoaWZ0S2V5IiwiYWx0S2V5IiwibWV0YUtleSIsImdldE1vZGlmaWVyU3RhdGUiLCJ6ZCIsImJ1dHRvbiIsImJ1dHRvbnMiLCJyZWxhdGVkVGFyZ2V0IiwiZnJvbUVsZW1lbnQiLCJ0b0VsZW1lbnQiLCJtb3ZlbWVudFgiLCJtb3ZlbWVudFkiLCJCZCIsIkRkIiwiZGF0YVRyYW5zZmVyIiwiRmQiLCJIZCIsImFuaW1hdGlvbk5hbWUiLCJlbGFwc2VkVGltZSIsInBzZXVkb0VsZW1lbnQiLCJJZCIsImNsaXBib2FyZERhdGEiLCJKZCIsIkxkIiwiTWQiLCJFc2MiLCJTcGFjZWJhciIsIkxlZnQiLCJVcCIsIlJpZ2h0IiwiRG93biIsIkRlbCIsIldpbiIsIk1lbnUiLCJBcHBzIiwiU2Nyb2xsIiwiTW96UHJpbnRhYmxlS2V5IiwiTmQiLCJPZCIsIkFsdCIsIkNvbnRyb2wiLCJNZXRhIiwiU2hpZnQiLCJQZCIsIlFkIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiY29kZSIsInJlcGVhdCIsImxvY2FsZSIsIndoaWNoIiwiUmQiLCJUZCIsIndpZHRoIiwiaGVpZ2h0IiwicHJlc3N1cmUiLCJ0YW5nZW50aWFsUHJlc3N1cmUiLCJ0aWx0WCIsInRpbHRZIiwidHdpc3QiLCJwb2ludGVyVHlwZSIsImlzUHJpbWFyeSIsIlZkIiwidG91Y2hlcyIsInRhcmdldFRvdWNoZXMiLCJjaGFuZ2VkVG91Y2hlcyIsIlhkIiwiWWQiLCJkZWx0YVgiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0YSIsImRlbHRhWiIsImRlbHRhTW9kZSIsIlpkIiwiJGQiLCJhZSIsImJlIiwiZG9jdW1lbnRNb2RlIiwiY2UiLCJkZSIsImVlIiwiZmUiLCJnZSIsImhlIiwiaWUiLCJsZSIsImNvbG9yIiwiZGF0ZSIsImRhdGV0aW1lIiwiZW1haWwiLCJtb250aCIsInBhc3N3b3JkIiwicmFuZ2UiLCJzZWFyY2giLCJ0ZWwiLCJ0ZXh0IiwidGltZSIsInVybCIsIndlZWsiLCJtZSIsIm5lIiwib2UiLCJldmVudCIsImxpc3RlbmVycyIsInBlIiwicWUiLCJyZSIsInNlIiwidGUiLCJ1ZSIsInZlIiwid2UiLCJ4ZSIsInllIiwiemUiLCJvbmlucHV0IiwiQWUiLCJkZXRhY2hFdmVudCIsIkJlIiwiQ2UiLCJhdHRhY2hFdmVudCIsIkRlIiwiRWUiLCJGZSIsIkhlIiwiSWUiLCJKZSIsIktlIiwib2Zmc2V0IiwibmV4dFNpYmxpbmciLCJMZSIsImNvbnRhaW5zIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJNZSIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsImhyZWYiLCJOZSIsImNvbnRlbnRFZGl0YWJsZSIsIk9lIiwiZm9jdXNlZEVsZW0iLCJzZWxlY3Rpb25SYW5nZSIsImRvY3VtZW50RWxlbWVudCIsInN0YXJ0IiwiZW5kIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJtaW4iLCJkZWZhdWx0VmlldyIsImdldFNlbGVjdGlvbiIsImV4dGVuZCIsInJhbmdlQ291bnQiLCJhbmNob3JOb2RlIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNOb2RlIiwiZm9jdXNPZmZzZXQiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0IiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJzZXRFbmQiLCJsZWZ0Iiwic2Nyb2xsTGVmdCIsInRvcCIsInNjcm9sbFRvcCIsImZvY3VzIiwiUGUiLCJRZSIsIlJlIiwiU2UiLCJUZSIsIlVlIiwiVmUiLCJXZSIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbnN0YXJ0IiwidHJhbnNpdGlvbmVuZCIsIlhlIiwiWWUiLCJaZSIsImFuaW1hdGlvbiIsIiRlIiwiYWYiLCJiZiIsImNmIiwiZGYiLCJlZiIsImZmIiwiZ2YiLCJoZiIsImxmIiwibWYiLCJuZiIsIlViIiwiaW5zdGFuY2UiLCJsaXN0ZW5lciIsIkQiLCJvZiIsImhhcyIsInBmIiwicWYiLCJyZiIsInJhbmRvbSIsInNmIiwiY2FwdHVyZSIsInBhc3NpdmUiLCJuIiwidCIsIkoiLCJ4IiwidSIsInciLCJGIiwidGYiLCJ1ZiIsInBhcmVudFdpbmRvdyIsInZmIiwid2YiLCJuYSIsInhhIiwiJGEiLCJiYSIsImplIiwiY2hhciIsImtlIiwidW5zaGlmdCIsInhmIiwieWYiLCJ6ZiIsIkFmIiwiQmYiLCJDZiIsIkRmIiwiRWYiLCJfX2h0bWwiLCJGZiIsInNldFRpbWVvdXQiLCJHZiIsImNsZWFyVGltZW91dCIsIkhmIiwiUHJvbWlzZSIsIkpmIiwicXVldWVNaWNyb3Rhc2siLCJyZXNvbHZlIiwidGhlbiIsImNhdGNoIiwiSWYiLCJLZiIsIkxmIiwiTWYiLCJwcmV2aW91c1NpYmxpbmciLCJOZiIsIk9mIiwiUGYiLCJRZiIsIlJmIiwiU2YiLCJUZiIsIlVmIiwiRSIsIkciLCJWZiIsIkgiLCJXZiIsIlhmIiwiWWYiLCJjb250ZXh0VHlwZXMiLCJfX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0IiwiX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQiLCJaZiIsImNoaWxkQ29udGV4dFR5cGVzIiwiJGYiLCJhZyIsImJnIiwiZ2V0Q2hpbGRDb250ZXh0IiwiY2ciLCJfX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dCIsImRnIiwiZWciLCJmZyIsImdnIiwiaGciLCJqZyIsImtnIiwibGciLCJtZyIsIm5nIiwib2ciLCJwZyIsInFnIiwicmciLCJzZyIsInRnIiwidWciLCJ2ZyIsIndnIiwieGciLCJ5ZyIsIkkiLCJ6ZyIsIkFnIiwiQmciLCJkZWxldGlvbnMiLCJDZyIsInBlbmRpbmdQcm9wcyIsIm92ZXJmbG93IiwidHJlZUNvbnRleHQiLCJyZXRyeUxhbmUiLCJEZyIsIm1vZGUiLCJFZyIsIkZnIiwiR2ciLCJtZW1vaXplZFByb3BzIiwiSGciLCJJZyIsIkpnIiwiS2ciLCJMZyIsImRlZmF1bHRQcm9wcyIsIk1nIiwiTmciLCJPZyIsIlBnIiwiUWciLCJSZyIsIl9jdXJyZW50VmFsdWUiLCJTZyIsImNoaWxkTGFuZXMiLCJUZyIsImRlcGVuZGVuY2llcyIsImZpcnN0Q29udGV4dCIsImxhbmVzIiwiVWciLCJWZyIsImNvbnRleHQiLCJtZW1vaXplZFZhbHVlIiwibmV4dCIsIldnIiwiWGciLCJZZyIsImludGVybGVhdmVkIiwiWmciLCIkZyIsImFoIiwidXBkYXRlUXVldWUiLCJiYXNlU3RhdGUiLCJmaXJzdEJhc2VVcGRhdGUiLCJsYXN0QmFzZVVwZGF0ZSIsInNoYXJlZCIsInBlbmRpbmciLCJlZmZlY3RzIiwiYmgiLCJjaCIsImV2ZW50VGltZSIsImxhbmUiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJkaCIsIksiLCJlaCIsImZoIiwiZ2giLCJxIiwiciIsInkiLCJoaCIsImloIiwiamgiLCJDb21wb25lbnQiLCJyZWZzIiwia2giLCJuaCIsImlzTW91bnRlZCIsIl9yZWFjdEludGVybmFscyIsImVucXVldWVTZXRTdGF0ZSIsIkwiLCJsaCIsIm1oIiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImVucXVldWVGb3JjZVVwZGF0ZSIsIm9oIiwic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwiaXNQdXJlUmVhY3RDb21wb25lbnQiLCJwaCIsImNvbnRleHRUeXBlIiwic3RhdGUiLCJ1cGRhdGVyIiwicWgiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJyaCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudERpZE1vdW50Iiwic2giLCJyZWYiLCJfb3duZXIiLCJfc3RyaW5nUmVmIiwidGgiLCJ1aCIsInZoIiwiaW5kZXgiLCJ3aCIsInhoIiwieWgiLCJpbXBsZW1lbnRhdGlvbiIsInpoIiwiQWgiLCJkb25lIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJGaCIsIkdoIiwiSGgiLCJJaCIsInRhZ05hbWUiLCJKaCIsIktoIiwiTGgiLCJNIiwiTWgiLCJyZXZlYWxPcmRlciIsIk5oIiwiT2giLCJfd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeSIsIlBoIiwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIsIlFoIiwiUmgiLCJOIiwiTyIsIlAiLCJTaCIsIlRoIiwiVWgiLCJWaCIsIlEiLCJXaCIsIlhoIiwiWWgiLCJaaCIsIiRoIiwiYWkiLCJiaSIsImNpIiwiYmFzZVF1ZXVlIiwicXVldWUiLCJkaSIsImVpIiwiZmkiLCJsYXN0UmVuZGVyZWRSZWR1Y2VyIiwiYWN0aW9uIiwiaGFzRWFnZXJTdGF0ZSIsImVhZ2VyU3RhdGUiLCJsYXN0UmVuZGVyZWRTdGF0ZSIsImRpc3BhdGNoIiwiZ2kiLCJoaSIsImlpIiwiamkiLCJraSIsImdldFNuYXBzaG90IiwibGkiLCJtaSIsIlIiLCJuaSIsImxhc3RFZmZlY3QiLCJzdG9yZXMiLCJvaSIsInBpIiwicWkiLCJyaSIsImNyZWF0ZSIsImRlc3Ryb3kiLCJkZXBzIiwic2kiLCJ0aSIsInVpIiwidmkiLCJ3aSIsInhpIiwieWkiLCJ6aSIsIkFpIiwiQmkiLCJDaSIsIkRpIiwiRWkiLCJGaSIsIkdpIiwiSGkiLCJJaSIsIkppIiwicmVhZENvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlSW5zZXJ0aW9uRWZmZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZHVjZXIiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZURlYnVnVmFsdWUiLCJ1c2VEZWZlcnJlZFZhbHVlIiwidXNlVHJhbnNpdGlvbiIsInVzZU11dGFibGVTb3VyY2UiLCJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsInVzZUlkIiwidW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyIiwiaWRlbnRpZmllclByZWZpeCIsIktpIiwibWVzc2FnZSIsImRpZ2VzdCIsIkxpIiwiTWkiLCJjb25zb2xlIiwiTmkiLCJXZWFrTWFwIiwiT2kiLCJQaSIsIlFpIiwiUmkiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJjb21wb25lbnREaWRDYXRjaCIsIlNpIiwiY29tcG9uZW50U3RhY2siLCJUaSIsInBpbmdDYWNoZSIsIlVpIiwiVmkiLCJXaSIsIlhpIiwiUmVhY3RDdXJyZW50T3duZXIiLCJZaSIsIlppIiwiJGkiLCJhaiIsImJqIiwiY29tcGFyZSIsImNqIiwiZGoiLCJlaiIsImJhc2VMYW5lcyIsImNhY2hlUG9vbCIsInRyYW5zaXRpb25zIiwiZmoiLCJnaiIsImhqIiwiaWoiLCJqaiIsIlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIiwiY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImtqIiwibGoiLCJwZW5kaW5nQ29udGV4dCIsIm1qIiwiQWoiLCJDaiIsIkRqIiwibmoiLCJvaiIsInBqIiwiZmFsbGJhY2siLCJxaiIsInJqIiwidGoiLCJkYXRhc2V0IiwiZGdzdCIsInVqIiwidmoiLCJfcmVhY3RSZXRyeSIsInNqIiwic3VidHJlZUZsYWdzIiwid2oiLCJ4aiIsImlzQmFja3dhcmRzIiwicmVuZGVyaW5nIiwicmVuZGVyaW5nU3RhcnRUaW1lIiwibGFzdCIsInRhaWwiLCJ0YWlsTW9kZSIsInlqIiwiRWoiLCJTIiwiRmoiLCJHaiIsIndhc011bHRpcGxlIiwibXVsdGlwbGUiLCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCJvbkNsaWNrIiwib25jbGljayIsInNpemUiLCJjcmVhdGVFbGVtZW50TlMiLCJhdXRvRm9jdXMiLCJjcmVhdGVUZXh0Tm9kZSIsIlQiLCJIaiIsIklqIiwiSmoiLCJLaiIsIlUiLCJMaiIsIldlYWtTZXQiLCJWIiwiTWoiLCJXIiwiTmoiLCJPaiIsIlFqIiwiUmoiLCJTaiIsIlRqIiwiVWoiLCJWaiIsIldqIiwiaW5zZXJ0QmVmb3JlIiwiX3JlYWN0Um9vdENvbnRhaW5lciIsIlhqIiwiWCIsIllqIiwiWmoiLCJhayIsIm9uQ29tbWl0RmliZXJVbm1vdW50IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJiayIsImNrIiwiZGsiLCJlayIsImZrIiwiaXNIaWRkZW4iLCJnayIsImhrIiwiZGlzcGxheSIsImlrIiwiamsiLCJrayIsImxrIiwiX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUiLCJzcmMiLCJXayIsIm1rIiwiY2VpbCIsIm5rIiwib2siLCJwayIsIlkiLCJaIiwicWsiLCJyayIsInNrIiwidGsiLCJ1ayIsIkluZmluaXR5IiwidmsiLCJ3ayIsInhrIiwieWsiLCJ6ayIsIkFrIiwiQmsiLCJDayIsIkRrIiwiRWsiLCJjYWxsYmFja05vZGUiLCJleHBpcmF0aW9uVGltZXMiLCJleHBpcmVkTGFuZXMiLCJ3YyIsImNhbGxiYWNrUHJpb3JpdHkiLCJpZyIsIkZrIiwiR2siLCJIayIsIklrIiwiSmsiLCJLayIsIkxrIiwiTWsiLCJOayIsIk9rIiwiUGsiLCJmaW5pc2hlZFdvcmsiLCJmaW5pc2hlZExhbmVzIiwiUWsiLCJ0aW1lb3V0SGFuZGxlIiwiUmsiLCJTayIsIlRrIiwiVWsiLCJWayIsIm11dGFibGVSZWFkTGFuZXMiLCJCYyIsIlBqIiwib25Db21taXRGaWJlclJvb3QiLCJtYyIsIm9uUmVjb3ZlcmFibGVFcnJvciIsIlhrIiwib25Qb3N0Q29tbWl0RmliZXJSb290IiwiWWsiLCJaayIsImFsIiwiaXNSZWFjdENvbXBvbmVudCIsInBlbmRpbmdDaGlsZHJlbiIsImJsIiwibXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YSIsImNsIiwiY2FjaGUiLCJwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzIiwiZGwiLCJlbCIsImZsIiwiZ2wiLCJobCIsImlsIiwiamwiLCJ6aiIsIiRrIiwibGwiLCJyZXBvcnRFcnJvciIsIm1sIiwiX2ludGVybmFsUm9vdCIsIm5sIiwib2wiLCJwbCIsInFsIiwic2wiLCJybCIsInVubW91bnQiLCJ1bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbiIsInNwbGljZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JtIiwidGwiLCJ1c2luZ0NsaWVudEVudHJ5UG9pbnQiLCJFdmVudHMiLCJ1bCIsImZpbmRGaWJlckJ5SG9zdEluc3RhbmNlIiwiYnVuZGxlVHlwZSIsInZlcnNpb24iLCJyZW5kZXJlclBhY2thZ2VOYW1lIiwidmwiLCJyZW5kZXJlckNvbmZpZyIsIm92ZXJyaWRlSG9va1N0YXRlIiwib3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoIiwib3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoIiwib3ZlcnJpZGVQcm9wcyIsIm92ZXJyaWRlUHJvcHNEZWxldGVQYXRoIiwib3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGgiLCJzZXRFcnJvckhhbmRsZXIiLCJzZXRTdXNwZW5zZUhhbmRsZXIiLCJzY2hlZHVsZVVwZGF0ZSIsImN1cnJlbnREaXNwYXRjaGVyUmVmIiwiZmluZEhvc3RJbnN0YW5jZUJ5RmliZXIiLCJmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2giLCJzY2hlZHVsZVJlZnJlc2giLCJzY2hlZHVsZVJvb3QiLCJzZXRSZWZyZXNoSGFuZGxlciIsImdldEN1cnJlbnRGaWJlciIsInJlY29uY2lsZXJWZXJzaW9uIiwiX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwid2wiLCJpc0Rpc2FibGVkIiwic3VwcG9ydHNGaWJlciIsImluamVjdCIsImNyZWF0ZVBvcnRhbCIsImNyZWF0ZVJvb3QiLCJ1bnN0YWJsZV9zdHJpY3RNb2RlIiwiZmluZERPTU5vZGUiLCJmbHVzaFN5bmMiLCJoeWRyYXRlIiwiaHlkcmF0ZVJvb3QiLCJoeWRyYXRlZFNvdXJjZXMiLCJfZ2V0VmVyc2lvbiIsIl9zb3VyY2UiLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwidW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMiLCJ1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsImNoZWNrRENFIiwicG9wIiwic29ydEluZGV4IiwicGVyZm9ybWFuY2UiLCJzZXRJbW1lZGlhdGUiLCJzdGFydFRpbWUiLCJleHBpcmF0aW9uVGltZSIsInByaW9yaXR5TGV2ZWwiLCJuYXZpZ2F0b3IiLCJzY2hlZHVsaW5nIiwiaXNJbnB1dFBlbmRpbmciLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQyIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJwb3N0TWVzc2FnZSIsInVuc3RhYmxlX1Byb2ZpbGluZyIsInVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uIiwidW5zdGFibGVfZm9yY2VGcmFtZVJhdGUiLCJmbG9vciIsInVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlIiwidW5zdGFibGVfbmV4dCIsInVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uIiwidW5zdGFibGVfcnVuV2l0aFByaW9yaXR5IiwiZGVsYXkiLCJ1bnN0YWJsZV93cmFwQ2FsbGJhY2siLCJfX3NlbGYiLCJfX3NvdXJjZSIsIkZyYWdtZW50IiwianN4IiwianN4cyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwibW9kdWxlc1RvRG9tIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwiY291bnQiLCJpbmRleEJ5SWRlbnRpZmllciIsImNzcyIsInNvdXJjZU1hcCIsInJlZmVyZW5jZXMiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4IiwiYXBpIiwiZG9tQVBJIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsIm5ld0xhc3RJZGVudGlmaWVycyIsIl9pIiwiX2luZGV4IiwibWVtbyIsImluc2VydCIsInN0eWxlVGFyZ2V0IiwicXVlcnlTZWxlY3RvciIsImNvbnRlbnREb2N1bWVudCIsImhlYWQiLCJnZXRUYXJnZXQiLCJzZXRBdHRyaWJ1dGVzIiwiYXR0cmlidXRlcyIsInN0eWxlRWxlbWVudCIsIm5vbmNlIiwiaW5zZXJ0U3R5bGVFbGVtZW50Iiwic3R5bGVUYWdUcmFuc2Zvcm0iLCJyZW1vdmVTdHlsZUVsZW1lbnQiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsInByb3BlcnRpZXMiLCJpc0Jyb3dzZXIiLCJpc0ZpcmVmb3giLCJtb3pJbm5lclNjcmVlblgiLCJnZXRDYXJldENvb3JkaW5hdGVzIiwicG9zaXRpb24iLCJkZWJ1ZyIsImRpdiIsImNvbXB1dGVkIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImN1cnJlbnRTdHlsZSIsImlzSW5wdXQiLCJ3aGl0ZVNwYWNlIiwid29yZFdyYXAiLCJ2aXNpYmlsaXR5IiwicHJvcCIsInNjcm9sbEhlaWdodCIsInBhcnNlSW50Iiwib3ZlcmZsb3dZIiwic3BhbiIsImNvb3JkaW5hdGVzIiwib2Zmc2V0VG9wIiwib2Zmc2V0TGVmdCIsImJhY2tncm91bmRDb2xvciIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJnZXR0ZXIiLCJkZWZpbml0aW9uIiwibyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsInRvU3RyaW5nVGFnIiwibmMiLCJJbmZvU2VydmljZSIsIk1vY2t1cEluZm9TZXJ2aWNlSW1wbCIsInNsZWVwIiwibXMiLCJ1c2VybmFtZSIsInJlYWxtIiwicm9sZXMiLCJleHBpcmVzIiwiaGFuZGxlRXJyb3IiLCJTZXJ2ZXJWZXJzaW9uSW5mbyIsInNldFZlcnNpb24iLCJnZXRWZXJzaW9uSW5mbyIsInNlcnZlclZlcnNpb24iLCJub0J1aWxkIiwiZ2V0U2VydmVyVmVyc2lvbkluZm8iLCJjbGFzc05hbWUiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJkZWZhdWx0S2V5Iiwic3Vic3RyIiwiaGludCIsInByaW0iLCJ0b1ByaW1pdGl2ZSIsInJlcyIsIlR5cGVFcnJvciIsInVzZVVuY29udHJvbGxlZCIsImNvbmZpZyIsInJlZHVjZSIsImZpZWxkTmFtZSIsIl9leHRlbmRzMiIsIl9yZWYiLCJwcm9wc1ZhbHVlIiwicmVzdCIsImhhbmRsZXJOYW1lIiwiX3VzZVVuY29udHJvbGxlZFByb3AiLCJwcm9wVmFsdWUiLCJoYW5kbGVyIiwid2FzUHJvcFJlZiIsIl91c2VTdGF0ZSIsInN0YXRlVmFsdWUiLCJzZXRTdGF0ZSIsImlzUHJvcCIsIndhc1Byb3AiLCJ1c2VVbmNvbnRyb2xsZWRQcm9wIiwidXNlRXZlbnRDYWxsYmFjayIsImZuIiwidXNlTW91bnRlZCIsIm1vdW50ZWQiLCJ1c2VQcmV2aW91cyIsImlzUmVhY3ROYXRpdmUiLCJwcm9kdWN0IiwiX2V4Y2x1ZGVkIiwidXNlQnV0dG9uUHJvcHMiLCJyZWwiLCJyb2xlIiwidGFiSW5kZXgiLCJoYW5kbGVDbGljayIsImlzVHJpdmlhbEhyZWYiLCJvbktleURvd24iLCJCdXR0b24iLCJhcyIsImFzUHJvcCIsImJ1dHRvblByb3BzIiwiQW5jaG9yIiwiaGFuZGxlS2V5RG93biIsIlRoZW1lQ29udGV4dCIsInByZWZpeGVzIiwiYnJlYWtwb2ludHMiLCJtaW5CcmVha3BvaW50IiwiQ29uc3VtZXIiLCJQcm92aWRlciIsInVzZUJvb3RzdHJhcFByZWZpeCIsInByZWZpeCIsImRlZmF1bHRQcmVmaXgiLCJfc2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIlVOTU9VTlRFRCIsIkVYSVRFRCIsIkVOVEVSSU5HIiwiRU5URVJFRCIsIkVYSVRJTkciLCJUcmFuc2l0aW9uIiwiX1JlYWN0JENvbXBvbmVudCIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIl90aGlzIiwiaW5pdGlhbFN0YXR1cyIsImFwcGVhciIsImlzTW91bnRpbmciLCJlbnRlciIsImFwcGVhclN0YXR1cyIsImluIiwidW5tb3VudE9uRXhpdCIsIm1vdW50T25FbnRlciIsInN0YXR1cyIsIm5leHRDYWxsYmFjayIsInByZXZTdGF0ZSIsIl9wcm90byIsInVwZGF0ZVN0YXR1cyIsInByZXZQcm9wcyIsIm5leHRTdGF0dXMiLCJjYW5jZWxOZXh0Q2FsbGJhY2siLCJnZXRUaW1lb3V0cyIsImV4aXQiLCJ0aW1lb3V0IiwibW91bnRpbmciLCJub2RlUmVmIiwiZm9yY2VSZWZsb3ciLCJwZXJmb3JtRW50ZXIiLCJwZXJmb3JtRXhpdCIsIl90aGlzMiIsImFwcGVhcmluZyIsIl9yZWYyIiwibWF5YmVOb2RlIiwibWF5YmVBcHBlYXJpbmciLCJ0aW1lb3V0cyIsImVudGVyVGltZW91dCIsIm9uRW50ZXIiLCJzYWZlU2V0U3RhdGUiLCJvbkVudGVyaW5nIiwib25UcmFuc2l0aW9uRW5kIiwib25FbnRlcmVkIiwiX3RoaXMzIiwib25FeGl0Iiwib25FeGl0aW5nIiwib25FeGl0ZWQiLCJjYW5jZWwiLCJuZXh0U3RhdGUiLCJzZXROZXh0Q2FsbGJhY2siLCJfdGhpczQiLCJhY3RpdmUiLCJkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyIiwiYWRkRW5kTGlzdGVuZXIiLCJfcmVmMyIsIm1heWJlTmV4dENhbGxiYWNrIiwiX3RoaXMkcHJvcHMiLCJjaGlsZFByb3BzIiwiVHJhbnNpdGlvbkdyb3VwQ29udGV4dCIsInByb3BUeXBlcyIsInJVcHBlciIsIm1zUGF0dGVybiIsImh5cGhlbmF0ZVN0eWxlTmFtZSIsImh5cGhlbmF0ZSIsInN1cHBvcnRlZFRyYW5zZm9ybXMiLCJwcm9wZXJ0eSIsInRyYW5zZm9ybXMiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicHN1ZWRvRWxlbWVudCIsImRvYyIsIm93bmVyV2luZG93IiwiaXNUcmFuc2Zvcm0iLCJyZW1vdmVQcm9wZXJ0eSIsIm9wdGlvbnNTdXBwb3J0ZWQiLCJvbmNlU3VwcG9ydGVkIiwib25jZSIsImNhblVzZURPTSIsImV2ZW50TmFtZSIsIndyYXBwZWRIYW5kbGVyIiwiX19vbmNlIiwib25jZUhhbmRsZXIiLCJ0cmFuc2l0aW9uRW5kIiwiZHVyYXRpb24iLCJwYWRkaW5nIiwic3RyIiwibXVsdCIsInBhcnNlRmxvYXQiLCJyZW1vdmVFbXVsYXRlIiwiY2FsbGVkIiwiaGFuZGxlIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJ0cmlnZ2VyRXZlbnQiLCJlbXVsYXRlVHJhbnNpdGlvbkVuZCIsInRyYW5zaXRpb25FbmRMaXN0ZW5lciIsInRyaWdnZXJCcm93c2VyUmVmbG93Iiwib2Zmc2V0SGVpZ2h0IiwidG9GblJlZiIsInJlZkEiLCJyZWZCIiwibWVyZ2VSZWZzIiwiY2hpbGRSZWYiLCJtZXJnZWRSZWYiLCJhdHRhY2hSZWYiLCJjb21wb25lbnRPckVsZW1lbnQiLCJub3JtYWxpemUiLCJoYW5kbGVFbnRlciIsImhhbmRsZUVudGVyaW5nIiwiaGFuZGxlRW50ZXJlZCIsImhhbmRsZUV4aXQiLCJoYW5kbGVFeGl0aW5nIiwiaGFuZGxlRXhpdGVkIiwiaGFuZGxlQWRkRW5kTGlzdGVuZXIiLCJpbm5lclByb3BzIiwiZmFkZVN0eWxlcyIsIkZhZGUiLCJ0cmFuc2l0aW9uQ2xhc3NlcyIsImlzQXBwZWFyaW5nIiwidmFyaWFudCIsIkNsb3NlQnV0dG9uIiwickh5cGhlbiIsInBhc2NhbENhc2UiLCJfIiwiY2hyIiwiY3JlYXRlV2l0aEJzUHJlZml4IiwiQnNDb21wb25lbnQiLCJic1ByZWZpeCIsIlRhZyIsInJlc29sdmVkUHJlZml4IiwiRGl2U3R5bGVkQXNINCIsImRpdldpdGhDbGFzc05hbWUiLCJBbGVydEhlYWRpbmciLCJBbGVydExpbmsiLCJzaG93IiwiY2xvc2VMYWJlbCIsIkFsZXJ0IiwidW5jb250cm9sbGVkUHJvcHMiLCJjbG9zZVZhcmlhbnQiLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJoYW5kbGVDbG9zZSIsImFsZXJ0IiwiTGluayIsIkhlYWRpbmciLCJNZXNzYWdlIiwiaGVhZGluZyIsImljb24iLCJzaG93SWNvbiIsImljb25DbGFzcyIsInNldFNob3ciLCJFcnJvck1lc3NhZ2UiLCJ3YXJuIiwiTG9hZGluZ0luZm8iLCJ0aXRsZSIsInNlcnZpY2UiLCJsb2dpbiIsImhhbmRsZVN1Ym1pdCIsInNob3dMb2FkaW5nSW5mbyIsInN1Ym1pdCIsImxvZ2luX3Byb21pc2UiLCJfbG9naW4iLCJUaW1lb3V0IiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwicGF1c2UiLCJMb2dpbkZvcm1JbnB1dHMiLCJzaG93TWVzc2FnZXMiLCJvbkNoYW5nZSIsIm9uQmx1ciIsInJlc2V0Iiwid3JhcHBlZE9uRXJyb3IiLCJvblN1Ym1pdCIsInBsYWNlaG9sZGVyIiwic3RvcCIsIkxvZ2luRm9ybU1lc3NhZ2UiLCJtZXNzYWdlVHlwZSIsInNob3dJbnB1dHMiLCJMb2dpbkZvcm0iLCJzZXRTaG93SW5wdXRzIiwidG9BcnJheSIsInFzYSIsInNlbGVjdG9yIiwidXNlRm9yY2VVcGRhdGUiLCJmaW5kIiwiaXRlciIsInRhciIsImRlcXVhbCIsImZvbyIsImJhciIsImN0b3IiLCJsZW4iLCJ0bXAiLCJnZXRUaW1lIiwiUmVnRXhwIiwiQXJyYXlCdWZmZXIiLCJVaW50OEFycmF5IiwiRGF0YVZpZXciLCJieXRlTGVuZ3RoIiwiZ2V0SW50OCIsImlzVmlldyIsImdldEJhc2VQbGFjZW1lbnQiLCJwbGFjZW1lbnQiLCJnZXRXaW5kb3ciLCJpc0VsZW1lbnQiLCJFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiU2hhZG93Um9vdCIsIm1heCIsInJvdW5kIiwiZ2V0VUFTdHJpbmciLCJ1YURhdGEiLCJ1c2VyQWdlbnREYXRhIiwiYnJhbmRzIiwiYnJhbmQiLCJ1c2VyQWdlbnQiLCJpc0xheW91dFZpZXdwb3J0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlWCIsInNjYWxlWSIsIm9mZnNldFdpZHRoIiwidmlzdWFsVmlld3BvcnQiLCJhZGRWaXN1YWxPZmZzZXRzIiwicmlnaHQiLCJib3R0b20iLCJnZXRMYXlvdXRSZWN0IiwiYWJzIiwicGFyZW50Iiwicm9vdE5vZGUiLCJnZXRSb290Tm9kZSIsImlzU2FtZU5vZGUiLCJob3N0IiwiZ2V0Tm9kZU5hbWUiLCJpc1RhYmxlRWxlbWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImdldFBhcmVudE5vZGUiLCJhc3NpZ25lZFNsb3QiLCJnZXRUcnVlT2Zmc2V0UGFyZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50IiwiY3VycmVudE5vZGUiLCJ0cmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZSIsImNvbnRhaW4iLCJ3aWxsQ2hhbmdlIiwiZmlsdGVyIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50Iiwid2l0aGluIiwibWVyZ2VQYWRkaW5nT2JqZWN0IiwicGFkZGluZ09iamVjdCIsImV4cGFuZFRvSGFzaE1hcCIsImhhc2hNYXAiLCJhdXRvIiwiYmFzZVBsYWNlbWVudHMiLCJ2aWV3cG9ydCIsInBvcHBlciIsInZhcmlhdGlvblBsYWNlbWVudHMiLCJhY2MiLCJtb2RpZmllclBoYXNlcyIsImVuYWJsZWQiLCJwaGFzZSIsIl9zdGF0ZSRtb2RpZmllcnNEYXRhJCIsImFycm93RWxlbWVudCIsImVsZW1lbnRzIiwiYXJyb3ciLCJwb3BwZXJPZmZzZXRzIiwibW9kaWZpZXJzRGF0YSIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwicmVjdHMiLCJ0b1BhZGRpbmdPYmplY3QiLCJhcnJvd1JlY3QiLCJtaW5Qcm9wIiwibWF4UHJvcCIsImVuZERpZmYiLCJyZWZlcmVuY2UiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjbGllbnRIZWlnaHQiLCJjbGllbnRXaWR0aCIsImNlbnRlclRvUmVmZXJlbmNlIiwiY2VudGVyIiwiYXhpc1Byb3AiLCJjZW50ZXJPZmZzZXQiLCJlZmZlY3QiLCJfb3B0aW9ucyRlbGVtZW50IiwicmVxdWlyZXMiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsIm9mZnNldHMiLCJncHVBY2NlbGVyYXRpb24iLCJhZGFwdGl2ZSIsInJvdW5kT2Zmc2V0cyIsImlzRml4ZWQiLCJfb2Zmc2V0cyR4IiwiX29mZnNldHMkeSIsImhhc1giLCJoYXNZIiwic2lkZVgiLCJzaWRlWSIsIndpbiIsImhlaWdodFByb3AiLCJ3aWR0aFByb3AiLCJfT2JqZWN0JGFzc2lnbiIsImNvbW1vblN0eWxlcyIsIl9yZWY0IiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiX3JlZjUiLCJfb3B0aW9ucyRncHVBY2NlbGVyYXQiLCJfb3B0aW9ucyRhZGFwdGl2ZSIsIl9vcHRpb25zJHJvdW5kT2Zmc2V0cyIsInN0cmF0ZWd5Iiwic3R5bGVzIiwiX29wdGlvbnMkc2Nyb2xsIiwic2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwic2Nyb2xsUGFyZW50cyIsInNjcm9sbFBhcmVudCIsImhhc2giLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsIm1hdGNoZWQiLCJnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCIsImdldFdpbmRvd1Njcm9sbCIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwiaXNTY3JvbGxQYXJlbnQiLCJfZ2V0Q29tcHV0ZWRTdHlsZSIsIm92ZXJmbG93WCIsImdldFNjcm9sbFBhcmVudCIsImxpc3RTY3JvbGxQYXJlbnRzIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaXNCb2R5IiwidXBkYXRlZExpc3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJodG1sIiwibGF5b3V0Vmlld3BvcnQiLCJnZXRWaWV3cG9ydFJlY3QiLCJjbGllbnRUb3AiLCJjbGllbnRMZWZ0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aW5TY3JvbGwiLCJzY3JvbGxXaWR0aCIsImRpcmVjdGlvbiIsImdldERvY3VtZW50UmVjdCIsImNvbXB1dGVPZmZzZXRzIiwiY29tbW9uWCIsImNvbW1vblkiLCJtYWluQXhpcyIsImRldGVjdE92ZXJmbG93IiwiX29wdGlvbnMiLCJfb3B0aW9ucyRwbGFjZW1lbnQiLCJfb3B0aW9ucyRzdHJhdGVneSIsIl9vcHRpb25zJGJvdW5kYXJ5IiwiYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJlbGVtZW50Q29udGV4dCIsIl9vcHRpb25zJGFsdEJvdW5kYXJ5IiwiYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRwYWRkaW5nIiwiYWx0Q29udGV4dCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm1haW5DbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjbGlwcGVyRWxlbWVudCIsImdldENsaXBwaW5nUGFyZW50cyIsImZpcnN0Q2xpcHBpbmdQYXJlbnQiLCJjbGlwcGluZ1JlY3QiLCJhY2NSZWN0IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiY29udGV4dEVsZW1lbnQiLCJyZWZlcmVuY2VDbGllbnRSZWN0IiwicG9wcGVyQ2xpZW50UmVjdCIsImVsZW1lbnRDbGllbnRSZWN0Iiwib3ZlcmZsb3dPZmZzZXRzIiwib2Zmc2V0RGF0YSIsIm11bHRpcGx5IiwiX3NraXAiLCJfb3B0aW9ucyRtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsIl9vcHRpb25zJGZsaXBWYXJpYXRpbyIsImZsaXBWYXJpYXRpb25zIiwiYWxsb3dlZEF1dG9QbGFjZW1lbnRzIiwicHJlZmVycmVkUGxhY2VtZW50Iiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsInBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJjb21wdXRlQXV0b1BsYWNlbWVudCIsInJlZmVyZW5jZVJlY3QiLCJjaGVja3NNYXAiLCJtYWtlRmFsbGJhY2tDaGVja3MiLCJmaXJzdEZpdHRpbmdQbGFjZW1lbnQiLCJfYmFzZVBsYWNlbWVudCIsImlzU3RhcnRWYXJpYXRpb24iLCJpc1ZlcnRpY2FsIiwibWFpblZhcmlhdGlvblNpZGUiLCJhbHRWYXJpYXRpb25TaWRlIiwiY2hlY2tzIiwiZXZlcnkiLCJjaGVjayIsIl9sb29wIiwiZml0dGluZ1BsYWNlbWVudCIsImdldFNpZGVPZmZzZXRzIiwicHJldmVudGVkT2Zmc2V0cyIsImlzQW55U2lkZUZ1bGx5Q2xpcHBlZCIsInNvbWUiLCJzaWRlIiwiX29wdGlvbnMkb2Zmc2V0IiwiaW52ZXJ0RGlzdGFuY2UiLCJza2lkZGluZyIsImRpc3RhbmNlIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJfb3B0aW9ucyR0ZXRoZXIiLCJ0ZXRoZXIiLCJfb3B0aW9ucyR0ZXRoZXJPZmZzZXQiLCJ0ZXRoZXJPZmZzZXQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJ0ZXRoZXJPZmZzZXRWYWx1ZSIsIm5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSIsIm9mZnNldE1vZGlmaWVyU3RhdGUiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQiLCJtYWluU2lkZSIsImFsdFNpZGUiLCJhZGRpdGl2ZSIsIm1pbkxlbiIsIm1heExlbiIsImFycm93UGFkZGluZ09iamVjdCIsImFycm93UGFkZGluZ01pbiIsImFycm93UGFkZGluZ01heCIsImFycm93TGVuIiwibWluT2Zmc2V0IiwibWF4T2Zmc2V0IiwiY2xpZW50T2Zmc2V0Iiwib2Zmc2V0TW9kaWZpZXJWYWx1ZSIsInRldGhlck1heCIsInByZXZlbnRlZE9mZnNldCIsIl9vZmZzZXRNb2RpZmllclN0YXRlJDIiLCJfbWFpblNpZGUiLCJfYWx0U2lkZSIsIl9vZmZzZXQiLCJfbWluIiwiX21heCIsImlzT3JpZ2luU2lkZSIsIl9vZmZzZXRNb2RpZmllclZhbHVlIiwiX3RldGhlck1pbiIsIl90ZXRoZXJNYXgiLCJfcHJldmVudGVkT2Zmc2V0Iiwid2l0aGluTWF4Q2xhbXAiLCJnZXRDb21wb3NpdGVSZWN0IiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFBhcmVudElzU2NhbGVkIiwiaXNFbGVtZW50U2NhbGVkIiwibW9kaWZpZXJzIiwidmlzaXRlZCIsIm1vZGlmaWVyIiwiZGVwIiwiZGVwTW9kaWZpZXIiLCJERUZBVUxUX09QVElPTlMiLCJhcmVWYWxpZEVsZW1lbnRzIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsIm9yZGVyZWRNb2RpZmllcnMiLCJlZmZlY3RDbGVhbnVwRm5zIiwiaXNEZXN0cm95ZWQiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJtZXJnZWQiLCJvcmRlck1vZGlmaWVycyIsImV4aXN0aW5nIiwiX3JlZjMkb3B0aW9ucyIsImNsZWFudXBGbiIsImZvcmNlVXBkYXRlIiwiX3N0YXRlJGVsZW1lbnRzIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllMiIsIm9uRmlyc3RVcGRhdGUiLCJwb3BwZXJHZW5lcmF0b3IiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsInBvcHBlckFsdE92ZXJmbG93IiwicmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzIiwicG9wcGVyRXNjYXBlT2Zmc2V0cyIsImlzUmVmZXJlbmNlSGlkZGVuIiwiaGFzUG9wcGVyRXNjYXBlZCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzYWJsZWRBcHBseVN0eWxlc01vZGlmaWVyIiwiYXJpYURlc2NyaWJlZEJ5TW9kaWZpZXIiLCJpZHMiLCJnZXRBdHRyaWJ1dGUiLCJfcG9wcGVyJGdldEF0dHJpYnV0ZSIsIkVNUFRZX01PRElGSUVSUyIsInJlZmVyZW5jZUVsZW1lbnQiLCJwb3BwZXJFbGVtZW50IiwicHJldk1vZGlmaWVycyIsInBvcHBlckluc3RhbmNlUmVmIiwiX3BvcHBlckluc3RhbmNlUmVmJGN1IiwiX3BvcHBlckluc3RhbmNlUmVmJGN1MiIsInBvcHBlclN0YXRlIiwidXBkYXRlTW9kaWZpZXIiLCJuZXh0TW9kaWZpZXJzIiwicyIsImdldFJlZlRhcmdldCIsIkluaXRpYWxUcmlnZ2VyRXZlbnRzIiwiY2xpY2siLCJtb3VzZXVwIiwicG9pbnRlcnVwIiwidG9Nb2RpZmllckFycmF5IiwidXNlRHJvcGRvd25NZW51IiwiYXR0YWNoQXJyb3dSZWYiLCJoYXNTaG93blJlZiIsImZsaXAiLCJyb290Q2xvc2VFdmVudCIsImZpeGVkIiwicGxhY2VtZW50T3ZlcnJpZGUiLCJwb3BwZXJDb25maWciLCJlbmFibGVFdmVudExpc3RlbmVycyIsInVzZVBvcHBlciIsInNob3VsZFVzZVBvcHBlciIsInNldE1lbnUiLCJtZW51RWxlbWVudCIsInRvZ2dsZUVsZW1lbnQiLCJlbmFibGVFdmVudHMiLCJjb250YWluZXJQYWRkaW5nIiwiX21vZGlmaWVycyRldmVudExpc3RlIiwiX21vZGlmaWVycyRwcmV2ZW50T3ZlIiwiX21vZGlmaWVycyRwcmV2ZW50T3ZlMiIsIl9tb2RpZmllcnMkb2Zmc2V0IiwiX21vZGlmaWVycyRhcnJvdyIsInRvTW9kaWZpZXJNYXAiLCJtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnIiwibWVudVByb3BzIiwibWV0YWRhdGEiLCJoYXNTaG93biIsInRvZ2dsZSIsImFycm93UHJvcHMiLCJvbkNsaWNrT3V0c2lkZSIsImNsaWNrVHJpZ2dlciIsInByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZiIsIndhaXRpbmdGb3JUcmlnZ2VyIiwiaGFuZGxlTW91c2VDYXB0dXJlIiwiaXNMZWZ0Q2xpY2tFdmVudCIsImhhbmRsZUluaXRpYWxNb3VzZSIsImhhbmRsZU1vdXNlIiwiY3VycmVudEV2ZW50IiwicmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciIsInJlbW92ZU1vdXNlQ2FwdHVyZUxpc3RlbmVyIiwicmVtb3ZlTW91c2VMaXN0ZW5lciIsIm1vYmlsZVNhZmFyaUhhY2tMaXN0ZW5lcnMiLCJEcm9wZG93bk1lbnUiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCIkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY2FuVXNlRE9NIiwiQm9vbGVhbiIsIiQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMiLCJpc1JvbGVNZW51IiwiX2VsJGdldEF0dHJpYnV0ZSIsInVzZURyb3Bkb3duVG9nZ2xlIiwiZGVmYXVsdElkIiwiY3R4IiwiY291bnRlciIsIl9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIl9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lciIsImN1cnJlbnRPd25lciIsInByZXZDb21wb25lbnRWYWx1ZSIsIiQ3MDRjZjFkM2I2ODRjYzVjJHZhciR1c2VDb3VudGVyIiwic2V0VG9nZ2xlIiwiRHJvcGRvd25Ub2dnbGUiLCJtYWtlRXZlbnRLZXkiLCJldmVudEtleSIsIk5hdkNvbnRleHQiLCJkYXRhQXR0ciIsInVzZURyb3Bkb3duSXRlbSIsIm9uU2VsZWN0Q3R4IiwibmF2Q29udGV4dCIsImFjdGl2ZUtleSIsImlzQWN0aXZlIiwiRHJvcGRvd25JdGVtIiwiZHJvcGRvd25JdGVtUHJvcHMiLCJDb250ZXh0IiwidXNlV2luZG93IiwidXNlUmVmV2l0aFVwZGF0ZSIsIkRyb3Bkb3duIiwiZGVmYXVsdFNob3ciLCJyYXdTaG93Iiwib25TZWxlY3QiLCJvblRvZ2dsZSIsInJhd09uVG9nZ2xlIiwiaXRlbVNlbGVjdG9yIiwiZm9jdXNGaXJzdEl0ZW1PblNob3ciLCJtZW51UmVmIiwidG9nZ2xlUmVmIiwibGFzdFNob3ciLCJsYXN0U291cmNlRXZlbnQiLCJmb2N1c0luRHJvcGRvd24iLCJuZXh0U2hvdyIsIm9yaWdpbmFsRXZlbnQiLCJoYW5kbGVTZWxlY3QiLCJmb2N1c1RvZ2dsZSIsIm1heWJlRm9jdXNGaXJzdCIsImZvY3VzVHlwZSIsImZpcnN0IiwiZ2V0TmV4dEZvY3VzZWRDaGlsZCIsIml0ZW1zIiwiZXZlbnRUYXJnZXQiLCJfbWVudVJlZiRjdXJyZW50IiwiX3RvZ2dsZVJlZiRjdXJyZW50IiwiZnJvbU1lbnUiLCJmcm9tVG9nZ2xlIiwiX21lbnVSZWYkY3VycmVudDIiLCJUb2dnbGUiLCJJdGVtIiwidXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nIiwiZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50IiwiYWxpZ25FbmQiLCJkcm9wRGlyZWN0aW9uIiwiaXNSVEwiLCJhbGlnbiIsInNob3dQcm9wcyIsInJlbmRlck9uTW91bnQiLCJpc05hdmJhciIsIk5hdmJhckNvbnRleHQiLCJjb250ZXh0QWxpZ24iLCJkcm9wIiwiaXNJbnB1dEdyb3VwIiwiSW5wdXRHcm91cENvbnRleHQiLCJhbGlnbkNsYXNzZXMiLCJicmtQb2ludCIsInVzZUlzb21vcnBoaWNFZmZlY3QiLCJjbG9zZSIsImNoaWxkQnNQcmVmaXgiLCJkcm9wZG93bkNvbnRleHQiLCJ0b2dnbGVQcm9wcyIsIkRyb3Bkb3duSGVhZGVyIiwiRHJvcGRvd25EaXZpZGVyIiwiRHJvcGRvd25JdGVtVGV4dCIsInBQcm9wcyIsIm5hdmJhciIsIl80IiwiYXV0b0Nsb3NlIiwiZGlyIiwidXNlSXNSVEwiLCJoYW5kbGVUb2dnbGUiLCJjb250ZXh0VmFsdWUiLCJkaXJlY3Rpb25DbGFzc2VzIiwiZG93biIsInVwIiwiSXRlbVRleHQiLCJEaXZpZGVyIiwiSGVhZGVyIiwidXNlTmF2SXRlbSIsInBhcmVudE9uU2VsZWN0IiwidGFiQ29udGV4dCIsImNvbnRleHRDb250cm9sbGVySWQiLCJnZXRDb250cm9sbGVySWQiLCJjb250ZXh0Q29udHJvbGxlZElkIiwiZ2V0Q29udHJvbGxlZElkIiwiTmF2SXRlbSIsIk5hdkxpbmsiLCJuYXZJdGVtUHJvcHMiLCJOYXZEcm9wZG93biIsIm1lbnVSb2xlIiwicmVuZGVyTWVudU9uTW91bnQiLCJtZW51VmFyaWFudCIsIm5hdkl0ZW1QcmVmaXgiLCJVc2VyQ29tcG9uZW50Iiwib25Mb2dpbiIsIm9uTG9nb3V0IiwiY29tcG9uZW50Iiwic2V0Q29tcG9uZW50Iiwic2hvd19jb21wb25lbnQiLCJzaG93X2xvZ2luX2Zvcm0iLCJsb2dvdXRfY2FsbGJhY2siLCJsb2dvdXQiLCJzaG93X3Nlc3Npb25faW5mbyIsInNlc3Npb25faW5mbyIsIl9Vc2VyQ29tcG9uZW50IiwibG9naW5fZmFpbCIsImxvZ2luX3N1Y2Nlc3MiLCJnZXRTZXNzaW9uSW5mbyIsIkJyYW5kaW5nIiwiRVZFTlRfS0VZX0FUVFIiLCJOYXYiLCJuZWVkc1JlZm9jdXNSZWYiLCJsaXN0Tm9kZSIsImdldE5leHRBY3RpdmVUYWIiLCJjdXJyZW50TGlzdE5vZGUiLCJhY3RpdmVDaGlsZCIsIm5leHRJbmRleCIsIm5leHRBY3RpdmVDaGlsZCIsImluaXRpYWxCc1ByZWZpeCIsImZpbGwiLCJqdXN0aWZ5IiwibmF2YmFyU2Nyb2xsIiwibmF2YmFyQnNQcmVmaXgiLCJjYXJkSGVhZGVyQnNQcmVmaXgiLCJuYXZiYXJDb250ZXh0IiwiY2FyZEhlYWRlckNvbnRleHQiLCJDYXJkSGVhZGVyQ29udGV4dCIsIk5hdmJhckJyYW5kIiwiZnVuY3MiLCJNQVJHSU5TIiwiZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlIiwiZGltZW5zaW9uIiwiZWxlbSIsIm1hcmdpbnMiLCJjb2xsYXBzZVN0eWxlcyIsImdldERpbWVuc2lvblZhbHVlIiwiQ29sbGFwc2UiLCJjb21wdXRlZERpbWVuc2lvbiIsIk5hdmJhckNvbGxhcHNlIiwiZXhwYW5kZWQiLCJOYXZiYXJUb2dnbGUiLCJsYWJlbCIsIm1hdGNoZXJzQnlXaW5kb3ciLCJnZXRNYXRjaGVyIiwicXVlcnkiLCJ0YXJnZXRXaW5kb3ciLCJtYXRjaGVycyIsIm1xbCIsIm1hdGNoTWVkaWEiLCJyZWZDb3VudCIsInVzZU1lZGlhUXVlcnkiLCJtYXRjaGVzIiwic2V0TWF0Y2hlcyIsImhhbmRsZUNoYW5nZSIsImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJicmVha3BvaW50VmFsdWVzIiwibmFtZXMiLCJhbmQiLCJicmVha3BvaW50T3JNYXAiLCJicmVha3BvaW50TWFwIiwiX2JyZWFrcG9pbnRNYXAiLCJlbnRyaWVzIiwiYnJlYWtwb2ludCIsImdldE5leHQiLCJnZXRNYXhRdWVyeSIsImNyZWF0ZUJyZWFrcG9pbnRIb29rIiwieHMiLCJzbSIsInhsIiwieHhsIiwiT1BFTl9EQVRBX0FUVFJJQlVURSIsImhhbmRsZUNvbnRhaW5lck92ZXJmbG93IiwibW9kYWxzIiwiZ2V0U2Nyb2xsYmFyV2lkdGgiLCJpbm5lcldpZHRoIiwiZ2V0Qm9keVNjcm9sbGJhcldpZHRoIiwiZ2V0RWxlbWVudCIsInNldE1vZGFsQXR0cmlidXRlcyIsIl9tb2RhbCIsInJlbW92ZU1vZGFsQXR0cmlidXRlcyIsInNldENvbnRhaW5lclN0eWxlIiwiY29udGFpbmVyU3RhdGUiLCJwYWRkaW5nUHJvcCIsImNvbnRhaW5lciIsInNjcm9sbEJhcldpZHRoIiwicmVtb3ZlQ29udGFpbmVyU3R5bGUiLCJtb2RhbCIsIm1vZGFsSWR4IiwiaXNUb3BNb2RhbCIsInJlc29sdmVDb250YWluZXJSZWYiLCJpblByb3AiLCJoYXNFbnRlcmVkUmVmIiwiY29tYmluZWRSZWYiLCJjbG9uZUVsZW1lbnQiLCJJbXBlcmF0aXZlVHJhbnNpdGlvbiIsImV4aXRlZCIsInNldEV4aXRlZCIsIm9uVHJhbnNpdGlvbiIsImlzSW5pdGlhbFJlZiIsImhhbmRsZVRyYW5zaXRpb24iLCJzdGFsZSIsImluaXRpYWwiLCJpc1N0YWxlIiwicmVuZGVyVHJhbnNpdGlvbiIsInJ1blRyYW5zaXRpb24iLCJtYW5hZ2VyIiwiTW9kYWwiLCJmb3J3YXJkUmVmIiwiYmFja2Ryb3AiLCJrZXlib2FyZCIsIm9uQmFja2Ryb3BDbGljayIsIm9uRXNjYXBlS2V5RG93biIsImJhY2tkcm9wVHJhbnNpdGlvbiIsInJ1bkJhY2tkcm9wVHJhbnNpdGlvbiIsImVuZm9yY2VGb2N1cyIsInJlc3RvcmVGb2N1cyIsInJlc3RvcmVGb2N1c09wdGlvbnMiLCJyZW5kZXJEaWFsb2ciLCJyZW5kZXJCYWNrZHJvcCIsInByb3ZpZGVkTWFuYWdlciIsImNvbnRhaW5lclJlZiIsIm9uU2hvdyIsIm9uSGlkZSIsIm9uUmVzb2x2ZWQiLCJyZXNvbHZlZFJlZiIsInNldFJlZiIsImVhcmx5UmVmIiwibmV4dFJlZiIsInVzZVdhaXRGb3JET01SZWYiLCJwcm92aWRlZCIsIm1vZGFsTWFuYWdlciIsImdldE1hbmFnZXIiLCJkaWFsb2ciLCJzZXREaWFsb2dSZWYiLCJzZXRCYWNrZHJvcFJlZiIsInVzZU1vZGFsTWFuYWdlciIsInByZXZTaG93IiwibGFzdEZvY3VzUmVmIiwiaGFuZGxlU2hvdyIsInJlbW92ZUtleWRvd25MaXN0ZW5lclJlZiIsImhhbmRsZURvY3VtZW50S2V5RG93biIsInJlbW92ZUZvY3VzTGlzdGVuZXJSZWYiLCJoYW5kbGVFbmZvcmNlRm9jdXMiLCJjdXJyZW50QWN0aXZlRWxlbWVudCIsImhhbmRsZUhpZGUiLCJfbGFzdEZvY3VzUmVmJGN1cnJlbnQiLCJ2YWx1ZVJlZiIsIm9uVW5tb3VudCIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJpc0VzY0tleSIsImRpYWxvZ1Byb3BzIiwiYmFja2Ryb3BFbGVtZW50IiwiTWFuYWdlciIsInRyYW5zaXRpb25TdHlsZXMiLCJPZmZjYW52YXNUb2dnbGluZyIsIkFic3RyYWN0TW9kYWxIZWFkZXIiLCJjbG9zZUJ1dHRvbiIsIk9mZmNhbnZhc0hlYWRlciIsInJlcGxhY2VDbGFzc05hbWUiLCJvcmlnQ2xhc3MiLCJjbGFzc1RvUmVtb3ZlIiwiU2VsZWN0b3IiLCJCb290c3RyYXBNb2RhbE1hbmFnZXIiLCJhZGp1c3RBbmRTdG9yZSIsImFkanVzdCIsImFjdHVhbCIsInJlc3RvcmUiLCJzdXBlciIsImNsYXNzTGlzdCIsImJhc2VWYWwiLCJoYXNDbGFzcyIsIm1hcmdpblByb3AiLCJzaGFyZWRNYW5hZ2VyIiwiRGlhbG9nVHJhbnNpdGlvbiIsIkJhY2tkcm9wVHJhbnNpdGlvbiIsIk9mZmNhbnZhcyIsImFyaWFMYWJlbGxlZGJ5IiwicmVzcG9uc2l2ZSIsImJhY2tkcm9wQ2xhc3NOYW1lIiwicHJvcHNNYW5hZ2VyIiwicmVuZGVyU3RhdGljTm9kZSIsInNob3dPZmZjYW52YXMiLCJzZXRTaG93T2ZmY2FudmFzIiwiaGlkZVJlc3BvbnNpdmVPZmZjYW52YXMiLCJtb2RhbENvbnRleHQiLCJiYWNrZHJvcFByb3BzIiwiZ2V0U2hhcmVkTWFuYWdlciIsIkJvZHkiLCJPZmZjYW52YXNCb2R5IiwiVGl0bGUiLCJPZmZjYW52YXNUaXRsZSIsIk5hdmJhck9mZmNhbnZhcyIsIk5hdmJhclRleHQiLCJOYXZiYXIiLCJleHBhbmQiLCJzdGlja3kiLCJjb2xsYXBzZU9uU2VsZWN0IiwiY29udHJvbGxlZFByb3BzIiwiaGFuZGxlQ29sbGFwc2UiLCJleHBhbmRDbGFzcyIsIkJyYW5kIiwiVGV4dCIsIkNvbnRhaW5lciIsImZsdWlkIiwic3VmZml4IiwiQ1FMX1dPUkRTIiwicHJlcGFyZVRlcm1zIiwidGVybXMiLCJ0ZXJtIiwidGVybV9lc2NhcGVkIiwib3JpZ2luYWwiLCJub3JtYWxpemVkIiwiZXNjYXBlZCIsInByZXBhcmVDcWxXb3JkcyIsIndvcmRzIiwid29yZCIsIkF1dG9Db21wbGV0aW9uIiwiY3FsX3dvcmRzIiwiX2NxbF93b3JkcyIsIl90ZXJtcyIsIl9yZXNvbHZlZF90ZXJtcyIsImlzQ3FsIiwiZnVsbFF1ZXJ5IiwiZ2V0Q3FsU3VnZ2VzdGlvbnMiLCJnZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMiLCJyZXNvbHZlZF90ZXJtcyIsIl9kb19yZXNvbHZlX3Rlcm1zIiwiX2dldFRlcm1zIiwid29yZE5vcm1hbGl6ZWQiLCJzdGFydHNXaXRoIiwidHJhbnNsYXRvciIsImVxdWFscyIsImFsbG93ZWRfb3BlcmF0b3JzIiwiYm9vbGVhbiIsImludGVnZXIiLCJkb3VibGUiLCJtYWtlX3F1ZXJ5X2ZpbHRlciIsIm9wZXJhdG9yIiwidW5pdCIsIl9kZWZhdWx0IiwicXVvdGVzIiwibWFrZVF1ZXJ5VGVtcGxhdGUiLCJyZWNvcmRfdHlwZSIsInNlYXJjaF90ZXJtcyIsImFjdGl2ZUZpbHRlcnMiLCJmaWx0ZXJfY29ubmVjdG9yIiwic3BsaXR0ZWRfc2VhcmNoX3Rlcm1zIiwic3BsaXRTZWFyY2hUZXJtcyIsInJlcGxhY2VBbGwiLCJmaWx0ZXJzIiwiZGF0YXR5cGUiLCJtYWtlUXVlcnlGaWx0ZXIiLCJfc3BsaXRTZWFyY2hUZXJtc1BhdHRlcm4iLCJmcm9tIiwibWF0Y2hBbGwiLCJjcmVhdGVUYWIiLCJyZWNvcmRUeXBlIiwiZGVzY3JpcHRpb24iLCJtYWtlUXVlcnlDYWxsYmFjayIsImZpbHRlckRlZmluaXRpb25zIiwibWFrZVF1ZXJ5IiwiZ2V0X3Rlc3Rfc3VnZ2VzdGlvbnMiLCJmdWxsIiwiZ2V0U3VnZ2VzdGlvbnMiLCJtYWtlRmlsdGVyRGVmaW5pdGlvbnMiLCJRdWVyeUZvcm1Db250ZXh0IiwiUmVhY3QiLCJSYW5nZUZpbHRlcklucHV0Iiwib25DaGFuZ2VNaW4iLCJuZXdFIiwib25DaGFuZ2VNYXgiLCJ1bml0RWxlbWVudCIsIkZpbHRlcklucHV0Iiwic3RlcCIsImlucHV0dHlwZSIsImlucHV0RWxlbWVudCIsIkNxbEhpbnQiLCJRdWVyeUZvcm1TaW5nbGVUYWIiLCJ0YWIiLCJzZXRBY3RpdmVUYWIiLCJpc0FjdGl2ZVRhYiIsImFjdGl2YXRlVGFiIiwiQWRkVGFiRmlsdGVyT3BlcmF0b3IiLCJmaWx0ZXJJZHgiLCJ1cGRhdGVGaWx0ZXIiLCJyZXN0b3JlT3BlcmF0b3IiLCJyZXN0b3JlVmFsdWUiLCJzZXRPcGVyYXRvciIsIm9wIiwiaWR4IiwiRmlsdGVyU2VsZWN0IiwiZmlsIiwiQWRkRmlsdGVyIiwiYWRkRmlsdGVyIiwiRmlsdGVyIiwicmVtb3ZlRmlsdGVyIiwiYWN0aXZlRmlsdGVyIiwicmVtb3ZlVGhpcyIsIlF1ZXJ5Rm9ybVRhYkZpbHRlcnNJbm5lciIsInNldEFjdGl2ZUZpbHRlcnMiLCJuZXdBY3RpdmVGaWx0ZXJzIiwicHJvcGVydHlGaWx0ZXIiLCJRdWVyeUZvcm1UYWJGaWx0ZXJzIiwic2hvd0ZpbHRlcnMiLCJzZXRTaG93RmlsdGVycyIsIlF1ZXJ5Rm9ybVRhYnMiLCJ0YWJzIiwiYWN0aXZlVGFiIiwiaGFzRmlsdGVycyIsIlF1ZXJ5U3VibWl0QnV0dG9uIiwiaXNTdWJtaXR0ZWQiLCJTaW5nbGVRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW0iLCJzdWdnZXN0aW9uIiwiaXNIaWdobGlnaHRlZCIsIm9uTW91c2VFbnRlciIsIlF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zSXRlbXMiLCJzdWdnZXN0aW9ucyIsImhpZ2hsaWdodEluZGV4Iiwic2VsZWN0U3VnZ2VzdGlvbiIsInN1ZyIsIlF1ZXJ5Rm9ybVN1Z2dlc3Rpb25zIiwidW5zZWxlY3RTdWdnZXN0aW9ucyIsImdldElucHV0UmVmIiwid29yZFBvcyIsInhPZmZzZXQiLCJpbnB1dFJlZiIsImNvb3JkcyIsImlucHV0V2lkdGgiLCJyaWdodE9mZnNldCIsIm1hcmdpbkxlZnQiLCJvbk1vdXNlTGVhdmUiLCJwYWRkaW5nTGVmdCIsInJlZHVjZXIiLCJjdXJzb3JfcG9zIiwid29yZF9wb3MiLCJvcGVuIiwidW5yZXNvbHZlZF9zdWdnZXN0aW9ucyIsInJlZm9jdXMiLCJvbkNsaWNrVmFsdWUiLCJjdXJzb3JQb3MiLCJvbkNsaWNrQ3Vyc29yUG9zIiwibGFzdEluZGV4T2YiLCJnZXRTdWdnZXN0aW9uc0NhbGxiYWNrIiwiZklzQ3FsIiwiY3Vyc29yUG9zTm9Db21wbGV0aW9uIiwidmFsdWVOb0NvbXBsZXRpb24iLCJjaGFuZ2VJZCIsInVucmVzb2x2ZWRTdWdnZXN0aW9ucyIsIm5ld0hpZ2hsaWdodEluZGV4IiwibmV3VmFsdWUiLCJuZXdDdXJzb3JQb3MiLCJRdWVyeUZvcm1UZXh0RmllbGQiLCJzZXRRdWVyeVN0cmluZyIsInJlc3RvcmVRdWVyeVN0cmluZyIsIm9uRm9jdXMiLCJvbkFycm93VXAiLCJvbkFycm93RG93biIsInNldFNlbGVjdGlvblJhbmdlIiwiUXVlcnlGb3JtIiwic3VibWl0Q2FsbGJhY2siLCJkZWZhdWx0VGFiIiwicmVzdG9yZUNhbGxiYWNrIiwic3RvcmVDYWxsYmFjayIsInJlc3RvcmVBY3RpdmVGaWx0ZXJzIiwicmVzdG9yZUFjdGl2ZVRhYiIsInNldElzU3VibWl0dGVkIiwicXVlcnlTdHJpbmciLCJhY3RpdmVUYWJEZWYiLCJpc1NlbGVjdCIsInBhZ2VTaXplIiwic2V0QWN0aXZlVGFiUmVzZXRGaWx0ZXJzIiwiYXV0b0NvbXBsZXRlIiwibG9jYWxTdG9yYWdlIiwicGFyc2UiLCJyZW1vdmVJdGVtIiwibGFzdFF1ZXJ5Rm9ybUhlaWdodCIsInNjcm9sbERvd25UaW1lb3V0IiwidG9nZ2xlUXVlcnlQYW5lbCIsIlF1ZXJ5UGFuZWwiLCJzY3JvbGxIYW5kbGVyIiwiTmF2aWdhdGlvbk1hbmFnZXIiLCJ1c2VyX2NvbXBvbmVudCIsInVwZGF0ZV9saXN0ZW5lcnMiLCJub3RpZnlVcGRhdGVMaXN0ZW5lcnMiLCJUb3BOYXZpZ2F0aW9uQmFyIiwicGFuZWxSZWYiLCJGb290ZXJNYW5hZ2VyIiwiY29weVJpZ2h0IiwiRm9vdGVyIiwic3BhY2VyIiwiQXdhaXQiLCJsb2FkaW5nIiwidGhlUHJvbWlzZSIsImRvVGhlbiIsImRvQ2F0Y2giLCJfZXJyb3IiLCJwcm9taXNlIiwiQ2hlY2tib3giLCJpY29ucyIsInJlYWRPbmx5IiwiaWNvbkNsYXNzTmFtZU1hcCIsInRydWUiLCJmYWxzZSIsInBhcnRpYWwiLCJDYXJkIiwiX19fJGluc2VydFN0eWxlIiwiX19hc3NpZ24kMSIsIl9fcmVzdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX19hd2FpdGVyJDEiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsImdlbmVyYXRvciIsInJlamVjdCIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwiX19nZW5lcmF0b3IkMSIsInNlbnQiLCJ0cnlzIiwib3BzIiwidmVyYiIsIl9fc3ByZWFkQXJyYXkkMSIsInRvIiwicGFjayIsImFyIiwiZmlsZVNpemVGb3JtYXRlciIsImZpbGVTaXplIiwidG9GaXhlZCIsIkZpbGVJdGVtTG9jYWxpemVyIiwiZnVsbEluZm9MYXllciIsInByZXBhcmluZyIsInVwbG9hZGluZyIsInN1Y2Nlc3MiLCJ2YWxpZCIsImRlbmllZCIsImFib3J0ZWQiLCJGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yIiwibG9jYWwiLCJEcm9wem9uZUxvY2FsaXplciIsImRlZmF1bHRMYWJlbCIsInVwbG9hZGluZ01lc3NhZ2UiLCJhbW91bnRPZkZpbGVzIiwidXBsb2FkRmluaXNoZWQiLCJ1cGxvYWRlZCIsIm5vRmlsZXNNZXNzYWdlIiwiZm9vdGVyIiwiYWNjZXB0QWxsIiwiYWNjZXB0Q3VzdG9tIiwiYWNjZXB0IiwiaGVhZGVyIiwidXBsb2FkRmlsZXNNZXNzYWdlIiwibWF4U2l6ZU1lc3NhZ2UiLCJtYXhGaWxlU2l6ZSIsInZhbGlkRmlsZXNNZXNzYWdlIiwibnVtYmVyT2ZWYWxpZEZpbGVzIiwibWF4RmlsZXMiLCJmYWtldXBsb2Fkc3VjY2VzcyIsImZha2VVcGxvYWRFcnJvciIsIkRyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IiLCJWYWxpZGF0ZUVycm9yTG9jYWxpemVyIiwibWF4U2l6ZUVycm9yIiwibWF4U2l6ZSIsImFjY2VwdEVycm9yIiwibWF4RmlsZUNvdW50IiwicmVhZEFzRGF0YVVSTCIsImZpbGUiLCJvblByb2dyZXNzIiwicmVhZGVyXzEiLCJGaWxlUmVhZGVyIiwib25wcm9ncmVzcyIsIm9uZXJyb3IiLCJvbmxvYWQiLCJnZXRJbWFnZU9yaWVudGF0aW9uIiwiaW1hZ2VTb3VyY2UiLCJpbWdfMSIsIkltYWdlIiwiZXYiLCJvY3RldCIsImdldEV4dCIsImZpbGVOYW1lIiwiZXhlYyIsIkRFRl9HRU5fTUlNRSIsIm1pbWVTZWxlY3RvciIsIm1pbWVUeXBlIiwiaGVhZGVyTWltZSIsInRhaWxNaW1lIiwiYXBwbGljYXRpb25TZWxlY3RvciIsImF1ZGlvU2VsZWN0b3IiLCJ2aWRlb1NlbGVjdG9yIiwidGV4dFNlbGVjdG9yIiwiaW1hZ2VTZWxlY3RvciIsImZvbnRTZWxlY3RvciIsImV4dGVuc2lvblNlbGVjdG9yIiwiZXh0ZW5zaW9uIiwiZ2VuZXJpY01pbWUiLCJjaGVja0lzQ29kZSIsIm1pbWVVcmxMaXN0IiwiYWFjIiwiYWNjZGIiLCJhYnciLCJhcmMiLCJhdmkiLCJhenciLCJibXAiLCJieiIsImJ6MiIsImNkYSIsImNzaCIsImNzdiIsImRvY3giLCJkcmF3aW8iLCJlb3QiLCJlcHViIiwiZ3ppcCIsImdpZiIsImljYWxlbmRhciIsImphciIsImpwZWciLCJqYXZhc2NyaXB0IiwianNvbiIsImpzb25sZCIsIm1pZGkiLCJtcDMiLCJtcDQiLCJtcGVnIiwibXBrZyIsIm1wMnQiLCJvZHAiLCJvZHMiLCJvZHQiLCJvZ2EiLCJvZ3YiLCJvZ3giLCJvcHVzIiwib3RmIiwicG5nIiwicGRmIiwicGhwIiwicHB0eCIsInBzZCIsInJhciIsInJ0ZiIsInNhc3MiLCJzd2YiLCJ0aWZmIiwidHRmIiwidHlwZXNjcmlwdCIsInZzZCIsIndhdiIsIndlYmEiLCJ3ZWJtIiwid2VicCIsIndvZmYiLCJ3bWEiLCJ3bXYiLCJ4aHRtbCIsInhsc3giLCJ4bWwiLCJ4dWwiLCJ6aXAiLCJzZXZlbnppcCIsInB5dGhvbiIsImphdmEiLCJyZWFjdCIsInZ1ZSIsImZhbGxCYWNrIiwiRXh0RmlsZUluc3RhbmNlIiwiZXh0RmlsZSIsImltYWdlVXJsIiwiZXJyb3JzIiwidXBsb2FkTWVzc2FnZSIsInVwbG9hZFN0YXR1cyIsInByb2dyZXNzIiwieGhyIiwiZXh0cmFEYXRhIiwiZXh0cmFVcGxvYWREYXRhIiwic2VydmVyUmVzcG9uc2UiLCJkb3dubG9hZFVybCIsInZpZGVvVXJsIiwidG9FeHRGaWxlIiwiZXh0RmlsZUluc3RhbmNlIiwiZXh0RmlsZUNsb25lIiwiZXh0RmlsZUluc3RhbmNlS2V5cyIsImV4dEZpbGVJbnN0YW5jZVZhbHVlcyIsInZhbHVlcyIsImN1cnJlbnRWYWx1ZSIsImN1cnJLZXkiLCJfX2Fzc2lnbiIsIl9fYXdhaXRlciIsIl9fZ2VuZXJhdG9yIiwiX19zcHJlYWRBcnJheSIsIkV4dEZpbGVNYW5hZ2VyIiwiZ2V0TmV4dElkIiwibmV4dElkIiwic2V0RmlsZUxpc3QiLCJleHRGaWxlc0luc3RhbmNlcyIsImZpbGVMaXN0cyIsImNyZWF0ZUZpbGVMaXN0TWFwIiwicmVtb3ZlRmlsZUxpc3RNYXAiLCJnZXRFeHRGaWxlSW5zdGFuY2VMaXN0Iiwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmciLCJkcm9wem9uZUlkIiwibG9jYWxGaWxlcyIsInZhbGlkYXRlRmlsZXMiLCJjbGVhbk9uVXBsb2FkIiwicmVzdWx0RXh0TGlzdCIsInRlbUxvY2FsRmlsZXMiLCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZzIiLCJGaWxlSWRHZW5lcmF0b3IiLCJTeW50aGV0aWNGaWxlIiwiY3JlYXRlRmlsZSIsIkZpbGUiLCJjcmVhdGVfYWFjIiwiY3JlYXRlX2FidyIsImNyZWF0ZV9mcmVlYXJjIiwiY3JlYXRlX2F2aSIsImNyZWF0ZV9henciLCJjcmVhdGVfb2N0ZXQiLCJjcmVhdGVfYm1wIiwiY3JlYXRlX2J6IiwiY3JlYXRlX2J6MiIsImNyZWF0ZV9jZGEiLCJjcmVhdGVfY3NoIiwiY3JlYXRlX2NzcyIsImNyZWF0ZV9jc3YiLCJjcmVhdGVfZG9jIiwiY3JlYXRlX2RvY3giLCJjcmVhdGVfZW90IiwiY3JlYXRlX2VwdWIiLCJjcmVhdGVfZ3ppcCIsImNyZWF0ZV9naWYiLCJjcmVhdGVfaHRtIiwiY3JlYXRlX2h0bWwiLCJjcmVhdGVfaWNvIiwiY3JlYXRlX2ljYWxlbmRhciIsImNyZWF0ZV9qYXIiLCJjcmVhdGVfanBlZyIsImNyZWF0ZV9qcGciLCJjcmVhdGVfanMiLCJjcmVhdGVfanNvbiIsImNyZWF0ZV9qc29ubGQiLCJjcmVhdGVfbWlkIiwiY3JlYXRlX3hfbWlkIiwiY3JlYXRlX21pZGkiLCJjcmVhdGVfeF9taWRpIiwiY3JlYXRlX21qcyIsImNyZWF0ZV9tcDMiLCJjcmVhdGVfbXA0IiwiY3JlYXRlX21wZWciLCJjcmVhdGVfbXBrZyIsImNyZWF0ZV9vZHAiLCJjcmVhdGVfb2RzIiwiY3JlYXRlX29kdCIsImNyZWF0ZV9vZ2EiLCJjcmVhdGVfb2d2IiwiY3JlYXRlX29neCIsImNyZWF0ZV9vcHVzIiwiY3JlYXRlX290ZiIsImNyZWF0ZV9wbmciLCJjcmVhdGVfcGRmIiwiY3JlYXRlX3BocCIsImNyZWF0ZV9wcHQiLCJjcmVhdGVfcHB0eCIsImNyZWF0ZV9yYXIiLCJjcmVhdGVfcnRmIiwiY3JlYXRlX3NoIiwiY3JlYXRlX3N2ZyIsImNyZWF0ZV9zd2YiLCJjcmVhdGVfdGFyIiwiY3JlYXRlX3RpZiIsImNyZWF0ZV90aWZmIiwiY3JlYXRlX3RzIiwiY3JlYXRlX3R0ZiIsImNyZWF0ZV90ZXh0IiwiY3JlYXRlX3R5cGVzY3JpcHQiLCJjcmVhdGVfdnNkIiwiY3JlYXRlX3dhdiIsImNyZWF0ZV93ZWJhIiwiY3JlYXRlX3dlYm0iLCJjcmVhdGVfd2VicCIsImNyZWF0ZV93b2ZmIiwiY3JlYXRlX3dvZmYyIiwiY3JlYXRlX3hodG1sIiwiY3JlYXRlX3hsc3giLCJjcmVhdGVfeGxzIiwiY3JlYXRlX3htbCIsImNyZWF0ZV94bWxfdHh0IiwiY3JlYXRlX3h1bCIsImNyZWF0ZV96aXAiLCJjcmVhdGVfM2dwIiwiY3JlYXRlXzNncDIiLCJjcmVhdGVfM2dwX2EiLCJjcmVhdGVfM2dwX3YiLCJjcmVhdGVfN3oiLCJjcmVhdGVfcHl0aG9uIiwiY3JlYXRlX2phdmEiLCJjcmVhdGVfcmVhY3QiLCJjcmVhdGVfdnVlIiwiY3JlYXRlRmlsZUxpc3RNaXNjZWxhbmlvdXMiLCJsaXN0RmlsZSIsImZpbGVMaXN0VG9FeHRGaWxlQXJyYXkiLCJmaWxlTGlzdCIsImV4dEZpbGVBcnJheSIsInNsZWVwUHJlcGFyaW5nIiwicHJlcGFyaW5nVGltZSIsImZha2VGdWlVcGxvYWQiLCJhZGRDbGFzc05hbWUiLCJiYXNlQ2xhc3NOYW1lIiwidmFsaWRhdGVFeHRGaWxlTGlzdCIsImV4dEZpbGVMaXN0IiwicmVtYWluaW5nVmFsaWRzIiwibG9jYWxWYWxpZGF0b3JQcm9wcyIsImxvY2FsaXphdGlvbiIsImZpbGVMaXN0UmVzdWx0IiwicmVtYWluaW5nIiwiVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyIiwibWF4RmlsZUVycm9yTWVzc2VuZ2VyIiwiY3VycmVudEV4dEZpbGUiLCJ2YWxpZGF0ZUV4dEZpbGUiLCJ2YWxpZGF0b3JQcm9wcyIsImxvY2FsRXJyb3JzIiwiZXh0RmlsZVJlc3VsdCIsImVycm9yc1Jlc3VsdCIsIm1heEZpbGVTaXplRXJyb3JNZXNzZW5nZXIiLCJhY2NlcHRJdGVtIiwiaGVhZGVyTWltZUZpbGUiLCJ0YWlsTWltZUZpbGUiLCJ2YWxpZGF0ZUFjY2VwdCIsInNlcGFyYXRlQWNjZXB0IiwiaXNWYWxpZCIsIlRJTUVPVVRfRVJST1JfUkVTUE9OU0UiLCJBQk9SVEVEX0VSUk9SX1JFU1BPTlNFIiwiSlNPTl9QQVJTRV9FUlJPUl9SRVNQT05TRSIsIlVORVhQRUNURURfRVJST1JfUkVTUE9OU0UiLCJtYWtlRXJyb3JVcGxvYWRSZXNwb25zZSIsInJlc3BvbnNlRnVpIiwidXBsb2FkRm9ybURhdGEiLCJtZXRob2QiLCJlbmRwb2ludCIsImhlYWRlcnMiLCJmaW5hbE1ldGhvZCIsInVwbG9hZCIsIm9udGltZW91dCIsIm9uYWJvcnQiLCJvbmxvYWRlbmQiLCJfYSIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZXNwb25zZSIsImpzb25SZXNwb25zZSIsIkpzb25QYXJzZVJlc3BvbnNlIiwiaGVhZGVyS2V5cyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRIZWFkZXJzIiwic2VuZCIsInVwbG9hZEV4dEZpbGUiLCJ1cGxvYWRMYWJlbCIsInVwbG9hZGVyIiwibG9jYWxNZXRob2QiLCJmaWxlVG9VcGxvYWQiLCJmb3JtRGF0YSIsImZpbmFsRXh0cmFEYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJleHRyYURhdGFLZXlzIiwiYWRkRXh0cmFEYXRhIiwiTk9fWEhSX1BST1ZJREVEX0VSUk9SIiwibWFrZVN1Y2Nlc3NVcGxvYWRSZXNwb25zZSIsInRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0IiwiWE1MSHR0cFJlcXVlc3QiLCJzbGVlcFRyYW5zaXRpb24iLCJzYW5pdGl6ZUFyckV4dEZpbGUiLCJhcnJFeHRGaWxlIiwiZGVsZXRlZCIsIk5BTUVEX0NPTE9SUyIsImluZGlhbnJlZCIsImxpZ2h0Y29yYWwiLCJzYWxtb24iLCJkYXJrc2FsbW9uIiwibGlnaHRzYWxtb24iLCJjcmltc29uIiwicmVkIiwiZmlyZWJyaWNrIiwiZGFya3JlZCIsInBpbmsiLCJsaWdodHBpbmsiLCJob3RwaW5rIiwiZGVlcHBpbmsiLCJtZWRpdW12aW9sZXRyZWQiLCJwYWxldmlvbGV0cmVkIiwiY29yYWwiLCJ0b21hdG8iLCJvcmFuZ2VyZWQiLCJkYXJrb3JhbmdlIiwib3JhbmdlIiwiZ29sZCIsInllbGxvdyIsImxpZ2h0eWVsbG93IiwibGVtb25jaGlmZm9uIiwibGlnaHRnb2xkZW5yb2R5ZWxsb3ciLCJwYXBheWF3aGlwIiwibW9jY2FzaW4iLCJwZWFjaHB1ZmYiLCJwYWxlZ29sZGVucm9kIiwia2hha2kiLCJkYXJra2hha2kiLCJsYXZlbmRlciIsInRoaXN0bGUiLCJwbHVtIiwidmlvbGV0Iiwib3JjaGlkIiwiZnVjaHNpYSIsIm1hZ2VudGEiLCJtZWRpdW1vcmNoaWQiLCJtZWRpdW1wdXJwbGUiLCJyZWJlY2NhcHVycGxlIiwiYmx1ZXZpb2xldCIsImRhcmt2aW9sZXQiLCJkYXJrb3JjaGlkIiwiZGFya21hZ2VudGEiLCJwdXJwbGUiLCJpbmRpZ28iLCJzbGF0ZWJsdWUiLCJkYXJrc2xhdGVibHVlIiwibWVkaXVtc2xhdGVibHVlIiwiZ3JlZW55ZWxsb3ciLCJjaGFydHJldXNlIiwibGF3bmdyZWVuIiwibGltZSIsImxpbWVncmVlbiIsInBhbGVncmVlbiIsImxpZ2h0Z3JlZW4iLCJtZWRpdW1zcHJpbmdncmVlbiIsInNwcmluZ2dyZWVuIiwibWVkaXVtc2VhZ3JlZW4iLCJzZWFncmVlbiIsImZvcmVzdGdyZWVuIiwiZ3JlZW4iLCJkYXJrZ3JlZW4iLCJ5ZWxsb3dncmVlbiIsIm9saXZlZHJhYiIsIm9saXZlIiwiZGFya29saXZlZ3JlZW4iLCJtZWRpdW1hcXVhbWFyaW5lIiwiZGFya3NlYWdyZWVuIiwibGlnaHRzZWFncmVlbiIsImRhcmtjeWFuIiwidGVhbCIsImFxdWEiLCJjeWFuIiwibGlnaHRjeWFuIiwicGFsZXR1cnF1b2lzZSIsImFxdWFtYXJpbmUiLCJ0dXJxdW9pc2UiLCJtZWRpdW10dXJxdW9pc2UiLCJkYXJrdHVycXVvaXNlIiwiY2FkZXRibHVlIiwic3RlZWxibHVlIiwibGlnaHRzdGVlbGJsdWUiLCJwb3dkZXJibHVlIiwibGlnaHRibHVlIiwic2t5Ymx1ZSIsImxpZ2h0c2t5Ymx1ZSIsImRlZXBza3libHVlIiwiZG9kZ2VyYmx1ZSIsImNvcm5mbG93ZXJibHVlIiwicm95YWxibHVlIiwiYmx1ZSIsIm1lZGl1bWJsdWUiLCJkYXJrYmx1ZSIsIm5hdnkiLCJtaWRuaWdodGJsdWUiLCJjb3Juc2lsayIsImJsYW5jaGVkYWxtb25kIiwiYmlzcXVlIiwibmF2YWpvd2hpdGUiLCJ3aGVhdCIsImJ1cmx5d29vZCIsInRhbiIsInJvc3licm93biIsInNhbmR5YnJvd24iLCJnb2xkZW5yb2QiLCJkYXJrZ29sZGVucm9kIiwicGVydSIsImNob2NvbGF0ZSIsInNhZGRsZWJyb3duIiwic2llbm5hIiwiYnJvd24iLCJtYXJvb24iLCJ3aGl0ZSIsInNub3ciLCJob25leWRldyIsIm1pbnRjcmVhbSIsImF6dXJlIiwiYWxpY2VibHVlIiwiZ2hvc3R3aGl0ZSIsIndoaXRlc21va2UiLCJzZWFzaGVsbCIsImJlaWdlIiwib2xkbGFjZSIsImZsb3JhbHdoaXRlIiwiaXZvcnkiLCJhbnRpcXVld2hpdGUiLCJsaW5lbiIsImxhdmVuZGVyYmx1c2giLCJtaXN0eXJvc2UiLCJnYWluc2Jvcm8iLCJsaWdodGdyYXkiLCJzaWx2ZXIiLCJkYXJrZ3JheSIsImdyYXkiLCJkaW1ncmF5IiwibGlnaHRzbGF0ZWdyYXkiLCJzbGF0ZWdyYXkiLCJkYXJrc2xhdGVncmF5IiwiYmxhY2siLCJkYXJrZXJDb2xvciIsImNvbG9ySW5wdXQiLCJwZXJjZW50YWdlIiwiZGFya2VkQ29sb3IiLCJjb21wb25lbnQxIiwiY29tcG9uZW50MiIsImNvbXBvbmVudDMiLCJpc0hleENvbG9yIiwiY29sb3VyTmFtZVRvSGV4IiwiaGV4VG9kZWMiLCJjb21wb25lbnRzIiwiaGV4Q29sb3JUb1JHQiIsInBlcmMiLCJkZWZhdWx0Q29sb3IiLCJyZXN1bHREZWZhdWx0IiwiaGV4QXJyYXkiLCJjb2xvdXIiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsImRlY0FycmF5IiwibGV0dGVyIiwiYXN1cmVDb2xvciIsIkRFRkFVTFRfRk9OVF9DT0xPUiIsImNvbXBsZXRlQXN1cmVDb2xvciIsIm1lcmdlUHJvcHMiLCJpbmNvbW1pbmdQcm9wcyIsIklucHV0SGlkZGVuIiwiZGVmYXVsdERyb3pvbmVQcm9wcyIsImNsaWNrYWJsZSIsImJlaGF2aW91ciIsImRyb3BPbkxheWVyIiwidXBsb2FkQ29uZmlnIiwiYWN0aW9uQnV0dG9ucyIsIkRFRkFVTFRfQk9SREVSX1JBRElVUyIsIkRyb3B6b25lQ2hpbGRyZW4iLCJpc0VtcHR5QXJyYXkiLCJoYW5kbGVEcm9wVXRpbCIsImV2dCIsImhhbmRsZURyYWdVdGlsIiwiZHJvcEVmZmVjdCIsImhhbmRsZUNsaWNrVXRpbCIsImFzdXJlUmlwcGxlQ29sb3IiLCJEcm9wem9uZURpc2FibGVkTGF5ZXIiLCJmaW5hbERpc2FibGVkTGF5ZXJDbGFzc05hbWUiLCJvbkRyb3AiLCJvbkRyYWdPdmVyIiwicGFyc2VTaXplIiwic2l6ZVN0ciIsIkNhbmNlbCIsImNvbG9yRmlsbCIsImZpbmFsU2l6ZSIsImZpbmFsU3R5bGUiLCJjdXJzb3IiLCJ4bWxucyIsInZpZXdCb3giLCJDaGVja0NpcmNsZSIsIkNsZWFuIiwiZW5hYmxlQmFja2dyb3VuZCIsIkNsZWFyIiwiQ2xvdWREb25lIiwiRG9EaXN0dXJiIiwiRG93bmxvYWRGaWxlIiwiSW5mb0Rpc25leSIsIlBsYXlJY29uIiwiVXBsb2FkIiwiVXBsb2FkRXJyb3IiLCJEeW5hbWlDU1MiLCJVcGxvYWRpbmdQcm9jZXNzIiwic3BpbiIsImZpbmFsQ2xhc3NuYW1lIiwiVmlzaWJpbGl0eSIsIkRyb3B6b25lSGVhZGVyIiwib25SZXNldCIsIm9uQ2xlYW4iLCJvblVwbG9hZFN0YXJ0IiwiaXNVcGxvYWRpbmciLCJ1cmxQcmVzZW50IiwiYm9yZGVyUmFkaXVzIiwicmVzZXRTdHlsZXMiLCJfYiIsImZpcnN0Q2xhc3NOYW1lIiwiRHJvcHpvbmVIZWFkZXJMb2NhbGl6ZXIiLCJoYW5kbGVDbGVhbiIsImhhbmRsZVN0YXJ0VXBsb2FkaW5nIiwiZmluYWxDbGFzc05hbWUiLCJib3JkZXJUb3BMZWZ0UmFkaXVzIiwiYm9yZGVyVG9wUmlnaHRSYWRpdXMiLCJtYXhGaWxlU2l6ZU1lc3NlbmdlciIsIm1heEZpbGVTaXplRm9ybWF0dGVkIiwidmFsaWRGaWxlU2l6ZU1lc3NlbmdlciIsIm1ha2VIZWFkZXIiLCJIZWFkZXJJdGVtIiwiRHJvcHpvbmVGb290ZXIiLCJfYyIsImFsbG93ZWRUeXBlc0xhYmVsIiwiX2QiLCJjdXN0b21NZXNzYWdlIiwiX2UiLCJEcm9wem9uZUZvb3RlckxvY2FsaXplciIsImFjY2VwQ3VzdG9tTWVzc2VuZ2VyIiwiYm9yZGVyQm90b21MZWZ0UmFkaXVzIiwiYm9yZGVyQm90b21SaWdodFJhZGl1cyIsImZyb21VcHBlckNhc2VUb0h5cGhlbiIsInJ1bGVMYWJlbCIsImNoYXJhY3RlciIsImNoYXJVcHBlciIsImlzdXBwZXIiLCJjdXJyZW50Q2hhciIsInBhcnRzIiwibWFrZVJhd1J1bGVMYWJlbCIsInNwbGl0ZWRDbGFzc05hbWUiLCJ0b1Jhd1N0eWxlU2hlZXQiLCJzaGVldFJ1bGVzIiwicmF3U3R5bGVTaGVldCIsIm5lc3RlZFBzZXVkb3MiLCJqIiwiY3Vycm5ldFJhd1J1bGUiLCJjdXJyZW50UnVsZSIsInJ1bGVza2V5cyIsInJ1bGVzIiwic3R5bGVMYWJlbCIsImN1cnJlbnRLZXkiLCJwc2V1ZG9DbGFzc05hbWUiLCJzdHlsZVJ1bGUiLCJpbnNlcnRTdHlsZVNoZWV0IiwiZHluYW1pY1NoZWV0IiwicmVzdWx0X2lkIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXRSYXciLCJyYXciLCJlZGl0U3R5bGVTaGVldCIsInJlbW92ZVN0eWxlU2hlZXQiLCJodG1sT2JqZWN0IiwiZXhpc3RTdHlsZVNoZWV0IiwibWFrZVN0eWxlU2hlZXQiLCJNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlciIsIm5leHRCdXR0b25DbGFzc05hbWVOdW1iZXIiLCJtYWtlRHluYW1pY1N0eWxlIiwiaWRDbGFzc05hbWUiLCJ0ZXh0Q29sb3IiLCJ0ZXh0RGVjb3JhdGlvbiIsImJvcmRlciIsIkZpbGVzVWlDb250ZXh0IiwiTWF0ZXJpYWxCdXR0b24iLCJ0ZXh0VHJhbnNmb3JtIiwiZGlzYWJsZVJpcHBsZSIsImRhcmtNb2RlUHJvcCIsImRhcmtNb2RlIiwiZGFya01vZGVDb250ZXh0IiwibWF0ZXJpYWxCdXR0b25DbGFzc05hbWUiLCJpZFN0eWxlcyIsInNldElkU3R5bGVzIiwic3R5bGVJbmplY3RlZCIsInNldFN0eWxlSW5qZWN0ZWQiLCJzZXRGaW5hbENsYXNzTmFtZSIsImlkU3R5bGUiLCJmaW5hbFRleHREZWNvcmF0aW9uIiwiaGFuZGxlSW5zZXJTdHlsZSIsInJlbW92ZVN0eWxlIiwidXNlTWF0ZXJpYWxCdXR0b25DbGFzc05hbWUiLCJmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGUiLCJidXR0b25BbmNob3JEaXYiLCJjaXJjbGUiLCJkaWFtZXRlciIsImNyZWF0ZVJpcHBsZUJ1dHRvbiIsIkRyb3B6b25lQnV0dG9ucyIsImNsZWFuQnV0dG9uIiwiYWJvcnRCdXR0b24iLCJjb250YWluZXJDbGFzc05hbWUiLCJjb250YWluZXJTdHlsZSIsImRlbGV0ZUJ1dHRvbiIsInVwbG9hZEJ1dHRvbiIsIm9uQWJvcnQiLCJvbkRlbGV0ZSIsIm9uVXBsb2FkIiwiYWN0aW9uQnV0dG9uc0xpc3QiLCJ0YWlsQ2xhc3NOYW1lIiwiYWN0aW9uQnV0dG9uUHJvcHMiLCJEcm9wTGF5ZXIiLCJvbkRyYWdMZWF2ZSIsImNsYXNzTmFtZUxheWVyIiwibWFrZUR5bmFtaWNEcm9wem9uZVN0eWxlU2hlZXQiLCJiYWNrZ3JvdW5kIiwibWluSGVpZ2h0IiwiYm9yZGVyQ29sb3IiLCJib3JkZXJUb3AiLCJ1c2VGaWxlTW9zYWljSW5pdGlhbGl6ZXIiLCJwcmV2aWV3IiwiY3VzdG9tSWNvbnMiLCJpc0ltYWdlIiwic2V0SXNJbWFnZSIsImlzVmlkZW8iLCJzZXRJc1ZpZGVvIiwic2V0VXJsIiwic2V0SW1hZ2VTb3VyY2UiLCJ2aWRlb1NvdXJjZSIsInNldFZpZGVvU291cmNlIiwiX2YiLCJpc1JlYWR5Iiwic2V0SXNSZWFkeSIsInJlc3BvbnNlXzEiLCJtaW1lUmVzdW1lIiwiZXh0ZW50aW9uIiwiY3VzdG9tVXJsIiwiZ2V0VVJMRmlsZUljbyIsImdldFVSTEZpbGVJY29Gcm9tTmFtZUFuZFR5cGUiLCJnZXRIZWFkZXJBbmRUYWlsIiwiaW5pdCIsInNwbGl0dGVkVHlwZSIsIkRyb3B6b25lIiwiY2xlYW5GaWxlcyIsImF1dG9DbGVhbiIsImZha2VVcGxvYWQiLCJvblVwbG9hZEZpbmlzaCIsImxvY1Byb3BzIiwib25EcmFnRW50ZXIiLCJoZWFkZXJDb25maWciLCJmb290ZXJDb25maWciLCJsb2NDb250ZXh0IiwiX2ciLCJfaCIsImF1dG9VcGxvYWQiLCJfaiIsImFjdGlvbkJ1dHRvbnNQb3NpdGlvbiIsInN0eWxlQm9yZGVyUmFkaXVzIiwiY2xlYW5GaWxlc0hlYWRlciIsIl9sIiwiZGVsZXRlRmlsZXMiLCJkZWxldGVGaWxlc0hlYWRlciIsIl9tIiwibWF4RmlsZVNpemVIZWFkZXIiLCJfbyIsInVwbG9hZEZpbGVzIiwidXBsb2FkRmlsZXNIZWFkZXIiLCJfcCIsInVwbG9hZGluZ0ljb24iLCJ1cGxvYWRpbmdJY29uSGVkYWVyIiwiX3EiLCJ2YWxpZEZpbGVzQ291bnQiLCJ2YWxpZEZpbGVzQ291bnRIZWFkZXIiLCJjdXN0b21IZWFkZXIiLCJjbGFzc05hbWVIZWFkZXIiLCJfciIsInJlc2V0U3R5bGVzSGVhZGVyIiwic3R5bGVIZWFkZXIiLCJjdXN0b21Gb290ZXIiLCJfcyIsIm5vTWlzc2luZ0ZpbGVzTGFiZWwiLCJfdCIsInVwbG9hZFByb2dyZXNzTWVzc2FnZSIsIl91IiwidXBsb2FkUmVzdWx0TWVzc2FnZSIsImZ1aVJpcHBsZVJlZkFicyIsImZ1aVJpcHBsZVJlZlJlbCIsIl92IiwiaXNEcmFnZ2luZyIsInNldElzRHJhZ2dpbmciLCJfdyIsInNldElzVXBsb2FkaW5nIiwiX3giLCJsb2NhbE1lc3NhZ2UiLCJzZXRMb2NhbE1lc3NhZ2UiLCJ2YWxpZGF0ZUZpbGVzRmxhZyIsImlzVmFsaWRhdGVBY3RpdmUiLCJfeSIsInNldExvY2FsRmlsZXMiLCJzZXROdW1iZXJPZlZhbGlkRmlsZXMiLCJhcnJPZkV4dEZpbGVzIiwiZXh0RmlsZUluZGV4IiwiZmluZEluZGV4IiwiY3VyckV4dEZpbGVPYmoiLCJleHRGaWxlb2JqIiwicHJldlN0YXR1cyIsIm5leHRTdHN0YXVzIiwic2V0TmV4dFVwbG9hZFN0YXR1cyIsInZhbGlkYXRlZEV4dEZpbGVMaXN0IiwidXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIiLCJ1cGxvYWRmaWxlcyIsImFyck9mRXh0RmlsZXNJbnN0YW5jZXMiLCJ0b3RhbE51bWJlciIsIm1pc3NpbmdVcGxvYWQiLCJ0b3RhbFJlamVjdGVkIiwiY3VycmVudENvdW50VXBsb2FkIiwidXBsb2FkaW5nTWVzc2VuZ2VyIiwibmV3RXh0RmlsZUxvY2FsIiwic2VydmVyUmVzcG9uc2VzIiwiY3VycmVudEV4dEZpbGVJbnN0YW5jZSIsInVwbG9hZFJlc3BvbnNlIiwiZmFrZVByb2dyZXNzIiwidXBsb2FkZWRGaWxlIiwiZmluaXNoVXBsb2FkTWVzc2VuZ2VyIiwiaXNVcGxvYWRBYmxlRXh0RmlsZSIsImhhbmRsZUZpbGVzQ2hhbmdlIiwidW5leHBlY3RlZEVycm9yVXBsb2FkUmVzdWx0IiwiaGFuZGxlQWJvcnRVcGxvYWQiLCJsaXN0RXh0RmlsZUxvY2FsIiwiYWJvcnQiLCJfeiIsImZpbmFsRHJvcHpvbmVJZCIsImZpbmFsQ2xhc3NOYW1lSGVhZGVyIiwic2V0RmluYWxDbGFzc05hbWVIZWFkZXIiLCJmaW5hbENsYXNzTmFtZUZvb3RlciIsInNldEZpbmFsQ2xhc3NOYW1lRm9vdGVyIiwiZmluYWxDbGFzc05hbWVEaXNhYmxlZCIsInNldEZpbmFsQ2xhc3NOYW1lRGlzYWJsZWQiLCJtYWtlQ2xhc3NOYW1lIiwidXNlRHJvcHpvbmVDbGFzc05hbWUiLCJkcm9wem9uZUNsYXNzTmFtZSIsImhlYWRlckNsYXNzTmFtZSIsImZvb3RlckNsYXNzTmFtZSIsImRpc2FibGVkTGF5ZXJDbGFzc05hbWUiLCJkcm9wTGF5ZXJDbGFzc05hbWUiLCJjbGFzc05hbWVDcmVhdGVkIiwic2V0Q2xhc3NOYW1lQ3JlYXRlZCIsImJvcmRlcldpZHRoIiwibWFrZURyb3BMYXllckR5bmFtaWNTdHlsZSIsInVzZURyb3BMYXllckNsYXNzTmFtZSIsInZhbGlkYXRlZEZ1aUZpbGVMaXN0IiwiZmluYWxFeHRGaWxlTGlzdCIsIm91dGVyRnVpVmFsaWRhdGlvbiIsImZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSIsImZpbmFsTnVtYmVyT2ZWYWxpZHMiLCJoYW5kbGVEcmFnTGVhdmUiLCJtYWtlUmlwcGxlIiwiZnVpQ29udGFpbmVyQWJzIiwiZnVpQ29udGFpbmVyUmVsIiwiY3JlYXRlRnVpUmlwcGxlRnJvbURpdiIsImthbXVpIiwiZXh0RmlsZUxpc3RPdXRwdXQiLCJmaWxlcyIsImhhbmRsZVJlc2V0IiwiZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlciIsImZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJDbGlja2FibGUiLCJCYXNlUHJlcGFyaW5nTG9hZGVyIiwicmFkaXVzIiwiZmluYWxSYWRpdXMiLCJmaW5hbFgiLCJmaW5hbFkiLCJ4bWxuc1hsaW5rIiwicHJlc2VydmVBc3BlY3RSYXRpbyIsImN4IiwiY3kiLCJzdHJva2UiLCJyZXBlYXRDb3VudCIsImR1ciIsImtleVRpbWVzIiwiTG9hZGVyQ29udGFpbmVyIiwiSW5maW5pdGVMb2FkZXIiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJMYXllciIsInZpc2libGUiLCJvdGhlclByb3BzIiwiSW1hZ2VQcmV2aWV3RGVmYXVsdFByb3BzIiwiYWx0Iiwic21hcnRJbWdGaXQiLCJJbWFnZVByZXZpZXciLCJmaW5hbEhlaWdodCIsImZpbmFsV2lkdGgiLCJzZXRmaW5hbERpbWVuc2lvbnMiLCJzZXRTb3VyY2UiLCJoYW5kbGVTZXRTdHJTb3VyY2UiLCJuZXdJbWFnZVNyYyIsImdldFNvdXJjZSIsIkFib3J0ZWRTdGF0dXMiLCJGaWxlSXRlbVN0YXR1c0xvY2FsaXplciIsIkVtcHR5U3RhdHVzIiwiRXJyb3JTdGF0dXMiLCJQcmVwYXJpbmdTdGF0dXMiLCJvbkNhbmNlbCIsIlN1Y2Nlc3NTdGF0dXMiLCJEeW5hbWljTG9hZGVyIiwiaGlkZVBlcm5jZW50YWdlIiwiY2lyY2xlUmVmIiwibXlDaXJjbGUiLCJjaXJjdW1mZXJlbmNlIiwiUEkiLCJwZXJjZW50Iiwic2V0UHJvZ3Jlc3MiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJVcGxvYWRpbmdTdGF0dXMiLCJUb29sdGlwIiwic3RhdHVzQ2xhc3NOYW1lIiwic2V0U2F0dXNDbGFzc05hbWUiLCJzZXRNZXNzYWdlIiwiYWN1bSIsImN1cnIiLCJoYW5kbGVDaGFuZ2VTdGF0dXMiLCJEb3dubG9hZEhpZGRlbiIsImFuY2hvclJlZiIsImRvd25sb2FkIiwiaGlkZGVuIiwiTGF5ZXJDb250YWluZXIiLCJGaWxlTW9zYWljTmFtZSIsIkZpbGVNb3NhaWNVcGxvYWRMYXllciIsImVsZXZhdGlvbkNvbnRhaW5lclJlZiIsImxpc3RDb250YWluZXJTdG9yeVJlZiIsInN0YXR1c0hpc3RvcnkiLCJzZXRTdGF0dXNIaXN0b3J5IiwidGVtcFN0YXR1c0hpc3RvcnkiLCJjdXJyZW50RWxldmF0aW9uQ29udGFpbmVyIiwiY3VycmVudEVsZXZhdGlvbkxpc3QiLCJGaWxlTW9zYWljSW1hZ2VMYXllciIsImNhcmQiLCJpc0JsdXIiLCJsb2NhbFNvdXJjZSIsInNldExvY2FsU291cmNlIiwic2V0RXJyb3IiLCJGaWxlTW9zYWljU3RhdHVzIiwiRmlsZU1vc2FpY0luZm9MYXllciIsIm9uQ2xvc2VJbmZvIiwibG9jYWxOYW1lIiwic2l6ZUZvcm1hdHRlZCIsImxvY2FsVHlwZSIsIm5hbWVMYWJlbCIsInNpemVMYWJlbCIsInR5cGVMYWJlbCIsIkZpbGVNb3NhaWNTaXplIiwiRmlsZU1vc2FpY01haW5MYXllciIsImRlbGV0ZUljb24iLCJkb3dubG9hZEljb24iLCJpbWFnZUljb24iLCJpbmZvSWNvbiIsIm9uRG93bmxvYWQiLCJvbk9wZW5JbmZvIiwib25TZWUiLCJvbldhdGNoIiwidmlkZW9JY29uIiwiRmlsZU1vc2FpYyIsInByb3BTaXplIiwicHJvcFR5cGUiLCJpbmZvIiwiYmFja2dyb3VuZEJsdXJJbWFnZSIsImFsd2F5c0FjdGl2ZSIsInJlc3VsdE9uVG9vbHRpcCIsIm9uRG91YmxlQ2xpY2siLCJvblJpZ2h0Q2xpY2siLCJkb3dubG9hZFJlZiIsImZpbGVNb3NhaWNGaWxlTmFtZUNsYXNzTmFtZSIsImxvY2FsRmlsZU5hbWUiLCJsb2NhbEZpbGVUeXBlIiwibG9jYWxGaWxlU2l6ZSIsImdldExvY2FsRmlsZUl0ZW1EYXRhIiwibG9jYWxTaXplIiwibG9jYWxQcm9ncmVzcyIsInNldExvY2FsUHJvZ3Jlc3MiLCJsb2FkZWQiLCJ0b3RhbCIsInVzZVByb2dyZXNzIiwic2hvd0luZm8iLCJzZXRTaG93SW5mbyIsImhvdmVyaW5nIiwic2V0SG92ZXJpbmciLCJoYW5kbGVDbG9zZUluZm8iLCJsYXN0VXBsb2FkU3RhdHVzIiwic2V0TGFzdFVwbG9hZFN0YXR1cyIsInVzZUlzVXBsb2FkaW5nIiwib25Db250ZXh0TWVudSIsImFuY2hvckVsZW1lbnQiLCJTaW5nbGVOZXdEaXIiLCJlZGl0Iiwic2V0TmV3RGlyIiwiX25hbWUiLCJzZXROYW1lIiwiZGlycyIsInBhZGRpbmdSaWdodCIsIk5ld0RpcnMiLCJzZXREaXJlY3RvcnkiLCJuZXdEaXJzIiwic2V0TmV3RGlycyIsInNldFNpbmdsZU5ld0RpciIsIl9uZXdEaXJzIiwiYWRkRGlyIiwibmV3RGlyIiwiRGlyZWN0b3J5RmllbGQiLCJkaXJlY3RvcnlCYXNlIiwiX2xhYmVsIiwiU2VsZWN0IiwiUmVjb3JkVHlwZUZpZWxkIiwiX3JlYWRPbmx5IiwiYWxsIiwicmVzb2x2ZWQiLCJyZW1vdmVGaWxlIiwiRmlsZVVwbG9hZEZhaWxlZCIsIkZpbGVVcGxvYWRTdWNjZXNzIiwiU2luZ2xlRmlsZVJlc3BvbnNlIiwiZGlyZWN0b3J5IiwicmVzcG9uc2VFcnJvcnMiLCJwYXRoIiwiaGFuZGxlUmVzcG9uc2UiLCJoYXNFcnJvcnMiLCJuZXdGaWxlcyIsInRvRGlyZWN0b3J5QXJyYXkiLCJGaWxlVXBsb2FkIiwicmVjb3JkVHlwZVNob3ciLCJyZWNvcmRUeXBlcyIsImRpcmVjdG9yeVJlYWRPbmx5IiwiZGlyZWN0b3J5U2hvdyIsIm9uRmluaXNoIiwiX2ZpbGVzIiwic2V0RmlsZXMiLCJfZGlyZWN0b3J5IiwiX3JlY29yZFR5cGUiLCJzZXRSZWNvcmRUeXBlIiwiX3N0YXRlIiwiX3Jlc3VsdHMiLCJzZXRSZXN1bHRzIiwiY29tcGxldGVTdGF0ZSIsInJlc3VsdHMiLCJ1cGRhdGVGaWxlcyIsImluY29tbWluZ0ZpbGVzIiwidXBkYXRlUmVjb3JkVHlwZSIsIm1pbldpZHRoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///787\n')},818:module=>{eval('!function(e,t){ true?module.exports=t():0}(self,(function(){return(()=>{var __webpack_modules__={661:(e,t,o)=>{var r={};r.v1=o(958),t.h=r},958:(e,t,o)=>{var r={};r.web=o(40);var n={caosdb:{}};n.caosdb.info={},n.caosdb.info.v1=o(988),n.caosdb.info.v1.GeneralInfoServiceClient=function(e,t,o){o||(o={}),o.format="text",this.client_=new r.web.GrpcWebClientBase(o),this.hostname_=e},n.caosdb.info.v1.GeneralInfoServicePromiseClient=function(e,t,o){o||(o={}),o.format="text",this.client_=new r.web.GrpcWebClientBase(o),this.hostname_=e};var s=new r.web.MethodDescriptor("/caosdb.info.v1.GeneralInfoService/GetVersionInfo",r.web.MethodType.UNARY,n.caosdb.info.v1.GetVersionInfoRequest,n.caosdb.info.v1.GetVersionInfoResponse,(function(e){return e.serializeBinary()}),n.caosdb.info.v1.GetVersionInfoResponse.deserializeBinary);n.caosdb.info.v1.GeneralInfoServiceClient.prototype.getVersionInfo=function(e,t,o){return this.client_.rpcCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetVersionInfo",e,t||{},s,o)},n.caosdb.info.v1.GeneralInfoServicePromiseClient.prototype.getVersionInfo=function(e,t){return this.client_.unaryCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetVersionInfo",e,t||{},s)};var i=new r.web.MethodDescriptor("/caosdb.info.v1.GeneralInfoService/GetSessionInfo",r.web.MethodType.UNARY,n.caosdb.info.v1.GetSessionInfoRequest,n.caosdb.info.v1.GetSessionInfoResponse,(function(e){return e.serializeBinary()}),n.caosdb.info.v1.GetSessionInfoResponse.deserializeBinary);n.caosdb.info.v1.GeneralInfoServiceClient.prototype.getSessionInfo=function(e,t,o){return this.client_.rpcCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetSessionInfo",e,t||{},i,o)},n.caosdb.info.v1.GeneralInfoServicePromiseClient.prototype.getSessionInfo=function(e,t){return this.client_.unaryCall(this.hostname_+"/caosdb.info.v1.GeneralInfoService/GetSessionInfo",e,t||{},i)},e.exports=n.caosdb.info.v1},988:(e,t,o)=>{var r=o(19),n=r,s=Function("return this")();n.exportSymbol("proto.caosdb.info.v1.GetSessionInfoRequest",null,s),n.exportSymbol("proto.caosdb.info.v1.GetSessionInfoResponse",null,s),n.exportSymbol("proto.caosdb.info.v1.GetVersionInfoRequest",null,s),n.exportSymbol("proto.caosdb.info.v1.GetVersionInfoResponse",null,s),n.exportSymbol("proto.caosdb.info.v1.VersionInfo",null,s),proto.caosdb.info.v1.VersionInfo=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.VersionInfo,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.VersionInfo.displayName="proto.caosdb.info.v1.VersionInfo"),proto.caosdb.info.v1.GetVersionInfoRequest=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetVersionInfoRequest,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetVersionInfoRequest.displayName="proto.caosdb.info.v1.GetVersionInfoRequest"),proto.caosdb.info.v1.GetVersionInfoResponse=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetVersionInfoResponse,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetVersionInfoResponse.displayName="proto.caosdb.info.v1.GetVersionInfoResponse"),proto.caosdb.info.v1.GetSessionInfoRequest=function(e){r.Message.initialize(this,e,0,-1,null,null)},n.inherits(proto.caosdb.info.v1.GetSessionInfoRequest,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetSessionInfoRequest.displayName="proto.caosdb.info.v1.GetSessionInfoRequest"),proto.caosdb.info.v1.GetSessionInfoResponse=function(e){r.Message.initialize(this,e,0,-1,proto.caosdb.info.v1.GetSessionInfoResponse.repeatedFields_,null)},n.inherits(proto.caosdb.info.v1.GetSessionInfoResponse,r.Message),n.DEBUG&&!COMPILED&&(proto.caosdb.info.v1.GetSessionInfoResponse.displayName="proto.caosdb.info.v1.GetSessionInfoResponse"),r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.VersionInfo.prototype.toObject=function(e){return proto.caosdb.info.v1.VersionInfo.toObject(e,this)},proto.caosdb.info.v1.VersionInfo.toObject=function(e,t){var o={major:r.Message.getFieldWithDefault(t,1,0),minor:r.Message.getFieldWithDefault(t,2,0),patch:r.Message.getFieldWithDefault(t,3,0),preRelease:r.Message.getFieldWithDefault(t,4,""),build:r.Message.getFieldWithDefault(t,5,"")};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.VersionInfo.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.VersionInfo;return proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)switch(t.getFieldNumber()){case 1:var o=t.readInt32();e.setMajor(o);break;case 2:o=t.readInt32(),e.setMinor(o);break;case 3:o=t.readInt32(),e.setPatch(o);break;case 4:o=t.readString(),e.setPreRelease(o);break;case 5:o=t.readString(),e.setBuild(o);break;default:t.skipField()}return e},proto.caosdb.info.v1.VersionInfo.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter=function(e,t){var o=void 0;0!==(o=e.getMajor())&&t.writeInt32(1,o),0!==(o=e.getMinor())&&t.writeInt32(2,o),0!==(o=e.getPatch())&&t.writeInt32(3,o),(o=e.getPreRelease()).length>0&&t.writeString(4,o),(o=e.getBuild()).length>0&&t.writeString(5,o)},proto.caosdb.info.v1.VersionInfo.prototype.getMajor=function(){return r.Message.getFieldWithDefault(this,1,0)},proto.caosdb.info.v1.VersionInfo.prototype.setMajor=function(e){return r.Message.setProto3IntField(this,1,e)},proto.caosdb.info.v1.VersionInfo.prototype.getMinor=function(){return r.Message.getFieldWithDefault(this,2,0)},proto.caosdb.info.v1.VersionInfo.prototype.setMinor=function(e){return r.Message.setProto3IntField(this,2,e)},proto.caosdb.info.v1.VersionInfo.prototype.getPatch=function(){return r.Message.getFieldWithDefault(this,3,0)},proto.caosdb.info.v1.VersionInfo.prototype.setPatch=function(e){return r.Message.setProto3IntField(this,3,e)},proto.caosdb.info.v1.VersionInfo.prototype.getPreRelease=function(){return r.Message.getFieldWithDefault(this,4,"")},proto.caosdb.info.v1.VersionInfo.prototype.setPreRelease=function(e){return r.Message.setProto3StringField(this,4,e)},proto.caosdb.info.v1.VersionInfo.prototype.getBuild=function(){return r.Message.getFieldWithDefault(this,5,"")},proto.caosdb.info.v1.VersionInfo.prototype.setBuild=function(e){return r.Message.setProto3StringField(this,5,e)},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetVersionInfoRequest.prototype.toObject=function(e){return proto.caosdb.info.v1.GetVersionInfoRequest.toObject(e,this)},proto.caosdb.info.v1.GetVersionInfoRequest.toObject=function(e,t){var o={};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetVersionInfoRequest;return proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetVersionInfoRequest.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)t.getFieldNumber(),t.skipField();return e},proto.caosdb.info.v1.GetVersionInfoRequest.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetVersionInfoRequest.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetVersionInfoRequest.serializeBinaryToWriter=function(e,t){},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetVersionInfoResponse.prototype.toObject=function(e){return proto.caosdb.info.v1.GetVersionInfoResponse.toObject(e,this)},proto.caosdb.info.v1.GetVersionInfoResponse.toObject=function(e,t){var o,r={versionInfo:(o=t.getVersionInfo())&&proto.caosdb.info.v1.VersionInfo.toObject(e,o)};return e&&(r.$jspbMessageInstance=t),r}),proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetVersionInfoResponse;return proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetVersionInfoResponse.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)if(1===t.getFieldNumber()){var o=new proto.caosdb.info.v1.VersionInfo;t.readMessage(o,proto.caosdb.info.v1.VersionInfo.deserializeBinaryFromReader),e.setVersionInfo(o)}else t.skipField();return e},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetVersionInfoResponse.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetVersionInfoResponse.serializeBinaryToWriter=function(e,t){var o;null!=(o=e.getVersionInfo())&&t.writeMessage(1,o,proto.caosdb.info.v1.VersionInfo.serializeBinaryToWriter)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.getVersionInfo=function(){return r.Message.getWrapperField(this,proto.caosdb.info.v1.VersionInfo,1)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.setVersionInfo=function(e){return r.Message.setWrapperField(this,1,e)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.clearVersionInfo=function(){return this.setVersionInfo(void 0)},proto.caosdb.info.v1.GetVersionInfoResponse.prototype.hasVersionInfo=function(){return null!=r.Message.getField(this,1)},r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetSessionInfoRequest.prototype.toObject=function(e){return proto.caosdb.info.v1.GetSessionInfoRequest.toObject(e,this)},proto.caosdb.info.v1.GetSessionInfoRequest.toObject=function(e,t){var o={};return e&&(o.$jspbMessageInstance=t),o}),proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetSessionInfoRequest;return proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetSessionInfoRequest.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)t.getFieldNumber(),t.skipField();return e},proto.caosdb.info.v1.GetSessionInfoRequest.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetSessionInfoRequest.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetSessionInfoRequest.serializeBinaryToWriter=function(e,t){},proto.caosdb.info.v1.GetSessionInfoResponse.repeatedFields_=[3,5],r.Message.GENERATE_TO_OBJECT&&(proto.caosdb.info.v1.GetSessionInfoResponse.prototype.toObject=function(e){return proto.caosdb.info.v1.GetSessionInfoResponse.toObject(e,this)},proto.caosdb.info.v1.GetSessionInfoResponse.toObject=function(e,t){var o,n={realm:r.Message.getFieldWithDefault(t,1,""),username:r.Message.getFieldWithDefault(t,2,""),rolesList:null==(o=r.Message.getRepeatedField(t,3))?void 0:o,expires:r.Message.getFieldWithDefault(t,4,0),permissionsList:null==(o=r.Message.getRepeatedField(t,5))?void 0:o};return e&&(n.$jspbMessageInstance=t),n}),proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinary=function(e){var t=new r.BinaryReader(e),o=new proto.caosdb.info.v1.GetSessionInfoResponse;return proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinaryFromReader(o,t)},proto.caosdb.info.v1.GetSessionInfoResponse.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();)switch(t.getFieldNumber()){case 1:var o=t.readString();e.setRealm(o);break;case 2:o=t.readString(),e.setUsername(o);break;case 3:o=t.readString(),e.addRoles(o);break;case 4:o=t.readInt64(),e.setExpires(o);break;case 5:o=t.readString(),e.addPermissions(o);break;default:t.skipField()}return e},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.serializeBinary=function(){var e=new r.BinaryWriter;return proto.caosdb.info.v1.GetSessionInfoResponse.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.caosdb.info.v1.GetSessionInfoResponse.serializeBinaryToWriter=function(e,t){var o=void 0;(o=e.getRealm()).length>0&&t.writeString(1,o),(o=e.getUsername()).length>0&&t.writeString(2,o),(o=e.getRolesList()).length>0&&t.writeRepeatedString(3,o),0!==(o=e.getExpires())&&t.writeInt64(4,o),(o=e.getPermissionsList()).length>0&&t.writeRepeatedString(5,o)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getRealm=function(){return r.Message.getFieldWithDefault(this,1,"")},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setRealm=function(e){return r.Message.setProto3StringField(this,1,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getUsername=function(){return r.Message.getFieldWithDefault(this,2,"")},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setUsername=function(e){return r.Message.setProto3StringField(this,2,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getRolesList=function(){return r.Message.getRepeatedField(this,3)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setRolesList=function(e){return r.Message.setField(this,3,e||[])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.addRoles=function(e,t){return r.Message.addToRepeatedField(this,3,e,t)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.clearRolesList=function(){return this.setRolesList([])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getExpires=function(){return r.Message.getFieldWithDefault(this,4,0)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setExpires=function(e){return r.Message.setProto3IntField(this,4,e)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.getPermissionsList=function(){return r.Message.getRepeatedField(this,5)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.setPermissionsList=function(e){return r.Message.setField(this,5,e||[])},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.addPermissions=function(e,t){return r.Message.addToRepeatedField(this,5,e,t)},proto.caosdb.info.v1.GetSessionInfoResponse.prototype.clearPermissionsList=function(){return this.setPermissionsList([])},n.object.extend(t,proto.caosdb.info.v1)},19:function(__unused_webpack_module,exports,__nested_webpack_require_14101__){var $jscomp=$jscomp||{};$jscomp.scope={},$jscomp.findInternal=function(e,t,o){e instanceof String&&(e=String(e));for(var r=e.length,n=0;n<r;n++){var s=e[n];if(t.call(o,s,n,e))return{i:n,v:s}}return{i:-1,v:void 0}},$jscomp.ASSUME_ES5=!1,$jscomp.ASSUME_NO_NATIVE_MAP=!1,$jscomp.ASSUME_NO_NATIVE_SET=!1,$jscomp.SIMPLE_FROUND_POLYFILL=!1,$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,o){e!=Array.prototype&&e!=Object.prototype&&(e[t]=o.value)},$jscomp.getGlobal=function(e){return"undefined"!=typeof window&&window===e?e:void 0!==__nested_webpack_require_14101__.g&&null!=__nested_webpack_require_14101__.g?__nested_webpack_require_14101__.g:e},$jscomp.global=$jscomp.getGlobal(this),$jscomp.polyfill=function(e,t,o,r){if(t){for(o=$jscomp.global,e=e.split("."),r=0;r<e.length-1;r++){var n=e[r];n in o||(o[n]={}),o=o[n]}(t=t(r=o[e=e[e.length-1]]))!=r&&null!=t&&$jscomp.defineProperty(o,e,{configurable:!0,writable:!0,value:t})}},$jscomp.polyfill("Array.prototype.findIndex",(function(e){return e||function(e,t){return $jscomp.findInternal(this,e,t).i}}),"es6","es3"),$jscomp.checkStringArgs=function(e,t,o){if(null==e)throw new TypeError("The \'this\' value for String.prototype."+o+" must not be null or undefined");if(t instanceof RegExp)throw new TypeError("First argument to String.prototype."+o+" must not be a regular expression");return e+""},$jscomp.polyfill("String.prototype.endsWith",(function(e){return e||function(e,t){var o=$jscomp.checkStringArgs(this,e,"endsWith");e+="",void 0===t&&(t=o.length),t=Math.max(0,Math.min(0|t,o.length));for(var r=e.length;0<r&&0<t;)if(o[--t]!=e[--r])return!1;return 0>=r}}),"es6","es3"),$jscomp.polyfill("Array.prototype.find",(function(e){return e||function(e,t){return $jscomp.findInternal(this,e,t).v}}),"es6","es3"),$jscomp.polyfill("String.prototype.startsWith",(function(e){return e||function(e,t){var o=$jscomp.checkStringArgs(this,e,"startsWith");e+="";var r=o.length,n=e.length;t=Math.max(0,Math.min(0|t,o.length));for(var s=0;s<n&&t<r;)if(o[t++]!=e[s++])return!1;return s>=n}}),"es6","es3"),$jscomp.polyfill("String.prototype.repeat",(function(e){return e||function(e){var t=$jscomp.checkStringArgs(this,null,"repeat");if(0>e||1342177279<e)throw new RangeError("Invalid count value");e|=0;for(var o="";e;)1&e&&(o+=t),(e>>>=1)&&(t+=t);return o}}),"es6","es3");var COMPILED=!0,goog=goog||{};goog.global=this||self,goog.isDef=function(e){return void 0!==e},goog.isString=function(e){return"string"==typeof e},goog.isBoolean=function(e){return"boolean"==typeof e},goog.isNumber=function(e){return"number"==typeof e},goog.exportPath_=function(e,t,o){e=e.split("."),o=o||goog.global,e[0]in o||void 0===o.execScript||o.execScript("var "+e[0]);for(var r;e.length&&(r=e.shift());)!e.length&&goog.isDef(t)?o[r]=t:o=o[r]&&o[r]!==Object.prototype[r]?o[r]:o[r]={}},goog.define=function(e,t){if(!COMPILED){var o=goog.global.CLOSURE_UNCOMPILED_DEFINES,r=goog.global.CLOSURE_DEFINES;o&&void 0===o.nodeType&&Object.prototype.hasOwnProperty.call(o,e)?t=o[e]:r&&void 0===r.nodeType&&Object.prototype.hasOwnProperty.call(r,e)&&(t=r[e])}return t},goog.FEATURESET_YEAR=2012,goog.DEBUG=!0,goog.LOCALE="en",goog.TRUSTED_SITE=!0,goog.STRICT_MODE_COMPATIBLE=!1,goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG,goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1,goog.provide=function(e){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(e))throw Error(\'Namespace "\'+e+\'" already declared.\');goog.constructNamespace_(e)},goog.constructNamespace_=function(e,t){if(!COMPILED){delete goog.implicitNamespaces_[e];for(var o=e;(o=o.substring(0,o.lastIndexOf(".")))&&!goog.getObjectByName(o);)goog.implicitNamespaces_[o]=!0}goog.exportPath_(e,t)},goog.getScriptNonce=function(e){return e&&e!=goog.global?goog.getScriptNonce_(e.document):(null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document)),goog.cspNonce_)},goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/,goog.cspNonce_=null,goog.getScriptNonce_=function(e){return(e=e.querySelector&&e.querySelector("script[nonce]"))&&(e=e.nonce||e.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(e)?e:""},goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/,goog.module=function(e){if(!goog.isString(e)||!e||-1==e.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+e+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");if(goog.moduleLoaderState_.moduleName=e,!COMPILED){if(goog.isProvided_(e))throw Error(\'Namespace "\'+e+\'" already declared.\');delete goog.implicitNamespaces_[e]}},goog.module.get=function(e){return goog.module.getInternal_(e)},goog.module.getInternal_=function(e){if(!COMPILED){if(e in goog.loadedModules_)return goog.loadedModules_[e].exports;if(!goog.implicitNamespaces_[e])return null!=(e=goog.getObjectByName(e))?e:null}return null},goog.ModuleType={ES6:"es6",GOOG:"goog"},goog.moduleLoaderState_=null,goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()},goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG},goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var e=goog.global.$jscomp;return!!e&&"function"==typeof e.getCurrentModulePath&&!!e.getCurrentModulePath()},goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0},goog.declareModuleId=function(e){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(e in goog.loadedModules_)throw Error(\'Module with namespace "\'+e+\'" already exists.\')}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=e;else{var t=goog.global.$jscomp;if(!t||"function"!=typeof t.getCurrentModulePath)throw Error(\'Module with namespace "\'+e+\'" has been loaded incorrectly.\');t=t.require(t.getCurrentModulePath()),goog.loadedModules_[e]={exports:t,type:goog.ModuleType.ES6,moduleId:e}}},goog.setTestOnly=function(e){if(goog.DISALLOW_TEST_ONLY_CODE)throw e=e||"",Error("Importing test-only code into non-debug environment"+(e?": "+e:"."))},goog.forwardDeclare=function(e){},COMPILED||(goog.isProvided_=function(e){return e in goog.loadedModules_||!goog.implicitNamespaces_[e]&&goog.isDefAndNotNull(goog.getObjectByName(e))},goog.implicitNamespaces_={"goog.module":!0}),goog.getObjectByName=function(e,t){e=e.split("."),t=t||goog.global;for(var o=0;o<e.length;o++)if(t=t[e[o]],!goog.isDefAndNotNull(t))return null;return t},goog.globalize=function(e,t){for(var o in t=t||goog.global,e)t[o]=e[o]},goog.addDependency=function(e,t,o,r){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(e,t,o,r)},goog.ENABLE_DEBUG_LOADER=!0,goog.logToConsole_=function(e){goog.global.console&&goog.global.console.error(e)},goog.require=function(e){if(!COMPILED){if(goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(e),goog.isProvided_(e)){if(goog.isInModuleLoader_())return goog.module.getInternal_(e)}else if(goog.ENABLE_DEBUG_LOADER){var t=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(e)}finally{goog.moduleLoaderState_=t}}return null}},goog.requireType=function(e){return{}},goog.basePath="",goog.nullFunction=function(){},goog.abstractMethod=function(){throw Error("unimplemented abstract method")},goog.addSingletonGetter=function(e){e.instance_=void 0,e.getInstance=function(){return e.instance_?e.instance_:(goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=e),e.instance_=new e)}},goog.instantiatedSingletons_=[],goog.LOAD_MODULE_USING_EVAL=!0,goog.SEAL_MODULE_EXPORTS=goog.DEBUG,goog.loadedModules_={},goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER,goog.TRANSPILE="detect",goog.ASSUME_ES_MODULES_TRANSPILED=!1,goog.TRANSPILE_TO_LANGUAGE="",goog.TRANSPILER="transpile.js",goog.hasBadLetScoping=null,goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval(\'"use strict";let x = 1; function f() { return typeof x; };f() == "number";\')}catch(e){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping},goog.workaroundSafari10EvalBug=function(e){return"(function(){"+e+"\\n;})();\\n"},goog.loadModule=function(e){var t=goog.moduleLoaderState_;try{if(goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG},goog.isFunction(e))var o=e.call(void 0,{});else{if(!goog.isString(e))throw Error("Invalid module definition");goog.useSafari10Workaround()&&(e=goog.workaroundSafari10EvalBug(e)),o=goog.loadModuleFromSource_.call(void 0,e)}var r=goog.moduleLoaderState_.moduleName;if(!goog.isString(r)||!r)throw Error(\'Invalid module name "\'+r+\'"\');goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(r,o):goog.SEAL_MODULE_EXPORTS&&Object.seal&&"object"==typeof o&&null!=o&&Object.seal(o),goog.loadedModules_[r]={exports:o,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName}}finally{goog.moduleLoaderState_=t}},goog.loadModuleFromSource_=function(a){return eval(a),{}},goog.normalizePath_=function(e){e=e.split("/");for(var t=0;t<e.length;)"."==e[t]?e.splice(t,1):t&&".."==e[t]&&e[t-1]&&".."!=e[t-1]?e.splice(--t,2):t++;return e.join("/")},goog.loadFileSync_=function(e){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(e);try{var t=new goog.global.XMLHttpRequest;return t.open("get",e,!1),t.send(),0==t.status||200==t.status?t.responseText:null}catch(e){return null}},goog.transpile_=function(e,t,o){var r=goog.global.$jscomp;r||(goog.global.$jscomp=r={});var n=r.transpile;if(!n){var s=goog.basePath+goog.TRANSPILER,i=goog.loadFileSync_(s);if(i){if(function(){(0,eval)(i+"\\n//# sourceURL="+s)}.call(goog.global),goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error(\'The transpiler did not properly export the "transpile" method. $gwtExport: \'+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=goog.global.$gwtExport.$jscomp.transpile,n=(r=goog.global.$jscomp).transpile}}return n||(n=r.transpile=function(e,t){return goog.logToConsole_(t+" requires transpilation but no transpiler was found."),e}),n(e,t,o)},goog.typeOf=function(e){var t=typeof e;if("object"==t){if(!e)return"null";if(e instanceof Array)return"array";if(e instanceof Object)return t;var o=Object.prototype.toString.call(e);if("[object Window]"==o)return"object";if("[object Array]"==o||"number"==typeof e.length&&void 0!==e.splice&&void 0!==e.propertyIsEnumerable&&!e.propertyIsEnumerable("splice"))return"array";if("[object Function]"==o||void 0!==e.call&&void 0!==e.propertyIsEnumerable&&!e.propertyIsEnumerable("call"))return"function"}else if("function"==t&&void 0===e.call)return"object";return t},goog.isNull=function(e){return null===e},goog.isDefAndNotNull=function(e){return null!=e},goog.isArray=function(e){return"array"==goog.typeOf(e)},goog.isArrayLike=function(e){var t=goog.typeOf(e);return"array"==t||"object"==t&&"number"==typeof e.length},goog.isDateLike=function(e){return goog.isObject(e)&&"function"==typeof e.getFullYear},goog.isFunction=function(e){return"function"==goog.typeOf(e)},goog.isObject=function(e){var t=typeof e;return"object"==t&&null!=e||"function"==t},goog.getUid=function(e){return e[goog.UID_PROPERTY_]||(e[goog.UID_PROPERTY_]=++goog.uidCounter_)},goog.hasUid=function(e){return!!e[goog.UID_PROPERTY_]},goog.removeUid=function(e){null!==e&&"removeAttribute"in e&&e.removeAttribute(goog.UID_PROPERTY_);try{delete e[goog.UID_PROPERTY_]}catch(e){}},goog.UID_PROPERTY_="closure_uid_"+(1e9*Math.random()>>>0),goog.uidCounter_=0,goog.getHashCode=goog.getUid,goog.removeHashCode=goog.removeUid,goog.cloneObject=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if("function"==typeof e.clone)return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.cloneObject(e[o]);return t}return e},goog.bindNative_=function(e,t,o){return e.call.apply(e.bind,arguments)},goog.bindJs_=function(e,t,o){if(!e)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var o=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(o,r),e.apply(t,o)}}return function(){return e.apply(t,arguments)}},goog.bind=function(e,t,o){return Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_,goog.bind.apply(null,arguments)},goog.partial=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=o.slice();return t.push.apply(t,arguments),e.apply(this,t)}},goog.mixin=function(e,t){for(var o in t)e[o]=t[o]},goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date},goog.globalEval=function(e){if(goog.global.execScript)goog.global.execScript(e,"JavaScript");else{if(!goog.global.eval)throw Error("goog.globalEval not available");if(null==goog.evalWorksForGlobals_){try{goog.global.eval("var _evalTest_ = 1;")}catch(e){}if(void 0!==goog.global._evalTest_){try{delete goog.global._evalTest_}catch(e){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1}if(goog.evalWorksForGlobals_)goog.global.eval(e);else{var t=goog.global.document,o=t.createElement("SCRIPT");o.type="text/javascript",o.defer=!1,o.appendChild(t.createTextNode(e)),t.head.appendChild(o),t.head.removeChild(o)}}},goog.evalWorksForGlobals_=null,goog.getCssName=function(e,t){if("."==String(e).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+e);var o=function(e){return goog.cssNameMapping_[e]||e},r=function(e){e=e.split("-");for(var t=[],r=0;r<e.length;r++)t.push(o(e[r]));return t.join("-")};return r=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?o:r:function(e){return e},e=t?e+"-"+r(t):r(e),goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(e):e},goog.setCssNameMapping=function(e,t){goog.cssNameMapping_=e,goog.cssNameMappingStyle_=t},!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING),goog.getMsg=function(e,t,o){return o&&o.html&&(e=e.replace(/</g,"<")),t&&(e=e.replace(/\\{\\$([^}]+)}/g,(function(e,o){return null!=t&&o in t?t[o]:e}))),e},goog.getMsgWithFallback=function(e,t){return e},goog.exportSymbol=function(e,t,o){goog.exportPath_(e,t,o)},goog.exportProperty=function(e,t,o){e[t]=o},goog.inherits=function(e,t){function o(){}o.prototype=t.prototype,e.superClass_=t.prototype,e.prototype=new o,e.prototype.constructor=e,e.base=function(e,o,r){for(var n=Array(arguments.length-2),s=2;s<arguments.length;s++)n[s-2]=arguments[s];return t.prototype[o].apply(e,n)}},goog.base=function(e,t,o){var r=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!r)throw Error("arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(void 0!==r.superClass_){for(var n=Array(arguments.length-1),s=1;s<arguments.length;s++)n[s-1]=arguments[s];return r.superClass_.constructor.apply(e,n)}if("string"!=typeof t&&"symbol"!=typeof t)throw Error("method names provided to goog.base must be a string or a symbol");for(n=Array(arguments.length-2),s=2;s<arguments.length;s++)n[s-2]=arguments[s];s=!1;for(var i=e.constructor.prototype;i;i=Object.getPrototypeOf(i))if(i[t]===r)s=!0;else if(s)return i[t].apply(e,n);if(e[t]===r)return e.constructor.prototype[t].apply(e,n);throw Error("goog.base called from a method of one name to a method of a different name")},goog.scope=function(e){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");e.call(goog.global)},COMPILED||(goog.global.COMPILED=COMPILED),goog.defineClass=function(e,t){var o=t.constructor,r=t.statics;return o&&o!=Object.prototype.constructor||(o=function(){throw Error("cannot instantiate an interface (no constructor defined).")}),o=goog.defineClass.createSealingConstructor_(o,e),e&&goog.inherits(o,e),delete t.constructor,delete t.statics,goog.defineClass.applyProperties_(o.prototype,t),null!=r&&(r instanceof Function?r(o):goog.defineClass.applyProperties_(o,r)),o},goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG,goog.defineClass.createSealingConstructor_=function(e,t){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return e;var o=!goog.defineClass.isUnsealable_(t),r=function(){var t=e.apply(this,arguments)||this;return t[goog.UID_PROPERTY_]=t[goog.UID_PROPERTY_],this.constructor===r&&o&&Object.seal instanceof Function&&Object.seal(t),t};return r},goog.defineClass.isUnsealable_=function(e){return e&&e.prototype&&e.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]},goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),goog.defineClass.applyProperties_=function(e,t){for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);for(var r=0;r<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;r++)o=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[r],Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])},goog.tagUnsealableClass=function(e){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(e.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)},goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_="goog_defineClass_legacy_unsealable",!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var e=goog.global.document;return null!=e&&"write"in e},goog.isDocumentLoading_=function(){var e=goog.global.document;return e.attachEvent?"complete"!=e.readyState:"loading"==e.readyState},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH)&&goog.isString(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var e=goog.global.document,t=e.currentScript;for(t=(e=t?[t]:e.getElementsByTagName("SCRIPT")).length-1;0<=t;--t){var o=e[t].src,r=o.lastIndexOf("?");if(r=-1==r?o.length:r,"base.js"==o.substr(r-7,7)){goog.basePath=o.substr(0,r-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null,this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(t,o){e?d[t]=!0:o()?(c=t,d[t]=!1):e=d[t]=!0}function b(a){try{return!!eval(a)}catch(e){return!1}}var c="es3",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"";return a("es5",(function(){return b("[1,].length==1")})),a("es6",(function(){return!f.match(/Edge\\/(\\d+)(\\.\\d)*/i)&&b(\'(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()\')})),a("es7",(function(){return b("2 ** 2 == 4")})),a("es8",(function(){return b("async () => 1, true")})),a("es9",(function(){return b("({...rest} = {}), true")})),a("es_next",(function(){return!1})),{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(e,t){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var o=this.createRequiresTranspilation_();this.requiresTranspilation_=o.map,this.transpilationTarget_=this.transpilationTarget_||o.target}if(e in this.requiresTranspilation_)return!!this.requiresTranspilation_[e]||!(!goog.inHtmlDocument_()||"es6"!=t||"noModule"in goog.global.document.createElement("script"));throw Error("Unknown language mode: "+e)},goog.Transpiler.prototype.transpile=function(e,t){return goog.transpile_(e,t,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(e){return e.replace(/<\\/(SCRIPT)/gi,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={},this.idToPath_={},this.written_={},this.loadingDeps_=[],this.depsToLoad_=[],this.paused_=!1,this.factory_=new goog.DependencyFactory(goog.transpiler_),this.deferredCallbacks_={},this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(e,t){function o(){r&&(goog.global.setTimeout(r,0),r=null)}var r=t;if(e.length){t=[];for(var n=0;n<e.length;n++){var s=this.getPathFromDeps_(e[n]);if(!s)throw Error("Unregonized namespace: "+e[n]);t.push(this.dependencies_[s])}s=goog.require;var i=0;for(n=0;n<e.length;n++)s(e[n]),t[n].onLoad((function(){++i==e.length&&o()}))}else o()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{},!1)),this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(e,t){(e=this.getPathFromDeps_(e))&&(t||this.areDepsLoaded_(this.dependencies_[e].requires))&&(t=this.deferredCallbacks_[e])&&(delete this.deferredCallbacks_[e],t())},goog.DebugLoader_.prototype.setDependencyFactory=function(e){this.factory_=e},goog.DebugLoader_.prototype.load_=function(e){if(!this.getPathFromDeps_(e))throw e="goog.require could not find: "+e,goog.logToConsole_(e),Error(e);var t=this,o=[],r=function(e){var n=t.getPathFromDeps_(e);if(!n)throw Error("Bad dependency path or symbol: "+e);if(!t.written_[n]){for(t.written_[n]=!0,e=t.dependencies_[n],n=0;n<e.requires.length;n++)goog.isProvided_(e.requires[n])||r(e.requires[n]);o.push(e)}};r(e),e=!!this.depsToLoad_.length,this.depsToLoad_=this.depsToLoad_.concat(o),this.paused_||e||this.loadDeps_()},goog.DebugLoader_.prototype.loadDeps_=function(){for(var e=this,t=this.paused_;this.depsToLoad_.length&&!t;)!function(){var o=!1,r=e.depsToLoad_.shift(),n=!1;e.loading_(r);var s={pause:function(){if(o)throw Error("Cannot call pause after the call to load.");t=!0},resume:function(){o?e.resume_():t=!1},loaded:function(){if(n)throw Error("Double call to loaded.");n=!0,e.loaded_(r)},pending:function(){for(var t=[],o=0;o<e.loadingDeps_.length;o++)t.push(e.loadingDeps_[o]);return t},setModuleState:function(e){goog.moduleLoaderState_={type:e,moduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(e,t,o){o&&(goog.loadedModules_[o]={exports:t,type:goog.ModuleType.ES6,moduleId:o||""})},registerGoogModuleExports:function(e,t){goog.loadedModules_[e]={exports:t,type:goog.ModuleType.GOOG,moduleId:e}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(t){if(o)throw Error("Cannot register with defer after the call to load.");e.defer_(r,t)},areDepsLoaded:function(){return e.areDepsLoaded_(r.requires)}};try{r.load(s)}finally{o=!0}}();t&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(e){this.loadingDeps_.push(e)},goog.DebugLoader_.prototype.loaded_=function(e){for(var t=0;t<this.loadingDeps_.length;t++)if(this.loadingDeps_[t]==e){this.loadingDeps_.splice(t,1);break}for(t=0;t<this.deferredQueue_.length;t++)if(this.deferredQueue_[t]==e.path){this.deferredQueue_.splice(t,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);e.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(e){for(var t=0;t<e.length;t++){var o=this.getPathFromDeps_(e[t]);if(!o||!(o in this.deferredCallbacks_)&&!goog.isProvided_(e[t]))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(e){return e in this.idToPath_?this.idToPath_[e]:e in this.dependencies_?e:null},goog.DebugLoader_.prototype.defer_=function(e,t){this.deferredCallbacks_[e.path]=t,this.deferredQueue_.push(e.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(e,t,o){},goog.LoadController.prototype.setModuleState=function(e){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(e){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(e,t,o,r,n){this.path=e,this.relativePath=t,this.provides=o,this.requires=r,this.loadFlags=n,this.loaded_=!1,this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var e=this.path,t=e.indexOf("://");return 0<=t&&0<=(t=(e=e.substring(t+3)).indexOf("/"))&&(e=e.substring(t+1)),e},goog.Dependency.prototype.onLoad=function(e){this.loaded_?e():this.loadCallbacks_.push(e)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var e=this.loadCallbacks_;this.loadCallbacks_=[];for(var t=0;t<e.length;t++)e[t]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(e){var t=Math.random().toString(32);return goog.Dependency.callbackMap_[t]=e,t},goog.Dependency.unregisterCallback_=function(e){delete goog.Dependency.callbackMap_[e]},goog.Dependency.callback_=function(e,t){if(!(e in goog.Dependency.callbackMap_))throw Error("Callback key "+e+" does not exist (was base.js loaded more than once?).");for(var o=goog.Dependency.callbackMap_[e],r=[],n=1;n<arguments.length;n++)r.push(arguments[n]);o.apply(void 0,r)},goog.Dependency.prototype.load=function(e){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?e.loaded():e.pause();else if(goog.inHtmlDocument_()){var t=goog.global.document;if("complete"==t.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path))return void e.loaded();throw Error(\'Cannot write "\'+this.path+\'" after document load\')}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var o=goog.Dependency.registerCallback_((function(t){goog.DebugLoader_.IS_OLD_IE_&&"complete"!=t.readyState||(goog.Dependency.unregisterCallback_(o),e.loaded())})),r=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\' nonce="\'+goog.getScriptNonce()+\'"\':"";r=\'<script src="\'+this.path+\'" \'+(goog.DebugLoader_.IS_OLD_IE_?"onreadystatechange":"onload")+"=\\"goog.Dependency.callback_(\'"+o+\'\\\', this)" type="text/javascript" \'+(goog.Dependency.defer_?"defer":"")+r+"><\\/script>",t.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(r):r)}else{var n=t.createElement("script");n.defer=goog.Dependency.defer_,n.async=!1,n.type="text/javascript",(r=goog.getScriptNonce())&&n.setAttribute("nonce",r),goog.DebugLoader_.IS_OLD_IE_?(e.pause(),n.onreadystatechange=function(){"loaded"!=n.readyState&&"complete"!=n.readyState||(e.loaded(),e.resume())}):n.onload=function(){n.onload=null,e.loaded()},n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path,t.head.appendChild(n)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),e.loaded()):e.pause()},goog.Es6ModuleDependency=function(e,t,o,r,n){goog.Dependency.call(this,e,t,o,r,n)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(e){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?e.loaded():e.pause();else if(goog.inHtmlDocument_()){var t=goog.global.document,o=this;if(goog.isDocumentLoading_()){var r=function(e,o){e=o?\'<script type="module" crossorigin>\'+o+"<\\/script>":\'<script type="module" crossorigin src="\'+e+\'"><\\/script>\',t.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(e):e)};goog.Dependency.defer_=!0}else r=function(e,o){var r=t.createElement("script");r.defer=!0,r.async=!1,r.type="module",r.setAttribute("crossorigin",!0);var n=goog.getScriptNonce();n&&r.setAttribute("nonce",n),o?r.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(o):o:r.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(e):e,t.head.appendChild(r)};var n=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(n),e.setModuleState(goog.ModuleType.ES6)}));r(void 0,\'goog.Dependency.callback_("\'+n+\'")\'),r(this.path,void 0);var s=goog.Dependency.registerCallback_((function(t){goog.Dependency.unregisterCallback_(s),e.registerEs6ModuleExports(o.path,t,goog.moduleLoaderState_.moduleName)}));r(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+s+\'", m)\');var i=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(i),e.clearModuleState(),e.loaded()}));r(void 0,\'goog.Dependency.callback_("\'+i+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),e.pause()},goog.TransformedDependency=function(e,t,o,r,n){goog.Dependency.call(this,e,t,o,r,n),this.contents_=null,this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(e){function t(){r.contents_=goog.loadFileSync_(r.path),r.contents_&&(r.contents_=r.transform(r.contents_),r.contents_&&(r.contents_+="\\n//# sourceURL="+r.path))}function o(){if(r.lazyFetch_&&t(),r.contents_){n&&e.setModuleState(goog.ModuleType.ES6);try{var o=r.contents_;if(r.contents_=null,goog.globalEval(o),n)var s=goog.moduleLoaderState_.moduleName}finally{n&&e.clearModuleState()}n&&goog.global.$jscomp.require.ensure([r.getPathName()],(function(){e.registerEs6ModuleExports(r.path,goog.global.$jscomp.require(r.getPathName()),s)})),e.loaded()}}var r=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)t(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,e.loaded()):e.pause();else{var n=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||t();var s=1<e.pending().length,i=s&&goog.DebugLoader_.IS_OLD_IE_;if(s=goog.Dependency.defer_&&(s||goog.isDocumentLoading_()),i||s)e.defer((function(){o()}));else{var a=goog.global.document;if(i=goog.inHtmlDocument_()&&"ActiveXObject"in goog.global,n&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!i){goog.Dependency.defer_=!0,e.pause();var g=a.onreadystatechange;a.onreadystatechange=function(){"interactive"==a.readyState&&(a.onreadystatechange=g,o(),e.resume()),goog.isFunction(g)&&g.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?function(){var e=goog.global.document,t=goog.Dependency.registerCallback_((function(){goog.Dependency.unregisterCallback_(t),o()})),r=\'<script type="text/javascript">\'+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+t+\'");\')+"<\\/script>";e.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(r):r)}():o()}}},goog.TransformedDependency.prototype.transform=function(e){},goog.TranspiledDependency=function(e,t,o,r,n,s){goog.TransformedDependency.call(this,e,t,o,r,n),this.transpiler=s},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(e){return this.transpiler.transpile(e,this.getPathName())},goog.PreTranspiledEs6ModuleDependency=function(e,t,o,r,n){goog.TransformedDependency.call(this,e,t,o,r,n)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(e){return e},goog.GoogModuleDependency=function(e,t,o,r,n,s,i){goog.TransformedDependency.call(this,e,t,o,r,n),this.needsTranspile_=s,this.transpiler_=i},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(e){return this.needsTranspile_&&(e=this.transpiler_.transpile(e,this.getPathName())),goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?"goog.loadModule("+goog.global.JSON.stringify(e+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+e+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(e,t,o,r){t=t||[],e=e.replace(/\\\\/g,"/");var n=goog.normalizePath_(goog.basePath+e);for(r&&"boolean"!=typeof r||(r=r?{module:goog.ModuleType.GOOG}:{}),o=this.factory_.createDependency(n,e,t,o,r,goog.transpiler_.needsTranspile(r.lang||"es3",r.module)),this.dependencies_[n]=o,o=0;o<t.length;o++)this.idToPath_[t[o]]=n;this.idToPath_[e]=n},goog.DependencyFactory=function(e){this.transpiler=e},goog.DependencyFactory.prototype.createDependency=function(e,t,o,r,n,s){return n.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(e,t,o,r,n,s,this.transpiler):s?new goog.TranspiledDependency(e,t,o,r,n,this.transpiler):n.module==goog.ModuleType.ES6?"never"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(e,t,o,r,n):new goog.Es6ModuleDependency(e,t,o,r,n):new goog.Dependency(e,t,o,r,n)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(e){goog.debugLoader_.setDependencyFactory(e)},goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(e,t){goog.debugLoader_.bootstrap(e,t)}),goog.TRUSTED_TYPES_POLICY_NAME="",goog.identity_=function(e){return e},goog.createTrustedTypesPolicy=function(e){var t=null;if("undefined"==typeof TrustedTypes||!TrustedTypes.createPolicy)return t;try{t=TrustedTypes.createPolicy(e,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_,createURL:goog.identity_})}catch(e){goog.logToConsole_(e.message)}return t},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.object={},goog.object.is=function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t},goog.object.forEach=function(e,t,o){for(var r in e)t.call(o,e[r],r,e)},goog.object.filter=function(e,t,o){var r,n={};for(r in e)t.call(o,e[r],r,e)&&(n[r]=e[r]);return n},goog.object.map=function(e,t,o){var r,n={};for(r in e)n[r]=t.call(o,e[r],r,e);return n},goog.object.some=function(e,t,o){for(var r in e)if(t.call(o,e[r],r,e))return!0;return!1},goog.object.every=function(e,t,o){for(var r in e)if(!t.call(o,e[r],r,e))return!1;return!0},goog.object.getCount=function(e){var t,o=0;for(t in e)o++;return o},goog.object.getAnyKey=function(e){for(var t in e)return t},goog.object.getAnyValue=function(e){for(var t in e)return e[t]},goog.object.contains=function(e,t){return goog.object.containsValue(e,t)},goog.object.getValues=function(e){var t,o=[],r=0;for(t in e)o[r++]=e[t];return o},goog.object.getKeys=function(e){var t,o=[],r=0;for(t in e)o[r++]=t;return o},goog.object.getValueByKeys=function(e,t){var o=goog.isArrayLike(t),r=o?t:arguments;for(o=o?0:1;o<r.length;o++){if(null==e)return;e=e[r[o]]}return e},goog.object.containsKey=function(e,t){return null!==e&&t in e},goog.object.containsValue=function(e,t){for(var o in e)if(e[o]==t)return!0;return!1},goog.object.findKey=function(e,t,o){for(var r in e)if(t.call(o,e[r],r,e))return r},goog.object.findValue=function(e,t,o){return(t=goog.object.findKey(e,t,o))&&e[t]},goog.object.isEmpty=function(e){for(var t in e)return!1;return!0},goog.object.clear=function(e){for(var t in e)delete e[t]},goog.object.remove=function(e,t){var o;return(o=t in e)&&delete e[t],o},goog.object.add=function(e,t,o){if(null!==e&&t in e)throw Error(\'The object already contains the key "\'+t+\'"\');goog.object.set(e,t,o)},goog.object.get=function(e,t,o){return null!==e&&t in e?e[t]:o},goog.object.set=function(e,t,o){e[t]=o},goog.object.setIfUndefined=function(e,t,o){return t in e?e[t]:e[t]=o},goog.object.setWithReturnValueIfNotSet=function(e,t,o){return t in e?e[t]:(o=o(),e[t]=o)},goog.object.equals=function(e,t){for(var o in e)if(!(o in t)||e[o]!==t[o])return!1;for(var r in t)if(!(r in e))return!1;return!0},goog.object.clone=function(e){var t,o={};for(t in e)o[t]=e[t];return o},goog.object.unsafeClone=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if(goog.isFunction(e.clone))return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.object.unsafeClone(e[o]);return t}return e},goog.object.transpose=function(e){var t,o={};for(t in e)o[e[t]]=t;return o},goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),goog.object.extend=function(e,t){for(var o,r,n=1;n<arguments.length;n++){for(o in r=arguments[n])e[o]=r[o];for(var s=0;s<goog.object.PROTOTYPE_FIELDS_.length;s++)o=goog.object.PROTOTYPE_FIELDS_[s],Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}},goog.object.create=function(e){var t=arguments.length;if(1==t&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(t%2)throw Error("Uneven number of arguments");for(var o={},r=0;r<t;r+=2)o[arguments[r]]=arguments[r+1];return o},goog.object.createSet=function(e){var t=arguments.length;if(1==t&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var o={},r=0;r<t;r++)o[arguments[r]]=!0;return o},goog.object.createImmutableView=function(e){var t=e;return Object.isFrozen&&!Object.isFrozen(e)&&(t=Object.create(e),Object.freeze(t)),t},goog.object.isImmutableView=function(e){return!!Object.isFrozen&&Object.isFrozen(e)},goog.object.getAllPropertyNames=function(e,t,o){if(!e)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return goog.object.getKeys(e);for(var r={};e&&(e!==Object.prototype||t)&&(e!==Function.prototype||o);){for(var n=Object.getOwnPropertyNames(e),s=0;s<n.length;s++)r[n[s]]=!0;e=Object.getPrototypeOf(e)}return goog.object.getKeys(r)},goog.object.getSuperClass=function(e){return(e=Object.getPrototypeOf(e.prototype))&&e.constructor},goog.debug={},goog.debug.Error=function(e){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var t=Error().stack;t&&(this.stack=t)}e&&(this.message=String(e)),this.reportErrorToServer=!0},goog.inherits(goog.debug.Error,Error),goog.debug.Error.prototype.name="CustomError",goog.dom={},goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12},goog.asserts={},goog.asserts.ENABLE_ASSERTS=goog.DEBUG,goog.asserts.AssertionError=function(e,t){goog.debug.Error.call(this,goog.asserts.subs_(e,t)),this.messagePattern=e},goog.inherits(goog.asserts.AssertionError,goog.debug.Error),goog.asserts.AssertionError.prototype.name="AssertionError",goog.asserts.DEFAULT_ERROR_HANDLER=function(e){throw e},goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER,goog.asserts.subs_=function(e,t){for(var o="",r=(e=e.split("%s")).length-1,n=0;n<r;n++)o+=e[n]+(n<t.length?t[n]:"%s");return o+e[r]},goog.asserts.doAssertFailure_=function(e,t,o,r){var n="Assertion failed";if(o){n+=": "+o;var s=r}else e&&(n+=": "+e,s=t);e=new goog.asserts.AssertionError(""+n,s||[]),goog.asserts.errorHandler_(e)},goog.asserts.setErrorHandler=function(e){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=e)},goog.asserts.assert=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!e&&goog.asserts.doAssertFailure_("",null,t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertExists=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&null==e&&goog.asserts.doAssertFailure_("Expected to exist: %s.",[e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.fail=function(e,t){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure"+(e?": "+e:""),Array.prototype.slice.call(arguments,1)))},goog.asserts.assertNumber=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(e)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertString=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isString(e)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertFunction=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(e)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertObject=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isObject(e)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertArray=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isArray(e)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertBoolean=function(e,t,o){return goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(e)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertElement=function(e,t,o){return!goog.asserts.ENABLE_ASSERTS||goog.isObject(e)&&e.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(e),e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertInstanceof=function(e,t,o,r){return!goog.asserts.ENABLE_ASSERTS||e instanceof t||goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.",[goog.asserts.getType_(t),goog.asserts.getType_(e)],o,Array.prototype.slice.call(arguments,3)),e},goog.asserts.assertFinite=function(e,t,o){return!goog.asserts.ENABLE_ASSERTS||"number"==typeof e&&isFinite(e)||goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.",[e],t,Array.prototype.slice.call(arguments,2)),e},goog.asserts.assertObjectPrototypeIsIntact=function(){for(var e in Object.prototype)goog.asserts.fail(e+" should not be enumerable in Object.prototype.")},goog.asserts.getType_=function(e){return e instanceof Function?e.displayName||e.name||"unknown type name":e instanceof Object?e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e):null===e?"null":typeof e};var jspb={BinaryConstants:{},ConstBinaryMessage:function(){},BinaryMessage:function(){}};jspb.BinaryConstants.FieldType={INVALID:-1,DOUBLE:1,FLOAT:2,INT64:3,UINT64:4,INT32:5,FIXED64:6,FIXED32:7,BOOL:8,STRING:9,GROUP:10,MESSAGE:11,BYTES:12,UINT32:13,ENUM:14,SFIXED32:15,SFIXED64:16,SINT32:17,SINT64:18,FHASH64:30,VHASH64:31},jspb.BinaryConstants.WireType={INVALID:-1,VARINT:0,FIXED64:1,DELIMITED:2,START_GROUP:3,END_GROUP:4,FIXED32:5},jspb.BinaryConstants.FieldTypeToWireType=function(e){var t=jspb.BinaryConstants.FieldType,o=jspb.BinaryConstants.WireType;switch(e){case t.INT32:case t.INT64:case t.UINT32:case t.UINT64:case t.SINT32:case t.SINT64:case t.BOOL:case t.ENUM:case t.VHASH64:return o.VARINT;case t.DOUBLE:case t.FIXED64:case t.SFIXED64:case t.FHASH64:return o.FIXED64;case t.STRING:case t.MESSAGE:case t.BYTES:return o.DELIMITED;case t.FLOAT:case t.FIXED32:case t.SFIXED32:return o.FIXED32;default:return o.INVALID}},jspb.BinaryConstants.INVALID_FIELD_NUMBER=-1,jspb.BinaryConstants.FLOAT32_EPS=1401298464324817e-60,jspb.BinaryConstants.FLOAT32_MIN=11754943508222875e-54,jspb.BinaryConstants.FLOAT32_MAX=34028234663852886e22,jspb.BinaryConstants.FLOAT64_EPS=5e-324,jspb.BinaryConstants.FLOAT64_MIN=22250738585072014e-324,jspb.BinaryConstants.FLOAT64_MAX=17976931348623157e292,jspb.BinaryConstants.TWO_TO_20=1048576,jspb.BinaryConstants.TWO_TO_23=8388608,jspb.BinaryConstants.TWO_TO_31=2147483648,jspb.BinaryConstants.TWO_TO_32=4294967296,jspb.BinaryConstants.TWO_TO_52=4503599627370496,jspb.BinaryConstants.TWO_TO_63=0x8000000000000000,jspb.BinaryConstants.TWO_TO_64=0x10000000000000000,jspb.BinaryConstants.ZERO_HASH="\\0\\0\\0\\0\\0\\0\\0\\0",goog.array={},goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE,goog.array.ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR,goog.array.peek=function(e){return e[e.length-1]},goog.array.last=goog.array.peek,goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.indexOf.call(e,t,o)}:function(e,t,o){if(o=null==o?0:0>o?Math.max(0,e.length+o):o,goog.isString(e))return goog.isString(t)&&1==t.length?e.indexOf(t,o):-1;for(;o<e.length;o++)if(o in e&&e[o]===t)return o;return-1},goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.lastIndexOf.call(e,t,null==o?e.length-1:o)}:function(e,t,o){if(0>(o=null==o?e.length-1:o)&&(o=Math.max(0,e.length+o)),goog.isString(e))return goog.isString(t)&&1==t.length?e.lastIndexOf(t,o):-1;for(;0<=o;o--)if(o in e&&e[o]===t)return o;return-1},goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(e,t,o){goog.asserts.assert(null!=e.length),Array.prototype.forEach.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)s in n&&t.call(o,n[s],s,e)},goog.array.forEachRight=function(e,t,o){var r=e.length,n=goog.isString(e)?e.split(""):e;for(--r;0<=r;--r)r in n&&t.call(o,n[r],r,e)},goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.filter.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=[],s=0,i=goog.isString(e)?e.split(""):e,a=0;a<r;a++)if(a in i){var g=i[a];t.call(o,g,a,e)&&(n[s++]=g)}return n},goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.map.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=Array(r),s=goog.isString(e)?e.split(""):e,i=0;i<r;i++)i in s&&(n[i]=t.call(o,s[i],i,e));return n},goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(e,t,o,r){return goog.asserts.assert(null!=e.length),r&&(t=goog.bind(t,r)),Array.prototype.reduce.call(e,t,o)}:function(e,t,o,r){var n=o;return goog.array.forEach(e,(function(o,s){n=t.call(r,n,o,s,e)})),n},goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(e,t,o,r){return goog.asserts.assert(null!=e.length),goog.asserts.assert(null!=t),r&&(t=goog.bind(t,r)),Array.prototype.reduceRight.call(e,t,o)}:function(e,t,o,r){var n=o;return goog.array.forEachRight(e,(function(o,s){n=t.call(r,n,o,s,e)})),n},goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.some.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&t.call(o,n[s],s,e))return!0;return!1},goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(e,t,o){return goog.asserts.assert(null!=e.length),Array.prototype.every.call(e,t,o)}:function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&!t.call(o,n[s],s,e))return!1;return!0},goog.array.count=function(e,t,o){var r=0;return goog.array.forEach(e,(function(e,n,s){t.call(o,e,n,s)&&++r}),o),r},goog.array.find=function(e,t,o){return 0>(t=goog.array.findIndex(e,t,o))?null:goog.isString(e)?e.charAt(t):e[t]},goog.array.findIndex=function(e,t,o){for(var r=e.length,n=goog.isString(e)?e.split(""):e,s=0;s<r;s++)if(s in n&&t.call(o,n[s],s,e))return s;return-1},goog.array.findRight=function(e,t,o){return 0>(t=goog.array.findIndexRight(e,t,o))?null:goog.isString(e)?e.charAt(t):e[t]},goog.array.findIndexRight=function(e,t,o){var r=e.length,n=goog.isString(e)?e.split(""):e;for(--r;0<=r;r--)if(r in n&&t.call(o,n[r],r,e))return r;return-1},goog.array.contains=function(e,t){return 0<=goog.array.indexOf(e,t)},goog.array.isEmpty=function(e){return 0==e.length},goog.array.clear=function(e){if(!goog.isArray(e))for(var t=e.length-1;0<=t;t--)delete e[t];e.length=0},goog.array.insert=function(e,t){goog.array.contains(e,t)||e.push(t)},goog.array.insertAt=function(e,t,o){goog.array.splice(e,o,0,t)},goog.array.insertArrayAt=function(e,t,o){goog.partial(goog.array.splice,e,o,0).apply(null,t)},goog.array.insertBefore=function(e,t,o){var r;2==arguments.length||0>(r=goog.array.indexOf(e,o))?e.push(t):goog.array.insertAt(e,t,r)},goog.array.remove=function(e,t){var o;return(o=0<=(t=goog.array.indexOf(e,t)))&&goog.array.removeAt(e,t),o},goog.array.removeLast=function(e,t){return 0<=(t=goog.array.lastIndexOf(e,t))&&(goog.array.removeAt(e,t),!0)},goog.array.removeAt=function(e,t){return goog.asserts.assert(null!=e.length),1==Array.prototype.splice.call(e,t,1).length},goog.array.removeIf=function(e,t,o){return 0<=(t=goog.array.findIndex(e,t,o))&&(goog.array.removeAt(e,t),!0)},goog.array.removeAllIf=function(e,t,o){var r=0;return goog.array.forEachRight(e,(function(n,s){t.call(o,n,s,e)&&goog.array.removeAt(e,s)&&r++})),r},goog.array.concat=function(e){return Array.prototype.concat.apply([],arguments)},goog.array.join=function(e){return Array.prototype.concat.apply([],arguments)},goog.array.toArray=function(e){var t=e.length;if(0<t){for(var o=Array(t),r=0;r<t;r++)o[r]=e[r];return o}return[]},goog.array.clone=goog.array.toArray,goog.array.extend=function(e,t){for(var o=1;o<arguments.length;o++){var r=arguments[o];if(goog.isArrayLike(r)){var n=e.length||0,s=r.length||0;e.length=n+s;for(var i=0;i<s;i++)e[n+i]=r[i]}else e.push(r)}},goog.array.splice=function(e,t,o,r){return goog.asserts.assert(null!=e.length),Array.prototype.splice.apply(e,goog.array.slice(arguments,1))},goog.array.slice=function(e,t,o){return goog.asserts.assert(null!=e.length),2>=arguments.length?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,o)},goog.array.removeDuplicates=function(e,t,o){t=t||e;var r=function(e){return goog.isObject(e)?"o"+goog.getUid(e):(typeof e).charAt(0)+e};o=o||r,r={};for(var n=0,s=0;s<e.length;){var i=e[s++],a=o(i);Object.prototype.hasOwnProperty.call(r,a)||(r[a]=!0,t[n++]=i)}t.length=n},goog.array.binarySearch=function(e,t,o){return goog.array.binarySearch_(e,o||goog.array.defaultCompare,!1,t)},goog.array.binarySelect=function(e,t,o){return goog.array.binarySearch_(e,t,!0,void 0,o)},goog.array.binarySearch_=function(e,t,o,r,n){for(var s,i=0,a=e.length;i<a;){var g=i+a>>1,l=o?t.call(n,e[g],g,e):t(r,e[g]);0<l?i=g+1:(a=g,s=!l)}return s?i:~i},goog.array.sort=function(e,t){e.sort(t||goog.array.defaultCompare)},goog.array.stableSort=function(e,t){for(var o=Array(e.length),r=0;r<e.length;r++)o[r]={index:r,value:e[r]};var n=t||goog.array.defaultCompare;for(goog.array.sort(o,(function(e,t){return n(e.value,t.value)||e.index-t.index})),r=0;r<e.length;r++)e[r]=o[r].value},goog.array.sortByKey=function(e,t,o){var r=o||goog.array.defaultCompare;goog.array.sort(e,(function(e,o){return r(t(e),t(o))}))},goog.array.sortObjectsByKey=function(e,t,o){goog.array.sortByKey(e,(function(e){return e[t]}),o)},goog.array.isSorted=function(e,t,o){t=t||goog.array.defaultCompare;for(var r=1;r<e.length;r++){var n=t(e[r-1],e[r]);if(0<n||0==n&&o)return!1}return!0},goog.array.equals=function(e,t,o){if(!goog.isArrayLike(e)||!goog.isArrayLike(t)||e.length!=t.length)return!1;var r=e.length;o=o||goog.array.defaultCompareEquality;for(var n=0;n<r;n++)if(!o(e[n],t[n]))return!1;return!0},goog.array.compare3=function(e,t,o){o=o||goog.array.defaultCompare;for(var r=Math.min(e.length,t.length),n=0;n<r;n++){var s=o(e[n],t[n]);if(0!=s)return s}return goog.array.defaultCompare(e.length,t.length)},goog.array.defaultCompare=function(e,t){return e>t?1:e<t?-1:0},goog.array.inverseDefaultCompare=function(e,t){return-goog.array.defaultCompare(e,t)},goog.array.defaultCompareEquality=function(e,t){return e===t},goog.array.binaryInsert=function(e,t,o){return 0>(o=goog.array.binarySearch(e,t,o))&&(goog.array.insertAt(e,t,-(o+1)),!0)},goog.array.binaryRemove=function(e,t,o){return 0<=(t=goog.array.binarySearch(e,t,o))&&goog.array.removeAt(e,t)},goog.array.bucket=function(e,t,o){for(var r={},n=0;n<e.length;n++){var s=e[n],i=t.call(o,s,n,e);goog.isDef(i)&&(r[i]||(r[i]=[])).push(s)}return r},goog.array.toObject=function(e,t,o){var r={};return goog.array.forEach(e,(function(n,s){r[t.call(o,n,s,e)]=n})),r},goog.array.range=function(e,t,o){var r=[],n=0,s=e;if(void 0!==t&&(n=e,s=t),0>(o=o||1)*(s-n))return[];if(0<o)for(e=n;e<s;e+=o)r.push(e);else for(e=n;e>s;e+=o)r.push(e);return r},goog.array.repeat=function(e,t){for(var o=[],r=0;r<t;r++)o[r]=e;return o},goog.array.flatten=function(e){for(var t=[],o=0;o<arguments.length;o++){var r=arguments[o];if(goog.isArray(r))for(var n=0;n<r.length;n+=8192){var s=goog.array.slice(r,n,n+8192);s=goog.array.flatten.apply(null,s);for(var i=0;i<s.length;i++)t.push(s[i])}else t.push(r)}return t},goog.array.rotate=function(e,t){return goog.asserts.assert(null!=e.length),e.length&&(0<(t%=e.length)?Array.prototype.unshift.apply(e,e.splice(-t,t)):0>t&&Array.prototype.push.apply(e,e.splice(0,-t))),e},goog.array.moveItem=function(e,t,o){goog.asserts.assert(0<=t&&t<e.length),goog.asserts.assert(0<=o&&o<e.length),t=Array.prototype.splice.call(e,t,1),Array.prototype.splice.call(e,o,0,t[0])},goog.array.zip=function(e){if(!arguments.length)return[];for(var t=[],o=arguments[0].length,r=1;r<arguments.length;r++)arguments[r].length<o&&(o=arguments[r].length);for(r=0;r<o;r++){for(var n=[],s=0;s<arguments.length;s++)n.push(arguments[s][r]);t.push(n)}return t},goog.array.shuffle=function(e,t){t=t||Math.random;for(var o=e.length-1;0<o;o--){var r=Math.floor(t()*(o+1)),n=e[o];e[o]=e[r],e[r]=n}},goog.array.copyByIndex=function(e,t){var o=[];return goog.array.forEach(t,(function(t){o.push(e[t])})),o},goog.array.concatMap=function(e,t,o){return goog.array.concat.apply([],goog.array.map(e,t,o))},goog.crypt={},goog.crypt.stringToByteArray=function(e){for(var t=[],o=0,r=0;r<e.length;r++){var n=e.charCodeAt(r);255<n&&(t[o++]=255&n,n>>=8),t[o++]=n}return t},goog.crypt.byteArrayToString=function(e){if(8192>=e.length)return String.fromCharCode.apply(null,e);for(var t="",o=0;o<e.length;o+=8192){var r=goog.array.slice(e,o,o+8192);t+=String.fromCharCode.apply(null,r)}return t},goog.crypt.byteArrayToHex=function(e,t){return goog.array.map(e,(function(e){return 1<(e=e.toString(16)).length?e:"0"+e})).join(t||"")},goog.crypt.hexToByteArray=function(e){goog.asserts.assert(0==e.length%2,"Key string length must be multiple of 2");for(var t=[],o=0;o<e.length;o+=2)t.push(parseInt(e.substring(o,o+2),16));return t},goog.crypt.stringToUtf8ByteArray=function(e){for(var t=[],o=0,r=0;r<e.length;r++){var n=e.charCodeAt(r);128>n?t[o++]=n:(2048>n?t[o++]=n>>6|192:(55296==(64512&n)&&r+1<e.length&&56320==(64512&e.charCodeAt(r+1))?(n=65536+((1023&n)<<10)+(1023&e.charCodeAt(++r)),t[o++]=n>>18|240,t[o++]=n>>12&63|128):t[o++]=n>>12|224,t[o++]=n>>6&63|128),t[o++]=63&n|128)}return t},goog.crypt.utf8ByteArrayToString=function(e){for(var t=[],o=0,r=0;o<e.length;){var n=e[o++];if(128>n)t[r++]=String.fromCharCode(n);else if(191<n&&224>n){var s=e[o++];t[r++]=String.fromCharCode((31&n)<<6|63&s)}else if(239<n&&365>n){s=e[o++];var i=e[o++];n=((7&n)<<18|(63&s)<<12|(63&i)<<6|63&e[o++])-65536,t[r++]=String.fromCharCode(55296+(n>>10)),t[r++]=String.fromCharCode(56320+(1023&n))}else s=e[o++],i=e[o++],t[r++]=String.fromCharCode((15&n)<<12|(63&s)<<6|63&i)}return t.join("")},goog.crypt.xorByteArray=function(e,t){goog.asserts.assert(e.length==t.length,"XOR array lengths must match");for(var o=[],r=0;r<e.length;r++)o.push(e[r]^t[r]);return o},goog.dom.asserts={},goog.dom.asserts.assertIsLocation=function(e){if(goog.asserts.ENABLE_ASSERTS){var t=goog.dom.asserts.getWindow_(e);t&&(!e||!(e instanceof t.Location)&&e instanceof t.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(e))}return e},goog.dom.asserts.assertIsElementType_=function(e,t){if(goog.asserts.ENABLE_ASSERTS){var o=goog.dom.asserts.getWindow_(e);o&&void 0!==o[t]&&(e&&(e instanceof o[t]||!(e instanceof o.Location||e instanceof o.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",t,goog.dom.asserts.debugStringForType_(e)))}return e},goog.dom.asserts.assertIsHTMLAnchorElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLAnchorElement")},goog.dom.asserts.assertIsHTMLButtonElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLButtonElement")},goog.dom.asserts.assertIsHTMLLinkElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLLinkElement")},goog.dom.asserts.assertIsHTMLImageElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLImageElement")},goog.dom.asserts.assertIsHTMLAudioElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLAudioElement")},goog.dom.asserts.assertIsHTMLVideoElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLVideoElement")},goog.dom.asserts.assertIsHTMLInputElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLInputElement")},goog.dom.asserts.assertIsHTMLTextAreaElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLTextAreaElement")},goog.dom.asserts.assertIsHTMLCanvasElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLCanvasElement")},goog.dom.asserts.assertIsHTMLEmbedElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLEmbedElement")},goog.dom.asserts.assertIsHTMLFormElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLFormElement")},goog.dom.asserts.assertIsHTMLFrameElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLFrameElement")},goog.dom.asserts.assertIsHTMLIFrameElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLIFrameElement")},goog.dom.asserts.assertIsHTMLObjectElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLObjectElement")},goog.dom.asserts.assertIsHTMLScriptElement=function(e){return goog.dom.asserts.assertIsElementType_(e,"HTMLScriptElement")},goog.dom.asserts.debugStringForType_=function(e){if(!goog.isObject(e))return void 0===e?"undefined":null===e?"null":typeof e;try{return e.constructor.displayName||e.constructor.name||Object.prototype.toString.call(e)}catch(e){return"<object could not be stringified>"}},goog.dom.asserts.getWindow_=function(e){try{var t=e&&e.ownerDocument,o=t&&(t.defaultView||t.parentWindow);if((o=o||goog.global).Element&&o.Location)return o}catch(e){}return null},goog.functions={},goog.functions.constant=function(e){return function(){return e}},goog.functions.FALSE=function(){return!1},goog.functions.TRUE=function(){return!0},goog.functions.NULL=function(){return null},goog.functions.identity=function(e,t){return e},goog.functions.error=function(e){return function(){throw Error(e)}},goog.functions.fail=function(e){return function(){throw e}},goog.functions.lock=function(e,t){return t=t||0,function(){return e.apply(this,Array.prototype.slice.call(arguments,0,t))}},goog.functions.nth=function(e){return function(){return arguments[e]}},goog.functions.partialRight=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=Array.prototype.slice.call(arguments);return t.push.apply(t,o),e.apply(this,t)}},goog.functions.withReturnValue=function(e,t){return goog.functions.sequence(e,goog.functions.constant(t))},goog.functions.equalTo=function(e,t){return function(o){return t?e==o:e===o}},goog.functions.compose=function(e,t){var o=arguments,r=o.length;return function(){var e;r&&(e=o[r-1].apply(this,arguments));for(var t=r-2;0<=t;t--)e=o[t].call(this,e);return e}},goog.functions.sequence=function(e){var t=arguments,o=t.length;return function(){for(var e,r=0;r<o;r++)e=t[r].apply(this,arguments);return e}},goog.functions.and=function(e){var t=arguments,o=t.length;return function(){for(var e=0;e<o;e++)if(!t[e].apply(this,arguments))return!1;return!0}},goog.functions.or=function(e){var t=arguments,o=t.length;return function(){for(var e=0;e<o;e++)if(t[e].apply(this,arguments))return!0;return!1}},goog.functions.not=function(e){return function(){return!e.apply(this,arguments)}},goog.functions.create=function(e,t){var o=function(){};return o.prototype=e.prototype,o=new o,e.apply(o,Array.prototype.slice.call(arguments,1)),o},goog.functions.CACHE_RETURN_VALUE=!0,goog.functions.cacheReturnValue=function(e){var t,o=!1;return function(){return goog.functions.CACHE_RETURN_VALUE?(o||(t=e(),o=!0),t):e()}},goog.functions.once=function(e){var t=e;return function(){if(t){var e=t;t=null,e()}}},goog.functions.debounce=function(e,t,o){var r=0;return function(n){goog.global.clearTimeout(r);var s=arguments;r=goog.global.setTimeout((function(){e.apply(o,s)}),t)}},goog.functions.throttle=function(e,t,o){var r=0,n=!1,s=[],i=function(){r=0,n&&(n=!1,a())},a=function(){r=goog.global.setTimeout(i,t),e.apply(o,s)};return function(e){s=arguments,r?n=!0:a()}},goog.functions.rateLimit=function(e,t,o){var r=0,n=function(){r=0};return function(s){r||(r=goog.global.setTimeout(n,t),e.apply(o,arguments))}},goog.dom.HtmlElement=function(){},goog.dom.TagName=function(e){this.tagName_=e},goog.dom.TagName.prototype.toString=function(){return this.tagName_},goog.dom.TagName.A=new goog.dom.TagName("A"),goog.dom.TagName.ABBR=new goog.dom.TagName("ABBR"),goog.dom.TagName.ACRONYM=new goog.dom.TagName("ACRONYM"),goog.dom.TagName.ADDRESS=new goog.dom.TagName("ADDRESS"),goog.dom.TagName.APPLET=new goog.dom.TagName("APPLET"),goog.dom.TagName.AREA=new goog.dom.TagName("AREA"),goog.dom.TagName.ARTICLE=new goog.dom.TagName("ARTICLE"),goog.dom.TagName.ASIDE=new goog.dom.TagName("ASIDE"),goog.dom.TagName.AUDIO=new goog.dom.TagName("AUDIO"),goog.dom.TagName.B=new goog.dom.TagName("B"),goog.dom.TagName.BASE=new goog.dom.TagName("BASE"),goog.dom.TagName.BASEFONT=new goog.dom.TagName("BASEFONT"),goog.dom.TagName.BDI=new goog.dom.TagName("BDI"),goog.dom.TagName.BDO=new goog.dom.TagName("BDO"),goog.dom.TagName.BIG=new goog.dom.TagName("BIG"),goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName("BLOCKQUOTE"),goog.dom.TagName.BODY=new goog.dom.TagName("BODY"),goog.dom.TagName.BR=new goog.dom.TagName("BR"),goog.dom.TagName.BUTTON=new goog.dom.TagName("BUTTON"),goog.dom.TagName.CANVAS=new goog.dom.TagName("CANVAS"),goog.dom.TagName.CAPTION=new goog.dom.TagName("CAPTION"),goog.dom.TagName.CENTER=new goog.dom.TagName("CENTER"),goog.dom.TagName.CITE=new goog.dom.TagName("CITE"),goog.dom.TagName.CODE=new goog.dom.TagName("CODE"),goog.dom.TagName.COL=new goog.dom.TagName("COL"),goog.dom.TagName.COLGROUP=new goog.dom.TagName("COLGROUP"),goog.dom.TagName.COMMAND=new goog.dom.TagName("COMMAND"),goog.dom.TagName.DATA=new goog.dom.TagName("DATA"),goog.dom.TagName.DATALIST=new goog.dom.TagName("DATALIST"),goog.dom.TagName.DD=new goog.dom.TagName("DD"),goog.dom.TagName.DEL=new goog.dom.TagName("DEL"),goog.dom.TagName.DETAILS=new goog.dom.TagName("DETAILS"),goog.dom.TagName.DFN=new goog.dom.TagName("DFN"),goog.dom.TagName.DIALOG=new goog.dom.TagName("DIALOG"),goog.dom.TagName.DIR=new goog.dom.TagName("DIR"),goog.dom.TagName.DIV=new goog.dom.TagName("DIV"),goog.dom.TagName.DL=new goog.dom.TagName("DL"),goog.dom.TagName.DT=new goog.dom.TagName("DT"),goog.dom.TagName.EM=new goog.dom.TagName("EM"),goog.dom.TagName.EMBED=new goog.dom.TagName("EMBED"),goog.dom.TagName.FIELDSET=new goog.dom.TagName("FIELDSET"),goog.dom.TagName.FIGCAPTION=new goog.dom.TagName("FIGCAPTION"),goog.dom.TagName.FIGURE=new goog.dom.TagName("FIGURE"),goog.dom.TagName.FONT=new goog.dom.TagName("FONT"),goog.dom.TagName.FOOTER=new goog.dom.TagName("FOOTER"),goog.dom.TagName.FORM=new goog.dom.TagName("FORM"),goog.dom.TagName.FRAME=new goog.dom.TagName("FRAME"),goog.dom.TagName.FRAMESET=new goog.dom.TagName("FRAMESET"),goog.dom.TagName.H1=new goog.dom.TagName("H1"),goog.dom.TagName.H2=new goog.dom.TagName("H2"),goog.dom.TagName.H3=new goog.dom.TagName("H3"),goog.dom.TagName.H4=new goog.dom.TagName("H4"),goog.dom.TagName.H5=new goog.dom.TagName("H5"),goog.dom.TagName.H6=new goog.dom.TagName("H6"),goog.dom.TagName.HEAD=new goog.dom.TagName("HEAD"),goog.dom.TagName.HEADER=new goog.dom.TagName("HEADER"),goog.dom.TagName.HGROUP=new goog.dom.TagName("HGROUP"),goog.dom.TagName.HR=new goog.dom.TagName("HR"),goog.dom.TagName.HTML=new goog.dom.TagName("HTML"),goog.dom.TagName.I=new goog.dom.TagName("I"),goog.dom.TagName.IFRAME=new goog.dom.TagName("IFRAME"),goog.dom.TagName.IMG=new goog.dom.TagName("IMG"),goog.dom.TagName.INPUT=new goog.dom.TagName("INPUT"),goog.dom.TagName.INS=new goog.dom.TagName("INS"),goog.dom.TagName.ISINDEX=new goog.dom.TagName("ISINDEX"),goog.dom.TagName.KBD=new goog.dom.TagName("KBD"),goog.dom.TagName.KEYGEN=new goog.dom.TagName("KEYGEN"),goog.dom.TagName.LABEL=new goog.dom.TagName("LABEL"),goog.dom.TagName.LEGEND=new goog.dom.TagName("LEGEND"),goog.dom.TagName.LI=new goog.dom.TagName("LI"),goog.dom.TagName.LINK=new goog.dom.TagName("LINK"),goog.dom.TagName.MAIN=new goog.dom.TagName("MAIN"),goog.dom.TagName.MAP=new goog.dom.TagName("MAP"),goog.dom.TagName.MARK=new goog.dom.TagName("MARK"),goog.dom.TagName.MATH=new goog.dom.TagName("MATH"),goog.dom.TagName.MENU=new goog.dom.TagName("MENU"),goog.dom.TagName.MENUITEM=new goog.dom.TagName("MENUITEM"),goog.dom.TagName.META=new goog.dom.TagName("META"),goog.dom.TagName.METER=new goog.dom.TagName("METER"),goog.dom.TagName.NAV=new goog.dom.TagName("NAV"),goog.dom.TagName.NOFRAMES=new goog.dom.TagName("NOFRAMES"),goog.dom.TagName.NOSCRIPT=new goog.dom.TagName("NOSCRIPT"),goog.dom.TagName.OBJECT=new goog.dom.TagName("OBJECT"),goog.dom.TagName.OL=new goog.dom.TagName("OL"),goog.dom.TagName.OPTGROUP=new goog.dom.TagName("OPTGROUP"),goog.dom.TagName.OPTION=new goog.dom.TagName("OPTION"),goog.dom.TagName.OUTPUT=new goog.dom.TagName("OUTPUT"),goog.dom.TagName.P=new goog.dom.TagName("P"),goog.dom.TagName.PARAM=new goog.dom.TagName("PARAM"),goog.dom.TagName.PICTURE=new goog.dom.TagName("PICTURE"),goog.dom.TagName.PRE=new goog.dom.TagName("PRE"),goog.dom.TagName.PROGRESS=new goog.dom.TagName("PROGRESS"),goog.dom.TagName.Q=new goog.dom.TagName("Q"),goog.dom.TagName.RP=new goog.dom.TagName("RP"),goog.dom.TagName.RT=new goog.dom.TagName("RT"),goog.dom.TagName.RTC=new goog.dom.TagName("RTC"),goog.dom.TagName.RUBY=new goog.dom.TagName("RUBY"),goog.dom.TagName.S=new goog.dom.TagName("S"),goog.dom.TagName.SAMP=new goog.dom.TagName("SAMP"),goog.dom.TagName.SCRIPT=new goog.dom.TagName("SCRIPT"),goog.dom.TagName.SECTION=new goog.dom.TagName("SECTION"),goog.dom.TagName.SELECT=new goog.dom.TagName("SELECT"),goog.dom.TagName.SMALL=new goog.dom.TagName("SMALL"),goog.dom.TagName.SOURCE=new goog.dom.TagName("SOURCE"),goog.dom.TagName.SPAN=new goog.dom.TagName("SPAN"),goog.dom.TagName.STRIKE=new goog.dom.TagName("STRIKE"),goog.dom.TagName.STRONG=new goog.dom.TagName("STRONG"),goog.dom.TagName.STYLE=new goog.dom.TagName("STYLE"),goog.dom.TagName.SUB=new goog.dom.TagName("SUB"),goog.dom.TagName.SUMMARY=new goog.dom.TagName("SUMMARY"),goog.dom.TagName.SUP=new goog.dom.TagName("SUP"),goog.dom.TagName.SVG=new goog.dom.TagName("SVG"),goog.dom.TagName.TABLE=new goog.dom.TagName("TABLE"),goog.dom.TagName.TBODY=new goog.dom.TagName("TBODY"),goog.dom.TagName.TD=new goog.dom.TagName("TD"),goog.dom.TagName.TEMPLATE=new goog.dom.TagName("TEMPLATE"),goog.dom.TagName.TEXTAREA=new goog.dom.TagName("TEXTAREA"),goog.dom.TagName.TFOOT=new goog.dom.TagName("TFOOT"),goog.dom.TagName.TH=new goog.dom.TagName("TH"),goog.dom.TagName.THEAD=new goog.dom.TagName("THEAD"),goog.dom.TagName.TIME=new goog.dom.TagName("TIME"),goog.dom.TagName.TITLE=new goog.dom.TagName("TITLE"),goog.dom.TagName.TR=new goog.dom.TagName("TR"),goog.dom.TagName.TRACK=new goog.dom.TagName("TRACK"),goog.dom.TagName.TT=new goog.dom.TagName("TT"),goog.dom.TagName.U=new goog.dom.TagName("U"),goog.dom.TagName.UL=new goog.dom.TagName("UL"),goog.dom.TagName.VAR=new goog.dom.TagName("VAR"),goog.dom.TagName.VIDEO=new goog.dom.TagName("VIDEO"),goog.dom.TagName.WBR=new goog.dom.TagName("WBR"),goog.dom.tags={},goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},goog.dom.tags.isVoidTag=function(e){return!0===goog.dom.tags.VOID_TAGS_[e]},goog.html={},goog.html.trustedtypes={},goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#html"):null,goog.string={},goog.string.TypedString=function(){},goog.string.Const=function(e,t){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=e===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&t||"",this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_},goog.string.Const.prototype.implementsGoogStringTypedString=!0,goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_},goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"},goog.string.Const.unwrap=function(e){return e instanceof goog.string.Const&&e.constructor===goog.string.Const&&e.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_?e.stringConstValueWithSecurityContract__googStringSecurityPrivate_:(goog.asserts.fail("expected object of type Const, got \'"+e+"\'"),"type_error:Const")},goog.string.Const.from=function(e){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,e)},goog.string.Const.TYPE_MARKER_={},goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={},goog.string.Const.EMPTY=goog.string.Const.from(""),goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_="",this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0,goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeScript.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeScript.fromConstantAndArgs=function(e,t){for(var o=[],r=1;r<arguments.length;r++)o.push(goog.html.SafeScript.stringify_(arguments[r]));return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("("+goog.string.Const.unwrap(e)+")("+o.join(", ")+");")},goog.html.SafeScript.fromJson=function(e){return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(e))},goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()},goog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return"SafeScript{"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+"}"}),goog.html.SafeScript.unwrap=function(e){return goog.html.SafeScript.unwrapTrustedScript(e).toString()},goog.html.SafeScript.unwrapTrustedScript=function(e){return e instanceof goog.html.SafeScript&&e.constructor===goog.html.SafeScript&&e.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeScriptWrappedValue_:(goog.asserts.fail("expected object of type SafeScript, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeScript")},goog.html.SafeScript.stringify_=function(e){return JSON.stringify(e).replace(/</g,"\\\\x3c")},goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(e):e,this},goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(""),goog.fs={},goog.fs.url={},goog.fs.url.createObjectUrl=function(e){return goog.fs.url.getUrlObject_().createObjectURL(e)},goog.fs.url.revokeObjectUrl=function(e){goog.fs.url.getUrlObject_().revokeObjectURL(e)},goog.fs.url.getUrlObject_=function(){var e=goog.fs.url.findUrlObject_();if(null!=e)return e;throw Error("This browser doesn\'t seem to support blob URLs")},goog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&&goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&&goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null},goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()},goog.i18n={},goog.i18n.bidi={},goog.i18n.bidi.FORCE_RTL=!1,goog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||("ar"==goog.LOCALE.substring(0,2).toLowerCase()||"fa"==goog.LOCALE.substring(0,2).toLowerCase()||"he"==goog.LOCALE.substring(0,2).toLowerCase()||"iw"==goog.LOCALE.substring(0,2).toLowerCase()||"ps"==goog.LOCALE.substring(0,2).toLowerCase()||"sd"==goog.LOCALE.substring(0,2).toLowerCase()||"ug"==goog.LOCALE.substring(0,2).toLowerCase()||"ur"==goog.LOCALE.substring(0,2).toLowerCase()||"yi"==goog.LOCALE.substring(0,2).toLowerCase())&&(2==goog.LOCALE.length||"-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))||3<=goog.LOCALE.length&&"ckb"==goog.LOCALE.substring(0,3).toLowerCase()&&(3==goog.LOCALE.length||"-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4))||7<=goog.LOCALE.length&&("-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))&&("adlm"==goog.LOCALE.substring(3,7).toLowerCase()||"arab"==goog.LOCALE.substring(3,7).toLowerCase()||"hebr"==goog.LOCALE.substring(3,7).toLowerCase()||"nkoo"==goog.LOCALE.substring(3,7).toLowerCase()||"rohg"==goog.LOCALE.substring(3,7).toLowerCase()||"thaa"==goog.LOCALE.substring(3,7).toLowerCase())||8<=goog.LOCALE.length&&("-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4))&&("adlm"==goog.LOCALE.substring(4,8).toLowerCase()||"arab"==goog.LOCALE.substring(4,8).toLowerCase()||"hebr"==goog.LOCALE.substring(4,8).toLowerCase()||"nkoo"==goog.LOCALE.substring(4,8).toLowerCase()||"rohg"==goog.LOCALE.substring(4,8).toLowerCase()||"thaa"==goog.LOCALE.substring(4,8).toLowerCase()),goog.i18n.bidi.Format={LRE:"",RLE:"",PDF:"",LRM:"",RLM:""},goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0},goog.i18n.bidi.RIGHT="right",goog.i18n.bidi.LEFT="left",goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT,goog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,goog.i18n.bidi.toDir=function(e,t){return"number"==typeof e?0<e?goog.i18n.bidi.Dir.LTR:0>e?goog.i18n.bidi.Dir.RTL:t?null:goog.i18n.bidi.Dir.NEUTRAL:null==e?null:e?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.ltrChars_="A-Za-zÀ-ÖØ-öø-ʸ̀-ऀ-Ⰰ-\\ud801\\ud804-\\ud839\\ud83c-\\udbff豈-︀--",goog.i18n.bidi.rtlChars_="֑-ۯۺ-ࣿ\\ud802-\\ud803\\ud83a-\\ud83bיִ-﷿ﹰ-ﻼ",goog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g,goog.i18n.bidi.stripHtmlIfNeeded_=function(e,t){return t?e.replace(goog.i18n.bidi.htmlSkipReg_,""):e},goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.hasAnyRtl=function(e,t){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl,goog.i18n.bidi.hasAnyLtr=function(e,t){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.isRtlChar=function(e){return goog.i18n.bidi.rtlRe_.test(e)},goog.i18n.bidi.isLtrChar=function(e){return goog.i18n.bidi.ltrRe_.test(e)},goog.i18n.bidi.isNeutralChar=function(e){return!goog.i18n.bidi.isLtrChar(e)&&!goog.i18n.bidi.isRtlChar(e)},goog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.startsWithRtl=function(e,t){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl,goog.i18n.bidi.startsWithLtr=function(e,t){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr,goog.i18n.bidi.isRequiredLtrRe_=/^http:\\/\\/.*/,goog.i18n.bidi.isNeutralText=function(e,t){return e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t),goog.i18n.bidi.isRequiredLtrRe_.test(e)||!goog.i18n.bidi.hasAnyLtr(e)&&!goog.i18n.bidi.hasAnyRtl(e)},goog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$"),goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$"),goog.i18n.bidi.endsWithLtr=function(e,t){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr,goog.i18n.bidi.endsWithRtl=function(e,t){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl,goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i,goog.i18n.bidi.isRtlLanguage=function(e){return goog.i18n.bidi.rtlLocalesRe_.test(e)},goog.i18n.bidi.bracketGuardTextRe_=/(\\(.*?\\)+)|(\\[.*?\\]+)|(\\{.*?\\}+)|(<.*?>+)/g,goog.i18n.bidi.guardBracketInText=function(e,t){return t=(void 0===t?goog.i18n.bidi.hasAnyRtl(e):t)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM,e.replace(goog.i18n.bidi.bracketGuardTextRe_,t+"$&"+t)},goog.i18n.bidi.enforceRtlInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\\w+/,"$& dir=rtl"):"\\n<span dir=rtl>"+e+"</span>"},goog.i18n.bidi.enforceRtlInText=function(e){return goog.i18n.bidi.Format.RLE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.enforceLtrInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\\w+/,"$& dir=ltr"):"\\n<span dir=ltr>"+e+"</span>"},goog.i18n.bidi.enforceLtrInText=function(e){return goog.i18n.bidi.Format.LRE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.dimensionsRe_=/:\\s*([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)/g,goog.i18n.bidi.leftRe_=/left/gi,goog.i18n.bidi.rightRe_=/right/gi,goog.i18n.bidi.tempRe_=/%%%%/g,goog.i18n.bidi.mirrorCSS=function(e){return e.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)},goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\\u0591-\\u05f2])"/g,goog.i18n.bidi.singleQuoteSubstituteRe_=/([\\u0591-\\u05f2])\'/g,goog.i18n.bidi.normalizeHebrewQuote=function(e){return e.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1״").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1׳")},goog.i18n.bidi.wordSeparatorRe_=/\\s+/,goog.i18n.bidi.hasNumeralsRe_=/[\\d\\u06f0-\\u06f9]/,goog.i18n.bidi.rtlDetectionThreshold_=.4,goog.i18n.bidi.estimateDirection=function(e,t){var o=0,r=0,n=!1;for(e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t).split(goog.i18n.bidi.wordSeparatorRe_),t=0;t<e.length;t++){var s=e[t];goog.i18n.bidi.startsWithRtl(s)?(o++,r++):goog.i18n.bidi.isRequiredLtrRe_.test(s)?n=!0:goog.i18n.bidi.hasAnyLtr(s)?r++:goog.i18n.bidi.hasNumeralsRe_.test(s)&&(n=!0)}return 0==r?n?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:o/r>goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.detectRtlDirectionality=function(e,t){return goog.i18n.bidi.estimateDirection(e,t)==goog.i18n.bidi.Dir.RTL},goog.i18n.bidi.setElementDirAndAlign=function(e,t){e&&(t=goog.i18n.bidi.toDir(t))&&(e.style.textAlign=t==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,e.dir=t==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")},goog.i18n.bidi.setElementDirByTextDirectionality=function(e,t){switch(goog.i18n.bidi.estimateDirection(t)){case goog.i18n.bidi.Dir.LTR:e.dir="ltr";break;case goog.i18n.bidi.Dir.RTL:e.dir="rtl";break;default:e.removeAttribute("dir")}},goog.i18n.bidi.DirectionalString=function(){},goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_="",this.trustedURL_=null,this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0,goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()},goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.html.TrustedResourceUrl.prototype.cloneWithParams=function(e,t){var o=goog.html.TrustedResourceUrl.unwrap(this),r=(o=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(o))[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(o[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",o[2]||"",e)+goog.html.TrustedResourceUrl.stringifyParams_("#",r,t))},goog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"}),goog.html.TrustedResourceUrl.unwrap=function(e){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(e).toString()},goog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(e){return e instanceof goog.html.TrustedResourceUrl&&e.constructor===goog.html.TrustedResourceUrl&&e.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_:(goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:TrustedResourceUrl")},goog.html.TrustedResourceUrl.unwrapTrustedURL=function(e){return e.trustedURL_?e.trustedURL_:goog.html.TrustedResourceUrl.unwrap(e)},goog.html.TrustedResourceUrl.format=function(e,t){var o=goog.string.Const.unwrap(e);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(o))throw Error("Invalid TrustedResourceUrl format: "+o);return e=o.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,(function(e,r){if(!Object.prototype.hasOwnProperty.call(t,r))throw Error(\'Found marker, "\'+r+\'", in format string, "\'+o+\'", but no valid label mapping found in args: \'+JSON.stringify(t));return(e=t[r])instanceof goog.string.Const?goog.string.Const.unwrap(e):encodeURIComponent(String(e))})),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g,goog.html.TrustedResourceUrl.BASE_URL_=/^((https:)?\\/\\/[0-9a-z.:[\\]-]+\\/|\\/[^/\\\\]|[^:/\\\\%]+\\/|[^:/\\\\%]*[?#]|about:blank#)/i,goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/,goog.html.TrustedResourceUrl.formatWithParams=function(e,t,o,r){return goog.html.TrustedResourceUrl.format(e,t).cloneWithParams(o,r)},goog.html.TrustedResourceUrl.fromConstant=function(e){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.TrustedResourceUrl.fromConstants=function(e){for(var t="",o=0;o<e.length;o++)t+=goog.string.Const.unwrap(e[o]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(e){var t=new goog.html.TrustedResourceUrl;return t.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(e):e,goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY&&(t.trustedURL_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(e)),t},goog.html.TrustedResourceUrl.stringifyParams_=function(e,t,o){if(null==o)return t;if(goog.isString(o))return o?e+encodeURIComponent(o):"";for(var r in o){var n=o[r];n=goog.isArray(n)?n:[n];for(var s=0;s<n.length;s++){var i=n[s];null!=i&&(t||(t=e),t+=(t.length>e.length?"&":"")+encodeURIComponent(r)+"="+encodeURIComponent(String(i)))}}return t},goog.string.internal={},goog.string.internal.startsWith=function(e,t){return 0==e.lastIndexOf(t,0)},goog.string.internal.endsWith=function(e,t){var o=e.length-t.length;return 0<=o&&e.indexOf(t,o)==o},goog.string.internal.caseInsensitiveStartsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(0,t.length))},goog.string.internal.caseInsensitiveEndsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(e.length-t.length,t.length))},goog.string.internal.caseInsensitiveEquals=function(e,t){return e.toLowerCase()==t.toLowerCase()},goog.string.internal.isEmptyOrWhitespace=function(e){return/^[\\s\\xa0]*$/.test(e)},goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(e)[1]},goog.string.internal.caseInsensitiveCompare=function(e,t){return(e=String(e).toLowerCase())<(t=String(t).toLowerCase())?-1:e==t?0:1},goog.string.internal.newLineToBr=function(e,t){return e.replace(/(\\r\\n|\\r|\\n)/g,t?"<br />":"<br>")},goog.string.internal.htmlEscape=function(e,t){if(t)e=e.replace(goog.string.internal.AMP_RE_,"&").replace(goog.string.internal.LT_RE_,"<").replace(goog.string.internal.GT_RE_,">").replace(goog.string.internal.QUOT_RE_,""").replace(goog.string.internal.SINGLE_QUOTE_RE_,"'").replace(goog.string.internal.NULL_RE_,"�");else{if(!goog.string.internal.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.internal.AMP_RE_,"&")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.internal.LT_RE_,"<")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.internal.GT_RE_,">")),-1!=e.indexOf(\'"\')&&(e=e.replace(goog.string.internal.QUOT_RE_,""")),-1!=e.indexOf("\'")&&(e=e.replace(goog.string.internal.SINGLE_QUOTE_RE_,"'")),-1!=e.indexOf("\\0")&&(e=e.replace(goog.string.internal.NULL_RE_,"�"))}return e},goog.string.internal.AMP_RE_=/&/g,goog.string.internal.LT_RE_=/</g,goog.string.internal.GT_RE_=/>/g,goog.string.internal.QUOT_RE_=/"/g,goog.string.internal.SINGLE_QUOTE_RE_=/\'/g,goog.string.internal.NULL_RE_=/\\x00/g,goog.string.internal.ALL_RE_=/[\\x00&<>"\']/,goog.string.internal.whitespaceEscape=function(e,t){return goog.string.internal.newLineToBr(e.replace(/ /g,"  "),t)},goog.string.internal.contains=function(e,t){return-1!=e.indexOf(t)},goog.string.internal.caseInsensitiveContains=function(e,t){return goog.string.internal.contains(e.toLowerCase(),t.toLowerCase())},goog.string.internal.compareVersions=function(e,t){var o=0;e=goog.string.internal.trim(String(e)).split("."),t=goog.string.internal.trim(String(t)).split(".");for(var r=Math.max(e.length,t.length),n=0;0==o&&n<r;n++){var s=e[n]||"",i=t[n]||"";do{if(s=/(\\d*)(\\D*)(.*)/.exec(s)||["","","",""],i=/(\\d*)(\\D*)(.*)/.exec(i)||["","","",""],0==s[0].length&&0==i[0].length)break;o=0==s[1].length?0:parseInt(s[1],10);var a=0==i[1].length?0:parseInt(i[1],10);o=goog.string.internal.compareElements_(o,a)||goog.string.internal.compareElements_(0==s[2].length,0==i[2].length)||goog.string.internal.compareElements_(s[2],i[2]),s=s[3],i=i[3]}while(0==o)}return o},goog.string.internal.compareElements_=function(e,t){return e<t?-1:e>t?1:0},goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeUrlWrappedValue_="",this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez",goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0,goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()},goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeUrlWrappedValue_+"}"}),goog.html.SafeUrl.unwrap=function(e){return goog.html.SafeUrl.unwrapTrustedURL(e).toString()},goog.html.SafeUrl.unwrapTrustedURL=function(e){return e instanceof goog.html.SafeUrl&&e.constructor===goog.html.SafeUrl&&e.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeUrlWrappedValue_:(goog.asserts.fail("expected object of type SafeUrl, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeUrl")},goog.html.SafeUrl.fromConstant=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:audio\\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-wav|wav|webm)|image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\\/csv|video\\/(?:mpeg|mp4|ogg|webm|quicktime))(?:;\\w+=(?:\\w+|"[\\w;=]+"))*$/i,goog.html.SafeUrl.isSafeMimeType=function(e){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(e)},goog.html.SafeUrl.fromBlob=function(e){return e=goog.html.SAFE_MIME_TYPE_PATTERN_.test(e.type)?goog.fs.url.createObjectUrl(e):goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.DATA_URL_PATTERN_=/^data:([^,]*);base64,[a-z0-9+\\/]+=*$/i,goog.html.SafeUrl.fromDataUrl=function(e){var t=(e=e.replace(/(%0A|%0D)/g,"")).match(goog.html.DATA_URL_PATTERN_);return t=t&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(t[1]),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t?e:goog.html.SafeUrl.INNOCUOUS_STRING)},goog.html.SafeUrl.fromTelUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"tel:")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SIP_URL_PATTERN_=/^sip[s]?:[+a-z0-9_.!$%&\'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$/i,goog.html.SafeUrl.fromSipUrl=function(e){return goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(e))||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromFacebookMessengerUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"fb-messenger://share")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromWhatsAppUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"whatsapp://send")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromSmsUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.isSmsUrlBodyValid_=function(e){var t=e.indexOf("#");if(0<t&&(e=e.substring(0,t)),!(t=e.match(/[?&]body=/gi)))return!0;if(1<t.length)return!1;if(!(e=e.match(/[?&]body=([^&]*)/)[1]))return!0;try{decodeURIComponent(e)}catch(e){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(e)},goog.html.SafeUrl.fromSshUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"ssh://")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.sanitizeChromeExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(e,t){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,e,t)},goog.html.SafeUrl.sanitizeExtensionUrl_=function(e,t,o){return(e=e.exec(t))?(e=e[1],-1==(o instanceof goog.string.Const?[goog.string.Const.unwrap(o)]:o.map((function(e){return goog.string.Const.unwrap(e)}))).indexOf(e)&&(t=goog.html.SafeUrl.INNOCUOUS_STRING)):t=goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.SafeUrl.fromTrustedResourceUrl=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(e))},goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_,goog.html.SafeUrl.sanitize=function(e){return e instanceof goog.html.SafeUrl?e:(e="object"==typeof e&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SAFE_URL_PATTERN_.test(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeUrl.sanitizeAssertUnchanged=function(e,t){return e instanceof goog.html.SafeUrl?e:(e="object"==typeof e&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),t&&/^data:/i.test(e)&&(t=goog.html.SafeUrl.fromDataUrl(e)).getTypedStringValue()==e?t:(goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(e),"%s does not match the safe URL pattern",e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)))},goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(e){var t=new goog.html.SafeUrl;return t.privateDoNotAccessOrElseSafeUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(e):e,t},goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank"),goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_="",this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyle.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeStyle.EMPTY:(goog.asserts.assert(goog.string.internal.endsWith(e,";"),"Last character of style string is not \';\': "+e),goog.asserts.assert(goog.string.internal.contains(e,":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+e),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_},goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return"SafeStyle{"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+"}"}),goog.html.SafeStyle.unwrap=function(e){return e instanceof goog.html.SafeStyle&&e.constructor===goog.html.SafeStyle&&e.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleWrappedValue_:(goog.asserts.fail("expected object of type SafeStyle, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeStyle")},goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_=e,this},goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(""),goog.html.SafeStyle.INNOCUOUS_STRING="zClosurez",goog.html.SafeStyle.create=function(e){var t,o="";for(t in e){if(!/^[-_a-zA-Z0-9]+$/.test(t))throw Error("Name allows only [-_a-zA-Z0-9], got: "+t);var r=e[t];null!=r&&(o+=t+":"+(r=goog.isArray(r)?goog.array.map(r,goog.html.SafeStyle.sanitizePropertyValue_).join(" "):goog.html.SafeStyle.sanitizePropertyValue_(r))+";")}return o?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(o):goog.html.SafeStyle.EMPTY},goog.html.SafeStyle.sanitizePropertyValue_=function(e){if(e instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(e).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';if(e=e instanceof goog.string.Const?goog.string.Const.unwrap(e):goog.html.SafeStyle.sanitizePropertyValueString_(String(e)),/[{;}]/.test(e))throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.",[e]);return e},goog.html.SafeStyle.sanitizePropertyValueString_=function(e){var t=e.replace(goog.html.SafeStyle.FUNCTIONS_RE_,"$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_,"$1").replace(goog.html.SafeStyle.URL_RE_,"url");return goog.html.SafeStyle.VALUE_RE_.test(t)?goog.html.SafeStyle.COMMENT_RE_.test(e)?(goog.asserts.fail("String value disallows comments, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):goog.html.SafeStyle.hasBalancedQuotes_(e)?goog.html.SafeStyle.hasBalancedSquareBrackets_(e)?goog.html.SafeStyle.sanitizeUrl_(e):(goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value requires balanced quotes, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value allows only "+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+" and simple functions, got: "+e),goog.html.SafeStyle.INNOCUOUS_STRING)},goog.html.SafeStyle.hasBalancedQuotes_=function(e){for(var t=!0,o=!0,r=0;r<e.length;r++){var n=e.charAt(r);"\'"==n&&o?t=!t:\'"\'==n&&t&&(o=!o)}return t&&o},goog.html.SafeStyle.hasBalancedSquareBrackets_=function(e){for(var t=!0,o=/^[-_a-zA-Z0-9]$/,r=0;r<e.length;r++){var n=e.charAt(r);if("]"==n){if(t)return!1;t=!0}else if("["==n){if(!t)return!1;t=!1}else if(!t&&!o.test(n))return!1}return t},goog.html.SafeStyle.VALUE_ALLOWED_CHARS_="[-,.\\"\'%_!# a-zA-Z0-9\\\\[\\\\]]",goog.html.SafeStyle.VALUE_RE_=new RegExp("^"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+"+$"),goog.html.SafeStyle.URL_RE_=/\\b(url\\([ \\t\\n]*)(\'[ -&(-\\[\\]-~]*\'|"[ !#-\\[\\]-~]*"|[!#-&*-\\[\\]-~]*)([ \\t\\n]*\\))/g,goog.html.SafeStyle.FUNCTIONS_RE_=/\\b(hsl|hsla|rgb|rgba|matrix|calc|minmax|fit-content|repeat|(rotate|scale|translate)(X|Y|Z|3d)?)\\([-+*/0-9a-z.%\\[\\], ]+\\)/g,goog.html.SafeStyle.COMMENT_RE_=/\\/\\*/,goog.html.SafeStyle.sanitizeUrl_=function(e){return e.replace(goog.html.SafeStyle.URL_RE_,(function(e,t,o,r){var n="";return o=o.replace(/^([\'"])(.*)\\1$/,(function(e,t,o){return n=t,o})),e=goog.html.SafeUrl.sanitize(o).getTypedStringValue(),t+n+e+n+r}))},goog.html.SafeStyle.concat=function(e){var t="",o=function(e){goog.isArray(e)?goog.array.forEach(e,o):t+=goog.html.SafeStyle.unwrap(e)};return goog.array.forEach(arguments,o),t?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t):goog.html.SafeStyle.EMPTY},goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_="",this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_},goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0,goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeStyleSheet.createRule=function(e,t){if(goog.string.internal.contains(e,"<"))throw Error("Selector does not allow \'<\', got: "+e);var o=e.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(o))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+e);if(!goog.html.SafeStyleSheet.hasBalancedBrackets_(o))throw Error("() and [] in selector must be balanced, got: "+e);return t instanceof goog.html.SafeStyle||(t=goog.html.SafeStyle.create(t)),e=e+"{"+goog.html.SafeStyle.unwrap(t).replace(/</g,"\\\\3C ")+"}",goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeStyleSheet.hasBalancedBrackets_=function(e){for(var t={"(":")","[":"]"},o=[],r=0;r<e.length;r++){var n=e[r];if(t[n])o.push(t[n]);else if(goog.object.contains(t,n)&&o.pop()!=n)return!1}return 0==o.length},goog.html.SafeStyleSheet.concat=function(e){var t="",o=function(e){goog.isArray(e)?goog.array.forEach(e,o):t+=goog.html.SafeStyleSheet.unwrap(e)};return goog.array.forEach(arguments,o),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.SafeStyleSheet.fromConstant=function(e){return 0===(e=goog.string.Const.unwrap(e)).length?goog.html.SafeStyleSheet.EMPTY:(goog.asserts.assert(!goog.string.internal.contains(e,"<"),"Forbidden \'<\' character in style sheet string: "+e),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(e))},goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_},goog.DEBUG&&(goog.html.SafeStyleSheet.prototype.toString=function(){return"SafeStyleSheet{"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+"}"}),goog.html.SafeStyleSheet.unwrap=function(e){return e instanceof goog.html.SafeStyleSheet&&e.constructor===goog.html.SafeStyleSheet&&e.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_:(goog.asserts.fail("expected object of type SafeStyleSheet, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeStyleSheet")},goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(e){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(e)},goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=e,this},goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(""),goog.labs={},goog.labs.userAgent={},goog.labs.userAgent.util={},goog.labs.userAgent.util.getNativeUserAgentString_=function(){var e=goog.labs.userAgent.util.getNavigator_();return e&&(e=e.userAgent)?e:""},goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator},goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_(),goog.labs.userAgent.util.setUserAgent=function(e){goog.labs.userAgent.util.userAgent_=e||goog.labs.userAgent.util.getNativeUserAgentString_()},goog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_},goog.labs.userAgent.util.matchUserAgent=function(e){var t=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.contains(t,e)},goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(e){var t=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.caseInsensitiveContains(t,e)},goog.labs.userAgent.util.extractVersionTuples=function(e){for(var t,o=/(\\w[\\w ]+)\\/([^\\s]+)\\s*(?:\\((.*?)\\))?/g,r=[];t=o.exec(e);)r.push([t[1],t[2],t[3]||void 0]);return r},goog.labs.userAgent.browser={},goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")},goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.browser.matchEdgeHtml_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.browser.matchEdgeChromium_=function(){return goog.labs.userAgent.util.matchUserAgent("Edg/")},goog.labs.userAgent.browser.matchOperaChromium_=function(){return goog.labs.userAgent.util.matchUserAgent("OPR")},goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")||goog.labs.userAgent.util.matchUserAgent("FxiOS")},goog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdgeHtml_()||goog.labs.userAgent.browser.matchEdgeChromium_()||goog.labs.userAgent.browser.matchOperaChromium_()||goog.labs.userAgent.browser.matchFirefox_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))},goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")},goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&!goog.labs.userAgent.browser.matchFirefox_()&&goog.labs.userAgent.util.matchUserAgent("AppleWebKit")},goog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&&!goog.labs.userAgent.browser.matchEdgeHtml_()},goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())},goog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_,goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_,goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdgeHtml_,goog.labs.userAgent.browser.isEdgeChromium=goog.labs.userAgent.browser.matchEdgeChromium_,goog.labs.userAgent.browser.isOperaChromium=goog.labs.userAgent.browser.matchOperaChromium_,goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_,goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_,goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_,goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_,goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_,goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_,goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")},goog.labs.userAgent.browser.getVersion=function(){function e(e){return e=goog.array.find(e,r),o[e]||""}var t=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(t);t=goog.labs.userAgent.util.extractVersionTuples(t);var o={};goog.array.forEach(t,(function(e){o[e[0]]=e[1]}));var r=goog.partial(goog.object.containsKey,o);return goog.labs.userAgent.browser.isOpera()?e(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?e(["Edge"]):goog.labs.userAgent.browser.isEdgeChromium()?e(["Edg"]):goog.labs.userAgent.browser.isChrome()?e(["Chrome","CriOS"]):(t=t[2])&&t[1]||""},goog.labs.userAgent.browser.isVersionOrHigher=function(e){return 0<=goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(),e)},goog.labs.userAgent.browser.getIEVersion_=function(e){var t=/rv: *([\\d\\.]*)/.exec(e);if(t&&t[1])return t[1];t="";var o=/MSIE +([\\d\\.]+)/.exec(e);if(o&&o[1])if(e=/Trident\\/(\\d.\\d)/.exec(e),"7.0"==o[1])if(e&&e[1])switch(e[1]){case"4.0":t="8.0";break;case"5.0":t="9.0";break;case"6.0":t="10.0";break;case"7.0":t="11.0"}else t="7.0";else t=o[1];return t},goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="",this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_,this.dir_=null},goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_},goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0,goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()},goog.DEBUG&&(goog.html.SafeHtml.prototype.toString=function(){return"SafeHtml{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"}),goog.html.SafeHtml.unwrap=function(e){return goog.html.SafeHtml.unwrapTrustedHTML(e).toString()},goog.html.SafeHtml.unwrapTrustedHTML=function(e){return e instanceof goog.html.SafeHtml&&e.constructor===goog.html.SafeHtml&&e.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_?e.privateDoNotAccessOrElseSafeHtmlWrappedValue_:(goog.asserts.fail("expected object of type SafeHtml, got \'"+e+"\' of type "+goog.typeOf(e)),"type_error:SafeHtml")},goog.html.SafeHtml.htmlEscape=function(e){if(e instanceof goog.html.SafeHtml)return e;var t="object"==typeof e,o=null;return t&&e.implementsGoogI18nBidiDirectionalString&&(o=e.getDirection()),e=t&&e.implementsGoogStringTypedString?e.getTypedStringValue():String(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(e),o)},goog.html.SafeHtml.htmlEscapePreservingNewlines=function(e){return e instanceof goog.html.SafeHtml?e:(e=goog.html.SafeHtml.htmlEscape(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(e)),e.getDirection()))},goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(e){return e instanceof goog.html.SafeHtml?e:(e=goog.html.SafeHtml.htmlEscape(e),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(e)),e.getDirection()))},goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape,goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/,goog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.html.SafeHtml.create=function(e,t,o){return goog.html.SafeHtml.verifyTagName(String(e)),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(e),t,o)},goog.html.SafeHtml.verifyTagName=function(e){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(e))throw Error("Invalid tag name <"+e+">.");if(e.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error("Tag name <"+e+"> is not allowed for SafeHtml.")},goog.html.SafeHtml.createIframe=function(e,t,o,r){e&&goog.html.TrustedResourceUrl.unwrap(e);var n={};return n.src=e||null,n.srcdoc=t&&goog.html.SafeHtml.unwrap(t),e=goog.html.SafeHtml.combineAttributes(n,{sandbox:""},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.createSandboxIframe=function(e,t,o,r){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error("The browser does not support sandboxed iframes.");var n={};return n.src=e?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)):null,n.srcdoc=t||null,n.sandbox="",e=goog.html.SafeHtml.combineAttributes(n,{},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype},goog.html.SafeHtml.createScriptSrc=function(e,t){return goog.html.TrustedResourceUrl.unwrap(e),e=goog.html.SafeHtml.combineAttributes({src:e},{},t),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",e)},goog.html.SafeHtml.createScript=function(e,t){for(var o in t){var r=o.toLowerCase();if("language"==r||"src"==r||"text"==r||"type"==r)throw Error(\'Cannot set "\'+r+\'" attribute\')}for(o="",e=goog.array.concat(e),r=0;r<e.length;r++)o+=goog.html.SafeScript.unwrap(e[r]);return e=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",t,e)},goog.html.SafeHtml.createStyle=function(e,t){t=goog.html.SafeHtml.combineAttributes({type:"text/css"},{},t);var o="";e=goog.array.concat(e);for(var r=0;r<e.length;r++)o+=goog.html.SafeStyleSheet.unwrap(e[r]);return e=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(o,goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",t,e)},goog.html.SafeHtml.createMetaRefresh=function(e,t){return e=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)),(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&&goog.string.internal.contains(e,";")&&(e="\'"+e.replace(/\'/g,"%27")+"\'"),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",{"http-equiv":"refresh",content:(t||0)+"; url="+e})},goog.html.SafeHtml.getAttrNameAndValue_=function(e,t,o){if(o instanceof goog.string.Const)o=goog.string.Const.unwrap(o);else if("style"==t.toLowerCase())o=goog.html.SafeHtml.getStyleValue_(o);else{if(/^on/i.test(t))throw Error(\'Attribute "\'+t+\'" requires goog.string.Const value, "\'+o+\'" given.\');if(t.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(o instanceof goog.html.TrustedResourceUrl)o=goog.html.TrustedResourceUrl.unwrap(o);else if(o instanceof goog.html.SafeUrl)o=goog.html.SafeUrl.unwrap(o);else{if(!goog.isString(o))throw Error(\'Attribute "\'+t+\'" on tag "\'+e+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+o+\'" given.\');o=goog.html.SafeUrl.sanitize(o).getTypedStringValue()}}return o.implementsGoogStringTypedString&&(o=o.getTypedStringValue()),goog.asserts.assert(goog.isString(o)||goog.isNumber(o),"String or number value expected, got "+typeof o+" with value: "+o),t+\'="\'+goog.string.internal.htmlEscape(String(o))+\'"\'},goog.html.SafeHtml.getStyleValue_=function(e){if(!goog.isObject(e))throw Error(\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof e+" given: "+e);return e instanceof goog.html.SafeStyle||(e=goog.html.SafeStyle.create(e)),goog.html.SafeStyle.unwrap(e)},goog.html.SafeHtml.createWithDir=function(e,t,o,r){return(t=goog.html.SafeHtml.create(t,o,r)).dir_=e,t},goog.html.SafeHtml.join=function(e,t){var o=(e=goog.html.SafeHtml.htmlEscape(e)).getDirection(),r=[],n=function(e){goog.isArray(e)?goog.array.forEach(e,n):(e=goog.html.SafeHtml.htmlEscape(e),r.push(goog.html.SafeHtml.unwrap(e)),e=e.getDirection(),o==goog.i18n.bidi.Dir.NEUTRAL?o=e:e!=goog.i18n.bidi.Dir.NEUTRAL&&o!=e&&(o=null))};return goog.array.forEach(t,n),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(r.join(goog.html.SafeHtml.unwrap(e)),o)},goog.html.SafeHtml.concat=function(e){return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY,Array.prototype.slice.call(arguments))},goog.html.SafeHtml.concatWithDir=function(e,t){var o=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));return o.dir_=e,o},goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={},goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(e,t){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(e,t)},goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(e,t){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(e):e,this.dir_=t,this},goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(e,t,o){var r=null,n="<"+e+goog.html.SafeHtml.stringifyAttributes(e,t);return goog.isDefAndNotNull(o)?goog.isArray(o)||(o=[o]):o=[],goog.dom.tags.isVoidTag(e.toLowerCase())?(goog.asserts.assert(!o.length,"Void tag <"+e+"> does not allow content."),n+=">"):(r=goog.html.SafeHtml.concat(o),n+=">"+goog.html.SafeHtml.unwrap(r)+"</"+e+">",r=r.getDirection()),(e=t&&t.dir)&&(r=/^(ltr|rtl|auto)$/i.test(e)?goog.i18n.bidi.Dir.NEUTRAL:null),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(n,r)},goog.html.SafeHtml.stringifyAttributes=function(e,t){var o="";if(t)for(var r in t){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(r))throw Error(\'Invalid attribute name "\'+r+\'".\');var n=t[r];goog.isDefAndNotNull(n)&&(o+=" "+goog.html.SafeHtml.getAttrNameAndValue_(e,r,n))}return o},goog.html.SafeHtml.combineAttributes=function(e,t,o){var r,n={};for(r in e)goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=e[r];for(r in t)goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=t[r];for(r in o){var s=r.toLowerCase();if(s in e)throw Error(\'Cannot override "\'+s+\'" attribute, got "\'+r+\'" with value "\'+o[r]+\'"\');s in t&&delete n[s],n[r]=o[r]}return n},goog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>",goog.i18n.bidi.Dir.NEUTRAL),goog.html.uncheckedconversions={},goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(e,t,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(t,o||null)},goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.dom.safe={},goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"},goog.dom.safe.insertAdjacentHtml=function(e,t,o){e.insertAdjacentHTML(t,goog.html.SafeHtml.unwrapTrustedHTML(o))},goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue((function(){if(goog.DEBUG&&"undefined"==typeof document)return!1;var e=document.createElement("div"),t=document.createElement("div");return t.appendChild(document.createElement("div")),e.appendChild(t),!(goog.DEBUG&&!e.firstChild||(t=e.firstChild.firstChild,e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY),t.parentElement))})),goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(e,t){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;e.lastChild;)e.removeChild(e.lastChild);e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setInnerHtml=function(e,t){if(goog.asserts.ENABLE_ASSERTS){var o=e.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[o])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+e.tagName+".")}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(e,t)},goog.dom.safe.setOuterHtml=function(e,t){e.outerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setFormElementAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLFormElement(e).action=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setButtonFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLButtonElement(e).formAction=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setInputFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLInputElement(e).formAction=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setStyle=function(e,t){e.style.cssText=goog.html.SafeStyle.unwrap(t)},goog.dom.safe.documentWrite=function(e,t){e.write(goog.html.SafeHtml.unwrapTrustedHTML(t))},goog.dom.safe.setAnchorHref=function(e,t){goog.dom.asserts.assertIsHTMLAnchorElement(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setImageSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLImageElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:image\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setAudioSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLAudioElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:audio\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setVideoSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLVideoElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:video\\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.setEmbedSrc=function(e,t){goog.dom.asserts.assertIsHTMLEmbedElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setFrameSrc=function(e,t){goog.dom.asserts.assertIsHTMLFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)},goog.dom.safe.setIframeSrc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)},goog.dom.safe.setIframeSrcdoc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.srcdoc=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setLinkHrefAndRel=function(e,t,o){goog.dom.asserts.assertIsHTMLLinkElement(e),e.rel=o,goog.string.internal.caseInsensitiveContains(o,"stylesheet")?(goog.asserts.assert(t instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),e.href=goog.html.TrustedResourceUrl.unwrapTrustedURL(t)):e.href=t instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrapTrustedURL(t):t instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrapTrustedURL(t):goog.html.SafeUrl.unwrapTrustedURL(goog.html.SafeUrl.sanitizeAssertUnchanged(t))},goog.dom.safe.setObjectData=function(e,t){goog.dom.asserts.assertIsHTMLObjectElement(e),e.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setScriptSrc=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t),(t=goog.getScriptNonce())&&e.setAttribute("nonce",t)},goog.dom.safe.setScriptContent=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.text=goog.html.SafeScript.unwrapTrustedScript(t),(t=goog.getScriptNonce())&&e.setAttribute("nonce",t)},goog.dom.safe.setLocationHref=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrapTrustedURL(t)},goog.dom.safe.assignLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.assign(goog.html.SafeUrl.unwrapTrustedURL(t))},goog.dom.safe.replaceLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.replace(goog.html.SafeUrl.unwrapTrustedURL(t))},goog.dom.safe.openInWindow=function(e,t,o,r,n){return e=e instanceof goog.html.SafeUrl?e:goog.html.SafeUrl.sanitizeAssertUnchanged(e),(t||goog.global).open(goog.html.SafeUrl.unwrapTrustedURL(e),o?goog.string.Const.unwrap(o):"",r,n)},goog.dom.safe.parseFromStringHtml=function(e,t){return goog.dom.safe.parseFromString(e,t,"text/html")},goog.dom.safe.parseFromString=function(e,t,o){return e.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(t),o)},goog.dom.safe.createImageFromBlob=function(e){if(!/^image\\/.*/g.test(e.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var t=goog.global.URL.createObjectURL(e);return(e=new goog.global.Image).onload=function(){goog.global.URL.revokeObjectURL(t)},goog.dom.safe.setImageSrc(e,goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."),t)),e},goog.string.DETECT_DOUBLE_ESCAPING=!1,goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1,goog.string.Unicode={NBSP:" "},goog.string.startsWith=goog.string.internal.startsWith,goog.string.endsWith=goog.string.internal.endsWith,goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith,goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith,goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals,goog.string.subs=function(e,t){for(var o=e.split("%s"),r="",n=Array.prototype.slice.call(arguments,1);n.length&&1<o.length;)r+=o.shift()+n.shift();return r+o.join("%s")},goog.string.collapseWhitespace=function(e){return e.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")},goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace,goog.string.isEmptyString=function(e){return 0==e.length},goog.string.isEmpty=goog.string.isEmptyOrWhitespace,goog.string.isEmptyOrWhitespaceSafe=function(e){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(e))},goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe,goog.string.isBreakingWhitespace=function(e){return!/[^\\t\\n\\r ]/.test(e)},goog.string.isAlpha=function(e){return!/[^a-zA-Z]/.test(e)},goog.string.isNumeric=function(e){return!/[^0-9]/.test(e)},goog.string.isAlphaNumeric=function(e){return!/[^a-zA-Z0-9]/.test(e)},goog.string.isSpace=function(e){return" "==e},goog.string.isUnicodeChar=function(e){return 1==e.length&&" "<=e&&"~">=e||""<=e&&"�">=e},goog.string.stripNewlines=function(e){return e.replace(/(\\r\\n|\\r|\\n)+/g," ")},goog.string.canonicalizeNewlines=function(e){return e.replace(/(\\r\\n|\\r|\\n)/g,"\\n")},goog.string.normalizeWhitespace=function(e){return e.replace(/\\xa0|\\s/g," ")},goog.string.normalizeSpaces=function(e){return e.replace(/\\xa0|[ \\t]+/g," ")},goog.string.collapseBreakingSpaces=function(e){return e.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")},goog.string.trim=goog.string.internal.trim,goog.string.trimLeft=function(e){return e.replace(/^[\\s\\xa0]+/,"")},goog.string.trimRight=function(e){return e.replace(/[\\s\\xa0]+$/,"")},goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare,goog.string.numberAwareCompare_=function(e,t,o){if(e==t)return 0;if(!e)return-1;if(!t)return 1;for(var r=e.toLowerCase().match(o),n=t.toLowerCase().match(o),s=Math.min(r.length,n.length),i=0;i<s;i++){o=r[i];var a=n[i];if(o!=a)return e=parseInt(o,10),!isNaN(e)&&(t=parseInt(a,10),!isNaN(t)&&e-t)?e-t:o<a?-1:1}return r.length!=n.length?r.length-n.length:e<t?-1:1},goog.string.intAwareCompare=function(e,t){return goog.string.numberAwareCompare_(e,t,/\\d+|\\D+/g)},goog.string.floatAwareCompare=function(e,t){return goog.string.numberAwareCompare_(e,t,/\\d+|\\.\\d+|\\D+/g)},goog.string.numerateCompare=goog.string.floatAwareCompare,goog.string.urlEncode=function(e){return encodeURIComponent(String(e))},goog.string.urlDecode=function(e){return decodeURIComponent(e.replace(/\\+/g," "))},goog.string.newLineToBr=goog.string.internal.newLineToBr,goog.string.htmlEscape=function(e,t){return e=goog.string.internal.htmlEscape(e,t),goog.string.DETECT_DOUBLE_ESCAPING&&(e=e.replace(goog.string.E_RE_,"e")),e},goog.string.E_RE_=/e/g,goog.string.unescapeEntities=function(e){return goog.string.contains(e,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(e):goog.string.unescapePureXmlEntities_(e):e},goog.string.unescapeEntitiesWithDocument=function(e,t){return goog.string.contains(e,"&")?goog.string.unescapeEntitiesUsingDom_(e,t):e},goog.string.unescapeEntitiesUsingDom_=function(e,t){var o={"&":"&","<":"<",">":">",""":\'"\'},r=t?t.createElement("div"):goog.global.document.createElement("div");return e.replace(goog.string.HTML_ENTITY_PATTERN_,(function(e,t){var n=o[e];return n||("#"==t.charAt(0)&&(t=Number("0"+t.substr(1)),isNaN(t)||(n=String.fromCharCode(t))),n||(goog.dom.safe.setInnerHtml(r,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),e+" ")),n=r.firstChild.nodeValue.slice(0,-1)),o[e]=n)}))},goog.string.unescapePureXmlEntities_=function(e){return e.replace(/&([^;]+);/g,(function(e,t){switch(t){case"amp":return"&";case"lt":return"<";case"gt":return">";case"quot":return\'"\';default:return"#"!=t.charAt(0)||(t=Number("0"+t.substr(1)),isNaN(t))?e:String.fromCharCode(t)}}))},goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g,goog.string.whitespaceEscape=function(e,t){return goog.string.newLineToBr(e.replace(/ /g,"  "),t)},goog.string.preserveSpaces=function(e){return e.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)},goog.string.stripQuotes=function(e,t){for(var o=t.length,r=0;r<o;r++){var n=1==o?t:t.charAt(r);if(e.charAt(0)==n&&e.charAt(e.length-1)==n)return e.substring(1,e.length-1)}return e},goog.string.truncate=function(e,t,o){return o&&(e=goog.string.unescapeEntities(e)),e.length>t&&(e=e.substring(0,t-3)+"..."),o&&(e=goog.string.htmlEscape(e)),e},goog.string.truncateMiddle=function(e,t,o,r){if(o&&(e=goog.string.unescapeEntities(e)),r&&e.length>t){r>t&&(r=t);var n=e.length-r;e=e.substring(0,t-r)+"..."+e.substring(n)}else e.length>t&&(r=Math.floor(t/2),n=e.length-r,e=e.substring(0,r+t%2)+"..."+e.substring(n));return o&&(e=goog.string.htmlEscape(e)),e},goog.string.specialEscapeChars_={"\\0":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"},goog.string.jsEscapeCache_={"\'":"\\\\\'"},goog.string.quote=function(e){e=String(e);for(var t=[\'"\'],o=0;o<e.length;o++){var r=e.charAt(o),n=r.charCodeAt(0);t[o+1]=goog.string.specialEscapeChars_[r]||(31<n&&127>n?r:goog.string.escapeChar(r))}return t.push(\'"\'),t.join("")},goog.string.escapeString=function(e){for(var t=[],o=0;o<e.length;o++)t[o]=goog.string.escapeChar(e.charAt(o));return t.join("")},goog.string.escapeChar=function(e){if(e in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[e];if(e in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[e]=goog.string.specialEscapeChars_[e];var t=e.charCodeAt(0);if(31<t&&127>t)var o=e;else 256>t?(o="\\\\x",(16>t||256<t)&&(o+="0")):(o="\\\\u",4096>t&&(o+="0")),o+=t.toString(16).toUpperCase();return goog.string.jsEscapeCache_[e]=o},goog.string.contains=goog.string.internal.contains,goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains,goog.string.countOf=function(e,t){return e&&t?e.split(t).length-1:0},goog.string.removeAt=function(e,t,o){var r=e;return 0<=t&&t<e.length&&0<o&&(r=e.substr(0,t)+e.substr(t+o,e.length-t-o)),r},goog.string.remove=function(e,t){return e.replace(t,"")},goog.string.removeAll=function(e,t){return t=new RegExp(goog.string.regExpEscape(t),"g"),e.replace(t,"")},goog.string.replaceAll=function(e,t,o){return t=new RegExp(goog.string.regExpEscape(t),"g"),e.replace(t,o.replace(/\\$/g,"$$$$"))},goog.string.regExpEscape=function(e){return String(e).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")},goog.string.repeat=String.prototype.repeat?function(e,t){return e.repeat(t)}:function(e,t){return Array(t+1).join(e)},goog.string.padNumber=function(e,t,o){return-1==(o=(e=goog.isDef(o)?e.toFixed(o):String(e)).indexOf("."))&&(o=e.length),goog.string.repeat("0",Math.max(0,t-o))+e},goog.string.makeSafe=function(e){return null==e?"":String(e)},goog.string.buildString=function(e){return Array.prototype.join.call(arguments,"")},goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)},goog.string.compareVersions=goog.string.internal.compareVersions,goog.string.hashCode=function(e){for(var t=0,o=0;o<e.length;++o)t=31*t+e.charCodeAt(o)>>>0;return t},goog.string.uniqueStringCounter_=2147483648*Math.random()|0,goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++},goog.string.toNumber=function(e){var t=Number(e);return 0==t&&goog.string.isEmptyOrWhitespace(e)?NaN:t},goog.string.isLowerCamelCase=function(e){return/^[a-z]+([A-Z][a-z]*)*$/.test(e)},goog.string.isUpperCamelCase=function(e){return/^([A-Z][a-z]*)+$/.test(e)},goog.string.toCamelCase=function(e){return String(e).replace(/\\-([a-z])/g,(function(e,t){return t.toUpperCase()}))},goog.string.toSelectorCase=function(e){return String(e).replace(/([A-Z])/g,"-$1").toLowerCase()},goog.string.toTitleCase=function(e,t){return t=goog.isString(t)?goog.string.regExpEscape(t):"\\\\s",e.replace(new RegExp("(^"+(t?"|["+t+"]+":"")+")([a-z])","g"),(function(e,t,o){return t+o.toUpperCase()}))},goog.string.capitalize=function(e){return String(e.charAt(0)).toUpperCase()+String(e.substr(1)).toLowerCase()},goog.string.parseInt=function(e){return isFinite(e)&&(e=String(e)),goog.isString(e)?/^\\s*-?0x/i.test(e)?parseInt(e,16):parseInt(e,10):NaN},goog.string.splitLimit=function(e,t,o){e=e.split(t);for(var r=[];0<o&&e.length;)r.push(e.shift()),o--;return e.length&&r.push(e.join(t)),r},goog.string.lastComponent=function(e,t){if(!t)return e;"string"==typeof t&&(t=[t]);for(var o=-1,r=0;r<t.length;r++)if(""!=t[r]){var n=e.lastIndexOf(t[r]);n>o&&(o=n)}return-1==o?e:e.slice(o+1)},goog.string.editDistance=function(e,t){var o=[],r=[];if(e==t)return 0;if(!e.length||!t.length)return Math.max(e.length,t.length);for(var n=0;n<t.length+1;n++)o[n]=n;for(n=0;n<e.length;n++){r[0]=n+1;for(var s=0;s<t.length;s++)r[s+1]=Math.min(r[s]+1,o[s+1]+1,o[s]+Number(e[n]!=t[s]));for(s=0;s<o.length;s++)o[s]=r[s]}return r[t.length]},goog.labs.userAgent.engine={},goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")},goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")},goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")},goog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()},goog.labs.userAgent.engine.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent();if(e){e=goog.labs.userAgent.util.extractVersionTuples(e);var t,o=goog.labs.userAgent.engine.getEngineTuple_(e);if(o)return"Gecko"==o[0]?goog.labs.userAgent.engine.getVersionForKey_(e,"Firefox"):o[1];if((e=e[0])&&(t=e[2])&&(t=/Trident\\/([^\\s;]+)/.exec(t)))return t[1]}return""},goog.labs.userAgent.engine.getEngineTuple_=function(e){if(!goog.labs.userAgent.engine.isEdge())return e[1];for(var t=0;t<e.length;t++){var o=e[t];if("Edge"==o[0])return o}},goog.labs.userAgent.engine.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),e)},goog.labs.userAgent.engine.getVersionForKey_=function(e,t){return(e=goog.array.find(e,(function(e){return t==e[0]})))&&e[1]||""},goog.labs.userAgent.platform={},goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent("Android")},goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent("iPod")},goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent("iPhone")&&!goog.labs.userAgent.util.matchUserAgent("iPod")&&!goog.labs.userAgent.util.matchUserAgent("iPad")},goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent("iPad")},goog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()},goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent("Macintosh")},goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent("Linux")},goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent("Windows")},goog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent("CrOS")},goog.labs.userAgent.platform.isChromecast=function(){return goog.labs.userAgent.util.matchUserAgent("CrKey")},goog.labs.userAgent.platform.isKaiOS=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS")},goog.labs.userAgent.platform.isGo2Phone=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("GAFP")},goog.labs.userAgent.platform.getVersion=function(){var e=goog.labs.userAgent.util.getUserAgent(),t="";return goog.labs.userAgent.platform.isWindows()?t=(e=(t=/Windows (?:NT|Phone) ([0-9.]+)/).exec(e))?e[1]:"0.0":goog.labs.userAgent.platform.isIos()?t=(e=(t=/(?:iPhone|iPod|iPad|CPU)\\s+OS\\s+(\\S+)/).exec(e))&&e[1].replace(/_/g,"."):goog.labs.userAgent.platform.isMacintosh()?t=(e=(t=/Mac OS X ([0-9_.]+)/).exec(e))?e[1].replace(/_/g,"."):"10":goog.labs.userAgent.platform.isKaiOS()?t=(e=(t=/(?:KaiOS)\\/(\\S+)/i).exec(e))&&e[1]:goog.labs.userAgent.platform.isAndroid()?t=(e=(t=/Android\\s+([^\\);]+)(\\)|;)/).exec(e))&&e[1]:goog.labs.userAgent.platform.isChromeOS()&&(t=(e=(t=/(?:CrOS\\s+(?:i686|x86_64)\\s+([0-9.]+))/).exec(e))&&e[1]),t||""},goog.labs.userAgent.platform.isVersionOrHigher=function(e){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),e)},goog.reflect={},goog.reflect.object=function(e,t){return t},goog.reflect.objectProperty=function(e,t){return e},goog.reflect.sinkValue=function(e){return goog.reflect.sinkValue[" "](e),e},goog.reflect.sinkValue[" "]=goog.nullFunction,goog.reflect.canAccessProperty=function(e,t){try{return goog.reflect.sinkValue(e[t]),!0}catch(e){}return!1},goog.reflect.cache=function(e,t,o,r){return r=r?r(t):t,Object.prototype.hasOwnProperty.call(e,r)?e[r]:e[r]=o(t)},goog.userAgent={},goog.userAgent.ASSUME_IE=!1,goog.userAgent.ASSUME_EDGE=!1,goog.userAgent.ASSUME_GECKO=!1,goog.userAgent.ASSUME_WEBKIT=!1,goog.userAgent.ASSUME_MOBILE_WEBKIT=!1,goog.userAgent.ASSUME_OPERA=!1,goog.userAgent.ASSUME_ANY_VERSION=!1,goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA,goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()},goog.userAgent.getNavigatorTyped=function(){return goog.global.navigator||null},goog.userAgent.getNavigator=function(){return goog.userAgent.getNavigatorTyped()},goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera(),goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE(),goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge(),goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE,goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko(),goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit(),goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent("Mobile")},goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_(),goog.userAgent.SAFARI=goog.userAgent.WEBKIT,goog.userAgent.determinePlatform_=function(){var e=goog.userAgent.getNavigatorTyped();return e&&e.platform||""},goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_(),goog.userAgent.ASSUME_MAC=!1,goog.userAgent.ASSUME_WINDOWS=!1,goog.userAgent.ASSUME_LINUX=!1,goog.userAgent.ASSUME_X11=!1,goog.userAgent.ASSUME_ANDROID=!1,goog.userAgent.ASSUME_IPHONE=!1,goog.userAgent.ASSUME_IPAD=!1,goog.userAgent.ASSUME_IPOD=!1,goog.userAgent.ASSUME_KAIOS=!1,goog.userAgent.ASSUME_GO2PHONE=!1,goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD,goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh(),goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows(),goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()},goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_(),goog.userAgent.isX11_=function(){var e=goog.userAgent.getNavigatorTyped();return!!e&&goog.string.contains(e.appVersion||"","X11")},goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_(),goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid(),goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone(),goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad(),goog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod(),goog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos(),goog.userAgent.KAIOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_KAIOS:goog.labs.userAgent.platform.isKaiOS(),goog.userAgent.GO2PHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_GO2PHONE:goog.labs.userAgent.platform.isGo2Phone(),goog.userAgent.determineVersion_=function(){var e="",t=goog.userAgent.getVersionRegexResult_();return t&&(e=t?t[1]:""),goog.userAgent.IE&&null!=(t=goog.userAgent.getDocumentMode_())&&t>parseFloat(e)?String(t):e},goog.userAgent.getVersionRegexResult_=function(){var e=goog.userAgent.getUserAgentString();return goog.userAgent.GECKO?/rv:([^\\);]+)(\\)|;)/.exec(e):goog.userAgent.EDGE?/Edge\\/([\\d\\.]+)/.exec(e):goog.userAgent.IE?/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(e):goog.userAgent.WEBKIT?/WebKit\\/(\\S+)/.exec(e):goog.userAgent.OPERA?/(?:Version)[ \\/]?(\\S+)/.exec(e):void 0},goog.userAgent.getDocumentMode_=function(){var e=goog.global.document;return e?e.documentMode:void 0},goog.userAgent.VERSION=goog.userAgent.determineVersion_(),goog.userAgent.compare=function(e,t){return goog.string.compareVersions(e,t)},goog.userAgent.isVersionOrHigherCache_={},goog.userAgent.isVersionOrHigher=function(e){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,e,(function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,e)}))},goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher,goog.userAgent.isDocumentModeOrHigher=function(e){return Number(goog.userAgent.DOCUMENT_MODE)>=e},goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher,goog.userAgent.DOCUMENT_MODE=function(){if(goog.global.document&&goog.userAgent.IE)return goog.userAgent.getDocumentMode_()}(),goog.userAgent.product={},goog.userAgent.product.ASSUME_FIREFOX=!1,goog.userAgent.product.ASSUME_IPHONE=!1,goog.userAgent.product.ASSUME_IPAD=!1,goog.userAgent.product.ASSUME_ANDROID=!1,goog.userAgent.product.ASSUME_CHROME=!1,goog.userAgent.product.ASSUME_SAFARI=!1,goog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI,goog.userAgent.product.OPERA=goog.userAgent.OPERA,goog.userAgent.product.IE=goog.userAgent.IE,goog.userAgent.product.EDGE=goog.userAgent.EDGE,goog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.labs.userAgent.browser.isFirefox(),goog.userAgent.product.isIphoneOrIpod_=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpod()},goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.isIphoneOrIpod_(),goog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad(),goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.labs.userAgent.browser.isAndroidBrowser(),goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.labs.userAgent.browser.isChrome(),goog.userAgent.product.isSafariDesktop_=function(){return goog.labs.userAgent.browser.isSafari()&&!goog.labs.userAgent.platform.isIos()},goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.isSafariDesktop_(),goog.crypt.base64={},goog.crypt.base64.DEFAULT_ALPHABET_COMMON_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",goog.crypt.base64.ENCODED_VALS=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+"+/=",goog.crypt.base64.ENCODED_VALS_WEBSAFE=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+"-_.",goog.crypt.base64.Alphabet={DEFAULT:0,NO_PADDING:1,WEBSAFE:2,WEBSAFE_DOT_PADDING:3,WEBSAFE_NO_PADDING:4},goog.crypt.base64.paddingChars_="=.",goog.crypt.base64.isPadding_=function(e){return goog.string.contains(goog.crypt.base64.paddingChars_,e)},goog.crypt.base64.byteToCharMaps_={};goog.crypt.base64.charToByteMap_=null,goog.crypt.base64.ASSUME_NATIVE_SUPPORT_=goog.userAgent.GECKO||goog.userAgent.WEBKIT&&!goog.userAgent.product.SAFARI||goog.userAgent.OPERA,goog.crypt.base64.HAS_NATIVE_ENCODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||"function"==typeof goog.global.btoa,goog.crypt.base64.HAS_NATIVE_DECODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||!goog.userAgent.product.SAFARI&&!goog.userAgent.IE&&"function"==typeof goog.global.atob,goog.crypt.base64.encodeByteArray=function(e,t){goog.asserts.assert(goog.isArrayLike(e),"encodeByteArray takes an array as a parameter"),void 0===t&&(t=goog.crypt.base64.Alphabet.DEFAULT),goog.crypt.base64.init_(),t=goog.crypt.base64.byteToCharMaps_[t];for(var o=[],r=0;r<e.length;r+=3){var n=e[r],s=r+1<e.length,i=s?e[r+1]:0,a=r+2<e.length,g=a?e[r+2]:0,l=n>>2;n=(3&n)<<4|i>>4,i=(15&i)<<2|g>>6,g&=63,a||(g=64,s||(i=64)),o.push(t[l],t[n],t[i]||"",t[g]||"")}return o.join("")},goog.crypt.base64.encodeString=function(e,t){return goog.crypt.base64.HAS_NATIVE_ENCODE_&&!t?goog.global.btoa(e):goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(e),t)},goog.crypt.base64.decodeString=function(e,t){if(goog.crypt.base64.HAS_NATIVE_DECODE_&&!t)return goog.global.atob(e);var o="";return goog.crypt.base64.decodeStringInternal_(e,(function(e){o+=String.fromCharCode(e)})),o},goog.crypt.base64.decodeStringToByteArray=function(e,t){var o=[];return goog.crypt.base64.decodeStringInternal_(e,(function(e){o.push(e)})),o},goog.crypt.base64.decodeStringToUint8Array=function(e){goog.asserts.assert(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10"),"Browser does not support typed arrays");var t=e.length,o=3*t/4;o%3?o=Math.floor(o):goog.crypt.base64.isPadding_(e[t-1])&&(o=goog.crypt.base64.isPadding_(e[t-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return goog.crypt.base64.decodeStringInternal_(e,(function(e){r[n++]=e})),r.subarray(0,n)},goog.crypt.base64.decodeStringInternal_=function(e,t){function o(t){for(;r<e.length;){var o=e.charAt(r++),n=goog.crypt.base64.charToByteMap_[o];if(null!=n)return n;if(!goog.string.isEmptyOrWhitespace(o))throw Error("Unknown base64 encoding at char: "+o)}return t}goog.crypt.base64.init_();for(var r=0;;){var n=o(-1),s=o(0),i=o(64),a=o(64);if(64===a&&-1===n)break;t(n<<2|s>>4),64!=i&&(t(s<<4&240|i>>2),64!=a&&t(i<<6&192|a))}},goog.crypt.base64.init_=function(){if(!goog.crypt.base64.charToByteMap_){goog.crypt.base64.charToByteMap_={};for(var e=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(""),t=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=e.concat(t[o].split(""));goog.crypt.base64.byteToCharMaps_[o]=r;for(var n=0;n<r.length;n++){var s=r[n],i=goog.crypt.base64.charToByteMap_[s];void 0===i?goog.crypt.base64.charToByteMap_[s]=n:goog.asserts.assert(i===n)}}}},jspb.utils={},jspb.utils.split64Low=0,jspb.utils.split64High=0,jspb.utils.splitUint64=function(e){var t=e>>>0;e=Math.floor((e-t)/jspb.BinaryConstants.TWO_TO_32)>>>0,jspb.utils.split64Low=t,jspb.utils.split64High=e},jspb.utils.splitInt64=function(e){var t=0>e,o=(e=Math.abs(e))>>>0;e=Math.floor((e-o)/jspb.BinaryConstants.TWO_TO_32),e>>>=0,t&&(e=~e>>>0,4294967295<(o=1+(~o>>>0))&&(o=0,4294967295<++e&&(e=0))),jspb.utils.split64Low=o,jspb.utils.split64High=e},jspb.utils.splitZigzag64=function(e){var t=0>e;e=2*Math.abs(e),jspb.utils.splitUint64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;t&&(0==e?0==o?o=e=4294967295:(o--,e=4294967295):e--),jspb.utils.split64Low=e,jspb.utils.split64High=o},jspb.utils.splitFloat32=function(e){var t=0>e?1:0;if(0===(e=t?-e:e))0<1/e?(jspb.utils.split64High=0,jspb.utils.split64Low=0):(jspb.utils.split64High=0,jspb.utils.split64Low=2147483648);else if(isNaN(e))jspb.utils.split64High=0,jspb.utils.split64Low=2147483647;else if(e>jspb.BinaryConstants.FLOAT32_MAX)jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|2139095040)>>>0;else if(e<jspb.BinaryConstants.FLOAT32_MIN)e=Math.round(e/Math.pow(2,-149)),jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|e)>>>0;else{var o=Math.floor(Math.log(e)/Math.LN2);e*=Math.pow(2,-o),16777216<=(e=Math.round(e*jspb.BinaryConstants.TWO_TO_23))&&++o,jspb.utils.split64High=0,jspb.utils.split64Low=(t<<31|o+127<<23|8388607&e)>>>0}},jspb.utils.splitFloat64=function(e){var t=0>e?1:0;if(0===(e=t?-e:e))jspb.utils.split64High=0<1/e?0:2147483648,jspb.utils.split64Low=0;else if(isNaN(e))jspb.utils.split64High=2147483647,jspb.utils.split64Low=4294967295;else if(e>jspb.BinaryConstants.FLOAT64_MAX)jspb.utils.split64High=(t<<31|2146435072)>>>0,jspb.utils.split64Low=0;else if(e<jspb.BinaryConstants.FLOAT64_MIN){var o=e/Math.pow(2,-1074);e=o/jspb.BinaryConstants.TWO_TO_32,jspb.utils.split64High=(t<<31|e)>>>0,jspb.utils.split64Low=o>>>0}else{var r=0;if(2<=(o=e))for(;2<=o&&1023>r;)r++,o/=2;else for(;1>o&&-1022<r;)o*=2,r--;e=(o=e*Math.pow(2,-r))*jspb.BinaryConstants.TWO_TO_20&1048575,o=o*jspb.BinaryConstants.TWO_TO_52>>>0,jspb.utils.split64High=(t<<31|r+1023<<20|e)>>>0,jspb.utils.split64Low=o}},jspb.utils.splitHash64=function(e){var t=e.charCodeAt(0),o=e.charCodeAt(1),r=e.charCodeAt(2),n=e.charCodeAt(3),s=e.charCodeAt(4),i=e.charCodeAt(5),a=e.charCodeAt(6);e=e.charCodeAt(7),jspb.utils.split64Low=t+(o<<8)+(r<<16)+(n<<24)>>>0,jspb.utils.split64High=s+(i<<8)+(a<<16)+(e<<24)>>>0},jspb.utils.joinUint64=function(e,t){return t*jspb.BinaryConstants.TWO_TO_32+(e>>>0)},jspb.utils.joinInt64=function(e,t){var o=2147483648&t;return o&&(t=~t>>>0,0==(e=1+~e>>>0)&&(t=t+1>>>0)),e=jspb.utils.joinUint64(e,t),o?-e:e},jspb.utils.toZigzag64=function(e,t,o){var r=t>>31;return o(e<<1^r,(t<<1|e>>>31)^r)},jspb.utils.joinZigzag64=function(e,t){return jspb.utils.fromZigzag64(e,t,jspb.utils.joinInt64)},jspb.utils.fromZigzag64=function(e,t,o){var r=-(1&e);return o((e>>>1|t<<31)^r,t>>>1^r)},jspb.utils.joinFloat32=function(e,t){t=2*(e>>31)+1;var o=e>>>23&255;return e&=8388607,255==o?e?NaN:1/0*t:0==o?t*Math.pow(2,-149)*e:t*Math.pow(2,o-150)*(e+Math.pow(2,23))},jspb.utils.joinFloat64=function(e,t){var o=2*(t>>31)+1,r=t>>>20&2047;return e=jspb.BinaryConstants.TWO_TO_32*(1048575&t)+e,2047==r?e?NaN:1/0*o:0==r?o*Math.pow(2,-1074)*e:o*Math.pow(2,r-1075)*(e+jspb.BinaryConstants.TWO_TO_52)},jspb.utils.joinHash64=function(e,t){return String.fromCharCode(e>>>0&255,e>>>8&255,e>>>16&255,e>>>24&255,t>>>0&255,t>>>8&255,t>>>16&255,t>>>24&255)},jspb.utils.DIGITS="0123456789abcdef".split(""),jspb.utils.ZERO_CHAR_CODE_=48,jspb.utils.A_CHAR_CODE_=97,jspb.utils.joinUnsignedDecimalString=function(e,t){function o(e,t){return e=e?String(e):"",t?"0000000".slice(e.length)+e:e}if(2097151>=t)return""+jspb.utils.joinUint64(e,t);var r=(e>>>24|t<<8)>>>0&16777215;return e=(16777215&e)+6777216*r+6710656*(t=t>>16&65535),r+=8147497*t,t*=2,1e7<=e&&(r+=Math.floor(e/1e7),e%=1e7),1e7<=r&&(t+=Math.floor(r/1e7),r%=1e7),o(t,0)+o(r,t)+o(e,1)},jspb.utils.joinSignedDecimalString=function(e,t){var o=2147483648&t;return o&&(t=~t+(0==(e=1+~e>>>0)?1:0)>>>0),e=jspb.utils.joinUnsignedDecimalString(e,t),o?"-"+e:e},jspb.utils.hash64ToDecimalString=function(e,t){jspb.utils.splitHash64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;return t?jspb.utils.joinSignedDecimalString(e,o):jspb.utils.joinUnsignedDecimalString(e,o)},jspb.utils.hash64ArrayToDecimalStrings=function(e,t){for(var o=Array(e.length),r=0;r<e.length;r++)o[r]=jspb.utils.hash64ToDecimalString(e[r],t);return o},jspb.utils.decimalStringToHash64=function(e){function t(e,t){for(var o=0;8>o&&(1!==e||0<t);o++)t=e*r[o]+t,r[o]=255&t,t>>>=8}goog.asserts.assert(0<e.length);var o=!1;"-"===e[0]&&(o=!0,e=e.slice(1));for(var r=[0,0,0,0,0,0,0,0],n=0;n<e.length;n++)t(10,e.charCodeAt(n)-jspb.utils.ZERO_CHAR_CODE_);return o&&(function(){for(var e=0;8>e;e++)r[e]=255&~r[e]}(),t(1,1)),goog.crypt.byteArrayToString(r)},jspb.utils.splitDecimalString=function(e){jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(e))},jspb.utils.toHexDigit_=function(e){return String.fromCharCode(10>e?jspb.utils.ZERO_CHAR_CODE_+e:jspb.utils.A_CHAR_CODE_-10+e)},jspb.utils.fromHexCharCode_=function(e){return e>=jspb.utils.A_CHAR_CODE_?e-jspb.utils.A_CHAR_CODE_+10:e-jspb.utils.ZERO_CHAR_CODE_},jspb.utils.hash64ToHexString=function(e){var t=Array(18);t[0]="0",t[1]="x";for(var o=0;8>o;o++){var r=e.charCodeAt(7-o);t[2*o+2]=jspb.utils.toHexDigit_(r>>4),t[2*o+3]=jspb.utils.toHexDigit_(15&r)}return t.join("")},jspb.utils.hexStringToHash64=function(e){e=e.toLowerCase(),goog.asserts.assert(18==e.length),goog.asserts.assert("0"==e[0]),goog.asserts.assert("x"==e[1]);for(var t="",o=0;8>o;o++){var r=jspb.utils.fromHexCharCode_(e.charCodeAt(2*o+2)),n=jspb.utils.fromHexCharCode_(e.charCodeAt(2*o+3));t=String.fromCharCode(16*r+n)+t}return t},jspb.utils.hash64ToNumber=function(e,t){jspb.utils.splitHash64(e),e=jspb.utils.split64Low;var o=jspb.utils.split64High;return t?jspb.utils.joinInt64(e,o):jspb.utils.joinUint64(e,o)},jspb.utils.numberToHash64=function(e){return jspb.utils.splitInt64(e),jspb.utils.joinHash64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.utils.countVarints=function(e,t,o){for(var r=0,n=t;n<o;n++)r+=e[n]>>7;return o-t-r},jspb.utils.countVarintFields=function(e,t,o,r){var n=0;if(128>(r=8*r+jspb.BinaryConstants.WireType.VARINT))for(;t<o&&e[t++]==r;)for(n++;;){var s=e[t++];if(0==(128&s))break}else for(;t<o;){for(s=r;128<s;){if(e[t]!=(127&s|128))return n;t++,s>>=7}if(e[t++]!=s)break;for(n++;0!=(128&(s=e[t++])););}return n},jspb.utils.countFixedFields_=function(e,t,o,r,n){var s=0;if(128>r)for(;t<o&&e[t++]==r;)s++,t+=n;else for(;t<o;){for(var i=r;128<i;){if(e[t++]!=(127&i|128))return s;i>>=7}if(e[t++]!=i)break;s++,t+=n}return s},jspb.utils.countFixed32Fields=function(e,t,o,r){return jspb.utils.countFixedFields_(e,t,o,8*r+jspb.BinaryConstants.WireType.FIXED32,4)},jspb.utils.countFixed64Fields=function(e,t,o,r){return jspb.utils.countFixedFields_(e,t,o,8*r+jspb.BinaryConstants.WireType.FIXED64,8)},jspb.utils.countDelimitedFields=function(e,t,o,r){var n=0;for(r=8*r+jspb.BinaryConstants.WireType.DELIMITED;t<o;){for(var s=r;128<s;){if(e[t++]!=(127&s|128))return n;s>>=7}if(e[t++]!=s)break;n++;for(var i=0,a=1;i+=(127&(s=e[t++]))*a,a*=128,0!=(128&s););t+=i}return n},jspb.utils.debugBytesToTextFormat=function(e){var t=\'"\';if(e){e=jspb.utils.byteSourceToUint8Array(e);for(var o=0;o<e.length;o++)t+="\\\\x",16>e[o]&&(t+="0"),t+=e[o].toString(16)}return t+\'"\'},jspb.utils.debugScalarToTextFormat=function(e){return"string"==typeof e?goog.string.quote(e):e.toString()},jspb.utils.stringToByteArray=function(e){for(var t=new Uint8Array(e.length),o=0;o<e.length;o++){var r=e.charCodeAt(o);if(255<r)throw Error("Conversion error: string contains codepoint outside of byte range");t[o]=r}return t},jspb.utils.byteSourceToUint8Array=function(e){return e.constructor===Uint8Array?e:e.constructor===ArrayBuffer||"undefined"!=typeof Buffer&&e.constructor===Buffer||e.constructor===Array?new Uint8Array(e):e.constructor===String?goog.crypt.base64.decodeStringToUint8Array(e):(goog.asserts.fail("Type not convertible to Uint8Array."),new Uint8Array(0))},jspb.BinaryDecoder=function(e,t,o){this.bytes_=null,this.cursor_=this.end_=this.start_=0,this.error_=!1,e&&this.setBlock(e,t,o)},jspb.BinaryDecoder.instanceCache_=[],jspb.BinaryDecoder.alloc=function(e,t,o){if(jspb.BinaryDecoder.instanceCache_.length){var r=jspb.BinaryDecoder.instanceCache_.pop();return e&&r.setBlock(e,t,o),r}return new jspb.BinaryDecoder(e,t,o)},jspb.BinaryDecoder.prototype.free=function(){this.clear(),100>jspb.BinaryDecoder.instanceCache_.length&&jspb.BinaryDecoder.instanceCache_.push(this)},jspb.BinaryDecoder.prototype.clone=function(){return jspb.BinaryDecoder.alloc(this.bytes_,this.start_,this.end_-this.start_)},jspb.BinaryDecoder.prototype.clear=function(){this.bytes_=null,this.cursor_=this.end_=this.start_=0,this.error_=!1},jspb.BinaryDecoder.prototype.getBuffer=function(){return this.bytes_},jspb.BinaryDecoder.prototype.setBlock=function(e,t,o){this.bytes_=jspb.utils.byteSourceToUint8Array(e),this.start_=void 0!==t?t:0,this.end_=void 0!==o?this.start_+o:this.bytes_.length,this.cursor_=this.start_},jspb.BinaryDecoder.prototype.getEnd=function(){return this.end_},jspb.BinaryDecoder.prototype.setEnd=function(e){this.end_=e},jspb.BinaryDecoder.prototype.reset=function(){this.cursor_=this.start_},jspb.BinaryDecoder.prototype.getCursor=function(){return this.cursor_},jspb.BinaryDecoder.prototype.setCursor=function(e){this.cursor_=e},jspb.BinaryDecoder.prototype.advance=function(e){this.cursor_+=e,goog.asserts.assert(this.cursor_<=this.end_)},jspb.BinaryDecoder.prototype.atEnd=function(){return this.cursor_==this.end_},jspb.BinaryDecoder.prototype.pastEnd=function(){return this.cursor_>this.end_},jspb.BinaryDecoder.prototype.getError=function(){return this.error_||0>this.cursor_||this.cursor_>this.end_},jspb.BinaryDecoder.prototype.readSplitVarint64=function(e){for(var t=128,o=0,r=0,n=0;4>n&&128<=t;n++)o|=(127&(t=this.bytes_[this.cursor_++]))<<7*n;if(128<=t&&(o|=(127&(t=this.bytes_[this.cursor_++]))<<28,r|=(127&t)>>4),128<=t)for(n=0;5>n&&128<=t;n++)r|=(127&(t=this.bytes_[this.cursor_++]))<<7*n+3;if(128>t)return e(o>>>0,r>>>0);goog.asserts.fail("Failed to read varint, encoding is invalid."),this.error_=!0},jspb.BinaryDecoder.prototype.readSplitZigzagVarint64=function(e){return this.readSplitVarint64((function(t,o){return jspb.utils.fromZigzag64(t,o,e)}))},jspb.BinaryDecoder.prototype.readSplitFixed64=function(e){var t=this.bytes_,o=this.cursor_;this.cursor_+=8;for(var r=0,n=0,s=o+7;s>=o;s--)r=r<<8|t[s],n=n<<8|t[s+4];return e(r,n)},jspb.BinaryDecoder.prototype.skipVarint=function(){for(;128&this.bytes_[this.cursor_];)this.cursor_++;this.cursor_++},jspb.BinaryDecoder.prototype.unskipVarint=function(e){for(;128<e;)this.cursor_--,e>>>=7;this.cursor_--},jspb.BinaryDecoder.prototype.readUnsignedVarint32=function(){var e=this.bytes_,t=e[this.cursor_+0],o=127&t;return 128>t?(this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+1]))<<7,128>t?(this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+2]))<<14,128>t?(this.cursor_+=3,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(127&(t=e[this.cursor_+3]))<<21,128>t?(this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),o):(o|=(15&(t=e[this.cursor_+4]))<<28,128>t?(this.cursor_+=5,goog.asserts.assert(this.cursor_<=this.end_),o>>>0):(this.cursor_+=5,128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&128<=e[this.cursor_++]&&goog.asserts.assert(!1),goog.asserts.assert(this.cursor_<=this.end_),o)))))},jspb.BinaryDecoder.prototype.readSignedVarint32=jspb.BinaryDecoder.prototype.readUnsignedVarint32,jspb.BinaryDecoder.prototype.readUnsignedVarint32String=function(){return this.readUnsignedVarint32().toString()},jspb.BinaryDecoder.prototype.readSignedVarint32String=function(){return this.readSignedVarint32().toString()},jspb.BinaryDecoder.prototype.readZigzagVarint32=function(){var e=this.readUnsignedVarint32();return e>>>1^-(1&e)},jspb.BinaryDecoder.prototype.readUnsignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinUint64)},jspb.BinaryDecoder.prototype.readUnsignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString)},jspb.BinaryDecoder.prototype.readSignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinInt64)},jspb.BinaryDecoder.prototype.readSignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinSignedDecimalString)},jspb.BinaryDecoder.prototype.readZigzagVarint64=function(){return this.readSplitVarint64(jspb.utils.joinZigzag64)},jspb.BinaryDecoder.prototype.readZigzagVarintHash64=function(){return this.readSplitZigzagVarint64(jspb.utils.joinHash64)},jspb.BinaryDecoder.prototype.readZigzagVarint64String=function(){return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString)},jspb.BinaryDecoder.prototype.readUint8=function(){var e=this.bytes_[this.cursor_+0];return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),e},jspb.BinaryDecoder.prototype.readUint16=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1];return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),e<<0|t<<8},jspb.BinaryDecoder.prototype.readUint32=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1],o=this.bytes_[this.cursor_+2],r=this.bytes_[this.cursor_+3];return this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),(e<<0|t<<8|o<<16|r<<24)>>>0},jspb.BinaryDecoder.prototype.readUint64=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinUint64(e,t)},jspb.BinaryDecoder.prototype.readUint64String=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinUnsignedDecimalString(e,t)},jspb.BinaryDecoder.prototype.readInt8=function(){var e=this.bytes_[this.cursor_+0];return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),e<<24>>24},jspb.BinaryDecoder.prototype.readInt16=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1];return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),(e<<0|t<<8)<<16>>16},jspb.BinaryDecoder.prototype.readInt32=function(){var e=this.bytes_[this.cursor_+0],t=this.bytes_[this.cursor_+1],o=this.bytes_[this.cursor_+2],r=this.bytes_[this.cursor_+3];return this.cursor_+=4,goog.asserts.assert(this.cursor_<=this.end_),e<<0|t<<8|o<<16|r<<24},jspb.BinaryDecoder.prototype.readInt64=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinInt64(e,t)},jspb.BinaryDecoder.prototype.readInt64String=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinSignedDecimalString(e,t)},jspb.BinaryDecoder.prototype.readFloat=function(){var e=this.readUint32();return jspb.utils.joinFloat32(e,0)},jspb.BinaryDecoder.prototype.readDouble=function(){var e=this.readUint32(),t=this.readUint32();return jspb.utils.joinFloat64(e,t)},jspb.BinaryDecoder.prototype.readBool=function(){return!!this.bytes_[this.cursor_++]},jspb.BinaryDecoder.prototype.readEnum=function(){return this.readSignedVarint32()},jspb.BinaryDecoder.prototype.readString=function(e){var t=this.bytes_,o=this.cursor_;e=o+e;for(var r=[],n="";o<e;){var s=t[o++];if(128>s)r.push(s);else{if(192>s)continue;if(224>s){var i=t[o++];r.push((31&s)<<6|63&i)}else if(240>s){i=t[o++];var a=t[o++];r.push((15&s)<<12|(63&i)<<6|63&a)}else 248>s&&(s=(7&s)<<18|(63&(i=t[o++]))<<12|(63&(a=t[o++]))<<6|63&t[o++],s-=65536,r.push(55296+(s>>10&1023),56320+(1023&s)))}8192<=r.length&&(n+=String.fromCharCode.apply(null,r),r.length=0)}return n+=goog.crypt.byteArrayToString(r),this.cursor_=o,n},jspb.BinaryDecoder.prototype.readStringWithLength=function(){var e=this.readUnsignedVarint32();return this.readString(e)},jspb.BinaryDecoder.prototype.readBytes=function(e){if(0>e||this.cursor_+e>this.bytes_.length)return this.error_=!0,goog.asserts.fail("Invalid byte length!"),new Uint8Array(0);var t=this.bytes_.subarray(this.cursor_,this.cursor_+e);return this.cursor_+=e,goog.asserts.assert(this.cursor_<=this.end_),t},jspb.BinaryDecoder.prototype.readVarintHash64=function(){return this.readSplitVarint64(jspb.utils.joinHash64)},jspb.BinaryDecoder.prototype.readFixedHash64=function(){var e=this.bytes_,t=this.cursor_,o=e[t+0],r=e[t+1],n=e[t+2],s=e[t+3],i=e[t+4],a=e[t+5],g=e[t+6];return e=e[t+7],this.cursor_+=8,String.fromCharCode(o,r,n,s,i,a,g,e)},jspb.BinaryReader=function(e,t,o){this.decoder_=jspb.BinaryDecoder.alloc(e,t,o),this.fieldCursor_=this.decoder_.getCursor(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID,this.error_=!1,this.readCallbacks_=null},jspb.BinaryReader.instanceCache_=[],jspb.BinaryReader.alloc=function(e,t,o){if(jspb.BinaryReader.instanceCache_.length){var r=jspb.BinaryReader.instanceCache_.pop();return e&&r.decoder_.setBlock(e,t,o),r}return new jspb.BinaryReader(e,t,o)},jspb.BinaryReader.prototype.alloc=jspb.BinaryReader.alloc,jspb.BinaryReader.prototype.free=function(){this.decoder_.clear(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID,this.error_=!1,this.readCallbacks_=null,100>jspb.BinaryReader.instanceCache_.length&&jspb.BinaryReader.instanceCache_.push(this)},jspb.BinaryReader.prototype.getFieldCursor=function(){return this.fieldCursor_},jspb.BinaryReader.prototype.getCursor=function(){return this.decoder_.getCursor()},jspb.BinaryReader.prototype.getBuffer=function(){return this.decoder_.getBuffer()},jspb.BinaryReader.prototype.getFieldNumber=function(){return this.nextField_},jspb.BinaryReader.prototype.getWireType=function(){return this.nextWireType_},jspb.BinaryReader.prototype.isDelimited=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED},jspb.BinaryReader.prototype.isEndGroup=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP},jspb.BinaryReader.prototype.getError=function(){return this.error_||this.decoder_.getError()},jspb.BinaryReader.prototype.setBlock=function(e,t,o){this.decoder_.setBlock(e,t,o),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID},jspb.BinaryReader.prototype.reset=function(){this.decoder_.reset(),this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER,this.nextWireType_=jspb.BinaryConstants.WireType.INVALID},jspb.BinaryReader.prototype.advance=function(e){this.decoder_.advance(e)},jspb.BinaryReader.prototype.nextField=function(){if(this.decoder_.atEnd())return!1;if(this.getError())return goog.asserts.fail("Decoder hit an error"),!1;this.fieldCursor_=this.decoder_.getCursor();var e=this.decoder_.readUnsignedVarint32(),t=e>>>3;return(e&=7)!=jspb.BinaryConstants.WireType.VARINT&&e!=jspb.BinaryConstants.WireType.FIXED32&&e!=jspb.BinaryConstants.WireType.FIXED64&&e!=jspb.BinaryConstants.WireType.DELIMITED&&e!=jspb.BinaryConstants.WireType.START_GROUP&&e!=jspb.BinaryConstants.WireType.END_GROUP?(goog.asserts.fail("Invalid wire type: %s (at position %s)",e,this.fieldCursor_),this.error_=!0,!1):(this.nextField_=t,this.nextWireType_=e,!0)},jspb.BinaryReader.prototype.unskipHeader=function(){this.decoder_.unskipVarint(this.nextField_<<3|this.nextWireType_)},jspb.BinaryReader.prototype.skipMatchingFields=function(){var e=this.nextField_;for(this.unskipHeader();this.nextField()&&this.getFieldNumber()==e;)this.skipField();this.decoder_.atEnd()||this.unskipHeader()},jspb.BinaryReader.prototype.skipVarintField=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.VARINT?(goog.asserts.fail("Invalid wire type for skipVarintField"),this.skipField()):this.decoder_.skipVarint()},jspb.BinaryReader.prototype.skipDelimitedField=function(){if(this.nextWireType_!=jspb.BinaryConstants.WireType.DELIMITED)goog.asserts.fail("Invalid wire type for skipDelimitedField"),this.skipField();else{var e=this.decoder_.readUnsignedVarint32();this.decoder_.advance(e)}},jspb.BinaryReader.prototype.skipFixed32Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED32?(goog.asserts.fail("Invalid wire type for skipFixed32Field"),this.skipField()):this.decoder_.advance(4)},jspb.BinaryReader.prototype.skipFixed64Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED64?(goog.asserts.fail("Invalid wire type for skipFixed64Field"),this.skipField()):this.decoder_.advance(8)},jspb.BinaryReader.prototype.skipGroup=function(){for(var e=this.nextField_;;){if(!this.nextField()){goog.asserts.fail("Unmatched start-group tag: stream EOF"),this.error_=!0;break}if(this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP){this.nextField_!=e&&(goog.asserts.fail("Unmatched end-group tag"),this.error_=!0);break}this.skipField()}},jspb.BinaryReader.prototype.skipField=function(){switch(this.nextWireType_){case jspb.BinaryConstants.WireType.VARINT:this.skipVarintField();break;case jspb.BinaryConstants.WireType.FIXED64:this.skipFixed64Field();break;case jspb.BinaryConstants.WireType.DELIMITED:this.skipDelimitedField();break;case jspb.BinaryConstants.WireType.FIXED32:this.skipFixed32Field();break;case jspb.BinaryConstants.WireType.START_GROUP:this.skipGroup();break;default:goog.asserts.fail("Invalid wire encoding for field.")}},jspb.BinaryReader.prototype.registerReadCallback=function(e,t){null===this.readCallbacks_&&(this.readCallbacks_={}),goog.asserts.assert(!this.readCallbacks_[e]),this.readCallbacks_[e]=t},jspb.BinaryReader.prototype.runReadCallback=function(e){return goog.asserts.assert(null!==this.readCallbacks_),e=this.readCallbacks_[e],goog.asserts.assert(e),e(this)},jspb.BinaryReader.prototype.readAny=function(e){this.nextWireType_=jspb.BinaryConstants.FieldTypeToWireType(e);var t=jspb.BinaryConstants.FieldType;switch(e){case t.DOUBLE:return this.readDouble();case t.FLOAT:return this.readFloat();case t.INT64:return this.readInt64();case t.UINT64:return this.readUint64();case t.INT32:return this.readInt32();case t.FIXED64:return this.readFixed64();case t.FIXED32:return this.readFixed32();case t.BOOL:return this.readBool();case t.STRING:return this.readString();case t.GROUP:goog.asserts.fail("Group field type not supported in readAny()");case t.MESSAGE:goog.asserts.fail("Message field type not supported in readAny()");case t.BYTES:return this.readBytes();case t.UINT32:return this.readUint32();case t.ENUM:return this.readEnum();case t.SFIXED32:return this.readSfixed32();case t.SFIXED64:return this.readSfixed64();case t.SINT32:return this.readSint32();case t.SINT64:return this.readSint64();case t.FHASH64:return this.readFixedHash64();case t.VHASH64:return this.readVarintHash64();default:goog.asserts.fail("Invalid field type in readAny()")}return 0},jspb.BinaryReader.prototype.readMessage=function(e,t){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var o=this.decoder_.getEnd(),r=this.decoder_.readUnsignedVarint32();r=this.decoder_.getCursor()+r,this.decoder_.setEnd(r),t(e,this),this.decoder_.setCursor(r),this.decoder_.setEnd(o)},jspb.BinaryReader.prototype.readGroup=function(e,t,o){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.START_GROUP),goog.asserts.assert(this.nextField_==e),o(t,this),this.error_||this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP||(goog.asserts.fail("Group submessage did not end with an END_GROUP tag"),this.error_=!0)},jspb.BinaryReader.prototype.getFieldDecoder=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32(),t=this.decoder_.getCursor(),o=t+e;return e=jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(),t,e),this.decoder_.setCursor(o),e},jspb.BinaryReader.prototype.readInt32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint32()},jspb.BinaryReader.prototype.readInt32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint32String()},jspb.BinaryReader.prototype.readInt64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64()},jspb.BinaryReader.prototype.readInt64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64String()},jspb.BinaryReader.prototype.readUint32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint32()},jspb.BinaryReader.prototype.readUint32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint32String()},jspb.BinaryReader.prototype.readUint64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint64()},jspb.BinaryReader.prototype.readUint64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readUnsignedVarint64String()},jspb.BinaryReader.prototype.readSint32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint32()},jspb.BinaryReader.prototype.readSint64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint64()},jspb.BinaryReader.prototype.readSint64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarint64String()},jspb.BinaryReader.prototype.readFixed32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readUint32()},jspb.BinaryReader.prototype.readFixed64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readUint64()},jspb.BinaryReader.prototype.readFixed64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readUint64String()},jspb.BinaryReader.prototype.readSfixed32=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readInt32()},jspb.BinaryReader.prototype.readSfixed32String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readInt32().toString()},jspb.BinaryReader.prototype.readSfixed64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readInt64()},jspb.BinaryReader.prototype.readSfixed64String=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readInt64String()},jspb.BinaryReader.prototype.readFloat=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32),this.decoder_.readFloat()},jspb.BinaryReader.prototype.readDouble=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readDouble()},jspb.BinaryReader.prototype.readBool=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),!!this.decoder_.readUnsignedVarint32()},jspb.BinaryReader.prototype.readEnum=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSignedVarint64()},jspb.BinaryReader.prototype.readString=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32();return this.decoder_.readString(e)},jspb.BinaryReader.prototype.readBytes=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var e=this.decoder_.readUnsignedVarint32();return this.decoder_.readBytes(e)},jspb.BinaryReader.prototype.readVarintHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readVarintHash64()},jspb.BinaryReader.prototype.readSintHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readZigzagVarintHash64()},jspb.BinaryReader.prototype.readSplitVarint64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSplitVarint64(e)},jspb.BinaryReader.prototype.readSplitZigzagVarint64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT),this.decoder_.readSplitVarint64((function(t,o){return jspb.utils.fromZigzag64(t,o,e)}))},jspb.BinaryReader.prototype.readFixedHash64=function(){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readFixedHash64()},jspb.BinaryReader.prototype.readSplitFixed64=function(e){return goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64),this.decoder_.readSplitFixed64(e)},jspb.BinaryReader.prototype.readPackedField_=function(e){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var t=this.decoder_.readUnsignedVarint32();t=this.decoder_.getCursor()+t;for(var o=[];this.decoder_.getCursor()<t;)o.push(e.call(this.decoder_));return o},jspb.BinaryReader.prototype.readPackedInt32=function(){return this.readPackedField_(this.decoder_.readSignedVarint32)},jspb.BinaryReader.prototype.readPackedInt32String=function(){return this.readPackedField_(this.decoder_.readSignedVarint32String)},jspb.BinaryReader.prototype.readPackedInt64=function(){return this.readPackedField_(this.decoder_.readSignedVarint64)},jspb.BinaryReader.prototype.readPackedInt64String=function(){return this.readPackedField_(this.decoder_.readSignedVarint64String)},jspb.BinaryReader.prototype.readPackedUint32=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32)},jspb.BinaryReader.prototype.readPackedUint32String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32String)},jspb.BinaryReader.prototype.readPackedUint64=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64)},jspb.BinaryReader.prototype.readPackedUint64String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64String)},jspb.BinaryReader.prototype.readPackedSint32=function(){return this.readPackedField_(this.decoder_.readZigzagVarint32)},jspb.BinaryReader.prototype.readPackedSint64=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64)},jspb.BinaryReader.prototype.readPackedSint64String=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64String)},jspb.BinaryReader.prototype.readPackedFixed32=function(){return this.readPackedField_(this.decoder_.readUint32)},jspb.BinaryReader.prototype.readPackedFixed64=function(){return this.readPackedField_(this.decoder_.readUint64)},jspb.BinaryReader.prototype.readPackedFixed64String=function(){return this.readPackedField_(this.decoder_.readUint64String)},jspb.BinaryReader.prototype.readPackedSfixed32=function(){return this.readPackedField_(this.decoder_.readInt32)},jspb.BinaryReader.prototype.readPackedSfixed64=function(){return this.readPackedField_(this.decoder_.readInt64)},jspb.BinaryReader.prototype.readPackedSfixed64String=function(){return this.readPackedField_(this.decoder_.readInt64String)},jspb.BinaryReader.prototype.readPackedFloat=function(){return this.readPackedField_(this.decoder_.readFloat)},jspb.BinaryReader.prototype.readPackedDouble=function(){return this.readPackedField_(this.decoder_.readDouble)},jspb.BinaryReader.prototype.readPackedBool=function(){return this.readPackedField_(this.decoder_.readBool)},jspb.BinaryReader.prototype.readPackedEnum=function(){return this.readPackedField_(this.decoder_.readEnum)},jspb.BinaryReader.prototype.readPackedVarintHash64=function(){return this.readPackedField_(this.decoder_.readVarintHash64)},jspb.BinaryReader.prototype.readPackedFixedHash64=function(){return this.readPackedField_(this.decoder_.readFixedHash64)},jspb.BinaryEncoder=function(){this.buffer_=[]},jspb.BinaryEncoder.prototype.length=function(){return this.buffer_.length},jspb.BinaryEncoder.prototype.end=function(){var e=this.buffer_;return this.buffer_=[],e},jspb.BinaryEncoder.prototype.writeSplitVarint64=function(e,t){for(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(t==Math.floor(t)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32);0<t||127<e;)this.buffer_.push(127&e|128),e=(e>>>7|t<<25)>>>0,t>>>=7;this.buffer_.push(e)},jspb.BinaryEncoder.prototype.writeSplitFixed64=function(e,t){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(t==Math.floor(t)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUint32(e),this.writeUint32(t)},jspb.BinaryEncoder.prototype.writeUnsignedVarint32=function(e){for(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32);127<e;)this.buffer_.push(127&e|128),e>>>=7;this.buffer_.push(e)},jspb.BinaryEncoder.prototype.writeSignedVarint32=function(e){if(goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),0<=e)this.writeUnsignedVarint32(e);else{for(var t=0;9>t;t++)this.buffer_.push(127&e|128),e>>=7;this.buffer_.push(1)}},jspb.BinaryEncoder.prototype.writeUnsignedVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_64),jspb.utils.splitInt64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeSignedVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitInt64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeZigzagVarint32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.writeUnsignedVarint32((e<<1^e>>31)>>>0)},jspb.BinaryEncoder.prototype.writeZigzagVarint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitZigzag64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeZigzagVarint64String=function(e){this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(e))},jspb.BinaryEncoder.prototype.writeZigzagVarintHash64=function(e){var t=this;jspb.utils.splitHash64(e),jspb.utils.toZigzag64(jspb.utils.split64Low,jspb.utils.split64High,(function(e,o){t.writeSplitVarint64(e>>>0,o>>>0)}))},jspb.BinaryEncoder.prototype.writeUint8=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&256>e),this.buffer_.push(e>>>0&255)},jspb.BinaryEncoder.prototype.writeUint16=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&65536>e),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255)},jspb.BinaryEncoder.prototype.writeUint32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_32),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255),this.buffer_.push(e>>>16&255),this.buffer_.push(e>>>24&255)},jspb.BinaryEncoder.prototype.writeUint64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(0<=e&&e<jspb.BinaryConstants.TWO_TO_64),jspb.utils.splitUint64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeInt8=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(-128<=e&&128>e),this.buffer_.push(e>>>0&255)},jspb.BinaryEncoder.prototype.writeInt16=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(-32768<=e&&32768>e),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255)},jspb.BinaryEncoder.prototype.writeInt32=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.buffer_.push(e>>>0&255),this.buffer_.push(e>>>8&255),this.buffer_.push(e>>>16&255),this.buffer_.push(e>>>24&255)},jspb.BinaryEncoder.prototype.writeInt64=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_63&&e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitInt64(e),this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeInt64String=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(+e>=-jspb.BinaryConstants.TWO_TO_63&&+e<jspb.BinaryConstants.TWO_TO_63),jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(e)),this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeFloat=function(e){goog.asserts.assert(1/0===e||-1/0===e||isNaN(e)||e>=-jspb.BinaryConstants.FLOAT32_MAX&&e<=jspb.BinaryConstants.FLOAT32_MAX),jspb.utils.splitFloat32(e),this.writeUint32(jspb.utils.split64Low)},jspb.BinaryEncoder.prototype.writeDouble=function(e){goog.asserts.assert(1/0===e||-1/0===e||isNaN(e)||e>=-jspb.BinaryConstants.FLOAT64_MAX&&e<=jspb.BinaryConstants.FLOAT64_MAX),jspb.utils.splitFloat64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeBool=function(e){goog.asserts.assert("boolean"==typeof e||"number"==typeof e),this.buffer_.push(e?1:0)},jspb.BinaryEncoder.prototype.writeEnum=function(e){goog.asserts.assert(e==Math.floor(e)),goog.asserts.assert(e>=-jspb.BinaryConstants.TWO_TO_31&&e<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32(e)},jspb.BinaryEncoder.prototype.writeBytes=function(e){this.buffer_.push.apply(this.buffer_,e)},jspb.BinaryEncoder.prototype.writeVarintHash64=function(e){jspb.utils.splitHash64(e),this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeFixedHash64=function(e){jspb.utils.splitHash64(e),this.writeUint32(jspb.utils.split64Low),this.writeUint32(jspb.utils.split64High)},jspb.BinaryEncoder.prototype.writeString=function(e){for(var t=this.buffer_.length,o=0;o<e.length;o++){var r=e.charCodeAt(o);if(128>r)this.buffer_.push(r);else if(2048>r)this.buffer_.push(r>>6|192),this.buffer_.push(63&r|128);else if(65536>r)if(55296<=r&&56319>=r&&o+1<e.length){var n=e.charCodeAt(o+1);56320<=n&&57343>=n&&(r=1024*(r-55296)+n-56320+65536,this.buffer_.push(r>>18|240),this.buffer_.push(r>>12&63|128),this.buffer_.push(r>>6&63|128),this.buffer_.push(63&r|128),o++)}else this.buffer_.push(r>>12|224),this.buffer_.push(r>>6&63|128),this.buffer_.push(63&r|128)}return this.buffer_.length-t},jspb.arith={},jspb.arith.UInt64=function(e,t){this.lo=e,this.hi=t},jspb.arith.UInt64.prototype.cmp=function(e){return this.hi<e.hi||this.hi==e.hi&&this.lo<e.lo?-1:this.hi==e.hi&&this.lo==e.lo?0:1},jspb.arith.UInt64.prototype.rightShift=function(){return new jspb.arith.UInt64((this.lo>>>1|(1&this.hi)<<31)>>>0,this.hi>>>1>>>0)},jspb.arith.UInt64.prototype.leftShift=function(){return new jspb.arith.UInt64(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)},jspb.arith.UInt64.prototype.msb=function(){return!!(2147483648&this.hi)},jspb.arith.UInt64.prototype.lsb=function(){return!!(1&this.lo)},jspb.arith.UInt64.prototype.zero=function(){return 0==this.lo&&0==this.hi},jspb.arith.UInt64.prototype.add=function(e){return new jspb.arith.UInt64((this.lo+e.lo&4294967295)>>>0>>>0,((this.hi+e.hi&4294967295)>>>0)+(4294967296<=this.lo+e.lo?1:0)>>>0)},jspb.arith.UInt64.prototype.sub=function(e){return new jspb.arith.UInt64((this.lo-e.lo&4294967295)>>>0>>>0,((this.hi-e.hi&4294967295)>>>0)-(0>this.lo-e.lo?1:0)>>>0)},jspb.arith.UInt64.mul32x32=function(e,t){var o=65535&e,r=65535&t,n=t>>>16;for(t=o*r+65536*(o*n&65535)+65536*((e>>>=16)*r&65535),o=e*n+(o*n>>>16)+(e*r>>>16);4294967296<=t;)t-=4294967296,o+=1;return new jspb.arith.UInt64(t>>>0,o>>>0)},jspb.arith.UInt64.prototype.mul=function(e){var t=jspb.arith.UInt64.mul32x32(this.lo,e);return(e=jspb.arith.UInt64.mul32x32(this.hi,e)).hi=e.lo,e.lo=0,t.add(e)},jspb.arith.UInt64.prototype.div=function(e){if(0==e)return[];var t=new jspb.arith.UInt64(0,0),o=new jspb.arith.UInt64(this.lo,this.hi);e=new jspb.arith.UInt64(e,0);for(var r=new jspb.arith.UInt64(1,0);!e.msb();)e=e.leftShift(),r=r.leftShift();for(;!r.zero();)0>=e.cmp(o)&&(t=t.add(r),o=o.sub(e)),e=e.rightShift(),r=r.rightShift();return[t,o]},jspb.arith.UInt64.prototype.toString=function(){for(var e="",t=this;!t.zero();){var o=(t=t.div(10))[0];e=t[1].lo+e,t=o}return""==e&&(e="0"),e},jspb.arith.UInt64.fromString=function(e){for(var t=new jspb.arith.UInt64(0,0),o=new jspb.arith.UInt64(0,0),r=0;r<e.length;r++){if("0">e[r]||"9"<e[r])return null;var n=parseInt(e[r],10);o.lo=n,t=t.mul(10).add(o)}return t},jspb.arith.UInt64.prototype.clone=function(){return new jspb.arith.UInt64(this.lo,this.hi)},jspb.arith.Int64=function(e,t){this.lo=e,this.hi=t},jspb.arith.Int64.prototype.add=function(e){return new jspb.arith.Int64((this.lo+e.lo&4294967295)>>>0>>>0,((this.hi+e.hi&4294967295)>>>0)+(4294967296<=this.lo+e.lo?1:0)>>>0)},jspb.arith.Int64.prototype.sub=function(e){return new jspb.arith.Int64((this.lo-e.lo&4294967295)>>>0>>>0,((this.hi-e.hi&4294967295)>>>0)-(0>this.lo-e.lo?1:0)>>>0)},jspb.arith.Int64.prototype.clone=function(){return new jspb.arith.Int64(this.lo,this.hi)},jspb.arith.Int64.prototype.toString=function(){var e=0!=(2147483648&this.hi),t=new jspb.arith.UInt64(this.lo,this.hi);return e&&(t=new jspb.arith.UInt64(0,0).sub(t)),(e?"-":"")+t.toString()},jspb.arith.Int64.fromString=function(e){var t=0<e.length&&"-"==e[0];return t&&(e=e.substring(1)),null===(e=jspb.arith.UInt64.fromString(e))?null:(t&&(e=new jspb.arith.UInt64(0,0).sub(e)),new jspb.arith.Int64(e.lo,e.hi))},jspb.BinaryWriter=function(){this.blocks_=[],this.totalLength_=0,this.encoder_=new jspb.BinaryEncoder,this.bookmarks_=[]},jspb.BinaryWriter.prototype.appendUint8Array_=function(e){var t=this.encoder_.end();this.blocks_.push(t),this.blocks_.push(e),this.totalLength_+=t.length+e.length},jspb.BinaryWriter.prototype.beginDelimited_=function(e){return this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),e=this.encoder_.end(),this.blocks_.push(e),this.totalLength_+=e.length,e.push(this.totalLength_),e},jspb.BinaryWriter.prototype.endDelimited_=function(e){var t=e.pop();for(t=this.totalLength_+this.encoder_.length()-t,goog.asserts.assert(0<=t);127<t;)e.push(127&t|128),t>>>=7,this.totalLength_++;e.push(t),this.totalLength_++},jspb.BinaryWriter.prototype.writeSerializedMessage=function(e,t,o){this.appendUint8Array_(e.subarray(t,o))},jspb.BinaryWriter.prototype.maybeWriteSerializedMessage=function(e,t,o){null!=e&&null!=t&&null!=o&&this.writeSerializedMessage(e,t,o)},jspb.BinaryWriter.prototype.reset=function(){this.blocks_=[],this.encoder_.end(),this.totalLength_=0,this.bookmarks_=[]},jspb.BinaryWriter.prototype.getResultBuffer=function(){goog.asserts.assert(0==this.bookmarks_.length);for(var e=new Uint8Array(this.totalLength_+this.encoder_.length()),t=this.blocks_,o=t.length,r=0,n=0;n<o;n++){var s=t[n];e.set(s,r),r+=s.length}return t=this.encoder_.end(),e.set(t,r),r+=t.length,goog.asserts.assert(r==e.length),this.blocks_=[e],e},jspb.BinaryWriter.prototype.getResultBase64String=function(e){return goog.crypt.base64.encodeByteArray(this.getResultBuffer(),e)},jspb.BinaryWriter.prototype.beginSubMessage=function(e){this.bookmarks_.push(this.beginDelimited_(e))},jspb.BinaryWriter.prototype.endSubMessage=function(){goog.asserts.assert(0<=this.bookmarks_.length),this.endDelimited_(this.bookmarks_.pop())},jspb.BinaryWriter.prototype.writeFieldHeader_=function(e,t){goog.asserts.assert(1<=e&&e==Math.floor(e)),this.encoder_.writeUnsignedVarint32(8*e+t)},jspb.BinaryWriter.prototype.writeAny=function(e,t,o){var r=jspb.BinaryConstants.FieldType;switch(e){case r.DOUBLE:this.writeDouble(t,o);break;case r.FLOAT:this.writeFloat(t,o);break;case r.INT64:this.writeInt64(t,o);break;case r.UINT64:this.writeUint64(t,o);break;case r.INT32:this.writeInt32(t,o);break;case r.FIXED64:this.writeFixed64(t,o);break;case r.FIXED32:this.writeFixed32(t,o);break;case r.BOOL:this.writeBool(t,o);break;case r.STRING:this.writeString(t,o);break;case r.GROUP:goog.asserts.fail("Group field type not supported in writeAny()");break;case r.MESSAGE:goog.asserts.fail("Message field type not supported in writeAny()");break;case r.BYTES:this.writeBytes(t,o);break;case r.UINT32:this.writeUint32(t,o);break;case r.ENUM:this.writeEnum(t,o);break;case r.SFIXED32:this.writeSfixed32(t,o);break;case r.SFIXED64:this.writeSfixed64(t,o);break;case r.SINT32:this.writeSint32(t,o);break;case r.SINT64:this.writeSint64(t,o);break;case r.FHASH64:this.writeFixedHash64(t,o);break;case r.VHASH64:this.writeVarintHash64(t,o);break;default:goog.asserts.fail("Invalid field type in writeAny()")}},jspb.BinaryWriter.prototype.writeUnsignedVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint32(t))},jspb.BinaryWriter.prototype.writeSignedVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(t))},jspb.BinaryWriter.prototype.writeUnsignedVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint64(t))},jspb.BinaryWriter.prototype.writeSignedVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint64(t))},jspb.BinaryWriter.prototype.writeZigzagVarint32_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint32(t))},jspb.BinaryWriter.prototype.writeZigzagVarint64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64(t))},jspb.BinaryWriter.prototype.writeZigzagVarint64String_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64String(t))},jspb.BinaryWriter.prototype.writeZigzagVarintHash64_=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarintHash64(t))},jspb.BinaryWriter.prototype.writeInt32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeInt32String=function(e,t){null!=t&&(t=parseInt(t,10),goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeInt64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeSignedVarint64_(e,t))},jspb.BinaryWriter.prototype.writeInt64String=function(e,t){null!=t&&(t=jspb.arith.Int64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeUint32=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeUint32String=function(e,t){null!=t&&(t=parseInt(t,10),goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(e,t))},jspb.BinaryWriter.prototype.writeUint64=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_64),this.writeUnsignedVarint64_(e,t))},jspb.BinaryWriter.prototype.writeUint64String=function(e,t){null!=t&&(t=jspb.arith.UInt64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeSint32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeZigzagVarint32_(e,t))},jspb.BinaryWriter.prototype.writeSint64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeZigzagVarint64_(e,t))},jspb.BinaryWriter.prototype.writeSintHash64=function(e,t){null!=t&&this.writeZigzagVarintHash64_(e,t)},jspb.BinaryWriter.prototype.writeSint64String=function(e,t){null!=t&&this.writeZigzagVarint64String_(e,t)},jspb.BinaryWriter.prototype.writeFixed32=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_32),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeUint32(t))},jspb.BinaryWriter.prototype.writeFixed64=function(e,t){null!=t&&(goog.asserts.assert(0<=t&&t<jspb.BinaryConstants.TWO_TO_64),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeUint64(t))},jspb.BinaryWriter.prototype.writeFixed64String=function(e,t){null!=t&&(t=jspb.arith.UInt64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeSfixed32=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeInt32(t))},jspb.BinaryWriter.prototype.writeSfixed64=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_63&&t<jspb.BinaryConstants.TWO_TO_63),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeInt64(t))},jspb.BinaryWriter.prototype.writeSfixed64String=function(e,t){null!=t&&(t=jspb.arith.Int64.fromString(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t.lo,t.hi))},jspb.BinaryWriter.prototype.writeFloat=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeFloat(t))},jspb.BinaryWriter.prototype.writeDouble=function(e,t){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeDouble(t))},jspb.BinaryWriter.prototype.writeBool=function(e,t){null!=t&&(goog.asserts.assert("boolean"==typeof t||"number"==typeof t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeBool(t))},jspb.BinaryWriter.prototype.writeEnum=function(e,t){null!=t&&(goog.asserts.assert(t>=-jspb.BinaryConstants.TWO_TO_31&&t<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(t))},jspb.BinaryWriter.prototype.writeString=function(e,t){null!=t&&(e=this.beginDelimited_(e),this.encoder_.writeString(t),this.endDelimited_(e))},jspb.BinaryWriter.prototype.writeBytes=function(e,t){null!=t&&(t=jspb.utils.byteSourceToUint8Array(t),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(t.length),this.appendUint8Array_(t))},jspb.BinaryWriter.prototype.writeMessage=function(e,t,o){null!=t&&(e=this.beginDelimited_(e),o(t,this),this.endDelimited_(e))},jspb.BinaryWriter.prototype.writeMessageSet=function(e,t,o){null!=t&&(this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.START_GROUP),this.writeFieldHeader_(2,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(e),e=this.beginDelimited_(3),o(t,this),this.endDelimited_(e),this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.END_GROUP))},jspb.BinaryWriter.prototype.writeGroup=function(e,t,o){null!=t&&(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.START_GROUP),o(t,this),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.END_GROUP))},jspb.BinaryWriter.prototype.writeFixedHash64=function(e,t){null!=t&&(goog.asserts.assert(8==t.length),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeFixedHash64(t))},jspb.BinaryWriter.prototype.writeVarintHash64=function(e,t){null!=t&&(goog.asserts.assert(8==t.length),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeVarintHash64(t))},jspb.BinaryWriter.prototype.writeSplitFixed64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(t,o)},jspb.BinaryWriter.prototype.writeSplitVarint64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(t,o)},jspb.BinaryWriter.prototype.writeSplitZigzagVarint64=function(e,t,o){this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.VARINT);var r=this.encoder_;jspb.utils.toZigzag64(t,o,(function(e,t){r.writeSplitVarint64(e>>>0,t>>>0)}))},jspb.BinaryWriter.prototype.writeRepeatedInt32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSignedVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedInt32String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeInt32String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedInt64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSignedVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSplitFixed64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitFixed64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitVarint64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64=function(e,t,o,r){if(null!=t)for(var n=0;n<t.length;n++)this.writeSplitZigzagVarint64(e,o(t[n]),r(t[n]))},jspb.BinaryWriter.prototype.writeRepeatedInt64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeInt64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUnsignedVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint32String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUint32String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUnsignedVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedUint64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeUint64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint32_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSint64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarint64String_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSintHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeZigzagVarintHash64_(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed32(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFixed64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixed64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed32=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed32(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedSfixed64String=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeSfixed64String(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedFloat=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFloat(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedDouble=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeDouble(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedBool=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeBool(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedEnum=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeEnum(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedString=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeString(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedBytes=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeBytes(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedMessage=function(e,t,o){if(null!=t)for(var r=0;r<t.length;r++){var n=this.beginDelimited_(e);o(t[r],this),this.endDelimited_(n)}},jspb.BinaryWriter.prototype.writeRepeatedGroup=function(e,t,o){if(null!=t)for(var r=0;r<t.length;r++)this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.START_GROUP),o(t[r],this),this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.END_GROUP)},jspb.BinaryWriter.prototype.writeRepeatedFixedHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeFixedHash64(e,t[o])},jspb.BinaryWriter.prototype.writeRepeatedVarintHash64=function(e,t){if(null!=t)for(var o=0;o<t.length;o++)this.writeVarintHash64(e,t[o])},jspb.BinaryWriter.prototype.writePackedInt32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt32String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint32(parseInt(t[o],10));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeSignedVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitFixed64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=0;n<t.length;n++)this.encoder_.writeSplitFixed64(o(t[n]),r(t[n]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitVarint64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=0;n<t.length;n++)this.encoder_.writeSplitVarint64(o(t[n]),r(t[n]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64=function(e,t,o,r){if(null!=t){e=this.beginDelimited_(e);for(var n=this.encoder_,s=0;s<t.length;s++)jspb.utils.toZigzag64(o(t[s]),r(t[s]),(function(e,t){n.writeSplitVarint64(e>>>0,t>>>0)}));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedInt64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++){var r=jspb.arith.Int64.fromString(t[o]);this.encoder_.writeSplitVarint64(r.lo,r.hi)}this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint32String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint32(parseInt(t[o],10));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeUnsignedVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedUint64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++){var r=jspb.arith.UInt64.fromString(t[o]);this.encoder_.writeSplitVarint64(r.lo,r.hi)}this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint32=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarint32(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarint64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSint64String=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(t[o]));this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedSintHash64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeZigzagVarintHash64(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedFixed32=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeUint32(t[e])},jspb.BinaryWriter.prototype.writePackedFixed64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeUint64(t[e])},jspb.BinaryWriter.prototype.writePackedFixed64String=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++){var o=jspb.arith.UInt64.fromString(t[e]);this.encoder_.writeSplitFixed64(o.lo,o.hi)}},jspb.BinaryWriter.prototype.writePackedSfixed32=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeInt32(t[e])},jspb.BinaryWriter.prototype.writePackedSfixed64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeInt64(t[e])},jspb.BinaryWriter.prototype.writePackedSfixed64String=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeInt64String(t[e])},jspb.BinaryWriter.prototype.writePackedFloat=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*t.length),e=0;e<t.length;e++)this.encoder_.writeFloat(t[e])},jspb.BinaryWriter.prototype.writePackedDouble=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeDouble(t[e])},jspb.BinaryWriter.prototype.writePackedBool=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(t.length),e=0;e<t.length;e++)this.encoder_.writeBool(t[e])},jspb.BinaryWriter.prototype.writePackedEnum=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeEnum(t[o]);this.endDelimited_(e)}},jspb.BinaryWriter.prototype.writePackedFixedHash64=function(e,t){if(null!=t&&t.length)for(this.writeFieldHeader_(e,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*t.length),e=0;e<t.length;e++)this.encoder_.writeFixedHash64(t[e])},jspb.BinaryWriter.prototype.writePackedVarintHash64=function(e,t){if(null!=t&&t.length){e=this.beginDelimited_(e);for(var o=0;o<t.length;o++)this.encoder_.writeVarintHash64(t[o]);this.endDelimited_(e)}},jspb.Map=function(e,t){this.arr_=e,this.valueCtor_=t,this.map_={},this.arrClean=!0,0<this.arr_.length&&this.loadFromArray_()},jspb.Map.prototype.loadFromArray_=function(){for(var e=0;e<this.arr_.length;e++){var t=this.arr_[e],o=t[0];this.map_[o.toString()]=new jspb.Map.Entry_(o,t[1])}this.arrClean=!0},jspb.Map.prototype.toArray=function(){if(this.arrClean){if(this.valueCtor_){var e,t=this.map_;for(e in t)if(Object.prototype.hasOwnProperty.call(t,e)){var o=t[e].valueWrapper;o&&o.toArray()}}}else{for(this.arr_.length=0,(t=this.stringKeys_()).sort(),e=0;e<t.length;e++){var r=this.map_[t[e]];(o=r.valueWrapper)&&o.toArray(),this.arr_.push([r.key,r.value])}this.arrClean=!0}return this.arr_},jspb.Map.prototype.toObject=function(e,t){for(var o=this.toArray(),r=[],n=0;n<o.length;n++){var s=this.map_[o[n][0].toString()];this.wrapEntry_(s);var i=s.valueWrapper;i?(goog.asserts.assert(t),r.push([s.key,t(e,i)])):r.push([s.key,s.value])}return r},jspb.Map.fromObject=function(e,t,o){t=new jspb.Map([],t);for(var r=0;r<e.length;r++){var n=e[r][0],s=o(e[r][1]);t.set(n,s)}return t},jspb.Map.ArrayIteratorIterable_=function(e){this.idx_=0,this.arr_=e},jspb.Map.ArrayIteratorIterable_.prototype.next=function(){return this.idx_<this.arr_.length?{done:!1,value:this.arr_[this.idx_++]}:{done:!0,value:void 0}},"undefined"!=typeof Symbol&&(jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator]=function(){return this}),jspb.Map.prototype.getLength=function(){return this.stringKeys_().length},jspb.Map.prototype.clear=function(){this.map_={},this.arrClean=!1},jspb.Map.prototype.del=function(e){e=e.toString();var t=this.map_.hasOwnProperty(e);return delete this.map_[e],this.arrClean=!1,t},jspb.Map.prototype.getEntryList=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++){var r=this.map_[t[o]];e.push([r.key,r.value])}return e},jspb.Map.prototype.entries=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++){var r=this.map_[t[o]];e.push([r.key,this.wrapEntry_(r)])}return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.keys=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++)e.push(this.map_[t[o]].key);return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.values=function(){var e=[],t=this.stringKeys_();t.sort();for(var o=0;o<t.length;o++)e.push(this.wrapEntry_(this.map_[t[o]]));return new jspb.Map.ArrayIteratorIterable_(e)},jspb.Map.prototype.forEach=function(e,t){var o=this.stringKeys_();o.sort();for(var r=0;r<o.length;r++){var n=this.map_[o[r]];e.call(t,this.wrapEntry_(n),n.key,this)}},jspb.Map.prototype.set=function(e,t){var o=new jspb.Map.Entry_(e);return this.valueCtor_?(o.valueWrapper=t,o.value=t.toArray()):o.value=t,this.map_[e.toString()]=o,this.arrClean=!1,this},jspb.Map.prototype.wrapEntry_=function(e){return this.valueCtor_?(e.valueWrapper||(e.valueWrapper=new this.valueCtor_(e.value)),e.valueWrapper):e.value},jspb.Map.prototype.get=function(e){if(e=this.map_[e.toString()])return this.wrapEntry_(e)},jspb.Map.prototype.has=function(e){return e.toString()in this.map_},jspb.Map.prototype.serializeBinary=function(e,t,o,r,n){var s=this.stringKeys_();s.sort();for(var i=0;i<s.length;i++){var a=this.map_[s[i]];t.beginSubMessage(e),o.call(t,1,a.key),this.valueCtor_?r.call(t,2,this.wrapEntry_(a),n):r.call(t,2,a.value),t.endSubMessage()}},jspb.Map.deserializeBinary=function(e,t,o,r,n,s,i){for(;t.nextField()&&!t.isEndGroup();){var a=t.getFieldNumber();1==a?s=o.call(t):2==a&&(e.valueCtor_?(goog.asserts.assert(n),i||(i=new e.valueCtor_),r.call(t,i,n)):i=r.call(t))}goog.asserts.assert(null!=s),goog.asserts.assert(null!=i),e.set(s,i)},jspb.Map.prototype.stringKeys_=function(){var e,t=this.map_,o=[];for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&o.push(e);return o},jspb.Map.Entry_=function(e,t){this.key=e,this.value=t,this.valueWrapper=void 0},jspb.ExtensionFieldInfo=function(e,t,o,r,n){this.fieldIndex=e,this.fieldName=t,this.ctor=o,this.toObjectFn=r,this.isRepeated=n},jspb.ExtensionFieldBinaryInfo=function(e,t,o,r,n,s){this.fieldInfo=e,this.binaryReaderFn=t,this.binaryWriterFn=o,this.binaryMessageSerializeFn=r,this.binaryMessageDeserializeFn=n,this.isPacked=s},jspb.ExtensionFieldInfo.prototype.isMessageType=function(){return!!this.ctor},jspb.Message=function(){},jspb.Message.GENERATE_TO_OBJECT=!0,jspb.Message.GENERATE_FROM_OBJECT=!goog.DISALLOW_TEST_ONLY_CODE,jspb.Message.GENERATE_TO_STRING=!0,jspb.Message.ASSUME_LOCAL_ARRAYS=!1,jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS=!0,jspb.Message.SUPPORTS_UINT8ARRAY_="function"==typeof Uint8Array,jspb.Message.prototype.getJsPbMessageId=function(){return this.messageId_},jspb.Message.getIndex_=function(e,t){return t+e.arrayIndexOffset_},jspb.Message.hiddenES6Property_=function(){},jspb.Message.getFieldNumber_=function(e,t){return t-e.arrayIndexOffset_},jspb.Message.initialize=function(e,t,o,r,n,s){if(e.wrappers_=null,t||(t=o?[o]:[]),e.messageId_=o?String(o):void 0,e.arrayIndexOffset_=0===o?-1:0,e.array=t,jspb.Message.initPivotAndExtensionObject_(e,r),e.convertedPrimitiveFields_={},jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS||(e.repeatedFields=n),n)for(t=0;t<n.length;t++)(o=n[t])<e.pivot_?(o=jspb.Message.getIndex_(e,o),e.array[o]=e.array[o]||jspb.Message.EMPTY_LIST_SENTINEL_):(jspb.Message.maybeInitEmptyExtensionObject_(e),e.extensionObject_[o]=e.extensionObject_[o]||jspb.Message.EMPTY_LIST_SENTINEL_);if(s&&s.length)for(t=0;t<s.length;t++)jspb.Message.computeOneofCase(e,s[t])},jspb.Message.EMPTY_LIST_SENTINEL_=goog.DEBUG&&Object.freeze?Object.freeze([]):[],jspb.Message.isArray_=function(e){return jspb.Message.ASSUME_LOCAL_ARRAYS?e instanceof Array:Array.isArray(e)},jspb.Message.isExtensionObject_=function(e){return!(null===e||"object"!=typeof e||jspb.Message.isArray_(e)||jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array)},jspb.Message.initPivotAndExtensionObject_=function(e,t){var o=e.array.length,r=-1;if(o&&(r=o-1,o=e.array[r],jspb.Message.isExtensionObject_(o)))return e.pivot_=jspb.Message.getFieldNumber_(e,r),void(e.extensionObject_=o);-1<t?(e.pivot_=Math.max(t,jspb.Message.getFieldNumber_(e,r+1)),e.extensionObject_=null):e.pivot_=Number.MAX_VALUE},jspb.Message.maybeInitEmptyExtensionObject_=function(e){var t=jspb.Message.getIndex_(e,e.pivot_);e.array[t]||(e.extensionObject_=e.array[t]={})},jspb.Message.toObjectList=function(e,t,o){for(var r=[],n=0;n<e.length;n++)r[n]=t.call(e[n],o,e[n]);return r},jspb.Message.toObjectExtension=function(e,t,o,r,n){for(var s in o){var i=o[s],a=r.call(e,i);if(null!=a){for(var g in i.fieldName)if(i.fieldName.hasOwnProperty(g))break;t[g]=i.toObjectFn?i.isRepeated?jspb.Message.toObjectList(a,i.toObjectFn,n):i.toObjectFn(n,a):a}}},jspb.Message.serializeBinaryExtensions=function(e,t,o,r){for(var n in o){var s=o[n],i=s.fieldInfo;if(!s.binaryWriterFn)throw Error("Message extension present that was generated without binary serialization support");var a=r.call(e,i);if(null!=a)if(i.isMessageType()){if(!s.binaryMessageSerializeFn)throw Error("Message extension present holding submessage without binary support enabled, and message is being serialized to binary format");s.binaryWriterFn.call(t,i.fieldIndex,a,s.binaryMessageSerializeFn)}else s.binaryWriterFn.call(t,i.fieldIndex,a)}},jspb.Message.readBinaryExtension=function(e,t,o,r,n){var s=o[t.getFieldNumber()];if(s){if(o=s.fieldInfo,!s.binaryReaderFn)throw Error("Deserializing extension whose generated code does not support binary format");if(o.isMessageType()){var i=new o.ctor;s.binaryReaderFn.call(t,i,s.binaryMessageDeserializeFn)}else i=s.binaryReaderFn.call(t);o.isRepeated&&!s.isPacked?(t=r.call(e,o))?t.push(i):n.call(e,o,[i]):n.call(e,o,i)}else t.skipField()},jspb.Message.getField=function(e,t){if(t<e.pivot_){t=jspb.Message.getIndex_(e,t);var o=e.array[t];return o===jspb.Message.EMPTY_LIST_SENTINEL_?e.array[t]=[]:o}if(e.extensionObject_)return(o=e.extensionObject_[t])===jspb.Message.EMPTY_LIST_SENTINEL_?e.extensionObject_[t]=[]:o},jspb.Message.getRepeatedField=function(e,t){return jspb.Message.getField(e,t)},jspb.Message.getOptionalFloatingPointField=function(e,t){return null==(e=jspb.Message.getField(e,t))?e:+e},jspb.Message.getBooleanField=function(e,t){return null==(e=jspb.Message.getField(e,t))?e:!!e},jspb.Message.getRepeatedFloatingPointField=function(e,t){var o=jspb.Message.getRepeatedField(e,t);if(e.convertedPrimitiveFields_||(e.convertedPrimitiveFields_={}),!e.convertedPrimitiveFields_[t]){for(var r=0;r<o.length;r++)o[r]=+o[r];e.convertedPrimitiveFields_[t]=!0}return o},jspb.Message.getRepeatedBooleanField=function(e,t){var o=jspb.Message.getRepeatedField(e,t);if(e.convertedPrimitiveFields_||(e.convertedPrimitiveFields_={}),!e.convertedPrimitiveFields_[t]){for(var r=0;r<o.length;r++)o[r]=!!o[r];e.convertedPrimitiveFields_[t]=!0}return o},jspb.Message.bytesAsB64=function(e){return null==e||"string"==typeof e?e:jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array?goog.crypt.base64.encodeByteArray(e):(goog.asserts.fail("Cannot coerce to b64 string: "+goog.typeOf(e)),null)},jspb.Message.bytesAsU8=function(e){return null==e||e instanceof Uint8Array?e:"string"==typeof e?goog.crypt.base64.decodeStringToUint8Array(e):(goog.asserts.fail("Cannot coerce to Uint8Array: "+goog.typeOf(e)),null)},jspb.Message.bytesListAsB64=function(e){return jspb.Message.assertConsistentTypes_(e),e.length&&"string"!=typeof e[0]?goog.array.map(e,jspb.Message.bytesAsB64):e},jspb.Message.bytesListAsU8=function(e){return jspb.Message.assertConsistentTypes_(e),!e.length||e[0]instanceof Uint8Array?e:goog.array.map(e,jspb.Message.bytesAsU8)},jspb.Message.assertConsistentTypes_=function(e){if(goog.DEBUG&&e&&1<e.length){var t=goog.typeOf(e[0]);goog.array.forEach(e,(function(e){goog.typeOf(e)!=t&&goog.asserts.fail("Inconsistent type in JSPB repeated field array. Got "+goog.typeOf(e)+" expected "+t)}))}},jspb.Message.getFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getField(e,t))?o:e},jspb.Message.getBooleanFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getBooleanField(e,t))?o:e},jspb.Message.getFloatingPointFieldWithDefault=function(e,t,o){return null==(e=jspb.Message.getOptionalFloatingPointField(e,t))?o:e},jspb.Message.getFieldProto3=jspb.Message.getFieldWithDefault,jspb.Message.getMapField=function(e,t,o,r){if(e.wrappers_||(e.wrappers_={}),t in e.wrappers_)return e.wrappers_[t];var n=jspb.Message.getField(e,t);if(!n){if(o)return;n=[],jspb.Message.setField(e,t,n)}return e.wrappers_[t]=new jspb.Map(n,r)},jspb.Message.setField=function(e,t,o){return goog.asserts.assertInstanceof(e,jspb.Message),t<e.pivot_?e.array[jspb.Message.getIndex_(e,t)]=o:(jspb.Message.maybeInitEmptyExtensionObject_(e),e.extensionObject_[t]=o),e},jspb.Message.setProto3IntField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3FloatField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3BooleanField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,!1)},jspb.Message.setProto3StringField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"")},jspb.Message.setProto3BytesField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"")},jspb.Message.setProto3EnumField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,0)},jspb.Message.setProto3StringIntField=function(e,t,o){return jspb.Message.setFieldIgnoringDefault_(e,t,o,"0")},jspb.Message.setFieldIgnoringDefault_=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),o!==r?jspb.Message.setField(e,t,o):t<e.pivot_?e.array[jspb.Message.getIndex_(e,t)]=null:(jspb.Message.maybeInitEmptyExtensionObject_(e),delete e.extensionObject_[t]),e},jspb.Message.addToRepeatedField=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),t=jspb.Message.getRepeatedField(e,t),null!=r?t.splice(r,0,o):t.push(o),e},jspb.Message.setOneofField=function(e,t,o,r){return goog.asserts.assertInstanceof(e,jspb.Message),(o=jspb.Message.computeOneofCase(e,o))&&o!==t&&void 0!==r&&(e.wrappers_&&o in e.wrappers_&&(e.wrappers_[o]=void 0),jspb.Message.setField(e,o,void 0)),jspb.Message.setField(e,t,r)},jspb.Message.computeOneofCase=function(e,t){for(var o,r,n=0;n<t.length;n++){var s=t[n],i=jspb.Message.getField(e,s);null!=i&&(o=s,r=i,jspb.Message.setField(e,s,void 0))}return o?(jspb.Message.setField(e,o,r),o):0},jspb.Message.getWrapperField=function(e,t,o,r){if(e.wrappers_||(e.wrappers_={}),!e.wrappers_[o]){var n=jspb.Message.getField(e,o);(r||n)&&(e.wrappers_[o]=new t(n))}return e.wrappers_[o]},jspb.Message.getRepeatedWrapperField=function(e,t,o){return jspb.Message.wrapRepeatedField_(e,t,o),(t=e.wrappers_[o])==jspb.Message.EMPTY_LIST_SENTINEL_&&(t=e.wrappers_[o]=[]),t},jspb.Message.wrapRepeatedField_=function(e,t,o){if(e.wrappers_||(e.wrappers_={}),!e.wrappers_[o]){for(var r=jspb.Message.getRepeatedField(e,o),n=[],s=0;s<r.length;s++)n[s]=new t(r[s]);e.wrappers_[o]=n}},jspb.Message.setWrapperField=function(e,t,o){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={});var r=o?o.toArray():o;return e.wrappers_[t]=o,jspb.Message.setField(e,t,r)},jspb.Message.setOneofWrapperField=function(e,t,o,r){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={});var n=r?r.toArray():r;return e.wrappers_[t]=r,jspb.Message.setOneofField(e,t,o,n)},jspb.Message.setRepeatedWrapperField=function(e,t,o){goog.asserts.assertInstanceof(e,jspb.Message),e.wrappers_||(e.wrappers_={}),o=o||[];for(var r=[],n=0;n<o.length;n++)r[n]=o[n].toArray();return e.wrappers_[t]=o,jspb.Message.setField(e,t,r)},jspb.Message.addToRepeatedWrapperField=function(e,t,o,r,n){jspb.Message.wrapRepeatedField_(e,r,t);var s=e.wrappers_[t];return s||(s=e.wrappers_[t]=[]),o=o||new r,e=jspb.Message.getRepeatedField(e,t),null!=n?(s.splice(n,0,o),e.splice(n,0,o.toArray())):(s.push(o),e.push(o.toArray())),o},jspb.Message.toMap=function(e,t,o,r){for(var n={},s=0;s<e.length;s++)n[t.call(e[s])]=o?o.call(e[s],r,e[s]):e[s];return n},jspb.Message.prototype.syncMapFields_=function(){if(this.wrappers_)for(var e in this.wrappers_){var t=this.wrappers_[e];if(Array.isArray(t))for(var o=0;o<t.length;o++)t[o]&&t[o].toArray();else t&&t.toArray()}},jspb.Message.prototype.toArray=function(){return this.syncMapFields_(),this.array},jspb.Message.GENERATE_TO_STRING&&(jspb.Message.prototype.toString=function(){return this.syncMapFields_(),this.array.toString()}),jspb.Message.prototype.getExtension=function(e){if(this.extensionObject_){this.wrappers_||(this.wrappers_={});var t=e.fieldIndex;if(e.isRepeated){if(e.isMessageType())return this.wrappers_[t]||(this.wrappers_[t]=goog.array.map(this.extensionObject_[t]||[],(function(t){return new e.ctor(t)}))),this.wrappers_[t]}else if(e.isMessageType())return!this.wrappers_[t]&&this.extensionObject_[t]&&(this.wrappers_[t]=new e.ctor(this.extensionObject_[t])),this.wrappers_[t];return this.extensionObject_[t]}},jspb.Message.prototype.setExtension=function(e,t){this.wrappers_||(this.wrappers_={}),jspb.Message.maybeInitEmptyExtensionObject_(this);var o=e.fieldIndex;return e.isRepeated?(t=t||[],e.isMessageType()?(this.wrappers_[o]=t,this.extensionObject_[o]=goog.array.map(t,(function(e){return e.toArray()}))):this.extensionObject_[o]=t):e.isMessageType()?(this.wrappers_[o]=t,this.extensionObject_[o]=t?t.toArray():t):this.extensionObject_[o]=t,this},jspb.Message.difference=function(e,t){if(!(e instanceof t.constructor))throw Error("Messages have different types.");var o=e.toArray();t=t.toArray();var r=[],n=0,s=o.length>t.length?o.length:t.length;for(e.getJsPbMessageId()&&(r[0]=e.getJsPbMessageId(),n=1);n<s;n++)jspb.Message.compareFields(o[n],t[n])||(r[n]=t[n]);return new e.constructor(r)},jspb.Message.equals=function(e,t){return e==t||!(!e||!t)&&e instanceof t.constructor&&jspb.Message.compareFields(e.toArray(),t.toArray())},jspb.Message.compareExtensions=function(e,t){e=e||{},t=t||{};var o,r={};for(o in e)r[o]=0;for(o in t)r[o]=0;for(o in r)if(!jspb.Message.compareFields(e[o],t[o]))return!1;return!0},jspb.Message.compareFields=function(e,t){if(e==t)return!0;if(!goog.isObject(e)||!goog.isObject(t))return!!("number"==typeof e&&isNaN(e)||"number"==typeof t&&isNaN(t))&&String(e)==String(t);if(e.constructor!=t.constructor)return!1;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&e.constructor===Uint8Array){if(e.length!=t.length)return!1;for(var o=0;o<e.length;o++)if(e[o]!=t[o])return!1;return!0}if(e.constructor===Array){var r=void 0,n=void 0,s=Math.max(e.length,t.length);for(o=0;o<s;o++){var i=e[o],a=t[o];if(i&&i.constructor==Object&&(goog.asserts.assert(void 0===r),goog.asserts.assert(o===e.length-1),r=i,i=void 0),a&&a.constructor==Object&&(goog.asserts.assert(void 0===n),goog.asserts.assert(o===t.length-1),n=a,a=void 0),!jspb.Message.compareFields(i,a))return!1}return!r&&!n||(r=r||{},n=n||{},jspb.Message.compareExtensions(r,n))}if(e.constructor===Object)return jspb.Message.compareExtensions(e,t);throw Error("Invalid type in JSPB array")},jspb.Message.prototype.cloneMessage=function(){return jspb.Message.cloneMessage(this)},jspb.Message.prototype.clone=function(){return jspb.Message.cloneMessage(this)},jspb.Message.clone=function(e){return jspb.Message.cloneMessage(e)},jspb.Message.cloneMessage=function(e){return new e.constructor(jspb.Message.clone_(e.toArray()))},jspb.Message.copyInto=function(e,t){goog.asserts.assertInstanceof(e,jspb.Message),goog.asserts.assertInstanceof(t,jspb.Message),goog.asserts.assert(e.constructor==t.constructor,"Copy source and target message should have the same type."),e=jspb.Message.clone(e);for(var o=t.toArray(),r=e.toArray(),n=o.length=0;n<r.length;n++)o[n]=r[n];t.wrappers_=e.wrappers_,t.extensionObject_=e.extensionObject_},jspb.Message.clone_=function(e){if(Array.isArray(e)){for(var t=Array(e.length),o=0;o<e.length;o++){var r=e[o];null!=r&&(t[o]="object"==typeof r?jspb.Message.clone_(goog.asserts.assert(r)):r)}return t}if(jspb.Message.SUPPORTS_UINT8ARRAY_&&e instanceof Uint8Array)return new Uint8Array(e);for(o in t={},e)null!=(r=e[o])&&(t[o]="object"==typeof r?jspb.Message.clone_(goog.asserts.assert(r)):r);return t},jspb.Message.registerMessageType=function(e,t){t.messageId=e},jspb.Message.messageSetExtensions={},jspb.Message.messageSetExtensionsBinary={},jspb.Export={},exports.Map=jspb.Map,exports.Message=jspb.Message,exports.BinaryReader=jspb.BinaryReader,exports.BinaryWriter=jspb.BinaryWriter,exports.ExtensionFieldInfo=jspb.ExtensionFieldInfo,exports.ExtensionFieldBinaryInfo=jspb.ExtensionFieldBinaryInfo,exports.exportSymbol=goog.exportSymbol,exports.inherits=goog.inherits,exports.object={extend:goog.object.extend},exports.typeOf=goog.typeOf},40:function(e,t,o){var r;function n(e){var t=0;return function(){return t<e.length?{done:!1,value:e[t++]}:{done:!0}}}var s="function"==typeof Object.defineProperties?Object.defineProperty:function(e,t,o){e!=Array.prototype&&e!=Object.prototype&&(e[t]=o.value)},i=function(e){e=["object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof o.g&&o.g,e];for(var t=0;t<e.length;++t){var r=e[t];if(r&&r.Math==Math)return r}throw Error("Cannot find global object")}(this);function a(){a=function(){},i.Symbol||(i.Symbol=u)}function g(e,t){this.a=e,s(this,"description",{configurable:!0,writable:!0,value:t})}g.prototype.toString=function(){return this.a};var l,u=(l=0,function e(t){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new g("jscomp_symbol_"+(t||"")+"_"+l++,t)});function c(){a();var e=i.Symbol.iterator;e||(e=i.Symbol.iterator=i.Symbol("Symbol.iterator")),"function"!=typeof Array.prototype[e]&&s(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return function(e){return c(),(e={next:e})[i.Symbol.iterator]=function(){return this},e}(n(this))}}),c=function(){}}function p(e){var t="undefined"!=typeof Symbol&&Symbol.iterator&&e[Symbol.iterator];return t?t.call(e):{next:n(e)}}var f,d="function"==typeof Object.create?Object.create:function(e){function t(){}return t.prototype=e,new t};if("function"==typeof Object.setPrototypeOf)f=Object.setPrototypeOf;else{var h;e:{var y={};try{y.__proto__={V:!0},h=y.V;break e}catch(ee){}h=!1}f=h?function(e,t){if(e.__proto__=t,e.__proto__!==t)throw new TypeError(e+" is not extensible");return e}:null}var _=f;function b(e,t){if(e.prototype=d(t.prototype),e.prototype.constructor=e,_)_(e,t);else for(var o in t)if("prototype"!=o)if(Object.defineProperties){var r=Object.getOwnPropertyDescriptor(t,o);r&&Object.defineProperty(e,o,r)}else e[o]=t[o];e.O=t.prototype}function m(e,t){if(t){var o=i;e=e.split(".");for(var r=0;r<e.length-1;r++){var n=e[r];n in o||(o[n]={}),o=o[n]}(t=t(r=o[e=e[e.length-1]]))!=r&&null!=t&&s(o,e,{configurable:!0,writable:!0,value:t})}}m("Array.prototype.keys",(function(e){return e||function(){return function(e,t){c(),e instanceof String&&(e+="");var o=0,r={next:function(){if(o<e.length){var n=o++;return{value:t(n,e[n]),done:!1}}return r.next=function(){return{done:!0,value:void 0}},r.next()}};return r[Symbol.iterator]=function(){return r},r}(this,(function(e){return e}))}})),m("Array.prototype.find",(function(e){return e||function(e,t){e:{var o=this;o instanceof String&&(o=String(o));for(var r=o.length,n=0;n<r;n++){var s=o[n];if(e.call(t,s,n,o)){e=s;break e}}e=void 0}return e}})),m("Object.is",(function(e){return e||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}})),m("Array.prototype.includes",(function(e){return e||function(e,t){var o=this;o instanceof String&&(o=String(o));var r=o.length;for(0>(t=t||0)&&(t=Math.max(t+r,0));t<r;t++){var n=o[t];if(n===e||Object.is(n,e))return!0}return!1}})),m("Promise",(function(e){function t(e){this.b=0,this.c=void 0,this.a=[];var t=this.f();try{e(t.resolve,t.reject)}catch(e){t.reject(e)}}function o(){this.a=null}function r(e){return e instanceof t?e:new t((function(t){t(e)}))}if(e)return e;o.prototype.b=function(e){if(null==this.a){this.a=[];var t=this;this.c((function(){t.g()}))}this.a.push(e)};var n=i.setTimeout;o.prototype.c=function(e){n(e,0)},o.prototype.g=function(){for(;this.a&&this.a.length;){var e=this.a;this.a=[];for(var t=0;t<e.length;++t){var o=e[t];e[t]=null;try{o()}catch(e){this.f(e)}}}this.a=null},o.prototype.f=function(e){this.c((function(){throw e}))},t.prototype.f=function(){function e(e){return function(r){o||(o=!0,e.call(t,r))}}var t=this,o=!1;return{resolve:e(this.s),reject:e(this.g)}},t.prototype.s=function(e){if(e===this)this.g(new TypeError("A Promise cannot resolve to itself"));else if(e instanceof t)this.v(e);else{e:switch(typeof e){case"object":var o=null!=e;break e;case"function":o=!0;break e;default:o=!1}o?this.m(e):this.h(e)}},t.prototype.m=function(e){var t=void 0;try{t=e.then}catch(e){return void this.g(e)}"function"==typeof t?this.w(t,e):this.h(e)},t.prototype.g=function(e){this.i(2,e)},t.prototype.h=function(e){this.i(1,e)},t.prototype.i=function(e,t){if(0!=this.b)throw Error("Cannot settle("+e+", "+t+"): Promise already settled in state"+this.b);this.b=e,this.c=t,this.l()},t.prototype.l=function(){if(null!=this.a){for(var e=0;e<this.a.length;++e)s.b(this.a[e]);this.a=null}};var s=new o;return t.prototype.v=function(e){var t=this.f();e.F(t.resolve,t.reject)},t.prototype.w=function(e,t){var o=this.f();try{e.call(t,o.resolve,o.reject)}catch(e){o.reject(e)}},t.prototype.then=function(e,o){function r(e,t){return"function"==typeof e?function(t){try{n(e(t))}catch(e){s(e)}}:t}var n,s,i=new t((function(e,t){n=e,s=t}));return this.F(r(e,n),r(o,s)),i},t.prototype.catch=function(e){return this.then(void 0,e)},t.prototype.F=function(e,t){function o(){switch(r.b){case 1:e(r.c);break;case 2:t(r.c);break;default:throw Error("Unexpected state: "+r.b)}}var r=this;null==this.a?s.b(o):this.a.push(o)},t.resolve=r,t.reject=function(e){return new t((function(t,o){o(e)}))},t.race=function(e){return new t((function(t,o){for(var n=p(e),s=n.next();!s.done;s=n.next())r(s.value).F(t,o)}))},t.all=function(e){var o=p(e),n=o.next();return n.done?r([]):new t((function(e,t){function s(t){return function(o){i[t]=o,0==--a&&e(i)}}var i=[],a=0;do{i.push(void 0),a++,r(n.value).F(s(i.length-1),t),n=o.next()}while(!n.done)}))},t}));var S=S||{},E=this||self;function T(e,t){e=e.split("."),t=t||E;for(var o=0;o<e.length;o++)if(null==(t=t[e[o]]))return null;return t}function A(){}function v(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var I="closure_uid_"+(1e9*Math.random()>>>0),R=0;function O(e,t,o){return e.call.apply(e.bind,arguments)}function j(e,t,o){if(!e)throw Error();if(2<arguments.length){var r=Array.prototype.slice.call(arguments,2);return function(){var o=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(o,r),e.apply(t,o)}}return function(){return e.apply(t,arguments)}}function w(e,t,o){return(w=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?O:j).apply(null,arguments)}function N(e,t){function o(){}o.prototype=t.prototype,e.O=t.prototype,e.prototype=new o,e.prototype.constructor=e}function C(){this.a={}}function U(e,t,o,r){this.f=e,this.c=t,this.b=o,this.a=r}function M(e,t,o,r){o=void 0===o?{}:o,this.c=e,this.a=o,this.b=t,this.f=void 0===r?null:r}function L(e,t,o){o=void 0===o?{}:o;var r=void 0===r?new C:r;return new U(t,e,o,r)}function D(e,t,o){o=void 0===o?{}:o,t=Error.call(this,t),this.message=t.message,"stack"in t&&(this.stack=t.stack),this.code=e,this.metadata=o}function B(e){this.a=e}function P(e){if(Error.captureStackTrace)Error.captureStackTrace(this,P);else{var t=Error().stack;t&&(this.stack=t)}e&&(this.message=String(e))}function F(e,t){for(var o="",r=(e=e.split("%s")).length-1,n=0;n<r;n++)o+=e[n]+(n<t.length?t[n]:"%s");P.call(this,o+e[r])}function x(){this.l=null,this.i=[],this.m=0,this.b=W,this.f=this.a=this.h=0,this.c=null,this.g=0}C.prototype.get=function(e){return this.a[e]},C.prototype.G=function(){return Object.keys(this.a)},U.prototype.getRequestMessage=function(){return this.f},U.prototype.getMethodDescriptor=function(){return this.c},U.prototype.getMetadata=function(){return this.b},U.prototype.getCallOptions=function(){return this.a},M.prototype.getResponseMessage=function(){return this.c},M.prototype.getMetadata=function(){return this.a},M.prototype.getMethodDescriptor=function(){return this.b},M.prototype.getStatus=function(){return this.f},b(D,Error),D.prototype.name="RpcError",B.prototype.on=function(e,t){return"data"==e||"error"==e?this:this.a.on(e,t)},B.prototype.removeListener=function(e,t){return this.a.removeListener(e,t)},B.prototype.cancel=function(){this.a.cancel()},N(P,Error),P.prototype.name="CustomError",N(F,P),F.prototype.name="AssertionError";var W=0,H=128;function V(e,t,o,r){throw e.b=3,e.l="The stream is broken @"+e.m+"/"+o+". Error: "+r+". With input:\\n"+t,Error(e.l)}var G,k=Array.prototype.indexOf?function(e,t){return Array.prototype.indexOf.call(e,t,void 0)}:function(e,t){if("string"==typeof e)return"string"!=typeof t||1!=t.length?-1:e.indexOf(t,0);for(var o=0;o<e.length;o++)if(o in e&&e[o]===t)return o;return-1},Y=String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(e)[1]};function z(e,t){return-1!=e.indexOf(t)}function K(e,t){return e<t?-1:e>t?1:0}e:{var X=E.navigator;if(X){var q=X.userAgent;if(q){G=q;break e}}G=""}var $="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Z(e){var t=1;e=e.split(":");for(var o=[];0<t&&e.length;)o.push(e.shift()),t--;return e.length&&o.push(e.join(":")),o}function J(e){return J[" "](e),e}J[" "]=A;var Q,ee,te=z(G,"Opera"),oe=z(G,"Trident")||z(G,"MSIE"),re=z(G,"Edge"),ne=z(G,"Gecko")&&!(z(G.toLowerCase(),"webkit")&&!z(G,"Edge"))&&!(z(G,"Trident")||z(G,"MSIE"))&&!z(G,"Edge"),se=z(G.toLowerCase(),"webkit")&&!z(G,"Edge");e:{var ie="",ae=(ee=G,ne?/rv:([^\\);]+)(\\)|;)/.exec(ee):re?/Edge\\/([\\d\\.]+)/.exec(ee):oe?/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(ee):se?/WebKit\\/(\\S+)/.exec(ee):te?/(?:Version)[ \\/]?(\\S+)/.exec(ee):void 0);if(ae&&(ie=ae?ae[1]:""),oe){var ge,le=E.document;if(null!=(ge=le?le.documentMode:void 0)&&ge>parseFloat(ie)){Q=String(ge);break e}}Q=ie}var ue={};function ce(){return function(e){var t=ue;return Object.prototype.hasOwnProperty.call(t,9)?t[9]:t[9]=function(){for(var e=0,t=Y(String(Q)).split("."),o=Y("9").split("."),r=Math.max(t.length,o.length),n=0;0==e&&n<r;n++){var s=t[n]||"",i=o[n]||"";do{if(s=/(\\d*)(\\D*)(.*)/.exec(s)||["","","",""],i=/(\\d*)(\\D*)(.*)/.exec(i)||["","","",""],0==s[0].length&&0==i[0].length)break;e=K(0==s[1].length?0:parseInt(s[1],10),0==i[1].length?0:parseInt(i[1],10))||K(0==s[2].length,0==i[2].length)||K(s[2],i[2]),s=s[3],i=i[3]}while(0==e)}return 0<=e}()}()}function pe(){0!=fe&&(Object.prototype.hasOwnProperty.call(this,I)&&this[I]||(this[I]=++R)),this.K=this.K}var fe=0;pe.prototype.K=!1;var de=Object.freeze||function(e){return e};function he(e,t){this.type=e,this.a=this.target=t,this.defaultPrevented=!1}he.prototype.b=function(){this.defaultPrevented=!0};var ye=function(){if(!E.addEventListener||!Object.defineProperty)return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}});try{E.addEventListener("test",A,t),E.removeEventListener("test",A,t)}catch(e){}return e}();function _e(e,t){if(he.call(this,e?e.type:""),this.relatedTarget=this.a=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.pointerId=0,this.pointerType="",this.c=null,e){var o=this.type=e.type,r=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:null;if(this.target=e.target||e.srcElement,this.a=t,t=e.relatedTarget){if(ne){e:{try{J(t.nodeName);var n=!0;break e}catch(e){}n=!1}n||(t=null)}}else"mouseover"==o?t=e.fromElement:"mouseout"==o&&(t=e.toElement);this.relatedTarget=t,r?(this.clientX=void 0!==r.clientX?r.clientX:r.pageX,this.clientY=void 0!==r.clientY?r.clientY:r.pageY,this.screenX=r.screenX||0,this.screenY=r.screenY||0):(this.clientX=void 0!==e.clientX?e.clientX:e.pageX,this.clientY=void 0!==e.clientY?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0),this.button=e.button,this.key=e.key||"",this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.pointerId=e.pointerId||0,this.pointerType="string"==typeof e.pointerType?e.pointerType:be[e.pointerType]||"",this.c=e,e.defaultPrevented&&_e.O.b.call(this)}}N(_e,he);var be=de({2:"touch",3:"pen",4:"mouse"});_e.prototype.b=function(){_e.O.b.call(this);var e=this.c;e.preventDefault?e.preventDefault():e.returnValue=!1};var me="closure_listenable_"+(1e6*Math.random()|0),Se=0;function Ee(e,t,o,r,n){this.listener=e,this.proxy=null,this.src=t,this.type=o,this.capture=!!r,this.H=n,this.key=++Se,this.A=this.D=!1}function Te(e){e.A=!0,e.listener=null,e.proxy=null,e.src=null,e.H=null}function Ae(e){this.src=e,this.a={},this.b=0}function ve(e,t){var o=t.type;if(o in e.a){var r,n=e.a[o],s=k(n,t);(r=0<=s)&&Array.prototype.splice.call(n,s,1),r&&(Te(t),0==e.a[o].length&&(delete e.a[o],e.b--))}}function Ie(e,t,o,r){for(var n=0;n<e.length;++n){var s=e[n];if(!s.A&&s.listener==t&&s.capture==!!o&&s.H==r)return n}return-1}Ae.prototype.add=function(e,t,o,r,n){var s=e.toString();(e=this.a[s])||(e=this.a[s]=[],this.b++);var i=Ie(e,t,r,n);return-1<i?(t=e[i],o||(t.D=!1)):((t=new Ee(t,this.src,s,!!r,n)).D=o,e.push(t)),t},Ae.prototype.remove=function(e,t,o,r){if(!((e=e.toString())in this.a))return!1;var n=this.a[e];return-1<(t=Ie(n,t,o,r))&&(Te(n[t]),Array.prototype.splice.call(n,t,1),0==n.length&&(delete this.a[e],this.b--),!0)};var Re="closure_lm_"+(1e6*Math.random()|0),Oe={};function je(e,t,o,r,n){if(r&&r.once)Ne(e,t,o,r,n);else if(Array.isArray(t))for(var s=0;s<t.length;s++)je(e,t[s],o,r,n);else o=Pe(o),e&&e[me]?e.f.add(String(t),o,!1,v(r)?!!r.capture:!!r,n):we(e,t,o,!1,r,n)}function we(e,t,o,r,n,s){if(!t)throw Error("Invalid event type");var i=v(n)?!!n.capture:!!n,a=De(e);if(a||(e[Re]=a=new Ae(e)),!(o=a.add(t,o,r,i,s)).proxy)if(r=function(){var e=Le;return function t(o){return e.call(t.src,t.listener,o)}}(),o.proxy=r,r.src=e,r.listener=o,e.addEventListener)ye||(n=i),void 0===n&&(n=!1),e.addEventListener(t.toString(),r,n);else if(e.attachEvent)e.attachEvent(Me(t.toString()),r);else{if(!e.addListener||!e.removeListener)throw Error("addEventListener and attachEvent are unavailable.");e.addListener(r)}}function Ne(e,t,o,r,n){if(Array.isArray(t))for(var s=0;s<t.length;s++)Ne(e,t[s],o,r,n);else o=Pe(o),e&&e[me]?e.f.add(String(t),o,!0,v(r)?!!r.capture:!!r,n):we(e,t,o,!0,r,n)}function Ce(e,t,o,r,n){if(Array.isArray(t))for(var s=0;s<t.length;s++)Ce(e,t[s],o,r,n);else r=v(r)?!!r.capture:!!r,o=Pe(o),e&&e[me]?e.f.remove(String(t),o,r,n):e&&(e=De(e))&&(t=e.a[t.toString()],e=-1,t&&(e=Ie(t,o,r,n)),(o=-1<e?t[e]:null)&&Ue(o))}function Ue(e){if("number"!=typeof e&&e&&!e.A){var t=e.src;if(t&&t[me])ve(t.f,e);else{var o=e.type,r=e.proxy;t.removeEventListener?t.removeEventListener(o,r,e.capture):t.detachEvent?t.detachEvent(Me(o),r):t.addListener&&t.removeListener&&t.removeListener(r),(o=De(t))?(ve(o,e),0==o.b&&(o.src=null,t[Re]=null)):Te(e)}}}function Me(e){return e in Oe?Oe[e]:Oe[e]="on"+e}function Le(e,t){if(e.A)e=!0;else{t=new _e(t,this);var o=e.listener,r=e.H||e.src;e.D&&Ue(e),e=o.call(r,t)}return e}function De(e){return(e=e[Re])instanceof Ae?e:null}var Be="__closure_events_fn_"+(1e9*Math.random()>>>0);function Pe(e){return"function"==typeof e?e:(e[Be]||(e[Be]=function(t){return e.handleEvent(t)}),e[Be])}function Fe(){pe.call(this),this.f=new Ae(this),this.U=this}function xe(e,t){e=e.U;var o=t.type||t;if("string"==typeof t)t=new he(t,e);else if(t instanceof he)t.target=t.target||e;else{var r=t;!function(e,t){for(var o,r,n=1;n<arguments.length;n++){for(o in r=arguments[n])e[o]=r[o];for(var s=0;s<$.length;s++)o=$[s],Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}}(t=new he(o,e),r)}We(e=t.a=e,o,!0,t),We(e,o,!1,t)}function We(e,t,o,r){if(t=e.f.a[String(t)]){t=t.concat();for(var n=!0,s=0;s<t.length;++s){var i=t[s];if(i&&!i.A&&i.capture==o){var a=i.listener,g=i.H||i.src;i.D&&ve(e.f,i),n=!1!==a.call(g,r)&&n}}}}function He(e,t,o){if("function"==typeof e)o&&(e=w(e,o));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=w(e.handleEvent,e)}return 2147483647<Number(t)?-1:E.setTimeout(e,t||0)}function Ve(e,t){this.name=e,this.value=t}N(Fe,pe),Fe.prototype[me]=!0,Fe.prototype.addEventListener=function(e,t,o,r){je(this,e,t,o,r)},Fe.prototype.removeEventListener=function(e,t,o,r){Ce(this,e,t,o,r)},Ve.prototype.toString=function(){return this.name};var Ge,ke,Ye,ze=new Ve("OFF",1/0),Ke=new Ve("SEVERE",1e3),Xe=new Ve("CONFIG",700),qe=new Ve("FINE",500);function $e(){this.clear()}function Ze(e,t,o){this.reset(e||ze,t,o,void 0,void 0)}function Je(e,t){this.a=null,this.f=[],this.b=(void 0===t?null:t)||null,this.c=[],this.g={a:function(){return e}}}function Qe(e){return e.a?e.a:e.b?Qe(e.b):(function(e,t){throw new F("Failure"+(e?": "+e:""),Array.prototype.slice.call(arguments,1))}("Root logger has no level set."),ze)}function et(){this.entries={};var e=new Je("");e.a=Xe,this.entries[""]=e}function tt(e,t,o){var r=e.entries[t];if(r)return void 0!==o&&(r.a=o),r;r=tt(e,t.substr(0,t.lastIndexOf(".")));var n=new Je(t,r);return e.entries[t]=n,r.c.push(n),void 0!==o&&(n.a=o),n}function ot(){return ke||(ke=new et),ke}function rt(e,t,o){var r;(r=e)&&(r=e&&t)&&(r=(r=t.value)>=(e?Qe(tt(ot(),e.a())):ze).value),r&&(t=t||ze,r=tt(ot(),e.a()),"function"==typeof o&&(o=o()),Ge||(Ge=new $e),function(e,t){for(;e;)e.f.forEach((function(e){e(t)})),e=e.b}(r,e=new Ze(t,o,e.a())))}function nt(e,t){e&&rt(e,qe,t)}function st(){}function it(e){var t;return(t=e.a)||(t={},lt(e)&&(t[0]=!0,t[1]=!0),t=e.a=t),t}function at(){}function gt(e){return(e=lt(e))?new ActiveXObject(e):new XMLHttpRequest}function lt(e){if(!e.b&&"undefined"==typeof XMLHttpRequest&&"undefined"!=typeof ActiveXObject){for(var t=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],o=0;o<t.length;o++){var r=t[o];try{return new ActiveXObject(r),e.b=r}catch(e){}}throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed")}return e.b}function ut(e,t){this.b=e[E.Symbol.iterator](),this.c=t,this.f=0}$e.prototype.clear=function(){},Ze.prototype.reset=function(){},st.prototype.a=null,N(at,st),Ye=new at,a(),c(),ut.prototype[Symbol.iterator]=function(){return this},ut.prototype.next=function(){var e=this.b.next();return{value:e.done?void 0:this.c.call(void 0,e.value,this.f++),done:e.done}},a(),c(),a(),c();var ct="StopIteration"in E?E.StopIteration:{message:"StopIteration",stack:""};function pt(){}function ft(e){if(e instanceof ht||e instanceof yt||e instanceof _t)return e;if("function"==typeof e.next)return new ht((function(){return dt(e)}));if(a(),c(),"function"==typeof e[Symbol.iterator])return a(),c(),new ht((function(){return e[Symbol.iterator]()}));if("function"==typeof e.u)return new ht((function(){return dt(e.u())}));throw Error("Not an iterator or iterable.")}function dt(e){if(!(e instanceof pt))return e;var t=!1;return{next:function(){for(var o;!t;)try{o=e.a();break}catch(e){if(e!==ct)throw e;t=!0}return{value:o,done:t}}}}function ht(e){this.b=e}function yt(e){this.b=e}function _t(e){ht.call(this,(function(){return e})),this.f=e}function bt(e,t){this.o={},this.j=[],this.B=this.size=0;var o=arguments.length;if(1<o){if(o%2)throw Error("Uneven number of arguments");for(var r=0;r<o;r+=2)this.set(arguments[r],arguments[r+1])}else e&&this.addAll(e)}function mt(e){if(e.size!=e.j.length){for(var t=0,o=0;t<e.j.length;){var r=e.j[t];St(e.o,r)&&(e.j[o++]=r),t++}e.j.length=o}if(e.size!=e.j.length){var n={};for(o=t=0;t<e.j.length;)St(n,r=e.j[t])||(e.j[o++]=r,n[r]=1),t++;e.j.length=o}}function St(e,t){return Object.prototype.hasOwnProperty.call(e,t)}pt.prototype.next=function(){return pt.prototype.a.call(this)},pt.prototype.a=function(){throw ct},pt.prototype.u=function(){return this},a(),c(),ht.prototype.u=function(){return new yt(this.b())},ht.prototype[Symbol.iterator]=function(){return new _t(this.b())},ht.prototype.c=function(){return new _t(this.b())},a(),c(),b(yt,pt),yt.prototype.a=function(){var e=this.b.next();if(e.done)throw ct;return e.value},yt.prototype.next=function(){return yt.prototype.a.call(this)},yt.prototype[Symbol.iterator]=function(){return new _t(this.b)},yt.prototype.c=function(){return new _t(this.b)},b(_t,ht),_t.prototype.next=function(){return this.f.next()},(r=bt.prototype).G=function(){return mt(this),this.j.concat()},r.has=function(e){return St(this.o,e)},r.clear=function(){this.o={},this.B=this.size=this.j.length=0},r.remove=function(e){return this.delete(e)},r.delete=function(e){return!!St(this.o,e)&&(delete this.o[e],--this.size,this.B++,this.j.length>2*this.size&&mt(this),!0)},r.get=function(e,t){return St(this.o,e)?this.o[e]:t},r.set=function(e,t){St(this.o,e)||(this.size+=1,this.j.push(e),this.B++),this.o[e]=t},r.addAll=function(e){if(e instanceof bt)for(var t=e.G(),o=0;o<t.length;o++)this.set(t[o],e.get(t[o]));else for(t in e)this.set(t,e[t])},r.forEach=function(e,t){for(var o=this.G(),r=0;r<o.length;r++){var n=o[r],s=this.get(n);e.call(t,s,n,this)}},r.clone=function(){return new bt(this)},r.keys=function(){return ft(this.u(!0)).c()},r.values=function(){return ft(this.u(!1)).c()},r.entries=function(){var e=this;return function(e,t){return new ut(e,t)}(this.keys(),(function(t){return[t,e.get(t)]}))},r.u=function(e){mt(this);var t=0,o=this.B,r=this,n=new pt;return n.a=function(){if(o!=r.B)throw Error("The map has changed since the iterator was created");if(t>=r.j.length)throw ct;var n=r.j[t++];return e?n:r.o[n]},n.next=n.a.bind(n),n};var Et=/^(?:([^:/?#.]+):)?(?:\\/\\/(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$/;function Tt(e){Fe.call(this),this.headers=new bt,this.C=e||null,this.c=!1,this.J=this.a=null,this.P=this.v="",this.g=0,this.l="",this.i=this.N=this.s=this.L=!1,this.h=0,this.w=null,this.m=At,this.I=this.M=!1}N(Tt,Fe);var At="";Tt.prototype.b=tt(ot(),"goog.net.XhrIo",void 0).g;var vt=/^https?$/i,It=["POST","PUT"];function Rt(e,t){e.c=!1,e.a&&(e.i=!0,e.a.abort(),e.i=!1),e.l=t,e.g=5,Ot(e),wt(e)}function Ot(e){e.L||(e.L=!0,xe(e,"complete"),xe(e,"error"))}function jt(e){if(e.c&&void 0!==S)if(e.J[1]&&4==Ct(e)&&2==e.getStatus())nt(e.b,Mt(e,"Local request error detected and ignored"));else if(e.s&&4==Ct(e))He(e.R,0,e);else if(xe(e,"readystatechange"),4==Ct(e)){nt(e.b,Mt(e,"Request complete")),e.c=!1;try{var t,o=e.getStatus();e:switch(o){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var r=!0;break e;default:r=!1}if(!(t=r)){var n;if(n=0===o){var s=String(e.v).match(Et)[1]||null;if(!s&&E.self&&E.self.location){var i=E.self.location.protocol;s=i.substr(0,i.length-1)}n=!vt.test(s?s.toLowerCase():"")}t=n}if(t)xe(e,"complete"),xe(e,"success");else{e.g=6;try{var a=2<Ct(e)?e.a.statusText:""}catch(t){nt(e.b,"Can not get status: "+t.message),a=""}e.l=a+" ["+e.getStatus()+"]",Ot(e)}}finally{wt(e)}}}function wt(e){if(e.a){Nt(e);var t=e.a,o=e.J[0]?A:null;e.a=null,e.J=null,xe(e,"ready");try{t.onreadystatechange=o}catch(t){(e=e.b)&&rt(e,Ke,"Problem encountered resetting onreadystatechange: "+t.message)}}}function Nt(e){e.a&&e.I&&(e.a.ontimeout=null),e.w&&(E.clearTimeout(e.w),e.w=null)}function Ct(e){return e.a?e.a.readyState:0}function Ut(e,t){if(e.a&&4==Ct(e))return null===(e=e.a.getResponseHeader(t))?void 0:e}function Mt(e,t){return t+" ["+e.P+" "+e.v+" "+e.getStatus()+"]"}(r=Tt.prototype).T=function(){void 0!==S&&this.a&&(this.l="Timed out after "+this.h+"ms, aborting",this.g=8,nt(this.b,Mt(this,this.l)),xe(this,"timeout"),this.abort(8))},r.abort=function(e){this.a&&this.c&&(nt(this.b,Mt(this,"Aborting")),this.c=!1,this.i=!0,this.a.abort(),this.i=!1,this.g=e||7,xe(this,"complete"),xe(this,"abort"),wt(this))},r.R=function(){this.K||(this.N||this.s||this.i?jt(this):this.W())},r.W=function(){jt(this)},r.getStatus=function(){try{return 2<Ct(this)?this.a.status:-1}catch(e){return-1}};var Lt={},Dt=null;function Bt(){if(!Dt){Dt={};for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),t=["+/=","+/","-_=","-_.","-_"],o=0;5>o;o++){var r=e.concat(t[o].split(""));Lt[o]=r;for(var n=0;n<r.length;n++){var s=r[n];void 0===Dt[s]&&(Dt[s]=n)}}}}var Pt=["content-type","grpc-status","grpc-message"];function Ft(e){this.a=e.Z,this.m=null,this.b=[],this.h=[],this.g=[],this.f=[],this.c=[],this.l=!1,this.i=0,this.s=new x;var t=this;je(this.a,"readystatechange",(function(){var e=t.a;if(e=e.a?e.a.getResponseHeader("Content-Type"):null){if(0==(e=e.toLowerCase()).lastIndexOf("application/grpc-web-text",0)){e=t.a;try{var o=e.a?e.a.responseText:""}catch(t){nt(e.b,"Can not get responseText: "+t.message),o=""}if(o=(e=o||"").length-e.length%4,0==(e=e.substr(t.i,o-t.i)).length)return;t.i=o,e=function(e){var t=e.length,o=3*t/4;o%3?o=Math.floor(o):z("=.",e[t-1])&&(o=z("=.",e[t-2])?o-2:o-1);var r=new Uint8Array(o),n=0;return function(e,t){function o(t){for(;r<e.length;){var o=e.charAt(r++),n=Dt[o];if(null!=n)return n;if(!/^[\\s\\xa0]*$/.test(o))throw Error("Unknown base64 encoding at char: "+o)}return t}Bt();for(var r=0;;){var n=o(-1),s=o(0),i=o(64),a=o(64);if(64===a&&-1===n)break;t(n<<2|s>>4),64!=i&&(t(s<<4&240|i>>2),64!=a&&t(i<<6&192|a))}}(e,(function(e){r[n++]=e})),r.subarray(0,n)}(e)}else{if(0!=e.lastIndexOf("application/grpc",0))return void Wt(t,new D(2,"Unknown Content-type received."));e=new Uint8Array(function(e){try{if(!e.a)return null;if("response"in e.a)return e.a.response;switch(e.m){case At:case"text":return e.a.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in e.a)return e.a.mozResponseArrayBuffer}var t=e.b;return t&&rt(t,Ke,"Response type "+e.m+" is not supported on this browser"),null}catch(t){return nt(e.b,"Can not get response: "+t.message),null}}(t.a))}o=null;try{o=function(e,t){function o(e){a.f++,a.a=(a.a<<8)+e,4==a.f&&(a.b=2,a.g=0,"undefined"!=typeof Uint8Array?a.c=new Uint8Array(a.a):a.c=Array(a.a),0==a.a&&n())}function r(e){a.c[a.g++]=e,a.g==a.a&&n()}function n(){var e={};e[a.h]=a.c,a.i.push(e),a.b=W}var s,i,a=e,g=0;for(s=t instanceof Uint8Array||t instanceof Array?t:new Uint8Array(t);g<s.length;){switch(a.b){case 3:V(a,s,g,"stream already broken");break;case W:0==(i=s[g])||i==H?a.h=i:V(a,s,g,"invalid frame byte"),a.b=1,a.a=0,a.f=0;break;case 1:o(s[g]);break;case 2:r(s[g]);break;default:throw Error("unexpected parser state: "+a.b)}a.m++,g++}return e=a.i,a.i=[],0<e.length?e:null}(t.s,e)}catch(e){Wt(t,new D(2,"Error in parsing response body"))}if(o)for(e=0;e<o.length;e++){if(0 in o[e]){var r=o[e][0];if(r){var n=void 0;try{n=t.m(r)}catch(e){Wt(t,new D(13,"Error when deserializing response data: "+n))}if(n){r=t;for(var s=0;s<r.b.length;s++)r.b[s](n)}}}if(H in o[e]&&0<o[e][H].length){for(r="",n=0;n<o[e][H].length;n++)r+=String.fromCharCode(o[e][H][n]);for(r=r.trim().split("\\r\\n"),n={},s=0;s<r.length;s++){var i=r[s].indexOf(":");n[r[s].substring(0,i).trim()]=r[s].substring(i+1).trim()}r=n,n=0,s="","grpc-status"in r&&(n=Number(r["grpc-status"]),delete r["grpc-status"]),"grpc-message"in r&&(s=r["grpc-message"],delete r["grpc-message"]),Wt(t,new D(n,s,r))}}}})),je(this.a,"complete",(function(){var e=t.a.g,o=2,r="",n={},s=function(e){var t={};e=(e.a&&4==Ct(e)&&e.a.getAllResponseHeaders()||"").split("\\r\\n");for(var o=0;o<e.length;o++)if(!/^[\\s\\xa0]*$/.test(e[o])){var r=Z(e[o]),n=r[0];if("string"==typeof(r=r[1])){r=r.trim();var s=t[n]||[];t[n]=s,s.push(r)}}return function(e,t){var o,r={};for(o in e)r[o]=t.call(void 0,e[o],o,e);return r}(t,(function(e){return e.join(", ")}))}(t.a);if(Object.keys(s).forEach((function(e){Pt.includes(e)||(n[e]=s[e])})),function(e,t){for(var o=0;o<e.g.length;o++)e.g[o](t)}(t,n),0!=e){switch(e){case 7:o=10;break;case 8:o=4;break;case 6:o=function(e){switch(e){case 200:return 0;case 400:return 3;case 401:return 16;case 403:return 7;case 404:return 5;case 409:return 10;case 412:return 9;case 429:return 8;case 499:return 1;case 500:default:return 2;case 501:return 12;case 503:return 14;case 504:return 4}}(t.a.getStatus());break;default:o=14}10==o&&t.l||Wt(t,new D(o,function(e){switch(e){case 0:return"No Error";case 1:return"Access denied to content document";case 2:return"File not found";case 3:return"Firefox silently errored";case 4:return"Application custom error";case 5:return"An exception occurred";case 6:return"Http response at 400 or 500 level";case 7:return"Request was aborted";case 8:return"Request timed out";case 9:return"The resource is not available offline";default:return"Unrecognized error code"}}(e)))}else e=!1,"grpc-status"in s&&(o=Number(Ut(t.a,"grpc-status")),"grpc-message"in s&&(r=Ut(t.a,"grpc-message")),0!=o&&(Wt(t,new D(o,r||"",s)),e=!0)),e||function(e){for(var t=0;t<e.c.length;t++)e.c[t]()}(t)}))}function xt(e,t){-1<(t=e.indexOf(t))&&e.splice(t,1)}function Wt(e,t){if(0!=t.code)for(var o=new D(t.code,decodeURIComponent(t.message||""),t.metadata),r=0;r<e.f.length;r++)e.f[r](o);for(t={code:t.code,details:decodeURIComponent(t.message||""),metadata:t.metadata},o=0;o<e.h.length;o++)e.h[o](t)}function Ht(e,t){e=void 0===e?{}:e,this.a=e.format||T("format",e)||"text",this.g=e.aa||T("suppressCorsPreflight",e)||!1,this.f=e.withCredentials||T("withCredentials",e)||!1,this.b=e.$||T("streamInterceptors",e)||[],this.h=e.ba||T("unaryInterceptors",e)||[],this.c=t||null}function Vt(e,t,o){var r=t.getMethodDescriptor(),n=o+r.name;(o=e.c?e.c:new Tt).M=e.f;var s=new Ft({Z:o});s.m=r.b;var i=t.getMetadata();for(a in i)o.headers.set(a,i[a]);if("text"==e.a?(o.headers.set("Content-Type","application/grpc-web-text"),o.headers.set("Accept","application/grpc-web-text")):o.headers.set("Content-Type","application/grpc-web+proto"),o.headers.set("X-User-Agent","grpc-web-javascript/0.1"),o.headers.set("X-Grpc-Web","1"),o.headers.has("deadline")){var a=Number(o.headers.get("deadline"));a=Math.ceil(a-(new Date).getTime()),o.headers.delete("deadline"),1/0===a&&(a=0),0<a&&(o.headers.set("grpc-timeout",a+"m"),o.h=Math.max(0,Math.max(1e3,Math.ceil(1.1*a))))}if(e.g){a={};for(var g=p((i=o.headers).keys()),l=g.next();!l.done;l=g.next())a[l=l.value]=i.get(l);o.headers.clear();e:{for(u in a){var u=!1;break e}u=!0}u||(a=function(e){var t="";return function(e,t){for(var o in e)t.call(void 0,e[o],o,e)}(e,(function(e,o){t+=o,t+=":",t+=e,t+="\\r\\n"})),t}(a),"string"==typeof n?(u=encodeURIComponent("$httpHeaders"),(u+=a=null!=a?"="+encodeURIComponent(String(a)):"")&&(0>(a=n.indexOf("#"))&&(a=n.length),0>(i=n.indexOf("?"))||i>a?(i=a,g=""):g=n.substring(i+1,a),a=(n=[n.substr(0,i),g,n.substr(a)])[1],n[1]=u?a?a+"&"+u:u:a,n=n[0]+(n[1]?"?"+n[1]:"")+n[2])):n.a("$httpHeaders",a))}for(r=(t=(0,r.a)(t.getRequestMessage())).length,u=[0,0,0,0],a=new Uint8Array(5+r),i=3;0<=i;i--)u[i]=r%256,r>>>=8;if(a.set(new Uint8Array(u),1),a.set(t,5),t=a,"text"==e.a){var c;for(e=t,void 0===c&&(c=0),Bt(),c=Lt[c],t=Array(Math.floor(e.length/3)),r=c[64]||"",u=a=0;a<e.length-2;a+=3){l=e[a];var f=e[a+1];g=e[a+2],i=c[l>>2],l=c[(3&l)<<4|f>>4],f=c[(15&f)<<2|g>>6],g=c[63&g],t[u++]=i+l+f+g}switch(i=0,g=r,e.length-a){case 2:g=c[(15&(i=e[a+1]))<<2]||r;case 1:e=e[a],t[u]=c[e>>2]+c[(3&e)<<4|i>>4]+g+r}t=t.join("")}else"binary"==e.a&&(o.m="arraybuffer");return function(e,t,o){if(e.a)throw Error("[goog.net.XhrIo] Object is active with another request="+e.v+"; newUri="+t);e.v=t,e.l="",e.g=0,e.P="POST",e.L=!1,e.c=!0,e.a=e.C?gt(e.C):gt(Ye),e.J=e.C?it(e.C):it(Ye),e.a.onreadystatechange=w(e.R,e);try{nt(e.b,Mt(e,"Opening Xhr")),e.N=!0,e.a.open("POST",String(t),!0),e.N=!1}catch(t){return nt(e.b,Mt(e,"Error opening Xhr: "+t.message)),void Rt(e,t)}t=o||"";var r=(o=e.headers.clone()).G().find((function(e){return"content-type"==e.toLowerCase()})),n=E.FormData&&t instanceof E.FormData;!(0<=k(It,"POST"))||r||n||o.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8"),o.forEach((function(e,t){this.a.setRequestHeader(t,e)}),e),e.m&&(e.a.responseType=e.m),"withCredentials"in e.a&&e.a.withCredentials!==e.M&&(e.a.withCredentials=e.M);try{Nt(e),0<e.h&&(e.I=function(e){return oe&&ce()&&"number"==typeof e.timeout&&void 0!==e.ontimeout}(e.a),nt(e.b,Mt(e,"Will abort after "+e.h+"ms if incomplete, xhr2 "+e.I)),e.I?(e.a.timeout=e.h,e.a.ontimeout=w(e.T,e)):e.w=He(e.T,e.h,e)),nt(e.b,Mt(e,"Sending request")),e.s=!0,e.a.send(t),e.s=!1}catch(t){nt(e.b,Mt(e,"Send error: "+t.message)),Rt(e,t)}}(o,n,t),s}function Gt(e,t,o){var r=!1,n=null,s=!1;e.on("data",(function(e){r=!0,n=e})),e.on("error",(function(e){0==e.code||s||(s=!0,t(e,null))})),e.on("status",(function(e){0==e.code||s?o&&t(null,null,e):(s=!0,t({code:e.code,message:e.details,metadata:e.metadata},null))})),o&&e.on("metadata",(function(e){t(null,null,null,e)})),e.on("end",(function(){s||(r?t(null,n):t({code:2,message:"Incomplete response"})),o&&t(null,null)}))}function kt(e,t){var o=e;return t.forEach((function(e){var t=o;o=function(o){return e.intercept(o,t)}})),o}Ft.prototype.on=function(e,t){return"data"==e?this.b.push(t):"status"==e?this.h.push(t):"metadata"==e?this.g.push(t):"end"==e?this.c.push(t):"error"==e&&this.f.push(t),this},Ft.prototype.removeListener=function(e,t){return"data"==e?xt(this.b,t):"status"==e?xt(this.h,t):"metadata"==e?xt(this.g,t):"end"==e?xt(this.c,t):"error"==e&&xt(this.f,t),this},Ft.prototype.cancel=function(){this.l=!0,this.a.abort()},Ft.prototype.cancel=Ft.prototype.cancel,Ft.prototype.removeListener=Ft.prototype.removeListener,Ft.prototype.on=Ft.prototype.on,Ht.prototype.X=function(e,t,o,r,n){var s=this,i=e.substr(0,e.length-r.name.length);return Gt(e=kt((function(e){return Vt(s,e,i)}),this.b).call(this,L(r,t,o)),n,!1),new B(e)},Ht.prototype.S=function(e,t,o,r){var n=this,s=e.substr(0,e.length-r.name.length);return kt((function(e){return new Promise((function(t,o){var r,i,a;Gt(Vt(n,e,s),(function(n,s,g,l){n?o(n):s?a=s:g?i=g:l?r=l:(n=e.getMethodDescriptor(),t(new M(a,n,s=void 0===(s=r)?{}:s,void 0===i?null:i)))}),!0)}))}),this.h).call(this,L(r,t,o)).then((function(e){return e.getResponseMessage()}))},Ht.prototype.unaryCall=function(e,t,o,r){return this.S(e,t,o,r)},Ht.prototype.Y=function(e,t,o,r){var n=this,s=e.substr(0,e.length-r.name.length);return kt((function(e){return Vt(n,e,s)}),this.b).call(this,L(r,t,o))},Ht.prototype.serverStreaming=Ht.prototype.Y,Ht.prototype.unaryCall=Ht.prototype.unaryCall,Ht.prototype.thenableCall=Ht.prototype.S,Ht.prototype.rpcCall=Ht.prototype.X,e.exports.GrpcWebClientBase=Ht,e.exports.StatusCode={OK:0,CANCELLED:1,UNKNOWN:2,INVALID_ARGUMENT:3,DEADLINE_EXCEEDED:4,NOT_FOUND:5,ALREADY_EXISTS:6,PERMISSION_DENIED:7,UNAUTHENTICATED:16,RESOURCE_EXHAUSTED:8,FAILED_PRECONDITION:9,ABORTED:10,OUT_OF_RANGE:11,UNIMPLEMENTED:12,INTERNAL:13,UNAVAILABLE:14,DATA_LOSS:15},e.exports.MethodDescriptor=function(e,t,o,r,n,s){this.name=e,this.a=n,this.b=s},e.exports.MethodType={UNARY:"unary",SERVER_STREAMING:"server_streaming",BIDI_STREAMING:"bidi_streaming"}}},__webpack_module_cache__={};function __nested_webpack_require_282909__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(o.exports,o,o.exports,__nested_webpack_require_282909__),o.exports}__nested_webpack_require_282909__.d=(e,t)=>{for(var o in t)__nested_webpack_require_282909__.o(t,o)&&!__nested_webpack_require_282909__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},__nested_webpack_require_282909__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__nested_webpack_require_282909__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_282909__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};return(()=>{"use strict";function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}__nested_webpack_require_282909__.r(__webpack_exports__),__nested_webpack_require_282909__.d(__webpack_exports__,{InfoService:()=>c,SessionInfo:()=>r,VersionInfo:()=>t});var t=function(){function t(e){var o=e.major,r=e.minor,n=e.patch,s=e.preRelease,i=e.build;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.major=o,this.minor=r,this.patch=n,this.preRelease=s,this.build=i}var o,r;return o=t,(r=[{key:"noBuild",value:function(){var e=new t(this);return e.build=void 0,e}},{key:"noPreRelease",value:function(){var e=new t(this);return e.preRelease=void 0,e}},{key:"toString",value:function(){var e="".concat(this.major,".").concat(this.minor,".").concat(this.patch);return this.preRelease&&(e+="-".concat(this.preRelease)),this.build&&(e+="+".concat(this.build)),e}}])&&e(o.prototype,r),t}();function o(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var r=function(){function e(t){var o=t.realm,r=t.username,n=t.roles,s=t.permissions,i=t.expires;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.realm=o,this.username=r,this.roles=n||[],this.permissions=s||[],this.expires=i}var t,r;return t=e,(r=[{key:"implies",value:function(e){if(!this.permissions)return!1;for(var t=e.split(":"),o=["*",e],r=1;r<t.length;r++)o.push(t.slice(0,r).join(":")+"*");return this.permissions.filter((function(e){return o.indexOf(e)>-1})).length>0}}])&&o(t.prototype,r),e}(),n=__nested_webpack_require_282909__(661);function s(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?s(Object(o),!0).forEach((function(t){a(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):s(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function g(e,t,o,r,n,s,i){try{var a=e[s](i),g=a.value}catch(e){return void o(e)}a.done?t(g):Promise.resolve(g).then(r,n)}function l(e){return function(){var t=this,o=arguments;return new Promise((function(r,n){var s=e.apply(t,o);function i(e){g(s,r,n,i,a,"next",e)}function a(e){g(s,r,n,i,a,"throw",e)}i(void 0)}))}}function u(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var c=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.uri=t||"/api"}var o,s,a,g,c,p,f;return o=e,s=[{key:"getVersionInfo",value:(f=l(regeneratorRuntime.mark((function e(){var o,r,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new n.h.v1.GeneralInfoServicePromiseClient(this.uri,null,null),r=new n.h.v1.GetVersionInfoRequest,e.next=4,o.getVersionInfo(r,{});case 4:return s=e.sent,e.abrupt("return",new t(s.getVersionInfo().toObject()));case 6:case"end":return e.stop()}}),e,this)}))),function(){return f.apply(this,arguments)})},{key:"_getSessionInfo",value:(p=l(regeneratorRuntime.mark((function e(t,o){var s,a,g,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s={},t&&(s.authentication="Basic "+btoa("".concat(t,":").concat(o))),a=new n.h.v1.GeneralInfoServicePromiseClient(this.uri,null,null),g=new n.h.v1.GetSessionInfoRequest,e.next=6,a.getSessionInfo(g,s);case 6:return l=e.sent,e.abrupt("return",new r(i(i({},l.toObject()),{},{roles:l.getRolesList(),permissions:l.getPermissionsList()})));case 8:case"end":return e.stop()}}),e,this)}))),function(e,t){return p.apply(this,arguments)})},{key:"getSessionInfo",value:(c=l(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getSessionInfo();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(){return c.apply(this,arguments)})},{key:"login",value:(g=l(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._getSessionInfo(t,o);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(e,t){return g.apply(this,arguments)})},{key:"logout",value:(a=l(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._getSessionInfo("logout","");case 3:throw e.sent,new Error("Logout did not proceed correctly. Something went wrong and it looks like a programming error in the webui. Please report");case 7:if(e.prev=7,e.t0=e.catch(0),16!==e.t0.code){e.next=12;break}return e.abrupt("return",!0);case 12:throw e.t0;case 13:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(){return a.apply(this,arguments)})}],s&&u(o.prototype,s),e}()})(),__webpack_exports__})()}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODE4LmpzIiwibWFwcGluZ3MiOiJBQUFBLGVBQWUsS0FBaUQsb0JBQW9CLENBQWlJLENBQUMsa0JBQWtCLFlBQVkseUJBQXlCLGNBQWMsU0FBUyxrQkFBa0IsZUFBZSxTQUFTLFlBQVksT0FBTyxXQUFXLGdCQUFnQixtRkFBbUYsUUFBUSwrRUFBK0Usa0VBQWtFLFFBQVEsZ0ZBQWdGLHdNQUF3TSwyQkFBMkIsNkRBQTZELG1GQUFtRixzR0FBc0csTUFBTSx5RkFBeUYsd0dBQXdHLEtBQUssd01BQXdNLDJCQUEyQiw2REFBNkQsbUZBQW1GLHNHQUFzRyxNQUFNLHlGQUF5Rix3R0FBd0csSUFBSSw0QkFBNEIsZUFBZSw0Q0FBNEMseVhBQXlYLDRDQUE0QyxxTkFBcU4sNENBQTRDLG9QQUFvUCw0Q0FBNEMsc1BBQXNQLDRDQUE0QyxvUEFBb1AsbUdBQW1HLDhSQUE4Uix5REFBeUQseURBQXlELE9BQU8sK05BQStOLHVDQUF1QyxpRUFBaUUsbUVBQW1FLHlFQUF5RSw0RUFBNEUsS0FBSywrQkFBK0IsNEJBQTRCLDJCQUEyQixjQUFjLE1BQU0scUNBQXFDLE1BQU0scUNBQXFDLE1BQU0sMkNBQTJDLE1BQU0sc0NBQXNDLE1BQU0sc0JBQXNCLFNBQVMsdUVBQXVFLHlCQUF5Qiw0RkFBNEYsd0VBQXdFLGFBQWEseU5BQXlOLGdFQUFnRSwrQ0FBK0MsaUVBQWlFLDZDQUE2QyxnRUFBZ0UsK0NBQStDLGlFQUFpRSw2Q0FBNkMsZ0VBQWdFLCtDQUErQyxpRUFBaUUsNkNBQTZDLHFFQUFxRSxnREFBZ0Qsc0VBQXNFLGdEQUFnRCxnRUFBZ0UsZ0RBQWdELGlFQUFpRSxnREFBZ0QsMEdBQTBHLG1FQUFtRSxtRUFBbUUsU0FBUyx1Q0FBdUMsMkVBQTJFLDZFQUE2RSxtRkFBbUYsc0ZBQXNGLEtBQUssK0JBQStCLGtDQUFrQyxTQUFTLGlGQUFpRix5QkFBeUIsc0dBQXNHLG1GQUFtRiwyR0FBMkcsb0VBQW9FLG9FQUFvRSxTQUFTLG9GQUFvRix1Q0FBdUMsNEVBQTRFLDhFQUE4RSxvRkFBb0YsdUZBQXVGLEtBQUssK0JBQStCLDRCQUE0QiwyQ0FBMkMsa0dBQWtHLG1CQUFtQixTQUFTLGtGQUFrRix5QkFBeUIsdUdBQXVHLG1GQUFtRixNQUFNLDJHQUEyRyxpRkFBaUYsMEVBQTBFLGtGQUFrRiwyQ0FBMkMsbUZBQW1GLG1DQUFtQyxpRkFBaUYsd0NBQXdDLDBHQUEwRyxtRUFBbUUsbUVBQW1FLFNBQVMsdUNBQXVDLDJFQUEyRSw2RUFBNkUsbUZBQW1GLHNGQUFzRixLQUFLLCtCQUErQixrQ0FBa0MsU0FBUyxpRkFBaUYseUJBQXlCLHNHQUFzRyxtRkFBbUYsNktBQTZLLG9FQUFvRSxvRUFBb0UsU0FBUyx5UUFBeVEsdUNBQXVDLDRFQUE0RSw4RUFBOEUsb0ZBQW9GLHVGQUF1RixLQUFLLCtCQUErQiw0QkFBNEIsNEJBQTRCLGNBQWMsTUFBTSx5Q0FBeUMsTUFBTSxzQ0FBc0MsTUFBTSx1Q0FBdUMsTUFBTSw0Q0FBNEMsTUFBTSxzQkFBc0IsU0FBUyxrRkFBa0YseUJBQXlCLHVHQUF1RyxtRkFBbUYsYUFBYSxtUUFBbVEsMkVBQTJFLGdEQUFnRCw0RUFBNEUsZ0RBQWdELDhFQUE4RSxnREFBZ0QsK0VBQStFLGdEQUFnRCwrRUFBK0UsMENBQTBDLGdGQUFnRix3Q0FBd0MsOEVBQThFLGdEQUFnRCxpRkFBaUYsNkJBQTZCLDZFQUE2RSwrQ0FBK0MsOEVBQThFLDZDQUE2QyxxRkFBcUYsMENBQTBDLHNGQUFzRix3Q0FBd0Msb0ZBQW9GLGdEQUFnRCx1RkFBdUYsbUNBQW1DLHlDQUF5Qyw2Q0FBNkMsZ0NBQW1CLEVBQUUsd0JBQXdCLGdCQUFnQixzQ0FBc0MsbUNBQW1DLHVCQUF1QixJQUFJLEtBQUssV0FBVywwQkFBMEIsU0FBUyxPQUFPLGVBQWUscVBBQXFQLHdEQUF3RCwrQkFBK0Isd0RBQXdELGdDQUFtQixVQUFVLGdDQUFtQixHQUFHLGdDQUFtQixLQUFLLDJFQUEyRSxNQUFNLHdDQUF3QyxhQUFhLEtBQUssV0FBVyxnQkFBZ0IsU0FBUyxxRUFBcUUsb0NBQW9DLEdBQUcsMkRBQTJELHdCQUF3Qix5Q0FBeUMsdURBQXVELDRHQUE0Ryx3SEFBd0gsWUFBWSwyREFBMkQsd0JBQXdCLGlEQUFpRCxvRUFBb0UsbUJBQW1CLFNBQVMsNEJBQTRCLGFBQWEsb0VBQW9FLHdCQUF3Qix5Q0FBeUMsMkVBQTJFLHdCQUF3QixtREFBbUQsTUFBTSwwQkFBMEIscUNBQXFDLFlBQVksU0FBUyw0QkFBNEIsYUFBYSx1RUFBdUUsc0JBQXNCLGtEQUFrRCxpRUFBaUUsS0FBSyxhQUFhLEVBQUUsOEJBQThCLFVBQVUsZUFBZSw4QkFBOEIsOENBQThDLGtCQUFrQiwyQkFBMkIseUJBQXlCLDRCQUE0QiwwQkFBMEIsMkJBQTJCLHlCQUF5QixrQ0FBa0MsMkZBQTJGLFVBQVUsd0JBQXdCLGlGQUFpRiwyQkFBMkIsY0FBYywyRUFBMkUscUpBQXFKLFNBQVMsd09BQXdPLHdGQUF3RixxRkFBcUYsNEJBQTRCLHdDQUF3QyxjQUFjLG1DQUFtQyxZQUFZLGdFQUFnRSxnQ0FBZ0Msc0JBQXNCLGlDQUFpQyw4SkFBOEosb0NBQW9DLElBQUksd0RBQXdELG9JQUFvSSw2RUFBNkUsdUdBQXVHLHFiQUFxYixxR0FBcUcsbURBQW1ELDBFQUEwRSxvQ0FBb0MsNkJBQTZCLG1DQUFtQyxzQ0FBc0MsY0FBYyxrRUFBa0UsZ0ZBQWdGLFlBQVksa0JBQWtCLHNCQUFzQixnRUFBZ0UsaUVBQWlFLHVDQUF1QyxvRkFBb0Ysc0NBQXNDLHVGQUF1RiwwQkFBMEIsaUZBQWlGLCtDQUErQyx1SUFBdUkseUlBQXlJLGtEQUFrRCxrQ0FBa0MsY0FBYyxpSEFBaUgsdUlBQXVJLHlGQUF5RixnRUFBZ0UsS0FBSywwQkFBMEIsMkhBQTJILDhEQUE4RCxnREFBZ0QsOEJBQThCLDBIQUEwSCxrQ0FBa0MseUNBQXlDLDZHQUE2RywyQkFBMkIsaUJBQWlCLHFDQUFxQyxnQ0FBZ0MsWUFBWSxXQUFXLHNEQUFzRCxTQUFTLDhCQUE4QiwwQ0FBMEMsc0NBQXNDLCtFQUErRSw0REFBNEQsa0RBQWtELDBCQUEwQixjQUFjLGlGQUFpRiwrREFBK0Qsa0NBQWtDLDhCQUE4Qiw2QkFBNkIsSUFBSSwyQkFBMkIsUUFBUSwyQkFBMkIsYUFBYSw4QkFBOEIsU0FBUyxnREFBZ0QsZ0NBQWdDLDZDQUE2QyxxQ0FBcUMsNENBQTRDLHNJQUFzSSwwSEFBMEgsMFBBQTBQLGdDQUFnQyxJQUFJLDBCQUEwQixXQUFXLGVBQWUsbUJBQW1CLGdCQUFnQixHQUFHLFNBQVMsS0FBSyx3QkFBd0IsNkJBQTZCLDRDQUE0QyxtQkFBbUIsU0FBUyxJQUFJLElBQUksNkJBQTZCLDhCQUE4QixJQUFJLDRCQUE0QixrRUFBa0UsMENBQTBDLEVBQUUsS0FBSyw4REFBOEQsZ0hBQWdILHlDQUF5QyxvRUFBb0Usd0xBQXdMLGlGQUFpRixRQUFRLDJCQUEyQix3Q0FBd0Msa0JBQWtCLGlDQUFpQyxlQUFlLFlBQVksV0FBVyxpRkFBaUYsbUJBQW1CLGdDQUFnQyxtRkFBbUYsSUFBSSxxQ0FBcUMsa0ZBQWtGLFNBQVMsYUFBYSxpQ0FBaUMsMEJBQTBCLDRCQUE0QixFQUFFLGtCQUFrQixPQUFPLDREQUE0RCxNQUFNLGNBQWMsaUNBQWlDLHVQQUF1UCw0R0FBNEcsdUNBQXVDLHNGQUFzRixXQUFXLHlCQUF5QixlQUFlLGdCQUFnQixtQkFBbUIsb0NBQW9DLGdDQUFnQyx3Q0FBd0MsdUNBQXVDLHVKQUF1Siw4SEFBOEgsc0RBQXNELFNBQVMseUJBQXlCLGdCQUFnQixrQ0FBa0MsZUFBZSwwQkFBMEIsOEJBQThCLDhCQUE4QixxQkFBcUIseURBQXlELDZCQUE2QiwwREFBMEQsNkJBQTZCLGlDQUFpQywyQkFBMkIsZUFBZSwwQ0FBMEMseUJBQXlCLHlFQUF5RSx5QkFBeUIsOEJBQThCLDRCQUE0Qix1RUFBdUUsSUFBSSw2QkFBNkIsV0FBVywyS0FBMksscUJBQXFCLDRCQUE0QiwrQ0FBK0MsK0JBQStCLCtCQUErQixTQUFTLFNBQVMsa0NBQWtDLHNDQUFzQyw4QkFBOEIsb0JBQW9CLHVCQUF1Qiw4Q0FBOEMsa0JBQWtCLDRDQUE0Qyx3REFBd0Qsa0JBQWtCLDZCQUE2QiwyQkFBMkIsZ0xBQWdMLDRCQUE0Qiw4Q0FBOEMsa0JBQWtCLGdCQUFnQixrREFBa0QsMEJBQTBCLHlCQUF5QixrREFBa0QsZ0JBQWdCLDZCQUE2QixpRUFBaUUsS0FBSyxrRUFBa0Usb0NBQW9DLElBQUkscUNBQXFDLEdBQUcsVUFBVSxvQ0FBb0MsSUFBSSw4QkFBOEIsVUFBVSw2QkFBNkIsa0NBQWtDLGlEQUFpRCxLQUFLLHVEQUF1RCxxSEFBcUgsOERBQThELHVIQUF1SCxrQkFBa0Isa0NBQWtDLGVBQWUsZUFBZSxpQkFBaUIsV0FBVyxvQkFBb0Isb0JBQW9CLG9GQUFvRixTQUFTLGtHQUFrRyxzQ0FBc0MsbURBQW1ELDBJQUEwSSx5Q0FBeUMsdUJBQXVCLE1BQU0sSUFBSSxrQkFBa0IsOEJBQThCLE1BQU0sdUNBQXVDLFNBQVMsbUNBQW1DLHdCQUF3QixxQ0FBcUMsT0FBTyw2QkFBNkIsY0FBYyxxSEFBcUgsd0NBQXdDLG1CQUFtQix3QkFBd0Isa0NBQWtDLDJCQUEyQiw4QkFBOEIseU1BQXlNLDJCQUEyQix3Q0FBd0MsbUJBQW1CLHdCQUF3Qiw0Q0FBNEMseUhBQXlILG9DQUFvQyxtQkFBbUIsd0JBQXdCLEtBQUssa0NBQWtDLEVBQUUsNENBQTRDLGlDQUFpQyx5REFBeUQsMEZBQTBGLHdCQUF3Qix3RkFBd0Ysb0JBQW9CLDBFQUEwRSxnQ0FBZ0MseURBQXlELHlFQUF5RSxnUEFBZ1AsMkdBQTJHLG1EQUFtRCxzREFBc0Qsb0NBQW9DLCtIQUErSCxTQUFTLDRDQUE0QywwRUFBMEUsc01BQXNNLHNFQUFzRSxZQUFZLG1EQUFtRCwwR0FBMEcscUNBQXFDLDBHQUEwRyxtSkFBbUosMkJBQTJCLDRCQUE0QixvQ0FBb0MsMkJBQTJCLHNFQUFzRSwrQkFBK0IsdUlBQXVJLGdDQUFnQyw2Q0FBNkMsMERBQTBELEtBQUssS0FBSyxvQ0FBb0Msa0RBQWtELDhCQUE4QixTQUFTLGlEQUFpRCxzRkFBc0YsbUVBQW1FLGdCQUFnQixzQ0FBc0MsY0FBYyxJQUFJLGdCQUFnQixTQUFTLFVBQVUsZUFBZSxPQUFPLGtHQUFrRywyQkFBMkIsMkJBQTJCLHVCQUF1QixnREFBZ0QsYUFBYSxRQUFRLGNBQWMsOEJBQThCLFdBQVcscUNBQXFDLDJDQUEyQyxxQkFBcUIsaUJBQWlCLGNBQWMsRUFBRSxFQUFFLFFBQVEsWUFBWSxhQUFhLFdBQVcsZUFBZSxNQUFNLHVCQUF1Qix3QkFBd0IsdUJBQXVCLGdDQUFnQyx1QkFBdUIsWUFBWSxTQUFTLElBQUksVUFBVSwyQkFBMkIsU0FBUyxJQUFJLGdCQUFnQix3REFBd0QscUNBQXFDLG9DQUFvQyxpQ0FBaUMsMENBQTBDLGdHQUFnRyw0S0FBNEsseUNBQXlDLG1EQUFtRCxzREFBc0QseUVBQXlFLDZDQUE2Qyw4QkFBOEIscUJBQXFCLGtCQUFrQixpQkFBaUIsK0lBQStJLHdCQUF3QixxREFBcUQsYUFBYSx3Q0FBd0MsUUFBUSxhQUFhLEtBQUssWUFBWSxXQUFXLEtBQUssa0NBQWtDLGtEQUFrRCw4QkFBOEIsZUFBZSxRQUFRLFFBQVEsV0FBVyxvQ0FBb0MsbUJBQW1CLEdBQUcsU0FBUyx3REFBd0Qsb0hBQW9ILHVCQUF1QixxREFBcUQsZ0tBQWdLLDhEQUE4RCxnQkFBZ0IsK0NBQStDLHNHQUFzRyw4QkFBOEIsNEJBQTRCLHVEQUF1RCxtQkFBbUIsOENBQThDLG9CQUFvQixzREFBc0QsWUFBWSwrR0FBK0csa0RBQWtELDhCQUE4Qiw0QkFBNEIsYUFBYSxzQ0FBc0MsY0FBYyxPQUFPLGlCQUFpQiw4REFBOEQsS0FBSyxtQkFBbUIsbUJBQW1CLG1CQUFtQiwyQ0FBMkMsa0JBQWtCLG9CQUFvQixpQkFBaUIsd0JBQXdCLDhCQUE4QixTQUFTLDRCQUE0Qix5QkFBeUIsZ0RBQWdELDBDQUEwQyw0QkFBNEIsa0RBQWtELEVBQUUseUNBQXlDLHdCQUF3QixnREFBZ0QsNkJBQTZCLDZCQUE2QixtQkFBbUIsdUVBQXVFLGNBQWMsMEJBQTBCLHNDQUFzQyxJQUFJLFVBQVUsUUFBUSxNQUFNLEdBQUcsaUJBQWlCLCtDQUErQyxnQkFBZ0IsZ0RBQWdELGlEQUFpRCxrREFBa0QsMEJBQTBCLGlEQUFpRCxZQUFZLDJCQUEyQixnQ0FBZ0MsOEJBQThCLE1BQU0sUUFBUSw2QkFBNkIsdUNBQXVDLGdDQUFnQyxNQUFNLHVGQUF1RiwyQkFBMkIsZ0RBQWdELFdBQVcsd0RBQXdELFlBQVksV0FBVyxLQUFLLGtDQUFrQyx5RUFBeUUsU0FBUywwREFBMEQsNEVBQTRFLGtEQUFrRCxtRUFBbUUsaUNBQWlDLGlEQUFpRCxrREFBa0Qsa0RBQWtELG1EQUFtRCx5RUFBeUUsMkRBQTJELDREQUE0RCxrREFBa0QseURBQXlELHFDQUFxQyx3SEFBd0gsa0RBQWtELG1DQUFtQyw4RUFBOEUsOENBQThDLDZDQUE2Qyw2Q0FBNkMsZ0JBQWdCLDBCQUEwQix1QkFBdUIsWUFBWSxXQUFXLFdBQVcsMERBQTBELCtDQUErQyxpQ0FBaUMsMkNBQTJDLGlEQUFpRCx1Q0FBdUMseUNBQXlDLCtIQUErSCxtREFBbUQsbUJBQW1CLHlCQUF5QixrQkFBa0IsNENBQTRDLHVHQUF1RyxnQ0FBZ0MsMkJBQTJCLDBFQUEwRSx1REFBdUQsZ0VBQWdFLDJFQUEyRSxxREFBcUQsNEdBQTRHLGtHQUFrRyx5U0FBeVMsS0FBSyxnQ0FBZ0MsZ01BQWdNLDBFQUEwRSxzQkFBc0IseUJBQXlCLHlIQUF5SCxtUUFBbVEsOENBQThDLHFDQUFxQyw2R0FBNkcsdUdBQXVHLGdDQUFnQyxrQ0FBa0MsOEJBQThCLG9CQUFvQixtTUFBbU0sMEJBQTBCLHFCQUFxQixnQ0FBZ0MsdUVBQXVFLDRCQUE0Qiw2TkFBNk4sb0RBQW9ELDZFQUE2RSxHQUFHLG1FQUFtRSxxREFBcUQsK0dBQStHLEdBQUcsOENBQThDLHdDQUF3QyxvREFBb0QsdUVBQXVFLEdBQUcsK0NBQStDLGdHQUFnRyxnREFBZ0QsK0pBQStKLGlIQUFpSCxhQUFhLGlKQUFpSixhQUFhLGtDQUFrQyx5Q0FBeUMsSUFBSSxrQkFBa0Isa0ZBQWtGLFFBQVEsd0JBQXdCLG9FQUFvRSxrRkFBa0YsZUFBZSxXQUFXLHlKQUF5SixLQUFLLGlEQUFpRCxxQkFBcUIsNkRBQTZELHFGQUFxRixJQUFJLEdBQUcsS0FBSywyQkFBMkIscUhBQXFILG9DQUFvQywyQkFBMkIsZ0NBQWdDLG9IQUFvSCxnR0FBZ0csMkVBQTJFLDJDQUEyQyxrR0FBa0csZ0JBQWdCLCtFQUErRSxTQUFTLDZEQUE2RCxpREFBaUQsa0VBQWtFLCtIQUErSCx1REFBdUQsMkRBQTJELGdEQUFnRCx1SkFBdUosU0FBUyxtREFBbUQsMEZBQTBGLCtIQUErSCxrT0FBa08sc0NBQXNDLGFBQWEsUUFBUSxlQUFlLEVBQUUsaUNBQWlDLGdLQUFnSywrQkFBK0IsMkNBQTJDLGtDQUFrQyw0QkFBNEIsR0FBRyxrSUFBa0ksV0FBVywyQkFBMkIsb0JBQW9CLG9DQUFvQyxrQkFBa0IseUVBQXlFLGlYQUFpWCx5RUFBeUUsb0NBQW9DLHVDQUF1QywwQ0FBMEMsK0ZBQStGLGlDQUFpQywrREFBK0QsU0FBUywyQ0FBMkMsV0FBVyx5RUFBeUUsSUFBSSwrQkFBK0IsOEdBQThHLEVBQUUsU0FBUyw4QkFBOEIsU0FBUyxvSkFBb0osOEJBQThCLHdDQUF3QyxxQ0FBcUMsa0NBQWtDLG9DQUFvQyxXQUFXLDJDQUEyQyxTQUFTLGlDQUFpQyxXQUFXLG1DQUFtQyxTQUFTLGtDQUFrQyw4Q0FBOEMsU0FBUyxtQ0FBbUMsK0NBQStDLFNBQVMsa0NBQWtDLFVBQVUsZUFBZSxTQUFTLG1DQUFtQyx3QkFBd0IscUNBQXFDLDJCQUEyQixvQ0FBb0Msc0NBQXNDLG1DQUFtQyxlQUFlLHVCQUF1QixTQUFTLGlDQUFpQyxlQUFlLG9CQUFvQixTQUFTLDBDQUEwQywwQ0FBMEMsWUFBWSxXQUFXLEtBQUssa0JBQWtCLFVBQVUsU0FBUyx1Q0FBdUMsd0JBQXdCLHlDQUF5QyxtQ0FBbUMsU0FBUyxxQ0FBcUMsOENBQThDLHVDQUF1QywyQ0FBMkMsaUNBQWlDLHdCQUF3QixTQUFTLCtCQUErQiwyQkFBMkIsa0NBQWtDLE1BQU0sZ0NBQWdDLGlDQUFpQywrRUFBK0UsdUJBQXVCLGlDQUFpQywrQkFBK0IsaUNBQWlDLE9BQU8sNENBQTRDLDBCQUEwQix3REFBd0Qsa0NBQWtDLGtDQUFrQyxrREFBa0QscUNBQXFDLFNBQVMsK0JBQStCLFdBQVcscUJBQXFCLFNBQVMscUNBQXFDLHFCQUFxQiw0QkFBNEIsNkNBQTZDLCtCQUErQixzQ0FBc0MsU0FBUyxTQUFTLG1DQUFtQyxXQUFXLHFCQUFxQixTQUFTLDJLQUEySyxnQkFBZ0IsbUJBQW1CLEtBQUssa0NBQWtDLFlBQVksdUNBQXVDLCtGQUErRixnQ0FBZ0MsdUJBQXVCLHVGQUF1RixpREFBaUQsWUFBWSxLQUFLLElBQUksb0NBQW9DLFNBQVMsbUNBQW1DLHVCQUF1QiwwRkFBMEYsWUFBWSxLQUFLLElBQUksdUJBQXVCLFNBQVMsNkNBQTZDLFFBQVEscUZBQXFGLHlDQUF5Qyw0Q0FBNEMsaURBQWlELGVBQWUscUZBQXFGLGFBQWEsMERBQTBELEVBQUUsNENBQTRDLFdBQVcsZUFBZSwyQkFBMkIsOEJBQThCLHVDQUF1Qyw0REFBNEQsY0FBYyw4QkFBOEIsMEVBQTBFLEtBQUssb0JBQW9CLGtCQUFrQix3REFBd0QsZ0dBQWdHLG9CQUFvQix5S0FBeUssZ0JBQWdCLGtGQUFrRiwwRUFBMEUsd0tBQXdLLFFBQVEsZ0dBQWdHLDhDQUE4QyxJQUFJLG1DQUFtQyxjQUFjLGlEQUFpRCx5QkFBeUIsTUFBTSxVQUFVLFFBQVEsd0JBQXdCLDRFQUE0RSwwQ0FBMEMsNERBQTRELHFDQUFxQywySEFBMkgsMkNBQTJDLHFKQUFxSixpQ0FBaUMsMEpBQTBKLDJDQUEyQyx1TEFBdUwsMkNBQTJDLHVMQUF1TCw2Q0FBNkMsMkxBQTJMLDJDQUEyQyx1TEFBdUwsMENBQTBDLHFMQUFxTCw0Q0FBNEMseUxBQXlMLDRDQUE0Qyw4TkFBOE4saURBQWlELHdOQUF3TiwyQ0FBMkMsdU1BQXVNLHVEQUF1RCxvR0FBb0csbUNBQW1DLHVNQUF1TSxVQUFVLGtCQUFrQixnQ0FBZ0MsNkJBQTZCLGdDQUFnQywwTUFBME0sZ0NBQWdDLDhFQUE4RSxzREFBc0QscUVBQXFFLFVBQVUseUlBQXlJLDZFQUE2RSw2REFBNkQsNkRBQTZELDBCQUEwQiw4dEJBQTh0Qix5SUFBeUkscUJBQXFCLGdLQUFnSywrRUFBK0UsaUJBQWlCLG9IQUFvSCxLQUFLLFdBQVcsaUNBQWlDLFNBQVMsd0lBQXdJLHNHQUFzRyxpQkFBaUIsc0lBQXNJLEtBQUssS0FBSyxpQ0FBaUMsU0FBUyxnSUFBZ0ksd0VBQXdFLGlCQUFpQix3REFBd0QsSUFBSSwrQkFBK0IseUNBQXlDLGdEQUFnRCxRQUFRLEtBQUssK0JBQStCLDhIQUE4SCw4RUFBOEUsaUJBQWlCLGlFQUFpRSxJQUFJLGVBQWUsV0FBVyw0QkFBNEIsU0FBUyx3SEFBd0gsMkVBQTJFLGlCQUFpQixtRUFBbUUsSUFBSSxzQ0FBc0MsU0FBUyxnSUFBZ0ksb0dBQW9HLG1CQUFtQixRQUFRLDJDQUEyQyxvQkFBb0IsS0FBSywwSUFBMEksc0lBQXNJLG1CQUFtQixRQUFRLGdEQUFnRCxvQkFBb0IsS0FBSywwSEFBMEgsNEVBQTRFLGlCQUFpQix3REFBd0QsSUFBSSwyQ0FBMkMsU0FBUyw0SEFBNEgsNkVBQTZFLGlCQUFpQix3REFBd0QsSUFBSSw0Q0FBNEMsU0FBUyxrQ0FBa0MsUUFBUSw2Q0FBNkMscUJBQXFCLE9BQU8saUNBQWlDLGdGQUFnRixzQ0FBc0Msd0RBQXdELElBQUksMkNBQTJDLFNBQVMsc0NBQXNDLHFGQUFxRiwyQ0FBMkMsZ0RBQWdELFFBQVEsS0FBSywyQ0FBMkMsU0FBUyxtQ0FBbUMsa0NBQWtDLGdDQUFnQyxtQkFBbUIsOEJBQThCLHlDQUF5QyxLQUFLLGdCQUFnQixXQUFXLGlDQUFpQyxvQ0FBb0MscUNBQXFDLDJCQUEyQiwwQ0FBMEMsb0RBQW9ELHlDQUF5QyxNQUFNLHdGQUF3RixpQ0FBaUMsTUFBTSxxRUFBcUUscUNBQXFDLHlFQUF5RSxtQ0FBbUMsd0ZBQXdGLHFDQUFxQyx5RUFBeUUsd0NBQXdDLFFBQVEsZ0RBQWdELCtDQUErQyxLQUFLLCtCQUErQixrREFBa0QsNkJBQTZCLGtEQUFrRCxnQ0FBZ0MsZUFBZSxRQUFRLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxTQUFTLHFFQUFxRSxZQUFZLG1CQUFtQixLQUFLLG1CQUFtQix3QkFBd0IsZ0NBQWdDLGFBQWEsWUFBWSxJQUFJLGdCQUFnQixnQkFBZ0IscUNBQXFDLHlHQUF5RyxrQ0FBa0MsaUlBQWlJLDZDQUE2QyxPQUFPLGtCQUFrQixtRUFBbUUsWUFBWSxnQkFBZ0IsV0FBVyxFQUFFLG9CQUFvQiw4REFBOEQsV0FBVyx5Q0FBeUMscUVBQXFFLHlDQUF5QyxpREFBaUQsOENBQThDLHlCQUF5QixJQUFJLEVBQUUsOENBQThDLHFCQUFxQixjQUFjLCtCQUErQixxQ0FBcUMscUNBQXFDLDhCQUE4QixXQUFXLFVBQVUsb0JBQW9CLG1DQUFtQyxxQ0FBcUMsMkNBQTJDLE9BQU8sV0FBVyxvQkFBb0Isc0NBQXNDLG1DQUFtQyxpQ0FBaUMsb0JBQW9CLEdBQUcsNkNBQTZDLG9DQUFvQyxZQUFZLEtBQUsscUNBQXFDLCtCQUErQixZQUFZLFdBQVcsS0FBSyxxQkFBcUIseUJBQXlCLFNBQVMsbUNBQW1DLDJFQUEyRSxlQUFlLHVDQUF1QyxZQUFZLElBQUksOEJBQThCLFNBQVMscUNBQXFDLCtCQUErQiwwQ0FBMEMsSUFBSSxLQUFLLG1CQUFtQixpQkFBaUIsb0RBQW9ELHlDQUF5QyxzQkFBc0IsZ0RBQWdELHNDQUFzQyxpREFBaUQsYUFBYSx5Q0FBeUMsa0ZBQWtGLHlDQUF5Qyx1RUFBdUUsbUNBQW1DLFlBQVksS0FBSyxXQUFXLEtBQUssNkJBQTZCLHlDQUF5QyxTQUFTLHFDQUFxQyxTQUFTLDJDQUEyQyxxQkFBcUIsS0FBSyxrQ0FBa0MsaUJBQWlCLG1EQUFtRCxlQUFlLElBQUksZUFBZSxhQUFhLElBQUksZUFBZSxTQUFTLGlDQUFpQyxpQkFBaUIsSUFBSSxXQUFXLFNBQVMsZ0NBQWdDLGlCQUFpQixtQkFBbUIsS0FBSyxtQkFBbUIsK0JBQStCLFdBQVcsU0FBUyxtQ0FBbUMsbUNBQW1DLFlBQVksV0FBVyxpQkFBaUIsZUFBZSxTQUFTLGlDQUFpQywyS0FBMksscUNBQXFDLHlKQUF5Siw0QkFBNEIsOEJBQThCLHVDQUF1QyxtQkFBbUIsbURBQW1ELFFBQVEsSUFBSSxLQUFLLGlCQUFpQixtQkFBbUIsNEJBQTRCLFVBQVUsU0FBUyxrQ0FBa0MsaUJBQWlCLHFCQUFxQixJQUFJLEtBQUssbUNBQW1DLGtCQUFrQixzQ0FBc0MsU0FBUyx5Q0FBeUMsYUFBYSxLQUFLLHNDQUFzQyx5REFBeUQsY0FBYywwQ0FBMEMscUJBQXFCLFdBQVcsS0FBSyxzQkFBc0IscUNBQXFDLFNBQVMsMENBQTBDLDJEQUEyRCxpQkFBaUIsV0FBVyxTQUFTLG1DQUFtQyxxQ0FBcUMsU0FBUyx5Q0FBeUMscUNBQXFDLDJDQUEyQyxlQUFlLHVDQUF1Qyw2RUFBNkUsaUJBQWlCLFdBQVcsNkNBQTZDLFNBQVMsOENBQThDLHFCQUFxQixXQUFXLEtBQUssc0JBQXNCLHNQQUFzUCxTQUFTLDhDQUE4QyxxQkFBcUIsV0FBVyxFQUFFLGFBQWEsdUNBQXVDLHNCQUFzQixhQUFhLDJDQUEyQyxzQkFBc0IsU0FBUyxhQUFhLHdJQUF3SSw2RUFBNkUsa0JBQWtCLHVDQUF1Qyx1RUFBdUUsaUJBQWlCLFdBQVcsc0JBQXNCLFNBQVMsb0JBQW9CLCtDQUErQyxnQ0FBZ0MscUNBQXFDLG9JQUFvSSxrREFBa0QsU0FBUyxxREFBcUQsZ0NBQWdDLHFDQUFxQyw4S0FBOEsscURBQXFELFNBQVMsd0RBQXdELG9FQUFvRSx3REFBd0Qsb0VBQW9FLHNEQUFzRCxrRUFBa0UsdURBQXVELG1FQUFtRSx1REFBdUQsbUVBQW1FLHVEQUF1RCxtRUFBbUUsdURBQXVELG1FQUFtRSwwREFBMEQsc0VBQXNFLHdEQUF3RCxvRUFBb0UsdURBQXVELG1FQUFtRSxzREFBc0Qsa0VBQWtFLHVEQUF1RCxtRUFBbUUsd0RBQXdELG9FQUFvRSx3REFBd0Qsb0VBQW9FLHdEQUF3RCxvRUFBb0Usa0RBQWtELDRFQUE0RSxJQUFJLHdGQUF3RixTQUFTLDJDQUEyQyx5Q0FBeUMsSUFBSSw4REFBOEQsbURBQW1ELFVBQVUsWUFBWSxrQkFBa0IscUNBQXFDLGtCQUFrQixVQUFVLGlDQUFpQyxTQUFTLGdDQUFnQyxTQUFTLGdDQUFnQyxZQUFZLHVDQUF1QyxTQUFTLGtDQUFrQyxrQkFBa0IsZ0JBQWdCLGlDQUFpQyxrQkFBa0IsU0FBUyxtQ0FBbUMseUJBQXlCLGdFQUFnRSxnQ0FBZ0Msa0JBQWtCLHFCQUFxQiwyQ0FBMkMsOENBQThDLGtCQUFrQiw0Q0FBNEMsMENBQTBDLDhDQUE4Qyw2REFBNkQsc0NBQXNDLG1CQUFtQixxQkFBcUIsc0NBQXNDLDJCQUEyQixrQkFBa0IsTUFBTSxvQ0FBb0MsY0FBYyxLQUFLLHdCQUF3QixVQUFVLHFDQUFxQywyQkFBMkIsa0JBQWtCLGNBQWMsSUFBSSxpQ0FBaUMsVUFBVSxnQ0FBZ0MsMkJBQTJCLGtCQUFrQixZQUFZLElBQUksNENBQTRDLFVBQVUsK0JBQStCLDJCQUEyQixrQkFBa0IsWUFBWSxJQUFJLDJDQUEyQyxVQUFVLGdDQUFnQyxrQkFBa0IsZ0NBQWdDLHFDQUFxQyxtQkFBbUIsNEZBQTRGLGtGQUFrRixXQUFXLGtCQUFrQixrRUFBa0UsaUNBQWlDLFFBQVEsa0JBQWtCLE1BQU0sUUFBUSxhQUFhLHlDQUF5QyxRQUFRLG1CQUFtQiw0QkFBNEIsZ0JBQWdCLHFDQUFxQyxhQUFhLE1BQU0seUNBQXlDLCtCQUErQixrQkFBa0IsY0FBYyw0Q0FBNEMsbUJBQW1CLHdCQUF3QiwwQ0FBMEMscUJBQXFCLEtBQUssbUJBQW1CLHlEQUF5RCxrQ0FBa0MsOEJBQThCLGdCQUFnQixnREFBZ0QscUJBQXFCLHVuTkFBdW5OLDJCQUEyQixvSUFBb0kscUNBQXFDLHVDQUF1QyxhQUFhLDBCQUEwQixxTEFBcUwscUNBQXFDLGlDQUFpQyxzT0FBc08sMkhBQTJILDZFQUE2RSxpREFBaUQsYUFBYSwwRUFBMEUsRUFBRSxzQ0FBc0MsNlRBQTZULG9DQUFvQyx5RkFBeUYsa0NBQWtDLDREQUE0RCxvRkFBb0YsOEtBQThLLGtJQUFrSSwrQ0FBK0Msc0pBQXNKLHdEQUF3RCxpQkFBaUIsbUJBQW1CLDBEQUEwRCxrSUFBa0ksR0FBRywyQ0FBMkMsaUhBQWlILCtEQUErRCx1RUFBdUUsaUVBQWlFLGtCQUFrQix5REFBeUQsRUFBRSwwQ0FBMEMsOERBQThELHNEQUFzRCw4V0FBOFcsNkNBQTZDLCtDQUErQyxtRkFBbUYsMEVBQTBFLGtGQUFrRiwyTUFBMk0sZ0hBQWdILGVBQWUseUNBQXlDLHNEQUFzRCx5Q0FBeUMsK0NBQStDLHNDQUFzQyxtQ0FBbUMsb0JBQW9CLDhEQUE4RCx1Q0FBdUMsb1FBQW9RLGtEQUFrRCwwQ0FBMEMsYUFBYSxrQkFBa0IscWlEQUFxaUQsd0NBQXdDLHFCQUFxQix1QkFBdUIsNlFBQTZRLDhLQUE4SywwTUFBME0sR0FBRyxtREFBbUQscURBQXFELHdMQUF3TCwrRUFBK0UsMkZBQTJGLCtFQUErRSw4S0FBOEsscUNBQXFDLHNDQUFzQyxxQ0FBcUMsMENBQTBDLGlFQUFpRSxvUUFBb1Esa0ZBQWtGLGtHQUFrRyxrRkFBa0YsaUpBQWlKLG9KQUFvSiwwUUFBMFEsc0ZBQXNGLGtHQUFrRyxzRkFBc0Ysb1BBQW9QLDRDQUE0Qyw4REFBOEQsS0FBSyw4REFBOEQsK0pBQStKLDZDQUE2QyxxRkFBcUYsNkNBQTZDLDZEQUE2RCw2Q0FBNkMscUZBQXFGLDZDQUE2Qyw2REFBNkQseU9BQXlPLCtNQUErTSw2S0FBNkssdUhBQXVILGlMQUFpTCxpQkFBaUIsd0ZBQXdGLFdBQVcsS0FBSyxXQUFXLHFLQUFxSyx3SkFBd0osc0RBQXNELHFFQUFxRSxvREFBb0QsbUtBQW1LLGdFQUFnRSw0Q0FBNEMsd0NBQXdDLE1BQU0sd0NBQXdDLE1BQU0sa0NBQWtDLDhDQUE4Qyx5Q0FBeUMsNk5BQTZOLGlKQUFpSiwrRUFBK0Usa0pBQWtKLDhCQUE4QixzRUFBc0Usb0hBQW9ILHdOQUF3Tix5RUFBeUUsMEJBQTBCLGlFQUFpRSxFQUFFLGtEQUFrRCx5RUFBeUUsaUVBQWlFLHVhQUF1YSwyREFBMkQsMEVBQTBFLG1EQUFtRCxrQ0FBa0Msd0dBQXdHLDhFQUE4RSw0S0FBNEsscUdBQXFHLDRGQUE0RixnREFBZ0QsTUFBTSwrUUFBK1EscUVBQXFFLHVEQUF1RCwwSEFBMEgsd0RBQXdELGlCQUFpQixXQUFXLHNDQUFzQyxnR0FBZ0csd0VBQXdFLG1HQUFtRyx1Q0FBdUMsc1dBQXNXLCtEQUErRCxvQkFBb0Isd0RBQXdELGdCQUFnQixXQUFXLHdCQUF3QixZQUFZLFdBQVcsS0FBSyxXQUFXLDJHQUEyRyxTQUFTLHdCQUF3QiwrQ0FBK0MsNkJBQTZCLDZDQUE2Qyx3QkFBd0IsK0JBQStCLDhEQUE4RCw4RUFBOEUsNERBQTRELDhGQUE4RiwwREFBMEQsd0NBQXdDLHNEQUFzRCw0QkFBNEIsZ0ZBQWdGLGdCQUFnQixhQUFhLGtEQUFrRCwyREFBMkQsMEVBQTBFLGdEQUFnRCxvREFBb0QsK0NBQStDLG9EQUFvRCw0Q0FBNEMsNENBQTRDLGdEQUFnRCx1REFBdUQsOENBQThDLEdBQUcsS0FBSyxrREFBa0Qsb0VBQW9FLHNFQUFzRSxzRUFBc0UsMEVBQTBFLGlGQUFpRix5RUFBeUUsSUFBSSxTQUFTLHdUQUF3VCxnRUFBZ0UsTUFBTSw2Q0FBNkMsdUJBQXVCLDREQUE0RCxzRUFBc0Usb0RBQW9ELFFBQVEsb0dBQW9HLDBDQUEwQyxVQUFVLEtBQUssMEJBQTBCLEdBQUcsNEhBQTRILHFDQUFxQyx5Q0FBeUMsbUxBQW1MLFlBQVksU0FBUyxxREFBcUQsc0JBQXNCLDhCQUE4QixxS0FBcUssd0xBQXdMLG9FQUFvRSw0SEFBNEgsOEJBQThCLDhEQUE4RCxlQUFlLHNEQUFzRCxFQUFFLHVDQUF1Qyx3REFBd0QsZ0RBQWdELHlWQUF5Viw0Q0FBNEMsb0dBQW9HLGdPQUFnTyxnQkFBZ0Isd0RBQXdELGlEQUFpRCx3Q0FBd0MsNkxBQTZMLDRDQUE0QyxtRUFBbUUsd0VBQXdFLGlLQUFpSywwQ0FBMEMsMktBQTJLLDREQUE0RCxFQUFFLDZCQUE2QixLQUFLLDZDQUE2Qyx5S0FBeUssd0RBQXdELDJMQUEyTCwrQ0FBK0Msc0xBQXNMLDBDQUEwQyxvTkFBb04sa0RBQWtELHFCQUFxQixrRUFBa0UsdUJBQXVCLGdEQUFnRCxJQUFJLHNCQUFzQixTQUFTLFNBQVMsbUNBQW1DLEVBQUUsY0FBYywwQ0FBMEMsNktBQTZLLDREQUE0RCx1RkFBdUYsNkRBQTZELG9GQUFvRiwwREFBMEQsMkZBQTJGLHlEQUF5RCxpSEFBaUgsbUNBQW1DLGdLQUFnSyxzREFBc0QsK0dBQStHLHNMQUFzTCxtUkFBbVIseURBQXlELDJhQUEyYSw2REFBNkQsNkVBQTZFLDRCQUE0QiwrTEFBK0wsNklBQTZJLDJLQUEySyxnSUFBZ0ksOENBQThDLG1JQUFtSSw0Q0FBNEMsOE5BQThOLDhEQUE4RCwyREFBMkQsZ0VBQWdFLGlCQUFpQix3REFBd0QsRUFBRSx5Q0FBeUMsdVdBQXVXLGlGQUFpRix5RUFBeUUsaUZBQWlGLGtFQUFrRSwyTEFBMkwsV0FBVyxZQUFZLHNGQUFzRixXQUFXLDhKQUE4SixHQUFHLDBHQUEwRyx3REFBd0QsOEhBQThILGlJQUFpSSwyRUFBMkUsa0JBQWtCLFNBQVMsOERBQThELG1KQUFtSixpdUJBQWl1QixvREFBb0Qsc0JBQXNCLFdBQVcsS0FBSyxrQkFBa0IsaUNBQWlDLFlBQVksNERBQTRELHFDQUFxQyxXQUFXLEtBQUssa0JBQWtCLFdBQVcsY0FBYyxLQUFLLGdCQUFnQixlQUFlLEtBQUssZ0NBQWdDLFNBQVMsc2dCQUFzZ0IsZ0VBQWdFLFNBQVMscURBQXFELGFBQWEsbUVBQW1FLEdBQUcsd0NBQXdDLHVCQUF1QiwwRUFBMEUsMElBQTBJLHFDQUFxQywyTEFBMkwsMElBQTBJLG1EQUFtRCw0RkFBNEYsNERBQTRELDJJQUEySSxvSEFBb0gsaUZBQWlGLHdEQUF3RCxtRkFBbUYsMkRBQTJELFdBQVcsZ0JBQWdCLFVBQVUsV0FBVyxLQUFLLFdBQVcscUJBQXFCLHVEQUF1RCxtQkFBbUIsNkNBQTZDLHVCQUF1QiwrRUFBK0Usd0hBQXdILG1EQUFtRCxtUkFBbVIsbUVBQW1FLGdFQUFnRSxxRUFBcUUsc0JBQXNCLDZEQUE2RCxFQUFFLDhDQUE4QywyWUFBMlksMkZBQTJGLDhFQUE4RSxzRkFBc0YsdUVBQXVFLDhIQUE4SCx1QkFBdUIsNEJBQTRCLCtEQUErRCwrQ0FBK0MsK0JBQStCLG1EQUFtRCw2QkFBNkIsNElBQTRJLDRGQUE0RixrREFBa0QsMkNBQTJDLHFEQUFxRCw4Q0FBOEMsMENBQTBDLCtEQUErRCw4Q0FBOEMseURBQXlELDJEQUEyRCwwREFBMEQsWUFBWSxrQ0FBa0MsU0FBUywrQkFBK0Isb0RBQW9ELHdEQUF3RCxpREFBaUQsMkdBQTJHLHVEQUF1RCx1REFBdUQsMkRBQTJELHVEQUF1RCw0REFBNEQsc0RBQXNELHNEQUFzRCw0R0FBNEcscURBQXFELHdkQUF3ZCxvREFBb0Qsd0RBQXdELHlEQUF5RCx1VkFBdVYscURBQXFELDJKQUEySiw2REFBNkQsMk5BQTJOLGk3QkFBaTdCLHVEQUF1RCxtREFBbUQsY0FBYyx1Q0FBdUMsOENBQThDLDBGQUEwRixtREFBbUQsU0FBUyxrQ0FBa0MsYUFBYSxHQUFHLDhDQUE4Qyw2UEFBNlAsMkRBQTJELDJGQUEyRix1REFBdUQsK0JBQStCLHVCQUF1QixLQUFLLGdDQUFnQywrRUFBK0Usa0JBQWtCLE1BQU0sa0JBQWtCLE1BQU0sbUJBQW1CLE1BQU0sbUJBQW1CLGFBQWEsWUFBWSxTQUFTLCtCQUErQix1TEFBdUwsOEhBQThILGlCQUFpQiw2SEFBNkgscUVBQXFFLCtEQUErRCxnQkFBZ0IsdURBQXVELEVBQUUsd0NBQXdDLDBEQUEwRCxrREFBa0QsZ1dBQWdXLDJDQUEyQyw0Q0FBNEMsZ0NBQWdDLDJQQUEyUCw2REFBNkQsaU9BQWlPLHNFQUFzRSxzT0FBc08sb0pBQW9KLDZFQUE2RSw0Q0FBNEMsNkdBQTZHLDJDQUEyQyx1SUFBdUksOENBQThDLDRGQUE0Riw0SEFBNEgsbURBQW1ELDBDQUEwQyxTQUFTLHdHQUF3RyxXQUFXLHVGQUF1RiwwREFBMEQsNEdBQTRHLFNBQVMscUpBQXFKLHVGQUF1RixtREFBbUQsMEZBQTBGLGtEQUFrRCxzRkFBc0YsTUFBTSxHQUFHLHFGQUFxRiwrQ0FBK0MsZ0JBQWdCLHNCQUFzQiw2RkFBNkYsb0NBQW9DLFdBQVcseUNBQXlDLDRMQUE0TCw4Q0FBOEMsd0NBQXdDLGdCQUFnQixHQUFHLElBQUksU0FBUyx1QkFBdUIsWUFBWSxXQUFXLDZDQUE2QywyTEFBMkwsb0RBQW9ELCtLQUErSyxtSEFBbUgseUNBQXlDLFFBQVEsRUFBRSx5REFBeUQsZ0VBQWdFLHdFQUF3RSxLQUFLLG9HQUFvRyw4SUFBOEkscUVBQXFFLEtBQUssb0pBQW9KLHVEQUF1RCx1UEFBdVAsK0NBQStDLDBJQUEwSSx5R0FBeUcsb0RBQW9ELG9EQUFvRCx1Q0FBdUMsNkVBQTZFLHNOQUFzTix5SUFBeUksdUNBQXVDLCtGQUErRixnREFBZ0QsK0RBQStELGtCQUFrQiw4REFBOEQsaUZBQWlGLDBFQUEwRSxrRkFBa0YsbU5BQW1OLHNGQUFzRiwrREFBK0QsaWJBQWliLHNEQUFzRCxTQUFTLHFCQUFxQixrR0FBa0csV0FBVyxpRkFBaUYsU0FBUyxzREFBc0QsV0FBVyxrRkFBa0Ysa0ZBQWtGLFlBQVksc0JBQXNCLDhGQUE4Riw4QkFBOEIsU0FBUyx1YUFBdWEsNkZBQTZGLDJTQUEyUyw2RkFBNkYsdVNBQXVTLDRGQUE0RixxU0FBcVMsaUdBQWlHLCtTQUErUywwRkFBMEYsaVNBQWlTLHFHQUFxRyx1VEFBdVQsaUJBQWlCLDJDQUEyQyw0RkFBNEYsa0RBQWtELGdFQUFnRSxnREFBZ0QsOENBQThDLHdGQUF3RixxREFBcUQsb0VBQW9FLDBOQUEwTixnRUFBZ0UscURBQXFELFlBQVksNEJBQTRCLG9EQUFvRCwwQ0FBMEMsZ0NBQWdDLDhCQUE4Qiw4SUFBOEksb0RBQW9ELDBDQUEwQyxvREFBb0Qsa0RBQWtELHlLQUF5SyxpREFBaUQsK0tBQStLLGdEQUFnRCw4S0FBOEssc0NBQXNDLDhDQUE4QywyQ0FBMkMsaURBQWlELDJDQUEyQywyS0FBMksseUNBQXlDLG1GQUFtRiwrQkFBK0IsaURBQWlELDRDQUE0Qyx5Q0FBeUMsbUZBQW1GLCtCQUErQixpREFBaUQsNENBQTRDLHlDQUF5QyxtRkFBbUYsK0JBQStCLGlEQUFpRCw0Q0FBNEMseUNBQXlDLDBHQUEwRyx5Q0FBeUMsb0dBQW9HLDBDQUEwQyxxR0FBcUcsNkNBQTZDLCtGQUErRixpREFBaUQsdWlCQUF1aUIsMkNBQTJDLDRHQUE0RywwQ0FBMEMsZ0tBQWdLLDhDQUE4QyxzSkFBc0osNkNBQTZDLGtLQUFrSyw0Q0FBNEMscUtBQXFLLDZDQUE2QyxzS0FBc0ssZ0RBQWdELHlMQUF5TCxpREFBaUQsc0RBQXNELCtDQUErQyxvRUFBb0UsK0NBQStDLGlIQUFpSCx5Q0FBeUMsa0RBQWtELG1DQUFtQyx3SkFBd0oseUdBQXlHLFNBQVMsNlhBQTZYLHVFQUF1RSxxQkFBcUIsd0JBQXdCLHNCQUFzQiw0Q0FBNEMsNERBQTRELGdIQUFnSCxtQkFBbUIscUdBQXFHLGdFQUFnRSwwR0FBMEcsNEJBQTRCLGlDQUFpQywyQkFBMkIsbUNBQW1DLHdCQUF3Qix3Q0FBd0MsOEJBQThCLGlDQUFpQyxhQUFhLHVDQUF1QyxtREFBbUQsdUNBQXVDLHVDQUF1Qyw4Q0FBOEMsdUNBQXVDLDZDQUE2QyxpQ0FBaUMseUNBQXlDLHFDQUFxQyxnREFBZ0QsMkVBQTJFLDZFQUE2RSxrQ0FBa0MsbUNBQW1DLGtDQUFrQyxnSUFBZ0ksaUJBQWlCLGVBQWUsZUFBZSxnR0FBZ0csSUFBSSxLQUFLLE9BQU8sV0FBVywwRkFBMEYscURBQXFELDJDQUEyQyx1REFBdUQsNkNBQTZDLDZEQUE2RCw2RkFBNkYscUNBQXFDLG1DQUFtQyxnREFBZ0QsK0ZBQStGLHdIQUF3SCxNQUFNLGlFQUFpRSwyTEFBMkwsd0RBQXdELGdGQUFnRixxREFBcUQsT0FBTyxNQUFNLFdBQVcsV0FBVyxhQUFhLE1BQU0sc0VBQXNFLGlFQUFpRSxXQUFXLCtTQUErUyxHQUFHLGtEQUFrRCx1QkFBdUIsSUFBSSxrQkFBa0IsVUFBVSxvQkFBb0IsbUJBQW1CLG1CQUFtQixxQkFBcUIsK0ZBQStGLEdBQUcsd0NBQXdDLFFBQVEsK0NBQStDLHVEQUF1RCxNQUFNLHdDQUF3Qyw4REFBOEQsdUNBQXVDLHVCQUF1QixJQUFJLEtBQUsseUJBQXlCLDRFQUE0RSxTQUFTLHNDQUFzQywwSEFBMEgsOENBQThDLHlEQUF5RCxXQUFXLGlCQUFpQiwwQ0FBMEMsOEZBQThGLDBDQUEwQyxrQ0FBa0MsbUhBQW1ILDZCQUE2QixVQUFVLCtCQUErQixZQUFZLG9CQUFvQixXQUFXLEtBQUssb0NBQW9DLHFGQUFxRiw4QkFBOEIsc0NBQXNDLGlCQUFpQixXQUFXLDZDQUE2QyxrQkFBa0Isb0NBQW9DLHdFQUF3RSxnSEFBZ0gsc0JBQXNCLHVCQUF1Qix3R0FBd0csdUNBQXVDLHVLQUF1SyxrQ0FBa0Msc0NBQXNDLFFBQVEsNkVBQTZFLGtDQUFrQyx1QkFBdUIscUNBQXFDLHFFQUFxRSx3Q0FBd0MsMEZBQTBGLHNDQUFzQyxxQ0FBcUMscURBQXFELDBEQUEwRCxtQkFBbUIsZUFBZSwwQkFBMEIsdUNBQXVDLDRIQUE0SCxrQ0FBa0MsNEJBQTRCLHFDQUFxQywrQ0FBK0Msd0NBQXdDLGdJQUFnSSxtR0FBbUcsZ0JBQWdCLFdBQVcsK0JBQStCLFNBQVMsdUdBQXVHLGlEQUFpRCxrQ0FBa0MsZ0JBQWdCLHNEQUFzRCwwQ0FBMEMsdUNBQXVDLDBDQUEwQyxpQ0FBaUMscUNBQXFDLHFEQUFxRCx1QkFBdUIsR0FBRyx3Q0FBd0MseURBQXlELHVDQUF1QywwSUFBMEkseUJBQXlCLEdBQUcsb0NBQW9DLDJFQUEyRSxrQ0FBa0MseUdBQXlHLHdDQUF3QyxhQUFhLGFBQWEsY0FBYyx1QkFBdUIscUNBQXFDLHlDQUF5QyxlQUFlLDRCQUE0QixpQkFBaUIsV0FBVyxpQkFBaUIsMEJBQTBCLFdBQVcsMkJBQTJCLHdDQUF3QyxjQUFjLGlCQUFpQiwyREFBMkQsWUFBWSxhQUFhLFdBQVcsUUFBUSxXQUFXLEtBQUssU0FBUyxZQUFZLFdBQVcsNkRBQTZELFFBQVEsV0FBVyxjQUFjLG1CQUFtQiw4QkFBOEIsZ0RBQWdELHlEQUF5RCxpREFBaUQsMkdBQTJHLDhDQUE4Qyx1REFBdUQsZ0RBQWdELHlHQUF5RywrQ0FBK0MsK0tBQStLLGtEQUFrRCw4Q0FBOEMsTUFBTSxtREFBbUQsc0RBQXNELHdGQUF3RiwwQ0FBMEMsMEJBQTBCLFNBQVMsd0RBQXdELG9EQUFvRCxZQUFZLFdBQVcsS0FBSyxXQUFXLDBCQUEwQiwwREFBMEQsaUZBQWlGLDREQUE0RCx3Q0FBd0MsZUFBZSxjQUFjLGdDQUFnQyxtREFBbUQsMERBQTBELGdEQUFnRCx1REFBdUQsa0RBQWtELDZKQUE2SixnREFBZ0QsdURBQXVELCtDQUErQyw2SEFBNkgscURBQXFELDREQUE0RCxpREFBaUQsd0RBQXdELG1EQUFtRCwwREFBMEQsb0RBQW9ELHVEQUF1RCxzREFBc0Qsd0RBQXdELGlEQUFpRCxrRUFBa0Usb0RBQW9ELGlFQUFpRSxvREFBb0QsbURBQW1ELHllQUF5ZSxRQUFRLHVJQUF1SSw0REFBNEQsbUZBQW1GLGdCQUFnQixtQ0FBbUMsU0FBUywyQ0FBMkMsU0FBUyxvQ0FBb0Msd0NBQXdDLDRGQUE0RixJQUFJLHVDQUF1QyxVQUFVLFNBQVMsc0NBQXNDLDJFQUEyRSxrQkFBa0Isa2VBQWtlLCtDQUErQyw2Q0FBNkMsbUNBQW1DLHdDQUF3QywwQ0FBMEMsd3NCQUF3c0IsZ0ZBQWdGLGdMQUFnTCx5Q0FBeUMseUJBQXlCLHU1QkFBdTVCLHlGQUF5RixrSkFBa0oseUNBQXlDLHdEQUF3RCxtaENBQW1oQyxtREFBbUQsb0hBQW9ILGtEQUFrRCwwQ0FBMEMsc0NBQXNDLFFBQVEsbUdBQW1HLFFBQVEsc0hBQXNILDRDQUE0QywyQkFBMkIsK0JBQStCLGdHQUFnRyx3Q0FBd0MsMENBQTBDLDhDQUE4QyxrSEFBa0gsZ0VBQWdFLEdBQUcsNkdBQTZHLCtDQUErQyw2R0FBNkcsb0ZBQW9GLDRCQUE0QixnNkJBQWc2QixzRkFBc0YsMm5CQUEybkIscUZBQXFGLHdLQUF3SyxpVEFBaVQsNEVBQTRFLCtFQUErRSwrREFBK0Qsc0NBQXNDLDJmQUEyZiw2TUFBNk0saUJBQWlCLFdBQVcsTUFBTSwwRUFBMEUsK0ZBQStGLGtCQUFrQiw4Q0FBOEMseUlBQXlJLDhDQUE4Qyx1RUFBdUUsU0FBUyw4REFBOEQsMEJBQTBCLEtBQUsseURBQXlELFNBQVMsOERBQThELFVBQVUsS0FBSyx3REFBd0Qsd0hBQXdILHVCQUF1QiwyR0FBMkcsNEJBQTRCLDhEQUE4RCxTQUFTLG1CQUFtQix1REFBdUQsY0FBYyxLQUFLLFdBQVcsRUFBRSwwREFBMEQsb0JBQW9CLDBGQUEwRixTQUFTLDBCQUEwQixhQUFhLEVBQUUsbUNBQW1DLHdCQUF3Qiw2REFBNkQsb0NBQW9DLHNDQUFzQyxvQ0FBb0MsbUdBQW1HLElBQUksS0FBSywrQkFBK0IsdUNBQXVDLFlBQVksV0FBVyxLQUFLLGlEQUFpRCwrRUFBK0UsY0FBYyxxRkFBcUYsWUFBWSx3R0FBd0csbUNBQW1DLGdDQUFnQyxnTEFBZ0wsc0NBQXNDLFVBQVUsa0VBQWtFLDZCQUE2QixzR0FBc0cscUNBQXFDLGNBQWMsdUlBQXVJLDJFQUEyRSxpSEFBaUgseUlBQXlJLEtBQUssdUNBQXVDLGtLQUFrSyxxQ0FBcUMsY0FBYyxvRkFBb0Ysb0ZBQW9GLGlIQUFpSCw0Q0FBNEMsMEJBQTBCLG9HQUFvRyxLQUFLLFFBQVEsaUJBQWlCLGFBQWEsVUFBVSxVQUFVLGFBQWEsVUFBVSw4S0FBOEssb0NBQW9DLGtJQUFrSSx5SEFBeUgscUNBQXFDLGdEQUFnRCxvQ0FBb0MsbUJBQW1CLHNGQUFzRix1Q0FBdUMsWUFBWSxpQ0FBaUMsdUNBQXVDLHlEQUF5RCx5Q0FBeUMsYUFBYSxrQ0FBa0Msc0NBQXNDLGNBQWMsaUJBQWlCLHNHQUFzRyxzQ0FBc0MsZ0NBQWdDLDZKQUE2SixxQ0FBcUMsZ0hBQWdILDRKQUE0SixnQkFBZ0Isd0RBQXdELGtEQUFrRCxpQ0FBaUMsMktBQTJLLGtEQUFrRCxtQkFBbUIsaUdBQWlHLGdEQUFnRCxrREFBa0QsNkJBQTZCLDJGQUEyRixzREFBc0QsOEJBQThCLFdBQVcsa0RBQWtELFNBQVMsOENBQThDLGdCQUFnQixZQUFZLGtCQUFrQixpQ0FBaUMsZ0NBQWdDLFNBQVMsZ0NBQWdDLGdDQUFnQyxXQUFXLHFEQUFxRCxzQkFBc0IsWUFBWSxJQUFJLG1CQUFtQiwyQ0FBMkMsMkNBQTJDLDREQUE0RCxvQ0FBb0MsMkZBQTJGLHlDQUF5Qyw0RkFBNEYsMENBQTBDLGdCQUFnQixrQkFBa0IsWUFBWSxJQUFJLEtBQUssd0JBQXdCLDRFQUE0RSxrQkFBa0IsMENBQTBDLGtIQUFrSCxpQkFBaUIsSUFBSSxLQUFLLDBHQUEwRyxnQ0FBZ0MsU0FBUyx5Q0FBeUMsa0RBQWtELDZCQUE2Qiw4REFBOEQsdUNBQXVDLG9HQUFvRyx5Q0FBeUMsZ0JBQWdCLElBQUksZUFBZSxhQUFhLGdEQUFnRCxRQUFRLHlEQUF5RCxlQUFlLFVBQVUsRUFBRSxhQUFhLG9CQUFvQixVQUFVLElBQUksRUFBRSxRQUFRLE1BQU0sRUFBRSw4QkFBOEIsVUFBVSxtQkFBbUIsUUFBUSxvQkFBb0IsR0FBRyxTQUFTLGtEQUFrRCxRQUFRLGNBQWMsZUFBZSxVQUFVLFVBQVUsSUFBSSxFQUFFLFlBQVksTUFBTSxFQUFFLGdDQUFnQyxNQUFNLG1CQUFtQixTQUFTLFNBQVMsaURBQWlELHVGQUF1RixpREFBaUQsdUZBQXVGLG1EQUFtRCxRQUFRLGtEQUFrRCxJQUFJLEVBQUUsWUFBWSxNQUFNLEVBQUUsZ0NBQWdDLE1BQU0sbUJBQW1CLElBQUksZ0JBQWdCLHdDQUF3QyxFQUFFLEtBQUssU0FBUywrQ0FBK0MsVUFBVSxNQUFNLHVDQUF1QyxZQUFZLFdBQVcsb0RBQW9ELGFBQWEsZ0RBQWdELDJEQUEyRCwwQ0FBMEMsdUNBQXVDLFdBQVcsS0FBSyxzQkFBc0IsMEZBQTBGLE9BQU8sU0FBUywrQ0FBK0MsK1NBQStTLG9DQUFvQyw2RkFBNkYsK0VBQStFLDZDQUE2Qyw4Q0FBOEMsOEJBQThCLHFDQUFxQyw4Q0FBOEMsd0dBQXdHLCtDQUErQywrRUFBK0UsK0NBQStDLHFFQUFxRSxtREFBbUQsbUJBQW1CLHVEQUF1RCwySkFBMkosZ0RBQWdELGlCQUFpQixpREFBaUQsWUFBWSwrQ0FBK0MseUJBQXlCLG1EQUFtRCxvQkFBb0Isb0RBQW9ELGVBQWUsa0RBQWtELDZEQUE2RCwrQ0FBK0MsK0JBQStCLGlEQUFpRCw4QkFBOEIsa0RBQWtELDJEQUEyRCw0REFBNEQsMEJBQTBCLFlBQVksa0RBQWtELHVGQUF1RixZQUFZLG9EQUFvRCwrQkFBK0IsZ0ZBQWdGLGtFQUFrRSw2Q0FBNkMsc0NBQXNDLEdBQUcsMkRBQTJELGlDQUFpQyxnQkFBZ0Isc0JBQXNCLEtBQUssOEJBQThCLGNBQWMsb0RBQW9ELEtBQUssOEJBQThCLGdCQUFnQixlQUFlLHVEQUF1RCxLQUFLLE1BQU0sdUJBQXVCLGVBQWUsOERBQThELDhDQUE4QyxpdEJBQWl0QixzS0FBc0ssOENBQThDLGtFQUFrRSw0Q0FBNEMsNERBQTRELGtDQUFrQyxvQkFBb0IsOERBQThELHFEQUFxRCxvRUFBb0Usb0VBQW9FLDREQUE0RCxvREFBb0Qsa0VBQWtFLGtFQUFrRSw0REFBNEQsdURBQXVELGdFQUFnRSwyREFBMkQsa0VBQWtFLHdFQUF3RSxtREFBbUQsa0NBQWtDLHNFQUFzRSxvREFBb0QsZ0VBQWdFLDhFQUE4RSxvREFBb0QsNEhBQTRILGdHQUFnRyxvREFBb0QsNENBQTRDLGtDQUFrQywwREFBMEQsNENBQTRDLGlEQUFpRCxrREFBa0Qsa0NBQWtDLDhFQUE4RSxtREFBbUQsZ0VBQWdFLHdGQUF3RixtREFBbUQsNEhBQTRILDBGQUEwRixtREFBbUQsNENBQTRDLGlDQUFpQyx5REFBeUQsNENBQTRDLCtDQUErQyxtREFBbUQsd0JBQXdCLG1DQUFtQyxvREFBb0QsNENBQTRDLG1DQUFtQyxrREFBa0Qsb0NBQW9DLGtEQUFrRCxpQ0FBaUMscURBQXFELGlDQUFpQyxNQUFNLGtCQUFrQixJQUFJLEVBQUUsYUFBYSxtQkFBbUIsS0FBSyxrQkFBa0IsVUFBVSxhQUFhLHVCQUF1QixlQUFlLFNBQVMsYUFBYSxrQ0FBa0MsOEhBQThILGtFQUFrRSwyREFBMkQsOERBQThELGtDQUFrQywwQkFBMEIsb0RBQW9ELDRIQUE0SCx3REFBd0Qsc0VBQXNFLDBEQUEwRCxxREFBcUQseURBQXlELGdHQUFnRyxxRUFBcUUsbUNBQW1DLHFQQUFxUCw2RUFBNkUsNENBQTRDLDZDQUE2Qyx1Q0FBdUMsb0NBQW9DLHVHQUF1RywwUUFBMFEsdURBQXVELHlCQUF5QixrREFBa0QsaUNBQWlDLGtEQUFrRCxpQ0FBaUMsdURBQXVELHVCQUF1QixvREFBb0QsMEJBQTBCLG9EQUFvRCxtRUFBbUUsbURBQW1ELG1FQUFtRSxpREFBaUQsNkNBQTZDLHNEQUFzRCxpSkFBaUosOENBQThDLHlJQUF5SSxpREFBaUQseUJBQXlCLGtEQUFrRCxrQ0FBa0MsdUVBQXVFLDRDQUE0QyxtREFBbUQsNlpBQTZaLHFEQUFxRCxrRUFBa0UsMkRBQTJELHNCQUFzQix3QkFBd0IsMkNBQTJDLGtCQUFrQiwyQ0FBMkMsd0RBQXdELGtLQUFrSywyREFBMkQsOElBQThJLEtBQUssMkNBQTJDLDBCQUEwQix5REFBeUQsa0tBQWtLLHlEQUF5RCxrS0FBa0ssa0RBQWtELDJCQUEyQixFQUFFLHNCQUFzQiwwRUFBMEUsTUFBTSxnRUFBZ0Usa0ZBQWtGLE1BQU0sa0JBQWtCLGtEQUFrRCwyQkFBMkIsaUVBQWlFLE1BQU0sbUVBQW1FLE1BQU0sdUVBQXVFLE1BQU0sbUVBQW1FLE1BQU0sZ0VBQWdFLE1BQU0sK0RBQStELGdFQUFnRSxtREFBbUQsd0VBQXdFLHlEQUF5RCwrR0FBK0csaURBQWlELCtEQUErRCxxQ0FBcUMsVUFBVSx1Q0FBdUMscUNBQXFDLHFDQUFxQyx1Q0FBdUMscUNBQXFDLHlDQUF5Qyx5Q0FBeUMsbUNBQW1DLHVDQUF1Qyw4RUFBOEUsa0ZBQWtGLHFDQUFxQyx1Q0FBdUMsbUNBQW1DLDJDQUEyQywyQ0FBMkMsdUNBQXVDLHVDQUF1Qyw2Q0FBNkMsOENBQThDLDZEQUE2RCxTQUFTLHVEQUF1RCxpRkFBaUYsb0VBQW9FLG1IQUFtSCx1REFBdUQsd1NBQXdTLHdEQUF3RCxpRkFBaUYsNkVBQTZFLDhGQUE4RixrREFBa0Qsd0hBQXdILHdEQUF3RCw4SEFBOEgsa0RBQWtELHdIQUF3SCx3REFBd0QsOEhBQThILG1EQUFtRCwwSEFBMEgseURBQXlELGdJQUFnSSxtREFBbUQsMEhBQTBILHlEQUF5RCxnSUFBZ0ksbURBQW1ELHdIQUF3SCxtREFBbUQsd0hBQXdILHlEQUF5RCw4SEFBOEgsb0RBQW9ELGlIQUFpSCxvREFBb0QsaUhBQWlILDBEQUEwRCx1SEFBdUgscURBQXFELGdIQUFnSCwyREFBMkQsMkhBQTJILHFEQUFxRCxnSEFBZ0gsMkRBQTJELHNIQUFzSCxrREFBa0QsZ0hBQWdILG1EQUFtRCxpSEFBaUgsaURBQWlELDRIQUE0SCxpREFBaUQsd0hBQXdILG1EQUFtRCxpRkFBaUYsMkNBQTJDLG1DQUFtQyxrREFBa0QsaUZBQWlGLDJDQUEyQyxrQ0FBa0MseURBQXlELHNIQUFzSCx1REFBdUQsNEhBQTRILDJEQUEyRCx3SEFBd0gsaUVBQWlFLG9JQUFvSSxzQ0FBc0MsR0FBRyx3REFBd0Qsc0hBQXNILDBEQUEwRCx3SEFBd0gsMERBQTBELGlGQUFpRiwyQ0FBMkMsOEJBQThCLGFBQWEsNEJBQTRCLCtCQUErQixTQUFTLHdEQUF3RCwrREFBK0QsOERBQThELHFFQUFxRSx3REFBd0QsK0RBQStELDhEQUE4RCxxRUFBcUUseURBQXlELGlFQUFpRSwrREFBK0QsdUVBQXVFLHlEQUF5RCxpRUFBaUUsK0RBQStELHVFQUF1RSx5REFBeUQsK0RBQStELHlEQUF5RCwrREFBK0QsK0RBQStELHFFQUFxRSwwREFBMEQsdURBQXVELDBEQUEwRCx1REFBdUQsZ0VBQWdFLDZEQUE2RCwyREFBMkQsc0RBQXNELDJEQUEyRCxzREFBc0QsaUVBQWlFLDREQUE0RCx3REFBd0Qsc0RBQXNELHlEQUF5RCx1REFBdUQsdURBQXVELHFEQUFxRCx1REFBdUQscURBQXFELCtEQUErRCw2REFBNkQsOERBQThELDREQUE0RCwrQkFBK0IsZ0JBQWdCLGdEQUFnRCwyQkFBMkIsNkNBQTZDLG1CQUFtQix5QkFBeUIsK0RBQStELHdNQUF3TSxXQUFXLHlEQUF5RCxxQkFBcUIsOERBQThELDRPQUE0TyxnRUFBZ0Usc0dBQXNHLE1BQU0scUNBQXFDLHFCQUFxQiw4REFBOEQsc0tBQXNLLEtBQUssWUFBWSxJQUFJLHVDQUF1QyxzQkFBc0IsZ0VBQWdFLGlNQUFpTSw4REFBOEQsK05BQStOLDhEQUE4RCw2S0FBNkssOERBQThELGtPQUFrTyxvRUFBb0Usa0VBQWtFLGtFQUFrRSxXQUFXLDRHQUE0RyxrQ0FBa0MsR0FBRyxxREFBcUQsb0dBQW9HLHNEQUFzRCxtSUFBbUksc0RBQXNELHdOQUF3TixzREFBc0QsNk1BQTZNLG9EQUFvRCx1R0FBdUcscURBQXFELHdJQUF3SSxxREFBcUQsc1BBQXNQLHFEQUFxRCw4TkFBOE4sMkRBQTJELG1RQUFtUSxxREFBcUQsK0xBQStMLHNEQUFzRCx3T0FBd08sb0RBQW9ELHNGQUFzRixvREFBb0QsNEpBQTRKLHFEQUFxRCx3Q0FBd0MsNERBQTRELGdHQUFnRywyREFBMkQsMkdBQTJHLHNEQUFzRCxrQ0FBa0MsV0FBVyxLQUFLLHNCQUFzQiw4QkFBOEIsdUVBQXVFLHFEQUFxRCx3QkFBd0IsaUxBQWlMLDZGQUE2Riw2QkFBNkIsY0FBYyxpQ0FBaUMsb0JBQW9CLDZDQUE2QyxxRkFBcUYsbURBQW1ELGdGQUFnRixrREFBa0QsMkVBQTJFLDRDQUE0Qyw2QkFBNkIsNENBQTRDLG9CQUFvQiw2Q0FBNkMsOEJBQThCLDZDQUE2QyxtSUFBbUksNkNBQTZDLHlIQUF5SCwwQ0FBMEMsaUNBQWlDLGtGQUFrRixjQUFjLG9CQUFvQiwwQ0FBMEMsNkNBQTZDLDRDQUE0Qyx3RUFBd0UsNkNBQTZDLGlCQUFpQiwwRUFBMEUsNkJBQTZCLHFDQUFxQyxTQUFTLGlDQUFpQyxLQUFLLFVBQVUsd0VBQXdFLFlBQVksaURBQWlELG9CQUFvQixVQUFVLEVBQUUsdUJBQXVCLGdCQUFnQix1QkFBdUIsMENBQTBDLHNFQUFzRSxXQUFXLEtBQUssa0NBQWtDLHdCQUF3QiwwQkFBMEIsU0FBUyw4Q0FBOEMsOENBQThDLGdDQUFnQyxvQkFBb0IsNENBQTRDLGtJQUFrSSw0Q0FBNEMsd0hBQXdILDZDQUE2Qyw2Q0FBNkMsZ0RBQWdELHVFQUF1RSx3RUFBd0UseUNBQXlDLDRCQUE0Qix3SkFBd0osOEJBQThCLDRGQUE0RiwyREFBMkQsMEJBQTBCLCtFQUErRSx5REFBeUQsNEtBQTRLLHVEQUF1RCxjQUFjLDJFQUEyRSxNQUFNLDhDQUE4Qyw4QkFBOEIsb0VBQW9FLHdDQUF3Qyx5RUFBeUUsOERBQThELDhDQUE4QywyRUFBMkUsd0RBQXdELCtDQUErQyxxR0FBcUcsSUFBSSxLQUFLLFdBQVcsdUJBQXVCLHdHQUF3RywrREFBK0QsbUVBQW1FLHlEQUF5RCw4Q0FBOEMsc0RBQXNELHlGQUF5Riw2REFBNkQsdUZBQXVGLHNEQUFzRCxxQ0FBcUMsVUFBVSxvQ0FBb0MsTUFBTSxrQ0FBa0MsTUFBTSxrQ0FBa0MsTUFBTSxvQ0FBb0MsTUFBTSxrQ0FBa0MsTUFBTSxzQ0FBc0MsTUFBTSxzQ0FBc0MsTUFBTSxnQ0FBZ0MsTUFBTSxvQ0FBb0MsTUFBTSwrRUFBK0UsTUFBTSxtRkFBbUYsTUFBTSxrQ0FBa0MsTUFBTSxvQ0FBb0MsTUFBTSxnQ0FBZ0MsTUFBTSx3Q0FBd0MsTUFBTSx3Q0FBd0MsTUFBTSxvQ0FBb0MsTUFBTSxvQ0FBb0MsTUFBTSwwQ0FBMEMsTUFBTSwyQ0FBMkMsTUFBTSwrREFBK0Qsa0VBQWtFLGlIQUFpSCxnRUFBZ0UsK0dBQStHLGtFQUFrRSxpSEFBaUgsZ0VBQWdFLCtHQUErRyxnRUFBZ0UsK0dBQStHLGdFQUFnRSwrR0FBK0csc0VBQXNFLHFIQUFxSCxvRUFBb0UsbUhBQW1ILHNEQUFzRCxvSUFBb0ksNERBQTRELHFKQUFxSixzREFBc0Qsb0lBQW9JLDREQUE0RCx1SkFBdUosdURBQXVELHdHQUF3Ryw2REFBNkQseUhBQXlILHVEQUF1RCx3R0FBd0csNkRBQTZELHdKQUF3Six1REFBdUQsb0lBQW9JLHVEQUF1RCxvSUFBb0ksMkRBQTJELDRDQUE0Qyw2REFBNkQsOENBQThDLHdEQUF3RCxvS0FBb0ssd0RBQXdELG9LQUFvSyw4REFBOEQsd0pBQXdKLHlEQUF5RCxpTUFBaU0seURBQXlELGlNQUFpTSwrREFBK0QsdUpBQXVKLHNEQUFzRCx1R0FBdUcsdURBQXVELHdHQUF3RyxxREFBcUQsa0tBQWtLLHFEQUFxRCx5TUFBeU0sdURBQXVELHdGQUF3RixzREFBc0QsNExBQTRMLDBEQUEwRCxxRUFBcUUsNkRBQTZELCtTQUErUyx3REFBd0QsMkpBQTJKLDREQUE0RCw4SUFBOEksNkRBQTZELDhJQUE4SSwrREFBK0QscUdBQXFHLGdFQUFnRSxxR0FBcUcsc0VBQXNFLCtEQUErRCxvQkFBb0IseUNBQXlDLGtDQUFrQyxHQUFHLDhEQUE4RCx1QkFBdUIsV0FBVyxzQ0FBc0Msb0VBQW9FLHVCQUF1QixXQUFXLGtDQUFrQyw4REFBOEQsdUJBQXVCLFdBQVcsc0NBQXNDLHlFQUF5RSx1QkFBdUIsV0FBVyw4Q0FBOEMsMEVBQTBFLHVCQUF1QixXQUFXLCtDQUErQyxnRkFBZ0YsdUJBQXVCLFdBQVcscURBQXFELG9FQUFvRSx1QkFBdUIsV0FBVyxrQ0FBa0MsK0RBQStELHVCQUF1QixXQUFXLHdDQUF3QyxxRUFBcUUsdUJBQXVCLFdBQVcsbUNBQW1DLCtEQUErRCx1QkFBdUIsV0FBVyx3Q0FBd0MscUVBQXFFLHVCQUF1QixXQUFXLG1DQUFtQywrREFBK0QsdUJBQXVCLFdBQVcsc0NBQXNDLCtEQUErRCx1QkFBdUIsV0FBVyxzQ0FBc0MscUVBQXFFLHVCQUF1QixXQUFXLDRDQUE0QyxtRUFBbUUsdUJBQXVCLFdBQVcsMENBQTBDLGdFQUFnRSx1QkFBdUIsV0FBVyw4QkFBOEIsZ0VBQWdFLHVCQUF1QixXQUFXLDhCQUE4QixzRUFBc0UsdUJBQXVCLFdBQVcsb0NBQW9DLGlFQUFpRSx1QkFBdUIsV0FBVywrQkFBK0IsaUVBQWlFLHVCQUF1QixXQUFXLCtCQUErQix1RUFBdUUsdUJBQXVCLFdBQVcscUNBQXFDLDhEQUE4RCx1QkFBdUIsV0FBVyw0QkFBNEIsK0RBQStELHVCQUF1QixXQUFXLDZCQUE2Qiw2REFBNkQsdUJBQXVCLFdBQVcsMkJBQTJCLDZEQUE2RCx1QkFBdUIsV0FBVywyQkFBMkIsK0RBQStELHVCQUF1QixXQUFXLDZCQUE2Qiw4REFBOEQsdUJBQXVCLFdBQVcsNEJBQTRCLGtFQUFrRSx1QkFBdUIsV0FBVyxLQUFLLDhCQUE4QixvQ0FBb0MsZ0VBQWdFLHVCQUF1QixXQUFXLHVKQUF1SixvRUFBb0UsdUJBQXVCLFdBQVcsa0NBQWtDLHFFQUFxRSx1QkFBdUIsV0FBVyxtQ0FBbUMsNERBQTRELHNCQUFzQiwwQkFBMEIsWUFBWSxXQUFXLDRDQUE0Qyx1QkFBdUIsa0VBQWtFLHNCQUFzQiwwQkFBMEIsWUFBWSxXQUFXLHlEQUF5RCx1QkFBdUIsNERBQTRELHNCQUFzQiwwQkFBMEIsWUFBWSxXQUFXLDRDQUE0Qyx1QkFBdUIsdUVBQXVFLFlBQVksMEJBQTBCLFlBQVksV0FBVyxxREFBcUQsdUJBQXVCLHdFQUF3RSxZQUFZLDBCQUEwQixZQUFZLFdBQVcsc0RBQXNELHVCQUF1Qiw4RUFBOEUsWUFBWSwwQkFBMEIsNEJBQTRCLFdBQVcseURBQXlELGtDQUFrQyxHQUFHLHVCQUF1QixrRUFBa0Usc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsS0FBSyx3Q0FBd0MsNENBQTRDLHVCQUF1Qiw2REFBNkQsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsOENBQThDLHVCQUF1QixtRUFBbUUsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsMkRBQTJELHVCQUF1Qiw2REFBNkQsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsOENBQThDLHVCQUF1QixtRUFBbUUsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsS0FBSyx5Q0FBeUMsNENBQTRDLHVCQUF1Qiw2REFBNkQsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsNENBQTRDLHVCQUF1Qiw2REFBNkQsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsNENBQTRDLHVCQUF1QixtRUFBbUUsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsa0ZBQWtGLHVCQUF1QixpRUFBaUUsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsZ0RBQWdELHVCQUF1Qiw4REFBOEQsK0lBQStJLFdBQVcsb0NBQW9DLDhEQUE4RCwrSUFBK0ksV0FBVyxvQ0FBb0Msb0VBQW9FLCtJQUErSSxXQUFXLEtBQUsseUNBQXlDLDRDQUE0QywrREFBK0QsK0lBQStJLFdBQVcsbUNBQW1DLCtEQUErRCwrSUFBK0ksV0FBVyxtQ0FBbUMscUVBQXFFLCtJQUErSSxXQUFXLHlDQUF5Qyw0REFBNEQsK0lBQStJLFdBQVcsbUNBQW1DLDZEQUE2RCwrSUFBK0ksV0FBVyxvQ0FBb0MsMkRBQTJELDZJQUE2SSxXQUFXLGtDQUFrQywyREFBMkQsc0JBQXNCLDBCQUEwQixZQUFZLFdBQVcsa0NBQWtDLHVCQUF1QixrRUFBa0UsK0lBQStJLFdBQVcseUNBQXlDLG1FQUFtRSxzQkFBc0IsMEJBQTBCLFlBQVksV0FBVywwQ0FBMEMsdUJBQXVCLHdCQUF3QiwwQ0FBMEMsNERBQTRELDhDQUE4QyxZQUFZLG1CQUFtQixLQUFLLDBCQUEwQixvREFBb0QsaUJBQWlCLHVDQUF1QyxrQkFBa0Isb0JBQW9CLGtCQUFrQix5REFBeUQsd0JBQXdCLGlCQUFpQixLQUFLLHlEQUF5RCxXQUFXLEtBQUssc0JBQXNCLGdFQUFnRSxpQkFBaUIsaUJBQWlCLDJDQUEyQyxrQ0FBa0MsV0FBVyxLQUFLLG9DQUFvQyxtQkFBbUIscUJBQXFCLDBFQUEwRSxTQUFTLHFDQUFxQyxxQkFBcUIsWUFBWSxXQUFXLEtBQUssMkJBQTJCLFdBQVcsU0FBUyw2Q0FBNkMsd0JBQXdCLDJEQUEyRCxtQ0FBbUMscUNBQXFDLEVBQUUsc0JBQXNCLG9HQUFvRyxZQUFZLDBDQUEwQyxpQ0FBaUMscUNBQXFDLFlBQVksa0JBQWtCLG9DQUFvQyxlQUFlLGtDQUFrQyw4Q0FBOEMsNENBQTRDLDhCQUE4QixTQUFTLFlBQVksV0FBVyxLQUFLLHNCQUFzQix3QkFBd0IsU0FBUyx1Q0FBdUMsOEJBQThCLFNBQVMsWUFBWSxXQUFXLEtBQUssc0JBQXNCLG1DQUFtQyw4Q0FBOEMsb0NBQW9DLDhCQUE4QixTQUFTLFlBQVksV0FBVyxnQ0FBZ0MsOENBQThDLHNDQUFzQyw4QkFBOEIsU0FBUyxZQUFZLFdBQVcsNkNBQTZDLDhDQUE4QywwQ0FBMEMseUJBQXlCLFNBQVMsWUFBWSxXQUFXLEtBQUssc0JBQXNCLHlDQUF5QyxzQ0FBc0MsNkJBQTZCLHdIQUF3SCwyQ0FBMkMsOEdBQThHLG9DQUFvQyx1REFBdUQsb0NBQW9DLGdDQUFnQyx3REFBd0QseUJBQXlCLFNBQVMsWUFBWSxXQUFXLEtBQUssc0JBQXNCLCtIQUErSCxvREFBb0QsS0FBSywrQkFBK0IsRUFBRSx5QkFBeUIsaUhBQWlILHFFQUFxRSwyQ0FBMkMsdUJBQXVCLGdFQUFnRSxTQUFTLCtCQUErQixpREFBaUQsNkNBQTZDLG1GQUFtRixxREFBcUQsK0lBQStJLDREQUE0RCxrQkFBa0IsMEJBQTBCLDhVQUE4VSx1QkFBdUIsc0NBQXNDLDZCQUE2Qiw2Q0FBNkMsNENBQTRDLDZCQUE2QiwrQ0FBK0MsMExBQTBMLDhFQUE4RSxXQUFXLCtPQUErTyx1QkFBdUIsV0FBVywwQ0FBMEMsb0hBQW9ILDRFQUE0RSw2Q0FBNkMsNEhBQTRILHlEQUF5RCwwQkFBMEIsMklBQTJJLGtIQUFrSCx5REFBeUQseUNBQXlDLDZDQUE2QyxFQUFFLDJDQUEyQyxpQkFBaUIsV0FBVyw2QkFBNkIsU0FBUyxvREFBb0QsZ0JBQWdCLHlCQUF5QixZQUFZLGdFQUFnRSxpR0FBaUcsMERBQTBELGdCQUFnQix5QkFBeUIsc0hBQXNILGtCQUFrQixpQ0FBaUMsNEtBQTRLLG1FQUFtRSw4Q0FBOEMsc0RBQXNELDRCQUE0QixNQUFNLDhIQUE4SCxzQkFBc0IsaUJBQWlCLHdEQUF3RCxnQ0FBZ0Msa0ZBQWtGLG1CQUFtQixxQ0FBcUMsZUFBZSw4QkFBOEIsaUJBQWlCLDZEQUE2RCxxSEFBcUgsNkNBQTZDLGtDQUFrQywwREFBMEQsaURBQWlELDRDQUE0QyxrREFBa0QsMERBQTBELHlDQUF5QywrREFBK0QsbUNBQW1DLFlBQVksV0FBVyxlQUFlLGtDQUFrQyxTQUFTLG9EQUFvRCx5Q0FBeUMsK0RBQStELG1DQUFtQyxZQUFZLFdBQVcsZ0JBQWdCLGtDQUFrQyxTQUFTLHFDQUFxQyw4TUFBOE0sb0NBQW9DLG9MQUFvTCx5Q0FBeUMsMEhBQTBILHdDQUF3Qyw4SEFBOEgsaURBQWlELDhCQUE4Qix3QkFBd0Isa0NBQWtDLDJIQUEySCxJQUFJLGtEQUFrRCxnREFBZ0QseURBQXlELHVEQUF1RCwrREFBK0QscUVBQXFFLHlHQUF5RywrQkFBK0IseUNBQXlDLGlDQUFpQyxPQUFPLFlBQVksa0NBQWtDLHdDQUF3Qyx1Q0FBdUMsa0xBQWtMLGdEQUFnRCxzREFBc0Qsa0RBQWtELHNEQUFzRCxvREFBb0QsdURBQXVELG1EQUFtRCx1REFBdUQsa0RBQWtELHVEQUF1RCxpREFBaUQsc0RBQXNELHNEQUFzRCx3REFBd0QseURBQXlELDZOQUE2TixtREFBbUQsOEhBQThILDhDQUE4Qyx3T0FBd08sNkNBQTZDLGdCQUFnQixXQUFXLEtBQUssd0NBQXdDLHFEQUFxRCw0Q0FBNEMsZ0RBQWdELCtCQUErQixtQkFBbUIsaUNBQWlDLGtDQUFrQyxzQkFBc0Isc0RBQXNELDZIQUE2SCxpREFBaUQsK0JBQStCLG1CQUFtQixzREFBc0QsV0FBVyxxQkFBcUIsa0JBQWtCLDhDQUE4QywwRUFBMEUsRUFBRSxzQkFBc0IscURBQXFELHFEQUFxRCwwRUFBMEUsRUFBRSxzQkFBc0IsNERBQTRELHNEQUFzRCwwRUFBMEUsVUFBVSxpQkFBaUIsV0FBVyx3QkFBd0IscURBQXFELDREQUE0RCx1Q0FBdUMscUJBQXFCLHNLQUFzSyxzQ0FBc0MsWUFBWSxLQUFLLFdBQVcsK0NBQStDLFNBQVMsa0RBQWtELCtDQUErQyx3QkFBd0IsZ0NBQWdDLFdBQVcseUJBQXlCLHFCQUFxQiwyQ0FBMkMsd0NBQXdDLDhFQUE4RSxtREFBbUQsa0RBQWtELDBCQUEwQixrQ0FBa0MsRUFBRSxtQkFBbUIsaUJBQWlCLDJIQUEySCxxQkFBcUIsc0JBQXNCLHlKQUF5SixpQ0FBaUMsbURBQW1ELGtDQUFrQyxvREFBb0QsbUJBQW1CLDJIQUEySCxtQkFBbUIsaUpBQWlKLHVDQUF1QywrRUFBK0Usa0JBQWtCLGNBQWMsbURBQW1ELDBEQUEwRCxJQUFJLHVEQUF1RCw0QkFBNEIsbUNBQW1DLHdHQUF3Ryw4Q0FBOEMsT0FBTyxTQUFTLFdBQVcsa0JBQWtCLGtCQUFrQiw4REFBOEQsU0FBUywwQ0FBMEMsaUJBQWlCLG1JQUFtSSx5Q0FBeUMsa0VBQWtFLCtCQUErQixZQUFZLFdBQVcsMkJBQTJCLFNBQVMsMEJBQTBCLG9EQUFvRCxRQUFRLElBQUksS0FBSyxrQkFBa0IsdVFBQXVRLHNCQUFzQixRQUFRLHNDQUFzQyxxRUFBcUUsMENBQTBDLGdEQUFnRCx1Q0FBdUMseUNBQXlDLHVDQUF1QyxnQ0FBZ0Msb0NBQW9DLHVDQUF1QywyREFBMkQscUNBQXFDLGtPQUFrTyxpREFBaUQsV0FBVyxjQUFjLDhEQUE4RCxpQ0FBaUMscUJBQXFCLDhCQUE4QixXQUFXLEtBQUssV0FBVyxpRkFBaUYsU0FBUyx1RkFBdUYsYUFBYSwyRkFBMkYsU0FBUyxnREFBZ0QsY0FBYyxxQ0FBcUMsMkNBQTJDLGVBQWUseVVBQXlVLDBCQUEwQiw0QkFBNEIsb0JBQW9CLE1BQU0sY0FBYyxRQUFRLGtCQUFrQixtQkFBbUIscUJBQXFCLEVBQUUsVUFBVSx1RkFBdUYsd0RBQXdELGVBQWUsNEZBQTRGLFlBQVksV0FBVyxLQUFLLFdBQVcsNEJBQTRCLHlDQUF5QyxPQUFPLGFBQWEsY0FBYyx3QkFBd0IsZ0JBQWdCLCtCQUErQixvQ0FBb0MsRUFBRSxnQ0FBZ0MsZUFBZSwyQkFBMkIsd0VBQXdFLGlEQUFpRCxFQUFFLGFBQWEsSUFBSSx3QkFBd0IsaUhBQWlILDZDQUE2QyxtQkFBbUIsZUFBZSxPQUFPLGdDQUFnQyxZQUFZLEdBQUcsV0FBVyxpQkFBaUIsY0FBYyxzRUFBc0Usb0JBQW9CLFdBQVcsbUVBQW1FLGNBQWMsNEJBQTRCLG9FQUFvRSxLQUFLLE1BQU0sR0FBRyxTQUFTLElBQUksYUFBYSxLQUFLLE9BQU8sUUFBUSxXQUFXLEtBQUssa0JBQWtCLDZFQUE2RSxTQUFTLE1BQU0sUUFBUSxnQkFBZ0IsaUVBQWlFLGtFQUFrRSwyQ0FBMkMsZ0NBQWdDLGVBQWUsZ0JBQWdCLGdCQUFnQixNQUFNLFFBQVEsZUFBZSxZQUFZLGFBQWEsS0FBSyxXQUFXLGdCQUFnQixTQUFTLGdEQUFnRCxvQ0FBb0MsR0FBRyxzQ0FBc0MscUJBQXFCLHFCQUFxQixpQ0FBaUMsV0FBVyxnQkFBZ0IsZUFBZSxVQUFVLE9BQU8seUJBQXlCLHlCQUF5QixPQUFPLHNCQUFzQixZQUFZLHFDQUFxQyxTQUFTLEdBQUcsbUJBQW1CLFNBQVMsSUFBSSx5Q0FBeUMsd0JBQXdCLEdBQUcsV0FBVyxtQ0FBbUMsdUJBQXVCLElBQUksS0FBSyxXQUFXLG9CQUFvQixJQUFJLFNBQVMsU0FBUyxVQUFVLDhCQUE4Qix3QkFBd0IseUNBQXlDLDZDQUE2Qyx3QkFBd0IsV0FBVyxtQ0FBbUMsZUFBZSxvQ0FBb0MsSUFBSSxLQUFLLFdBQVcsa0NBQWtDLFVBQVUsNEJBQTRCLGNBQWMsaUNBQWlDLGVBQWUsSUFBSSxzQkFBc0IsU0FBUyxhQUFhLGFBQWEsWUFBWSxjQUFjLDJDQUEyQyxLQUFLLEdBQUcsY0FBYywwQkFBMEIsaUJBQWlCLFVBQVUsV0FBVyxtQkFBbUIsTUFBTSxHQUFHLGdCQUFnQixtQkFBbUIsMEJBQTBCLE9BQU8sMEJBQTBCLEtBQUssc0JBQXNCLEVBQUUsYUFBYSxVQUFVLFlBQVksV0FBVyxLQUFLLFdBQVcsVUFBVSxJQUFJLElBQUksU0FBUyxZQUFZLFlBQVksMkJBQTJCLG1CQUFtQixRQUFRLEdBQUcsMEJBQTBCLGNBQWMsbUJBQW1CLHVCQUF1QixnQkFBZ0IsT0FBTyxvQ0FBb0MsMkJBQTJCLHdFQUF3RSxpQ0FBaUMsS0FBSyxtQkFBbUIsMkJBQTJCLFFBQVEsb0JBQW9CLFFBQVEsYUFBYSx1QkFBdUIsMkJBQTJCLGFBQWEsSUFBSSxTQUFTLFNBQVMsc0JBQXNCLDJDQUEyQywyQkFBMkIsWUFBWSwyQkFBMkIsWUFBWSw2QkFBNkIsaUdBQWlHLDJCQUEyQiwwQkFBMEIsaUJBQWlCLFlBQVksZ0JBQWdCLG1CQUFtQixjQUFjLFlBQVksaUNBQWlDLGVBQWUsd0JBQXdCLDZCQUE2QixlQUFlLElBQUksNkJBQTZCLFNBQVMsYUFBYSxnQ0FBZ0MsZ0JBQWdCLHVDQUF1QyxJQUFJLFFBQVEsU0FBUyxNQUFNLEdBQUcsK0JBQStCLFFBQVEsR0FBRywrQkFBK0IsK0JBQStCLDJCQUEyQiw2QkFBNkIsYUFBYSxZQUFZLGNBQWMsTUFBTSxjQUFjLE1BQU0sK0NBQStDLFdBQVcsbUNBQW1DLGtDQUFrQyw0QkFBNEIsS0FBSyxHQUFHLG9CQUFvQiw0QkFBNEIsMEJBQTBCLFFBQVEsNkJBQTZCLEdBQUcsbUJBQW1CLHNCQUFzQix5Q0FBeUMsY0FBYyxtQkFBbUIscUJBQXFCLGFBQWEsR0FBRyw0REFBNEQsZUFBZSxHQUFHLEdBQUcsR0FBRyxXQUFXLGNBQWMsZ0JBQWdCLHNCQUFzQixZQUFZLFdBQVcscUNBQXFDLFNBQVMsY0FBYyxjQUFjLGVBQWUsMENBQTBDLGlEQUFpRCxrQkFBa0Isc0NBQXNDLGtCQUFrQixvQkFBb0IsdUJBQXVCLDhDQUE4QyxrQkFBa0IsNENBQTRDLHdEQUF3RCxrQkFBa0IsNkJBQTZCLGtCQUFrQiwySEFBMkgsZ0JBQWdCLGNBQWMsb0ZBQW9GLGFBQWEsVUFBVSxvQkFBb0Isb0NBQW9DLG9CQUFvQixlQUFlLHVEQUF1RCxrQkFBa0IsZUFBZSxHQUFHLHlCQUF5QixzQkFBc0Isa0JBQWtCLGVBQWUsNkdBQTZHLGNBQWMsU0FBUyxjQUFjLDJEQUEyRCxLQUFLLG9CQUFvQixrQkFBa0IsNEJBQTRCLGdCQUFnQiw4Q0FBOEMsSUFBSSxtQ0FBbUMsb0JBQW9CLGFBQWEsb0ZBQW9GLDRCQUE0QixpQkFBaUIsMEJBQTBCLDJCQUEyQiwwQ0FBMEMsY0FBYyw0Q0FBNEMsY0FBYyxvQ0FBb0MsY0FBYyx1Q0FBdUMsY0FBYywyQ0FBMkMsY0FBYyxvQ0FBb0MsY0FBYyw0Q0FBNEMsY0FBYyxrQ0FBa0MsY0FBYyxxRUFBcUUsZ0RBQWdELDBDQUEwQyxrQ0FBa0MsK0JBQStCLGdCQUFnQixvRkFBb0YsY0FBYyxvQkFBb0IsZ0dBQWdHLDhDQUE4QyxnREFBZ0QsZUFBZSw4RUFBOEUsWUFBWSxXQUFXLGlDQUFpQyxTQUFTLHFDQUFxQyxnQkFBZ0IsYUFBYSxtREFBbUQsZ0JBQWdCLHVCQUF1QixnQkFBZ0Isc0JBQXNCLEdBQUcsa0JBQWtCLE1BQU0sa0JBQWtCLE1BQU0sSUFBSSxTQUFTLEtBQUssaUhBQWlILGNBQWMsUUFBUSxlQUFlLGFBQWEsY0FBYyx1QkFBdUIsdUNBQXVDLGNBQWMsbUJBQW1CLFNBQVMsZ09BQWdPLEdBQUcsZ0NBQWdDLFFBQVEscUVBQXFFLFFBQVEscUZBQXFGLDRCQUE0QixxQkFBcUIsNERBQTRELGFBQWEsU0FBUyxLQUFLLFVBQVUsY0FBYyxtQkFBbUIsU0FBUyxzRUFBc0UsNEZBQTRGLFVBQVUsS0FBSywwQkFBMEIsR0FBRyw0SEFBNEgseUlBQXlJLFlBQVksWUFBWSxHQUFHLEdBQUcsY0FBYyw0RkFBNEYsU0FBUyxrQkFBa0Isa0NBQWtDLFVBQVUsaUJBQWlCLDBEQUEwRCwwQkFBMEIsMEJBQTBCLGtCQUFrQix3REFBd0QsbUNBQW1DLFlBQVksZUFBZSxNQUFNLEVBQUUsSUFBSSxpRUFBaUUsVUFBVSxTQUFTLEdBQUcsaUJBQWlCLGlRQUFpUSw0RkFBNEYsa0VBQWtFLE9BQU8sR0FBRyxJQUFJLGNBQWMsU0FBUyxRQUFRLFVBQVUsS0FBSyxhQUFhLGtFQUFrRSxpbkJBQWluQixTQUFTLFdBQVcsNEJBQTRCLEVBQUUsMEJBQTBCLGtCQUFrQixhQUFhLHNEQUFzRCx3REFBd0QsdUJBQXVCLGdIQUFnSCxlQUFlLHdEQUF3RCxlQUFlLG9CQUFvQixVQUFVLGlCQUFpQixhQUFhLGFBQWEsd0JBQXdCLGlHQUFpRyxxQkFBcUIsWUFBWSxXQUFXLEtBQUssV0FBVyx3REFBd0QsU0FBUyxxQ0FBcUMsbUJBQW1CLHlDQUF5QyxrQkFBa0IsaUZBQWlGLHVDQUF1Qyx5Q0FBeUMsZ0JBQWdCLHFIQUFxSCxpREFBaUQsdUJBQXVCLDJCQUEyQixxQ0FBcUMsV0FBVyxxQkFBcUIsc0ZBQXNGLHlCQUF5Qix3Q0FBd0MsbUNBQW1DLHNFQUFzRSxTQUFTLHFCQUFxQixtQ0FBbUMsdUhBQXVILHdEQUF3RCxLQUFLLHNHQUFzRyxrQkFBa0IsdUJBQXVCLGdDQUFnQyxXQUFXLHFCQUFxQixzRkFBc0YsdUJBQXVCLGdDQUFnQyxXQUFXLHFCQUFxQiwrSkFBK0osZUFBZSxnQ0FBZ0MsWUFBWSxzQkFBc0IsS0FBSyx1QkFBdUIsaU5BQWlOLGVBQWUsa0NBQWtDLGlCQUFpQixZQUFZLEtBQUssaUJBQWlCLDhCQUE4Qix5QkFBeUIsU0FBUyxlQUFlLG9DQUFvQyxzREFBc0QsZUFBZSx3REFBd0Qsd0JBQXdCLFNBQVMsY0FBYyw4Q0FBOEMsaUJBQWlCLE1BQU0sZ0JBQWdCLG9DQUFvQyw2Q0FBNkMsS0FBSyxRQUFRLGVBQWUsZ0JBQWdCLG1CQUFtQixLQUFLLGtDQUFrQyxZQUFZLFdBQVcsbUVBQW1FLGtCQUFrQixnQ0FBZ0MscUJBQXFCLHVCQUF1QixhQUFhLGlCQUFpQixXQUFXLEtBQUssV0FBVywwQkFBMEIsOEJBQThCLHdDQUF3QyxtQkFBbUIsc0NBQXNDLEtBQUssaUZBQWlGLHFCQUFxQixvREFBb0QsaUJBQWlCLHlCQUF5Qiw2RUFBNkUsaUJBQWlCLG9EQUFvRCxpQkFBaUIsa0NBQWtDLGtCQUFrQix3R0FBd0csY0FBYyxhQUFhLG1CQUFtQixvQ0FBb0MsaUJBQWlCLHlFQUF5RSxhQUFhLFdBQVcsZUFBZSwwQ0FBMEMsNkVBQTZFLHNDQUFzQyxjQUFjLGdCQUFnQixpQkFBaUIsMEJBQTBCLG1CQUFtQixtQkFBbUIsa0NBQWtDLHVDQUF1QyxrQkFBa0Isd0RBQXdELGNBQWMsMEJBQTBCLG1CQUFtQixNQUFNLDJKQUEySixLQUFLLEVBQUUsMEJBQTBCLEtBQUssU0FBUyx5QkFBeUIsaUJBQWlCLGNBQWMsZUFBZSxlQUFlLE1BQU0sb0JBQW9CLHFDQUFxQyxlQUFlLGVBQWUsd0RBQXdELGVBQWUsZ0ZBQWdGLCtGQUErRixXQUFXLEtBQUssV0FBVyxJQUFJLGtDQUFrQyxXQUFXLDBHQUEwRyxXQUFXLGlCQUFpQixnREFBZ0QsK0JBQStCLGdDQUFnQyx5RkFBeUYsWUFBWSw4QkFBOEIsb0JBQW9CLE9BQU8sc0VBQXNFLGlCQUFpQiw0Q0FBNEMsa0NBQWtDLGVBQWUsZUFBZSw4REFBOEQsdURBQXVELGFBQWEsR0FBRyxtRkFBbUYsNEJBQTRCLEdBQUcsb0RBQW9ELGlCQUFpQixHQUFHLDRDQUE0QyxlQUFlLCtCQUErQixTQUFTLE9BQU8sZ0JBQWdCLFVBQVUsR0FBRyxLQUFLLFFBQVEsTUFBTSxTQUFTLGtCQUFrQixLQUFLLE9BQU8sa0JBQWtCLGVBQWUsU0FBUyxlQUFlLFNBQVMsZUFBZSx5QkFBeUIsU0FBUyxZQUFZLGlCQUFpQixTQUFTLDhCQUE4Qix1QkFBdUIsUUFBUSxpREFBaUQsWUFBWSxJQUFJLDJDQUEyQyx1QkFBdUIsZUFBZSx1QkFBdUIsZ0JBQWdCLGFBQWEsRUFBRSxhQUFhLDRCQUE0QixhQUFhLHVCQUF1QixTQUFTLFVBQVUsYUFBYSx5Q0FBeUMsY0FBYyxpQkFBaUIsaURBQWlELDZCQUE2QixpQ0FBaUMsMkJBQTJCLFNBQVMsMkJBQTJCLFlBQVksbUNBQW1DLHdCQUF3QiwwQ0FBMEMsd0JBQXdCLDJCQUEyQix3QkFBd0IsNENBQTRDLG9CQUFvQixtQkFBbUIsZUFBZSw4QkFBOEIsaUNBQWlDLDBDQUEwQyxzQkFBc0IsMkJBQTJCLHNCQUFzQix1Q0FBdUMscUJBQXFCLCtCQUErQixnQ0FBZ0MsbUJBQW1CLG9CQUFvQixvQkFBb0IsU0FBUyxrQ0FBa0Msc0JBQXNCLHNCQUFzQixzQkFBc0IscUdBQXFHLHFCQUFxQixnQ0FBZ0MscUJBQXFCLGlFQUFpRSxzQkFBc0IsdUNBQXVDLFdBQVcsK0JBQStCLGlDQUFpQyx5QkFBeUIsdUJBQXVCLFdBQVcsS0FBSyx5QkFBeUIsb0JBQW9CLG9CQUFvQixvQkFBb0IsbUJBQW1CLDBCQUEwQixxQkFBcUIsMEJBQTBCLHNCQUFzQixXQUFXLHFCQUFxQixtQkFBbUIsMEJBQTBCLG1CQUFtQixHQUFHLGlCQUFpQixTQUFTLGlDQUFpQyxzQkFBc0IsNEVBQTRFLDBCQUEwQixlQUFlLGtCQUFrQix1QkFBdUIsb0lBQW9JLGVBQWUsaU1BQWlNLFNBQVMsVUFBVSxrREFBa0QscUNBQXFDLGlCQUFpQixnRUFBZ0UsZUFBZSw2Q0FBNkMsZUFBZSxrSEFBa0gsa0NBQWtDLDJDQUEyQyx3Q0FBd0MsSUFBSSxzQkFBc0IsWUFBWSx5RUFBeUUsUUFBUSxhQUFhLFdBQVcsTUFBTSxZQUFZLHFDQUFxQyxnQ0FBZ0MsK0JBQStCLHlCQUF5QixpQ0FBaUMsSUFBSSxzQ0FBc0MsS0FBSyxNQUFNLElBQUksZ0NBQWdDLFNBQVMsOENBQThDLG9DQUFvQyxRQUFRLFFBQVEsZUFBZSxRQUFRLE1BQU0sMEJBQTBCLGdDQUFnQyxJQUFJLHVCQUF1QixTQUFTLG1GQUFtRixlQUFlLG1FQUFtRSxlQUFlLDRCQUE0QixpQkFBaUIscUVBQXFFLGlCQUFpQixnREFBZ0QsOEJBQThCLDJJQUEySSxxQkFBcUIsd0pBQXdKLGdCQUFnQixtREFBbUQsZ0JBQWdCLFNBQVMsd0JBQXdCLElBQUksbUNBQW1DLFNBQVMsV0FBVyxTQUFTLFNBQVMsY0FBYyxRQUFRLE1BQU0seUhBQXlILElBQUksS0FBSywrQkFBK0IsUUFBUSxZQUFZLFdBQVcsS0FBSyxXQUFXLDZCQUE2QixxREFBcUQsZUFBZSx5R0FBeUcsV0FBVyx5Q0FBeUMsVUFBVSxxREFBcUQsc0VBQXNFLE1BQU0sSUFBSSw4QkFBOEIsU0FBUyxvREFBb0QsMEVBQTBFLG9CQUFvQix1QkFBdUIsK0RBQStELDRCQUE0QixxQkFBcUIsY0FBYyxLQUFLLFdBQVcsRUFBRSw0QkFBNEIsb0JBQW9CLDZFQUE2RSxTQUFTLEtBQUssYUFBYSxFQUFFLG1DQUFtQyx3QkFBd0IsNkRBQTZELGdCQUFnQixTQUFTLG1CQUFtQixJQUFJLEtBQUssc0dBQXNHLDZCQUE2QixJQUFJLG9CQUFvQix3Q0FBd0MsWUFBWSwyQ0FBMkMsc0ZBQXNGLFVBQVUsaUZBQWlGLFNBQVMsd0RBQXdELE9BQU8sT0FBTyxJQUFJLGdCQUFnQixjQUFjLDZIQUE2SCxjQUFjLDJCQUEyQixhQUFhLFNBQVMsNkJBQTZCLGdCQUFnQixzRUFBc0UsV0FBVyxFQUFFLFlBQVksd0NBQXdDLE1BQU0sK0VBQStFLE1BQU0sZUFBZSxNQUFNLGVBQWUsTUFBTSxxREFBcUQsVUFBVSxzQ0FBc0MsUUFBUSxTQUFTLGdEQUFnRCxhQUFhLFdBQVcsS0FBSyxjQUFjLGNBQWMsTUFBTSxhQUFhLElBQUksU0FBUyxTQUFTLDZEQUE2RCxNQUFNLElBQUksWUFBWSxhQUFhLGdCQUFnQixnQ0FBZ0MsYUFBYSxpQkFBaUIsdUNBQXVDLGlDQUFpQyxLQUFLLFdBQVcsS0FBSyx3QkFBd0IseURBQXlELDhLQUE4SyxvQ0FBb0MseUJBQXlCLGVBQWUsU0FBUyxpRUFBaUUsWUFBWSxXQUFXLGtDQUFrQyxxQkFBcUIsNkJBQTZCLFdBQVcsZUFBZSxrQkFBa0IscUJBQXFCLFdBQVcsd0NBQXdDLFNBQVMsZ0JBQWdCLG9CQUFvQixHQUFHLE1BQU0sdUNBQXVDLDRCQUE0QixpQkFBaUIsWUFBWSxhQUFhLGNBQWMsWUFBWSxVQUFVLFlBQVksTUFBTSxXQUFXLE1BQU0scUJBQXFCLFVBQVUsa0JBQWtCLGtCQUFrQixtQkFBbUIsa0JBQWtCLGtCQUFrQixtQkFBbUIsa0JBQWtCLGtCQUFrQixrQkFBa0IsMEJBQTBCLG1CQUFtQixtQkFBbUIsbUJBQW1CLGtCQUFrQixNQUFNLGFBQWEscUNBQXFDLFVBQVUsd0JBQXdCLGlEQUFpRCw4QkFBOEIsd0NBQXdDLHdDQUF3QyxxQ0FBcUMsaURBQWlELG1DQUFtQyxpQ0FBaUMscURBQXFELHlDQUF5QyxNQUFNLGlLQUFpSyxZQUFZLGFBQWEsYUFBYSxJQUFJLEdBQUcsaUJBQWlCLG1DQUFtQyxpQkFBaUIsc0ZBQXNGLGFBQWEsY0FBYyxPQUFPLDBFQUEwRSxLQUFLLGFBQWEsY0FBYyxpQkFBaUIsZUFBZSxnUEFBZ1AsbUJBQW1CLHlDQUF5Qyx5QkFBeUIsY0FBYyxJQUFJLEVBQUUsUUFBUSxzQkFBc0IsaUNBQWlDLDZTQUE2Uyx3Q0FBd0MsMEtBQTBLLFFBQVEsS0FBSyw2Q0FBNkMsUUFBUSxpQ0FBaUMsa0JBQWtCLEdBQUcsWUFBWSxTQUFTLFFBQVEsS0FBSyxrQkFBa0IsU0FBUyxxQkFBcUIsdUNBQXVDLGtCQUFrQiwyQkFBMkIsS0FBSyxvVUFBb1Usc0ZBQXNGLEtBQUssc0JBQXNCLDBEQUEwRCxNQUFNLHlGQUF5RixhQUFhLE1BQU0sT0FBTyxhQUFhLG1GQUFtRiwyQkFBMkIsa0NBQWtDLGdEQUFnRCxhQUFhLHVDQUF1Qyx1QkFBdUIsb0ZBQW9GLFlBQVksMEhBQTBILElBQUksd0VBQXdFLFNBQVMsa0VBQWtFLFFBQVEsa0RBQWtELHNDQUFzQyx5Q0FBeUMsa0ZBQWtGLHlDQUF5Qyw2QkFBNkIsK0dBQStHLElBQUksOEJBQThCLGtFQUFrRSxvTUFBb00sU0FBUyxnREFBZ0QsVUFBVSxtQkFBbUIscUJBQXFCLHlCQUF5QixTQUFTLDZCQUE2QiwrQkFBK0IsOEJBQThCLHdDQUF3QyxrREFBa0QsUUFBUSxtQ0FBbUMsb0JBQW9CLDBCQUEwQixtQkFBbUIscUNBQXFDLG1CQUFtQixHQUFHLGlCQUFpQixRQUFRLDhCQUE4QixRQUFRLGNBQWMseUJBQXlCLEtBQUssOEJBQThCLCtJQUErSSwyQ0FBMkMscUlBQXFJLGdDQUFnQyx5QkFBeUIsb0tBQW9LLGdEQUFnRCw0QkFBNEIsaUJBQWlCLDZDQUE2QyxrQ0FBa0MsZ0RBQWdELHVCQUF1QixrQ0FBa0MsVUFBVSxnQ0FBZ0MsbUZBQW1GLHdCQUF3QixNQUFNLEdBQUcsZ0RBQWdELDhCQUE4QixHQUFHLDBDQUEwQyx1QkFBdUIsa0NBQWtDLGdEQUFnRCx1QkFBdUIsaUJBQWlCLDhCQUE4Qiw2TkFBNk4scVFBQXFRLGtEQUFrRCw4QkFBOEIsdUJBQXVCLG9GQUFvRiw2QkFBNkIsU0FBUyxpQ0FBbUIsSUFBSSxrQ0FBa0MsK0JBQStCLG1DQUFtQyxZQUFZLHlEQUF5RCxpQ0FBbUIsWUFBWSxpQ0FBbUIsV0FBVyxlQUFlLGlDQUFtQixVQUFVLGlDQUFtQixvQ0FBb0MsdUJBQXVCLEVBQUUsQ0FBQyxpQ0FBbUIsY0FBYyxpREFBaUQsSUFBSSwyQ0FBMkMsU0FBUywwQ0FBMEMsR0FBRyxpQ0FBbUIsb0RBQW9ELGlDQUFtQixPQUFPLDRGQUE0RixlQUFlLHdDQUF3QyxTQUFTLEdBQUcsMkJBQTJCLFlBQVksYUFBYSxnQkFBZ0IsWUFBWSxXQUFXLEtBQUssV0FBVywrR0FBK0csaUNBQW1CLHdCQUF3QixpQ0FBbUIsd0JBQXdCLHNEQUFzRCxFQUFFLGlCQUFpQixjQUFjLDJEQUEyRCxlQUFlLDhFQUE4RSwrRUFBK0UsUUFBUSxnQkFBZ0IsK0JBQStCLGtCQUFrQix5QkFBeUIsRUFBRSxvQ0FBb0Msa0JBQWtCLDhCQUE4QixFQUFFLGdDQUFnQywwRUFBMEUsb0dBQW9HLHVCQUF1QixHQUFHLGdCQUFnQixZQUFZLFdBQVcsS0FBSyxXQUFXLCtHQUErRyxpQkFBaUIsY0FBYyxpRUFBaUUsZUFBZSw4RUFBOEUsNkZBQTZGLFFBQVEsZ0JBQWdCLGdDQUFnQyw4QkFBOEIscUNBQXFDLFdBQVcsdUNBQXVDLDRDQUE0Qyx1QkFBdUIsYUFBYSx1QkFBdUIsS0FBSyxpQ0FBbUIsTUFBTSxnQkFBZ0IscUJBQXFCLGlDQUFpQyxzQ0FBc0MsNEJBQTRCLHVEQUF1RCxzQkFBc0IsU0FBUyxjQUFjLFlBQVksbUJBQW1CLEtBQUsseUNBQXlDLHlDQUF5QyxZQUFZLHFJQUFxSSxnRUFBZ0UsR0FBRyxTQUFTLGtCQUFrQix5Q0FBeUMsa0RBQWtELFdBQVcsMEJBQTBCLElBQUksd0JBQXdCLFNBQVMsaUJBQWlCLHlDQUF5QyxjQUFjLGtCQUFrQix1QkFBdUIsa0NBQWtDLG1CQUFtQixjQUFjLHNCQUFzQixjQUFjLHVCQUF1QixVQUFVLElBQUksZ0JBQWdCLFlBQVksV0FBVyxLQUFLLFdBQVcsK0dBQStHLGlCQUFpQixjQUFjLGVBQWUsOEVBQThFLDRCQUE0QixrQkFBa0IsZUFBZSxzRUFBc0UsVUFBVSw0Q0FBNEMsTUFBTSx1QkFBdUIsZ0pBQWdKLEVBQUUsK0VBQStFLGtDQUFrQyxVQUFVLGVBQWUsK0JBQStCLEVBQUUsRUFBRSwwRUFBMEUsWUFBWSw0Q0FBNEMsTUFBTSx1QkFBdUIsa0JBQWtCLG9NQUFvTSxxREFBcUQsaUJBQWlCLEVBQUUsMERBQTBELElBQUksa0NBQWtDLFVBQVUsa0JBQWtCLCtCQUErQixFQUFFLEVBQUUsc0VBQXNFLDRDQUE0QyxNQUFNLHVCQUF1Qiw4Q0FBOEMsd0NBQXdDLGtDQUFrQyxVQUFVLGVBQWUsK0JBQStCLEVBQUUsRUFBRSxnRUFBZ0UsNENBQTRDLE1BQU0sdUJBQXVCLGlEQUFpRCx3Q0FBd0Msa0NBQWtDLFVBQVUsa0JBQWtCLCtCQUErQixFQUFFLEVBQUUsOERBQThELDRDQUE0QyxNQUFNLHVCQUF1QixrRUFBa0UsMEpBQTBKLG1EQUFtRCxVQUFVLE1BQU0sNkJBQTZCLG1CQUFtQixtQ0FBbUMsa0JBQWtCLGVBQWUsK0JBQStCLEVBQUUsd0JBQXdCLEdBQUcsd0JBQXdCLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlL2Rpc3QvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZS5qcz83ODEzIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuQ2Fvc0RCSW5mb1NlcnZpY2U9dCgpOmUuQ2Fvc0RCSW5mb1NlcnZpY2U9dCgpfShzZWxmLChmdW5jdGlvbigpe3JldHVybigoKT0+e3ZhciBfX3dlYnBhY2tfbW9kdWxlc19fPXs2NjE6KGUsdCxvKT0+e3ZhciByPXt9O3IudjE9byg5NTgpLHQuaD1yfSw5NTg6KGUsdCxvKT0+e3ZhciByPXt9O3Iud2ViPW8oNDApO3ZhciBuPXtjYW9zZGI6e319O24uY2Fvc2RiLmluZm89e30sbi5jYW9zZGIuaW5mby52MT1vKDk4OCksbi5jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2VDbGllbnQ9ZnVuY3Rpb24oZSx0LG8pe298fChvPXt9KSxvLmZvcm1hdD1cInRleHRcIix0aGlzLmNsaWVudF89bmV3IHIud2ViLkdycGNXZWJDbGllbnRCYXNlKG8pLHRoaXMuaG9zdG5hbWVfPWV9LG4uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlUHJvbWlzZUNsaWVudD1mdW5jdGlvbihlLHQsbyl7b3x8KG89e30pLG8uZm9ybWF0PVwidGV4dFwiLHRoaXMuY2xpZW50Xz1uZXcgci53ZWIuR3JwY1dlYkNsaWVudEJhc2UobyksdGhpcy5ob3N0bmFtZV89ZX07dmFyIHM9bmV3IHIud2ViLk1ldGhvZERlc2NyaXB0b3IoXCIvY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlL0dldFZlcnNpb25JbmZvXCIsci53ZWIuTWV0aG9kVHlwZS5VTkFSWSxuLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdCxuLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlcmlhbGl6ZUJpbmFyeSgpfSksbi5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5KTtuLmNhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZUNsaWVudC5wcm90b3R5cGUuZ2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0aGlzLmNsaWVudF8ucnBjQ2FsbCh0aGlzLmhvc3RuYW1lXytcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0VmVyc2lvbkluZm9cIixlLHR8fHt9LHMsbyl9LG4uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlUHJvbWlzZUNsaWVudC5wcm90b3R5cGUuZ2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jbGllbnRfLnVuYXJ5Q2FsbCh0aGlzLmhvc3RuYW1lXytcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0VmVyc2lvbkluZm9cIixlLHR8fHt9LHMpfTt2YXIgaT1uZXcgci53ZWIuTWV0aG9kRGVzY3JpcHRvcihcIi9jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2UvR2V0U2Vzc2lvbkluZm9cIixyLndlYi5NZXRob2RUeXBlLlVOQVJZLG4uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LG4uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWFsaXplQmluYXJ5KCl9KSxuLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnkpO24uY2Fvc2RiLmluZm8udjEuR2VuZXJhbEluZm9TZXJ2aWNlQ2xpZW50LnByb3RvdHlwZS5nZXRTZXNzaW9uSW5mbz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIHRoaXMuY2xpZW50Xy5ycGNDYWxsKHRoaXMuaG9zdG5hbWVfK1wiL2Nhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZS9HZXRTZXNzaW9uSW5mb1wiLGUsdHx8e30saSxvKX0sbi5jYW9zZGIuaW5mby52MS5HZW5lcmFsSW5mb1NlcnZpY2VQcm9taXNlQ2xpZW50LnByb3RvdHlwZS5nZXRTZXNzaW9uSW5mbz1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNsaWVudF8udW5hcnlDYWxsKHRoaXMuaG9zdG5hbWVfK1wiL2Nhb3NkYi5pbmZvLnYxLkdlbmVyYWxJbmZvU2VydmljZS9HZXRTZXNzaW9uSW5mb1wiLGUsdHx8e30saSl9LGUuZXhwb3J0cz1uLmNhb3NkYi5pbmZvLnYxfSw5ODg6KGUsdCxvKT0+e3ZhciByPW8oMTkpLG49cixzPUZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdFwiLG51bGwscyksbi5leHBvcnRTeW1ib2woXCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlXCIsbnVsbCxzKSxuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdFwiLG51bGwscyksbi5leHBvcnRTeW1ib2woXCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlXCIsbnVsbCxzKSxuLmV4cG9ydFN5bWJvbChcInByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvXCIsbnVsbCxzKSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbz1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxudWxsLG51bGwpfSxuLmluaGVyaXRzKHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLHIuTWVzc2FnZSksbi5ERUJVRyYmIUNPTVBJTEVEJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mb1wiKSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Q9ZnVuY3Rpb24oZSl7ci5NZXNzYWdlLmluaXRpYWxpemUodGhpcyxlLDAsLTEsbnVsbCxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Qsci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QuZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3RcIikscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZT1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxudWxsLG51bGwpfSxuLmluaGVyaXRzKHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2Usci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLmRpc3BsYXlOYW1lPVwicHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZVwiKSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3Q9ZnVuY3Rpb24oZSl7ci5NZXNzYWdlLmluaXRpYWxpemUodGhpcyxlLDAsLTEsbnVsbCxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3Qsci5NZXNzYWdlKSxuLkRFQlVHJiYhQ09NUElMRUQmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGlzcGxheU5hbWU9XCJwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3RcIikscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZT1mdW5jdGlvbihlKXtyLk1lc3NhZ2UuaW5pdGlhbGl6ZSh0aGlzLGUsMCwtMSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnJlcGVhdGVkRmllbGRzXyxudWxsKX0sbi5pbmhlcml0cyhwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLHIuTWVzc2FnZSksbi5ERUJVRyYmIUNPTVBJTEVEJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5kaXNwbGF5TmFtZT1cInByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2VcIiksci5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCYmKHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8udG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8udG9PYmplY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbz17bWFqb3I6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCwxLDApLG1pbm9yOnIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHQsMiwwKSxwYXRjaDpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDMsMCkscHJlUmVsZWFzZTpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDQsXCJcIiksYnVpbGQ6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCw1LFwiXCIpfTtyZXR1cm4gZSYmKG8uJGpzcGJNZXNzYWdlSW5zdGFuY2U9dCksb30pLHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbztyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG8sdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOylzd2l0Y2godC5nZXRGaWVsZE51bWJlcigpKXtjYXNlIDE6dmFyIG89dC5yZWFkSW50MzIoKTtlLnNldE1ham9yKG8pO2JyZWFrO2Nhc2UgMjpvPXQucmVhZEludDMyKCksZS5zZXRNaW5vcihvKTticmVhaztjYXNlIDM6bz10LnJlYWRJbnQzMigpLGUuc2V0UGF0Y2gobyk7YnJlYWs7Y2FzZSA0Om89dC5yZWFkU3RyaW5nKCksZS5zZXRQcmVSZWxlYXNlKG8pO2JyZWFrO2Nhc2UgNTpvPXQucmVhZFN0cmluZygpLGUuc2V0QnVpbGQobyk7YnJlYWs7ZGVmYXVsdDp0LnNraXBGaWVsZCgpfXJldHVybiBlfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHIuQmluYXJ5V3JpdGVyO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG89dm9pZCAwOzAhPT0obz1lLmdldE1ham9yKCkpJiZ0LndyaXRlSW50MzIoMSxvKSwwIT09KG89ZS5nZXRNaW5vcigpKSYmdC53cml0ZUludDMyKDIsbyksMCE9PShvPWUuZ2V0UGF0Y2goKSkmJnQud3JpdGVJbnQzMigzLG8pLChvPWUuZ2V0UHJlUmVsZWFzZSgpKS5sZW5ndGg+MCYmdC53cml0ZVN0cmluZyg0LG8pLChvPWUuZ2V0QnVpbGQoKSkubGVuZ3RoPjAmJnQud3JpdGVTdHJpbmcoNSxvKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldE1ham9yPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsMSwwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLnNldE1ham9yPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zSW50RmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuZ2V0TWlub3I9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcywyLDApfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2V0TWlub3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuTWVzc2FnZS5zZXRQcm90bzNJbnRGaWVsZCh0aGlzLDIsZSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS5nZXRQYXRjaD1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDMsMCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLlZlcnNpb25JbmZvLnByb3RvdHlwZS5zZXRQYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsMyxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldFByZVJlbGVhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodGhpcyw0LFwiXCIpfSxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5wcm90b3R5cGUuc2V0UHJlUmVsZWFzZT1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM1N0cmluZ0ZpZWxkKHRoaXMsNCxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLmdldEJ1aWxkPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsNSxcIlwiKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8ucHJvdG90eXBlLnNldEJ1aWxkPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcyw1LGUpfSxyLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnRvT2JqZWN0KGUsdGhpcyl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC50b09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciBvPXt9O3JldHVybiBlJiYoby4kanNwYk1lc3NhZ2VJbnN0YW5jZT10KSxvfSkscHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1JlcXVlc3Q7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIobyx0KX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOyl0LmdldEZpZWxkTnVtYmVyKCksdC5za2lwRmllbGQoKTtyZXR1cm4gZX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LnByb3RvdHlwZS5zZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgci5CaW5hcnlXcml0ZXI7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVxdWVzdC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcj1mdW5jdGlvbihlLHQpe30sci5NZXNzYWdlLkdFTkVSQVRFX1RPX09CSkVDVCYmKHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnRvT2JqZWN0KGUsdGhpcyl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UudG9PYmplY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbyxyPXt2ZXJzaW9uSW5mbzoobz10LmdldFZlcnNpb25JbmZvKCkpJiZwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby50b09iamVjdChlLG8pfTtyZXR1cm4gZSYmKHIuJGpzcGJNZXNzYWdlSW5zdGFuY2U9dCkscn0pLHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHIuQmluYXJ5UmVhZGVyKGUpLG89bmV3IHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2U7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKG8sdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Lm5leHRGaWVsZCgpJiYhdC5pc0VuZEdyb3VwKCk7KWlmKDE9PT10LmdldEZpZWxkTnVtYmVyKCkpe3ZhciBvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbzt0LnJlYWRNZXNzYWdlKG8scHJvdG8uY2Fvc2RiLmluZm8udjEuVmVyc2lvbkluZm8uZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyKSxlLnNldFZlcnNpb25JbmZvKG8pfWVsc2UgdC5za2lwRmllbGQoKTtyZXR1cm4gZX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IHIuQmluYXJ5V3JpdGVyO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsZSksZS5nZXRSZXN1bHRCdWZmZXIoKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcj1mdW5jdGlvbihlLHQpe3ZhciBvO251bGwhPShvPWUuZ2V0VmVyc2lvbkluZm8oKSkmJnQud3JpdGVNZXNzYWdlKDEsbyxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mby5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFZlcnNpb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmdldFZlcnNpb25JbmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQodGhpcyxwcm90by5jYW9zZGIuaW5mby52MS5WZXJzaW9uSW5mbywxKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0VmVyc2lvbkluZm89ZnVuY3Rpb24oZSl7cmV0dXJuIHIuTWVzc2FnZS5zZXRXcmFwcGVyRmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5jbGVhclZlcnNpb25JbmZvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0VmVyc2lvbkluZm8odm9pZCAwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0VmVyc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuaGFzVmVyc2lvbkluZm89ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9ci5NZXNzYWdlLmdldEZpZWxkKHRoaXMsMSl9LHIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1QmJihwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QucHJvdG90eXBlLnRvT2JqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QudG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnRvT2JqZWN0PWZ1bmN0aW9uKGUsdCl7dmFyIG89e307cmV0dXJuIGUmJihvLiRqc3BiTWVzc2FnZUluc3RhbmNlPXQpLG99KSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHIuQmluYXJ5UmVhZGVyKGUpLG89bmV3IHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdDtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihvLHQpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0Lm5leHRGaWVsZCgpJiYhdC5pc0VuZEdyb3VwKCk7KXQuZ2V0RmllbGROdW1iZXIoKSx0LnNraXBGaWVsZCgpO3JldHVybiBlfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1JlcXVlc3QucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbigpe3ZhciBlPW5ldyByLkJpbmFyeVdyaXRlcjtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsZSksZS5nZXRSZXN1bHRCdWZmZXIoKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXF1ZXN0LnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyPWZ1bmN0aW9uKGUsdCl7fSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnJlcGVhdGVkRmllbGRzXz1bMyw1XSxyLk1lc3NhZ2UuR0VORVJBVEVfVE9fT0JKRUNUJiYocHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUudG9PYmplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UudG9PYmplY3QoZSx0aGlzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS50b09iamVjdD1mdW5jdGlvbihlLHQpe3ZhciBvLG49e3JlYWxtOnIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHQsMSxcIlwiKSx1c2VybmFtZTpyLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0LDIsXCJcIikscm9sZXNMaXN0Om51bGw9PShvPXIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHQsMykpP3ZvaWQgMDpvLGV4cGlyZXM6ci5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQodCw0LDApLHBlcm1pc3Npb25zTGlzdDpudWxsPT0obz1yLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZCh0LDUpKT92b2lkIDA6b307cmV0dXJuIGUmJihuLiRqc3BiTWVzc2FnZUluc3RhbmNlPXQpLG59KSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkJpbmFyeVJlYWRlcihlKSxvPW5ldyBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlO3JldHVybiBwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihvLHQpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcj1mdW5jdGlvbihlLHQpe2Zvcig7dC5uZXh0RmllbGQoKSYmIXQuaXNFbmRHcm91cCgpOylzd2l0Y2godC5nZXRGaWVsZE51bWJlcigpKXtjYXNlIDE6dmFyIG89dC5yZWFkU3RyaW5nKCk7ZS5zZXRSZWFsbShvKTticmVhaztjYXNlIDI6bz10LnJlYWRTdHJpbmcoKSxlLnNldFVzZXJuYW1lKG8pO2JyZWFrO2Nhc2UgMzpvPXQucmVhZFN0cmluZygpLGUuYWRkUm9sZXMobyk7YnJlYWs7Y2FzZSA0Om89dC5yZWFkSW50NjQoKSxlLnNldEV4cGlyZXMobyk7YnJlYWs7Y2FzZSA1Om89dC5yZWFkU3RyaW5nKCksZS5hZGRQZXJtaXNzaW9ucyhvKTticmVhaztkZWZhdWx0OnQuc2tpcEZpZWxkKCl9cmV0dXJuIGV9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbigpe3ZhciBlPW5ldyByLkJpbmFyeVdyaXRlcjtyZXR1cm4gcHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLGUpLGUuZ2V0UmVzdWx0QnVmZmVyKCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2Uuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbz12b2lkIDA7KG89ZS5nZXRSZWFsbSgpKS5sZW5ndGg+MCYmdC53cml0ZVN0cmluZygxLG8pLChvPWUuZ2V0VXNlcm5hbWUoKSkubGVuZ3RoPjAmJnQud3JpdGVTdHJpbmcoMixvKSwobz1lLmdldFJvbGVzTGlzdCgpKS5sZW5ndGg+MCYmdC53cml0ZVJlcGVhdGVkU3RyaW5nKDMsbyksMCE9PShvPWUuZ2V0RXhwaXJlcygpKSYmdC53cml0ZUludDY0KDQsbyksKG89ZS5nZXRQZXJtaXNzaW9uc0xpc3QoKSkubGVuZ3RoPjAmJnQud3JpdGVSZXBlYXRlZFN0cmluZyg1LG8pfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRSZWFsbT1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDEsXCJcIil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFJlYWxtPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywxLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRVc2VybmFtZT1mdW5jdGlvbigpe3JldHVybiByLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdCh0aGlzLDIsXCJcIil9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFVzZXJuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0UHJvdG8zU3RyaW5nRmllbGQodGhpcywyLGUpfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRSb2xlc0xpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gci5NZXNzYWdlLmdldFJlcGVhdGVkRmllbGQodGhpcywzKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0Um9sZXNMaXN0PWZ1bmN0aW9uKGUpe3JldHVybiByLk1lc3NhZ2Uuc2V0RmllbGQodGhpcywzLGV8fFtdKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuYWRkUm9sZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRGaWVsZCh0aGlzLDMsZSx0KX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuY2xlYXJSb2xlc0xpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXRSb2xlc0xpc3QoW10pfSxwcm90by5jYW9zZGIuaW5mby52MS5HZXRTZXNzaW9uSW5mb1Jlc3BvbnNlLnByb3RvdHlwZS5nZXRFeHBpcmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRGaWVsZFdpdGhEZWZhdWx0KHRoaXMsNCwwKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuc2V0RXhwaXJlcz1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkKHRoaXMsNCxlKX0scHJvdG8uY2Fvc2RiLmluZm8udjEuR2V0U2Vzc2lvbkluZm9SZXNwb25zZS5wcm90b3R5cGUuZ2V0UGVybWlzc2lvbnNMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKHRoaXMsNSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLnNldFBlcm1pc3Npb25zTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gci5NZXNzYWdlLnNldEZpZWxkKHRoaXMsNSxlfHxbXSl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmFkZFBlcm1pc3Npb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQodGhpcyw1LGUsdCl9LHByb3RvLmNhb3NkYi5pbmZvLnYxLkdldFNlc3Npb25JbmZvUmVzcG9uc2UucHJvdG90eXBlLmNsZWFyUGVybWlzc2lvbnNMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0UGVybWlzc2lvbnNMaXN0KFtdKX0sbi5vYmplY3QuZXh0ZW5kKHQscHJvdG8uY2Fvc2RiLmluZm8udjEpfSwxOTpmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e30sJGpzY29tcC5maW5kSW50ZXJuYWw9ZnVuY3Rpb24oZSx0LG8pe2UgaW5zdGFuY2VvZiBTdHJpbmcmJihlPVN0cmluZyhlKSk7Zm9yKHZhciByPWUubGVuZ3RoLG49MDtuPHI7bisrKXt2YXIgcz1lW25dO2lmKHQuY2FsbChvLHMsbixlKSlyZXR1cm57aTpuLHY6c319cmV0dXJue2k6LTEsdjp2b2lkIDB9fSwkanNjb21wLkFTU1VNRV9FUzU9ITEsJGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMSwkanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExLCRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMSwkanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxvKXtlIT1BcnJheS5wcm90b3R5cGUmJmUhPU9iamVjdC5wcm90b3R5cGUmJihlW3RdPW8udmFsdWUpfSwkanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3c9PT1lP2U6dm9pZCAwIT09X193ZWJwYWNrX3JlcXVpcmVfXy5nJiZudWxsIT1fX3dlYnBhY2tfcmVxdWlyZV9fLmc/X193ZWJwYWNrX3JlcXVpcmVfXy5nOmV9LCRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpLCRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZSx0LG8scil7aWYodCl7Zm9yKG89JGpzY29tcC5nbG9iYWwsZT1lLnNwbGl0KFwiLlwiKSxyPTA7cjxlLmxlbmd0aC0xO3IrKyl7dmFyIG49ZVtyXTtuIGluIG98fChvW25dPXt9KSxvPW9bbl19KHQ9dChyPW9bZT1lW2UubGVuZ3RoLTFdXSkpIT1yJiZudWxsIT10JiYkanNjb21wLmRlZmluZVByb3BlcnR5KG8sZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19LCRqc2NvbXAucG9seWZpbGwoXCJBcnJheS5wcm90b3R5cGUuZmluZEluZGV4XCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3JldHVybiAkanNjb21wLmZpbmRJbnRlcm5hbCh0aGlzLGUsdCkuaX19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzPWZ1bmN0aW9uKGUsdCxvKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgJ3RoaXMnIHZhbHVlIGZvciBTdHJpbmcucHJvdG90eXBlLlwiK28rXCIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWRcIik7aWYodCBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5cIitvK1wiIG11c3Qgbm90IGJlIGEgcmVndWxhciBleHByZXNzaW9uXCIpO3JldHVybiBlK1wiXCJ9LCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3ZhciBvPSRqc2NvbXAuY2hlY2tTdHJpbmdBcmdzKHRoaXMsZSxcImVuZHNXaXRoXCIpO2UrPVwiXCIsdm9pZCAwPT09dCYmKHQ9by5sZW5ndGgpLHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigwfHQsby5sZW5ndGgpKTtmb3IodmFyIHI9ZS5sZW5ndGg7MDxyJiYwPHQ7KWlmKG9bLS10XSE9ZVstLXJdKXJldHVybiExO3JldHVybiAwPj1yfX0pLFwiZXM2XCIsXCJlczNcIiksJGpzY29tcC5wb2x5ZmlsbChcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3JldHVybiAkanNjb21wLmZpbmRJbnRlcm5hbCh0aGlzLGUsdCkudn19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGhcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV8fGZ1bmN0aW9uKGUsdCl7dmFyIG89JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxlLFwic3RhcnRzV2l0aFwiKTtlKz1cIlwiO3ZhciByPW8ubGVuZ3RoLG49ZS5sZW5ndGg7dD1NYXRoLm1heCgwLE1hdGgubWluKDB8dCxvLmxlbmd0aCkpO2Zvcih2YXIgcz0wO3M8biYmdDxyOylpZihvW3QrK10hPWVbcysrXSlyZXR1cm4hMTtyZXR1cm4gcz49bn19KSxcImVzNlwiLFwiZXMzXCIpLCRqc2NvbXAucG9seWZpbGwoXCJTdHJpbmcucHJvdG90eXBlLnJlcGVhdFwiLChmdW5jdGlvbihlKXtyZXR1cm4gZXx8ZnVuY3Rpb24oZSl7dmFyIHQ9JGpzY29tcC5jaGVja1N0cmluZ0FyZ3ModGhpcyxudWxsLFwicmVwZWF0XCIpO2lmKDA+ZXx8MTM0MjE3NzI3OTxlKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCBjb3VudCB2YWx1ZVwiKTtlfD0wO2Zvcih2YXIgbz1cIlwiO2U7KTEmZSYmKG8rPXQpLChlPj4+PTEpJiYodCs9dCk7cmV0dXJuIG99fSksXCJlczZcIixcImVzM1wiKTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmLGdvb2cuaXNEZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9LGdvb2cuaXNTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9LGdvb2cuaXNCb29sZWFuPWZ1bmN0aW9uKGUpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgZX0sZ29vZy5pc051bWJlcj1mdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZX0sZ29vZy5leHBvcnRQYXRoXz1mdW5jdGlvbihlLHQsbyl7ZT1lLnNwbGl0KFwiLlwiKSxvPW98fGdvb2cuZ2xvYmFsLGVbMF1pbiBvfHx2b2lkIDA9PT1vLmV4ZWNTY3JpcHR8fG8uZXhlY1NjcmlwdChcInZhciBcIitlWzBdKTtmb3IodmFyIHI7ZS5sZW5ndGgmJihyPWUuc2hpZnQoKSk7KSFlLmxlbmd0aCYmZ29vZy5pc0RlZih0KT9vW3JdPXQ6bz1vW3JdJiZvW3JdIT09T2JqZWN0LnByb3RvdHlwZVtyXT9vW3JdOm9bcl09e319LGdvb2cuZGVmaW5lPWZ1bmN0aW9uKGUsdCl7aWYoIUNPTVBJTEVEKXt2YXIgbz1nb29nLmdsb2JhbC5DTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyxyPWdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUztvJiZ2b2lkIDA9PT1vLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyxlKT90PW9bZV06ciYmdm9pZCAwPT09ci5ub2RlVHlwZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsZSkmJih0PXJbZV0pfXJldHVybiB0fSxnb29nLkZFQVRVUkVTRVRfWUVBUj0yMDEyLGdvb2cuREVCVUc9ITAsZ29vZy5MT0NBTEU9XCJlblwiLGdvb2cuVFJVU1RFRF9TSVRFPSEwLGdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRT0hMSxnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRyxnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITEsZ29vZy5wcm92aWRlPWZ1bmN0aW9uKGUpe2lmKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSl0aHJvdyBFcnJvcihcImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuXCIpO2lmKCFDT01QSUxFRCYmZ29vZy5pc1Byb3ZpZGVkXyhlKSl0aHJvdyBFcnJvcignTmFtZXNwYWNlIFwiJytlKydcIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlKX0sZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGUsdCl7aWYoIUNPTVBJTEVEKXtkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2VdO2Zvcih2YXIgbz1lOyhvPW8uc3Vic3RyaW5nKDAsby5sYXN0SW5kZXhPZihcIi5cIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG8pOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bb109ITB9Z29vZy5leHBvcnRQYXRoXyhlLHQpfSxnb29nLmdldFNjcmlwdE5vbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlIT1nb29nLmdsb2JhbD9nb29nLmdldFNjcmlwdE5vbmNlXyhlLmRvY3VtZW50KToobnVsbD09PWdvb2cuY3NwTm9uY2VfJiYoZ29vZy5jc3BOb25jZV89Z29vZy5nZXRTY3JpcHROb25jZV8oZ29vZy5nbG9iYWwuZG9jdW1lbnQpKSxnb29nLmNzcE5vbmNlXyl9LGdvb2cuTk9OQ0VfUEFUVEVSTl89L15bXFx3Ky9fLV0rWz1dezAsMn0kLyxnb29nLmNzcE5vbmNlXz1udWxsLGdvb2cuZ2V0U2NyaXB0Tm9uY2VfPWZ1bmN0aW9uKGUpe3JldHVybihlPWUucXVlcnlTZWxlY3RvciYmZS5xdWVyeVNlbGVjdG9yKFwic2NyaXB0W25vbmNlXVwiKSkmJihlPWUubm9uY2V8fGUuZ2V0QXR0cmlidXRlKFwibm9uY2VcIikpJiZnb29nLk5PTkNFX1BBVFRFUk5fLnRlc3QoZSk/ZTpcIlwifSxnb29nLlZBTElEX01PRFVMRV9SRV89L15bYS16QS1aXyRdW2EtekEtWjAtOS5fJF0qJC8sZ29vZy5tb2R1bGU9ZnVuY3Rpb24oZSl7aWYoIWdvb2cuaXNTdHJpbmcoZSl8fCFlfHwtMT09ZS5zZWFyY2goZ29vZy5WQUxJRF9NT0RVTEVfUkVfKSl0aHJvdyBFcnJvcihcIkludmFsaWQgbW9kdWxlIGlkZW50aWZpZXJcIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJNb2R1bGUgXCIrZStcIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS5cIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl0aHJvdyBFcnJvcihcImdvb2cubW9kdWxlIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuXCIpO2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU9ZSwhQ09NUElMRUQpe2lmKGdvb2cuaXNQcm92aWRlZF8oZSkpdGhyb3cgRXJyb3IoJ05hbWVzcGFjZSBcIicrZSsnXCIgYWxyZWFkeSBkZWNsYXJlZC4nKTtkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2VdfX0sZ29vZy5tb2R1bGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oZSl9LGdvb2cubW9kdWxlLmdldEludGVybmFsXz1mdW5jdGlvbihlKXtpZighQ09NUElMRUQpe2lmKGUgaW4gZ29vZy5sb2FkZWRNb2R1bGVzXylyZXR1cm4gZ29vZy5sb2FkZWRNb2R1bGVzX1tlXS5leHBvcnRzO2lmKCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZV0pcmV0dXJuIG51bGwhPShlPWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGUpKT9lOm51bGx9cmV0dXJuIG51bGx9LGdvb2cuTW9kdWxlVHlwZT17RVM2OlwiZXM2XCIsR09PRzpcImdvb2dcIn0sZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89bnVsbCxnb29nLmlzSW5Nb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCl8fGdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKX0sZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4hIWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlPT1nb29nLk1vZHVsZVR5cGUuR09PR30sZ29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlPT1nb29nLk1vZHVsZVR5cGUuRVM2KXJldHVybiEwO3ZhciBlPWdvb2cuZ2xvYmFsLiRqc2NvbXA7cmV0dXJuISFlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmdldEN1cnJlbnRNb2R1bGVQYXRoJiYhIWUuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKX0sZ29vZy5tb2R1bGUuZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZT1mdW5jdGlvbigpe2lmKCFDT01QSUxFRCYmIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGVcIik7aWYoIUNPTVBJTEVEJiYhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl0aHJvdyBFcnJvcihcImdvb2cubW9kdWxlIG11c3QgYmUgY2FsbGVkIHByaW9yIHRvIGdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UuXCIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9LGdvb2cuZGVjbGFyZU1vZHVsZUlkPWZ1bmN0aW9uKGUpe2lmKCFDT01QSUxFRCl7aWYoIWdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKSl0aHJvdyBFcnJvcihcImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlXCIpO2lmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfJiZnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKFwiZ29vZy5kZWNsYXJlTW9kdWxlSWQgbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UgcGVyIG1vZHVsZS5cIik7aWYoZSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgXCInK2UrJ1wiIGFscmVhZHkgZXhpc3RzLicpfWlmKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfKWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU9ZTtlbHNle3ZhciB0PWdvb2cuZ2xvYmFsLiRqc2NvbXA7aWYoIXR8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSBcIicrZSsnXCIgaGFzIGJlZW4gbG9hZGVkIGluY29ycmVjdGx5LicpO3Q9dC5yZXF1aXJlKHQuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKSksZ29vZy5sb2FkZWRNb2R1bGVzX1tlXT17ZXhwb3J0czp0LHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkVTNixtb2R1bGVJZDplfX19LGdvb2cuc2V0VGVzdE9ubHk9ZnVuY3Rpb24oZSl7aWYoZ29vZy5ESVNBTExPV19URVNUX09OTFlfQ09ERSl0aHJvdyBlPWV8fFwiXCIsRXJyb3IoXCJJbXBvcnRpbmcgdGVzdC1vbmx5IGNvZGUgaW50byBub24tZGVidWcgZW52aXJvbm1lbnRcIisoZT9cIjogXCIrZTpcIi5cIikpfSxnb29nLmZvcndhcmREZWNsYXJlPWZ1bmN0aW9uKGUpe30sQ09NUElMRUR8fChnb29nLmlzUHJvdmlkZWRfPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluIGdvb2cubG9hZGVkTW9kdWxlc198fCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZV0mJmdvb2cuaXNEZWZBbmROb3ROdWxsKGdvb2cuZ2V0T2JqZWN0QnlOYW1lKGUpKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXtcImdvb2cubW9kdWxlXCI6ITB9KSxnb29nLmdldE9iamVjdEJ5TmFtZT1mdW5jdGlvbihlLHQpe2U9ZS5zcGxpdChcIi5cIiksdD10fHxnb29nLmdsb2JhbDtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZih0PXRbZVtvXV0sIWdvb2cuaXNEZWZBbmROb3ROdWxsKHQpKXJldHVybiBudWxsO3JldHVybiB0fSxnb29nLmdsb2JhbGl6ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0PXR8fGdvb2cuZ2xvYmFsLGUpdFtvXT1lW29dfSxnb29nLmFkZERlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scil7IUNPTVBJTEVEJiZnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEJiZnb29nLmRlYnVnTG9hZGVyXy5hZGREZXBlbmRlbmN5KGUsdCxvLHIpfSxnb29nLkVOQUJMRV9ERUJVR19MT0FERVI9ITAsZ29vZy5sb2dUb0NvbnNvbGVfPWZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNvbnNvbGUmJmdvb2cuZ2xvYmFsLmNvbnNvbGUuZXJyb3IoZSl9LGdvb2cucmVxdWlyZT1mdW5jdGlvbihlKXtpZighQ09NUElMRUQpe2lmKGdvb2cuRU5BQkxFX0RFQlVHX0xPQURFUiYmZ29vZy5kZWJ1Z0xvYWRlcl8ucmVxdWVzdGVkKGUpLGdvb2cuaXNQcm92aWRlZF8oZSkpe2lmKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSlyZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKGUpfWVsc2UgaWYoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKXt2YXIgdD1nb29nLm1vZHVsZUxvYWRlclN0YXRlXztnb29nLm1vZHVsZUxvYWRlclN0YXRlXz1udWxsO3RyeXtnb29nLmRlYnVnTG9hZGVyXy5sb2FkXyhlKX1maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPXR9fXJldHVybiBudWxsfX0sZ29vZy5yZXF1aXJlVHlwZT1mdW5jdGlvbihlKXtyZXR1cm57fX0sZ29vZy5iYXNlUGF0aD1cIlwiLGdvb2cubnVsbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7fSxnb29nLmFic3RyYWN0TWV0aG9kPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJ1bmltcGxlbWVudGVkIGFic3RyYWN0IG1ldGhvZFwiKX0sZ29vZy5hZGRTaW5nbGV0b25HZXR0ZXI9ZnVuY3Rpb24oZSl7ZS5pbnN0YW5jZV89dm9pZCAwLGUuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gZS5pbnN0YW5jZV8/ZS5pbnN0YW5jZV86KGdvb2cuREVCVUcmJihnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfW2dvb2cuaW5zdGFudGlhdGVkU2luZ2xldG9uc18ubGVuZ3RoXT1lKSxlLmluc3RhbmNlXz1uZXcgZSl9fSxnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfPVtdLGdvb2cuTE9BRF9NT0RVTEVfVVNJTkdfRVZBTD0hMCxnb29nLlNFQUxfTU9EVUxFX0VYUE9SVFM9Z29vZy5ERUJVRyxnb29nLmxvYWRlZE1vZHVsZXNfPXt9LGdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQ9IUNPTVBJTEVEJiZnb29nLkVOQUJMRV9ERUJVR19MT0FERVIsZ29vZy5UUkFOU1BJTEU9XCJkZXRlY3RcIixnb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ9ITEsZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0U9XCJcIixnb29nLlRSQU5TUElMRVI9XCJ0cmFuc3BpbGUuanNcIixnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbCxnb29nLnVzZVNhZmFyaTEwV29ya2Fyb3VuZD1mdW5jdGlvbigpe2lmKG51bGw9PWdvb2cuaGFzQmFkTGV0U2NvcGluZyl7dHJ5e3ZhciBhPSFldmFsKCdcInVzZSBzdHJpY3RcIjtsZXQgeCA9IDE7IGZ1bmN0aW9uIGYoKSB7IHJldHVybiB0eXBlb2YgeDsgfTtmKCkgPT0gXCJudW1iZXJcIjsnKX1jYXRjaChlKXthPSExfWdvb2cuaGFzQmFkTGV0U2NvcGluZz1hfXJldHVybiBnb29nLmhhc0JhZExldFNjb3Bpbmd9LGdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1Zz1mdW5jdGlvbihlKXtyZXR1cm5cIihmdW5jdGlvbigpe1wiK2UrXCJcXG47fSkoKTtcXG5cIn0sZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGUpe3ZhciB0PWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZTpcIlwiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITEsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PR30sZ29vZy5pc0Z1bmN0aW9uKGUpKXZhciBvPWUuY2FsbCh2b2lkIDAse30pO2Vsc2V7aWYoIWdvb2cuaXNTdHJpbmcoZSkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIG1vZHVsZSBkZWZpbml0aW9uXCIpO2dvb2cudXNlU2FmYXJpMTBXb3JrYXJvdW5kKCkmJihlPWdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1ZyhlKSksbz1nb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXy5jYWxsKHZvaWQgMCxlKX12YXIgcj1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lO2lmKCFnb29nLmlzU3RyaW5nKHIpfHwhcil0aHJvdyBFcnJvcignSW52YWxpZCBtb2R1bGUgbmFtZSBcIicrcisnXCInKTtnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhyLG8pOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmT2JqZWN0LnNlYWwmJlwib2JqZWN0XCI9PXR5cGVvZiBvJiZudWxsIT1vJiZPYmplY3Quc2VhbChvKSxnb29nLmxvYWRlZE1vZHVsZXNfW3JdPXtleHBvcnRzOm8sdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfX1maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPXR9fSxnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhKXtyZXR1cm4gZXZhbChhKSx7fX0sZ29vZy5ub3JtYWxpemVQYXRoXz1mdW5jdGlvbihlKXtlPWUuc3BsaXQoXCIvXCIpO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7KVwiLlwiPT1lW3RdP2Uuc3BsaWNlKHQsMSk6dCYmXCIuLlwiPT1lW3RdJiZlW3QtMV0mJlwiLi5cIiE9ZVt0LTFdP2Uuc3BsaWNlKC0tdCwyKTp0Kys7cmV0dXJuIGUuam9pbihcIi9cIil9LGdvb2cubG9hZEZpbGVTeW5jXz1mdW5jdGlvbihlKXtpZihnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKXJldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKGUpO3RyeXt2YXIgdD1uZXcgZ29vZy5nbG9iYWwuWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbihcImdldFwiLGUsITEpLHQuc2VuZCgpLDA9PXQuc3RhdHVzfHwyMDA9PXQuc3RhdHVzP3QucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fSxnb29nLnRyYW5zcGlsZV89ZnVuY3Rpb24oZSx0LG8pe3ZhciByPWdvb2cuZ2xvYmFsLiRqc2NvbXA7cnx8KGdvb2cuZ2xvYmFsLiRqc2NvbXA9cj17fSk7dmFyIG49ci50cmFuc3BpbGU7aWYoIW4pe3ZhciBzPWdvb2cuYmFzZVBhdGgrZ29vZy5UUkFOU1BJTEVSLGk9Z29vZy5sb2FkRmlsZVN5bmNfKHMpO2lmKGkpe2lmKGZ1bmN0aW9uKCl7KDAsZXZhbCkoaStcIlxcbi8vIyBzb3VyY2VVUkw9XCIrcyl9LmNhbGwoZ29vZy5nbG9iYWwpLGdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQmJmdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQuJGpzY29tcCYmIWdvb2cuZ2xvYmFsLiRnd3RFeHBvcnQuJGpzY29tcC50cmFuc3BpbGUpdGhyb3cgRXJyb3IoJ1RoZSB0cmFuc3BpbGVyIGRpZCBub3QgcHJvcGVybHkgZXhwb3J0IHRoZSBcInRyYW5zcGlsZVwiIG1ldGhvZC4gJGd3dEV4cG9ydDogJytKU09OLnN0cmluZ2lmeShnb29nLmdsb2JhbC4kZ3d0RXhwb3J0KSk7Z29vZy5nbG9iYWwuJGpzY29tcC50cmFuc3BpbGU9Z29vZy5nbG9iYWwuJGd3dEV4cG9ydC4kanNjb21wLnRyYW5zcGlsZSxuPShyPWdvb2cuZ2xvYmFsLiRqc2NvbXApLnRyYW5zcGlsZX19cmV0dXJuIG58fChuPXIudHJhbnNwaWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cubG9nVG9Db25zb2xlXyh0K1wiIHJlcXVpcmVzIHRyYW5zcGlsYXRpb24gYnV0IG5vIHRyYW5zcGlsZXIgd2FzIGZvdW5kLlwiKSxlfSksbihlLHQsbyl9LGdvb2cudHlwZU9mPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO2lmKFwib2JqZWN0XCI9PXQpe2lmKCFlKXJldHVyblwibnVsbFwiO2lmKGUgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm5cImFycmF5XCI7aWYoZSBpbnN0YW5jZW9mIE9iamVjdClyZXR1cm4gdDt2YXIgbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7aWYoXCJbb2JqZWN0IFdpbmRvd11cIj09bylyZXR1cm5cIm9iamVjdFwiO2lmKFwiW29iamVjdCBBcnJheV1cIj09b3x8XCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoJiZ2b2lkIDAhPT1lLnNwbGljZSYmdm9pZCAwIT09ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSYmIWUucHJvcGVydHlJc0VudW1lcmFibGUoXCJzcGxpY2VcIikpcmV0dXJuXCJhcnJheVwiO2lmKFwiW29iamVjdCBGdW5jdGlvbl1cIj09b3x8dm9pZCAwIT09ZS5jYWxsJiZ2b2lkIDAhPT1lLnByb3BlcnR5SXNFbnVtZXJhYmxlJiYhZS5wcm9wZXJ0eUlzRW51bWVyYWJsZShcImNhbGxcIikpcmV0dXJuXCJmdW5jdGlvblwifWVsc2UgaWYoXCJmdW5jdGlvblwiPT10JiZ2b2lkIDA9PT1lLmNhbGwpcmV0dXJuXCJvYmplY3RcIjtyZXR1cm4gdH0sZ29vZy5pc051bGw9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfSxnb29nLmlzRGVmQW5kTm90TnVsbD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0sZ29vZy5pc0FycmF5PWZ1bmN0aW9uKGUpe3JldHVyblwiYXJyYXlcIj09Z29vZy50eXBlT2YoZSl9LGdvb2cuaXNBcnJheUxpa2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Z29vZy50eXBlT2YoZSk7cmV0dXJuXCJhcnJheVwiPT10fHxcIm9iamVjdFwiPT10JiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGh9LGdvb2cuaXNEYXRlTGlrZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pc09iamVjdChlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5nZXRGdWxsWWVhcn0sZ29vZy5pc0Z1bmN0aW9uPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09Z29vZy50eXBlT2YoZSl9LGdvb2cuaXNPYmplY3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuXCJvYmplY3RcIj09dCYmbnVsbCE9ZXx8XCJmdW5jdGlvblwiPT10fSxnb29nLmdldFVpZD1mdW5jdGlvbihlKXtyZXR1cm4gZVtnb29nLlVJRF9QUk9QRVJUWV9dfHwoZVtnb29nLlVJRF9QUk9QRVJUWV9dPSsrZ29vZy51aWRDb3VudGVyXyl9LGdvb2cuaGFzVWlkPWZ1bmN0aW9uKGUpe3JldHVybiEhZVtnb29nLlVJRF9QUk9QRVJUWV9dfSxnb29nLnJlbW92ZVVpZD1mdW5jdGlvbihlKXtudWxsIT09ZSYmXCJyZW1vdmVBdHRyaWJ1dGVcImluIGUmJmUucmVtb3ZlQXR0cmlidXRlKGdvb2cuVUlEX1BST1BFUlRZXyk7dHJ5e2RlbGV0ZSBlW2dvb2cuVUlEX1BST1BFUlRZX119Y2F0Y2goZSl7fX0sZ29vZy5VSURfUFJPUEVSVFlfPVwiY2xvc3VyZV91aWRfXCIrKDFlOSpNYXRoLnJhbmRvbSgpPj4+MCksZ29vZy51aWRDb3VudGVyXz0wLGdvb2cuZ2V0SGFzaENvZGU9Z29vZy5nZXRVaWQsZ29vZy5yZW1vdmVIYXNoQ29kZT1nb29nLnJlbW92ZVVpZCxnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGUpe3ZhciB0PWdvb2cudHlwZU9mKGUpO2lmKFwib2JqZWN0XCI9PXR8fFwiYXJyYXlcIj09dCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jbG9uZSlyZXR1cm4gZS5jbG9uZSgpO2Zvcih2YXIgbyBpbiB0PVwiYXJyYXlcIj09dD9bXTp7fSxlKXRbb109Z29vZy5jbG9uZU9iamVjdChlW29dKTtyZXR1cm4gdH1yZXR1cm4gZX0sZ29vZy5iaW5kTmF0aXZlXz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGUuY2FsbC5hcHBseShlLmJpbmQsYXJndW1lbnRzKX0sZ29vZy5iaW5kSnNfPWZ1bmN0aW9uKGUsdCxvKXtpZighZSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KG8sciksZS5hcHBseSh0LG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fSxnb29nLmJpbmQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCYmLTEhPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLnRvU3RyaW5nKCkuaW5kZXhPZihcIm5hdGl2ZSBjb2RlXCIpP2dvb2cuYmluZD1nb29nLmJpbmROYXRpdmVfOmdvb2cuYmluZD1nb29nLmJpbmRKc18sZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ29vZy5wYXJ0aWFsPWZ1bmN0aW9uKGUsdCl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW8uc2xpY2UoKTtyZXR1cm4gdC5wdXNoLmFwcGx5KHQsYXJndW1lbnRzKSxlLmFwcGx5KHRoaXMsdCl9fSxnb29nLm1peGluPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvIGluIHQpZVtvXT10W29dfSxnb29nLm5vdz1nb29nLlRSVVNURURfU0lURSYmRGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxnb29nLmdsb2JhbEV2YWw9ZnVuY3Rpb24oZSl7aWYoZ29vZy5nbG9iYWwuZXhlY1NjcmlwdClnb29nLmdsb2JhbC5leGVjU2NyaXB0KGUsXCJKYXZhU2NyaXB0XCIpO2Vsc2V7aWYoIWdvb2cuZ2xvYmFsLmV2YWwpdGhyb3cgRXJyb3IoXCJnb29nLmdsb2JhbEV2YWwgbm90IGF2YWlsYWJsZVwiKTtpZihudWxsPT1nb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfKXt0cnl7Z29vZy5nbG9iYWwuZXZhbChcInZhciBfZXZhbFRlc3RfID0gMTtcIil9Y2F0Y2goZSl7fWlmKHZvaWQgMCE9PWdvb2cuZ2xvYmFsLl9ldmFsVGVzdF8pe3RyeXtkZWxldGUgZ29vZy5nbG9iYWwuX2V2YWxUZXN0X31jYXRjaChlKXt9Z29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXz0hMH1lbHNlIGdvb2cuZXZhbFdvcmtzRm9yR2xvYmFsc189ITF9aWYoZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXylnb29nLmdsb2JhbC5ldmFsKGUpO2Vsc2V7dmFyIHQ9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbz10LmNyZWF0ZUVsZW1lbnQoXCJTQ1JJUFRcIik7by50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIsby5kZWZlcj0hMSxvLmFwcGVuZENoaWxkKHQuY3JlYXRlVGV4dE5vZGUoZSkpLHQuaGVhZC5hcHBlbmRDaGlsZChvKSx0LmhlYWQucmVtb3ZlQ2hpbGQobyl9fX0sZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXz1udWxsLGdvb2cuZ2V0Q3NzTmFtZT1mdW5jdGlvbihlLHQpe2lmKFwiLlwiPT1TdHJpbmcoZSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoIFwiLlwiLiBZb3UgcGFzc2VkOiAnK2UpO3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmNzc05hbWVNYXBwaW5nX1tlXXx8ZX0scj1mdW5jdGlvbihlKXtlPWUuc3BsaXQoXCItXCIpO2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDtyKyspdC5wdXNoKG8oZVtyXSkpO3JldHVybiB0LmpvaW4oXCItXCIpfTtyZXR1cm4gcj1nb29nLmNzc05hbWVNYXBwaW5nXz9cIkJZX1dIT0xFXCI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/bzpyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxlPXQ/ZStcIi1cIityKHQpOnIoZSksZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4/Z29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4oZSk6ZX0sZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihlLHQpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWUsZ29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz10fSwhQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyksZ29vZy5nZXRNc2c9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBvJiZvLmh0bWwmJihlPWUucmVwbGFjZSgvPC9nLFwiJmx0O1wiKSksdCYmKGU9ZS5yZXBsYWNlKC9cXHtcXCQoW159XSspfS9nLChmdW5jdGlvbihlLG8pe3JldHVybiBudWxsIT10JiZvIGluIHQ/dFtvXTplfSkpKSxlfSxnb29nLmdldE1zZ1dpdGhGYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiBlfSxnb29nLmV4cG9ydFN5bWJvbD1mdW5jdGlvbihlLHQsbyl7Z29vZy5leHBvcnRQYXRoXyhlLHQsbyl9LGdvb2cuZXhwb3J0UHJvcGVydHk9ZnVuY3Rpb24oZSx0LG8pe2VbdF09b30sZ29vZy5pbmhlcml0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5zdXBlckNsYXNzXz10LnByb3RvdHlwZSxlLnByb3RvdHlwZT1uZXcgbyxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuYmFzZT1mdW5jdGlvbihlLG8scil7Zm9yKHZhciBuPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMikscz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspbltzLTJdPWFyZ3VtZW50c1tzXTtyZXR1cm4gdC5wcm90b3R5cGVbb10uYXBwbHkoZSxuKX19LGdvb2cuYmFzZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9YXJndW1lbnRzLmNhbGxlZS5jYWxsZXI7aWYoZ29vZy5TVFJJQ1RfTU9ERV9DT01QQVRJQkxFfHxnb29nLkRFQlVHJiYhcil0aHJvdyBFcnJvcihcImFyZ3VtZW50cy5jYWxsZXIgbm90IGRlZmluZWQuICBnb29nLmJhc2UoKSBjYW5ub3QgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlIGNvZGUuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtQ1wiKTtpZih2b2lkIDAhPT1yLnN1cGVyQ2xhc3NfKXtmb3IodmFyIG49QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKyluW3MtMV09YXJndW1lbnRzW3NdO3JldHVybiByLnN1cGVyQ2xhc3NfLmNvbnN0cnVjdG9yLmFwcGx5KGUsbil9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQmJlwic3ltYm9sXCIhPXR5cGVvZiB0KXRocm93IEVycm9yKFwibWV0aG9kIG5hbWVzIHByb3ZpZGVkIHRvIGdvb2cuYmFzZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgc3ltYm9sXCIpO2ZvcihuPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMikscz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspbltzLTJdPWFyZ3VtZW50c1tzXTtzPSExO2Zvcih2YXIgaT1lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtpO2k9T2JqZWN0LmdldFByb3RvdHlwZU9mKGkpKWlmKGlbdF09PT1yKXM9ITA7ZWxzZSBpZihzKXJldHVybiBpW3RdLmFwcGx5KGUsbik7aWYoZVt0XT09PXIpcmV0dXJuIGUuY29uc3RydWN0b3IucHJvdG90eXBlW3RdLmFwcGx5KGUsbik7dGhyb3cgRXJyb3IoXCJnb29nLmJhc2UgY2FsbGVkIGZyb20gYSBtZXRob2Qgb2Ygb25lIG5hbWUgdG8gYSBtZXRob2Qgb2YgYSBkaWZmZXJlbnQgbmFtZVwiKX0sZ29vZy5zY29wZT1mdW5jdGlvbihlKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoXCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLlwiKTtlLmNhbGwoZ29vZy5nbG9iYWwpfSxDT01QSUxFRHx8KGdvb2cuZ2xvYmFsLkNPTVBJTEVEPUNPTVBJTEVEKSxnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG89dC5jb25zdHJ1Y3RvcixyPXQuc3RhdGljcztyZXR1cm4gbyYmbyE9T2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcnx8KG89ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcImNhbm5vdCBpbnN0YW50aWF0ZSBhbiBpbnRlcmZhY2UgKG5vIGNvbnN0cnVjdG9yIGRlZmluZWQpLlwiKX0pLG89Z29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfKG8sZSksZSYmZ29vZy5pbmhlcml0cyhvLGUpLGRlbGV0ZSB0LmNvbnN0cnVjdG9yLGRlbGV0ZSB0LnN0YXRpY3MsZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKG8ucHJvdG90eXBlLHQpLG51bGwhPXImJihyIGluc3RhbmNlb2YgRnVuY3Rpb24/cihvKTpnb29nLmRlZmluZUNsYXNzLmFwcGx5UHJvcGVydGllc18obyxyKSksb30sZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUz1nb29nLkRFQlVHLGdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihlLHQpe2lmKCFnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTKXJldHVybiBlO3ZhciBvPSFnb29nLmRlZmluZUNsYXNzLmlzVW5zZWFsYWJsZV8odCkscj1mdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0W2dvb2cuVUlEX1BST1BFUlRZX109dFtnb29nLlVJRF9QUk9QRVJUWV9dLHRoaXMuY29uc3RydWN0b3I9PT1yJiZvJiZPYmplY3Quc2VhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZPYmplY3Quc2VhbCh0KSx0fTtyZXR1cm4gcn0sZ29vZy5kZWZpbmVDbGFzcy5pc1Vuc2VhbGFibGVfPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLnByb3RvdHlwZSYmZS5wcm90b3R5cGVbZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZX119LGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfPVwiY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mXCIuc3BsaXQoXCIgXCIpLGdvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtmb3IodmFyIHI9MDtyPGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfLmxlbmd0aDtyKyspbz1nb29nLmRlZmluZUNsYXNzLk9CSkVDVF9QUk9UT1RZUEVfRklFTERTX1tyXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSl9LGdvb2cudGFnVW5zZWFsYWJsZUNsYXNzPWZ1bmN0aW9uKGUpeyFDT01QSUxFRCYmZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUyYmKGUucHJvdG90eXBlW2dvb2cuVU5TRUFMQUJMRV9DT05TVFJVQ1RPUl9QUk9QRVJUWV9dPSEwKX0sZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZXz1cImdvb2dfZGVmaW5lQ2xhc3NfbGVnYWN5X3Vuc2VhbGFibGVcIiwhQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmluSHRtbERvY3VtZW50Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBudWxsIT1lJiZcIndyaXRlXCJpbiBlfSxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBlLmF0dGFjaEV2ZW50P1wiY29tcGxldGVcIiE9ZS5yZWFkeVN0YXRlOlwibG9hZGluZ1wiPT1lLnJlYWR5U3RhdGV9LGdvb2cuZmluZEJhc2VQYXRoXz1mdW5jdGlvbigpe2lmKGdvb2cuaXNEZWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEgpJiZnb29nLmlzU3RyaW5nKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIKSlnb29nLmJhc2VQYXRoPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGU9Z29vZy5nbG9iYWwuZG9jdW1lbnQsdD1lLmN1cnJlbnRTY3JpcHQ7Zm9yKHQ9KGU9dD9bdF06ZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIlNDUklQVFwiKSkubGVuZ3RoLTE7MDw9dDstLXQpe3ZhciBvPWVbdF0uc3JjLHI9by5sYXN0SW5kZXhPZihcIj9cIik7aWYocj0tMT09cj9vLmxlbmd0aDpyLFwiYmFzZS5qc1wiPT1vLnN1YnN0cihyLTcsNykpe2dvb2cuYmFzZVBhdGg9by5zdWJzdHIoMCxyLTcpO2JyZWFrfX19fSxnb29nLmZpbmRCYXNlUGF0aF8oKSxnb29nLlRyYW5zcGlsZXI9ZnVuY3Rpb24oKXt0aGlzLnJlcXVpcmVzVHJhbnNwaWxhdGlvbl89bnVsbCx0aGlzLnRyYW5zcGlsYXRpb25UYXJnZXRfPWdvb2cuVFJBTlNQSUxFX1RPX0xBTkdVQUdFfSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl89ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKHQsbyl7ZT9kW3RdPSEwOm8oKT8oYz10LGRbdF09ITEpOmU9ZFt0XT0hMH1mdW5jdGlvbiBiKGEpe3RyeXtyZXR1cm4hIWV2YWwoYSl9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciBjPVwiZXMzXCIsZD17ZXMzOiExfSxlPSExLGY9Z29vZy5nbG9iYWwubmF2aWdhdG9yJiZnb29nLmdsb2JhbC5uYXZpZ2F0b3IudXNlckFnZW50P2dvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtyZXR1cm4gYShcImVzNVwiLChmdW5jdGlvbigpe3JldHVybiBiKFwiWzEsXS5sZW5ndGg9PTFcIil9KSksYShcImVzNlwiLChmdW5jdGlvbigpe3JldHVybiFmLm1hdGNoKC9FZGdlXFwvKFxcZCspKFxcLlxcZCkqL2kpJiZiKCcoKCk9PntcInVzZSBzdHJpY3RcIjtjbGFzcyBYe2NvbnN0cnVjdG9yKCl7aWYobmV3LnRhcmdldCE9U3RyaW5nKXRocm93IDE7dGhpcy54PTQyfX1sZXQgcT1SZWZsZWN0LmNvbnN0cnVjdChYLFtdLFN0cmluZyk7aWYocS54IT00Mnx8IShxIGluc3RhbmNlb2YgU3RyaW5nKSl0aHJvdyAxO2Zvcihjb25zdCBhIG9mWzIsM10pe2lmKGE9PTIpY29udGludWU7ZnVuY3Rpb24gZih6PXthfSl7bGV0IGE9MDtyZXR1cm4gei5hfXtmdW5jdGlvbiBmKCl7cmV0dXJuIDA7fX1yZXR1cm4gZigpPT0zfX0pKCknKX0pKSxhKFwiZXM3XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGIoXCIyICoqIDIgPT0gNFwiKX0pKSxhKFwiZXM4XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGIoXCJhc3luYyAoKSA9PiAxLCB0cnVlXCIpfSkpLGEoXCJlczlcIiwoZnVuY3Rpb24oKXtyZXR1cm4gYihcIih7Li4ucmVzdH0gPSB7fSksIHRydWVcIil9KSksYShcImVzX25leHRcIiwoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKSx7dGFyZ2V0OmMsbWFwOmR9fSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLm5lZWRzVHJhbnNwaWxlPWZ1bmN0aW9uKGUsdCl7aWYoXCJhbHdheXNcIj09Z29vZy5UUkFOU1BJTEUpcmV0dXJuITA7aWYoXCJuZXZlclwiPT1nb29nLlRSQU5TUElMRSlyZXR1cm4hMTtpZighdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fKXt2YXIgbz10aGlzLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl8oKTt0aGlzLnJlcXVpcmVzVHJhbnNwaWxhdGlvbl89by5tYXAsdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0Xz10aGlzLnRyYW5zcGlsYXRpb25UYXJnZXRffHxvLnRhcmdldH1pZihlIGluIHRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uXylyZXR1cm4hIXRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uX1tlXXx8ISghZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8XCJlczZcIiE9dHx8XCJub01vZHVsZVwiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSk7dGhyb3cgRXJyb3IoXCJVbmtub3duIGxhbmd1YWdlIG1vZGU6IFwiK2UpfSxnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLnRyYW5zcGlsZT1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLnRyYW5zcGlsZV8oZSx0LHRoaXMudHJhbnNwaWxhdGlvblRhcmdldF8pfSxnb29nLnRyYW5zcGlsZXJfPW5ldyBnb29nLlRyYW5zcGlsZXIsZ29vZy5wcm90ZWN0U2NyaXB0VGFnXz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC88XFwvKFNDUklQVCkvZ2ksXCJcXFxceDNjLyQxXCIpfSxnb29nLkRlYnVnTG9hZGVyXz1mdW5jdGlvbigpe3RoaXMuZGVwZW5kZW5jaWVzXz17fSx0aGlzLmlkVG9QYXRoXz17fSx0aGlzLndyaXR0ZW5fPXt9LHRoaXMubG9hZGluZ0RlcHNfPVtdLHRoaXMuZGVwc1RvTG9hZF89W10sdGhpcy5wYXVzZWRfPSExLHRoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkoZ29vZy50cmFuc3BpbGVyXyksdGhpcy5kZWZlcnJlZENhbGxiYWNrc189e30sdGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXtyJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChyLDApLHI9bnVsbCl9dmFyIHI9dDtpZihlLmxlbmd0aCl7dD1bXTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGVbbl0pO2lmKCFzKXRocm93IEVycm9yKFwiVW5yZWdvbml6ZWQgbmFtZXNwYWNlOiBcIitlW25dKTt0LnB1c2godGhpcy5kZXBlbmRlbmNpZXNfW3NdKX1zPWdvb2cucmVxdWlyZTt2YXIgaT0wO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspcyhlW25dKSx0W25dLm9uTG9hZCgoZnVuY3Rpb24oKXsrK2k9PWUubGVuZ3RoJiZvKCl9KSl9ZWxzZSBvKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCtcImRlcHMuanNcIiksXCJkZXBzLmpzXCIsW10sW10se30sITEpKSx0aGlzLmxvYWREZXBzXygpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUucmVxdWVzdGVkPWZ1bmN0aW9uKGUsdCl7KGU9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGUpKSYmKHR8fHRoaXMuYXJlRGVwc0xvYWRlZF8odGhpcy5kZXBlbmRlbmNpZXNfW2VdLnJlcXVpcmVzKSkmJih0PXRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2VdKSYmKGRlbGV0ZSB0aGlzLmRlZmVycmVkQ2FsbGJhY2tzX1tlXSx0KCkpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dGhpcy5mYWN0b3J5Xz1lfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZF89ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhlKSl0aHJvdyBlPVwiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiBcIitlLGdvb2cubG9nVG9Db25zb2xlXyhlKSxFcnJvcihlKTt2YXIgdD10aGlzLG89W10scj1mdW5jdGlvbihlKXt2YXIgbj10LmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIW4pdGhyb3cgRXJyb3IoXCJCYWQgZGVwZW5kZW5jeSBwYXRoIG9yIHN5bWJvbDogXCIrZSk7aWYoIXQud3JpdHRlbl9bbl0pe2Zvcih0LndyaXR0ZW5fW25dPSEwLGU9dC5kZXBlbmRlbmNpZXNfW25dLG49MDtuPGUucmVxdWlyZXMubGVuZ3RoO24rKylnb29nLmlzUHJvdmlkZWRfKGUucmVxdWlyZXNbbl0pfHxyKGUucmVxdWlyZXNbbl0pO28ucHVzaChlKX19O3IoZSksZT0hIXRoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoLHRoaXMuZGVwc1RvTG9hZF89dGhpcy5kZXBzVG9Mb2FkXy5jb25jYXQobyksdGhpcy5wYXVzZWRffHxlfHx0aGlzLmxvYWREZXBzXygpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLnBhdXNlZF87dGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgmJiF0OykhZnVuY3Rpb24oKXt2YXIgbz0hMSxyPWUuZGVwc1RvTG9hZF8uc2hpZnQoKSxuPSExO2UubG9hZGluZ18ocik7dmFyIHM9e3BhdXNlOmZ1bmN0aW9uKCl7aWYobyl0aHJvdyBFcnJvcihcIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuXCIpO3Q9ITB9LHJlc3VtZTpmdW5jdGlvbigpe28/ZS5yZXN1bWVfKCk6dD0hMX0sbG9hZGVkOmZ1bmN0aW9uKCl7aWYobil0aHJvdyBFcnJvcihcIkRvdWJsZSBjYWxsIHRvIGxvYWRlZC5cIik7bj0hMCxlLmxvYWRlZF8ocil9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbz0wO288ZS5sb2FkaW5nRGVwc18ubGVuZ3RoO28rKyl0LnB1c2goZS5sb2FkaW5nRGVwc19bb10pO3JldHVybiB0fSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihlKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTplLG1vZHVsZU5hbWU6XCJcIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExfX0scmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzOmZ1bmN0aW9uKGUsdCxvKXtvJiYoZ29vZy5sb2FkZWRNb2R1bGVzX1tvXT17ZXhwb3J0czp0LHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkVTNixtb2R1bGVJZDpvfHxcIlwifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZSx0KXtnb29nLmxvYWRlZE1vZHVsZXNfW2VdPXtleHBvcnRzOnQsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDplfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKHQpe2lmKG8pdGhyb3cgRXJyb3IoXCJDYW5ub3QgcmVnaXN0ZXIgd2l0aCBkZWZlciBhZnRlciB0aGUgY2FsbCB0byBsb2FkLlwiKTtlLmRlZmVyXyhyLHQpfSxhcmVEZXBzTG9hZGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXJlRGVwc0xvYWRlZF8oci5yZXF1aXJlcyl9fTt0cnl7ci5sb2FkKHMpfWZpbmFsbHl7bz0hMH19KCk7dCYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihlKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGUpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDt0KyspaWYodGhpcy5sb2FkaW5nRGVwc19bdF09PWUpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZSh0LDEpO2JyZWFrfWZvcih0PTA7dDx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDt0KyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1t0XT09ZS5wYXRoKXt0aGlzLmRlZmVycmVkUXVldWVfLnNwbGljZSh0LDEpO2JyZWFrfWlmKHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aD09dGhpcy5kZWZlcnJlZFF1ZXVlXy5sZW5ndGgmJiF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aClmb3IoO3RoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoOyl0aGlzLnJlcXVlc3RlZCh0aGlzLmRlZmVycmVkUXVldWVfLnNoaWZ0KCksITApO2UubG9hZGVkKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG89dGhpcy5nZXRQYXRoRnJvbURlcHNfKGVbdF0pO2lmKCFvfHwhKG8gaW4gdGhpcy5kZWZlcnJlZENhbGxiYWNrc18pJiYhZ29vZy5pc1Byb3ZpZGVkXyhlW3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW4gdGhpcy5pZFRvUGF0aF8/dGhpcy5pZFRvUGF0aF9bZV06ZSBpbiB0aGlzLmRlcGVuZGVuY2llc18/ZTpudWxsfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuZGVmZXJfPWZ1bmN0aW9uKGUsdCl7dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bZS5wYXRoXT10LHRoaXMuZGVmZXJyZWRRdWV1ZV8ucHVzaChlLnBhdGgpfSxnb29nLkxvYWRDb250cm9sbGVyPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBlbmRpbmc9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cz1mdW5jdGlvbihlLHQsbyl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5zZXRNb2R1bGVTdGF0ZT1mdW5jdGlvbihlKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFyTW9kdWxlU3RhdGU9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmRlZmVyPWZ1bmN0aW9uKGUpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZD1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7dGhpcy5wYXRoPWUsdGhpcy5yZWxhdGl2ZVBhdGg9dCx0aGlzLnByb3ZpZGVzPW8sdGhpcy5yZXF1aXJlcz1yLHRoaXMubG9hZEZsYWdzPW4sdGhpcy5sb2FkZWRfPSExLHRoaXMubG9hZENhbGxiYWNrc189W119LGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUuZ2V0UGF0aE5hbWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhdGgsdD1lLmluZGV4T2YoXCI6Ly9cIik7cmV0dXJuIDA8PXQmJjA8PSh0PShlPWUuc3Vic3RyaW5nKHQrMykpLmluZGV4T2YoXCIvXCIpKSYmKGU9ZS5zdWJzdHJpbmcodCsxKSksZX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oZSl7dGhpcy5sb2FkZWRfP2UoKTp0aGlzLmxvYWRDYWxsYmFja3NfLnB1c2goZSl9LGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7dGhpcy5sb2FkZWRfPSEwO3ZhciBlPXRoaXMubG9hZENhbGxiYWNrc187dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdKCl9LGdvb2cuRGVwZW5kZW5jeS5kZWZlcl89ITEsZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwXz17fSxnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzMik7cmV0dXJuIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bdF09ZSx0fSxnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXz1mdW5jdGlvbihlKXtkZWxldGUgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1tlXX0sZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKSl0aHJvdyBFcnJvcihcIkNhbGxiYWNrIGtleSBcIitlK1wiIGRvZXMgbm90IGV4aXN0ICh3YXMgYmFzZS5qcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2U/KS5cIik7Zm9yKHZhciBvPWdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bZV0scj1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKylyLnB1c2goYXJndW1lbnRzW25dKTtvLmFwcGx5KHZvaWQgMCxyKX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVClnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQodGhpcy5wYXRoKT9lLmxvYWRlZCgpOmUucGF1c2UoKTtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciB0PWdvb2cuZ2xvYmFsLmRvY3VtZW50O2lmKFwiY29tcGxldGVcIj09dC5yZWFkeVN0YXRlJiYhZ29vZy5FTkFCTEVfQ0hST01FX0FQUF9TQUZFX1NDUklQVF9MT0FESU5HKXtpZigvXFxiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSlyZXR1cm4gdm9pZCBlLmxvYWRlZCgpO3Rocm93IEVycm9yKCdDYW5ub3Qgd3JpdGUgXCInK3RoaXMucGF0aCsnXCIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpfWlmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBvPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24odCl7Z29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXyYmXCJjb21wbGV0ZVwiIT10LnJlYWR5U3RhdGV8fChnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhvKSxlLmxvYWRlZCgpKX0pKSxyPSFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfJiZnb29nLmdldFNjcmlwdE5vbmNlKCk/JyBub25jZT1cIicrZ29vZy5nZXRTY3JpcHROb25jZSgpKydcIic6XCJcIjtyPSc8c2NyaXB0IHNyYz1cIicrdGhpcy5wYXRoKydcIiAnKyhnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfP1wib25yZWFkeXN0YXRlY2hhbmdlXCI6XCJvbmxvYWRcIikrXCI9XFxcImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJ1wiK28rJ1xcJywgdGhpcylcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgJysoZ29vZy5EZXBlbmRlbmN5LmRlZmVyXz9cImRlZmVyXCI6XCJcIikrcitcIj48XFwvc2NyaXB0PlwiLHQud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChyKTpyKX1lbHNle3ZhciBuPXQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtuLmRlZmVyPWdvb2cuRGVwZW5kZW5jeS5kZWZlcl8sbi5hc3luYz0hMSxuLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiwocj1nb29nLmdldFNjcmlwdE5vbmNlKCkpJiZuLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsciksZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXz8oZS5wYXVzZSgpLG4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7XCJsb2FkZWRcIiE9bi5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPW4ucmVhZHlTdGF0ZXx8KGUubG9hZGVkKCksZS5yZXN1bWUoKSl9KTpuLm9ubG9hZD1mdW5jdGlvbigpe24ub25sb2FkPW51bGwsZS5sb2FkZWQoKX0sbi5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoLHQuaGVhZC5hcHBlbmRDaGlsZChuKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oXCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuXCIpLFwiZGVwcy5qc1wiPT10aGlzLnJlbGF0aXZlUGF0aD8oZ29vZy5sb2dUb0NvbnNvbGVfKFwiQ29uc2lkZXIgc2V0dGluZyBDTE9TVVJFX0lNUE9SVF9TQ1JJUFQgYmVmb3JlIGxvYWRpbmcgYmFzZS5qcywgb3Igc2V0dGluZyBDTE9TVVJFX05PX0RFUFMgdG8gdHJ1ZS5cIiksZS5sb2FkZWQoKSk6ZS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scixuKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGUsdCxvLHIsbil9LGdvb2cuaW5oZXJpdHMoZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVClnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQodGhpcy5wYXRoKT9lLmxvYWRlZCgpOmUucGF1c2UoKTtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciB0PWdvb2cuZ2xvYmFsLmRvY3VtZW50LG89dGhpcztpZihnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKXt2YXIgcj1mdW5jdGlvbihlLG8pe2U9bz8nPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgY3Jvc3NvcmlnaW4+JytvK1wiPFxcL3NjcmlwdD5cIjonPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgY3Jvc3NvcmlnaW4gc3JjPVwiJytlKydcIj48XFwvc2NyaXB0PicsdC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKGUpOmUpfTtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2Ugcj1mdW5jdGlvbihlLG8pe3ZhciByPXQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtyLmRlZmVyPSEwLHIuYXN5bmM9ITEsci50eXBlPVwibW9kdWxlXCIsci5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCEwKTt2YXIgbj1nb29nLmdldFNjcmlwdE5vbmNlKCk7biYmci5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLG4pLG8/ci50ZXh0Q29udGVudD1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVTY3JpcHQobyk6bzpyLnNyYz1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVTY3JpcHRVUkwoZSk6ZSx0LmhlYWQuYXBwZW5kQ2hpbGQocil9O3ZhciBuPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhuKSxlLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSkpO3Iodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKFwiJytuKydcIiknKSxyKHRoaXMucGF0aCx2b2lkIDApO3ZhciBzPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXygoZnVuY3Rpb24odCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18ocyksZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHMoby5wYXRoLHQsZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSl9KSk7cih2b2lkIDAsJ2ltcG9ydCAqIGFzIG0gZnJvbSBcIicrdGhpcy5wYXRoKydcIjsgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcIicrcysnXCIsIG0pJyk7dmFyIGk9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKChmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGkpLGUuY2xlYXJNb2R1bGVTdGF0ZSgpLGUubG9hZGVkKCl9KSk7cih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oXCInK2krJ1wiKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKFwiQ2Fubm90IHVzZSBkZWZhdWx0IGRlYnVnIGxvYWRlciBvdXRzaWRlIG9mIEhUTUwgZG9jdW1lbnRzLlwiKSxlLnBhdXNlKCl9LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7Z29vZy5EZXBlbmRlbmN5LmNhbGwodGhpcyxlLHQsbyxyLG4pLHRoaXMuY29udGVudHNfPW51bGwsdGhpcy5sYXp5RmV0Y2hfPSFnb29nLmluSHRtbERvY3VtZW50XygpfHwhKFwibm9Nb2R1bGVcImluIGdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3IuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhyLnBhdGgpLHIuY29udGVudHNfJiYoci5jb250ZW50c189ci50cmFuc2Zvcm0oci5jb250ZW50c18pLHIuY29udGVudHNfJiYoci5jb250ZW50c18rPVwiXFxuLy8jIHNvdXJjZVVSTD1cIityLnBhdGgpKX1mdW5jdGlvbiBvKCl7aWYoci5sYXp5RmV0Y2hfJiZ0KCksci5jb250ZW50c18pe24mJmUuc2V0TW9kdWxlU3RhdGUoZ29vZy5Nb2R1bGVUeXBlLkVTNik7dHJ5e3ZhciBvPXIuY29udGVudHNfO2lmKHIuY29udGVudHNfPW51bGwsZ29vZy5nbG9iYWxFdmFsKG8pLG4pdmFyIHM9Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZX1maW5hbGx5e24mJmUuY2xlYXJNb2R1bGVTdGF0ZSgpfW4mJmdvb2cuZ2xvYmFsLiRqc2NvbXAucmVxdWlyZS5lbnN1cmUoW3IuZ2V0UGF0aE5hbWUoKV0sKGZ1bmN0aW9uKCl7ZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHMoci5wYXRoLGdvb2cuZ2xvYmFsLiRqc2NvbXAucmVxdWlyZShyLmdldFBhdGhOYW1lKCkpLHMpfSkpLGUubG9hZGVkKCl9fXZhciByPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKXQoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKFwiXCIsdGhpcy5jb250ZW50c18pPyh0aGlzLmNvbnRlbnRzXz1udWxsLGUubG9hZGVkKCkpOmUucGF1c2UoKTtlbHNle3ZhciBuPXRoaXMubG9hZEZsYWdzLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNjt0aGlzLmxhenlGZXRjaF98fHQoKTt2YXIgcz0xPGUucGVuZGluZygpLmxlbmd0aCxpPXMmJmdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV87aWYocz1nb29nLkRlcGVuZGVuY3kuZGVmZXJfJiYoc3x8Z29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSksaXx8cyllLmRlZmVyKChmdW5jdGlvbigpe28oKX0pKTtlbHNle3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50O2lmKGk9Z29vZy5pbkh0bWxEb2N1bWVudF8oKSYmXCJBY3RpdmVYT2JqZWN0XCJpbiBnb29nLmdsb2JhbCxuJiZnb29nLmluSHRtbERvY3VtZW50XygpJiZnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpJiYhaSl7Z29vZy5EZXBlbmRlbmN5LmRlZmVyXz0hMCxlLnBhdXNlKCk7dmFyIGc9YS5vbnJlYWR5c3RhdGVjaGFuZ2U7YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtcImludGVyYWN0aXZlXCI9PWEucmVhZHlTdGF0ZSYmKGEub25yZWFkeXN0YXRlY2hhbmdlPWcsbygpLGUucmVzdW1lKCkpLGdvb2cuaXNGdW5jdGlvbihnKSYmZy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19ZWxzZSFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfJiZnb29nLmluSHRtbERvY3VtZW50XygpJiZnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpP2Z1bmN0aW9uKCl7dmFyIGU9Z29vZy5nbG9iYWwuZG9jdW1lbnQsdD1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18odCksbygpfSkpLHI9JzxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPicrZ29vZy5wcm90ZWN0U2NyaXB0VGFnXygnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcIicrdCsnXCIpOycpK1wiPFxcL3NjcmlwdD5cIjtlLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwocik6cil9KCk6bygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7fSxnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbixzKXtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeS5jYWxsKHRoaXMsZSx0LG8scixuKSx0aGlzLnRyYW5zcGlsZXI9c30sZ29vZy5pbmhlcml0cyhnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KSxnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudHJhbnNwaWxlci50cmFuc3BpbGUoZSx0aGlzLmdldFBhdGhOYW1lKCkpfSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbil7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGUsdCxvLHIsbil9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGUsdCxvLHIsbixzLGkpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxlLHQsbyxyLG4pLHRoaXMubmVlZHNUcmFuc3BpbGVfPXMsdGhpcy50cmFuc3BpbGVyXz1pfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uZWVkc1RyYW5zcGlsZV8mJihlPXRoaXMudHJhbnNwaWxlcl8udHJhbnNwaWxlKGUsdGhpcy5nZXRQYXRoTmFtZSgpKSksZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLkpTT04pP1wiZ29vZy5sb2FkTW9kdWxlKFwiK2dvb2cuZ2xvYmFsLkpTT04uc3RyaW5naWZ5KGUrXCJcXG4vLyMgc291cmNlVVJMPVwiK3RoaXMucGF0aCtcIlxcblwiKStcIik7XCI6J2dvb2cubG9hZE1vZHVsZShmdW5jdGlvbihleHBvcnRzKSB7XCJ1c2Ugc3RyaWN0XCI7JytlK1wiXFxuO3JldHVybiBleHBvcnRzfSk7XFxuLy8jIHNvdXJjZVVSTD1cIit0aGlzLnBhdGgrXCJcXG5cIn0sZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXz0hKGdvb2cuZ2xvYmFsLmF0b2J8fCFnb29nLmdsb2JhbC5kb2N1bWVudHx8IWdvb2cuZ2xvYmFsLmRvY3VtZW50LmFsbCksZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmFkZERlcGVuZGVuY3k9ZnVuY3Rpb24oZSx0LG8scil7dD10fHxbXSxlPWUucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTt2YXIgbj1nb29nLm5vcm1hbGl6ZVBhdGhfKGdvb2cuYmFzZVBhdGgrZSk7Zm9yKHImJlwiYm9vbGVhblwiIT10eXBlb2Ygcnx8KHI9cj97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSksbz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3kobixlLHQsbyxyLGdvb2cudHJhbnNwaWxlcl8ubmVlZHNUcmFuc3BpbGUoci5sYW5nfHxcImVzM1wiLHIubW9kdWxlKSksdGhpcy5kZXBlbmRlbmNpZXNfW25dPW8sbz0wO288dC5sZW5ndGg7bysrKXRoaXMuaWRUb1BhdGhfW3Rbb11dPW47dGhpcy5pZFRvUGF0aF9bZV09bn0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zcGlsZXI9ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihlLHQsbyxyLG4scyl7cmV0dXJuIG4ubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuR09PRz9uZXcgZ29vZy5Hb29nTW9kdWxlRGVwZW5kZW5jeShlLHQsbyxyLG4scyx0aGlzLnRyYW5zcGlsZXIpOnM/bmV3IGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3koZSx0LG8scixuLHRoaXMudHJhbnNwaWxlcik6bi5tb2R1bGU9PWdvb2cuTW9kdWxlVHlwZS5FUzY/XCJuZXZlclwiPT1nb29nLlRSQU5TUElMRSYmZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEP25ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGUsdCxvLHIsbik6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShlLHQsbyxyLG4pOm5ldyBnb29nLkRlcGVuZGVuY3koZSx0LG8scixuKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oZSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoZSl9LGdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQU3x8Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCksZ29vZy5ib290c3RyYXA9ZnVuY3Rpb24oZSx0KXtnb29nLmRlYnVnTG9hZGVyXy5ib290c3RyYXAoZSx0KX0pLGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT1cIlwiLGdvb2cuaWRlbnRpdHlfPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihlKXt2YXIgdD1udWxsO2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBUcnVzdGVkVHlwZXN8fCFUcnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KXJldHVybiB0O3RyeXt0PVRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koZSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlfLGNyZWF0ZVVSTDpnb29nLmlkZW50aXR5X30pfWNhdGNoKGUpe2dvb2cubG9nVG9Db25zb2xlXyhlLm1lc3NhZ2UpfXJldHVybiB0fSxnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FK1wiI2Jhc2VcIik6bnVsbCxnb29nLm9iamVjdD17fSxnb29nLm9iamVjdC5pcz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT0xL3Q6ZSE9ZSYmdCE9dH0sZ29vZy5vYmplY3QuZm9yRWFjaD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpdC5jYWxsKG8sZVtyXSxyLGUpfSxnb29nLm9iamVjdC5maWx0ZXI9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSl0LmNhbGwobyxlW3JdLHIsZSkmJihuW3JdPWVbcl0pO3JldHVybiBufSxnb29nLm9iamVjdC5tYXA9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSluW3JdPXQuY2FsbChvLGVbcl0scixlKTtyZXR1cm4gbn0sZ29vZy5vYmplY3Quc29tZT1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpaWYodC5jYWxsKG8sZVtyXSxyLGUpKXJldHVybiEwO3JldHVybiExfSxnb29nLm9iamVjdC5ldmVyeT1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByIGluIGUpaWYoIXQuY2FsbChvLGVbcl0scixlKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ29vZy5vYmplY3QuZ2V0Q291bnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbz0wO2Zvcih0IGluIGUpbysrO3JldHVybiBvfSxnb29nLm9iamVjdC5nZXRBbnlLZXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpcmV0dXJuIHR9LGdvb2cub2JqZWN0LmdldEFueVZhbHVlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKXJldHVybiBlW3RdfSxnb29nLm9iamVjdC5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLm9iamVjdC5jb250YWluc1ZhbHVlKGUsdCl9LGdvb2cub2JqZWN0LmdldFZhbHVlcz1mdW5jdGlvbihlKXt2YXIgdCxvPVtdLHI9MDtmb3IodCBpbiBlKW9bcisrXT1lW3RdO3JldHVybiBvfSxnb29nLm9iamVjdC5nZXRLZXlzPWZ1bmN0aW9uKGUpe3ZhciB0LG89W10scj0wO2Zvcih0IGluIGUpb1tyKytdPXQ7cmV0dXJuIG99LGdvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5pc0FycmF5TGlrZSh0KSxyPW8/dDphcmd1bWVudHM7Zm9yKG89bz8wOjE7bzxyLmxlbmd0aDtvKyspe2lmKG51bGw9PWUpcmV0dXJuO2U9ZVtyW29dXX1yZXR1cm4gZX0sZ29vZy5vYmplY3QuY29udGFpbnNLZXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9PWUmJnQgaW4gZX0sZ29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiBlKWlmKGVbb109PXQpcmV0dXJuITA7cmV0dXJuITF9LGdvb2cub2JqZWN0LmZpbmRLZXk9ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgciBpbiBlKWlmKHQuY2FsbChvLGVbcl0scixlKSlyZXR1cm4gcn0sZ29vZy5vYmplY3QuZmluZFZhbHVlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4odD1nb29nLm9iamVjdC5maW5kS2V5KGUsdCxvKSkmJmVbdF19LGdvb2cub2JqZWN0LmlzRW1wdHk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdvb2cub2JqZWN0LmNsZWFyPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWRlbGV0ZSBlW3RdfSxnb29nLm9iamVjdC5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbztyZXR1cm4obz10IGluIGUpJiZkZWxldGUgZVt0XSxvfSxnb29nLm9iamVjdC5hZGQ9ZnVuY3Rpb24oZSx0LG8pe2lmKG51bGwhPT1lJiZ0IGluIGUpdGhyb3cgRXJyb3IoJ1RoZSBvYmplY3QgYWxyZWFkeSBjb250YWlucyB0aGUga2V5IFwiJyt0KydcIicpO2dvb2cub2JqZWN0LnNldChlLHQsbyl9LGdvb2cub2JqZWN0LmdldD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGwhPT1lJiZ0IGluIGU/ZVt0XTpvfSxnb29nLm9iamVjdC5zZXQ9ZnVuY3Rpb24oZSx0LG8pe2VbdF09b30sZ29vZy5vYmplY3Quc2V0SWZVbmRlZmluZWQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0IGluIGU/ZVt0XTplW3RdPW99LGdvb2cub2JqZWN0LnNldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gdCBpbiBlP2VbdF06KG89bygpLGVbdF09byl9LGdvb2cub2JqZWN0LmVxdWFscz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiBlKWlmKCEobyBpbiB0KXx8ZVtvXSE9PXRbb10pcmV0dXJuITE7Zm9yKHZhciByIGluIHQpaWYoIShyIGluIGUpKXJldHVybiExO3JldHVybiEwfSxnb29nLm9iamVjdC5jbG9uZT1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O2Zvcih0IGluIGUpb1t0XT1lW3RdO3JldHVybiBvfSxnb29nLm9iamVjdC51bnNhZmVDbG9uZT1mdW5jdGlvbihlKXt2YXIgdD1nb29nLnR5cGVPZihlKTtpZihcIm9iamVjdFwiPT10fHxcImFycmF5XCI9PXQpe2lmKGdvb2cuaXNGdW5jdGlvbihlLmNsb25lKSlyZXR1cm4gZS5jbG9uZSgpO2Zvcih2YXIgbyBpbiB0PVwiYXJyYXlcIj09dD9bXTp7fSxlKXRbb109Z29vZy5vYmplY3QudW5zYWZlQ2xvbmUoZVtvXSk7cmV0dXJuIHR9cmV0dXJuIGV9LGdvb2cub2JqZWN0LnRyYW5zcG9zZT1mdW5jdGlvbihlKXt2YXIgdCxvPXt9O2Zvcih0IGluIGUpb1tlW3RdXT10O3JldHVybiBvfSxnb29nLm9iamVjdC5QUk9UT1RZUEVfRklFTERTXz1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKSxnb29nLm9iamVjdC5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7Zm9yKG8gaW4gcj1hcmd1bWVudHNbbl0pZVtvXT1yW29dO2Zvcih2YXIgcz0wO3M8Z29vZy5vYmplY3QuUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO3MrKylvPWdvb2cub2JqZWN0LlBST1RPVFlQRV9GSUVMRFNfW3NdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG8pJiYoZVtvXT1yW29dKX19LGdvb2cub2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PXQmJmdvb2cuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBnb29nLm9iamVjdC5jcmVhdGUuYXBwbHkobnVsbCxhcmd1bWVudHNbMF0pO2lmKHQlMil0aHJvdyBFcnJvcihcIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO2Zvcih2YXIgbz17fSxyPTA7cjx0O3IrPTIpb1thcmd1bWVudHNbcl1dPWFyZ3VtZW50c1tyKzFdO3JldHVybiBvfSxnb29nLm9iamVjdC5jcmVhdGVTZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDtpZigxPT10JiZnb29nLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gZ29vZy5vYmplY3QuY3JlYXRlU2V0LmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtmb3IodmFyIG89e30scj0wO3I8dDtyKyspb1thcmd1bWVudHNbcl1dPSEwO3JldHVybiBvfSxnb29nLm9iamVjdC5jcmVhdGVJbW11dGFibGVWaWV3PWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIE9iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihlKSYmKHQ9T2JqZWN0LmNyZWF0ZShlKSxPYmplY3QuZnJlZXplKHQpKSx0fSxnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9ZnVuY3Rpb24oZSl7cmV0dXJuISFPYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihlKX0sZ29vZy5vYmplY3QuZ2V0QWxsUHJvcGVydHlOYW1lcz1mdW5jdGlvbihlLHQsbyl7aWYoIWUpcmV0dXJuW107aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHwhT2JqZWN0LmdldFByb3RvdHlwZU9mKXJldHVybiBnb29nLm9iamVjdC5nZXRLZXlzKGUpO2Zvcih2YXIgcj17fTtlJiYoZSE9PU9iamVjdC5wcm90b3R5cGV8fHQpJiYoZSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8byk7KXtmb3IodmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkscz0wO3M8bi5sZW5ndGg7cysrKXJbbltzXV09ITA7ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9cmV0dXJuIGdvb2cub2JqZWN0LmdldEtleXMocil9LGdvb2cub2JqZWN0LmdldFN1cGVyQ2xhc3M9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUucHJvdG90eXBlKSkmJmUuY29uc3RydWN0b3J9LGdvb2cuZGVidWc9e30sZ29vZy5kZWJ1Zy5FcnJvcj1mdW5jdGlvbihlKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGdvb2cuZGVidWcuRXJyb3IpO2Vsc2V7dmFyIHQ9RXJyb3IoKS5zdGFjazt0JiYodGhpcy5zdGFjaz10KX1lJiYodGhpcy5tZXNzYWdlPVN0cmluZyhlKSksdGhpcy5yZXBvcnRFcnJvclRvU2VydmVyPSEwfSxnb29nLmluaGVyaXRzKGdvb2cuZGVidWcuRXJyb3IsRXJyb3IpLGdvb2cuZGVidWcuRXJyb3IucHJvdG90eXBlLm5hbWU9XCJDdXN0b21FcnJvclwiLGdvb2cuZG9tPXt9LGdvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9LGdvb2cuYXNzZXJ0cz17fSxnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRyxnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3I9ZnVuY3Rpb24oZSx0KXtnb29nLmRlYnVnLkVycm9yLmNhbGwodGhpcyxnb29nLmFzc2VydHMuc3Vic18oZSx0KSksdGhpcy5tZXNzYWdlUGF0dGVybj1lfSxnb29nLmluaGVyaXRzKGdvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvcixnb29nLmRlYnVnLkVycm9yKSxnb29nLmFzc2VydHMuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLm5hbWU9XCJBc3NlcnRpb25FcnJvclwiLGdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI9ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZ29vZy5hc3NlcnRzLmVycm9ySGFuZGxlcl89Z29vZy5hc3NlcnRzLkRFRkFVTFRfRVJST1JfSEFORExFUixnb29nLmFzc2VydHMuc3Vic189ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89XCJcIixyPShlPWUuc3BsaXQoXCIlc1wiKSkubGVuZ3RoLTEsbj0wO248cjtuKyspbys9ZVtuXSsobjx0Lmxlbmd0aD90W25dOlwiJXNcIik7cmV0dXJuIG8rZVtyXX0sZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV89ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49XCJBc3NlcnRpb24gZmFpbGVkXCI7aWYobyl7bis9XCI6IFwiK287dmFyIHM9cn1lbHNlIGUmJihuKz1cIjogXCIrZSxzPXQpO2U9bmV3IGdvb2cuYXNzZXJ0cy5Bc3NlcnRpb25FcnJvcihcIlwiK24sc3x8W10pLGdvb2cuYXNzZXJ0cy5lcnJvckhhbmRsZXJfKGUpfSxnb29nLmFzc2VydHMuc2V0RXJyb3JIYW5kbGVyPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmKGdvb2cuYXNzZXJ0cy5lcnJvckhhbmRsZXJfPWUpfSxnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJcIixudWxsLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1lJiZnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkIHRvIGV4aXN0OiAlcy5cIixbZV0sdCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpLGV9LGdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGUsdCl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZnb29nLmFzc2VydHMuZXJyb3JIYW5kbGVyXyhuZXcgZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yKFwiRmFpbHVyZVwiKyhlP1wiOiBcIitlOlwiXCIpLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSkpfSxnb29nLmFzc2VydHMuYXNzZXJ0TnVtYmVyPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc051bWJlcihlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBudW1iZXIgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc1N0cmluZyhlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFnb29nLmlzRnVuY3Rpb24oZSkmJmdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0T2JqZWN0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChlKSYmZ29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0QXJyYXk9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFnb29nLmlzQXJyYXkoZSkmJmdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgYXJyYXkgYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0Qm9vbGVhbj1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIWdvb2cuaXNCb29sZWFuKGUpJiZnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkIGJvb2xlYW4gYnV0IGdvdCAlczogJXMuXCIsW2dvb2cudHlwZU9mKGUpLGVdLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKSxlfSxnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChlKSYmZS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8Z29vZy5hc3NlcnRzLmRvQXNzZXJ0RmFpbHVyZV8oXCJFeHBlY3RlZCBFbGVtZW50IGJ1dCBnb3QgJXM6ICVzLlwiLFtnb29nLnR5cGVPZihlKSxlXSx0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8ZSBpbnN0YW5jZW9mIHR8fGdvb2cuYXNzZXJ0cy5kb0Fzc2VydEZhaWx1cmVfKFwiRXhwZWN0ZWQgaW5zdGFuY2VvZiAlcyBidXQgZ290ICVzLlwiLFtnb29nLmFzc2VydHMuZ2V0VHlwZV8odCksZ29vZy5hc3NlcnRzLmdldFR5cGVfKGUpXSxvLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8XCJudW1iZXJcIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpfHxnb29nLmFzc2VydHMuZG9Bc3NlcnRGYWlsdXJlXyhcIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LlwiLFtlXSx0LEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSksZX0sZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdFByb3RvdHlwZUlzSW50YWN0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIE9iamVjdC5wcm90b3R5cGUpZ29vZy5hc3NlcnRzLmZhaWwoZStcIiBzaG91bGQgbm90IGJlIGVudW1lcmFibGUgaW4gT2JqZWN0LnByb3RvdHlwZS5cIil9LGdvb2cuYXNzZXJ0cy5nZXRUeXBlXz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8XCJ1bmtub3duIHR5cGUgbmFtZVwiOmUgaW5zdGFuY2VvZiBPYmplY3Q/ZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk6bnVsbD09PWU/XCJudWxsXCI6dHlwZW9mIGV9O3ZhciBqc3BiPXtCaW5hcnlDb25zdGFudHM6e30sQ29uc3RCaW5hcnlNZXNzYWdlOmZ1bmN0aW9uKCl7fSxCaW5hcnlNZXNzYWdlOmZ1bmN0aW9uKCl7fX07anNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlPXtJTlZBTElEOi0xLERPVUJMRToxLEZMT0FUOjIsSU5UNjQ6MyxVSU5UNjQ6NCxJTlQzMjo1LEZJWEVENjQ6NixGSVhFRDMyOjcsQk9PTDo4LFNUUklORzo5LEdST1VQOjEwLE1FU1NBR0U6MTEsQllURVM6MTIsVUlOVDMyOjEzLEVOVU06MTQsU0ZJWEVEMzI6MTUsU0ZJWEVENjQ6MTYsU0lOVDMyOjE3LFNJTlQ2NDoxOCxGSEFTSDY0OjMwLFZIQVNINjQ6MzF9LGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlPXtJTlZBTElEOi0xLFZBUklOVDowLEZJWEVENjQ6MSxERUxJTUlURUQ6MixTVEFSVF9HUk9VUDozLEVORF9HUk9VUDo0LEZJWEVEMzI6NX0sanNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlVG9XaXJlVHlwZT1mdW5jdGlvbihlKXt2YXIgdD1qc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGUsbz1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZTtzd2l0Y2goZSl7Y2FzZSB0LklOVDMyOmNhc2UgdC5JTlQ2NDpjYXNlIHQuVUlOVDMyOmNhc2UgdC5VSU5UNjQ6Y2FzZSB0LlNJTlQzMjpjYXNlIHQuU0lOVDY0OmNhc2UgdC5CT09MOmNhc2UgdC5FTlVNOmNhc2UgdC5WSEFTSDY0OnJldHVybiBvLlZBUklOVDtjYXNlIHQuRE9VQkxFOmNhc2UgdC5GSVhFRDY0OmNhc2UgdC5TRklYRUQ2NDpjYXNlIHQuRkhBU0g2NDpyZXR1cm4gby5GSVhFRDY0O2Nhc2UgdC5TVFJJTkc6Y2FzZSB0Lk1FU1NBR0U6Y2FzZSB0LkJZVEVTOnJldHVybiBvLkRFTElNSVRFRDtjYXNlIHQuRkxPQVQ6Y2FzZSB0LkZJWEVEMzI6Y2FzZSB0LlNGSVhFRDMyOnJldHVybiBvLkZJWEVEMzI7ZGVmYXVsdDpyZXR1cm4gby5JTlZBTElEfX0sanNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVI9LTEsanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQzMl9FUFM9MTQwMTI5ODQ2NDMyNDgxN2UtNjAsanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQzMl9NSU49MTE3NTQ5NDM1MDgyMjI4NzVlLTU0LGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYPTM0MDI4MjM0NjYzODUyODg2ZTIyLGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfRVBTPTVlLTMyNCxqc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01JTj0yMjI1MDczODU4NTA3MjAxNGUtMzI0LGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUFYPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5Mixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjA9MTA0ODU3Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMjM9ODM4ODYwOCxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzE9MjE0NzQ4MzY0OCxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzI9NDI5NDk2NzI5Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNTI9NDUwMzU5OTYyNzM3MDQ5Nixqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjM9MHg4MDAwMDAwMDAwMDAwMDAwLGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182ND0weDEwMDAwMDAwMDAwMDAwMDAwLGpzcGIuQmluYXJ5Q29uc3RhbnRzLlpFUk9fSEFTSD1cIlxcMFxcMFxcMFxcMFxcMFxcMFxcMFxcMFwiLGdvb2cuYXJyYXk9e30sZ29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUz1nb29nLlRSVVNURURfU0lURSxnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVIsZ29vZy5hcnJheS5wZWVrPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfSxnb29nLmFycmF5Lmxhc3Q9Z29vZy5hcnJheS5wZWVrLGdvb2cuYXJyYXkuaW5kZXhPZj1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvKXtpZihvPW51bGw9PW8/MDowPm8/TWF0aC5tYXgoMCxlLmxlbmd0aCtvKTpvLGdvb2cuaXNTdHJpbmcoZSkpcmV0dXJuIGdvb2cuaXNTdHJpbmcodCkmJjE9PXQubGVuZ3RoP2UuaW5kZXhPZih0LG8pOi0xO2Zvcig7bzxlLmxlbmd0aDtvKyspaWYobyBpbiBlJiZlW29dPT09dClyZXR1cm4gbztyZXR1cm4tMX0sZ29vZy5hcnJheS5sYXN0SW5kZXhPZj1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKT9mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxudWxsPT1vP2UubGVuZ3RoLTE6byl9OmZ1bmN0aW9uKGUsdCxvKXtpZigwPihvPW51bGw9PW8/ZS5sZW5ndGgtMTpvKSYmKG89TWF0aC5tYXgoMCxlLmxlbmd0aCtvKSksZ29vZy5pc1N0cmluZyhlKSlyZXR1cm4gZ29vZy5pc1N0cmluZyh0KSYmMT09dC5sZW5ndGg/ZS5sYXN0SW5kZXhPZih0LG8pOi0xO2Zvcig7MDw9bztvLS0paWYobyBpbiBlJiZlW29dPT09dClyZXR1cm4gbztyZXR1cm4tMX0sZ29vZy5hcnJheS5mb3JFYWNoPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oZSx0LG8pe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspcyBpbiBuJiZ0LmNhbGwobyxuW3NdLHMsZSl9LGdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1lLmxlbmd0aCxuPWdvb2cuaXNTdHJpbmcoZSk/ZS5zcGxpdChcIlwiKTplO2ZvcigtLXI7MDw9cjstLXIpciBpbiBuJiZ0LmNhbGwobyxuW3JdLHIsZSl9LGdvb2cuYXJyYXkuZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZmlsdGVyKT9mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvKXtmb3IodmFyIHI9ZS5sZW5ndGgsbj1bXSxzPTAsaT1nb29nLmlzU3RyaW5nKGUpP2Uuc3BsaXQoXCJcIik6ZSxhPTA7YTxyO2ErKylpZihhIGluIGkpe3ZhciBnPWlbYV07dC5jYWxsKG8sZyxhLGUpJiYobltzKytdPWcpfXJldHVybiBufSxnb29nLmFycmF5Lm1hcD1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49QXJyYXkocikscz1nb29nLmlzU3RyaW5nKGUpP2Uuc3BsaXQoXCJcIik6ZSxpPTA7aTxyO2krKylpIGluIHMmJihuW2ldPXQuY2FsbChvLHNbaV0saSxlKSk7cmV0dXJuIG59LGdvb2cuYXJyYXkucmVkdWNlPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlKT9mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksciYmKHQ9Z29vZy5iaW5kKHQscikpLEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChlLHQsbyl9OmZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPW87cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaChlLChmdW5jdGlvbihvLHMpe249dC5jYWxsKHIsbixvLHMsZSl9KSksbn0sZ29vZy5hcnJheS5yZWR1Y2VSaWdodD1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYoZ29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0KT9mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT10KSxyJiYodD1nb29nLmJpbmQodCxyKSksQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0LmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyxyKXt2YXIgbj1vO3JldHVybiBnb29nLmFycmF5LmZvckVhY2hSaWdodChlLChmdW5jdGlvbihvLHMpe249dC5jYWxsKHIsbixvLHMsZSl9KSksbn0sZ29vZy5hcnJheS5zb21lPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGUsdCxvKX06ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgcj1lLmxlbmd0aCxuPWdvb2cuaXNTdHJpbmcoZSk/ZS5zcGxpdChcIlwiKTplLHM9MDtzPHI7cysrKWlmKHMgaW4gbiYmdC5jYWxsKG8sbltzXSxzLGUpKXJldHVybiEwO3JldHVybiExfSxnb29nLmFycmF5LmV2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihnb29nLmFycmF5LkFTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZXZlcnkpP2Z1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksQXJyYXkucHJvdG90eXBlLmV2ZXJ5LmNhbGwoZSx0LG8pfTpmdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspaWYocyBpbiBuJiYhdC5jYWxsKG8sbltzXSxzLGUpKXJldHVybiExO3JldHVybiEwfSxnb29nLmFycmF5LmNvdW50PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj0wO3JldHVybiBnb29nLmFycmF5LmZvckVhY2goZSwoZnVuY3Rpb24oZSxuLHMpe3QuY2FsbChvLGUsbixzKSYmKytyfSksbykscn0sZ29vZy5hcnJheS5maW5kPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4odD1nb29nLmFycmF5LmZpbmRJbmRleChlLHQsbykpP251bGw6Z29vZy5pc1N0cmluZyhlKT9lLmNoYXJBdCh0KTplW3RdfSxnb29nLmFycmF5LmZpbmRJbmRleD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmUscz0wO3M8cjtzKyspaWYocyBpbiBuJiZ0LmNhbGwobyxuW3NdLHMsZSkpcmV0dXJuIHM7cmV0dXJuLTF9LGdvb2cuYXJyYXkuZmluZFJpZ2h0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4odD1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0KGUsdCxvKSk/bnVsbDpnb29nLmlzU3RyaW5nKGUpP2UuY2hhckF0KHQpOmVbdF19LGdvb2cuYXJyYXkuZmluZEluZGV4UmlnaHQ9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPWUubGVuZ3RoLG49Z29vZy5pc1N0cmluZyhlKT9lLnNwbGl0KFwiXCIpOmU7Zm9yKC0tcjswPD1yO3ItLSlpZihyIGluIG4mJnQuY2FsbChvLG5bcl0scixlKSlyZXR1cm4gcjtyZXR1cm4tMX0sZ29vZy5hcnJheS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiAwPD1nb29nLmFycmF5LmluZGV4T2YoZSx0KX0sZ29vZy5hcnJheS5pc0VtcHR5PWZ1bmN0aW9uKGUpe3JldHVybiAwPT1lLmxlbmd0aH0sZ29vZy5hcnJheS5jbGVhcj1mdW5jdGlvbihlKXtpZighZ29vZy5pc0FycmF5KGUpKWZvcih2YXIgdD1lLmxlbmd0aC0xOzA8PXQ7dC0tKWRlbGV0ZSBlW3RdO2UubGVuZ3RoPTB9LGdvb2cuYXJyYXkuaW5zZXJ0PWZ1bmN0aW9uKGUsdCl7Z29vZy5hcnJheS5jb250YWlucyhlLHQpfHxlLnB1c2godCl9LGdvb2cuYXJyYXkuaW5zZXJ0QXQ9ZnVuY3Rpb24oZSx0LG8pe2dvb2cuYXJyYXkuc3BsaWNlKGUsbywwLHQpfSxnb29nLmFycmF5Lmluc2VydEFycmF5QXQ9ZnVuY3Rpb24oZSx0LG8pe2dvb2cucGFydGlhbChnb29nLmFycmF5LnNwbGljZSxlLG8sMCkuYXBwbHkobnVsbCx0KX0sZ29vZy5hcnJheS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSx0LG8pe3ZhciByOzI9PWFyZ3VtZW50cy5sZW5ndGh8fDA+KHI9Z29vZy5hcnJheS5pbmRleE9mKGUsbykpP2UucHVzaCh0KTpnb29nLmFycmF5Lmluc2VydEF0KGUsdCxyKX0sZ29vZy5hcnJheS5yZW1vdmU9ZnVuY3Rpb24oZSx0KXt2YXIgbztyZXR1cm4obz0wPD0odD1nb29nLmFycmF5LmluZGV4T2YoZSx0KSkpJiZnb29nLmFycmF5LnJlbW92ZUF0KGUsdCksb30sZ29vZy5hcnJheS5yZW1vdmVMYXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA8PSh0PWdvb2cuYXJyYXkubGFzdEluZGV4T2YoZSx0KSkmJihnb29nLmFycmF5LnJlbW92ZUF0KGUsdCksITApfSxnb29nLmFycmF5LnJlbW92ZUF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9ZS5sZW5ndGgpLDE9PUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChlLHQsMSkubGVuZ3RofSxnb29nLmFycmF5LnJlbW92ZUlmPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMDw9KHQ9Z29vZy5hcnJheS5maW5kSW5kZXgoZSx0LG8pKSYmKGdvb2cuYXJyYXkucmVtb3ZlQXQoZSx0KSwhMCl9LGdvb2cuYXJyYXkucmVtb3ZlQWxsSWY9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPTA7cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0KGUsKGZ1bmN0aW9uKG4scyl7dC5jYWxsKG8sbixzLGUpJiZnb29nLmFycmF5LnJlbW92ZUF0KGUscykmJnIrK30pKSxyfSxnb29nLmFycmF5LmNvbmNhdD1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfSxnb29nLmFycmF5LmpvaW49ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX0sZ29vZy5hcnJheS50b0FycmF5PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKDA8dCl7Zm9yKHZhciBvPUFycmF5KHQpLHI9MDtyPHQ7cisrKW9bcl09ZVtyXTtyZXR1cm4gb31yZXR1cm5bXX0sZ29vZy5hcnJheS5jbG9uZT1nb29nLmFycmF5LnRvQXJyYXksZ29vZy5hcnJheS5leHRlbmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYoZ29vZy5pc0FycmF5TGlrZShyKSl7dmFyIG49ZS5sZW5ndGh8fDAscz1yLmxlbmd0aHx8MDtlLmxlbmd0aD1uK3M7Zm9yKHZhciBpPTA7aTxzO2krKyllW24raV09cltpXX1lbHNlIGUucHVzaChyKX19LGdvb2cuYXJyYXkuc3BsaWNlPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWUubGVuZ3RoKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGUsZ29vZy5hcnJheS5zbGljZShhcmd1bWVudHMsMSkpfSxnb29nLmFycmF5LnNsaWNlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsdCxvKX0sZ29vZy5hcnJheS5yZW1vdmVEdXBsaWNhdGVzPWZ1bmN0aW9uKGUsdCxvKXt0PXR8fGU7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZSk/XCJvXCIrZ29vZy5nZXRVaWQoZSk6KHR5cGVvZiBlKS5jaGFyQXQoMCkrZX07bz1vfHxyLHI9e307Zm9yKHZhciBuPTAscz0wO3M8ZS5sZW5ndGg7KXt2YXIgaT1lW3MrK10sYT1vKGkpO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLGEpfHwoclthXT0hMCx0W24rK109aSl9dC5sZW5ndGg9bn0sZ29vZy5hcnJheS5iaW5hcnlTZWFyY2g9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFycmF5LmJpbmFyeVNlYXJjaF8oZSxvfHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlLCExLHQpfSxnb29nLmFycmF5LmJpbmFyeVNlbGVjdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuYXJyYXkuYmluYXJ5U2VhcmNoXyhlLHQsITAsdm9pZCAwLG8pfSxnb29nLmFycmF5LmJpbmFyeVNlYXJjaF89ZnVuY3Rpb24oZSx0LG8scixuKXtmb3IodmFyIHMsaT0wLGE9ZS5sZW5ndGg7aTxhOyl7dmFyIGc9aSthPj4xLGw9bz90LmNhbGwobixlW2ddLGcsZSk6dChyLGVbZ10pOzA8bD9pPWcrMTooYT1nLHM9IWwpfXJldHVybiBzP2k6fml9LGdvb2cuYXJyYXkuc29ydD1mdW5jdGlvbihlLHQpe2Uuc29ydCh0fHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlKX0sZ29vZy5hcnJheS5zdGFibGVTb3J0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPUFycmF5KGUubGVuZ3RoKSxyPTA7cjxlLmxlbmd0aDtyKyspb1tyXT17aW5kZXg6cix2YWx1ZTplW3JdfTt2YXIgbj10fHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlO2Zvcihnb29nLmFycmF5LnNvcnQobywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlLnZhbHVlLHQudmFsdWUpfHxlLmluZGV4LXQuaW5kZXh9KSkscj0wO3I8ZS5sZW5ndGg7cisrKWVbcl09b1tyXS52YWx1ZX0sZ29vZy5hcnJheS5zb3J0QnlLZXk9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPW98fGdvb2cuYXJyYXkuZGVmYXVsdENvbXBhcmU7Z29vZy5hcnJheS5zb3J0KGUsKGZ1bmN0aW9uKGUsbyl7cmV0dXJuIHIodChlKSx0KG8pKX0pKX0sZ29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PWZ1bmN0aW9uKGUsdCxvKXtnb29nLmFycmF5LnNvcnRCeUtleShlLChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLG8pfSxnb29nLmFycmF5LmlzU29ydGVkPWZ1bmN0aW9uKGUsdCxvKXt0PXR8fGdvb2cuYXJyYXkuZGVmYXVsdENvbXBhcmU7Zm9yKHZhciByPTE7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXQoZVtyLTFdLGVbcl0pO2lmKDA8bnx8MD09biYmbylyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5hcnJheS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG8pe2lmKCFnb29nLmlzQXJyYXlMaWtlKGUpfHwhZ29vZy5pc0FycmF5TGlrZSh0KXx8ZS5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO3ZhciByPWUubGVuZ3RoO289b3x8Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5O2Zvcih2YXIgbj0wO248cjtuKyspaWYoIW8oZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ29vZy5hcnJheS5jb21wYXJlMz1mdW5jdGlvbihlLHQsbyl7bz1vfHxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlO2Zvcih2YXIgcj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCksbj0wO248cjtuKyspe3ZhciBzPW8oZVtuXSx0W25dKTtpZigwIT1zKXJldHVybiBzfXJldHVybiBnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlKGUubGVuZ3RoLHQubGVuZ3RoKX0sZ29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPnQ/MTplPHQ/LTE6MH0sZ29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tZ29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZShlLHQpfSxnb29nLmFycmF5LmRlZmF1bHRDb21wYXJlRXF1YWxpdHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXR9LGdvb2cuYXJyYXkuYmluYXJ5SW5zZXJ0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMD4obz1nb29nLmFycmF5LmJpbmFyeVNlYXJjaChlLHQsbykpJiYoZ29vZy5hcnJheS5pbnNlcnRBdChlLHQsLShvKzEpKSwhMCl9LGdvb2cuYXJyYXkuYmluYXJ5UmVtb3ZlPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gMDw9KHQ9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2goZSx0LG8pKSYmZ29vZy5hcnJheS5yZW1vdmVBdChlLHQpfSxnb29nLmFycmF5LmJ1Y2tldD1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHM9ZVtuXSxpPXQuY2FsbChvLHMsbixlKTtnb29nLmlzRGVmKGkpJiYocltpXXx8KHJbaV09W10pKS5wdXNoKHMpfXJldHVybiByfSxnb29nLmFycmF5LnRvT2JqZWN0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj17fTtyZXR1cm4gZ29vZy5hcnJheS5mb3JFYWNoKGUsKGZ1bmN0aW9uKG4scyl7clt0LmNhbGwobyxuLHMsZSldPW59KSkscn0sZ29vZy5hcnJheS5yYW5nZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9W10sbj0wLHM9ZTtpZih2b2lkIDAhPT10JiYobj1lLHM9dCksMD4obz1vfHwxKSoocy1uKSlyZXR1cm5bXTtpZigwPG8pZm9yKGU9bjtlPHM7ZSs9bylyLnB1c2goZSk7ZWxzZSBmb3IoZT1uO2U+cztlKz1vKXIucHVzaChlKTtyZXR1cm4gcn0sZ29vZy5hcnJheS5yZXBlYXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89W10scj0wO3I8dDtyKyspb1tyXT1lO3JldHVybiBvfSxnb29nLmFycmF5LmZsYXR0ZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYoZ29vZy5pc0FycmF5KHIpKWZvcih2YXIgbj0wO248ci5sZW5ndGg7bis9ODE5Mil7dmFyIHM9Z29vZy5hcnJheS5zbGljZShyLG4sbis4MTkyKTtzPWdvb2cuYXJyYXkuZmxhdHRlbi5hcHBseShudWxsLHMpO2Zvcih2YXIgaT0wO2k8cy5sZW5ndGg7aSsrKXQucHVzaChzW2ldKX1lbHNlIHQucHVzaChyKX1yZXR1cm4gdH0sZ29vZy5hcnJheS5yb3RhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1lLmxlbmd0aCksZS5sZW5ndGgmJigwPCh0JT1lLmxlbmd0aCk/QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZSxlLnNwbGljZSgtdCx0KSk6MD50JiZBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLGUuc3BsaWNlKDAsLXQpKSksZX0sZ29vZy5hcnJheS5tb3ZlSXRlbT1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGUubGVuZ3RoKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PW8mJm88ZS5sZW5ndGgpLHQ9QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGUsdCwxKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoZSxvLDAsdFswXSl9LGdvb2cuYXJyYXkuemlwPWZ1bmN0aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgdD1bXSxvPWFyZ3VtZW50c1swXS5sZW5ndGgscj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspYXJndW1lbnRzW3JdLmxlbmd0aDxvJiYobz1hcmd1bWVudHNbcl0ubGVuZ3RoKTtmb3Iocj0wO3I8bztyKyspe2Zvcih2YXIgbj1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKyluLnB1c2goYXJndW1lbnRzW3NdW3JdKTt0LnB1c2gobil9cmV0dXJuIHR9LGdvb2cuYXJyYXkuc2h1ZmZsZT1mdW5jdGlvbihlLHQpe3Q9dHx8TWF0aC5yYW5kb207Zm9yKHZhciBvPWUubGVuZ3RoLTE7MDxvO28tLSl7dmFyIHI9TWF0aC5mbG9vcih0KCkqKG8rMSkpLG49ZVtvXTtlW29dPWVbcl0sZVtyXT1ufX0sZ29vZy5hcnJheS5jb3B5QnlJbmRleD1mdW5jdGlvbihlLHQpe3ZhciBvPVtdO3JldHVybiBnb29nLmFycmF5LmZvckVhY2godCwoZnVuY3Rpb24odCl7by5wdXNoKGVbdF0pfSkpLG99LGdvb2cuYXJyYXkuY29uY2F0TWFwPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hcnJheS5jb25jYXQuYXBwbHkoW10sZ29vZy5hcnJheS5tYXAoZSx0LG8pKX0sZ29vZy5jcnlwdD17fSxnb29nLmNyeXB0LnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxvPTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lLmNoYXJDb2RlQXQocik7MjU1PG4mJih0W28rK109MjU1Jm4sbj4+PTgpLHRbbysrXT1ufXJldHVybiB0fSxnb29nLmNyeXB0LmJ5dGVBcnJheVRvU3RyaW5nPWZ1bmN0aW9uKGUpe2lmKDgxOTI+PWUubGVuZ3RoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Zm9yKHZhciB0PVwiXCIsbz0wO288ZS5sZW5ndGg7bys9ODE5Mil7dmFyIHI9Z29vZy5hcnJheS5zbGljZShlLG8sbys4MTkyKTt0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscil9cmV0dXJuIHR9LGdvb2cuY3J5cHQuYnl0ZUFycmF5VG9IZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hcnJheS5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIDE8KGU9ZS50b1N0cmluZygxNikpLmxlbmd0aD9lOlwiMFwiK2V9KSkuam9pbih0fHxcIlwiKX0sZ29vZy5jcnlwdC5oZXhUb0J5dGVBcnJheT1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA9PWUubGVuZ3RoJTIsXCJLZXkgc3RyaW5nIGxlbmd0aCBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7Zm9yKHZhciB0PVtdLG89MDtvPGUubGVuZ3RoO28rPTIpdC5wdXNoKHBhcnNlSW50KGUuc3Vic3RyaW5nKG8sbysyKSwxNikpO3JldHVybiB0fSxnb29nLmNyeXB0LnN0cmluZ1RvVXRmOEJ5dGVBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbz0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZS5jaGFyQ29kZUF0KHIpOzEyOD5uP3RbbysrXT1uOigyMDQ4Pm4/dFtvKytdPW4+PjZ8MTkyOig1NTI5Nj09KDY0NTEyJm4pJiZyKzE8ZS5sZW5ndGgmJjU2MzIwPT0oNjQ1MTImZS5jaGFyQ29kZUF0KHIrMSkpPyhuPTY1NTM2KygoMTAyMyZuKTw8MTApKygxMDIzJmUuY2hhckNvZGVBdCgrK3IpKSx0W28rK109bj4+MTh8MjQwLHRbbysrXT1uPj4xMiY2M3wxMjgpOnRbbysrXT1uPj4xMnwyMjQsdFtvKytdPW4+PjYmNjN8MTI4KSx0W28rK109NjMmbnwxMjgpfXJldHVybiB0fSxnb29nLmNyeXB0LnV0ZjhCeXRlQXJyYXlUb1N0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbz0wLHI9MDtvPGUubGVuZ3RoOyl7dmFyIG49ZVtvKytdO2lmKDEyOD5uKXRbcisrXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO2Vsc2UgaWYoMTkxPG4mJjIyND5uKXt2YXIgcz1lW28rK107dFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fDYzJnMpfWVsc2UgaWYoMjM5PG4mJjM2NT5uKXtzPWVbbysrXTt2YXIgaT1lW28rK107bj0oKDcmbik8PDE4fCg2MyZzKTw8MTJ8KDYzJmkpPDw2fDYzJmVbbysrXSktNjU1MzYsdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKG4+PjEwKSksdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoNTYzMjArKDEwMjMmbikpfWVsc2Ugcz1lW28rK10saT1lW28rK10sdFtyKytdPVN0cmluZy5mcm9tQ2hhckNvZGUoKDE1Jm4pPDwxMnwoNjMmcyk8PDZ8NjMmaSl9cmV0dXJuIHQuam9pbihcIlwiKX0sZ29vZy5jcnlwdC54b3JCeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KGUubGVuZ3RoPT10Lmxlbmd0aCxcIlhPUiBhcnJheSBsZW5ndGhzIG11c3QgbWF0Y2hcIik7Zm9yKHZhciBvPVtdLHI9MDtyPGUubGVuZ3RoO3IrKylvLnB1c2goZVtyXV50W3JdKTtyZXR1cm4gb30sZ29vZy5kb20uYXNzZXJ0cz17fSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb249ZnVuY3Rpb24oZSl7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTKXt2YXIgdD1nb29nLmRvbS5hc3NlcnRzLmdldFdpbmRvd18oZSk7dCYmKCFlfHwhKGUgaW5zdGFuY2VvZiB0LkxvY2F0aW9uKSYmZSBpbnN0YW5jZW9mIHQuRWxlbWVudCkmJmdvb2cuYXNzZXJ0cy5mYWlsKFwiQXJndW1lbnQgaXMgbm90IGEgTG9jYXRpb24gKG9yIGEgbm9uLUVsZW1lbnQgbW9jayk7IGdvdDogJXNcIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oZSkpfXJldHVybiBlfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfPWZ1bmN0aW9uKGUsdCl7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTKXt2YXIgbz1nb29nLmRvbS5hc3NlcnRzLmdldFdpbmRvd18oZSk7byYmdm9pZCAwIT09b1t0XSYmKGUmJihlIGluc3RhbmNlb2Ygb1t0XXx8IShlIGluc3RhbmNlb2Ygby5Mb2NhdGlvbnx8ZSBpbnN0YW5jZW9mIG8uRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbChcIkFyZ3VtZW50IGlzIG5vdCBhICVzIChvciBhIG5vbi1FbGVtZW50LCBub24tTG9jYXRpb24gbW9jayk7IGdvdDogJXNcIix0LGdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXyhlKSkpfXJldHVybiBlfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxBbmNob3JFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxCdXR0b25FbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTExpbmtFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MTGlua0VsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW1hZ2VFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MSW1hZ2VFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTEF1ZGlvRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxWaWRlb0VsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxWaWRlb0VsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MSW5wdXRFbGVtZW50XCIpfSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFRleHRBcmVhRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTFRleHRBcmVhRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxDYW52YXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGUsXCJIVE1MQ2FudmFzRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxFbWJlZEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRm9ybUVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxGb3JtRWxlbWVudFwiKX0sZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oZSxcIkhUTUxGcmFtZUVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTElGcmFtZUVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTE9iamVjdEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhlLFwiSFRNTFNjcmlwdEVsZW1lbnRcIil9LGdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihlKXtpZighZ29vZy5pc09iamVjdChlKSlyZXR1cm4gdm9pZCAwPT09ZT9cInVuZGVmaW5lZFwiOm51bGw9PT1lP1wibnVsbFwiOnR5cGVvZiBlO3RyeXtyZXR1cm4gZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8ZS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9Y2F0Y2goZSl7cmV0dXJuXCI8b2JqZWN0IGNvdWxkIG5vdCBiZSBzdHJpbmdpZmllZD5cIn19LGdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9ZSYmZS5vd25lckRvY3VtZW50LG89dCYmKHQuZGVmYXVsdFZpZXd8fHQucGFyZW50V2luZG93KTtpZigobz1vfHxnb29nLmdsb2JhbCkuRWxlbWVudCYmby5Mb2NhdGlvbilyZXR1cm4gb31jYXRjaChlKXt9cmV0dXJuIG51bGx9LGdvb2cuZnVuY3Rpb25zPXt9LGdvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0sZ29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfSxnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGdvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV9LGdvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGUpfX0sZ29vZy5mdW5jdGlvbnMuZmFpbD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBlfX0sZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihlLHQpe3JldHVybiB0PXR8fDAsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLHQpKX19LGdvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2VdfX0sZ29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGUsdCl7dmFyIG89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHQucHVzaC5hcHBseSh0LG8pLGUuYXBwbHkodGhpcyx0KX19LGdvb2cuZnVuY3Rpb25zLndpdGhSZXR1cm5WYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmZ1bmN0aW9ucy5zZXF1ZW5jZShlLGdvb2cuZnVuY3Rpb25zLmNvbnN0YW50KHQpKX0sZ29vZy5mdW5jdGlvbnMuZXF1YWxUbz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gdD9lPT1vOmU9PT1vfX0sZ29vZy5mdW5jdGlvbnMuY29tcG9zZT1mdW5jdGlvbihlLHQpe3ZhciBvPWFyZ3VtZW50cyxyPW8ubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe3ZhciBlO3ImJihlPW9bci0xXS5hcHBseSh0aGlzLGFyZ3VtZW50cykpO2Zvcih2YXIgdD1yLTI7MDw9dDt0LS0pZT1vW3RdLmNhbGwodGhpcyxlKTtyZXR1cm4gZX19LGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxvPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZSxyPTA7cjxvO3IrKyllPXRbcl0uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlfX0sZ29vZy5mdW5jdGlvbnMuYW5kPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cyxvPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bztlKyspaWYoIXRbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiExO3JldHVybiEwfX0sZ29vZy5mdW5jdGlvbnMub3I9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLG89dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxvO2UrKylpZih0W2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19LGdvb2cuZnVuY3Rpb25zLm5vdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxnb29nLmZ1bmN0aW9ucy5jcmVhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbz1mdW5jdGlvbigpe307cmV0dXJuIG8ucHJvdG90eXBlPWUucHJvdG90eXBlLG89bmV3IG8sZS5hcHBseShvLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksb30sZ29vZy5mdW5jdGlvbnMuQ0FDSEVfUkVUVVJOX1ZBTFVFPSEwLGdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWU9ZnVuY3Rpb24oZSl7dmFyIHQsbz0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5mdW5jdGlvbnMuQ0FDSEVfUkVUVVJOX1ZBTFVFPyhvfHwodD1lKCksbz0hMCksdCk6ZSgpfX0sZ29vZy5mdW5jdGlvbnMub25jZT1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBmdW5jdGlvbigpe2lmKHQpe3ZhciBlPXQ7dD1udWxsLGUoKX19fSxnb29nLmZ1bmN0aW9ucy5kZWJvdW5jZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MDtyZXR1cm4gZnVuY3Rpb24obil7Z29vZy5nbG9iYWwuY2xlYXJUaW1lb3V0KHIpO3ZhciBzPWFyZ3VtZW50cztyPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS5hcHBseShvLHMpfSksdCl9fSxnb29nLmZ1bmN0aW9ucy50aHJvdHRsZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MCxuPSExLHM9W10saT1mdW5jdGlvbigpe3I9MCxuJiYobj0hMSxhKCkpfSxhPWZ1bmN0aW9uKCl7cj1nb29nLmdsb2JhbC5zZXRUaW1lb3V0KGksdCksZS5hcHBseShvLHMpfTtyZXR1cm4gZnVuY3Rpb24oZSl7cz1hcmd1bWVudHMscj9uPSEwOmEoKX19LGdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihlLHQsbyl7dmFyIHI9MCxuPWZ1bmN0aW9uKCl7cj0wfTtyZXR1cm4gZnVuY3Rpb24ocyl7cnx8KHI9Z29vZy5nbG9iYWwuc2V0VGltZW91dChuLHQpLGUuYXBwbHkobyxhcmd1bWVudHMpKX19LGdvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fSxnb29nLmRvbS5UYWdOYW1lPWZ1bmN0aW9uKGUpe3RoaXMudGFnTmFtZV89ZX0sZ29vZy5kb20uVGFnTmFtZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWdOYW1lX30sZ29vZy5kb20uVGFnTmFtZS5BPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQVwiKSxnb29nLmRvbS5UYWdOYW1lLkFCQlI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBQkJSXCIpLGdvb2cuZG9tLlRhZ05hbWUuQUNST05ZTT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFDUk9OWU1cIiksZ29vZy5kb20uVGFnTmFtZS5BRERSRVNTPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQUREUkVTU1wiKSxnb29nLmRvbS5UYWdOYW1lLkFQUExFVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFQUExFVFwiKSxnb29nLmRvbS5UYWdOYW1lLkFSRUE9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBUkVBXCIpLGdvb2cuZG9tLlRhZ05hbWUuQVJUSUNMRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFSVElDTEVcIiksZ29vZy5kb20uVGFnTmFtZS5BU0lERT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkFTSURFXCIpLGdvb2cuZG9tLlRhZ05hbWUuQVVESU89bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJBVURJT1wiKSxnb29nLmRvbS5UYWdOYW1lLkI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJCXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkFTRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJBU0VcIiksZ29vZy5kb20uVGFnTmFtZS5CQVNFRk9OVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJBU0VGT05UXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkRJPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQkRJXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkRPPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQkRPXCIpLGdvb2cuZG9tLlRhZ05hbWUuQklHPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQklHXCIpLGdvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkJMT0NLUVVPVEVcIiksZ29vZy5kb20uVGFnTmFtZS5CT0RZPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQk9EWVwiKSxnb29nLmRvbS5UYWdOYW1lLkJSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQlJcIiksZ29vZy5kb20uVGFnTmFtZS5CVVRUT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJCVVRUT05cIiksZ29vZy5kb20uVGFnTmFtZS5DQU5WQVM9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDQU5WQVNcIiksZ29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiQ0FQVElPTlwiKSxnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNFTlRFUlwiKSxnb29nLmRvbS5UYWdOYW1lLkNJVEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDSVRFXCIpLGdvb2cuZG9tLlRhZ05hbWUuQ09ERT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPREVcIiksZ29vZy5kb20uVGFnTmFtZS5DT0w9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJDT0xcIiksZ29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPTEdST1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkNPTU1BTkRcIiksZ29vZy5kb20uVGFnTmFtZS5EQVRBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREFUQVwiKSxnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREFUQUxJU1RcIiksZ29vZy5kb20uVGFnTmFtZS5ERD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkREXCIpLGdvb2cuZG9tLlRhZ05hbWUuREVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiREVMXCIpLGdvb2cuZG9tLlRhZ05hbWUuREVUQUlMUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkRFVEFJTFNcIiksZ29vZy5kb20uVGFnTmFtZS5ERk49bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJERk5cIiksZ29vZy5kb20uVGFnTmFtZS5ESUFMT0c9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESUFMT0dcIiksZ29vZy5kb20uVGFnTmFtZS5ESVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESVJcIiksZ29vZy5kb20uVGFnTmFtZS5ESVY9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJESVZcIiksZ29vZy5kb20uVGFnTmFtZS5ETD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkRMXCIpLGdvb2cuZG9tLlRhZ05hbWUuRFQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJEVFwiKSxnb29nLmRvbS5UYWdOYW1lLkVNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRU1cIiksZ29vZy5kb20uVGFnTmFtZS5FTUJFRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkVNQkVEXCIpLGdvb2cuZG9tLlRhZ05hbWUuRklFTERTRVQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGSUVMRFNFVFwiKSxnb29nLmRvbS5UYWdOYW1lLkZJR0NBUFRJT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGSUdDQVBUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuRklHVVJFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRklHVVJFXCIpLGdvb2cuZG9tLlRhZ05hbWUuRk9OVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkZPTlRcIiksZ29vZy5kb20uVGFnTmFtZS5GT09URVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJGT09URVJcIiksZ29vZy5kb20uVGFnTmFtZS5GT1JNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRk9STVwiKSxnb29nLmRvbS5UYWdOYW1lLkZSQU1FPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiRlJBTUVcIiksZ29vZy5kb20uVGFnTmFtZS5GUkFNRVNFVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkZSQU1FU0VUXCIpLGdvb2cuZG9tLlRhZ05hbWUuSDE9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIMVwiKSxnb29nLmRvbS5UYWdOYW1lLkgyPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSDJcIiksZ29vZy5kb20uVGFnTmFtZS5IMz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkgzXCIpLGdvb2cuZG9tLlRhZ05hbWUuSDQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJINFwiKSxnb29nLmRvbS5UYWdOYW1lLkg1PW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSDVcIiksZ29vZy5kb20uVGFnTmFtZS5INj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkg2XCIpLGdvb2cuZG9tLlRhZ05hbWUuSEVBRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhFQURcIiksZ29vZy5kb20uVGFnTmFtZS5IRUFERVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIRUFERVJcIiksZ29vZy5kb20uVGFnTmFtZS5IR1JPVVA9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJIR1JPVVBcIiksZ29vZy5kb20uVGFnTmFtZS5IUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhSXCIpLGdvb2cuZG9tLlRhZ05hbWUuSFRNTD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkhUTUxcIiksZ29vZy5kb20uVGFnTmFtZS5JPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSVwiKSxnb29nLmRvbS5UYWdOYW1lLklGUkFNRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIklGUkFNRVwiKSxnb29nLmRvbS5UYWdOYW1lLklNRz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIklNR1wiKSxnb29nLmRvbS5UYWdOYW1lLklOUFVUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSU5QVVRcIiksZ29vZy5kb20uVGFnTmFtZS5JTlM9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJJTlNcIiksZ29vZy5kb20uVGFnTmFtZS5JU0lOREVYPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiSVNJTkRFWFwiKSxnb29nLmRvbS5UYWdOYW1lLktCRD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIktCRFwiKSxnb29nLmRvbS5UYWdOYW1lLktFWUdFTj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIktFWUdFTlwiKSxnb29nLmRvbS5UYWdOYW1lLkxBQkVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTEFCRUxcIiksZ29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJMRUdFTkRcIiksZ29vZy5kb20uVGFnTmFtZS5MST1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkxJXCIpLGdvb2cuZG9tLlRhZ05hbWUuTElOSz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIkxJTktcIiksZ29vZy5kb20uVGFnTmFtZS5NQUlOPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUFJTlwiKSxnb29nLmRvbS5UYWdOYW1lLk1BUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk1BUFwiKSxnb29nLmRvbS5UYWdOYW1lLk1BUks9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJNQVJLXCIpLGdvb2cuZG9tLlRhZ05hbWUuTUFUSD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk1BVEhcIiksZ29vZy5kb20uVGFnTmFtZS5NRU5VPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVOVVwiKSxnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVOVUlURU1cIiksZ29vZy5kb20uVGFnTmFtZS5NRVRBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVUQVwiKSxnb29nLmRvbS5UYWdOYW1lLk1FVEVSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiTUVURVJcIiksZ29vZy5kb20uVGFnTmFtZS5OQVY9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJOQVZcIiksZ29vZy5kb20uVGFnTmFtZS5OT0ZSQU1FUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk5PRlJBTUVTXCIpLGdvb2cuZG9tLlRhZ05hbWUuTk9TQ1JJUFQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJOT1NDUklQVFwiKSxnb29nLmRvbS5UYWdOYW1lLk9CSkVDVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk9CSkVDVFwiKSxnb29nLmRvbS5UYWdOYW1lLk9MPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT0xcIiksZ29vZy5kb20uVGFnTmFtZS5PUFRHUk9VUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIk9QVEdST1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuT1BUSU9OPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT1BUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuT1VUUFVUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiT1VUUFVUXCIpLGdvb2cuZG9tLlRhZ05hbWUuUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBcIiksZ29vZy5kb20uVGFnTmFtZS5QQVJBTT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBBUkFNXCIpLGdvb2cuZG9tLlRhZ05hbWUuUElDVFVSRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBJQ1RVUkVcIiksZ29vZy5kb20uVGFnTmFtZS5QUkU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJQUkVcIiksZ29vZy5kb20uVGFnTmFtZS5QUk9HUkVTUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlBST0dSRVNTXCIpLGdvb2cuZG9tLlRhZ05hbWUuUT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlFcIiksZ29vZy5kb20uVGFnTmFtZS5SUD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlJQXCIpLGdvb2cuZG9tLlRhZ05hbWUuUlQ9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJSVFwiKSxnb29nLmRvbS5UYWdOYW1lLlJUQz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlJUQ1wiKSxnb29nLmRvbS5UYWdOYW1lLlJVQlk9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJSVUJZXCIpLGdvb2cuZG9tLlRhZ05hbWUuUz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNcIiksZ29vZy5kb20uVGFnTmFtZS5TQU1QPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU0FNUFwiKSxnb29nLmRvbS5UYWdOYW1lLlNDUklQVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNDUklQVFwiKSxnb29nLmRvbS5UYWdOYW1lLlNFQ1RJT049bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTRUNUSU9OXCIpLGdvb2cuZG9tLlRhZ05hbWUuU0VMRUNUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU0VMRUNUXCIpLGdvb2cuZG9tLlRhZ05hbWUuU01BTEw9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTTUFMTFwiKSxnb29nLmRvbS5UYWdOYW1lLlNPVVJDRT1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNPVVJDRVwiKSxnb29nLmRvbS5UYWdOYW1lLlNQQU49bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTUEFOXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RSSUtFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1RSSUtFXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RST05HPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1RST05HXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1RZTEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTVFlMRVwiKSxnb29nLmRvbS5UYWdOYW1lLlNVQj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlNVQlwiKSxnb29nLmRvbS5UYWdOYW1lLlNVTU1BUlk9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJTVU1NQVJZXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1VQPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1VQXCIpLGdvb2cuZG9tLlRhZ05hbWUuU1ZHPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiU1ZHXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEFCTEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUQUJMRVwiKSxnb29nLmRvbS5UYWdOYW1lLlRCT0RZPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEJPRFlcIiksZ29vZy5kb20uVGFnTmFtZS5URD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlREXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJURU1QTEFURVwiKSxnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEVYVEFSRUFcIiksZ29vZy5kb20uVGFnTmFtZS5URk9PVD1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlRGT09UXCIpLGdvb2cuZG9tLlRhZ05hbWUuVEg9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUSFwiKSxnb29nLmRvbS5UYWdOYW1lLlRIRUFEPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVEhFQURcIiksZ29vZy5kb20uVGFnTmFtZS5USU1FPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVElNRVwiKSxnb29nLmRvbS5UYWdOYW1lLlRJVExFPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVElUTEVcIiksZ29vZy5kb20uVGFnTmFtZS5UUj1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlRSXCIpLGdvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJUUkFDS1wiKSxnb29nLmRvbS5UYWdOYW1lLlRUPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVFRcIiksZ29vZy5kb20uVGFnTmFtZS5VPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVVwiKSxnb29nLmRvbS5UYWdOYW1lLlVMPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiVUxcIiksZ29vZy5kb20uVGFnTmFtZS5WQVI9bmV3IGdvb2cuZG9tLlRhZ05hbWUoXCJWQVJcIiksZ29vZy5kb20uVGFnTmFtZS5WSURFTz1uZXcgZ29vZy5kb20uVGFnTmFtZShcIlZJREVPXCIpLGdvb2cuZG9tLlRhZ05hbWUuV0JSPW5ldyBnb29nLmRvbS5UYWdOYW1lKFwiV0JSXCIpLGdvb2cuZG9tLnRhZ3M9e30sZ29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sZ29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bZV19LGdvb2cuaHRtbD17fSxnb29nLmh0bWwudHJ1c3RlZHR5cGVzPXt9LGdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrXCIjaHRtbFwiKTpudWxsLGdvb2cuc3RyaW5nPXt9LGdvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fSxnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihlLHQpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1lPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJnR8fFwiXCIsdGhpcy5TVFJJTkdfQ09OU1RfVFlQRV9NQVJLRVJfX0dPT0dfU1RSSU5HX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuc3RyaW5nLkNvbnN0LlRZUEVfTUFSS0VSX30sZ29vZy5zdHJpbmcuQ29uc3QucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5zdHJpbmcuQ29uc3QucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJpbmdDb25zdFZhbHVlV2l0aFNlY3VyaXR5Q29udHJhY3RfX2dvb2dTdHJpbmdTZWN1cml0eVByaXZhdGVffSxnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIkNvbnN0e1wiK3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXytcIn1cIn0sZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3QmJmUuY29uc3RydWN0b3I9PT1nb29nLnN0cmluZy5Db25zdCYmZS5TVFJJTkdfQ09OU1RfVFlQRV9NQVJLRVJfX0dPT0dfU1RSSU5HX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5zdHJpbmcuQ29uc3QuVFlQRV9NQVJLRVJfP2Uuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBDb25zdCwgZ290ICdcIitlK1wiJ1wiKSxcInR5cGVfZXJyb3I6Q29uc3RcIil9LGdvb2cuc3RyaW5nLkNvbnN0LmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBnb29nLnN0cmluZy5Db25zdChnb29nLnN0cmluZy5Db25zdC5HT09HX1NUUklOR19DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXyxlKX0sZ29vZy5zdHJpbmcuQ29uc3QuVFlQRV9NQVJLRVJfPXt9LGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfPXt9LGdvb2cuc3RyaW5nLkNvbnN0LkVNUFRZPWdvb2cuc3RyaW5nLkNvbnN0LmZyb20oXCJcIiksZ29vZy5odG1sLlNhZmVTY3JpcHQ9ZnVuY3Rpb24oKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTY3JpcHRXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy5TQUZFX1NDUklQVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVTY3JpcHQuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVffSxnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMCxnb29nLmh0bWwuU2FmZVNjcmlwdC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVTY3JpcHQuZnJvbUNvbnN0YW50PWZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpKS5sZW5ndGg/Z29vZy5odG1sLlNhZmVTY3JpcHQuRU1QVFk6Z29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5mcm9tQ29uc3RhbnRBbmRBcmdzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW8ucHVzaChnb29nLmh0bWwuU2FmZVNjcmlwdC5zdHJpbmdpZnlfKGFyZ3VtZW50c1tyXSkpO3JldHVybiBnb29nLmh0bWwuU2FmZVNjcmlwdC5jcmVhdGVTYWZlU2NyaXB0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCIoXCIrZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpK1wiKShcIitvLmpvaW4oXCIsIFwiKStcIik7XCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5mcm9tSnNvbj1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuaHRtbC5TYWZlU2NyaXB0LnN0cmluZ2lmeV8oZSkpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTY3JpcHRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuREVCVUcmJihnb29nLmh0bWwuU2FmZVNjcmlwdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlNhZmVTY3JpcHR7XCIrdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXytcIn1cIn0pLGdvb2cuaHRtbC5TYWZlU2NyaXB0LnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVTY3JpcHQudW53cmFwVHJ1c3RlZFNjcmlwdChlKS50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC51bndyYXBUcnVzdGVkU2NyaXB0PWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTY3JpcHQmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZVNjcmlwdCYmZS5TQUZFX1NDUklQVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLmh0bWwuU2FmZVNjcmlwdC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBTYWZlU2NyaXB0LCBnb3QgJ1wiK2UrXCInIG9mIHR5cGUgXCIrZ29vZy50eXBlT2YoZSkpLFwidHlwZV9lcnJvcjpTYWZlU2NyaXB0XCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5zdHJpbmdpZnlfPWZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKS5yZXBsYWNlKC88L2csXCJcXFxceDNjXCIpfSxnb29nLmh0bWwuU2FmZVNjcmlwdC5jcmVhdGVTYWZlU2NyaXB0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oZSl7cmV0dXJuKG5ldyBnb29nLmh0bWwuU2FmZVNjcmlwdCkuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXyhlKX0sZ29vZy5odG1sLlNhZmVTY3JpcHQucHJvdG90eXBlLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QUklWQVRFX0RPX05PVF9BQ0NFU1NfT1JfRUxTRV9QT0xJQ1k/Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QUklWQVRFX0RPX05PVF9BQ0NFU1NfT1JfRUxTRV9QT0xJQ1kuY3JlYXRlU2NyaXB0KGUpOmUsdGhpc30sZ29vZy5odG1sLlNhZmVTY3JpcHQuRU1QVFk9Z29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cuZnM9e30sZ29vZy5mcy51cmw9e30sZ29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfKCkuY3JlYXRlT2JqZWN0VVJMKGUpfSxnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmw9ZnVuY3Rpb24oZSl7Z29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLnJldm9rZU9iamVjdFVSTChlKX0sZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfKCk7aWYobnVsbCE9ZSlyZXR1cm4gZTt0aHJvdyBFcnJvcihcIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHNcIil9LGdvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuaXNEZWYoZ29vZy5nbG9iYWwuVVJMKSYmZ29vZy5pc0RlZihnb29nLmdsb2JhbC5VUkwuY3JlYXRlT2JqZWN0VVJMKT9nb29nLmdsb2JhbC5VUkw6Z29vZy5pc0RlZihnb29nLmdsb2JhbC53ZWJraXRVUkwpJiZnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLndlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwpP2dvb2cuZ2xvYmFsLndlYmtpdFVSTDpnb29nLmlzRGVmKGdvb2cuZ2xvYmFsLmNyZWF0ZU9iamVjdFVSTCk/Z29vZy5nbG9iYWw6bnVsbH0sZ29vZy5mcy51cmwuYnJvd3NlclN1cHBvcnRzT2JqZWN0VXJscz1mdW5jdGlvbigpe3JldHVybiBudWxsIT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpfSxnb29nLmkxOG49e30sZ29vZy5pMThuLmJpZGk9e30sZ29vZy5pMThuLmJpZGkuRk9SQ0VfUlRMPSExLGdvb2cuaTE4bi5iaWRpLklTX1JUTD1nb29nLmkxOG4uYmlkaS5GT1JDRV9SVEx8fChcImFyXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwiZmFcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJoZVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpfHxcIml3XCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwicHNcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJzZFwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpfHxcInVnXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDIpLnRvTG93ZXJDYXNlKCl8fFwidXJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDAsMikudG9Mb3dlckNhc2UoKXx8XCJ5aVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpKSYmKDI9PWdvb2cuTE9DQUxFLmxlbmd0aHx8XCItXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygyLDMpfHxcIl9cIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDIsMykpfHwzPD1nb29nLkxPQ0FMRS5sZW5ndGgmJlwiY2tiXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygwLDMpLnRvTG93ZXJDYXNlKCkmJigzPT1nb29nLkxPQ0FMRS5sZW5ndGh8fFwiLVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw0KXx8XCJfXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDQpKXx8Nzw9Z29vZy5MT0NBTEUubGVuZ3RoJiYoXCItXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygyLDMpfHxcIl9cIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDIsMykpJiYoXCJhZGxtXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDcpLnRvTG93ZXJDYXNlKCl8fFwiYXJhYlwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw3KS50b0xvd2VyQ2FzZSgpfHxcImhlYnJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDMsNykudG9Mb3dlckNhc2UoKXx8XCJua29vXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDcpLnRvTG93ZXJDYXNlKCl8fFwicm9oZ1wiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw3KS50b0xvd2VyQ2FzZSgpfHxcInRoYWFcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDMsNykudG9Mb3dlckNhc2UoKSl8fDg8PWdvb2cuTE9DQUxFLmxlbmd0aCYmKFwiLVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoMyw0KXx8XCJfXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZygzLDQpKSYmKFwiYWRsbVwiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoNCw4KS50b0xvd2VyQ2FzZSgpfHxcImFyYWJcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDQsOCkudG9Mb3dlckNhc2UoKXx8XCJoZWJyXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZyg0LDgpLnRvTG93ZXJDYXNlKCl8fFwibmtvb1wiPT1nb29nLkxPQ0FMRS5zdWJzdHJpbmcoNCw4KS50b0xvd2VyQ2FzZSgpfHxcInJvaGdcIj09Z29vZy5MT0NBTEUuc3Vic3RyaW5nKDQsOCkudG9Mb3dlckNhc2UoKXx8XCJ0aGFhXCI9PWdvb2cuTE9DQUxFLnN1YnN0cmluZyg0LDgpLnRvTG93ZXJDYXNlKCkpLGdvb2cuaTE4bi5iaWRpLkZvcm1hdD17TFJFOlwi4oCqXCIsUkxFOlwi4oCrXCIsUERGOlwi4oCsXCIsTFJNOlwi4oCOXCIsUkxNOlwi4oCPXCJ9LGdvb2cuaTE4bi5iaWRpLkRpcj17TFRSOjEsUlRMOi0xLE5FVVRSQUw6MH0sZ29vZy5pMThuLmJpZGkuUklHSFQ9XCJyaWdodFwiLGdvb2cuaTE4bi5iaWRpLkxFRlQ9XCJsZWZ0XCIsZ29vZy5pMThuLmJpZGkuSTE4Tl9SSUdIVD1nb29nLmkxOG4uYmlkaS5JU19SVEw/Z29vZy5pMThuLmJpZGkuTEVGVDpnb29nLmkxOG4uYmlkaS5SSUdIVCxnb29nLmkxOG4uYmlkaS5JMThOX0xFRlQ9Z29vZy5pMThuLmJpZGkuSVNfUlRMP2dvb2cuaTE4bi5iaWRpLlJJR0hUOmdvb2cuaTE4bi5iaWRpLkxFRlQsZ29vZy5pMThuLmJpZGkudG9EaXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT8wPGU/Z29vZy5pMThuLmJpZGkuRGlyLkxUUjowPmU/Z29vZy5pMThuLmJpZGkuRGlyLlJUTDp0P251bGw6Z29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUw6bnVsbD09ZT9udWxsOmU/Z29vZy5pMThuLmJpZGkuRGlyLlJUTDpnb29nLmkxOG4uYmlkaS5EaXIuTFRSfSxnb29nLmkxOG4uYmlkaS5sdHJDaGFyc189XCJBLVphLXrDgC3DlsOYLcO2w7gtyrjMgC3WkOCkgC3hv7/igI7isIAtXFx1ZDgwMVxcdWQ4MDQtXFx1ZDgzOVxcdWQ4M2MtXFx1ZGJmZu+kgC3vrJzvuIAt77mv77u9Le+/v1wiLGdvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXz1cItaRLduv27ot4KO/4oCPXFx1ZDgwMi1cXHVkODAzXFx1ZDgzYS1cXHVkODNi76ydLe+3v++5sC3vu7xcIixnb29nLmkxOG4uYmlkaS5odG1sU2tpcFJlZ189LzxbXj5dKj58JlteO10rOy9nLGdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXz1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZShnb29nLmkxOG4uYmlkaS5odG1sU2tpcFJlZ18sXCJcIik6ZX0sZ29vZy5pMThuLmJpZGkucnRsQ2hhclJlZ189bmV3IFJlZ0V4cChcIltcIitnb29nLmkxOG4uYmlkaS5ydGxDaGFyc18rXCJdXCIpLGdvb2cuaTE4bi5iaWRpLmx0ckNoYXJSZWdfPW5ldyBSZWdFeHAoXCJbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5oYXNBbnlSdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsQ2hhclJlZ18udGVzdChnb29nLmkxOG4uYmlkaS5zdHJpcEh0bWxJZk5lZWRlZF8oZSx0KSl9LGdvb2cuaTE4bi5iaWRpLmhhc1J0bENoYXI9Z29vZy5pMThuLmJpZGkuaGFzQW55UnRsLGdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cj1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJDaGFyUmVnXy50ZXN0KGdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXyhlLHQpKX0sZ29vZy5pMThuLmJpZGkubHRyUmVfPW5ldyBSZWdFeHAoXCJeW1wiK2dvb2cuaTE4bi5iaWRpLmx0ckNoYXJzXytcIl1cIiksZ29vZy5pMThuLmJpZGkucnRsUmVfPW5ldyBSZWdFeHAoXCJeW1wiK2dvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXytcIl1cIiksZ29vZy5pMThuLmJpZGkuaXNSdGxDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmkxOG4uYmlkaS5ydGxSZV8udGVzdChlKX0sZ29vZy5pMThuLmJpZGkuaXNMdHJDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJSZV8udGVzdChlKX0sZ29vZy5pMThuLmJpZGkuaXNOZXV0cmFsQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4hZ29vZy5pMThuLmJpZGkuaXNMdHJDaGFyKGUpJiYhZ29vZy5pMThuLmJpZGkuaXNSdGxDaGFyKGUpfSxnb29nLmkxOG4uYmlkaS5sdHJEaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiXlteXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXSpbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5ydGxEaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiXlteXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXSpbXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXVwiKSxnb29nLmkxOG4uYmlkaS5zdGFydHNXaXRoUnRsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLnJ0bERpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc1J0bFRleHQ9Z29vZy5pMThuLmJpZGkuc3RhcnRzV2l0aFJ0bCxnb29nLmkxOG4uYmlkaS5zdGFydHNXaXRoTHRyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLmx0ckRpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc0x0clRleHQ9Z29vZy5pMThuLmJpZGkuc3RhcnRzV2l0aEx0cixnb29nLmkxOG4uYmlkaS5pc1JlcXVpcmVkTHRyUmVfPS9eaHR0cDpcXC9cXC8uKi8sZ29vZy5pMThuLmJpZGkuaXNOZXV0cmFsVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWdvb2cuaTE4bi5iaWRpLnN0cmlwSHRtbElmTmVlZGVkXyhlLHQpLGdvb2cuaTE4bi5iaWRpLmlzUmVxdWlyZWRMdHJSZV8udGVzdChlKXx8IWdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cihlKSYmIWdvb2cuaTE4bi5iaWRpLmhhc0FueVJ0bChlKX0sZ29vZy5pMThuLmJpZGkubHRyRXhpdERpckNoZWNrUmVfPW5ldyBSZWdFeHAoXCJbXCIrZ29vZy5pMThuLmJpZGkubHRyQ2hhcnNfK1wiXVteXCIrZ29vZy5pMThuLmJpZGkucnRsQ2hhcnNfK1wiXSokXCIpLGdvb2cuaTE4bi5iaWRpLnJ0bEV4aXREaXJDaGVja1JlXz1uZXcgUmVnRXhwKFwiW1wiK2dvb2cuaTE4bi5iaWRpLnJ0bENoYXJzXytcIl1bXlwiK2dvb2cuaTE4bi5iaWRpLmx0ckNoYXJzXytcIl0qJFwiKSxnb29nLmkxOG4uYmlkaS5lbmRzV2l0aEx0cj1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmkxOG4uYmlkaS5sdHJFeGl0RGlyQ2hlY2tSZV8udGVzdChnb29nLmkxOG4uYmlkaS5zdHJpcEh0bWxJZk5lZWRlZF8oZSx0KSl9LGdvb2cuaTE4bi5iaWRpLmlzTHRyRXhpdFRleHQ9Z29vZy5pMThuLmJpZGkuZW5kc1dpdGhMdHIsZ29vZy5pMThuLmJpZGkuZW5kc1dpdGhSdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsRXhpdERpckNoZWNrUmVfLnRlc3QoZ29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkpfSxnb29nLmkxOG4uYmlkaS5pc1J0bEV4aXRUZXh0PWdvb2cuaTE4bi5iaWRpLmVuZHNXaXRoUnRsLGdvb2cuaTE4bi5iaWRpLnJ0bExvY2FsZXNSZV89L14oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pL2ksZ29vZy5pMThuLmJpZGkuaXNSdGxMYW5ndWFnZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkucnRsTG9jYWxlc1JlXy50ZXN0KGUpfSxnb29nLmkxOG4uYmlkaS5icmFja2V0R3VhcmRUZXh0UmVfPS8oXFwoLio/XFwpKyl8KFxcWy4qP1xcXSspfChcXHsuKj9cXH0rKXwoPC4qPz4rKS9nLGdvb2cuaTE4bi5iaWRpLmd1YXJkQnJhY2tldEluVGV4dD1mdW5jdGlvbihlLHQpe3JldHVybiB0PSh2b2lkIDA9PT10P2dvb2cuaTE4bi5iaWRpLmhhc0FueVJ0bChlKTp0KT9nb29nLmkxOG4uYmlkaS5Gb3JtYXQuUkxNOmdvb2cuaTE4bi5iaWRpLkZvcm1hdC5MUk0sZS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLmJyYWNrZXRHdWFyZFRleHRSZV8sdCtcIiQmXCIrdCl9LGdvb2cuaTE4bi5iaWRpLmVuZm9yY2VSdGxJbkh0bWw9ZnVuY3Rpb24oZSl7cmV0dXJuXCI8XCI9PWUuY2hhckF0KDApP2UucmVwbGFjZSgvPFxcdysvLFwiJCYgZGlyPXJ0bFwiKTpcIlxcbjxzcGFuIGRpcj1ydGw+XCIrZStcIjwvc3Bhbj5cIn0sZ29vZy5pMThuLmJpZGkuZW5mb3JjZVJ0bEluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRm9ybWF0LlJMRStlK2dvb2cuaTE4bi5iaWRpLkZvcm1hdC5QREZ9LGdvb2cuaTE4bi5iaWRpLmVuZm9yY2VMdHJJbkh0bWw9ZnVuY3Rpb24oZSl7cmV0dXJuXCI8XCI9PWUuY2hhckF0KDApP2UucmVwbGFjZSgvPFxcdysvLFwiJCYgZGlyPWx0clwiKTpcIlxcbjxzcGFuIGRpcj1sdHI+XCIrZStcIjwvc3Bhbj5cIn0sZ29vZy5pMThuLmJpZGkuZW5mb3JjZUx0ckluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRm9ybWF0LkxSRStlK2dvb2cuaTE4bi5iaWRpLkZvcm1hdC5QREZ9LGdvb2cuaTE4bi5iaWRpLmRpbWVuc2lvbnNSZV89LzpcXHMqKFsuXFxkXVsuXFx3XSopXFxzKyhbLlxcZF1bLlxcd10qKVxccysoWy5cXGRdWy5cXHddKilcXHMrKFsuXFxkXVsuXFx3XSopL2csZ29vZy5pMThuLmJpZGkubGVmdFJlXz0vbGVmdC9naSxnb29nLmkxOG4uYmlkaS5yaWdodFJlXz0vcmlnaHQvZ2ksZ29vZy5pMThuLmJpZGkudGVtcFJlXz0vJSUlJS9nLGdvb2cuaTE4bi5iaWRpLm1pcnJvckNTUz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLmRpbWVuc2lvbnNSZV8sXCI6JDEgJDQgJDMgJDJcIikucmVwbGFjZShnb29nLmkxOG4uYmlkaS5sZWZ0UmVfLFwiJSUlJVwiKS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLnJpZ2h0UmVfLGdvb2cuaTE4bi5iaWRpLkxFRlQpLnJlcGxhY2UoZ29vZy5pMThuLmJpZGkudGVtcFJlXyxnb29nLmkxOG4uYmlkaS5SSUdIVCl9LGdvb2cuaTE4bi5iaWRpLmRvdWJsZVF1b3RlU3Vic3RpdHV0ZVJlXz0vKFtcXHUwNTkxLVxcdTA1ZjJdKVwiL2csZ29vZy5pMThuLmJpZGkuc2luZ2xlUXVvdGVTdWJzdGl0dXRlUmVfPS8oW1xcdTA1OTEtXFx1MDVmMl0pJy9nLGdvb2cuaTE4bi5iaWRpLm5vcm1hbGl6ZUhlYnJld1F1b3RlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoZ29vZy5pMThuLmJpZGkuZG91YmxlUXVvdGVTdWJzdGl0dXRlUmVfLFwiJDHXtFwiKS5yZXBsYWNlKGdvb2cuaTE4bi5iaWRpLnNpbmdsZVF1b3RlU3Vic3RpdHV0ZVJlXyxcIiQx17NcIil9LGdvb2cuaTE4bi5iaWRpLndvcmRTZXBhcmF0b3JSZV89L1xccysvLGdvb2cuaTE4bi5iaWRpLmhhc051bWVyYWxzUmVfPS9bXFxkXFx1MDZmMC1cXHUwNmY5XS8sZ29vZy5pMThuLmJpZGkucnRsRGV0ZWN0aW9uVGhyZXNob2xkXz0uNCxnb29nLmkxOG4uYmlkaS5lc3RpbWF0ZURpcmVjdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBvPTAscj0wLG49ITE7Zm9yKGU9Z29vZy5pMThuLmJpZGkuc3RyaXBIdG1sSWZOZWVkZWRfKGUsdCkuc3BsaXQoZ29vZy5pMThuLmJpZGkud29yZFNlcGFyYXRvclJlXyksdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcz1lW3RdO2dvb2cuaTE4bi5iaWRpLnN0YXJ0c1dpdGhSdGwocyk/KG8rKyxyKyspOmdvb2cuaTE4bi5iaWRpLmlzUmVxdWlyZWRMdHJSZV8udGVzdChzKT9uPSEwOmdvb2cuaTE4bi5iaWRpLmhhc0FueUx0cihzKT9yKys6Z29vZy5pMThuLmJpZGkuaGFzTnVtZXJhbHNSZV8udGVzdChzKSYmKG49ITApfXJldHVybiAwPT1yP24/Z29vZy5pMThuLmJpZGkuRGlyLkxUUjpnb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTDpvL3I+Z29vZy5pMThuLmJpZGkucnRsRGV0ZWN0aW9uVGhyZXNob2xkXz9nb29nLmkxOG4uYmlkaS5EaXIuUlRMOmdvb2cuaTE4bi5iaWRpLkRpci5MVFJ9LGdvb2cuaTE4bi5iaWRpLmRldGVjdFJ0bERpcmVjdGlvbmFsaXR5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaTE4bi5iaWRpLmVzdGltYXRlRGlyZWN0aW9uKGUsdCk9PWdvb2cuaTE4bi5iaWRpLkRpci5SVEx9LGdvb2cuaTE4bi5iaWRpLnNldEVsZW1lbnREaXJBbmRBbGlnbj1mdW5jdGlvbihlLHQpe2UmJih0PWdvb2cuaTE4bi5iaWRpLnRvRGlyKHQpKSYmKGUuc3R5bGUudGV4dEFsaWduPXQ9PWdvb2cuaTE4bi5iaWRpLkRpci5SVEw/Z29vZy5pMThuLmJpZGkuUklHSFQ6Z29vZy5pMThuLmJpZGkuTEVGVCxlLmRpcj10PT1nb29nLmkxOG4uYmlkaS5EaXIuUlRMP1wicnRsXCI6XCJsdHJcIil9LGdvb2cuaTE4bi5iaWRpLnNldEVsZW1lbnREaXJCeVRleHREaXJlY3Rpb25hbGl0eT1mdW5jdGlvbihlLHQpe3N3aXRjaChnb29nLmkxOG4uYmlkaS5lc3RpbWF0ZURpcmVjdGlvbih0KSl7Y2FzZSBnb29nLmkxOG4uYmlkaS5EaXIuTFRSOmUuZGlyPVwibHRyXCI7YnJlYWs7Y2FzZSBnb29nLmkxOG4uYmlkaS5EaXIuUlRMOmUuZGlyPVwicnRsXCI7YnJlYWs7ZGVmYXVsdDplLnJlbW92ZUF0dHJpYnV0ZShcImRpclwiKX19LGdvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nPWZ1bmN0aW9uKCl7fSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy50cnVzdGVkVVJMXz1udWxsLHRoaXMuVFJVU1RFRF9SRVNPVVJDRV9VUkxfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVffSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwucHJvdG90eXBlLmltcGxlbWVudHNHb29nSTE4bkJpZGlEaXJlY3Rpb25hbFN0cmluZz0hMCxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRGlyLkxUUn0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcykscj0obz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMobykpWzNdfHxcIlwiO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG9bMV0rZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfKFwiP1wiLG9bMl18fFwiXCIsZSkrZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfKFwiI1wiLHIsdCkpfSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlRydXN0ZWRSZXNvdXJjZVVybHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVRydXN0ZWRSZXNvdXJjZVVybFdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGUpLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJiZlLlRSVVNURURfUkVTT1VSQ0VfVVJMX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfP2UucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBUcnVzdGVkUmVzb3VyY2VVcmwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybFwiKX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRydXN0ZWRVUkxfP2UudHJ1c3RlZFVSTF86Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoZSl9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuZm9ybWF0PWZ1bmN0aW9uKGUsdCl7dmFyIG89Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpO2lmKCFnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkJBU0VfVVJMXy50ZXN0KG8pKXRocm93IEVycm9yKFwiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiBcIitvKTtyZXR1cm4gZT1vLnJlcGxhY2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5GT1JNQVRfTUFSS0VSXywoZnVuY3Rpb24oZSxyKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgXCInK3IrJ1wiLCBpbiBmb3JtYXQgc3RyaW5nLCBcIicrbysnXCIsIGJ1dCBubyB2YWxpZCBsYWJlbCBtYXBwaW5nIGZvdW5kIGluIGFyZ3M6ICcrSlNPTi5zdHJpbmdpZnkodCkpO3JldHVybihlPXRbcl0paW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdD9nb29nLnN0cmluZy5Db25zdC51bndyYXAoZSk6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSl9KSksZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5GT1JNQVRfTUFSS0VSXz0vJXsoXFx3Kyl9L2csZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF89L14oKGh0dHBzOik/XFwvXFwvWzAtOWEtei46W1xcXS1dK1xcL3xcXC9bXi9cXFxcXXxbXjovXFxcXCVdK1xcL3xbXjovXFxcXCVdKls/I118YWJvdXQ6YmxhbmsjKS9pLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuVVJMX1BBUkFNX1BBUlNFUl89L14oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChlLHQpLmNsb25lV2l0aFBhcmFtcyhvLHIpfSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpfSxnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVwiXCIsbz0wO288ZS5sZW5ndGg7bysrKXQrPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlW29dKTtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZT1mdW5jdGlvbihlKXt2YXIgdD1uZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybDtyZXR1cm4gdC5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZP2dvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZLmNyZWF0ZVNjcmlwdFVSTChlKTplLGdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZJiYodC50cnVzdGVkVVJMXz1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWS5jcmVhdGVVUkwoZSkpLHR9LGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXz1mdW5jdGlvbihlLHQsbyl7aWYobnVsbD09bylyZXR1cm4gdDtpZihnb29nLmlzU3RyaW5nKG8pKXJldHVybiBvP2UrZW5jb2RlVVJJQ29tcG9uZW50KG8pOlwiXCI7Zm9yKHZhciByIGluIG8pe3ZhciBuPW9bcl07bj1nb29nLmlzQXJyYXkobik/bjpbbl07Zm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspe3ZhciBpPW5bc107bnVsbCE9aSYmKHR8fCh0PWUpLHQrPSh0Lmxlbmd0aD5lLmxlbmd0aD9cIiZcIjpcIlwiKStlbmNvZGVVUklDb21wb25lbnQocikrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpKSkpfX1yZXR1cm4gdH0sZ29vZy5zdHJpbmcuaW50ZXJuYWw9e30sZ29vZy5zdHJpbmcuaW50ZXJuYWwuc3RhcnRzV2l0aD1mdW5jdGlvbihlLHQpe3JldHVybiAwPT1lLmxhc3RJbmRleE9mKHQsMCl9LGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG89ZS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIDA8PW8mJmUuaW5kZXhPZih0LG8pPT1vfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUodCxlLnN1YnN0cigwLHQubGVuZ3RoKSl9LGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVuZHNXaXRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUodCxlLnN1YnN0cihlLmxlbmd0aC10Lmxlbmd0aCx0Lmxlbmd0aCkpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpPT10LnRvTG93ZXJDYXNlKCl9LGdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuL15bXFxzXFx4YTBdKiQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoZSlbMV19LGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZT1TdHJpbmcoZSkudG9Mb3dlckNhc2UoKSk8KHQ9U3RyaW5nKHQpLnRvTG93ZXJDYXNlKCkpPy0xOmU9PXQ/MDoxfSxnb29nLnN0cmluZy5pbnRlcm5hbC5uZXdMaW5lVG9Ccj1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikvZyx0P1wiPGJyIC8+XCI6XCI8YnI+XCIpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlPWZ1bmN0aW9uKGUsdCl7aWYodCllPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5BTVBfUkVfLFwiJmFtcDtcIikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5MVF9SRV8sXCImbHQ7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLFwiJmd0O1wiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfLFwiJnF1b3Q7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXyxcIiYjMzk7XCIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sXCImIzA7XCIpO2Vsc2V7aWYoIWdvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV8udGVzdChlKSlyZXR1cm4gZTstMSE9ZS5pbmRleE9mKFwiJlwiKSYmKGU9ZS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkFNUF9SRV8sXCImYW1wO1wiKSksLTEhPWUuaW5kZXhPZihcIjxcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5MVF9SRV8sXCImbHQ7XCIpKSwtMSE9ZS5pbmRleE9mKFwiPlwiKSYmKGU9ZS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXyxcIiZndDtcIikpLC0xIT1lLmluZGV4T2YoJ1wiJykmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXyxcIiZxdW90O1wiKSksLTEhPWUuaW5kZXhPZihcIidcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLFwiJiMzOTtcIikpLC0xIT1lLmluZGV4T2YoXCJcXDBcIikmJihlPWUucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXyxcIiYjMDtcIikpfXJldHVybiBlfSxnb29nLnN0cmluZy5pbnRlcm5hbC5BTVBfUkVfPS8mL2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfPS88L2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfPS8+L2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV89L1wiL2csZ29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nLGdvb2cuc3RyaW5nLmludGVybmFsLk5VTExfUkVfPS9cXHgwMC9nLGdvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tcXHgwMCY8PlwiJ10vLGdvb2cuc3RyaW5nLmludGVybmFsLndoaXRlc3BhY2VFc2NhcGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnIoZS5yZXBsYWNlKC8gIC9nLFwiICYjMTYwO1wiKSx0KX0sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMSE9ZS5pbmRleE9mKHQpfSxnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLnRvTG93ZXJDYXNlKCksdC50b0xvd2VyQ2FzZSgpKX0sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIG89MDtlPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGUpKS5zcGxpdChcIi5cIiksdD1nb29nLnN0cmluZy5pbnRlcm5hbC50cmltKFN0cmluZyh0KSkuc3BsaXQoXCIuXCIpO2Zvcih2YXIgcj1NYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCksbj0wOzA9PW8mJm48cjtuKyspe3ZhciBzPWVbbl18fFwiXCIsaT10W25dfHxcIlwiO2Rve2lmKHM9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMocyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXSxpPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGkpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl0sMD09c1swXS5sZW5ndGgmJjA9PWlbMF0ubGVuZ3RoKWJyZWFrO289MD09c1sxXS5sZW5ndGg/MDpwYXJzZUludChzWzFdLDEwKTt2YXIgYT0wPT1pWzFdLmxlbmd0aD8wOnBhcnNlSW50KGlbMV0sMTApO289Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXyhvLGEpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKDA9PXNbMl0ubGVuZ3RoLDA9PWlbMl0ubGVuZ3RoKXx8Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXyhzWzJdLGlbMl0pLHM9c1szXSxpPWlbM119d2hpbGUoMD09byl9cmV0dXJuIG99LGdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c189ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9LGdvb2cuaHRtbC5TYWZlVXJsPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXz1cIlwiLHRoaXMuU0FGRV9VUkxfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPWdvb2cuaHRtbC5TYWZlVXJsLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORz1cImFib3V0OmludmFsaWQjekNsb3N1cmV6XCIsZ29vZy5odG1sLlNhZmVVcmwucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVVcmwucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dJMThuQmlkaURpcmVjdGlvbmFsU3RyaW5nPSEwLGdvb2cuaHRtbC5TYWZlVXJsLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pMThuLmJpZGkuRGlyLkxUUn0sZ29vZy5ERUJVRyYmKGdvb2cuaHRtbC5TYWZlVXJsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiU2FmZVVybHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfK1wifVwifSksZ29vZy5odG1sLlNhZmVVcmwudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKGUpLnRvU3RyaW5nKCl9LGdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCYmZS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5TYWZlVXJsJiZlLlNBRkVfVVJMX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5TYWZlVXJsLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz9lLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfOihnb29nLmFzc2VydHMuZmFpbChcImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlNhZmVVcmxcIil9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSl9LGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXz0vXig/OmF1ZGlvXFwvKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LXdhdnx3YXZ8d2VibSl8aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnB8eC1pY29uKXx0ZXh0XFwvY3N2fHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm18cXVpY2t0aW1lKSkoPzo7XFx3Kz0oPzpcXHcrfFwiW1xcdzs9XStcIikpKiQvaSxnb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNBRkVfTUlNRV9UWVBFX1BBVFRFUk5fLnRlc3QoZSl9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21CbG9iPWZ1bmN0aW9uKGUpe3JldHVybiBlPWdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGUudHlwZSk/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGUpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcsZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl89L15kYXRhOihbXixdKik7YmFzZTY0LFthLXowLTkrXFwvXSs9KiQvaSxnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihlKXt2YXIgdD0oZT1lLnJlcGxhY2UoLyglMEF8JTBEKS9nLFwiXCIpKS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pO3JldHVybiB0PXQmJmdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KHRbMV0pLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0P2U6Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyl9LGdvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgoZSxcInRlbDpcIil8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNJUF9VUkxfUEFUVEVSTl89L15zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQvaSxnb29nLmh0bWwuU2FmZVVybC5mcm9tU2lwVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChlKSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbUZhY2Vib29rTWVzc2VuZ2VyVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGUsXCJmYi1tZXNzZW5nZXI6Ly9zaGFyZVwiKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgoZSxcIndoYXRzYXBwOi8vc2VuZFwiKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpfSxnb29nLmh0bWwuU2FmZVVybC5mcm9tU21zVXJsPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGUsXCJzbXM6XCIpJiZnb29nLmh0bWwuU2FmZVVybC5pc1Ntc1VybEJvZHlWYWxpZF8oZSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5kZXhPZihcIiNcIik7aWYoMDx0JiYoZT1lLnN1YnN0cmluZygwLHQpKSwhKHQ9ZS5tYXRjaCgvWz8mXWJvZHk9L2dpKSkpcmV0dXJuITA7aWYoMTx0Lmxlbmd0aClyZXR1cm4hMTtpZighKGU9ZS5tYXRjaCgvWz8mXWJvZHk9KFteJl0qKS8pWzFdKSlyZXR1cm4hMDt0cnl7ZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKGUpe3JldHVybiExfXJldHVybi9eKD86W2EtejAtOVxcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChlKX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChlLFwic3NoOi8vXCIpfHwoZT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKSxnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZSl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQ2hyb21lRXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXmNocm9tZS1leHRlbnNpb246XFwvXFwvKFteXFwvXSspXFwvLyxlLHQpfSxnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUZpcmVmb3hFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9ebW96LWV4dGVuc2lvbjpcXC9cXC8oW15cXC9dKylcXC8vLGUsdCl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcXC9cXC8oW15cXC9dKylcXC8vLGUsdCl9LGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihlLHQsbyl7cmV0dXJuKGU9ZS5leGVjKHQpKT8oZT1lWzFdLC0xPT0obyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAobyldOm8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpfSkpKS5pbmRleE9mKGUpJiYodD1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKSk6dD1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlNhZmVVcmwuZnJvbVRydXN0ZWRSZXNvdXJjZVVybD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGUpKX0sZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pLGdvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/ZTooZT1cIm9iamVjdFwiPT10eXBlb2YgZSYmZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2UuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhlKSxnb29nLmh0bWwuU0FGRV9VUkxfUEFUVEVSTl8udGVzdChlKXx8KGU9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpKX0sZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2U6KGU9XCJvYmplY3RcIj09dHlwZW9mIGUmJmUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9lLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoZSksdCYmL15kYXRhOi9pLnRlc3QoZSkmJih0PWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGUpKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk9PWU/dDooZ29vZy5hc3NlcnRzLmFzc2VydChnb29nLmh0bWwuU0FGRV9VUkxfUEFUVEVSTl8udGVzdChlKSxcIiVzIGRvZXMgbm90IG1hdGNoIHRoZSBzYWZlIFVSTCBwYXR0ZXJuXCIsZSl8fChlPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpLGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKSkpfSxnb29nLmh0bWwuU2FmZVVybC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBnb29nLmh0bWwuU2FmZVVybDtyZXR1cm4gdC5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlVXJsV3JhcHBlZFZhbHVlXz1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWT9nb29nLmh0bWwudHJ1c3RlZHR5cGVzLlBSSVZBVEVfRE9fTk9UX0FDQ0VTU19PUl9FTFNFX1BPTElDWS5jcmVhdGVVUkwoZSk6ZSx0fSxnb29nLmh0bWwuU2FmZVVybC5BQk9VVF9CTEFOSz1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJhYm91dDpibGFua1wiKSxnb29nLmh0bWwuU2FmZVN0eWxlPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfPVwiXCIsdGhpcy5TQUZFX1NUWUxFX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz1nb29nLmh0bWwuU2FmZVN0eWxlLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMCxnb29nLmh0bWwuU2FmZVN0eWxlLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz17fSxnb29nLmh0bWwuU2FmZVN0eWxlLmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSkubGVuZ3RoP2dvb2cuaHRtbC5TYWZlU3R5bGUuRU1QVFk6KGdvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5zdHJpbmcuaW50ZXJuYWwuZW5kc1dpdGgoZSxcIjtcIiksXCJMYXN0IGNoYXJhY3RlciBvZiBzdHlsZSBzdHJpbmcgaXMgbm90ICc7JzogXCIrZSksZ29vZy5hc3NlcnRzLmFzc2VydChnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLFwiOlwiKSxcIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFxcXCJuYW1lOiB2YWx1ZVxcXCIgcGFpcjogXCIrZSksZ29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKSl9LGdvb2cuaHRtbC5TYWZlU3R5bGUucHJvdG90eXBlLmdldFR5cGVkU3RyaW5nVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVffSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIlNhZmVTdHlsZXtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuU2FmZVN0eWxlLnVud3JhcD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlU3R5bGUmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZVN0eWxlJiZlLlNBRkVfU1RZTEVfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5odG1sLlNhZmVTdHlsZS5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfOihnb29nLmFzc2VydHMuZmFpbChcImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZSwgZ290ICdcIitlK1wiJyBvZiB0eXBlIFwiK2dvb2cudHlwZU9mKGUpKSxcInR5cGVfZXJyb3I6U2FmZVN0eWxlXCIpfSxnb29nLmh0bWwuU2FmZVN0eWxlLmNyZWF0ZVNhZmVTdHlsZVNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3JldHVybihuZXcgZ29vZy5odG1sLlNhZmVTdHlsZSkuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXyhlKX0sZ29vZy5odG1sLlNhZmVTdHlsZS5wcm90b3R5cGUuaW5pdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlXz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfPWUsdGhpc30sZ29vZy5odG1sLlNhZmVTdHlsZS5FTVBUWT1nb29nLmh0bWwuU2FmZVN0eWxlLmNyZWF0ZVNhZmVTdHlsZVNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cuaHRtbC5TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORz1cInpDbG9zdXJlelwiLGdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlPWZ1bmN0aW9uKGUpe3ZhciB0LG89XCJcIjtmb3IodCBpbiBlKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QodCkpdGhyb3cgRXJyb3IoXCJOYW1lIGFsbG93cyBvbmx5IFstX2EtekEtWjAtOV0sIGdvdDogXCIrdCk7dmFyIHI9ZVt0XTtudWxsIT1yJiYobys9dCtcIjpcIisocj1nb29nLmlzQXJyYXkocik/Z29vZy5hcnJheS5tYXAocixnb29nLmh0bWwuU2FmZVN0eWxlLnNhbml0aXplUHJvcGVydHlWYWx1ZV8pLmpvaW4oXCIgXCIpOmdvb2cuaHRtbC5TYWZlU3R5bGUuc2FuaXRpemVQcm9wZXJ0eVZhbHVlXyhyKSkrXCI7XCIpfXJldHVybiBvP2dvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2Uobyk6Z29vZy5odG1sLlNhZmVTdHlsZS5FTVBUWX0sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVByb3BlcnR5VmFsdWVfPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4ndXJsKFwiJytnb29nLmh0bWwuU2FmZVVybC51bndyYXAoZSkucmVwbGFjZSgvPC9nLFwiJTNjXCIpLnJlcGxhY2UoL1tcXFxcXCJdL2csXCJcXFxcJCZcIikrJ1wiKSc7aWYoZT1lIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpOmdvb2cuaHRtbC5TYWZlU3R5bGUuc2FuaXRpemVQcm9wZXJ0eVZhbHVlU3RyaW5nXyhTdHJpbmcoZSkpLC9bezt9XS8udGVzdChlKSl0aHJvdyBuZXcgZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yKFwiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuXCIsW2VdKTtyZXR1cm4gZX0sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmdfPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShnb29nLmh0bWwuU2FmZVN0eWxlLkZVTkNUSU9OU19SRV8sXCIkMVwiKS5yZXBsYWNlKGdvb2cuaHRtbC5TYWZlU3R5bGUuRlVOQ1RJT05TX1JFXyxcIiQxXCIpLnJlcGxhY2UoZ29vZy5odG1sLlNhZmVTdHlsZS5VUkxfUkVfLFwidXJsXCIpO3JldHVybiBnb29nLmh0bWwuU2FmZVN0eWxlLlZBTFVFX1JFXy50ZXN0KHQpP2dvb2cuaHRtbC5TYWZlU3R5bGUuQ09NTUVOVF9SRV8udGVzdChlKT8oZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6IFwiK2UpLGdvb2cuaHRtbC5TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORyk6Z29vZy5odG1sLlNhZmVTdHlsZS5oYXNCYWxhbmNlZFF1b3Rlc18oZSk/Z29vZy5odG1sLlNhZmVTdHlsZS5oYXNCYWxhbmNlZFNxdWFyZUJyYWNrZXRzXyhlKT9nb29nLmh0bWwuU2FmZVN0eWxlLnNhbml0aXplVXJsXyhlKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiBcIitlKSxnb29nLmh0bWwuU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkcpOihnb29nLmFzc2VydHMuZmFpbChcIlN0cmluZyB2YWx1ZSByZXF1aXJlcyBiYWxhbmNlZCBxdW90ZXMsIGdvdDogXCIrZSksZ29vZy5odG1sLlNhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgXCIrZ29vZy5odG1sLlNhZmVTdHlsZS5WQUxVRV9BTExPV0VEX0NIQVJTXytcIiBhbmQgc2ltcGxlIGZ1bmN0aW9ucywgZ290OiBcIitlKSxnb29nLmh0bWwuU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkcpfSxnb29nLmh0bWwuU2FmZVN0eWxlLmhhc0JhbGFuY2VkUXVvdGVzXz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ITAsbz0hMCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWUuY2hhckF0KHIpO1wiJ1wiPT1uJiZvP3Q9IXQ6J1wiJz09biYmdCYmKG89IW8pfXJldHVybiB0JiZvfSxnb29nLmh0bWwuU2FmZVN0eWxlLmhhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHNfPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMCxvPS9eWy1fYS16QS1aMC05XSQvLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZS5jaGFyQXQocik7aWYoXCJdXCI9PW4pe2lmKHQpcmV0dXJuITE7dD0hMH1lbHNlIGlmKFwiW1wiPT1uKXtpZighdClyZXR1cm4hMTt0PSExfWVsc2UgaWYoIXQmJiFvLnRlc3QobikpcmV0dXJuITF9cmV0dXJuIHR9LGdvb2cuaHRtbC5TYWZlU3R5bGUuVkFMVUVfQUxMT1dFRF9DSEFSU189XCJbLSwuXFxcIiclXyEjIGEtekEtWjAtOVxcXFxbXFxcXF1dXCIsZ29vZy5odG1sLlNhZmVTdHlsZS5WQUxVRV9SRV89bmV3IFJlZ0V4cChcIl5cIitnb29nLmh0bWwuU2FmZVN0eWxlLlZBTFVFX0FMTE9XRURfQ0hBUlNfK1wiKyRcIiksZ29vZy5odG1sLlNhZmVTdHlsZS5VUkxfUkVfPS9cXGIodXJsXFwoWyBcXHRcXG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXFx0XFxuXSpcXCkpL2csZ29vZy5odG1sLlNhZmVTdHlsZS5GVU5DVElPTlNfUkVfPS9cXGIoaHNsfGhzbGF8cmdifHJnYmF8bWF0cml4fGNhbGN8bWlubWF4fGZpdC1jb250ZW50fHJlcGVhdHwocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPylcXChbLSsqLzAtOWEtei4lXFxbXFxdLCBdK1xcKS9nLGdvb2cuaHRtbC5TYWZlU3R5bGUuQ09NTUVOVF9SRV89L1xcL1xcKi8sZ29vZy5odG1sLlNhZmVTdHlsZS5zYW5pdGl6ZVVybF89ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShnb29nLmh0bWwuU2FmZVN0eWxlLlVSTF9SRV8sKGZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPVwiXCI7cmV0dXJuIG89by5yZXBsYWNlKC9eKFsnXCJdKSguKilcXDEkLywoZnVuY3Rpb24oZSx0LG8pe3JldHVybiBuPXQsb30pKSxlPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKG8pLmdldFR5cGVkU3RyaW5nVmFsdWUoKSx0K24rZStuK3J9KSl9LGdvb2cuaHRtbC5TYWZlU3R5bGUuY29uY2F0PWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCIsbz1mdW5jdGlvbihlKXtnb29nLmlzQXJyYXkoZSk/Z29vZy5hcnJheS5mb3JFYWNoKGUsbyk6dCs9Z29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAoZSl9O3JldHVybiBnb29nLmFycmF5LmZvckVhY2goYXJndW1lbnRzLG8pLHQ/Z29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KTpnb29nLmh0bWwuU2FmZVN0eWxlLkVNUFRZfSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQ9ZnVuY3Rpb24oKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1cIlwiLHRoaXMuU0FGRV9TVFlMRV9TSEVFVF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFX30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwLGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89e30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LmNyZWF0ZVJ1bGU9ZnVuY3Rpb24oZSx0KXtpZihnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucyhlLFwiPFwiKSl0aHJvdyBFcnJvcihcIlNlbGVjdG9yIGRvZXMgbm90IGFsbG93ICc8JywgZ290OiBcIitlKTt2YXIgbz1lLnJlcGxhY2UoLygnfFwiKSgoPyFcXDEpW15cXHJcXG5cXGZcXFxcXXxcXFxcW1xcc1xcU10pKlxcMS9nLFwiXCIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXF0oKT1eJHxdKyQvLnRlc3QobykpdGhyb3cgRXJyb3IoXCJTZWxlY3RvciBhbGxvd3Mgb25seSBbLV9hLXpBLVowLTkjLjoqICw+K35bXFxcXF0oKT1eJHxdIGFuZCBzdHJpbmdzLCBnb3Q6IFwiK2UpO2lmKCFnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuaGFzQmFsYW5jZWRCcmFja2V0c18obykpdGhyb3cgRXJyb3IoXCIoKSBhbmQgW10gaW4gc2VsZWN0b3IgbXVzdCBiZSBiYWxhbmNlZCwgZ290OiBcIitlKTtyZXR1cm4gdCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlU3R5bGV8fCh0PWdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlKHQpKSxlPWUrXCJ7XCIrZ29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAodCkucmVwbGFjZSgvPC9nLFwiXFxcXDNDIFwiKStcIn1cIixnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShlKX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0Lmhhc0JhbGFuY2VkQnJhY2tldHNfPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD17XCIoXCI6XCIpXCIsXCJbXCI6XCJdXCJ9LG89W10scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO2lmKHRbbl0pby5wdXNoKHRbbl0pO2Vsc2UgaWYoZ29vZy5vYmplY3QuY29udGFpbnModCxuKSYmby5wb3AoKSE9bilyZXR1cm4hMX1yZXR1cm4gMD09by5sZW5ndGh9LGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jb25jYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIixvPWZ1bmN0aW9uKGUpe2dvb2cuaXNBcnJheShlKT9nb29nLmFycmF5LmZvckVhY2goZSxvKTp0Kz1nb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQudW53cmFwKGUpfTtyZXR1cm4gZ29vZy5hcnJheS5mb3JFYWNoKGFyZ3VtZW50cyxvKSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LmZyb21Db25zdGFudD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSkubGVuZ3RoP2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5FTVBUWTooZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMoZSxcIjxcIiksXCJGb3JiaWRkZW4gJzwnIGNoYXJhY3RlciBpbiBzdHlsZSBzaGVldCBzdHJpbmc6IFwiK2UpLGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGUpKX0sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffSxnb29nLkRFQlVHJiYoZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiU2FmZVN0eWxlU2hlZXR7XCIrdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVTaGVldFdyYXBwZWRWYWx1ZV8rXCJ9XCJ9KSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQudW53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JiZlLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JiZlLlNBRkVfU1RZTEVfU0hFRVRfVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPT09Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz9lLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzooZ29vZy5hc3NlcnRzLmZhaWwoXCJleHBlY3RlZCBvYmplY3Qgb2YgdHlwZSBTYWZlU3R5bGVTaGVldCwgZ290ICdcIitlK1wiJyBvZiB0eXBlIFwiK2dvb2cudHlwZU9mKGUpKSxcInR5cGVfZXJyb3I6U2FmZVN0eWxlU2hlZXRcIil9LGdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUpe3JldHVybihuZXcgZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0KS5pbml0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VfKGUpfSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQucHJvdG90eXBlLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfPWUsdGhpc30sZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LkVNUFRZPWdvb2cuaHRtbC5TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiXCIpLGdvb2cubGFicz17fSxnb29nLmxhYnMudXNlckFnZW50PXt9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbD17fSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0TmF0aXZlVXNlckFnZW50U3RyaW5nXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXZpZ2F0b3JfKCk7cmV0dXJuIGUmJihlPWUudXNlckFnZW50KT9lOlwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXZpZ2F0b3JfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn0sZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnVzZXJBZ2VudF89Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZ18oKSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuc2V0VXNlckFnZW50PWZ1bmN0aW9uKGUpe2dvb2cubGFicy51c2VyQWdlbnQudXRpbC51c2VyQWdlbnRfPWV8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmdfKCl9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnVzZXJBZ2VudF99LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudD1mdW5jdGlvbihlKXt2YXIgdD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKHQsZSl9LGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldFVzZXJBZ2VudCgpO3JldHVybiBnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyh0LGUpfSxnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG89LyhcXHdbXFx3IF0rKVxcLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/L2cscj1bXTt0PW8uZXhlYyhlKTspci5wdXNoKFt0WzFdLHRbMl0sdFszXXx8dm9pZCAwXSk7cmV0dXJuIHJ9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiT3BlcmFcIil9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaElFXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJUcmlkZW50XCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJNU0lFXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hFZGdlSHRtbF89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiRWRnZVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUNocm9taXVtXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJFZGcvXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYUNocm9taXVtXz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJPUFJcIil9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEZpcmVmb3hfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkZpcmVmb3hcIil8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkZ4aU9TXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hTYWZhcmlfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIlNhZmFyaVwiKSYmIShnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hDaHJvbWVfKCl8fGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaENvYXN0XygpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUh0bWxfKCl8fGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEVkZ2VDaHJvbWl1bV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoT3BlcmFDaHJvbWl1bV8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRmlyZWZveF8oKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzU2lsaygpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJBbmRyb2lkXCIpKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ29hc3RfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkNvYXN0XCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hJb3NXZWJ2aWV3Xz1mdW5jdGlvbigpe3JldHVybihnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGFkXCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGhvbmVcIikpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoU2FmYXJpXygpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXygpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ29hc3RfKCkmJiFnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hGaXJlZm94XygpJiZnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJBcHBsZVdlYktpdFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXz1mdW5jdGlvbigpe3JldHVybihnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDaHJvbWVcIil8fGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkNyaU9TXCIpKSYmIWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5tYXRjaEVkZ2VIdG1sXygpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hBbmRyb2lkQnJvd3Nlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiQW5kcm9pZFwiKSYmIShnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDaHJvbWUoKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRmlyZWZveCgpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYSgpfHxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrKCkpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYT1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hPcGVyYV8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUU9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoSUVfLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0VkZ2U9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoRWRnZUh0bWxfLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0VkZ2VDaHJvbWl1bT1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hFZGdlQ2hyb21pdW1fLGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhQ2hyb21pdW09Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoT3BlcmFDaHJvbWl1bV8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRmlyZWZveD1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hGaXJlZm94Xyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoU2FmYXJpXyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hDb2FzdF8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hJb3NXZWJ2aWV3Xyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDaHJvbWU9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLm1hdGNoQ2hyb21lXyxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNBbmRyb2lkQnJvd3Nlcj1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIubWF0Y2hBbmRyb2lkQnJvd3Nlcl8sZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzU2lsaz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJTaWxrXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU9Z29vZy5hcnJheS5maW5kKGUsciksb1tlXXx8XCJcIn12YXIgdD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7aWYoZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUUoKSlyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmdldElFVmVyc2lvbl8odCk7dD1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXModCk7dmFyIG89e307Z29vZy5hcnJheS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUpe29bZVswXV09ZVsxXX0pKTt2YXIgcj1nb29nLnBhcnRpYWwoZ29vZy5vYmplY3QuY29udGFpbnNLZXksbyk7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhKCk/ZShbXCJWZXJzaW9uXCIsXCJPcGVyYVwiXSk6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZSgpP2UoW1wiRWRnZVwiXSk6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZUNocm9taXVtKCk/ZShbXCJFZGdcIl0pOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0Nocm9tZSgpP2UoW1wiQ2hyb21lXCIsXCJDcmlPU1wiXSk6KHQ9dFsyXSkmJnRbMV18fFwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc1ZlcnNpb25PckhpZ2hlcj1mdW5jdGlvbihlKXtyZXR1cm4gMDw9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uKCksZSl9LGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRJRVZlcnNpb25fPWZ1bmN0aW9uKGUpe3ZhciB0PS9ydjogKihbXFxkXFwuXSopLy5leGVjKGUpO2lmKHQmJnRbMV0pcmV0dXJuIHRbMV07dD1cIlwiO3ZhciBvPS9NU0lFICsoW1xcZFxcLl0rKS8uZXhlYyhlKTtpZihvJiZvWzFdKWlmKGU9L1RyaWRlbnRcXC8oXFxkLlxcZCkvLmV4ZWMoZSksXCI3LjBcIj09b1sxXSlpZihlJiZlWzFdKXN3aXRjaChlWzFdKXtjYXNlXCI0LjBcIjp0PVwiOC4wXCI7YnJlYWs7Y2FzZVwiNS4wXCI6dD1cIjkuMFwiO2JyZWFrO2Nhc2VcIjYuMFwiOnQ9XCIxMC4wXCI7YnJlYWs7Y2FzZVwiNy4wXCI6dD1cIjExLjBcIn1lbHNlIHQ9XCI3LjBcIjtlbHNlIHQ9b1sxXTtyZXR1cm4gdH0sZ29vZy5odG1sLlNhZmVIdG1sPWZ1bmN0aW9uKCl7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlSHRtbFdyYXBwZWRWYWx1ZV89XCJcIix0aGlzLlNBRkVfSFRNTF9UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV89Z29vZy5odG1sLlNhZmVIdG1sLlRZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXyx0aGlzLmRpcl89bnVsbH0sZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ0kxOG5CaWRpRGlyZWN0aW9uYWxTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5nZXREaXJlY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXJffSxnb29nLmh0bWwuU2FmZUh0bWwucHJvdG90eXBlLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITAsZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9LGdvb2cuREVCVUcmJihnb29nLmh0bWwuU2FmZUh0bWwucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJTYWZlSHRtbHtcIit0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXytcIn1cIn0pLGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChlKS50b1N0cmluZygpfSxnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZUh0bWwmJmUuY29uc3RydWN0b3I9PT1nb29nLmh0bWwuU2FmZUh0bWwmJmUuU0FGRV9IVE1MX1RZUEVfTUFSS0VSX0dPT0dfSFRNTF9TRUNVUklUWV9QUklWQVRFXz09PWdvb2cuaHRtbC5TYWZlSHRtbC5UWVBFX01BUktFUl9HT09HX0hUTUxfU0VDVVJJVFlfUFJJVkFURV8/ZS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlSHRtbFdyYXBwZWRWYWx1ZV86KGdvb2cuYXNzZXJ0cy5mYWlsKFwiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnXCIrZStcIicgb2YgdHlwZSBcIitnb29nLnR5cGVPZihlKSksXCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCIpfSxnb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZT1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVIdG1sKXJldHVybiBlO3ZhciB0PVwib2JqZWN0XCI9PXR5cGVvZiBlLG89bnVsbDtyZXR1cm4gdCYmZS5pbXBsZW1lbnRzR29vZ0kxOG5CaWRpRGlyZWN0aW9uYWxTdHJpbmcmJihvPWUuZ2V0RGlyZWN0aW9uKCkpLGU9dCYmZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2UuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhlKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGUpLG8pfSxnb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlSHRtbD9lOihlPWdvb2cuaHRtbC5TYWZlSHRtbC5odG1sRXNjYXBlKGUpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGUuZ2V0RGlyZWN0aW9uKCkpKX0sZ29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZUh0bWw/ZTooZT1nb29nLmh0bWwuU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGUuZ2V0RGlyZWN0aW9uKCkpKX0sZ29vZy5odG1sLlNhZmVIdG1sLmZyb209Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUsZ29vZy5odG1sLlNhZmVIdG1sLlZBTElEX05BTUVTX0lOX1RBR189L15bYS16QS1aMC05LV0rJC8sZ29vZy5odG1sLlNhZmVIdG1sLlVSTF9BVFRSSUJVVEVTXz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sZ29vZy5odG1sLlNhZmVIdG1sLk5PVF9BTExPV0VEX1RBR19OQU1FU189e0FQUExFVDohMCxCQVNFOiEwLEVNQkVEOiEwLElGUkFNRTohMCxMSU5LOiEwLE1BVEg6ITAsTUVUQTohMCxPQkpFQ1Q6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlSHRtbC52ZXJpZnlUYWdOYW1lKFN0cmluZyhlKSksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGUpLHQsbyl9LGdvb2cuaHRtbC5TYWZlSHRtbC52ZXJpZnlUYWdOYW1lPWZ1bmN0aW9uKGUpe2lmKCFnb29nLmh0bWwuU2FmZUh0bWwuVkFMSURfTkFNRVNfSU5fVEFHXy50ZXN0KGUpKXRocm93IEVycm9yKFwiSW52YWxpZCB0YWcgbmFtZSA8XCIrZStcIj4uXCIpO2lmKGUudG9VcHBlckNhc2UoKWluIGdvb2cuaHRtbC5TYWZlSHRtbC5OT1RfQUxMT1dFRF9UQUdfTkFNRVNfKXRocm93IEVycm9yKFwiVGFnIG5hbWUgPFwiK2UrXCI+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5cIil9LGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVJZnJhbWU9ZnVuY3Rpb24oZSx0LG8scil7ZSYmZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoZSk7dmFyIG49e307cmV0dXJuIG4uc3JjPWV8fG51bGwsbi5zcmNkb2M9dCYmZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcCh0KSxlPWdvb2cuaHRtbC5TYWZlSHRtbC5jb21iaW5lQXR0cmlidXRlcyhuLHtzYW5kYm94OlwiXCJ9LG8pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiaWZyYW1lXCIsZSxyKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhbmRib3hJZnJhbWU9ZnVuY3Rpb24oZSx0LG8scil7aWYoIWdvb2cuaHRtbC5TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IoXCJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLlwiKTt2YXIgbj17fTtyZXR1cm4gbi5zcmM9ZT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoZSkpOm51bGwsbi5zcmNkb2M9dHx8bnVsbCxuLnNhbmRib3g9XCJcIixlPWdvb2cuaHRtbC5TYWZlSHRtbC5jb21iaW5lQXR0cmlidXRlcyhuLHt9LG8pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiaWZyYW1lXCIsZSxyKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNhblVzZVNhbmRib3hJZnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5nbG9iYWwuSFRNTElGcmFtZUVsZW1lbnQmJlwic2FuZGJveFwiaW4gZ29vZy5nbG9iYWwuSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2NyaXB0U3JjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGUpLGU9Z29vZy5odG1sLlNhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHtzcmM6ZX0se30sdCksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJzY3JpcHRcIixlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNjcmlwdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbyBpbiB0KXt2YXIgcj1vLnRvTG93ZXJDYXNlKCk7aWYoXCJsYW5ndWFnZVwiPT1yfHxcInNyY1wiPT1yfHxcInRleHRcIj09cnx8XCJ0eXBlXCI9PXIpdGhyb3cgRXJyb3IoJ0Nhbm5vdCBzZXQgXCInK3IrJ1wiIGF0dHJpYnV0ZScpfWZvcihvPVwiXCIsZT1nb29nLmFycmF5LmNvbmNhdChlKSxyPTA7cjxlLmxlbmd0aDtyKyspbys9Z29vZy5odG1sLlNhZmVTY3JpcHQudW53cmFwKGVbcl0pO3JldHVybiBlPWdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG8sZ29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUwpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwic2NyaXB0XCIsdCxlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVN0eWxlPWZ1bmN0aW9uKGUsdCl7dD1nb29nLmh0bWwuU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3R5cGU6XCJ0ZXh0L2Nzc1wifSx7fSx0KTt2YXIgbz1cIlwiO2U9Z29vZy5hcnJheS5jb25jYXQoZSk7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspbys9Z29vZy5odG1sLlNhZmVTdHlsZVNoZWV0LnVud3JhcChlW3JdKTtyZXR1cm4gZT1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShvLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcInN0eWxlXCIsdCxlKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZU1ldGFSZWZyZXNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGUpKSwoZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSUUoKXx8Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZSgpKSYmZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMoZSxcIjtcIikmJihlPVwiJ1wiK2UucmVwbGFjZSgvJy9nLFwiJTI3XCIpK1wiJ1wiKSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcIm1ldGFcIix7XCJodHRwLWVxdWl2XCI6XCJyZWZyZXNoXCIsY29udGVudDoodHx8MCkrXCI7IHVybD1cIitlfSl9LGdvb2cuaHRtbC5TYWZlSHRtbC5nZXRBdHRyTmFtZUFuZFZhbHVlXz1mdW5jdGlvbihlLHQsbyl7aWYobyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0KW89Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKG8pO2Vsc2UgaWYoXCJzdHlsZVwiPT10LnRvTG93ZXJDYXNlKCkpbz1nb29nLmh0bWwuU2FmZUh0bWwuZ2V0U3R5bGVWYWx1ZV8obyk7ZWxzZXtpZigvXm9uL2kudGVzdCh0KSl0aHJvdyBFcnJvcignQXR0cmlidXRlIFwiJyt0KydcIiByZXF1aXJlcyBnb29nLnN0cmluZy5Db25zdCB2YWx1ZSwgXCInK28rJ1wiIGdpdmVuLicpO2lmKHQudG9Mb3dlckNhc2UoKWluIGdvb2cuaHRtbC5TYWZlSHRtbC5VUkxfQVRUUklCVVRFU18paWYobyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpbz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChvKTtlbHNlIGlmKG8gaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClvPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChvKTtlbHNle2lmKCFnb29nLmlzU3RyaW5nKG8pKXRocm93IEVycm9yKCdBdHRyaWJ1dGUgXCInK3QrJ1wiIG9uIHRhZyBcIicrZSsnXCIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlIFwiJytvKydcIiBnaXZlbi4nKTtvPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKG8pLmdldFR5cGVkU3RyaW5nVmFsdWUoKX19cmV0dXJuIG8uaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZyYmKG89by5nZXRUeXBlZFN0cmluZ1ZhbHVlKCkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5pc1N0cmluZyhvKXx8Z29vZy5pc051bWJlcihvKSxcIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCBcIit0eXBlb2YgbytcIiB3aXRoIHZhbHVlOiBcIitvKSx0Kyc9XCInK2dvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoU3RyaW5nKG8pKSsnXCInfSxnb29nLmh0bWwuU2FmZUh0bWwuZ2V0U3R5bGVWYWx1ZV89ZnVuY3Rpb24oZSl7aWYoIWdvb2cuaXNPYmplY3QoZSkpdGhyb3cgRXJyb3IoJ1RoZSBcInN0eWxlXCIgYXR0cmlidXRlIHJlcXVpcmVzIGdvb2cuaHRtbC5TYWZlU3R5bGUgb3IgbWFwIG9mIHN0eWxlIHByb3BlcnRpZXMsICcrdHlwZW9mIGUrXCIgZ2l2ZW46IFwiK2UpO3JldHVybiBlIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVTdHlsZXx8KGU9Z29vZy5odG1sLlNhZmVTdHlsZS5jcmVhdGUoZSkpLGdvb2cuaHRtbC5TYWZlU3R5bGUudW53cmFwKGUpfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlV2l0aERpcj1mdW5jdGlvbihlLHQsbyxyKXtyZXR1cm4odD1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlKHQsbyxyKSkuZGlyXz1lLHR9LGdvb2cuaHRtbC5TYWZlSHRtbC5qb2luPWZ1bmN0aW9uKGUsdCl7dmFyIG89KGU9Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUoZSkpLmdldERpcmVjdGlvbigpLHI9W10sbj1mdW5jdGlvbihlKXtnb29nLmlzQXJyYXkoZSk/Z29vZy5hcnJheS5mb3JFYWNoKGUsbik6KGU9Z29vZy5odG1sLlNhZmVIdG1sLmh0bWxFc2NhcGUoZSksci5wdXNoKGdvb2cuaHRtbC5TYWZlSHRtbC51bndyYXAoZSkpLGU9ZS5nZXREaXJlY3Rpb24oKSxvPT1nb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTD9vPWU6ZSE9Z29vZy5pMThuLmJpZGkuRGlyLk5FVVRSQUwmJm8hPWUmJihvPW51bGwpKX07cmV0dXJuIGdvb2cuYXJyYXkuZm9yRWFjaCh0LG4pLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHIuam9pbihnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwKGUpKSxvKX0sZ29vZy5odG1sLlNhZmVIdG1sLmNvbmNhdD1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVIdG1sLmpvaW4oZ29vZy5odG1sLlNhZmVIdG1sLkVNUFRZLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxnb29nLmh0bWwuU2FmZUh0bWwuY29uY2F0V2l0aERpcj1mdW5jdGlvbihlLHQpe3ZhciBvPWdvb2cuaHRtbC5TYWZlSHRtbC5jb25jYXQoZ29vZy5hcnJheS5zbGljZShhcmd1bWVudHMsMSkpO3JldHVybiBvLmRpcl89ZSxvfSxnb29nLmh0bWwuU2FmZUh0bWwuVFlQRV9NQVJLRVJfR09PR19IVE1MX1NFQ1VSSVRZX1BSSVZBVEVfPXt9LGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKG5ldyBnb29nLmh0bWwuU2FmZUh0bWwpLmluaXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZV8oZSx0KX0sZ29vZy5odG1sLlNhZmVIdG1sLnByb3RvdHlwZS5pbml0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VfPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWdvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZP2dvb2cuaHRtbC50cnVzdGVkdHlwZXMuUFJJVkFURV9ET19OT1RfQUNDRVNTX09SX0VMU0VfUE9MSUNZLmNyZWF0ZUhUTUwoZSk6ZSx0aGlzLmRpcl89dCx0aGlzfSxnb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZT1mdW5jdGlvbihlLHQsbyl7dmFyIHI9bnVsbCxuPVwiPFwiK2UrZ29vZy5odG1sLlNhZmVIdG1sLnN0cmluZ2lmeUF0dHJpYnV0ZXMoZSx0KTtyZXR1cm4gZ29vZy5pc0RlZkFuZE5vdE51bGwobyk/Z29vZy5pc0FycmF5KG8pfHwobz1bb10pOm89W10sZ29vZy5kb20udGFncy5pc1ZvaWRUYWcoZS50b0xvd2VyQ2FzZSgpKT8oZ29vZy5hc3NlcnRzLmFzc2VydCghby5sZW5ndGgsXCJWb2lkIHRhZyA8XCIrZStcIj4gZG9lcyBub3QgYWxsb3cgY29udGVudC5cIiksbis9XCI+XCIpOihyPWdvb2cuaHRtbC5TYWZlSHRtbC5jb25jYXQobyksbis9XCI+XCIrZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcChyKStcIjwvXCIrZStcIj5cIixyPXIuZ2V0RGlyZWN0aW9uKCkpLChlPXQmJnQuZGlyKSYmKHI9L14obHRyfHJ0bHxhdXRvKSQvaS50ZXN0KGUpP2dvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMOm51bGwpLGdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG4scil9LGdvb2cuaHRtbC5TYWZlSHRtbC5zdHJpbmdpZnlBdHRyaWJ1dGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG89XCJcIjtpZih0KWZvcih2YXIgciBpbiB0KXtpZighZ29vZy5odG1sLlNhZmVIdG1sLlZBTElEX05BTUVTX0lOX1RBR18udGVzdChyKSl0aHJvdyBFcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSBcIicrcisnXCIuJyk7dmFyIG49dFtyXTtnb29nLmlzRGVmQW5kTm90TnVsbChuKSYmKG8rPVwiIFwiK2dvb2cuaHRtbC5TYWZlSHRtbC5nZXRBdHRyTmFtZUFuZFZhbHVlXyhlLHIsbikpfXJldHVybiBvfSxnb29nLmh0bWwuU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSx0LG8pe3ZhciByLG49e307Zm9yKHIgaW4gZSlnb29nLmFzc2VydHMuYXNzZXJ0KHIudG9Mb3dlckNhc2UoKT09cixcIk11c3QgYmUgbG93ZXIgY2FzZVwiKSxuW3JdPWVbcl07Zm9yKHIgaW4gdClnb29nLmFzc2VydHMuYXNzZXJ0KHIudG9Mb3dlckNhc2UoKT09cixcIk11c3QgYmUgbG93ZXIgY2FzZVwiKSxuW3JdPXRbcl07Zm9yKHIgaW4gbyl7dmFyIHM9ci50b0xvd2VyQ2FzZSgpO2lmKHMgaW4gZSl0aHJvdyBFcnJvcignQ2Fubm90IG92ZXJyaWRlIFwiJytzKydcIiBhdHRyaWJ1dGUsIGdvdCBcIicrcisnXCIgd2l0aCB2YWx1ZSBcIicrb1tyXSsnXCInKTtzIGluIHQmJmRlbGV0ZSBuW3NdLG5bcl09b1tyXX1yZXR1cm4gbn0sZ29vZy5odG1sLlNhZmVIdG1sLkRPQ1RZUEVfSFRNTD1nb29nLmh0bWwuU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShcIjwhRE9DVFlQRSBodG1sPlwiLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwuU2FmZUh0bWwuRU1QVFk9Z29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoXCJcIixnb29nLmkxOG4uYmlkaS5EaXIuTkVVVFJBTCksZ29vZy5odG1sLlNhZmVIdG1sLkJSPWdvb2cuaHRtbC5TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKFwiPGJyPlwiLGdvb2cuaTE4bi5iaWRpLkRpci5ORVVUUkFMKSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnM9e30sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVIdG1sRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCxvfHxudWxsKX0sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTY3JpcHRGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHQpfSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMuc2FmZVN0eWxlRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpLFwibXVzdCBwcm92aWRlIGp1c3RpZmljYXRpb25cIiksZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpLFwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuaHRtbC5TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCl9LGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSxcIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpKSxcIm11c3QgcHJvdmlkZSBub24tZW1wdHkganVzdGlmaWNhdGlvblwiKSxnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSh0KX0sZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVVcmxGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSksXCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvblwiKSxnb29nLmFzc2VydHMuYXNzZXJ0KCFnb29nLnN0cmluZy5pbnRlcm5hbC5pc0VtcHR5T3JXaGl0ZXNwYWNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChlKSksXCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb25cIiksZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKHQpfSxnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMudHJ1c3RlZFJlc291cmNlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGUpLFwibXVzdCBwcm92aWRlIGp1c3RpZmljYXRpb25cIiksZ29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoZSkpLFwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uXCIpLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UodCl9LGdvb2cuZG9tLnNhZmU9e30sZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjpcImFmdGVyYmVnaW5cIixBRlRFUkVORDpcImFmdGVyZW5kXCIsQkVGT1JFQkVHSU46XCJiZWZvcmViZWdpblwiLEJFRk9SRUVORDpcImJlZm9yZWVuZFwifSxnb29nLmRvbS5zYWZlLmluc2VydEFkamFjZW50SHRtbD1mdW5jdGlvbihlLHQsbyl7ZS5pbnNlcnRBZGphY2VudEhUTUwodCxnb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobykpfSxnb29nLmRvbS5zYWZlLlNFVF9JTk5FUl9IVE1MX0RJU0FMTE9XRURfVEFHU189e01BVEg6ITAsU0NSSVBUOiEwLFNUWUxFOiEwLFNWRzohMCxURU1QTEFURTohMH0sZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoKGZ1bmN0aW9uKCl7aWYoZ29vZy5ERUJVRyYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiB0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGUuYXBwZW5kQ2hpbGQodCksIShnb29nLkRFQlVHJiYhZS5maXJzdENoaWxkfHwodD1lLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCxlLmlubmVySFRNTD1nb29nLmh0bWwuU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoZ29vZy5odG1sLlNhZmVIdG1sLkVNUFRZKSx0LnBhcmVudEVsZW1lbnQpKX0pKSxnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGUsdCl7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDtlLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmxhc3RDaGlsZCk7ZS5pbm5lckhUTUw9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldElubmVySHRtbD1mdW5jdGlvbihlLHQpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIG89ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCk7aWYoZ29vZy5kb20uc2FmZS5TRVRfSU5ORVJfSFRNTF9ESVNBTExPV0VEX1RBR1NfW29dKXRocm93IEVycm9yKFwiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgXCIrZS50YWdOYW1lK1wiLlwiKX1nb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlKGUsdCl9LGdvb2cuZG9tLnNhZmUuc2V0T3V0ZXJIdG1sPWZ1bmN0aW9uKGUsdCl7ZS5vdXRlckhUTUw9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGUsdCl7dD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGUpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpfSxnb29nLmRvbS5zYWZlLnNldEJ1dHRvbkZvcm1BY3Rpb249ZnVuY3Rpb24oZSx0KXt0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MQnV0dG9uRWxlbWVudChlKS5mb3JtQWN0aW9uPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SW5wdXRGb3JtQWN0aW9uPWZ1bmN0aW9uKGUsdCl7dD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElucHV0RWxlbWVudChlKS5mb3JtQWN0aW9uPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0U3R5bGU9ZnVuY3Rpb24oZSx0KXtlLnN0eWxlLmNzc1RleHQ9Z29vZy5odG1sLlNhZmVTdHlsZS51bndyYXAodCl9LGdvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihlLHQpe2Uud3JpdGUoZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpKX0sZ29vZy5kb20uc2FmZS5zZXRBbmNob3JIcmVmPWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50KGUpLHQ9dCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP3Q6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQodCksZS5ocmVmPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SW1hZ2VTcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEltYWdlRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTppbWFnZVxcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0QXVkaW9TcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTphdWRpb1xcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oZSx0KXtpZihnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChlKSwhKHQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBvPS9eZGF0YTp2aWRlb1xcLy9pLnRlc3QodCk7dD1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0LG8pfWUuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0RW1iZWRTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEVtYmVkRWxlbWVudChlKSxlLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0RnJhbWVTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZyYW1lRWxlbWVudChlKSxlLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRVUkwodCl9LGdvb2cuZG9tLnNhZmUuc2V0SWZyYW1lU3JjPWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJRnJhbWVFbGVtZW50KGUpLGUuc3JjPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoZSksZS5zcmNkb2M9Z29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpfSxnb29nLmRvbS5zYWZlLnNldExpbmtIcmVmQW5kUmVsPWZ1bmN0aW9uKGUsdCxvKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTExpbmtFbGVtZW50KGUpLGUucmVsPW8sZ29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29udGFpbnMobyxcInN0eWxlc2hlZXRcIik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQodCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlIFwicmVsXCIgY29udGFpbnMgXCJzdHlsZXNoZWV0XCInKSxlLmhyZWY9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMKHQpKTplLmhyZWY9dCBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmw/Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkVVJMKHQpOnQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9nb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQodCkpfSxnb29nLmRvbS5zYWZlLnNldE9iamVjdERhdGE9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTE9iamVjdEVsZW1lbnQoZSksZS5kYXRhPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRTcmM9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQoZSksZS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKHQpLCh0PWdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSkmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX0sZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGUsdCl7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGUpLGUudGV4dD1nb29nLmh0bWwuU2FmZVNjcmlwdC51bndyYXBUcnVzdGVkU2NyaXB0KHQpLCh0PWdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSkmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX0sZ29vZy5kb20uc2FmZS5zZXRMb2NhdGlvbkhyZWY9ZnVuY3Rpb24oZSx0KXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oZSksdD10IGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/dDpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZCh0KSxlLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwVHJ1c3RlZFVSTCh0KX0sZ29vZy5kb20uc2FmZS5hc3NpZ25Mb2NhdGlvbj1mdW5jdGlvbihlLHQpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihlKSx0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGUuYXNzaWduKGdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcFRydXN0ZWRVUkwodCkpfSxnb29nLmRvbS5zYWZlLnJlcGxhY2VMb2NhdGlvbj1mdW5jdGlvbihlLHQpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihlKSx0PXQgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD90Omdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKHQpLGUucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXBUcnVzdGVkVVJMKHQpKX0sZ29vZy5kb20uc2FmZS5vcGVuSW5XaW5kb3c9ZnVuY3Rpb24oZSx0LG8scixuKXtyZXR1cm4gZT1lIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/ZTpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChlKSwodHx8Z29vZy5nbG9iYWwpLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwVHJ1c3RlZFVSTChlKSxvP2dvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChvKTpcIlwiLHIsbil9LGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nSHRtbD1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmRvbS5zYWZlLnBhcnNlRnJvbVN0cmluZyhlLHQsXCJ0ZXh0L2h0bWxcIil9LGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gZS5wYXJzZUZyb21TdHJpbmcoZ29vZy5odG1sLlNhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKHQpLG8pfSxnb29nLmRvbS5zYWZlLmNyZWF0ZUltYWdlRnJvbUJsb2I9ZnVuY3Rpb24oZSl7aWYoIS9eaW1hZ2VcXC8uKi9nLnRlc3QoZS50eXBlKSl0aHJvdyBFcnJvcihcImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLlwiKTt2YXIgdD1nb29nLmdsb2JhbC5VUkwuY3JlYXRlT2JqZWN0VVJMKGUpO3JldHVybihlPW5ldyBnb29nLmdsb2JhbC5JbWFnZSkub25sb2FkPWZ1bmN0aW9uKCl7Z29vZy5nbG9iYWwuVVJMLnJldm9rZU9iamVjdFVSTCh0KX0sZ29vZy5kb20uc2FmZS5zZXRJbWFnZVNyYyhlLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0KGdvb2cuc3RyaW5nLkNvbnN0LmZyb20oXCJJbWFnZSBibG9iIFVSTC5cIiksdCkpLGV9LGdvb2cuc3RyaW5nLkRFVEVDVF9ET1VCTEVfRVNDQVBJTkc9ITEsZ29vZy5zdHJpbmcuRk9SQ0VfTk9OX0RPTV9IVE1MX1VORVNDQVBJTkc9ITEsZ29vZy5zdHJpbmcuVW5pY29kZT17TkJTUDpcIsKgXCJ9LGdvb2cuc3RyaW5nLnN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuc3RhcnRzV2l0aCxnb29nLnN0cmluZy5lbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aCxnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGgsZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGgsZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlRXF1YWxzPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscyxnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPWUuc3BsaXQoXCIlc1wiKSxyPVwiXCIsbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7bi5sZW5ndGgmJjE8by5sZW5ndGg7KXIrPW8uc2hpZnQoKStuLnNoaWZ0KCk7cmV0dXJuIHIrby5qb2luKFwiJXNcIil9LGdvb2cuc3RyaW5nLmNvbGxhcHNlV2hpdGVzcGFjZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxzXFx4YTBdKy9nLFwiIFwiKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfSxnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlPWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UsZ29vZy5zdHJpbmcuaXNFbXB0eVN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gMD09ZS5sZW5ndGh9LGdvb2cuc3RyaW5nLmlzRW1wdHk9Z29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZSxnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShlKSl9LGdvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlLGdvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGUpe3JldHVybiEvW15cXHRcXG5cXHIgXS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3JldHVybiEvW14wLTldLy50ZXN0KGUpfSxnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihlKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChlKX0sZ29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihlKXtyZXR1cm5cIiBcIj09ZX0sZ29vZy5zdHJpbmcuaXNVbmljb2RlQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gMT09ZS5sZW5ndGgmJlwiIFwiPD1lJiZcIn5cIj49ZXx8XCLCgFwiPD1lJiZcIu+/vVwiPj1lfSxnb29nLnN0cmluZy5zdHJpcE5ld2xpbmVzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikrL2csXCIgXCIpfSxnb29nLnN0cmluZy5jYW5vbmljYWxpemVOZXdsaW5lcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXFxyXFxufFxccnxcXG4pL2csXCJcXG5cIil9LGdvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx4YTB8XFxzL2csXCIgXCIpfSxnb29nLnN0cmluZy5ub3JtYWxpemVTcGFjZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx4YTB8WyBcXHRdKy9nLFwiIFwiKX0sZ29vZy5zdHJpbmcuY29sbGFwc2VCcmVha2luZ1NwYWNlcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFx0XFxyXFxuIF0rL2csXCIgXCIpLnJlcGxhY2UoL15bXFx0XFxyXFxuIF0rfFtcXHRcXHJcXG4gXSskL2csXCJcIil9LGdvb2cuc3RyaW5nLnRyaW09Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbSxnb29nLnN0cmluZy50cmltTGVmdD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW1xcc1xceGEwXSsvLFwiXCIpfSxnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1xcc1xceGEwXSskLyxcIlwiKX0sZ29vZy5zdHJpbmcuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZT1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb21wYXJlLGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oZSx0LG8pe2lmKGU9PXQpcmV0dXJuIDA7aWYoIWUpcmV0dXJuLTE7aWYoIXQpcmV0dXJuIDE7Zm9yKHZhciByPWUudG9Mb3dlckNhc2UoKS5tYXRjaChvKSxuPXQudG9Mb3dlckNhc2UoKS5tYXRjaChvKSxzPU1hdGgubWluKHIubGVuZ3RoLG4ubGVuZ3RoKSxpPTA7aTxzO2krKyl7bz1yW2ldO3ZhciBhPW5baV07aWYobyE9YSlyZXR1cm4gZT1wYXJzZUludChvLDEwKSwhaXNOYU4oZSkmJih0PXBhcnNlSW50KGEsMTApLCFpc05hTih0KSYmZS10KT9lLXQ6bzxhPy0xOjF9cmV0dXJuIHIubGVuZ3RoIT1uLmxlbmd0aD9yLmxlbmd0aC1uLmxlbmd0aDplPHQ/LTE6MX0sZ29vZy5zdHJpbmcuaW50QXdhcmVDb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV8oZSx0LC9cXGQrfFxcRCsvZyl9LGdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV8oZSx0LC9cXGQrfFxcLlxcZCt8XFxEKy9nKX0sZ29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlLGdvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSl9LGdvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUucmVwbGFjZSgvXFwrL2csXCIgXCIpKX0sZ29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnIsZ29vZy5zdHJpbmcuaHRtbEVzY2FwZT1mdW5jdGlvbihlLHQpe3JldHVybiBlPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoZSx0KSxnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoZT1lLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sXCImIzEwMTtcIikpLGV9LGdvb2cuc3RyaW5nLkVfUkVfPS9lL2csZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllcz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoZSxcIiZcIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiZcImRvY3VtZW50XCJpbiBnb29nLmdsb2JhbD9nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzVXNpbmdEb21fKGUpOmdvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXyhlKTplfSxnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzV2l0aERvY3VtZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLmNvbnRhaW5zKGUsXCImXCIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oZSx0KTplfSxnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzVXNpbmdEb21fPWZ1bmN0aW9uKGUsdCl7dmFyIG89e1wiJmFtcDtcIjpcIiZcIixcIiZsdDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiZxdW90O1wiOidcIid9LHI9dD90LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik6Z29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gZS5yZXBsYWNlKGdvb2cuc3RyaW5nLkhUTUxfRU5USVRZX1BBVFRFUk5fLChmdW5jdGlvbihlLHQpe3ZhciBuPW9bZV07cmV0dXJuIG58fChcIiNcIj09dC5jaGFyQXQoMCkmJih0PU51bWJlcihcIjBcIit0LnN1YnN0cigxKSksaXNOYU4odCl8fChuPVN0cmluZy5mcm9tQ2hhckNvZGUodCkpKSxufHwoZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwocixnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMuc2FmZUh0bWxGcm9tU3RyaW5nS25vd25Ub1NhdGlzZnlUeXBlQ29udHJhY3QoZ29vZy5zdHJpbmcuQ29uc3QuZnJvbShcIlNpbmdsZSBIVE1MIGVudGl0eS5cIiksZStcIiBcIikpLG49ci5maXJzdENoaWxkLm5vZGVWYWx1ZS5zbGljZSgwLC0xKSksb1tlXT1uKX0pKX0sZ29vZy5zdHJpbmcudW5lc2NhcGVQdXJlWG1sRW50aXRpZXNfPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLChmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlXCJhbXBcIjpyZXR1cm5cIiZcIjtjYXNlXCJsdFwiOnJldHVyblwiPFwiO2Nhc2VcImd0XCI6cmV0dXJuXCI+XCI7Y2FzZVwicXVvdFwiOnJldHVybidcIic7ZGVmYXVsdDpyZXR1cm5cIiNcIiE9dC5jaGFyQXQoMCl8fCh0PU51bWJlcihcIjBcIit0LnN1YnN0cigxKSksaXNOYU4odCkpP2U6U3RyaW5nLmZyb21DaGFyQ29kZSh0KX19KSl9LGdvb2cuc3RyaW5nLkhUTUxfRU5USVRZX1BBVFRFUk5fPS8mKFteO1xcczwmXSspOz8vZyxnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGUucmVwbGFjZSgvICAvZyxcIiAmIzE2MDtcIiksdCl9LGdvb2cuc3RyaW5nLnByZXNlcnZlU3BhY2VzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhefFtcXG4gXSkgL2csXCIkMVwiK2dvb2cuc3RyaW5nLlVuaWNvZGUuTkJTUCl9LGdvb2cuc3RyaW5nLnN0cmlwUXVvdGVzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPXQubGVuZ3RoLHI9MDtyPG87cisrKXt2YXIgbj0xPT1vP3Q6dC5jaGFyQXQocik7aWYoZS5jaGFyQXQoMCk9PW4mJmUuY2hhckF0KGUubGVuZ3RoLTEpPT1uKXJldHVybiBlLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpfXJldHVybiBlfSxnb29nLnN0cmluZy50cnVuY2F0ZT1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG8mJihlPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoZSkpLGUubGVuZ3RoPnQmJihlPWUuc3Vic3RyaW5nKDAsdC0zKStcIi4uLlwiKSxvJiYoZT1nb29nLnN0cmluZy5odG1sRXNjYXBlKGUpKSxlfSxnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihlLHQsbyxyKXtpZihvJiYoZT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGUpKSxyJiZlLmxlbmd0aD50KXtyPnQmJihyPXQpO3ZhciBuPWUubGVuZ3RoLXI7ZT1lLnN1YnN0cmluZygwLHQtcikrXCIuLi5cIitlLnN1YnN0cmluZyhuKX1lbHNlIGUubGVuZ3RoPnQmJihyPU1hdGguZmxvb3IodC8yKSxuPWUubGVuZ3RoLXIsZT1lLnN1YnN0cmluZygwLHIrdCUyKStcIi4uLlwiK2Uuc3Vic3RyaW5nKG4pKTtyZXR1cm4gbyYmKGU9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShlKSksZX0sZ29vZy5zdHJpbmcuc3BlY2lhbEVzY2FwZUNoYXJzXz17XCJcXDBcIjpcIlxcXFwwXCIsXCJcXGJcIjpcIlxcXFxiXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXHJcIjpcIlxcXFxyXCIsXCJcXHRcIjpcIlxcXFx0XCIsXCJcXHZcIjpcIlxcXFx4MEJcIiwnXCInOidcXFxcXCInLFwiXFxcXFwiOlwiXFxcXFxcXFxcIixcIjxcIjpcIlxcXFx1MDAzQ1wifSxnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlXz17XCInXCI6XCJcXFxcJ1wifSxnb29nLnN0cmluZy5xdW90ZT1mdW5jdGlvbihlKXtlPVN0cmluZyhlKTtmb3IodmFyIHQ9WydcIiddLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHI9ZS5jaGFyQXQobyksbj1yLmNoYXJDb2RlQXQoMCk7dFtvKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bcl18fCgzMTxuJiYxMjc+bj9yOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIocikpfXJldHVybiB0LnB1c2goJ1wiJyksdC5qb2luKFwiXCIpfSxnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG89MDtvPGUubGVuZ3RoO28rKyl0W29dPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZS5jaGFyQXQobykpO3JldHVybiB0LmpvaW4oXCJcIil9LGdvb2cuc3RyaW5nLmVzY2FwZUNoYXI9ZnVuY3Rpb24oZSl7aWYoZSBpbiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlXylyZXR1cm4gZ29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV9bZV07aWYoZSBpbiBnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1tlXT1nb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfW2VdO3ZhciB0PWUuY2hhckNvZGVBdCgwKTtpZigzMTx0JiYxMjc+dCl2YXIgbz1lO2Vsc2UgMjU2PnQ/KG89XCJcXFxceFwiLCgxNj50fHwyNTY8dCkmJihvKz1cIjBcIikpOihvPVwiXFxcXHVcIiw0MDk2PnQmJihvKz1cIjBcIikpLG8rPXQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2VdPW99LGdvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zLGdvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zLGdvb2cuc3RyaW5nLmNvdW50T2Y9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmdD9lLnNwbGl0KHQpLmxlbmd0aC0xOjB9LGdvb2cuc3RyaW5nLnJlbW92ZUF0PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1lO3JldHVybiAwPD10JiZ0PGUubGVuZ3RoJiYwPG8mJihyPWUuc3Vic3RyKDAsdCkrZS5zdWJzdHIodCtvLGUubGVuZ3RoLXQtbykpLHJ9LGdvb2cuc3RyaW5nLnJlbW92ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UodCxcIlwiKX0sZ29vZy5zdHJpbmcucmVtb3ZlQWxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUodCksXCJnXCIpLGUucmVwbGFjZSh0LFwiXCIpfSxnb29nLnN0cmluZy5yZXBsYWNlQWxsPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4gdD1uZXcgUmVnRXhwKGdvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZSh0KSxcImdcIiksZS5yZXBsYWNlKHQsby5yZXBsYWNlKC9cXCQvZyxcIiQkJCRcIikpfSxnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKC8oWy0oKVxcW1xcXXt9Kz8qLiRcXF58LDojPCFcXFxcXSkvZyxcIlxcXFwkMVwiKS5yZXBsYWNlKC9cXHgwOC9nLFwiXFxcXHgwOFwiKX0sZ29vZy5zdHJpbmcucmVwZWF0PVN0cmluZy5wcm90b3R5cGUucmVwZWF0P2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwZWF0KHQpfTpmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheSh0KzEpLmpvaW4oZSl9LGdvb2cuc3RyaW5nLnBhZE51bWJlcj1mdW5jdGlvbihlLHQsbyl7cmV0dXJuLTE9PShvPShlPWdvb2cuaXNEZWYobyk/ZS50b0ZpeGVkKG8pOlN0cmluZyhlKSkuaW5kZXhPZihcIi5cIikpJiYobz1lLmxlbmd0aCksZ29vZy5zdHJpbmcucmVwZWF0KFwiMFwiLE1hdGgubWF4KDAsdC1vKSkrZX0sZ29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/XCJcIjpTdHJpbmcoZSl9LGdvb2cuc3RyaW5nLmJ1aWxkU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGFyZ3VtZW50cyxcIlwiKX0sZ29vZy5zdHJpbmcuZ2V0UmFuZG9tU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMjE0NzQ4MzY0OCpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikrTWF0aC5hYnMoTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpXmdvb2cubm93KCkpLnRvU3RyaW5nKDM2KX0sZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucyxnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxvPTA7bzxlLmxlbmd0aDsrK28pdD0zMSp0K2UuY2hhckNvZGVBdChvKT4+PjA7cmV0dXJuIHR9LGdvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfPTIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKXwwLGdvb2cuc3RyaW5nLmNyZWF0ZVVuaXF1ZVN0cmluZz1mdW5jdGlvbigpe3JldHVyblwiZ29vZ19cIitnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXysrfSxnb29nLnN0cmluZy50b051bWJlcj1mdW5jdGlvbihlKXt2YXIgdD1OdW1iZXIoZSk7cmV0dXJuIDA9PXQmJmdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2UoZSk/TmFOOnR9LGdvb2cuc3RyaW5nLmlzTG93ZXJDYW1lbENhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuL15bYS16XSsoW0EtWl1bYS16XSopKiQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLmlzVXBwZXJDYW1lbENhc2U9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW0EtWl1bYS16XSopKyQvLnRlc3QoZSl9LGdvb2cuc3RyaW5nLnRvQ2FtZWxDYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvXFwtKFthLXpdKS9nLChmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KSl9LGdvb2cuc3RyaW5nLnRvU2VsZWN0b3JDYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZSgvKFtBLVpdKS9nLFwiLSQxXCIpLnRvTG93ZXJDYXNlKCl9LGdvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9Z29vZy5pc1N0cmluZyh0KT9nb29nLnN0cmluZy5yZWdFeHBFc2NhcGUodCk6XCJcXFxcc1wiLGUucmVwbGFjZShuZXcgUmVnRXhwKFwiKF5cIisodD9cInxbXCIrdCtcIl0rXCI6XCJcIikrXCIpKFthLXpdKVwiLFwiZ1wiKSwoZnVuY3Rpb24oZSx0LG8pe3JldHVybiB0K28udG9VcHBlckNhc2UoKX0pKX0sZ29vZy5zdHJpbmcuY2FwaXRhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUuY2hhckF0KDApKS50b1VwcGVyQ2FzZSgpK1N0cmluZyhlLnN1YnN0cigxKSkudG9Mb3dlckNhc2UoKX0sZ29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGlzRmluaXRlKGUpJiYoZT1TdHJpbmcoZSkpLGdvb2cuaXNTdHJpbmcoZSk/L15cXHMqLT8weC9pLnRlc3QoZSk/cGFyc2VJbnQoZSwxNik6cGFyc2VJbnQoZSwxMCk6TmFOfSxnb29nLnN0cmluZy5zcGxpdExpbWl0PWZ1bmN0aW9uKGUsdCxvKXtlPWUuc3BsaXQodCk7Zm9yKHZhciByPVtdOzA8byYmZS5sZW5ndGg7KXIucHVzaChlLnNoaWZ0KCkpLG8tLTtyZXR1cm4gZS5sZW5ndGgmJnIucHVzaChlLmpvaW4odCkpLHJ9LGdvb2cuc3RyaW5nLmxhc3RDb21wb25lbnQ9ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9W3RdKTtmb3IodmFyIG89LTEscj0wO3I8dC5sZW5ndGg7cisrKWlmKFwiXCIhPXRbcl0pe3ZhciBuPWUubGFzdEluZGV4T2YodFtyXSk7bj5vJiYobz1uKX1yZXR1cm4tMT09bz9lOmUuc2xpY2UobysxKX0sZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGUsdCl7dmFyIG89W10scj1bXTtpZihlPT10KXJldHVybiAwO2lmKCFlLmxlbmd0aHx8IXQubGVuZ3RoKXJldHVybiBNYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCsxO24rKylvW25dPW47Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7clswXT1uKzE7Zm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspcltzKzFdPU1hdGgubWluKHJbc10rMSxvW3MrMV0rMSxvW3NdK051bWJlcihlW25dIT10W3NdKSk7Zm9yKHM9MDtzPG8ubGVuZ3RoO3MrKylvW3NdPXJbc119cmV0dXJuIHJbdC5sZW5ndGhdfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZT17fSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc1ByZXN0bz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJQcmVzdG9cIil9LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVHJpZGVudD1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJUcmlkZW50XCIpfHxnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJNU0lFXCIpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiRWRnZVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNXZWJLaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZShcIldlYktpdFwiKSYmIWdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzRWRnZSgpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0dlY2tvPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIkdlY2tvXCIpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNXZWJLaXQoKSYmIWdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVHJpZGVudCgpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuaXNFZGdlKCl9LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmdldFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCk7aWYoZSl7ZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZXh0cmFjdFZlcnNpb25UdXBsZXMoZSk7dmFyIHQsbz1nb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5nZXRFbmdpbmVUdXBsZV8oZSk7aWYobylyZXR1cm5cIkdlY2tvXCI9PW9bMF0/Z29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0VmVyc2lvbkZvcktleV8oZSxcIkZpcmVmb3hcIik6b1sxXTtpZigoZT1lWzBdKSYmKHQ9ZVsyXSkmJih0PS9UcmlkZW50XFwvKFteXFxzO10rKS8uZXhlYyh0KSkpcmV0dXJuIHRbMV19cmV0dXJuXCJcIn0sZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0RW5naW5lVHVwbGVfPWZ1bmN0aW9uKGUpe2lmKCFnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2UoKSlyZXR1cm4gZVsxXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG89ZVt0XTtpZihcIkVkZ2VcIj09b1swXSlyZXR1cm4gb319LGdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzVmVyc2lvbk9ySGlnaGVyPWZ1bmN0aW9uKGUpe3JldHVybiAwPD1nb29nLnN0cmluZy5jb21wYXJlVmVyc2lvbnMoZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUuZ2V0VmVyc2lvbigpLGUpfSxnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5nZXRWZXJzaW9uRm9yS2V5Xz1mdW5jdGlvbihlLHQpe3JldHVybihlPWdvb2cuYXJyYXkuZmluZChlLChmdW5jdGlvbihlKXtyZXR1cm4gdD09ZVswXX0pKSkmJmVbMV18fFwiXCJ9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm09e30sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0FuZHJvaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiQW5kcm9pZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwb2Q9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBvZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwaG9uZT1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUGhvbmVcIikmJiFnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJpUG9kXCIpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBhZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiaVBhZFwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lvcz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBob25lKCl8fGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJcGFkKCl8fGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJcG9kKCl9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNNYWNpbnRvc2g9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTWFjaW50b3NoXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzTGludXg9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTGludXhcIil9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNXaW5kb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudChcIldpbmRvd3NcIil9LGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNDaHJvbWVPUz1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDck9TXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lY2FzdD1mdW5jdGlvbigpe3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQoXCJDcktleVwiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0thaU9TPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoXCJLYWlPU1wiKX0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0dvMlBob25lPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoXCJHQUZQXCIpfSxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmdldFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgZT1nb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50KCksdD1cIlwiO3JldHVybiBnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzV2luZG93cygpP3Q9KGU9KHQ9L1dpbmRvd3MgKD86TlR8UGhvbmUpIChbMC05Ll0rKS8pLmV4ZWMoZSkpP2VbMV06XCIwLjBcIjpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSW9zKCk/dD0oZT0odD0vKD86aVBob25lfGlQb2R8aVBhZHxDUFUpXFxzK09TXFxzKyhcXFMrKS8pLmV4ZWMoZSkpJiZlWzFdLnJlcGxhY2UoL18vZyxcIi5cIik6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc01hY2ludG9zaCgpP3Q9KGU9KHQ9L01hYyBPUyBYIChbMC05Xy5dKykvKS5leGVjKGUpKT9lWzFdLnJlcGxhY2UoL18vZyxcIi5cIik6XCIxMFwiOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNLYWlPUygpP3Q9KGU9KHQ9Lyg/OkthaU9TKVxcLyhcXFMrKS9pKS5leGVjKGUpKSYmZVsxXTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQW5kcm9pZCgpP3Q9KGU9KHQ9L0FuZHJvaWRcXHMrKFteXFwpO10rKShcXCl8OykvKS5leGVjKGUpKSYmZVsxXTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lT1MoKSYmKHQ9KGU9KHQ9Lyg/OkNyT1NcXHMrKD86aTY4Nnx4ODZfNjQpXFxzKyhbMC05Ll0rKSkvKS5leGVjKGUpKSYmZVsxXSksdHx8XCJcIn0sZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc1ZlcnNpb25PckhpZ2hlcj1mdW5jdGlvbihlKXtyZXR1cm4gMDw9Z29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zKGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uZ2V0VmVyc2lvbigpLGUpfSxnb29nLnJlZmxlY3Q9e30sZ29vZy5yZWZsZWN0Lm9iamVjdD1mdW5jdGlvbihlLHQpe3JldHVybiB0fSxnb29nLnJlZmxlY3Qub2JqZWN0UHJvcGVydHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX0sZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZVtcIiBcIl0oZSksZX0sZ29vZy5yZWZsZWN0LnNpbmtWYWx1ZVtcIiBcIl09Z29vZy5udWxsRnVuY3Rpb24sZ29vZy5yZWZsZWN0LmNhbkFjY2Vzc1Byb3BlcnR5PWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiBnb29nLnJlZmxlY3Quc2lua1ZhbHVlKGVbdF0pLCEwfWNhdGNoKGUpe31yZXR1cm4hMX0sZ29vZy5yZWZsZWN0LmNhY2hlPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiByPXI/cih0KTp0LE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpP2Vbcl06ZVtyXT1vKHQpfSxnb29nLnVzZXJBZ2VudD17fSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSUU9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX0VER0U9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX0dFQ0tPPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9XRUJLSVQ9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX01PQklMRV9XRUJLSVQ9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX09QRVJBPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9BTllfVkVSU0lPTj0hMSxnb29nLnVzZXJBZ2VudC5CUk9XU0VSX0tOT1dOXz1nb29nLnVzZXJBZ2VudC5BU1NVTUVfSUV8fGdvb2cudXNlckFnZW50LkFTU1VNRV9FREdFfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfR0VDS098fGdvb2cudXNlckFnZW50LkFTU1VNRV9NT0JJTEVfV0VCS0lUfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfV0VCS0lUfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfT1BFUkEsZ29vZy51c2VyQWdlbnQuZ2V0VXNlckFnZW50U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnQoKX0sZ29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5nbG9iYWwubmF2aWdhdG9yfHxudWxsfSxnb29nLnVzZXJBZ2VudC5nZXROYXZpZ2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQoKX0sZ29vZy51c2VyQWdlbnQuT1BFUkE9Z29vZy51c2VyQWdlbnQuQlJPV1NFUl9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX09QRVJBOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhKCksZ29vZy51c2VyQWdlbnQuSUU9Z29vZy51c2VyQWdlbnQuQlJPV1NFUl9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lFOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFKCksZ29vZy51c2VyQWdlbnQuRURHRT1nb29nLnVzZXJBZ2VudC5CUk9XU0VSX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfRURHRTpnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0VkZ2UoKSxnb29nLnVzZXJBZ2VudC5FREdFX09SX0lFPWdvb2cudXNlckFnZW50LkVER0V8fGdvb2cudXNlckFnZW50LklFLGdvb2cudXNlckFnZW50LkdFQ0tPPWdvb2cudXNlckFnZW50LkJST1dTRVJfS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9HRUNLTzpnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZS5pc0dlY2tvKCksZ29vZy51c2VyQWdlbnQuV0VCS0lUPWdvb2cudXNlckFnZW50LkJST1dTRVJfS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9XRUJLSVR8fGdvb2cudXNlckFnZW50LkFTU1VNRV9NT0JJTEVfV0VCS0lUOmdvb2cubGFicy51c2VyQWdlbnQuZW5naW5lLmlzV2ViS2l0KCksZ29vZy51c2VyQWdlbnQuaXNNb2JpbGVfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cudXNlckFnZW50LldFQktJVCYmZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50KFwiTW9iaWxlXCIpfSxnb29nLnVzZXJBZ2VudC5NT0JJTEU9Z29vZy51c2VyQWdlbnQuQVNTVU1FX01PQklMRV9XRUJLSVR8fGdvb2cudXNlckFnZW50LmlzTW9iaWxlXygpLGdvb2cudXNlckFnZW50LlNBRkFSST1nb29nLnVzZXJBZ2VudC5XRUJLSVQsZ29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lUGxhdGZvcm1fPWZ1bmN0aW9uKCl7dmFyIGU9Z29vZy51c2VyQWdlbnQuZ2V0TmF2aWdhdG9yVHlwZWQoKTtyZXR1cm4gZSYmZS5wbGF0Zm9ybXx8XCJcIn0sZ29vZy51c2VyQWdlbnQuUExBVEZPUk09Z29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lUGxhdGZvcm1fKCksZ29vZy51c2VyQWdlbnQuQVNTVU1FX01BQz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfV0lORE9XUz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfTElOVVg9ITEsZ29vZy51c2VyQWdlbnQuQVNTVU1FX1gxMT0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5EUk9JRD0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBIT05FPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9JUEFEPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9JUE9EPSExLGdvb2cudXNlckFnZW50LkFTU1VNRV9LQUlPUz0hMSxnb29nLnVzZXJBZ2VudC5BU1NVTUVfR08yUEhPTkU9ITEsZ29vZy51c2VyQWdlbnQuUExBVEZPUk1fS05PV05fPWdvb2cudXNlckFnZW50LkFTU1VNRV9NQUN8fGdvb2cudXNlckFnZW50LkFTU1VNRV9XSU5ET1dTfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfTElOVVh8fGdvb2cudXNlckFnZW50LkFTU1VNRV9YMTF8fGdvb2cudXNlckFnZW50LkFTU1VNRV9BTkRST0lEfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBIT05FfHxnb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBBRHx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQT0QsZ29vZy51c2VyQWdlbnQuTUFDPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfTUFDOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNNYWNpbnRvc2goKSxnb29nLnVzZXJBZ2VudC5XSU5ET1dTPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfV0lORE9XUzpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzV2luZG93cygpLGdvb2cudXNlckFnZW50LmlzTGVnYWN5TGludXhfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNMaW51eCgpfHxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQ2hyb21lT1MoKX0sZ29vZy51c2VyQWdlbnQuTElOVVg9Z29vZy51c2VyQWdlbnQuUExBVEZPUk1fS05PV05fP2dvb2cudXNlckFnZW50LkFTU1VNRV9MSU5VWDpnb29nLnVzZXJBZ2VudC5pc0xlZ2FjeUxpbnV4XygpLGdvb2cudXNlckFnZW50LmlzWDExXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cudXNlckFnZW50LmdldE5hdmlnYXRvclR5cGVkKCk7cmV0dXJuISFlJiZnb29nLnN0cmluZy5jb250YWlucyhlLmFwcFZlcnNpb258fFwiXCIsXCJYMTFcIil9LGdvb2cudXNlckFnZW50LlgxMT1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX1gxMTpnb29nLnVzZXJBZ2VudC5pc1gxMV8oKSxnb29nLnVzZXJBZ2VudC5BTkRST0lEPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5EUk9JRDpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzQW5kcm9pZCgpLGdvb2cudXNlckFnZW50LklQSE9ORT1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQSE9ORTpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBob25lKCksZ29vZy51c2VyQWdlbnQuSVBBRD1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQQUQ6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQoKSxnb29nLnVzZXJBZ2VudC5JUE9EPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfSVBPRDpnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBvZCgpLGdvb2cudXNlckFnZW50LklPUz1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQSE9ORXx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0lQQUR8fGdvb2cudXNlckFnZW50LkFTU1VNRV9JUE9EOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNJb3MoKSxnb29nLnVzZXJBZ2VudC5LQUlPUz1nb29nLnVzZXJBZ2VudC5QTEFURk9STV9LTk9XTl8/Z29vZy51c2VyQWdlbnQuQVNTVU1FX0tBSU9TOmdvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0uaXNLYWlPUygpLGdvb2cudXNlckFnZW50LkdPMlBIT05FPWdvb2cudXNlckFnZW50LlBMQVRGT1JNX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5BU1NVTUVfR08yUEhPTkU6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0dvMlBob25lKCksZ29vZy51c2VyQWdlbnQuZGV0ZXJtaW5lVmVyc2lvbl89ZnVuY3Rpb24oKXt2YXIgZT1cIlwiLHQ9Z29vZy51c2VyQWdlbnQuZ2V0VmVyc2lvblJlZ2V4UmVzdWx0XygpO3JldHVybiB0JiYoZT10P3RbMV06XCJcIiksZ29vZy51c2VyQWdlbnQuSUUmJm51bGwhPSh0PWdvb2cudXNlckFnZW50LmdldERvY3VtZW50TW9kZV8oKSkmJnQ+cGFyc2VGbG9hdChlKT9TdHJpbmcodCk6ZX0sZ29vZy51c2VyQWdlbnQuZ2V0VmVyc2lvblJlZ2V4UmVzdWx0Xz1mdW5jdGlvbigpe3ZhciBlPWdvb2cudXNlckFnZW50LmdldFVzZXJBZ2VudFN0cmluZygpO3JldHVybiBnb29nLnVzZXJBZ2VudC5HRUNLTz8vcnY6KFteXFwpO10rKShcXCl8OykvLmV4ZWMoZSk6Z29vZy51c2VyQWdlbnQuRURHRT8vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGUpOmdvb2cudXNlckFnZW50LklFPy9cXGIoPzpNU0lFfHJ2KVs6IF0oW15cXCk7XSspKFxcKXw7KS8uZXhlYyhlKTpnb29nLnVzZXJBZ2VudC5XRUJLSVQ/L1dlYktpdFxcLyhcXFMrKS8uZXhlYyhlKTpnb29nLnVzZXJBZ2VudC5PUEVSQT8vKD86VmVyc2lvbilbIFxcL10/KFxcUyspLy5leGVjKGUpOnZvaWQgMH0sZ29vZy51c2VyQWdlbnQuZ2V0RG9jdW1lbnRNb2RlXz1mdW5jdGlvbigpe3ZhciBlPWdvb2cuZ2xvYmFsLmRvY3VtZW50O3JldHVybiBlP2UuZG9jdW1lbnRNb2RlOnZvaWQgMH0sZ29vZy51c2VyQWdlbnQuVkVSU0lPTj1nb29nLnVzZXJBZ2VudC5kZXRlcm1pbmVWZXJzaW9uXygpLGdvb2cudXNlckFnZW50LmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zKGUsdCl9LGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyQ2FjaGVfPXt9LGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnVzZXJBZ2VudC5BU1NVTUVfQU5ZX1ZFUlNJT058fGdvb2cucmVmbGVjdC5jYWNoZShnb29nLnVzZXJBZ2VudC5pc1ZlcnNpb25PckhpZ2hlckNhY2hlXyxlLChmdW5jdGlvbigpe3JldHVybiAwPD1nb29nLnN0cmluZy5jb21wYXJlVmVyc2lvbnMoZ29vZy51c2VyQWdlbnQuVkVSU0lPTixlKX0pKX0sZ29vZy51c2VyQWdlbnQuaXNWZXJzaW9uPWdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyLGdvb2cudXNlckFnZW50LmlzRG9jdW1lbnRNb2RlT3JIaWdoZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIE51bWJlcihnb29nLnVzZXJBZ2VudC5ET0NVTUVOVF9NT0RFKT49ZX0sZ29vZy51c2VyQWdlbnQuaXNEb2N1bWVudE1vZGU9Z29vZy51c2VyQWdlbnQuaXNEb2N1bWVudE1vZGVPckhpZ2hlcixnb29nLnVzZXJBZ2VudC5ET0NVTUVOVF9NT0RFPWZ1bmN0aW9uKCl7aWYoZ29vZy5nbG9iYWwuZG9jdW1lbnQmJmdvb2cudXNlckFnZW50LklFKXJldHVybiBnb29nLnVzZXJBZ2VudC5nZXREb2N1bWVudE1vZGVfKCl9KCksZ29vZy51c2VyQWdlbnQucHJvZHVjdD17fSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9GSVJFRk9YPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQSE9ORT0hMSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9JUEFEPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0FORFJPSUQ9ITEsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfQ0hST01FPSExLGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSST0hMSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fPWdvb2cudXNlckFnZW50LkFTU1VNRV9JRXx8Z29vZy51c2VyQWdlbnQuQVNTVU1FX0VER0V8fGdvb2cudXNlckFnZW50LkFTU1VNRV9PUEVSQXx8Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfRklSRUZPWHx8Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfSVBIT05FfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9JUEFEfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9BTkRST0lEfHxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9DSFJPTUV8fGdvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSSSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0Lk9QRVJBPWdvb2cudXNlckFnZW50Lk9QRVJBLGdvb2cudXNlckFnZW50LnByb2R1Y3QuSUU9Z29vZy51c2VyQWdlbnQuSUUsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5FREdFPWdvb2cudXNlckFnZW50LkVER0UsZ29vZy51c2VyQWdlbnQucHJvZHVjdC5GSVJFRk9YPWdvb2cudXNlckFnZW50LnByb2R1Y3QuUFJPRFVDVF9LTk9XTl8/Z29vZy51c2VyQWdlbnQucHJvZHVjdC5BU1NVTUVfRklSRUZPWDpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94KCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc0lwaG9uZU9ySXBvZF89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwaG9uZSgpfHxnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtLmlzSXBvZCgpfSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LklQSE9ORT1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQSE9ORTpnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzSXBob25lT3JJcG9kXygpLGdvb2cudXNlckFnZW50LnByb2R1Y3QuSVBBRD1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX0lQQUQ6Z29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lwYWQoKSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFORFJPSUQ9Z29vZy51c2VyQWdlbnQucHJvZHVjdC5QUk9EVUNUX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9BTkRST0lEOmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0FuZHJvaWRCcm93c2VyKCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5DSFJPTUU9Z29vZy51c2VyQWdlbnQucHJvZHVjdC5QUk9EVUNUX0tOT1dOXz9nb29nLnVzZXJBZ2VudC5wcm9kdWN0LkFTU1VNRV9DSFJPTUU6Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lKCksZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1NhZmFyaURlc2t0b3BfPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc1NhZmFyaSgpJiYhZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybS5pc0lvcygpfSxnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSST1nb29nLnVzZXJBZ2VudC5wcm9kdWN0LlBST0RVQ1RfS05PV05fP2dvb2cudXNlckFnZW50LnByb2R1Y3QuQVNTVU1FX1NBRkFSSTpnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzU2FmYXJpRGVza3RvcF8oKSxnb29nLmNyeXB0LmJhc2U2ND17fSxnb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl89XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLGdvb2cuY3J5cHQuYmFzZTY0LkVOQ09ERURfVkFMUz1nb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl8rXCIrLz1cIixnb29nLmNyeXB0LmJhc2U2NC5FTkNPREVEX1ZBTFNfV0VCU0FGRT1nb29nLmNyeXB0LmJhc2U2NC5ERUZBVUxUX0FMUEhBQkVUX0NPTU1PTl8rXCItXy5cIixnb29nLmNyeXB0LmJhc2U2NC5BbHBoYWJldD17REVGQVVMVDowLE5PX1BBRERJTkc6MSxXRUJTQUZFOjIsV0VCU0FGRV9ET1RfUEFERElORzozLFdFQlNBRkVfTk9fUEFERElORzo0fSxnb29nLmNyeXB0LmJhc2U2NC5wYWRkaW5nQ2hhcnNfPVwiPS5cIixnb29nLmNyeXB0LmJhc2U2NC5pc1BhZGRpbmdfPWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhnb29nLmNyeXB0LmJhc2U2NC5wYWRkaW5nQ2hhcnNfLGUpfSxnb29nLmNyeXB0LmJhc2U2NC5ieXRlVG9DaGFyTWFwc189e307Z29vZy5jcnlwdC5iYXNlNjQuY2hhclRvQnl0ZU1hcF89bnVsbCxnb29nLmNyeXB0LmJhc2U2NC5BU1NVTUVfTkFUSVZFX1NVUFBPUlRfPWdvb2cudXNlckFnZW50LkdFQ0tPfHxnb29nLnVzZXJBZ2VudC5XRUJLSVQmJiFnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSSXx8Z29vZy51c2VyQWdlbnQuT1BFUkEsZ29vZy5jcnlwdC5iYXNlNjQuSEFTX05BVElWRV9FTkNPREVfPWdvb2cuY3J5cHQuYmFzZTY0LkFTU1VNRV9OQVRJVkVfU1VQUE9SVF98fFwiZnVuY3Rpb25cIj09dHlwZW9mIGdvb2cuZ2xvYmFsLmJ0b2EsZ29vZy5jcnlwdC5iYXNlNjQuSEFTX05BVElWRV9ERUNPREVfPWdvb2cuY3J5cHQuYmFzZTY0LkFTU1VNRV9OQVRJVkVfU1VQUE9SVF98fCFnb29nLnVzZXJBZ2VudC5wcm9kdWN0LlNBRkFSSSYmIWdvb2cudXNlckFnZW50LklFJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBnb29nLmdsb2JhbC5hdG9iLGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZUJ5dGVBcnJheT1mdW5jdGlvbihlLHQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZ29vZy5pc0FycmF5TGlrZShlKSxcImVuY29kZUJ5dGVBcnJheSB0YWtlcyBhbiBhcnJheSBhcyBhIHBhcmFtZXRlclwiKSx2b2lkIDA9PT10JiYodD1nb29nLmNyeXB0LmJhc2U2NC5BbHBoYWJldC5ERUZBVUxUKSxnb29nLmNyeXB0LmJhc2U2NC5pbml0XygpLHQ9Z29vZy5jcnlwdC5iYXNlNjQuYnl0ZVRvQ2hhck1hcHNfW3RdO2Zvcih2YXIgbz1bXSxyPTA7cjxlLmxlbmd0aDtyKz0zKXt2YXIgbj1lW3JdLHM9cisxPGUubGVuZ3RoLGk9cz9lW3IrMV06MCxhPXIrMjxlLmxlbmd0aCxnPWE/ZVtyKzJdOjAsbD1uPj4yO249KDMmbik8PDR8aT4+NCxpPSgxNSZpKTw8MnxnPj42LGcmPTYzLGF8fChnPTY0LHN8fChpPTY0KSksby5wdXNoKHRbbF0sdFtuXSx0W2ldfHxcIlwiLHRbZ118fFwiXCIpfXJldHVybiBvLmpvaW4oXCJcIil9LGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZVN0cmluZz1mdW5jdGlvbihlLHQpe3JldHVybiBnb29nLmNyeXB0LmJhc2U2NC5IQVNfTkFUSVZFX0VOQ09ERV8mJiF0P2dvb2cuZ2xvYmFsLmJ0b2EoZSk6Z29vZy5jcnlwdC5iYXNlNjQuZW5jb2RlQnl0ZUFycmF5KGdvb2cuY3J5cHQuc3RyaW5nVG9CeXRlQXJyYXkoZSksdCl9LGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZz1mdW5jdGlvbihlLHQpe2lmKGdvb2cuY3J5cHQuYmFzZTY0LkhBU19OQVRJVkVfREVDT0RFXyYmIXQpcmV0dXJuIGdvb2cuZ2xvYmFsLmF0b2IoZSk7dmFyIG89XCJcIjtyZXR1cm4gZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nSW50ZXJuYWxfKGUsKGZ1bmN0aW9uKGUpe28rPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSksb30sZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nVG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbz1bXTtyZXR1cm4gZ29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nSW50ZXJuYWxfKGUsKGZ1bmN0aW9uKGUpe28ucHVzaChlKX0pKSxvfSxnb29nLmNyeXB0LmJhc2U2NC5kZWNvZGVTdHJpbmdUb1VpbnQ4QXJyYXk9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy51c2VyQWdlbnQuSUV8fGdvb2cudXNlckFnZW50LmlzVmVyc2lvbk9ySGlnaGVyKFwiMTBcIiksXCJCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdHlwZWQgYXJyYXlzXCIpO3ZhciB0PWUubGVuZ3RoLG89Myp0LzQ7byUzP289TWF0aC5mbG9vcihvKTpnb29nLmNyeXB0LmJhc2U2NC5pc1BhZGRpbmdfKGVbdC0xXSkmJihvPWdvb2cuY3J5cHQuYmFzZTY0LmlzUGFkZGluZ18oZVt0LTJdKT9vLTI6by0xKTt2YXIgcj1uZXcgVWludDhBcnJheShvKSxuPTA7cmV0dXJuIGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ0ludGVybmFsXyhlLChmdW5jdGlvbihlKXtyW24rK109ZX0pKSxyLnN1YmFycmF5KDAsbil9LGdvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ0ludGVybmFsXz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8odCl7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocisrKSxuPWdvb2cuY3J5cHQuYmFzZTY0LmNoYXJUb0J5dGVNYXBfW29dO2lmKG51bGwhPW4pcmV0dXJuIG47aWYoIWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2UobykpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitvKX1yZXR1cm4gdH1nb29nLmNyeXB0LmJhc2U2NC5pbml0XygpO2Zvcih2YXIgcj0wOzspe3ZhciBuPW8oLTEpLHM9bygwKSxpPW8oNjQpLGE9byg2NCk7aWYoNjQ9PT1hJiYtMT09PW4pYnJlYWs7dChuPDwyfHM+PjQpLDY0IT1pJiYodChzPDw0JjI0MHxpPj4yKSw2NCE9YSYmdChpPDw2JjE5MnxhKSl9fSxnb29nLmNyeXB0LmJhc2U2NC5pbml0Xz1mdW5jdGlvbigpe2lmKCFnb29nLmNyeXB0LmJhc2U2NC5jaGFyVG9CeXRlTWFwXyl7Z29vZy5jcnlwdC5iYXNlNjQuY2hhclRvQnl0ZU1hcF89e307Zm9yKHZhciBlPWdvb2cuY3J5cHQuYmFzZTY0LkRFRkFVTFRfQUxQSEFCRVRfQ09NTU9OXy5zcGxpdChcIlwiKSx0PVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxvPTA7NT5vO28rKyl7dmFyIHI9ZS5jb25jYXQodFtvXS5zcGxpdChcIlwiKSk7Z29vZy5jcnlwdC5iYXNlNjQuYnl0ZVRvQ2hhck1hcHNfW29dPXI7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBzPXJbbl0saT1nb29nLmNyeXB0LmJhc2U2NC5jaGFyVG9CeXRlTWFwX1tzXTt2b2lkIDA9PT1pP2dvb2cuY3J5cHQuYmFzZTY0LmNoYXJUb0J5dGVNYXBfW3NdPW46Z29vZy5hc3NlcnRzLmFzc2VydChpPT09bil9fX19LGpzcGIudXRpbHM9e30sanNwYi51dGlscy5zcGxpdDY0TG93PTAsanNwYi51dGlscy5zcGxpdDY0SGlnaD0wLGpzcGIudXRpbHMuc3BsaXRVaW50NjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT4+PjA7ZT1NYXRoLmZsb29yKChlLXQpL2pzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMik+Pj4wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz10LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9ZX0sanNwYi51dGlscy5zcGxpdEludDY0PWZ1bmN0aW9uKGUpe3ZhciB0PTA+ZSxvPShlPU1hdGguYWJzKGUpKT4+PjA7ZT1NYXRoLmZsb29yKChlLW8pL2pzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksZT4+Pj0wLHQmJihlPX5lPj4+MCw0Mjk0OTY3Mjk1PChvPTErKH5vPj4+MCkpJiYobz0wLDQyOTQ5NjcyOTU8KytlJiYoZT0wKSkpLGpzcGIudXRpbHMuc3BsaXQ2NExvdz1vLGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9ZX0sanNwYi51dGlscy5zcGxpdFppZ3phZzY0PWZ1bmN0aW9uKGUpe3ZhciB0PTA+ZTtlPTIqTWF0aC5hYnMoZSksanNwYi51dGlscy5zcGxpdFVpbnQ2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3QmJigwPT1lPzA9PW8/bz1lPTQyOTQ5NjcyOTU6KG8tLSxlPTQyOTQ5NjcyOTUpOmUtLSksanNwYi51dGlscy5zcGxpdDY0TG93PWUsanNwYi51dGlscy5zcGxpdDY0SGlnaD1vfSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQzMj1mdW5jdGlvbihlKXt2YXIgdD0wPmU/MTowO2lmKDA9PT0oZT10Py1lOmUpKTA8MS9lPyhqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PTApOihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PTIxNDc0ODM2NDgpO2Vsc2UgaWYoaXNOYU4oZSkpanNwYi51dGlscy5zcGxpdDY0SGlnaD0wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz0yMTQ3NDgzNjQ3O2Vsc2UgaWYoZT5qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDMyX01BWClqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PSh0PDwzMXwyMTM5MDk1MDQwKT4+PjA7ZWxzZSBpZihlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUlOKWU9TWF0aC5yb3VuZChlL01hdGgucG93KDIsLTE0OSkpLGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9MCxqc3BiLnV0aWxzLnNwbGl0NjRMb3c9KHQ8PDMxfGUpPj4+MDtlbHNle3ZhciBvPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpO2UqPU1hdGgucG93KDIsLW8pLDE2Nzc3MjE2PD0oZT1NYXRoLnJvdW5kKGUqanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIzKSkmJisrbyxqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPTAsanNwYi51dGlscy5zcGxpdDY0TG93PSh0PDwzMXxvKzEyNzw8MjN8ODM4ODYwNyZlKT4+PjB9fSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQ2ND1mdW5jdGlvbihlKXt2YXIgdD0wPmU/MTowO2lmKDA9PT0oZT10Py1lOmUpKWpzcGIudXRpbHMuc3BsaXQ2NEhpZ2g9MDwxL2U/MDoyMTQ3NDgzNjQ4LGpzcGIudXRpbHMuc3BsaXQ2NExvdz0wO2Vsc2UgaWYoaXNOYU4oZSkpanNwYi51dGlscy5zcGxpdDY0SGlnaD0yMTQ3NDgzNjQ3LGpzcGIudXRpbHMuc3BsaXQ2NExvdz00Mjk0OTY3Mjk1O2Vsc2UgaWYoZT5qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDY0X01BWClqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPSh0PDwzMXwyMTQ2NDM1MDcyKT4+PjAsanNwYi51dGlscy5zcGxpdDY0TG93PTA7ZWxzZSBpZihlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUlOKXt2YXIgbz1lL01hdGgucG93KDIsLTEwNzQpO2U9by9qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIsanNwYi51dGlscy5zcGxpdDY0SGlnaD0odDw8MzF8ZSk+Pj4wLGpzcGIudXRpbHMuc3BsaXQ2NExvdz1vPj4+MH1lbHNle3ZhciByPTA7aWYoMjw9KG89ZSkpZm9yKDsyPD1vJiYxMDIzPnI7KXIrKyxvLz0yO2Vsc2UgZm9yKDsxPm8mJi0xMDIyPHI7KW8qPTIsci0tO2U9KG89ZSpNYXRoLnBvdygyLC1yKSkqanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzIwJjEwNDg1NzUsbz1vKmpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT181Mj4+PjAsanNwYi51dGlscy5zcGxpdDY0SGlnaD0odDw8MzF8cisxMDIzPDwyMHxlKT4+PjAsanNwYi51dGlscy5zcGxpdDY0TG93PW99fSxqc3BiLnV0aWxzLnNwbGl0SGFzaDY0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgwKSxvPWUuY2hhckNvZGVBdCgxKSxyPWUuY2hhckNvZGVBdCgyKSxuPWUuY2hhckNvZGVBdCgzKSxzPWUuY2hhckNvZGVBdCg0KSxpPWUuY2hhckNvZGVBdCg1KSxhPWUuY2hhckNvZGVBdCg2KTtlPWUuY2hhckNvZGVBdCg3KSxqc3BiLnV0aWxzLnNwbGl0NjRMb3c9dCsobzw8OCkrKHI8PDE2KSsobjw8MjQpPj4+MCxqc3BiLnV0aWxzLnNwbGl0NjRIaWdoPXMrKGk8PDgpKyhhPDwxNikrKGU8PDI0KT4+PjB9LGpzcGIudXRpbHMuam9pblVpbnQ2ND1mdW5jdGlvbihlLHQpe3JldHVybiB0KmpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMisoZT4+PjApfSxqc3BiLnV0aWxzLmpvaW5JbnQ2ND1mdW5jdGlvbihlLHQpe3ZhciBvPTIxNDc0ODM2NDgmdDtyZXR1cm4gbyYmKHQ9fnQ+Pj4wLDA9PShlPTErfmU+Pj4wKSYmKHQ9dCsxPj4+MCkpLGU9anNwYi51dGlscy5qb2luVWludDY0KGUsdCksbz8tZTplfSxqc3BiLnV0aWxzLnRvWmlnemFnNjQ9ZnVuY3Rpb24oZSx0LG8pe3ZhciByPXQ+PjMxO3JldHVybiBvKGU8PDFeciwodDw8MXxlPj4+MzEpXnIpfSxqc3BiLnV0aWxzLmpvaW5aaWd6YWc2ND1mdW5jdGlvbihlLHQpe3JldHVybiBqc3BiLnV0aWxzLmZyb21aaWd6YWc2NChlLHQsanNwYi51dGlscy5qb2luSW50NjQpfSxqc3BiLnV0aWxzLmZyb21aaWd6YWc2ND1mdW5jdGlvbihlLHQsbyl7dmFyIHI9LSgxJmUpO3JldHVybiBvKChlPj4+MXx0PDwzMSlecix0Pj4+MV5yKX0sanNwYi51dGlscy5qb2luRmxvYXQzMj1mdW5jdGlvbihlLHQpe3Q9MiooZT4+MzEpKzE7dmFyIG89ZT4+PjIzJjI1NTtyZXR1cm4gZSY9ODM4ODYwNywyNTU9PW8/ZT9OYU46MS8wKnQ6MD09bz90Kk1hdGgucG93KDIsLTE0OSkqZTp0Kk1hdGgucG93KDIsby0xNTApKihlK01hdGgucG93KDIsMjMpKX0sanNwYi51dGlscy5qb2luRmxvYXQ2ND1mdW5jdGlvbihlLHQpe3ZhciBvPTIqKHQ+PjMxKSsxLHI9dD4+PjIwJjIwNDc7cmV0dXJuIGU9anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKigxMDQ4NTc1JnQpK2UsMjA0Nz09cj9lP05hTjoxLzAqbzowPT1yP28qTWF0aC5wb3coMiwtMTA3NCkqZTpvKk1hdGgucG93KDIsci0xMDc1KSooZStqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNTIpfSxqc3BiLnV0aWxzLmpvaW5IYXNoNjQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4+MCYyNTUsZT4+PjgmMjU1LGU+Pj4xNiYyNTUsZT4+PjI0JjI1NSx0Pj4+MCYyNTUsdD4+PjgmMjU1LHQ+Pj4xNiYyNTUsdD4+PjI0JjI1NSl9LGpzcGIudXRpbHMuRElHSVRTPVwiMDEyMzQ1Njc4OWFiY2RlZlwiLnNwbGl0KFwiXCIpLGpzcGIudXRpbHMuWkVST19DSEFSX0NPREVfPTQ4LGpzcGIudXRpbHMuQV9DSEFSX0NPREVfPTk3LGpzcGIudXRpbHMuam9pblVuc2lnbmVkRGVjaW1hbFN0cmluZz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gZT1lP1N0cmluZyhlKTpcIlwiLHQ/XCIwMDAwMDAwXCIuc2xpY2UoZS5sZW5ndGgpK2U6ZX1pZigyMDk3MTUxPj10KXJldHVyblwiXCIranNwYi51dGlscy5qb2luVWludDY0KGUsdCk7dmFyIHI9KGU+Pj4yNHx0PDw4KT4+PjAmMTY3NzcyMTU7cmV0dXJuIGU9KDE2Nzc3MjE1JmUpKzY3NzcyMTYqcis2NzEwNjU2Kih0PXQ+PjE2JjY1NTM1KSxyKz04MTQ3NDk3KnQsdCo9MiwxZTc8PWUmJihyKz1NYXRoLmZsb29yKGUvMWU3KSxlJT0xZTcpLDFlNzw9ciYmKHQrPU1hdGguZmxvb3Ioci8xZTcpLHIlPTFlNyksbyh0LDApK28ocix0KStvKGUsMSl9LGpzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgbz0yMTQ3NDgzNjQ4JnQ7cmV0dXJuIG8mJih0PX50KygwPT0oZT0xK35lPj4+MCk/MTowKT4+PjApLGU9anNwYi51dGlscy5qb2luVW5zaWduZWREZWNpbWFsU3RyaW5nKGUsdCksbz9cIi1cIitlOmV9LGpzcGIudXRpbHMuaGFzaDY0VG9EZWNpbWFsU3RyaW5nPWZ1bmN0aW9uKGUsdCl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3JldHVybiB0P2pzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmcoZSxvKTpqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcoZSxvKX0sanNwYi51dGlscy5oYXNoNjRBcnJheVRvRGVjaW1hbFN0cmluZ3M9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89QXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKylvW3JdPWpzcGIudXRpbHMuaGFzaDY0VG9EZWNpbWFsU3RyaW5nKGVbcl0sdCk7cmV0dXJuIG99LGpzcGIudXRpbHMuZGVjaW1hbFN0cmluZ1RvSGFzaDY0PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIG89MDs4Pm8mJigxIT09ZXx8MDx0KTtvKyspdD1lKnJbb10rdCxyW29dPTI1NSZ0LHQ+Pj49OH1nb29nLmFzc2VydHMuYXNzZXJ0KDA8ZS5sZW5ndGgpO3ZhciBvPSExO1wiLVwiPT09ZVswXSYmKG89ITAsZT1lLnNsaWNlKDEpKTtmb3IodmFyIHI9WzAsMCwwLDAsMCwwLDAsMF0sbj0wO248ZS5sZW5ndGg7bisrKXQoMTAsZS5jaGFyQ29kZUF0KG4pLWpzcGIudXRpbHMuWkVST19DSEFSX0NPREVfKTtyZXR1cm4gbyYmKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7OD5lO2UrKylyW2VdPTI1NSZ+cltlXX0oKSx0KDEsMSkpLGdvb2cuY3J5cHQuYnl0ZUFycmF5VG9TdHJpbmcocil9LGpzcGIudXRpbHMuc3BsaXREZWNpbWFsU3RyaW5nPWZ1bmN0aW9uKGUpe2pzcGIudXRpbHMuc3BsaXRIYXNoNjQoanNwYi51dGlscy5kZWNpbWFsU3RyaW5nVG9IYXNoNjQoZSkpfSxqc3BiLnV0aWxzLnRvSGV4RGlnaXRfPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDEwPmU/anNwYi51dGlscy5aRVJPX0NIQVJfQ09ERV8rZTpqc3BiLnV0aWxzLkFfQ0hBUl9DT0RFXy0xMCtlKX0sanNwYi51dGlscy5mcm9tSGV4Q2hhckNvZGVfPWZ1bmN0aW9uKGUpe3JldHVybiBlPj1qc3BiLnV0aWxzLkFfQ0hBUl9DT0RFXz9lLWpzcGIudXRpbHMuQV9DSEFSX0NPREVfKzEwOmUtanNwYi51dGlscy5aRVJPX0NIQVJfQ09ERV99LGpzcGIudXRpbHMuaGFzaDY0VG9IZXhTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkoMTgpO3RbMF09XCIwXCIsdFsxXT1cInhcIjtmb3IodmFyIG89MDs4Pm87bysrKXt2YXIgcj1lLmNoYXJDb2RlQXQoNy1vKTt0WzIqbysyXT1qc3BiLnV0aWxzLnRvSGV4RGlnaXRfKHI+PjQpLHRbMipvKzNdPWpzcGIudXRpbHMudG9IZXhEaWdpdF8oMTUmcil9cmV0dXJuIHQuam9pbihcIlwiKX0sanNwYi51dGlscy5oZXhTdHJpbmdUb0hhc2g2ND1mdW5jdGlvbihlKXtlPWUudG9Mb3dlckNhc2UoKSxnb29nLmFzc2VydHMuYXNzZXJ0KDE4PT1lLmxlbmd0aCksZ29vZy5hc3NlcnRzLmFzc2VydChcIjBcIj09ZVswXSksZ29vZy5hc3NlcnRzLmFzc2VydChcInhcIj09ZVsxXSk7Zm9yKHZhciB0PVwiXCIsbz0wOzg+bztvKyspe3ZhciByPWpzcGIudXRpbHMuZnJvbUhleENoYXJDb2RlXyhlLmNoYXJDb2RlQXQoMipvKzIpKSxuPWpzcGIudXRpbHMuZnJvbUhleENoYXJDb2RlXyhlLmNoYXJDb2RlQXQoMipvKzMpKTt0PVN0cmluZy5mcm9tQ2hhckNvZGUoMTYqcituKSt0fXJldHVybiB0fSxqc3BiLnV0aWxzLmhhc2g2NFRvTnVtYmVyPWZ1bmN0aW9uKGUsdCl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSxlPWpzcGIudXRpbHMuc3BsaXQ2NExvdzt2YXIgbz1qc3BiLnV0aWxzLnNwbGl0NjRIaWdoO3JldHVybiB0P2pzcGIudXRpbHMuam9pbkludDY0KGUsbyk6anNwYi51dGlscy5qb2luVWludDY0KGUsbyl9LGpzcGIudXRpbHMubnVtYmVyVG9IYXNoNjQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSxqc3BiLnV0aWxzLmpvaW5IYXNoNjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLnV0aWxzLmNvdW50VmFyaW50cz1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciByPTAsbj10O248bztuKyspcis9ZVtuXT4+NztyZXR1cm4gby10LXJ9LGpzcGIudXRpbHMuY291bnRWYXJpbnRGaWVsZHM9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49MDtpZigxMjg+KHI9OCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCkpZm9yKDt0PG8mJmVbdCsrXT09cjspZm9yKG4rKzs7KXt2YXIgcz1lW3QrK107aWYoMD09KDEyOCZzKSlicmVha31lbHNlIGZvcig7dDxvOyl7Zm9yKHM9cjsxMjg8czspe2lmKGVbdF0hPSgxMjcmc3wxMjgpKXJldHVybiBuO3QrKyxzPj49N31pZihlW3QrK10hPXMpYnJlYWs7Zm9yKG4rKzswIT0oMTI4JihzPWVbdCsrXSkpOyk7fXJldHVybiBufSxqc3BiLnV0aWxzLmNvdW50Rml4ZWRGaWVsZHNfPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9MDtpZigxMjg+cilmb3IoO3Q8byYmZVt0KytdPT1yOylzKyssdCs9bjtlbHNlIGZvcig7dDxvOyl7Zm9yKHZhciBpPXI7MTI4PGk7KXtpZihlW3QrK10hPSgxMjcmaXwxMjgpKXJldHVybiBzO2k+Pj03fWlmKGVbdCsrXSE9aSlicmVhaztzKyssdCs9bn1yZXR1cm4gc30sanNwYi51dGlscy5jb3VudEZpeGVkMzJGaWVsZHM9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIGpzcGIudXRpbHMuY291bnRGaXhlZEZpZWxkc18oZSx0LG8sOCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIsNCl9LGpzcGIudXRpbHMuY291bnRGaXhlZDY0RmllbGRzPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBqc3BiLnV0aWxzLmNvdW50Rml4ZWRGaWVsZHNfKGUsdCxvLDgqcitqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0LDgpfSxqc3BiLnV0aWxzLmNvdW50RGVsaW1pdGVkRmllbGRzPWZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPTA7Zm9yKHI9OCpyK2pzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRDt0PG87KXtmb3IodmFyIHM9cjsxMjg8czspe2lmKGVbdCsrXSE9KDEyNyZzfDEyOCkpcmV0dXJuIG47cz4+PTd9aWYoZVt0KytdIT1zKWJyZWFrO24rKztmb3IodmFyIGk9MCxhPTE7aSs9KDEyNyYocz1lW3QrK10pKSphLGEqPTEyOCwwIT0oMTI4JnMpOyk7dCs9aX1yZXR1cm4gbn0sanNwYi51dGlscy5kZWJ1Z0J5dGVzVG9UZXh0Rm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PSdcIic7aWYoZSl7ZT1qc3BiLnV0aWxzLmJ5dGVTb3VyY2VUb1VpbnQ4QXJyYXkoZSk7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspdCs9XCJcXFxceFwiLDE2PmVbb10mJih0Kz1cIjBcIiksdCs9ZVtvXS50b1N0cmluZygxNil9cmV0dXJuIHQrJ1wiJ30sanNwYi51dGlscy5kZWJ1Z1NjYWxhclRvVGV4dEZvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9nb29nLnN0cmluZy5xdW90ZShlKTplLnRvU3RyaW5nKCl9LGpzcGIudXRpbHMuc3RyaW5nVG9CeXRlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKSxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWUuY2hhckNvZGVBdChvKTtpZigyNTU8cil0aHJvdyBFcnJvcihcIkNvbnZlcnNpb24gZXJyb3I6IHN0cmluZyBjb250YWlucyBjb2RlcG9pbnQgb3V0c2lkZSBvZiBieXRlIHJhbmdlXCIpO3Rbb109cn1yZXR1cm4gdH0sanNwYi51dGlscy5ieXRlU291cmNlVG9VaW50OEFycmF5PWZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yPT09VWludDhBcnJheT9lOmUuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcnx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJ1ZmZlciYmZS5jb25zdHJ1Y3Rvcj09PUJ1ZmZlcnx8ZS5jb25zdHJ1Y3Rvcj09PUFycmF5P25ldyBVaW50OEFycmF5KGUpOmUuY29uc3RydWN0b3I9PT1TdHJpbmc/Z29vZy5jcnlwdC5iYXNlNjQuZGVjb2RlU3RyaW5nVG9VaW50OEFycmF5KGUpOihnb29nLmFzc2VydHMuZmFpbChcIlR5cGUgbm90IGNvbnZlcnRpYmxlIHRvIFVpbnQ4QXJyYXkuXCIpLG5ldyBVaW50OEFycmF5KDApKX0sanNwYi5CaW5hcnlEZWNvZGVyPWZ1bmN0aW9uKGUsdCxvKXt0aGlzLmJ5dGVzXz1udWxsLHRoaXMuY3Vyc29yXz10aGlzLmVuZF89dGhpcy5zdGFydF89MCx0aGlzLmVycm9yXz0hMSxlJiZ0aGlzLnNldEJsb2NrKGUsdCxvKX0sanNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfPVtdLGpzcGIuQmluYXJ5RGVjb2Rlci5hbGxvYz1mdW5jdGlvbihlLHQsbyl7aWYoanNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfLmxlbmd0aCl7dmFyIHI9anNwYi5CaW5hcnlEZWNvZGVyLmluc3RhbmNlQ2FjaGVfLnBvcCgpO3JldHVybiBlJiZyLnNldEJsb2NrKGUsdCxvKSxyfXJldHVybiBuZXcganNwYi5CaW5hcnlEZWNvZGVyKGUsdCxvKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5mcmVlPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcigpLDEwMD5qc3BiLkJpbmFyeURlY29kZXIuaW5zdGFuY2VDYWNoZV8ubGVuZ3RoJiZqc3BiLkJpbmFyeURlY29kZXIuaW5zdGFuY2VDYWNoZV8ucHVzaCh0aGlzKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBqc3BiLkJpbmFyeURlY29kZXIuYWxsb2ModGhpcy5ieXRlc18sdGhpcy5zdGFydF8sdGhpcy5lbmRfLXRoaXMuc3RhcnRfKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYnl0ZXNfPW51bGwsdGhpcy5jdXJzb3JfPXRoaXMuZW5kXz10aGlzLnN0YXJ0Xz0wLHRoaXMuZXJyb3JfPSExfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ5dGVzX30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5zZXRCbG9jaz1mdW5jdGlvbihlLHQsbyl7dGhpcy5ieXRlc189anNwYi51dGlscy5ieXRlU291cmNlVG9VaW50OEFycmF5KGUpLHRoaXMuc3RhcnRfPXZvaWQgMCE9PXQ/dDowLHRoaXMuZW5kXz12b2lkIDAhPT1vP3RoaXMuc3RhcnRfK286dGhpcy5ieXRlc18ubGVuZ3RoLHRoaXMuY3Vyc29yXz10aGlzLnN0YXJ0X30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5nZXRFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnNldEVuZD1mdW5jdGlvbihlKXt0aGlzLmVuZF89ZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY3Vyc29yXz10aGlzLnN0YXJ0X30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJzb3JffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnNldEN1cnNvcj1mdW5jdGlvbihlKXt0aGlzLmN1cnNvcl89ZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMuY3Vyc29yXys9ZSxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5hdEVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnNvcl89PXRoaXMuZW5kX30sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5wYXN0RW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3Vyc29yXz50aGlzLmVuZF99LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcl98fDA+dGhpcy5jdXJzb3JffHx0aGlzLmN1cnNvcl8+dGhpcy5lbmRffSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTcGxpdFZhcmludDY0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xMjgsbz0wLHI9MCxuPTA7ND5uJiYxMjg8PXQ7bisrKW98PSgxMjcmKHQ9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKytdKSk8PDcqbjtpZigxMjg8PXQmJihvfD0oMTI3Jih0PXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysrXSkpPDwyOCxyfD0oMTI3JnQpPj40KSwxMjg8PXQpZm9yKG49MDs1Pm4mJjEyODw9dDtuKyspcnw9KDEyNyYodD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rK10pKTw8NypuKzM7aWYoMTI4PnQpcmV0dXJuIGUobz4+PjAscj4+PjApO2dvb2cuYXNzZXJ0cy5mYWlsKFwiRmFpbGVkIHRvIHJlYWQgdmFyaW50LCBlbmNvZGluZyBpcyBpbnZhbGlkLlwiKSx0aGlzLmVycm9yXz0hMH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NCgoZnVuY3Rpb24odCxvKXtyZXR1cm4ganNwYi51dGlscy5mcm9tWmlnemFnNjQodCxvLGUpfSkpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTcGxpdEZpeGVkNjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlc18sbz10aGlzLmN1cnNvcl87dGhpcy5jdXJzb3JfKz04O2Zvcih2YXIgcj0wLG49MCxzPW8rNztzPj1vO3MtLSlyPXI8PDh8dFtzXSxuPW48PDh8dFtzKzRdO3JldHVybiBlKHIsbil9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUuc2tpcFZhcmludD1mdW5jdGlvbigpe2Zvcig7MTI4JnRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yX107KXRoaXMuY3Vyc29yXysrO3RoaXMuY3Vyc29yXysrfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnVuc2tpcFZhcmludD1mdW5jdGlvbihlKXtmb3IoOzEyODxlOyl0aGlzLmN1cnNvcl8tLSxlPj4+PTc7dGhpcy5jdXJzb3JfLS19LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzXyx0PWVbdGhpcy5jdXJzb3JfKzBdLG89MTI3JnQ7cmV0dXJuIDEyOD50Pyh0aGlzLmN1cnNvcl8rPTEsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbyk6KG98PSgxMjcmKHQ9ZVt0aGlzLmN1cnNvcl8rMV0pKTw8NywxMjg+dD8odGhpcy5jdXJzb3JfKz0yLGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLG8pOihvfD0oMTI3Jih0PWVbdGhpcy5jdXJzb3JfKzJdKSk8PDE0LDEyOD50Pyh0aGlzLmN1cnNvcl8rPTMsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbyk6KG98PSgxMjcmKHQ9ZVt0aGlzLmN1cnNvcl8rM10pKTw8MjEsMTI4PnQ/KHRoaXMuY3Vyc29yXys9NCxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSxvKToob3w9KDE1Jih0PWVbdGhpcy5jdXJzb3JfKzRdKSk8PDI4LDEyOD50Pyh0aGlzLmN1cnNvcl8rPTUsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbz4+PjApOih0aGlzLmN1cnNvcl8rPTUsMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmMTI4PD1lW3RoaXMuY3Vyc29yXysrXSYmZ29vZy5hc3NlcnRzLmFzc2VydCghMSksZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksbykpKSkpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTaWduZWRWYXJpbnQzMj1qc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVbnNpZ25lZFZhcmludDMyLGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50MzJTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkVW5zaWduZWRWYXJpbnQzMigpLnRvU3RyaW5nKCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFNpZ25lZFZhcmludDMyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNpZ25lZFZhcmludDMyKCkudG9TdHJpbmcoKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7cmV0dXJuIGU+Pj4xXi0oMSZlKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVW5zaWduZWRWYXJpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFZhcmludDY0KGpzcGIudXRpbHMuam9pblVpbnQ2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVuc2lnbmVkVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTaWduZWRWYXJpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFZhcmludDY0KGpzcGIudXRpbHMuam9pbkludDY0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU2lnbmVkVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5TaWduZWREZWNpbWFsU3RyaW5nKX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkWmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLmpvaW5aaWd6YWc2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0KGpzcGIudXRpbHMuam9pbkhhc2g2NCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFppZ3phZ1ZhcmludDY0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNwbGl0WmlnemFnVmFyaW50NjQoanNwYi51dGlscy5qb2luU2lnbmVkRGVjaW1hbFN0cmluZyl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVpbnQ4PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzBdO3JldHVybiB0aGlzLmN1cnNvcl8rPTEsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksZX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVWludDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzBdLHQ9dGhpcy5ieXRlc19bdGhpcy5jdXJzb3JfKzFdO3JldHVybiB0aGlzLmN1cnNvcl8rPTIsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksZTw8MHx0PDw4fSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMF0sdD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMV0sbz10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMl0scj10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rM107cmV0dXJuIHRoaXMuY3Vyc29yXys9NCxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSwoZTw8MHx0PDw4fG88PDE2fHI8PDI0KT4+PjB9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZFVpbnQ2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVpbnQzMigpLHQ9dGhpcy5yZWFkVWludDMyKCk7cmV0dXJuIGpzcGIudXRpbHMuam9pblVpbnQ2NChlLHQpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5VbnNpZ25lZERlY2ltYWxTdHJpbmcoZSx0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyswXTtyZXR1cm4gdGhpcy5jdXJzb3JfKz0xLGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLGU8PDI0Pj4yNH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50MTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMF0sdD10aGlzLmJ5dGVzX1t0aGlzLmN1cnNvcl8rMV07cmV0dXJuIHRoaXMuY3Vyc29yXys9Mixnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMuY3Vyc29yXzw9dGhpcy5lbmRfKSwoZTw8MHx0PDw4KTw8MTY+PjE2fSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRJbnQzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyswXSx0PXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysxXSxvPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysyXSxyPXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXyszXTtyZXR1cm4gdGhpcy5jdXJzb3JfKz00LGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5jdXJzb3JfPD10aGlzLmVuZF8pLGU8PDB8dDw8OHxvPDwxNnxyPDwyNH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkSW50NjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5JbnQ2NChlLHQpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRJbnQ2NFN0cmluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVpbnQzMigpLHQ9dGhpcy5yZWFkVWludDMyKCk7cmV0dXJuIGpzcGIudXRpbHMuam9pblNpZ25lZERlY2ltYWxTdHJpbmcoZSx0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKTtyZXR1cm4ganNwYi51dGlscy5qb2luRmxvYXQzMihlLDApfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWREb3VibGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRVaW50MzIoKSx0PXRoaXMucmVhZFVpbnQzMigpO3JldHVybiBqc3BiLnV0aWxzLmpvaW5GbG9hdDY0KGUsdCl9LGpzcGIuQmluYXJ5RGVjb2Rlci5wcm90b3R5cGUucmVhZEJvb2w9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuYnl0ZXNfW3RoaXMuY3Vyc29yXysrXX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRW51bT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRTaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5ieXRlc18sbz10aGlzLmN1cnNvcl87ZT1vK2U7Zm9yKHZhciByPVtdLG49XCJcIjtvPGU7KXt2YXIgcz10W28rK107aWYoMTI4PnMpci5wdXNoKHMpO2Vsc2V7aWYoMTkyPnMpY29udGludWU7aWYoMjI0PnMpe3ZhciBpPXRbbysrXTtyLnB1c2goKDMxJnMpPDw2fDYzJmkpfWVsc2UgaWYoMjQwPnMpe2k9dFtvKytdO3ZhciBhPXRbbysrXTtyLnB1c2goKDE1JnMpPDwxMnwoNjMmaSk8PDZ8NjMmYSl9ZWxzZSAyNDg+cyYmKHM9KDcmcyk8PDE4fCg2MyYoaT10W28rK10pKTw8MTJ8KDYzJihhPXRbbysrXSkpPDw2fDYzJnRbbysrXSxzLT02NTUzNixyLnB1c2goNTUyOTYrKHM+PjEwJjEwMjMpLDU2MzIwKygxMDIzJnMpKSl9ODE5Mjw9ci5sZW5ndGgmJihuKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsciksci5sZW5ndGg9MCl9cmV0dXJuIG4rPWdvb2cuY3J5cHQuYnl0ZUFycmF5VG9TdHJpbmcociksdGhpcy5jdXJzb3JfPW8sbn0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkU3RyaW5nV2l0aExlbmd0aD1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZFVuc2lnbmVkVmFyaW50MzIoKTtyZXR1cm4gdGhpcy5yZWFkU3RyaW5nKGUpfSxqc3BiLkJpbmFyeURlY29kZXIucHJvdG90eXBlLnJlYWRCeXRlcz1mdW5jdGlvbihlKXtpZigwPmV8fHRoaXMuY3Vyc29yXytlPnRoaXMuYnl0ZXNfLmxlbmd0aClyZXR1cm4gdGhpcy5lcnJvcl89ITAsZ29vZy5hc3NlcnRzLmZhaWwoXCJJbnZhbGlkIGJ5dGUgbGVuZ3RoIVwiKSxuZXcgVWludDhBcnJheSgwKTt2YXIgdD10aGlzLmJ5dGVzXy5zdWJhcnJheSh0aGlzLmN1cnNvcl8sdGhpcy5jdXJzb3JfK2UpO3JldHVybiB0aGlzLmN1cnNvcl8rPWUsZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLmN1cnNvcl88PXRoaXMuZW5kXyksdH0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkVmFyaW50SGFzaDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFNwbGl0VmFyaW50NjQoanNwYi51dGlscy5qb2luSGFzaDY0KX0sanNwYi5CaW5hcnlEZWNvZGVyLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmJ5dGVzXyx0PXRoaXMuY3Vyc29yXyxvPWVbdCswXSxyPWVbdCsxXSxuPWVbdCsyXSxzPWVbdCszXSxpPWVbdCs0XSxhPWVbdCs1XSxnPWVbdCs2XTtyZXR1cm4gZT1lW3QrN10sdGhpcy5jdXJzb3JfKz04LFN0cmluZy5mcm9tQ2hhckNvZGUobyxyLG4scyxpLGEsZyxlKX0sanNwYi5CaW5hcnlSZWFkZXI9ZnVuY3Rpb24oZSx0LG8pe3RoaXMuZGVjb2Rlcl89anNwYi5CaW5hcnlEZWNvZGVyLmFsbG9jKGUsdCxvKSx0aGlzLmZpZWxkQ3Vyc29yXz10aGlzLmRlY29kZXJfLmdldEN1cnNvcigpLHRoaXMubmV4dEZpZWxkXz1qc3BiLkJpbmFyeUNvbnN0YW50cy5JTlZBTElEX0ZJRUxEX05VTUJFUix0aGlzLm5leHRXaXJlVHlwZV89anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuSU5WQUxJRCx0aGlzLmVycm9yXz0hMSx0aGlzLnJlYWRDYWxsYmFja3NfPW51bGx9LGpzcGIuQmluYXJ5UmVhZGVyLmluc3RhbmNlQ2FjaGVfPVtdLGpzcGIuQmluYXJ5UmVhZGVyLmFsbG9jPWZ1bmN0aW9uKGUsdCxvKXtpZihqc3BiLkJpbmFyeVJlYWRlci5pbnN0YW5jZUNhY2hlXy5sZW5ndGgpe3ZhciByPWpzcGIuQmluYXJ5UmVhZGVyLmluc3RhbmNlQ2FjaGVfLnBvcCgpO3JldHVybiBlJiZyLmRlY29kZXJfLnNldEJsb2NrKGUsdCxvKSxyfXJldHVybiBuZXcganNwYi5CaW5hcnlSZWFkZXIoZSx0LG8pfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuYWxsb2M9anNwYi5CaW5hcnlSZWFkZXIuYWxsb2MsanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLmZyZWU9ZnVuY3Rpb24oKXt0aGlzLmRlY29kZXJfLmNsZWFyKCksdGhpcy5uZXh0RmllbGRfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLklOVkFMSURfRklFTERfTlVNQkVSLHRoaXMubmV4dFdpcmVUeXBlXz1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5JTlZBTElELHRoaXMuZXJyb3JfPSExLHRoaXMucmVhZENhbGxiYWNrc189bnVsbCwxMDA+anNwYi5CaW5hcnlSZWFkZXIuaW5zdGFuY2VDYWNoZV8ubGVuZ3RoJiZqc3BiLkJpbmFyeVJlYWRlci5pbnN0YW5jZUNhY2hlXy5wdXNoKHRoaXMpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWVsZEN1cnNvcl99LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5nZXRDdXJzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlY29kZXJfLmdldEJ1ZmZlcigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGROdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0RmllbGRffSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0V2lyZVR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0V2lyZVR5cGVffSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuaXNEZWxpbWl0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5pc0VuZEdyb3VwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcl98fHRoaXMuZGVjb2Rlcl8uZ2V0RXJyb3IoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNldEJsb2NrPWZ1bmN0aW9uKGUsdCxvKXt0aGlzLmRlY29kZXJfLnNldEJsb2NrKGUsdCxvKSx0aGlzLm5leHRGaWVsZF89anNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVIsdGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLklOVkFMSUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZGVjb2Rlcl8ucmVzZXQoKSx0aGlzLm5leHRGaWVsZF89anNwYi5CaW5hcnlDb25zdGFudHMuSU5WQUxJRF9GSUVMRF9OVU1CRVIsdGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLklOVkFMSUR9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMuZGVjb2Rlcl8uYWR2YW5jZShlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLm5leHRGaWVsZD1mdW5jdGlvbigpe2lmKHRoaXMuZGVjb2Rlcl8uYXRFbmQoKSlyZXR1cm4hMTtpZih0aGlzLmdldEVycm9yKCkpcmV0dXJuIGdvb2cuYXNzZXJ0cy5mYWlsKFwiRGVjb2RlciBoaXQgYW4gZXJyb3JcIiksITE7dGhpcy5maWVsZEN1cnNvcl89dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKTt2YXIgZT10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCksdD1lPj4+MztyZXR1cm4oZSY9NykhPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQzMiYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEJiZlIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5TVEFSVF9HUk9VUCYmZSE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQPyhnb29nLmFzc2VydHMuZmFpbChcIkludmFsaWQgd2lyZSB0eXBlOiAlcyAoYXQgcG9zaXRpb24gJXMpXCIsZSx0aGlzLmZpZWxkQ3Vyc29yXyksdGhpcy5lcnJvcl89ITAsITEpOih0aGlzLm5leHRGaWVsZF89dCx0aGlzLm5leHRXaXJlVHlwZV89ZSwhMCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS51bnNraXBIZWFkZXI9ZnVuY3Rpb24oKXt0aGlzLmRlY29kZXJfLnVuc2tpcFZhcmludCh0aGlzLm5leHRGaWVsZF88PDN8dGhpcy5uZXh0V2lyZVR5cGVfKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBNYXRjaGluZ0ZpZWxkcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubmV4dEZpZWxkXztmb3IodGhpcy51bnNraXBIZWFkZXIoKTt0aGlzLm5leHRGaWVsZCgpJiZ0aGlzLmdldEZpZWxkTnVtYmVyKCk9PWU7KXRoaXMuc2tpcEZpZWxkKCk7dGhpcy5kZWNvZGVyXy5hdEVuZCgpfHx0aGlzLnVuc2tpcEhlYWRlcigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuc2tpcFZhcmludEZpZWxkPWZ1bmN0aW9uKCl7dGhpcy5uZXh0V2lyZVR5cGVfIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQ/KGdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBWYXJpbnRGaWVsZFwiKSx0aGlzLnNraXBGaWVsZCgpKTp0aGlzLmRlY29kZXJfLnNraXBWYXJpbnQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBEZWxpbWl0ZWRGaWVsZD1mdW5jdGlvbigpe2lmKHRoaXMubmV4dFdpcmVUeXBlXyE9anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKWdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBEZWxpbWl0ZWRGaWVsZFwiKSx0aGlzLnNraXBGaWVsZCgpO2Vsc2V7dmFyIGU9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpO3RoaXMuZGVjb2Rlcl8uYWR2YW5jZShlKX19LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5za2lwRml4ZWQzMkZpZWxkPWZ1bmN0aW9uKCl7dGhpcy5uZXh0V2lyZVR5cGVfIT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyPyhnb29nLmFzc2VydHMuZmFpbChcIkludmFsaWQgd2lyZSB0eXBlIGZvciBza2lwRml4ZWQzMkZpZWxkXCIpLHRoaXMuc2tpcEZpZWxkKCkpOnRoaXMuZGVjb2Rlcl8uYWR2YW5jZSg0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBGaXhlZDY0RmllbGQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRXaXJlVHlwZV8hPWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQ/KGdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIHR5cGUgZm9yIHNraXBGaXhlZDY0RmllbGRcIiksdGhpcy5za2lwRmllbGQoKSk6dGhpcy5kZWNvZGVyXy5hZHZhbmNlKDgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuc2tpcEdyb3VwPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMubmV4dEZpZWxkXzs7KXtpZighdGhpcy5uZXh0RmllbGQoKSl7Z29vZy5hc3NlcnRzLmZhaWwoXCJVbm1hdGNoZWQgc3RhcnQtZ3JvdXAgdGFnOiBzdHJlYW0gRU9GXCIpLHRoaXMuZXJyb3JfPSEwO2JyZWFrfWlmKHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQKXt0aGlzLm5leHRGaWVsZF8hPWUmJihnb29nLmFzc2VydHMuZmFpbChcIlVubWF0Y2hlZCBlbmQtZ3JvdXAgdGFnXCIpLHRoaXMuZXJyb3JfPSEwKTticmVha310aGlzLnNraXBGaWVsZCgpfX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnNraXBGaWVsZD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLm5leHRXaXJlVHlwZV8pe2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UOnRoaXMuc2tpcFZhcmludEZpZWxkKCk7YnJlYWs7Y2FzZSBqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0OnRoaXMuc2tpcEZpeGVkNjRGaWVsZCgpO2JyZWFrO2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEOnRoaXMuc2tpcERlbGltaXRlZEZpZWxkKCk7YnJlYWs7Y2FzZSBqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyOnRoaXMuc2tpcEZpeGVkMzJGaWVsZCgpO2JyZWFrO2Nhc2UganNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuU1RBUlRfR1JPVVA6dGhpcy5za2lwR3JvdXAoKTticmVhaztkZWZhdWx0Omdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCB3aXJlIGVuY29kaW5nIGZvciBmaWVsZC5cIil9fSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVnaXN0ZXJSZWFkQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtudWxsPT09dGhpcy5yZWFkQ2FsbGJhY2tzXyYmKHRoaXMucmVhZENhbGxiYWNrc189e30pLGdvb2cuYXNzZXJ0cy5hc3NlcnQoIXRoaXMucmVhZENhbGxiYWNrc19bZV0pLHRoaXMucmVhZENhbGxiYWNrc19bZV09dH0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJ1blJlYWRDYWxsYmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT09dGhpcy5yZWFkQ2FsbGJhY2tzXyksZT10aGlzLnJlYWRDYWxsYmFja3NfW2VdLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZSksZSh0aGlzKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRBbnk9ZnVuY3Rpb24oZSl7dGhpcy5uZXh0V2lyZVR5cGVfPWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZpZWxkVHlwZVRvV2lyZVR5cGUoZSk7dmFyIHQ9anNwYi5CaW5hcnlDb25zdGFudHMuRmllbGRUeXBlO3N3aXRjaChlKXtjYXNlIHQuRE9VQkxFOnJldHVybiB0aGlzLnJlYWREb3VibGUoKTtjYXNlIHQuRkxPQVQ6cmV0dXJuIHRoaXMucmVhZEZsb2F0KCk7Y2FzZSB0LklOVDY0OnJldHVybiB0aGlzLnJlYWRJbnQ2NCgpO2Nhc2UgdC5VSU5UNjQ6cmV0dXJuIHRoaXMucmVhZFVpbnQ2NCgpO2Nhc2UgdC5JTlQzMjpyZXR1cm4gdGhpcy5yZWFkSW50MzIoKTtjYXNlIHQuRklYRUQ2NDpyZXR1cm4gdGhpcy5yZWFkRml4ZWQ2NCgpO2Nhc2UgdC5GSVhFRDMyOnJldHVybiB0aGlzLnJlYWRGaXhlZDMyKCk7Y2FzZSB0LkJPT0w6cmV0dXJuIHRoaXMucmVhZEJvb2woKTtjYXNlIHQuU1RSSU5HOnJldHVybiB0aGlzLnJlYWRTdHJpbmcoKTtjYXNlIHQuR1JPVVA6Z29vZy5hc3NlcnRzLmZhaWwoXCJHcm91cCBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gcmVhZEFueSgpXCIpO2Nhc2UgdC5NRVNTQUdFOmdvb2cuYXNzZXJ0cy5mYWlsKFwiTWVzc2FnZSBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gcmVhZEFueSgpXCIpO2Nhc2UgdC5CWVRFUzpyZXR1cm4gdGhpcy5yZWFkQnl0ZXMoKTtjYXNlIHQuVUlOVDMyOnJldHVybiB0aGlzLnJlYWRVaW50MzIoKTtjYXNlIHQuRU5VTTpyZXR1cm4gdGhpcy5yZWFkRW51bSgpO2Nhc2UgdC5TRklYRUQzMjpyZXR1cm4gdGhpcy5yZWFkU2ZpeGVkMzIoKTtjYXNlIHQuU0ZJWEVENjQ6cmV0dXJuIHRoaXMucmVhZFNmaXhlZDY0KCk7Y2FzZSB0LlNJTlQzMjpyZXR1cm4gdGhpcy5yZWFkU2ludDMyKCk7Y2FzZSB0LlNJTlQ2NDpyZXR1cm4gdGhpcy5yZWFkU2ludDY0KCk7Y2FzZSB0LkZIQVNINjQ6cmV0dXJuIHRoaXMucmVhZEZpeGVkSGFzaDY0KCk7Y2FzZSB0LlZIQVNINjQ6cmV0dXJuIHRoaXMucmVhZFZhcmludEhhc2g2NCgpO2RlZmF1bHQ6Z29vZy5hc3NlcnRzLmZhaWwoXCJJbnZhbGlkIGZpZWxkIHR5cGUgaW4gcmVhZEFueSgpXCIpfXJldHVybiAwfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZE1lc3NhZ2U9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgbz10aGlzLmRlY29kZXJfLmdldEVuZCgpLHI9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpO3I9dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKStyLHRoaXMuZGVjb2Rlcl8uc2V0RW5kKHIpLHQoZSx0aGlzKSx0aGlzLmRlY29kZXJfLnNldEN1cnNvcihyKSx0aGlzLmRlY29kZXJfLnNldEVuZChvKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRHcm91cD1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSxnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dEZpZWxkXz09ZSksbyh0LHRoaXMpLHRoaXMuZXJyb3JffHx0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkVORF9HUk9VUHx8KGdvb2cuYXNzZXJ0cy5mYWlsKFwiR3JvdXAgc3VibWVzc2FnZSBkaWQgbm90IGVuZCB3aXRoIGFuIEVORF9HUk9VUCB0YWdcIiksdGhpcy5lcnJvcl89ITApfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUuZ2V0RmllbGREZWNvZGVyPWZ1bmN0aW9uKCl7Z29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCk7dmFyIGU9dGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpLHQ9dGhpcy5kZWNvZGVyXy5nZXRDdXJzb3IoKSxvPXQrZTtyZXR1cm4gZT1qc3BiLkJpbmFyeURlY29kZXIuYWxsb2ModGhpcy5kZWNvZGVyXy5nZXRCdWZmZXIoKSx0LGUpLHRoaXMuZGVjb2Rlcl8uc2V0Q3Vyc29yKG8pLGV9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50MzIoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRJbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRTaWduZWRWYXJpbnQzMlN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50NjRTdHJpbmcoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFVpbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyU3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50NjQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQzMj1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQ2ND1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQ2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRaaWd6YWdWYXJpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkMzI9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQ2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQ2NFN0cmluZygpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNmaXhlZDMyPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyKSx0aGlzLmRlY29kZXJfLnJlYWRJbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNmaXhlZDMyU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDMyKSx0aGlzLmRlY29kZXJfLnJlYWRJbnQzMigpLnRvU3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU2ZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0U3RyaW5nKCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZGVjb2Rlcl8ucmVhZEZsb2F0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRG91YmxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmRlY29kZXJfLnJlYWREb3VibGUoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRCb29sPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLCEhdGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMigpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEVudW09ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50NjQoKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgZT10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7cmV0dXJuIHRoaXMuZGVjb2Rlcl8ucmVhZFN0cmluZyhlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRCeXRlcz1mdW5jdGlvbigpe2dvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpO3ZhciBlPXRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50MzIoKTtyZXR1cm4gdGhpcy5kZWNvZGVyXy5yZWFkQnl0ZXMoZSl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkVmFyaW50SGFzaDY0PWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnQodGhpcy5uZXh0V2lyZVR5cGVfPT1qc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZGVjb2Rlcl8ucmVhZFZhcmludEhhc2g2NCgpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFNpbnRIYXNoNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50SGFzaDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRWYXJpbnQ2ND1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5kZWNvZGVyXy5yZWFkU3BsaXRWYXJpbnQ2NChlKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRTcGxpdFppZ3phZ1ZhcmludDY0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmRlY29kZXJfLnJlYWRTcGxpdFZhcmludDY0KChmdW5jdGlvbih0LG8pe3JldHVybiBqc3BiLnV0aWxzLmZyb21aaWd6YWc2NCh0LG8sZSl9KSl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5hc3NlcnRzLmFzc2VydCh0aGlzLm5leHRXaXJlVHlwZV89PWpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZGVjb2Rlcl8ucmVhZEZpeGVkSGFzaDY0KCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkU3BsaXRGaXhlZDY0PWZ1bmN0aW9uKGUpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5kZWNvZGVyXy5yZWFkU3BsaXRGaXhlZDY0KGUpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZpZWxkXz1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KHRoaXMubmV4dFdpcmVUeXBlXz09anNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKTt2YXIgdD10aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDMyKCk7dD10aGlzLmRlY29kZXJfLmdldEN1cnNvcigpK3Q7Zm9yKHZhciBvPVtdO3RoaXMuZGVjb2Rlcl8uZ2V0Q3Vyc29yKCk8dDspby5wdXNoKGUuY2FsbCh0aGlzLmRlY29kZXJfKSk7cmV0dXJuIG99LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkSW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDMyKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRJbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkU2lnbmVkVmFyaW50MzJTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRTaWduZWRWYXJpbnQ2NCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkSW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFNpZ25lZFZhcmludDY0U3RyaW5nKX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRVaW50MzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50MzIpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFVpbnQzMlN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVW5zaWduZWRWYXJpbnQzMlN0cmluZyl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkVWludDY0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRVbnNpZ25lZFZhcmludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRVaW50NjRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVuc2lnbmVkVmFyaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQzMj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50MzIpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50NjQpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNpbnQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkWmlnemFnVmFyaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZpeGVkMzI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZFVpbnQzMil9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkRml4ZWQ2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVWludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRVaW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFNmaXhlZDMyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRJbnQzMil9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkU2ZpeGVkNjQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEludDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkSW50NjRTdHJpbmcpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEZsb2F0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWRGbG9hdCl9LGpzcGIuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkUGFja2VkRG91YmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZFBhY2tlZEZpZWxkXyh0aGlzLmRlY29kZXJfLnJlYWREb3VibGUpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEJvb2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEJvb2wpfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZEVudW09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkUGFja2VkRmllbGRfKHRoaXMuZGVjb2Rlcl8ucmVhZEVudW0pfSxqc3BiLkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFBhY2tlZFZhcmludEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkVmFyaW50SGFzaDY0KX0sanNwYi5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRQYWNrZWRGaXhlZEhhc2g2ND1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWRQYWNrZWRGaWVsZF8odGhpcy5kZWNvZGVyXy5yZWFkRml4ZWRIYXNoNjQpfSxqc3BiLkJpbmFyeUVuY29kZXI9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlcl89W119LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVmZmVyXy5sZW5ndGh9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5idWZmZXJfO3JldHVybiB0aGlzLmJ1ZmZlcl89W10sZX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0KXtmb3IoZ29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KHQ9PU1hdGguZmxvb3IodCkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9dCYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpOzA8dHx8MTI3PGU7KXRoaXMuYnVmZmVyXy5wdXNoKDEyNyZlfDEyOCksZT0oZT4+Pjd8dDw8MjUpPj4+MCx0Pj4+PTc7dGhpcy5idWZmZXJfLnB1c2goZSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTcGxpdEZpeGVkNjQ9ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQodD09TWF0aC5mbG9vcih0KSksZ29vZy5hc3NlcnRzLmFzc2VydCgwPD1lJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksdGhpcy53cml0ZVVpbnQzMihlKSx0aGlzLndyaXRlVWludDMyKHQpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVW5zaWduZWRWYXJpbnQzMj1mdW5jdGlvbihlKXtmb3IoZ29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PWUmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKTsxMjc8ZTspdGhpcy5idWZmZXJfLnB1c2goMTI3JmV8MTI4KSxlPj4+PTc7dGhpcy5idWZmZXJfLnB1c2goZSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQzMj1mdW5jdGlvbihlKXtpZihnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLDA8PWUpdGhpcy53cml0ZVVuc2lnbmVkVmFyaW50MzIoZSk7ZWxzZXtmb3IodmFyIHQ9MDs5PnQ7dCsrKXRoaXMuYnVmZmVyXy5wdXNoKDEyNyZlfDEyOCksZT4+PTc7dGhpcy5idWZmZXJfLnB1c2goMSl9fSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVW5zaWduZWRWYXJpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjQpLGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSx0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVTaWduZWRWYXJpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLGpzcGIudXRpbHMuc3BsaXRJbnQ2NChlKSx0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMj1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLHRoaXMud3JpdGVVbnNpZ25lZFZhcmludDMyKChlPDwxXmU+PjMxKT4+PjApfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KGU+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzKSxqc3BiLnV0aWxzLnNwbGl0WmlnemFnNjQoZSksdGhpcy53cml0ZVNwbGl0VmFyaW50NjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjRTdHJpbmc9ZnVuY3Rpb24oZSl7dGhpcy53cml0ZVppZ3phZ1ZhcmludEhhc2g2NChqc3BiLnV0aWxzLmRlY2ltYWxTdHJpbmdUb0hhc2g2NChlKSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztqc3BiLnV0aWxzLnNwbGl0SGFzaDY0KGUpLGpzcGIudXRpbHMudG9aaWd6YWc2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCwoZnVuY3Rpb24oZSxvKXt0LndyaXRlU3BsaXRWYXJpbnQ2NChlPj4+MCxvPj4+MCl9KSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVVaW50OD1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmMjU2PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVVaW50MTY9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PWUmJjY1NTM2PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVVpbnQzMj1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzIpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+MTYmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+MjQmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9ZSYmZTxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjQpLGpzcGIudXRpbHMuc3BsaXRVaW50NjQoZSksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRMb3cpLHRoaXMud3JpdGVVaW50MzIoanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydCgtMTI4PD1lJiYxMjg+ZSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjAmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUludDE2PWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydCgtMzI3Njg8PWUmJjMyNzY4PmUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4wJjI1NSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjgmMjU1KX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUludDMyPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydChlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy5idWZmZXJfLnB1c2goZT4+PjAmMjU1KSx0aGlzLmJ1ZmZlcl8ucHVzaChlPj4+OCYyNTUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4xNiYyNTUpLHRoaXMuYnVmZmVyXy5wdXNoKGU+Pj4yNCYyNTUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlSW50NjQ9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChlPT1NYXRoLmZsb29yKGUpKSxnb29nLmFzc2VydHMuYXNzZXJ0KGU+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJmU8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzKSxqc3BiLnV0aWxzLnNwbGl0SW50NjQoZSksdGhpcy53cml0ZVNwbGl0Rml4ZWQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVJbnQ2NFN0cmluZz1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KGU9PU1hdGguZmxvb3IoZSkpLGdvb2cuYXNzZXJ0cy5hc3NlcnQoK2U+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMmJitlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyksanNwYi51dGlscy5zcGxpdEhhc2g2NChqc3BiLnV0aWxzLmRlY2ltYWxTdHJpbmdUb0hhc2g2NChlKSksdGhpcy53cml0ZVNwbGl0Rml4ZWQ2NChqc3BiLnV0aWxzLnNwbGl0NjRMb3csanNwYi51dGlscy5zcGxpdDY0SGlnaCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVGbG9hdD1mdW5jdGlvbihlKXtnb29nLmFzc2VydHMuYXNzZXJ0KDEvMD09PWV8fC0xLzA9PT1lfHxpc05hTihlKXx8ZT49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUMzJfTUFYJiZlPD1qc3BiLkJpbmFyeUNvbnN0YW50cy5GTE9BVDMyX01BWCksanNwYi51dGlscy5zcGxpdEZsb2F0MzIoZSksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRMb3cpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlRG91YmxlPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMS8wPT09ZXx8LTEvMD09PWV8fGlzTmFOKGUpfHxlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuRkxPQVQ2NF9NQVgmJmU8PWpzcGIuQmluYXJ5Q29uc3RhbnRzLkZMT0FUNjRfTUFYKSxqc3BiLnV0aWxzLnNwbGl0RmxvYXQ2NChlKSx0aGlzLndyaXRlVWludDMyKGpzcGIudXRpbHMuc3BsaXQ2NExvdyksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoKX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZUJvb2w9ZnVuY3Rpb24oZSl7Z29vZy5hc3NlcnRzLmFzc2VydChcImJvb2xlYW5cIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKSx0aGlzLmJ1ZmZlcl8ucHVzaChlPzE6MCl9LGpzcGIuQmluYXJ5RW5jb2Rlci5wcm90b3R5cGUud3JpdGVFbnVtPWZ1bmN0aW9uKGUpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoZT09TWF0aC5mbG9vcihlKSksZ29vZy5hc3NlcnRzLmFzc2VydChlPj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZlPGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZVNpZ25lZFZhcmludDMyKGUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlQnl0ZXM9ZnVuY3Rpb24oZSl7dGhpcy5idWZmZXJfLnB1c2guYXBwbHkodGhpcy5idWZmZXJfLGUpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlVmFyaW50SGFzaDY0PWZ1bmN0aW9uKGUpe2pzcGIudXRpbHMuc3BsaXRIYXNoNjQoZSksdGhpcy53cml0ZVNwbGl0VmFyaW50NjQoanNwYi51dGlscy5zcGxpdDY0TG93LGpzcGIudXRpbHMuc3BsaXQ2NEhpZ2gpfSxqc3BiLkJpbmFyeUVuY29kZXIucHJvdG90eXBlLndyaXRlRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oZSl7anNwYi51dGlscy5zcGxpdEhhc2g2NChlKSx0aGlzLndyaXRlVWludDMyKGpzcGIudXRpbHMuc3BsaXQ2NExvdyksdGhpcy53cml0ZVVpbnQzMihqc3BiLnV0aWxzLnNwbGl0NjRIaWdoKX0sanNwYi5CaW5hcnlFbmNvZGVyLnByb3RvdHlwZS53cml0ZVN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5idWZmZXJfLmxlbmd0aCxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciByPWUuY2hhckNvZGVBdChvKTtpZigxMjg+cil0aGlzLmJ1ZmZlcl8ucHVzaChyKTtlbHNlIGlmKDIwNDg+cil0aGlzLmJ1ZmZlcl8ucHVzaChyPj42fDE5MiksdGhpcy5idWZmZXJfLnB1c2goNjMmcnwxMjgpO2Vsc2UgaWYoNjU1MzY+cilpZig1NTI5Njw9ciYmNTYzMTk+PXImJm8rMTxlLmxlbmd0aCl7dmFyIG49ZS5jaGFyQ29kZUF0KG8rMSk7NTYzMjA8PW4mJjU3MzQzPj1uJiYocj0xMDI0KihyLTU1Mjk2KStuLTU2MzIwKzY1NTM2LHRoaXMuYnVmZmVyXy5wdXNoKHI+PjE4fDI0MCksdGhpcy5idWZmZXJfLnB1c2gocj4+MTImNjN8MTI4KSx0aGlzLmJ1ZmZlcl8ucHVzaChyPj42JjYzfDEyOCksdGhpcy5idWZmZXJfLnB1c2goNjMmcnwxMjgpLG8rKyl9ZWxzZSB0aGlzLmJ1ZmZlcl8ucHVzaChyPj4xMnwyMjQpLHRoaXMuYnVmZmVyXy5wdXNoKHI+PjYmNjN8MTI4KSx0aGlzLmJ1ZmZlcl8ucHVzaCg2MyZyfDEyOCl9cmV0dXJuIHRoaXMuYnVmZmVyXy5sZW5ndGgtdH0sanNwYi5hcml0aD17fSxqc3BiLmFyaXRoLlVJbnQ2ND1mdW5jdGlvbihlLHQpe3RoaXMubG89ZSx0aGlzLmhpPXR9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGk8ZS5oaXx8dGhpcy5oaT09ZS5oaSYmdGhpcy5sbzxlLmxvPy0xOnRoaXMuaGk9PWUuaGkmJnRoaXMubG89PWUubG8/MDoxfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbigpe3JldHVybiBuZXcganNwYi5hcml0aC5VSW50NjQoKHRoaXMubG8+Pj4xfCgxJnRoaXMuaGkpPDwzMSk+Pj4wLHRoaXMuaGk+Pj4xPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5sZWZ0U2hpZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG88PDE+Pj4wLCh0aGlzLmhpPDwxfHRoaXMubG8+Pj4zMSk+Pj4wKX0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLm1zYj1mdW5jdGlvbigpe3JldHVybiEhKDIxNDc0ODM2NDgmdGhpcy5oaSl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5sc2I9ZnVuY3Rpb24oKXtyZXR1cm4hISgxJnRoaXMubG8pfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUuemVybz1mdW5jdGlvbigpe3JldHVybiAwPT10aGlzLmxvJiYwPT10aGlzLmhpfSxqc3BiLmFyaXRoLlVJbnQ2NC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5VSW50NjQoKHRoaXMubG8rZS5sbyY0Mjk0OTY3Mjk1KT4+PjA+Pj4wLCgodGhpcy5oaStlLmhpJjQyOTQ5NjcyOTUpPj4+MCkrKDQyOTQ5NjcyOTY8PXRoaXMubG8rZS5sbz8xOjApPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgodGhpcy5sby1lLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpLWUuaGkmNDI5NDk2NzI5NSk+Pj4wKS0oMD50aGlzLmxvLWUubG8/MTowKT4+PjApfSxqc3BiLmFyaXRoLlVJbnQ2NC5tdWwzMngzMj1mdW5jdGlvbihlLHQpe3ZhciBvPTY1NTM1JmUscj02NTUzNSZ0LG49dD4+PjE2O2Zvcih0PW8qcis2NTUzNioobypuJjY1NTM1KSs2NTUzNiooKGU+Pj49MTYpKnImNjU1MzUpLG89ZSpuKyhvKm4+Pj4xNikrKGUqcj4+PjE2KTs0Mjk0OTY3Mjk2PD10Oyl0LT00Mjk0OTY3Mjk2LG8rPTE7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCh0Pj4+MCxvPj4+MCl9LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7dmFyIHQ9anNwYi5hcml0aC5VSW50NjQubXVsMzJ4MzIodGhpcy5sbyxlKTtyZXR1cm4oZT1qc3BiLmFyaXRoLlVJbnQ2NC5tdWwzMngzMih0aGlzLmhpLGUpKS5oaT1lLmxvLGUubG89MCx0LmFkZChlKX0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLmRpdj1mdW5jdGlvbihlKXtpZigwPT1lKXJldHVybltdO3ZhciB0PW5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgwLDApLG89bmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG8sdGhpcy5oaSk7ZT1uZXcganNwYi5hcml0aC5VSW50NjQoZSwwKTtmb3IodmFyIHI9bmV3IGpzcGIuYXJpdGguVUludDY0KDEsMCk7IWUubXNiKCk7KWU9ZS5sZWZ0U2hpZnQoKSxyPXIubGVmdFNoaWZ0KCk7Zm9yKDshci56ZXJvKCk7KTA+PWUuY21wKG8pJiYodD10LmFkZChyKSxvPW8uc3ViKGUpKSxlPWUucmlnaHRTaGlmdCgpLHI9ci5yaWdodFNoaWZ0KCk7cmV0dXJuW3Qsb119LGpzcGIuYXJpdGguVUludDY0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1cIlwiLHQ9dGhpczshdC56ZXJvKCk7KXt2YXIgbz0odD10LmRpdigxMCkpWzBdO2U9dFsxXS5sbytlLHQ9b31yZXR1cm5cIlwiPT1lJiYoZT1cIjBcIiksZX0sanNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IGpzcGIuYXJpdGguVUludDY0KDAsMCksbz1uZXcganNwYi5hcml0aC5VSW50NjQoMCwwKSxyPTA7cjxlLmxlbmd0aDtyKyspe2lmKFwiMFwiPmVbcl18fFwiOVwiPGVbcl0pcmV0dXJuIG51bGw7dmFyIG49cGFyc2VJbnQoZVtyXSwxMCk7by5sbz1uLHQ9dC5tdWwoMTApLmFkZChvKX1yZXR1cm4gdH0sanNwYi5hcml0aC5VSW50NjQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBqc3BiLmFyaXRoLlVJbnQ2NCh0aGlzLmxvLHRoaXMuaGkpfSxqc3BiLmFyaXRoLkludDY0PWZ1bmN0aW9uKGUsdCl7dGhpcy5sbz1lLHRoaXMuaGk9dH0sanNwYi5hcml0aC5JbnQ2NC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCgodGhpcy5sbytlLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpK2UuaGkmNDI5NDk2NzI5NSk+Pj4wKSsoNDI5NDk2NzI5Njw9dGhpcy5sbytlLmxvPzE6MCk+Pj4wKX0sanNwYi5hcml0aC5JbnQ2NC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCgodGhpcy5sby1lLmxvJjQyOTQ5NjcyOTUpPj4+MD4+PjAsKCh0aGlzLmhpLWUuaGkmNDI5NDk2NzI5NSk+Pj4wKS0oMD50aGlzLmxvLWUubG8/MTowKT4+PjApfSxqc3BiLmFyaXRoLkludDY0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcganNwYi5hcml0aC5JbnQ2NCh0aGlzLmxvLHRoaXMuaGkpfSxqc3BiLmFyaXRoLkludDY0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTAhPSgyMTQ3NDgzNjQ4JnRoaXMuaGkpLHQ9bmV3IGpzcGIuYXJpdGguVUludDY0KHRoaXMubG8sdGhpcy5oaSk7cmV0dXJuIGUmJih0PW5ldyBqc3BiLmFyaXRoLlVJbnQ2NCgwLDApLnN1Yih0KSksKGU/XCItXCI6XCJcIikrdC50b1N0cmluZygpfSxqc3BiLmFyaXRoLkludDY0LmZyb21TdHJpbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9MDxlLmxlbmd0aCYmXCItXCI9PWVbMF07cmV0dXJuIHQmJihlPWUuc3Vic3RyaW5nKDEpKSxudWxsPT09KGU9anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyhlKSk/bnVsbDoodCYmKGU9bmV3IGpzcGIuYXJpdGguVUludDY0KDAsMCkuc3ViKGUpKSxuZXcganNwYi5hcml0aC5JbnQ2NChlLmxvLGUuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXI9ZnVuY3Rpb24oKXt0aGlzLmJsb2Nrc189W10sdGhpcy50b3RhbExlbmd0aF89MCx0aGlzLmVuY29kZXJfPW5ldyBqc3BiLkJpbmFyeUVuY29kZXIsdGhpcy5ib29rbWFya3NfPVtdfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuYXBwZW5kVWludDhBcnJheV89ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbmNvZGVyXy5lbmQoKTt0aGlzLmJsb2Nrc18ucHVzaCh0KSx0aGlzLmJsb2Nrc18ucHVzaChlKSx0aGlzLnRvdGFsTGVuZ3RoXys9dC5sZW5ndGgrZS5sZW5ndGh9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5iZWdpbkRlbGltaXRlZF89ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLGU9dGhpcy5lbmNvZGVyXy5lbmQoKSx0aGlzLmJsb2Nrc18ucHVzaChlKSx0aGlzLnRvdGFsTGVuZ3RoXys9ZS5sZW5ndGgsZS5wdXNoKHRoaXMudG90YWxMZW5ndGhfKSxlfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuZW5kRGVsaW1pdGVkXz1mdW5jdGlvbihlKXt2YXIgdD1lLnBvcCgpO2Zvcih0PXRoaXMudG90YWxMZW5ndGhfK3RoaXMuZW5jb2Rlcl8ubGVuZ3RoKCktdCxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQpOzEyNzx0OyllLnB1c2goMTI3JnR8MTI4KSx0Pj4+PTcsdGhpcy50b3RhbExlbmd0aF8rKztlLnB1c2godCksdGhpcy50b3RhbExlbmd0aF8rK30sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2VyaWFsaXplZE1lc3NhZ2U9ZnVuY3Rpb24oZSx0LG8pe3RoaXMuYXBwZW5kVWludDhBcnJheV8oZS5zdWJhcnJheSh0LG8pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLm1heWJlV3JpdGVTZXJpYWxpemVkTWVzc2FnZT1mdW5jdGlvbihlLHQsbyl7bnVsbCE9ZSYmbnVsbCE9dCYmbnVsbCE9byYmdGhpcy53cml0ZVNlcmlhbGl6ZWRNZXNzYWdlKGUsdCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5ibG9ja3NfPVtdLHRoaXMuZW5jb2Rlcl8uZW5kKCksdGhpcy50b3RhbExlbmd0aF89MCx0aGlzLmJvb2ttYXJrc189W119LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5nZXRSZXN1bHRCdWZmZXI9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA9PXRoaXMuYm9va21hcmtzXy5sZW5ndGgpO2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLnRvdGFsTGVuZ3RoXyt0aGlzLmVuY29kZXJfLmxlbmd0aCgpKSx0PXRoaXMuYmxvY2tzXyxvPXQubGVuZ3RoLHI9MCxuPTA7bjxvO24rKyl7dmFyIHM9dFtuXTtlLnNldChzLHIpLHIrPXMubGVuZ3RofXJldHVybiB0PXRoaXMuZW5jb2Rlcl8uZW5kKCksZS5zZXQodCxyKSxyKz10Lmxlbmd0aCxnb29nLmFzc2VydHMuYXNzZXJ0KHI9PWUubGVuZ3RoKSx0aGlzLmJsb2Nrc189W2VdLGV9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS5nZXRSZXN1bHRCYXNlNjRTdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGdvb2cuY3J5cHQuYmFzZTY0LmVuY29kZUJ5dGVBcnJheSh0aGlzLmdldFJlc3VsdEJ1ZmZlcigpLGUpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUuYmVnaW5TdWJNZXNzYWdlPWZ1bmN0aW9uKGUpe3RoaXMuYm9va21hcmtzXy5wdXNoKHRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLmVuZFN1Yk1lc3NhZ2U9ZnVuY3Rpb24oKXtnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXRoaXMuYm9va21hcmtzXy5sZW5ndGgpLHRoaXMuZW5kRGVsaW1pdGVkXyh0aGlzLmJvb2ttYXJrc18ucG9wKCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGaWVsZEhlYWRlcl89ZnVuY3Rpb24oZSx0KXtnb29nLmFzc2VydHMuYXNzZXJ0KDE8PWUmJmU9PU1hdGguZmxvb3IoZSkpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqZSt0KX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlQW55PWZ1bmN0aW9uKGUsdCxvKXt2YXIgcj1qc3BiLkJpbmFyeUNvbnN0YW50cy5GaWVsZFR5cGU7c3dpdGNoKGUpe2Nhc2Ugci5ET1VCTEU6dGhpcy53cml0ZURvdWJsZSh0LG8pO2JyZWFrO2Nhc2Ugci5GTE9BVDp0aGlzLndyaXRlRmxvYXQodCxvKTticmVhaztjYXNlIHIuSU5UNjQ6dGhpcy53cml0ZUludDY0KHQsbyk7YnJlYWs7Y2FzZSByLlVJTlQ2NDp0aGlzLndyaXRlVWludDY0KHQsbyk7YnJlYWs7Y2FzZSByLklOVDMyOnRoaXMud3JpdGVJbnQzMih0LG8pO2JyZWFrO2Nhc2Ugci5GSVhFRDY0OnRoaXMud3JpdGVGaXhlZDY0KHQsbyk7YnJlYWs7Y2FzZSByLkZJWEVEMzI6dGhpcy53cml0ZUZpeGVkMzIodCxvKTticmVhaztjYXNlIHIuQk9PTDp0aGlzLndyaXRlQm9vbCh0LG8pO2JyZWFrO2Nhc2Ugci5TVFJJTkc6dGhpcy53cml0ZVN0cmluZyh0LG8pO2JyZWFrO2Nhc2Ugci5HUk9VUDpnb29nLmFzc2VydHMuZmFpbChcIkdyb3VwIGZpZWxkIHR5cGUgbm90IHN1cHBvcnRlZCBpbiB3cml0ZUFueSgpXCIpO2JyZWFrO2Nhc2Ugci5NRVNTQUdFOmdvb2cuYXNzZXJ0cy5mYWlsKFwiTWVzc2FnZSBmaWVsZCB0eXBlIG5vdCBzdXBwb3J0ZWQgaW4gd3JpdGVBbnkoKVwiKTticmVhaztjYXNlIHIuQllURVM6dGhpcy53cml0ZUJ5dGVzKHQsbyk7YnJlYWs7Y2FzZSByLlVJTlQzMjp0aGlzLndyaXRlVWludDMyKHQsbyk7YnJlYWs7Y2FzZSByLkVOVU06dGhpcy53cml0ZUVudW0odCxvKTticmVhaztjYXNlIHIuU0ZJWEVEMzI6dGhpcy53cml0ZVNmaXhlZDMyKHQsbyk7YnJlYWs7Y2FzZSByLlNGSVhFRDY0OnRoaXMud3JpdGVTZml4ZWQ2NCh0LG8pO2JyZWFrO2Nhc2Ugci5TSU5UMzI6dGhpcy53cml0ZVNpbnQzMih0LG8pO2JyZWFrO2Nhc2Ugci5TSU5UNjQ6dGhpcy53cml0ZVNpbnQ2NCh0LG8pO2JyZWFrO2Nhc2Ugci5GSEFTSDY0OnRoaXMud3JpdGVGaXhlZEhhc2g2NCh0LG8pO2JyZWFrO2Nhc2Ugci5WSEFTSDY0OnRoaXMud3JpdGVWYXJpbnRIYXNoNjQodCxvKTticmVhaztkZWZhdWx0Omdvb2cuYXNzZXJ0cy5mYWlsKFwiSW52YWxpZCBmaWVsZCB0eXBlIGluIHdyaXRlQW55KClcIil9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDMyXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpZ25lZFZhcmludDMyXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50MzIodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVbnNpZ25lZFZhcmludDY0Xz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQ2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpZ25lZFZhcmludDY0Xz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnQzMl89ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludDMyKHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlWmlnemFnVmFyaW50NjRfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnQ2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVppZ3phZ1ZhcmludDY0U3RyaW5nXz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlWmlnemFnVmFyaW50NjRTdHJpbmcodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KHQ+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxKSx0aGlzLndyaXRlU2lnbmVkVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMlN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PXBhcnNlSW50KHQsMTApLGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEpLHRoaXMud3JpdGVTaWduZWRWYXJpbnQzMl8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLHRoaXMud3JpdGVTaWduZWRWYXJpbnQ2NF8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHQ9anNwYi5hcml0aC5JbnQ2NC5mcm9tU3RyaW5nKHQpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5WQVJJTlQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHQubG8sdC5oaSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVaW50MzI9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMiksdGhpcy53cml0ZVVuc2lnbmVkVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVaW50MzJTdHJpbmc9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodD1wYXJzZUludCh0LDEwKSxnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKSx0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQzMl8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2ND1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzY0KSx0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQ2NF8oZSx0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIuYXJpdGguVUludDY0LmZyb21TdHJpbmcodCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0VmFyaW50NjQodC5sbyx0LmhpKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpbnQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KHQ+PS1qc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fMzEmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxKSx0aGlzLndyaXRlWmlnemFnVmFyaW50MzJfKGUsdCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVTaW50NjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzYzJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyksdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0XyhlLHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2ludEhhc2g2ND1mdW5jdGlvbihlLHQpe251bGwhPXQmJnRoaXMud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfKGUsdCl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJnRoaXMud3JpdGVaaWd6YWdWYXJpbnQ2NFN0cmluZ18oZSx0KX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRml4ZWQzMj1mdW5jdGlvbihlLHQpe251bGwhPXQmJihnb29nLmFzc2VydHMuYXNzZXJ0KDA8PXQmJnQ8anNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMyKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQzMiksdGhpcy5lbmNvZGVyXy53cml0ZVVpbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUZpeGVkNjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCgwPD10JiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182NCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVaW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKHQ9anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NCh0LmxvLHQuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU2ZpeGVkMzI9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZW5jb2Rlcl8ud3JpdGVJbnQzMih0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNmaXhlZDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodD49LWpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT182MyYmdDxqc3BiLkJpbmFyeUNvbnN0YW50cy5UV09fVE9fNjMpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmVuY29kZXJfLndyaXRlSW50NjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIuYXJpdGguSW50NjQuZnJvbVN0cmluZyh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NCh0LmxvLHQuaGkpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRmxvYXQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVEMzIpLHRoaXMuZW5jb2Rlcl8ud3JpdGVGbG9hdCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZURvdWJsZT1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRklYRUQ2NCksdGhpcy5lbmNvZGVyXy53cml0ZURvdWJsZSh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUJvb2w9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydChcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlQm9vbCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUVudW09ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh0Pj0tanNwYi5CaW5hcnlDb25zdGFudHMuVFdPX1RPXzMxJiZ0PGpzcGIuQmluYXJ5Q29uc3RhbnRzLlRXT19UT18zMSksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNpZ25lZFZhcmludDMyKHQpKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3RyaW5nPWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGU9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSksdGhpcy5lbmNvZGVyXy53cml0ZVN0cmluZyh0KSx0aGlzLmVuZERlbGltaXRlZF8oZSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVCeXRlcz1mdW5jdGlvbihlLHQpe251bGwhPXQmJih0PWpzcGIudXRpbHMuYnl0ZVNvdXJjZVRvVWludDhBcnJheSh0KSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMih0Lmxlbmd0aCksdGhpcy5hcHBlbmRVaW50OEFycmF5Xyh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZU1lc3NhZ2U9ZnVuY3Rpb24oZSx0LG8pe251bGwhPXQmJihlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpLG8odCx0aGlzKSx0aGlzLmVuZERlbGltaXRlZF8oZSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVNZXNzYWdlU2V0PWZ1bmN0aW9uKGUsdCxvKXtudWxsIT10JiYodGhpcy53cml0ZUZpZWxkSGVhZGVyXygxLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKDIsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuVkFSSU5UKSx0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50MzIoZSksZT10aGlzLmJlZ2luRGVsaW1pdGVkXygzKSxvKHQsdGhpcyksdGhpcy5lbmREZWxpbWl0ZWRfKGUpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oMSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5FTkRfR1JPVVApKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlR3JvdXA9ZnVuY3Rpb24oZSx0LG8pe251bGwhPXQmJih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuU1RBUlRfR1JPVVApLG8odCx0aGlzKSx0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuRU5EX0dST1VQKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUZpeGVkSGFzaDY0PWZ1bmN0aW9uKGUsdCl7bnVsbCE9dCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoOD09dC5sZW5ndGgpLHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5GSVhFRDY0KSx0aGlzLmVuY29kZXJfLndyaXRlRml4ZWRIYXNoNjQodCkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVWYXJpbnRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtudWxsIT10JiYoZ29vZy5hc3NlcnRzLmFzc2VydCg4PT10Lmxlbmd0aCksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVZhcmludEhhc2g2NCh0KSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVNwbGl0Rml4ZWQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkZJWEVENjQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdEZpeGVkNjQodCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3BsaXRWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCksdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0VmFyaW50NjQodCxvKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyl7dGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlZBUklOVCk7dmFyIHI9dGhpcy5lbmNvZGVyXztqc3BiLnV0aWxzLnRvWmlnemFnNjQodCxvLChmdW5jdGlvbihlLHQpe3Iud3JpdGVTcGxpdFZhcmludDY0KGU+Pj4wLHQ+Pj4wKX0pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNpZ25lZFZhcmludDMyXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEludDMyU3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlSW50MzJTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNpZ25lZFZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0Rml4ZWQ2ND1mdW5jdGlvbihlLHQsbyxyKXtpZihudWxsIT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRoaXMud3JpdGVTcGxpdEZpeGVkNjQoZSxvKHRbbl0pLHIodFtuXSkpfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLndyaXRlU3BsaXRWYXJpbnQ2NChlLG8odFtuXSkscih0W25dKSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU3BsaXRaaWd6YWdWYXJpbnQ2ND1mdW5jdGlvbihlLHQsbyxyKXtpZihudWxsIT10KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRoaXMud3JpdGVTcGxpdFppZ3phZ1ZhcmludDY0KGUsbyh0W25dKSxyKHRbbl0pKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRJbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUludDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkVWludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlVW5zaWduZWRWYXJpbnQzMl8oZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50MzJTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVVaW50MzJTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRVaW50NjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVVbnNpZ25lZFZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVVpbnQ2NFN0cmluZyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDMyXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0XyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVppZ3phZ1ZhcmludDY0U3RyaW5nXyhlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNpbnRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVaaWd6YWdWYXJpbnRIYXNoNjRfKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUZpeGVkMzIoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRGaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlRml4ZWQ2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEZpeGVkNjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGaXhlZDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkU2ZpeGVkMzI9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVTZml4ZWQzMihlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFNmaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dClmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLndyaXRlU2ZpeGVkNjQoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVNmaXhlZDY0U3RyaW5nKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRmxvYXQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGbG9hdChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZERvdWJsZT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZURvdWJsZShlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZEJvb2w9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVCb29sKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRW51bT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUVudW0oZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVTdHJpbmcoZSx0W29dKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUmVwZWF0ZWRCeXRlcz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZUJ5dGVzKGUsdFtvXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkTWVzc2FnZT1mdW5jdGlvbihlLHQsbyl7aWYobnVsbCE9dClmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7byh0W3JdLHRoaXMpLHRoaXMuZW5kRGVsaW1pdGVkXyhuKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkR3JvdXA9ZnVuY3Rpb24oZSx0LG8pe2lmKG51bGwhPXQpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLlNUQVJUX0dST1VQKSxvKHRbcl0sdGhpcyksdGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkVORF9HUk9VUCl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVJlcGVhdGVkRml4ZWRIYXNoNjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10KWZvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMud3JpdGVGaXhlZEhhc2g2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVSZXBlYXRlZFZhcmludEhhc2g2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQpZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy53cml0ZVZhcmludEhhc2g2NChlLHRbb10pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVTaWduZWRWYXJpbnQzMih0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRJbnQzMlN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVTaWduZWRWYXJpbnQzMihwYXJzZUludCh0W29dLDEwKSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkSW50NjQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLmVuY29kZXJfLndyaXRlU2lnbmVkVmFyaW50NjQodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkU3BsaXRGaXhlZDY0PWZ1bmN0aW9uKGUsdCxvLHIpe2lmKG51bGwhPXQpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5lbmNvZGVyXy53cml0ZVNwbGl0Rml4ZWQ2NChvKHRbbl0pLHIodFtuXSkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0VmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLmVuY29kZXJfLndyaXRlU3BsaXRWYXJpbnQ2NChvKHRbbl0pLHIodFtuXSkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNwbGl0WmlnemFnVmFyaW50NjQ9ZnVuY3Rpb24oZSx0LG8scil7aWYobnVsbCE9dCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG49dGhpcy5lbmNvZGVyXyxzPTA7czx0Lmxlbmd0aDtzKyspanNwYi51dGlscy50b1ppZ3phZzY0KG8odFtzXSkscih0W3NdKSwoZnVuY3Rpb24oZSx0KXtuLndyaXRlU3BsaXRWYXJpbnQ2NChlPj4+MCx0Pj4+MCl9KSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkSW50NjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9anNwYi5hcml0aC5JbnQ2NC5mcm9tU3RyaW5nKHRbb10pO3RoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHIubG8sci5oaSl9dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkVWludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkVWludDMyU3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIocGFyc2VJbnQodFtvXSwxMCkpO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDY0KHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFVpbnQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj1qc3BiLmFyaXRoLlVJbnQ2NC5mcm9tU3RyaW5nKHRbb10pO3RoaXMuZW5jb2Rlcl8ud3JpdGVTcGxpdFZhcmludDY0KHIubG8sci5oaSl9dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkU2ludDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludDMyKHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFNpbnQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVaaWd6YWdWYXJpbnQ2NCh0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50NjRTdHJpbmc9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7ZT10aGlzLmJlZ2luRGVsaW1pdGVkXyhlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0aGlzLmVuY29kZXJfLndyaXRlWmlnemFnVmFyaW50SGFzaDY0KGpzcGIudXRpbHMuZGVjaW1hbFN0cmluZ1RvSGFzaDY0KHRbb10pKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTaW50SGFzaDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpe2U9dGhpcy5iZWdpbkRlbGltaXRlZF8oZSk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspdGhpcy5lbmNvZGVyXy53cml0ZVppZ3phZ1ZhcmludEhhc2g2NCh0W29dKTt0aGlzLmVuZERlbGltaXRlZF8oZSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDMyPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDQqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlVWludDMyKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlVWludDY0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGaXhlZDY0U3RyaW5nPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIG89anNwYi5hcml0aC5VSW50NjQuZnJvbVN0cmluZyh0W2VdKTt0aGlzLmVuY29kZXJfLndyaXRlU3BsaXRGaXhlZDY0KG8ubG8sby5oaSl9fSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQzMj1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig0KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDMyKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig4KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDY0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRTZml4ZWQ2NFN0cmluZz1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig4KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUludDY0U3RyaW5nKHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWRGbG9hdD1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKWZvcih0aGlzLndyaXRlRmllbGRIZWFkZXJfKGUsanNwYi5CaW5hcnlDb25zdGFudHMuV2lyZVR5cGUuREVMSU1JVEVEKSx0aGlzLmVuY29kZXJfLndyaXRlVW5zaWduZWRWYXJpbnQzMig0KnQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5lbmNvZGVyXy53cml0ZUZsb2F0KHRbZV0pfSxqc3BiLkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVQYWNrZWREb3VibGU9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aClmb3IodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCksdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIoOCp0Lmxlbmd0aCksZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuZW5jb2Rlcl8ud3JpdGVEb3VibGUodFtlXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZEJvb2w9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT10JiZ0Lmxlbmd0aClmb3IodGhpcy53cml0ZUZpZWxkSGVhZGVyXyhlLGpzcGIuQmluYXJ5Q29uc3RhbnRzLldpcmVUeXBlLkRFTElNSVRFRCksdGhpcy5lbmNvZGVyXy53cml0ZVVuc2lnbmVkVmFyaW50MzIodC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlQm9vbCh0W2VdKX0sanNwYi5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlUGFja2VkRW51bT1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVFbnVtKHRbb10pO3RoaXMuZW5kRGVsaW1pdGVkXyhlKX19LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZEZpeGVkSGFzaDY0PWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9dCYmdC5sZW5ndGgpZm9yKHRoaXMud3JpdGVGaWVsZEhlYWRlcl8oZSxqc3BiLkJpbmFyeUNvbnN0YW50cy5XaXJlVHlwZS5ERUxJTUlURUQpLHRoaXMuZW5jb2Rlcl8ud3JpdGVVbnNpZ25lZFZhcmludDMyKDgqdC5sZW5ndGgpLGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLmVuY29kZXJfLndyaXRlRml4ZWRIYXNoNjQodFtlXSl9LGpzcGIuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVBhY2tlZFZhcmludEhhc2g2ND1mdW5jdGlvbihlLHQpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXtlPXRoaXMuYmVnaW5EZWxpbWl0ZWRfKGUpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRoaXMuZW5jb2Rlcl8ud3JpdGVWYXJpbnRIYXNoNjQodFtvXSk7dGhpcy5lbmREZWxpbWl0ZWRfKGUpfX0sanNwYi5NYXA9ZnVuY3Rpb24oZSx0KXt0aGlzLmFycl89ZSx0aGlzLnZhbHVlQ3Rvcl89dCx0aGlzLm1hcF89e30sdGhpcy5hcnJDbGVhbj0hMCwwPHRoaXMuYXJyXy5sZW5ndGgmJnRoaXMubG9hZEZyb21BcnJheV8oKX0sanNwYi5NYXAucHJvdG90eXBlLmxvYWRGcm9tQXJyYXlfPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmFycl8ubGVuZ3RoO2UrKyl7dmFyIHQ9dGhpcy5hcnJfW2VdLG89dFswXTt0aGlzLm1hcF9bby50b1N0cmluZygpXT1uZXcganNwYi5NYXAuRW50cnlfKG8sdFsxXSl9dGhpcy5hcnJDbGVhbj0hMH0sanNwYi5NYXAucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtpZih0aGlzLmFyckNsZWFuKXtpZih0aGlzLnZhbHVlQ3Rvcl8pe3ZhciBlLHQ9dGhpcy5tYXBfO2ZvcihlIGluIHQpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkpe3ZhciBvPXRbZV0udmFsdWVXcmFwcGVyO28mJm8udG9BcnJheSgpfX19ZWxzZXtmb3IodGhpcy5hcnJfLmxlbmd0aD0wLCh0PXRoaXMuc3RyaW5nS2V5c18oKSkuc29ydCgpLGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5tYXBfW3RbZV1dOyhvPXIudmFsdWVXcmFwcGVyKSYmby50b0FycmF5KCksdGhpcy5hcnJfLnB1c2goW3Iua2V5LHIudmFsdWVdKX10aGlzLmFyckNsZWFuPSEwfXJldHVybiB0aGlzLmFycl99LGpzcGIuTWFwLnByb3RvdHlwZS50b09iamVjdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbz10aGlzLnRvQXJyYXkoKSxyPVtdLG49MDtuPG8ubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy5tYXBfW29bbl1bMF0udG9TdHJpbmcoKV07dGhpcy53cmFwRW50cnlfKHMpO3ZhciBpPXMudmFsdWVXcmFwcGVyO2k/KGdvb2cuYXNzZXJ0cy5hc3NlcnQodCksci5wdXNoKFtzLmtleSx0KGUsaSldKSk6ci5wdXNoKFtzLmtleSxzLnZhbHVlXSl9cmV0dXJuIHJ9LGpzcGIuTWFwLmZyb21PYmplY3Q9ZnVuY3Rpb24oZSx0LG8pe3Q9bmV3IGpzcGIuTWFwKFtdLHQpO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdWzBdLHM9byhlW3JdWzFdKTt0LnNldChuLHMpfXJldHVybiB0fSxqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfPWZ1bmN0aW9uKGUpe3RoaXMuaWR4Xz0wLHRoaXMuYXJyXz1lfSxqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWR4Xzx0aGlzLmFycl8ubGVuZ3RoP3tkb25lOiExLHZhbHVlOnRoaXMuYXJyX1t0aGlzLmlkeF8rK119Ontkb25lOiEwLHZhbHVlOnZvaWQgMH19LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJihqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxqc3BiLk1hcC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nS2V5c18oKS5sZW5ndGh9LGpzcGIuTWFwLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubWFwXz17fSx0aGlzLmFyckNsZWFuPSExfSxqc3BiLk1hcC5wcm90b3R5cGUuZGVsPWZ1bmN0aW9uKGUpe2U9ZS50b1N0cmluZygpO3ZhciB0PXRoaXMubWFwXy5oYXNPd25Qcm9wZXJ0eShlKTtyZXR1cm4gZGVsZXRlIHRoaXMubWFwX1tlXSx0aGlzLmFyckNsZWFuPSExLHR9LGpzcGIuTWFwLnByb3RvdHlwZS5nZXRFbnRyeUxpc3Q9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PXRoaXMuc3RyaW5nS2V5c18oKTt0LnNvcnQoKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dGhpcy5tYXBfW3Rbb11dO2UucHVzaChbci5rZXksci52YWx1ZV0pfXJldHVybiBlfSxqc3BiLk1hcC5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zdHJpbmdLZXlzXygpO3Quc29ydCgpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj10aGlzLm1hcF9bdFtvXV07ZS5wdXNoKFtyLmtleSx0aGlzLndyYXBFbnRyeV8ocildKX1yZXR1cm4gbmV3IGpzcGIuTWFwLkFycmF5SXRlcmF0b3JJdGVyYWJsZV8oZSl9LGpzcGIuTWFwLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLnN0cmluZ0tleXNfKCk7dC5zb3J0KCk7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspZS5wdXNoKHRoaXMubWFwX1t0W29dXS5rZXkpO3JldHVybiBuZXcganNwYi5NYXAuQXJyYXlJdGVyYXRvckl0ZXJhYmxlXyhlKX0sanNwYi5NYXAucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5zdHJpbmdLZXlzXygpO3Quc29ydCgpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKWUucHVzaCh0aGlzLndyYXBFbnRyeV8odGhpcy5tYXBfW3Rbb11dKSk7cmV0dXJuIG5ldyBqc3BiLk1hcC5BcnJheUl0ZXJhdG9ySXRlcmFibGVfKGUpfSxqc3BiLk1hcC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe3ZhciBvPXRoaXMuc3RyaW5nS2V5c18oKTtvLnNvcnQoKTtmb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKyl7dmFyIG49dGhpcy5tYXBfW29bcl1dO2UuY2FsbCh0LHRoaXMud3JhcEVudHJ5XyhuKSxuLmtleSx0aGlzKX19LGpzcGIuTWFwLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbz1uZXcganNwYi5NYXAuRW50cnlfKGUpO3JldHVybiB0aGlzLnZhbHVlQ3Rvcl8/KG8udmFsdWVXcmFwcGVyPXQsby52YWx1ZT10LnRvQXJyYXkoKSk6by52YWx1ZT10LHRoaXMubWFwX1tlLnRvU3RyaW5nKCldPW8sdGhpcy5hcnJDbGVhbj0hMSx0aGlzfSxqc3BiLk1hcC5wcm90b3R5cGUud3JhcEVudHJ5Xz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy52YWx1ZUN0b3JfPyhlLnZhbHVlV3JhcHBlcnx8KGUudmFsdWVXcmFwcGVyPW5ldyB0aGlzLnZhbHVlQ3Rvcl8oZS52YWx1ZSkpLGUudmFsdWVXcmFwcGVyKTplLnZhbHVlfSxqc3BiLk1hcC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe2lmKGU9dGhpcy5tYXBfW2UudG9TdHJpbmcoKV0pcmV0dXJuIHRoaXMud3JhcEVudHJ5XyhlKX0sanNwYi5NYXAucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gZS50b1N0cmluZygpaW4gdGhpcy5tYXBffSxqc3BiLk1hcC5wcm90b3R5cGUuc2VyaWFsaXplQmluYXJ5PWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9dGhpcy5zdHJpbmdLZXlzXygpO3Muc29ydCgpO2Zvcih2YXIgaT0wO2k8cy5sZW5ndGg7aSsrKXt2YXIgYT10aGlzLm1hcF9bc1tpXV07dC5iZWdpblN1Yk1lc3NhZ2UoZSksby5jYWxsKHQsMSxhLmtleSksdGhpcy52YWx1ZUN0b3JfP3IuY2FsbCh0LDIsdGhpcy53cmFwRW50cnlfKGEpLG4pOnIuY2FsbCh0LDIsYS52YWx1ZSksdC5lbmRTdWJNZXNzYWdlKCl9fSxqc3BiLk1hcC5kZXNlcmlhbGl6ZUJpbmFyeT1mdW5jdGlvbihlLHQsbyxyLG4scyxpKXtmb3IoO3QubmV4dEZpZWxkKCkmJiF0LmlzRW5kR3JvdXAoKTspe3ZhciBhPXQuZ2V0RmllbGROdW1iZXIoKTsxPT1hP3M9by5jYWxsKHQpOjI9PWEmJihlLnZhbHVlQ3Rvcl8/KGdvb2cuYXNzZXJ0cy5hc3NlcnQobiksaXx8KGk9bmV3IGUudmFsdWVDdG9yXyksci5jYWxsKHQsaSxuKSk6aT1yLmNhbGwodCkpfWdvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9cyksZ29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1pKSxlLnNldChzLGkpfSxqc3BiLk1hcC5wcm90b3R5cGUuc3RyaW5nS2V5c189ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMubWFwXyxvPVtdO2ZvcihlIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm8ucHVzaChlKTtyZXR1cm4gb30sanNwYi5NYXAuRW50cnlfPWZ1bmN0aW9uKGUsdCl7dGhpcy5rZXk9ZSx0aGlzLnZhbHVlPXQsdGhpcy52YWx1ZVdyYXBwZXI9dm9pZCAwfSxqc3BiLkV4dGVuc2lvbkZpZWxkSW5mbz1mdW5jdGlvbihlLHQsbyxyLG4pe3RoaXMuZmllbGRJbmRleD1lLHRoaXMuZmllbGROYW1lPXQsdGhpcy5jdG9yPW8sdGhpcy50b09iamVjdEZuPXIsdGhpcy5pc1JlcGVhdGVkPW59LGpzcGIuRXh0ZW5zaW9uRmllbGRCaW5hcnlJbmZvPWZ1bmN0aW9uKGUsdCxvLHIsbixzKXt0aGlzLmZpZWxkSW5mbz1lLHRoaXMuYmluYXJ5UmVhZGVyRm49dCx0aGlzLmJpbmFyeVdyaXRlckZuPW8sdGhpcy5iaW5hcnlNZXNzYWdlU2VyaWFsaXplRm49cix0aGlzLmJpbmFyeU1lc3NhZ2VEZXNlcmlhbGl6ZUZuPW4sdGhpcy5pc1BhY2tlZD1zfSxqc3BiLkV4dGVuc2lvbkZpZWxkSW5mby5wcm90b3R5cGUuaXNNZXNzYWdlVHlwZT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5jdG9yfSxqc3BiLk1lc3NhZ2U9ZnVuY3Rpb24oKXt9LGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19PQkpFQ1Q9ITAsanNwYi5NZXNzYWdlLkdFTkVSQVRFX0ZST01fT0JKRUNUPSFnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFLGpzcGIuTWVzc2FnZS5HRU5FUkFURV9UT19TVFJJTkc9ITAsanNwYi5NZXNzYWdlLkFTU1VNRV9MT0NBTF9BUlJBWVM9ITEsanNwYi5NZXNzYWdlLlNFUklBTElaRV9FTVBUWV9UUkFJTElOR19GSUVMRFM9ITAsanNwYi5NZXNzYWdlLlNVUFBPUlRTX1VJTlQ4QVJSQVlfPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksanNwYi5NZXNzYWdlLnByb3RvdHlwZS5nZXRKc1BiTWVzc2FnZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUlkX30sanNwYi5NZXNzYWdlLmdldEluZGV4Xz1mdW5jdGlvbihlLHQpe3JldHVybiB0K2UuYXJyYXlJbmRleE9mZnNldF99LGpzcGIuTWVzc2FnZS5oaWRkZW5FUzZQcm9wZXJ0eV89ZnVuY3Rpb24oKXt9LGpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lLmFycmF5SW5kZXhPZmZzZXRffSxqc3BiLk1lc3NhZ2UuaW5pdGlhbGl6ZT1mdW5jdGlvbihlLHQsbyxyLG4scyl7aWYoZS53cmFwcGVyc189bnVsbCx0fHwodD1vP1tvXTpbXSksZS5tZXNzYWdlSWRfPW8/U3RyaW5nKG8pOnZvaWQgMCxlLmFycmF5SW5kZXhPZmZzZXRfPTA9PT1vPy0xOjAsZS5hcnJheT10LGpzcGIuTWVzc2FnZS5pbml0UGl2b3RBbmRFeHRlbnNpb25PYmplY3RfKGUsciksZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfPXt9LGpzcGIuTWVzc2FnZS5TRVJJQUxJWkVfRU1QVFlfVFJBSUxJTkdfRklFTERTfHwoZS5yZXBlYXRlZEZpZWxkcz1uKSxuKWZvcih0PTA7dDxuLmxlbmd0aDt0KyspKG89blt0XSk8ZS5waXZvdF8/KG89anNwYi5NZXNzYWdlLmdldEluZGV4XyhlLG8pLGUuYXJyYXlbb109ZS5hcnJheVtvXXx8anNwYi5NZXNzYWdlLkVNUFRZX0xJU1RfU0VOVElORUxfKTooanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0XyhlKSxlLmV4dGVuc2lvbk9iamVjdF9bb109ZS5leHRlbnNpb25PYmplY3RfW29dfHxqc3BiLk1lc3NhZ2UuRU1QVFlfTElTVF9TRU5USU5FTF8pO2lmKHMmJnMubGVuZ3RoKWZvcih0PTA7dDxzLmxlbmd0aDt0KyspanNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2UoZSxzW3RdKX0sanNwYi5NZXNzYWdlLkVNUFRZX0xJU1RfU0VOVElORUxfPWdvb2cuREVCVUcmJk9iamVjdC5mcmVlemU/T2JqZWN0LmZyZWV6ZShbXSk6W10sanNwYi5NZXNzYWdlLmlzQXJyYXlfPWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuQVNTVU1FX0xPQ0FMX0FSUkFZUz9lIGluc3RhbmNlb2YgQXJyYXk6QXJyYXkuaXNBcnJheShlKX0sanNwYi5NZXNzYWdlLmlzRXh0ZW5zaW9uT2JqZWN0Xz1mdW5jdGlvbihlKXtyZXR1cm4hKG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZXx8anNwYi5NZXNzYWdlLmlzQXJyYXlfKGUpfHxqc3BiLk1lc3NhZ2UuU1VQUE9SVFNfVUlOVDhBUlJBWV8mJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5KX0sanNwYi5NZXNzYWdlLmluaXRQaXZvdEFuZEV4dGVuc2lvbk9iamVjdF89ZnVuY3Rpb24oZSx0KXt2YXIgbz1lLmFycmF5Lmxlbmd0aCxyPS0xO2lmKG8mJihyPW8tMSxvPWUuYXJyYXlbcl0sanNwYi5NZXNzYWdlLmlzRXh0ZW5zaW9uT2JqZWN0XyhvKSkpcmV0dXJuIGUucGl2b3RfPWpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl8oZSxyKSx2b2lkKGUuZXh0ZW5zaW9uT2JqZWN0Xz1vKTstMTx0PyhlLnBpdm90Xz1NYXRoLm1heCh0LGpzcGIuTWVzc2FnZS5nZXRGaWVsZE51bWJlcl8oZSxyKzEpKSxlLmV4dGVuc2lvbk9iamVjdF89bnVsbCk6ZS5waXZvdF89TnVtYmVyLk1BWF9WQUxVRX0sanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0Xz1mdW5jdGlvbihlKXt2YXIgdD1qc3BiLk1lc3NhZ2UuZ2V0SW5kZXhfKGUsZS5waXZvdF8pO2UuYXJyYXlbdF18fChlLmV4dGVuc2lvbk9iamVjdF89ZS5hcnJheVt0XT17fSl9LGpzcGIuTWVzc2FnZS50b09iamVjdExpc3Q9ZnVuY3Rpb24oZSx0LG8pe2Zvcih2YXIgcj1bXSxuPTA7bjxlLmxlbmd0aDtuKyspcltuXT10LmNhbGwoZVtuXSxvLGVbbl0pO3JldHVybiByfSxqc3BiLk1lc3NhZ2UudG9PYmplY3RFeHRlbnNpb249ZnVuY3Rpb24oZSx0LG8scixuKXtmb3IodmFyIHMgaW4gbyl7dmFyIGk9b1tzXSxhPXIuY2FsbChlLGkpO2lmKG51bGwhPWEpe2Zvcih2YXIgZyBpbiBpLmZpZWxkTmFtZSlpZihpLmZpZWxkTmFtZS5oYXNPd25Qcm9wZXJ0eShnKSlicmVhazt0W2ddPWkudG9PYmplY3RGbj9pLmlzUmVwZWF0ZWQ/anNwYi5NZXNzYWdlLnRvT2JqZWN0TGlzdChhLGkudG9PYmplY3RGbixuKTppLnRvT2JqZWN0Rm4obixhKTphfX19LGpzcGIuTWVzc2FnZS5zZXJpYWxpemVCaW5hcnlFeHRlbnNpb25zPWZ1bmN0aW9uKGUsdCxvLHIpe2Zvcih2YXIgbiBpbiBvKXt2YXIgcz1vW25dLGk9cy5maWVsZEluZm87aWYoIXMuYmluYXJ5V3JpdGVyRm4pdGhyb3cgRXJyb3IoXCJNZXNzYWdlIGV4dGVuc2lvbiBwcmVzZW50IHRoYXQgd2FzIGdlbmVyYXRlZCB3aXRob3V0IGJpbmFyeSBzZXJpYWxpemF0aW9uIHN1cHBvcnRcIik7dmFyIGE9ci5jYWxsKGUsaSk7aWYobnVsbCE9YSlpZihpLmlzTWVzc2FnZVR5cGUoKSl7aWYoIXMuYmluYXJ5TWVzc2FnZVNlcmlhbGl6ZUZuKXRocm93IEVycm9yKFwiTWVzc2FnZSBleHRlbnNpb24gcHJlc2VudCBob2xkaW5nIHN1Ym1lc3NhZ2Ugd2l0aG91dCBiaW5hcnkgc3VwcG9ydCBlbmFibGVkLCBhbmQgbWVzc2FnZSBpcyBiZWluZyBzZXJpYWxpemVkIHRvIGJpbmFyeSBmb3JtYXRcIik7cy5iaW5hcnlXcml0ZXJGbi5jYWxsKHQsaS5maWVsZEluZGV4LGEscy5iaW5hcnlNZXNzYWdlU2VyaWFsaXplRm4pfWVsc2Ugcy5iaW5hcnlXcml0ZXJGbi5jYWxsKHQsaS5maWVsZEluZGV4LGEpfX0sanNwYi5NZXNzYWdlLnJlYWRCaW5hcnlFeHRlbnNpb249ZnVuY3Rpb24oZSx0LG8scixuKXt2YXIgcz1vW3QuZ2V0RmllbGROdW1iZXIoKV07aWYocyl7aWYobz1zLmZpZWxkSW5mbywhcy5iaW5hcnlSZWFkZXJGbil0aHJvdyBFcnJvcihcIkRlc2VyaWFsaXppbmcgZXh0ZW5zaW9uIHdob3NlIGdlbmVyYXRlZCBjb2RlIGRvZXMgbm90IHN1cHBvcnQgYmluYXJ5IGZvcm1hdFwiKTtpZihvLmlzTWVzc2FnZVR5cGUoKSl7dmFyIGk9bmV3IG8uY3RvcjtzLmJpbmFyeVJlYWRlckZuLmNhbGwodCxpLHMuYmluYXJ5TWVzc2FnZURlc2VyaWFsaXplRm4pfWVsc2UgaT1zLmJpbmFyeVJlYWRlckZuLmNhbGwodCk7by5pc1JlcGVhdGVkJiYhcy5pc1BhY2tlZD8odD1yLmNhbGwoZSxvKSk/dC5wdXNoKGkpOm4uY2FsbChlLG8sW2ldKTpuLmNhbGwoZSxvLGkpfWVsc2UgdC5za2lwRmllbGQoKX0sanNwYi5NZXNzYWdlLmdldEZpZWxkPWZ1bmN0aW9uKGUsdCl7aWYodDxlLnBpdm90Xyl7dD1qc3BiLk1lc3NhZ2UuZ2V0SW5kZXhfKGUsdCk7dmFyIG89ZS5hcnJheVt0XTtyZXR1cm4gbz09PWpzcGIuTWVzc2FnZS5FTVBUWV9MSVNUX1NFTlRJTkVMXz9lLmFycmF5W3RdPVtdOm99aWYoZS5leHRlbnNpb25PYmplY3RfKXJldHVybihvPWUuZXh0ZW5zaW9uT2JqZWN0X1t0XSk9PT1qc3BiLk1lc3NhZ2UuRU1QVFlfTElTVF9TRU5USU5FTF8/ZS5leHRlbnNpb25PYmplY3RfW3RdPVtdOm99LGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpfSxqc3BiLk1lc3NhZ2UuZ2V0T3B0aW9uYWxGbG9hdGluZ1BvaW50RmllbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09KGU9anNwYi5NZXNzYWdlLmdldEZpZWxkKGUsdCkpP2U6K2V9LGpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09KGU9anNwYi5NZXNzYWdlLmdldEZpZWxkKGUsdCkpP2U6ISFlfSxqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGbG9hdGluZ1BvaW50RmllbGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbz1qc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChlLHQpO2lmKGUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzX3x8KGUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzXz17fSksIWUuY29udmVydGVkUHJpbWl0aXZlRmllbGRzX1t0XSl7Zm9yKHZhciByPTA7cjxvLmxlbmd0aDtyKyspb1tyXT0rb1tyXTtlLmNvbnZlcnRlZFByaW1pdGl2ZUZpZWxkc19bdF09ITB9cmV0dXJuIG99LGpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEJvb2xlYW5GaWVsZD1mdW5jdGlvbihlLHQpe3ZhciBvPWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsdCk7aWYoZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNffHwoZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfPXt9KSwhZS5jb252ZXJ0ZWRQcmltaXRpdmVGaWVsZHNfW3RdKXtmb3IodmFyIHI9MDtyPG8ubGVuZ3RoO3IrKylvW3JdPSEhb1tyXTtlLmNvbnZlcnRlZFByaW1pdGl2ZUZpZWxkc19bdF09ITB9cmV0dXJuIG99LGpzcGIuTWVzc2FnZS5ieXRlc0FzQjY0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxcInN0cmluZ1wiPT10eXBlb2YgZT9lOmpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/Z29vZy5jcnlwdC5iYXNlNjQuZW5jb2RlQnl0ZUFycmF5KGUpOihnb29nLmFzc2VydHMuZmFpbChcIkNhbm5vdCBjb2VyY2UgdG8gYjY0IHN0cmluZzogXCIrZ29vZy50eXBlT2YoZSkpLG51bGwpfSxqc3BiLk1lc3NhZ2UuYnl0ZXNBc1U4PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxlIGluc3RhbmNlb2YgVWludDhBcnJheT9lOlwic3RyaW5nXCI9PXR5cGVvZiBlP2dvb2cuY3J5cHQuYmFzZTY0LmRlY29kZVN0cmluZ1RvVWludDhBcnJheShlKTooZ29vZy5hc3NlcnRzLmZhaWwoXCJDYW5ub3QgY29lcmNlIHRvIFVpbnQ4QXJyYXk6IFwiK2dvb2cudHlwZU9mKGUpKSxudWxsKX0sanNwYi5NZXNzYWdlLmJ5dGVzTGlzdEFzQjY0PWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuYXNzZXJ0Q29uc2lzdGVudFR5cGVzXyhlKSxlLmxlbmd0aCYmXCJzdHJpbmdcIiE9dHlwZW9mIGVbMF0/Z29vZy5hcnJheS5tYXAoZSxqc3BiLk1lc3NhZ2UuYnl0ZXNBc0I2NCk6ZX0sanNwYi5NZXNzYWdlLmJ5dGVzTGlzdEFzVTg9ZnVuY3Rpb24oZSl7cmV0dXJuIGpzcGIuTWVzc2FnZS5hc3NlcnRDb25zaXN0ZW50VHlwZXNfKGUpLCFlLmxlbmd0aHx8ZVswXWluc3RhbmNlb2YgVWludDhBcnJheT9lOmdvb2cuYXJyYXkubWFwKGUsanNwYi5NZXNzYWdlLmJ5dGVzQXNVOCl9LGpzcGIuTWVzc2FnZS5hc3NlcnRDb25zaXN0ZW50VHlwZXNfPWZ1bmN0aW9uKGUpe2lmKGdvb2cuREVCVUcmJmUmJjE8ZS5sZW5ndGgpe3ZhciB0PWdvb2cudHlwZU9mKGVbMF0pO2dvb2cuYXJyYXkuZm9yRWFjaChlLChmdW5jdGlvbihlKXtnb29nLnR5cGVPZihlKSE9dCYmZ29vZy5hc3NlcnRzLmZhaWwoXCJJbmNvbnNpc3RlbnQgdHlwZSBpbiBKU1BCIHJlcGVhdGVkIGZpZWxkIGFycmF5LiBHb3QgXCIrZ29vZy50eXBlT2YoZSkrXCIgZXhwZWN0ZWQgXCIrdCl9KSl9fSxqc3BiLk1lc3NhZ2UuZ2V0RmllbGRXaXRoRGVmYXVsdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGw9PShlPWpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpKT9vOmV9LGpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGRXaXRoRGVmYXVsdD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIG51bGw9PShlPWpzcGIuTWVzc2FnZS5nZXRCb29sZWFuRmllbGQoZSx0KSk/bzplfSxqc3BiLk1lc3NhZ2UuZ2V0RmxvYXRpbmdQb2ludEZpZWxkV2l0aERlZmF1bHQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBudWxsPT0oZT1qc3BiLk1lc3NhZ2UuZ2V0T3B0aW9uYWxGbG9hdGluZ1BvaW50RmllbGQoZSx0KSk/bzplfSxqc3BiLk1lc3NhZ2UuZ2V0RmllbGRQcm90bzM9anNwYi5NZXNzYWdlLmdldEZpZWxkV2l0aERlZmF1bHQsanNwYi5NZXNzYWdlLmdldE1hcEZpZWxkPWZ1bmN0aW9uKGUsdCxvLHIpe2lmKGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pLHQgaW4gZS53cmFwcGVyc18pcmV0dXJuIGUud3JhcHBlcnNfW3RdO3ZhciBuPWpzcGIuTWVzc2FnZS5nZXRGaWVsZChlLHQpO2lmKCFuKXtpZihvKXJldHVybjtuPVtdLGpzcGIuTWVzc2FnZS5zZXRGaWVsZChlLHQsbil9cmV0dXJuIGUud3JhcHBlcnNfW3RdPW5ldyBqc3BiLk1hcChuLHIpfSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksdDxlLnBpdm90Xz9lLmFycmF5W2pzcGIuTWVzc2FnZS5nZXRJbmRleF8oZSx0KV09bzooanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0XyhlKSxlLmV4dGVuc2lvbk9iamVjdF9bdF09byksZX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0ludEZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbywwKX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0Zsb2F0RmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBqc3BiLk1lc3NhZ2Uuc2V0RmllbGRJZ25vcmluZ0RlZmF1bHRfKGUsdCxvLDApfSxqc3BiLk1lc3NhZ2Uuc2V0UHJvdG8zQm9vbGVhbkZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbywhMSl9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdGaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sXCJcIil9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNCeXRlc0ZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtyZXR1cm4ganNwYi5NZXNzYWdlLnNldEZpZWxkSWdub3JpbmdEZWZhdWx0XyhlLHQsbyxcIlwiKX0sanNwYi5NZXNzYWdlLnNldFByb3RvM0VudW1GaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sMCl9LGpzcGIuTWVzc2FnZS5zZXRQcm90bzNTdHJpbmdJbnRGaWVsZD1mdW5jdGlvbihlLHQsbyl7cmV0dXJuIGpzcGIuTWVzc2FnZS5zZXRGaWVsZElnbm9yaW5nRGVmYXVsdF8oZSx0LG8sXCIwXCIpfSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGRJZ25vcmluZ0RlZmF1bHRfPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksbyE9PXI/anNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxvKTp0PGUucGl2b3RfP2UuYXJyYXlbanNwYi5NZXNzYWdlLmdldEluZGV4XyhlLHQpXT1udWxsOihqc3BiLk1lc3NhZ2UubWF5YmVJbml0RW1wdHlFeHRlbnNpb25PYmplY3RfKGUpLGRlbGV0ZSBlLmV4dGVuc2lvbk9iamVjdF9bdF0pLGV9LGpzcGIuTWVzc2FnZS5hZGRUb1JlcGVhdGVkRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIGdvb2cuYXNzZXJ0cy5hc3NlcnRJbnN0YW5jZW9mKGUsanNwYi5NZXNzYWdlKSx0PWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsdCksbnVsbCE9cj90LnNwbGljZShyLDAsbyk6dC5wdXNoKG8pLGV9LGpzcGIuTWVzc2FnZS5zZXRPbmVvZkZpZWxkPWZ1bmN0aW9uKGUsdCxvLHIpe3JldHVybiBnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksKG89anNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2UoZSxvKSkmJm8hPT10JiZ2b2lkIDAhPT1yJiYoZS53cmFwcGVyc18mJm8gaW4gZS53cmFwcGVyc18mJihlLndyYXBwZXJzX1tvXT12b2lkIDApLGpzcGIuTWVzc2FnZS5zZXRGaWVsZChlLG8sdm9pZCAwKSksanNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxyKX0sanNwYi5NZXNzYWdlLmNvbXB1dGVPbmVvZkNhc2U9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl0saT1qc3BiLk1lc3NhZ2UuZ2V0RmllbGQoZSxzKTtudWxsIT1pJiYobz1zLHI9aSxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSxzLHZvaWQgMCkpfXJldHVybiBvPyhqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSxvLHIpLG8pOjB9LGpzcGIuTWVzc2FnZS5nZXRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7aWYoZS53cmFwcGVyc198fChlLndyYXBwZXJzXz17fSksIWUud3JhcHBlcnNfW29dKXt2YXIgbj1qc3BiLk1lc3NhZ2UuZ2V0RmllbGQoZSxvKTsocnx8bikmJihlLndyYXBwZXJzX1tvXT1uZXcgdChuKSl9cmV0dXJuIGUud3JhcHBlcnNfW29dfSxqc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8pe3JldHVybiBqc3BiLk1lc3NhZ2Uud3JhcFJlcGVhdGVkRmllbGRfKGUsdCxvKSwodD1lLndyYXBwZXJzX1tvXSk9PWpzcGIuTWVzc2FnZS5FTVBUWV9MSVNUX1NFTlRJTkVMXyYmKHQ9ZS53cmFwcGVyc19bb109W10pLHR9LGpzcGIuTWVzc2FnZS53cmFwUmVwZWF0ZWRGaWVsZF89ZnVuY3Rpb24oZSx0LG8pe2lmKGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pLCFlLndyYXBwZXJzX1tvXSl7Zm9yKHZhciByPWpzcGIuTWVzc2FnZS5nZXRSZXBlYXRlZEZpZWxkKGUsbyksbj1bXSxzPTA7czxyLmxlbmd0aDtzKyspbltzXT1uZXcgdChyW3NdKTtlLndyYXBwZXJzX1tvXT1ufX0sanNwYi5NZXNzYWdlLnNldFdyYXBwZXJGaWVsZD1mdW5jdGlvbihlLHQsbyl7Z29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2YoZSxqc3BiLk1lc3NhZ2UpLGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pO3ZhciByPW8/by50b0FycmF5KCk6bztyZXR1cm4gZS53cmFwcGVyc19bdF09byxqc3BiLk1lc3NhZ2Uuc2V0RmllbGQoZSx0LHIpfSxqc3BiLk1lc3NhZ2Uuc2V0T25lb2ZXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scil7Z29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2YoZSxqc3BiLk1lc3NhZ2UpLGUud3JhcHBlcnNffHwoZS53cmFwcGVyc189e30pO3ZhciBuPXI/ci50b0FycmF5KCk6cjtyZXR1cm4gZS53cmFwcGVyc19bdF09cixqc3BiLk1lc3NhZ2Uuc2V0T25lb2ZGaWVsZChlLHQsbyxuKX0sanNwYi5NZXNzYWdlLnNldFJlcGVhdGVkV3JhcHBlckZpZWxkPWZ1bmN0aW9uKGUsdCxvKXtnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZihlLGpzcGIuTWVzc2FnZSksZS53cmFwcGVyc198fChlLndyYXBwZXJzXz17fSksbz1vfHxbXTtmb3IodmFyIHI9W10sbj0wO248by5sZW5ndGg7bisrKXJbbl09b1tuXS50b0FycmF5KCk7cmV0dXJuIGUud3JhcHBlcnNfW3RdPW8sanNwYi5NZXNzYWdlLnNldEZpZWxkKGUsdCxyKX0sanNwYi5NZXNzYWdlLmFkZFRvUmVwZWF0ZWRXcmFwcGVyRmllbGQ9ZnVuY3Rpb24oZSx0LG8scixuKXtqc3BiLk1lc3NhZ2Uud3JhcFJlcGVhdGVkRmllbGRfKGUscix0KTt2YXIgcz1lLndyYXBwZXJzX1t0XTtyZXR1cm4gc3x8KHM9ZS53cmFwcGVyc19bdF09W10pLG89b3x8bmV3IHIsZT1qc3BiLk1lc3NhZ2UuZ2V0UmVwZWF0ZWRGaWVsZChlLHQpLG51bGwhPW4/KHMuc3BsaWNlKG4sMCxvKSxlLnNwbGljZShuLDAsby50b0FycmF5KCkpKToocy5wdXNoKG8pLGUucHVzaChvLnRvQXJyYXkoKSkpLG99LGpzcGIuTWVzc2FnZS50b01hcD1mdW5jdGlvbihlLHQsbyxyKXtmb3IodmFyIG49e30scz0wO3M8ZS5sZW5ndGg7cysrKW5bdC5jYWxsKGVbc10pXT1vP28uY2FsbChlW3NdLHIsZVtzXSk6ZVtzXTtyZXR1cm4gbn0sanNwYi5NZXNzYWdlLnByb3RvdHlwZS5zeW5jTWFwRmllbGRzXz1mdW5jdGlvbigpe2lmKHRoaXMud3JhcHBlcnNfKWZvcih2YXIgZSBpbiB0aGlzLndyYXBwZXJzXyl7dmFyIHQ9dGhpcy53cmFwcGVyc19bZV07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl0W29dJiZ0W29dLnRvQXJyYXkoKTtlbHNlIHQmJnQudG9BcnJheSgpfX0sanNwYi5NZXNzYWdlLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3luY01hcEZpZWxkc18oKSx0aGlzLmFycmF5fSxqc3BiLk1lc3NhZ2UuR0VORVJBVEVfVE9fU1RSSU5HJiYoanNwYi5NZXNzYWdlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN5bmNNYXBGaWVsZHNfKCksdGhpcy5hcnJheS50b1N0cmluZygpfSksanNwYi5NZXNzYWdlLnByb3RvdHlwZS5nZXRFeHRlbnNpb249ZnVuY3Rpb24oZSl7aWYodGhpcy5leHRlbnNpb25PYmplY3RfKXt0aGlzLndyYXBwZXJzX3x8KHRoaXMud3JhcHBlcnNfPXt9KTt2YXIgdD1lLmZpZWxkSW5kZXg7aWYoZS5pc1JlcGVhdGVkKXtpZihlLmlzTWVzc2FnZVR5cGUoKSlyZXR1cm4gdGhpcy53cmFwcGVyc19bdF18fCh0aGlzLndyYXBwZXJzX1t0XT1nb29nLmFycmF5Lm1hcCh0aGlzLmV4dGVuc2lvbk9iamVjdF9bdF18fFtdLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGUuY3Rvcih0KX0pKSksdGhpcy53cmFwcGVyc19bdF19ZWxzZSBpZihlLmlzTWVzc2FnZVR5cGUoKSlyZXR1cm4hdGhpcy53cmFwcGVyc19bdF0mJnRoaXMuZXh0ZW5zaW9uT2JqZWN0X1t0XSYmKHRoaXMud3JhcHBlcnNfW3RdPW5ldyBlLmN0b3IodGhpcy5leHRlbnNpb25PYmplY3RfW3RdKSksdGhpcy53cmFwcGVyc19bdF07cmV0dXJuIHRoaXMuZXh0ZW5zaW9uT2JqZWN0X1t0XX19LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuc2V0RXh0ZW5zaW9uPWZ1bmN0aW9uKGUsdCl7dGhpcy53cmFwcGVyc198fCh0aGlzLndyYXBwZXJzXz17fSksanNwYi5NZXNzYWdlLm1heWJlSW5pdEVtcHR5RXh0ZW5zaW9uT2JqZWN0Xyh0aGlzKTt2YXIgbz1lLmZpZWxkSW5kZXg7cmV0dXJuIGUuaXNSZXBlYXRlZD8odD10fHxbXSxlLmlzTWVzc2FnZVR5cGUoKT8odGhpcy53cmFwcGVyc19bb109dCx0aGlzLmV4dGVuc2lvbk9iamVjdF9bb109Z29vZy5hcnJheS5tYXAodCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9BcnJheSgpfSkpKTp0aGlzLmV4dGVuc2lvbk9iamVjdF9bb109dCk6ZS5pc01lc3NhZ2VUeXBlKCk/KHRoaXMud3JhcHBlcnNfW29dPXQsdGhpcy5leHRlbnNpb25PYmplY3RfW29dPXQ/dC50b0FycmF5KCk6dCk6dGhpcy5leHRlbnNpb25PYmplY3RfW29dPXQsdGhpc30sanNwYi5NZXNzYWdlLmRpZmZlcmVuY2U9ZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yKSl0aHJvdyBFcnJvcihcIk1lc3NhZ2VzIGhhdmUgZGlmZmVyZW50IHR5cGVzLlwiKTt2YXIgbz1lLnRvQXJyYXkoKTt0PXQudG9BcnJheSgpO3ZhciByPVtdLG49MCxzPW8ubGVuZ3RoPnQubGVuZ3RoP28ubGVuZ3RoOnQubGVuZ3RoO2ZvcihlLmdldEpzUGJNZXNzYWdlSWQoKSYmKHJbMF09ZS5nZXRKc1BiTWVzc2FnZUlkKCksbj0xKTtuPHM7bisrKWpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzKG9bbl0sdFtuXSl8fChyW25dPXRbbl0pO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihyKX0sanNwYi5NZXNzYWdlLmVxdWFscz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT10fHwhKCFlfHwhdCkmJmUgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yJiZqc3BiLk1lc3NhZ2UuY29tcGFyZUZpZWxkcyhlLnRvQXJyYXkoKSx0LnRvQXJyYXkoKSl9LGpzcGIuTWVzc2FnZS5jb21wYXJlRXh0ZW5zaW9ucz1mdW5jdGlvbihlLHQpe2U9ZXx8e30sdD10fHx7fTt2YXIgbyxyPXt9O2ZvcihvIGluIGUpcltvXT0wO2ZvcihvIGluIHQpcltvXT0wO2ZvcihvIGluIHIpaWYoIWpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzKGVbb10sdFtvXSkpcmV0dXJuITE7cmV0dXJuITB9LGpzcGIuTWVzc2FnZS5jb21wYXJlRmllbGRzPWZ1bmN0aW9uKGUsdCl7aWYoZT09dClyZXR1cm4hMDtpZighZ29vZy5pc09iamVjdChlKXx8IWdvb2cuaXNPYmplY3QodCkpcmV0dXJuISEoXCJudW1iZXJcIj09dHlwZW9mIGUmJmlzTmFOKGUpfHxcIm51bWJlclwiPT10eXBlb2YgdCYmaXNOYU4odCkpJiZTdHJpbmcoZSk9PVN0cmluZyh0KTtpZihlLmNvbnN0cnVjdG9yIT10LmNvbnN0cnVjdG9yKXJldHVybiExO2lmKGpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpe2lmKGUubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZihlW29dIT10W29dKXJldHVybiExO3JldHVybiEwfWlmKGUuY29uc3RydWN0b3I9PT1BcnJheSl7dmFyIHI9dm9pZCAwLG49dm9pZCAwLHM9TWF0aC5tYXgoZS5sZW5ndGgsdC5sZW5ndGgpO2ZvcihvPTA7bzxzO28rKyl7dmFyIGk9ZVtvXSxhPXRbb107aWYoaSYmaS5jb25zdHJ1Y3Rvcj09T2JqZWN0JiYoZ29vZy5hc3NlcnRzLmFzc2VydCh2b2lkIDA9PT1yKSxnb29nLmFzc2VydHMuYXNzZXJ0KG89PT1lLmxlbmd0aC0xKSxyPWksaT12b2lkIDApLGEmJmEuY29uc3RydWN0b3I9PU9iamVjdCYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQodm9pZCAwPT09biksZ29vZy5hc3NlcnRzLmFzc2VydChvPT09dC5sZW5ndGgtMSksbj1hLGE9dm9pZCAwKSwhanNwYi5NZXNzYWdlLmNvbXBhcmVGaWVsZHMoaSxhKSlyZXR1cm4hMX1yZXR1cm4hciYmIW58fChyPXJ8fHt9LG49bnx8e30sanNwYi5NZXNzYWdlLmNvbXBhcmVFeHRlbnNpb25zKHIsbikpfWlmKGUuY29uc3RydWN0b3I9PT1PYmplY3QpcmV0dXJuIGpzcGIuTWVzc2FnZS5jb21wYXJlRXh0ZW5zaW9ucyhlLHQpO3Rocm93IEVycm9yKFwiSW52YWxpZCB0eXBlIGluIEpTUEIgYXJyYXlcIil9LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuY2xvbmVNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIGpzcGIuTWVzc2FnZS5jbG9uZU1lc3NhZ2UodGhpcyl9LGpzcGIuTWVzc2FnZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4ganNwYi5NZXNzYWdlLmNsb25lTWVzc2FnZSh0aGlzKX0sanNwYi5NZXNzYWdlLmNsb25lPWZ1bmN0aW9uKGUpe3JldHVybiBqc3BiLk1lc3NhZ2UuY2xvbmVNZXNzYWdlKGUpfSxqc3BiLk1lc3NhZ2UuY2xvbmVNZXNzYWdlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZS5jb25zdHJ1Y3Rvcihqc3BiLk1lc3NhZ2UuY2xvbmVfKGUudG9BcnJheSgpKSl9LGpzcGIuTWVzc2FnZS5jb3B5SW50bz1mdW5jdGlvbihlLHQpe2dvb2cuYXNzZXJ0cy5hc3NlcnRJbnN0YW5jZW9mKGUsanNwYi5NZXNzYWdlKSxnb29nLmFzc2VydHMuYXNzZXJ0SW5zdGFuY2VvZih0LGpzcGIuTWVzc2FnZSksZ29vZy5hc3NlcnRzLmFzc2VydChlLmNvbnN0cnVjdG9yPT10LmNvbnN0cnVjdG9yLFwiQ29weSBzb3VyY2UgYW5kIHRhcmdldCBtZXNzYWdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHR5cGUuXCIpLGU9anNwYi5NZXNzYWdlLmNsb25lKGUpO2Zvcih2YXIgbz10LnRvQXJyYXkoKSxyPWUudG9BcnJheSgpLG49by5sZW5ndGg9MDtuPHIubGVuZ3RoO24rKylvW25dPXJbbl07dC53cmFwcGVyc189ZS53cmFwcGVyc18sdC5leHRlbnNpb25PYmplY3RfPWUuZXh0ZW5zaW9uT2JqZWN0X30sanNwYi5NZXNzYWdlLmNsb25lXz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9QXJyYXkoZS5sZW5ndGgpLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIHI9ZVtvXTtudWxsIT1yJiYodFtvXT1cIm9iamVjdFwiPT10eXBlb2Ygcj9qc3BiLk1lc3NhZ2UuY2xvbmVfKGdvb2cuYXNzZXJ0cy5hc3NlcnQocikpOnIpfXJldHVybiB0fWlmKGpzcGIuTWVzc2FnZS5TVVBQT1JUU19VSU5UOEFSUkFZXyYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGUpO2ZvcihvIGluIHQ9e30sZSludWxsIT0ocj1lW29dKSYmKHRbb109XCJvYmplY3RcIj09dHlwZW9mIHI/anNwYi5NZXNzYWdlLmNsb25lXyhnb29nLmFzc2VydHMuYXNzZXJ0KHIpKTpyKTtyZXR1cm4gdH0sanNwYi5NZXNzYWdlLnJlZ2lzdGVyTWVzc2FnZVR5cGU9ZnVuY3Rpb24oZSx0KXt0Lm1lc3NhZ2VJZD1lfSxqc3BiLk1lc3NhZ2UubWVzc2FnZVNldEV4dGVuc2lvbnM9e30sanNwYi5NZXNzYWdlLm1lc3NhZ2VTZXRFeHRlbnNpb25zQmluYXJ5PXt9LGpzcGIuRXhwb3J0PXt9LGV4cG9ydHMuTWFwPWpzcGIuTWFwLGV4cG9ydHMuTWVzc2FnZT1qc3BiLk1lc3NhZ2UsZXhwb3J0cy5CaW5hcnlSZWFkZXI9anNwYi5CaW5hcnlSZWFkZXIsZXhwb3J0cy5CaW5hcnlXcml0ZXI9anNwYi5CaW5hcnlXcml0ZXIsZXhwb3J0cy5FeHRlbnNpb25GaWVsZEluZm89anNwYi5FeHRlbnNpb25GaWVsZEluZm8sZXhwb3J0cy5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm89anNwYi5FeHRlbnNpb25GaWVsZEJpbmFyeUluZm8sZXhwb3J0cy5leHBvcnRTeW1ib2w9Z29vZy5leHBvcnRTeW1ib2wsZXhwb3J0cy5pbmhlcml0cz1nb29nLmluaGVyaXRzLGV4cG9ydHMub2JqZWN0PXtleHRlbmQ6Z29vZy5vYmplY3QuZXh0ZW5kfSxleHBvcnRzLnR5cGVPZj1nb29nLnR5cGVPZn0sNDA6ZnVuY3Rpb24oZSx0LG8pe3ZhciByO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdDxlLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTplW3QrK119Ontkb25lOiEwfX19dmFyIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGUsdCxvKXtlIT1BcnJheS5wcm90b3R5cGUmJmUhPU9iamVjdC5wcm90b3R5cGUmJihlW3RdPW8udmFsdWUpfSxpPWZ1bmN0aW9uKGUpe2U9W1wib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2Ygby5nJiZvLmcsZV07Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciByPWVbdF07aWYociYmci5NYXRoPT1NYXRoKXJldHVybiByfXRocm93IEVycm9yKFwiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdFwiKX0odGhpcyk7ZnVuY3Rpb24gYSgpe2E9ZnVuY3Rpb24oKXt9LGkuU3ltYm9sfHwoaS5TeW1ib2w9dSl9ZnVuY3Rpb24gZyhlLHQpe3RoaXMuYT1lLHModGhpcyxcImRlc2NyaXB0aW9uXCIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp0fSl9Zy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgbCx1PShsPTAsZnVuY3Rpb24gZSh0KXtpZih0aGlzIGluc3RhbmNlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpO3JldHVybiBuZXcgZyhcImpzY29tcF9zeW1ib2xfXCIrKHR8fFwiXCIpK1wiX1wiK2wrKyx0KX0pO2Z1bmN0aW9uIGMoKXthKCk7dmFyIGU9aS5TeW1ib2wuaXRlcmF0b3I7ZXx8KGU9aS5TeW1ib2wuaXRlcmF0b3I9aS5TeW1ib2woXCJTeW1ib2wuaXRlcmF0b3JcIikpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIEFycmF5LnByb3RvdHlwZVtlXSYmcyhBcnJheS5wcm90b3R5cGUsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBjKCksKGU9e25leHQ6ZX0pW2kuU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlfShuKHRoaXMpKX19KSxjPWZ1bmN0aW9uKCl7fX1mdW5jdGlvbiBwKGUpe3ZhciB0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmZVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiB0P3QuY2FsbChlKTp7bmV4dDpuKGUpfX12YXIgZixkPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZT1lLG5ldyB0fTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YpZj1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgaDtlOnt2YXIgeT17fTt0cnl7eS5fX3Byb3RvX189e1Y6ITB9LGg9eS5WO2JyZWFrIGV9Y2F0Y2goZWUpe31oPSExfWY9aD9mdW5jdGlvbihlLHQpe2lmKGUuX19wcm90b19fPXQsZS5fX3Byb3RvX18hPT10KXRocm93IG5ldyBUeXBlRXJyb3IoZStcIiBpcyBub3QgZXh0ZW5zaWJsZVwiKTtyZXR1cm4gZX06bnVsbH12YXIgXz1mO2Z1bmN0aW9uIGIoZSx0KXtpZihlLnByb3RvdHlwZT1kKHQucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLF8pXyhlLHQpO2Vsc2UgZm9yKHZhciBvIGluIHQpaWYoXCJwcm90b3R5cGVcIiE9bylpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pO3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8scil9ZWxzZSBlW29dPXRbb107ZS5PPXQucHJvdG90eXBlfWZ1bmN0aW9uIG0oZSx0KXtpZih0KXt2YXIgbz1pO2U9ZS5zcGxpdChcIi5cIik7Zm9yKHZhciByPTA7cjxlLmxlbmd0aC0xO3IrKyl7dmFyIG49ZVtyXTtuIGluIG98fChvW25dPXt9KSxvPW9bbl19KHQ9dChyPW9bZT1lW2UubGVuZ3RoLTFdXSkpIT1yJiZudWxsIT10JiZzKG8sZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19bShcIkFycmF5LnByb3RvdHlwZS5rZXlzXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe2MoKSxlIGluc3RhbmNlb2YgU3RyaW5nJiYoZSs9XCJcIik7dmFyIG89MCxyPXtuZXh0OmZ1bmN0aW9uKCl7aWYobzxlLmxlbmd0aCl7dmFyIG49bysrO3JldHVybnt2YWx1ZTp0KG4sZVtuXSksZG9uZTohMX19cmV0dXJuIHIubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19LHIubmV4dCgpfX07cmV0dXJuIHJbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiByfSxyfSh0aGlzLChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKX19KSksbShcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe2U6e3ZhciBvPXRoaXM7byBpbnN0YW5jZW9mIFN0cmluZyYmKG89U3RyaW5nKG8pKTtmb3IodmFyIHI9by5sZW5ndGgsbj0wO248cjtuKyspe3ZhciBzPW9bbl07aWYoZS5jYWxsKHQscyxuLG8pKXtlPXM7YnJlYWsgZX19ZT12b2lkIDB9cmV0dXJuIGV9fSkpLG0oXCJPYmplY3QuaXNcIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PTEvdDplIT1lJiZ0IT10fX0pKSxtKFwiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlfHxmdW5jdGlvbihlLHQpe3ZhciBvPXRoaXM7byBpbnN0YW5jZW9mIFN0cmluZyYmKG89U3RyaW5nKG8pKTt2YXIgcj1vLmxlbmd0aDtmb3IoMD4odD10fHwwKSYmKHQ9TWF0aC5tYXgodCtyLDApKTt0PHI7dCsrKXt2YXIgbj1vW3RdO2lmKG49PT1lfHxPYmplY3QuaXMobixlKSlyZXR1cm4hMH1yZXR1cm4hMX19KSksbShcIlByb21pc2VcIiwoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLmI9MCx0aGlzLmM9dm9pZCAwLHRoaXMuYT1bXTt2YXIgdD10aGlzLmYoKTt0cnl7ZSh0LnJlc29sdmUsdC5yZWplY3QpfWNhdGNoKGUpe3QucmVqZWN0KGUpfX1mdW5jdGlvbiBvKCl7dGhpcy5hPW51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQ/ZTpuZXcgdCgoZnVuY3Rpb24odCl7dChlKX0pKX1pZihlKXJldHVybiBlO28ucHJvdG90eXBlLmI9ZnVuY3Rpb24oZSl7aWYobnVsbD09dGhpcy5hKXt0aGlzLmE9W107dmFyIHQ9dGhpczt0aGlzLmMoKGZ1bmN0aW9uKCl7dC5nKCl9KSl9dGhpcy5hLnB1c2goZSl9O3ZhciBuPWkuc2V0VGltZW91dDtvLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGUpe24oZSwwKX0sby5wcm90b3R5cGUuZz1mdW5jdGlvbigpe2Zvcig7dGhpcy5hJiZ0aGlzLmEubGVuZ3RoOyl7dmFyIGU9dGhpcy5hO3RoaXMuYT1bXTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIG89ZVt0XTtlW3RdPW51bGw7dHJ5e28oKX1jYXRjaChlKXt0aGlzLmYoZSl9fX10aGlzLmE9bnVsbH0sby5wcm90b3R5cGUuZj1mdW5jdGlvbihlKXt0aGlzLmMoKGZ1bmN0aW9uKCl7dGhyb3cgZX0pKX0sdC5wcm90b3R5cGUuZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe298fChvPSEwLGUuY2FsbCh0LHIpKX19dmFyIHQ9dGhpcyxvPSExO3JldHVybntyZXNvbHZlOmUodGhpcy5zKSxyZWplY3Q6ZSh0aGlzLmcpfX0sdC5wcm90b3R5cGUucz1mdW5jdGlvbihlKXtpZihlPT09dGhpcyl0aGlzLmcobmV3IFR5cGVFcnJvcihcIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGZcIikpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHQpdGhpcy52KGUpO2Vsc2V7ZTpzd2l0Y2godHlwZW9mIGUpe2Nhc2VcIm9iamVjdFwiOnZhciBvPW51bGwhPWU7YnJlYWsgZTtjYXNlXCJmdW5jdGlvblwiOm89ITA7YnJlYWsgZTtkZWZhdWx0Om89ITF9bz90aGlzLm0oZSk6dGhpcy5oKGUpfX0sdC5wcm90b3R5cGUubT1mdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7dHJ5e3Q9ZS50aGVufWNhdGNoKGUpe3JldHVybiB2b2lkIHRoaXMuZyhlKX1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3RoaXMudyh0LGUpOnRoaXMuaChlKX0sdC5wcm90b3R5cGUuZz1mdW5jdGlvbihlKXt0aGlzLmkoMixlKX0sdC5wcm90b3R5cGUuaD1mdW5jdGlvbihlKXt0aGlzLmkoMSxlKX0sdC5wcm90b3R5cGUuaT1mdW5jdGlvbihlLHQpe2lmKDAhPXRoaXMuYil0aHJvdyBFcnJvcihcIkNhbm5vdCBzZXR0bGUoXCIrZStcIiwgXCIrdCtcIik6IFByb21pc2UgYWxyZWFkeSBzZXR0bGVkIGluIHN0YXRlXCIrdGhpcy5iKTt0aGlzLmI9ZSx0aGlzLmM9dCx0aGlzLmwoKX0sdC5wcm90b3R5cGUubD1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuYSl7Zm9yKHZhciBlPTA7ZTx0aGlzLmEubGVuZ3RoOysrZSlzLmIodGhpcy5hW2VdKTt0aGlzLmE9bnVsbH19O3ZhciBzPW5ldyBvO3JldHVybiB0LnByb3RvdHlwZS52PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZigpO2UuRih0LnJlc29sdmUsdC5yZWplY3QpfSx0LnByb3RvdHlwZS53PWZ1bmN0aW9uKGUsdCl7dmFyIG89dGhpcy5mKCk7dHJ5e2UuY2FsbCh0LG8ucmVzb2x2ZSxvLnJlamVjdCl9Y2F0Y2goZSl7by5yZWplY3QoZSl9fSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsbyl7ZnVuY3Rpb24gcihlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZnVuY3Rpb24odCl7dHJ5e24oZSh0KSl9Y2F0Y2goZSl7cyhlKX19OnR9dmFyIG4scyxpPW5ldyB0KChmdW5jdGlvbihlLHQpe249ZSxzPXR9KSk7cmV0dXJuIHRoaXMuRihyKGUsbikscihvLHMpKSxpfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxlKX0sdC5wcm90b3R5cGUuRj1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oKXtzd2l0Y2goci5iKXtjYXNlIDE6ZShyLmMpO2JyZWFrO2Nhc2UgMjp0KHIuYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcIlVuZXhwZWN0ZWQgc3RhdGU6IFwiK3IuYil9fXZhciByPXRoaXM7bnVsbD09dGhpcy5hP3MuYihvKTp0aGlzLmEucHVzaChvKX0sdC5yZXNvbHZlPXIsdC5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LG8pe28oZSl9KSl9LHQucmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbyl7Zm9yKHZhciBuPXAoZSkscz1uLm5leHQoKTshcy5kb25lO3M9bi5uZXh0KCkpcihzLnZhbHVlKS5GKHQsbyl9KSl9LHQuYWxsPWZ1bmN0aW9uKGUpe3ZhciBvPXAoZSksbj1vLm5leHQoKTtyZXR1cm4gbi5kb25lP3IoW10pOm5ldyB0KChmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKG8pe2lbdF09bywwPT0tLWEmJmUoaSl9fXZhciBpPVtdLGE9MDtkb3tpLnB1c2godm9pZCAwKSxhKysscihuLnZhbHVlKS5GKHMoaS5sZW5ndGgtMSksdCksbj1vLm5leHQoKX13aGlsZSghbi5kb25lKX0pKX0sdH0pKTt2YXIgUz1TfHx7fSxFPXRoaXN8fHNlbGY7ZnVuY3Rpb24gVChlLHQpe2U9ZS5zcGxpdChcIi5cIiksdD10fHxFO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKWlmKG51bGw9PSh0PXRbZVtvXV0pKXJldHVybiBudWxsO3JldHVybiB0fWZ1bmN0aW9uIEEoKXt9ZnVuY3Rpb24gdihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm5cIm9iamVjdFwiPT10JiZudWxsIT1lfHxcImZ1bmN0aW9uXCI9PXR9dmFyIEk9XCJjbG9zdXJlX3VpZF9cIisoMWU5Kk1hdGgucmFuZG9tKCk+Pj4wKSxSPTA7ZnVuY3Rpb24gTyhlLHQsbyl7cmV0dXJuIGUuY2FsbC5hcHBseShlLmJpbmQsYXJndW1lbnRzKX1mdW5jdGlvbiBqKGUsdCxvKXtpZighZSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KG8sciksZS5hcHBseSh0LG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHcoZSx0LG8pe3JldHVybih3PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiYtMSE9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmcoKS5pbmRleE9mKFwibmF0aXZlIGNvZGVcIik/TzpqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTihlLHQpe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5PPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyBvLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gQygpe3RoaXMuYT17fX1mdW5jdGlvbiBVKGUsdCxvLHIpe3RoaXMuZj1lLHRoaXMuYz10LHRoaXMuYj1vLHRoaXMuYT1yfWZ1bmN0aW9uIE0oZSx0LG8scil7bz12b2lkIDA9PT1vP3t9Om8sdGhpcy5jPWUsdGhpcy5hPW8sdGhpcy5iPXQsdGhpcy5mPXZvaWQgMD09PXI/bnVsbDpyfWZ1bmN0aW9uIEwoZSx0LG8pe289dm9pZCAwPT09bz97fTpvO3ZhciByPXZvaWQgMD09PXI/bmV3IEM6cjtyZXR1cm4gbmV3IFUodCxlLG8scil9ZnVuY3Rpb24gRChlLHQsbyl7bz12b2lkIDA9PT1vP3t9Om8sdD1FcnJvci5jYWxsKHRoaXMsdCksdGhpcy5tZXNzYWdlPXQubWVzc2FnZSxcInN0YWNrXCJpbiB0JiYodGhpcy5zdGFjaz10LnN0YWNrKSx0aGlzLmNvZGU9ZSx0aGlzLm1ldGFkYXRhPW99ZnVuY3Rpb24gQihlKXt0aGlzLmE9ZX1mdW5jdGlvbiBQKGUpe2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsUCk7ZWxzZXt2YXIgdD1FcnJvcigpLnN0YWNrO3QmJih0aGlzLnN0YWNrPXQpfWUmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGUpKX1mdW5jdGlvbiBGKGUsdCl7Zm9yKHZhciBvPVwiXCIscj0oZT1lLnNwbGl0KFwiJXNcIikpLmxlbmd0aC0xLG49MDtuPHI7bisrKW8rPWVbbl0rKG48dC5sZW5ndGg/dFtuXTpcIiVzXCIpO1AuY2FsbCh0aGlzLG8rZVtyXSl9ZnVuY3Rpb24geCgpe3RoaXMubD1udWxsLHRoaXMuaT1bXSx0aGlzLm09MCx0aGlzLmI9Vyx0aGlzLmY9dGhpcy5hPXRoaXMuaD0wLHRoaXMuYz1udWxsLHRoaXMuZz0wfUMucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hW2VdfSxDLnByb3RvdHlwZS5HPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYSl9LFUucHJvdG90eXBlLmdldFJlcXVlc3RNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZn0sVS5wcm90b3R5cGUuZ2V0TWV0aG9kRGVzY3JpcHRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN9LFUucHJvdG90eXBlLmdldE1ldGFkYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn0sVS5wcm90b3R5cGUuZ2V0Q2FsbE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfSxNLnByb3RvdHlwZS5nZXRSZXNwb25zZU1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jfSxNLnByb3RvdHlwZS5nZXRNZXRhZGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9LE0ucHJvdG90eXBlLmdldE1ldGhvZERlc2NyaXB0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ifSxNLnByb3RvdHlwZS5nZXRTdGF0dXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mfSxiKEQsRXJyb3IpLEQucHJvdG90eXBlLm5hbWU9XCJScGNFcnJvclwiLEIucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJkYXRhXCI9PWV8fFwiZXJyb3JcIj09ZT90aGlzOnRoaXMuYS5vbihlLHQpfSxCLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmEucmVtb3ZlTGlzdGVuZXIoZSx0KX0sQi5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5hLmNhbmNlbCgpfSxOKFAsRXJyb3IpLFAucHJvdG90eXBlLm5hbWU9XCJDdXN0b21FcnJvclwiLE4oRixQKSxGLnByb3RvdHlwZS5uYW1lPVwiQXNzZXJ0aW9uRXJyb3JcIjt2YXIgVz0wLEg9MTI4O2Z1bmN0aW9uIFYoZSx0LG8scil7dGhyb3cgZS5iPTMsZS5sPVwiVGhlIHN0cmVhbSBpcyBicm9rZW4gQFwiK2UubStcIi9cIitvK1wiLiBFcnJvcjogXCIrcitcIi4gV2l0aCBpbnB1dDpcXG5cIit0LEVycm9yKGUubCl9dmFyIEcsaz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9mdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCx2b2lkIDApfTpmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVyblwic3RyaW5nXCIhPXR5cGVvZiB0fHwxIT10Lmxlbmd0aD8tMTplLmluZGV4T2YodCwwKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZihvIGluIGUmJmVbb109PT10KXJldHVybiBvO3JldHVybi0xfSxZPVN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoZSlbMV19O2Z1bmN0aW9uIHooZSx0KXtyZXR1cm4tMSE9ZS5pbmRleE9mKHQpfWZ1bmN0aW9uIEsoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9ZTp7dmFyIFg9RS5uYXZpZ2F0b3I7aWYoWCl7dmFyIHE9WC51c2VyQWdlbnQ7aWYocSl7Rz1xO2JyZWFrIGV9fUc9XCJcIn12YXIgJD1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiBaKGUpe3ZhciB0PTE7ZT1lLnNwbGl0KFwiOlwiKTtmb3IodmFyIG89W107MDx0JiZlLmxlbmd0aDspby5wdXNoKGUuc2hpZnQoKSksdC0tO3JldHVybiBlLmxlbmd0aCYmby5wdXNoKGUuam9pbihcIjpcIikpLG99ZnVuY3Rpb24gSihlKXtyZXR1cm4gSltcIiBcIl0oZSksZX1KW1wiIFwiXT1BO3ZhciBRLGVlLHRlPXooRyxcIk9wZXJhXCIpLG9lPXooRyxcIlRyaWRlbnRcIil8fHooRyxcIk1TSUVcIikscmU9eihHLFwiRWRnZVwiKSxuZT16KEcsXCJHZWNrb1wiKSYmISh6KEcudG9Mb3dlckNhc2UoKSxcIndlYmtpdFwiKSYmIXooRyxcIkVkZ2VcIikpJiYhKHooRyxcIlRyaWRlbnRcIil8fHooRyxcIk1TSUVcIikpJiYheihHLFwiRWRnZVwiKSxzZT16KEcudG9Mb3dlckNhc2UoKSxcIndlYmtpdFwiKSYmIXooRyxcIkVkZ2VcIik7ZTp7dmFyIGllPVwiXCIsYWU9KGVlPUcsbmU/L3J2OihbXlxcKTtdKykoXFwpfDspLy5leGVjKGVlKTpyZT8vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGVlKTpvZT8vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoZWUpOnNlPy9XZWJLaXRcXC8oXFxTKykvLmV4ZWMoZWUpOnRlPy8oPzpWZXJzaW9uKVsgXFwvXT8oXFxTKykvLmV4ZWMoZWUpOnZvaWQgMCk7aWYoYWUmJihpZT1hZT9hZVsxXTpcIlwiKSxvZSl7dmFyIGdlLGxlPUUuZG9jdW1lbnQ7aWYobnVsbCE9KGdlPWxlP2xlLmRvY3VtZW50TW9kZTp2b2lkIDApJiZnZT5wYXJzZUZsb2F0KGllKSl7UT1TdHJpbmcoZ2UpO2JyZWFrIGV9fVE9aWV9dmFyIHVlPXt9O2Z1bmN0aW9uIGNlKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXVlO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCw5KT90WzldOnRbOV09ZnVuY3Rpb24oKXtmb3IodmFyIGU9MCx0PVkoU3RyaW5nKFEpKS5zcGxpdChcIi5cIiksbz1ZKFwiOVwiKS5zcGxpdChcIi5cIikscj1NYXRoLm1heCh0Lmxlbmd0aCxvLmxlbmd0aCksbj0wOzA9PWUmJm48cjtuKyspe3ZhciBzPXRbbl18fFwiXCIsaT1vW25dfHxcIlwiO2Rve2lmKHM9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMocyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXSxpPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGkpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl0sMD09c1swXS5sZW5ndGgmJjA9PWlbMF0ubGVuZ3RoKWJyZWFrO2U9SygwPT1zWzFdLmxlbmd0aD8wOnBhcnNlSW50KHNbMV0sMTApLDA9PWlbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoaVsxXSwxMCkpfHxLKDA9PXNbMl0ubGVuZ3RoLDA9PWlbMl0ubGVuZ3RoKXx8SyhzWzJdLGlbMl0pLHM9c1szXSxpPWlbM119d2hpbGUoMD09ZSl9cmV0dXJuIDA8PWV9KCl9KCl9ZnVuY3Rpb24gcGUoKXswIT1mZSYmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLEkpJiZ0aGlzW0ldfHwodGhpc1tJXT0rK1IpKSx0aGlzLks9dGhpcy5LfXZhciBmZT0wO3BlLnByb3RvdHlwZS5LPSExO3ZhciBkZT1PYmplY3QuZnJlZXplfHxmdW5jdGlvbihlKXtyZXR1cm4gZX07ZnVuY3Rpb24gaGUoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLmE9dGhpcy50YXJnZXQ9dCx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITF9aGUucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9O3ZhciB5ZT1mdW5jdGlvbigpe2lmKCFFLmFkZEV2ZW50TGlzdGVuZXJ8fCFPYmplY3QuZGVmaW5lUHJvcGVydHkpcmV0dXJuITE7dmFyIGU9ITEsdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe2U9ITB9fSk7dHJ5e0UuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixBLHQpLEUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixBLHQpfWNhdGNoKGUpe31yZXR1cm4gZX0oKTtmdW5jdGlvbiBfZShlLHQpe2lmKGhlLmNhbGwodGhpcyxlP2UudHlwZTpcIlwiKSx0aGlzLnJlbGF0ZWRUYXJnZXQ9dGhpcy5hPXRoaXMudGFyZ2V0PW51bGwsdGhpcy5idXR0b249dGhpcy5zY3JlZW5ZPXRoaXMuc2NyZWVuWD10aGlzLmNsaWVudFk9dGhpcy5jbGllbnRYPTAsdGhpcy5rZXk9XCJcIix0aGlzLm1ldGFLZXk9dGhpcy5zaGlmdEtleT10aGlzLmFsdEtleT10aGlzLmN0cmxLZXk9ITEsdGhpcy5wb2ludGVySWQ9MCx0aGlzLnBvaW50ZXJUeXBlPVwiXCIsdGhpcy5jPW51bGwsZSl7dmFyIG89dGhpcy50eXBlPWUudHlwZSxyPWUuY2hhbmdlZFRvdWNoZXMmJmUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoP2UuY2hhbmdlZFRvdWNoZXNbMF06bnVsbDtpZih0aGlzLnRhcmdldD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50LHRoaXMuYT10LHQ9ZS5yZWxhdGVkVGFyZ2V0KXtpZihuZSl7ZTp7dHJ5e0oodC5ub2RlTmFtZSk7dmFyIG49ITA7YnJlYWsgZX1jYXRjaChlKXt9bj0hMX1ufHwodD1udWxsKX19ZWxzZVwibW91c2VvdmVyXCI9PW8/dD1lLmZyb21FbGVtZW50OlwibW91c2VvdXRcIj09byYmKHQ9ZS50b0VsZW1lbnQpO3RoaXMucmVsYXRlZFRhcmdldD10LHI/KHRoaXMuY2xpZW50WD12b2lkIDAhPT1yLmNsaWVudFg/ci5jbGllbnRYOnIucGFnZVgsdGhpcy5jbGllbnRZPXZvaWQgMCE9PXIuY2xpZW50WT9yLmNsaWVudFk6ci5wYWdlWSx0aGlzLnNjcmVlblg9ci5zY3JlZW5YfHwwLHRoaXMuc2NyZWVuWT1yLnNjcmVlbll8fDApOih0aGlzLmNsaWVudFg9dm9pZCAwIT09ZS5jbGllbnRYP2UuY2xpZW50WDplLnBhZ2VYLHRoaXMuY2xpZW50WT12b2lkIDAhPT1lLmNsaWVudFk/ZS5jbGllbnRZOmUucGFnZVksdGhpcy5zY3JlZW5YPWUuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9ZS5zY3JlZW5ZfHwwKSx0aGlzLmJ1dHRvbj1lLmJ1dHRvbix0aGlzLmtleT1lLmtleXx8XCJcIix0aGlzLmN0cmxLZXk9ZS5jdHJsS2V5LHRoaXMuYWx0S2V5PWUuYWx0S2V5LHRoaXMuc2hpZnRLZXk9ZS5zaGlmdEtleSx0aGlzLm1ldGFLZXk9ZS5tZXRhS2V5LHRoaXMucG9pbnRlcklkPWUucG9pbnRlcklkfHwwLHRoaXMucG9pbnRlclR5cGU9XCJzdHJpbmdcIj09dHlwZW9mIGUucG9pbnRlclR5cGU/ZS5wb2ludGVyVHlwZTpiZVtlLnBvaW50ZXJUeXBlXXx8XCJcIix0aGlzLmM9ZSxlLmRlZmF1bHRQcmV2ZW50ZWQmJl9lLk8uYi5jYWxsKHRoaXMpfX1OKF9lLGhlKTt2YXIgYmU9ZGUoezI6XCJ0b3VjaFwiLDM6XCJwZW5cIiw0OlwibW91c2VcIn0pO19lLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7X2UuTy5iLmNhbGwodGhpcyk7dmFyIGU9dGhpcy5jO2UucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOmUucmV0dXJuVmFsdWU9ITF9O3ZhciBtZT1cImNsb3N1cmVfbGlzdGVuYWJsZV9cIisoMWU2Kk1hdGgucmFuZG9tKCl8MCksU2U9MDtmdW5jdGlvbiBFZShlLHQsbyxyLG4pe3RoaXMubGlzdGVuZXI9ZSx0aGlzLnByb3h5PW51bGwsdGhpcy5zcmM9dCx0aGlzLnR5cGU9byx0aGlzLmNhcHR1cmU9ISFyLHRoaXMuSD1uLHRoaXMua2V5PSsrU2UsdGhpcy5BPXRoaXMuRD0hMX1mdW5jdGlvbiBUZShlKXtlLkE9ITAsZS5saXN0ZW5lcj1udWxsLGUucHJveHk9bnVsbCxlLnNyYz1udWxsLGUuSD1udWxsfWZ1bmN0aW9uIEFlKGUpe3RoaXMuc3JjPWUsdGhpcy5hPXt9LHRoaXMuYj0wfWZ1bmN0aW9uIHZlKGUsdCl7dmFyIG89dC50eXBlO2lmKG8gaW4gZS5hKXt2YXIgcixuPWUuYVtvXSxzPWsobix0KTsocj0wPD1zKSYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG4scywxKSxyJiYoVGUodCksMD09ZS5hW29dLmxlbmd0aCYmKGRlbGV0ZSBlLmFbb10sZS5iLS0pKX19ZnVuY3Rpb24gSWUoZSx0LG8scil7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBzPWVbbl07aWYoIXMuQSYmcy5saXN0ZW5lcj09dCYmcy5jYXB0dXJlPT0hIW8mJnMuSD09cilyZXR1cm4gbn1yZXR1cm4tMX1BZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9ZS50b1N0cmluZygpOyhlPXRoaXMuYVtzXSl8fChlPXRoaXMuYVtzXT1bXSx0aGlzLmIrKyk7dmFyIGk9SWUoZSx0LHIsbik7cmV0dXJuLTE8aT8odD1lW2ldLG98fCh0LkQ9ITEpKTooKHQ9bmV3IEVlKHQsdGhpcy5zcmMscywhIXIsbikpLkQ9byxlLnB1c2godCkpLHR9LEFlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSx0LG8scil7aWYoISgoZT1lLnRvU3RyaW5nKCkpaW4gdGhpcy5hKSlyZXR1cm4hMTt2YXIgbj10aGlzLmFbZV07cmV0dXJuLTE8KHQ9SWUobix0LG8scikpJiYoVGUoblt0XSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG4sdCwxKSwwPT1uLmxlbmd0aCYmKGRlbGV0ZSB0aGlzLmFbZV0sdGhpcy5iLS0pLCEwKX07dmFyIFJlPVwiY2xvc3VyZV9sbV9cIisoMWU2Kk1hdGgucmFuZG9tKCl8MCksT2U9e307ZnVuY3Rpb24gamUoZSx0LG8scixuKXtpZihyJiZyLm9uY2UpTmUoZSx0LG8scixuKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspamUoZSx0W3NdLG8scixuKTtlbHNlIG89UGUobyksZSYmZVttZV0/ZS5mLmFkZChTdHJpbmcodCksbywhMSx2KHIpPyEhci5jYXB0dXJlOiEhcixuKTp3ZShlLHQsbywhMSxyLG4pfWZ1bmN0aW9uIHdlKGUsdCxvLHIsbixzKXtpZighdCl0aHJvdyBFcnJvcihcIkludmFsaWQgZXZlbnQgdHlwZVwiKTt2YXIgaT12KG4pPyEhbi5jYXB0dXJlOiEhbixhPURlKGUpO2lmKGF8fChlW1JlXT1hPW5ldyBBZShlKSksIShvPWEuYWRkKHQsbyxyLGkscykpLnByb3h5KWlmKHI9ZnVuY3Rpb24oKXt2YXIgZT1MZTtyZXR1cm4gZnVuY3Rpb24gdChvKXtyZXR1cm4gZS5jYWxsKHQuc3JjLHQubGlzdGVuZXIsbyl9fSgpLG8ucHJveHk9cixyLnNyYz1lLHIubGlzdGVuZXI9byxlLmFkZEV2ZW50TGlzdGVuZXIpeWV8fChuPWkpLHZvaWQgMD09PW4mJihuPSExKSxlLmFkZEV2ZW50TGlzdGVuZXIodC50b1N0cmluZygpLHIsbik7ZWxzZSBpZihlLmF0dGFjaEV2ZW50KWUuYXR0YWNoRXZlbnQoTWUodC50b1N0cmluZygpKSxyKTtlbHNle2lmKCFlLmFkZExpc3RlbmVyfHwhZS5yZW1vdmVMaXN0ZW5lcil0aHJvdyBFcnJvcihcImFkZEV2ZW50TGlzdGVuZXIgYW5kIGF0dGFjaEV2ZW50IGFyZSB1bmF2YWlsYWJsZS5cIik7ZS5hZGRMaXN0ZW5lcihyKX19ZnVuY3Rpb24gTmUoZSx0LG8scixuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKU5lKGUsdFtzXSxvLHIsbik7ZWxzZSBvPVBlKG8pLGUmJmVbbWVdP2UuZi5hZGQoU3RyaW5nKHQpLG8sITAsdihyKT8hIXIuY2FwdHVyZTohIXIsbik6d2UoZSx0LG8sITAscixuKX1mdW5jdGlvbiBDZShlLHQsbyxyLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTA7czx0Lmxlbmd0aDtzKyspQ2UoZSx0W3NdLG8scixuKTtlbHNlIHI9dihyKT8hIXIuY2FwdHVyZTohIXIsbz1QZShvKSxlJiZlW21lXT9lLmYucmVtb3ZlKFN0cmluZyh0KSxvLHIsbik6ZSYmKGU9RGUoZSkpJiYodD1lLmFbdC50b1N0cmluZygpXSxlPS0xLHQmJihlPUllKHQsbyxyLG4pKSwobz0tMTxlP3RbZV06bnVsbCkmJlVlKG8pKX1mdW5jdGlvbiBVZShlKXtpZihcIm51bWJlclwiIT10eXBlb2YgZSYmZSYmIWUuQSl7dmFyIHQ9ZS5zcmM7aWYodCYmdFttZV0pdmUodC5mLGUpO2Vsc2V7dmFyIG89ZS50eXBlLHI9ZS5wcm94eTt0LnJlbW92ZUV2ZW50TGlzdGVuZXI/dC5yZW1vdmVFdmVudExpc3RlbmVyKG8scixlLmNhcHR1cmUpOnQuZGV0YWNoRXZlbnQ/dC5kZXRhY2hFdmVudChNZShvKSxyKTp0LmFkZExpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyKHIpLChvPURlKHQpKT8odmUobyxlKSwwPT1vLmImJihvLnNyYz1udWxsLHRbUmVdPW51bGwpKTpUZShlKX19fWZ1bmN0aW9uIE1lKGUpe3JldHVybiBlIGluIE9lP09lW2VdOk9lW2VdPVwib25cIitlfWZ1bmN0aW9uIExlKGUsdCl7aWYoZS5BKWU9ITA7ZWxzZXt0PW5ldyBfZSh0LHRoaXMpO3ZhciBvPWUubGlzdGVuZXIscj1lLkh8fGUuc3JjO2UuRCYmVWUoZSksZT1vLmNhbGwocix0KX1yZXR1cm4gZX1mdW5jdGlvbiBEZShlKXtyZXR1cm4oZT1lW1JlXSlpbnN0YW5jZW9mIEFlP2U6bnVsbH12YXIgQmU9XCJfX2Nsb3N1cmVfZXZlbnRzX2ZuX1wiKygxZTkqTWF0aC5yYW5kb20oKT4+PjApO2Z1bmN0aW9uIFBlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTooZVtCZV18fChlW0JlXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5oYW5kbGVFdmVudCh0KX0pLGVbQmVdKX1mdW5jdGlvbiBGZSgpe3BlLmNhbGwodGhpcyksdGhpcy5mPW5ldyBBZSh0aGlzKSx0aGlzLlU9dGhpc31mdW5jdGlvbiB4ZShlLHQpe2U9ZS5VO3ZhciBvPXQudHlwZXx8dDtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl0PW5ldyBoZSh0LGUpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIGhlKXQudGFyZ2V0PXQudGFyZ2V0fHxlO2Vsc2V7dmFyIHI9dDshZnVuY3Rpb24oZSx0KXtmb3IodmFyIG8scixuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7Zm9yKG8gaW4gcj1hcmd1bWVudHNbbl0pZVtvXT1yW29dO2Zvcih2YXIgcz0wO3M8JC5sZW5ndGg7cysrKW89JFtzXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixvKSYmKGVbb109cltvXSl9fSh0PW5ldyBoZShvLGUpLHIpfVdlKGU9dC5hPWUsbywhMCx0KSxXZShlLG8sITEsdCl9ZnVuY3Rpb24gV2UoZSx0LG8scil7aWYodD1lLmYuYVtTdHJpbmcodCldKXt0PXQuY29uY2F0KCk7Zm9yKHZhciBuPSEwLHM9MDtzPHQubGVuZ3RoOysrcyl7dmFyIGk9dFtzXTtpZihpJiYhaS5BJiZpLmNhcHR1cmU9PW8pe3ZhciBhPWkubGlzdGVuZXIsZz1pLkh8fGkuc3JjO2kuRCYmdmUoZS5mLGkpLG49ITEhPT1hLmNhbGwoZyxyKSYmbn19fX1mdW5jdGlvbiBIZShlLHQsbyl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlvJiYoZT13KGUsbykpO2Vsc2V7aWYoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUuaGFuZGxlRXZlbnQpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGxpc3RlbmVyIGFyZ3VtZW50XCIpO2U9dyhlLmhhbmRsZUV2ZW50LGUpfXJldHVybiAyMTQ3NDgzNjQ3PE51bWJlcih0KT8tMTpFLnNldFRpbWVvdXQoZSx0fHwwKX1mdW5jdGlvbiBWZShlLHQpe3RoaXMubmFtZT1lLHRoaXMudmFsdWU9dH1OKEZlLHBlKSxGZS5wcm90b3R5cGVbbWVdPSEwLEZlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxvLHIpe2plKHRoaXMsZSx0LG8scil9LEZlLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxvLHIpe0NlKHRoaXMsZSx0LG8scil9LFZlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWV9O3ZhciBHZSxrZSxZZSx6ZT1uZXcgVmUoXCJPRkZcIiwxLzApLEtlPW5ldyBWZShcIlNFVkVSRVwiLDFlMyksWGU9bmV3IFZlKFwiQ09ORklHXCIsNzAwKSxxZT1uZXcgVmUoXCJGSU5FXCIsNTAwKTtmdW5jdGlvbiAkZSgpe3RoaXMuY2xlYXIoKX1mdW5jdGlvbiBaZShlLHQsbyl7dGhpcy5yZXNldChlfHx6ZSx0LG8sdm9pZCAwLHZvaWQgMCl9ZnVuY3Rpb24gSmUoZSx0KXt0aGlzLmE9bnVsbCx0aGlzLmY9W10sdGhpcy5iPSh2b2lkIDA9PT10P251bGw6dCl8fG51bGwsdGhpcy5jPVtdLHRoaXMuZz17YTpmdW5jdGlvbigpe3JldHVybiBlfX19ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUuYT9lLmE6ZS5iP1FlKGUuYik6KGZ1bmN0aW9uKGUsdCl7dGhyb3cgbmV3IEYoXCJGYWlsdXJlXCIrKGU/XCI6IFwiK2U6XCJcIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0oXCJSb290IGxvZ2dlciBoYXMgbm8gbGV2ZWwgc2V0LlwiKSx6ZSl9ZnVuY3Rpb24gZXQoKXt0aGlzLmVudHJpZXM9e307dmFyIGU9bmV3IEplKFwiXCIpO2UuYT1YZSx0aGlzLmVudHJpZXNbXCJcIl09ZX1mdW5jdGlvbiB0dChlLHQsbyl7dmFyIHI9ZS5lbnRyaWVzW3RdO2lmKHIpcmV0dXJuIHZvaWQgMCE9PW8mJihyLmE9bykscjtyPXR0KGUsdC5zdWJzdHIoMCx0Lmxhc3RJbmRleE9mKFwiLlwiKSkpO3ZhciBuPW5ldyBKZSh0LHIpO3JldHVybiBlLmVudHJpZXNbdF09bixyLmMucHVzaChuKSx2b2lkIDAhPT1vJiYobi5hPW8pLG59ZnVuY3Rpb24gb3QoKXtyZXR1cm4ga2V8fChrZT1uZXcgZXQpLGtlfWZ1bmN0aW9uIHJ0KGUsdCxvKXt2YXIgcjsocj1lKSYmKHI9ZSYmdCkmJihyPShyPXQudmFsdWUpPj0oZT9RZSh0dChvdCgpLGUuYSgpKSk6emUpLnZhbHVlKSxyJiYodD10fHx6ZSxyPXR0KG90KCksZS5hKCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIG8mJihvPW8oKSksR2V8fChHZT1uZXcgJGUpLGZ1bmN0aW9uKGUsdCl7Zm9yKDtlOyllLmYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZSh0KX0pKSxlPWUuYn0ocixlPW5ldyBaZSh0LG8sZS5hKCkpKSl9ZnVuY3Rpb24gbnQoZSx0KXtlJiZydChlLHFlLHQpfWZ1bmN0aW9uIHN0KCl7fWZ1bmN0aW9uIGl0KGUpe3ZhciB0O3JldHVybih0PWUuYSl8fCh0PXt9LGx0KGUpJiYodFswXT0hMCx0WzFdPSEwKSx0PWUuYT10KSx0fWZ1bmN0aW9uIGF0KCl7fWZ1bmN0aW9uIGd0KGUpe3JldHVybihlPWx0KGUpKT9uZXcgQWN0aXZlWE9iamVjdChlKTpuZXcgWE1MSHR0cFJlcXVlc3R9ZnVuY3Rpb24gbHQoZSl7aWYoIWUuYiYmXCJ1bmRlZmluZWRcIj09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0JiZcInVuZGVmaW5lZFwiIT10eXBlb2YgQWN0aXZlWE9iamVjdCl7Zm9yKHZhciB0PVtcIk1TWE1MMi5YTUxIVFRQLjYuMFwiLFwiTVNYTUwyLlhNTEhUVFAuMy4wXCIsXCJNU1hNTDIuWE1MSFRUUFwiLFwiTWljcm9zb2Z0LlhNTEhUVFBcIl0sbz0wO288dC5sZW5ndGg7bysrKXt2YXIgcj10W29dO3RyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QociksZS5iPXJ9Y2F0Y2goZSl7fX10aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBjcmVhdGUgQWN0aXZlWE9iamVjdC4gQWN0aXZlWCBtaWdodCBiZSBkaXNhYmxlZCwgb3IgTVNYTUwgbWlnaHQgbm90IGJlIGluc3RhbGxlZFwiKX1yZXR1cm4gZS5ifWZ1bmN0aW9uIHV0KGUsdCl7dGhpcy5iPWVbRS5TeW1ib2wuaXRlcmF0b3JdKCksdGhpcy5jPXQsdGhpcy5mPTB9JGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7fSxaZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt9LHN0LnByb3RvdHlwZS5hPW51bGwsTihhdCxzdCksWWU9bmV3IGF0LGEoKSxjKCksdXQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdXQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmIubmV4dCgpO3JldHVybnt2YWx1ZTplLmRvbmU/dm9pZCAwOnRoaXMuYy5jYWxsKHZvaWQgMCxlLnZhbHVlLHRoaXMuZisrKSxkb25lOmUuZG9uZX19LGEoKSxjKCksYSgpLGMoKTt2YXIgY3Q9XCJTdG9wSXRlcmF0aW9uXCJpbiBFP0UuU3RvcEl0ZXJhdGlvbjp7bWVzc2FnZTpcIlN0b3BJdGVyYXRpb25cIixzdGFjazpcIlwifTtmdW5jdGlvbiBwdCgpe31mdW5jdGlvbiBmdChlKXtpZihlIGluc3RhbmNlb2YgaHR8fGUgaW5zdGFuY2VvZiB5dHx8ZSBpbnN0YW5jZW9mIF90KXJldHVybiBlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUubmV4dClyZXR1cm4gbmV3IGh0KChmdW5jdGlvbigpe3JldHVybiBkdChlKX0pKTtpZihhKCksYygpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXSlyZXR1cm4gYSgpLGMoKSxuZXcgaHQoKGZ1bmN0aW9uKCl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpfSkpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUudSlyZXR1cm4gbmV3IGh0KChmdW5jdGlvbigpe3JldHVybiBkdChlLnUoKSl9KSk7dGhyb3cgRXJyb3IoXCJOb3QgYW4gaXRlcmF0b3Igb3IgaXRlcmFibGUuXCIpfWZ1bmN0aW9uIGR0KGUpe2lmKCEoZSBpbnN0YW5jZW9mIHB0KSlyZXR1cm4gZTt2YXIgdD0hMTtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2Zvcih2YXIgbzshdDspdHJ5e289ZS5hKCk7YnJlYWt9Y2F0Y2goZSl7aWYoZSE9PWN0KXRocm93IGU7dD0hMH1yZXR1cm57dmFsdWU6byxkb25lOnR9fX19ZnVuY3Rpb24gaHQoZSl7dGhpcy5iPWV9ZnVuY3Rpb24geXQoZSl7dGhpcy5iPWV9ZnVuY3Rpb24gX3QoZSl7aHQuY2FsbCh0aGlzLChmdW5jdGlvbigpe3JldHVybiBlfSkpLHRoaXMuZj1lfWZ1bmN0aW9uIGJ0KGUsdCl7dGhpcy5vPXt9LHRoaXMuaj1bXSx0aGlzLkI9dGhpcy5zaXplPTA7dmFyIG89YXJndW1lbnRzLmxlbmd0aDtpZigxPG8pe2lmKG8lMil0aHJvdyBFcnJvcihcIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO2Zvcih2YXIgcj0wO3I8bztyKz0yKXRoaXMuc2V0KGFyZ3VtZW50c1tyXSxhcmd1bWVudHNbcisxXSl9ZWxzZSBlJiZ0aGlzLmFkZEFsbChlKX1mdW5jdGlvbiBtdChlKXtpZihlLnNpemUhPWUuai5sZW5ndGgpe2Zvcih2YXIgdD0wLG89MDt0PGUuai5sZW5ndGg7KXt2YXIgcj1lLmpbdF07U3QoZS5vLHIpJiYoZS5qW28rK109ciksdCsrfWUuai5sZW5ndGg9b31pZihlLnNpemUhPWUuai5sZW5ndGgpe3ZhciBuPXt9O2ZvcihvPXQ9MDt0PGUuai5sZW5ndGg7KVN0KG4scj1lLmpbdF0pfHwoZS5qW28rK109cixuW3JdPTEpLHQrKztlLmoubGVuZ3RoPW99fWZ1bmN0aW9uIFN0KGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfXB0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHB0LnByb3RvdHlwZS5hLmNhbGwodGhpcyl9LHB0LnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dGhyb3cgY3R9LHB0LnByb3RvdHlwZS51PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGEoKSxjKCksaHQucHJvdG90eXBlLnU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHl0KHRoaXMuYigpKX0saHQucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYigpKX0saHQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYigpKX0sYSgpLGMoKSxiKHl0LHB0KSx5dC5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuYi5uZXh0KCk7aWYoZS5kb25lKXRocm93IGN0O3JldHVybiBlLnZhbHVlfSx5dC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3JldHVybiB5dC5wcm90b3R5cGUuYS5jYWxsKHRoaXMpfSx5dC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiBuZXcgX3QodGhpcy5iKX0seXQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IF90KHRoaXMuYil9LGIoX3QsaHQpLF90LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZi5uZXh0KCl9LChyPWJ0LnByb3RvdHlwZSkuRz1mdW5jdGlvbigpe3JldHVybiBtdCh0aGlzKSx0aGlzLmouY29uY2F0KCl9LHIuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiBTdCh0aGlzLm8sZSl9LHIuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm89e30sdGhpcy5CPXRoaXMuc2l6ZT10aGlzLmoubGVuZ3RoPTB9LHIucmVtb3ZlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRlbGV0ZShlKX0sci5kZWxldGU9ZnVuY3Rpb24oZSl7cmV0dXJuISFTdCh0aGlzLm8sZSkmJihkZWxldGUgdGhpcy5vW2VdLC0tdGhpcy5zaXplLHRoaXMuQisrLHRoaXMuai5sZW5ndGg+Mip0aGlzLnNpemUmJm10KHRoaXMpLCEwKX0sci5nZXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gU3QodGhpcy5vLGUpP3RoaXMub1tlXTp0fSxyLnNldD1mdW5jdGlvbihlLHQpe1N0KHRoaXMubyxlKXx8KHRoaXMuc2l6ZSs9MSx0aGlzLmoucHVzaChlKSx0aGlzLkIrKyksdGhpcy5vW2VdPXR9LHIuYWRkQWxsPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBidClmb3IodmFyIHQ9ZS5HKCksbz0wO288dC5sZW5ndGg7bysrKXRoaXMuc2V0KHRbb10sZS5nZXQodFtvXSkpO2Vsc2UgZm9yKHQgaW4gZSl0aGlzLnNldCh0LGVbdF0pfSxyLmZvckVhY2g9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG89dGhpcy5HKCkscj0wO3I8by5sZW5ndGg7cisrKXt2YXIgbj1vW3JdLHM9dGhpcy5nZXQobik7ZS5jYWxsKHQscyxuLHRoaXMpfX0sci5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYnQodGhpcyl9LHIua2V5cz1mdW5jdGlvbigpe3JldHVybiBmdCh0aGlzLnUoITApKS5jKCl9LHIudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGZ0KHRoaXMudSghMSkpLmMoKX0sci5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHV0KGUsdCl9KHRoaXMua2V5cygpLChmdW5jdGlvbih0KXtyZXR1cm5bdCxlLmdldCh0KV19KSl9LHIudT1mdW5jdGlvbihlKXttdCh0aGlzKTt2YXIgdD0wLG89dGhpcy5CLHI9dGhpcyxuPW5ldyBwdDtyZXR1cm4gbi5hPWZ1bmN0aW9uKCl7aWYobyE9ci5CKXRocm93IEVycm9yKFwiVGhlIG1hcCBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgaXRlcmF0b3Igd2FzIGNyZWF0ZWRcIik7aWYodD49ci5qLmxlbmd0aCl0aHJvdyBjdDt2YXIgbj1yLmpbdCsrXTtyZXR1cm4gZT9uOnIub1tuXX0sbi5uZXh0PW4uYS5iaW5kKG4pLG59O3ZhciBFdD0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87ZnVuY3Rpb24gVHQoZSl7RmUuY2FsbCh0aGlzKSx0aGlzLmhlYWRlcnM9bmV3IGJ0LHRoaXMuQz1lfHxudWxsLHRoaXMuYz0hMSx0aGlzLko9dGhpcy5hPW51bGwsdGhpcy5QPXRoaXMudj1cIlwiLHRoaXMuZz0wLHRoaXMubD1cIlwiLHRoaXMuaT10aGlzLk49dGhpcy5zPXRoaXMuTD0hMSx0aGlzLmg9MCx0aGlzLnc9bnVsbCx0aGlzLm09QXQsdGhpcy5JPXRoaXMuTT0hMX1OKFR0LEZlKTt2YXIgQXQ9XCJcIjtUdC5wcm90b3R5cGUuYj10dChvdCgpLFwiZ29vZy5uZXQuWGhySW9cIix2b2lkIDApLmc7dmFyIHZ0PS9eaHR0cHM/JC9pLEl0PVtcIlBPU1RcIixcIlBVVFwiXTtmdW5jdGlvbiBSdChlLHQpe2UuYz0hMSxlLmEmJihlLmk9ITAsZS5hLmFib3J0KCksZS5pPSExKSxlLmw9dCxlLmc9NSxPdChlKSx3dChlKX1mdW5jdGlvbiBPdChlKXtlLkx8fChlLkw9ITAseGUoZSxcImNvbXBsZXRlXCIpLHhlKGUsXCJlcnJvclwiKSl9ZnVuY3Rpb24ganQoZSl7aWYoZS5jJiZ2b2lkIDAhPT1TKWlmKGUuSlsxXSYmND09Q3QoZSkmJjI9PWUuZ2V0U3RhdHVzKCkpbnQoZS5iLE10KGUsXCJMb2NhbCByZXF1ZXN0IGVycm9yIGRldGVjdGVkIGFuZCBpZ25vcmVkXCIpKTtlbHNlIGlmKGUucyYmND09Q3QoZSkpSGUoZS5SLDAsZSk7ZWxzZSBpZih4ZShlLFwicmVhZHlzdGF0ZWNoYW5nZVwiKSw0PT1DdChlKSl7bnQoZS5iLE10KGUsXCJSZXF1ZXN0IGNvbXBsZXRlXCIpKSxlLmM9ITE7dHJ5e3ZhciB0LG89ZS5nZXRTdGF0dXMoKTtlOnN3aXRjaChvKXtjYXNlIDIwMDpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwNDpjYXNlIDIwNjpjYXNlIDMwNDpjYXNlIDEyMjM6dmFyIHI9ITA7YnJlYWsgZTtkZWZhdWx0OnI9ITF9aWYoISh0PXIpKXt2YXIgbjtpZihuPTA9PT1vKXt2YXIgcz1TdHJpbmcoZS52KS5tYXRjaChFdClbMV18fG51bGw7aWYoIXMmJkUuc2VsZiYmRS5zZWxmLmxvY2F0aW9uKXt2YXIgaT1FLnNlbGYubG9jYXRpb24ucHJvdG9jb2w7cz1pLnN1YnN0cigwLGkubGVuZ3RoLTEpfW49IXZ0LnRlc3Qocz9zLnRvTG93ZXJDYXNlKCk6XCJcIil9dD1ufWlmKHQpeGUoZSxcImNvbXBsZXRlXCIpLHhlKGUsXCJzdWNjZXNzXCIpO2Vsc2V7ZS5nPTY7dHJ5e3ZhciBhPTI8Q3QoZSk/ZS5hLnN0YXR1c1RleHQ6XCJcIn1jYXRjaCh0KXtudChlLmIsXCJDYW4gbm90IGdldCBzdGF0dXM6IFwiK3QubWVzc2FnZSksYT1cIlwifWUubD1hK1wiIFtcIitlLmdldFN0YXR1cygpK1wiXVwiLE90KGUpfX1maW5hbGx5e3d0KGUpfX19ZnVuY3Rpb24gd3QoZSl7aWYoZS5hKXtOdChlKTt2YXIgdD1lLmEsbz1lLkpbMF0/QTpudWxsO2UuYT1udWxsLGUuSj1udWxsLHhlKGUsXCJyZWFkeVwiKTt0cnl7dC5vbnJlYWR5c3RhdGVjaGFuZ2U9b31jYXRjaCh0KXsoZT1lLmIpJiZydChlLEtlLFwiUHJvYmxlbSBlbmNvdW50ZXJlZCByZXNldHRpbmcgb25yZWFkeXN0YXRlY2hhbmdlOiBcIit0Lm1lc3NhZ2UpfX19ZnVuY3Rpb24gTnQoZSl7ZS5hJiZlLkkmJihlLmEub250aW1lb3V0PW51bGwpLGUudyYmKEUuY2xlYXJUaW1lb3V0KGUudyksZS53PW51bGwpfWZ1bmN0aW9uIEN0KGUpe3JldHVybiBlLmE/ZS5hLnJlYWR5U3RhdGU6MH1mdW5jdGlvbiBVdChlLHQpe2lmKGUuYSYmND09Q3QoZSkpcmV0dXJuIG51bGw9PT0oZT1lLmEuZ2V0UmVzcG9uc2VIZWFkZXIodCkpP3ZvaWQgMDplfWZ1bmN0aW9uIE10KGUsdCl7cmV0dXJuIHQrXCIgW1wiK2UuUCtcIiBcIitlLnYrXCIgXCIrZS5nZXRTdGF0dXMoKStcIl1cIn0ocj1UdC5wcm90b3R5cGUpLlQ9ZnVuY3Rpb24oKXt2b2lkIDAhPT1TJiZ0aGlzLmEmJih0aGlzLmw9XCJUaW1lZCBvdXQgYWZ0ZXIgXCIrdGhpcy5oK1wibXMsIGFib3J0aW5nXCIsdGhpcy5nPTgsbnQodGhpcy5iLE10KHRoaXMsdGhpcy5sKSkseGUodGhpcyxcInRpbWVvdXRcIiksdGhpcy5hYm9ydCg4KSl9LHIuYWJvcnQ9ZnVuY3Rpb24oZSl7dGhpcy5hJiZ0aGlzLmMmJihudCh0aGlzLmIsTXQodGhpcyxcIkFib3J0aW5nXCIpKSx0aGlzLmM9ITEsdGhpcy5pPSEwLHRoaXMuYS5hYm9ydCgpLHRoaXMuaT0hMSx0aGlzLmc9ZXx8Nyx4ZSh0aGlzLFwiY29tcGxldGVcIikseGUodGhpcyxcImFib3J0XCIpLHd0KHRoaXMpKX0sci5SPWZ1bmN0aW9uKCl7dGhpcy5LfHwodGhpcy5OfHx0aGlzLnN8fHRoaXMuaT9qdCh0aGlzKTp0aGlzLlcoKSl9LHIuVz1mdW5jdGlvbigpe2p0KHRoaXMpfSxyLmdldFN0YXR1cz1mdW5jdGlvbigpe3RyeXtyZXR1cm4gMjxDdCh0aGlzKT90aGlzLmEuc3RhdHVzOi0xfWNhdGNoKGUpe3JldHVybi0xfX07dmFyIEx0PXt9LER0PW51bGw7ZnVuY3Rpb24gQnQoKXtpZighRHQpe0R0PXt9O2Zvcih2YXIgZT1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksdD1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0sbz0wOzU+bztvKyspe3ZhciByPWUuY29uY2F0KHRbb10uc3BsaXQoXCJcIikpO0x0W29dPXI7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBzPXJbbl07dm9pZCAwPT09RHRbc10mJihEdFtzXT1uKX19fX12YXIgUHQ9W1wiY29udGVudC10eXBlXCIsXCJncnBjLXN0YXR1c1wiLFwiZ3JwYy1tZXNzYWdlXCJdO2Z1bmN0aW9uIEZ0KGUpe3RoaXMuYT1lLlosdGhpcy5tPW51bGwsdGhpcy5iPVtdLHRoaXMuaD1bXSx0aGlzLmc9W10sdGhpcy5mPVtdLHRoaXMuYz1bXSx0aGlzLmw9ITEsdGhpcy5pPTAsdGhpcy5zPW5ldyB4O3ZhciB0PXRoaXM7amUodGhpcy5hLFwicmVhZHlzdGF0ZWNoYW5nZVwiLChmdW5jdGlvbigpe3ZhciBlPXQuYTtpZihlPWUuYT9lLmEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVR5cGVcIik6bnVsbCl7aWYoMD09KGU9ZS50b0xvd2VyQ2FzZSgpKS5sYXN0SW5kZXhPZihcImFwcGxpY2F0aW9uL2dycGMtd2ViLXRleHRcIiwwKSl7ZT10LmE7dHJ5e3ZhciBvPWUuYT9lLmEucmVzcG9uc2VUZXh0OlwiXCJ9Y2F0Y2godCl7bnQoZS5iLFwiQ2FuIG5vdCBnZXQgcmVzcG9uc2VUZXh0OiBcIit0Lm1lc3NhZ2UpLG89XCJcIn1pZihvPShlPW98fFwiXCIpLmxlbmd0aC1lLmxlbmd0aCU0LDA9PShlPWUuc3Vic3RyKHQuaSxvLXQuaSkpLmxlbmd0aClyZXR1cm47dC5pPW8sZT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxvPTMqdC80O28lMz9vPU1hdGguZmxvb3Iobyk6eihcIj0uXCIsZVt0LTFdKSYmKG89eihcIj0uXCIsZVt0LTJdKT9vLTI6by0xKTt2YXIgcj1uZXcgVWludDhBcnJheShvKSxuPTA7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbyh0KXtmb3IoO3I8ZS5sZW5ndGg7KXt2YXIgbz1lLmNoYXJBdChyKyspLG49RHRbb107aWYobnVsbCE9bilyZXR1cm4gbjtpZighL15bXFxzXFx4YTBdKiQvLnRlc3QobykpdGhyb3cgRXJyb3IoXCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiBcIitvKX1yZXR1cm4gdH1CdCgpO2Zvcih2YXIgcj0wOzspe3ZhciBuPW8oLTEpLHM9bygwKSxpPW8oNjQpLGE9byg2NCk7aWYoNjQ9PT1hJiYtMT09PW4pYnJlYWs7dChuPDwyfHM+PjQpLDY0IT1pJiYodChzPDw0JjI0MHxpPj4yKSw2NCE9YSYmdChpPDw2JjE5MnxhKSl9fShlLChmdW5jdGlvbihlKXtyW24rK109ZX0pKSxyLnN1YmFycmF5KDAsbil9KGUpfWVsc2V7aWYoMCE9ZS5sYXN0SW5kZXhPZihcImFwcGxpY2F0aW9uL2dycGNcIiwwKSlyZXR1cm4gdm9pZCBXdCh0LG5ldyBEKDIsXCJVbmtub3duIENvbnRlbnQtdHlwZSByZWNlaXZlZC5cIikpO2U9bmV3IFVpbnQ4QXJyYXkoZnVuY3Rpb24oZSl7dHJ5e2lmKCFlLmEpcmV0dXJuIG51bGw7aWYoXCJyZXNwb25zZVwiaW4gZS5hKXJldHVybiBlLmEucmVzcG9uc2U7c3dpdGNoKGUubSl7Y2FzZSBBdDpjYXNlXCJ0ZXh0XCI6cmV0dXJuIGUuYS5yZXNwb25zZVRleHQ7Y2FzZVwiYXJyYXlidWZmZXJcIjppZihcIm1velJlc3BvbnNlQXJyYXlCdWZmZXJcImluIGUuYSlyZXR1cm4gZS5hLm1velJlc3BvbnNlQXJyYXlCdWZmZXJ9dmFyIHQ9ZS5iO3JldHVybiB0JiZydCh0LEtlLFwiUmVzcG9uc2UgdHlwZSBcIitlLm0rXCIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGJyb3dzZXJcIiksbnVsbH1jYXRjaCh0KXtyZXR1cm4gbnQoZS5iLFwiQ2FuIG5vdCBnZXQgcmVzcG9uc2U6IFwiK3QubWVzc2FnZSksbnVsbH19KHQuYSkpfW89bnVsbDt0cnl7bz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG8oZSl7YS5mKyssYS5hPShhLmE8PDgpK2UsND09YS5mJiYoYS5iPTIsYS5nPTAsXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/YS5jPW5ldyBVaW50OEFycmF5KGEuYSk6YS5jPUFycmF5KGEuYSksMD09YS5hJiZuKCkpfWZ1bmN0aW9uIHIoZSl7YS5jW2EuZysrXT1lLGEuZz09YS5hJiZuKCl9ZnVuY3Rpb24gbigpe3ZhciBlPXt9O2VbYS5oXT1hLmMsYS5pLnB1c2goZSksYS5iPVd9dmFyIHMsaSxhPWUsZz0wO2ZvcihzPXQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx0IGluc3RhbmNlb2YgQXJyYXk/dDpuZXcgVWludDhBcnJheSh0KTtnPHMubGVuZ3RoOyl7c3dpdGNoKGEuYil7Y2FzZSAzOlYoYSxzLGcsXCJzdHJlYW0gYWxyZWFkeSBicm9rZW5cIik7YnJlYWs7Y2FzZSBXOjA9PShpPXNbZ10pfHxpPT1IP2EuaD1pOlYoYSxzLGcsXCJpbnZhbGlkIGZyYW1lIGJ5dGVcIiksYS5iPTEsYS5hPTAsYS5mPTA7YnJlYWs7Y2FzZSAxOm8oc1tnXSk7YnJlYWs7Y2FzZSAyOnIoc1tnXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcInVuZXhwZWN0ZWQgcGFyc2VyIHN0YXRlOiBcIithLmIpfWEubSsrLGcrK31yZXR1cm4gZT1hLmksYS5pPVtdLDA8ZS5sZW5ndGg/ZTpudWxsfSh0LnMsZSl9Y2F0Y2goZSl7V3QodCxuZXcgRCgyLFwiRXJyb3IgaW4gcGFyc2luZyByZXNwb25zZSBib2R5XCIpKX1pZihvKWZvcihlPTA7ZTxvLmxlbmd0aDtlKyspe2lmKDAgaW4gb1tlXSl7dmFyIHI9b1tlXVswXTtpZihyKXt2YXIgbj12b2lkIDA7dHJ5e249dC5tKHIpfWNhdGNoKGUpe1d0KHQsbmV3IEQoMTMsXCJFcnJvciB3aGVuIGRlc2VyaWFsaXppbmcgcmVzcG9uc2UgZGF0YTogXCIrbikpfWlmKG4pe3I9dDtmb3IodmFyIHM9MDtzPHIuYi5sZW5ndGg7cysrKXIuYltzXShuKX19fWlmKEggaW4gb1tlXSYmMDxvW2VdW0hdLmxlbmd0aCl7Zm9yKHI9XCJcIixuPTA7bjxvW2VdW0hdLmxlbmd0aDtuKyspcis9U3RyaW5nLmZyb21DaGFyQ29kZShvW2VdW0hdW25dKTtmb3Iocj1yLnRyaW0oKS5zcGxpdChcIlxcclxcblwiKSxuPXt9LHM9MDtzPHIubGVuZ3RoO3MrKyl7dmFyIGk9cltzXS5pbmRleE9mKFwiOlwiKTtuW3Jbc10uc3Vic3RyaW5nKDAsaSkudHJpbSgpXT1yW3NdLnN1YnN0cmluZyhpKzEpLnRyaW0oKX1yPW4sbj0wLHM9XCJcIixcImdycGMtc3RhdHVzXCJpbiByJiYobj1OdW1iZXIocltcImdycGMtc3RhdHVzXCJdKSxkZWxldGUgcltcImdycGMtc3RhdHVzXCJdKSxcImdycGMtbWVzc2FnZVwiaW4gciYmKHM9cltcImdycGMtbWVzc2FnZVwiXSxkZWxldGUgcltcImdycGMtbWVzc2FnZVwiXSksV3QodCxuZXcgRChuLHMscikpfX19fSkpLGplKHRoaXMuYSxcImNvbXBsZXRlXCIsKGZ1bmN0aW9uKCl7dmFyIGU9dC5hLmcsbz0yLHI9XCJcIixuPXt9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307ZT0oZS5hJiY0PT1DdChlKSYmZS5hLmdldEFsbFJlc3BvbnNlSGVhZGVycygpfHxcIlwiKS5zcGxpdChcIlxcclxcblwiKTtmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylpZighL15bXFxzXFx4YTBdKiQvLnRlc3QoZVtvXSkpe3ZhciByPVooZVtvXSksbj1yWzBdO2lmKFwic3RyaW5nXCI9PXR5cGVvZihyPXJbMV0pKXtyPXIudHJpbSgpO3ZhciBzPXRbbl18fFtdO3Rbbl09cyxzLnB1c2gocil9fXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBvLHI9e307Zm9yKG8gaW4gZSlyW29dPXQuY2FsbCh2b2lkIDAsZVtvXSxvLGUpO3JldHVybiByfSh0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5qb2luKFwiLCBcIil9KSl9KHQuYSk7aWYoT2JqZWN0LmtleXMocykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7UHQuaW5jbHVkZXMoZSl8fChuW2VdPXNbZV0pfSkpLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvPTA7bzxlLmcubGVuZ3RoO28rKyllLmdbb10odCl9KHQsbiksMCE9ZSl7c3dpdGNoKGUpe2Nhc2UgNzpvPTEwO2JyZWFrO2Nhc2UgODpvPTQ7YnJlYWs7Y2FzZSA2Om89ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UgMjAwOnJldHVybiAwO2Nhc2UgNDAwOnJldHVybiAzO2Nhc2UgNDAxOnJldHVybiAxNjtjYXNlIDQwMzpyZXR1cm4gNztjYXNlIDQwNDpyZXR1cm4gNTtjYXNlIDQwOTpyZXR1cm4gMTA7Y2FzZSA0MTI6cmV0dXJuIDk7Y2FzZSA0Mjk6cmV0dXJuIDg7Y2FzZSA0OTk6cmV0dXJuIDE7Y2FzZSA1MDA6ZGVmYXVsdDpyZXR1cm4gMjtjYXNlIDUwMTpyZXR1cm4gMTI7Y2FzZSA1MDM6cmV0dXJuIDE0O2Nhc2UgNTA0OnJldHVybiA0fX0odC5hLmdldFN0YXR1cygpKTticmVhaztkZWZhdWx0Om89MTR9MTA9PW8mJnQubHx8V3QodCxuZXcgRChvLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuXCJObyBFcnJvclwiO2Nhc2UgMTpyZXR1cm5cIkFjY2VzcyBkZW5pZWQgdG8gY29udGVudCBkb2N1bWVudFwiO2Nhc2UgMjpyZXR1cm5cIkZpbGUgbm90IGZvdW5kXCI7Y2FzZSAzOnJldHVyblwiRmlyZWZveCBzaWxlbnRseSBlcnJvcmVkXCI7Y2FzZSA0OnJldHVyblwiQXBwbGljYXRpb24gY3VzdG9tIGVycm9yXCI7Y2FzZSA1OnJldHVyblwiQW4gZXhjZXB0aW9uIG9jY3VycmVkXCI7Y2FzZSA2OnJldHVyblwiSHR0cCByZXNwb25zZSBhdCA0MDAgb3IgNTAwIGxldmVsXCI7Y2FzZSA3OnJldHVyblwiUmVxdWVzdCB3YXMgYWJvcnRlZFwiO2Nhc2UgODpyZXR1cm5cIlJlcXVlc3QgdGltZWQgb3V0XCI7Y2FzZSA5OnJldHVyblwiVGhlIHJlc291cmNlIGlzIG5vdCBhdmFpbGFibGUgb2ZmbGluZVwiO2RlZmF1bHQ6cmV0dXJuXCJVbnJlY29nbml6ZWQgZXJyb3IgY29kZVwifX0oZSkpKX1lbHNlIGU9ITEsXCJncnBjLXN0YXR1c1wiaW4gcyYmKG89TnVtYmVyKFV0KHQuYSxcImdycGMtc3RhdHVzXCIpKSxcImdycGMtbWVzc2FnZVwiaW4gcyYmKHI9VXQodC5hLFwiZ3JwYy1tZXNzYWdlXCIpKSwwIT1vJiYoV3QodCxuZXcgRChvLHJ8fFwiXCIscykpLGU9ITApKSxlfHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUuYy5sZW5ndGg7dCsrKWUuY1t0XSgpfSh0KX0pKX1mdW5jdGlvbiB4dChlLHQpey0xPCh0PWUuaW5kZXhPZih0KSkmJmUuc3BsaWNlKHQsMSl9ZnVuY3Rpb24gV3QoZSx0KXtpZigwIT10LmNvZGUpZm9yKHZhciBvPW5ldyBEKHQuY29kZSxkZWNvZGVVUklDb21wb25lbnQodC5tZXNzYWdlfHxcIlwiKSx0Lm1ldGFkYXRhKSxyPTA7cjxlLmYubGVuZ3RoO3IrKyllLmZbcl0obyk7Zm9yKHQ9e2NvZGU6dC5jb2RlLGRldGFpbHM6ZGVjb2RlVVJJQ29tcG9uZW50KHQubWVzc2FnZXx8XCJcIiksbWV0YWRhdGE6dC5tZXRhZGF0YX0sbz0wO288ZS5oLmxlbmd0aDtvKyspZS5oW29dKHQpfWZ1bmN0aW9uIEh0KGUsdCl7ZT12b2lkIDA9PT1lP3t9OmUsdGhpcy5hPWUuZm9ybWF0fHxUKFwiZm9ybWF0XCIsZSl8fFwidGV4dFwiLHRoaXMuZz1lLmFhfHxUKFwic3VwcHJlc3NDb3JzUHJlZmxpZ2h0XCIsZSl8fCExLHRoaXMuZj1lLndpdGhDcmVkZW50aWFsc3x8VChcIndpdGhDcmVkZW50aWFsc1wiLGUpfHwhMSx0aGlzLmI9ZS4kfHxUKFwic3RyZWFtSW50ZXJjZXB0b3JzXCIsZSl8fFtdLHRoaXMuaD1lLmJhfHxUKFwidW5hcnlJbnRlcmNlcHRvcnNcIixlKXx8W10sdGhpcy5jPXR8fG51bGx9ZnVuY3Rpb24gVnQoZSx0LG8pe3ZhciByPXQuZ2V0TWV0aG9kRGVzY3JpcHRvcigpLG49bytyLm5hbWU7KG89ZS5jP2UuYzpuZXcgVHQpLk09ZS5mO3ZhciBzPW5ldyBGdCh7WjpvfSk7cy5tPXIuYjt2YXIgaT10LmdldE1ldGFkYXRhKCk7Zm9yKGEgaW4gaSlvLmhlYWRlcnMuc2V0KGEsaVthXSk7aWYoXCJ0ZXh0XCI9PWUuYT8oby5oZWFkZXJzLnNldChcIkNvbnRlbnQtVHlwZVwiLFwiYXBwbGljYXRpb24vZ3JwYy13ZWItdGV4dFwiKSxvLmhlYWRlcnMuc2V0KFwiQWNjZXB0XCIsXCJhcHBsaWNhdGlvbi9ncnBjLXdlYi10ZXh0XCIpKTpvLmhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsXCJhcHBsaWNhdGlvbi9ncnBjLXdlYitwcm90b1wiKSxvLmhlYWRlcnMuc2V0KFwiWC1Vc2VyLUFnZW50XCIsXCJncnBjLXdlYi1qYXZhc2NyaXB0LzAuMVwiKSxvLmhlYWRlcnMuc2V0KFwiWC1HcnBjLVdlYlwiLFwiMVwiKSxvLmhlYWRlcnMuaGFzKFwiZGVhZGxpbmVcIikpe3ZhciBhPU51bWJlcihvLmhlYWRlcnMuZ2V0KFwiZGVhZGxpbmVcIikpO2E9TWF0aC5jZWlsKGEtKG5ldyBEYXRlKS5nZXRUaW1lKCkpLG8uaGVhZGVycy5kZWxldGUoXCJkZWFkbGluZVwiKSwxLzA9PT1hJiYoYT0wKSwwPGEmJihvLmhlYWRlcnMuc2V0KFwiZ3JwYy10aW1lb3V0XCIsYStcIm1cIiksby5oPU1hdGgubWF4KDAsTWF0aC5tYXgoMWUzLE1hdGguY2VpbCgxLjEqYSkpKSl9aWYoZS5nKXthPXt9O2Zvcih2YXIgZz1wKChpPW8uaGVhZGVycykua2V5cygpKSxsPWcubmV4dCgpOyFsLmRvbmU7bD1nLm5leHQoKSlhW2w9bC52YWx1ZV09aS5nZXQobCk7by5oZWFkZXJzLmNsZWFyKCk7ZTp7Zm9yKHUgaW4gYSl7dmFyIHU9ITE7YnJlYWsgZX11PSEwfXV8fChhPWZ1bmN0aW9uKGUpe3ZhciB0PVwiXCI7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBvIGluIGUpdC5jYWxsKHZvaWQgMCxlW29dLG8sZSl9KGUsKGZ1bmN0aW9uKGUsbyl7dCs9byx0Kz1cIjpcIix0Kz1lLHQrPVwiXFxyXFxuXCJ9KSksdH0oYSksXCJzdHJpbmdcIj09dHlwZW9mIG4/KHU9ZW5jb2RlVVJJQ29tcG9uZW50KFwiJGh0dHBIZWFkZXJzXCIpLCh1Kz1hPW51bGwhPWE/XCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSk6XCJcIikmJigwPihhPW4uaW5kZXhPZihcIiNcIikpJiYoYT1uLmxlbmd0aCksMD4oaT1uLmluZGV4T2YoXCI/XCIpKXx8aT5hPyhpPWEsZz1cIlwiKTpnPW4uc3Vic3RyaW5nKGkrMSxhKSxhPShuPVtuLnN1YnN0cigwLGkpLGcsbi5zdWJzdHIoYSldKVsxXSxuWzFdPXU/YT9hK1wiJlwiK3U6dTphLG49blswXSsoblsxXT9cIj9cIituWzFdOlwiXCIpK25bMl0pKTpuLmEoXCIkaHR0cEhlYWRlcnNcIixhKSl9Zm9yKHI9KHQ9KDAsci5hKSh0LmdldFJlcXVlc3RNZXNzYWdlKCkpKS5sZW5ndGgsdT1bMCwwLDAsMF0sYT1uZXcgVWludDhBcnJheSg1K3IpLGk9MzswPD1pO2ktLSl1W2ldPXIlMjU2LHI+Pj49ODtpZihhLnNldChuZXcgVWludDhBcnJheSh1KSwxKSxhLnNldCh0LDUpLHQ9YSxcInRleHRcIj09ZS5hKXt2YXIgYztmb3IoZT10LHZvaWQgMD09PWMmJihjPTApLEJ0KCksYz1MdFtjXSx0PUFycmF5KE1hdGguZmxvb3IoZS5sZW5ndGgvMykpLHI9Y1s2NF18fFwiXCIsdT1hPTA7YTxlLmxlbmd0aC0yO2ErPTMpe2w9ZVthXTt2YXIgZj1lW2ErMV07Zz1lW2ErMl0saT1jW2w+PjJdLGw9Y1soMyZsKTw8NHxmPj40XSxmPWNbKDE1JmYpPDwyfGc+PjZdLGc9Y1s2MyZnXSx0W3UrK109aStsK2YrZ31zd2l0Y2goaT0wLGc9cixlLmxlbmd0aC1hKXtjYXNlIDI6Zz1jWygxNSYoaT1lW2ErMV0pKTw8Ml18fHI7Y2FzZSAxOmU9ZVthXSx0W3VdPWNbZT4+Ml0rY1soMyZlKTw8NHxpPj40XStnK3J9dD10LmpvaW4oXCJcIil9ZWxzZVwiYmluYXJ5XCI9PWUuYSYmKG8ubT1cImFycmF5YnVmZmVyXCIpO3JldHVybiBmdW5jdGlvbihlLHQsbyl7aWYoZS5hKXRocm93IEVycm9yKFwiW2dvb2cubmV0LlhocklvXSBPYmplY3QgaXMgYWN0aXZlIHdpdGggYW5vdGhlciByZXF1ZXN0PVwiK2UuditcIjsgbmV3VXJpPVwiK3QpO2Uudj10LGUubD1cIlwiLGUuZz0wLGUuUD1cIlBPU1RcIixlLkw9ITEsZS5jPSEwLGUuYT1lLkM/Z3QoZS5DKTpndChZZSksZS5KPWUuQz9pdChlLkMpOml0KFllKSxlLmEub25yZWFkeXN0YXRlY2hhbmdlPXcoZS5SLGUpO3RyeXtudChlLmIsTXQoZSxcIk9wZW5pbmcgWGhyXCIpKSxlLk49ITAsZS5hLm9wZW4oXCJQT1NUXCIsU3RyaW5nKHQpLCEwKSxlLk49ITF9Y2F0Y2godCl7cmV0dXJuIG50KGUuYixNdChlLFwiRXJyb3Igb3BlbmluZyBYaHI6IFwiK3QubWVzc2FnZSkpLHZvaWQgUnQoZSx0KX10PW98fFwiXCI7dmFyIHI9KG89ZS5oZWFkZXJzLmNsb25lKCkpLkcoKS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm5cImNvbnRlbnQtdHlwZVwiPT1lLnRvTG93ZXJDYXNlKCl9KSksbj1FLkZvcm1EYXRhJiZ0IGluc3RhbmNlb2YgRS5Gb3JtRGF0YTshKDA8PWsoSXQsXCJQT1NUXCIpKXx8cnx8bnx8by5zZXQoXCJDb250ZW50LVR5cGVcIixcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04XCIpLG8uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt0aGlzLmEuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksZSksZS5tJiYoZS5hLnJlc3BvbnNlVHlwZT1lLm0pLFwid2l0aENyZWRlbnRpYWxzXCJpbiBlLmEmJmUuYS53aXRoQ3JlZGVudGlhbHMhPT1lLk0mJihlLmEud2l0aENyZWRlbnRpYWxzPWUuTSk7dHJ5e050KGUpLDA8ZS5oJiYoZS5JPWZ1bmN0aW9uKGUpe3JldHVybiBvZSYmY2UoKSYmXCJudW1iZXJcIj09dHlwZW9mIGUudGltZW91dCYmdm9pZCAwIT09ZS5vbnRpbWVvdXR9KGUuYSksbnQoZS5iLE10KGUsXCJXaWxsIGFib3J0IGFmdGVyIFwiK2UuaCtcIm1zIGlmIGluY29tcGxldGUsIHhocjIgXCIrZS5JKSksZS5JPyhlLmEudGltZW91dD1lLmgsZS5hLm9udGltZW91dD13KGUuVCxlKSk6ZS53PUhlKGUuVCxlLmgsZSkpLG50KGUuYixNdChlLFwiU2VuZGluZyByZXF1ZXN0XCIpKSxlLnM9ITAsZS5hLnNlbmQodCksZS5zPSExfWNhdGNoKHQpe250KGUuYixNdChlLFwiU2VuZCBlcnJvcjogXCIrdC5tZXNzYWdlKSksUnQoZSx0KX19KG8sbix0KSxzfWZ1bmN0aW9uIEd0KGUsdCxvKXt2YXIgcj0hMSxuPW51bGwscz0hMTtlLm9uKFwiZGF0YVwiLChmdW5jdGlvbihlKXtyPSEwLG49ZX0pKSxlLm9uKFwiZXJyb3JcIiwoZnVuY3Rpb24oZSl7MD09ZS5jb2RlfHxzfHwocz0hMCx0KGUsbnVsbCkpfSkpLGUub24oXCJzdGF0dXNcIiwoZnVuY3Rpb24oZSl7MD09ZS5jb2RlfHxzP28mJnQobnVsbCxudWxsLGUpOihzPSEwLHQoe2NvZGU6ZS5jb2RlLG1lc3NhZ2U6ZS5kZXRhaWxzLG1ldGFkYXRhOmUubWV0YWRhdGF9LG51bGwpKX0pKSxvJiZlLm9uKFwibWV0YWRhdGFcIiwoZnVuY3Rpb24oZSl7dChudWxsLG51bGwsbnVsbCxlKX0pKSxlLm9uKFwiZW5kXCIsKGZ1bmN0aW9uKCl7c3x8KHI/dChudWxsLG4pOnQoe2NvZGU6MixtZXNzYWdlOlwiSW5jb21wbGV0ZSByZXNwb25zZVwifSkpLG8mJnQobnVsbCxudWxsKX0pKX1mdW5jdGlvbiBrdChlLHQpe3ZhciBvPWU7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bztvPWZ1bmN0aW9uKG8pe3JldHVybiBlLmludGVyY2VwdChvLHQpfX0pKSxvfUZ0LnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe3JldHVyblwiZGF0YVwiPT1lP3RoaXMuYi5wdXNoKHQpOlwic3RhdHVzXCI9PWU/dGhpcy5oLnB1c2godCk6XCJtZXRhZGF0YVwiPT1lP3RoaXMuZy5wdXNoKHQpOlwiZW5kXCI9PWU/dGhpcy5jLnB1c2godCk6XCJlcnJvclwiPT1lJiZ0aGlzLmYucHVzaCh0KSx0aGlzfSxGdC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cImRhdGFcIj09ZT94dCh0aGlzLmIsdCk6XCJzdGF0dXNcIj09ZT94dCh0aGlzLmgsdCk6XCJtZXRhZGF0YVwiPT1lP3h0KHRoaXMuZyx0KTpcImVuZFwiPT1lP3h0KHRoaXMuYyx0KTpcImVycm9yXCI9PWUmJnh0KHRoaXMuZix0KSx0aGlzfSxGdC5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5sPSEwLHRoaXMuYS5hYm9ydCgpfSxGdC5wcm90b3R5cGUuY2FuY2VsPUZ0LnByb3RvdHlwZS5jYW5jZWwsRnQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPUZ0LnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixGdC5wcm90b3R5cGUub249RnQucHJvdG90eXBlLm9uLEh0LnByb3RvdHlwZS5YPWZ1bmN0aW9uKGUsdCxvLHIsbil7dmFyIHM9dGhpcyxpPWUuc3Vic3RyKDAsZS5sZW5ndGgtci5uYW1lLmxlbmd0aCk7cmV0dXJuIEd0KGU9a3QoKGZ1bmN0aW9uKGUpe3JldHVybiBWdChzLGUsaSl9KSx0aGlzLmIpLmNhbGwodGhpcyxMKHIsdCxvKSksbiwhMSksbmV3IEIoZSl9LEh0LnByb3RvdHlwZS5TPWZ1bmN0aW9uKGUsdCxvLHIpe3ZhciBuPXRoaXMscz1lLnN1YnN0cigwLGUubGVuZ3RoLXIubmFtZS5sZW5ndGgpO3JldHVybiBrdCgoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG8pe3ZhciByLGksYTtHdChWdChuLGUscyksKGZ1bmN0aW9uKG4scyxnLGwpe24/byhuKTpzP2E9czpnP2k9ZzpsP3I9bDoobj1lLmdldE1ldGhvZERlc2NyaXB0b3IoKSx0KG5ldyBNKGEsbixzPXZvaWQgMD09PShzPXIpP3t9OnMsdm9pZCAwPT09aT9udWxsOmkpKSl9KSwhMCl9KSl9KSx0aGlzLmgpLmNhbGwodGhpcyxMKHIsdCxvKSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UmVzcG9uc2VNZXNzYWdlKCl9KSl9LEh0LnByb3RvdHlwZS51bmFyeUNhbGw9ZnVuY3Rpb24oZSx0LG8scil7cmV0dXJuIHRoaXMuUyhlLHQsbyxyKX0sSHQucHJvdG90eXBlLlk9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49dGhpcyxzPWUuc3Vic3RyKDAsZS5sZW5ndGgtci5uYW1lLmxlbmd0aCk7cmV0dXJuIGt0KChmdW5jdGlvbihlKXtyZXR1cm4gVnQobixlLHMpfSksdGhpcy5iKS5jYWxsKHRoaXMsTChyLHQsbykpfSxIdC5wcm90b3R5cGUuc2VydmVyU3RyZWFtaW5nPUh0LnByb3RvdHlwZS5ZLEh0LnByb3RvdHlwZS51bmFyeUNhbGw9SHQucHJvdG90eXBlLnVuYXJ5Q2FsbCxIdC5wcm90b3R5cGUudGhlbmFibGVDYWxsPUh0LnByb3RvdHlwZS5TLEh0LnByb3RvdHlwZS5ycGNDYWxsPUh0LnByb3RvdHlwZS5YLGUuZXhwb3J0cy5HcnBjV2ViQ2xpZW50QmFzZT1IdCxlLmV4cG9ydHMuU3RhdHVzQ29kZT17T0s6MCxDQU5DRUxMRUQ6MSxVTktOT1dOOjIsSU5WQUxJRF9BUkdVTUVOVDozLERFQURMSU5FX0VYQ0VFREVEOjQsTk9UX0ZPVU5EOjUsQUxSRUFEWV9FWElTVFM6NixQRVJNSVNTSU9OX0RFTklFRDo3LFVOQVVUSEVOVElDQVRFRDoxNixSRVNPVVJDRV9FWEhBVVNURUQ6OCxGQUlMRURfUFJFQ09ORElUSU9OOjksQUJPUlRFRDoxMCxPVVRfT0ZfUkFOR0U6MTEsVU5JTVBMRU1FTlRFRDoxMixJTlRFUk5BTDoxMyxVTkFWQUlMQUJMRToxNCxEQVRBX0xPU1M6MTV9LGUuZXhwb3J0cy5NZXRob2REZXNjcmlwdG9yPWZ1bmN0aW9uKGUsdCxvLHIsbixzKXt0aGlzLm5hbWU9ZSx0aGlzLmE9bix0aGlzLmI9c30sZS5leHBvcnRzLk1ldGhvZFR5cGU9e1VOQVJZOlwidW5hcnlcIixTRVJWRVJfU1RSRUFNSU5HOlwic2VydmVyX3N0cmVhbWluZ1wiLEJJRElfU1RSRUFNSU5HOlwiYmlkaV9zdHJlYW1pbmdcIn19fSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhlKXt2YXIgdD1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bZV07aWYodm9pZCAwIT09dClyZXR1cm4gdC5leHBvcnRzO3ZhciBvPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1tlXT17ZXhwb3J0czp7fX07cmV0dXJuIF9fd2VicGFja19tb2R1bGVzX19bZV0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyksby5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgbyBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LG8pJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsbykmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8se2VudW1lcmFibGU6ITAsZ2V0OnRbb119KX0sX193ZWJwYWNrX3JlcXVpcmVfXy5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksX193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxfX3dlYnBhY2tfcmVxdWlyZV9fLnI9ZT0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9O3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9O3JldHVybigoKT0+e1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dFtvXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fV9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKSxfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7SW5mb1NlcnZpY2U6KCk9PmMsU2Vzc2lvbkluZm86KCk9PnIsVmVyc2lvbkluZm86KCk9PnR9KTt2YXIgdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG89ZS5tYWpvcixyPWUubWlub3Isbj1lLnBhdGNoLHM9ZS5wcmVSZWxlYXNlLGk9ZS5idWlsZDshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMubWFqb3I9byx0aGlzLm1pbm9yPXIsdGhpcy5wYXRjaD1uLHRoaXMucHJlUmVsZWFzZT1zLHRoaXMuYnVpbGQ9aX12YXIgbyxyO3JldHVybiBvPXQsKHI9W3trZXk6XCJub0J1aWxkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1uZXcgdCh0aGlzKTtyZXR1cm4gZS5idWlsZD12b2lkIDAsZX19LHtrZXk6XCJub1ByZVJlbGVhc2VcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMpO3JldHVybiBlLnByZVJlbGVhc2U9dm9pZCAwLGV9fSx7a2V5OlwidG9TdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPVwiXCIuY29uY2F0KHRoaXMubWFqb3IsXCIuXCIpLmNvbmNhdCh0aGlzLm1pbm9yLFwiLlwiKS5jb25jYXQodGhpcy5wYXRjaCk7cmV0dXJuIHRoaXMucHJlUmVsZWFzZSYmKGUrPVwiLVwiLmNvbmNhdCh0aGlzLnByZVJlbGVhc2UpKSx0aGlzLmJ1aWxkJiYoZSs9XCIrXCIuY29uY2F0KHRoaXMuYnVpbGQpKSxlfX1dKSYmZShvLnByb3RvdHlwZSxyKSx0fSgpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIHI9dFtvXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgbz10LnJlYWxtLHI9dC51c2VybmFtZSxuPXQucm9sZXMscz10LnBlcm1pc3Npb25zLGk9dC5leHBpcmVzOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksdGhpcy5yZWFsbT1vLHRoaXMudXNlcm5hbWU9cix0aGlzLnJvbGVzPW58fFtdLHRoaXMucGVybWlzc2lvbnM9c3x8W10sdGhpcy5leHBpcmVzPWl9dmFyIHQscjtyZXR1cm4gdD1lLChyPVt7a2V5OlwiaW1wbGllc1wiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLnBlcm1pc3Npb25zKXJldHVybiExO2Zvcih2YXIgdD1lLnNwbGl0KFwiOlwiKSxvPVtcIipcIixlXSxyPTE7cjx0Lmxlbmd0aDtyKyspby5wdXNoKHQuc2xpY2UoMCxyKS5qb2luKFwiOlwiKStcIipcIik7cmV0dXJuIHRoaXMucGVybWlzc2lvbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gby5pbmRleE9mKGUpPi0xfSkpLmxlbmd0aD4wfX1dKSYmbyh0LnByb3RvdHlwZSxyKSxlfSgpLG49X193ZWJwYWNrX3JlcXVpcmVfXyg2NjEpO2Z1bmN0aW9uIHMoZSx0KXt2YXIgbz1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG8ucHVzaC5hcHBseShvLHIpfXJldHVybiBvfWZ1bmN0aW9uIGkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG89bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cyhPYmplY3QobyksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EoZSx0LG9bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOnMoT2JqZWN0KG8pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobyx0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYShlLHQsbyl7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpvLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1vLGV9ZnVuY3Rpb24gZyhlLHQsbyxyLG4scyxpKXt0cnl7dmFyIGE9ZVtzXShpKSxnPWEudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgbyhlKX1hLmRvbmU/dChnKTpQcm9taXNlLnJlc29sdmUoZykudGhlbihyLG4pfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7dmFyIHM9ZS5hcHBseSh0LG8pO2Z1bmN0aW9uIGkoZSl7ZyhzLHIsbixpLGEsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gYShlKXtnKHMscixuLGksYSxcInRocm93XCIsZSl9aSh2b2lkIDApfSkpfX1mdW5jdGlvbiB1KGUsdCl7Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciByPXRbb107ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX12YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSx0aGlzLnVyaT10fHxcIi9hcGlcIn12YXIgbyxzLGEsZyxjLHAsZjtyZXR1cm4gbz1lLHM9W3trZXk6XCJnZXRWZXJzaW9uSW5mb1wiLHZhbHVlOihmPWwocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbyxyLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbz1uZXcgbi5oLnYxLkdlbmVyYWxJbmZvU2VydmljZVByb21pc2VDbGllbnQodGhpcy51cmksbnVsbCxudWxsKSxyPW5ldyBuLmgudjEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0LGUubmV4dD00LG8uZ2V0VmVyc2lvbkluZm8ocix7fSk7Y2FzZSA0OnJldHVybiBzPWUuc2VudCxlLmFicnVwdChcInJldHVyblwiLG5ldyB0KHMuZ2V0VmVyc2lvbkluZm8oKS50b09iamVjdCgpKSk7Y2FzZSA2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OlwiX2dldFNlc3Npb25JbmZvXCIsdmFsdWU6KHA9bChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG8pe3ZhciBzLGEsZyxsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHM9e30sdCYmKHMuYXV0aGVudGljYXRpb249XCJCYXNpYyBcIitidG9hKFwiXCIuY29uY2F0KHQsXCI6XCIpLmNvbmNhdChvKSkpLGE9bmV3IG4uaC52MS5HZW5lcmFsSW5mb1NlcnZpY2VQcm9taXNlQ2xpZW50KHRoaXMudXJpLG51bGwsbnVsbCksZz1uZXcgbi5oLnYxLkdldFNlc3Npb25JbmZvUmVxdWVzdCxlLm5leHQ9NixhLmdldFNlc3Npb25JbmZvKGcscyk7Y2FzZSA2OnJldHVybiBsPWUuc2VudCxlLmFicnVwdChcInJldHVyblwiLG5ldyByKGkoaSh7fSxsLnRvT2JqZWN0KCkpLHt9LHtyb2xlczpsLmdldFJvbGVzTGlzdCgpLHBlcm1pc3Npb25zOmwuZ2V0UGVybWlzc2lvbnNMaXN0KCl9KSkpO2Nhc2UgODpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleTpcImdldFNlc3Npb25JbmZvXCIsdmFsdWU6KGM9bChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2dldFNlc3Npb25JbmZvKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdChcInJldHVyblwiLGUuc2VudCk7Y2FzZSAzOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbigpe3JldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfSx7a2V5OlwibG9naW5cIix2YWx1ZTooZz1sKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQsbyl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZ2V0U2Vzc2lvbkluZm8odCxvKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsZS5zZW50KTtjYXNlIDM6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6XCJsb2dvdXRcIix2YWx1ZTooYT1sKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsdGhpcy5fZ2V0U2Vzc2lvbkluZm8oXCJsb2dvdXRcIixcIlwiKTtjYXNlIDM6dGhyb3cgZS5zZW50LG5ldyBFcnJvcihcIkxvZ291dCBkaWQgbm90IHByb2NlZWQgY29ycmVjdGx5LiBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgaXQgbG9va3MgbGlrZSBhIHByb2dyYW1taW5nIGVycm9yIGluIHRoZSB3ZWJ1aS4gUGxlYXNlIHJlcG9ydFwiKTtjYXNlIDc6aWYoZS5wcmV2PTcsZS50MD1lLmNhdGNoKDApLDE2IT09ZS50MC5jb2RlKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsITApO2Nhc2UgMTI6dGhyb3cgZS50MDtjYXNlIDEzOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMsW1swLDddXSl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSxzJiZ1KG8ucHJvdG90eXBlLHMpLGV9KCl9KSgpLF9fd2VicGFja19leHBvcnRzX199KSgpfSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///818\n')},799:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\nvar aa=__webpack_require__(526),ca=__webpack_require__(851);function p(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c<arguments.length;c++)b+="&args[]="+encodeURIComponent(arguments[c]);return"Minified React error #"+a+"; visit "+b+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+"Capture",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!("undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case "function":case "symbol":return!0;case "boolean":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return"data-"!==a&&"aria-"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||"undefined"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n["checked","multiple","muted","selected"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});["capture","download"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});["cols","rows","size","span"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});["rowSpan","start"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||"o"!==b[0]&&"O"!==b[0]||"n"!==b[1]&&"N"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,""+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:"":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?"":""+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for("react.element"),wa=Symbol.for("react.portal"),ya=Symbol.for("react.fragment"),za=Symbol.for("react.strict_mode"),Aa=Symbol.for("react.profiler"),Ba=Symbol.for("react.provider"),Ca=Symbol.for("react.context"),Da=Symbol.for("react.forward_ref"),Ea=Symbol.for("react.suspense"),Fa=Symbol.for("react.suspense_list"),Ga=Symbol.for("react.memo"),Ha=Symbol.for("react.lazy");Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");\nvar Ia=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden");Symbol.for("react.cache");Symbol.for("react.tracing_marker");var Ja=Symbol.iterator;function Ka(a){if(null===a||"object"!==typeof a)return null;a=Ja&&a[Ja]||a["@@iterator"];return"function"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||""}return"\\n"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return"";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,"props",{set:function(){throw Error();}}),"object"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&"string"===typeof l.stack){for(var e=l.stack.split("\\n"),\nf=d.stack.split("\\n"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k="\\n"+e[g].replace(" at new "," at ");a.displayName&&k.includes("<anonymous>")&&(k=k.replace("<anonymous>",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:"")?Ma(a):""}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma("Lazy");case 13:return Ma("Suspense");case 19:return Ma("SuspenseList");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return""}}\nfunction Qa(a){if(null==a)return null;if("function"===typeof a)return a.displayName||a.name||null;if("string"===typeof a)return a;switch(a){case ya:return"Fragment";case wa:return"Portal";case Aa:return"Profiler";case za:return"StrictMode";case Ea:return"Suspense";case Fa:return"SuspenseList"}if("object"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||"Context")+".Consumer";case Ba:return(a._context.displayName||"Context")+".Provider";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||"",a=""!==a?"ForwardRef("+a+")":"ForwardRef");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||"Memo";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return"Cache";case 9:return(b.displayName||"Context")+".Consumer";case 10:return(b._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return a=b.render,a=a.displayName||a.name||"",b.displayName||(""!==a?"ForwardRef("+a+")":"ForwardRef");case 7:return"Fragment";case 5:return b;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Qa(b);case 8:return b===za?"StrictMode":"Mode";case 22:return"Offscreen";\ncase 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"===typeof b)return b.displayName||b.name||null;if("string"===typeof b)return b}return null}function Sa(a){switch(typeof a){case "boolean":case "number":case "string":case "undefined":return a;case "object":return a;default:return""}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&"input"===a.toLowerCase()&&("checkbox"===b||"radio"===b)}\nfunction Ua(a){var b=Ta(a)?"checked":"value",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=""+a[b];if(!a.hasOwnProperty(b)&&"undefined"!==typeof c&&"function"===typeof c.get&&"function"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=""+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=""+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d="";a&&(d=Ta(a)?a.checked?"true":"false":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?"":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:"checkbox"===b.type||"radio"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,"checked",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if("number"===d){if(0===c&&""===a.value||a.value!=c)a.value=""+c}else a.value!==""+c&&(a.value=""+c);else if("submit"===d||"reset"===d){a.removeAttribute("value");return}b.hasOwnProperty("value")?cb(a,b.type,c):b.hasOwnProperty("defaultValue")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty("value")||b.hasOwnProperty("defaultValue")){var d=b.type;if(!("submit"!==d&&"reset"!==d||void 0!==b.value&&null!==b.value))return;b=""+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;""!==c&&(a.name="");a.defaultChecked=!!a._wrapperState.initialChecked;""!==c&&(a.name=c)}\nfunction cb(a,b,c){if("number"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+c&&(a.defaultValue=""+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b="");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&""!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}\nfunction lb(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?kb(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}\nvar mb,nb=function(a){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if("http://www.w3.org/2000/svg"!==a.namespaceURI||"innerHTML"in a)a.innerHTML=b;else{mb=mb||document.createElement("div");mb.innerHTML="<svg>"+b.valueOf().toString()+"</svg>";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=["Webkit","ms","Moz","O"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(""+b).trim():b+"px"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=rb(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if("object"!==typeof b.dangerouslySetInnerHTML||!("__html"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&"object"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if("function"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case "onClick":case "onClickCapture":case "onDoubleClick":case "onDoubleClickCapture":case "onMouseDown":case "onMouseDownCapture":case "onMouseMove":case "onMouseMoveCapture":case "onMouseUp":case "onMouseUpCapture":case "onMouseEnter":(d=!d.disabled)||(a=a.type,d=!("button"===a||"input"===a||"select"===a||"textarea"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&"function"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,"passive",{get:function(){Lb=!0}});window.addEventListener("test",Mb,Mb);window.removeEventListener("test",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&"function"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");\nfunction Sc(a,b){switch(a){case "focusin":case "focusout":Lc=null;break;case "dragenter":case "dragleave":Mc=null;break;case "mouseover":case "mouseout":Nc=null;break;case "pointerover":case "pointerout":Oc.delete(b.pointerId);break;case "gotpointercapture":case "lostpointercapture":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case "focusin":return Lc=Tc(Lc,a,b,c,d,e),!0;case "dragenter":return Mc=Tc(Mc,a,b,c,d,e),!0;case "mouseover":return Nc=Tc(Nc,a,b,c,d,e),!0;case "pointerover":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case "gotpointercapture":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case "cancel":case "click":case "close":case "contextmenu":case "copy":case "cut":case "auxclick":case "dblclick":case "dragend":case "dragstart":case "drop":case "focusin":case "focusout":case "input":case "invalid":case "keydown":case "keypress":case "keyup":case "mousedown":case "mouseup":case "paste":case "pause":case "play":case "pointercancel":case "pointerdown":case "pointerup":case "ratechange":case "reset":case "resize":case "seeked":case "submit":case "touchcancel":case "touchend":case "touchstart":case "volumechange":case "change":case "selectionchange":case "textInput":case "compositionstart":case "compositionend":case "compositionupdate":case "beforeblur":case "afterblur":case "beforeinput":case "blur":case "fullscreenchange":case "focus":case "hashchange":case "popstate":case "select":case "selectstart":return 1;case "drag":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "mousemove":case "mouseout":case "mouseover":case "pointermove":case "pointerout":case "pointerover":case "scroll":case "toggle":case "touchmove":case "wheel":case "mouseenter":case "mouseleave":case "pointerenter":case "pointerleave":return 4;\ncase "message":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e="value"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;"charCode"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():"unknown"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():"unknown"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if("movementX"in\na)return a.movementX;a!==yd&&(yd&&"mousemove"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return"movementY"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:"Escape",\nSpacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Nd={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",\n119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Od={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if("Unidentified"!==b)return b}return"keypress"===a.type?(a=od(a),13===a?"Enter":String.fromCharCode(a)):"keydown"===a.type||"keyup"===a.type?Nd[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return"keypress"===a.type?od(a):0},keyCode:function(a){return"keydown"===a.type||"keyup"===a.type?a.keyCode:0},which:function(a){return"keypress"===\na.type?od(a):"keydown"===a.type||"keyup"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&"CompositionEvent"in window,be=null;ia&&"documentMode"in document&&(be=document.documentMode);var ce=ia&&"TextEvent"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case "keyup":return-1!==$d.indexOf(b.keyCode);case "keydown":return 229!==b.keyCode;case "keypress":case "mousedown":case "focusout":return!0;default:return!1}}function he(a){a=a.detail;return"object"===typeof a&&"data"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case "compositionend":return he(b);case "keypress":if(32!==b.which)return null;fe=!0;return ee;case "textInput":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return"compositionend"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case "paste":return null;case "keypress":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case "compositionend":return de&&"ko"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return"input"===b?!!le[a.type]:"textarea"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,"onChange");0<b.length&&(c=new td("onChange","change",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if("change"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye="oninput"in document;if(!ye){var ze=document.createElement("div");ze.setAttribute("oninput","return;");ye="function"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent("onpropertychange",Be),qe=pe=null)}function Be(a){if("value"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){"focusin"===a?(Ae(),pe=b,qe=c,pe.attachEvent("onpropertychange",Be)):"focusout"===a&&Ae()}function De(a){if("selectionchange"===a||"keyup"===a||"keydown"===a)return te(qe)}function Ee(a,b){if("click"===a)return te(b)}function Fe(a,b){if("input"===a||"change"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He="function"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if("object"!==typeof a||null===a||"object"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&"documentMode"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,"selectionStart"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,"onSelect"),0<d.length&&(b=new td("onSelect","select",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c["Webkit"+a]="webkit"+b;c["Moz"+a]="moz"+b;return c}var We={animationend:Ve("Animation","AnimationEnd"),animationiteration:Ve("Animation","AnimationIteration"),animationstart:Ve("Animation","AnimationStart"),transitionend:Ve("Transition","TransitionEnd")},Xe={},Ye={};\nia&&(Ye=document.createElement("div").style,"AnimationEvent"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),"TransitionEvent"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze("animationend"),af=Ze("animationiteration"),bf=Ze("animationstart"),cf=Ze("transitionend"),df=new Map,ef="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,"on"+kf)}ff($e,"onAnimationEnd");ff(af,"onAnimationIteration");ff(bf,"onAnimationStart");ff("dblclick","onDoubleClick");ff("focusin","onFocus");ff("focusout","onBlur");ff(cf,"onTransitionEnd");ha("onMouseEnter",["mouseout","mouseover"]);ha("onMouseLeave",["mouseout","mouseover"]);ha("onPointerEnter",["pointerout","pointerover"]);\nha("onPointerLeave",["pointerout","pointerover"]);fa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));fa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));fa("onBeforeInput",["compositionend","keypress","textInput","paste"]);fa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));fa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));\nfa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var lf="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),mf=new Set("cancel close invalid load scroll toggle".split(" ").concat(lf));\nfunction nf(a,b,c){var d=a.type||"unknown-event";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+"__bubble";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf="_reactListening"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){"selectionchange"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf("selectionchange",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||"touchstart"!==b&&"touchmove"!==b&&"wheel"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case "keypress":if(0===od(c))break a;case "keydown":case "keyup":k=Rd;break;case "focusin":n="focus";k=Fd;break;case "focusout":n="blur";k=Fd;break;case "beforeblur":case "afterblur":k=Fd;break;case "click":if(2===c.button)break a;case "auxclick":case "dblclick":case "mousedown":case "mousemove":case "mouseup":case "mouseout":case "mouseover":case "contextmenu":k=Bd;break;case "drag":case "dragend":case "dragenter":case "dragexit":case "dragleave":case "dragover":case "dragstart":case "drop":k=\nDd;break;case "touchcancel":case "touchend":case "touchmove":case "touchstart":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case "scroll":k=vd;break;case "wheel":k=Zd;break;case "copy":case "cut":case "paste":k=Jd;break;case "gotpointercapture":case "lostpointercapture":case "pointercancel":case "pointerdown":case "pointermove":case "pointerout":case "pointerover":case "pointerup":k=Td}var t=0!==(b&4),J=!t&&"scroll"===a,x=t?null!==h?h+"Capture":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h="mouseover"===a||"pointerover"===a;k="mouseout"===a||"pointerout"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F="onMouseLeave";x="onMouseEnter";w="mouse";if("pointerout"===a||"pointerover"===a)t=Td,F="onPointerLeave",x="onPointerEnter",w="pointer";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+"leave",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+"enter",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if("select"===k||"input"===k&&"file"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&"input"===k.toLowerCase()&&("checkbox"===h.type||"radio"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);"focusout"===a&&(xa=h._wrapperState)&&\nxa.controlled&&"number"===h.type&&cb(h,"number",h.value)}xa=d?ue(d):window;switch(a){case "focusin":if(me(xa)||"true"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case "focusout":Se=Re=Qe=null;break;case "mousedown":Te=!0;break;case "contextmenu":case "mouseup":case "dragend":Te=!1;Ue(g,c,e);break;case "selectionchange":if(Pe)break;case "keydown":case "keyup":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case "compositionstart":var ba="onCompositionStart";break b;case "compositionend":ba="onCompositionEnd";\nbreak b;case "compositionupdate":ba="onCompositionUpdate";break b}ba=void 0}else ie?ge(a,c)&&(ba="onCompositionEnd"):"keydown"===a&&229===c.keyCode&&(ba="onCompositionStart");ba&&(de&&"ko"!==c.locale&&(ie||"onCompositionStart"!==ba?"onCompositionEnd"===ba&&ie&&($a=nd()):(kd=e,ld="value"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,"onBeforeInput"),\n0<d.length&&(e=new Ld("onBeforeInput","beforeinput",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+"Capture",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return("string"===typeof a?a:""+a).replace(xf,"\\n").replace(yf,"")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return"textarea"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff="function"===typeof setTimeout?setTimeout:void 0,Gf="function"===typeof clearTimeout?clearTimeout:void 0,Hf="function"===typeof Promise?Promise:void 0,Jf="function"===typeof queueMicrotask?queueMicrotask:"undefined"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,"/$"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else"$"!==c&&"$?"!==c&&"$!"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if("$"===b||"$!"===b||"$?"===b)break;if("/$"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if("$"===c||"$!"===c||"$?"===c){if(0===b)return a;b--}else"/$"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of="__reactFiber$"+Nf,Pf="__reactProps$"+Nf,uf="__reactContainer$"+Nf,of="__reactEvents$"+Nf,Qf="__reactListeners$"+Nf,Rf="__reactHandles$"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if("function"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||"Unknown",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg="";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType="DELETED";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b="head"!==b&&"body"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if("/$"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else"$"!==c&&"$!"!==c&&"$?"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if("function"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r="function"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if("function"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return"function"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;"object"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;"function"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);"function"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;"object"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;"function"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);"function"===typeof b.getDerivedStateFromProps||"function"===typeof e.getSnapshotBeforeUpdate||"function"!==typeof e.UNSAFE_componentWillMount&&"function"!==typeof e.componentWillMount||(b=e.state,\n"function"===typeof e.componentWillMount&&e.componentWillMount(),"function"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);"function"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&"function"!==typeof a&&"object"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=""+a;if(null!==b&&null!==b.ref&&"function"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if("string"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,"[object Object]"===a?"object with keys {"+Object.keys(b).join(", ")+"}":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||"object"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if("string"===typeof b&&""!==b||"number"===typeof b)return b=xh(""+b,a.mode,c),b.return=a,b;if("object"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if("string"===typeof c&&""!==c||"number"===typeof c)return null!==e?null:h(a,b,""+c,d);if("object"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if("string"===typeof d&&""!==d||"number"===typeof d)return a=a.get(c)||null,h(b,a,""+d,e);if("object"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if("function"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){"object"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if("object"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||"object"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return"string"===typeof f&&""!==f||"number"===typeof f?(f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,"");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||"$?"===c.data||"$!"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return"function"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=":"+b+"R"+c;c=Uh++;0<c&&(b+="H"+c.toString(32));b+=":"}else c=Vh++,b=":"+b+"r"+c.toString(32)+":";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c="",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e="\\nError generating stack: "+f.message+"\\n"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni="function"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if("function"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&"function"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);"function"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:""})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if("function"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if("hidden"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;"object"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q="function"===typeof m||"function"===typeof g.getSnapshotBeforeUpdate;q||"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?("function"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||"function"!==typeof g.UNSAFE_componentWillMount&&"function"!==typeof g.componentWillMount||("function"===typeof g.componentWillMount&&g.componentWillMount(),"function"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),"function"===typeof g.componentDidMount&&(b.flags|=4194308)):\n("function"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):("function"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;"object"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m="function"===typeof y||"function"===typeof g.getSnapshotBeforeUpdate)||\n"function"!==typeof g.UNSAFE_componentWillReceiveProps&&"function"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?("function"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||"function"!==typeof g.UNSAFE_componentWillUpdate&&"function"!==typeof g.componentWillUpdate||("function"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),"function"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),"function"===typeof g.componentDidUpdate&&(b.flags|=4),"function"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):("function"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),"function"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&"function"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:"$!"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:"hidden",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:"hidden",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:"visible",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:"visible",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:"visible",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if("$!"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if("$?"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case "forwards":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case "backwards":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case "together":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case "input":e=Ya(a,e);d=Ya(a,d);f=[];break;case "select":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case "textarea":e=gb(a,e);d=gb(a,d);f=[];break;default:"function"!==typeof e.onClick&&"function"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if("style"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]="")}else"dangerouslySetInnerHTML"!==l&&"children"!==l&&"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if("style"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]="");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else"dangerouslySetInnerHTML"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):"children"===l?"string"!==typeof k&&"number"!==typeof k||(f=f||[]).push(l,""+k):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&(ea.hasOwnProperty(l)?(null!=k&&"onScroll"===l&&D("scroll",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push("style",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case "hidden":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case "collapsed":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case "dialog":D("cancel",d);D("close",d);break;case "iframe":case "object":case "embed":D("load",d);break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],d);break;case "source":D("error",d);break;case "img":case "image":case "link":D("error",\nd);D("load",d);break;case "details":D("toggle",d);break;case "input":Za(d,f);D("invalid",d);break;case "select":d._wrapperState={wasMultiple:!!f.multiple};D("invalid",d);break;case "textarea":hb(d,f),D("invalid",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];"children"===g?"string"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=["children",h]):"number"===typeof h&&d.textContent!==""+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=["children",""+h]):ea.hasOwnProperty(g)&&null!=h&&"onScroll"===g&&D("scroll",d)}switch(c){case "input":Va(d);db(d,f,!0);break;case "textarea":Va(d);jb(d);break;case "select":case "option":break;default:"function"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;"http://www.w3.org/1999/xhtml"===a&&(a=kb(c));"http://www.w3.org/1999/xhtml"===a?"script"===c?(a=g.createElement("div"),a.innerHTML="<script>\\x3c/script>",a=a.removeChild(a.firstChild)):\n"string"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),"select"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case "dialog":D("cancel",a);D("close",a);e=d;break;case "iframe":case "object":case "embed":D("load",a);e=d;break;case "video":case "audio":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case "source":D("error",a);e=d;break;case "img":case "image":case "link":D("error",\na);D("load",a);e=d;break;case "details":D("toggle",a);e=d;break;case "input":Za(a,d);e=Ya(a,d);D("invalid",a);break;case "option":e=d;break;case "select":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D("invalid",a);break;case "textarea":hb(a,d);e=gb(a,d);D("invalid",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];"style"===f?sb(a,k):"dangerouslySetInnerHTML"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):"children"===f?"string"===typeof k?("textarea"!==\nc||""!==k)&&ob(a,k):"number"===typeof k&&ob(a,""+k):"suppressContentEditableWarning"!==f&&"suppressHydrationWarning"!==f&&"autoFocus"!==f&&(ea.hasOwnProperty(f)?null!=k&&"onScroll"===f&&D("scroll",a):null!=k&&ta(a,f,k,g))}switch(c){case "input":Va(a);db(a,d,!1);break;case "textarea":Va(a);jb(a);break;case "option":null!=d.value&&a.setAttribute("value",""+Sa(d.value));break;case "select":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:"function"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case "button":case "input":case "select":case "textarea":d=!!d.autoFocus;break a;case "img":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if("string"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&"hidden"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj="function"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if("function"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if("selectionStart"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent="":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}"function"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&"function"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,"function"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,"")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{"input"===h&&"radio"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];"style"===m?sb(e,q):"dangerouslySetInnerHTML"===m?nb(e,q):"children"===m?ob(e,q):ta(e,m,q,l)}switch(h){case "input":bb(e,f);break;case "textarea":ib(e,f);break;case "select":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:"",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if("function"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,"function"===typeof f.setProperty?f.setProperty("display","none","important"):f.display="none"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty("display")?k.display:null,h.style.display=\nrb("display",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?"":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,""),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case "button":case "input":case "select":case "textarea":k.autoFocus&&c.focus();break;case "img":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if("function"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&"object"===typeof k&&"function"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&("function"===typeof w.getDerivedStateFromError||null!==u&&"function"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&"function"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if("function"===typeof b.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;"object"===typeof e&&null!==e&&"function"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,""));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if("function"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if("function"===typeof a)bj(a)&&(g=1);else if("string"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if("object"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,""));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:""+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll="function"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||" react-mount-point-unstable "!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if("function"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,"",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if("function"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,"",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if("function"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case "input":bb(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+\'][type="radio"]\');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case "textarea":ib(a,c);break;case "select":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d="",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if("function"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(",");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f="",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version="18.2.0-next-9e3b772b8-20220608";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzk5LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLE9BQU8sbUJBQU8sQ0FBQyxHQUFPLEtBQUssbUJBQU8sQ0FBQyxHQUFXLEVBQUUsY0FBYyx5RUFBeUUsbUJBQW1CLG1EQUFtRCxvQ0FBb0MsMkhBQTJILHFCQUFxQixpQkFBaUIsUUFBUTtBQUN2YSxpQkFBaUIsUUFBUSxRQUFRLFdBQVc7QUFDNUM7QUFDQSxFQUFFLE9BQU8sZUFBZSwwQkFBMEIsMEJBQTBCLDhCQUE4QixTQUFTLFNBQVMscUJBQXFCLGlDQUFpQyxpQkFBaUIsdUNBQXVDLDZCQUE2QixxQ0FBcUMsNkJBQTZCLCtCQUErQjtBQUN4VyxxQkFBcUIsMERBQTBELGNBQWMsMkJBQTJCLGdCQUFnQixvQkFBb0IsdUJBQXVCLDRCQUE0QixTQUFTLDBCQUEwQix5Q0FBeUMscUJBQXFCLDBCQUEwQix1QkFBdUIsb0JBQW9CLFlBQVksbUJBQW1CLHlCQUF5QjtBQUM3YSxzS0FBc0ssZ0NBQWdDLEVBQUUsNEhBQTRILFdBQVcsbUNBQW1DLEVBQUUseUVBQXlFLDhDQUE4QztBQUMzZSw0RkFBNEYsZ0NBQWdDLEVBQUUsNlFBQTZRLDhDQUE4QztBQUN6Yiw4REFBOEQsZ0NBQWdDLEVBQUUsMkNBQTJDLGdDQUFnQyxFQUFFLGtEQUFrRCxnQ0FBZ0MsRUFBRSx3Q0FBd0MsOENBQThDLEVBQUUsdUJBQXVCLGVBQWU7QUFDL1gseWxDQUF5bEM7QUFDemxDLElBQUksZ0NBQWdDLEVBQUUsMEdBQTBHLHVCQUF1QiwwREFBMEQsRUFBRSx3REFBd0QsdUJBQXVCLGtFQUFrRSxFQUFFLCtDQUErQyw4Q0FBOEM7QUFDbmQsc0ZBQXNGLHlEQUF5RCw4Q0FBOEM7QUFDN0wscUJBQXFCLG9DQUFvQztBQUN6RCw0YkFBNGIsMEJBQTBCO0FBQ3RkLHFDQUFxQyxrQ0FBa0MsMEJBQTBCLG1DQUFtQyx1QkFBdUIsZUFBZSw2Q0FBNkMsNkJBQTZCLG1DQUFtQyx1QkFBdUIsZUFBZSxtQkFBbUIsZUFBZSxTQUFTLDJDQUEyQyxlQUFlLGdCQUFnQjtBQUNsYixpQkFBaUIsbUJBQW1CLE1BQU0sOEJBQThCLCtCQUErQixJQUFJLHFCQUFxQixlQUFlLDRDQUE0QyxlQUFlLGdCQUFnQixnREFBZ0QsSUFBSSx3QkFBd0IsU0FBUyxRQUFRLDBCQUEwQixLQUFLLElBQUksU0FBUyxTQUFTLElBQUksb0JBQW9CLEtBQUssSUFBSSxlQUFlLFNBQVMsSUFBSSxLQUFLLFNBQVMsb0NBQW9DO0FBQzNkLGdEQUFnRCx3QkFBd0IsS0FBSyxLQUFLLFdBQVcsd0JBQXdCLGlCQUFpQixnQ0FBZ0MsMkNBQTJDLHFGQUFxRixTQUFTLGtCQUFrQixRQUFRLFFBQVEsZ0NBQWdDO0FBQ2pYLGVBQWUsY0FBYyx5QkFBeUIsMEJBQTBCLDhCQUE4QixrQ0FBa0MsK0NBQStDLHdDQUF3QyxnQ0FBZ0M7QUFDdlEsZUFBZSx1QkFBdUIsNERBQTRELGdDQUFnQyxVQUFVLHlCQUF5Qix1QkFBdUIseUJBQXlCLDJCQUEyQix5QkFBeUIsNkJBQTZCLDBDQUEwQyxxREFBcUQsOERBQThELHVCQUF1QixnQkFBZ0I7QUFDMWUsc0RBQXNELFNBQVMsbUVBQW1FLHFCQUFxQixVQUFVLElBQUksZ0JBQWdCLFdBQVc7QUFDaE0sZUFBZSxhQUFhLGNBQWMsc0JBQXNCLG9EQUFvRCw4REFBOEQsbUNBQW1DLCtHQUErRyx3QkFBd0IsZ0JBQWdCLHNCQUFzQixvQkFBb0Isb0JBQW9CLHFCQUFxQix5Q0FBeUM7QUFDeGUseUJBQXlCLHNCQUFzQix5QkFBeUIsNkJBQTZCLDhCQUE4Qix5R0FBeUcsZ0NBQWdDLFlBQVksZUFBZSxpQkFBaUIscUVBQXFFLHVCQUF1QjtBQUNwWixlQUFlLGFBQWE7QUFDNUIsZUFBZSxxR0FBcUcsdUdBQXVHLG9CQUFvQiwyQkFBMkIsK0JBQStCLG9CQUFvQixpQkFBaUIsT0FBTyxnQkFBZ0IsRUFBRSwyQkFBMkIsd0JBQXdCLEVBQUUsT0FBTyxvQkFBb0IsU0FBUyxzQkFBc0IsT0FBTyx5QkFBeUI7QUFDdGYsS0FBSyxlQUFlLGVBQWUseUNBQXlDLGVBQWUsZUFBZSxzQkFBc0IsZUFBZSxtQkFBbUIsU0FBUyw4Q0FBOEMsSUFBSSxtQ0FBbUMsZUFBZSxxREFBcUQsc0NBQXNDLElBQUksK0JBQStCLFNBQVM7QUFDdFosaUJBQWlCLGdCQUFnQixXQUFXLElBQUksd0dBQXdHLEVBQUUsaUJBQWlCLDBGQUEwRiw4QkFBOEIsaUJBQWlCLGdIQUFnSCxpQkFBaUIsWUFBWTtBQUNqYyxpQkFBaUIsUUFBUSwyQkFBMkIsNEJBQTRCLGdEQUFnRCxvQ0FBb0MsbUNBQW1DLDJCQUEyQixPQUFPLDJHQUEyRztBQUNwVixtQkFBbUIsZ0VBQWdFLGFBQWEseUVBQXlFLGtDQUFrQyw0QkFBNEIsaUJBQWlCLFNBQVMsb0JBQW9CLGtEQUFrRDtBQUN2VSxtQkFBbUIsNklBQTZJO0FBQ2hLLHFCQUFxQixZQUFZLE1BQU0sS0FBSyxZQUFZLFdBQVcsbUJBQW1CLFFBQVEsV0FBVyw0R0FBNEcsS0FBSyxXQUFXLE9BQU8sUUFBUSxXQUFXLEtBQUssbUJBQW1CLGlCQUFpQiw2QkFBNkIsT0FBTyxrQ0FBa0M7QUFDOVcsaUJBQWlCLHNEQUFzRCxXQUFXLElBQUksMEVBQTBFLEVBQUUsaUJBQWlCLGNBQWMsWUFBWSxhQUFhLGlCQUFpQixZQUFZLDhCQUE4QixVQUFVLGlDQUFpQyxPQUFPLElBQUksZ0JBQWdCLElBQUksaUJBQWlCO0FBQ2hYLGlCQUFpQix1Q0FBdUMsd0dBQXdHLCtCQUErQixlQUFlLG9CQUFvQixnRUFBZ0UsZUFBZSxVQUFVLDhDQUE4Qyx1REFBdUQ7QUFDaGEsaUJBQWlCO0FBQ2pCLHNCQUFzQixrRkFBa0YseUNBQXlDLGtCQUFrQixFQUFFLEdBQUcsZUFBZSxnRkFBZ0YsS0FBSyxxQ0FBcUMscURBQXFELG9CQUFvQixhQUFhLDZCQUE2QixLQUFLLGFBQWEsOEJBQThCO0FBQ3BkLGlCQUFpQixNQUFNLG1CQUFtQix1Q0FBdUMsY0FBYyxRQUFRO0FBQ3ZHLFFBQVE7QUFDUixpSkFBaUosOEJBQThCLG9DQUFvQyx1QkFBdUIsNkNBQTZDLFlBQVksRUFBRSxFQUFFLG1CQUFtQjtBQUMxVCxpQkFBaUIsVUFBVSx1Q0FBdUMseUNBQXlDLDRCQUE0Qiw2QkFBNkIsVUFBVSxZQUFZLEVBQUUseUhBQXlIO0FBQ3JULGlCQUFpQixNQUFNLG9GQUFvRixvQ0FBb0MsdUNBQXVDLDRHQUE0RztBQUNsUyxpQkFBaUIsb0RBQW9ELFVBQVUsa0xBQWtMLGtCQUFrQixZQUFZLGVBQWUsaUNBQWlDLHlEQUF5RCxxQ0FBcUM7QUFDN2EsZUFBZSxZQUFZLDhDQUE4QyxrQkFBa0IsdUNBQXVDLGVBQWUsNkJBQTZCLGNBQWMsT0FBTyxjQUFjLFdBQVcsTUFBTSxhQUFhLFdBQVcsY0FBYyxpQkFBaUIsWUFBWSxlQUFlLFVBQVUsbUJBQW1CLG9CQUFvQixNQUFNLElBQUksaUJBQWlCLFFBQVE7QUFDeFksaUJBQWlCLGtCQUFrQix3QkFBd0IsWUFBWSx3QkFBd0IsT0FBTyxZQUFZLHNVQUFzVSxLQUFLLFFBQVEsYUFBYSxpQkFBaUI7QUFDbmUsd0NBQXdDLFNBQVMsVUFBVSxVQUFVLFVBQVUsb0NBQW9DLGVBQWUsT0FBTyxFQUFFLHNDQUFzQyx5Q0FBeUMsU0FBUyxNQUFNLCtCQUErQiw4Q0FBOEMsSUFBSSxhQUFhLFNBQVMsaUJBQWlCLG9DQUFvQyxvQkFBb0IsTUFBTSxPQUFPLCtCQUErQixNQUFNLFFBQVE7QUFDbmQsK0JBQStCLHlCQUF5QixPQUFPLE9BQU8sU0FBUyxNQUFNLFFBQVEseUJBQXlCLGtCQUFrQixlQUFlLFlBQVksb0JBQW9CLFNBQVMsWUFBWSxLQUFLLElBQUksbURBQW1ELFNBQVMsd0JBQXdCLGVBQWUsZUFBZSxzQkFBc0Isd0RBQXdELGdDQUFnQyxZQUFZLGVBQWU7QUFDaGQsZUFBZSxrQkFBa0IsT0FBTyxRQUFRLGdDQUFnQyxvQkFBb0IsaUJBQWlCLEVBQUUsZUFBZSxrQkFBa0Isa0JBQWtCLGFBQWEsV0FBVyxhQUFhLElBQUksU0FBUyxNQUFNLHNCQUFzQixjQUFjLEVBQUUsRUFBRSx3QkFBd0Isd0JBQXdCLFlBQVkscUJBQXFCLCtCQUErQixLQUFLLHVCQUF1QixFQUFFLEVBQUUsVUFBVSxLQUFLLElBQUksSUFBSSxNQUFNLFVBQVUsS0FBSyxJQUFJLElBQUksTUFBTSxZQUFZLE9BQU8sY0FBYyxFQUFFLEVBQUU7QUFDemYsR0FBRyxLQUFLLElBQUksSUFBSSxNQUFNLFVBQVUsS0FBSyxJQUFJLElBQUksTUFBTSxZQUFZLDRCQUE0Qix3Q0FBd0MsaUNBQWlDLG1DQUFtQyxlQUFlLFFBQVEsMkJBQTJCLGVBQWUsaUNBQWlDLGNBQWMsU0FBUyxFQUFFLFlBQVkscUJBQXFCLFlBQVk7QUFDL1csNFZBQTRWLGVBQWUsb0RBQW9ELDhEQUE4RDtBQUM3ZCx3REFBd0QsZUFBZSxPQUFPLGtDQUFrQztBQUNoSCxlQUFlLGFBQWEsZ0JBQWdCLGdCQUFnQixnQkFBZ0IsZ0JBQWdCLGtCQUFrQixrQkFBa0IsMkxBQTJMLHVGQUF1RixnQ0FBZ0MsZ0NBQWdDLGdDQUFnQztBQUNsZixrQkFBa0IsaUJBQWlCLHFCQUFxQixrQkFBa0IseURBQXlELFVBQVUsV0FBVyxzQ0FBc0MsMkNBQTJDLGtCQUFrQixtRkFBbUYscUJBQXFCLG1CQUFtQixvQ0FBb0MsSUFBSSxpQ0FBaUM7QUFDL2IsaUJBQWlCLFVBQVUsa0NBQWtDLDhNQUE4TSw2RUFBNkUsc0VBQXNFO0FBQzlaLGlCQUFpQixnRkFBZ0YsSUFBSSxFQUFFLDZCQUE2QixXQUFXLHFDQUFxQywrQkFBK0IsT0FBTyxlQUFlLDZCQUE2Qix5Q0FBeUMsY0FBYyxTQUFTLE9BQU8sMEJBQTBCLFNBQVMsZUFBZSxpQkFBaUIsS0FBSyxjQUFjO0FBQ25hLG1CQUFtQixrQkFBa0Isb0RBQW9ELGVBQWUsV0FBVyxPQUFPLGlCQUFpQix3QkFBd0IsaUJBQWlCLG1CQUFtQixnQkFBZ0Isa0JBQWtCLHNCQUFzQixvQkFBb0Isa0JBQWtCLG1CQUFtQix3QkFBd0IsSUFBSSxFQUFFLHNCQUFzQixPQUFPLFFBQVEsUUFBUTtBQUNuWSxpQkFBaUIsMEJBQTBCLHNCQUFzQixFQUFFLEVBQUUsc0JBQXNCLHNCQUFzQixPQUFPLFFBQVEsZUFBZSxNQUFNLGtEQUFrRDtBQUN2TSxpQkFBaUIsVUFBVSx1Q0FBdUMsTUFBTSwwQ0FBMEMsTUFBTSx5Q0FBeUMsTUFBTSw0REFBNEQsTUFBTTtBQUN6Tyx5QkFBeUIseUNBQXlDLGlGQUFpRix1Q0FBdUMsc0JBQXNCLHFCQUFxQix1Q0FBdUM7QUFDNVEsdUJBQXVCLFVBQVUsNkNBQTZDLCtDQUErQywrQ0FBK0MscUNBQXFDLHdDQUF3QyxTQUFTLHlGQUF5RjtBQUMzVixlQUFlLG1CQUFtQixhQUFhLFlBQVksK0JBQStCLHFCQUFxQixjQUFjLHlCQUF5QixNQUFNLEVBQUUsUUFBUSwrREFBK0QscURBQXFELFFBQVE7QUFDbFMsZUFBZSwrQkFBK0IsNkJBQTZCLFdBQVcsRUFBRSwrREFBK0QsYUFBYSxnQkFBZ0Isa0NBQWtDLEtBQUssMEJBQTBCLFFBQVEscURBQXFELFVBQVUsU0FBUyxtQkFBbUIsbUJBQW1CLGNBQWMsTUFBTSw2QkFBNkIsNkJBQTZCLDZCQUE2QixlQUFlO0FBQ3JlLGlCQUFpQjtBQUNqQixlQUFlLGNBQWMsZUFBZSxnQkFBZ0IsWUFBWSxZQUFZLFlBQVksS0FBSyxZQUFZLHFDQUFxQyxvQkFBb0Isb0JBQW9CLG9CQUFvQixjQUFjLGNBQWMsUUFBUSxZQUFZLGdEQUFnRCxLQUFLLDBDQUEwQyxzQ0FBc0M7QUFDdlkscUJBQXFCLHdCQUF3QixtQkFBbUIsSUFBSSxnQkFBZ0IsUUFBUSxxQkFBcUIscUJBQXFCLHdCQUF3QixtQkFBbUIsSUFBSSxnQkFBZ0IsUUFBUTtBQUM3TSxxQkFBcUIsT0FBTyxrQkFBa0IsbUNBQW1DLDBDQUEwQyx1Q0FBdUMsS0FBSyxTQUFTLEVBQUUsWUFBWSxnQkFBZ0IsY0FBYyx5QkFBeUIsZUFBZSxJQUFJLDhCQUE4Qix1QkFBdUI7QUFDN1QscUJBQXFCLFFBQVEsUUFBUSxRQUFRLHVDQUF1Qyx3QkFBd0IsUUFBUSxxQkFBcUIsT0FBTyxlQUFlLGtHQUFrRyxPQUFPLHFCQUFxQixLQUFLO0FBQ2xTLGVBQWUsVUFBVSxzMEJBQXMwQjtBQUMvMUIsNEJBQTRCLGlCQUFpQixpQkFBaUIsMEJBQTBCLHlCQUF5QixrQkFBa0IsbUJBQW1CLDRCQUE0QixjQUFjLGdCQUFnQiwwRUFBMEUsUUFBUSxpQkFBaUIsS0FBSyxVQUFVLFFBQVEsc0JBQXNCLEtBQUs7QUFDclcsZUFBZSxnQkFBZ0Isd0RBQXdELGVBQWUseUJBQXlCLGNBQWMsU0FBUyxjQUFjO0FBQ3BLLGVBQWUsc0JBQXNCLGtCQUFrQixtQkFBbUIsWUFBWSxtQkFBbUIsY0FBYyx3QkFBd0IsaUVBQWlFLCtGQUErRiw2QkFBNkIsWUFBWSxlQUFlLDBCQUEwQix5QkFBeUIsdUJBQXVCO0FBQ2piLCtDQUErQyw0QkFBNEIsdUJBQXVCLCtIQUErSCxxQkFBcUIsaUJBQWlCLEVBQUU7QUFDelEsUUFBUSwwREFBMEQsK0JBQStCLGdDQUFnQyxrQkFBa0IsS0FBSyxnQkFBZ0IsNEJBQTRCLEtBQUssaUtBQWlLLHVHQUF1Ryx1QkFBdUI7QUFDeGUscUJBQXFCLGtHQUFrRyxVQUFVLHVCQUF1QixzQ0FBc0MsbUJBQW1CLEtBQUssZUFBZSxtQkFBbUIsS0FBSyxnQkFBZ0IsbUJBQW1CLEtBQUssOENBQThDLG1CQUFtQixLQUFLLDBCQUEwQixnRUFBZ0UsbUJBQW1CLEtBQUssT0FBTyxnQkFBZ0I7QUFDcGYsOExBQThMLEtBQUs7QUFDbk0sMEZBQTBGLEtBQUssZ0VBQWdFLGVBQWUsdUJBQXVCLG9FQUFvRSxjQUFjO0FBQ3ZSLFdBQVcsS0FBSyxnQkFBZ0IsVUFBVSx1QkFBdUIsK0JBQStCLGdKQUFnSixzSEFBc0gsa0NBQWtDLHFCQUFxQix1REFBdUQsbUJBQW1CO0FBQ3ZlLCtEQUErRCxtQkFBbUIsS0FBSywrR0FBK0csbUJBQW1CLEtBQUssdUdBQXVHLG1CQUFtQixLQUFLLDZDQUE2QyxtQkFBbUIsS0FBSyxtQkFBbUIsK0RBQStEO0FBQ3BmLG1CQUFtQiw4RkFBOEYsc0JBQXNCLHVFQUF1RSwwREFBMEQ7QUFDeFEsaUJBQWlCLFVBQVUsOENBQThDLHNDQUFzQywwREFBMEQsa0JBQWtCLGVBQWUsV0FBVyxrREFBa0QsVUFBVSxpQkFBaUIsVUFBVSxtQ0FBbUMsNENBQTRDLE1BQU0sVUFBVSxtREFBbUQ7QUFDOWIsaUJBQWlCLG1GQUFtRixVQUFVLHlCQUF5QiwyRUFBMkUseUNBQXlDLCtDQUErQyxZQUFZLDZEQUE2RDtBQUNuWCxRQUFRLG1KQUFtSixlQUFlLDhDQUE4QyxvREFBb0QscUJBQXFCLE1BQU0sbUJBQW1CLDREQUE0RCxvQkFBb0IsR0FBRyxvQkFBb0IsZUFBZSxRQUFRLGVBQWUsWUFBWTtBQUNuZCxpQkFBaUIseUJBQXlCLFVBQVUsT0FBTyxPQUFPLE9BQU8sNEJBQTRCLFFBQVEscUNBQXFDLGtDQUFrQyxHQUFHLGtDQUFrQyxNQUFNLFdBQVcseURBQXlELGNBQWMsdURBQXVELGVBQWUscUNBQXFDLFNBQVMsaUJBQWlCO0FBQ3RiLG1CQUFtQiwwRkFBMEYsZUFBZSxtRUFBbUUsaUJBQWlCLDRCQUE0QixpQkFBaUIsMENBQTBDLGlCQUFpQiwrQ0FBK0M7QUFDdlcsaUJBQWlCLG9CQUFvQix5RUFBeUUsc0NBQXNDLGdDQUFnQyxRQUFRLFdBQVcsS0FBSyxXQUFXLDBDQUEwQyxTQUFTLGVBQWUsS0FBSyxnQkFBZ0IsZ0JBQWdCO0FBQzlULGlCQUFpQixZQUFZLElBQUksVUFBVSxFQUFFLEVBQUUsbUJBQW1CLHlCQUF5QixxQkFBcUIsbUJBQW1CLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRSxrQkFBa0IsZ0JBQWdCLFFBQVEsZUFBZSxTQUFTLFNBQVMsaUJBQWlCO0FBQy9PLGNBQWMsd0JBQXdCLGlDQUFpQyxFQUFFLElBQUksc0RBQXNELFNBQVMsS0FBSyx1QkFBdUIsV0FBVyxpQkFBaUIsU0FBUyxlQUFlLDhDQUE4QztBQUMxUSxlQUFlLDhDQUE4QyxxRUFBcUUsNElBQTRJLCtFQUErRSxtQkFBbUIsaURBQWlELHFDQUFxQyw4QkFBOEIsVUFBVTtBQUM5ZSxHQUFHLHdSQUF3UixLQUFLLFFBQVEsZUFBZSx5QkFBeUIsNENBQTRDLEVBQUUsdUNBQXVDLFFBQVEsV0FBVztBQUN4YjtBQUNBLG1CQUFtQiwrREFBK0QsK0RBQStELDBDQUEwQyw2RUFBNkUsb0dBQW9HLHNHQUFzRyxvQkFBb0I7QUFDdGUsaUJBQWlCLFNBQVMsbUNBQW1DLHlCQUF5QixtQkFBbUIsU0FBUyxRQUFRLG1NQUFtTSxNQUFNO0FBQ25VLG9QQUFvUCxlQUFlLHNCQUFzQixtQkFBbUIsY0FBYyw2REFBNkQsU0FBUztBQUNoWSxpQkFBaUIsWUFBWSxVQUFVLGFBQWEsYUFBYSxNQUFNLHFFQUFxRSxlQUFlLHdCQUF3Qiw4QkFBOEIsMEJBQTBCLCtCQUErQix3QkFBd0Isd0JBQXdCLHlCQUF5Qiw0Q0FBNEMsNENBQTRDO0FBQzNhLGtEQUFrRCw4RkFBOEYsaUhBQWlILHNFQUFzRSw2RkFBNkY7QUFDcGEsbUdBQW1HO0FBQ25HLG1CQUFtQiw4QkFBOEIsa0JBQWtCLGlCQUFpQjtBQUNwRixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsS0FBSyxxQkFBcUIsY0FBYyxHQUFHLGFBQWEsMEJBQTBCLEtBQUssS0FBSywwQ0FBMEMsYUFBYSwyQ0FBMkMsVUFBVSxJQUFJLGFBQWEsV0FBVyxLQUFLLE9BQU8sYUFBYSxrQkFBa0IsYUFBYSwyQ0FBMkMsVUFBVSxNQUFNO0FBQzNZLGdCQUFnQixZQUFZLDhCQUE4QixtQkFBbUIsa0NBQWtDLG1CQUFtQixRQUFRLFVBQVUsWUFBWSw2REFBNkQsZUFBZSxXQUFXLFNBQVMsdUJBQXVCLDBEQUEwRCxFQUFFLHVDQUF1QztBQUMxWCxxQkFBcUIsY0FBYyxnQkFBZ0IsTUFBTSxZQUFZLE1BQU0sYUFBYSxxQkFBcUIsU0FBUyw0REFBNEQscUNBQXFDLHFCQUFxQixnRUFBZ0UsVUFBVTtBQUN0VCx1QkFBdUIsUUFBUSwwQ0FBMEMsRUFBRSxtQkFBbUIsWUFBWSxpQkFBaUIsZ0NBQWdDLGlEQUFpRCx3QkFBd0IsU0FBUyxFQUFFLFlBQVksOEZBQThGLFdBQVcsS0FBSyxTQUFTLEVBQUUsUUFBUSxtQkFBbUIsUUFBUSxpQkFBaUIsTUFBTSxXQUFXLGdCQUFnQixXQUFXLGNBQWM7QUFDbGUsR0FBRyxnQkFBZ0IsZUFBZSxhQUFhLFVBQVUscUNBQXFDLGlDQUFpQyxNQUFNLHlCQUF5QixLQUFLLE1BQU0seUJBQXlCLEtBQUssTUFBTSx3Q0FBd0MsTUFBTSxxQ0FBcUMsMElBQTBJLE1BQU07QUFDaGIsR0FBRyxNQUFNLDJFQUEyRSxNQUFNLDZCQUE2QixNQUFNLGFBQWEsTUFBTSxtQkFBbUIsTUFBTSxrQkFBa0IsTUFBTSx5Q0FBeUMsTUFBTSx5S0FBeUssbUVBQW1FLEtBQUssY0FBYztBQUMvZSxFQUFFLEVBQUUsSUFBSSxrQkFBa0IsNEVBQTRFLFdBQVcsV0FBVywyQ0FBMkMsb0JBQW9CLElBQUksY0FBYyxHQUFHLHFDQUFxQyxtQ0FBbUMseUVBQXlFLFNBQVMsMEVBQTBFLE1BQU07QUFDMWIsZ0RBQWdELGdCQUFnQixVQUFVLEtBQUssaUJBQWlCLGlCQUFpQixVQUFVLDhGQUE4RixrQkFBa0Isa0JBQWtCLDJCQUEyQixXQUFXLGtCQUFrQixPQUFPLHlFQUF5RSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFLFlBQVksSUFBSSxRQUFRLEVBQUUsWUFBWSxLQUFLLE1BQU0sYUFBYSxLQUFLLE1BQU07QUFDbmYsVUFBVSxLQUFLLElBQUksRUFBRSw0Q0FBNEMsUUFBUSxRQUFRLE9BQU8sWUFBWSx5QkFBeUIscUNBQXFDLEdBQUcsaUJBQWlCLHVDQUF1Qyx3REFBd0QsMEJBQTBCLEtBQUssTUFBTSxVQUFVLGdHQUFnRyxxQkFBcUIsYUFBYSxRQUFRLGNBQWM7QUFDNWQseURBQXlELGtCQUFrQixVQUFVLHlFQUF5RSxNQUFNLDhCQUE4QixNQUFNLHVCQUF1QixNQUFNLHVEQUF1RCxVQUFVLE1BQU0sbUNBQW1DLHNDQUFzQyxPQUFPLFNBQVMsVUFBVSxvREFBb0QsUUFBUTtBQUMzYyxRQUFRLGtEQUFrRCxRQUFRLFVBQVUsbUdBQW1HLGlOQUFpTixzQkFBc0IscURBQXFEO0FBQzNjLHNFQUFzRSxvQkFBb0IsYUFBYSxRQUFRLEVBQUUsbUJBQW1CLE9BQU8sdUNBQXVDLGlCQUFpQiwyQkFBMkIsU0FBUyxFQUFFLHNCQUFzQix3R0FBd0csV0FBVyxTQUFTLGVBQWUsd0JBQXdCLGNBQWMsb0JBQW9CO0FBQ3BjLHVCQUF1Qiw0QkFBNEIsZ0JBQWdCLEVBQUUsb0NBQW9DLHlCQUF5QixpSEFBaUgsV0FBVyxzQkFBc0Isb0JBQW9CLEVBQUUsb0NBQW9DLGVBQWUsbUVBQW1FLG1CQUFtQixRQUFRLHFDQUFxQztBQUNoZSxvQkFBb0IsaUJBQWlCO0FBQ3JDLHVQQUF1UCwwQ0FBMEMsSUFBSSxlQUFlLHNCQUFzQixTQUFTO0FBQ25WLGlCQUFpQixZQUFZLEdBQUcsb0JBQW9CLGlCQUFpQiwyQ0FBMkMsVUFBVSxpQkFBaUIsTUFBTSxPQUFPLElBQUkscUNBQXFDLElBQUksU0FBUyxNQUFNLGVBQWUsS0FBSyxRQUFRLGlCQUFpQixpQkFBaUIsc0JBQXNCLFVBQVUsU0FBUyxxQ0FBcUMseUJBQXlCO0FBQ3pYLGVBQWUsb0JBQW9CLFlBQVksRUFBRSxFQUFFLG1CQUFtQixhQUFhLGdDQUFnQyxrQkFBa0IsSUFBSSxrQkFBa0Isb0JBQW9CLFlBQVk7QUFDM0wsZUFBZSxZQUFZLGNBQWMsdUJBQXVCLEVBQUUsRUFBRSxtQkFBbUIsY0FBYyx3REFBd0QsU0FBUyxFQUFFLG9CQUFvQixRQUFRLFNBQVMsSUFBSSxlQUFlLFlBQVksZUFBZSxlQUFlLDZEQUE2RCxlQUFlLDJDQUEyQyxvQkFBb0IsZUFBZSxtQkFBbUIsZ0JBQWdCLGVBQWUsT0FBTztBQUM3ZCxjQUFjLDBDQUEwQyxnQkFBZ0IsS0FBSyxpQkFBaUIsWUFBWSxTQUFTLDBCQUEwQixpQkFBaUIsMEJBQTBCLGdCQUFnQixrQkFBa0IsMkdBQTJHLFFBQVEsR0FBRyxxQkFBcUIsaUhBQWlIO0FBQ3RkLGVBQWUsc0JBQXNCLDRCQUE0QixjQUFjLE1BQU0sS0FBSyxtQkFBbUIsc0NBQXNDLE9BQU8sUUFBUSxtQkFBbUIsa0JBQWtCLHNCQUFzQixrREFBa0Qsc0JBQXNCLG1FQUFtRSxXQUFXO0FBQ25YLGVBQWUsbUVBQW1FLGFBQWEsT0FBTyxpQkFBaUIsU0FBUyxtQkFBbUIsa0JBQWtCLDBCQUEwQix1RkFBdUYsUUFBUSx3QkFBd0IsZUFBZSw0QkFBNEIsZUFBZSxNQUFNO0FBQ3RYLGNBQWMsbUJBQW1CLE1BQU0sWUFBWSxJQUFJLFNBQVMsUUFBUSxXQUFXLEtBQUssV0FBVyxXQUFXLGdCQUFnQixRQUFRLE1BQU0sU0FBUyxpREFBaUQsUUFBUSxXQUFXLFlBQVksMERBQTBELGlCQUFpQixZQUFZLFlBQVksS0FBSztBQUM3VSxtQkFBbUIsWUFBWSxZQUFZLFlBQVksS0FBSyxTQUFTLEtBQUssaUJBQWlCLFdBQVcsS0FBSyxpQkFBaUIsU0FBUyxZQUFZLDRCQUE0QixNQUFNLEtBQUssd0JBQXdCLE9BQU8seUJBQXlCLGVBQWUscUNBQXFDLGVBQWUsS0FBSyxPQUFPLGlEQUFpRCxLQUFLLE9BQU8seUVBQXlFO0FBQ3JjLGlCQUFpQix3QkFBd0Isd0JBQXdCLGNBQWMsV0FBVyxjQUFjO0FBQ3hHLGlCQUFpQixjQUFjLG9CQUFvQixvRUFBb0UsK0RBQStELHVHQUF1Ryw4REFBOEQsa0JBQWtCLHVCQUF1QixnREFBZ0Q7QUFDcGIsWUFBWSxrQkFBa0IsZUFBZSx5Q0FBeUMsZUFBZSxNQUFNLFNBQVMsTUFBTSxRQUFRLGFBQWEsNkJBQTZCLG9CQUFvQixTQUFTLHdEQUF3RCxLQUFLLDZCQUE2Qix3QkFBd0IsS0FBSyxPQUFPLGVBQWUsZUFBZSwyQ0FBMkMsWUFBWTtBQUM1WixlQUFlLG1CQUFtQiwyQkFBMkIsTUFBTSxnR0FBZ0csY0FBYyxrQ0FBa0MsS0FBSyxFQUFFLDZCQUE2QixNQUFNLGVBQWUsa0JBQWtCLDZCQUE2QiwwQkFBMEIsR0FBRyxnQkFBZ0IsUUFBUSxFQUFFLEVBQUUsbUJBQW1CLGFBQWEsYUFBYSxVQUFVLHFCQUFxQixRQUFRLElBQUkscUNBQXFDLGdCQUFnQjtBQUNqZ0IsTUFBTSw0Q0FBNEMsU0FBUyxjQUFjLGFBQWEsRUFBRSxxQkFBcUIsY0FBYyxXQUFXLEtBQUssZUFBZSw0QkFBNEIsa0NBQWtDLGlCQUFpQixzQkFBc0IsTUFBTSxJQUFJLGlCQUFpQiwwQ0FBMEMsU0FBUyxTQUFTLHdDQUF3QyxjQUFjLGNBQWMsZUFBZSxpQkFBaUIsTUFBTTtBQUNoYyxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsa0JBQWtCLHFIQUFxSCxlQUFlLFlBQVksaUJBQWlCLEtBQUssV0FBVyxpQkFBaUI7QUFDdlAsZUFBZSxzQkFBc0IsZ0JBQWdCLG9DQUFvQyxZQUFZLGlDQUFpQyxLQUFLLGlCQUFpQix3QkFBd0Isa0JBQWtCLFNBQVMsWUFBWSxlQUFlLDRCQUE0QixxQkFBcUIsb0JBQW9CLG1EQUFtRCxnQkFBZ0I7QUFDbFgsaUJBQWlCLFdBQVcsa0JBQWtCLHVCQUF1QixJQUFJLGVBQWUsU0FBUywwRUFBMEUsa0NBQWtDLFVBQVUsZUFBZSxlQUFlLDJFQUEyRSxzQ0FBc0M7QUFDdFcsaUJBQWlCLGdCQUFnQixtQ0FBbUMsMEhBQTBILEVBQUUsaUJBQWlCLE9BQU87QUFDeE4sbUJBQW1CLG9CQUFvQix3QkFBd0IsV0FBVyxjQUFjLGdCQUFnQiwyQ0FBMkMsWUFBWSxlQUFlLGdCQUFnQixtREFBbUQsZ0JBQWdCLGVBQWUsbUJBQW1CLGdCQUFnQiwyQ0FBMkMsY0FBYyxrQkFBa0IsS0FBSyxVQUFVO0FBQzdZLGlCQUFpQixrQ0FBa0Msc0NBQXNDLGtCQUFrQixvQkFBb0IsYUFBYSxHQUFHLE9BQU8sNkZBQTZGLDBCQUEwQixTQUFTLGdCQUFnQiwwQkFBMEIsV0FBVyxHQUFHLDRGQUE0RixnQkFBZ0IsT0FBTyxtQkFBbUI7QUFDcGQsRUFBRTtBQUNGLHFCQUFxQixvQkFBb0IsTUFBTSw4REFBOEQsYUFBYSxzQkFBc0IsaUJBQWlCLFlBQVksc0JBQXNCLElBQUksa0JBQWtCLGlIQUFpSCxhQUFhLGtCQUFrQixJQUFJLFdBQVcsSUFBSSxHQUFHLDJCQUEyQixjQUFjLHFCQUFxQjtBQUM3YixVQUFVLEVBQUUsR0FBRyxZQUFZLElBQUksSUFBSSxjQUFjLG1CQUFtQiwwQkFBMEIsZ0JBQWdCLFFBQVEsSUFBSSxRQUFRLGtDQUFrQyxtQkFBbUIsd0NBQXdDLGdDQUFnQyxNQUFNLE1BQU0sUUFBUSxjQUFjLDBGQUEwRixRQUFRLDZFQUE2RTtBQUNoZCxTQUFTLGlEQUFpRCx1RUFBdUUsU0FBUyxnQkFBZ0IsY0FBYyxvQkFBb0IsbUJBQW1CLHVCQUF1QixhQUFhLElBQUksc0JBQXNCLGFBQWEsa0NBQWtDLE1BQU0sVUFBVTtBQUM1VSxtQkFBbUIsWUFBWSxlQUFlLG9CQUFvQixXQUFXLEtBQUssd0JBQXdCLGFBQWEsZ0JBQWdCLElBQUksK0NBQStDLFlBQVksK0JBQStCLHFCQUFxQixrQkFBa0IsU0FBUyw2QkFBNkIsTUFBTSxrQkFBa0I7QUFDMVUsUUFBUSxzQkFBc0IseUNBQXlDLGlDQUFpQyxvQkFBb0IsNEJBQTRCLFlBQVkscUNBQXFDLFlBQVksa0NBQWtDLHFDQUFxQyxvQkFBb0IsNEJBQTRCLFFBQVEsWUFBWSxxQ0FBcUMsWUFBWSxrQ0FBa0Msa0NBQWtDLG9CQUFvQjtBQUN6ZSxnQkFBZ0IsUUFBUSxxQ0FBcUMsWUFBWSxvQ0FBb0MsMkJBQTJCLGNBQWM7QUFDdEosbUJBQW1CLGNBQWMsb0JBQW9CLG9IQUFvSCxhQUFhLDhEQUE4RCxhQUFhLGNBQWMsb0JBQW9CLGlIQUFpSDtBQUNwWixxQkFBcUIsVUFBVSxrRkFBa0YsZ0dBQWdHO0FBQ2pOLHFCQUFxQixrQkFBa0IsVUFBVSx3QkFBd0IsVUFBVSxNQUFNLG9CQUFvQix1RkFBdUYsd0JBQXdCLDZCQUE2Qiw2REFBNkQ7QUFDdFQseU9BQXlPO0FBQ3pPLG1CQUFtQixRQUFRLHlEQUF5RCxhQUFhLFdBQVcsTUFBTSxpQ0FBaUMsa0JBQWtCLDRCQUE0QixlQUFlLHdGQUF3RixjQUFjLGFBQWEsb0JBQW9CLEVBQUUsNkJBQTZCLGVBQWUsU0FBUywyQ0FBMkMsb0NBQW9DO0FBQzdkLGlCQUFpQixvQ0FBb0MsMERBQTBELDhCQUE4QixPQUFPLGVBQWUsY0FBYztBQUNqTCxlQUFlLGdCQUFnQixNQUFNLGtCQUFrQixrREFBa0QsZ0JBQWdCLGtCQUFrQixLQUFLLFNBQVMsb0JBQW9CLFlBQVksZ0JBQWdCLGNBQWMsU0FBUywwREFBMEQsU0FBUyxnQkFBZ0IsVUFBVSxVQUFVLGVBQWUsU0FBUyxrQkFBa0IsVUFBVSxnQ0FBZ0MsY0FBYyxrREFBa0QsV0FBVyxTQUFTLGNBQWM7QUFDN2YsaUNBQWlDLFNBQVMsb0JBQW9CLDREQUE0RCxTQUFTLFdBQVcsU0FBUyxvQkFBb0IsYUFBYSxpREFBaUQsb0pBQW9KLHlDQUF5QyxnQkFBZ0IsV0FBVyxTQUFTLG9CQUFvQjtBQUM5ZCxnSUFBZ0ksc0JBQXNCLFdBQVcsU0FBUyxzQkFBc0IsOERBQThELFNBQVMsV0FBVyxTQUFTLGtCQUFrQiw0RkFBNEYsa0NBQWtDLG1CQUFtQjtBQUM5YixnQ0FBZ0MsNkNBQTZDLHNCQUFzQiw0QkFBNEIsMERBQTBELFFBQVEsWUFBWSxvQkFBb0IsMEJBQTBCLHVGQUF1RixrQ0FBa0MsbUJBQW1CLHlDQUF5Qyx5Q0FBeUM7QUFDemQsbUJBQW1CLHFEQUFxRCxRQUFRLFlBQVksc0JBQXNCLDBGQUEwRixrQ0FBa0MsbUJBQW1CLDhEQUE4RCw4REFBOEQsc0JBQXNCLGdDQUFnQyx3REFBd0QsUUFBUTtBQUNuZixvQkFBb0IsdUNBQXVDLHFCQUFxQixLQUFLLG1DQUFtQyxvQkFBb0IsYUFBYSxnQkFBZ0IsTUFBTSxpQ0FBaUMsV0FBVyx5QkFBeUIsSUFBSSxJQUFJLDJDQUEyQyxhQUFhLEtBQUssV0FBVyxzRUFBc0UsV0FBVyxTQUFTLGFBQWEsV0FBVztBQUN0Yix3REFBd0QseUJBQXlCLGNBQWMsRUFBRSxXQUFXLFNBQVMsb0JBQW9CLFlBQVksNkNBQTZDLFlBQVksK0JBQStCLDZDQUE2QyxrQkFBa0IsZ0JBQWdCLG1DQUFtQyx1QkFBdUIsYUFBYSxnQkFBZ0IsTUFBTSxpQ0FBaUMsV0FBVyx5QkFBeUIsSUFBSSxJQUFJO0FBQ3RlLGdCQUFnQixhQUFhLEtBQUssUUFBUSxvRkFBb0YsV0FBVyxTQUFTLGFBQWEsUUFBUSw4SUFBOEkseUJBQXlCLGNBQWMsRUFBRSxXQUFXLFNBQVMsb0JBQW9CLCtFQUErRSxrQ0FBa0MsbUJBQW1CLFdBQVc7QUFDcmhCLFVBQVUsU0FBUyxFQUFFLGNBQWMsU0FBUyxXQUFXLGNBQWMsZUFBZSx3QkFBd0IsV0FBVyxJQUFJLFNBQVMsMkZBQTJGLGVBQWUsZUFBZSxnQkFBZ0IsV0FBVyxJQUFJLFFBQVEsT0FBTyxNQUFNLFlBQVksWUFBWSw2SUFBNkksWUFBWSxXQUFXLFlBQVk7QUFDemYsRUFBRSxFQUFFLHVIQUF1SCxlQUFlLHNCQUFzQixXQUFXLElBQUksUUFBUSxLQUFLLE9BQU8sTUFBTSxZQUFZLFlBQVksaUJBQWlCLFdBQVcsSUFBSSxZQUFZLGdEQUFnRCwyQkFBMkIsMkJBQTJCLFFBQVE7QUFDM1gsc0RBQXNELFNBQVMsNkJBQTZCLCtCQUErQixlQUFlLDhCQUE4QixTQUFTLGlCQUFpQixRQUFRLFFBQVEsU0FBUyxhQUFhLFVBQVUsa0VBQWtFLE1BQU0sNEVBQTRFLE1BQU0sUUFBUSxjQUFjLE1BQU0sTUFBTTtBQUM5YSxlQUFlLGVBQWUscUJBQXFCLG1CQUFtQix5QkFBeUIsZUFBZSw4QkFBOEI7QUFDNUksZUFBZSxZQUFZLFNBQVMsRUFBRSxlQUFlLHNCQUFzQiw4RUFBOEUsMERBQTBELDhCQUE4Qix3QkFBd0IsaUJBQWlCLFVBQVUsU0FBUyxlQUFlLEtBQUssaUJBQWlCLEVBQUUsNkNBQTZDLFdBQVcsMEJBQTBCLFlBQVksWUFBWTtBQUM5YixjQUFjLFlBQVksWUFBWSw2Q0FBNkMsWUFBWSwrR0FBK0csYUFBYSxxQkFBcUIsaUJBQWlCLHFCQUFxQixZQUFZLHVCQUF1QiwrQkFBK0I7QUFDeFYseUJBQXlCLEtBQUssSUFBSSxxQkFBcUIsbUJBQW1CLFVBQVUsa0RBQWtELFNBQVMsT0FBTyxJQUFJLEdBQUcsTUFBTSxLQUFLLDZCQUE2QixLQUFLLFNBQVMsbUJBQW1CLGNBQWMsU0FBUyxVQUFVLGNBQWMsMEJBQTBCLEtBQUssV0FBVyxNQUFNLHlCQUF5QixTQUFTLGNBQWMsYUFBYSxLQUFLO0FBQ3ZZLGNBQWMsT0FBTyx1RUFBdUUsd0NBQXdDLFNBQVMsY0FBYyxhQUFhLGtCQUFrQixnQ0FBZ0MsY0FBYyxzQ0FBc0Msb0JBQW9CLEtBQUssZ0NBQWdDLElBQUksR0FBRyxtR0FBbUcsd0NBQXdDO0FBQ3pkLGlCQUFpQjtBQUNqQixlQUFlLHFCQUFxQixnQ0FBZ0Msd0JBQXdCLGtDQUFrQyxhQUFhLGFBQWEsYUFBYSxjQUFjLFNBQVMsZ0JBQWdCLGVBQWUsYUFBYSxTQUFTLGNBQWMsd0JBQXdCLEdBQUcsYUFBYSxtQ0FBbUMsdUZBQXVGLCtDQUErQyxLQUFLLE9BQU87QUFDNWQsbUNBQW1DLGdDQUFnQyxXQUFXLE1BQU0sU0FBUyx1QkFBdUIsc0JBQXNCLCtCQUErQixrQkFBa0IsY0FBYyxjQUFjLHNCQUFzQixnQkFBZ0IsYUFBYSxJQUFJLHNDQUFzQyxhQUFhLDJCQUEyQjtBQUM1VixlQUFlLHFCQUFxQixnQ0FBZ0Msd0JBQXdCLCtDQUErQyxhQUFhLGVBQWUsZUFBZSw0QkFBNEIsYUFBYSwrQkFBK0Isa0JBQWtCLG9DQUFvQyxzQkFBc0IsWUFBWTtBQUN0VixpQkFBaUIsOENBQThDLDZCQUE2QixVQUFVLDRCQUE0QiwwREFBMEQsY0FBYyx3Q0FBd0MsZ0NBQWdDLHVCQUF1QixTQUFTLG1CQUFtQixlQUFlLEdBQUcsdUJBQXVCLGdCQUFnQixhQUFhLDRCQUE0QjtBQUN2YSxxQkFBcUIsVUFBVSxnQkFBZ0IsYUFBYSxtQkFBbUIsb0JBQW9CLGFBQWEsRUFBRSxlQUFlLG9CQUFvQixVQUFVLElBQUksVUFBVSxlQUFlLFNBQVMsVUFBVSxlQUFlLGNBQWM7QUFDNU8sZUFBZSxXQUFXLCtCQUErQiw4QkFBOEIsR0FBRyxnR0FBZ0csVUFBVSwrQkFBK0I7QUFDbk8scUJBQXFCLEdBQUcsMkNBQTJDLGdCQUFnQixhQUFhLDRCQUE0QixvSUFBb0ksU0FBUyxjQUFjLDBCQUEwQixxQkFBcUIsV0FBVyxXQUFXO0FBQzVWLHFCQUFxQixXQUFXLG9CQUFvQixhQUFhLGFBQWEsc0JBQXNCLFlBQVksMkJBQTJCLDRCQUE0QixRQUFRLFdBQVcsOEJBQThCLGlCQUFpQix5QkFBeUIsaUJBQWlCLHNCQUFzQixpQkFBaUIsbUJBQW1CLGlCQUFpQjtBQUM5VixpQkFBaUIsc0RBQXNELFNBQVMsNERBQTRELGdCQUFnQixtQkFBbUIsMENBQTBDLG1DQUFtQyxlQUFlLGlCQUFpQixXQUFXLG9CQUFvQixzQkFBc0IsOENBQThDLHNCQUFzQjtBQUNyWixpQkFBaUIsV0FBVyxvQkFBb0Isc0JBQXNCLDhDQUE4QyxNQUFNLHNCQUFzQixTQUFTLG1CQUFtQiw0RUFBNEUsa0RBQWtELFNBQVMsaUJBQWlCLFFBQVEsaUJBQWlCLE1BQU0sb0JBQW9CLGlCQUFpQixJQUFJLFVBQVUsUUFBUSxxQkFBcUIsY0FBYztBQUNqYyxtQkFBbUIsWUFBWSxHQUFHLDREQUE0RCxpQkFBaUIsZ0NBQWdDLFVBQVUsWUFBWTtBQUNySyxtQkFBbUIsZUFBZSw0REFBNEQsaUJBQWlCLEtBQUssa0JBQWtCLGdGQUFnRixtQ0FBbUMsbUJBQW1CLGVBQWUsWUFBWSxvQkFBb0IsbURBQW1ELGdCQUFnQixRQUFRLFVBQVUsU0FBUyxjQUFjO0FBQ3ZhLGVBQWUsa0JBQWtCLDhCQUE4QixpQkFBaUIsU0FBUyxnQkFBZ0IsMkNBQTJDLFlBQVksbUJBQW1CLG9CQUFvQixjQUFjLGtCQUFrQixLQUFLLFVBQVU7QUFDdFAsUUFBUSwrUkFBK1IsS0FBSyx5Q0FBeUMseUNBQXlDLFNBQVMsZ0VBQWdFLDBDQUEwQztBQUNqZix1QkFBdUIsK0JBQStCLHlCQUF5QixrQ0FBa0MsbUJBQW1CLHVCQUF1QixXQUFXLG9CQUFvQixNQUFNLHNCQUFzQixTQUFTLDRCQUE0QixXQUFXLG9CQUFvQiw4QkFBOEIsR0FBRywrRkFBK0YsVUFBVSwrQkFBK0IsMEJBQTBCLG9CQUFvQjtBQUNqZixLQUFLLEdBQUcsV0FBVyx5QkFBeUIsMkRBQTJELDRCQUE0QiwwQkFBMEIsb0JBQW9CLHFCQUFxQixxQkFBcUIsWUFBWSw4QkFBOEIsc0NBQXNDLGVBQWUsTUFBTSxrQ0FBa0MsTUFBTSxLQUFLLE1BQU0sZ0NBQWdDLHVCQUF1QixrQkFBa0IsT0FBTyx1QkFBdUIsVUFBVTtBQUNwZSxVQUFVLGNBQWMsd0NBQXdDLFNBQVMsa0JBQWtCLGdDQUFnQyxNQUFNLFNBQVMsU0FBUyxzQ0FBc0MsY0FBYyxPQUFPLDZCQUE2QixPQUFPLDJDQUEyQyx5QkFBeUIsNkJBQTZCLEtBQUssZ0xBQWdMLGNBQWM7QUFDdGhCLDhDQUE4QyxXQUFXLCtCQUErQiwwQkFBMEIscUNBQXFDLFlBQVksa0ZBQWtGLEtBQUssZ0xBQWdMLGNBQWMsK0NBQStDLFdBQVc7QUFDbGYsNENBQTRDLDBCQUEwQixxQ0FBcUMsWUFBWSxtRkFBbUYsaUJBQWlCLElBQUksYUFBYSx1QkFBdUIsU0FBUyxRQUFRLFNBQVMsc0RBQXNELE9BQU8sc0NBQXNDLG1CQUFtQixPQUFPO0FBQzFaLGlCQUFpQixJQUFJLHVCQUF1QixTQUFTLHNCQUFzQixTQUFTLEdBQUcsK0NBQStDLG1CQUFtQixXQUFXLFFBQVEsV0FBVyxjQUFjLGNBQWMsc0JBQXNCLGlCQUFpQixTQUFTO0FBQ25RLG1CQUFtQixXQUFXLFFBQVEsc0NBQXNDLDBCQUEwQixjQUFjLHFCQUFxQixhQUFhLHNCQUFzQixTQUFTLGtCQUFrQiwwRUFBMEUsUUFBUSxtRUFBbUUsY0FBYyxnQ0FBZ0MsNkJBQTZCLEVBQUUsRUFBRTtBQUMzYSxtQkFBbUIsa0JBQWtCLGFBQWEscUJBQXFCLGNBQWMsV0FBVyxtREFBbUQsdURBQXVELGVBQWUsR0FBRyxNQUFNLDBFQUEwRSxjQUFjLFdBQVcsZ0JBQWdCO0FBQ3JWLHVCQUF1QixrTEFBa0wsZUFBZSxVQUFVLFNBQVMsa0NBQWtDLHFCQUFxQjtBQUNsUyx1QkFBdUIsV0FBVyxZQUFZLFFBQVEsa0JBQWtCLE9BQU8seUZBQXlGLFlBQVksV0FBVyxZQUFZO0FBQzNNLHVCQUF1QixhQUFhLGFBQWEsNElBQTRJLCtCQUErQixZQUFZLFdBQVcsaUJBQWlCLFVBQVUsb0JBQW9CLHNCQUFzQixZQUFZLGdCQUFnQiwwQ0FBMEMsV0FBVyxVQUFVLFlBQVksV0FBVztBQUMxYSx1QkFBdUIsYUFBYSxzQkFBc0Isb0dBQW9HLHNDQUFzQztBQUNwTSxtQkFBbUIsa0VBQWtFLHdEQUF3RCw0Q0FBNEMsZ0JBQWdCLEtBQUsseUdBQXlHLDRDQUE0Qyx3Q0FBd0MsaUJBQWlCLDZDQUE2Qyx5QkFBeUIsU0FBUyxNQUFNO0FBQ2pmLDREQUE0RCxZQUFZLGVBQWUsaUJBQWlCLFlBQVkseUVBQXlFLHVCQUF1Qix5QkFBeUIsVUFBVSxRQUFRLGtCQUFrQixPQUFPLHlGQUF5RixZQUFZLFdBQVcsWUFBWTtBQUNwWix1QkFBdUIsVUFBVSxTQUFTLE1BQU0sVUFBVSxRQUFRLHlEQUF5RCxrQkFBa0Isb0NBQW9DLFVBQVUsZ0NBQWdDLHVFQUF1RSx3R0FBd0c7QUFDMVksNEJBQTRCLE1BQU0sc0JBQXNCLFVBQVUsWUFBWSxrQkFBa0I7QUFDaEcsME1BQTBNLEtBQUssY0FBYyxRQUFRLGtCQUFrQix3Q0FBd0MsVUFBVSxpQkFBaUIsWUFBWSxnQkFBZ0IsdUVBQXVFLGlDQUFpQztBQUM5YixxSUFBcUksTUFBTSxrQkFBa0IsVUFBVSxZQUFZLHNCQUFzQjtBQUN6TTtBQUNBLDZJQUE2STtBQUM3SSx5QkFBeUIsUUFBUSx3QkFBd0IseUNBQXlDLGNBQWMsYUFBYSx3RUFBd0UsV0FBVyw4RUFBOEUsd0JBQXdCLGNBQWMsZUFBZSxlQUFlLGtCQUFrQixtR0FBbUc7QUFDdmQsdUJBQXVCLEtBQUssTUFBTSxhQUFhLFlBQVksZUFBZSxRQUFRLDhDQUE4QyxlQUFlLE9BQU87QUFDdEosbUJBQW1CLDREQUE0RCx5REFBeUQsd0JBQXdCLDhDQUE4QyxTQUFTLGFBQWEsTUFBTSxrQkFBa0IsdUhBQXVILGFBQWEsYUFBYSxnQ0FBZ0MseUJBQXlCO0FBQ3RjLDJJQUEySSxrQkFBa0IsZ0VBQWdFLE1BQU0sYUFBYSxTQUFTLFVBQVUsWUFBWSxPQUFPLG1DQUFtQyx1SUFBdUksaURBQWlEO0FBQ2pmLEVBQUUsV0FBVyxZQUFZLFVBQVUsSUFBSSxVQUFVLHdCQUF3QixrQkFBa0Isa0VBQWtFLGtCQUFrQiw2QkFBNkIsbUJBQW1CLFNBQVMsVUFBVSxZQUFZLFFBQVEsbUNBQW1DLEVBQUUsNEJBQTRCLFdBQVcsZUFBZSwyRUFBMkUsVUFBVSxxQkFBcUI7QUFDM2MsaUJBQWlCLE1BQU0sMEJBQTBCLGdCQUFnQixXQUFXLGlCQUFpQixxQkFBcUIsZ0JBQWdCLHFCQUFxQixnQ0FBZ0MsV0FBVyxxQkFBcUI7QUFDdk4sMkJBQTJCLE1BQU0sb0VBQW9FLG1FQUFtRSxhQUFhLFNBQVMsTUFBTSxtQ0FBbUMsV0FBVyxpQkFBaUIsV0FBVyxXQUFXLFdBQVcsWUFBWSxVQUFVLHFDQUFxQyw0QkFBNEIsbUJBQW1CLFNBQVMsd0NBQXdDLGtCQUFrQjtBQUNqZCxrQkFBa0IsSUFBSSxnQkFBZ0IsaUJBQWlCLG1CQUFtQix1QkFBdUIsVUFBVSxJQUFJLGFBQWEsYUFBYSxXQUFXLE1BQU0sWUFBWSxNQUFNLG1QQUFtUCxNQUFNLDJCQUEyQixNQUFNLFlBQVk7QUFDbGQsNkRBQTZELEtBQUssb0JBQW9CLG1CQUFtQiw0RkFBNEYsZ0JBQWdCLHFCQUFxQixLQUFLLEtBQUssUUFBUSwyRUFBMkUsbUJBQW1CLGNBQWMsU0FBUyxtQkFBbUIsV0FBVyxrQkFBa0IsdUJBQXVCO0FBQ3hiLHVCQUF1QixzQkFBc0IsMEJBQTBCLDJFQUEyRTtBQUNsSixtQkFBbUIsOENBQThDLHFCQUFxQixZQUFZLGtDQUFrQyxLQUFLLCtDQUErQyxTQUFTLEVBQUUsZ0RBQWdELDZCQUE2Qix3QkFBd0IsaUJBQWlCLFVBQVUsU0FBUyxpQkFBaUIsS0FBSyxpQkFBaUIsRUFBRSx5Q0FBeUMsV0FBVywwQkFBMEIsWUFBWSxLQUFLLE9BQU87QUFDM2QsS0FBSyxlQUFlLDBCQUEwQixXQUFXLFNBQVMseURBQXlELElBQUksK0RBQStELGVBQWUsTUFBTSx3QkFBd0IsVUFBVSxpQkFBaUIsU0FBUyxFQUFFLGNBQWMsMkJBQTJCLFVBQVUsTUFBTSxZQUFZLFlBQVksSUFBSSxJQUFJLGtCQUFrQixNQUFNLDBDQUEwQyxNQUFNLDZCQUE2QjtBQUMvYyxpQkFBaUIseUVBQXlFLG1CQUFtQiwwQ0FBMEMsWUFBWSxvQ0FBb0MsbURBQW1ELG1CQUFtQixVQUFVLHVCQUF1QixVQUFVLGVBQWUsaUJBQWlCLHlEQUF5RCxlQUFlO0FBQ2hhLG1CQUFtQixjQUFjLGFBQWEsS0FBSyxNQUFNLGFBQWEsTUFBTSx5QkFBeUIsTUFBTSx1Q0FBdUMsTUFBTSxzREFBc0Qsc0JBQXNCLGtCQUFrQixNQUFNLDBCQUEwQixhQUFhLGlFQUFpRSwrQ0FBK0MsaUJBQWlCLFlBQVksK0JBQStCLGlCQUFpQixNQUFNO0FBQ3RlLGNBQWMsc0JBQXNCLHNCQUFzQixhQUFhLGtCQUFrQiwyREFBMkQsZUFBZSxXQUFXLGlCQUFpQiwyQ0FBMkMsaUJBQWlCO0FBQzNQLGlCQUFpQixrQkFBa0IsU0FBUyxFQUFFLG1EQUFtRCxtQ0FBbUMsaUJBQWlCLFVBQVUsU0FBUyxlQUFlLEtBQUssaUJBQWlCLEVBQUUsd0NBQXdDLFdBQVcsMEJBQTBCLGNBQWM7QUFDMVMscUJBQXFCLHNCQUFzQixVQUFVLGNBQWMsZUFBZSxXQUFXLFVBQVUsdUJBQXVCLFVBQVUsS0FBSyxNQUFNLG9CQUFvQixJQUFJLGFBQWEsRUFBRSxNQUFNLElBQUksYUFBYSxFQUFFLEtBQUssTUFBTSwwQkFBMEIsVUFBVSxLQUFLLE1BQU0scUZBQXFGLFFBQVEsTUFBTSxPQUFPLG9GQUFvRixXQUFXO0FBQ3RkLFNBQVMsV0FBVyxrTUFBa00sWUFBWSxXQUFXLHNCQUFzQix1RUFBdUUsa0VBQWtFLFdBQVcsc0RBQXNELGFBQWE7QUFDMWQsUUFBUSwyV0FBMlcsNkJBQTZCLFFBQVEsZ0NBQWdDLHFCQUFxQjtBQUM3YyxpQkFBaUIseUJBQXlCLHVCQUF1QixlQUFlLFNBQVMsdUNBQXVDLG9DQUFvQyxNQUFNLDBCQUEwQixlQUFlLFNBQVMsdUNBQXVDO0FBQ25RLGNBQWMsOERBQThELHVCQUF1QixTQUFTLCtGQUErRixtQkFBbUIsU0FBUyw2RUFBNkUsa0JBQWtCLGVBQWU7QUFDclYsbUJBQW1CLHFCQUFxQixNQUFNLGNBQWMsNEZBQTRGLHlDQUF5QyxxQkFBcUIsS0FBSyxNQUFNLEtBQUssS0FBSyxxRUFBcUUsb0pBQW9KLFFBQVEsS0FBSyxZQUFZLGFBQWE7QUFDMWUsU0FBUyw0RkFBNEYsS0FBSyxPQUFPLDBDQUEwQyxLQUFLLFlBQVksaUJBQWlCLFVBQVUsY0FBYyxTQUFTLHNCQUFzQixRQUFRLFFBQVEsaUJBQWlCLFVBQVUsNEJBQTRCLGFBQWEsTUFBTSxxREFBcUQsTUFBTSxrQ0FBa0MsWUFBWSxlQUFlLE1BQU0sMkJBQTJCLE1BQU07QUFDN2UsR0FBRyxZQUFZLE1BQU0sNkJBQTZCLE1BQU0scUJBQXFCLGVBQWUsTUFBTSwrQkFBK0IsMEJBQTBCLGVBQWUsTUFBTSx1Q0FBdUMsUUFBUSxPQUFPLHVDQUF1QyxXQUFXO0FBQ3hSLHVGQUF1RixVQUFVLG1CQUFtQixXQUFXLE1BQU0sc0JBQXNCLE1BQU0sTUFBTSxrQ0FBa0Msc0RBQXNELElBQUksZ0JBQWdCLHVCQUF1QixLQUFLLG1DQUFtQyw4Q0FBOEM7QUFDaFksNENBQTRDLFFBQVEsdUhBQXVILFFBQVEsUUFBUSxjQUFjLGNBQWMsR0FBRyxVQUFVLFVBQVUsNEJBQTRCLGFBQWEsSUFBSSxNQUFNLHFEQUFxRCxJQUFJLE1BQU0sa0NBQWtDLFlBQVksZUFBZSxJQUFJLE1BQU0sMkJBQTJCLElBQUksTUFBTTtBQUM1YyxHQUFHLFlBQVksSUFBSSxNQUFNLDZCQUE2QixJQUFJLE1BQU0scUJBQXFCLFVBQVUsZUFBZSxNQUFNLGtCQUFrQixNQUFNLCtCQUErQiwwQkFBMEIsTUFBTSxJQUFJLGFBQWEsRUFBRSxlQUFlLE1BQU0sd0JBQXdCLFVBQVUsZUFBZSxNQUFNLFlBQVksUUFBUSxJQUFJLG1DQUFtQyxXQUFXO0FBQ2hYLDhOQUE4TixVQUFVLG1CQUFtQixXQUFXLE1BQU0sc0JBQXNCLE1BQU0sTUFBTSxvRUFBb0UsTUFBTSxzQ0FBc0MsVUFBVTtBQUN4YSxJQUFJLE1BQU0sc0RBQXNELFVBQVUseUVBQXlFLFFBQVEsZ0JBQWdCLFFBQVEsY0FBYyxnQkFBZ0IsOENBQThDLEtBQUssWUFBWSx5REFBeUQsS0FBSywrREFBK0QsaUJBQWlCLGVBQWUsVUFBVSxjQUFjLGtCQUFrQixRQUFRO0FBQy9kLDBCQUEwQix3Q0FBd0MsTUFBTSx1RkFBdUYsZ0JBQWdCLGtGQUFrRixLQUFLLFlBQVksYUFBYSxrQkFBa0Isd0VBQXdFLGlGQUFpRiwrQ0FBK0M7QUFDemYsR0FBRywwQkFBMEIsa0JBQWtCLDZCQUE2QiwwQkFBMEIsUUFBUSwrREFBK0QsS0FBSyxLQUFLLHNDQUFzQyxrQ0FBa0Msd0NBQXdDLFdBQVcsaUlBQWlJLG1DQUFtQyxLQUFLLFlBQVk7QUFDdmUsMERBQTBELDZDQUE2QywwQ0FBMEMsYUFBYSxrQkFBa0IsNkJBQTZCLG9CQUFvQixjQUFjLDBCQUEwQixLQUFLLG9EQUFvRCxTQUFTLEVBQUUsUUFBUSxhQUFhLGFBQWEsU0FBUyxnQkFBZ0IsdUNBQXVDLGlCQUFpQixJQUFJLGNBQWMsU0FBUztBQUMzZCx3YUFBd2EsMENBQTBDLGNBQWMsbUJBQW1CLGVBQWU7QUFDbGdCLFVBQVUsb0VBQW9FLEtBQUssMkJBQTJCLDZKQUE2SixpR0FBaUcsK0ZBQStGO0FBQzNjLDBGQUEwRixLQUFLLFlBQVkscU1BQXFNLG9CQUFvQixvQkFBb0I7QUFDeFYsaUJBQWlCLE1BQU0sY0FBYywrRUFBK0Usc0dBQXNHLHlCQUF5QixhQUFhLGtCQUFrQixrQ0FBa0MsMENBQTBDLEtBQUssVUFBVSw2Q0FBNkMseUJBQXlCLHdCQUF3Qix3Q0FBd0M7QUFDbmYsS0FBSyxvQkFBb0IscUJBQXFCLGlFQUFpRSxpQkFBaUIsWUFBWSx5Q0FBeUMsUUFBUSxTQUFTLFNBQVMsb0JBQW9CLG1CQUFtQixJQUFJLElBQUksU0FBUyxVQUFVO0FBQ2pSLGlCQUFpQixNQUFNLE9BQU8sVUFBVSwrQkFBK0IsMkNBQTJDLFFBQVEsNkNBQTZDLHVDQUF1Qyx3QkFBd0IsZUFBZSxtQ0FBbUMsZ0JBQWdCLElBQUksc0JBQXNCLFNBQVMsT0FBTyxRQUFRLHFDQUFxQyxRQUFRLEVBQUUsV0FBVyxFQUFFLHNDQUFzQyxzQ0FBc0M7QUFDbGUsb0JBQW9CLGlDQUFpQyxJQUFJLElBQUksTUFBTSxFQUFFLGlCQUFpQixzQkFBc0Isc0JBQXNCLGtDQUFrQyxJQUFJLGVBQWUsSUFBSSx1QkFBdUIsZUFBZSxZQUFZLE1BQU0sZUFBZSxZQUFZLElBQUksZ0NBQWdDLE1BQU0sUUFBUSxTQUFTLHFFQUFxRSxVQUFVLFNBQVMsRUFBRSxJQUFJLElBQUksa0JBQWtCLG9DQUFvQztBQUNqZSxvQkFBb0IsMkhBQTJILHdDQUF3QyxNQUFNLHVDQUF1QyxvR0FBb0csTUFBTSxtQ0FBbUMsOEJBQThCLFNBQVMsZ0JBQWdCLFlBQVksYUFBYSxrQkFBa0IsSUFBSSxNQUFNLFdBQVcsS0FBSyxNQUFNO0FBQ25mLG1CQUFtQixvQkFBb0IsNkJBQTZCLGFBQWEsZUFBZSxHQUFHLGtCQUFrQixnQkFBZ0IsaUJBQWlCLHNCQUFzQixTQUFTLGNBQWMsaUJBQWlCLGdCQUFnQiw2QkFBNkIsYUFBYSxlQUFlLEdBQUcsa0JBQWtCLGVBQWUsY0FBYyxTQUFTLGNBQWMsZUFBZSxZQUFZLGFBQWEsa0JBQWtCLGNBQWMsV0FBVyxNQUFNLFlBQVk7QUFDM2MsZUFBZSxrQkFBa0IsbUNBQW1DLGFBQWEsaUJBQWlCLGVBQWUsd0dBQXdHLGlCQUFpQixjQUFjLG9CQUFvQixxQkFBcUIscUJBQXFCLG9CQUFvQixpQkFBaUIsbUJBQW1CLGVBQWU7QUFDN1gsZUFBZSxRQUFRLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSw2Q0FBNkMsV0FBVywwQkFBMEIsZ0JBQWdCLGlDQUFpQyxFQUFFLHdCQUF3Qix3Q0FBd0MsZ0NBQWdDO0FBQ3RSLG1CQUFtQixZQUFZLDhQQUE4UCw4REFBOEQsU0FBUztBQUNwVyxtQkFBbUIsWUFBWSxxRUFBcUUsOERBQThELFNBQVMsdUJBQXVCLGlCQUFpQixtQkFBbUIsY0FBYyxTQUFTO0FBQzdQLG1CQUFtQix1REFBdUQsOEJBQThCLFVBQVUsY0FBYyxrQkFBa0Isb0JBQW9CLE9BQU8sVUFBVSxJQUFJLEtBQUssMEhBQTBILE1BQU0sNkhBQTZILE1BQU0sV0FBVyxLQUFLLDRCQUE0QjtBQUMvZSxVQUFVLElBQUksS0FBSyxNQUFNLDZGQUE2RixXQUFXLEdBQUcsb0JBQW9CLFFBQVEsdURBQXVELFNBQVMsYUFBYSxVQUFVLE1BQU0scUZBQXFGLHlFQUF5RSxTQUFTLFNBQVMsVUFBVSxNQUFNLGtCQUFrQixNQUFNO0FBQ3JkLHlDQUF5QyxNQUFNLG1CQUFtQixlQUFlLG9CQUFvQixhQUFhLG1CQUFtQixrQkFBa0IsaUNBQWlDLHNCQUFzQix3QkFBd0IsaUNBQWlDO0FBQ3ZRLGlCQUFpQixrQkFBa0Isd0JBQXdCLFdBQVcsS0FBSyxXQUFXLElBQUksZ0JBQWdCLE9BQU8sU0FBUyxFQUFFLGNBQWMscUJBQXFCLE1BQU0sUUFBUSxtQ0FBbUMsTUFBTSxRQUFRLG1DQUFtQyxNQUFNLFFBQVEsV0FBVyxnQ0FBZ0MsVUFBVSxPQUFPLE1BQU0sa0JBQWtCLDBCQUEwQixjQUFjLFNBQVMsVUFBVSxzQ0FBc0MsU0FBUztBQUM3YyxpQkFBaUIsNEJBQTRCLGNBQWMsdUNBQXVDLE1BQU0sUUFBUSxJQUFJLHlCQUF5QixTQUFTLGdCQUFnQixJQUFJLGlCQUFpQixTQUFTLGlCQUFpQixNQUFNLGVBQWUsTUFBTSxnQ0FBZ0MsTUFBTSxlQUFlLE1BQU0sZ0NBQWdDLGVBQWUsa0JBQWtCLElBQUksU0FBUyxTQUFTLGlCQUFpQixpQ0FBaUM7QUFDcGIsbUJBQW1CLGdCQUFnQixxREFBcUQsUUFBUSxjQUFjLFFBQVEsV0FBVyxNQUFNLG9CQUFvQiw2RkFBNkYsVUFBVSxxQkFBcUIsTUFBTSx3QkFBd0IsTUFBTSxnREFBZ0QseUNBQXlDLGNBQWM7QUFDbGEsMkRBQTJELFFBQVEsU0FBUyxpQkFBaUIsTUFBTSxlQUFlLE1BQU0sUUFBUSwwQ0FBMEMsY0FBYyxrQkFBa0IsSUFBSSxjQUFjLFNBQVMsaUJBQWlCLE1BQU0sZUFBZSxNQUFNLG1EQUFtRCxvQkFBb0IsU0FBUyxnQkFBZ0IsTUFBTSxlQUFlLE1BQU0sTUFBTSxnQkFBZ0IsTUFBTSxVQUFVO0FBQ2xiLGdFQUFnRSxXQUFXLE1BQU0sMkNBQTJDLDBDQUEwQyxNQUFNLFdBQVcseUJBQXlCLGtFQUFrRSxTQUFTLEVBQUUsVUFBVSxTQUFTLEVBQUUsSUFBSSxVQUFVLGNBQWMsZ0RBQWdELE1BQU0sc0JBQXNCLGtCQUFrQiwrQ0FBK0MsSUFBSSxXQUFXLElBQUk7QUFDOWUsaUVBQWlFLFNBQVMsVUFBVSxNQUFNLHNCQUFzQixNQUFNLG1DQUFtQyxNQUFNLFVBQVUsZ0NBQWdDLFlBQVksa0JBQWtCLEVBQUUsY0FBYyxhQUFhLElBQUksSUFBSTtBQUM1USxpQkFBaUIsU0FBUyxrQkFBa0IsbUJBQW1CLGdCQUFnQiwyQ0FBMkMsU0FBUyxpQkFBaUIsaUZBQWlGLGlCQUFpQixVQUFVLFNBQVMsaUJBQWlCLEtBQUssaUJBQWlCLEVBQUUseUNBQXlDLGdCQUFnQixXQUFXLGdCQUFnQiwwQkFBMEIsYUFBYSxNQUFNLGdCQUFnQixNQUFNLFdBQVcsTUFBTSxjQUFjO0FBQ3hlLFVBQVUsZUFBZSxjQUFjLFFBQVEsSUFBSSxHQUFHLG1CQUFtQixTQUFTLEVBQUUsVUFBVSxRQUFRLFFBQVEsV0FBVyxxQkFBcUIsY0FBYyx5QkFBeUIsb0NBQW9DLFlBQVksVUFBVSxNQUFNLHNEQUFzRCxVQUFVLE1BQU0sOEJBQThCLFNBQVMsZ0JBQWdCLFlBQVkseUJBQXlCLG1CQUFtQixJQUFJO0FBQzlhLG1CQUFtQix5QkFBeUIsU0FBUyxFQUFFLGtCQUFrQixrQkFBa0IsaUNBQWlDLE9BQU8sd0RBQXdELEtBQUssUUFBUSxLQUFLLHFCQUFxQixTQUFTLHdGQUF3RixLQUFLLFNBQVMsMkJBQTJCLElBQUksS0FBSyxJQUFJLFVBQVU7QUFDblksZUFBZSxLQUFLLFNBQVMsRUFBRSxRQUFRLHVCQUF1QixrQkFBa0IsSUFBSSxvQ0FBb0Msa0NBQWtDLE1BQU0seUJBQXlCLG1EQUFtRCxLQUFLLHdFQUF3RSw4RUFBOEUsb0JBQW9CLG9CQUFvQixNQUFNLDJCQUEyQixhQUFhLE9BQU8sc0NBQXNDO0FBQzFnQixrQkFBa0IsTUFBTSwyQkFBMkIsVUFBVSxNQUFNLHlCQUF5Qix3QkFBd0IsSUFBSSxzQkFBc0IsZUFBZSxnRkFBZ0YsTUFBTSxpQ0FBaUMsTUFBTSxhQUFhLGFBQWEsY0FBYyxtQ0FBbUMsa0JBQWtCLGFBQWEsc0JBQXNCLGFBQWEsbUJBQW1CLGtCQUFrQixNQUFNO0FBQ2xkLDZCQUE2QixzQkFBc0IsU0FBUyxpQkFBaUIsVUFBVSxPQUFPLE1BQU0sWUFBWSxhQUFhLGtCQUFrQixJQUFJLE1BQU0sWUFBWSxlQUFlLEtBQUssU0FBUyxFQUFFLFFBQVEsVUFBVSxPQUFPLE1BQU0sZ0JBQWdCLGFBQWEsa0JBQWtCLElBQUksTUFBTTtBQUM1UixlQUFlLEtBQUssU0FBUyxFQUFFLFFBQVEsSUFBSSxjQUFjLHNDQUFzQyxJQUFJLFFBQVEsU0FBUyxTQUFTLE1BQU0seUJBQXlCLDRDQUE0QyxlQUFlLElBQUksc0JBQXNCLFNBQVMsVUFBVSxlQUFlLElBQUksTUFBTSxTQUFTLFNBQVMsTUFBTSxzQkFBc0IsSUFBSSxNQUFNLFNBQVMsV0FBVyxTQUFTLGdCQUFnQixVQUFVLE9BQU8sTUFBTSxnQkFBZ0IsYUFBYSxrQkFBa0IsSUFBSSxNQUFNO0FBQ2xkLDZRQUE2USxhQUFhO0FBQzFSLGVBQWUsMkJBQTJCLGdDQUFnQyxvREFBb0QsSUFBSSxrQkFBa0IsZUFBZSwyQkFBMkIsU0FBUyxxQkFBcUIsMENBQTBDLFVBQVU7QUFDaFIsaUJBQWlCLHFCQUFxQixRQUFRLHNCQUFzQixrRUFBa0UsdUNBQXVDLGVBQWUseUVBQXlFLGdCQUFnQixTQUFTLEtBQUssY0FBYyxZQUFZLE1BQU0sWUFBWSxNQUFNLGFBQWEsTUFBTSxvQkFBb0IsTUFBTSxhQUFhLHdCQUF3QixxQkFBcUI7QUFDNWIsaUJBQWlCLE1BQU0sS0FBSyxpQ0FBaUMscUJBQXFCLHdDQUF3QyxzQkFBc0IscUJBQXFCLG1EQUFtRCxLQUFLLElBQUksUUFBUSxLQUFLLFdBQVcsMkNBQTJDLE9BQU8sS0FBSyxNQUFNLFNBQVMsUUFBUSxTQUFTLEtBQUssYUFBYSxJQUFJLDhCQUE4QixVQUFVLHdDQUF3QyxnREFBZ0Q7QUFDdGUsS0FBSyxzQkFBc0Isd0hBQXdILGlCQUFpQixrQkFBa0IsVUFBVSxrQ0FBa0MsbUJBQW1CLE1BQU0sZUFBZSwyQ0FBMkMscUJBQXFCLG1CQUFtQixjQUFjLElBQUksa0NBQWtDLE1BQU0sNENBQTRDLE1BQU0sWUFBWSxNQUFNLGVBQWU7QUFDMWUsUUFBUSxlQUFlLFNBQVMsSUFBSSxFQUFFLGVBQWUsT0FBTyxPQUFPLFdBQVcsTUFBTSxJQUFJLFFBQVEsd0ZBQXdGLFNBQVMsNENBQTRDLE1BQU0sWUFBWSxNQUFNLG1CQUFtQixNQUFNLCtCQUErQixVQUFVO0FBQ3ZVLGlCQUFpQixTQUFTLDJEQUEyRCxVQUFVLG1DQUFtQyxTQUFTLGVBQWU7QUFDMUosZUFBZSxhQUFhLEVBQUUsa0JBQWtCLG9CQUFvQiwrQ0FBK0MsV0FBVyxLQUFLLDJCQUEyQixVQUFVLElBQUksdUJBQXVCLFNBQVMsV0FBVyxVQUFVLGlEQUFpRCxLQUFLLGVBQWUsS0FBSyxpQkFBaUIsRUFBRSwwQ0FBMEMsV0FBVywwQkFBMEIsYUFBYTtBQUMxWixpQkFBaUIsT0FBTyxPQUFPLG9CQUFvQixrQkFBa0Isd0JBQXdCLElBQUksRUFBRSxzQkFBc0IsUUFBUSxPQUFPLGVBQWUsaUNBQWlDLEtBQUssY0FBYyxtQ0FBbUMsY0FBYyxxQkFBcUIsWUFBWSx1QkFBdUIsZ0RBQWdELDZCQUE2QixtQ0FBbUMsa0JBQWtCLFlBQVksVUFBVTtBQUM1YyxpQkFBaUIsUUFBUSxLQUFLLElBQUksWUFBWSxRQUFRLGtDQUFrQyxlQUFlLHVDQUF1QyxRQUFRLEtBQUssd0JBQXdCLElBQUksdUNBQXVDLFFBQVEseUNBQXlDLGNBQWMsY0FBYztBQUMzUyxpQkFBaUIsb0JBQW9CLGtCQUFrQixzQkFBc0IsbUNBQW1DLDJCQUEyQixTQUFTLEVBQUUsUUFBUSxNQUFNLGNBQWMsa0NBQWtDLDJCQUEyQixNQUFNLFlBQVksTUFBTSxLQUFLLEtBQUssTUFBTSxhQUFhLE1BQU0sWUFBWSxNQUFNLGFBQWEsTUFBTSxhQUFhLE1BQU0sNEJBQTRCLE1BQU0scUJBQXFCLFdBQVcsSUFBSSx1QkFBdUIsT0FBTyxJQUFJLFFBQVEsV0FBVyxXQUFXLGNBQWM7QUFDdGYsRUFBRSxZQUFZLHlDQUF5QyxtQkFBbUIseUJBQXlCLGFBQWEsYUFBYSxTQUFTLFNBQVMsWUFBWSxRQUFRO0FBQ25LLGlCQUFpQixHQUFHLFFBQVEsSUFBSSxLQUFLLGNBQWMsT0FBTywwQkFBMEIsU0FBUyxFQUFFLGNBQWMsMkJBQTJCLFNBQVMsTUFBTSxLQUFLLFdBQVcsTUFBTSxLQUFLLGdCQUFnQiw4QkFBOEIsSUFBSSxLQUFLLE9BQU8sTUFBTSxHQUFHLDJCQUEyQixJQUFJLGVBQWUsOERBQThELG9CQUFvQiw0Q0FBNEMsa0JBQWtCO0FBQ3ZiLDJEQUEyRCxZQUFZLGFBQWEsY0FBYyxjQUFjLG9CQUFvQixJQUFJLElBQUksb0JBQW9CLGFBQWEsY0FBYyxTQUFTLGdCQUFnQixjQUFjLFFBQVEsS0FBSyxjQUFjLFVBQVUsS0FBSyxRQUFRLGlCQUFpQixxQkFBcUIsWUFBWSxhQUFhLG9DQUFvQyxjQUFjLFlBQVksU0FBUyxZQUFZLGFBQWEsNEJBQTRCLElBQUksR0FBRyxjQUFjO0FBQ3BlLE1BQU0sV0FBVyxnQkFBZ0IsUUFBUSxRQUFRLFdBQVcsMkJBQTJCLG9KQUFvSixlQUFlLE1BQU0sV0FBVyxnQkFBZ0IsUUFBUSxTQUFTLFdBQVcsZ0JBQWdCLE1BQU0sVUFBVSxLQUFLLGdDQUFnQyxTQUFTLE1BQU0sU0FBUyxjQUFjLGlCQUFpQixjQUFjO0FBQ2pjLGNBQWMsMkJBQTJCLDBEQUEwRCxpQkFBaUIsUUFBUSxLQUFLLFdBQVcsZ0NBQWdDLE9BQU8sS0FBSyxNQUFNLFNBQVMsUUFBUSxTQUFTLEtBQUssSUFBSSxhQUFhLGdDQUFnQyxPQUFPLElBQUksU0FBUyxjQUFjLEtBQUssU0FBUyxPQUFPLGNBQWMsS0FBSyxnQkFBZ0IsT0FBTyxlQUFlLDJCQUEyQiwrQkFBK0IsbUJBQW1CO0FBQzNjLGVBQWUsUUFBUSxHQUFHLGtCQUFrQixXQUFXLHdCQUF3QiwwQkFBMEIsSUFBSSxRQUFRLEtBQUssVUFBVSxhQUFhLGVBQWUsSUFBSSxPQUFPLDZEQUE2RCxLQUFLLElBQUksT0FBTyxRQUFRLFlBQVksYUFBYSxJQUFJLE9BQU8sTUFBTSxnQkFBZ0IsYUFBYSxtQkFBbUIsd0JBQXdCLElBQUksbUNBQW1DLFFBQVEsb0JBQW9CO0FBQ3JiLHFCQUFxQixRQUFRLGlCQUFpQixpQ0FBaUMsaUJBQWlCLHNCQUFzQix3QkFBd0Isb0JBQW9CLGtCQUFrQixxQ0FBcUMsb0JBQW9CLHFCQUFxQiwyQkFBMkIsUUFBUSxzQkFBc0IsMkVBQTJFLEtBQUssWUFBWSxHQUFHLHNCQUFzQixrQ0FBa0MsZ0JBQWdCO0FBQ2xlLFFBQVEsSUFBSSxRQUFRLEtBQUssZ0JBQWdCLFFBQVEsUUFBUSxPQUFPLFFBQVEsV0FBVyxZQUFZLFVBQVUsS0FBSyxJQUFJLElBQUksZ0JBQWdCLGlCQUFpQixzQkFBc0IsaUJBQWlCLGlCQUFpQixrQkFBa0IsVUFBVSwyQ0FBMkMsV0FBVyxzQkFBc0IsdUNBQXVDLEVBQUUsaUNBQWlDLDRCQUE0QixpQkFBaUIsdUNBQXVDLEtBQUs7QUFDMWQsY0FBYyxjQUFjLGlDQUFpQyxJQUFJLG1CQUFtQixZQUFZLHNCQUFzQixLQUFLLEtBQUssUUFBUSxLQUFLLGlDQUFpQyxRQUFRLEtBQUssZ0JBQWdCLFNBQVMsRUFBRSxrQkFBa0IscUJBQXFCLGtCQUFrQixhQUFhLFlBQVksV0FBVyxLQUFLLFdBQVcsUUFBUSxTQUFTLEVBQUUsUUFBUSxjQUFjLGlDQUFpQyxjQUFjLDJCQUEyQixVQUFVLFNBQVMsRUFBRSxJQUFJLDJCQUEyQixNQUFNO0FBQ2hmLEdBQUcsT0FBTyxNQUFNLGFBQWEsV0FBVyxJQUFJLE1BQU0sTUFBTSxrQkFBa0IsYUFBYSxjQUFjLGFBQWEsYUFBYSxHQUFHLGdCQUFnQixlQUFlLElBQUksaUJBQWlCLEtBQUssc0RBQXNELFlBQVksU0FBUyxFQUFFLElBQUksb0NBQW9DLHdDQUF3QyxnQkFBZ0IsYUFBYSxrQkFBa0IsSUFBSSxRQUFRLFlBQVksZ0JBQWdCLFFBQVEsU0FBUyxFQUFFLElBQUksY0FBYztBQUNwZCxpQkFBaUIsZUFBZSxTQUFTLEVBQUUsSUFBSSwwQkFBMEIsY0FBYyxnQ0FBZ0MsVUFBVSxpQkFBaUIsVUFBVSxPQUFPLFFBQVEsZ0JBQWdCLGFBQWEsa0JBQWtCLElBQUksUUFBUSxZQUFZLElBQUksS0FBSyx3REFBd0QsK0JBQStCLFdBQVcsS0FBSyxTQUFTLFFBQVEscUJBQXFCLFNBQVMsbUJBQW1CLFVBQVUsWUFBWSxZQUFZLE1BQU07QUFDNWMsa0JBQWtCLHVCQUF1QixVQUFVLFNBQVMsRUFBRSxjQUFjLFVBQVUsTUFBTSxtQkFBbUIsa0JBQWtCLDBIQUEwSCxVQUFVLFlBQVksWUFBWSxNQUFNLDhCQUE4QixPQUFPO0FBQ3hVLG1CQUFtQixrQkFBa0Isc0JBQXNCLE1BQU0sa0NBQWtDLDhFQUE4RSxRQUFRLGlCQUFpQiwyRUFBMkUsVUFBVSxVQUFVLDhCQUE4QixlQUFlLDBCQUEwQiwwQkFBMEI7QUFDMVksaUJBQWlCLFFBQVEsY0FBYywwQkFBMEIsc0JBQXNCLDBCQUEwQixNQUFNLHNCQUFzQixNQUFNLDZCQUE2QixzQkFBc0IsUUFBUTtBQUM5TSxtQkFBbUIsa0VBQWtFLEtBQUssNkRBQTZELDhCQUE4QixzREFBc0QsVUFBVSxjQUFjLG9CQUFvQixRQUFRLGlCQUFpQixzQkFBc0IsUUFBUSxxQkFBcUIsV0FBVyxXQUFXO0FBQ3pYLGtPQUFrTyxTQUFTLHdCQUF3QixHQUFHLFFBQVEsaUJBQWlCLFVBQVUsZ0JBQWdCLFNBQVMsY0FBYyxVQUFVLFVBQVUsMEJBQTBCLFFBQVEsMEJBQTBCLFFBQVEsMkJBQTJCLFFBQVEsc0NBQXNDLFFBQVE7QUFDemYsUUFBUSxTQUFTLG9GQUFvRixvRkFBb0YsVUFBVSxNQUFNLGdDQUFnQyxpQkFBaUIsa0JBQWtCLFlBQVksUUFBUSxlQUFlLHNCQUFzQixZQUFZLHdCQUF3Qix3SEFBd0g7QUFDamUsaUNBQWlDLHNCQUFzQixnQkFBZ0IsUUFBUSxlQUFlLHNCQUFzQixnQkFBZ0IsUUFBUSxrR0FBa0csRUFBRSxxQ0FBcUMsS0FBSyxLQUFLLFVBQVUsWUFBWSxRQUFRLFlBQVksVUFBVSxTQUFTO0FBQzVWLDRCQUE0QixtQ0FBbUMseUJBQXlCLG1IQUFtSCxxRkFBcUYsK0NBQStDLHdEQUF3RCx5REFBeUQsV0FBVyxrQkFBa0IsaUJBQWlCO0FBQzllLFVBQVUsc0JBQXNCLGtCQUFrQiw4QkFBOEIseUNBQXlDLFlBQVksU0FBUywwQ0FBMEMsU0FBUyxFQUFFLHFCQUFxQixhQUFhLFVBQVUseUJBQXlCLFNBQVMsRUFBRSxrQkFBa0IsY0FBYyxjQUFjLFFBQVEsb0JBQW9CLGFBQWEsV0FBVyxnQkFBZ0IsMkNBQTJDLGFBQWEsV0FBVyxjQUFjLHVCQUF1QjtBQUM3ZSxLQUFLLFdBQVcsTUFBTSxVQUFVLGtEQUFrRCxvQkFBb0IsV0FBVyxnQ0FBZ0MsV0FBVyxjQUFjLHVCQUF1QixVQUFVLFlBQVksZUFBZSx1QkFBdUIsYUFBYSxTQUFTLEVBQUUsVUFBVSxPQUFPLE1BQU0sWUFBWSxhQUFhLGtCQUFrQixJQUFJLE1BQU0sV0FBVyxJQUFJLHFCQUFxQixVQUFVLFNBQVM7QUFDeFosUUFBUSw0RUFBNEUsK0NBQStDLGlLQUFpSyx5QkFBeUIseUJBQXlCLDRCQUE0QixpQkFBaUI7QUFDblkscUJBQXFCLFdBQVcsV0FBVyxtRkFBbUYsYUFBYSxjQUFjLG9CQUFvQiw4RUFBOEUsWUFBWSwrQkFBK0Isb0JBQW9CLDZCQUE2QixvQkFBb0IscUJBQXFCLHVCQUF1QixlQUFlLGNBQWM7QUFDcGIsZUFBZSwwQ0FBMEMseUJBQXlCLGFBQWEsb0JBQW9CLG9CQUFvQjtBQUN2SSxpQkFBaUIsa0JBQWtCLGlOQUFpTix5QkFBeUIsMEJBQTBCLGdCQUFnQixnQkFBZ0IsZ0NBQWdDLGdDQUFnQyw0QkFBNEIsaUJBQWlCLDhCQUE4QjtBQUNsZCxvQkFBb0IsZ0JBQWdCLFlBQVk7QUFDaEQseUJBQXlCLFFBQVEsSUFBSSxzQ0FBc0MsZ0NBQWdDLGlCQUFpQixvQ0FBb0MsWUFBWSxLQUFLLE1BQU0sNkRBQTZELDJEQUEyRCwyREFBMkQsMkJBQTJCLDREQUE0RCxhQUFhLFFBQVEsWUFBWSxRQUFRO0FBQzFlLFFBQVEsYUFBYSxRQUFRLGFBQWEsT0FBTyxRQUFRLDJDQUEyQyxjQUFjLGdCQUFnQixTQUFTLFVBQVUsU0FBUyxxQkFBcUIsY0FBYyxVQUFVLFNBQVMscUJBQXFCLGVBQWUsaUJBQWlCLFVBQVUsYUFBYSxhQUFhLFNBQVMsbUJBQW1CLGlCQUFpQixVQUFVO0FBQ3BXLG1CQUFtQixnREFBZ0QsVUFBVSxhQUFhLG9GQUFvRjtBQUM5Syx1QkFBdUIsV0FBVyxxQkFBcUIsd0VBQXdFLHNCQUFzQix3REFBd0Qsd0JBQXdCLHNCQUFzQiw0QkFBNEIsd0lBQXdJLHlCQUF5Qix3QkFBd0IsMEJBQTBCO0FBQzFlLEtBQUssK0JBQStCLG9CQUFvQiwrQkFBK0Isb0JBQW9CLFlBQVksY0FBYyxpQkFBaUIscUZBQXFGLE1BQU0sU0FBUyxtQkFBbUIsa0VBQWtFLE9BQU87QUFDdFYsZUFBZSxnQkFBZ0Isb0JBQW9CLEdBQUcsNENBQTRDLFFBQVEsR0FBRyxjQUFjLDZCQUE2QixRQUFRLHNCQUFzQix3REFBd0QsU0FBUyxXQUFXLGdCQUFnQixxQkFBcUIsY0FBYyxhQUFhLDBCQUEwQjtBQUM1ViwrQkFBK0IseUJBQXlCLG1CQUFtQixZQUFZLE1BQU0sUUFBUSxVQUFVLHVDQUF1QyxVQUFVLGtCQUFrQixVQUFVLFFBQVEsU0FBUyxxQkFBcUIsOEJBQThCLFFBQVEsZ0RBQWdELFVBQVUsV0FBVyxXQUFXLG9CQUFvQix5QkFBeUIsWUFBWSxrQ0FBa0M7QUFDbmIsZUFBZSxZQUFZLHdCQUF3QixvQkFBb0IsZ0NBQWdDLGtDQUFrQyxpQkFBaUIsa0JBQWtCLGtDQUFrQyxrQkFBa0IsNEJBQTRCLGlCQUFpQixRQUFRLHlCQUF5QixjQUFjLFlBQVksK0RBQStELGtCQUFrQixlQUFlO0FBQ3hhLG9EQUFvRCx5QkFBeUIsZ0NBQWdDLG1CQUFtQixxREFBcUQseUJBQXlCLGFBQWEsd0JBQXdCLHNCQUFzQixjQUFjLHFCQUFxQixFQUFFLGFBQWEsZUFBZTtBQUMxVSxvREFBb0QsTUFBTSxXQUFXLEdBQUcsb0NBQW9DLFlBQVkscUNBQXFDLEtBQUssaUJBQWlCLGVBQWUsZUFBZSw2REFBNkQsZUFBZSw2SEFBNkg7QUFDMVosdUJBQXVCLE1BQU0sMEJBQTBCLFFBQVEsYUFBYSxZQUFZLFdBQVcsbUNBQW1DLHdCQUF3QixnQkFBZ0Isa0NBQWtDLEtBQUssU0FBUyxLQUFLLGNBQWMsa0JBQWtCLDBCQUEwQixRQUFRLGFBQWEsWUFBWSxXQUFXLHVDQUF1Qyx3QkFBd0IsZ0JBQWdCLGtDQUFrQyxjQUFjLFlBQVksRUFBRTtBQUN0ZCx1QkFBdUIsNEJBQTRCLE1BQU0sUUFBUSwwQkFBMEIsUUFBUSxhQUFhLFlBQVksV0FBVyxZQUFZLHFCQUFxQixhQUFhLGVBQWUsY0FBYyx5QkFBeUIseUNBQXlDLHlCQUF5QiwwREFBMEQsTUFBTSxzQkFBc0IsY0FBYyxhQUFhLFVBQVUsYUFBYTtBQUNyYixlQUFlLGVBQWUsc0JBQXNCLGFBQWEsVUFBVSxvQkFBb0Isa0JBQWtCLGVBQWUsZUFBZSxzQkFBc0IsYUFBYSxVQUFVLFlBQVksVUFBVSxjQUFjLFVBQVUsaUJBQWlCLFFBQVEsSUFBSSxlQUFlLFFBQVE7QUFDOVIsbUJBQW1CLFVBQVUscUJBQXFCLFNBQVMsOEJBQThCLFFBQVEsYUFBYSxnQkFBZ0IsMkVBQTJFLFFBQVEsV0FBVyxLQUFLLFdBQVcsMkJBQTJCLFlBQVkseUJBQXlCLE1BQU0sVUFBVSxNQUFNLHdCQUF3QixNQUFNLDJEQUEyRCxNQUFNO0FBQ2phLFFBQVEsb0RBQW9ELEtBQUs7QUFDakUsUUFBUSxrYkFBa2IsUUFBUSxpQ0FBaUM7QUFDbmUsMktBQTJLLHdEQUF3RCxzQ0FBc0Msd0NBQXdDLHVCQUF1QixXQUFXLDBEQUEwRDtBQUM3WSxvQkFBb0IsZUFBZSxrRUFBa0UsOEJBQThCLHVCQUF1QixrQkFBa0IsZUFBZSw4QkFBOEIsbUJBQW1CLHVLQUF1SyxnQ0FBZ0MsZ0JBQWdCLGtDQUFrQztBQUNyZSxtQkFBbUIsYUFBYSx1QkFBdUIsMkJBQTJCLHdCQUF3QixlQUFlLG9EQUFvRCwyQkFBMkIsdUJBQXVCLFFBQVEsNEJBQTRCLFVBQVUsaUJBQWlCLGFBQWEsY0FBYyxlQUFlLGlCQUFpQiw4QkFBOEI7QUFDdlgsbUJBQW1CLGlCQUFpQiw4QkFBOEIsc0RBQXNELHVLQUF1Syx5Q0FBeUMsZ0JBQWdCLE1BQU0sYUFBYSxXQUFXO0FBQ3RYLEdBQUcsa0JBQWtCLGNBQWMsaUJBQWlCLDhCQUE4QiwwQkFBMEIsOEJBQThCLGFBQWEsNkJBQTZCLDRDQUE0Qyw2QkFBNkIsMkJBQTJCLFdBQVcsRUFBRSxVQUFVLCtCQUErQjtBQUM5VSwyQ0FBMkMsbUJBQW1CLDhCQUE4QiwwREFBMEQsdUJBQXVCLGVBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanM/Yjk1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLypcbiBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKSxjYT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHAoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGRhPW5ldyBTZXQsZWE9e307ZnVuY3Rpb24gZmEoYSxiKXtoYShhLGIpO2hhKGErXCJDYXB0dXJlXCIsYil9XG5mdW5jdGlvbiBoYShhLGIpe2VhW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKylkYS5hZGQoYlthXSl9XG52YXIgaWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGphPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksa2E9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGxhPVxue30sbWE9e307ZnVuY3Rpb24gb2EoYSl7aWYoamEuY2FsbChtYSxhKSlyZXR1cm4hMDtpZihqYS5jYWxsKGxhLGEpKXJldHVybiExO2lmKGthLnRlc3QoYSkpcmV0dXJuIG1hW2FdPSEwO2xhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHBhKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gcWEoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8cGEoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiB2KGEsYixjLGQsZSxmLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z312YXIgej17fTtcblwiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDAsITEsYSxudWxsLCExLCExKX0pO1tbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YVswXTt6W2JdPW5ldyB2KGIsMSwhMSxhWzFdLG51bGwsITEsITEpfSk7W1wiY29udGVudEVkaXRhYmxlXCIsXCJkcmFnZ2FibGVcIixcInNwZWxsQ2hlY2tcIixcInZhbHVlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJhdXRvUmV2ZXJzZVwiLFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFwiZm9jdXNhYmxlXCIsXCJwcmVzZXJ2ZUFscGhhXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDIsITEsYSxudWxsLCExLCExKX0pO1wiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwzLCEwLGEsbnVsbCwhMSwhMSl9KTtbXCJjYXB0dXJlXCIsXCJkb3dubG9hZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDYsITEsYSxudWxsLCExLCExKX0pO1tcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIHJhPS9bXFwtOl0oW2Etel0pL2c7ZnVuY3Rpb24gc2EoYSl7cmV0dXJuIGFbMV0udG9VcHBlckNhc2UoKX1cblwiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsXG5zYSk7eltiXT1uZXcgdihiLDEsITEsYSxudWxsLCExLCExKX0pO1wieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCExLCExKX0pO1tcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLHNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsITEsITEpfSk7W1widGFiSW5kZXhcIixcImNyb3NzT3JpZ2luXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG56LnhsaW5rSHJlZj1uZXcgdihcInhsaW5rSHJlZlwiLDEsITEsXCJ4bGluazpocmVmXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITAsITEpO1tcInNyY1wiLFwiaHJlZlwiLFwiYWN0aW9uXCIsXCJmb3JtQWN0aW9uXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7XG5mdW5jdGlvbiB0YShhLGIsYyxkKXt2YXIgZT16Lmhhc093blByb3BlcnR5KGIpP3pbYl06bnVsbDtpZihudWxsIT09ZT8wIT09ZS50eXBlOmR8fCEoMjxiLmxlbmd0aCl8fFwib1wiIT09YlswXSYmXCJPXCIhPT1iWzBdfHxcIm5cIiE9PWJbMV0mJlwiTlwiIT09YlsxXSlxYShiLGMsZSxkKSYmKGM9bnVsbCksZHx8bnVsbD09PWU/b2EoYikmJihudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLFwiXCIrYykpOmUubXVzdFVzZVByb3BlcnR5P2FbZS5wcm9wZXJ0eU5hbWVdPW51bGw9PT1jPzM9PT1lLnR5cGU/ITE6XCJcIjpjOihiPWUuYXR0cmlidXRlTmFtZSxkPWUuYXR0cmlidXRlTmFtZXNwYWNlLG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOihlPWUudHlwZSxjPTM9PT1lfHw0PT09ZSYmITA9PT1jP1wiXCI6XCJcIitjLGQ/YS5zZXRBdHRyaWJ1dGVOUyhkLGIsYyk6YS5zZXRBdHRyaWJ1dGUoYixjKSkpfVxudmFyIHVhPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELHZhPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLHdhPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIikseWE9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHphPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxBYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksQmE9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLENhPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLERhPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxFYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksRmE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksR2E9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksSGE9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik7U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlXCIpO1xudmFyIElhPVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmxlZ2FjeV9oaWRkZW5cIik7U3ltYm9sLmZvcihcInJlYWN0LmNhY2hlXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC50cmFjaW5nX21hcmtlclwiKTt2YXIgSmE9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEthKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1KYSYmYVtKYV18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH12YXIgQT1PYmplY3QuYXNzaWduLExhO2Z1bmN0aW9uIE1hKGEpe2lmKHZvaWQgMD09PUxhKXRyeXt0aHJvdyBFcnJvcigpO31jYXRjaChjKXt2YXIgYj1jLnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO0xhPWImJmJbMV18fFwiXCJ9cmV0dXJuXCJcXG5cIitMYSthfXZhciBOYT0hMTtcbmZ1bmN0aW9uIE9hKGEsYil7aWYoIWF8fE5hKXJldHVyblwiXCI7TmE9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZihiKWlmKGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwicHJvcHNcIix7c2V0OmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9fSksXCJvYmplY3RcIj09PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KGIsW10pfWNhdGNoKGwpe3ZhciBkPWx9UmVmbGVjdC5jb25zdHJ1Y3QoYSxbXSxiKX1lbHNle3RyeXtiLmNhbGwoKX1jYXRjaChsKXtkPWx9YS5jYWxsKGIucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpO31jYXRjaChsKXtkPWx9YSgpfX1jYXRjaChsKXtpZihsJiZkJiZcInN0cmluZ1wiPT09dHlwZW9mIGwuc3RhY2spe2Zvcih2YXIgZT1sLnN0YWNrLnNwbGl0KFwiXFxuXCIpLFxuZj1kLnN0YWNrLnNwbGl0KFwiXFxuXCIpLGc9ZS5sZW5ndGgtMSxoPWYubGVuZ3RoLTE7MTw9ZyYmMDw9aCYmZVtnXSE9PWZbaF07KWgtLTtmb3IoOzE8PWcmJjA8PWg7Zy0tLGgtLSlpZihlW2ddIT09ZltoXSl7aWYoMSE9PWd8fDEhPT1oKXtkbyBpZihnLS0saC0tLDA+aHx8ZVtnXSE9PWZbaF0pe3ZhciBrPVwiXFxuXCIrZVtnXS5yZXBsYWNlKFwiIGF0IG5ldyBcIixcIiBhdCBcIik7YS5kaXNwbGF5TmFtZSYmay5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpJiYoaz1rLnJlcGxhY2UoXCI8YW5vbnltb3VzPlwiLGEuZGlzcGxheU5hbWUpKTtyZXR1cm4ga313aGlsZSgxPD1nJiYwPD1oKX1icmVha319fWZpbmFsbHl7TmE9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9Y31yZXR1cm4oYT1hP2EuZGlzcGxheU5hbWV8fGEubmFtZTpcIlwiKT9NYShhKTpcIlwifVxuZnVuY3Rpb24gUGEoYSl7c3dpdGNoKGEudGFnKXtjYXNlIDU6cmV0dXJuIE1hKGEudHlwZSk7Y2FzZSAxNjpyZXR1cm4gTWEoXCJMYXp5XCIpO2Nhc2UgMTM6cmV0dXJuIE1hKFwiU3VzcGVuc2VcIik7Y2FzZSAxOTpyZXR1cm4gTWEoXCJTdXNwZW5zZUxpc3RcIik7Y2FzZSAwOmNhc2UgMjpjYXNlIDE1OnJldHVybiBhPU9hKGEudHlwZSwhMSksYTtjYXNlIDExOnJldHVybiBhPU9hKGEudHlwZS5yZW5kZXIsITEpLGE7Y2FzZSAxOnJldHVybiBhPU9hKGEudHlwZSwhMCksYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gUWEoYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm4gYTtzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSB3YTpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgQWE6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgemE6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSBFYTpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSBGYTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwifWlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBDYTpyZXR1cm4oYS5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSBCYTpyZXR1cm4oYS5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSBEYTp2YXIgYj1hLnJlbmRlcjthPWEuZGlzcGxheU5hbWU7YXx8KGE9Yi5kaXNwbGF5TmFtZXx8XG5iLm5hbWV8fFwiXCIsYT1cIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7cmV0dXJuIGE7Y2FzZSBHYTpyZXR1cm4gYj1hLmRpc3BsYXlOYW1lfHxudWxsLG51bGwhPT1iP2I6UWEoYS50eXBlKXx8XCJNZW1vXCI7Y2FzZSBIYTpiPWEuX3BheWxvYWQ7YT1hLl9pbml0O3RyeXtyZXR1cm4gUWEoYShiKSl9Y2F0Y2goYyl7fX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJhKGEpe3ZhciBiPWEudHlwZTtzd2l0Y2goYS50YWcpe2Nhc2UgMjQ6cmV0dXJuXCJDYWNoZVwiO2Nhc2UgOTpyZXR1cm4oYi5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSAxMDpyZXR1cm4oYi5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLlByb3ZpZGVyXCI7Y2FzZSAxODpyZXR1cm5cIkRlaHlkcmF0ZWRGcmFnbWVudFwiO2Nhc2UgMTE6cmV0dXJuIGE9Yi5yZW5kZXIsYT1hLmRpc3BsYXlOYW1lfHxhLm5hbWV8fFwiXCIsYi5kaXNwbGF5TmFtZXx8KFwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtjYXNlIDc6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgNTpyZXR1cm4gYjtjYXNlIDQ6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIDM6cmV0dXJuXCJSb290XCI7Y2FzZSA2OnJldHVyblwiVGV4dFwiO2Nhc2UgMTY6cmV0dXJuIFFhKGIpO2Nhc2UgODpyZXR1cm4gYj09PXphP1wiU3RyaWN0TW9kZVwiOlwiTW9kZVwiO2Nhc2UgMjI6cmV0dXJuXCJPZmZzY3JlZW5cIjtcbmNhc2UgMTI6cmV0dXJuXCJQcm9maWxlclwiO2Nhc2UgMjE6cmV0dXJuXCJTY29wZVwiO2Nhc2UgMTM6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgMTk6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIjtjYXNlIDI1OnJldHVyblwiVHJhY2luZ01hcmtlclwiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBiLmRpc3BsYXlOYW1lfHxiLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKXJldHVybiBifXJldHVybiBudWxsfWZ1bmN0aW9uIFNhKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSBcImJvb2xlYW5cIjpjYXNlIFwibnVtYmVyXCI6Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJ1bmRlZmluZWRcIjpyZXR1cm4gYTtjYXNlIFwib2JqZWN0XCI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFRhKGEpe3ZhciBiPWEudHlwZTtyZXR1cm4oYT1hLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09YS50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09Ynx8XCJyYWRpb1wiPT09Yil9XG5mdW5jdGlvbiBVYShhKXt2YXIgYj1UYShhKT9cImNoZWNrZWRcIjpcInZhbHVlXCIsYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEuY29uc3RydWN0b3IucHJvdG90eXBlLGIpLGQ9XCJcIithW2JdO2lmKCFhLmhhc093blByb3BlcnR5KGIpJiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmdldCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuc2V0KXt2YXIgZT1jLmdldCxmPWMuc2V0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYSl7ZD1cIlwiK2E7Zi5jYWxsKHRoaXMsYSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7ZW51bWVyYWJsZTpjLmVudW1lcmFibGV9KTtyZXR1cm57Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7ZD1cIlwiK2F9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2EuX3ZhbHVlVHJhY2tlcj1cbm51bGw7ZGVsZXRlIGFbYl19fX19ZnVuY3Rpb24gVmEoYSl7YS5fdmFsdWVUcmFja2VyfHwoYS5fdmFsdWVUcmFja2VyPVVhKGEpKX1mdW5jdGlvbiBXYShhKXtpZighYSlyZXR1cm4hMTt2YXIgYj1hLl92YWx1ZVRyYWNrZXI7aWYoIWIpcmV0dXJuITA7dmFyIGM9Yi5nZXRWYWx1ZSgpO3ZhciBkPVwiXCI7YSYmKGQ9VGEoYSk/YS5jaGVja2VkP1widHJ1ZVwiOlwiZmFsc2VcIjphLnZhbHVlKTthPWQ7cmV0dXJuIGEhPT1jPyhiLnNldFZhbHVlKGEpLCEwKTohMX1mdW5jdGlvbiBYYShhKXthPWF8fChcInVuZGVmaW5lZFwiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYS5hY3RpdmVFbGVtZW50fHxhLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19XG5mdW5jdGlvbiBZYShhLGIpe3ZhciBjPWIuY2hlY2tlZDtyZXR1cm4gQSh7fSxiLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCx2YWx1ZTp2b2lkIDAsY2hlY2tlZDpudWxsIT1jP2M6YS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gWmEoYSxiKXt2YXIgYz1udWxsPT1iLmRlZmF1bHRWYWx1ZT9cIlwiOmIuZGVmYXVsdFZhbHVlLGQ9bnVsbCE9Yi5jaGVja2VkP2IuY2hlY2tlZDpiLmRlZmF1bHRDaGVja2VkO2M9U2EobnVsbCE9Yi52YWx1ZT9iLnZhbHVlOmMpO2EuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6ZCxpbml0aWFsVmFsdWU6Yyxjb250cm9sbGVkOlwiY2hlY2tib3hcIj09PWIudHlwZXx8XCJyYWRpb1wiPT09Yi50eXBlP251bGwhPWIuY2hlY2tlZDpudWxsIT1iLnZhbHVlfX1mdW5jdGlvbiBhYihhLGIpe2I9Yi5jaGVja2VkO251bGwhPWImJnRhKGEsXCJjaGVja2VkXCIsYiwhMSl9XG5mdW5jdGlvbiBiYihhLGIpe2FiKGEsYik7dmFyIGM9U2EoYi52YWx1ZSksZD1iLnR5cGU7aWYobnVsbCE9YylpZihcIm51bWJlclwiPT09ZCl7aWYoMD09PWMmJlwiXCI9PT1hLnZhbHVlfHxhLnZhbHVlIT1jKWEudmFsdWU9XCJcIitjfWVsc2UgYS52YWx1ZSE9PVwiXCIrYyYmKGEudmFsdWU9XCJcIitjKTtlbHNlIGlmKFwic3VibWl0XCI9PT1kfHxcInJlc2V0XCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpO3JldHVybn1iLmhhc093blByb3BlcnR5KFwidmFsdWVcIik/Y2IoYSxiLnR5cGUsYyk6Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSYmY2IoYSxiLnR5cGUsU2EoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9XG5mdW5jdGlvbiBkYihhLGIsYyl7aWYoYi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpfHxiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpKXt2YXIgZD1iLnR5cGU7aWYoIShcInN1Ym1pdFwiIT09ZCYmXCJyZXNldFwiIT09ZHx8dm9pZCAwIT09Yi52YWx1ZSYmbnVsbCE9PWIudmFsdWUpKXJldHVybjtiPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTtjfHxiPT09YS52YWx1ZXx8KGEudmFsdWU9Yik7YS5kZWZhdWx0VmFsdWU9Yn1jPWEubmFtZTtcIlwiIT09YyYmKGEubmFtZT1cIlwiKTthLmRlZmF1bHRDaGVja2VkPSEhYS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkO1wiXCIhPT1jJiYoYS5uYW1lPWMpfVxuZnVuY3Rpb24gY2IoYSxiLGMpe2lmKFwibnVtYmVyXCIhPT1ifHxYYShhLm93bmVyRG9jdW1lbnQpIT09YSludWxsPT1jP2EuZGVmYXVsdFZhbHVlPVwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTphLmRlZmF1bHRWYWx1ZSE9PVwiXCIrYyYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrYyl9dmFyIGViPUFycmF5LmlzQXJyYXk7XG5mdW5jdGlvbiBmYihhLGIsYyxkKXthPWEub3B0aW9ucztpZihiKXtiPXt9O2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWJbXCIkXCIrY1tlXV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyllPWIuaGFzT3duUHJvcGVydHkoXCIkXCIrYVtjXS52YWx1ZSksYVtjXS5zZWxlY3RlZCE9PWUmJihhW2NdLnNlbGVjdGVkPWUpLGUmJmQmJihhW2NdLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtjPVwiXCIrU2EoYyk7Yj1udWxsO2ZvcihlPTA7ZTxhLmxlbmd0aDtlKyspe2lmKGFbZV0udmFsdWU9PT1jKXthW2VdLnNlbGVjdGVkPSEwO2QmJihhW2VdLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufW51bGwhPT1ifHxhW2VdLmRpc2FibGVkfHwoYj1hW2VdKX1udWxsIT09YiYmKGIuc2VsZWN0ZWQ9ITApfX1cbmZ1bmN0aW9uIGdiKGEsYil7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl0aHJvdyBFcnJvcihwKDkxKSk7cmV0dXJuIEEoe30sYix7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1iLnZhbHVlO2lmKG51bGw9PWMpe2M9Yi5jaGlsZHJlbjtiPWIuZGVmYXVsdFZhbHVlO2lmKG51bGwhPWMpe2lmKG51bGwhPWIpdGhyb3cgRXJyb3IocCg5MikpO2lmKGViKGMpKXtpZigxPGMubGVuZ3RoKXRocm93IEVycm9yKHAoOTMpKTtjPWNbMF19Yj1jfW51bGw9PWImJihiPVwiXCIpO2M9Yn1hLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpTYShjKX19XG5mdW5jdGlvbiBpYihhLGIpe3ZhciBjPVNhKGIudmFsdWUpLGQ9U2EoYi5kZWZhdWx0VmFsdWUpO251bGwhPWMmJihjPVwiXCIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09YyYmKGEuZGVmYXVsdFZhbHVlPWMpKTtudWxsIT1kJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitkKX1mdW5jdGlvbiBqYihhKXt2YXIgYj1hLnRleHRDb250ZW50O2I9PT1hLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiZcIlwiIT09YiYmbnVsbCE9PWImJihhLnZhbHVlPWIpfWZ1bmN0aW9uIGtiKGEpe3N3aXRjaChhKXtjYXNlIFwic3ZnXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO2Nhc2UgXCJtYXRoXCI6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7ZGVmYXVsdDpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIn19XG5mdW5jdGlvbiBsYihhLGIpe3JldHVybiBudWxsPT1hfHxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/a2IoYik6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YSYmXCJmb3JlaWduT2JqZWN0XCI9PT1iP1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiOmF9XG52YXIgbWIsbmI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiE9PWEubmFtZXNwYWNlVVJJfHxcImlubmVySFRNTFwiaW4gYSlhLmlubmVySFRNTD1iO2Vsc2V7bWI9bWJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bWIuaW5uZXJIVE1MPVwiPHN2Zz5cIitiLnZhbHVlT2YoKS50b1N0cmluZygpK1wiPC9zdmc+XCI7Zm9yKGI9bWIuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2IuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpfX0pO1xuZnVuY3Rpb24gb2IoYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9YjtyZXR1cm59fWEudGV4dENvbnRlbnQ9Yn1cbnZhciBwYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLFxuem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxxYj1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07T2JqZWN0LmtleXMocGIpLmZvckVhY2goZnVuY3Rpb24oYSl7cWIuZm9yRWFjaChmdW5jdGlvbihiKXtiPWIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxKTtwYltiXT1wYlthXX0pfSk7ZnVuY3Rpb24gcmIoYSxiLGMpe3JldHVybiBudWxsPT1ifHxcImJvb2xlYW5cIj09PXR5cGVvZiBifHxcIlwiPT09Yj9cIlwiOmN8fFwibnVtYmVyXCIhPT10eXBlb2YgYnx8MD09PWJ8fHBiLmhhc093blByb3BlcnR5KGEpJiZwYlthXT8oXCJcIitiKS50cmltKCk6YitcInB4XCJ9XG5mdW5jdGlvbiBzYihhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKFwiLS1cIiksZT1yYihjLGJbY10sZCk7XCJmbG9hdFwiPT09YyYmKGM9XCJjc3NGbG9hdFwiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fXZhciB0Yj1BKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO1xuZnVuY3Rpb24gdWIoYSxiKXtpZihiKXtpZih0YlthXSYmKG51bGwhPWIuY2hpbGRyZW58fG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoMTM3LGEpKTtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXtpZihudWxsIT1iLmNoaWxkcmVuKXRocm93IEVycm9yKHAoNjApKTtpZihcIm9iamVjdFwiIT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8fCEoXCJfX2h0bWxcImluIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKHAoNjEpKTt9aWYobnVsbCE9Yi5zdHlsZSYmXCJvYmplY3RcIiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKHAoNjIpKTt9fVxuZnVuY3Rpb24gdmIoYSxiKXtpZigtMT09PWEuaW5kZXhPZihcIi1cIikpcmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBiLmlzO3N3aXRjaChhKXtjYXNlIFwiYW5ub3RhdGlvbi14bWxcIjpjYXNlIFwiY29sb3ItcHJvZmlsZVwiOmNhc2UgXCJmb250LWZhY2VcIjpjYXNlIFwiZm9udC1mYWNlLXNyY1wiOmNhc2UgXCJmb250LWZhY2UtdXJpXCI6Y2FzZSBcImZvbnQtZmFjZS1mb3JtYXRcIjpjYXNlIFwiZm9udC1mYWNlLW5hbWVcIjpjYXNlIFwibWlzc2luZy1nbHlwaFwiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciB3Yj1udWxsO2Z1bmN0aW9uIHhiKGEpe2E9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8d2luZG93O2EuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihhPWEuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpO3JldHVybiAzPT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YX12YXIgeWI9bnVsbCx6Yj1udWxsLEFiPW51bGw7XG5mdW5jdGlvbiBCYihhKXtpZihhPUNiKGEpKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgeWIpdGhyb3cgRXJyb3IocCgyODApKTt2YXIgYj1hLnN0YXRlTm9kZTtiJiYoYj1EYihiKSx5YihhLnN0YXRlTm9kZSxhLnR5cGUsYikpfX1mdW5jdGlvbiBFYihhKXt6Yj9BYj9BYi5wdXNoKGEpOkFiPVthXTp6Yj1hfWZ1bmN0aW9uIEZiKCl7aWYoemIpe3ZhciBhPXpiLGI9QWI7QWI9emI9bnVsbDtCYihhKTtpZihiKWZvcihhPTA7YTxiLmxlbmd0aDthKyspQmIoYlthXSl9fWZ1bmN0aW9uIEdiKGEsYil7cmV0dXJuIGEoYil9ZnVuY3Rpb24gSGIoKXt9dmFyIEliPSExO2Z1bmN0aW9uIEpiKGEsYixjKXtpZihJYilyZXR1cm4gYShiLGMpO0liPSEwO3RyeXtyZXR1cm4gR2IoYSxiLGMpfWZpbmFsbHl7aWYoSWI9ITEsbnVsbCE9PXpifHxudWxsIT09QWIpSGIoKSxGYigpfX1cbmZ1bmN0aW9uIEtiKGEsYil7dmFyIGM9YS5zdGF0ZU5vZGU7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7dmFyIGQ9RGIoYyk7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgXCJvbkNsaWNrXCI6Y2FzZSBcIm9uQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tcIjpjYXNlIFwib25Eb3VibGVDbGlja0NhcHR1cmVcIjpjYXNlIFwib25Nb3VzZURvd25cIjpjYXNlIFwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlXCI6Y2FzZSBcIm9uTW91c2VNb3ZlQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlVXBcIjpjYXNlIFwib25Nb3VzZVVwQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRW50ZXJcIjooZD0hZC5kaXNhYmxlZCl8fChhPWEudHlwZSxkPSEoXCJidXR0b25cIj09PWF8fFwiaW5wdXRcIj09PWF8fFwic2VsZWN0XCI9PT1hfHxcInRleHRhcmVhXCI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJlwiZnVuY3Rpb25cIiE9PVxudHlwZW9mIGMpdGhyb3cgRXJyb3IocCgyMzEsYix0eXBlb2YgYykpO3JldHVybiBjfXZhciBMYj0hMTtpZihpYSl0cnl7dmFyIE1iPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShNYixcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7TGI9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKX1jYXRjaChhKXtMYj0hMX1mdW5jdGlvbiBOYihhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2gobSl7dGhpcy5vbkVycm9yKG0pfX12YXIgT2I9ITEsUGI9bnVsbCxRYj0hMSxSYj1udWxsLFNiPXtvbkVycm9yOmZ1bmN0aW9uKGEpe09iPSEwO1BiPWF9fTtmdW5jdGlvbiBUYihhLGIsYyxkLGUsZixnLGgsayl7T2I9ITE7UGI9bnVsbDtOYi5hcHBseShTYixhcmd1bWVudHMpfVxuZnVuY3Rpb24gVWIoYSxiLGMsZCxlLGYsZyxoLGspe1RiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihPYil7aWYoT2Ipe3ZhciBsPVBiO09iPSExO1BiPW51bGx9ZWxzZSB0aHJvdyBFcnJvcihwKDE5OCkpO1FifHwoUWI9ITAsUmI9bCl9fWZ1bmN0aW9uIFZiKGEpe3ZhciBiPWEsYz1hO2lmKGEuYWx0ZXJuYXRlKWZvcig7Yi5yZXR1cm47KWI9Yi5yZXR1cm47ZWxzZXthPWI7ZG8gYj1hLDAhPT0oYi5mbGFncyY0MDk4KSYmKGM9Yi5yZXR1cm4pLGE9Yi5yZXR1cm47d2hpbGUoYSl9cmV0dXJuIDM9PT1iLnRhZz9jOm51bGx9ZnVuY3Rpb24gV2IoYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9YS5tZW1vaXplZFN0YXRlO251bGw9PT1iJiYoYT1hLmFsdGVybmF0ZSxudWxsIT09YSYmKGI9YS5tZW1vaXplZFN0YXRlKSk7aWYobnVsbCE9PWIpcmV0dXJuIGIuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBYYihhKXtpZihWYihhKSE9PWEpdGhyb3cgRXJyb3IocCgxODgpKTt9XG5mdW5jdGlvbiBZYihhKXt2YXIgYj1hLmFsdGVybmF0ZTtpZighYil7Yj1WYihhKTtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBiIT09YT9udWxsOmF9Zm9yKHZhciBjPWEsZD1iOzspe3ZhciBlPWMucmV0dXJuO2lmKG51bGw9PT1lKWJyZWFrO3ZhciBmPWUuYWx0ZXJuYXRlO2lmKG51bGw9PT1mKXtkPWUucmV0dXJuO2lmKG51bGwhPT1kKXtjPWQ7Y29udGludWV9YnJlYWt9aWYoZS5jaGlsZD09PWYuY2hpbGQpe2ZvcihmPWUuY2hpbGQ7Zjspe2lmKGY9PT1jKXJldHVybiBYYihlKSxhO2lmKGY9PT1kKXJldHVybiBYYihlKSxiO2Y9Zi5zaWJsaW5nfXRocm93IEVycm9yKHAoMTg4KSk7fWlmKGMucmV0dXJuIT09ZC5yZXR1cm4pYz1lLGQ9ZjtlbHNle2Zvcih2YXIgZz0hMSxoPWUuY2hpbGQ7aDspe2lmKGg9PT1jKXtnPSEwO2M9ZTtkPWY7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1lO2M9ZjticmVha31oPWguc2libGluZ31pZighZyl7Zm9yKGg9Zi5jaGlsZDtoOyl7aWYoaD09PVxuYyl7Zz0hMDtjPWY7ZD1lO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZjtjPWU7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpdGhyb3cgRXJyb3IocCgxODkpKTt9fWlmKGMuYWx0ZXJuYXRlIT09ZCl0aHJvdyBFcnJvcihwKDE5MCkpO31pZigzIT09Yy50YWcpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYy5zdGF0ZU5vZGUuY3VycmVudD09PWM/YTpifWZ1bmN0aW9uIFpiKGEpe2E9WWIoYSk7cmV0dXJuIG51bGwhPT1hPyRiKGEpOm51bGx9ZnVuY3Rpb24gJGIoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGE7Zm9yKGE9YS5jaGlsZDtudWxsIT09YTspe3ZhciBiPSRiKGEpO2lmKG51bGwhPT1iKXJldHVybiBiO2E9YS5zaWJsaW5nfXJldHVybiBudWxsfVxudmFyIGFjPWNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssYmM9Y2EudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssY2M9Y2EudW5zdGFibGVfc2hvdWxkWWllbGQsZGM9Y2EudW5zdGFibGVfcmVxdWVzdFBhaW50LEI9Y2EudW5zdGFibGVfbm93LGVjPWNhLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGZjPWNhLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5LGdjPWNhLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGhjPWNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGljPWNhLnVuc3RhYmxlX0xvd1ByaW9yaXR5LGpjPWNhLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxrYz1udWxsLGxjPW51bGw7ZnVuY3Rpb24gbWMoYSl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Db21taXRGaWJlclJvb3Qoa2MsYSx2b2lkIDAsMTI4PT09KGEuY3VycmVudC5mbGFncyYxMjgpKX1jYXRjaChiKXt9fVxudmFyIG9jPU1hdGguY2x6MzI/TWF0aC5jbHozMjpuYyxwYz1NYXRoLmxvZyxxYz1NYXRoLkxOMjtmdW5jdGlvbiBuYyhhKXthPj4+PTA7cmV0dXJuIDA9PT1hPzMyOjMxLShwYyhhKS9xY3wwKXwwfXZhciByYz02NCxzYz00MTk0MzA0O1xuZnVuY3Rpb24gdGMoYSl7c3dpdGNoKGEmLWEpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBhJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gYSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O1xuZGVmYXVsdDpyZXR1cm4gYX19ZnVuY3Rpb24gdWMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcztpZigwPT09YylyZXR1cm4gMDt2YXIgZD0wLGU9YS5zdXNwZW5kZWRMYW5lcyxmPWEucGluZ2VkTGFuZXMsZz1jJjI2ODQzNTQ1NTtpZigwIT09Zyl7dmFyIGg9ZyZ+ZTswIT09aD9kPXRjKGgpOihmJj1nLDAhPT1mJiYoZD10YyhmKSkpfWVsc2UgZz1jJn5lLDAhPT1nP2Q9dGMoZyk6MCE9PWYmJihkPXRjKGYpKTtpZigwPT09ZClyZXR1cm4gMDtpZigwIT09YiYmYiE9PWQmJjA9PT0oYiZlKSYmKGU9ZCYtZCxmPWImLWIsZT49Znx8MTY9PT1lJiYwIT09KGYmNDE5NDI0MCkpKXJldHVybiBiOzAhPT0oZCY0KSYmKGR8PWMmMTYpO2I9YS5lbnRhbmdsZWRMYW5lcztpZigwIT09Yilmb3IoYT1hLmVudGFuZ2xlbWVudHMsYiY9ZDswPGI7KWM9MzEtb2MoYiksZT0xPDxjLGR8PWFbY10sYiY9fmU7cmV0dXJuIGR9XG5mdW5jdGlvbiB2YyhhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gYisyNTA7Y2FzZSA4OmNhc2UgMTY6Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBiKzVFMztjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybi0xO2Nhc2UgMTM0MjE3NzI4OmNhc2UgMjY4NDM1NDU2OmNhc2UgNTM2ODcwOTEyOmNhc2UgMTA3Mzc0MTgyNDpyZXR1cm4tMTtkZWZhdWx0OnJldHVybi0xfX1cbmZ1bmN0aW9uIHdjKGEsYil7Zm9yKHZhciBjPWEuc3VzcGVuZGVkTGFuZXMsZD1hLnBpbmdlZExhbmVzLGU9YS5leHBpcmF0aW9uVGltZXMsZj1hLnBlbmRpbmdMYW5lczswPGY7KXt2YXIgZz0zMS1vYyhmKSxoPTE8PGcsaz1lW2ddO2lmKC0xPT09ayl7aWYoMD09PShoJmMpfHwwIT09KGgmZCkpZVtnXT12YyhoLGIpfWVsc2Ugazw9YiYmKGEuZXhwaXJlZExhbmVzfD1oKTtmJj1+aH19ZnVuY3Rpb24geGMoYSl7YT1hLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNTtyZXR1cm4gMCE9PWE/YTphJjEwNzM3NDE4MjQ/MTA3Mzc0MTgyNDowfWZ1bmN0aW9uIHljKCl7dmFyIGE9cmM7cmM8PD0xOzA9PT0ocmMmNDE5NDI0MCkmJihyYz02NCk7cmV0dXJuIGF9ZnVuY3Rpb24gemMoYSl7Zm9yKHZhciBiPVtdLGM9MDszMT5jO2MrKyliLnB1c2goYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBBYyhhLGIsYyl7YS5wZW5kaW5nTGFuZXN8PWI7NTM2ODcwOTEyIT09YiYmKGEuc3VzcGVuZGVkTGFuZXM9MCxhLnBpbmdlZExhbmVzPTApO2E9YS5ldmVudFRpbWVzO2I9MzEtb2MoYik7YVtiXT1jfWZ1bmN0aW9uIEJjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXMmfmI7YS5wZW5kaW5nTGFuZXM9YjthLnN1c3BlbmRlZExhbmVzPTA7YS5waW5nZWRMYW5lcz0wO2EuZXhwaXJlZExhbmVzJj1iO2EubXV0YWJsZVJlYWRMYW5lcyY9YjthLmVudGFuZ2xlZExhbmVzJj1iO2I9YS5lbnRhbmdsZW1lbnRzO3ZhciBkPWEuZXZlbnRUaW1lcztmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGM7KXt2YXIgZT0zMS1vYyhjKSxmPTE8PGU7YltlXT0wO2RbZV09LTE7YVtlXT0tMTtjJj1+Zn19XG5mdW5jdGlvbiBDYyhhLGIpe3ZhciBjPWEuZW50YW5nbGVkTGFuZXN8PWI7Zm9yKGE9YS5lbnRhbmdsZW1lbnRzO2M7KXt2YXIgZD0zMS1vYyhjKSxlPTE8PGQ7ZSZifGFbZF0mYiYmKGFbZF18PWIpO2MmPX5lfX12YXIgQz0wO2Z1bmN0aW9uIERjKGEpe2EmPS1hO3JldHVybiAxPGE/NDxhPzAhPT0oYSYyNjg0MzU0NTUpPzE2OjUzNjg3MDkxMjo0OjF9dmFyIEVjLEZjLEdjLEhjLEljLEpjPSExLEtjPVtdLExjPW51bGwsTWM9bnVsbCxOYz1udWxsLE9jPW5ldyBNYXAsUGM9bmV3IE1hcCxRYz1bXSxSYz1cIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCBzdWJtaXRcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBTYyhhLGIpe3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOkxjPW51bGw7YnJlYWs7Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnbGVhdmVcIjpNYz1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwibW91c2VvdXRcIjpOYz1udWxsO2JyZWFrO2Nhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVyb3V0XCI6T2MuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6UGMuZGVsZXRlKGIucG9pbnRlcklkKX19XG5mdW5jdGlvbiBUYyhhLGIsYyxkLGUsZil7aWYobnVsbD09PWF8fGEubmF0aXZlRXZlbnQhPT1mKXJldHVybiBhPXtibG9ja2VkT246Yixkb21FdmVudE5hbWU6YyxldmVudFN5c3RlbUZsYWdzOmQsbmF0aXZlRXZlbnQ6Zix0YXJnZXRDb250YWluZXJzOltlXX0sbnVsbCE9PWImJihiPUNiKGIpLG51bGwhPT1iJiZGYyhiKSksYTthLmV2ZW50U3lzdGVtRmxhZ3N8PWQ7Yj1hLnRhcmdldENvbnRhaW5lcnM7bnVsbCE9PWUmJi0xPT09Yi5pbmRleE9mKGUpJiZiLnB1c2goZSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBVYyhhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlIFwiZm9jdXNpblwiOnJldHVybiBMYz1UYyhMYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJkcmFnZW50ZXJcIjpyZXR1cm4gTWM9VGMoTWMsYSxiLGMsZCxlKSwhMDtjYXNlIFwibW91c2VvdmVyXCI6cmV0dXJuIE5jPVRjKE5jLGEsYixjLGQsZSksITA7Y2FzZSBcInBvaW50ZXJvdmVyXCI6dmFyIGY9ZS5wb2ludGVySWQ7T2Muc2V0KGYsVGMoT2MuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpO3JldHVybiEwO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOnJldHVybiBmPWUucG9pbnRlcklkLFBjLnNldChmLFRjKFBjLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKSwhMH1yZXR1cm4hMX1cbmZ1bmN0aW9uIFZjKGEpe3ZhciBiPVdjKGEudGFyZ2V0KTtpZihudWxsIT09Yil7dmFyIGM9VmIoYik7aWYobnVsbCE9PWMpaWYoYj1jLnRhZywxMz09PWIpe2lmKGI9V2IoYyksbnVsbCE9PWIpe2EuYmxvY2tlZE9uPWI7SWMoYS5wcmlvcml0eSxmdW5jdGlvbigpe0djKGMpfSk7cmV0dXJufX1lbHNlIGlmKDM9PT1iJiZjLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXthLmJsb2NrZWRPbj0zPT09Yy50YWc/Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19YS5ibG9ja2VkT249bnVsbH1cbmZ1bmN0aW9uIFhjKGEpe2lmKG51bGwhPT1hLmJsb2NrZWRPbilyZXR1cm4hMTtmb3IodmFyIGI9YS50YXJnZXRDb250YWluZXJzOzA8Yi5sZW5ndGg7KXt2YXIgYz1ZYyhhLmRvbUV2ZW50TmFtZSxhLmV2ZW50U3lzdGVtRmxhZ3MsYlswXSxhLm5hdGl2ZUV2ZW50KTtpZihudWxsPT09Yyl7Yz1hLm5hdGl2ZUV2ZW50O3ZhciBkPW5ldyBjLmNvbnN0cnVjdG9yKGMudHlwZSxjKTt3Yj1kO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoZCk7d2I9bnVsbH1lbHNlIHJldHVybiBiPUNiKGMpLG51bGwhPT1iJiZGYyhiKSxhLmJsb2NrZWRPbj1jLCExO2Iuc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBaYyhhLGIsYyl7WGMoYSkmJmMuZGVsZXRlKGIpfWZ1bmN0aW9uICRjKCl7SmM9ITE7bnVsbCE9PUxjJiZYYyhMYykmJihMYz1udWxsKTtudWxsIT09TWMmJlhjKE1jKSYmKE1jPW51bGwpO251bGwhPT1OYyYmWGMoTmMpJiYoTmM9bnVsbCk7T2MuZm9yRWFjaChaYyk7UGMuZm9yRWFjaChaYyl9XG5mdW5jdGlvbiBhZChhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsSmN8fChKYz0hMCxjYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKGNhLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LCRjKSkpfVxuZnVuY3Rpb24gYmQoYSl7ZnVuY3Rpb24gYihiKXtyZXR1cm4gYWQoYixhKX1pZigwPEtjLmxlbmd0aCl7YWQoS2NbMF0sYSk7Zm9yKHZhciBjPTE7YzxLYy5sZW5ndGg7YysrKXt2YXIgZD1LY1tjXTtkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKX19bnVsbCE9PUxjJiZhZChMYyxhKTtudWxsIT09TWMmJmFkKE1jLGEpO251bGwhPT1OYyYmYWQoTmMsYSk7T2MuZm9yRWFjaChiKTtQYy5mb3JFYWNoKGIpO2ZvcihjPTA7YzxRYy5sZW5ndGg7YysrKWQ9UWNbY10sZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCk7Zm9yKDswPFFjLmxlbmd0aCYmKGM9UWNbMF0sbnVsbD09PWMuYmxvY2tlZE9uKTspVmMoYyksbnVsbD09PWMuYmxvY2tlZE9uJiZRYy5zaGlmdCgpfXZhciBjZD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxkZD0hMDtcbmZ1bmN0aW9uIGVkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz0xLGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19ZnVuY3Rpb24gZ2QoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTQsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1cbmZ1bmN0aW9uIGZkKGEsYixjLGQpe2lmKGRkKXt2YXIgZT1ZYyhhLGIsYyxkKTtpZihudWxsPT09ZSloZChhLGIsZCxpZCxjKSxTYyhhLGQpO2Vsc2UgaWYoVWMoZSxhLGIsYyxkKSlkLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoU2MoYSxkKSxiJjQmJi0xPFJjLmluZGV4T2YoYSkpe2Zvcig7bnVsbCE9PWU7KXt2YXIgZj1DYihlKTtudWxsIT09ZiYmRWMoZik7Zj1ZYyhhLGIsYyxkKTtudWxsPT09ZiYmaGQoYSxiLGQsaWQsYyk7aWYoZj09PWUpYnJlYWs7ZT1mfW51bGwhPT1lJiZkLnN0b3BQcm9wYWdhdGlvbigpfWVsc2UgaGQoYSxiLGQsbnVsbCxjKX19dmFyIGlkPW51bGw7XG5mdW5jdGlvbiBZYyhhLGIsYyxkKXtpZD1udWxsO2E9eGIoZCk7YT1XYyhhKTtpZihudWxsIT09YSlpZihiPVZiKGEpLG51bGw9PT1iKWE9bnVsbDtlbHNlIGlmKGM9Yi50YWcsMTM9PT1jKXthPVdiKGIpO2lmKG51bGwhPT1hKXJldHVybiBhO2E9bnVsbH1lbHNlIGlmKDM9PT1jKXtpZihiLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiAzPT09Yi50YWc/Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2E9bnVsbH1lbHNlIGIhPT1hJiYoYT1udWxsKTtpZD1hO3JldHVybiBudWxsfVxuZnVuY3Rpb24gamQoYSl7c3dpdGNoKGEpe2Nhc2UgXCJjYW5jZWxcIjpjYXNlIFwiY2xpY2tcIjpjYXNlIFwiY2xvc2VcIjpjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOmNhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcImludmFsaWRcIjpjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJrZXl1cFwiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJwYXN0ZVwiOmNhc2UgXCJwYXVzZVwiOmNhc2UgXCJwbGF5XCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcnVwXCI6Y2FzZSBcInJhdGVjaGFuZ2VcIjpjYXNlIFwicmVzZXRcIjpjYXNlIFwicmVzaXplXCI6Y2FzZSBcInNlZWtlZFwiOmNhc2UgXCJzdWJtaXRcIjpjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2hzdGFydFwiOmNhc2UgXCJ2b2x1bWVjaGFuZ2VcIjpjYXNlIFwiY2hhbmdlXCI6Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmNhc2UgXCJ0ZXh0SW5wdXRcIjpjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOmNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmNhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmNhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOmNhc2UgXCJiZWZvcmVpbnB1dFwiOmNhc2UgXCJibHVyXCI6Y2FzZSBcImZ1bGxzY3JlZW5jaGFuZ2VcIjpjYXNlIFwiZm9jdXNcIjpjYXNlIFwiaGFzaGNoYW5nZVwiOmNhc2UgXCJwb3BzdGF0ZVwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwic2VsZWN0c3RhcnRcIjpyZXR1cm4gMTtjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJzY3JvbGxcIjpjYXNlIFwidG9nZ2xlXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ3aGVlbFwiOmNhc2UgXCJtb3VzZWVudGVyXCI6Y2FzZSBcIm1vdXNlbGVhdmVcIjpjYXNlIFwicG9pbnRlcmVudGVyXCI6Y2FzZSBcInBvaW50ZXJsZWF2ZVwiOnJldHVybiA0O1xuY2FzZSBcIm1lc3NhZ2VcIjpzd2l0Y2goZWMoKSl7Y2FzZSBmYzpyZXR1cm4gMTtjYXNlIGdjOnJldHVybiA0O2Nhc2UgaGM6Y2FzZSBpYzpyZXR1cm4gMTY7Y2FzZSBqYzpyZXR1cm4gNTM2ODcwOTEyO2RlZmF1bHQ6cmV0dXJuIDE2fWRlZmF1bHQ6cmV0dXJuIDE2fX12YXIga2Q9bnVsbCxsZD1udWxsLG1kPW51bGw7ZnVuY3Rpb24gbmQoKXtpZihtZClyZXR1cm4gbWQ7dmFyIGEsYj1sZCxjPWIubGVuZ3RoLGQsZT1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxmPWUubGVuZ3RoO2ZvcihhPTA7YTxjJiZiW2FdPT09ZVthXTthKyspO3ZhciBnPWMtYTtmb3IoZD0xO2Q8PWcmJmJbYy1kXT09PWVbZi1kXTtkKyspO3JldHVybiBtZD1lLnNsaWNlKGEsMTxkPzEtZDp2b2lkIDApfVxuZnVuY3Rpb24gb2QoYSl7dmFyIGI9YS5rZXlDb2RlO1wiY2hhckNvZGVcImluIGE/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9ZnVuY3Rpb24gcGQoKXtyZXR1cm4hMH1mdW5jdGlvbiBxZCgpe3JldHVybiExfVxuZnVuY3Rpb24gcmQoYSl7ZnVuY3Rpb24gYihiLGQsZSxmLGcpe3RoaXMuX3JlYWN0TmFtZT1iO3RoaXMuX3RhcmdldEluc3Q9ZTt0aGlzLnR5cGU9ZDt0aGlzLm5hdGl2ZUV2ZW50PWY7dGhpcy50YXJnZXQ9Zzt0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYoYj1hW2NdLHRoaXNbY109Yj9iKGYpOmZbY10pO3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1mLmRlZmF1bHRQcmV2ZW50ZWQ/Zi5kZWZhdWx0UHJldmVudGVkOiExPT09Zi5yZXR1cm5WYWx1ZSk/cGQ6cWQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1xZDtyZXR1cm4gdGhpc31BKGIucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTpcInVua25vd25cIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiZcbihhLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1wZCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEuc3RvcFByb3BhZ2F0aW9uP2Euc3RvcFByb3BhZ2F0aW9uKCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5jYW5jZWxCdWJibGUmJihhLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wZCl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpwZH0pO3JldHVybiBifVxudmFyIHNkPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LHRkPXJkKHNkKSx1ZD1BKHt9LHNkLHt2aWV3OjAsZGV0YWlsOjB9KSx2ZD1yZCh1ZCksd2QseGQseWQsQWQ9QSh7fSx1ZCx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5yZWxhdGVkVGFyZ2V0P2EuZnJvbUVsZW1lbnQ9PT1hLnNyY0VsZW1lbnQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudDphLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihhKXtpZihcIm1vdmVtZW50WFwiaW5cbmEpcmV0dXJuIGEubW92ZW1lbnRYO2EhPT15ZCYmKHlkJiZcIm1vdXNlbW92ZVwiPT09YS50eXBlPyh3ZD1hLnNjcmVlblgteWQuc2NyZWVuWCx4ZD1hLnNjcmVlblkteWQuc2NyZWVuWSk6eGQ9d2Q9MCx5ZD1hKTtyZXR1cm4gd2R9LG1vdmVtZW50WTpmdW5jdGlvbihhKXtyZXR1cm5cIm1vdmVtZW50WVwiaW4gYT9hLm1vdmVtZW50WTp4ZH19KSxCZD1yZChBZCksQ2Q9QSh7fSxBZCx7ZGF0YVRyYW5zZmVyOjB9KSxEZD1yZChDZCksRWQ9QSh7fSx1ZCx7cmVsYXRlZFRhcmdldDowfSksRmQ9cmQoRWQpLEdkPUEoe30sc2Qse2FuaW1hdGlvbk5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLEhkPXJkKEdkKSxJZD1BKHt9LHNkLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGEpe3JldHVyblwiY2xpcGJvYXJkRGF0YVwiaW4gYT9hLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksSmQ9cmQoSWQpLEtkPUEoe30sc2Qse2RhdGE6MH0pLExkPXJkKEtkKSxNZD17RXNjOlwiRXNjYXBlXCIsXG5TcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSxOZD17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIiwxMTY6XCJGNVwiLDExNzpcIkY2XCIsMTE4OlwiRjdcIixcbjExOTpcIkY4XCIsMTIwOlwiRjlcIiwxMjE6XCJGMTBcIiwxMjI6XCJGMTFcIiwxMjM6XCJGMTJcIiwxNDQ6XCJOdW1Mb2NrXCIsMTQ1OlwiU2Nyb2xsTG9ja1wiLDIyNDpcIk1ldGFcIn0sT2Q9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIFBkKGEpe3ZhciBiPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIGIuZ2V0TW9kaWZpZXJTdGF0ZT9iLmdldE1vZGlmaWVyU3RhdGUoYSk6KGE9T2RbYV0pPyEhYlthXTohMX1mdW5jdGlvbiB6ZCgpe3JldHVybiBQZH1cbnZhciBRZD1BKHt9LHVkLHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPU1kW2Eua2V5XXx8YS5rZXk7aWYoXCJVbmlkZW50aWZpZWRcIiE9PWIpcmV0dXJuIGJ9cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlPyhhPW9kKGEpLDEzPT09YT9cIkVudGVyXCI6U3RyaW5nLmZyb21DaGFyQ29kZShhKSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9OZFthLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOnpkLGNoYXJDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT9vZChhKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVyblwia2V5cHJlc3NcIj09PVxuYS50eXBlP29kKGEpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/YS5rZXlDb2RlOjB9fSksUmQ9cmQoUWQpLFNkPUEoe30sQWQse3BvaW50ZXJJZDowLHdpZHRoOjAsaGVpZ2h0OjAscHJlc3N1cmU6MCx0YW5nZW50aWFsUHJlc3N1cmU6MCx0aWx0WDowLHRpbHRZOjAsdHdpc3Q6MCxwb2ludGVyVHlwZTowLGlzUHJpbWFyeTowfSksVGQ9cmQoU2QpLFVkPUEoe30sdWQse3RvdWNoZXM6MCx0YXJnZXRUb3VjaGVzOjAsY2hhbmdlZFRvdWNoZXM6MCxhbHRLZXk6MCxtZXRhS2V5OjAsY3RybEtleTowLHNoaWZ0S2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZH0pLFZkPXJkKFVkKSxXZD1BKHt9LHNkLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLFhkPXJkKFdkKSxZZD1BKHt9LEFkLHtkZWx0YVg6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVhcImluIGE/YS5kZWx0YVg6XCJ3aGVlbERlbHRhWFwiaW4gYT8tYS53aGVlbERlbHRhWDowfSxcbmRlbHRhWTpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWVwiaW4gYT9hLmRlbHRhWTpcIndoZWVsRGVsdGFZXCJpbiBhPy1hLndoZWVsRGVsdGFZOlwid2hlZWxEZWx0YVwiaW4gYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksWmQ9cmQoWWQpLCRkPVs5LDEzLDI3LDMyXSxhZT1pYSYmXCJDb21wb3NpdGlvbkV2ZW50XCJpbiB3aW5kb3csYmU9bnVsbDtpYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYoYmU9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgY2U9aWEmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFiZSxkZT1pYSYmKCFhZXx8YmUmJjg8YmUmJjExPj1iZSksZWU9U3RyaW5nLmZyb21DaGFyQ29kZSgzMiksZmU9ITE7XG5mdW5jdGlvbiBnZShhLGIpe3N3aXRjaChhKXtjYXNlIFwia2V5dXBcIjpyZXR1cm4tMSE9PSRkLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlIFwia2V5ZG93blwiOnJldHVybiAyMjkhPT1iLmtleUNvZGU7Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJmb2N1c291dFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGhlKGEpe2E9YS5kZXRhaWw7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZcImRhdGFcImluIGE/YS5kYXRhOm51bGx9dmFyIGllPSExO2Z1bmN0aW9uIGplKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBoZShiKTtjYXNlIFwia2V5cHJlc3NcIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7ZmU9ITA7cmV0dXJuIGVlO2Nhc2UgXCJ0ZXh0SW5wdXRcIjpyZXR1cm4gYT1iLmRhdGEsYT09PWVlJiZmZT9udWxsOmE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBrZShhLGIpe2lmKGllKXJldHVyblwiY29tcG9zaXRpb25lbmRcIj09PWF8fCFhZSYmZ2UoYSxiKT8oYT1uZCgpLG1kPWxkPWtkPW51bGwsaWU9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSBcInBhc3RlXCI6cmV0dXJuIG51bGw7Y2FzZSBcImtleXByZXNzXCI6aWYoIShiLmN0cmxLZXl8fGIuYWx0S2V5fHxiLm1ldGFLZXkpfHxiLmN0cmxLZXkmJmIuYWx0S2V5KXtpZihiLmNoYXImJjE8Yi5jaGFyLmxlbmd0aClyZXR1cm4gYi5jaGFyO2lmKGIud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYi53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGRlJiZcImtvXCIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbnZhciBsZT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBtZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09Yj8hIWxlW2EudHlwZV06XCJ0ZXh0YXJlYVwiPT09Yj8hMDohMX1mdW5jdGlvbiBuZShhLGIsYyxkKXtFYihkKTtiPW9lKGIsXCJvbkNoYW5nZVwiKTswPGIubGVuZ3RoJiYoYz1uZXcgdGQoXCJvbkNoYW5nZVwiLFwiY2hhbmdlXCIsbnVsbCxjLGQpLGEucHVzaCh7ZXZlbnQ6YyxsaXN0ZW5lcnM6Yn0pKX12YXIgcGU9bnVsbCxxZT1udWxsO2Z1bmN0aW9uIHJlKGEpe3NlKGEsMCl9ZnVuY3Rpb24gdGUoYSl7dmFyIGI9dWUoYSk7aWYoV2EoYikpcmV0dXJuIGF9XG5mdW5jdGlvbiB2ZShhLGIpe2lmKFwiY2hhbmdlXCI9PT1hKXJldHVybiBifXZhciB3ZT0hMTtpZihpYSl7dmFyIHhlO2lmKGlhKXt2YXIgeWU9XCJvbmlucHV0XCJpbiBkb2N1bWVudDtpZigheWUpe3ZhciB6ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3plLnNldEF0dHJpYnV0ZShcIm9uaW5wdXRcIixcInJldHVybjtcIik7eWU9XCJmdW5jdGlvblwiPT09dHlwZW9mIHplLm9uaW5wdXR9eGU9eWV9ZWxzZSB4ZT0hMTt3ZT14ZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk8ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKX1mdW5jdGlvbiBBZSgpe3BlJiYocGUuZGV0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpLHFlPXBlPW51bGwpfWZ1bmN0aW9uIEJlKGEpe2lmKFwidmFsdWVcIj09PWEucHJvcGVydHlOYW1lJiZ0ZShxZSkpe3ZhciBiPVtdO25lKGIscWUsYSx4YihhKSk7SmIocmUsYil9fVxuZnVuY3Rpb24gQ2UoYSxiLGMpe1wiZm9jdXNpblwiPT09YT8oQWUoKSxwZT1iLHFlPWMscGUuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsQmUpKTpcImZvY3Vzb3V0XCI9PT1hJiZBZSgpfWZ1bmN0aW9uIERlKGEpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1hfHxcImtleXVwXCI9PT1hfHxcImtleWRvd25cIj09PWEpcmV0dXJuIHRlKHFlKX1mdW5jdGlvbiBFZShhLGIpe2lmKFwiY2xpY2tcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEZlKGEsYil7aWYoXCJpbnB1dFwiPT09YXx8XCJjaGFuZ2VcIj09PWEpcmV0dXJuIHRlKGIpfWZ1bmN0aW9uIEdlKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn12YXIgSGU9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6R2U7XG5mdW5jdGlvbiBJZShhLGIpe2lmKEhlKGEsYikpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhfHxudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBifHxudWxsPT09YilyZXR1cm4hMTt2YXIgYz1PYmplY3Qua2V5cyhhKSxkPU9iamVjdC5rZXlzKGIpO2lmKGMubGVuZ3RoIT09ZC5sZW5ndGgpcmV0dXJuITE7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTtpZighamEuY2FsbChiLGUpfHwhSGUoYVtlXSxiW2VdKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBKZShhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9XG5mdW5jdGlvbiBLZShhLGIpe3ZhciBjPUplKGEpO2E9MDtmb3IodmFyIGQ7Yzspe2lmKDM9PT1jLm5vZGVUeXBlKXtkPWErYy50ZXh0Q29udGVudC5sZW5ndGg7aWYoYTw9YiYmZD49YilyZXR1cm57bm9kZTpjLG9mZnNldDpiLWF9O2E9ZH1hOntmb3IoO2M7KXtpZihjLm5leHRTaWJsaW5nKXtjPWMubmV4dFNpYmxpbmc7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPXZvaWQgMH1jPUplKGMpfX1mdW5jdGlvbiBMZShhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP0xlKGEsYi5wYXJlbnROb2RlKTpcImNvbnRhaW5zXCJpbiBhP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KTohMTohMX1cbmZ1bmN0aW9uIE1lKCl7Zm9yKHZhciBhPXdpbmRvdyxiPVhhKCk7YiBpbnN0YW5jZW9mIGEuSFRNTElGcmFtZUVsZW1lbnQ7KXt0cnl7dmFyIGM9XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChkKXtjPSExfWlmKGMpYT1iLmNvbnRlbnRXaW5kb3c7ZWxzZSBicmVhaztiPVhhKGEuZG9jdW1lbnQpfXJldHVybiBifWZ1bmN0aW9uIE5lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYiYmKFwiaW5wdXRcIj09PWImJihcInRleHRcIj09PWEudHlwZXx8XCJzZWFyY2hcIj09PWEudHlwZXx8XCJ0ZWxcIj09PWEudHlwZXx8XCJ1cmxcIj09PWEudHlwZXx8XCJwYXNzd29yZFwiPT09YS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09Ynx8XCJ0cnVlXCI9PT1hLmNvbnRlbnRFZGl0YWJsZSl9XG5mdW5jdGlvbiBPZShhKXt2YXIgYj1NZSgpLGM9YS5mb2N1c2VkRWxlbSxkPWEuc2VsZWN0aW9uUmFuZ2U7aWYoYiE9PWMmJmMmJmMub3duZXJEb2N1bWVudCYmTGUoYy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjKSl7aWYobnVsbCE9PWQmJk5lKGMpKWlmKGI9ZC5zdGFydCxhPWQuZW5kLHZvaWQgMD09PWEmJihhPWIpLFwic2VsZWN0aW9uU3RhcnRcImluIGMpYy5zZWxlY3Rpb25TdGFydD1iLGMuc2VsZWN0aW9uRW5kPU1hdGgubWluKGEsYy52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoYT0oYj1jLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmYi5kZWZhdWx0Vmlld3x8d2luZG93LGEuZ2V0U2VsZWN0aW9uKXthPWEuZ2V0U2VsZWN0aW9uKCk7dmFyIGU9Yy50ZXh0Q29udGVudC5sZW5ndGgsZj1NYXRoLm1pbihkLnN0YXJ0LGUpO2Q9dm9pZCAwPT09ZC5lbmQ/ZjpNYXRoLm1pbihkLmVuZCxlKTshYS5leHRlbmQmJmY+ZCYmKGU9ZCxkPWYsZj1lKTtlPUtlKGMsZik7dmFyIGc9S2UoYyxcbmQpO2UmJmcmJigxIT09YS5yYW5nZUNvdW50fHxhLmFuY2hvck5vZGUhPT1lLm5vZGV8fGEuYW5jaG9yT2Zmc2V0IT09ZS5vZmZzZXR8fGEuZm9jdXNOb2RlIT09Zy5ub2RlfHxhLmZvY3VzT2Zmc2V0IT09Zy5vZmZzZXQpJiYoYj1iLmNyZWF0ZVJhbmdlKCksYi5zZXRTdGFydChlLm5vZGUsZS5vZmZzZXQpLGEucmVtb3ZlQWxsUmFuZ2VzKCksZj5kPyhhLmFkZFJhbmdlKGIpLGEuZXh0ZW5kKGcubm9kZSxnLm9mZnNldCkpOihiLnNldEVuZChnLm5vZGUsZy5vZmZzZXQpLGEuYWRkUmFuZ2UoYikpKX1iPVtdO2ZvcihhPWM7YT1hLnBhcmVudE5vZGU7KTE9PT1hLm5vZGVUeXBlJiZiLnB1c2goe2VsZW1lbnQ6YSxsZWZ0OmEuc2Nyb2xsTGVmdCx0b3A6YS5zY3JvbGxUb3B9KTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5mb2N1cyYmYy5mb2N1cygpO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEuZWxlbWVudC5zY3JvbGxMZWZ0PWEubGVmdCxhLmVsZW1lbnQuc2Nyb2xsVG9wPWEudG9wfX1cbnZhciBQZT1pYSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFFlPW51bGwsUmU9bnVsbCxTZT1udWxsLFRlPSExO1xuZnVuY3Rpb24gVWUoYSxiLGMpe3ZhciBkPWMud2luZG93PT09Yz9jLmRvY3VtZW50Ojk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50O1RlfHxudWxsPT1RZXx8UWUhPT1YYShkKXx8KGQ9UWUsXCJzZWxlY3Rpb25TdGFydFwiaW4gZCYmTmUoZCk/ZD17c3RhcnQ6ZC5zZWxlY3Rpb25TdGFydCxlbmQ6ZC5zZWxlY3Rpb25FbmR9OihkPShkLm93bmVyRG9jdW1lbnQmJmQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSxkPXthbmNob3JOb2RlOmQuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6ZC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOmQuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OmQuZm9jdXNPZmZzZXR9KSxTZSYmSWUoU2UsZCl8fChTZT1kLGQ9b2UoUmUsXCJvblNlbGVjdFwiKSwwPGQubGVuZ3RoJiYoYj1uZXcgdGQoXCJvblNlbGVjdFwiLFwic2VsZWN0XCIsbnVsbCxiLGMpLGEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6ZH0pLGIudGFyZ2V0PVFlKSkpfVxuZnVuY3Rpb24gVmUoYSxiKXt2YXIgYz17fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbXCJXZWJraXRcIithXT1cIndlYmtpdFwiK2I7Y1tcIk1velwiK2FdPVwibW96XCIrYjtyZXR1cm4gY312YXIgV2U9e2FuaW1hdGlvbmVuZDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0OlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9uZW5kOlZlKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvbkVuZFwiKX0sWGU9e30sWWU9e307XG5pYSYmKFllPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIFdlLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIFdlLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIFdlLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gWmUoYSl7aWYoWGVbYV0pcmV0dXJuIFhlW2FdO2lmKCFXZVthXSlyZXR1cm4gYTt2YXIgYj1XZVthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBZZSlyZXR1cm4gWGVbYV09YltjXTtyZXR1cm4gYX12YXIgJGU9WmUoXCJhbmltYXRpb25lbmRcIiksYWY9WmUoXCJhbmltYXRpb25pdGVyYXRpb25cIiksYmY9WmUoXCJhbmltYXRpb25zdGFydFwiKSxjZj1aZShcInRyYW5zaXRpb25lbmRcIiksZGY9bmV3IE1hcCxlZj1cImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsXCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gZmYoYSxiKXtkZi5zZXQoYSxiKTtmYShiLFthXSl9Zm9yKHZhciBnZj0wO2dmPGVmLmxlbmd0aDtnZisrKXt2YXIgaGY9ZWZbZ2ZdLGpmPWhmLnRvTG93ZXJDYXNlKCksa2Y9aGZbMF0udG9VcHBlckNhc2UoKStoZi5zbGljZSgxKTtmZihqZixcIm9uXCIra2YpfWZmKCRlLFwib25BbmltYXRpb25FbmRcIik7ZmYoYWYsXCJvbkFuaW1hdGlvbkl0ZXJhdGlvblwiKTtmZihiZixcIm9uQW5pbWF0aW9uU3RhcnRcIik7ZmYoXCJkYmxjbGlja1wiLFwib25Eb3VibGVDbGlja1wiKTtmZihcImZvY3VzaW5cIixcIm9uRm9jdXNcIik7ZmYoXCJmb2N1c291dFwiLFwib25CbHVyXCIpO2ZmKGNmLFwib25UcmFuc2l0aW9uRW5kXCIpO2hhKFwib25Nb3VzZUVudGVyXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvbk1vdXNlTGVhdmVcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uUG9pbnRlckVudGVyXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO1xuaGEoXCJvblBvaW50ZXJMZWF2ZVwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtmYShcIm9uQ2hhbmdlXCIsXCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvblNlbGVjdFwiLFwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQmVmb3JlSW5wdXRcIixbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl0pO2ZhKFwib25Db21wb3NpdGlvbkVuZFwiLFwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO2ZhKFwib25Db21wb3NpdGlvblN0YXJ0XCIsXCJjb21wb3NpdGlvbnN0YXJ0IGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtcbmZhKFwib25Db21wb3NpdGlvblVwZGF0ZVwiLFwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO3ZhciBsZj1cImFib3J0IGNhbnBsYXkgY2FucGxheXRocm91Z2ggZHVyYXRpb25jaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgbG9hZGVkZGF0YSBsb2FkZWRtZXRhZGF0YSBsb2Fkc3RhcnQgcGF1c2UgcGxheSBwbGF5aW5nIHByb2dyZXNzIHJhdGVjaGFuZ2UgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nXCIuc3BsaXQoXCIgXCIpLG1mPW5ldyBTZXQoXCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGVcIi5zcGxpdChcIiBcIikuY29uY2F0KGxmKSk7XG5mdW5jdGlvbiBuZihhLGIsYyl7dmFyIGQ9YS50eXBlfHxcInVua25vd24tZXZlbnRcIjthLmN1cnJlbnRUYXJnZXQ9YztVYihkLGIsdm9pZCAwLGEpO2EuY3VycmVudFRhcmdldD1udWxsfVxuZnVuY3Rpb24gc2UoYSxiKXtiPTAhPT0oYiY0KTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPWQuZXZlbnQ7ZD1kLmxpc3RlbmVyczthOnt2YXIgZj12b2lkIDA7aWYoYilmb3IodmFyIGc9ZC5sZW5ndGgtMTswPD1nO2ctLSl7dmFyIGg9ZFtnXSxrPWguaW5zdGFuY2UsbD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfWVsc2UgZm9yKGc9MDtnPGQubGVuZ3RoO2crKyl7aD1kW2ddO2s9aC5pbnN0YW5jZTtsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9fX1pZihRYil0aHJvdyBhPVJiLFFiPSExLFJiPW51bGwsYTt9XG5mdW5jdGlvbiBEKGEsYil7dmFyIGM9YltvZl07dm9pZCAwPT09YyYmKGM9YltvZl09bmV3IFNldCk7dmFyIGQ9YStcIl9fYnViYmxlXCI7Yy5oYXMoZCl8fChwZihiLGEsMiwhMSksYy5hZGQoZCkpfWZ1bmN0aW9uIHFmKGEsYixjKXt2YXIgZD0wO2ImJihkfD00KTtwZihjLGEsZCxiKX12YXIgcmY9XCJfcmVhY3RMaXN0ZW5pbmdcIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBzZihhKXtpZighYVtyZl0pe2FbcmZdPSEwO2RhLmZvckVhY2goZnVuY3Rpb24oYil7XCJzZWxlY3Rpb25jaGFuZ2VcIiE9PWImJihtZi5oYXMoYil8fHFmKGIsITEsYSkscWYoYiwhMCxhKSl9KTt2YXIgYj05PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudDtudWxsPT09Ynx8YltyZl18fChiW3JmXT0hMCxxZihcInNlbGVjdGlvbmNoYW5nZVwiLCExLGIpKX19XG5mdW5jdGlvbiBwZihhLGIsYyxkKXtzd2l0Y2goamQoYikpe2Nhc2UgMTp2YXIgZT1lZDticmVhaztjYXNlIDQ6ZT1nZDticmVhaztkZWZhdWx0OmU9ZmR9Yz1lLmJpbmQobnVsbCxiLGMsYSk7ZT12b2lkIDA7IUxifHxcInRvdWNoc3RhcnRcIiE9PWImJlwidG91Y2htb3ZlXCIhPT1iJiZcIndoZWVsXCIhPT1ifHwoZT0hMCk7ZD92b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse2NhcHR1cmU6ITAscGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMCk6dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKX1cbmZ1bmN0aW9uIGhkKGEsYixjLGQsZSl7dmFyIGY9ZDtpZigwPT09KGImMSkmJjA9PT0oYiYyKSYmbnVsbCE9PWQpYTpmb3IoOzspe2lmKG51bGw9PT1kKXJldHVybjt2YXIgZz1kLnRhZztpZigzPT09Z3x8ND09PWcpe3ZhciBoPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoaD09PWV8fDg9PT1oLm5vZGVUeXBlJiZoLnBhcmVudE5vZGU9PT1lKWJyZWFrO2lmKDQ9PT1nKWZvcihnPWQucmV0dXJuO251bGwhPT1nOyl7dmFyIGs9Zy50YWc7aWYoMz09PWt8fDQ9PT1rKWlmKGs9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxrPT09ZXx8OD09PWsubm9kZVR5cGUmJmsucGFyZW50Tm9kZT09PWUpcmV0dXJuO2c9Zy5yZXR1cm59Zm9yKDtudWxsIT09aDspe2c9V2MoaCk7aWYobnVsbD09PWcpcmV0dXJuO2s9Zy50YWc7aWYoNT09PWt8fDY9PT1rKXtkPWY9Zztjb250aW51ZSBhfWg9aC5wYXJlbnROb2RlfX1kPWQucmV0dXJufUpiKGZ1bmN0aW9uKCl7dmFyIGQ9ZixlPXhiKGMpLGc9W107XG5hOnt2YXIgaD1kZi5nZXQoYSk7aWYodm9pZCAwIT09aCl7dmFyIGs9dGQsbj1hO3N3aXRjaChhKXtjYXNlIFwia2V5cHJlc3NcIjppZigwPT09b2QoYykpYnJlYWsgYTtjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOms9UmQ7YnJlYWs7Y2FzZSBcImZvY3VzaW5cIjpuPVwiZm9jdXNcIjtrPUZkO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOm49XCJibHVyXCI7az1GZDticmVhaztjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjprPUZkO2JyZWFrO2Nhc2UgXCJjbGlja1wiOmlmKDI9PT1jLmJ1dHRvbilicmVhayBhO2Nhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6az1CZDticmVhaztjYXNlIFwiZHJhZ1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjprPVxuRGQ7YnJlYWs7Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNobW92ZVwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6az1WZDticmVhaztjYXNlICRlOmNhc2UgYWY6Y2FzZSBiZjprPUhkO2JyZWFrO2Nhc2UgY2Y6az1YZDticmVhaztjYXNlIFwic2Nyb2xsXCI6az12ZDticmVhaztjYXNlIFwid2hlZWxcIjprPVpkO2JyZWFrO2Nhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJwYXN0ZVwiOms9SmQ7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcnVwXCI6az1UZH12YXIgdD0wIT09KGImNCksSj0hdCYmXCJzY3JvbGxcIj09PWEseD10P251bGwhPT1oP2grXCJDYXB0dXJlXCI6bnVsbDpoO3Q9W107Zm9yKHZhciB3PWQsdTtudWxsIT09XG53Oyl7dT13O3ZhciBGPXUuc3RhdGVOb2RlOzU9PT11LnRhZyYmbnVsbCE9PUYmJih1PUYsbnVsbCE9PXgmJihGPUtiKHcseCksbnVsbCE9RiYmdC5wdXNoKHRmKHcsRix1KSkpKTtpZihKKWJyZWFrO3c9dy5yZXR1cm59MDx0Lmxlbmd0aCYmKGg9bmV3IGsoaCxuLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOnR9KSl9fWlmKDA9PT0oYiY3KSl7YTp7aD1cIm1vdXNlb3ZlclwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YTtrPVwibW91c2VvdXRcIj09PWF8fFwicG9pbnRlcm91dFwiPT09YTtpZihoJiZjIT09d2ImJihuPWMucmVsYXRlZFRhcmdldHx8Yy5mcm9tRWxlbWVudCkmJihXYyhuKXx8blt1Zl0pKWJyZWFrIGE7aWYoa3x8aCl7aD1lLndpbmRvdz09PWU/ZTooaD1lLm93bmVyRG9jdW1lbnQpP2guZGVmYXVsdFZpZXd8fGgucGFyZW50V2luZG93OndpbmRvdztpZihrKXtpZihuPWMucmVsYXRlZFRhcmdldHx8Yy50b0VsZW1lbnQsaz1kLG49bj9XYyhuKTpudWxsLG51bGwhPT1cbm4mJihKPVZiKG4pLG4hPT1KfHw1IT09bi50YWcmJjYhPT1uLnRhZykpbj1udWxsfWVsc2Ugaz1udWxsLG49ZDtpZihrIT09bil7dD1CZDtGPVwib25Nb3VzZUxlYXZlXCI7eD1cIm9uTW91c2VFbnRlclwiO3c9XCJtb3VzZVwiO2lmKFwicG9pbnRlcm91dFwiPT09YXx8XCJwb2ludGVyb3ZlclwiPT09YSl0PVRkLEY9XCJvblBvaW50ZXJMZWF2ZVwiLHg9XCJvblBvaW50ZXJFbnRlclwiLHc9XCJwb2ludGVyXCI7Sj1udWxsPT1rP2g6dWUoayk7dT1udWxsPT1uP2g6dWUobik7aD1uZXcgdChGLHcrXCJsZWF2ZVwiLGssYyxlKTtoLnRhcmdldD1KO2gucmVsYXRlZFRhcmdldD11O0Y9bnVsbDtXYyhlKT09PWQmJih0PW5ldyB0KHgsdytcImVudGVyXCIsbixjLGUpLHQudGFyZ2V0PXUsdC5yZWxhdGVkVGFyZ2V0PUosRj10KTtKPUY7aWYoayYmbiliOnt0PWs7eD1uO3c9MDtmb3IodT10O3U7dT12Zih1KSl3Kys7dT0wO2ZvcihGPXg7RjtGPXZmKEYpKXUrKztmb3IoOzA8dy11Oyl0PXZmKHQpLHctLTtmb3IoOzA8dS13Oyl4PVxudmYoeCksdS0tO2Zvcig7dy0tOyl7aWYodD09PXh8fG51bGwhPT14JiZ0PT09eC5hbHRlcm5hdGUpYnJlYWsgYjt0PXZmKHQpO3g9dmYoeCl9dD1udWxsfWVsc2UgdD1udWxsO251bGwhPT1rJiZ3ZihnLGgsayx0LCExKTtudWxsIT09biYmbnVsbCE9PUomJndmKGcsSixuLHQsITApfX19YTp7aD1kP3VlKGQpOndpbmRvdztrPWgubm9kZU5hbWUmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihcInNlbGVjdFwiPT09a3x8XCJpbnB1dFwiPT09ayYmXCJmaWxlXCI9PT1oLnR5cGUpdmFyIG5hPXZlO2Vsc2UgaWYobWUoaCkpaWYod2UpbmE9RmU7ZWxzZXtuYT1EZTt2YXIgeGE9Q2V9ZWxzZShrPWgubm9kZU5hbWUpJiZcImlucHV0XCI9PT1rLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1oLnR5cGV8fFwicmFkaW9cIj09PWgudHlwZSkmJihuYT1FZSk7aWYobmEmJihuYT1uYShhLGQpKSl7bmUoZyxuYSxjLGUpO2JyZWFrIGF9eGEmJnhhKGEsaCxkKTtcImZvY3Vzb3V0XCI9PT1hJiYoeGE9aC5fd3JhcHBlclN0YXRlKSYmXG54YS5jb250cm9sbGVkJiZcIm51bWJlclwiPT09aC50eXBlJiZjYihoLFwibnVtYmVyXCIsaC52YWx1ZSl9eGE9ZD91ZShkKTp3aW5kb3c7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6aWYobWUoeGEpfHxcInRydWVcIj09PXhhLmNvbnRlbnRFZGl0YWJsZSlRZT14YSxSZT1kLFNlPW51bGw7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6U2U9UmU9UWU9bnVsbDticmVhaztjYXNlIFwibW91c2Vkb3duXCI6VGU9ITA7YnJlYWs7Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwiZHJhZ2VuZFwiOlRlPSExO1VlKGcsYyxlKTticmVhaztjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6aWYoUGUpYnJlYWs7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjpVZShnLGMsZSl9dmFyICRhO2lmKGFlKWI6e3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOnZhciBiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiO2JyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6YmE9XCJvbkNvbXBvc2l0aW9uRW5kXCI7XG5icmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmJhPVwib25Db21wb3NpdGlvblVwZGF0ZVwiO2JyZWFrIGJ9YmE9dm9pZCAwfWVsc2UgaWU/Z2UoYSxjKSYmKGJhPVwib25Db21wb3NpdGlvbkVuZFwiKTpcImtleWRvd25cIj09PWEmJjIyOT09PWMua2V5Q29kZSYmKGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCIpO2JhJiYoZGUmJlwia29cIiE9PWMubG9jYWxlJiYoaWV8fFwib25Db21wb3NpdGlvblN0YXJ0XCIhPT1iYT9cIm9uQ29tcG9zaXRpb25FbmRcIj09PWJhJiZpZSYmKCRhPW5kKCkpOihrZD1lLGxkPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGllPSEwKSkseGE9b2UoZCxiYSksMDx4YS5sZW5ndGgmJihiYT1uZXcgTGQoYmEsYSxudWxsLGMsZSksZy5wdXNoKHtldmVudDpiYSxsaXN0ZW5lcnM6eGF9KSwkYT9iYS5kYXRhPSRhOigkYT1oZShjKSxudWxsIT09JGEmJihiYS5kYXRhPSRhKSkpKTtpZigkYT1jZT9qZShhLGMpOmtlKGEsYykpZD1vZShkLFwib25CZWZvcmVJbnB1dFwiKSxcbjA8ZC5sZW5ndGgmJihlPW5ldyBMZChcIm9uQmVmb3JlSW5wdXRcIixcImJlZm9yZWlucHV0XCIsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6ZH0pLGUuZGF0YT0kYSl9c2UoZyxiKX0pfWZ1bmN0aW9uIHRmKGEsYixjKXtyZXR1cm57aW5zdGFuY2U6YSxsaXN0ZW5lcjpiLGN1cnJlbnRUYXJnZXQ6Y319ZnVuY3Rpb24gb2UoYSxiKXtmb3IodmFyIGM9YitcIkNhcHR1cmVcIixkPVtdO251bGwhPT1hOyl7dmFyIGU9YSxmPWUuc3RhdGVOb2RlOzU9PT1lLnRhZyYmbnVsbCE9PWYmJihlPWYsZj1LYihhLGMpLG51bGwhPWYmJmQudW5zaGlmdCh0ZihhLGYsZSkpLGY9S2IoYSxiKSxudWxsIT1mJiZkLnB1c2godGYoYSxmLGUpKSk7YT1hLnJldHVybn1yZXR1cm4gZH1mdW5jdGlvbiB2ZihhKXtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtkbyBhPWEucmV0dXJuO3doaWxlKGEmJjUhPT1hLnRhZyk7cmV0dXJuIGE/YTpudWxsfVxuZnVuY3Rpb24gd2YoYSxiLGMsZCxlKXtmb3IodmFyIGY9Yi5fcmVhY3ROYW1lLGc9W107bnVsbCE9PWMmJmMhPT1kOyl7dmFyIGg9YyxrPWguYWx0ZXJuYXRlLGw9aC5zdGF0ZU5vZGU7aWYobnVsbCE9PWsmJms9PT1kKWJyZWFrOzU9PT1oLnRhZyYmbnVsbCE9PWwmJihoPWwsZT8oaz1LYihjLGYpLG51bGwhPWsmJmcudW5zaGlmdCh0ZihjLGssaCkpKTplfHwoaz1LYihjLGYpLG51bGwhPWsmJmcucHVzaCh0ZihjLGssaCkpKSk7Yz1jLnJldHVybn0wIT09Zy5sZW5ndGgmJmEucHVzaCh7ZXZlbnQ6YixsaXN0ZW5lcnM6Z30pfXZhciB4Zj0vXFxyXFxuPy9nLHlmPS9cXHUwMDAwfFxcdUZGRkQvZztmdW5jdGlvbiB6ZihhKXtyZXR1cm4oXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6XCJcIithKS5yZXBsYWNlKHhmLFwiXFxuXCIpLnJlcGxhY2UoeWYsXCJcIil9ZnVuY3Rpb24gQWYoYSxiLGMpe2I9emYoYik7aWYoemYoYSkhPT1iJiZjKXRocm93IEVycm9yKHAoNDI1KSk7fWZ1bmN0aW9uIEJmKCl7fVxudmFyIENmPW51bGwsRGY9bnVsbDtmdW5jdGlvbiBFZihhLGIpe3JldHVyblwidGV4dGFyZWFcIj09PWF8fFwibm9zY3JpcHRcIj09PWF8fFwic3RyaW5nXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJudW1iZXJcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm9iamVjdFwiPT09dHlwZW9mIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH1cbnZhciBGZj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxHZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsSGY9XCJmdW5jdGlvblwiPT09dHlwZW9mIFByb21pc2U/UHJvbWlzZTp2b2lkIDAsSmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHF1ZXVlTWljcm90YXNrP3F1ZXVlTWljcm90YXNrOlwidW5kZWZpbmVkXCIhPT10eXBlb2YgSGY/ZnVuY3Rpb24oYSl7cmV0dXJuIEhmLnJlc29sdmUobnVsbCkudGhlbihhKS5jYXRjaChJZil9OkZmO2Z1bmN0aW9uIElmKGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30pfVxuZnVuY3Rpb24gS2YoYSxiKXt2YXIgYz1iLGQ9MDtkb3t2YXIgZT1jLm5leHRTaWJsaW5nO2EucmVtb3ZlQ2hpbGQoYyk7aWYoZSYmOD09PWUubm9kZVR5cGUpaWYoYz1lLmRhdGEsXCIvJFwiPT09Yyl7aWYoMD09PWQpe2EucmVtb3ZlQ2hpbGQoZSk7YmQoYik7cmV0dXJufWQtLX1lbHNlXCIkXCIhPT1jJiZcIiQ/XCIhPT1jJiZcIiQhXCIhPT1jfHxkKys7Yz1lfXdoaWxlKGMpO2JkKGIpfWZ1bmN0aW9uIExmKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrO2lmKDg9PT1iKXtiPWEuZGF0YTtpZihcIiRcIj09PWJ8fFwiJCFcIj09PWJ8fFwiJD9cIj09PWIpYnJlYWs7aWYoXCIvJFwiPT09YilyZXR1cm4gbnVsbH19cmV0dXJuIGF9XG5mdW5jdGlvbiBNZihhKXthPWEucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiJFwiPT09Y3x8XCIkIVwiPT09Y3x8XCIkP1wiPT09Yyl7aWYoMD09PWIpcmV0dXJuIGE7Yi0tfWVsc2VcIi8kXCI9PT1jJiZiKyt9YT1hLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH12YXIgTmY9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksT2Y9XCJfX3JlYWN0RmliZXIkXCIrTmYsUGY9XCJfX3JlYWN0UHJvcHMkXCIrTmYsdWY9XCJfX3JlYWN0Q29udGFpbmVyJFwiK05mLG9mPVwiX19yZWFjdEV2ZW50cyRcIitOZixRZj1cIl9fcmVhY3RMaXN0ZW5lcnMkXCIrTmYsUmY9XCJfX3JlYWN0SGFuZGxlcyRcIitOZjtcbmZ1bmN0aW9uIFdjKGEpe3ZhciBiPWFbT2ZdO2lmKGIpcmV0dXJuIGI7Zm9yKHZhciBjPWEucGFyZW50Tm9kZTtjOyl7aWYoYj1jW3VmXXx8Y1tPZl0pe2M9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWIuY2hpbGR8fG51bGwhPT1jJiZudWxsIT09Yy5jaGlsZClmb3IoYT1NZihhKTtudWxsIT09YTspe2lmKGM9YVtPZl0pcmV0dXJuIGM7YT1NZihhKX1yZXR1cm4gYn1hPWM7Yz1hLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ2IoYSl7YT1hW09mXXx8YVt1Zl07cmV0dXJuIWF8fDUhPT1hLnRhZyYmNiE9PWEudGFnJiYxMyE9PWEudGFnJiYzIT09YS50YWc/bnVsbDphfWZ1bmN0aW9uIHVlKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihwKDMzKSk7fWZ1bmN0aW9uIERiKGEpe3JldHVybiBhW1BmXXx8bnVsbH12YXIgU2Y9W10sVGY9LTE7ZnVuY3Rpb24gVWYoYSl7cmV0dXJue2N1cnJlbnQ6YX19XG5mdW5jdGlvbiBFKGEpezA+VGZ8fChhLmN1cnJlbnQ9U2ZbVGZdLFNmW1RmXT1udWxsLFRmLS0pfWZ1bmN0aW9uIEcoYSxiKXtUZisrO1NmW1RmXT1hLmN1cnJlbnQ7YS5jdXJyZW50PWJ9dmFyIFZmPXt9LEg9VWYoVmYpLFdmPVVmKCExKSxYZj1WZjtmdW5jdGlvbiBZZihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIFZmO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9YixhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWUpO3JldHVybiBlfVxuZnVuY3Rpb24gWmYoYSl7YT1hLmNoaWxkQ29udGV4dFR5cGVzO3JldHVybiBudWxsIT09YSYmdm9pZCAwIT09YX1mdW5jdGlvbiAkZigpe0UoV2YpO0UoSCl9ZnVuY3Rpb24gYWcoYSxiLGMpe2lmKEguY3VycmVudCE9PVZmKXRocm93IEVycm9yKHAoMTY4KSk7RyhILGIpO0coV2YsYyl9ZnVuY3Rpb24gYmcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2I9Yi5jaGlsZENvbnRleHRUeXBlcztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZC5nZXRDaGlsZENvbnRleHQpcmV0dXJuIGM7ZD1kLmdldENoaWxkQ29udGV4dCgpO2Zvcih2YXIgZSBpbiBkKWlmKCEoZSBpbiBiKSl0aHJvdyBFcnJvcihwKDEwOCxSYShhKXx8XCJVbmtub3duXCIsZSkpO3JldHVybiBBKHt9LGMsZCl9XG5mdW5jdGlvbiBjZyhhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8VmY7WGY9SC5jdXJyZW50O0coSCxhKTtHKFdmLFdmLmN1cnJlbnQpO3JldHVybiEwfWZ1bmN0aW9uIGRnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcihwKDE2OSkpO2M/KGE9YmcoYSxiLFhmKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsRShXZiksRShIKSxHKEgsYSkpOkUoV2YpO0coV2YsYyl9dmFyIGVnPW51bGwsZmc9ITEsZ2c9ITE7ZnVuY3Rpb24gaGcoYSl7bnVsbD09PWVnP2VnPVthXTplZy5wdXNoKGEpfWZ1bmN0aW9uIGlnKGEpe2ZnPSEwO2hnKGEpfVxuZnVuY3Rpb24gamcoKXtpZighZ2cmJm51bGwhPT1lZyl7Z2c9ITA7dmFyIGE9MCxiPUM7dHJ5e3ZhciBjPWVnO2ZvcihDPTE7YTxjLmxlbmd0aDthKyspe3ZhciBkPWNbYV07ZG8gZD1kKCEwKTt3aGlsZShudWxsIT09ZCl9ZWc9bnVsbDtmZz0hMX1jYXRjaChlKXt0aHJvdyBudWxsIT09ZWcmJihlZz1lZy5zbGljZShhKzEpKSxhYyhmYyxqZyksZTt9ZmluYWxseXtDPWIsZ2c9ITF9fXJldHVybiBudWxsfXZhciBrZz1bXSxsZz0wLG1nPW51bGwsbmc9MCxvZz1bXSxwZz0wLHFnPW51bGwscmc9MSxzZz1cIlwiO2Z1bmN0aW9uIHRnKGEsYil7a2dbbGcrK109bmc7a2dbbGcrK109bWc7bWc9YTtuZz1ifVxuZnVuY3Rpb24gdWcoYSxiLGMpe29nW3BnKytdPXJnO29nW3BnKytdPXNnO29nW3BnKytdPXFnO3FnPWE7dmFyIGQ9cmc7YT1zZzt2YXIgZT0zMi1vYyhkKS0xO2QmPX4oMTw8ZSk7Yys9MTt2YXIgZj0zMi1vYyhiKStlO2lmKDMwPGYpe3ZhciBnPWUtZSU1O2Y9KGQmKDE8PGcpLTEpLnRvU3RyaW5nKDMyKTtkPj49ZztlLT1nO3JnPTE8PDMyLW9jKGIpK2V8Yzw8ZXxkO3NnPWYrYX1lbHNlIHJnPTE8PGZ8Yzw8ZXxkLHNnPWF9ZnVuY3Rpb24gdmcoYSl7bnVsbCE9PWEucmV0dXJuJiYodGcoYSwxKSx1ZyhhLDEsMCkpfWZ1bmN0aW9uIHdnKGEpe2Zvcig7YT09PW1nOyltZz1rZ1stLWxnXSxrZ1tsZ109bnVsbCxuZz1rZ1stLWxnXSxrZ1tsZ109bnVsbDtmb3IoO2E9PT1xZzspcWc9b2dbLS1wZ10sb2dbcGddPW51bGwsc2c9b2dbLS1wZ10sb2dbcGddPW51bGwscmc9b2dbLS1wZ10sb2dbcGddPW51bGx9dmFyIHhnPW51bGwseWc9bnVsbCxJPSExLHpnPW51bGw7XG5mdW5jdGlvbiBBZyhhLGIpe3ZhciBjPUJnKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9XCJERUxFVEVEXCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2I9YS5kZWxldGlvbnM7bnVsbD09PWI/KGEuZGVsZXRpb25zPVtjXSxhLmZsYWdzfD0xNik6Yi5wdXNoKGMpfVxuZnVuY3Rpb24gQ2coYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTp2YXIgYz1hLnR5cGU7Yj0xIT09Yi5ub2RlVHlwZXx8Yy50b0xvd2VyQ2FzZSgpIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6YjtyZXR1cm4gbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1MZihiLmZpcnN0Q2hpbGQpLCEwKTohMTtjYXNlIDY6cmV0dXJuIGI9XCJcIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGEuc3RhdGVOb2RlPWIseGc9YSx5Zz1udWxsLCEwKTohMTtjYXNlIDEzOnJldHVybiBiPTghPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYz1udWxsIT09cWc/e2lkOnJnLG92ZXJmbG93OnNnfTpudWxsLGEubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDpiLHRyZWVDb250ZXh0OmMscmV0cnlMYW5lOjEwNzM3NDE4MjR9LGM9QmcoMTgsbnVsbCxudWxsLDApLGMuc3RhdGVOb2RlPWIsYy5yZXR1cm49YSxhLmNoaWxkPWMseGc9YSx5Zz1cbm51bGwsITApOiExO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIERnKGEpe3JldHVybiAwIT09KGEubW9kZSYxKSYmMD09PShhLmZsYWdzJjEyOCl9ZnVuY3Rpb24gRWcoYSl7aWYoSSl7dmFyIGI9eWc7aWYoYil7dmFyIGM9YjtpZighQ2coYSxiKSl7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTtiPUxmKGMubmV4dFNpYmxpbmcpO3ZhciBkPXhnO2ImJkNnKGEsYik/QWcoZCxjKTooYS5mbGFncz1hLmZsYWdzJi00MDk3fDIsST0hMSx4Zz1hKX19ZWxzZXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2EuZmxhZ3M9YS5mbGFncyYtNDA5N3wyO0k9ITE7eGc9YX19fWZ1bmN0aW9uIEZnKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTMhPT1hLnRhZzspYT1hLnJldHVybjt4Zz1hfVxuZnVuY3Rpb24gR2coYSl7aWYoYSE9PXhnKXJldHVybiExO2lmKCFJKXJldHVybiBGZyhhKSxJPSEwLCExO3ZhciBiOyhiPTMhPT1hLnRhZykmJiEoYj01IT09YS50YWcpJiYoYj1hLnR5cGUsYj1cImhlYWRcIiE9PWImJlwiYm9keVwiIT09YiYmIUVmKGEudHlwZSxhLm1lbW9pemVkUHJvcHMpKTtpZihiJiYoYj15Zykpe2lmKERnKGEpKXRocm93IEhnKCksRXJyb3IocCg0MTgpKTtmb3IoO2I7KUFnKGEsYiksYj1MZihiLm5leHRTaWJsaW5nKX1GZyhhKTtpZigxMz09PWEudGFnKXthPWEubWVtb2l6ZWRTdGF0ZTthPW51bGwhPT1hP2EuZGVoeWRyYXRlZDpudWxsO2lmKCFhKXRocm93IEVycm9yKHAoMzE3KSk7YTp7YT1hLm5leHRTaWJsaW5nO2ZvcihiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIvJFwiPT09Yyl7aWYoMD09PWIpe3lnPUxmKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2VcIiRcIiE9PWMmJlwiJCFcIiE9PWMmJlwiJD9cIiE9PWN8fGIrK31hPWEubmV4dFNpYmxpbmd9eWc9XG5udWxsfX1lbHNlIHlnPXhnP0xmKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIEhnKCl7Zm9yKHZhciBhPXlnO2E7KWE9TGYoYS5uZXh0U2libGluZyl9ZnVuY3Rpb24gSWcoKXt5Zz14Zz1udWxsO0k9ITF9ZnVuY3Rpb24gSmcoYSl7bnVsbD09PXpnP3pnPVthXTp6Zy5wdXNoKGEpfXZhciBLZz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztmdW5jdGlvbiBMZyhhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPUEoe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKTtyZXR1cm4gYn1yZXR1cm4gYn12YXIgTWc9VWYobnVsbCksTmc9bnVsbCxPZz1udWxsLFBnPW51bGw7ZnVuY3Rpb24gUWcoKXtQZz1PZz1OZz1udWxsfWZ1bmN0aW9uIFJnKGEpe3ZhciBiPU1nLmN1cnJlbnQ7RShNZyk7YS5fY3VycmVudFZhbHVlPWJ9XG5mdW5jdGlvbiBTZyhhLGIsYyl7Zm9yKDtudWxsIT09YTspe3ZhciBkPWEuYWx0ZXJuYXRlOyhhLmNoaWxkTGFuZXMmYikhPT1iPyhhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWQmJihkLmNoaWxkTGFuZXN8PWIpKTpudWxsIT09ZCYmKGQuY2hpbGRMYW5lcyZiKSE9PWImJihkLmNoaWxkTGFuZXN8PWIpO2lmKGE9PT1jKWJyZWFrO2E9YS5yZXR1cm59fWZ1bmN0aW9uIFRnKGEsYil7Tmc9YTtQZz1PZz1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKDAhPT0oYS5sYW5lcyZiKSYmKFVnPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1cbmZ1bmN0aW9uIFZnKGEpe3ZhciBiPWEuX2N1cnJlbnRWYWx1ZTtpZihQZyE9PWEpaWYoYT17Y29udGV4dDphLG1lbW9pemVkVmFsdWU6YixuZXh0Om51bGx9LG51bGw9PT1PZyl7aWYobnVsbD09PU5nKXRocm93IEVycm9yKHAoMzA4KSk7T2c9YTtOZy5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmF9fWVsc2UgT2c9T2cubmV4dD1hO3JldHVybiBifXZhciBXZz1udWxsO2Z1bmN0aW9uIFhnKGEpe251bGw9PT1XZz9XZz1bYV06V2cucHVzaChhKX1mdW5jdGlvbiBZZyhhLGIsYyxkKXt2YXIgZT1iLmludGVybGVhdmVkO251bGw9PT1lPyhjLm5leHQ9YyxYZyhiKSk6KGMubmV4dD1lLm5leHQsZS5uZXh0PWMpO2IuaW50ZXJsZWF2ZWQ9YztyZXR1cm4gWmcoYSxkKX1cbmZ1bmN0aW9uIFpnKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc/Yy5zdGF0ZU5vZGU6bnVsbH12YXIgJGc9ITE7ZnVuY3Rpb24gYWgoYSl7YS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1cbmZ1bmN0aW9uIGJoKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2IudXBkYXRlUXVldWU9PT1hJiYoYi51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmEuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTphLmZpcnN0QmFzZVVwZGF0ZSxsYXN0QmFzZVVwZGF0ZTphLmxhc3RCYXNlVXBkYXRlLHNoYXJlZDphLnNoYXJlZCxlZmZlY3RzOmEuZWZmZWN0c30pfWZ1bmN0aW9uIGNoKGEsYil7cmV0dXJue2V2ZW50VGltZTphLGxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fVxuZnVuY3Rpb24gZGgoYSxiLGMpe3ZhciBkPWEudXBkYXRlUXVldWU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7ZD1kLnNoYXJlZDtpZigwIT09KEsmMikpe3ZhciBlPWQucGVuZGluZztudWxsPT09ZT9iLm5leHQ9YjooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5wZW5kaW5nPWI7cmV0dXJuIFpnKGEsYyl9ZT1kLmludGVybGVhdmVkO251bGw9PT1lPyhiLm5leHQ9YixYZyhkKSk6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QuaW50ZXJsZWF2ZWQ9YjtyZXR1cm4gWmcoYSxjKX1mdW5jdGlvbiBlaChhLGIsYyl7Yj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iJiYoYj1iLnNoYXJlZCwwIT09KGMmNDE5NDI0MCkpKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxuZnVuY3Rpb24gZmgoYSxiKXt2YXIgYz1hLnVwZGF0ZVF1ZXVlLGQ9YS5hbHRlcm5hdGU7aWYobnVsbCE9PWQmJihkPWQudXBkYXRlUXVldWUsYz09PWQpKXt2YXIgZT1udWxsLGY9bnVsbDtjPWMuZmlyc3RCYXNlVXBkYXRlO2lmKG51bGwhPT1jKXtkb3t2YXIgZz17ZXZlbnRUaW1lOmMuZXZlbnRUaW1lLGxhbmU6Yy5sYW5lLHRhZzpjLnRhZyxwYXlsb2FkOmMucGF5bG9hZCxjYWxsYmFjazpjLmNhbGxiYWNrLG5leHQ6bnVsbH07bnVsbD09PWY/ZT1mPWc6Zj1mLm5leHQ9ZztjPWMubmV4dH13aGlsZShudWxsIT09Yyk7bnVsbD09PWY/ZT1mPWI6Zj1mLm5leHQ9Yn1lbHNlIGU9Zj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9XG5iO2MubGFzdEJhc2VVcGRhdGU9Yn1cbmZ1bmN0aW9uIGdoKGEsYixjLGQpe3ZhciBlPWEudXBkYXRlUXVldWU7JGc9ITE7dmFyIGY9ZS5maXJzdEJhc2VVcGRhdGUsZz1lLmxhc3RCYXNlVXBkYXRlLGg9ZS5zaGFyZWQucGVuZGluZztpZihudWxsIT09aCl7ZS5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBrPWgsbD1rLm5leHQ7ay5uZXh0PW51bGw7bnVsbD09PWc/Zj1sOmcubmV4dD1sO2c9azt2YXIgbT1hLmFsdGVybmF0ZTtudWxsIT09bSYmKG09bS51cGRhdGVRdWV1ZSxoPW0ubGFzdEJhc2VVcGRhdGUsaCE9PWcmJihudWxsPT09aD9tLmZpcnN0QmFzZVVwZGF0ZT1sOmgubmV4dD1sLG0ubGFzdEJhc2VVcGRhdGU9aykpfWlmKG51bGwhPT1mKXt2YXIgcT1lLmJhc2VTdGF0ZTtnPTA7bT1sPWs9bnVsbDtoPWY7ZG97dmFyIHI9aC5sYW5lLHk9aC5ldmVudFRpbWU7aWYoKGQmcik9PT1yKXtudWxsIT09bSYmKG09bS5uZXh0PXtldmVudFRpbWU6eSxsYW5lOjAsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssXG5uZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9aDtyPWI7eT1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuKXtxPW4uY2FsbCh5LHEscik7YnJlYWsgYX1xPW47YnJlYWsgYTtjYXNlIDM6bi5mbGFncz1uLmZsYWdzJi02NTUzN3wxMjg7Y2FzZSAwOm49dC5wYXlsb2FkO3I9XCJmdW5jdGlvblwiPT09dHlwZW9mIG4/bi5jYWxsKHkscSxyKTpuO2lmKG51bGw9PT1yfHx2b2lkIDA9PT1yKWJyZWFrIGE7cT1BKHt9LHEscik7YnJlYWsgYTtjYXNlIDI6JGc9ITB9fW51bGwhPT1oLmNhbGxiYWNrJiYwIT09aC5sYW5lJiYoYS5mbGFnc3w9NjQscj1lLmVmZmVjdHMsbnVsbD09PXI/ZS5lZmZlY3RzPVtoXTpyLnB1c2goaCkpfWVsc2UgeT17ZXZlbnRUaW1lOnksbGFuZTpyLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLG5leHQ6bnVsbH0sbnVsbD09PW0/KGw9bT15LGs9cSk6bT1tLm5leHQ9eSxnfD1yO1xuaD1oLm5leHQ7aWYobnVsbD09PWgpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2Ugcj1oLGg9ci5uZXh0LHIubmV4dD1udWxsLGUubGFzdEJhc2VVcGRhdGU9cixlLnNoYXJlZC5wZW5kaW5nPW51bGx9d2hpbGUoMSk7bnVsbD09PW0mJihrPXEpO2UuYmFzZVN0YXRlPWs7ZS5maXJzdEJhc2VVcGRhdGU9bDtlLmxhc3RCYXNlVXBkYXRlPW07Yj1lLnNoYXJlZC5pbnRlcmxlYXZlZDtpZihudWxsIT09Yil7ZT1iO2RvIGd8PWUubGFuZSxlPWUubmV4dDt3aGlsZShlIT09Yil9ZWxzZSBudWxsPT09ZiYmKGUuc2hhcmVkLmxhbmVzPTApO2hofD1nO2EubGFuZXM9ZzthLm1lbW9pemVkU3RhdGU9cX19XG5mdW5jdGlvbiBpaChhLGIsYyl7YT1iLmVmZmVjdHM7Yi5lZmZlY3RzPW51bGw7aWYobnVsbCE9PWEpZm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXSxlPWQuY2FsbGJhY2s7aWYobnVsbCE9PWUpe2QuY2FsbGJhY2s9bnVsbDtkPWM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGUpdGhyb3cgRXJyb3IocCgxOTEsZSkpO2UuY2FsbChkKX19fXZhciBqaD0obmV3IGFhLkNvbXBvbmVudCkucmVmcztmdW5jdGlvbiBraChhLGIsYyxkKXtiPWEubWVtb2l6ZWRTdGF0ZTtjPWMoZCxiKTtjPW51bGw9PT1jfHx2b2lkIDA9PT1jP2I6QSh7fSxiLGMpO2EubWVtb2l6ZWRTdGF0ZT1jOzA9PT1hLmxhbmVzJiYoYS51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9Yyl9XG52YXIgbmg9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLl9yZWFjdEludGVybmFscyk/VmIoYSk9PT1hOiExfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9TCgpLGU9bGgoYSksZj1jaChkLGUpO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPWRoKGEsZixlKTtudWxsIT09YiYmKG1oKGIsYSxlLGQpLGVoKGIsYSxlKSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGQ9TCgpLGU9bGgoYSksZj1jaChkLGUpO2YudGFnPTE7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYil7YT1hLl9yZWFjdEludGVybmFsczt2YXIgYz1MKCksZD1cbmxoKGEpLGU9Y2goYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtiPWRoKGEsZSxkKTtudWxsIT09YiYmKG1oKGIsYSxkLGMpLGVoKGIsYSxkKSl9fTtmdW5jdGlvbiBvaChhLGIsYyxkLGUsZixnKXthPWEuc3RhdGVOb2RlO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFJZShjLGQpfHwhSWUoZSxmKTohMH1cbmZ1bmN0aW9uIHBoKGEsYixjKXt2YXIgZD0hMSxlPVZmO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9mPVZnKGYpOihlPVpmKGIpP1hmOkguY3VycmVudCxkPWIuY29udGV4dFR5cGVzLGY9KGQ9bnVsbCE9PWQmJnZvaWQgMCE9PWQpP1lmKGEsZSk6VmYpO2I9bmV3IGIoYyxmKTthLm1lbW9pemVkU3RhdGU9bnVsbCE9PWIuc3RhdGUmJnZvaWQgMCE9PWIuc3RhdGU/Yi5zdGF0ZTpudWxsO2IudXBkYXRlcj1uaDthLnN0YXRlTm9kZT1iO2IuX3JlYWN0SW50ZXJuYWxzPWE7ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1mKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHFoKGEsYixjLGQpe2E9Yi5zdGF0ZTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO2Iuc3RhdGUhPT1hJiZuaC5lbnF1ZXVlUmVwbGFjZVN0YXRlKGIsYi5zdGF0ZSxudWxsKX1cbmZ1bmN0aW9uIHJoKGEsYixjLGQpe3ZhciBlPWEuc3RhdGVOb2RlO2UucHJvcHM9YztlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtlLnJlZnM9amg7YWgoYSk7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1WZyhmKTooZj1aZihiKT9YZjpILmN1cnJlbnQsZS5jb250ZXh0PVlmKGEsZikpO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2Y9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJihraChhLGIsZixjKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50fHwoYj1lLnN0YXRlLFxuXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50V2lsbE1vdW50JiZlLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1lLnN0YXRlJiZuaC5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsZS5zdGF0ZSxudWxsKSxnaChhLGMsZSxkKSxlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00MTk0MzA4KX1cbmZ1bmN0aW9uIHNoKGEsYixjKXthPWMucmVmO2lmKG51bGwhPT1hJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmXCJvYmplY3RcIiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09Yy50YWcpdGhyb3cgRXJyb3IocCgzMDkpKTt2YXIgZD1jLnN0YXRlTm9kZX1pZighZCl0aHJvdyBFcnJvcihwKDE0NyxhKSk7dmFyIGU9ZCxmPVwiXCIrYTtpZihudWxsIT09YiYmbnVsbCE9PWIucmVmJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1mKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWUucmVmcztiPT09amgmJihiPWUucmVmcz17fSk7bnVsbD09PWE/ZGVsZXRlIGJbZl06YltmXT1hfTtiLl9zdHJpbmdSZWY9ZjtyZXR1cm4gYn1pZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IocCgyODQpKTtpZighYy5fb3duZXIpdGhyb3cgRXJyb3IocCgyOTAsYSkpO31yZXR1cm4gYX1cbmZ1bmN0aW9uIHRoKGEsYil7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7dGhyb3cgRXJyb3IocCgzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09YT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGIpLmpvaW4oXCIsIFwiKStcIn1cIjphKSk7fWZ1bmN0aW9uIHVoKGEpe3ZhciBiPWEuX2luaXQ7cmV0dXJuIGIoYS5fcGF5bG9hZCl9XG5mdW5jdGlvbiB2aChhKXtmdW5jdGlvbiBiKGIsYyl7aWYoYSl7dmFyIGQ9Yi5kZWxldGlvbnM7bnVsbD09PWQ/KGIuZGVsZXRpb25zPVtjXSxiLmZsYWdzfD0xNik6ZC5wdXNoKGMpfX1mdW5jdGlvbiBjKGMsZCl7aWYoIWEpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09ZDspYihjLGQpLGQ9ZC5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGQoYSxiKXtmb3IoYT1uZXcgTWFwO251bGwhPT1iOyludWxsIT09Yi5rZXk/YS5zZXQoYi5rZXksYik6YS5zZXQoYi5pbmRleCxiKSxiPWIuc2libGluZztyZXR1cm4gYX1mdW5jdGlvbiBlKGEsYil7YT13aChhLGIpO2EuaW5kZXg9MDthLnNpYmxpbmc9bnVsbDtyZXR1cm4gYX1mdW5jdGlvbiBmKGIsYyxkKXtiLmluZGV4PWQ7aWYoIWEpcmV0dXJuIGIuZmxhZ3N8PTEwNDg1NzYsYztkPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1kKXJldHVybiBkPWQuaW5kZXgsZDxjPyhiLmZsYWdzfD0yLGMpOmQ7Yi5mbGFnc3w9MjtyZXR1cm4gY31mdW5jdGlvbiBnKGIpe2EmJlxubnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFnc3w9Mik7cmV0dXJuIGJ9ZnVuY3Rpb24gaChhLGIsYyxkKXtpZihudWxsPT09Ynx8NiE9PWIudGFnKXJldHVybiBiPXhoKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGsoYSxiLGMsZCl7dmFyIGY9Yy50eXBlO2lmKGY9PT15YSlyZXR1cm4gbShhLGIsYy5wcm9wcy5jaGlsZHJlbixkLGMua2V5KTtpZihudWxsIT09YiYmKGIuZWxlbWVudFR5cGU9PT1mfHxcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLiQkdHlwZW9mPT09SGEmJnVoKGYpPT09Yi50eXBlKSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9c2goYSxiLGMpLGQucmV0dXJuPWEsZDtkPXloKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPXNoKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIGwoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8XG5iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09Yy5jb250YWluZXJJbmZvfHxiLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PWMuaW1wbGVtZW50YXRpb24pcmV0dXJuIGI9emgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIG0oYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPUFoKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiJiZcIlwiIT09Ynx8XCJudW1iZXJcIj09PXR5cGVvZiBiKXJldHVybiBiPXhoKFwiXCIrYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjPXloKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLFxuYy5yZWY9c2goYSxudWxsLGIpLGMucmV0dXJuPWEsYztjYXNlIHdhOnJldHVybiBiPXpoKGIsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtjYXNlIEhhOnZhciBkPWIuX2luaXQ7cmV0dXJuIHEoYSxkKGIuX3BheWxvYWQpLGMpfWlmKGViKGIpfHxLYShiKSlyZXR1cm4gYj1BaChiLGEubW9kZSxjLG51bGwpLGIucmV0dXJuPWEsYjt0aChhLGIpfXJldHVybiBudWxsfWZ1bmN0aW9uIHIoYSxiLGMsZCl7dmFyIGU9bnVsbCE9PWI/Yi5rZXk6bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMmJlwiXCIhPT1jfHxcIm51bWJlclwiPT09dHlwZW9mIGMpcmV0dXJuIG51bGwhPT1lP251bGw6aChhLGIsXCJcIitjLGQpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBjLmtleT09PWU/ayhhLGIsYyxkKTpudWxsO2Nhc2Ugd2E6cmV0dXJuIGMua2V5PT09ZT9sKGEsYixjLGQpOm51bGw7Y2FzZSBIYTpyZXR1cm4gZT1jLl9pbml0LHIoYSxcbmIsZShjLl9wYXlsb2FkKSxkKX1pZihlYihjKXx8S2EoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bShhLGIsYyxkLG51bGwpO3RoKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24geShhLGIsYyxkLGUpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZCYmXCJcIiE9PWR8fFwibnVtYmVyXCI9PT10eXBlb2YgZClyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxoKGIsYSxcIlwiK2QsZSk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBkJiZudWxsIT09ZCl7c3dpdGNoKGQuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGsoYixhLGQsZSk7Y2FzZSB3YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsbChiLGEsZCxlKTtjYXNlIEhhOnZhciBmPWQuX2luaXQ7cmV0dXJuIHkoYSxiLGMsZihkLl9wYXlsb2FkKSxlKX1pZihlYihkKXx8S2EoZCkpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsbShiLGEsZCxlLG51bGwpO3RoKGIsZCl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBuKGUsZyxoLGspe2Zvcih2YXIgbD1udWxsLG09bnVsbCx1PWcsdz1nPTAseD1udWxsO251bGwhPT11JiZ3PGgubGVuZ3RoO3crKyl7dS5pbmRleD53Pyh4PXUsdT1udWxsKTp4PXUuc2libGluZzt2YXIgbj1yKGUsdSxoW3ddLGspO2lmKG51bGw9PT1uKXtudWxsPT09dSYmKHU9eCk7YnJlYWt9YSYmdSYmbnVsbD09PW4uYWx0ZXJuYXRlJiZiKGUsdSk7Zz1mKG4sZyx3KTtudWxsPT09bT9sPW46bS5zaWJsaW5nPW47bT1uO3U9eH1pZih3PT09aC5sZW5ndGgpcmV0dXJuIGMoZSx1KSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PXUpe2Zvcig7dzxoLmxlbmd0aDt3KyspdT1xKGUsaFt3XSxrKSxudWxsIT09dSYmKGc9Zih1LGcsdyksbnVsbD09PW0/bD11Om0uc2libGluZz11LG09dSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IodT1kKGUsdSk7dzxoLmxlbmd0aDt3KyspeD15KHUsZSx3LGhbd10sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJnUuZGVsZXRlKG51bGw9PT1cbngua2V5P3c6eC5rZXkpLGc9Zih4LGcsdyksbnVsbD09PW0/bD14Om0uc2libGluZz14LG09eCk7YSYmdS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIHQoZSxnLGgsayl7dmFyIGw9S2EoaCk7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IocCgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT1oKXRocm93IEVycm9yKHAoMTUxKSk7Zm9yKHZhciB1PWw9bnVsbCxtPWcsdz1nPTAseD1udWxsLG49aC5uZXh0KCk7bnVsbCE9PW0mJiFuLmRvbmU7dysrLG49aC5uZXh0KCkpe20uaW5kZXg+dz8oeD1tLG09bnVsbCk6eD1tLnNpYmxpbmc7dmFyIHQ9cihlLG0sbi52YWx1ZSxrKTtpZihudWxsPT09dCl7bnVsbD09PW0mJihtPXgpO2JyZWFrfWEmJm0mJm51bGw9PT10LmFsdGVybmF0ZSYmYihlLG0pO2c9Zih0LGcsdyk7bnVsbD09PXU/bD10OnUuc2libGluZz10O3U9dDttPXh9aWYobi5kb25lKXJldHVybiBjKGUsXG5tKSxJJiZ0ZyhlLHcpLGw7aWYobnVsbD09PW0pe2Zvcig7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXEoZSxuLnZhbHVlLGspLG51bGwhPT1uJiYoZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcihtPWQoZSxtKTshbi5kb25lO3crKyxuPWgubmV4dCgpKW49eShtLGUsdyxuLnZhbHVlLGspLG51bGwhPT1uJiYoYSYmbnVsbCE9PW4uYWx0ZXJuYXRlJiZtLmRlbGV0ZShudWxsPT09bi5rZXk/dzpuLmtleSksZz1mKG4sZyx3KSxudWxsPT09dT9sPW46dS5zaWJsaW5nPW4sdT1uKTthJiZtLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gSihhLGQsZixoKXtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT15YSYmbnVsbD09PWYua2V5JiYoZj1mLnByb3BzLmNoaWxkcmVuKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mKXtzd2l0Y2goZi4kJHR5cGVvZil7Y2FzZSB2YTphOntmb3IodmFyIGs9XG5mLmtleSxsPWQ7bnVsbCE9PWw7KXtpZihsLmtleT09PWspe2s9Zi50eXBlO2lmKGs9PT15YSl7aWYoNz09PWwudGFnKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzLmNoaWxkcmVuKTtkLnJldHVybj1hO2E9ZDticmVhayBhfX1lbHNlIGlmKGwuZWxlbWVudFR5cGU9PT1rfHxcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rJiZrLiQkdHlwZW9mPT09SGEmJnVoKGspPT09bC50eXBlKXtjKGEsbC5zaWJsaW5nKTtkPWUobCxmLnByb3BzKTtkLnJlZj1zaChhLGwsZik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1jKGEsbCk7YnJlYWt9ZWxzZSBiKGEsbCk7bD1sLnNpYmxpbmd9Zi50eXBlPT09eWE/KGQ9QWgoZi5wcm9wcy5jaGlsZHJlbixhLm1vZGUsaCxmLmtleSksZC5yZXR1cm49YSxhPWQpOihoPXloKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwsYS5tb2RlLGgpLGgucmVmPXNoKGEsZCxmKSxoLnJldHVybj1hLGE9aCl9cmV0dXJuIGcoYSk7Y2FzZSB3YTphOntmb3IobD1mLmtleTtudWxsIT09XG5kOyl7aWYoZC5rZXk9PT1sKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPWQuc2libGluZ31kPXpoKGYsYS5tb2RlLGgpO2QucmV0dXJuPWE7YT1kfXJldHVybiBnKGEpO2Nhc2UgSGE6cmV0dXJuIGw9Zi5faW5pdCxKKGEsZCxsKGYuX3BheWxvYWQpLGgpfWlmKGViKGYpKXJldHVybiBuKGEsZCxmLGgpO2lmKEthKGYpKXJldHVybiB0KGEsZCxmLGgpO3RoKGEsZil9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBmJiZcIlwiIT09Znx8XCJudW1iZXJcIj09PXR5cGVvZiBmPyhmPVwiXCIrZixudWxsIT09ZCYmNj09PWQudGFnPyhjKGEsZC5zaWJsaW5nKSxkPWUoZCxmKSxkLnJldHVybj1hLGE9ZCk6XG4oYyhhLGQpLGQ9eGgoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSkpOmMoYSxkKX1yZXR1cm4gSn12YXIgQmg9dmgoITApLENoPXZoKCExKSxEaD17fSxFaD1VZihEaCksRmg9VWYoRGgpLEdoPVVmKERoKTtmdW5jdGlvbiBIaChhKXtpZihhPT09RGgpdGhyb3cgRXJyb3IocCgxNzQpKTtyZXR1cm4gYX1mdW5jdGlvbiBJaChhLGIpe0coR2gsYik7RyhGaCxhKTtHKEVoLERoKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOmxiKG51bGwsXCJcIik7YnJlYWs7ZGVmYXVsdDphPTg9PT1hP2IucGFyZW50Tm9kZTpiLGI9YS5uYW1lc3BhY2VVUkl8fG51bGwsYT1hLnRhZ05hbWUsYj1sYihiLGEpfUUoRWgpO0coRWgsYil9ZnVuY3Rpb24gSmgoKXtFKEVoKTtFKEZoKTtFKEdoKX1cbmZ1bmN0aW9uIEtoKGEpe0hoKEdoLmN1cnJlbnQpO3ZhciBiPUhoKEVoLmN1cnJlbnQpO3ZhciBjPWxiKGIsYS50eXBlKTtiIT09YyYmKEcoRmgsYSksRyhFaCxjKSl9ZnVuY3Rpb24gTGgoYSl7RmguY3VycmVudD09PWEmJihFKEVoKSxFKEZoKSl9dmFyIE09VWYoMCk7XG5mdW5jdGlvbiBNaChhKXtmb3IodmFyIGI9YTtudWxsIT09Yjspe2lmKDEzPT09Yi50YWcpe3ZhciBjPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YyYmKGM9Yy5kZWh5ZHJhdGVkLG51bGw9PT1jfHxcIiQ/XCI9PT1jLmRhdGF8fFwiJCFcIj09PWMuZGF0YSkpcmV0dXJuIGJ9ZWxzZSBpZigxOT09PWIudGFnJiZ2b2lkIDAhPT1iLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpe2lmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBifWVsc2UgaWYobnVsbCE9PWIuY2hpbGQpe2IuY2hpbGQucmV0dXJuPWI7Yj1iLmNoaWxkO2NvbnRpbnVlfWlmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiBudWxsO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ31yZXR1cm4gbnVsbH12YXIgTmg9W107XG5mdW5jdGlvbiBPaCgpe2Zvcih2YXIgYT0wO2E8TmgubGVuZ3RoO2ErKylOaFthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO05oLmxlbmd0aD0wfXZhciBQaD11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLFFoPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLFJoPTAsTj1udWxsLE89bnVsbCxQPW51bGwsU2g9ITEsVGg9ITEsVWg9MCxWaD0wO2Z1bmN0aW9uIFEoKXt0aHJvdyBFcnJvcihwKDMyMSkpO31mdW5jdGlvbiBXaChhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFIZShhW2NdLGJbY10pKXJldHVybiExO3JldHVybiEwfVxuZnVuY3Rpb24gWGgoYSxiLGMsZCxlLGYpe1JoPWY7Tj1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7UGguY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9ZaDpaaDthPWMoZCxlKTtpZihUaCl7Zj0wO2Rve1RoPSExO1VoPTA7aWYoMjU8PWYpdGhyb3cgRXJyb3IocCgzMDEpKTtmKz0xO1A9Tz1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtQaC5jdXJyZW50PSRoO2E9YyhkLGUpfXdoaWxlKFRoKX1QaC5jdXJyZW50PWFpO2I9bnVsbCE9PU8mJm51bGwhPT1PLm5leHQ7Umg9MDtQPU89Tj1udWxsO1NoPSExO2lmKGIpdGhyb3cgRXJyb3IocCgzMDApKTtyZXR1cm4gYX1mdW5jdGlvbiBiaSgpe3ZhciBhPTAhPT1VaDtVaD0wO3JldHVybiBhfVxuZnVuY3Rpb24gY2koKXt2YXIgYT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtudWxsPT09UD9OLm1lbW9pemVkU3RhdGU9UD1hOlA9UC5uZXh0PWE7cmV0dXJuIFB9ZnVuY3Rpb24gZGkoKXtpZihudWxsPT09Tyl7dmFyIGE9Ti5hbHRlcm5hdGU7YT1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbH1lbHNlIGE9Ty5uZXh0O3ZhciBiPW51bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZTpQLm5leHQ7aWYobnVsbCE9PWIpUD1iLE89YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzEwKSk7Tz1hO2E9e21lbW9pemVkU3RhdGU6Ty5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpPLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ty5iYXNlUXVldWUscXVldWU6Ty5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YX1yZXR1cm4gUH1cbmZ1bmN0aW9uIGVpKGEsYil7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpifVxuZnVuY3Rpb24gZmkoYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1PLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2Y9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7dmFyIGg9Zz1udWxsLGs9bnVsbCxsPWY7ZG97dmFyIG09bC5sYW5lO2lmKChSaCZtKT09PW0pbnVsbCE9PWsmJihrPWsubmV4dD17bGFuZTowLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9KSxkPWwuaGFzRWFnZXJTdGF0ZT9sLmVhZ2VyU3RhdGU6YShkLGwuYWN0aW9uKTtlbHNle3ZhciBxPXtsYW5lOm0sYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLFxuZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09az8oaD1rPXEsZz1kKTprPWsubmV4dD1xO04ubGFuZXN8PW07aGh8PW19bD1sLm5leHR9d2hpbGUobnVsbCE9PWwmJmwhPT1mKTtudWxsPT09az9nPWQ6ay5uZXh0PWg7SGUoZCxiLm1lbW9pemVkU3RhdGUpfHwoVWc9ITApO2IubWVtb2l6ZWRTdGF0ZT1kO2IuYmFzZVN0YXRlPWc7Yi5iYXNlUXVldWU9aztjLmxhc3RSZW5kZXJlZFN0YXRlPWR9YT1jLmludGVybGVhdmVkO2lmKG51bGwhPT1hKXtlPWE7ZG8gZj1lLmxhbmUsTi5sYW5lc3w9ZixoaHw9ZixlPWUubmV4dDt3aGlsZShlIT09YSl9ZWxzZSBudWxsPT09ZSYmKGMubGFuZXM9MCk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxjLmRpc3BhdGNoXX1cbmZ1bmN0aW9uIGdpKGEpe3ZhciBiPWRpKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9Yy5kaXNwYXRjaCxlPWMucGVuZGluZyxmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSl7Yy5wZW5kaW5nPW51bGw7dmFyIGc9ZT1lLm5leHQ7ZG8gZj1hKGYsZy5hY3Rpb24pLGc9Zy5uZXh0O3doaWxlKGchPT1lKTtIZShmLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWY7bnVsbD09PWIuYmFzZVF1ZXVlJiYoYi5iYXNlU3RhdGU9Zik7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1mfXJldHVybltmLGRdfWZ1bmN0aW9uIGhpKCl7fVxuZnVuY3Rpb24gaWkoYSxiKXt2YXIgYz1OLGQ9ZGkoKSxlPWIoKSxmPSFIZShkLm1lbW9pemVkU3RhdGUsZSk7ZiYmKGQubWVtb2l6ZWRTdGF0ZT1lLFVnPSEwKTtkPWQucXVldWU7amkoa2kuYmluZChudWxsLGMsZCxhKSxbYV0pO2lmKGQuZ2V0U25hcHNob3QhPT1ifHxmfHxudWxsIT09UCYmUC5tZW1vaXplZFN0YXRlLnRhZyYxKXtjLmZsYWdzfD0yMDQ4O2xpKDksbWkuYmluZChudWxsLGMsZCxlLGIpLHZvaWQgMCxudWxsKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShjLGIsZSl9cmV0dXJuIGV9ZnVuY3Rpb24gbmkoYSxiLGMpe2EuZmxhZ3N8PTE2Mzg0O2E9e2dldFNuYXBzaG90OmIsdmFsdWU6Y307Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE4udXBkYXRlUXVldWU9YixiLnN0b3Jlcz1bYV0pOihjPWIuc3RvcmVzLG51bGw9PT1jP2Iuc3RvcmVzPVthXTpjLnB1c2goYSkpfVxuZnVuY3Rpb24gbWkoYSxiLGMsZCl7Yi52YWx1ZT1jO2IuZ2V0U25hcHNob3Q9ZDtvaShiKSYmcGkoYSl9ZnVuY3Rpb24ga2koYSxiLGMpe3JldHVybiBjKGZ1bmN0aW9uKCl7b2koYikmJnBpKGEpfSl9ZnVuY3Rpb24gb2koYSl7dmFyIGI9YS5nZXRTbmFwc2hvdDthPWEudmFsdWU7dHJ5e3ZhciBjPWIoKTtyZXR1cm4hSGUoYSxjKX1jYXRjaChkKXtyZXR1cm4hMH19ZnVuY3Rpb24gcGkoYSl7dmFyIGI9WmcoYSwxKTtudWxsIT09YiYmbWgoYixhLDEsLTEpfVxuZnVuY3Rpb24gcWkoYSl7dmFyIGI9Y2koKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSYmKGE9YSgpKTtiLm1lbW9pemVkU3RhdGU9Yi5iYXNlU3RhdGU9YTthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjplaSxsYXN0UmVuZGVyZWRTdGF0ZTphfTtiLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPXJpLmJpbmQobnVsbCxOLGEpO3JldHVybltiLm1lbW9pemVkU3RhdGUsYV19XG5mdW5jdGlvbiBsaShhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj1OLnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGwsc3RvcmVzOm51bGx9LE4udXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9YS5uZXh0PWEpOihjPWIubGFzdEVmZmVjdCxudWxsPT09Yz9iLmxhc3RFZmZlY3Q9YS5uZXh0PWE6KGQ9Yy5uZXh0LGMubmV4dD1hLGEubmV4dD1kLGIubGFzdEVmZmVjdD1hKSk7cmV0dXJuIGF9ZnVuY3Rpb24gc2koKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIHRpKGEsYixjLGQpe3ZhciBlPWNpKCk7Ti5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9bGkoMXxiLGMsdm9pZCAwLHZvaWQgMD09PWQ/bnVsbDpkKX1cbmZ1bmN0aW9uIHVpKGEsYixjLGQpe3ZhciBlPWRpKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU8pe3ZhciBnPU8ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmV2goZCxnLmRlcHMpKXtlLm1lbW9pemVkU3RhdGU9bGkoYixjLGYsZCk7cmV0dXJufX1OLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyxmLGQpfWZ1bmN0aW9uIHZpKGEsYil7cmV0dXJuIHRpKDgzOTA2NTYsOCxhLGIpfWZ1bmN0aW9uIGppKGEsYil7cmV0dXJuIHVpKDIwNDgsOCxhLGIpfWZ1bmN0aW9uIHdpKGEsYil7cmV0dXJuIHVpKDQsMixhLGIpfWZ1bmN0aW9uIHhpKGEsYil7cmV0dXJuIHVpKDQsNCxhLGIpfVxuZnVuY3Rpb24geWkoYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYT1hKCksYihhKSxmdW5jdGlvbigpe2IobnVsbCl9O2lmKG51bGwhPT1iJiZ2b2lkIDAhPT1iKXJldHVybiBhPWEoKSxiLmN1cnJlbnQ9YSxmdW5jdGlvbigpe2IuY3VycmVudD1udWxsfX1mdW5jdGlvbiB6aShhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHVpKDQsNCx5aS5iaW5kKG51bGwsYixhKSxjKX1mdW5jdGlvbiBBaSgpe31mdW5jdGlvbiBCaShhLGIpe3ZhciBjPWRpKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZXaChiLGRbMV0pKXJldHVybiBkWzBdO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1cbmZ1bmN0aW9uIENpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIERpKGEsYixjKXtpZigwPT09KFJoJjIxKSlyZXR1cm4gYS5iYXNlU3RhdGUmJihhLmJhc2VTdGF0ZT0hMSxVZz0hMCksYS5tZW1vaXplZFN0YXRlPWM7SGUoYyxiKXx8KGM9eWMoKSxOLmxhbmVzfD1jLGhofD1jLGEuYmFzZVN0YXRlPSEwKTtyZXR1cm4gYn1mdW5jdGlvbiBFaShhLGIpe3ZhciBjPUM7Qz0wIT09YyYmND5jP2M6NDthKCEwKTt2YXIgZD1RaC50cmFuc2l0aW9uO1FoLnRyYW5zaXRpb249e307dHJ5e2EoITEpLGIoKX1maW5hbGx5e0M9YyxRaC50cmFuc2l0aW9uPWR9fWZ1bmN0aW9uIEZpKCl7cmV0dXJuIGRpKCkubWVtb2l6ZWRTdGF0ZX1cbmZ1bmN0aW9uIEdpKGEsYixjKXt2YXIgZD1saChhKTtjPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGMpO2Vsc2UgaWYoYz1ZZyhhLGIsYyxkKSxudWxsIT09Yyl7dmFyIGU9TCgpO21oKGMsYSxkLGUpO0ppKGMsYixkKX19XG5mdW5jdGlvbiByaShhLGIsYyl7dmFyIGQ9bGgoYSksZT17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoSGkoYSkpSWkoYixlKTtlbHNle3ZhciBmPWEuYWx0ZXJuYXRlO2lmKDA9PT1hLmxhbmVzJiYobnVsbD09PWZ8fDA9PT1mLmxhbmVzKSYmKGY9Yi5sYXN0UmVuZGVyZWRSZWR1Y2VyLG51bGwhPT1mKSl0cnl7dmFyIGc9Yi5sYXN0UmVuZGVyZWRTdGF0ZSxoPWYoZyxjKTtlLmhhc0VhZ2VyU3RhdGU9ITA7ZS5lYWdlclN0YXRlPWg7aWYoSGUoaCxnKSl7dmFyIGs9Yi5pbnRlcmxlYXZlZDtudWxsPT09az8oZS5uZXh0PWUsWGcoYikpOihlLm5leHQ9ay5uZXh0LGsubmV4dD1lKTtiLmludGVybGVhdmVkPWU7cmV0dXJufX1jYXRjaChsKXt9ZmluYWxseXt9Yz1ZZyhhLGIsZSxkKTtudWxsIT09YyYmKGU9TCgpLG1oKGMsYSxkLGUpLEppKGMsYixkKSl9fVxuZnVuY3Rpb24gSGkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7cmV0dXJuIGE9PT1OfHxudWxsIT09YiYmYj09PU59ZnVuY3Rpb24gSWkoYSxiKXtUaD1TaD0hMDt2YXIgYz1hLnBlbmRpbmc7bnVsbD09PWM/Yi5uZXh0PWI6KGIubmV4dD1jLm5leHQsYy5uZXh0PWIpO2EucGVuZGluZz1ifWZ1bmN0aW9uIEppKGEsYixjKXtpZigwIT09KGMmNDE5NDI0MCkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG52YXIgYWk9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOlEsdXNlQ29udGV4dDpRLHVzZUVmZmVjdDpRLHVzZUltcGVyYXRpdmVIYW5kbGU6USx1c2VJbnNlcnRpb25FZmZlY3Q6USx1c2VMYXlvdXRFZmZlY3Q6USx1c2VNZW1vOlEsdXNlUmVkdWNlcjpRLHVzZVJlZjpRLHVzZVN0YXRlOlEsdXNlRGVidWdWYWx1ZTpRLHVzZURlZmVycmVkVmFsdWU6USx1c2VUcmFuc2l0aW9uOlEsdXNlTXV0YWJsZVNvdXJjZTpRLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlEsdXNlSWQ6USx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFloPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe2NpKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OnZpLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiB0aSg0MTk0MzA4LFxuNCx5aS5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRpKDQxOTQzMDgsNCxhLGIpfSx1c2VJbnNlcnRpb25FZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNCwyLGEsYil9LHVzZU1lbW86ZnVuY3Rpb24oYSxiKXt2YXIgYz1jaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7YT1hKCk7Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jaSgpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YSxsYXN0UmVuZGVyZWRTdGF0ZTpifTtkLnF1ZXVlPWE7YT1hLmRpc3BhdGNoPUdpLmJpbmQobnVsbCxOLGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpmdW5jdGlvbihhKXt2YXIgYj1cbmNpKCk7YT17Y3VycmVudDphfTtyZXR1cm4gYi5tZW1vaXplZFN0YXRlPWF9LHVzZVN0YXRlOnFpLHVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gY2koKS5tZW1vaXplZFN0YXRlPWF9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1xaSghMSksYj1hWzBdO2E9RWkuYmluZChudWxsLGFbMV0pO2NpKCkubWVtb2l6ZWRTdGF0ZT1hO3JldHVybltiLGFdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TixlPWNpKCk7aWYoSSl7aWYodm9pZCAwPT09Yyl0aHJvdyBFcnJvcihwKDQwNykpO2M9YygpfWVsc2V7Yz1iKCk7aWYobnVsbD09PVIpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KFJoJjMwKXx8bmkoZCxiLGMpfWUubWVtb2l6ZWRTdGF0ZT1jO3ZhciBmPXt2YWx1ZTpjLGdldFNuYXBzaG90OmJ9O2UucXVldWU9Zjt2aShraS5iaW5kKG51bGwsZCxcbmYsYSksW2FdKTtkLmZsYWdzfD0yMDQ4O2xpKDksbWkuYmluZChudWxsLGQsZixjLGIpLHZvaWQgMCxudWxsKTtyZXR1cm4gY30sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgYT1jaSgpLGI9Ui5pZGVudGlmaWVyUHJlZml4O2lmKEkpe3ZhciBjPXNnO3ZhciBkPXJnO2M9KGQmfigxPDwzMi1vYyhkKS0xKSkudG9TdHJpbmcoMzIpK2M7Yj1cIjpcIitiK1wiUlwiK2M7Yz1VaCsrOzA8YyYmKGIrPVwiSFwiK2MudG9TdHJpbmcoMzIpKTtiKz1cIjpcIn1lbHNlIGM9VmgrKyxiPVwiOlwiK2IrXCJyXCIrYy50b1N0cmluZygzMikrXCI6XCI7cmV0dXJuIGEubWVtb2l6ZWRTdGF0ZT1ifSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LFpoPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpCaSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDpqaSx1c2VJbXBlcmF0aXZlSGFuZGxlOnppLHVzZUluc2VydGlvbkVmZmVjdDp3aSx1c2VMYXlvdXRFZmZlY3Q6eGksdXNlTWVtbzpDaSx1c2VSZWR1Y2VyOmZpLHVzZVJlZjpzaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBmaShlaSl9LFxudXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPWRpKCk7cmV0dXJuIERpKGIsTy5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9ZmkoZWkpWzBdLGI9ZGkoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOmhpLHVzZVN5bmNFeHRlcm5hbFN0b3JlOmlpLHVzZUlkOkZpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sJGg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6Z2ksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGdpKGVpKX0sdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPWRpKCk7cmV0dXJuIG51bGw9PT1cbk8/Yi5tZW1vaXplZFN0YXRlPWE6RGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1naShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfTtmdW5jdGlvbiBLaShhLGIpe3RyeXt2YXIgYz1cIlwiLGQ9YjtkbyBjKz1QYShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT1cIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiK2YubWVzc2FnZStcIlxcblwiK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZSxkaWdlc3Q6bnVsbH19ZnVuY3Rpb24gTGkoYSxiLGMpe3JldHVybnt2YWx1ZTphLHNvdXJjZTpudWxsLHN0YWNrOm51bGwhPWM/YzpudWxsLGRpZ2VzdDpudWxsIT1iP2I6bnVsbH19XG5mdW5jdGlvbiBNaShhLGIpe3RyeXtjb25zb2xlLmVycm9yKGIudmFsdWUpfWNhdGNoKGMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBjO30pfX12YXIgTmk9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtNYXA/V2Vha01hcDpNYXA7ZnVuY3Rpb24gT2koYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7UGl8fChQaT0hMCxRaT1kKTtNaShhLGIpfTtyZXR1cm4gY31cbmZ1bmN0aW9uIFJpKGEsYixjKXtjPWNoKC0xLGMpO2MudGFnPTM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGU9Yi52YWx1ZTtjLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZChlKX07Yy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYil9fXZhciBmPWEuc3RhdGVOb2RlO251bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaShhLGIpO1wiZnVuY3Rpb25cIiE9PXR5cGVvZiBkJiYobnVsbD09PVNpP1NpPW5ldyBTZXQoW3RoaXNdKTpTaS5hZGQodGhpcykpO3ZhciBjPWIuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaChiLnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09Yz9jOlwiXCJ9KX0pO3JldHVybiBjfVxuZnVuY3Rpb24gVGkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO2lmKG51bGw9PT1kKXtkPWEucGluZ0NhY2hlPW5ldyBOaTt2YXIgZT1uZXcgU2V0O2Quc2V0KGIsZSl9ZWxzZSBlPWQuZ2V0KGIpLHZvaWQgMD09PWUmJihlPW5ldyBTZXQsZC5zZXQoYixlKSk7ZS5oYXMoYyl8fChlLmFkZChjKSxhPVVpLmJpbmQobnVsbCxhLGIsYyksYi50aGVuKGEsYSkpfWZ1bmN0aW9uIFZpKGEpe2Rve3ZhciBiO2lmKGI9MTM9PT1hLnRhZyliPWEubWVtb2l6ZWRTdGF0ZSxiPW51bGwhPT1iP251bGwhPT1iLmRlaHlkcmF0ZWQ/ITA6ITE6ITA7aWYoYilyZXR1cm4gYTthPWEucmV0dXJufXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFdpKGEsYixjLGQsZSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIGE9PT1iP2EuZmxhZ3N8PTY1NTM2OihhLmZsYWdzfD0xMjgsYy5mbGFnc3w9MTMxMDcyLGMuZmxhZ3MmPS01MjgwNSwxPT09Yy50YWcmJihudWxsPT09Yy5hbHRlcm5hdGU/Yy50YWc9MTc6KGI9Y2goLTEsMSksYi50YWc9MixkaChjLGIsMSkpKSxjLmxhbmVzfD0xKSxhO2EuZmxhZ3N8PTY1NTM2O2EubGFuZXM9ZTtyZXR1cm4gYX12YXIgWGk9dWEuUmVhY3RDdXJyZW50T3duZXIsVWc9ITE7ZnVuY3Rpb24gWWkoYSxiLGMsZCl7Yi5jaGlsZD1udWxsPT09YT9DaChiLG51bGwsYyxkKTpCaChiLGEuY2hpbGQsYyxkKX1cbmZ1bmN0aW9uIFppKGEsYixjLGQsZSl7Yz1jLnJlbmRlcjt2YXIgZj1iLnJlZjtUZyhiLGUpO2Q9WGgoYSxiLGMsZCxmLGUpO2M9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmMmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGQsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBhaihhLGIsYyxkLGUpe2lmKG51bGw9PT1hKXt2YXIgZj1jLnR5cGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJiFiaihmKSYmdm9pZCAwPT09Zi5kZWZhdWx0UHJvcHMmJm51bGw9PT1jLmNvbXBhcmUmJnZvaWQgMD09PWMuZGVmYXVsdFByb3BzKXJldHVybiBiLnRhZz0xNSxiLnR5cGU9ZixjaihhLGIsZixkLGUpO2E9eWgoYy50eXBlLG51bGwsZCxiLGIubW9kZSxlKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9Zj1hLmNoaWxkO2lmKDA9PT0oYS5sYW5lcyZlKSl7dmFyIGc9Zi5tZW1vaXplZFByb3BzO2M9Yy5jb21wYXJlO2M9bnVsbCE9PWM/YzpJZTtpZihjKGcsZCkmJmEucmVmPT09Yi5yZWYpcmV0dXJuICRpKGEsYixlKX1iLmZsYWdzfD0xO2E9d2goZixkKTthLnJlZj1iLnJlZjthLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWF9XG5mdW5jdGlvbiBjaihhLGIsYyxkLGUpe2lmKG51bGwhPT1hKXt2YXIgZj1hLm1lbW9pemVkUHJvcHM7aWYoSWUoZixkKSYmYS5yZWY9PT1iLnJlZilpZihVZz0hMSxiLnBlbmRpbmdQcm9wcz1kPWYsMCE9PShhLmxhbmVzJmUpKTAhPT0oYS5mbGFncyYxMzEwNzIpJiYoVWc9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcywkaShhLGIsZSl9cmV0dXJuIGRqKGEsYixjLGQsZSl9XG5mdW5jdGlvbiBlaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLmNoaWxkcmVuLGY9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGw7aWYoXCJoaWRkZW5cIj09PWQubW9kZSlpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LEcoZmosZ2opLGdqfD1jO2Vsc2V7aWYoMD09PShjJjEwNzM3NDE4MjQpKXJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sYi51cGRhdGVRdWV1ZT1udWxsLEcoZmosZ2opLGdqfD1hLG51bGw7Yi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfTtkPW51bGwhPT1mP2YuYmFzZUxhbmVzOmM7Ryhmaixnaik7Z2p8PWR9ZWxzZSBudWxsIT09XG5mPyhkPWYuYmFzZUxhbmVzfGMsYi5tZW1vaXplZFN0YXRlPW51bGwpOmQ9YyxHKGZqLGdqKSxnanw9ZDtZaShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBoaihhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mn1mdW5jdGlvbiBkaihhLGIsYyxkLGUpe3ZhciBmPVpmKGMpP1hmOkguY3VycmVudDtmPVlmKGIsZik7VGcoYixlKTtjPVhoKGEsYixjLGQsZixlKTtkPWJpKCk7aWYobnVsbCE9PWEmJiFVZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLCRpKGEsYixlKTtJJiZkJiZ2ZyhiKTtiLmZsYWdzfD0xO1lpKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gaWooYSxiLGMsZCxlKXtpZihaZihjKSl7dmFyIGY9ITA7Y2coYil9ZWxzZSBmPSExO1RnKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKWpqKGEsYikscGgoYixjLGQpLHJoKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBsJiZudWxsIT09bD9sPVZnKGwpOihsPVpmKGMpP1hmOkguY3VycmVudCxsPVlmKGIsbCkpO3ZhciBtPWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHE9XCJmdW5jdGlvblwiPT09dHlwZW9mIG18fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlO3F8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHxcbihoIT09ZHx8ayE9PWwpJiZxaChiLGcsZCxsKTskZz0hMTt2YXIgcj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2doKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8V2YuY3VycmVudHx8JGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBtJiYoa2goYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPSRnfHxvaChiLGMsaCxkLHIsayxsKSk/KHF8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSk6XG4oXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGQ9ITEpfWVsc2V7Zz1iLnN0YXRlTm9kZTtiaChhLGIpO2g9Yi5tZW1vaXplZFByb3BzO2w9Yi50eXBlPT09Yi5lbGVtZW50VHlwZT9oOkxnKGIudHlwZSxoKTtnLnByb3BzPWw7cT1iLnBlbmRpbmdQcm9wcztyPWcuY29udGV4dDtrPWMuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09az9rPVZnKGspOihrPVpmKGMpP1hmOkguY3VycmVudCxrPVlmKGIsaykpO3ZhciB5PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB5fHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fFxuXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChoIT09cXx8ciE9PWspJiZxaChiLGcsZCxrKTskZz0hMTtyPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7dmFyIG49Yi5tZW1vaXplZFN0YXRlO2ghPT1xfHxyIT09bnx8V2YuY3VycmVudHx8JGc/KFwiZnVuY3Rpb25cIj09PXR5cGVvZiB5JiYoa2goYixjLHksZCksbj1iLm1lbW9pemVkU3RhdGUpLChsPSRnfHxvaChiLGMsbCxkLHIsbixrKXx8ITEpPyhtfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZXx8KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLG4sayksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlxuZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShkLG4saykpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZSYmKGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MTAyNCkpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1uKSxnLnByb3BzPWQsZy5zdGF0ZT1uLGcuY29udGV4dD1rLGQ9bCk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PVxuYS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxkPSExKX1yZXR1cm4ga2ooYSxiLGMsZCxmLGUpfVxuZnVuY3Rpb24ga2ooYSxiLGMsZCxlLGYpe2hqKGEsYik7dmFyIGc9MCE9PShiLmZsYWdzJjEyOCk7aWYoIWQmJiFnKXJldHVybiBlJiZkZyhiLGMsITEpLCRpKGEsYixmKTtkPWIuc3RhdGVOb2RlO1hpLmN1cnJlbnQ9Yjt2YXIgaD1nJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpkLnJlbmRlcigpO2IuZmxhZ3N8PTE7bnVsbCE9PWEmJmc/KGIuY2hpbGQ9QmgoYixhLmNoaWxkLG51bGwsZiksYi5jaGlsZD1CaChiLG51bGwsaCxmKSk6WWkoYSxiLGgsZik7Yi5tZW1vaXplZFN0YXRlPWQuc3RhdGU7ZSYmZGcoYixjLCEwKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBsaihhKXt2YXIgYj1hLnN0YXRlTm9kZTtiLnBlbmRpbmdDb250ZXh0P2FnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJmFnKGEsYi5jb250ZXh0LCExKTtJaChhLGIuY29udGFpbmVySW5mbyl9XG5mdW5jdGlvbiBtaihhLGIsYyxkLGUpe0lnKCk7SmcoZSk7Yi5mbGFnc3w9MjU2O1lpKGEsYixjLGQpO3JldHVybiBiLmNoaWxkfXZhciBuaj17ZGVoeWRyYXRlZDpudWxsLHRyZWVDb250ZXh0Om51bGwscmV0cnlMYW5lOjB9O2Z1bmN0aW9uIG9qKGEpe3JldHVybntiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfX1cbmZ1bmN0aW9uIHBqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPU0uY3VycmVudCxmPSExLGc9MCE9PShiLmZsYWdzJjEyOCksaDsoaD1nKXx8KGg9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU/ITE6MCE9PShlJjIpKTtpZihoKWY9ITAsYi5mbGFncyY9LTEyOTtlbHNlIGlmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlKWV8PTE7RyhNLGUmMSk7aWYobnVsbD09PWEpe0VnKGIpO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiYoYT1hLmRlaHlkcmF0ZWQsbnVsbCE9PWEpKXJldHVybiAwPT09KGIubW9kZSYxKT9iLmxhbmVzPTE6XCIkIVwiPT09YS5kYXRhP2IubGFuZXM9ODpiLmxhbmVzPTEwNzM3NDE4MjQsbnVsbDtnPWQuY2hpbGRyZW47YT1kLmZhbGxiYWNrO3JldHVybiBmPyhkPWIubW9kZSxmPWIuY2hpbGQsZz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmd9LDA9PT0oZCYxKSYmbnVsbCE9PWY/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPVxuZyk6Zj1xaihnLGQsMCxudWxsKSxhPUFoKGEsZCxjLG51bGwpLGYucmV0dXJuPWIsYS5yZXR1cm49YixmLnNpYmxpbmc9YSxiLmNoaWxkPWYsYi5jaGlsZC5tZW1vaXplZFN0YXRlPW9qKGMpLGIubWVtb2l6ZWRTdGF0ZT1uaixhKTpyaihiLGcpfWU9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lJiYoaD1lLmRlaHlkcmF0ZWQsbnVsbCE9PWgpKXJldHVybiBzaihhLGIsZyxkLGgsZSxjKTtpZihmKXtmPWQuZmFsbGJhY2s7Zz1iLm1vZGU7ZT1hLmNoaWxkO2g9ZS5zaWJsaW5nO3ZhciBrPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn07MD09PShnJjEpJiZiLmNoaWxkIT09ZT8oZD1iLmNoaWxkLGQuY2hpbGRMYW5lcz0wLGQucGVuZGluZ1Byb3BzPWssYi5kZWxldGlvbnM9bnVsbCk6KGQ9d2goZSxrKSxkLnN1YnRyZWVGbGFncz1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCk7bnVsbCE9PWg/Zj13aChoLGYpOihmPUFoKGYsZyxjLG51bGwpLGYuZmxhZ3N8PTIpO2YucmV0dXJuPVxuYjtkLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDtkPWY7Zj1iLmNoaWxkO2c9YS5jaGlsZC5tZW1vaXplZFN0YXRlO2c9bnVsbD09PWc/b2ooYyk6e2Jhc2VMYW5lczpnLmJhc2VMYW5lc3xjLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9O2YubWVtb2l6ZWRTdGF0ZT1nO2YuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmM7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBkfWY9YS5jaGlsZDthPWYuc2libGluZztkPXdoKGYse21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0pOzA9PT0oYi5tb2RlJjEpJiYoZC5sYW5lcz1jKTtkLnJldHVybj1iO2Quc2libGluZz1udWxsO251bGwhPT1hJiYoYz1iLmRlbGV0aW9ucyxudWxsPT09Yz8oYi5kZWxldGlvbnM9W2FdLGIuZmxhZ3N8PTE2KTpjLnB1c2goYSkpO2IuY2hpbGQ9ZDtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gZH1cbmZ1bmN0aW9uIHJqKGEsYil7Yj1xaih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpifSxhLm1vZGUsMCxudWxsKTtiLnJldHVybj1hO3JldHVybiBhLmNoaWxkPWJ9ZnVuY3Rpb24gdGooYSxiLGMsZCl7bnVsbCE9PWQmJkpnKGQpO0JoKGIsYS5jaGlsZCxudWxsLGMpO2E9cmooYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbik7YS5mbGFnc3w9MjtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gYX1cbmZ1bmN0aW9uIHNqKGEsYixjLGQsZSxmLGcpe2lmKGMpe2lmKGIuZmxhZ3MmMjU2KXJldHVybiBiLmZsYWdzJj0tMjU3LGQ9TGkoRXJyb3IocCg0MjIpKSksdGooYSxiLGcsZCk7aWYobnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gYi5jaGlsZD1hLmNoaWxkLGIuZmxhZ3N8PTEyOCxudWxsO2Y9ZC5mYWxsYmFjaztlPWIubW9kZTtkPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59LGUsMCxudWxsKTtmPUFoKGYsZSxnLG51bGwpO2YuZmxhZ3N8PTI7ZC5yZXR1cm49YjtmLnJldHVybj1iO2Quc2libGluZz1mO2IuY2hpbGQ9ZDswIT09KGIubW9kZSYxKSYmQmgoYixhLmNoaWxkLG51bGwsZyk7Yi5jaGlsZC5tZW1vaXplZFN0YXRlPW9qKGcpO2IubWVtb2l6ZWRTdGF0ZT1uajtyZXR1cm4gZn1pZigwPT09KGIubW9kZSYxKSlyZXR1cm4gdGooYSxiLGcsbnVsbCk7aWYoXCIkIVwiPT09ZS5kYXRhKXtkPWUubmV4dFNpYmxpbmcmJmUubmV4dFNpYmxpbmcuZGF0YXNldDtcbmlmKGQpdmFyIGg9ZC5kZ3N0O2Q9aDtmPUVycm9yKHAoNDE5KSk7ZD1MaShmLGQsdm9pZCAwKTtyZXR1cm4gdGooYSxiLGcsZCl9aD0wIT09KGcmYS5jaGlsZExhbmVzKTtpZihVZ3x8aCl7ZD1SO2lmKG51bGwhPT1kKXtzd2l0Y2goZyYtZyl7Y2FzZSA0OmU9MjticmVhaztjYXNlIDE2OmU9ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6ZT0zMjticmVhaztjYXNlIDUzNjg3MDkxMjplPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0OmU9MH1lPTAhPT0oZSYoZC5zdXNwZW5kZWRMYW5lc3xnKSk/MDplO1xuMCE9PWUmJmUhPT1mLnJldHJ5TGFuZSYmKGYucmV0cnlMYW5lPWUsWmcoYSxlKSxtaChkLGEsZSwtMSkpfXVqKCk7ZD1MaShFcnJvcihwKDQyMSkpKTtyZXR1cm4gdGooYSxiLGcsZCl9aWYoXCIkP1wiPT09ZS5kYXRhKXJldHVybiBiLmZsYWdzfD0xMjgsYi5jaGlsZD1hLmNoaWxkLGI9dmouYmluZChudWxsLGEpLGUuX3JlYWN0UmV0cnk9YixudWxsO2E9Zi50cmVlQ29udGV4dDt5Zz1MZihlLm5leHRTaWJsaW5nKTt4Zz1iO0k9ITA7emc9bnVsbDtudWxsIT09YSYmKG9nW3BnKytdPXJnLG9nW3BnKytdPXNnLG9nW3BnKytdPXFnLHJnPWEuaWQsc2c9YS5vdmVyZmxvdyxxZz1iKTtiPXJqKGIsZC5jaGlsZHJlbik7Yi5mbGFnc3w9NDA5NjtyZXR1cm4gYn1mdW5jdGlvbiB3aihhLGIsYyl7YS5sYW5lc3w9Yjt2YXIgZD1hLmFsdGVybmF0ZTtudWxsIT09ZCYmKGQubGFuZXN8PWIpO1NnKGEucmV0dXJuLGIsYyl9XG5mdW5jdGlvbiB4aihhLGIsYyxkLGUpe3ZhciBmPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09Zj9hLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOmIscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpkLHRhaWw6Yyx0YWlsTW9kZTplfTooZi5pc0JhY2t3YXJkcz1iLGYucmVuZGVyaW5nPW51bGwsZi5yZW5kZXJpbmdTdGFydFRpbWU9MCxmLmxhc3Q9ZCxmLnRhaWw9YyxmLnRhaWxNb2RlPWUpfVxuZnVuY3Rpb24geWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5yZXZlYWxPcmRlcixmPWQudGFpbDtZaShhLGIsZC5jaGlsZHJlbixjKTtkPU0uY3VycmVudDtpZigwIT09KGQmMikpZD1kJjF8MixiLmZsYWdzfD0xMjg7ZWxzZXtpZihudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZ3aihhLGMsYik7ZWxzZSBpZigxOT09PWEudGFnKXdqKGEsYyxiKTtlbHNlIGlmKG51bGwhPT1hLmNoaWxkKXthLmNoaWxkLnJldHVybj1hO2E9YS5jaGlsZDtjb250aW51ZX1pZihhPT09YilicmVhayBhO2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8YS5yZXR1cm49PT1iKWJyZWFrIGE7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2E9YS5zaWJsaW5nfWQmPTF9RyhNLGQpO2lmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT1cbm51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSBcImZvcndhcmRzXCI6Yz1iLmNoaWxkO2ZvcihlPW51bGw7bnVsbCE9PWM7KWE9Yy5hbHRlcm5hdGUsbnVsbCE9PWEmJm51bGw9PT1NaChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO3hqKGIsITEsZSxjLGYpO2JyZWFrO2Nhc2UgXCJiYWNrd2FyZHNcIjpjPW51bGw7ZT1iLmNoaWxkO2ZvcihiLmNoaWxkPW51bGw7bnVsbCE9PWU7KXthPWUuYWx0ZXJuYXRlO2lmKG51bGwhPT1hJiZudWxsPT09TWgoYSkpe2IuY2hpbGQ9ZTticmVha31hPWUuc2libGluZztlLnNpYmxpbmc9YztjPWU7ZT1hfXhqKGIsITAsYyxudWxsLGYpO2JyZWFrO2Nhc2UgXCJ0b2dldGhlclwiOnhqKGIsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDpiLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGpqKGEsYil7MD09PShiLm1vZGUmMSkmJm51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT1udWxsLGIuZmxhZ3N8PTIpfWZ1bmN0aW9uICRpKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtoaHw9Yi5sYW5lcztpZigwPT09KGMmYi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbDtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IocCgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9d2goYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPXdoKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiB6aihhLGIsYyl7c3dpdGNoKGIudGFnKXtjYXNlIDM6bGooYik7SWcoKTticmVhaztjYXNlIDU6S2goYik7YnJlYWs7Y2FzZSAxOlpmKGIudHlwZSkmJmNnKGIpO2JyZWFrO2Nhc2UgNDpJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6dmFyIGQ9Yi50eXBlLl9jb250ZXh0LGU9Yi5tZW1vaXplZFByb3BzLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZTticmVhaztjYXNlIDEzOmQ9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kKXtpZihudWxsIT09ZC5kZWh5ZHJhdGVkKXJldHVybiBHKE0sTS5jdXJyZW50JjEpLGIuZmxhZ3N8PTEyOCxudWxsO2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBwaihhLGIsYyk7RyhNLE0uY3VycmVudCYxKTthPSRpKGEsYixjKTtyZXR1cm4gbnVsbCE9PWE/YS5zaWJsaW5nOm51bGx9RyhNLE0uY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJlxuYi5jaGlsZExhbmVzKTtpZigwIT09KGEuZmxhZ3MmMTI4KSl7aWYoZClyZXR1cm4geWooYSxiLGMpO2IuZmxhZ3N8PTEyOH1lPWIubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGUucmVuZGVyaW5nPW51bGwsZS50YWlsPW51bGwsZS5sYXN0RWZmZWN0PW51bGwpO0coTSxNLmN1cnJlbnQpO2lmKGQpYnJlYWs7ZWxzZSByZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGIubGFuZXM9MCxlaihhLGIsYyl9cmV0dXJuICRpKGEsYixjKX12YXIgQWosQmosQ2osRGo7XG5Baj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1iLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07Qmo9ZnVuY3Rpb24oKXt9O1xuQ2o9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5tZW1vaXplZFByb3BzO2lmKGUhPT1kKXthPWIuc3RhdGVOb2RlO0hoKEVoLmN1cnJlbnQpO3ZhciBmPW51bGw7c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOmU9WWEoYSxlKTtkPVlhKGEsZCk7Zj1bXTticmVhaztjYXNlIFwic2VsZWN0XCI6ZT1BKHt9LGUse3ZhbHVlOnZvaWQgMH0pO2Q9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtmPVtdO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmU9Z2IoYSxlKTtkPWdiKGEsZCk7Zj1bXTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLm9uQ2xpY2smJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXViKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGUpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmUuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWVbbF0paWYoXCJzdHlsZVwiPT09bCl7dmFyIGg9ZVtsXTtmb3IoZyBpbiBoKWguaGFzT3duUHJvcGVydHkoZykmJlxuKGN8fChjPXt9KSxjW2ddPVwiXCIpfWVsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sJiZcImNoaWxkcmVuXCIhPT1sJiZcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJlwiYXV0b0ZvY3VzXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/Znx8KGY9W10pOihmPWZ8fFtdKS5wdXNoKGwsbnVsbCkpO2ZvcihsIGluIGQpe3ZhciBrPWRbbF07aD1udWxsIT1lP2VbbF06dm9pZCAwO2lmKGQuaGFzT3duUHJvcGVydHkobCkmJmshPT1oJiYobnVsbCE9a3x8bnVsbCE9aCkpaWYoXCJzdHlsZVwiPT09bClpZihoKXtmb3IoZyBpbiBoKSFoLmhhc093blByb3BlcnR5KGcpfHxrJiZrLmhhc093blByb3BlcnR5KGcpfHwoY3x8KGM9e30pLGNbZ109XCJcIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGZ8fChmPVtdKSxmLnB1c2gobCxcbmMpKSxjPWs7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWw/KGs9az9rLl9faHRtbDp2b2lkIDAsaD1oP2guX19odG1sOnZvaWQgMCxudWxsIT1rJiZoIT09ayYmKGY9Znx8W10pLnB1c2gobCxrKSk6XCJjaGlsZHJlblwiPT09bD9cInN0cmluZ1wiIT09dHlwZW9mIGsmJlwibnVtYmVyXCIhPT10eXBlb2Yga3x8KGY9Znx8W10pLnB1c2gobCxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpPyhudWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1sJiZEKFwic2Nyb2xsXCIsYSksZnx8aD09PWt8fChmPVtdKSk6KGY9Znx8W10pLnB1c2gobCxrKSl9YyYmKGY9Znx8W10pLnB1c2goXCJzdHlsZVwiLGMpO3ZhciBsPWY7aWYoYi51cGRhdGVRdWV1ZT1sKWIuZmxhZ3N8PTR9fTtEaj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZCYmKGIuZmxhZ3N8PTQpfTtcbmZ1bmN0aW9uIEVqKGEsYil7aWYoIUkpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgXCJoaWRkZW5cIjpiPWEudGFpbDtmb3IodmFyIGM9bnVsbDtudWxsIT09YjspbnVsbCE9PWIuYWx0ZXJuYXRlJiYoYz1iKSxiPWIuc2libGluZztudWxsPT09Yz9hLnRhaWw9bnVsbDpjLnNpYmxpbmc9bnVsbDticmVhaztjYXNlIFwiY29sbGFwc2VkXCI6Yz1hLnRhaWw7Zm9yKHZhciBkPW51bGw7bnVsbCE9PWM7KW51bGwhPT1jLmFsdGVybmF0ZSYmKGQ9YyksYz1jLnNpYmxpbmc7bnVsbD09PWQ/Ynx8bnVsbD09PWEudGFpbD9hLnRhaWw9bnVsbDphLnRhaWwuc2libGluZz1udWxsOmQuc2libGluZz1udWxsfX1cbmZ1bmN0aW9uIFMoYSl7dmFyIGI9bnVsbCE9PWEuYWx0ZXJuYXRlJiZhLmFsdGVybmF0ZS5jaGlsZD09PWEuY2hpbGQsYz0wLGQ9MDtpZihiKWZvcih2YXIgZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyYxNDY4MDA2NCxkfD1lLmZsYWdzJjE0NjgwMDY0LGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7ZWxzZSBmb3IoZT1hLmNoaWxkO251bGwhPT1lOyljfD1lLmxhbmVzfGUuY2hpbGRMYW5lcyxkfD1lLnN1YnRyZWVGbGFncyxkfD1lLmZsYWdzLGUucmV0dXJuPWEsZT1lLnNpYmxpbmc7YS5zdWJ0cmVlRmxhZ3N8PWQ7YS5jaGlsZExhbmVzPWM7cmV0dXJuIGJ9XG5mdW5jdGlvbiBGaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHM7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDI6Y2FzZSAxNjpjYXNlIDE1OmNhc2UgMDpjYXNlIDExOmNhc2UgNzpjYXNlIDg6Y2FzZSAxMjpjYXNlIDk6Y2FzZSAxNDpyZXR1cm4gUyhiKSxudWxsO2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAzOmQ9Yi5zdGF0ZU5vZGU7SmgoKTtFKFdmKTtFKEgpO09oKCk7ZC5wZW5kaW5nQ29udGV4dCYmKGQuY29udGV4dD1kLnBlbmRpbmdDb250ZXh0LGQucGVuZGluZ0NvbnRleHQ9bnVsbCk7aWYobnVsbD09PWF8fG51bGw9PT1hLmNoaWxkKUdnKGIpP2IuZmxhZ3N8PTQ6bnVsbD09PWF8fGEubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PT0oYi5mbGFncyYyNTYpfHwoYi5mbGFnc3w9MTAyNCxudWxsIT09emcmJihHaih6Zyksemc9bnVsbCkpO0JqKGEsYik7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDU6TGgoYik7dmFyIGU9SGgoR2guY3VycmVudCk7XG5jPWIudHlwZTtpZihudWxsIT09YSYmbnVsbCE9Yi5zdGF0ZU5vZGUpQ2ooYSxiLGMsZCxlKSxhLnJlZiE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO1MoYik7cmV0dXJuIG51bGx9YT1IaChFaC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIudHlwZTt2YXIgZj1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtkW1BmXT1mO2E9MCE9PShiLm1vZGUmMSk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsZCk7RChcImNsb3NlXCIsZCk7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sZCk7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGQpO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuZCk7RChcImxvYWRcIixkKTticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixkKTticmVhaztjYXNlIFwiaW5wdXRcIjpaYShkLGYpO0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmQuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFmLm11bHRpcGxlfTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGQsZiksRChcImludmFsaWRcIixkKX11YihjLGYpO2U9bnVsbDtmb3IodmFyIGcgaW4gZilpZihmLmhhc093blByb3BlcnR5KGcpKXt2YXIgaD1mW2ddO1wiY2hpbGRyZW5cIj09PWc/XCJzdHJpbmdcIj09PXR5cGVvZiBoP2QudGV4dENvbnRlbnQhPT1oJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxoLGEpLGU9W1wiY2hpbGRyZW5cIixoXSk6XCJudW1iZXJcIj09PXR5cGVvZiBoJiZkLnRleHRDb250ZW50IT09XCJcIitoJiYoITAhPT1mLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC50ZXh0Q29udGVudCxcbmgsYSksZT1bXCJjaGlsZHJlblwiLFwiXCIraF0pOmVhLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1oJiZcIm9uU2Nyb2xsXCI9PT1nJiZEKFwic2Nyb2xsXCIsZCl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGQpO2RiKGQsZiwhMCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoZCk7amIoZCk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJvcHRpb25cIjpicmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9QmYpfWQ9ZTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hJiYoYT1rYihjKSk7XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP1wic2NyaXB0XCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudChcImRpdlwiKSxhLmlubmVySFRNTD1cIjxzY3JpcHQ+XFx4M2Mvc2NyaXB0PlwiLGE9YS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpKTpcblwic3RyaW5nXCI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLFwic2VsZWN0XCI9PT1jJiYoZz1hLGQubXVsdGlwbGU/Zy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW09mXT1iO2FbUGZdPWQ7QWooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2E6e2c9dmIoYyxkKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixhKTtEKFwiY2xvc2VcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlmcmFtZVwiOmNhc2UgXCJvYmplY3RcIjpjYXNlIFwiZW1iZWRcIjpEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGEpO2U9ZDticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbWdcIjpjYXNlIFwiaW1hZ2VcIjpjYXNlIFwibGlua1wiOkQoXCJlcnJvclwiLFxuYSk7RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGEsZCk7ZT1ZYShhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOmU9ZDticmVhaztjYXNlIFwic2VsZWN0XCI6YS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWQubXVsdGlwbGV9O2U9QSh7fSxkLHt2YWx1ZTp2b2lkIDB9KTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmhiKGEsZCk7ZT1nYihhLGQpO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7ZGVmYXVsdDplPWR9dWIoYyxlKTtoPWU7Zm9yKGYgaW4gaClpZihoLmhhc093blByb3BlcnR5KGYpKXt2YXIgaz1oW2ZdO1wic3R5bGVcIj09PWY/c2IoYSxrKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1mPyhrPWs/ay5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJm5iKGEsaykpOlwiY2hpbGRyZW5cIj09PWY/XCJzdHJpbmdcIj09PXR5cGVvZiBrPyhcInRleHRhcmVhXCIhPT1cbmN8fFwiXCIhPT1rKSYmb2IoYSxrKTpcIm51bWJlclwiPT09dHlwZW9mIGsmJm9iKGEsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09ZiYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWYmJlwiYXV0b0ZvY3VzXCIhPT1mJiYoZWEuaGFzT3duUHJvcGVydHkoZik/bnVsbCE9ayYmXCJvblNjcm9sbFwiPT09ZiYmRChcInNjcm9sbFwiLGEpOm51bGwhPWsmJnRhKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoYSk7ZGIoYSxkLCExKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShhKTtqYihhKTticmVhaztjYXNlIFwib3B0aW9uXCI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrU2EoZC52YWx1ZSkpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9mYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmZmIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsXG4hMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX1zd2l0Y2goYyl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjpkPSEhZC5hdXRvRm9jdXM7YnJlYWsgYTtjYXNlIFwiaW1nXCI6ZD0hMDticmVhayBhO2RlZmF1bHQ6ZD0hMX19ZCYmKGIuZmxhZ3N8PTQpfW51bGwhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKX1TKGIpO3JldHVybiBudWxsO2Nhc2UgNjppZihhJiZudWxsIT1iLnN0YXRlTm9kZSlEaihhLGIsYS5tZW1vaXplZFByb3BzLGQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtjPUhoKEdoLmN1cnJlbnQpO0hoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7aWYoZj1kLm5vZGVWYWx1ZSE9PWMpaWYoYT1cbnhnLG51bGwhPT1hKXN3aXRjaChhLnRhZyl7Y2FzZSAzOkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpO2JyZWFrO2Nhc2UgNTohMCE9PWEubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQubm9kZVZhbHVlLGMsMCE9PShhLm1vZGUmMSkpfWYmJihiLmZsYWdzfD00KX1lbHNlIGQ9KDk9PT1jLm5vZGVUeXBlP2M6Yy5vd25lckRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShkKSxkW09mXT1iLGIuc3RhdGVOb2RlPWR9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDEzOkUoTSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUuZGVoeWRyYXRlZCl7aWYoSSYmbnVsbCE9PXlnJiYwIT09KGIubW9kZSYxKSYmMD09PShiLmZsYWdzJjEyOCkpSGcoKSxJZygpLGIuZmxhZ3N8PTk4NTYwLGY9ITE7ZWxzZSBpZihmPUdnKGIpLG51bGwhPT1kJiZudWxsIT09ZC5kZWh5ZHJhdGVkKXtpZihudWxsPT09XG5hKXtpZighZil0aHJvdyBFcnJvcihwKDMxOCkpO2Y9Yi5tZW1vaXplZFN0YXRlO2Y9bnVsbCE9PWY/Zi5kZWh5ZHJhdGVkOm51bGw7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTcpKTtmW09mXT1ifWVsc2UgSWcoKSwwPT09KGIuZmxhZ3MmMTI4KSYmKGIubWVtb2l6ZWRTdGF0ZT1udWxsKSxiLmZsYWdzfD00O1MoYik7Zj0hMX1lbHNlIG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSxmPSEwO2lmKCFmKXJldHVybiBiLmZsYWdzJjY1NTM2P2I6bnVsbH1pZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtkIT09KG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlKSYmZCYmKGIuY2hpbGQuZmxhZ3N8PTgxOTIsMCE9PShiLm1vZGUmMSkmJihudWxsPT09YXx8MCE9PShNLmN1cnJlbnQmMSk/MD09PVQmJihUPTMpOnVqKCkpKTtudWxsIT09Yi51cGRhdGVRdWV1ZSYmKGIuZmxhZ3N8PTQpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLFxuQmooYSxiKSxudWxsPT09YSYmc2YoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksUyhiKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFJnKGIudHlwZS5fY29udGV4dCksUyhiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMTk6RShNKTtmPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09ZilyZXR1cm4gUyhiKSxudWxsO2Q9MCE9PShiLmZsYWdzJjEyOCk7Zz1mLnJlbmRlcmluZztpZihudWxsPT09ZylpZihkKUVqKGYsITEpO2Vsc2V7aWYoMCE9PVR8fG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7Zz1NaChhKTtpZihudWxsIT09Zyl7Yi5mbGFnc3w9MTI4O0VqKGYsITEpO2Q9Zy51cGRhdGVRdWV1ZTtudWxsIT09ZCYmKGIudXBkYXRlUXVldWU9ZCxiLmZsYWdzfD00KTtiLnN1YnRyZWVGbGFncz0wO2Q9Yztmb3IoYz1iLmNoaWxkO251bGwhPT1jOylmPWMsYT1kLGYuZmxhZ3MmPTE0NjgwMDY2LFxuZz1mLmFsdGVybmF0ZSxudWxsPT09Zz8oZi5jaGlsZExhbmVzPTAsZi5sYW5lcz1hLGYuY2hpbGQ9bnVsbCxmLnN1YnRyZWVGbGFncz0wLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9Zy5sYW5lcyxmLmNoaWxkPWcuY2hpbGQsZi5zdWJ0cmVlRmxhZ3M9MCxmLmRlbGV0aW9ucz1udWxsLGYubWVtb2l6ZWRQcm9wcz1nLm1lbW9pemVkUHJvcHMsZi5tZW1vaXplZFN0YXRlPWcubWVtb2l6ZWRTdGF0ZSxmLnVwZGF0ZVF1ZXVlPWcudXBkYXRlUXVldWUsZi50eXBlPWcudHlwZSxhPWcuZGVwZW5kZW5jaWVzLGYuZGVwZW5kZW5jaWVzPW51bGw9PT1hP251bGw6e2xhbmVzOmEubGFuZXMsZmlyc3RDb250ZXh0OmEuZmlyc3RDb250ZXh0fSksYz1jLnNpYmxpbmc7RyhNLE0uY3VycmVudCYxfDIpO3JldHVybiBiLmNoaWxkfWE9XG5hLnNpYmxpbmd9bnVsbCE9PWYudGFpbCYmQigpPkhqJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRWooZiwhMSksYi5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFkKWlmKGE9TWgoZyksbnVsbCE9PWEpe2lmKGIuZmxhZ3N8PTEyOCxkPSEwLGM9YS51cGRhdGVRdWV1ZSxudWxsIT09YyYmKGIudXBkYXRlUXVldWU9YyxiLmZsYWdzfD00KSxFaihmLCEwKSxudWxsPT09Zi50YWlsJiZcImhpZGRlblwiPT09Zi50YWlsTW9kZSYmIWcuYWx0ZXJuYXRlJiYhSSlyZXR1cm4gUyhiKSxudWxsfWVsc2UgMipCKCktZi5yZW5kZXJpbmdTdGFydFRpbWU+SGomJjEwNzM3NDE4MjQhPT1jJiYoYi5mbGFnc3w9MTI4LGQ9ITAsRWooZiwhMSksYi5sYW5lcz00MTk0MzA0KTtmLmlzQmFja3dhcmRzPyhnLnNpYmxpbmc9Yi5jaGlsZCxiLmNoaWxkPWcpOihjPWYubGFzdCxudWxsIT09Yz9jLnNpYmxpbmc9ZzpiLmNoaWxkPWcsZi5sYXN0PWcpfWlmKG51bGwhPT1mLnRhaWwpcmV0dXJuIGI9Zi50YWlsLGYucmVuZGVyaW5nPVxuYixmLnRhaWw9Yi5zaWJsaW5nLGYucmVuZGVyaW5nU3RhcnRUaW1lPUIoKSxiLnNpYmxpbmc9bnVsbCxjPU0uY3VycmVudCxHKE0sZD9jJjF8MjpjJjEpLGI7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIElqKCksZD1udWxsIT09Yi5tZW1vaXplZFN0YXRlLG51bGwhPT1hJiZudWxsIT09YS5tZW1vaXplZFN0YXRlIT09ZCYmKGIuZmxhZ3N8PTgxOTIpLGQmJjAhPT0oYi5tb2RlJjEpPzAhPT0oZ2omMTA3Mzc0MTgyNCkmJihTKGIpLGIuc3VidHJlZUZsYWdzJjYmJihiLmZsYWdzfD04MTkyKSk6UyhiKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7Y2FzZSAyNTpyZXR1cm4gbnVsbH10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO31cbmZ1bmN0aW9uIEpqKGEsYil7d2coYik7c3dpdGNoKGIudGFnKXtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksYT1iLmZsYWdzLGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAzOnJldHVybiBKaCgpLEUoV2YpLEUoSCksT2goKSxhPWIuZmxhZ3MsMCE9PShhJjY1NTM2KSYmMD09PShhJjEyOCk/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSA1OnJldHVybiBMaChiKSxudWxsO2Nhc2UgMTM6RShNKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7aWYobnVsbD09PWIuYWx0ZXJuYXRlKXRocm93IEVycm9yKHAoMzQwKSk7SWcoKX1hPWIuZmxhZ3M7cmV0dXJuIGEmNjU1MzY/KGIuZmxhZ3M9YSYtNjU1Mzd8MTI4LGIpOm51bGw7Y2FzZSAxOTpyZXR1cm4gRShNKSxudWxsO2Nhc2UgNDpyZXR1cm4gSmgoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIFJnKGIudHlwZS5fY29udGV4dCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIElqKCksXG5udWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIEtqPSExLFU9ITEsTGo9XCJmdW5jdGlvblwiPT09dHlwZW9mIFdlYWtTZXQ/V2Vha1NldDpTZXQsVj1udWxsO2Z1bmN0aW9uIE1qKGEsYil7dmFyIGM9YS5yZWY7aWYobnVsbCE9PWMpaWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMpdHJ5e2MobnVsbCl9Y2F0Y2goZCl7VyhhLGIsZCl9ZWxzZSBjLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBOaihhLGIsYyl7dHJ5e2MoKX1jYXRjaChkKXtXKGEsYixkKX19dmFyIE9qPSExO1xuZnVuY3Rpb24gUGooYSxiKXtDZj1kZDthPU1lKCk7aWYoTmUoYSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGEpdmFyIGM9e3N0YXJ0OmEuc2VsZWN0aW9uU3RhcnQsZW5kOmEuc2VsZWN0aW9uRW5kfTtlbHNlIGE6e2M9KGM9YS5vd25lckRvY3VtZW50KSYmYy5kZWZhdWx0Vmlld3x8d2luZG93O3ZhciBkPWMuZ2V0U2VsZWN0aW9uJiZjLmdldFNlbGVjdGlvbigpO2lmKGQmJjAhPT1kLnJhbmdlQ291bnQpe2M9ZC5hbmNob3JOb2RlO3ZhciBlPWQuYW5jaG9yT2Zmc2V0LGY9ZC5mb2N1c05vZGU7ZD1kLmZvY3VzT2Zmc2V0O3RyeXtjLm5vZGVUeXBlLGYubm9kZVR5cGV9Y2F0Y2goRil7Yz1udWxsO2JyZWFrIGF9dmFyIGc9MCxoPS0xLGs9LTEsbD0wLG09MCxxPWEscj1udWxsO2I6Zm9yKDs7KXtmb3IodmFyIHk7Oyl7cSE9PWN8fDAhPT1lJiYzIT09cS5ub2RlVHlwZXx8KGg9ZytlKTtxIT09Znx8MCE9PWQmJjMhPT1xLm5vZGVUeXBlfHwoaz1nK2QpOzM9PT1xLm5vZGVUeXBlJiYoZys9XG5xLm5vZGVWYWx1ZS5sZW5ndGgpO2lmKG51bGw9PT0oeT1xLmZpcnN0Q2hpbGQpKWJyZWFrO3I9cTtxPXl9Zm9yKDs7KXtpZihxPT09YSlicmVhayBiO3I9PT1jJiYrK2w9PT1lJiYoaD1nKTtyPT09ZiYmKyttPT09ZCYmKGs9Zyk7aWYobnVsbCE9PSh5PXEubmV4dFNpYmxpbmcpKWJyZWFrO3E9cjtyPXEucGFyZW50Tm9kZX1xPXl9Yz0tMT09PWh8fC0xPT09az9udWxsOntzdGFydDpoLGVuZDprfX1lbHNlIGM9bnVsbH1jPWN8fHtzdGFydDowLGVuZDowfX1lbHNlIGM9bnVsbDtEZj17Zm9jdXNlZEVsZW06YSxzZWxlY3Rpb25SYW5nZTpjfTtkZD0hMTtmb3IoVj1iO251bGwhPT1WOylpZihiPVYsYT1iLmNoaWxkLDAhPT0oYi5zdWJ0cmVlRmxhZ3MmMTAyOCkmJm51bGwhPT1hKWEucmV0dXJuPWIsVj1hO2Vsc2UgZm9yKDtudWxsIT09Vjspe2I9Vjt0cnl7dmFyIG49Yi5hbHRlcm5hdGU7aWYoMCE9PShiLmZsYWdzJjEwMjQpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpicmVhaztcbmNhc2UgMTppZihudWxsIT09bil7dmFyIHQ9bi5tZW1vaXplZFByb3BzLEo9bi5tZW1vaXplZFN0YXRlLHg9Yi5zdGF0ZU5vZGUsdz14LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKGIuZWxlbWVudFR5cGU9PT1iLnR5cGU/dDpMZyhiLnR5cGUsdCksSik7eC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT13fWJyZWFrO2Nhc2UgMzp2YXIgdT1iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOzE9PT11Lm5vZGVUeXBlP3UudGV4dENvbnRlbnQ9XCJcIjo5PT09dS5ub2RlVHlwZSYmdS5kb2N1bWVudEVsZW1lbnQmJnUucmVtb3ZlQ2hpbGQodS5kb2N1bWVudEVsZW1lbnQpO2JyZWFrO2Nhc2UgNTpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO319Y2F0Y2goRil7VyhiLGIucmV0dXJuLEYpfWE9Yi5zaWJsaW5nO2lmKG51bGwhPT1hKXthLnJldHVybj1iLnJldHVybjtWPWE7YnJlYWt9Vj1iLnJldHVybn1uPU9qO09qPSExO3JldHVybiBufVxuZnVuY3Rpb24gUWooYSxiLGMpe3ZhciBkPWIudXBkYXRlUXVldWU7ZD1udWxsIT09ZD9kLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09ZCl7dmFyIGU9ZD1kLm5leHQ7ZG97aWYoKGUudGFnJmEpPT09YSl7dmFyIGY9ZS5kZXN0cm95O2UuZGVzdHJveT12b2lkIDA7dm9pZCAwIT09ZiYmTmooYixjLGYpfWU9ZS5uZXh0fXdoaWxlKGUhPT1kKX19ZnVuY3Rpb24gUmooYSxiKXtiPWIudXBkYXRlUXVldWU7Yj1udWxsIT09Yj9iLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09Yil7dmFyIGM9Yj1iLm5leHQ7ZG97aWYoKGMudGFnJmEpPT09YSl7dmFyIGQ9Yy5jcmVhdGU7Yy5kZXN0cm95PWQoKX1jPWMubmV4dH13aGlsZShjIT09Yil9fWZ1bmN0aW9uIFNqKGEpe3ZhciBiPWEucmVmO2lmKG51bGwhPT1iKXt2YXIgYz1hLnN0YXRlTm9kZTtzd2l0Y2goYS50YWcpe2Nhc2UgNTphPWM7YnJlYWs7ZGVmYXVsdDphPWN9XCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YihhKTpiLmN1cnJlbnQ9YX19XG5mdW5jdGlvbiBUaihhKXt2YXIgYj1hLmFsdGVybmF0ZTtudWxsIT09YiYmKGEuYWx0ZXJuYXRlPW51bGwsVGooYikpO2EuY2hpbGQ9bnVsbDthLmRlbGV0aW9ucz1udWxsO2Euc2libGluZz1udWxsOzU9PT1hLnRhZyYmKGI9YS5zdGF0ZU5vZGUsbnVsbCE9PWImJihkZWxldGUgYltPZl0sZGVsZXRlIGJbUGZdLGRlbGV0ZSBiW29mXSxkZWxldGUgYltRZl0sZGVsZXRlIGJbUmZdKSk7YS5zdGF0ZU5vZGU9bnVsbDthLnJldHVybj1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5tZW1vaXplZFByb3BzPW51bGw7YS5tZW1vaXplZFN0YXRlPW51bGw7YS5wZW5kaW5nUHJvcHM9bnVsbDthLnN0YXRlTm9kZT1udWxsO2EudXBkYXRlUXVldWU9bnVsbH1mdW5jdGlvbiBVaihhKXtyZXR1cm4gNT09PWEudGFnfHwzPT09YS50YWd8fDQ9PT1hLnRhZ31cbmZ1bmN0aW9uIFZqKGEpe2E6Zm9yKDs7KXtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fFVqKGEucmV0dXJuKSlyZXR1cm4gbnVsbDthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47Zm9yKGE9YS5zaWJsaW5nOzUhPT1hLnRhZyYmNiE9PWEudGFnJiYxOCE9PWEudGFnOyl7aWYoYS5mbGFncyYyKWNvbnRpbnVlIGE7aWYobnVsbD09PWEuY2hpbGR8fDQ9PT1hLnRhZyljb250aW51ZSBhO2Vsc2UgYS5jaGlsZC5yZXR1cm49YSxhPWEuY2hpbGR9aWYoIShhLmZsYWdzJjIpKXJldHVybiBhLnN0YXRlTm9kZX19XG5mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj84PT09Yy5ub2RlVHlwZT9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yy5pbnNlcnRCZWZvcmUoYSxiKTooOD09PWMubm9kZVR5cGU/KGI9Yy5wYXJlbnROb2RlLGIuaW5zZXJ0QmVmb3JlKGEsYykpOihiPWMsYi5hcHBlbmRDaGlsZChhKSksYz1jLl9yZWFjdFJvb3RDb250YWluZXIsbnVsbCE9PWMmJnZvaWQgMCE9PWN8fG51bGwhPT1iLm9uY2xpY2t8fChiLm9uY2xpY2s9QmYpKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoV2ooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylXaihhLGIsYyksYT1hLnNpYmxpbmd9XG5mdW5jdGlvbiBYaihhLGIsYyl7dmFyIGQ9YS50YWc7aWYoNT09PWR8fDY9PT1kKWE9YS5zdGF0ZU5vZGUsYj9jLmluc2VydEJlZm9yZShhLGIpOmMuYXBwZW5kQ2hpbGQoYSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFhqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspWGooYSxiLGMpLGE9YS5zaWJsaW5nfXZhciBYPW51bGwsWWo9ITE7ZnVuY3Rpb24gWmooYSxiLGMpe2ZvcihjPWMuY2hpbGQ7bnVsbCE9PWM7KWFrKGEsYixjKSxjPWMuc2libGluZ31cbmZ1bmN0aW9uIGFrKGEsYixjKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtsYy5vbkNvbW1pdEZpYmVyVW5tb3VudChrYyxjKX1jYXRjaChoKXt9c3dpdGNoKGMudGFnKXtjYXNlIDU6VXx8TWooYyxiKTtjYXNlIDY6dmFyIGQ9WCxlPVlqO1g9bnVsbDtaaihhLGIsYyk7WD1kO1lqPWU7bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpOmEucmVtb3ZlQ2hpbGQoYykpOlgucmVtb3ZlQ2hpbGQoYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4Om51bGwhPT1YJiYoWWo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP0tmKGEucGFyZW50Tm9kZSxjKToxPT09YS5ub2RlVHlwZSYmS2YoYSxjKSxiZChhKSk6S2YoWCxjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpkPVg7ZT1ZajtYPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7XG5aaihhLGIsYyk7WD1kO1lqPWU7YnJlYWs7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmlmKCFVJiYoZD1jLnVwZGF0ZVF1ZXVlLG51bGwhPT1kJiYoZD1kLmxhc3RFZmZlY3QsbnVsbCE9PWQpKSl7ZT1kPWQubmV4dDtkb3t2YXIgZj1lLGc9Zi5kZXN0cm95O2Y9Zi50YWc7dm9pZCAwIT09ZyYmKDAhPT0oZiYyKT9OaihjLGIsZyk6MCE9PShmJjQpJiZOaihjLGIsZykpO2U9ZS5uZXh0fXdoaWxlKGUhPT1kKX1aaihhLGIsYyk7YnJlYWs7Y2FzZSAxOmlmKCFVJiYoTWooYyxiKSxkPWMuc3RhdGVOb2RlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudFdpbGxVbm1vdW50KSl0cnl7ZC5wcm9wcz1jLm1lbW9pemVkUHJvcHMsZC5zdGF0ZT1jLm1lbW9pemVkU3RhdGUsZC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGgpe1coYyxiLGgpfVpqKGEsYixjKTticmVhaztjYXNlIDIxOlpqKGEsYixjKTticmVhaztjYXNlIDIyOmMubW9kZSYxPyhVPShkPVUpfHxudWxsIT09XG5jLm1lbW9pemVkU3RhdGUsWmooYSxiLGMpLFU9ZCk6WmooYSxiLGMpO2JyZWFrO2RlZmF1bHQ6WmooYSxiLGMpfX1mdW5jdGlvbiBiayhhKXt2YXIgYj1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1iKXthLnVwZGF0ZVF1ZXVlPW51bGw7dmFyIGM9YS5zdGF0ZU5vZGU7bnVsbD09PWMmJihjPWEuc3RhdGVOb2RlPW5ldyBMaik7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWNrLmJpbmQobnVsbCxhLGIpO2MuaGFzKGIpfHwoYy5hZGQoYiksYi50aGVuKGQsZCkpfSl9fVxuZnVuY3Rpb24gZGsoYSxiKXt2YXIgYz1iLmRlbGV0aW9ucztpZihudWxsIT09Yylmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTt0cnl7dmFyIGY9YSxnPWIsaD1nO2E6Zm9yKDtudWxsIT09aDspe3N3aXRjaChoLnRhZyl7Y2FzZSA1Olg9aC5zdGF0ZU5vZGU7WWo9ITE7YnJlYWsgYTtjYXNlIDM6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGE7Y2FzZSA0Olg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDticmVhayBhfWg9aC5yZXR1cm59aWYobnVsbD09PVgpdGhyb3cgRXJyb3IocCgxNjApKTthayhmLGcsZSk7WD1udWxsO1lqPSExO3ZhciBrPWUuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5yZXR1cm49bnVsbCk7ZS5yZXR1cm49bnVsbH1jYXRjaChsKXtXKGUsYixsKX19aWYoYi5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKGI9Yi5jaGlsZDtudWxsIT09YjspZWsoYixhKSxiPWIuc2libGluZ31cbmZ1bmN0aW9uIGVrKGEsYil7dmFyIGM9YS5hbHRlcm5hdGUsZD1hLmZsYWdzO3N3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXt0cnl7UWooMyxhLGEucmV0dXJuKSxSaigzLGEpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX10cnl7UWooNSxhLGEucmV0dXJuKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMTpkayhiLGEpO2ZrKGEpO2QmNTEyJiZudWxsIT09YyYmTWooYyxjLnJldHVybik7YnJlYWs7Y2FzZSA1OmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTtpZihhLmZsYWdzJjMyKXt2YXIgZT1hLnN0YXRlTm9kZTt0cnl7b2IoZSxcIlwiKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWlmKGQmNCYmKGU9YS5zdGF0ZU5vZGUsbnVsbCE9ZSkpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcyxnPW51bGwhPT1jP2MubWVtb2l6ZWRQcm9wczpmLGg9YS50eXBlLGs9YS51cGRhdGVRdWV1ZTtcbmEudXBkYXRlUXVldWU9bnVsbDtpZihudWxsIT09ayl0cnl7XCJpbnB1dFwiPT09aCYmXCJyYWRpb1wiPT09Zi50eXBlJiZudWxsIT1mLm5hbWUmJmFiKGUsZik7dmIoaCxnKTt2YXIgbD12YihoLGYpO2ZvcihnPTA7ZzxrLmxlbmd0aDtnKz0yKXt2YXIgbT1rW2ddLHE9a1tnKzFdO1wic3R5bGVcIj09PW0/c2IoZSxxKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1tP25iKGUscSk6XCJjaGlsZHJlblwiPT09bT9vYihlLHEpOnRhKGUsbSxxLGwpfXN3aXRjaChoKXtjYXNlIFwiaW5wdXRcIjpiYihlLGYpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGUsZik7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOnZhciByPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFmLm11bHRpcGxlO3ZhciB5PWYudmFsdWU7bnVsbCE9eT9mYihlLCEhZi5tdWx0aXBsZSx5LCExKTpyIT09ISFmLm11bHRpcGxlJiYobnVsbCE9Zi5kZWZhdWx0VmFsdWU/ZmIoZSwhIWYubXVsdGlwbGUsXG5mLmRlZmF1bHRWYWx1ZSwhMCk6ZmIoZSwhIWYubXVsdGlwbGUsZi5tdWx0aXBsZT9bXTpcIlwiLCExKSl9ZVtQZl09Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgNjpkayhiLGEpO2ZrKGEpO2lmKGQmNCl7aWYobnVsbD09PWEuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTYyKSk7ZT1hLnN0YXRlTm9kZTtmPWEubWVtb2l6ZWRQcm9wczt0cnl7ZS5ub2RlVmFsdWU9Zn1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWJyZWFrO2Nhc2UgMzpkayhiLGEpO2ZrKGEpO2lmKGQmNCYmbnVsbCE9PWMmJmMubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e2JkKGIuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfWJyZWFrO2Nhc2UgNDpkayhiLGEpO2ZrKGEpO2JyZWFrO2Nhc2UgMTM6ZGsoYixhKTtmayhhKTtlPWEuY2hpbGQ7ZS5mbGFncyY4MTkyJiYoZj1udWxsIT09ZS5tZW1vaXplZFN0YXRlLGUuc3RhdGVOb2RlLmlzSGlkZGVuPWYsIWZ8fFxubnVsbCE9PWUuYWx0ZXJuYXRlJiZudWxsIT09ZS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZXx8KGdrPUIoKSkpO2QmNCYmYmsoYSk7YnJlYWs7Y2FzZSAyMjptPW51bGwhPT1jJiZudWxsIT09Yy5tZW1vaXplZFN0YXRlO2EubW9kZSYxPyhVPShsPVUpfHxtLGRrKGIsYSksVT1sKTpkayhiLGEpO2ZrKGEpO2lmKGQmODE5Mil7bD1udWxsIT09YS5tZW1vaXplZFN0YXRlO2lmKChhLnN0YXRlTm9kZS5pc0hpZGRlbj1sKSYmIW0mJjAhPT0oYS5tb2RlJjEpKWZvcihWPWEsbT1hLmNoaWxkO251bGwhPT1tOyl7Zm9yKHE9Vj1tO251bGwhPT1WOyl7cj1WO3k9ci5jaGlsZDtzd2l0Y2goci50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpRaig0LHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMTpNaihyLHIucmV0dXJuKTt2YXIgbj1yLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbi5jb21wb25lbnRXaWxsVW5tb3VudCl7ZD1yO2M9ci5yZXR1cm47dHJ5e2I9ZCxuLnByb3BzPVxuYi5tZW1vaXplZFByb3BzLG4uc3RhdGU9Yi5tZW1vaXplZFN0YXRlLG4uY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh0KXtXKGQsYyx0KX19YnJlYWs7Y2FzZSA1Ok1qKHIsci5yZXR1cm4pO2JyZWFrO2Nhc2UgMjI6aWYobnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSl7aGsocSk7Y29udGludWV9fW51bGwhPT15Pyh5LnJldHVybj1yLFY9eSk6aGsocSl9bT1tLnNpYmxpbmd9YTpmb3IobT1udWxsLHE9YTs7KXtpZig1PT09cS50YWcpe2lmKG51bGw9PT1tKXttPXE7dHJ5e2U9cS5zdGF0ZU5vZGUsbD8oZj1lLnN0eWxlLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLnNldFByb3BlcnR5P2Yuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJub25lXCIsXCJpbXBvcnRhbnRcIik6Zi5kaXNwbGF5PVwibm9uZVwiKTooaD1xLnN0YXRlTm9kZSxrPXEubWVtb2l6ZWRQcm9wcy5zdHlsZSxnPXZvaWQgMCE9PWsmJm51bGwhPT1rJiZrLmhhc093blByb3BlcnR5KFwiZGlzcGxheVwiKT9rLmRpc3BsYXk6bnVsbCxoLnN0eWxlLmRpc3BsYXk9XG5yYihcImRpc3BsYXlcIixnKSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX19ZWxzZSBpZig2PT09cS50YWcpe2lmKG51bGw9PT1tKXRyeXtxLnN0YXRlTm9kZS5ub2RlVmFsdWU9bD9cIlwiOnEubWVtb2l6ZWRQcm9wc31jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fWVsc2UgaWYoKDIyIT09cS50YWcmJjIzIT09cS50YWd8fG51bGw9PT1xLm1lbW9pemVkU3RhdGV8fHE9PT1hKSYmbnVsbCE9PXEuY2hpbGQpe3EuY2hpbGQucmV0dXJuPXE7cT1xLmNoaWxkO2NvbnRpbnVlfWlmKHE9PT1hKWJyZWFrIGE7Zm9yKDtudWxsPT09cS5zaWJsaW5nOyl7aWYobnVsbD09PXEucmV0dXJufHxxLnJldHVybj09PWEpYnJlYWsgYTttPT09cSYmKG09bnVsbCk7cT1xLnJldHVybn1tPT09cSYmKG09bnVsbCk7cS5zaWJsaW5nLnJldHVybj1xLnJldHVybjtxPXEuc2libGluZ319YnJlYWs7Y2FzZSAxOTpkayhiLGEpO2ZrKGEpO2QmNCYmYmsoYSk7YnJlYWs7Y2FzZSAyMTpicmVhaztkZWZhdWx0OmRrKGIsXG5hKSxmayhhKX19ZnVuY3Rpb24gZmsoYSl7dmFyIGI9YS5mbGFncztpZihiJjIpe3RyeXthOntmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZihVaihjKSl7dmFyIGQ9YzticmVhayBhfWM9Yy5yZXR1cm59dGhyb3cgRXJyb3IocCgxNjApKTt9c3dpdGNoKGQudGFnKXtjYXNlIDU6dmFyIGU9ZC5zdGF0ZU5vZGU7ZC5mbGFncyYzMiYmKG9iKGUsXCJcIiksZC5mbGFncyY9LTMzKTt2YXIgZj1WaihhKTtYaihhLGYsZSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgZz1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGg9VmooYSk7V2ooYSxoLGcpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjEpKTt9fWNhdGNoKGspe1coYSxhLnJldHVybixrKX1hLmZsYWdzJj0tM31iJjQwOTYmJihhLmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gaWsoYSxiLGMpe1Y9YTtqayhhLGIsYyl9XG5mdW5jdGlvbiBqayhhLGIsYyl7Zm9yKHZhciBkPTAhPT0oYS5tb2RlJjEpO251bGwhPT1WOyl7dmFyIGU9VixmPWUuY2hpbGQ7aWYoMjI9PT1lLnRhZyYmZCl7dmFyIGc9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZXx8S2o7aWYoIWcpe3ZhciBoPWUuYWx0ZXJuYXRlLGs9bnVsbCE9PWgmJm51bGwhPT1oLm1lbW9pemVkU3RhdGV8fFU7aD1Lajt2YXIgbD1VO0tqPWc7aWYoKFU9aykmJiFsKWZvcihWPWU7bnVsbCE9PVY7KWc9VixrPWcuY2hpbGQsMjI9PT1nLnRhZyYmbnVsbCE9PWcubWVtb2l6ZWRTdGF0ZT9rayhlKTpudWxsIT09az8oay5yZXR1cm49ZyxWPWspOmtrKGUpO2Zvcig7bnVsbCE9PWY7KVY9ZixqayhmLGIsYyksZj1mLnNpYmxpbmc7Vj1lO0tqPWg7VT1sfWxrKGEsYixjKX1lbHNlIDAhPT0oZS5zdWJ0cmVlRmxhZ3MmODc3MikmJm51bGwhPT1mPyhmLnJldHVybj1lLFY9Zik6bGsoYSxiLGMpfX1cbmZ1bmN0aW9uIGxrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKDAhPT0oYi5mbGFncyY4NzcyKSl7dmFyIGM9Yi5hbHRlcm5hdGU7dHJ5e2lmKDAhPT0oYi5mbGFncyY4NzcyKSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6VXx8UmooNSxiKTticmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoYi5mbGFncyY0JiYhVSlpZihudWxsPT09YylkLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgZT1iLmVsZW1lbnRUeXBlPT09Yi50eXBlP2MubWVtb2l6ZWRQcm9wczpMZyhiLnR5cGUsYy5tZW1vaXplZFByb3BzKTtkLmNvbXBvbmVudERpZFVwZGF0ZShlLGMubWVtb2l6ZWRTdGF0ZSxkLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX12YXIgZj1iLnVwZGF0ZVF1ZXVlO251bGwhPT1mJiZpaChiLGYsZCk7YnJlYWs7Y2FzZSAzOnZhciBnPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWcpe2M9bnVsbDtpZihudWxsIT09Yi5jaGlsZClzd2l0Y2goYi5jaGlsZC50YWcpe2Nhc2UgNTpjPVxuYi5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOmM9Yi5jaGlsZC5zdGF0ZU5vZGV9aWgoYixnLGMpfWJyZWFrO2Nhc2UgNTp2YXIgaD1iLnN0YXRlTm9kZTtpZihudWxsPT09YyYmYi5mbGFncyY0KXtjPWg7dmFyIGs9Yi5tZW1vaXplZFByb3BzO3N3aXRjaChiLnR5cGUpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ay5hdXRvRm9jdXMmJmMuZm9jdXMoKTticmVhaztjYXNlIFwiaW1nXCI6ay5zcmMmJihjLnNyYz1rLnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKG51bGw9PT1iLm1lbW9pemVkU3RhdGUpe3ZhciBsPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1sKXt2YXIgbT1sLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW0pe3ZhciBxPW0uZGVoeWRyYXRlZDtudWxsIT09cSYmYmQocSl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztcbmRlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9VXx8Yi5mbGFncyY1MTImJlNqKGIpfWNhdGNoKHIpe1coYixiLnJldHVybixyKX19aWYoYj09PWEpe1Y9bnVsbDticmVha31jPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fWZ1bmN0aW9uIGhrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO2lmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19XG5mdW5jdGlvbiBrayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9Vjt0cnl7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBjPWIucmV0dXJuO3RyeXtSaig0LGIpfWNhdGNoKGspe1coYixjLGspfWJyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRNb3VudCl7dmFyIGU9Yi5yZXR1cm47dHJ5e2QuY29tcG9uZW50RGlkTW91bnQoKX1jYXRjaChrKXtXKGIsZSxrKX19dmFyIGY9Yi5yZXR1cm47dHJ5e1NqKGIpfWNhdGNoKGspe1coYixmLGspfWJyZWFrO2Nhc2UgNTp2YXIgZz1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGcsayl9fX1jYXRjaChrKXtXKGIsYi5yZXR1cm4sayl9aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgaD1iLnNpYmxpbmc7aWYobnVsbCE9PWgpe2gucmV0dXJuPWIucmV0dXJuO1Y9aDticmVha31WPWIucmV0dXJufX1cbnZhciBtaz1NYXRoLmNlaWwsbms9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixvaz11YS5SZWFjdEN1cnJlbnRPd25lcixwaz11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxLPTAsUj1udWxsLFk9bnVsbCxaPTAsZ2o9MCxmaj1VZigwKSxUPTAscWs9bnVsbCxoaD0wLHJrPTAsc2s9MCx0az1udWxsLHVrPW51bGwsZ2s9MCxIaj1JbmZpbml0eSx2az1udWxsLFBpPSExLFFpPW51bGwsU2k9bnVsbCx3az0hMSx4az1udWxsLHlrPTAsems9MCxBaz1udWxsLEJrPS0xLENrPTA7ZnVuY3Rpb24gTCgpe3JldHVybiAwIT09KEsmNik/QigpOi0xIT09Qms/Qms6Qms9QigpfVxuZnVuY3Rpb24gbGgoYSl7aWYoMD09PShhLm1vZGUmMSkpcmV0dXJuIDE7aWYoMCE9PShLJjIpJiYwIT09WilyZXR1cm4gWiYtWjtpZihudWxsIT09S2cudHJhbnNpdGlvbilyZXR1cm4gMD09PUNrJiYoQ2s9eWMoKSksQ2s7YT1DO2lmKDAhPT1hKXJldHVybiBhO2E9d2luZG93LmV2ZW50O2E9dm9pZCAwPT09YT8xNjpqZChhLnR5cGUpO3JldHVybiBhfWZ1bmN0aW9uIG1oKGEsYixjLGQpe2lmKDUwPHprKXRocm93IHprPTAsQWs9bnVsbCxFcnJvcihwKDE4NSkpO0FjKGEsYyxkKTtpZigwPT09KEsmMil8fGEhPT1SKWE9PT1SJiYoMD09PShLJjIpJiYocmt8PWMpLDQ9PT1UJiZEayhhLFopKSxFayhhLGQpLDE9PT1jJiYwPT09SyYmMD09PShiLm1vZGUmMSkmJihIaj1CKCkrNTAwLGZnJiZqZygpKX1cbmZ1bmN0aW9uIEVrKGEsYil7dmFyIGM9YS5jYWxsYmFja05vZGU7d2MoYSxiKTt2YXIgZD11YyhhLGE9PT1SP1o6MCk7aWYoMD09PWQpbnVsbCE9PWMmJmJjKGMpLGEuY2FsbGJhY2tOb2RlPW51bGwsYS5jYWxsYmFja1ByaW9yaXR5PTA7ZWxzZSBpZihiPWQmLWQsYS5jYWxsYmFja1ByaW9yaXR5IT09Yil7bnVsbCE9YyYmYmMoYyk7aWYoMT09PWIpMD09PWEudGFnP2lnKEZrLmJpbmQobnVsbCxhKSk6aGcoRmsuYmluZChudWxsLGEpKSxKZihmdW5jdGlvbigpezA9PT0oSyY2KSYmamcoKX0pLGM9bnVsbDtlbHNle3N3aXRjaChEYyhkKSl7Y2FzZSAxOmM9ZmM7YnJlYWs7Y2FzZSA0OmM9Z2M7YnJlYWs7Y2FzZSAxNjpjPWhjO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmM9amM7YnJlYWs7ZGVmYXVsdDpjPWhjfWM9R2soYyxIay5iaW5kKG51bGwsYSkpfWEuY2FsbGJhY2tQcmlvcml0eT1iO2EuY2FsbGJhY2tOb2RlPWN9fVxuZnVuY3Rpb24gSGsoYSxiKXtCaz0tMTtDaz0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO3ZhciBjPWEuY2FsbGJhY2tOb2RlO2lmKElrKCkmJmEuY2FsbGJhY2tOb2RlIT09YylyZXR1cm4gbnVsbDt2YXIgZD11YyhhLGE9PT1SP1o6MCk7aWYoMD09PWQpcmV0dXJuIG51bGw7aWYoMCE9PShkJjMwKXx8MCE9PShkJmEuZXhwaXJlZExhbmVzKXx8YiliPUprKGEsZCk7ZWxzZXtiPWQ7dmFyIGU9SztLfD0yO3ZhciBmPUtrKCk7aWYoUiE9PWF8fFohPT1iKXZrPW51bGwsSGo9QigpKzUwMCxMayhhLGIpO2RvIHRyeXtNaygpO2JyZWFrfWNhdGNoKGgpe05rKGEsaCl9d2hpbGUoMSk7UWcoKTtuay5jdXJyZW50PWY7Sz1lO251bGwhPT1ZP2I9MDooUj1udWxsLFo9MCxiPVQpfWlmKDAhPT1iKXsyPT09YiYmKGU9eGMoYSksMCE9PWUmJihkPWUsYj1PayhhLGUpKSk7aWYoMT09PWIpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7aWYoNj09PWIpRGsoYSxkKTtcbmVsc2V7ZT1hLmN1cnJlbnQuYWx0ZXJuYXRlO2lmKDA9PT0oZCYzMCkmJiFQayhlKSYmKGI9SmsoYSxkKSwyPT09YiYmKGY9eGMoYSksMCE9PWYmJihkPWYsYj1PayhhLGYpKSksMT09PWIpKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGQpLEVrKGEsQigpKSxjO2EuZmluaXNoZWRXb3JrPWU7YS5maW5pc2hlZExhbmVzPWQ7c3dpdGNoKGIpe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IocCgzNDUpKTtjYXNlIDI6UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSAzOkRrKGEsZCk7aWYoKGQmMTMwMDIzNDI0KT09PWQmJihiPWdrKzUwMC1CKCksMTA8Yikpe2lmKDAhPT11YyhhLDApKWJyZWFrO2U9YS5zdXNwZW5kZWRMYW5lcztpZigoZSZkKSE9PWQpe0woKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmU7YnJlYWt9YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxiKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDQ6RGsoYSxkKTtpZigoZCY0MTk0MjQwKT09PVxuZClicmVhaztiPWEuZXZlbnRUaW1lcztmb3IoZT0tMTswPGQ7KXt2YXIgZz0zMS1vYyhkKTtmPTE8PGc7Zz1iW2ddO2c+ZSYmKGU9Zyk7ZCY9fmZ9ZD1lO2Q9QigpLWQ7ZD0oMTIwPmQ/MTIwOjQ4MD5kPzQ4MDoxMDgwPmQ/MTA4MDoxOTIwPmQ/MTkyMDozRTM+ZD8zRTM6NDMyMD5kPzQzMjA6MTk2MCptayhkLzE5NjApKS1kO2lmKDEwPGQpe2EudGltZW91dEhhbmRsZT1GZihRay5iaW5kKG51bGwsYSx1ayx2ayksZCk7YnJlYWt9UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSA1OlFrKGEsdWssdmspO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMjkpKTt9fX1FayhhLEIoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yz9Iay5iaW5kKG51bGwsYSk6bnVsbH1cbmZ1bmN0aW9uIE9rKGEsYil7dmFyIGM9dGs7YS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYoTGsoYSxiKS5mbGFnc3w9MjU2KTthPUprKGEsYik7MiE9PWEmJihiPXVrLHVrPWMsbnVsbCE9PWImJkdqKGIpKTtyZXR1cm4gYX1mdW5jdGlvbiBHaihhKXtudWxsPT09dWs/dWs9YTp1ay5wdXNoLmFwcGx5KHVrLGEpfVxuZnVuY3Rpb24gUGsoYSl7Zm9yKHZhciBiPWE7Oyl7aWYoYi5mbGFncyYxNjM4NCl7dmFyIGM9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YyYmKGM9Yy5zdG9yZXMsbnVsbCE9PWMpKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLGY9ZS5nZXRTbmFwc2hvdDtlPWUudmFsdWU7dHJ5e2lmKCFIZShmKCksZSkpcmV0dXJuITF9Y2F0Y2goZyl7cmV0dXJuITF9fX1jPWIuY2hpbGQ7aWYoYi5zdWJ0cmVlRmxhZ3MmMTYzODQmJm51bGwhPT1jKWMucmV0dXJuPWIsYj1jO2Vsc2V7aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuITA7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfX1yZXR1cm4hMH1cbmZ1bmN0aW9uIERrKGEsYil7YiY9fnNrO2ImPX5yazthLnN1c3BlbmRlZExhbmVzfD1iO2EucGluZ2VkTGFuZXMmPX5iO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yjspe3ZhciBjPTMxLW9jKGIpLGQ9MTw8YzthW2NdPS0xO2ImPX5kfX1mdW5jdGlvbiBGayhhKXtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtJaygpO3ZhciBiPXVjKGEsMCk7aWYoMD09PShiJjEpKXJldHVybiBFayhhLEIoKSksbnVsbDt2YXIgYz1KayhhLGIpO2lmKDAhPT1hLnRhZyYmMj09PWMpe3ZhciBkPXhjKGEpOzAhPT1kJiYoYj1kLGM9T2soYSxkKSl9aWYoMT09PWMpdGhyb3cgYz1xayxMayhhLDApLERrKGEsYiksRWsoYSxCKCkpLGM7aWYoNj09PWMpdGhyb3cgRXJyb3IocCgzNDUpKTthLmZpbmlzaGVkV29yaz1hLmN1cnJlbnQuYWx0ZXJuYXRlO2EuZmluaXNoZWRMYW5lcz1iO1FrKGEsdWssdmspO0VrKGEsQigpKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFJrKGEsYil7dmFyIGM9SztLfD0xO3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e0s9YywwPT09SyYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfX1mdW5jdGlvbiBTayhhKXtudWxsIT09eGsmJjA9PT14ay50YWcmJjA9PT0oSyY2KSYmSWsoKTt2YXIgYj1LO0t8PTE7dmFyIGM9cGsudHJhbnNpdGlvbixkPUM7dHJ5e2lmKHBrLnRyYW5zaXRpb249bnVsbCxDPTEsYSlyZXR1cm4gYSgpfWZpbmFsbHl7Qz1kLHBrLnRyYW5zaXRpb249YyxLPWIsMD09PShLJjYpJiZqZygpfX1mdW5jdGlvbiBJaigpe2dqPWZqLmN1cnJlbnQ7RShmail9XG5mdW5jdGlvbiBMayhhLGIpe2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7dmFyIGM9YS50aW1lb3V0SGFuZGxlOy0xIT09YyYmKGEudGltZW91dEhhbmRsZT0tMSxHZihjKSk7aWYobnVsbCE9PVkpZm9yKGM9WS5yZXR1cm47bnVsbCE9PWM7KXt2YXIgZD1jO3dnKGQpO3N3aXRjaChkLnRhZyl7Y2FzZSAxOmQ9ZC50eXBlLmNoaWxkQ29udGV4dFR5cGVzO251bGwhPT1kJiZ2b2lkIDAhPT1kJiYkZigpO2JyZWFrO2Nhc2UgMzpKaCgpO0UoV2YpO0UoSCk7T2goKTticmVhaztjYXNlIDU6TGgoZCk7YnJlYWs7Y2FzZSA0OkpoKCk7YnJlYWs7Y2FzZSAxMzpFKE0pO2JyZWFrO2Nhc2UgMTk6RShNKTticmVhaztjYXNlIDEwOlJnKGQudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOklqKCl9Yz1jLnJldHVybn1SPWE7WT1hPXdoKGEuY3VycmVudCxudWxsKTtaPWdqPWI7VD0wO3FrPW51bGw7c2s9cms9aGg9MDt1az10az1udWxsO2lmKG51bGwhPT1XZyl7Zm9yKGI9XG4wO2I8V2cubGVuZ3RoO2IrKylpZihjPVdnW2JdLGQ9Yy5pbnRlcmxlYXZlZCxudWxsIT09ZCl7Yy5pbnRlcmxlYXZlZD1udWxsO3ZhciBlPWQubmV4dCxmPWMucGVuZGluZztpZihudWxsIT09Zil7dmFyIGc9Zi5uZXh0O2YubmV4dD1lO2QubmV4dD1nfWMucGVuZGluZz1kfVdnPW51bGx9cmV0dXJuIGF9XG5mdW5jdGlvbiBOayhhLGIpe2Rve3ZhciBjPVk7dHJ5e1FnKCk7UGguY3VycmVudD1haTtpZihTaCl7Zm9yKHZhciBkPU4ubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZDspe3ZhciBlPWQucXVldWU7bnVsbCE9PWUmJihlLnBlbmRpbmc9bnVsbCk7ZD1kLm5leHR9U2g9ITF9Umg9MDtQPU89Tj1udWxsO1RoPSExO1VoPTA7b2suY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe1Q9MTtxaz1iO1k9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPVo7aC5mbGFnc3w9MzI3Njg7aWYobnVsbCE9PWsmJlwib2JqZWN0XCI9PT10eXBlb2YgayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsudGhlbil7dmFyIGw9ayxtPWgscT1tLnRhZztpZigwPT09KG0ubW9kZSYxKSYmKDA9PT1xfHwxMT09PXF8fDE1PT09cSkpe3ZhciByPW0uYWx0ZXJuYXRlO3I/KG0udXBkYXRlUXVldWU9ci51cGRhdGVRdWV1ZSxtLm1lbW9pemVkU3RhdGU9ci5tZW1vaXplZFN0YXRlLFxubS5sYW5lcz1yLmxhbmVzKToobS51cGRhdGVRdWV1ZT1udWxsLG0ubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgeT1WaShnKTtpZihudWxsIT09eSl7eS5mbGFncyY9LTI1NztXaSh5LGcsaCxmLGIpO3kubW9kZSYxJiZUaShmLGwsYik7Yj15O2s9bDt2YXIgbj1iLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1uKXt2YXIgdD1uZXcgU2V0O3QuYWRkKGspO2IudXBkYXRlUXVldWU9dH1lbHNlIG4uYWRkKGspO2JyZWFrIGF9ZWxzZXtpZigwPT09KGImMSkpe1RpKGYsbCxiKTt1aigpO2JyZWFrIGF9az1FcnJvcihwKDQyNikpfX1lbHNlIGlmKEkmJmgubW9kZSYxKXt2YXIgSj1WaShnKTtpZihudWxsIT09Sil7MD09PShKLmZsYWdzJjY1NTM2KSYmKEouZmxhZ3N8PTI1Nik7V2koSixnLGgsZixiKTtKZyhLaShrLGgpKTticmVhayBhfX1mPWs9S2koayxoKTs0IT09VCYmKFQ9Mik7bnVsbD09PXRrP3RrPVtmXTp0ay5wdXNoKGYpO2Y9Zztkb3tzd2l0Y2goZi50YWcpe2Nhc2UgMzpmLmZsYWdzfD02NTUzNjtcbmImPS1iO2YubGFuZXN8PWI7dmFyIHg9T2koZixrLGIpO2ZoKGYseCk7YnJlYWsgYTtjYXNlIDE6aD1rO3ZhciB3PWYudHlwZSx1PWYuc3RhdGVOb2RlO2lmKDA9PT0oZi5mbGFncyYxMjgpJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHcuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxudWxsIT09dSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHUuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09U2l8fCFTaS5oYXModSkpKSl7Zi5mbGFnc3w9NjU1MzY7YiY9LWI7Zi5sYW5lc3w9Yjt2YXIgRj1SaShmLGgsYik7ZmgoZixGKTticmVhayBhfX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKX1UayhjKX1jYXRjaChuYSl7Yj1uYTtZPT09YyYmbnVsbCE9PWMmJihZPWM9Yy5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKDEpfWZ1bmN0aW9uIEtrKCl7dmFyIGE9bmsuY3VycmVudDtuay5jdXJyZW50PWFpO3JldHVybiBudWxsPT09YT9haTphfVxuZnVuY3Rpb24gdWooKXtpZigwPT09VHx8Mz09PVR8fDI9PT1UKVQ9NDtudWxsPT09Unx8MD09PShoaCYyNjg0MzU0NTUpJiYwPT09KHJrJjI2ODQzNTQ1NSl8fERrKFIsWil9ZnVuY3Rpb24gSmsoYSxiKXt2YXIgYz1LO0t8PTI7dmFyIGQ9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxMayhhLGIpO2RvIHRyeXtVaygpO2JyZWFrfWNhdGNoKGUpe05rKGEsZSl9d2hpbGUoMSk7UWcoKTtLPWM7bmsuY3VycmVudD1kO2lmKG51bGwhPT1ZKXRocm93IEVycm9yKHAoMjYxKSk7Uj1udWxsO1o9MDtyZXR1cm4gVH1mdW5jdGlvbiBVaygpe2Zvcig7bnVsbCE9PVk7KVZrKFkpfWZ1bmN0aW9uIE1rKCl7Zm9yKDtudWxsIT09WSYmIWNjKCk7KVZrKFkpfWZ1bmN0aW9uIFZrKGEpe3ZhciBiPVdrKGEuYWx0ZXJuYXRlLGEsZ2opO2EubWVtb2l6ZWRQcm9wcz1hLnBlbmRpbmdQcm9wcztudWxsPT09Yj9UayhhKTpZPWI7b2suY3VycmVudD1udWxsfVxuZnVuY3Rpb24gVGsoYSl7dmFyIGI9YTtkb3t2YXIgYz1iLmFsdGVybmF0ZTthPWIucmV0dXJuO2lmKDA9PT0oYi5mbGFncyYzMjc2OCkpe2lmKGM9RmooYyxiLGdqKSxudWxsIT09Yyl7WT1jO3JldHVybn19ZWxzZXtjPUpqKGMsYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTMyNzY3O1k9YztyZXR1cm59aWYobnVsbCE9PWEpYS5mbGFnc3w9MzI3NjgsYS5zdWJ0cmVlRmxhZ3M9MCxhLmRlbGV0aW9ucz1udWxsO2Vsc2V7VD02O1k9bnVsbDtyZXR1cm59fWI9Yi5zaWJsaW5nO2lmKG51bGwhPT1iKXtZPWI7cmV0dXJufVk9Yj1hfXdoaWxlKG51bGwhPT1iKTswPT09VCYmKFQ9NSl9ZnVuY3Rpb24gUWsoYSxiLGMpe3ZhciBkPUMsZT1way50cmFuc2l0aW9uO3RyeXtway50cmFuc2l0aW9uPW51bGwsQz0xLFhrKGEsYixjLGQpfWZpbmFsbHl7cGsudHJhbnNpdGlvbj1lLEM9ZH1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFhrKGEsYixjLGQpe2RvIElrKCk7d2hpbGUobnVsbCE9PXhrKTtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTtjPWEuZmluaXNoZWRXb3JrO3ZhciBlPWEuZmluaXNoZWRMYW5lcztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IocCgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO2EuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBmPWMubGFuZXN8Yy5jaGlsZExhbmVzO0JjKGEsZik7YT09PVImJihZPVI9bnVsbCxaPTApOzA9PT0oYy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJjA9PT0oYy5mbGFncyYyMDY0KXx8d2t8fCh3az0hMCxHayhoYyxmdW5jdGlvbigpe0lrKCk7cmV0dXJuIG51bGx9KSk7Zj0wIT09KGMuZmxhZ3MmMTU5OTApO2lmKDAhPT0oYy5zdWJ0cmVlRmxhZ3MmMTU5OTApfHxmKXtmPXBrLnRyYW5zaXRpb247cGsudHJhbnNpdGlvbj1udWxsO1xudmFyIGc9QztDPTE7dmFyIGg9SztLfD00O29rLmN1cnJlbnQ9bnVsbDtQaihhLGMpO2VrKGMsYSk7T2UoRGYpO2RkPSEhQ2Y7RGY9Q2Y9bnVsbDthLmN1cnJlbnQ9YztpayhjLGEsZSk7ZGMoKTtLPWg7Qz1nO3BrLnRyYW5zaXRpb249Zn1lbHNlIGEuY3VycmVudD1jO3drJiYod2s9ITEseGs9YSx5az1lKTtmPWEucGVuZGluZ0xhbmVzOzA9PT1mJiYoU2k9bnVsbCk7bWMoYy5zdGF0ZU5vZGUsZCk7RWsoYSxCKCkpO2lmKG51bGwhPT1iKWZvcihkPWEub25SZWNvdmVyYWJsZUVycm9yLGM9MDtjPGIubGVuZ3RoO2MrKyllPWJbY10sZChlLnZhbHVlLHtjb21wb25lbnRTdGFjazplLnN0YWNrLGRpZ2VzdDplLmRpZ2VzdH0pO2lmKFBpKXRocm93IFBpPSExLGE9UWksUWk9bnVsbCxhOzAhPT0oeWsmMSkmJjAhPT1hLnRhZyYmSWsoKTtmPWEucGVuZGluZ0xhbmVzOzAhPT0oZiYxKT9hPT09QWs/emsrKzooems9MCxBaz1hKTp6az0wO2pnKCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBJaygpe2lmKG51bGwhPT14ayl7dmFyIGE9RGMoeWspLGI9cGsudHJhbnNpdGlvbixjPUM7dHJ5e3BrLnRyYW5zaXRpb249bnVsbDtDPTE2PmE/MTY6YTtpZihudWxsPT09eGspdmFyIGQ9ITE7ZWxzZXthPXhrO3hrPW51bGw7eWs9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMzEpKTt2YXIgZT1LO0t8PTQ7Zm9yKFY9YS5jdXJyZW50O251bGwhPT1WOyl7dmFyIGY9VixnPWYuY2hpbGQ7aWYoMCE9PShWLmZsYWdzJjE2KSl7dmFyIGg9Zi5kZWxldGlvbnM7aWYobnVsbCE9PWgpe2Zvcih2YXIgaz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbD1oW2tdO2ZvcihWPWw7bnVsbCE9PVY7KXt2YXIgbT1WO3N3aXRjaChtLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig4LG0sZil9dmFyIHE9bS5jaGlsZDtpZihudWxsIT09cSlxLnJldHVybj1tLFY9cTtlbHNlIGZvcig7bnVsbCE9PVY7KXttPVY7dmFyIHI9bS5zaWJsaW5nLHk9bS5yZXR1cm47VGoobSk7aWYobT09PVxubCl7Vj1udWxsO2JyZWFrfWlmKG51bGwhPT1yKXtyLnJldHVybj15O1Y9cjticmVha31WPXl9fX12YXIgbj1mLmFsdGVybmF0ZTtpZihudWxsIT09bil7dmFyIHQ9bi5jaGlsZDtpZihudWxsIT09dCl7bi5jaGlsZD1udWxsO2Rve3ZhciBKPXQuc2libGluZzt0LnNpYmxpbmc9bnVsbDt0PUp9d2hpbGUobnVsbCE9PXQpfX1WPWZ9fWlmKDAhPT0oZi5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1nKWcucmV0dXJuPWYsVj1nO2Vsc2UgYjpmb3IoO251bGwhPT1WOyl7Zj1WO2lmKDAhPT0oZi5mbGFncyYyMDQ4KSlzd2l0Y2goZi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UWooOSxmLGYucmV0dXJuKX12YXIgeD1mLnNpYmxpbmc7aWYobnVsbCE9PXgpe3gucmV0dXJuPWYucmV0dXJuO1Y9eDticmVhayBifVY9Zi5yZXR1cm59fXZhciB3PWEuY3VycmVudDtmb3IoVj13O251bGwhPT1WOyl7Zz1WO3ZhciB1PWcuY2hpbGQ7aWYoMCE9PShnLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PVxudSl1LnJldHVybj1nLFY9dTtlbHNlIGI6Zm9yKGc9dztudWxsIT09Vjspe2g9VjtpZigwIT09KGguZmxhZ3MmMjA0OCkpdHJ5e3N3aXRjaChoLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpSaig5LGgpfX1jYXRjaChuYSl7VyhoLGgucmV0dXJuLG5hKX1pZihoPT09Zyl7Vj1udWxsO2JyZWFrIGJ9dmFyIEY9aC5zaWJsaW5nO2lmKG51bGwhPT1GKXtGLnJldHVybj1oLnJldHVybjtWPUY7YnJlYWsgYn1WPWgucmV0dXJufX1LPWU7amcoKTtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uUG9zdENvbW1pdEZpYmVyUm9vdCl0cnl7bGMub25Qb3N0Q29tbWl0RmliZXJSb290KGtjLGEpfWNhdGNoKG5hKXt9ZD0hMH1yZXR1cm4gZH1maW5hbGx5e0M9Yyxway50cmFuc2l0aW9uPWJ9fXJldHVybiExfWZ1bmN0aW9uIFlrKGEsYixjKXtiPUtpKGMsYik7Yj1PaShhLGIsMSk7YT1kaChhLGIsMSk7Yj1MKCk7bnVsbCE9PWEmJihBYyhhLDEsYiksRWsoYSxiKSl9XG5mdW5jdGlvbiBXKGEsYixjKXtpZigzPT09YS50YWcpWWsoYSxhLGMpO2Vsc2UgZm9yKDtudWxsIT09Yjspe2lmKDM9PT1iLnRhZyl7WWsoYixhLGMpO2JyZWFrfWVsc2UgaWYoMT09PWIudGFnKXt2YXIgZD1iLnN0YXRlTm9kZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09U2l8fCFTaS5oYXMoZCkpKXthPUtpKGMsYSk7YT1SaShiLGEsMSk7Yj1kaChiLGEsMSk7YT1MKCk7bnVsbCE9PWImJihBYyhiLDEsYSksRWsoYixhKSk7YnJlYWt9fWI9Yi5yZXR1cm59fVxuZnVuY3Rpb24gVWkoYSxiLGMpe3ZhciBkPWEucGluZ0NhY2hlO251bGwhPT1kJiZkLmRlbGV0ZShiKTtiPUwoKTthLnBpbmdlZExhbmVzfD1hLnN1c3BlbmRlZExhbmVzJmM7Uj09PWEmJihaJmMpPT09YyYmKDQ9PT1UfHwzPT09VCYmKFomMTMwMDIzNDI0KT09PVomJjUwMD5CKCktZ2s/TGsoYSwwKTpza3w9Yyk7RWsoYSxiKX1mdW5jdGlvbiBaayhhLGIpezA9PT1iJiYoMD09PShhLm1vZGUmMSk/Yj0xOihiPXNjLHNjPDw9MSwwPT09KHNjJjEzMDAyMzQyNCkmJihzYz00MTk0MzA0KSkpO3ZhciBjPUwoKTthPVpnKGEsYik7bnVsbCE9PWEmJihBYyhhLGIsYyksRWsoYSxjKSl9ZnVuY3Rpb24gdmooYSl7dmFyIGI9YS5tZW1vaXplZFN0YXRlLGM9MDtudWxsIT09YiYmKGM9Yi5yZXRyeUxhbmUpO1prKGEsYyl9XG5mdW5jdGlvbiBjayhhLGIpe3ZhciBjPTA7c3dpdGNoKGEudGFnKXtjYXNlIDEzOnZhciBkPWEuc3RhdGVOb2RlO3ZhciBlPWEubWVtb2l6ZWRTdGF0ZTtudWxsIT09ZSYmKGM9ZS5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6ZD1hLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzE0KSk7fW51bGwhPT1kJiZkLmRlbGV0ZShiKTtaayhhLGMpfXZhciBXaztcbldrPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8V2YuY3VycmVudClVZz0hMDtlbHNle2lmKDA9PT0oYS5sYW5lcyZjKSYmMD09PShiLmZsYWdzJjEyOCkpcmV0dXJuIFVnPSExLHpqKGEsYixjKTtVZz0wIT09KGEuZmxhZ3MmMTMxMDcyKT8hMDohMX1lbHNlIFVnPSExLEkmJjAhPT0oYi5mbGFncyYxMDQ4NTc2KSYmdWcoYixuZyxiLmluZGV4KTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6dmFyIGQ9Yi50eXBlO2pqKGEsYik7YT1iLnBlbmRpbmdQcm9wczt2YXIgZT1ZZihiLEguY3VycmVudCk7VGcoYixjKTtlPVhoKG51bGwsYixkLGEsZSxjKTt2YXIgZj1iaSgpO2IuZmxhZ3N8PTE7XCJvYmplY3RcIj09PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUucmVuZGVyJiZ2b2lkIDA9PT1lLiQkdHlwZW9mPyhiLnRhZz0xLGIubWVtb2l6ZWRTdGF0ZT1udWxsLGIudXBkYXRlUXVldWU9XG5udWxsLFpmKGQpPyhmPSEwLGNnKGIpKTpmPSExLGIubWVtb2l6ZWRTdGF0ZT1udWxsIT09ZS5zdGF0ZSYmdm9pZCAwIT09ZS5zdGF0ZT9lLnN0YXRlOm51bGwsYWgoYiksZS51cGRhdGVyPW5oLGIuc3RhdGVOb2RlPWUsZS5fcmVhY3RJbnRlcm5hbHM9YixyaChiLGQsYSxjKSxiPWtqKG51bGwsYixkLCEwLGYsYykpOihiLnRhZz0wLEkmJmYmJnZnKGIpLFlpKG51bGwsYixlLGMpLGI9Yi5jaGlsZCk7cmV0dXJuIGI7Y2FzZSAxNjpkPWIuZWxlbWVudFR5cGU7YTp7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO2U9ZC5faW5pdDtkPWUoZC5fcGF5bG9hZCk7Yi50eXBlPWQ7ZT1iLnRhZz0kayhkKTthPUxnKGQsYSk7c3dpdGNoKGUpe2Nhc2UgMDpiPWRqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE6Yj1paihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxMTpiPVppKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDE0OmI9YWoobnVsbCxiLGQsTGcoZC50eXBlLGEpLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgzMDYsXG5kLFwiXCIpKTt9cmV0dXJuIGI7Y2FzZSAwOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGRqKGEsYixkLGUsYyk7Y2FzZSAxOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGlqKGEsYixkLGUsYyk7Y2FzZSAzOmE6e2xqKGIpO2lmKG51bGw9PT1hKXRocm93IEVycm9yKHAoMzg3KSk7ZD1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRTdGF0ZTtlPWYuZWxlbWVudDtiaChhLGIpO2doKGIsZCxudWxsLGMpO3ZhciBnPWIubWVtb2l6ZWRTdGF0ZTtkPWcuZWxlbWVudDtpZihmLmlzRGVoeWRyYXRlZClpZihmPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmcuY2FjaGUscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpnLnBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXMsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc30sYi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9XG5mLGIubWVtb2l6ZWRTdGF0ZT1mLGIuZmxhZ3MmMjU2KXtlPUtpKEVycm9yKHAoNDIzKSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBpZihkIT09ZSl7ZT1LaShFcnJvcihwKDQyNCkpLGIpO2I9bWooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgZm9yKHlnPUxmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCkseGc9YixJPSEwLHpnPW51bGwsYz1DaChiLG51bGwsZCxjKSxiLmNoaWxkPWM7YzspYy5mbGFncz1jLmZsYWdzJi0zfDQwOTYsYz1jLnNpYmxpbmc7ZWxzZXtJZygpO2lmKGQ9PT1lKXtiPSRpKGEsYixjKTticmVhayBhfVlpKGEsYixkLGMpfWI9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIEtoKGIpLG51bGw9PT1hJiZFZyhiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLEVmKGQsZSk/Zz1udWxsOm51bGwhPT1mJiZFZihkLGYpJiYoYi5mbGFnc3w9MzIpLFxuaGooYSxiKSxZaShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkVnKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gcGooYSxiLGMpO2Nhc2UgNDpyZXR1cm4gSWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT1hP2IuY2hpbGQ9QmgoYixudWxsLGQsYyk6WWkoYSxiLGQsYyksYi5jaGlsZDtjYXNlIDExOnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLFppKGEsYixkLGUsYyk7Y2FzZSA3OnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTI6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixjKSxiLmNoaWxkO2Nhc2UgMTA6YTp7ZD1iLnR5cGUuX2NvbnRleHQ7ZT1iLnBlbmRpbmdQcm9wcztmPWIubWVtb2l6ZWRQcm9wcztcbmc9ZS52YWx1ZTtHKE1nLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWc7aWYobnVsbCE9PWYpaWYoSGUoZi52YWx1ZSxnKSl7aWYoZi5jaGlsZHJlbj09PWUuY2hpbGRyZW4mJiFXZi5jdXJyZW50KXtiPSRpKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihmPWIuY2hpbGQsbnVsbCE9PWYmJihmLnJldHVybj1iKTtudWxsIT09Zjspe3ZhciBoPWYuZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1oKXtnPWYuY2hpbGQ7Zm9yKHZhciBrPWguZmlyc3RDb250ZXh0O251bGwhPT1rOyl7aWYoay5jb250ZXh0PT09ZCl7aWYoMT09PWYudGFnKXtrPWNoKC0xLGMmLWMpO2sudGFnPTI7dmFyIGw9Zi51cGRhdGVRdWV1ZTtpZihudWxsIT09bCl7bD1sLnNoYXJlZDt2YXIgbT1sLnBlbmRpbmc7bnVsbD09PW0/ay5uZXh0PWs6KGsubmV4dD1tLm5leHQsbS5uZXh0PWspO2wucGVuZGluZz1rfX1mLmxhbmVzfD1jO2s9Zi5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLmxhbmVzfD1jKTtTZyhmLnJldHVybixcbmMsYik7aC5sYW5lc3w9YzticmVha31rPWsubmV4dH19ZWxzZSBpZigxMD09PWYudGFnKWc9Zi50eXBlPT09Yi50eXBlP251bGw6Zi5jaGlsZDtlbHNlIGlmKDE4PT09Zi50YWcpe2c9Zi5yZXR1cm47aWYobnVsbD09PWcpdGhyb3cgRXJyb3IocCgzNDEpKTtnLmxhbmVzfD1jO2g9Zy5hbHRlcm5hdGU7bnVsbCE9PWgmJihoLmxhbmVzfD1jKTtTZyhnLGMsYik7Zz1mLnNpYmxpbmd9ZWxzZSBnPWYuY2hpbGQ7aWYobnVsbCE9PWcpZy5yZXR1cm49ZjtlbHNlIGZvcihnPWY7bnVsbCE9PWc7KXtpZihnPT09Yil7Zz1udWxsO2JyZWFrfWY9Zy5zaWJsaW5nO2lmKG51bGwhPT1mKXtmLnJldHVybj1nLnJldHVybjtnPWY7YnJlYWt9Zz1nLnJldHVybn1mPWd9WWkoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZD1iLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixUZyhiLGMpLGU9VmcoZSksZD1kKGUpLGIuZmxhZ3N8PTEsWWkoYSxiLGQsYyksXG5iLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGQ9Yi50eXBlLGU9TGcoZCxiLnBlbmRpbmdQcm9wcyksZT1MZyhkLnR5cGUsZSksYWooYSxiLGQsZSxjKTtjYXNlIDE1OnJldHVybiBjaihhLGIsYi50eXBlLGIucGVuZGluZ1Byb3BzLGMpO2Nhc2UgMTc6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksamooYSxiKSxiLnRhZz0xLFpmKGQpPyhhPSEwLGNnKGIpKTphPSExLFRnKGIsYykscGgoYixkLGUpLHJoKGIsZCxlLGMpLGtqKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4geWooYSxiLGMpO2Nhc2UgMjI6cmV0dXJuIGVqKGEsYixjKX10aHJvdyBFcnJvcihwKDE1NixiLnRhZykpO307ZnVuY3Rpb24gR2soYSxiKXtyZXR1cm4gYWMoYSxiKX1cbmZ1bmN0aW9uIGFsKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wO3RoaXMuZGVsZXRpb25zPW51bGw7dGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MDt0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIEJnKGEsYixjLGQpe3JldHVybiBuZXcgYWwoYSxiLGMsZCl9ZnVuY3Rpb24gYmooYSl7YT1hLnByb3RvdHlwZTtyZXR1cm4hKCFhfHwhYS5pc1JlYWN0Q29tcG9uZW50KX1cbmZ1bmN0aW9uICRrKGEpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBiaihhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGEpcmV0dXJuIDExO2lmKGE9PT1HYSlyZXR1cm4gMTR9cmV0dXJuIDJ9XG5mdW5jdGlvbiB3aChhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlO251bGw9PT1jPyhjPUJnKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMuc3VidHJlZUZsYWdzPTAsYy5kZWxldGlvbnM9bnVsbCk7Yy5mbGFncz1hLmZsYWdzJjE0NjgwMDY0O2MuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXM7Yy5sYW5lcz1hLmxhbmVzO2MuY2hpbGQ9YS5jaGlsZDtjLm1lbW9pemVkUHJvcHM9YS5tZW1vaXplZFByb3BzO2MubWVtb2l6ZWRTdGF0ZT1hLm1lbW9pemVkU3RhdGU7Yy51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlO2I9YS5kZXBlbmRlbmNpZXM7Yy5kZXBlbmRlbmNpZXM9bnVsbD09PWI/bnVsbDp7bGFuZXM6Yi5sYW5lcyxmaXJzdENvbnRleHQ6Yi5maXJzdENvbnRleHR9O1xuYy5zaWJsaW5nPWEuc2libGluZztjLmluZGV4PWEuaW5kZXg7Yy5yZWY9YS5yZWY7cmV0dXJuIGN9XG5mdW5jdGlvbiB5aChhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpYmooYSkmJihnPTEpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKWc9NTtlbHNlIGE6c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuIEFoKGMuY2hpbGRyZW4sZSxmLGIpO2Nhc2UgemE6Zz04O2V8PTg7YnJlYWs7Y2FzZSBBYTpyZXR1cm4gYT1CZygxMixjLGIsZXwyKSxhLmVsZW1lbnRUeXBlPUFhLGEubGFuZXM9ZixhO2Nhc2UgRWE6cmV0dXJuIGE9QmcoMTMsYyxiLGUpLGEuZWxlbWVudFR5cGU9RWEsYS5sYW5lcz1mLGE7Y2FzZSBGYTpyZXR1cm4gYT1CZygxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1GYSxhLmxhbmVzPWYsYTtjYXNlIElhOnJldHVybiBxaihjLGUsZixiKTtkZWZhdWx0OmlmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQmE6Zz0xMDticmVhayBhO2Nhc2UgQ2E6Zz05O2JyZWFrIGE7Y2FzZSBEYTpnPTExO1xuYnJlYWsgYTtjYXNlIEdhOmc9MTQ7YnJlYWsgYTtjYXNlIEhhOmc9MTY7ZD1udWxsO2JyZWFrIGF9dGhyb3cgRXJyb3IocCgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLFwiXCIpKTt9Yj1CZyhnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIEFoKGEsYixjLGQpe2E9QmcoNyxhLGQsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIHFqKGEsYixjLGQpe2E9QmcoMjIsYSxkLGIpO2EuZWxlbWVudFR5cGU9SWE7YS5sYW5lcz1jO2Euc3RhdGVOb2RlPXtpc0hpZGRlbjohMX07cmV0dXJuIGF9ZnVuY3Rpb24geGgoYSxiLGMpe2E9QmcoNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfVxuZnVuY3Rpb24gemgoYSxiLGMpe2I9QmcoNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9XG5mdW5jdGlvbiBibChhLGIsYyxkLGUpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5jYWxsYmFja1ByaW9yaXR5PTA7dGhpcy5ldmVudFRpbWVzPXpjKDApO3RoaXMuZXhwaXJhdGlvblRpbWVzPXpjKC0xKTt0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTA7dGhpcy5lbnRhbmdsZW1lbnRzPXpjKDApO3RoaXMuaWRlbnRpZmllclByZWZpeD1kO3RoaXMub25SZWNvdmVyYWJsZUVycm9yPWU7dGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVxubnVsbH1mdW5jdGlvbiBjbChhLGIsYyxkLGUsZixnLGgsayl7YT1uZXcgYmwoYSxiLGMsaCxrKTsxPT09Yj8oYj0xLCEwPT09ZiYmKGJ8PTgpKTpiPTA7Zj1CZygzLG51bGwsbnVsbCxiKTthLmN1cnJlbnQ9ZjtmLnN0YXRlTm9kZT1hO2YubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDpjLGNhY2hlOm51bGwsdHJhbnNpdGlvbnM6bnVsbCxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOm51bGx9O2FoKGYpO3JldHVybiBhfWZ1bmN0aW9uIGRsKGEsYixjKXt2YXIgZD0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6d2Esa2V5Om51bGw9PWQ/bnVsbDpcIlwiK2QsY2hpbGRyZW46YSxjb250YWluZXJJbmZvOmIsaW1wbGVtZW50YXRpb246Y319XG5mdW5jdGlvbiBlbChhKXtpZighYSlyZXR1cm4gVmY7YT1hLl9yZWFjdEludGVybmFsczthOntpZihWYihhKSE9PWF8fDEhPT1hLnRhZyl0aHJvdyBFcnJvcihwKDE3MCkpO3ZhciBiPWE7ZG97c3dpdGNoKGIudGFnKXtjYXNlIDM6Yj1iLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGE7Y2FzZSAxOmlmKFpmKGIudHlwZSkpe2I9Yi5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgYX19Yj1iLnJldHVybn13aGlsZShudWxsIT09Yik7dGhyb3cgRXJyb3IocCgxNzEpKTt9aWYoMT09PWEudGFnKXt2YXIgYz1hLnR5cGU7aWYoWmYoYykpcmV0dXJuIGJnKGEsYyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGZsKGEsYixjLGQsZSxmLGcsaCxrKXthPWNsKGMsZCwhMCxhLGUsZixnLGgsayk7YS5jb250ZXh0PWVsKG51bGwpO2M9YS5jdXJyZW50O2Q9TCgpO2U9bGgoYyk7Zj1jaChkLGUpO2YuY2FsbGJhY2s9dm9pZCAwIT09YiYmbnVsbCE9PWI/YjpudWxsO2RoKGMsZixlKTthLmN1cnJlbnQubGFuZXM9ZTtBYyhhLGUsZCk7RWsoYSxkKTtyZXR1cm4gYX1mdW5jdGlvbiBnbChhLGIsYyxkKXt2YXIgZT1iLmN1cnJlbnQsZj1MKCksZz1saChlKTtjPWVsKGMpO251bGw9PT1iLmNvbnRleHQ/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9Y2goZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9ZCk7YT1kaChlLGIsZyk7bnVsbCE9PWEmJihtaChhLGUsZyxmKSxlaChhLGUsZykpO3JldHVybiBnfVxuZnVuY3Rpb24gaGwoYSl7YT1hLmN1cnJlbnQ7aWYoIWEuY2hpbGQpcmV0dXJuIG51bGw7c3dpdGNoKGEuY2hpbGQudGFnKXtjYXNlIDU6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlO2RlZmF1bHQ6cmV0dXJuIGEuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBpbChhLGIpe2E9YS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXt2YXIgYz1hLnJldHJ5TGFuZTthLnJldHJ5TGFuZT0wIT09YyYmYzxiP2M6Yn19ZnVuY3Rpb24gamwoYSxiKXtpbChhLGIpOyhhPWEuYWx0ZXJuYXRlKSYmaWwoYSxiKX1mdW5jdGlvbiBrbCgpe3JldHVybiBudWxsfXZhciBsbD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcihhKX07ZnVuY3Rpb24gbWwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5ubC5wcm90b3R5cGUucmVuZGVyPW1sLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoNDA5KSk7Z2woYSxiLG51bGwsbnVsbCl9O25sLnByb3RvdHlwZS51bm1vdW50PW1sLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1hKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgYj1hLmNvbnRhaW5lckluZm87U2soZnVuY3Rpb24oKXtnbChudWxsLGEsbnVsbCxudWxsKX0pO2JbdWZdPW51bGx9fTtmdW5jdGlvbiBubChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1IYygpO2E9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDphLHByaW9yaXR5OmJ9O2Zvcih2YXIgYz0wO2M8UWMubGVuZ3RoJiYwIT09YiYmYjxRY1tjXS5wcmlvcml0eTtjKyspO1FjLnNwbGljZShjLDAsYSk7MD09PWMmJlZjKGEpfX07ZnVuY3Rpb24gb2woYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUpfWZ1bmN0aW9uIHBsKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlJiYoOCE9PWEubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09YS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBxbCgpe31cbmZ1bmN0aW9uIHJsKGEsYixjLGQsZSl7aWYoZSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBmPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWhsKGcpO2YuY2FsbChhKX19dmFyIGc9ZmwoYixkLGEsMCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1nO2FbdWZdPWcuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soKTtyZXR1cm4gZ31mb3IoO2U9YS5sYXN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBoPWQ7ZD1mdW5jdGlvbigpe3ZhciBhPWhsKGspO2guY2FsbChhKX19dmFyIGs9Y2woYSwwLCExLG51bGwsbnVsbCwhMSwhMSxcIlwiLHFsKTthLl9yZWFjdFJvb3RDb250YWluZXI9azthW3VmXT1rLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1NrKGZ1bmN0aW9uKCl7Z2woYixrLGMsZCl9KTtyZXR1cm4ga31cbmZ1bmN0aW9uIHNsKGEsYixjLGQsZSl7dmFyIGY9Yy5fcmVhY3RSb290Q29udGFpbmVyO2lmKGYpe3ZhciBnPWY7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBoPWU7ZT1mdW5jdGlvbigpe3ZhciBhPWhsKGcpO2guY2FsbChhKX19Z2woYixnLGEsZSl9ZWxzZSBnPXJsKGMsYixhLGUsZCk7cmV0dXJuIGhsKGcpfUVjPWZ1bmN0aW9uKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSAzOnZhciBiPWEuc3RhdGVOb2RlO2lmKGIuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7dmFyIGM9dGMoYi5wZW5kaW5nTGFuZXMpOzAhPT1jJiYoQ2MoYixjfDEpLEVrKGIsQigpKSwwPT09KEsmNikmJihIaj1CKCkrNTAwLGpnKCkpKX1icmVhaztjYXNlIDEzOlNrKGZ1bmN0aW9uKCl7dmFyIGI9WmcoYSwxKTtpZihudWxsIT09Yil7dmFyIGM9TCgpO21oKGIsYSwxLGMpfX0pLGpsKGEsMSl9fTtcbkZjPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPVpnKGEsMTM0MjE3NzI4KTtpZihudWxsIT09Yil7dmFyIGM9TCgpO21oKGIsYSwxMzQyMTc3MjgsYyl9amwoYSwxMzQyMTc3MjgpfX07R2M9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9bGgoYSksYz1aZyhhLGIpO2lmKG51bGwhPT1jKXt2YXIgZD1MKCk7bWgoYyxhLGIsZCl9amwoYSxiKX19O0hjPWZ1bmN0aW9uKCl7cmV0dXJuIEN9O0ljPWZ1bmN0aW9uKGEsYil7dmFyIGM9Qzt0cnl7cmV0dXJuIEM9YSxiKCl9ZmluYWxseXtDPWN9fTtcbnliPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcImlucHV0XCI6YmIoYSxjKTtiPWMubmFtZTtpZihcInJhZGlvXCI9PT1jLnR5cGUmJm51bGwhPWIpe2ZvcihjPWE7Yy5wYXJlbnROb2RlOyljPWMucGFyZW50Tm9kZTtjPWMucXVlcnlTZWxlY3RvckFsbChcImlucHV0W25hbWU9XCIrSlNPTi5zdHJpbmdpZnkoXCJcIitiKSsnXVt0eXBlPVwicmFkaW9cIl0nKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO2lmKGQhPT1hJiZkLmZvcm09PT1hLmZvcm0pe3ZhciBlPURiKGQpO2lmKCFlKXRocm93IEVycm9yKHAoOTApKTtXYShkKTtiYihkLGUpfX19YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoYSxjKTticmVhaztjYXNlIFwic2VsZWN0XCI6Yj1jLnZhbHVlLG51bGwhPWImJmZiKGEsISFjLm11bHRpcGxlLGIsITEpfX07R2I9Ums7SGI9U2s7XG52YXIgdGw9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W0NiLHVlLERiLEViLEZiLFJrXX0sdWw9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOldjLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOlwiMTguMi4wXCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifTtcbnZhciB2bD17YnVuZGxlVHlwZTp1bC5idW5kbGVUeXBlLHZlcnNpb246dWwudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOnVsLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6dWwucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixmaW5kSG9zdEluc3RhbmNlQnlGaWJlcjpmdW5jdGlvbihhKXthPVpiKGEpO3JldHVybiBudWxsPT09YT9udWxsOmEuc3RhdGVOb2RlfSxmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTp1bC5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8XG5rbCxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsLHJlY29uY2lsZXJWZXJzaW9uOlwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCJ9O2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKXt2YXIgd2w9X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fO2lmKCF3bC5pc0Rpc2FibGVkJiZ3bC5zdXBwb3J0c0ZpYmVyKXRyeXtrYz13bC5pbmplY3QodmwpLGxjPXdsfWNhdGNoKGEpe319ZXhwb3J0cy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD10bDtcbmV4cG9ydHMuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGEsYil7dmFyIGM9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIW9sKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIGRsKGEsYixudWxsLGMpfTtleHBvcnRzLmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oYSxiKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCgyOTkpKTt2YXIgYz0hMSxkPVwiXCIsZT1sbDtudWxsIT09YiYmdm9pZCAwIT09YiYmKCEwPT09Yi51bnN0YWJsZV9zdHJpY3RNb2RlJiYoYz0hMCksdm9pZCAwIT09Yi5pZGVudGlmaWVyUHJlZml4JiYoZD1iLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWIub25SZWNvdmVyYWJsZUVycm9yJiYoZT1iLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9Y2woYSwxLCExLG51bGwsbnVsbCxjLCExLGQsZSk7YVt1Zl09Yi5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtyZXR1cm4gbmV3IG1sKGIpfTtcbmV4cG9ydHMuZmluZERPTU5vZGU9ZnVuY3Rpb24oYSl7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZigxPT09YS5ub2RlVHlwZSlyZXR1cm4gYTt2YXIgYj1hLl9yZWFjdEludGVybmFscztpZih2b2lkIDA9PT1iKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IocCgxODgpKTthPU9iamVjdC5rZXlzKGEpLmpvaW4oXCIsXCIpO3Rocm93IEVycm9yKHAoMjY4LGEpKTt9YT1aYihiKTthPW51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGU7cmV0dXJuIGF9O2V4cG9ydHMuZmx1c2hTeW5jPWZ1bmN0aW9uKGEpe3JldHVybiBTayhhKX07ZXhwb3J0cy5oeWRyYXRlPWZ1bmN0aW9uKGEsYixjKXtpZighcGwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gc2wobnVsbCxhLGIsITAsYyl9O1xuZXhwb3J0cy5oeWRyYXRlUm9vdD1mdW5jdGlvbihhLGIsYyl7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoNDA1KSk7dmFyIGQ9bnVsbCE9YyYmYy5oeWRyYXRlZFNvdXJjZXN8fG51bGwsZT0hMSxmPVwiXCIsZz1sbDtudWxsIT09YyYmdm9pZCAwIT09YyYmKCEwPT09Yy51bnN0YWJsZV9zdHJpY3RNb2RlJiYoZT0hMCksdm9pZCAwIT09Yy5pZGVudGlmaWVyUHJlZml4JiYoZj1jLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PWMub25SZWNvdmVyYWJsZUVycm9yJiYoZz1jLm9uUmVjb3ZlcmFibGVFcnJvcikpO2I9ZmwoYixudWxsLGEsMSxudWxsIT1jP2M6bnVsbCxlLCExLGYsZyk7YVt1Zl09Yi5jdXJyZW50O3NmKGEpO2lmKGQpZm9yKGE9MDthPGQubGVuZ3RoO2ErKyljPWRbYV0sZT1jLl9nZXRWZXJzaW9uLGU9ZShjLl9zb3VyY2UpLG51bGw9PWIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT9iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W2MsZV06Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2goYyxcbmUpO3JldHVybiBuZXcgbmwoYil9O2V4cG9ydHMucmVuZGVyPWZ1bmN0aW9uKGEsYixjKXtpZighcGwoYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gc2wobnVsbCxhLGIsITEsYyl9O2V4cG9ydHMudW5tb3VudENvbXBvbmVudEF0Tm9kZT1mdW5jdGlvbihhKXtpZighcGwoYSkpdGhyb3cgRXJyb3IocCg0MCkpO3JldHVybiBhLl9yZWFjdFJvb3RDb250YWluZXI/KFNrKGZ1bmN0aW9uKCl7c2wobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbDthW3VmXT1udWxsfSl9KSwhMCk6ITF9O2V4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9Ums7XG5leHBvcnRzLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFwbChjKSl0aHJvdyBFcnJvcihwKDIwMCkpO2lmKG51bGw9PWF8fHZvaWQgMD09PWEuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKHAoMzgpKTtyZXR1cm4gc2woYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///799\n')},470:(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\n\nvar m = __webpack_require__(961);\nif (true) {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else { var i; }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcwLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxHQUFXO0FBQzNCLElBQUksSUFBcUM7QUFDekMsRUFBRSxrQkFBa0I7QUFDcEIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxLQUFLLFVBa0JOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9jbGllbnQuanM/ZTQ2MyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///470\n")},961:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (false) {}\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (true) {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = __webpack_require__(799);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTYxLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDLEVBQUUsRUFTMUM7QUFDSDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUNBQTZEO0FBQy9ELEVBQUUsS0FBSyxFQUVOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcz9lZjA3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///961\n")},218:(__unused_webpack_module,exports)=>{"use strict";eval('/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar l=Symbol.for("react.element"),n=Symbol.for("react.portal"),p=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t=Symbol.for("react.provider"),u=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z=Symbol.iterator;function A(a){if(null===a||"object"!==typeof a)return null;a=z&&a[z]||a["@@iterator"];return"function"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if("object"!==typeof a&&"function"!==typeof a&&null!=a)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,a,b,"setState")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,"forceUpdate")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=""+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return"object"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={"=":"=0",":":"=2"};return"$"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return"object"===typeof a&&null!==a&&null!=a.key?escape(""+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if("undefined"===k||"boolean"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case "string":case "number":h=!0;break;case "object":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=""===d?"."+Q(h,0):d,I(c)?(e="",null!=a&&(e=a.replace(P,"$&/")+"/"),R(c,b,e,"",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?"":(""+c.key).replace(P,"$&/")+"/")+a)),b.push(c)),1;h=0;d=""===d?".":d+":";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),"function"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if("object"===k)throw b=String(a),Error("Objects are not valid as a React child (found: "+("[object Object]"===b?"object with keys {"+Object.keys(a).join(", ")+"}":b)+"). If you meant to render a collection of children, use an array instead.");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,"","",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error("React.Children.only expected to receive a single React element child.");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+a+".");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=""+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version="18.2.0";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjE4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLHFXQUFxVyxjQUFjLDZDQUE2QywyQkFBMkI7QUFDeGMsT0FBTyxxQkFBcUIsU0FBUyxnQ0FBZ0MsaUNBQWlDLDhCQUE4QixzQkFBc0Isa0JBQWtCLGFBQWEsZUFBZSxZQUFZLGtCQUFrQjtBQUN0TyxtQ0FBbUMsNExBQTRMLG1EQUFtRCxvQ0FBb0MsdURBQXVELGNBQWMsd0JBQXdCLGtCQUFrQixhQUFhLGVBQWUsWUFBWSxrQkFBa0I7QUFDL2QsZ0JBQWdCLGlCQUFpQiwwQkFBMEIseURBQXlELGFBQWEsSUFBSTtBQUNySSxrQkFBa0IsVUFBVSxlQUFlLDRIQUE0SCx5QkFBeUIsc0JBQXNCLGFBQWEsdUJBQXVCLElBQUksd0JBQXdCLGFBQWEsNEVBQTRFLE9BQU87QUFDdFgsZ0JBQWdCLE9BQU8sc0VBQXNFLGNBQWMsb0RBQW9ELG1CQUFtQixPQUFPLG1CQUFtQix3Q0FBd0MsWUFBWSxFQUFFLGFBQWEsZ0JBQWdCO0FBQy9SLHNCQUFzQixlQUFlLHlDQUF5QyxTQUFTLGlCQUFpQixlQUFlLGlDQUFpQyxNQUFNLGlDQUFpQyxvQkFBb0IsbUhBQW1ILFNBQVMsMkdBQTJHLElBQUksbUJBQW1CLG9CQUFvQixXQUFXLEtBQUs7QUFDcmYsS0FBSyxlQUFlLGdCQUFnQix5REFBeUQsbUJBQW1CLHdDQUF3Qyx5SUFBeUksOEJBQThCLGtGQUFrRjtBQUNqWixrQkFBa0Isb0JBQW9CLGFBQWEsd0JBQXdCLHVCQUF1QixFQUFFLFNBQVMsY0FBYyxtQkFBbUIsZ0JBQWdCLE1BQU0sbUJBQW1CLHlEQUF5RCxhQUFhLHlEQUF5RCxFQUFFLDBDQUEwQywwQ0FBMEM7QUFDNVksT0FBTyxhQUFhLElBQUksZ0JBQWdCLElBQUksd0VBQXdFLGdCQUFnQixFQUFFLDhCQUE4QixlQUFlLHdCQUF3QixJQUFJLG1CQUFtQixRQUFRLGVBQWUsSUFBSSxFQUFFLFNBQVMscUJBQXFCLHVCQUF1QixTQUFTLE1BQU0sa0JBQWtCLDhGQUE4RixXQUFXLGlCQUFpQixHQUFHLGdCQUFnQjtBQUNsZSxnQkFBZ0IsR0FBRyxxQkFBcUIsR0FBRyxrQkFBa0IsR0FBRyxnQkFBZ0IsR0FBRywwREFBMEQ7QUFDN0ksb0JBQW9CLGlCQUFpQiw0SEFBNEgsVUFBVSxxQ0FBcUMsWUFBWSxzQ0FBc0MsNkJBQTZCLHlEQUF5RCx5RkFBeUYseUJBQXlCLHNCQUFzQixhQUFhO0FBQzdlLFlBQVksSUFBSSx3QkFBd0IsYUFBYSxPQUFPLHNEQUFzRCxxQkFBcUIsYUFBYSxHQUFHLDRIQUE0SCxZQUFZLHVCQUF1QixxQkFBcUIscUJBQXFCLEdBQUcscUJBQXFCLGFBQWEscUJBQXFCLFNBQVMsVUFBVSxpQkFBaUIsWUFBWSxPQUFPO0FBQ2pkLGtCQUFrQixhQUFhLE9BQU8sc0JBQXNCLHNCQUFzQixHQUFHLFlBQVksYUFBYSxPQUFPLHFCQUFxQixxQkFBcUIsV0FBVyxZQUFZLGVBQWUsT0FBTyw4Q0FBOEMsdUJBQXVCLGFBQWEsbUJBQW1CLGdCQUFnQixJQUFJLElBQUksUUFBUSxpQkFBaUIsb0JBQW9CLFlBQVk7QUFDbFksbUJBQW1CLGVBQWUsbUNBQW1DLGtCQUFrQixhQUFhLGdDQUFnQyxxQkFBcUIsY0FBYyx3QkFBd0IsYUFBYSxzQ0FBc0MsaUJBQWlCLGVBQWUsaUNBQWlDLGFBQWEsWUFBWSwwQkFBMEIsMkJBQTJCLGlCQUFpQjtBQUNsWiwwQkFBMEIsZUFBZSwwQ0FBMEMsdUJBQXVCLGVBQWUsdUNBQXVDLGVBQWUsZUFBZSwrQkFBK0Isa0JBQWtCLGlCQUFpQixvQ0FBb0MsY0FBYyxhQUFhLDRCQUE0QixnQkFBZ0IsYUFBYSw4QkFBOEIsNEJBQTRCLGlCQUFpQjtBQUNuYyxxQkFBcUIsWUFBWSxrQ0FBa0MsZUFBZSIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanM/ZDEzOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGw9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHA9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLHI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLHU9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdz1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIikseD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSx5PVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHo9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIEEoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPXomJmFbel18fGFbXCJAQGl0ZXJhdG9yXCJdO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH1cbnZhciBCPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxDPU9iamVjdC5hc3NpZ24sRD17fTtmdW5jdGlvbiBFKGEsYixlKXt0aGlzLnByb3BzPWE7dGhpcy5jb250ZXh0PWI7dGhpcy5yZWZzPUQ7dGhpcy51cGRhdGVyPWV8fEJ9RS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fTtcbkUucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEsYil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYSYmbnVsbCE9YSl0aHJvdyBFcnJvcihcInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLlwiKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsYSxiLFwic2V0U3RhdGVcIil9O0UucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLFwiZm9yY2VVcGRhdGVcIil9O2Z1bmN0aW9uIEYoKXt9Ri5wcm90b3R5cGU9RS5wcm90b3R5cGU7ZnVuY3Rpb24gRyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfXZhciBIPUcucHJvdG90eXBlPW5ldyBGO1xuSC5jb25zdHJ1Y3Rvcj1HO0MoSCxFLnByb3RvdHlwZSk7SC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgST1BcnJheS5pc0FycmF5LEo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLPXtjdXJyZW50Om51bGx9LEw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIE0oYSxiLGUpe3ZhciBkLGM9e30saz1udWxsLGg9bnVsbDtpZihudWxsIT1iKWZvcihkIGluIHZvaWQgMCE9PWIucmVmJiYoaD1iLnJlZiksdm9pZCAwIT09Yi5rZXkmJihrPVwiXCIrYi5rZXkpLGIpSi5jYWxsKGIsZCkmJiFMLmhhc093blByb3BlcnR5KGQpJiYoY1tkXT1iW2RdKTt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpYy5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxnKXtmb3IodmFyIGY9QXJyYXkoZyksbT0wO208ZzttKyspZlttXT1hcmd1bWVudHNbbSsyXTtjLmNoaWxkcmVuPWZ9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGQgaW4gZz1hLmRlZmF1bHRQcm9wcyxnKXZvaWQgMD09PWNbZF0mJihjW2RdPWdbZF0pO3JldHVybnskJHR5cGVvZjpsLHR5cGU6YSxrZXk6ayxyZWY6aCxwcm9wczpjLF9vd25lcjpLLmN1cnJlbnR9fVxuZnVuY3Rpb24gTihhLGIpe3JldHVybnskJHR5cGVvZjpsLHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTyhhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09bH1mdW5jdGlvbiBlc2NhcGUoYSl7dmFyIGI9e1wiPVwiOlwiPTBcIixcIjpcIjpcIj0yXCJ9O3JldHVyblwiJFwiK2EucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfSl9dmFyIFA9L1xcLysvZztmdW5jdGlvbiBRKGEsYil7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk/ZXNjYXBlKFwiXCIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfVxuZnVuY3Rpb24gUihhLGIsZSxkLGMpe3ZhciBrPXR5cGVvZiBhO2lmKFwidW5kZWZpbmVkXCI9PT1rfHxcImJvb2xlYW5cIj09PWspYT1udWxsO3ZhciBoPSExO2lmKG51bGw9PT1hKWg9ITA7ZWxzZSBzd2l0Y2goayl7Y2FzZSBcInN0cmluZ1wiOmNhc2UgXCJudW1iZXJcIjpoPSEwO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBsOmNhc2UgbjpoPSEwfX1pZihoKXJldHVybiBoPWEsYz1jKGgpLGE9XCJcIj09PWQ/XCIuXCIrUShoLDApOmQsSShjKT8oZT1cIlwiLG51bGwhPWEmJihlPWEucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSxSKGMsYixlLFwiXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KSk6bnVsbCE9YyYmKE8oYykmJihjPU4oYyxlKyghYy5rZXl8fGgmJmgua2V5PT09Yy5rZXk/XCJcIjooXCJcIitjLmtleSkucmVwbGFjZShQLFwiJCYvXCIpK1wiL1wiKSthKSksYi5wdXNoKGMpKSwxO2g9MDtkPVwiXCI9PT1kP1wiLlwiOmQrXCI6XCI7aWYoSShhKSlmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7az1cbmFbZ107dmFyIGY9ZCtRKGssZyk7aCs9UihrLGIsZSxmLGMpfWVsc2UgaWYoZj1BKGEpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmKWZvcihhPWYuY2FsbChhKSxnPTA7IShrPWEubmV4dCgpKS5kb25lOylrPWsudmFsdWUsZj1kK1EoayxnKyspLGgrPVIoayxiLGUsZixjKTtlbHNlIGlmKFwib2JqZWN0XCI9PT1rKXRocm93IGI9U3RyaW5nKGEpLEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIisoXCJbb2JqZWN0IE9iamVjdF1cIj09PWI/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhhKS5qb2luKFwiLCBcIikrXCJ9XCI6YikrXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCIpO3JldHVybiBofVxuZnVuY3Rpb24gUyhhLGIsZSl7aWYobnVsbD09YSlyZXR1cm4gYTt2YXIgZD1bXSxjPTA7UihhLGQsXCJcIixcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gZH1mdW5jdGlvbiBUKGEpe2lmKC0xPT09YS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7Yi50aGVuKGZ1bmN0aW9uKGIpe2lmKDA9PT1hLl9zdGF0dXN8fC0xPT09YS5fc3RhdHVzKWEuX3N0YXR1cz0xLGEuX3Jlc3VsdD1ifSxmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yn0pOy0xPT09YS5fc3RhdHVzJiYoYS5fc3RhdHVzPTAsYS5fcmVzdWx0PWIpfWlmKDE9PT1hLl9zdGF0dXMpcmV0dXJuIGEuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IGEuX3Jlc3VsdDt9XG52YXIgVT17Y3VycmVudDpudWxsfSxWPXt0cmFuc2l0aW9uOm51bGx9LFc9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6VSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzpWLFJlYWN0Q3VycmVudE93bmVyOkt9O2V4cG9ydHMuQ2hpbGRyZW49e21hcDpTLGZvckVhY2g6ZnVuY3Rpb24oYSxiLGUpe1MoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX0sY291bnQ6ZnVuY3Rpb24oYSl7dmFyIGI9MDtTKGEsZnVuY3Rpb24oKXtiKyt9KTtyZXR1cm4gYn0sdG9BcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gUyhhLGZ1bmN0aW9uKGEpe3JldHVybiBhfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGEpe2lmKCFPKGEpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBhfX07ZXhwb3J0cy5Db21wb25lbnQ9RTtleHBvcnRzLkZyYWdtZW50PXA7XG5leHBvcnRzLlByb2ZpbGVyPXI7ZXhwb3J0cy5QdXJlQ29tcG9uZW50PUc7ZXhwb3J0cy5TdHJpY3RNb2RlPXE7ZXhwb3J0cy5TdXNwZW5zZT13O2V4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9VztcbmV4cG9ydHMuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixlKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcihcIlJlYWN0LmNsb25lRWxlbWVudCguLi4pOiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIFJlYWN0IGVsZW1lbnQsIGJ1dCB5b3UgcGFzc2VkIFwiK2ErXCIuXCIpO3ZhciBkPUMoe30sYS5wcm9wcyksYz1hLmtleSxrPWEucmVmLGg9YS5fb3duZXI7aWYobnVsbCE9Yil7dm9pZCAwIT09Yi5yZWYmJihrPWIucmVmLGg9Sy5jdXJyZW50KTt2b2lkIDAhPT1iLmtleSYmKGM9XCJcIitiLmtleSk7aWYoYS50eXBlJiZhLnR5cGUuZGVmYXVsdFByb3BzKXZhciBnPWEudHlwZS5kZWZhdWx0UHJvcHM7Zm9yKGYgaW4gYilKLmNhbGwoYixmKSYmIUwuaGFzT3duUHJvcGVydHkoZikmJihkW2ZdPXZvaWQgMD09PWJbZl0mJnZvaWQgMCE9PWc/Z1tmXTpiW2ZdKX12YXIgZj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWYpZC5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxmKXtnPUFycmF5KGYpO1xuZm9yKHZhciBtPTA7bTxmO20rKylnW21dPWFyZ3VtZW50c1ttKzJdO2QuY2hpbGRyZW49Z31yZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YyxyZWY6ayxwcm9wczpkLF9vd25lcjpofX07ZXhwb3J0cy5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGEpe2E9eyQkdHlwZW9mOnUsX2N1cnJlbnRWYWx1ZTphLF9jdXJyZW50VmFsdWUyOmEsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9kZWZhdWx0VmFsdWU6bnVsbCxfZ2xvYmFsTmFtZTpudWxsfTthLlByb3ZpZGVyPXskJHR5cGVvZjp0LF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPWF9O2V4cG9ydHMuY3JlYXRlRWxlbWVudD1NO2V4cG9ydHMuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1NLmJpbmQobnVsbCxhKTtiLnR5cGU9YTtyZXR1cm4gYn07ZXhwb3J0cy5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX07XG5leHBvcnRzLmZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJueyQkdHlwZW9mOnYscmVuZGVyOmF9fTtleHBvcnRzLmlzVmFsaWRFbGVtZW50PU87ZXhwb3J0cy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp5LF9wYXlsb2FkOntfc3RhdHVzOi0xLF9yZXN1bHQ6YX0sX2luaXQ6VH19O2V4cG9ydHMubWVtbz1mdW5jdGlvbihhLGIpe3JldHVybnskJHR5cGVvZjp4LHR5cGU6YSxjb21wYXJlOnZvaWQgMD09PWI/bnVsbDpifX07ZXhwb3J0cy5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9Vi50cmFuc2l0aW9uO1YudHJhbnNpdGlvbj17fTt0cnl7YSgpfWZpbmFsbHl7Vi50cmFuc2l0aW9uPWJ9fTtleHBvcnRzLnVuc3RhYmxlX2FjdD1mdW5jdGlvbigpe3Rocm93IEVycm9yKFwiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC5cIik7fTtcbmV4cG9ydHMudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNhbGxiYWNrKGEsYil9O2V4cG9ydHMudXNlQ29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZUNvbnRleHQoYSl9O2V4cG9ydHMudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe307ZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShhKX07ZXhwb3J0cy51c2VFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIFUuY3VycmVudC51c2VJZCgpfTtleHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlSW1wZXJhdGl2ZUhhbmRsZShhLGIsZSl9O1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUluc2VydGlvbkVmZmVjdChhLGIpfTtleHBvcnRzLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTGF5b3V0RWZmZWN0KGEsYil9O2V4cG9ydHMudXNlTWVtbz1mdW5jdGlvbihhLGIpe3JldHVybiBVLmN1cnJlbnQudXNlTWVtbyhhLGIpfTtleHBvcnRzLnVzZVJlZHVjZXI9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlUmVkdWNlcihhLGIsZSl9O2V4cG9ydHMudXNlUmVmPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlUmVmKGEpfTtleHBvcnRzLnVzZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBVLmN1cnJlbnQudXNlU3RhdGUoYSl9O2V4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBVLmN1cnJlbnQudXNlU3luY0V4dGVybmFsU3RvcmUoYSxiLGUpfTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfTtleHBvcnRzLnZlcnNpb249XCIxOC4yLjBcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///218\n')},526:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nif (true) {\n module.exports = __webpack_require__(218);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTI2LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksSUFBcUM7QUFDekMsRUFBRSx5Q0FBeUQ7QUFDM0QsRUFBRSxLQUFLLEVBRU4iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvcmVhY3QvaW5kZXguanM/Y2E3OCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///526\n")},390:module=>{eval('/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n "use strict";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === "function" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || "@@iterator";\n var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";\n var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, "");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there\'s no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don\'t have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: "normal", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: "throw", arg: err };\n }\n }\n\n var GenStateSuspendedStart = "suspendedStart";\n var GenStateSuspendedYield = "suspendedYield";\n var GenStateExecuting = "executing";\n var GenStateCompleted = "completed";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don\'t natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n "constructor",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n "GeneratorFunction"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n ["next", "throw", "return"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === "function" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === "GeneratorFunction"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, "GeneratorFunction");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, "__await")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === "throw") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === "object" &&\n hasOwn.call(value, "__await")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke("next", value, resolve, reject);\n }, function(err) {\n invoke("throw", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke("throw", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, "_invoke", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error("Generator is already running");\n }\n\n if (state === GenStateCompleted) {\n if (method === "throw") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === "next") {\n // Setting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === "throw") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === "return") {\n context.abrupt("return", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === "normal") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === "throw") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = "throw";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: ["return"] must be used for ES3 parsing compatibility.\n if (methodName === "throw" && delegate.iterator["return"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = "return";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === "throw") {\n // If maybeInvokeDelegate(context) changed context.method from\n // "return" to "throw", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== "return") {\n context.method = "throw";\n context.arg = new TypeError(\n "The iterator does not provide a \'" + methodName + "\' method");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === "throw") {\n context.method = "throw";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = "throw";\n context.arg = new TypeError("iterator result is not an object");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was "throw" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was "next", forget context.arg since it has been\n // "consumed" by the delegate iterator. If context.method was\n // "return", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== "return") {\n context.method = "next";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, "Generator");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers\' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn\'t happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, "toString", function() {\n return "[object Generator]";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = "normal";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: "root" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === "function") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = "next";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === "t" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === "throw") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = "throw";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = "next";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === "root") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle("end");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, "catchLoc");\n var hasFinally = hasOwn.call(entry, "finallyLoc");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error("try statement without catch or finally");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, "finallyLoc") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === "break" ||\n type === "continue") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = "next";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === "throw") {\n throw record.arg;\n }\n\n if (record.type === "break" ||\n record.type === "continue") {\n this.next = record.arg;\n } else if (record.type === "return") {\n this.rval = this.arg = record.arg;\n this.method = "return";\n this.next = "end";\n } else if (record.type === "normal" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n "catch": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === "throw") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error("illegal catch attempt");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === "next") {\n // Deliberately forget the last sent value so that we don\'t\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : 0\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you\'ve misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you\'re not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === "object") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function("r", "regeneratorRuntime = r")(runtime);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzkwLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUUsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLGlEQUFpRDs7QUFFNUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixNQUFNO0FBQ04sZUFBZTtBQUNmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQ7QUFDMUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyx1REFBdUQ7QUFDN0Y7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLFdBQVc7QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQyxnQkFBZ0I7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyxjQUFjO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQyxtQkFBbUI7QUFDcEQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnQkFBZ0I7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUEsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSwrQ0FBK0MsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsS0FBMEIsb0JBQW9CLENBQUU7QUFDbEQ7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz9iNjY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZnVuY3Rpb24gKG9iaiwga2V5LCBkZXNjKSB7IG9ialtrZXldID0gZGVzYy52YWx1ZTsgfTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLCBcIl9pbnZva2VcIiwgeyB2YWx1ZTogbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB9KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgZGVmaW5lKEl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBkZWZpbmVQcm9wZXJ0eShHcCwgXCJjb25zdHJ1Y3RvclwiLCB7IHZhbHVlOiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICBkZWZpbmVQcm9wZXJ0eShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICBcImNvbnN0cnVjdG9yXCIsXG4gICAgeyB2YWx1ZTogR2VuZXJhdG9yRnVuY3Rpb24sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9XG4gICk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGVmaW5lKFxuICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLFxuICAgIHRvU3RyaW5nVGFnU3ltYm9sLFxuICAgIFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICApO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIGRlZmluZShwcm90b3R5cGUsIG1ldGhvZCwgZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBleHBvcnRzLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGRlZmluZShnZW5GdW4sIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvckZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBleHBvcnRzLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIC8vIElmIGEgcmVqZWN0ZWQgUHJvbWlzZSB3YXMgeWllbGRlZCwgdGhyb3cgdGhlIHJlamVjdGlvbiBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSBoYW5kbGVkIHRoZXJlLlxuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VJbXBsKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIl9pbnZva2VcIiwgeyB2YWx1ZTogZW5xdWV1ZSB9KTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIGRlZmluZShBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSwgYXN5bmNJdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2ROYW1lID0gY29udGV4dC5tZXRob2Q7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW21ldGhvZE5hbWVdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QsIG9yIGEgbWlzc2luZyAubmV4dCBtZWh0b2QsIGFsd2F5cyB0ZXJtaW5hdGUgdGhlXG4gICAgICAvLyB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgaWYgKG1ldGhvZE5hbWUgPT09IFwidGhyb3dcIiAmJiBkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXSkge1xuICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWV0aG9kTmFtZSAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAnXCIgKyBtZXRob2ROYW1lICsgXCInIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIGRlZmluZShHcCwgaXRlcmF0b3JTeW1ib2wsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICBkZWZpbmUoR3AsIFwidG9TdHJpbmdcIiwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24odmFsKSB7XG4gICAgdmFyIG9iamVjdCA9IE9iamVjdCh2YWwpO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xuXG4gIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgLy8gb3Igbm90LCByZXR1cm4gdGhlIHJ1bnRpbWUgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIGRlY2xhcmUgdGhlIHZhcmlhYmxlXG4gIC8vIHJlZ2VuZXJhdG9yUnVudGltZSBpbiB0aGUgb3V0ZXIgc2NvcGUsIHdoaWNoIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZVxuICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICByZXR1cm4gZXhwb3J0cztcblxufShcbiAgLy8gSWYgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlLCB1c2UgbW9kdWxlLmV4cG9ydHNcbiAgLy8gYXMgdGhlIHJlZ2VuZXJhdG9yUnVudGltZSBuYW1lc3BhY2UuIE90aGVyd2lzZSBjcmVhdGUgYSBuZXcgZW1wdHlcbiAgLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuICAvLyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIHZhcmlhYmxlIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLlxuICB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiID8gbW9kdWxlLmV4cG9ydHMgOiB7fVxuKSk7XG5cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAvLyBhc3NpZ25tZW50IHNob3VsZCBhbHdheXMgd29yayB1bmxlc3Mgc29tZXRoaW5nIGlzIG1pc2NvbmZpZ3VyZWQuIEp1c3RcbiAgLy8gaW4gY2FzZSBydW50aW1lLmpzIGFjY2lkZW50YWxseSBydW5zIGluIHN0cmljdCBtb2RlLCBpbiBtb2Rlcm4gZW5naW5lc1xuICAvLyB3ZSBjYW4gZXhwbGljaXRseSBhY2Nlc3MgZ2xvYmFsVGhpcy4gSW4gb2xkZXIgZW5naW5lcyB3ZSBjYW4gZXNjYXBlXG4gIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAvLyBpZiBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGZvcmJpZHMgdXNpbmcgRnVuY3Rpb24sIGJ1dCBpbiB0aGF0IGNhc2VcbiAgLy8gdGhlIHByb3BlciBzb2x1dGlvbiBpcyB0byBmaXggdGhlIGFjY2lkZW50YWwgc3RyaWN0IG1vZGUgcHJvYmxlbS4gSWZcbiAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgLy8gQ1NQIHRvIGZvcmJpZCBGdW5jdGlvbiwgYW5kIHlvdSdyZSBub3Qgd2lsbGluZyB0byBmaXggZWl0aGVyIG9mIHRob3NlXG4gIC8vIHByb2JsZW1zLCBwbGVhc2UgZGV0YWlsIHlvdXIgdW5pcXVlIHByZWRpY2FtZW50IGluIGEgR2l0SHViIGlzc3VlLlxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///390\n')},196:(__unused_webpack_module,exports)=>{"use strict";eval('/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nfunction f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if("object"===typeof performance&&"function"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D="function"===typeof setTimeout?setTimeout:null,E="function"===typeof clearTimeout?clearTimeout:null,F="undefined"!==typeof setImmediate?setImmediate:null;\n"undefined"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if("function"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();"function"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if("function"===typeof F)S=function(){F(R)};else if("undefined"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTk2LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhLGdCQUFnQixlQUFlLFVBQVUsT0FBTyxJQUFJLEVBQUUscUJBQXFCLDhCQUE4QixjQUFjLGNBQWMsOEJBQThCLGNBQWMsNEJBQTRCLHFCQUFxQixVQUFVLE9BQU8saUNBQWlDLElBQUksRUFBRSxvQ0FBb0Msa0VBQWtFLHdDQUF3QyxjQUFjO0FBQ25jLGdCQUFnQiw4QkFBOEIseUJBQXlCLHVFQUF1RSxrQkFBa0Isb0JBQW9CLFlBQVksZ0JBQWdCLEtBQUsscUJBQXFCLG9CQUFvQixZQUFZLGtCQUFrQjtBQUM1Uiw0S0FBNEssY0FBYyxlQUFlLFNBQVMsRUFBRSwwQkFBMEIsZ0VBQWdFLFdBQVcsUUFBUSxjQUFjLEtBQUssS0FBSywrQkFBK0IsS0FBSyxXQUFXO0FBQ3hZLGdCQUFnQixLQUFLLG9CQUFvQixLQUFLLFFBQVEsSUFBSSxLQUFLLFdBQVcsMkNBQTJDLEVBQUUsaUJBQWlCLDBCQUEwQixnQkFBZ0Isa0JBQWtCLDZCQUE2Qix5QkFBeUIsa0RBQWtELEtBQUssVUFBVSxPQUFPLHFCQUFxQixLQUFLLFdBQVcsNkJBQTZCLEtBQUssU0FBUyxRQUFRLGlCQUFpQjtBQUMzYSxhQUFhLHdDQUF3QyxhQUFhLGFBQWEsNkJBQTZCLElBQUksU0FBUyxJQUFJLFVBQVUsUUFBUSxxQkFBcUIsVUFBVSxNQUFNLHNDQUFzQyxNQUFNLDZDQUE2QyxtQ0FBbUMsb0JBQW9CLGFBQWEscUJBQXFCLGtCQUFrQixRQUFRLGNBQWMsSUFBSSxjQUFjLGdCQUFnQixlQUFlLDBCQUEwQjtBQUN6ZCw2QkFBNkIsR0FBRyxrQ0FBa0MsR0FBRyw0QkFBNEIsR0FBRywrQkFBK0IsR0FBRywwQkFBMEIsTUFBTSxxQ0FBcUMsR0FBRywrQkFBK0IsYUFBYSxpQkFBaUIsa0NBQWtDLFlBQVk7QUFDelQsK0JBQStCLGFBQWEsdUtBQXVLLHdDQUF3QyxZQUFZLFVBQVUscUNBQXFDLFlBQVksYUFBYSxxQkFBcUIsYUFBYSxVQUFVLDZCQUE2QixNQUFNLFlBQVksUUFBUSxJQUFJLElBQUksV0FBVyxRQUFRLE1BQU0sK0JBQStCO0FBQ2xmLDZCQUE2QixjQUFjLGdDQUFnQyxlQUFlLFVBQVUseUNBQXlDLFlBQVksUUFBUSxJQUFJLElBQUksV0FBVyxRQUFRO0FBQzVMLGlDQUFpQyxpQkFBaUIsNkJBQTZCLCtFQUErRSxVQUFVLGdCQUFnQixNQUFNLGFBQWEsTUFBTSxvQkFBb0IsTUFBTSxhQUFhLE1BQU0sY0FBYyxNQUFNLEdBQUcsNkVBQTZFLHlIQUF5SDtBQUMzZCw0QkFBNEIsR0FBRyw2QkFBNkIsYUFBYSxRQUFRLGtCQUFrQixRQUFRLElBQUksSUFBSSwrQkFBK0IsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovL0Nhb3NEQldlYnVpMi8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcz9mODE5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///196\n')},851:(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nif (true) {\n module.exports = __webpack_require__(196);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODUxLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksSUFBcUM7QUFDekMsRUFBRSx5Q0FBNkQ7QUFDL0QsRUFBRSxLQUFLLEVBRU4iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzPzk1YjYiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///851\n")}},__webpack_module_cache__={};function __webpack_require__(F){var l=__webpack_module_cache__[F];if(void 0!==l)return l.exports;var c=__webpack_module_cache__[F]={exports:{}};return __webpack_modules__[F](c,c.exports,__webpack_require__),c.exports}__webpack_require__.n=F=>{var l=F&&F.__esModule?()=>F.default:()=>F;return __webpack_require__.d(l,{a:l}),l},__webpack_require__.d=(F,l)=>{for(var c in l)__webpack_require__.o(l,c)&&!__webpack_require__.o(F,c)&&Object.defineProperty(F,c,{enumerable:!0,get:l[c]})},__webpack_require__.o=(F,l)=>Object.prototype.hasOwnProperty.call(F,l),__webpack_require__.r=F=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(F,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(F,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(557);window.CaosDBWebui2=__webpack_exports__})(); \ No newline at end of file