diff --git a/src/core/js/file-upload.bundle.js b/src/core/js/file-upload.bundle.js
index f6981b3163a46f85aadc8478a8cb6a130e0cad26..eb49ec1fea5be3f8520da1b7ee92e5242738d2b1 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};\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};\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};\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};\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.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};\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};\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};\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}();\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  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            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  if (false) {}\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbS9jbGllbnRcIjtcbmltcG9ydCBcInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZVwiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gXCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1jb3JlLWNvbXBvbmVudHNcIjtcblxuY29uc3QgZ2V0X2ZpbGVzeXN0ZW1fYm9keSA9ICgpID0+IHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2Fvc2RiLWYtZmlsZXN5c3RlbSAuY2FyZC1ib2R5XCIpO1xufTtcblxuY29uc3QgZ2V0X2ZpbGVzeXN0ZW1faGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjYW9zZGItZi1maWxlc3lzdGVtIC5jYXJkLWhlYWRlclwiKTtcbn07XG5cbmNvbnN0IGdldF9jdXJyZW50X2RpcmVjdG9yeSA9ICgpID0+IHtcbiAgY29uc3QgaGVhZGVyID0gZ2V0X2ZpbGVzeXN0ZW1faGVhZGVyKCk7XG4gIGlmICghaGVhZGVyKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKGhlYWRlci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY2Fvc2RiLWZzLWN3ZFwiKSkubWFwKFxuICAgIChlbCkgPT4gZWwudGV4dENvbnRlbnQsXG4gICk7XG59O1xuXG5jb25zdCBjcmVhdGVfZmlsZV91cGxvYWRfcmVxdWVzdF94bWwgPSAoZmlsZXMsIHRhcmdldERpcmVjdG9yeSwgcmVjb3JkVHlwZSkgPT4ge1xuICBjb25zdCBfcGFyZW50ID0gcmVjb3JkVHlwZSA/IGA8UGFyZW50IGlkPVwiJHtyZWNvcmRUeXBlfVwiLz5gIDogXCJcIjtcbiAgY29uc3QgcmVxdWVzdCA9XG4gICAgXCI8UmVxdWVzdD5cIiArXG4gICAgZmlsZXMubWFwKChmLCBpZHgpID0+IHtcbiAgICAgIHJldHVybiBgPEZpbGUgdXBsb2FkPVwiJHtpZHh9LSR7Zi5uYW1lfVwiIHBhdGg9XCIke3RhcmdldERpcmVjdG9yeX0ke2YubmFtZX1cIj4ke19wYXJlbnR9PC9GaWxlPmA7XG4gICAgfSkgK1xuICAgIFwiPC9SZXF1ZXN0PlwiO1xuXG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxuY29uc3QgY3JlYXRlX2Zvcm1fZGF0YSA9ICh4bWwsIGZpbGVzKSA9PiB7XG4gIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gIGZvcm1EYXRhLmFwcGVuZChcIkZpbGVSZXByZXNlbnRhdGlvblwiLCB4bWwpO1xuICBmaWxlcy5mb3JFYWNoKChmLCBpZHgpID0+IHtcbiAgICBjb25zdCBuYW1lID0gYCR7aWR4fS0ke2YubmFtZX1gO1xuICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBmLmZpbGUsIG5hbWUpO1xuICB9KTtcbiAgcmV0dXJuIGZvcm1EYXRhO1xufTtcblxuY29uc3Qgc3BsaXRfcGFyZW50X2RpciA9IChub2RlKSA9PiB7XG4gIHJlcGFpcl91cmkobm9kZSwgXCJocmVmXCIpO1xuICBjb25zdCBwYXRoX29sZCA9IG5vZGVcbiAgICAuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKVxuICAgIC5zdWJzdHJpbmcoY29ubmVjdGlvbi5nZXRGaWxlU3lzdGVtUGF0aCgpLmxlbmd0aClcbiAgICAuc3BsaXQoXCIvXCIpO1xuICBpZiAocGF0aF9vbGQubGVuZ3RoID4gMSkge1xuICAgIGNvbnN0IHBhcmVudF9kaXIgPSBwYXRoX29sZC5zbGljZSgwLCBwYXRoX29sZC5sZW5ndGggLSAxKTtcbiAgICBjb25zdCBwYXJlbnRfZGlyX25vZGUgPSBub2RlLmNsb25lTm9kZSgpO1xuICAgIHBhcmVudF9kaXJfbm9kZS5zZXRBdHRyaWJ1dGUoXG4gICAgICBcImhyZWZcIixcbiAgICAgIGNvbm5lY3Rpb24uZ2V0RmlsZVN5c3RlbVBhdGgoKSArIHBhcmVudF9kaXIuam9pbihcIi9cIikgKyBcIi9cIixcbiAgICApO1xuICAgIHBhcmVudF9kaXJfbm9kZS50ZXh0Q29udGVudCA9IHBhcmVudF9kaXIuam9pbihcIi9cIikgKyBcIi9cIjtcbiAgICBwYXJlbnRfZGlyLnRpdGxlID0gXCJHbyB0byBwYXJlbnQgZGlyZWN0b3J5LlwiO1xuICAgIG5vZGUuYmVmb3JlKHBhcmVudF9kaXJfbm9kZSk7XG4gICAgbm9kZS5kYXRhc2V0LmVudGl0eVBhdGggPSBub2RlLnRleHRDb250ZW50O1xuICAgIG5vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50LnNwbGl0KFwiL1wiKS5zbGljZSgtMSlbMF07XG4gICAgbm9kZS50aXRsZSA9IFwiRG93bmxvYWQgdGhpcyBmaWxlXCI7XG4gIH1cbn07XG5cbmNvbnN0IHJlcGFpcl91cmkgPSAobm9kZSwgYXR0cikgPT4ge1xuICBjb25zdCBwYXRoX29sZCA9IG5vZGVcbiAgICAuZ2V0QXR0cmlidXRlKGF0dHIpXG4gICAgLnN1YnN0cmluZyhjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkubGVuZ3RoKVxuICAgIC5zcGxpdChcIi9cIik7XG4gIGNvbnN0IHBhdGhfbmV3ID0gcGF0aF9vbGQubWFwKGVuY29kZVVSSUNvbXBvbmVudCk7XG4gIG5vZGUuc2V0QXR0cmlidXRlKGF0dHIsIGNvbm5lY3Rpb24uZ2V0RmlsZVN5c3RlbVBhdGgoKSArIHBhdGhfbmV3LmpvaW4oXCIvXCIpKTtcbn07XG5cbmNvbnN0IHVwbG9hZFJlcXVlc3QgPSAoZm9ybURhdGEpID0+IHtcbiAgcmV0dXJuICQuYWpheCh7XG4gICAgdXJsOiBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkVudGl0eS9cIixcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGRhdGFUeXBlOiBcInhtbFwiLFxuICAgIGNvbnRlbnRUeXBlOiBmYWxzZSxcbiAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG4gICAgZGF0YTogZm9ybURhdGEsXG4gIH0pO1xufTtcblxuY29uc3QgZGVmYXVsdE9uU3VibWl0ID0gYXN5bmMgKGRhdGEpID0+IHtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjb2xsYXBzZUZpbGVVcGxvYWR+dWxcIik/LnJlbW92ZSgpO1xuICB2YXIgeyBmaWxlcywgZGlyZWN0b3J5LCByZWNvcmRUeXBlIH0gPSBkYXRhO1xuICBkaXJlY3RvcnkgPSBkaXJlY3RvcnkgfHwgW107XG4gIGRpcmVjdG9yeSA9IGRpcmVjdG9yeS5sZW5ndGggPiAwID8gXCIvXCIgKyBkaXJlY3Rvcnkuam9pbihcIi9cIikgKyBcIi9cIiA6IFwiL1wiO1xuXG4gIGNvbnN0IHhtbCA9IGNyZWF0ZV9maWxlX3VwbG9hZF9yZXF1ZXN0X3htbChmaWxlcywgZGlyZWN0b3J5LCByZWNvcmRUeXBlKTtcbiAgY29uc3QgZm9ybURhdGEgPSBjcmVhdGVfZm9ybV9kYXRhKHhtbCwgZmlsZXMpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHVwbG9hZFJlcXVlc3QoZm9ybURhdGEpO1xuICAvLyBUT0RPIGhhbmRsZSBYTUxEb2N1bWVudCwgZXh0cmFjdCBlcnJvcnMgb3IgaWRzLlxuICBjb25zdCBpdGVyYXRvciA9IHJlc3BvbnNlLmV2YWx1YXRlKFxuICAgIFwiL1Jlc3BvbnNlL0ZpbGVcIixcbiAgICByZXNwb25zZSxcbiAgICBudWxsLFxuICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsXG4gICk7XG4gIGNvbnN0IG5ld0ZpbGVzID0gW107XG5cbiAgdmFyIG5leHQgPSBpdGVyYXRvci5pdGVyYXRlTmV4dCgpO1xuICB2YXIgaGFzRXJyb3JzID0gZmFsc2U7XG4gIHdoaWxlIChuZXh0KSB7XG4gICAgdmFyIGVycm9yID0gcmVzcG9uc2VcbiAgICAgIC5ldmFsdWF0ZShcIkVycm9yXCIsIG5leHQsIG51bGwsIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUpXG4gICAgICA/Lml0ZXJhdGVOZXh0KCk7XG4gICAgY29uc3QgcGF0aCA9IHJlc3BvbnNlLmV2YWx1YXRlKFxuICAgICAgXCJAcGF0aFwiLFxuICAgICAgbmV4dCxcbiAgICAgIG51bGwsXG4gICAgICBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSxcbiAgICApPy5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBpZCA9IHJlc3BvbnNlLmV2YWx1YXRlKFxuICAgICAgXCJAaWRcIixcbiAgICAgIG5leHQsXG4gICAgICBudWxsLFxuICAgICAgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUsXG4gICAgKT8uc3RyaW5nVmFsdWU7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgZXJyb3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgICAgXCJAZGVzY3JpcHRpb25cIixcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICAgKT8uc3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIG5ld0ZpbGVzLnB1c2goe1xuICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgaWQ6IGlkLFxuICAgICAgcGF0aDogcGF0aCxcbiAgICAgIHVybDogIWlkIHx8IGNvbm5lY3Rpb24uZ2V0QmFzZVBhdGgoKSArIFwiRW50aXR5L1wiICsgaWQsXG4gICAgfSk7XG4gICAgbmV4dCA9IGl0ZXJhdG9yLml0ZXJhdGVOZXh0KCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBoYXNFcnJvcnM6IGhhc0Vycm9ycyxcbiAgICB1cmw6IGNvbm5lY3Rpb24uZ2V0QmFzZVBhdGgoKSArIFwiRmlsZVN5c3RlbS9cIiArIGRpcmVjdG9yeSxcbiAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSxcbiAgICBuZXdGaWxlczogbmV3RmlsZXMsXG4gIH07XG59O1xuXG5jb25zdCBmaW5kU3VpdGFibGVSZWNvcmRUeXBlcyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjb25uZWN0aW9uLmdldChcIkVudGl0eS8/cXVlcnk9RklORCBSRUNPUkRUWVBFXCIpO1xuICBjb25zdCBpdGVyYXRvciA9IHJlc3BvbnNlLmV2YWx1YXRlKFxuICAgIFwiL1Jlc3BvbnNlL1JlY29yZFR5cGVcIixcbiAgICByZXNwb25zZSxcbiAgICBudWxsLFxuICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsXG4gICk7XG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICB2YXIgbjtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBuID0gaXRlcmF0b3IuaXRlcmF0ZU5leHQoKTtcbiAgICBpZiAoIW4pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBoYXNVc2VQZXJtaXNzaW9uID0gcmVzcG9uc2VcbiAgICAgIC5ldmFsdWF0ZShcbiAgICAgICAgXCJQZXJtaXNzaW9ucy9QZXJtaXNzaW9uW0BuYW1lPSdVU0U6QVNfUEFSRU5UJ11cIixcbiAgICAgICAgbixcbiAgICAgICAgbnVsbCxcbiAgICAgICAgWFBhdGhSZXN1bHQuVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSxcbiAgICAgIClcbiAgICAgIC5pdGVyYXRlTmV4dCgpO1xuICAgIGlmICghaGFzVXNlUGVybWlzc2lvbikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzID0gcmVzcG9uc2VcbiAgICAgIC5ldmFsdWF0ZShcbiAgICAgICAgXCJQcm9wZXJ0eVtAaW1wb3J0YW5jZT0nT0JMSUdBVE9SWSddXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsXG4gICAgICApXG4gICAgICAuaXRlcmF0ZU5leHQoKTtcbiAgICBpZiAoaGFzT2JsaWdhdG9yeVByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXN1bHRzLnB1c2goe1xuICAgICAgbmFtZTogcmVzcG9uc2UuZXZhbHVhdGUoXCJAbmFtZVwiLCBuLCBudWxsLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSlcbiAgICAgICAgPy5zdHJpbmdWYWx1ZSxcbiAgICAgIGlkOiByZXNwb25zZS5ldmFsdWF0ZShcIkBpZFwiLCBuLCBudWxsLCBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSlcbiAgICAgICAgPy5zdHJpbmdWYWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgICAgXCJAZGVzY3JpcHRpb25cIixcbiAgICAgICAgbixcbiAgICAgICAgbnVsbCxcbiAgICAgICAgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUsXG4gICAgICApPy5zdHJpbmdWYWx1ZSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbmNvbnN0IGZpbGVfdXBsb2FkID0ge1xuICBnZXRfcmVjb3JkX3R5cGVzOiBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgLy8gVE9ETyBhZGQgcGVybWlzc2lvbnMgdG8gR1JQQyBBUEksIHRoZW4gdXNlIHRoaXMgYWdhaW5cbiAgICAvL2NvbnN0IHNlcnZpY2UgPSBuZXcgVHJhbnNhY3Rpb25TZXJ2aWNlKCk7XG4gICAgLy9jb25zdCByZXN1bHRzID0gYXdhaXQgc2VydmljZS5leGVjdXRlUXVlcnkoXCJGSU5EIFJFQ09SRFRZUEVcIik7XG4gICAgLy9jb25zb2xlLmxvZyhyZXN1bHRzKTtcbiAgICByZXR1cm4gYXdhaXQgZmluZFN1aXRhYmxlUmVjb3JkVHlwZXMoKTtcbiAgfSxcbiAgY3JlYXRlX2ZpbGVfdXBsb2FkX3dpZGdldDogZnVuY3Rpb24gKGNvbnRhaW5lciwgY29uZmlnKSB7XG4gICAgY29uc3Qgcm9vdCA9IFJlYWN0RE9NLmNyZWF0ZVJvb3QoY29udGFpbmVyKTtcbiAgICBjb25zdCBfY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgIGlmICghX2NvbmZpZy5oYXNPd25Qcm9wZXJ0eShcIm9uU3VibWl0XCIpKSB7XG4gICAgICBfY29uZmlnLm9uU3VibWl0ID0gZGVmYXVsdE9uU3VibWl0O1xuICAgIH1cblxuICAgIGlmICghX2NvbmZpZy5oYXNPd25Qcm9wZXJ0eShcInJlY29yZFR5cGVzXCIpKSB7XG4gICAgICBfY29uZmlnLnJlY29yZFR5cGVzID0gdGhpcy5nZXRfcmVjb3JkX3R5cGVzKCkudGhlbigocmVzdWx0cykgPT5cbiAgICAgICAgcmVzdWx0cy5tYXAoKHJ0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IHJ0Lm5hbWUsIHZhbHVlOiBydC5pZCwgdGl0bGU6IHJ0LmRlc2NyaXB0aW9uIH07XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByb290LnJlbmRlcihcbiAgICAgIDxSZWFjdC5TdHJpY3RNb2RlPlxuICAgICAgICA8Zm9ybT5cbiAgICAgICAgICA8RmlsZVVwbG9hZCB7Li4uX2NvbmZpZ30gLz5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9SZWFjdC5TdHJpY3RNb2RlPixcbiAgICApO1xuICB9LFxuXG4gIGNyZWF0ZV91cGxvYWRfYnV0dG9uOiAoKSA9PiB7XG4gICAgY29uc3QgYnV0dG9uID0gJChgXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicHktMCBweC0xIG1zLTIgYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIiBkYXRhLWJzLXRhcmdldD1cIiNjb2xsYXBzZUZpbGVVcGxvYWRcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhcmlhLWNvbnRyb2xzPVwiY29sbGFwc2VGaWxlVXBsb2FkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktcGx1cy1sZ1wiLz5cbiAgICAgIDwvYnV0dG9uPmApO1xuXG4gICAgY29uc3QgX29uQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBidXR0b25bMF0uY2xhc3NMaXN0LmFkZChcImQtbm9uZVwiKTtcbiAgICB9O1xuICAgIGJ1dHRvbi5vbihcImNsaWNrXCIsIF9vbkNsaWNrKTtcbiAgICByZXR1cm4gYnV0dG9uWzBdO1xuICB9LFxuXG4gIGluaXRfZmlsZV91cGxvYWQ6IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSAkKFxuICAgICAgYDxkaXYgY2xhc3M9XCJyb3cgY29sbGFwc2UgbWItNVwiIGlkPVwiY29sbGFwc2VGaWxlVXBsb2FkXCIvPmAsXG4gICAgKTtcbiAgICBjb25zdCBmaWxlc3lzdGVtX2hlYWRlciA9XG4gICAgICBnZXRfZmlsZXN5c3RlbV9oZWFkZXIoKT8ucXVlcnlTZWxlY3RvcihcImRpdi50ZXh0LWVuZFwiKTtcbiAgICBjb25zdCBmaWxlc3lzdGVtX2JvZHkgPSBnZXRfZmlsZXN5c3RlbV9ib2R5KCk7XG5cbiAgICBpZiAoZmlsZXN5c3RlbV9ib2R5ICYmIGZpbGVzeXN0ZW1faGVhZGVyKSB7XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLmNyZWF0ZV91cGxvYWRfYnV0dG9uKCk7XG4gICAgICBmaWxlc3lzdGVtX2hlYWRlci5hcHBlbmRDaGlsZChidXR0b24pO1xuXG4gICAgICAkKGZpbGVzeXN0ZW1fYm9keSkucHJlcGVuZChjb250YWluZXIpO1xuXG4gICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgIGRpcmVjdG9yeVJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgZGlyZWN0b3J5QmFzZTogZ2V0X2N1cnJlbnRfZGlyZWN0b3J5KCksXG4gICAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7XG4gICAgICAgICAgYnV0dG9uLmNsaWNrKCk7XG4gICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoXCJkLW5vbmVcIik7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmluaXNoOiAoKSA9PiB7XG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuY3JlYXRlX2ZpbGVfdXBsb2FkX3dpZGdldChjb250YWluZXJbMF0sIGNvbmZpZyk7XG4gICAgfVxuICB9LFxuXG4gIHJlcGFpcl9maWxlX3N5c3RlbV9saW5rczogZnVuY3Rpb24gKCkge1xuICAgIC8vIGVudGl0eSB2aWV3XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiLmNhb3NkYi1lbnRpdHktaGVhZGluZy1hdHRyIGFcIilcbiAgICAgIC5mb3JFYWNoKHNwbGl0X3BhcmVudF9kaXIpO1xuXG4gICAgLy8gZmlsZXN5c3RlbSB2aWV3XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nLmVudGl0eS1pbWFnZS1wcmV2aWV3XCIpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gcmVwYWlyX3VyaShub2RlLCBcInNyY1wiKSk7XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiYS5jYW9zZGItZnMtZmlsZVwiKVxuICAgICAgLmZvckVhY2goKG5vZGUpID0+IHJlcGFpcl91cmkobm9kZSwgXCJocmVmXCIpKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhLmNhb3NkYi1mcy1kaXJcIilcbiAgICAgIC5mb3JFYWNoKChub2RlKSA9PiByZXBhaXJfdXJpKG5vZGUsIFwiaHJlZlwiKSk7XG4gIH0sXG5cbiAgaW5pdDogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5pdF9maWxlX3VwbG9hZCgpO1xuICAgIHRoaXMucmVwYWlyX2ZpbGVfc3lzdGVtX2xpbmtzKCk7XG4gICAgd2luZG93LmNhb3NkYl9maWxlX3VwbG9hZF93aWRnZXQgPSB0aGlzO1xuICB9LFxufTtcblxuJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICBpZiAoXCIke0JVSUxEX01PRFVMRV9FWFRfRklMRV9VUExPQUR9XCIgPT09IFwiRU5BQkxFRFwiKSB7XG4gICAgY2Fvc2RiX21vZHVsZXMucmVnaXN0ZXIoZmlsZV91cGxvYWQpO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsImRlc2MiLCJ2YWx1ZSIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwic2VsZiIsInRyeUxvY3NMaXN0IiwicHJvdG9HZW5lcmF0b3IiLCJHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJjcmVhdGUiLCJjb250ZXh0IiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwidHlwZSIsImNhbGwiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInRoZW4iLCJ1bndyYXBwZWQiLCJlcnJvciIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiZG9uZSIsIm1ldGhvZE5hbWUiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJsZW5ndGgiLCJpIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsImtleXMiLCJ2YWwiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJSZWFjdCIsIlJlYWN0RE9NIiwiRmlsZVVwbG9hZCIsImdldF9maWxlc3lzdGVtX2JvZHkiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRfZmlsZXN5c3RlbV9oZWFkZXIiLCJnZXRfY3VycmVudF9kaXJlY3RvcnkiLCJoZWFkZXIiLCJBcnJheSIsImZyb20iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwibWFwIiwiZWwiLCJ0ZXh0Q29udGVudCIsImNyZWF0ZV9maWxlX3VwbG9hZF9yZXF1ZXN0X3htbCIsImZpbGVzIiwidGFyZ2V0RGlyZWN0b3J5IiwicmVjb3JkVHlwZSIsIl9wYXJlbnQiLCJjb25jYXQiLCJyZXF1ZXN0IiwiZiIsImlkeCIsImNyZWF0ZV9mb3JtX2RhdGEiLCJ4bWwiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiZmlsZSIsInNwbGl0X3BhcmVudF9kaXIiLCJub2RlIiwicmVwYWlyX3VyaSIsInBhdGhfb2xkIiwiZ2V0QXR0cmlidXRlIiwic3Vic3RyaW5nIiwiY29ubmVjdGlvbiIsImdldEZpbGVTeXN0ZW1QYXRoIiwic3BsaXQiLCJwYXJlbnRfZGlyIiwicGFyZW50X2Rpcl9ub2RlIiwiY2xvbmVOb2RlIiwic2V0QXR0cmlidXRlIiwiam9pbiIsInRpdGxlIiwiYmVmb3JlIiwiZGF0YXNldCIsImVudGl0eVBhdGgiLCJhdHRyIiwicGF0aF9uZXciLCJlbmNvZGVVUklDb21wb25lbnQiLCJ1cGxvYWRSZXF1ZXN0IiwiJCIsImFqYXgiLCJ1cmwiLCJnZXRCYXNlUGF0aCIsImRhdGFUeXBlIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImRhdGEiLCJkZWZhdWx0T25TdWJtaXQiLCJfcmVmIiwiX2NhbGxlZSIsIl9kb2N1bWVudCRxdWVyeVNlbGVjdCIsImRpcmVjdG9yeSIsInJlc3BvbnNlIiwibmV3RmlsZXMiLCJoYXNFcnJvcnMiLCJfcmVzcG9uc2UkZXZhbHVhdGUiLCJfcmVzcG9uc2UkZXZhbHVhdGUyIiwiX3Jlc3BvbnNlJGV2YWx1YXRlMyIsInBhdGgiLCJpZCIsIl9yZXNwb25zZSRldmFsdWF0ZTQiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicmVtb3ZlIiwiZXZhbHVhdGUiLCJYUGF0aFJlc3VsdCIsIlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUiLCJpdGVyYXRlTmV4dCIsIlNUUklOR19UWVBFIiwic3RyaW5nVmFsdWUiLCJfeCIsImZpbmRTdWl0YWJsZVJlY29yZFR5cGVzIiwiX3JlZjIiLCJfY2FsbGVlMiIsInJlc3VsdHMiLCJuIiwiX3Jlc3BvbnNlJGV2YWx1YXRlNSIsIl9yZXNwb25zZSRldmFsdWF0ZTYiLCJfcmVzcG9uc2UkZXZhbHVhdGU3IiwiaGFzVXNlUGVybWlzc2lvbiIsImhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0IiwiZGVzY3JpcHRpb24iLCJmaWxlX3VwbG9hZCIsImdldF9yZWNvcmRfdHlwZXMiLCJfZ2V0X3JlY29yZF90eXBlcyIsIl9jYWxsZWUzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiY3JlYXRlX2ZpbGVfdXBsb2FkX3dpZGdldCIsImNvbnRhaW5lciIsImNvbmZpZyIsInJvb3QiLCJjcmVhdGVSb290IiwiX2NvbmZpZyIsIm9uU3VibWl0IiwicmVjb3JkVHlwZXMiLCJydCIsImxhYmVsIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIlN0cmljdE1vZGUiLCJjcmVhdGVfdXBsb2FkX2J1dHRvbiIsImJ1dHRvbiIsIl9vbkNsaWNrIiwiY2xhc3NMaXN0IiwiYWRkIiwib24iLCJpbml0X2ZpbGVfdXBsb2FkIiwiX2dldF9maWxlc3lzdGVtX2hlYWRlIiwiZmlsZXN5c3RlbV9oZWFkZXIiLCJmaWxlc3lzdGVtX2JvZHkiLCJhcHBlbmRDaGlsZCIsInByZXBlbmQiLCJkaXJlY3RvcnlSZWFkT25seSIsImRpcmVjdG9yeUJhc2UiLCJvbkNhbmNlbCIsImNsaWNrIiwib25GaW5pc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCIsInJlcGFpcl9maWxlX3N5c3RlbV9saW5rcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbml0IiwiX2luaXQiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImNhb3NkYl9maWxlX3VwbG9hZF93aWRnZXQiLCJyZWFkeSIsImNhb3NkYl9tb2R1bGVzIiwicmVnaXN0ZXIiXSwic291cmNlUm9vdCI6IiJ9\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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NUIsR0FBUUwsY0FBZ0IsS0FFbEIsR0FBUU4sT0FBUyxVQUFjLEtBQU0sUUFFM0MsR0FBUVYsT0FBUyxLQUNqQixHQUFRb0IsbUJBQXFCLEtBRWhCLEtBQUksS0FBUyxJQUtKLE1BQVcsYUFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uP2RkZDciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanM/MzhlZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvaW5kZXguc2Nzcz80ZWNkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanM/NDQyNSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcz81NjE5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9pbnZhcmlhbnQvYnJvd3Nlci5qcz85ZDhiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzLWV4dHJhL2xpYi9hbGwuanM/ZWRiNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy1leHRyYS9saWIvdXRpbHMvY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIuanM/ZDhmZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanM/NTFmNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcz85NzY3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcz8wNzkyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcz84OTA3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanM/NmU3ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzPzcxZjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzP2Q1YjUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzP2M2MDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcz9mN2Q1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcz8wZmNhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanM/YjczYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanM/ZWJlMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanM/ZmY3ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcz80ZWEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzPzRkYmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3RleHRhcmVhLWNhcmV0L2luZGV4LmpzP2NlZGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3dhcm5pbmcvd2FybmluZy5qcz8zNzEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy9leHRlcm5hbCB1bWQge1wiY29tbW9uanNcIjpcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiLFwiY29tbW9uanMyXCI6XCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIixcImFtZFwiOlwiQ2Fvc0RCSW5mb1NlcnZpY2VcIixcInJvb3RcIjpcIkNhb3NEQkluZm9TZXJ2aWNlXCJ9PzFmOTkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL2V4dGVybmFsIHVtZCB7XCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcImFtZFwiOlwiUmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9P2Y3MzciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwPzVjYjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0PzBmMDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycz8yZDA0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsPzY4NTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQ/YmYzZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdD85NzVhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvbm9uY2U/YWM5NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvSW5mb1NlcnZpY2UuanM/OWIzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9TZXJ2ZXJWZXJzaW9uSW5mby5qc3g/ZGIwNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcz8zNjljIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzP2ExNWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3VuY29udHJvbGxhYmxlL2xpYi9lc20vdXRpbHMuanM/ZDhkNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvdW5jb250cm9sbGFibGUvbGliL2VzbS9ob29rLmpzP2RiNWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VDb21taXR0ZWRSZWYuanM/NWE3YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUV2ZW50Q2FsbGJhY2suanM/YzUxYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZU1vdW50ZWQuanM/Y2ZkNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVByZXZpb3VzLmpzP2U0NTUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VJc29tb3JwaGljRWZmZWN0LmpzP2UxOGQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VSZXNpemVPYnNlcnZlci5qcz85ZjNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vQnV0dG9uLmpzPzcyYWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9BbmNob3IuanM/OGVkOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9UaGVtZVByb3ZpZGVyLmpzP2IwM2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzPzBhMWMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanM/MmQ0NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbi5qcz9kN2Y3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlLmpzPzA3MGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL3V0aWxzL3JlZmxvdy5qcz8zNzU3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vb3duZXJEb2N1bWVudC5qcz8xNTUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaHlwaGVuYXRlLmpzPzYyMzciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9oeXBoZW5hdGVTdHlsZS5qcz83ZTU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaXNUcmFuc2Zvcm0uanM/MmFkOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2Nzcy5qcz9lMTk2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vZ2V0Q29tcHV0ZWRTdHlsZS5qcz9hNGRhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vb3duZXJXaW5kb3cuanM/NWEyZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2NhblVzZURPTS5qcz80YTA3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vYWRkRXZlbnRMaXN0ZW5lci5qcz9kNTEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vbGlzdGVuLmpzP2ZlOTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9yZW1vdmVFdmVudExpc3RlbmVyLmpzPzA5NDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS90cmFuc2l0aW9uRW5kLmpzP2ZiZGYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS90cmlnZ2VyRXZlbnQuanM/NDc1NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS90cmFuc2l0aW9uRW5kTGlzdGVuZXIuanM/ZGQzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS90cmlnZ2VyQnJvd3NlclJlZmxvdy5qcz80NTg5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlTWVyZ2VkUmVmcy5qcz8xYWUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL1RyYW5zaXRpb25XcmFwcGVyLmpzPzYxNDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vc2FmZUZpbmRET01Ob2RlLmpzP2JkNGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRmFkZS5qcz80YWZkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Nsb3NlQnV0dG9uLmpzPzk1MDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vZGl2V2l0aENsYXNzTmFtZS5qcz9kODFiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY2FtZWxpemUuanM/YmQ3YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9jcmVhdGVXaXRoQnNQcmVmaXguanM/MTMzMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9BbGVydC5qcz8wNjQyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL01lc3NhZ2UuanN4PzI3NWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvTG9hZGluZ0luZm8uanN4PzE3ZTgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvTG9naW5Gb3JtLmpzeD9hNWYzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vcXVlcnlTZWxlY3RvckFsbC5qcz83OWEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlRm9yY2VVcGRhdGUuanM/Yzg5YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duQ29udGV4dC5qcz84YmU3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kZXF1YWwvZGlzdC9pbmRleC5tanM/MjZiYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanM/N2ZlMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3cuanM/ZTM2YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzP2Q1MmUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzPzdiNTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91c2VyQWdlbnQuanM/MWU4YSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc0xheW91dFZpZXdwb3J0LmpzPzg5MmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzP2U3ZjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcz84ZjMyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzPzE5NjgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanM/YzBhMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzP2ExYmQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanM/NjljZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanM/MzAwYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzPzJkYjMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzPzFhZDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanM/ODRmMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcz82MjhlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzPzFmZDQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanM/YmE2NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcz80NjUxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanM/ZDVhOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcz8xYmI0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzP2I4YTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcz9iNTlkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzPzQ4ZDkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcz9hYWJlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanM/ZjVmYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanM/MWU5NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzPzA3NDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanM/YTY0NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanM/YzBlYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcz85YmE0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcz8xM2VlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcz80ODA4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFZpZXdwb3J0UmVjdC5qcz9kOWEyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50UmVjdC5qcz9kMDg2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanM/NzY0MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzPzE5YjEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcz8wNTY3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanM/NTBhYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzPzAwMDEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzPzA3NmQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzP2VlOTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzP2ZjMDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qcz81ZjQwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanM/MmZjMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcz81ZTQyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanM/NDUwYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcz82Njg1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vcG9wcGVyLmpzPzRkODAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcz9jNjMzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanM/NDQ5NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzPzRkNzAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VQb3BwZXIuanM/MDIwNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVNhZmVTdGF0ZS5qcz9hOTU2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY29udGFpbnMuanM/MjIzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZUNsaWNrT3V0c2lkZS5qcz8zYTdjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZy5qcz81Mjc4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25NZW51LmpzPzQyYWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VDYWxsYmFja1JlZi5qcz9iNDhhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVhY3QtYXJpYS9zc3IvZGlzdC9pbXBvcnQubWpzPzdmNzgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93blRvZ2dsZS5qcz81YzdjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vU2VsZWN0YWJsZUNvbnRleHQuanM/ZDQ3OSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05hdkNvbnRleHQuanM/MjMyMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0RhdGFLZXkuanM/OGY3MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duSXRlbS5qcz8wNDk5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXNlV2luZG93LmpzPzllZjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93bi5qcz9iZDYyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9ub2RlX21vZHVsZXMvdW5jb250cm9sbGFibGUvbGliL2VzbS9pbmRleC5qcz9iNmI0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlRXZlbnRMaXN0ZW5lci5qcz9hMmUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duQ29udGV4dC5qcz80N2Q2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duSXRlbS5qcz8yZmUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0lucHV0R3JvdXBDb250ZXh0LmpzP2E0YzUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyQ29udGV4dC5qcz8zMDRiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3VzZVdyYXBwZWRSZWZXaXRoV2FybmluZy5qcz85NTEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duTWVudS5qcz9mYTkwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0J1dHRvbi5qcz9mZGEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duVG9nZ2xlLmpzP2EyOWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd24uanM/OWI5OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL1RhYkNvbnRleHQuanM/MjJiNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05hdkl0ZW0uanM/ZWNiMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZMaW5rLmpzPzFmYTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2RHJvcGRvd24uanM/YzUxMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Vc2VyQ29tcG9uZW50LmpzeD9kNmRiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9CcmFuZGluZy5qcz9hNzgzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTmF2LmpzPzU0ZDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQ2FyZEhlYWRlckNvbnRleHQuanM/YWJlMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZJdGVtLmpzP2Q1YzciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2LmpzP2U2N2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyQnJhbmQuanM/YjNhOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanM/NDAyOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Db2xsYXBzZS5qcz9kMjNkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhckNvbGxhcHNlLmpzP2I2YjAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyVG9nZ2xlLmpzPzU2NGYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VNZWRpYVF1ZXJ5LmpzP2Q1NmUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VCcmVha3BvaW50LmpzPzU3NjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hY3RpdmVFbGVtZW50LmpzPzg0OTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Nb2RhbE1hbmFnZXIuanM/ODZiOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL2dldFNjcm9sbGJhcldpZHRoLmpzP2JlMTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VXYWl0Rm9yRE9NUmVmLmpzPzVlYjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ob29wVHJhbnNpdGlvbi5qcz81MWFkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vSW1wZXJhdGl2ZVRyYW5zaXRpb24uanM/YzM3NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL01vZGFsLmpzP2JiZWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VXaWxsVW5tb3VudC5qcz9mOGE2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlVXBkYXRlZFJlZi5qcz8zYjUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXRpbHMuanM/NGNiMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNCb2R5LmpzPzM2NTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzVG9nZ2xpbmcuanM/YWU5NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Nb2RhbENvbnRleHQuanM/YTA5ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9BYnN0cmFjdE1vZGFsSGVhZGVyLmpzP2FiZTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzSGVhZGVyLmpzPzJmNjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzVGl0bGUuanM/MTQxMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3JlbW92ZUNsYXNzLmpzP2ExYTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQm9vdHN0cmFwTW9kYWxNYW5hZ2VyLmpzPzc5ZTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hZGRDbGFzcy5qcz8yZTI5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaGFzQ2xhc3MuanM/NDU1ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXMuanM/ZjUyNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJPZmZjYW52YXMuanM/NDM5MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXIuanM/NDExZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Db250YWluZXIuanM/NDlkOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9RdWVyeUZvcm0uaGVscGVycy5qcz83MDhkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5Rm9ybS5qc3g/NDAzMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9RdWVyeVBhbmVsLmpzeD8zMGQxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1RvcE5hdmlnYXRpb25CYXIuanN4P2VlMDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvSGVhZGVyLmpzeD9iNWZiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0Zvb3Rlci5qc3g/MThkMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Bd2FpdC5qc3g/YTQ4ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC5qc3g/YmFjYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9DYXJkLmpzeD8xMzU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AZmlsZXMtdWkvcmVhY3QvYnVpbGQvaW5kZXguZXMuanM/ZTNmMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9GaWxlVXBsb2FkLmpzeD9jYTM4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9pbmRleC5zY3NzP2VkNzUiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIiksIChmdW5jdGlvbiB3ZWJwYWNrTG9hZE9wdGlvbmFsRXh0ZXJuYWxNb2R1bGUoKSB7IHRyeSB7IHJldHVybiByZXF1aXJlKFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIpOyB9IGNhdGNoKGUpIHt9IH0oKSkpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiUmVhY3RcIiwgXCJDYW9zREJJbmZvU2VydmljZVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJDYW9zREJDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpLCAoZnVuY3Rpb24gd2VicGFja0xvYWRPcHRpb25hbEV4dGVybmFsTW9kdWxlKCkgeyB0cnkgeyByZXR1cm4gcmVxdWlyZShcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiKTsgfSBjYXRjaChlKSB7fSB9KCkpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJDYW9zREJDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3Rvcnkocm9vdFtcIlJlYWN0XCJdLCByb290W1wiQ2Fvc0RCSW5mb1NlcnZpY2VcIl0pO1xufSkoc2VsZiwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNjM5X18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fKSB7XG5yZXR1cm4gIiwiLyohXG5cdENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuXHRMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuXHRodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXHR2YXIgbmF0aXZlQ29kZVN0cmluZyA9ICdbbmF0aXZlIGNvZGVdJztcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRpZiAoYXJnLmxlbmd0aCkge1xuXHRcdFx0XHRcdHZhciBpbm5lciA9IGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHRcdFx0XHRpZiAoaW5uZXIpIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGlmIChhcmcudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgIWFyZy50b1N0cmluZy50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnLnRvU3RyaW5nKCkpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNhb3NkYi1mLXF1ZXJ5LWNxbC1oaW50e2JvcmRlci1yYWRpdXM6MnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7Y29sb3I6IzI2MjYyNjtwYWRkaW5nOi4xcmVtIC40cmVtfS5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3tkaXNwbGF5Om5vbmV9bmF2IC5uYXZiYXItY29sbGFwc2V7YWxpZ24taXRlbXM6c3RhcnQ7ZmxleC13cmFwOndyYXB9bmF2IC5uYXZiYXItY29sbGFwc2UgZm9ybXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluLC5jYW9zZGItZi1xdWVyeS1wYW5lbHttYXJnaW4tdG9wOi41cmVtO3dpZHRoOjEwMCU7b3JkZXI6MX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm17b3JkZXI6dW5zZXQ7aGVpZ2h0OjQ0cHg7cGFkZGluZy1sZWZ0OjJyZW07cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1yaWdodDoycmVtO3BhZGRpbmctYm90dG9tOi41cmVtO2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czoycmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtOmhvdmVyLC5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybTpob3ZlciwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXN7Ym94LXNoYWRvdzowIDFweCA2cHggcmdiYSgzMiwzMywzNiwuMjgpfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWd7bWFyZ2luLXRvcDouNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LWhlaWdodDoyMDBweDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdy15OmF1dG87Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgzMiwzMywzNiwuMjgpO3BhZGRpbmc6MHB4fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGksLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGl7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW07aGVpZ2h0OjI0cHg7bGlzdC1zdHlsZS10eXBlOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaS5oaWdobGlnaHQsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGkuaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6I2Q5ZDlkOX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpOmhvdmVyLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Q5ZDlkOX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5zdWJtaXQub3BlbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLnN1Ym1pdC5vcGVuIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3tkaXNwbGF5Om5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gYnV0dG9uLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBidXR0b257YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O2JvcmRlcjpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0LC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dHtib3JkZXI6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cywuY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cy12aXNpYmxlLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQ6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gZm9ybSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgZm9ybXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0LC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3R7bWFyZ2luLXRvcDouNXJlbTtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgaW5wdXQuZm9ybS1jb250cm9sLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgaW5wdXQuZm9ybS1jb250cm9se2Rpc3BsYXk6dW5zZXQ7d2lkdGg6dW5zZXR9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYiwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYntoZWlnaHQ6NDRweDttYXJnaW4tcmlnaHQ6MXJlbTtwYWRkaW5nOjZweDtiYWNrZ3JvdW5kLWNvbG9yOnVuc2V0O2JvcmRlcjpub25lO2JvcmRlci1ib3R0b206LjJyZW0gc29saWQgcmdiYSgwLDAsMCwwKX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLmFjdGl2ZSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi5hY3RpdmV7Ym9yZGVyLWJvdHRvbTouMnJlbSBzb2xpZCBncmF5fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3IsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3J7ZmxleC1iYXNpczoxMDAlfUBtZWRpYShtaW4td2lkdGg6IDk5MnB4KXsuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWF4LWNvbnRlbnQgbWF4LWNvbnRlbnQgYXV0byBtYXgtY29udGVudDtncmlkLWNvbHVtbi1nYXA6LjVyZW07cGFkZGluZzouMnJlbSAwcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgaW5wdXQuZm9ybS1jb250cm9se2Rpc3BsYXk6dW5zZXQ7d2lkdGg6dW5zZXR9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZHttYXJnaW4tdG9wOjA7d2lkdGg6dW5zZXQ7b3JkZXI6dW5zZXR9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCBmb3Jte2ZsZXgtZGlyZWN0aW9uOnJvd30uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS1maWx0ZXJzLXRvZ2dsZXtkaXNwbGF5Om5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3R7bWFyZ2luLXRvcDowcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LXRhYntoZWlnaHQ6MzhweH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVyc3tkaXNwbGF5Om5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktZm9ybXtoZWlnaHQ6MzhweDtvcmRlcjoxO3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctdG9wOi4zcmVtO3BhZGRpbmctcmlnaHQ6MXJlbTtwYWRkaW5nLWJvdHRvbTouM3JlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS1mb3JtIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3tkaXNwbGF5Om5vbmV9fS51c2VyLWNvbXBvbmVudCAuYWxlcnR7cGFkZGluZy10b3A6LjM3NXJlbTtwYWRkaW5nLWJvdHRvbTouMzc1cmVtO2ZvbnQtc2l6ZToxcmVtO21hcmdpbjowfWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7Ym9yZGVyLXJhZGl1czowfWZvb3Rlcntjb2xvcjojODc4Nzg3fWZvb3RlciAubmF2e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNhMGEwYTB9Zm9vdGVyIC5uYXYtbGlua3tjb2xvcjojODc4Nzg3ICFpbXBvcnRhbnR9Zm9vdGVyIC5uYXYtbGluazpob3Zlcntjb2xvcjojNmQ2ZDZkICFpbXBvcnRhbnR9Zm9vdGVyIC5mb290ZXItYm9keXtib3JkZXItdG9wOjFweCBzb2xpZCAjYmFiYWJhO2JhY2tncm91bmQtY29sb3I6I2QzZDNkMzttaW4taGVpZ2h0OjIwcmVtfWZvb3RlciAuZm9vdGVyLWJvcmRlcntoZWlnaHQ6M3JlbTtib3gtc2hhZG93OjBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwwLDAsLjQpIGluc2V0Oy13ZWJraXQtYm94LXNoYWRvdzowcHggLTVweCA3cHggLTVweCByZ2JhKDAsMCwwLC40KSBpbnNldDstbW96LWJveC1zaGFkb3c6MHB4IC01cHggNnB4IC03cHggcmdiYSgwLDAsMCwuNCkgaW5zZXR9LmNhb3NkYi1jaGVja2JveHtjdXJzb3I6cG9pbnRlcn0uY2Fvc2RiLWNoZWNrYm94IC5jYW9zZGItY2hlY2tib3gtaWNvbntmb250LXNpemU6MS4zZW19LmNhb3NkYi1jaGVja2JveCAuY2Fvc2RiLWNoZWNrLWJveC1pbnB1dHtkaXNwbGF5Om5vbmV9LmNhb3NkYi1jaGVja2JveC5yZWFkLW9ubHl7Y3Vyc29yOmF1dG99LmNvbG9yLWxpZ2h0LWdyZWVue2NvbG9yOiNiNGU2MDB9Lm1pbmljYXJke2JvcmRlcjoxcHggc29saWQgcmVkO3dpZHRoOjQwMHB4O2Rpc3BsYXk6ZmxleH0ubWluaWNhcmQgLm1pbmljYXJkLXRpdGxle2JhY2tncm91bmQtY29sb3I6cmVkfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5Rm9ybS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvaW5kZXguc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFJQSx5QkFDRSxrQkFBQSxDQUNBLHdCQUFBLENBQ0EsYUFBQSxDQUNBLG1CQUFBLENBR0YseUJBQ0UsWUFBQSxDQUdGLHFCQUNFLGlCQUFBLENBQ0EsY0FBQSxDQUVBLDBCQUNFLFlBQUEsQ0FDQSxxQkFBQSxDQUlKLG1FQUVFLGdCQUFBLENBQ0EsVUFBQSxDQUNBLE9BQUEsQ0FFQSw2R0FDRSxXQUFBLENBQ0EsV0FBQSxDQUNBLGlCQUFBLENBQ0EsaUJBQUEsQ0FDQSxrQkFBQSxDQUNBLG9CQUFBLENBQ0EscUJBQUEsQ0FDQSxxQkFBQSxDQUNBLGtCQUFBLENBRUEsa1BBRUUsdUNBQUEsQ0FLRSx5TEFDRSxnQkFBQSxDQUNBLHFCQUFBLENBQ0Esb0JBQUEsQ0FDQSxnQkFBQSxDQUNBLGlCQUFBLENBQ0EsZUFBQSxDQUNBLHVDQUFBLENBQ0EsV0FBQSxDQUVBLCtMQUNFLGtCQUFBLENBQ0EsbUJBQUEsQ0FDQSxXQUFBLENBQ0Esb0JBQUEsQ0FDQSxtTkFDRSx3QkFBQSxDQUVGLDJNQUNFLHdCQUFBLENBT0osbU1BQ0UsWUFBQSxDQU1SLDJIQUNFLHdCQUFBLENBQ0EsV0FBQSxDQUdGLHlIQUNFLFdBQUEsQ0FFQSwwUkFFRSxZQUFBLENBS04sNkVBQ0UscUJBQUEsQ0FHRixxSEFDRSxnQkFBQSxDQUNBLGlCQUFBLENBQ0Esa0JBQUEsQ0FHRiwySEFDRSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSxjQUFBLENBRUEsaUtBQ0UsYUFBQSxDQUNBLFdBQUEsQ0FJSiwyR0FDRSxXQUFBLENBQ0EsaUJBQUEsQ0FDQSxXQUFBLENBQ0Esc0JBQUEsQ0FDQSxXQUFBLENBQ0EsdUNBQUEsQ0FDQSx5SEFDRSw4QkFBQSxDQUlKLHFKQUNFLGVBQUEsQ0NwRUEseUJEMEVBLGtEQUNFLFlBQUEsQ0FDQSw4REFBQSxDQUNBLHFCQUFBLENBQ0Esa0JBQUEsQ0FFQSxxRUFDRSxhQUFBLENBQ0EsV0FBQSxDQUtOLGdDQUNFLFlBQUEsQ0FDQSxXQUFBLENBQ0EsV0FBQSxDQUVBLHFDQUNFLGtCQUFBLENBR0YsK0RBQ0UsWUFBQSxDQUdGLHlEQUNFLGVBQUEsQ0FHRixvREFDRSxXQUFBLENBR0YsNERBQ0UsWUFBQSxDQUdGLHFEQUNFLFdBQUEsQ0FDQSxPQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FFQSw4RUFDRSxZQUFBLENBQUEsQ0VwTFIsdUJBQ0UsbUJBQUEsQ0FDQSxzQkFBQSxDQUNBLGNBQUEsQ0FDQSxRQUFBLENBR0YsT0FDRSx1Q0FBQSxDQUNBLGVBQUEsQ0FHRixPQUNFLGFBQUEsQ0FFQSxZQUNFLCtCQUFBLENBRUYsaUJBQ0Usd0JBQUEsQ0FFRix1QkFDRSx3QkFBQSxDQUVGLG9CQUNFLDRCQUFBLENBQ0Esd0JBNUJnQixDQTZCaEIsZ0JBQUEsQ0FFRixzQkFDRSxXQUFBLENBQ0EsaURBQUEsQ0FDQSx5REFBQSxDQUNBLHNEQUFBLENBSUosaUJBU0UsY0FBQSxDQVJBLHVDQUNFLGVBQUEsQ0FHRix5Q0FDRSxZQUFBLENBS0YsMkJBQ0UsV0FBQSxDQUlKLG1CQUNFLGFBQUEsQ0FHRixVQUNFLG9CQUFBLENBQ0EsV0FBQSxDQUNBLFlBQUEsQ0FFQSwwQkFDRSxvQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcXFwiO1xcbkBpbXBvcnQgXFxcImJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlc1xcXCI7XFxuQGltcG9ydCBcXFwiYm9vdHN0cmFwL3Njc3MvbWl4aW5zXFxcIjtcXG5cXG4uY2Fvc2RiLWYtcXVlcnktY3FsLWhpbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbih3aGl0ZSwgMTUlKTtcXG4gIGNvbG9yOiBsaWdodGVuKGJsYWNrLCAxNSUpO1xcbiAgcGFkZGluZzogMC4xcmVtIDAuNHJlbTtcXG59XFxuXFxuLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbm5hdiAubmF2YmFyLWNvbGxhcHNlIHtcXG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG5cXG4gIGZvcm0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgfVxcbn1cXG5cXG4uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbixcXG4uY2Fvc2RiLWYtcXVlcnktcGFuZWwge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvcmRlcjogMTtcXG5cXG4gIC5jYW9zZGItZi1xdWVyeS1mb3JtIHtcXG4gICAgb3JkZXI6IHVuc2V0O1xcbiAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMnJlbTtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMnJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJyZW07XFxuXFxuICAgICY6aG92ZXIsXFxuICAgICYuZm9jdXMge1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2JhKDMyLCAzMywgMzYsIDAuMjgpO1xcbiAgICB9XFxuXFxuICAgICYuZm9jdXMge1xcbiAgICAgICYub3BlbiB7XFxuICAgICAgICBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyB7XFxuICAgICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7XFxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMzIsIDMzLCAzNiwgMC4yOCk7XFxuICAgICAgICAgIHBhZGRpbmc6IDBweDtcXG5cXG4gICAgICAgICAgbGkge1xcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcXG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XFxuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcbiAgICAgICAgICAgICYuaGlnaGxpZ2h0IHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbih3aGl0ZSwgMTUlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4od2hpdGUsIDE1JSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgICYuc3VibWl0IHtcXG4gICAgICAgICYub3BlbiB7XFxuICAgICAgICAgIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyB7XFxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBidXR0b24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICB9XFxuXFxuICAgIGlucHV0IHtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuXFxuICAgICAgJjpmb2N1cyxcXG4gICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIGZvcm0ge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0IHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuXFxuICAgIGlucHV0LmZvcm0tY29udHJvbCB7XFxuICAgICAgZGlzcGxheTogdW5zZXQ7XFxuICAgICAgd2lkdGg6IHVuc2V0O1xcbiAgICB9XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktdGFiIHtcXG4gICAgaGVpZ2h0OiA0NHB4O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxuICAgIHBhZGRpbmc6IDZweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAmLmFjdGl2ZSB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkIGdyYXk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3Ige1xcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xcbiAgfVxcbn1cXG5cXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XFxuICAuY2Fvc2RiLWYtcXVlcnktcGFuZWwge1xcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMge1xcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtYXgtY29udGVudCBtYXgtY29udGVudCBhdXRvIG1heC1jb250ZW50O1xcbiAgICAgIGdyaWQtY29sdW1uLWdhcDogMC41cmVtO1xcbiAgICAgIHBhZGRpbmc6IDAuMnJlbSAwcmVtO1xcblxcbiAgICAgIGlucHV0LmZvcm0tY29udHJvbCB7XFxuICAgICAgICBkaXNwbGF5OiB1bnNldDtcXG4gICAgICAgIHdpZHRoOiB1bnNldDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQge1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICB3aWR0aDogdW5zZXQ7XFxuICAgIG9yZGVyOiB1bnNldDtcXG5cXG4gICAgZm9ybSB7XFxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktZmlsdGVycy10b2dnbGUge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0IHtcXG4gICAgICBtYXJnaW4tdG9wOiAwcmVtO1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWIge1xcbiAgICAgIGhlaWdodDogMzhweDtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0ge1xcbiAgICAgIGhlaWdodDogMzhweDtcXG4gICAgICBvcmRlcjogMTtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgICAgcGFkZGluZy10b3A6IDAuM3JlbTtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjNyZW07XFxuXFxuICAgICAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiLFwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cXG4vL1xcbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcXG4vL1xcbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXFxuLy9cXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXFxuXFxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50Llxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxcbi8vICAgIG1kXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICBtZFxcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxcbi8vICAgIG1kXFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcXG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xcbiAgQGlmIG5vdCAkbiB7XFxuICAgIEBlcnJvciBcXFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFxcXCI7XFxuICB9XFxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcXG59XFxuXFxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50Llxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIDU3NnB4XFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xcbn1cXG5cXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXFxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXFxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxcbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcXG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXFxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcXG4vL1xcbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICA3NjcuOThweFxcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcXG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xcbn1cXG5cXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250Llxcbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgXFxcIlxcXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIFxcXCItc21cXFwiXFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXFxcIlxcXCIsIFxcXCItI3skbmFtZX1cXFwiKTtcXG59XFxuXFxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50Llxcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgQGlmICRtaW4ge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gIEBpZiAkbWF4IHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcXG5cXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXFxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XFxuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XFxuXFxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiQGltcG9ydCBcXFwiLi9jb21wb25lbnRzL1F1ZXJ5Rm9ybVxcXCI7XFxuXFxuJGZvb3Rlci1ib2R5LWNvbG9yOiBsaWdodGdyYXk7XFxuXFxuLnVzZXItY29tcG9uZW50IC5hbGVydCB7XFxuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07XFxuICBmb250LXNpemU6IDFyZW07XFxuICBtYXJnaW46IDA7XFxufVxcblxcbmhlYWRlciB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxufVxcblxcbmZvb3RlciB7XFxuICBjb2xvcjogZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMzAlKTtcXG5cXG4gIC5uYXYge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMjAlKTtcXG4gIH1cXG4gIC5uYXYtbGluayB7XFxuICAgIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAzMCUpICFpbXBvcnRhbnQ7XFxuICB9XFxuICAubmF2LWxpbms6aG92ZXIge1xcbiAgICBjb2xvcjogZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgNDAlKSAhaW1wb3J0YW50O1xcbiAgfVxcbiAgLmZvb3Rlci1ib2R5IHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDEwJSk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItYm9keS1jb2xvcjtcXG4gICAgbWluLWhlaWdodDogMjByZW07XFxuICB9XFxuICAuZm9vdGVyLWJvcmRlciB7XFxuICAgIGhlaWdodDogM3JlbTtcXG4gICAgYm94LXNoYWRvdzogMHB4IC01cHggN3B4IC01cHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldDtcXG4gICAgLW1vei1ib3gtc2hhZG93OiAwcHggLTVweCA2cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQ7XFxuICB9XFxufVxcblxcbi5jYW9zZGItY2hlY2tib3gge1xcbiAgLmNhb3NkYi1jaGVja2JveC1pY29uIHtcXG4gICAgZm9udC1zaXplOiAxLjNlbTtcXG4gIH1cXG5cXG4gIC5jYW9zZGItY2hlY2stYm94LWlucHV0IHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG5cXG4gIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICYucmVhZC1vbmx5IHtcXG4gICAgY3Vyc29yOiBhdXRvO1xcbiAgfVxcbn1cXG5cXG4uY29sb3ItbGlnaHQtZ3JlZW4ge1xcbiAgY29sb3I6ICNiNGU2MDA7XFxufVxcblxcbi5taW5pY2FyZCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZWQ7XFxuICB3aWR0aDogNDAwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcblxcbiAgLm1pbmljYXJkLXRpdGxlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxuICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgaW52YXJpYW50ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAnTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArXG4gICAgICAgICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLidcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0luZGV4KytdOyB9KVxuICAgICAgKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgfVxuXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGFsbDtcblxudmFyIF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlciA9IHJlcXVpcmUoJy4vdXRpbHMvY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXInKTtcblxudmFyIF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGFsbCgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbGlkYXRvcnMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWxpZGF0b3JzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsUHJvcFR5cGVzKCkge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgdmFyIGVycm9yID0gbnVsbDtcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbiAodmFsaWRhdG9yKSB7XG4gICAgICBpZiAoZXJyb3IgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciByZXN1bHQgPSB2YWxpZGF0b3IuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICBlcnJvciA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIHJldHVybiAoMCwgX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyMi5kZWZhdWx0KShhbGxQcm9wVHlwZXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4vLyBNb3N0bHkgdGFrZW4gZnJvbSBSZWFjdFByb3BUeXBlcy5cblxuZnVuY3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcbiAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIHZhciBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIHZhciBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKCdSZXF1aXJlZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lU2FmZSArICdgIHdhcyBub3Qgc3BlY2lmaWVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZVNhZmUgKyAnYC4nKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDYgPyBfbGVuIC0gNiA6IDApLCBfa2V5ID0gNjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gNl0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlLmFwcGx5KHVuZGVmaW5lZCwgW3Byb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZVNhZmUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWVTYWZlXS5jb25jYXQoYXJncykpO1xuICB9XG5cbiAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLypcbiBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKSxjYT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHAoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGRhPW5ldyBTZXQsZWE9e307ZnVuY3Rpb24gZmEoYSxiKXtoYShhLGIpO2hhKGErXCJDYXB0dXJlXCIsYil9XG5mdW5jdGlvbiBoYShhLGIpe2VhW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKylkYS5hZGQoYlthXSl9XG52YXIgaWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGphPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksa2E9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGxhPVxue30sbWE9e307ZnVuY3Rpb24gb2EoYSl7aWYoamEuY2FsbChtYSxhKSlyZXR1cm4hMDtpZihqYS5jYWxsKGxhLGEpKXJldHVybiExO2lmKGthLnRlc3QoYSkpcmV0dXJuIG1hW2FdPSEwO2xhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHBhKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gcWEoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8cGEoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+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/KFNrKGZ1bmN0aW9uKCl7c2wobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbDthW3VmXT1udWxsfSl9KSwhMCk6ITF9O2V4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9Ums7XG5leHBvcnRzLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFwbChjKSl0aHJvdyBFcnJvcihwKDIwMCkpO2lmKG51bGw9PWF8fHZvaWQgMD09PWEuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKHAoMzgpKTtyZXR1cm4gc2woYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztmdW5jdGlvbiBmKGEsYil7dmFyIGM9YS5sZW5ndGg7YS5wdXNoKGIpO2E6Zm9yKDswPGM7KXt2YXIgZD1jLTE+Pj4xLGU9YVtkXTtpZigwPGcoZSxiKSlhW2RdPWIsYVtjXT1lLGM9ZDtlbHNlIGJyZWFrIGF9fWZ1bmN0aW9uIGgoYSl7cmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOmFbMF19ZnVuY3Rpb24gayhhKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXSxjPWEucG9wKCk7aWYoYyE9PWIpe2FbMF09YzthOmZvcih2YXIgZD0wLGU9YS5sZW5ndGgsdz1lPj4+MTtkPHc7KXt2YXIgbT0yKihkKzEpLTEsQz1hW21dLG49bSsxLHg9YVtuXTtpZigwPmcoQyxjKSluPGUmJjA+Zyh4LEMpPyhhW2RdPXgsYVtuXT1jLGQ9bik6KGFbZF09QyxhW21dPWMsZD1tKTtlbHNlIGlmKG48ZSYmMD5nKHgsYykpYVtkXT14LGFbbl09YyxkPW47ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGcoYSxiKXt2YXIgYz1hLnNvcnRJbmRleC1iLnNvcnRJbmRleDtyZXR1cm4gMCE9PWM/YzphLmlkLWIuaWR9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGw9cGVyZm9ybWFuY2U7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5ub3coKX19ZWxzZXt2YXIgcD1EYXRlLHE9cC5ub3coKTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBwLm5vdygpLXF9fXZhciByPVtdLHQ9W10sdT0xLHY9bnVsbCx5PTMsej0hMSxBPSExLEI9ITEsRD1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om51bGwsRT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpudWxsLEY9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7XG5cInVuZGVmaW5lZFwiIT09dHlwZW9mIG5hdmlnYXRvciYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcmJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiBHKGEpe2Zvcih2YXIgYj1oKHQpO251bGwhPT1iOyl7aWYobnVsbD09PWIuY2FsbGJhY2spayh0KTtlbHNlIGlmKGIuc3RhcnRUaW1lPD1hKWsodCksYi5zb3J0SW5kZXg9Yi5leHBpcmF0aW9uVGltZSxmKHIsYik7ZWxzZSBicmVhaztiPWgodCl9fWZ1bmN0aW9uIEgoYSl7Qj0hMTtHKGEpO2lmKCFBKWlmKG51bGwhPT1oKHIpKUE9ITAsSShKKTtlbHNle3ZhciBiPWgodCk7bnVsbCE9PWImJksoSCxiLnN0YXJ0VGltZS1hKX19XG5mdW5jdGlvbiBKKGEsYil7QT0hMTtCJiYoQj0hMSxFKEwpLEw9LTEpO3o9ITA7dmFyIGM9eTt0cnl7RyhiKTtmb3Iodj1oKHIpO251bGwhPT12JiYoISh2LmV4cGlyYXRpb25UaW1lPmIpfHxhJiYhTSgpKTspe3ZhciBkPXYuY2FsbGJhY2s7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3YuY2FsbGJhY2s9bnVsbDt5PXYucHJpb3JpdHlMZXZlbDt2YXIgZT1kKHYuZXhwaXJhdGlvblRpbWU8PWIpO2I9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZT92LmNhbGxiYWNrPWU6dj09PWgocikmJmsocik7RyhiKX1lbHNlIGsocik7dj1oKHIpfWlmKG51bGwhPT12KXZhciB3PSEwO2Vsc2V7dmFyIG09aCh0KTtudWxsIT09bSYmSyhILG0uc3RhcnRUaW1lLWIpO3c9ITF9cmV0dXJuIHd9ZmluYWxseXt2PW51bGwseT1jLHo9ITF9fXZhciBOPSExLE89bnVsbCxMPS0xLFA9NSxRPS0xO1xuZnVuY3Rpb24gTSgpe3JldHVybiBleHBvcnRzLnVuc3RhYmxlX25vdygpLVE8UD8hMTohMH1mdW5jdGlvbiBSKCl7aWYobnVsbCE9PU8pe3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7UT1hO3ZhciBiPSEwO3RyeXtiPU8oITAsYSl9ZmluYWxseXtiP1MoKTooTj0hMSxPPW51bGwpfX1lbHNlIE49ITF9dmFyIFM7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIEYpUz1mdW5jdGlvbigpe0YoUil9O2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIFQ9bmV3IE1lc3NhZ2VDaGFubmVsLFU9VC5wb3J0MjtULnBvcnQxLm9ubWVzc2FnZT1SO1M9ZnVuY3Rpb24oKXtVLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIFM9ZnVuY3Rpb24oKXtEKFIsMCl9O2Z1bmN0aW9uIEkoYSl7Tz1hO058fChOPSEwLFMoKSl9ZnVuY3Rpb24gSyhhLGIpe0w9RChmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfVxuZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NTtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Mb3dQcmlvcml0eT00O2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsO2V4cG9ydHMudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MjtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe2EuY2FsbGJhY2s9bnVsbH07ZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe0F8fHp8fChBPSEwLEkoSikpfTtcbmV4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oYSl7MD5hfHwxMjU8YT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkXCIpOlA9MDxhP01hdGguZmxvb3IoMUUzL2EpOjV9O2V4cG9ydHMudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4geX07ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBoKHIpfTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKHkpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPXl9dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXt5PWN9fTtleHBvcnRzLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fTtcbmV4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6YT0zfXZhciBjPXk7eT1hO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7eT1jfX07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yz8oYz1jLmRlbGF5LGM9XCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPGM/ZCtjOmQpOmM9ZDtzd2l0Y2goYSl7Y2FzZSAxOnZhciBlPS0xO2JyZWFrO2Nhc2UgMjplPTI1MDticmVhaztjYXNlIDU6ZT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDplPTFFNDticmVhaztkZWZhdWx0OmU9NUUzfWU9YytlO2E9e2lkOnUrKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD1jLGYodCxhKSxudWxsPT09aChyKSYmYT09PWgodCkmJihCPyhFKEwpLEw9LTEpOkI9ITAsSyhILGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxmKHIsYSksQXx8enx8KEE9ITAsSShKKSkpO3JldHVybiBhfTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQ9TTtleHBvcnRzLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj15O3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXt5PWN9fX07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cbiAgY3NzICs9IG9iai5jc3M7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH1cblxuICAvLyBGb3Igb2xkIElFXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7fSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCIvKiBqc2hpbnQgYnJvd3NlcjogdHJ1ZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXG4vLyBXZSdsbCBjb3B5IHRoZSBwcm9wZXJ0aWVzIGJlbG93IGludG8gdGhlIG1pcnJvciBkaXYuXG4vLyBOb3RlIHRoYXQgc29tZSBicm93c2Vycywgc3VjaCBhcyBGaXJlZm94LCBkbyBub3QgY29uY2F0ZW5hdGUgcHJvcGVydGllc1xuLy8gaW50byB0aGVpciBzaG9ydGhhbmQgKGUuZy4gcGFkZGluZy10b3AsIHBhZGRpbmctYm90dG9tIGV0Yy4gLT4gcGFkZGluZyksXG4vLyBzbyB3ZSBoYXZlIHRvIGxpc3QgZXZlcnkgc2luZ2xlIHByb3BlcnR5IGV4cGxpY2l0bHkuXG52YXIgcHJvcGVydGllcyA9IFtcbiAgJ2RpcmVjdGlvbicsICAvLyBSVEwgc3VwcG9ydFxuICAnYm94U2l6aW5nJyxcbiAgJ3dpZHRoJywgIC8vIG9uIENocm9tZSBhbmQgSUUsIGV4Y2x1ZGUgdGhlIHNjcm9sbGJhciwgc28gdGhlIG1pcnJvciBkaXYgd3JhcHMgZXhhY3RseSBhcyB0aGUgdGV4dGFyZWEgZG9lc1xuICAnaGVpZ2h0JyxcbiAgJ292ZXJmbG93WCcsXG4gICdvdmVyZmxvd1knLCAgLy8gY29weSB0aGUgc2Nyb2xsYmFyIGZvciBJRVxuXG4gICdib3JkZXJUb3BXaWR0aCcsXG4gICdib3JkZXJSaWdodFdpZHRoJyxcbiAgJ2JvcmRlckJvdHRvbVdpZHRoJyxcbiAgJ2JvcmRlckxlZnRXaWR0aCcsXG4gICdib3JkZXJTdHlsZScsXG5cbiAgJ3BhZGRpbmdUb3AnLFxuICAncGFkZGluZ1JpZ2h0JyxcbiAgJ3BhZGRpbmdCb3R0b20nLFxuICAncGFkZGluZ0xlZnQnLFxuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250XG4gICdmb250U3R5bGUnLFxuICAnZm9udFZhcmlhbnQnLFxuICAnZm9udFdlaWdodCcsXG4gICdmb250U3RyZXRjaCcsXG4gICdmb250U2l6ZScsXG4gICdmb250U2l6ZUFkanVzdCcsXG4gICdsaW5lSGVpZ2h0JyxcbiAgJ2ZvbnRGYW1pbHknLFxuXG4gICd0ZXh0QWxpZ24nLFxuICAndGV4dFRyYW5zZm9ybScsXG4gICd0ZXh0SW5kZW50JyxcbiAgJ3RleHREZWNvcmF0aW9uJywgIC8vIG1pZ2h0IG5vdCBtYWtlIGEgZGlmZmVyZW5jZSwgYnV0IGJldHRlciBiZSBzYWZlXG5cbiAgJ2xldHRlclNwYWNpbmcnLFxuICAnd29yZFNwYWNpbmcnLFxuXG4gICd0YWJTaXplJyxcbiAgJ01velRhYlNpemUnXG5cbl07XG5cbnZhciBpc0Jyb3dzZXIgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpO1xudmFyIGlzRmlyZWZveCA9IChpc0Jyb3dzZXIgJiYgd2luZG93Lm1veklubmVyU2NyZWVuWCAhPSBudWxsKTtcblxuZnVuY3Rpb24gZ2V0Q2FyZXRDb29yZGluYXRlcyhlbGVtZW50LCBwb3NpdGlvbiwgb3B0aW9ucykge1xuICBpZiAoIWlzQnJvd3Nlcikge1xuICAgIHRocm93IG5ldyBFcnJvcigndGV4dGFyZWEtY2FyZXQtcG9zaXRpb24jZ2V0Q2FyZXRDb29yZGluYXRlcyBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gYSBicm93c2VyJyk7XG4gIH1cblxuICB2YXIgZGVidWcgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVidWcgfHwgZmFsc2U7XG4gIGlmIChkZWJ1Zykge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2Jyk7XG4gICAgaWYgKGVsKSBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgfVxuXG4gIC8vIFRoZSBtaXJyb3IgZGl2IHdpbGwgcmVwbGljYXRlIHRoZSB0ZXh0YXJlYSdzIHN0eWxlXG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlkID0gJ2lucHV0LXRleHRhcmVhLWNhcmV0LXBvc2l0aW9uLW1pcnJvci1kaXYnO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG5cbiAgdmFyIHN0eWxlID0gZGl2LnN0eWxlO1xuICB2YXIgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIDogZWxlbWVudC5jdXJyZW50U3R5bGU7ICAvLyBjdXJyZW50U3R5bGUgZm9yIElFIDwgOVxuICB2YXIgaXNJbnB1dCA9IGVsZW1lbnQubm9kZU5hbWUgPT09ICdJTlBVVCc7XG5cbiAgLy8gRGVmYXVsdCB0ZXh0YXJlYSBzdHlsZXNcbiAgc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7XG4gIGlmICghaXNJbnB1dClcbiAgICBzdHlsZS53b3JkV3JhcCA9ICdicmVhay13b3JkJzsgIC8vIG9ubHkgZm9yIHRleHRhcmVhLXNcblxuICAvLyBQb3NpdGlvbiBvZmYtc2NyZWVuXG4gIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsgIC8vIHJlcXVpcmVkIHRvIHJldHVybiBjb29yZGluYXRlcyBwcm9wZXJseVxuICBpZiAoIWRlYnVnKVxuICAgIHN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsgIC8vIG5vdCAnZGlzcGxheTogbm9uZScgYmVjYXVzZSB3ZSB3YW50IHJlbmRlcmluZ1xuXG4gIC8vIFRyYW5zZmVyIHRoZSBlbGVtZW50J3MgcHJvcGVydGllcyB0byB0aGUgZGl2XG4gIHByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgIGlmIChpc0lucHV0ICYmIHByb3AgPT09ICdsaW5lSGVpZ2h0Jykge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciA8aW5wdXQ+cyBiZWNhdXNlIHRleHQgaXMgcmVuZGVyZWQgY2VudGVyZWQgYW5kIGxpbmUgaGVpZ2h0IG1heSBiZSAhPSBoZWlnaHRcbiAgICAgIHN0eWxlLmxpbmVIZWlnaHQgPSBjb21wdXRlZC5oZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlW3Byb3BdID0gY29tcHV0ZWRbcHJvcF07XG4gICAgfVxuICB9KTtcblxuICBpZiAoaXNGaXJlZm94KSB7XG4gICAgLy8gRmlyZWZveCBsaWVzIGFib3V0IHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSBmb3IgdGV4dGFyZWFzOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQyNzVcbiAgICBpZiAoZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBwYXJzZUludChjb21wdXRlZC5oZWlnaHQpKVxuICAgICAgc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsgIC8vIGZvciBDaHJvbWUgdG8gbm90IHJlbmRlciBhIHNjcm9sbGJhcjsgSUUga2VlcHMgb3ZlcmZsb3dZID0gJ3Njcm9sbCdcbiAgfVxuXG4gIGRpdi50ZXh0Q29udGVudCA9IGVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTtcbiAgLy8gVGhlIHNlY29uZCBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbnB1dCB0eXBlPVwidGV4dFwiIHZzIHRleHRhcmVhOlxuICAvLyBzcGFjZXMgbmVlZCB0byBiZSByZXBsYWNlZCB3aXRoIG5vbi1icmVha2luZyBzcGFjZXMgLSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMzQwMjAzNS8xMjY5MDM3XG4gIGlmIChpc0lucHV0KVxuICAgIGRpdi50ZXh0Q29udGVudCA9IGRpdi50ZXh0Q29udGVudC5yZXBsYWNlKC9cXHMvZywgJ1xcdTAwYTAnKTtcblxuICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgLy8gV3JhcHBpbmcgbXVzdCBiZSByZXBsaWNhdGVkICpleGFjdGx5KiwgaW5jbHVkaW5nIHdoZW4gYSBsb25nIHdvcmQgZ2V0c1xuICAvLyBvbnRvIHRoZSBuZXh0IGxpbmUsIHdpdGggd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIGJlZm9yZSAoIzcpLlxuICAvLyBUaGUgICpvbmx5KiByZWxpYWJsZSB3YXkgdG8gZG8gdGhhdCBpcyB0byBjb3B5IHRoZSAqZW50aXJlKiByZXN0IG9mIHRoZVxuICAvLyB0ZXh0YXJlYSdzIGNvbnRlbnQgaW50byB0aGUgPHNwYW4+IGNyZWF0ZWQgYXQgdGhlIGNhcmV0IHBvc2l0aW9uLlxuICAvLyBGb3IgaW5wdXRzLCBqdXN0ICcuJyB3b3VsZCBiZSBlbm91Z2gsIGJ1dCBubyBuZWVkIHRvIGJvdGhlci5cbiAgc3Bhbi50ZXh0Q29udGVudCA9IGVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKHBvc2l0aW9uKSB8fCAnLic7ICAvLyB8fCBiZWNhdXNlIGEgY29tcGxldGVseSBlbXB0eSBmYXV4IHNwYW4gZG9lc24ndCByZW5kZXIgYXQgYWxsXG4gIGRpdi5hcHBlbmRDaGlsZChzcGFuKTtcblxuICB2YXIgY29vcmRpbmF0ZXMgPSB7XG4gICAgdG9wOiBzcGFuLm9mZnNldFRvcCArIHBhcnNlSW50KGNvbXB1dGVkWydib3JkZXJUb3BXaWR0aCddKSxcbiAgICBsZWZ0OiBzcGFuLm9mZnNldExlZnQgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyTGVmdFdpZHRoJ10pLFxuICAgIGhlaWdodDogcGFyc2VJbnQoY29tcHV0ZWRbJ2xpbmVIZWlnaHQnXSlcbiAgfTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBzcGFuLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjYWFhJztcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7XG4gIH1cblxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59XG5cbmlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyAhPSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGdldENhcmV0Q29vcmRpbmF0ZXM7XG59IGVsc2UgaWYoaXNCcm93c2VyKSB7XG4gIHdpbmRvdy5nZXRDYXJldENvb3JkaW5hdGVzID0gZ2V0Q2FyZXRDb29yZGluYXRlcztcbn1cblxufSgpKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xuXG52YXIgX19ERVZfXyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbic7XG5cbnZhciB3YXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKF9fREVWX18pIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQsIGFyZ3MpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiA+IDEgPyBsZW4gLSAxIDogMCk7XG4gICAgZm9yICh2YXIga2V5ID0gMTsga2V5IDwgbGVuOyBrZXkrKykge1xuICAgICAgYXJnc1trZXkgLSAxXSA9IGFyZ3VtZW50c1trZXldO1xuICAgIH1cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgK1xuICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4gIH1cblxuICB3YXJuaW5nID0gZnVuY3Rpb24oY29uZGl0aW9uLCBmb3JtYXQsIGFyZ3MpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiA+IDIgPyBsZW4gLSAyIDogMCk7XG4gICAgZm9yICh2YXIga2V5ID0gMjsga2V5IDwgbGVuOyBrZXkrKykge1xuICAgICAgYXJnc1trZXkgLSAyXSA9IGFyZ3VtZW50c1trZXldO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArXG4gICAgICAgICAgJ21lc3NhZ2UgYXJndW1lbnQnXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KG51bGwsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7XG4iLCJpZih0eXBlb2YgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTg5X18gPT09ICd1bmRlZmluZWQnKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICd1bmRlZmluZWQnXCIpOyBlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7IHRocm93IGU7IH1cblxubW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xODlfXzsiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzYzOV9fOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwidmFyIEluZm9TZXJ2aWNlO1xuXG5jbGFzcyBNb2NrdXBJbmZvU2VydmljZUltcGwge1xuICBhc3luYyBnZXRTZXNzaW9uSW5mbygpIHtcbiAgICBhd2FpdCB0aGlzLnNsZWVwKDMwMDApO1xuICAgIHRocm93IHsgbWVzc2FnZTogXCJQbGVhc2UgbG9nIGluIVwiIH07XG4gIH1cblxuICBzbGVlcChtcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG5cbiAgYXN5bmMgbG9naW4odXNlcm5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLnNsZWVwKDMwMDApO1xuICAgIGlmICh1c2VybmFtZSA9PSBcImVycm9yXCIpIHtcbiAgICAgIHRocm93IHsgbWVzc2FnZTogXCJMb2dpbiBmYWlsZWQhIEFoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoIVwiIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByZWFsbTogXCJNb2NrUmVhbG1cIixcbiAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcbiAgICAgIHJvbGVzOiBbXSxcbiAgICAgIGV4cGlyZXM6IDYwMDAwLFxuICAgIH07XG4gIH1cbiAgYXN5bmMgbG9nb3V0KCkge1xuICAgIGF3YWl0IHRoaXMuc2xlZXAoMzAwMCk7XG4gIH1cbn1cblxudHJ5IHtcbiAgSW5mb1NlcnZpY2UgPSByZXF1aXJlKFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIpLkluZm9TZXJ2aWNlO1xufSBjYXRjaCAoZXJyb3IpIHtcbiAgY29uc29sZS5sb2coXCJQcm92aWRpbmcgbW9ja3VwIGltcGxlbWVudGF0aW9uIGZvciBJbmZvU2VydmljZVwiKTtcblxuICBJbmZvU2VydmljZSA9IE1vY2t1cEluZm9TZXJ2aWNlSW1wbDtcbn1cblxuZXhwb3J0IHsgSW5mb1NlcnZpY2UgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSW5mb1NlcnZpY2UgfSBmcm9tIFwiLi4vSW5mb1NlcnZpY2VcIjtcblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgcmV0dXJuIFwiQ291bGQgbm90IHJldHJpZXZlIFNlcnZlciBWZXJzaW9uIEluZm86IFwiICsgZXJyb3IubWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmVyVmVyc2lvbkluZm8oc2V0VmVyc2lvbikge1xuICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gIHNlcnZpY2VcbiAgICAuZ2V0VmVyc2lvbkluZm8oKVxuICAgIC50aGVuKChzZXJ2ZXJWZXJzaW9uKSA9PiBzZXJ2ZXJWZXJzaW9uLm5vQnVpbGQoKS50b1N0cmluZygpKVxuICAgIC5jYXRjaChoYW5kbGVFcnJvcilcbiAgICAudGhlbihzZXRWZXJzaW9uKTtcbiAgcmV0dXJuIFwiLi4uXCI7IC8vIHNvbWUgbmljZXIgd2FpdGluZyBpbmZvP1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VydmVyVmVyc2lvbkluZm8oKSB7XG4gIHZhciBbdmVyc2lvbiwgc2V0VmVyc2lvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgaWYgKHZlcnNpb24gPT09IG51bGwpIHtcbiAgICB2ZXJzaW9uID0gZ2V0U2VydmVyVmVyc2lvbkluZm8oc2V0VmVyc2lvbik7XG4gIH1cblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItY29tcC1zZXJ2ZXItdmVyc2lvbi1pbmZvXCI+e3ZlcnNpb259PC9kaXY+O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJpbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCc7XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG5mdW5jdGlvbiByZWFkT25seVByb3BUeXBlKGhhbmRsZXIsIG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUpIHtcbiAgICBpZiAocHJvcHNbcHJvcE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghcHJvcHNbaGFuZGxlcl0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIllvdSBoYXZlIHByb3ZpZGVkIGEgYFwiICsgcHJvcE5hbWUgKyBcImAgcHJvcCB0byBgXCIgKyBuYW1lICsgXCJgIFwiICsgKFwid2l0aG91dCBhbiBgXCIgKyBoYW5kbGVyICsgXCJgIGhhbmRsZXIgcHJvcC4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gXCIpICsgKFwiSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgXCIgKyBkZWZhdWx0S2V5KHByb3BOYW1lKSArIFwiYC4gXCIpICsgKFwiT3RoZXJ3aXNlLCBzZXQgYFwiICsgaGFuZGxlciArIFwiYC5cIikpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuY29udHJvbGxlZFByb3BUeXBlcyhjb250cm9sbGVkVmFsdWVzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgcHJvcFR5cGVzID0ge307XG4gIE9iamVjdC5rZXlzKGNvbnRyb2xsZWRWYWx1ZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAvLyBhZGQgZGVmYXVsdCBwcm9wVHlwZXMgZm9yIGZvbGtzIHRoYXQgdXNlIHJ1bnRpbWUgY2hlY2tzXG4gICAgcHJvcFR5cGVzW2RlZmF1bHRLZXkocHJvcCldID0gbm9vcDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IGNvbnRyb2xsZWRWYWx1ZXNbcHJvcF07XG4gICAgICAhKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJyAmJiBoYW5kbGVyLnRyaW0oKS5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnVW5jb250cm9sbGFibGUgLSBbJXNdOiB0aGUgcHJvcCBgJXNgIG5lZWRzIGEgdmFsaWQgaGFuZGxlciBrZXkgbmFtZSBpbiBvcmRlciB0byBtYWtlIGl0IHVuY29udHJvbGxhYmxlJywgZGlzcGxheU5hbWUsIHByb3ApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAgIHByb3BUeXBlc1twcm9wXSA9IHJlYWRPbmx5UHJvcFR5cGUoaGFuZGxlciwgZGlzcGxheU5hbWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwcm9wVHlwZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQcm9wKHByb3BzLCBwcm9wKSB7XG4gIHJldHVybiBwcm9wc1twcm9wXSAhPT0gdW5kZWZpbmVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRLZXkoa2V5KSB7XG4gIHJldHVybiAnZGVmYXVsdCcgKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xufVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5BY2NlcHRSZWYoY29tcG9uZW50KSB7XG4gIHJldHVybiAhIWNvbXBvbmVudCAmJiAodHlwZW9mIGNvbXBvbmVudCAhPT0gJ2Z1bmN0aW9uJyB8fCBjb21wb25lbnQucHJvdG90eXBlICYmIGNvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcblxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7IHZhciBrZXkgPSBfdG9QcmltaXRpdmUoYXJnLCBcInN0cmluZ1wiKTsgcmV0dXJuIHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTsgfVxuXG5mdW5jdGlvbiBfdG9QcmltaXRpdmUoaW5wdXQsIGhpbnQpIHsgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0OyB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmIChwcmltICE9PSB1bmRlZmluZWQpIHsgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7IGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7IH1cblxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wVmFsdWUsIGRlZmF1bHRWYWx1ZSwgaGFuZGxlcikge1xuICB2YXIgd2FzUHJvcFJlZiA9IHVzZVJlZihwcm9wVmFsdWUgIT09IHVuZGVmaW5lZCk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSksXG4gICAgICBzdGF0ZVZhbHVlID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0U3RhdGUgPSBfdXNlU3RhdGVbMV07XG5cbiAgdmFyIGlzUHJvcCA9IHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICB2YXIgd2FzUHJvcCA9IHdhc1Byb3BSZWYuY3VycmVudDtcbiAgd2FzUHJvcFJlZi5jdXJyZW50ID0gaXNQcm9wO1xuICAvKipcbiAgICogSWYgYSBwcm9wIHN3aXRjaGVzIGZyb20gY29udHJvbGxlZCB0byBVbmNvbnRyb2xsZWRcbiAgICogcmVzZXQgaXRzIHZhbHVlIHRvIHRoZSBkZWZhdWx0VmFsdWVcbiAgICovXG5cbiAgaWYgKCFpc1Byb3AgJiYgd2FzUHJvcCAmJiBzdGF0ZVZhbHVlICE9PSBkZWZhdWx0VmFsdWUpIHtcbiAgICBzZXRTdGF0ZShkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIFtpc1Byb3AgPyBwcm9wVmFsdWUgOiBzdGF0ZVZhbHVlLCB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBpZiAoaGFuZGxlcikgaGFuZGxlci5hcHBseSh2b2lkIDAsIFt2YWx1ZV0uY29uY2F0KGFyZ3MpKTtcbiAgICBzZXRTdGF0ZSh2YWx1ZSk7XG4gIH0sIFtoYW5kbGVyXSldO1xufVxuXG5leHBvcnQgeyB1c2VVbmNvbnRyb2xsZWRQcm9wIH07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWQocHJvcHMsIGNvbmZpZykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZmllbGROYW1lKSB7XG4gICAgdmFyIF9leHRlbmRzMjtcblxuICAgIHZhciBfcmVmID0gcmVzdWx0LFxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBfcmVmW1V0aWxzLmRlZmF1bHRLZXkoZmllbGROYW1lKV0sXG4gICAgICAgIHByb3BzVmFsdWUgPSBfcmVmW2ZpZWxkTmFtZV0sXG4gICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBbVXRpbHMuZGVmYXVsdEtleShmaWVsZE5hbWUpLCBmaWVsZE5hbWVdLm1hcChfdG9Qcm9wZXJ0eUtleSkpO1xuXG4gICAgdmFyIGhhbmRsZXJOYW1lID0gY29uZmlnW2ZpZWxkTmFtZV07XG5cbiAgICB2YXIgX3VzZVVuY29udHJvbGxlZFByb3AgPSB1c2VVbmNvbnRyb2xsZWRQcm9wKHByb3BzVmFsdWUsIGRlZmF1bHRWYWx1ZSwgcHJvcHNbaGFuZGxlck5hbWVdKSxcbiAgICAgICAgdmFsdWUgPSBfdXNlVW5jb250cm9sbGVkUHJvcFswXSxcbiAgICAgICAgaGFuZGxlciA9IF91c2VVbmNvbnRyb2xsZWRQcm9wWzFdO1xuXG4gICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCAoX2V4dGVuZHMyID0ge30sIF9leHRlbmRzMltmaWVsZE5hbWVdID0gdmFsdWUsIF9leHRlbmRzMltoYW5kbGVyTmFtZV0gPSBoYW5kbGVyLCBfZXh0ZW5kczIpKTtcbiAgfSwgcHJvcHMpO1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBDcmVhdGVzIGEgYFJlZmAgd2hvc2UgdmFsdWUgaXMgdXBkYXRlZCBpbiBhbiBlZmZlY3QsIGVuc3VyaW5nIHRoZSBtb3N0IHJlY2VudFxuICogdmFsdWUgaXMgdGhlIG9uZSByZW5kZXJlZCB3aXRoLiBHZW5lcmFsbHkgb25seSByZXF1aXJlZCBmb3IgQ29uY3VycmVudCBtb2RlIHVzYWdlXG4gKiB3aGVyZSBwcmV2aW91cyB3b3JrIGluIGByZW5kZXIoKWAgbWF5IGJlIGRpc2NhcmRlZCBiZWZvcmUgYmVpbmcgdXNlZC5cbiAqXG4gKiBUaGlzIGlzIHNhZmUgdG8gYWNjZXNzIGluIGFuIGV2ZW50IGhhbmRsZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBgUmVmYCB2YWx1ZVxuICovXG5cbmZ1bmN0aW9uIHVzZUNvbW1pdHRlZFJlZih2YWx1ZSkge1xuICB2YXIgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9LCBbdmFsdWVdKTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ29tbWl0dGVkUmVmOyIsImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbW1pdHRlZFJlZiBmcm9tICcuL3VzZUNvbW1pdHRlZFJlZic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VFdmVudENhbGxiYWNrKGZuKSB7XG4gIHZhciByZWYgPSB1c2VDb21taXR0ZWRSZWYoZm4pO1xuICByZXR1cm4gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZWYuY3VycmVudCAmJiByZWYuY3VycmVudC5hcHBseShyZWYsIGFyZ3VtZW50cyk7XG4gIH0sIFtyZWZdKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogVHJhY2sgd2hldGhlciBhIGNvbXBvbmVudCBpcyBjdXJyZW50IG1vdW50ZWQuIEdlbmVyYWxseSBsZXNzIHByZWZlcmFibGUgdGhhblxuICogcHJvcGVybGx5IGNhbmNlbGluZyBlZmZlY3RzIHNvIHRoZXkgZG9uJ3QgcnVuIGFmdGVyIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCxcbiAqIGJ1dCBoZWxwZnVsIGluIGNhc2VzIHdoZXJlIHRoYXQgaXNuJ3QgZmVhc2libGUsIHN1Y2ggYXMgYSBgUHJvbWlzZWAgcmVzb2x1dGlvbi5cbiAqXG4gKiBAcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgY3VycmVudCBpc01vdW50ZWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudFxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuICogY29uc3QgaXNNb3VudGVkID0gdXNlTW91bnRlZCgpXG4gKlxuICogdXNlRWZmZWN0KCgpID0+IHtcbiAqICAgZmV0Y2hkYXRhKCkudGhlbigobmV3RGF0YSkgPT4ge1xuICogICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAqICAgICAgICBzZXREYXRhKG5ld0RhdGEpO1xuICogICAgICB9XG4gKiAgIH0pXG4gKiB9KVxuICogYGBgXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTW91bnRlZCgpIHtcbiAgdmFyIG1vdW50ZWQgPSB1c2VSZWYodHJ1ZSk7XG4gIHZhciBpc01vdW50ZWQgPSB1c2VSZWYoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBtb3VudGVkLmN1cnJlbnQ7XG4gIH0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vdW50ZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGlzTW91bnRlZC5jdXJyZW50O1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBTdG9yZSB0aGUgbGFzdCBvZiBzb21lIHZhbHVlLiBUcmFja2VkIHZpYSBhIGBSZWZgIG9ubHkgdXBkYXRpbmcgaXRcbiAqIGFmdGVyIHRoZSBjb21wb25lbnQgcmVuZGVycy5cbiAqXG4gKiBIZWxwZnVsIGlmIHlvdSBuZWVkIHRvIGNvbXBhcmUgYSBwcm9wIHZhbHVlIHRvIGl0J3MgcHJldmlvdXMgdmFsdWUgZHVyaW5nIHJlbmRlci5cbiAqXG4gKiBgYGB0c1xuICogZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gKiAgIGNvbnN0IGxhc3RQcm9wcyA9IHVzZVByZXZpb3VzKHByb3BzKVxuICpcbiAqICAgaWYgKGxhc3RQcm9wcy5mb28gIT09IHByb3BzLmZvbylcbiAqICAgICByZXNldFZhbHVlRnJvbVByb3BzKHByb3BzLmZvbylcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gdHJhY2tcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VQcmV2aW91cyh2YWx1ZSkge1xuICB2YXIgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59IiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG52YXIgaXNSZWFjdE5hdGl2ZSA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIC8vIEB0cy1pZ25vcmVcbmdsb2JhbC5uYXZpZ2F0b3IgJiYgLy8gQHRzLWlnbm9yZVxuZ2xvYmFsLm5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnO1xudmFyIGlzRE9NID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcbi8qKlxuICogSXMgYHVzZUxheW91dEVmZmVjdGAgaW4gYSBET00gb3IgUmVhY3QgTmF0aXZlIGVudmlyb25tZW50LCBvdGhlcndpc2UgcmVzb2x2ZXMgdG8gdXNlRWZmZWN0XG4gKiBPbmx5IHVzZWZ1bCB0byBhdm9pZCB0aGUgY29uc29sZSB3YXJuaW5nLlxuICpcbiAqIFBSRUZFUiBgdXNlRWZmZWN0YCBVTkxFU1MgWU9VIEtOT1cgV0hBVCBZT1UgQVJFIERPSU5HLlxuICpcbiAqIEBjYXRlZ29yeSBlZmZlY3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgaXNET00gfHwgaXNSZWFjdE5hdGl2ZSA/IHVzZUxheW91dEVmZmVjdCA6IHVzZUVmZmVjdDsiLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFZmZlY3QgZnJvbSAnLi91c2VJc29tb3JwaGljRWZmZWN0JztcbnZhciB0YXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpO1xudmFyIHJlc2l6ZU9ic2VydmVyO1xuXG5mdW5jdGlvbiBnZXRSZXNpemVPYnNlcnZlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJldHVybi1hc3NpZ25cbiAgcmV0dXJuIHJlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIgfHwgbmV3IHdpbmRvdy5SZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHZhciBoYW5kbGVyID0gdGFyZ2V0TWFwLmdldChlbnRyeS50YXJnZXQpO1xuICAgICAgaWYgKGhhbmRsZXIpIGhhbmRsZXIoZW50cnkuY29udGVudFJlY3QpO1xuICAgIH0pO1xuICB9KTtcbn1cbi8qKlxuICogRWZmaWNpZW50bHkgb2JzZXJ2ZSBzaXplIGNoYW5nZXMgb24gYW4gZWxlbWVudC4gRGVwZW5kcyBvbiB0aGUgYFJlc2l6ZU9ic2VydmVyYCBhcGksXG4gKiBhbmQgcG9seWZpbGxzIGFyZSBuZWVkZWQgaW4gb2xkZXIgYnJvd3NlcnMuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFtyZWYsIGF0dGFjaFJlZl0gPSB1c2VDYWxsYmFja1JlZihudWxsKTtcbiAqXG4gKiBjb25zdCByZWN0ID0gdXNlUmVzaXplT2JzZXJ2ZXIocmVmKTtcbiAqXG4gKiByZXR1cm4gKFxuICogIDxkaXYgcmVmPXthdHRhY2hSZWZ9PlxuICogICAge0pTT04uc3RyaW5naWZ5KHJlY3QpfVxuICogIDwvZGl2PlxuICogKVxuICogYGBgXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIERPTSBlbGVtZW50IHRvIG9ic2VydmVcbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVJlc2l6ZU9ic2VydmVyKGVsZW1lbnQpIHtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKG51bGwpLFxuICAgICAgcmVjdCA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldFJlY3QgPSBfdXNlU3RhdGVbMV07XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICBnZXRSZXNpemVPYnNlcnZlcigpLm9ic2VydmUoZWxlbWVudCk7XG4gICAgc2V0UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICB0YXJnZXRNYXAuc2V0KGVsZW1lbnQsIGZ1bmN0aW9uIChyZWN0KSB7XG4gICAgICBzZXRSZWN0KHJlY3QpO1xuICAgIH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICB0YXJnZXRNYXAuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtlbGVtZW50XSk7XG4gIHJldHVybiByZWN0O1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcImFzXCIsIFwiZGlzYWJsZWRcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJpdmlhbEhyZWYoaHJlZikge1xuICByZXR1cm4gIWhyZWYgfHwgaHJlZi50cmltKCkgPT09ICcjJztcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCdXR0b25Qcm9wcyh7XG4gIHRhZ05hbWUsXG4gIGRpc2FibGVkLFxuICBocmVmLFxuICB0YXJnZXQsXG4gIHJlbCxcbiAgcm9sZSxcbiAgb25DbGljayxcbiAgdGFiSW5kZXggPSAwLFxuICB0eXBlXG59KSB7XG4gIGlmICghdGFnTmFtZSkge1xuICAgIGlmIChocmVmICE9IG51bGwgfHwgdGFyZ2V0ICE9IG51bGwgfHwgcmVsICE9IG51bGwpIHtcbiAgICAgIHRhZ05hbWUgPSAnYSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZ05hbWUgPSAnYnV0dG9uJztcbiAgICB9XG4gIH1cbiAgY29uc3QgbWV0YSA9IHtcbiAgICB0YWdOYW1lXG4gIH07XG4gIGlmICh0YWdOYW1lID09PSAnYnV0dG9uJykge1xuICAgIHJldHVybiBbe1xuICAgICAgdHlwZTogdHlwZSB8fCAnYnV0dG9uJyxcbiAgICAgIGRpc2FibGVkXG4gICAgfSwgbWV0YV07XG4gIH1cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSBldmVudCA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHRhZ05hbWUgPT09ICdhJyAmJiBpc1RyaXZpYWxIcmVmKGhyZWYpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkNsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkNsaWNrKGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBoYW5kbGVDbGljayhldmVudCk7XG4gICAgfVxuICB9O1xuICBpZiAodGFnTmFtZSA9PT0gJ2EnKSB7XG4gICAgLy8gRW5zdXJlIHRoZXJlJ3MgYSBocmVmIHNvIEVudGVyIGNhbiB0cmlnZ2VyIGFuY2hvciBidXR0b24uXG4gICAgaHJlZiB8fCAoaHJlZiA9ICcjJyk7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICBocmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW3tcbiAgICByb2xlOiByb2xlICE9IG51bGwgPyByb2xlIDogJ2J1dHRvbicsXG4gICAgLy8gZXhwbGljaXRseSB1bmRlZmluZWQgc28gdGhhdCBpdCBvdmVycmlkZXMgdGhlIHByb3BzIGRpc2FibGVkIGluIGEgc3ByZWFkXG4gICAgLy8gZS5nLiA8VGFnIHsuLi5wcm9wc30gey4uLmhvb2tQcm9wc30gLz5cbiAgICBkaXNhYmxlZDogdW5kZWZpbmVkLFxuICAgIHRhYkluZGV4OiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IHRhYkluZGV4LFxuICAgIGhyZWYsXG4gICAgdGFyZ2V0OiB0YWdOYW1lID09PSAnYScgPyB0YXJnZXQgOiB1bmRlZmluZWQsXG4gICAgJ2FyaWEtZGlzYWJsZWQnOiAhZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBkaXNhYmxlZCxcbiAgICByZWw6IHRhZ05hbWUgPT09ICdhJyA/IHJlbCA6IHVuZGVmaW5lZCxcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgfSwgbWV0YV07XG59XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICBhczogYXNQcm9wLFxuICAgICAgZGlzYWJsZWRcbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtidXR0b25Qcm9wcywge1xuICAgIHRhZ05hbWU6IENvbXBvbmVudFxuICB9XSA9IHVzZUJ1dHRvblByb3BzKE9iamVjdC5hc3NpZ24oe1xuICAgIHRhZ05hbWU6IGFzUHJvcCxcbiAgICBkaXNhYmxlZFxuICB9LCBwcm9wcykpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywgYnV0dG9uUHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7XG59KTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdCdXR0b24nO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImNvbnN0IF9leGNsdWRlZCA9IFtcIm9uS2V5RG93blwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYW5jaG9yLWhhcy1jb250ZW50ICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAcmVzdGFydC9ob29rcyc7XG5pbXBvcnQgeyB1c2VCdXR0b25Qcm9wcyB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNUcml2aWFsSHJlZihocmVmKSB7XG4gIHJldHVybiAhaHJlZiB8fCBocmVmLnRyaW0oKSA9PT0gJyMnO1xufVxuLyoqXG4gKiBBbiBnZW5lcmljIGA8YT5gIGNvbXBvbmVudCB0aGF0IGNvdmVycyBhIGZldyBBMTF5IGNhc2VzLCBlbnN1cmluZyB0aGF0XG4gKiBjYXNlcyB3aGVyZSB0aGUgYGhyZWZgIGlzIG1pc3Npbmcgb3IgdHJpdmlhbCBsaWtlIFwiI1wiIGFyZSB0cmVhdGVkIGxpa2UgYnV0dG9ucy5cbiAqL1xuY29uc3QgQW5jaG9yID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgb25LZXlEb3duXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbYnV0dG9uUHJvcHNdID0gdXNlQnV0dG9uUHJvcHMoT2JqZWN0LmFzc2lnbih7XG4gICAgdGFnTmFtZTogJ2EnXG4gIH0sIHByb3BzKSk7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGJ1dHRvblByb3BzLm9uS2V5RG93bihlKTtcbiAgICBvbktleURvd24gPT0gbnVsbCA/IHZvaWQgMCA6IG9uS2V5RG93bihlKTtcbiAgfSk7XG4gIGlmIChpc1RyaXZpYWxIcmVmKHByb3BzLmhyZWYpIHx8IHByb3BzLnJvbGUgPT09ICdidXR0b24nKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgcHJvcHMsIGJ1dHRvblByb3BzLCB7XG4gICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICByZWY6IHJlZlxuICB9LCBwcm9wcywge1xuICAgIG9uS2V5RG93bjogb25LZXlEb3duXG4gIH0pKTtcbn0pO1xuQW5jaG9yLmRpc3BsYXlOYW1lID0gJ0FuY2hvcic7XG5leHBvcnQgZGVmYXVsdCBBbmNob3I7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkVBS1BPSU5UUyA9IFsneHhsJywgJ3hsJywgJ2xnJywgJ21kJywgJ3NtJywgJ3hzJ107XG5leHBvcnQgY29uc3QgREVGQVVMVF9NSU5fQlJFQUtQT0lOVCA9ICd4cyc7XG5jb25zdCBUaGVtZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIHByZWZpeGVzOiB7fSxcbiAgYnJlYWtwb2ludHM6IERFRkFVTFRfQlJFQUtQT0lOVFMsXG4gIG1pbkJyZWFrcG9pbnQ6IERFRkFVTFRfTUlOX0JSRUFLUE9JTlRcbn0pO1xuY29uc3Qge1xuICBDb25zdW1lcixcbiAgUHJvdmlkZXJcbn0gPSBUaGVtZUNvbnRleHQ7XG5mdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHtcbiAgcHJlZml4ZXMgPSB7fSxcbiAgYnJlYWtwb2ludHMgPSBERUZBVUxUX0JSRUFLUE9JTlRTLFxuICBtaW5CcmVha3BvaW50ID0gREVGQVVMVF9NSU5fQlJFQUtQT0lOVCxcbiAgZGlyLFxuICBjaGlsZHJlblxufSkge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcHJlZml4ZXM6IHtcbiAgICAgIC4uLnByZWZpeGVzXG4gICAgfSxcbiAgICBicmVha3BvaW50cyxcbiAgICBtaW5CcmVha3BvaW50LFxuICAgIGRpclxuICB9KSwgW3ByZWZpeGVzLCBicmVha3BvaW50cywgbWluQnJlYWtwb2ludCwgZGlyXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChQcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0VmFsdWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJvb3RzdHJhcFByZWZpeChwcmVmaXgsIGRlZmF1bHRQcmVmaXgpIHtcbiAgY29uc3Qge1xuICAgIHByZWZpeGVzXG4gIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiBwcmVmaXggfHwgcHJlZml4ZXNbZGVmYXVsdFByZWZpeF0gfHwgZGVmYXVsdFByZWZpeDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCb290c3RyYXBCcmVha3BvaW50cygpIHtcbiAgY29uc3Qge1xuICAgIGJyZWFrcG9pbnRzXG4gIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiBicmVha3BvaW50cztcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCb290c3RyYXBNaW5CcmVha3BvaW50KCkge1xuICBjb25zdCB7XG4gICAgbWluQnJlYWtwb2ludFxuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gbWluQnJlYWtwb2ludDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc1JUTCgpIHtcbiAgY29uc3Qge1xuICAgIGRpclxuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gZGlyID09PSAncnRsJztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJvb3RzdHJhcENvbXBvbmVudChDb21wb25lbnQsIG9wdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykgb3B0cyA9IHtcbiAgICBwcmVmaXg6IG9wdHNcbiAgfTtcbiAgY29uc3QgaXNDbGFzc3kgPSBDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudDtcbiAgLy8gSWYgaXQncyBhIGZ1bmN0aW9uYWwgY29tcG9uZW50IG1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBpdCB3aXRoIGEgcmVmXG4gIGNvbnN0IHtcbiAgICBwcmVmaXgsXG4gICAgZm9yd2FyZFJlZkFzID0gaXNDbGFzc3kgPyAncmVmJyA6ICdpbm5lclJlZidcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IFdyYXBwZWQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIHByb3BzW2ZvcndhcmRSZWZBc10gPSByZWY7XG4gICAgY29uc3QgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgocHJvcHMuYnNQcmVmaXgsIHByZWZpeCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBic1ByZWZpeDogYnNQcmVmaXhcbiAgICB9KTtcbiAgfSk7XG4gIFdyYXBwZWQuZGlzcGxheU5hbWUgPSBgQm9vdHN0cmFwKCR7Q29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lfSlgO1xuICByZXR1cm4gV3JhcHBlZDtcbn1cbmV4cG9ydCB7IGNyZWF0ZUJvb3RzdHJhcENvbXBvbmVudCwgQ29uc3VtZXIgYXMgVGhlbWVDb25zdW1lciB9O1xuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2VcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IHRpbWVvdXRzU2hhcGUgfSBmcm9tICcuL3V0aWxzL1Byb3BUeXBlcyc7XG5pbXBvcnQgVHJhbnNpdGlvbkdyb3VwQ29udGV4dCBmcm9tICcuL1RyYW5zaXRpb25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsgZm9yY2VSZWZsb3cgfSBmcm9tICcuL3V0aWxzL3JlZmxvdyc7XG5leHBvcnQgdmFyIFVOTU9VTlRFRCA9ICd1bm1vdW50ZWQnO1xuZXhwb3J0IHZhciBFWElURUQgPSAnZXhpdGVkJztcbmV4cG9ydCB2YXIgRU5URVJJTkcgPSAnZW50ZXJpbmcnO1xuZXhwb3J0IHZhciBFTlRFUkVEID0gJ2VudGVyZWQnO1xuZXhwb3J0IHZhciBFWElUSU5HID0gJ2V4aXRpbmcnO1xuLyoqXG4gKiBUaGUgVHJhbnNpdGlvbiBjb21wb25lbnQgbGV0cyB5b3UgZGVzY3JpYmUgYSB0cmFuc2l0aW9uIGZyb20gb25lIGNvbXBvbmVudFxuICogc3RhdGUgdG8gYW5vdGhlciBfb3ZlciB0aW1lXyB3aXRoIGEgc2ltcGxlIGRlY2xhcmF0aXZlIEFQSS4gTW9zdCBjb21tb25seVxuICogaXQncyB1c2VkIHRvIGFuaW1hdGUgdGhlIG1vdW50aW5nIGFuZCB1bm1vdW50aW5nIG9mIGEgY29tcG9uZW50LCBidXQgY2FuIGFsc29cbiAqIGJlIHVzZWQgdG8gZGVzY3JpYmUgaW4tcGxhY2UgdHJhbnNpdGlvbiBzdGF0ZXMgYXMgd2VsbC5cbiAqXG4gKiAtLS1cbiAqXG4gKiAqKk5vdGUqKjogYFRyYW5zaXRpb25gIGlzIGEgcGxhdGZvcm0tYWdub3N0aWMgYmFzZSBjb21wb25lbnQuIElmIHlvdSdyZSB1c2luZ1xuICogdHJhbnNpdGlvbnMgaW4gQ1NTLCB5b3UnbGwgcHJvYmFibHkgd2FudCB0byB1c2VcbiAqIFtgQ1NTVHJhbnNpdGlvbmBdKGh0dHBzOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvY3NzLXRyYW5zaXRpb24pXG4gKiBpbnN0ZWFkLiBJdCBpbmhlcml0cyBhbGwgdGhlIGZlYXR1cmVzIG9mIGBUcmFuc2l0aW9uYCwgYnV0IGNvbnRhaW5zXG4gKiBhZGRpdGlvbmFsIGZlYXR1cmVzIG5lY2Vzc2FyeSB0byBwbGF5IG5pY2Ugd2l0aCBDU1MgdHJhbnNpdGlvbnMgKGhlbmNlIHRoZVxuICogbmFtZSBvZiB0aGUgY29tcG9uZW50KS5cbiAqXG4gKiAtLS1cbiAqXG4gKiBCeSBkZWZhdWx0IHRoZSBgVHJhbnNpdGlvbmAgY29tcG9uZW50IGRvZXMgbm90IGFsdGVyIHRoZSBiZWhhdmlvciBvZiB0aGVcbiAqIGNvbXBvbmVudCBpdCByZW5kZXJzLCBpdCBvbmx5IHRyYWNrcyBcImVudGVyXCIgYW5kIFwiZXhpdFwiIHN0YXRlcyBmb3IgdGhlXG4gKiBjb21wb25lbnRzLiBJdCdzIHVwIHRvIHlvdSB0byBnaXZlIG1lYW5pbmcgYW5kIGVmZmVjdCB0byB0aG9zZSBzdGF0ZXMuIEZvclxuICogZXhhbXBsZSB3ZSBjYW4gYWRkIHN0eWxlcyB0byBhIGNvbXBvbmVudCB3aGVuIGl0IGVudGVycyBvciBleGl0czpcbiAqXG4gKiBgYGBqc3hcbiAqIGltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbiAqXG4gKiBjb25zdCBkdXJhdGlvbiA9IDMwMDtcbiAqXG4gKiBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gKiAgIHRyYW5zaXRpb246IGBvcGFjaXR5ICR7ZHVyYXRpb259bXMgZWFzZS1pbi1vdXRgLFxuICogICBvcGFjaXR5OiAwLFxuICogfVxuICpcbiAqIGNvbnN0IHRyYW5zaXRpb25TdHlsZXMgPSB7XG4gKiAgIGVudGVyaW5nOiB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZW50ZXJlZDogIHsgb3BhY2l0eTogMSB9LFxuICogICBleGl0aW5nOiAgeyBvcGFjaXR5OiAwIH0sXG4gKiAgIGV4aXRlZDogIHsgb3BhY2l0eTogMCB9LFxuICogfTtcbiAqXG4gKiBjb25zdCBGYWRlID0gKHsgaW46IGluUHJvcCB9KSA9PiAoXG4gKiAgIDxUcmFuc2l0aW9uIGluPXtpblByb3B9IHRpbWVvdXQ9e2R1cmF0aW9ufT5cbiAqICAgICB7c3RhdGUgPT4gKFxuICogICAgICAgPGRpdiBzdHlsZT17e1xuICogICAgICAgICAuLi5kZWZhdWx0U3R5bGUsXG4gKiAgICAgICAgIC4uLnRyYW5zaXRpb25TdHlsZXNbc3RhdGVdXG4gKiAgICAgICB9fT5cbiAqICAgICAgICAgSSdtIGEgZmFkZSBUcmFuc2l0aW9uIVxuICogICAgICAgPC9kaXY+XG4gKiAgICAgKX1cbiAqICAgPC9UcmFuc2l0aW9uPlxuICogKTtcbiAqIGBgYFxuICpcbiAqIFRoZXJlIGFyZSA0IG1haW4gc3RhdGVzIGEgVHJhbnNpdGlvbiBjYW4gYmUgaW46XG4gKiAgLSBgJ2VudGVyaW5nJ2BcbiAqICAtIGAnZW50ZXJlZCdgXG4gKiAgLSBgJ2V4aXRpbmcnYFxuICogIC0gYCdleGl0ZWQnYFxuICpcbiAqIFRyYW5zaXRpb24gc3RhdGUgaXMgdG9nZ2xlZCB2aWEgdGhlIGBpbmAgcHJvcC4gV2hlbiBgdHJ1ZWAgdGhlIGNvbXBvbmVudFxuICogYmVnaW5zIHRoZSBcIkVudGVyXCIgc3RhZ2UuIER1cmluZyB0aGlzIHN0YWdlLCB0aGUgY29tcG9uZW50IHdpbGwgc2hpZnQgZnJvbVxuICogaXRzIGN1cnJlbnQgdHJhbnNpdGlvbiBzdGF0ZSwgdG8gYCdlbnRlcmluZydgIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlXG4gKiB0cmFuc2l0aW9uIGFuZCB0aGVuIHRvIHRoZSBgJ2VudGVyZWQnYCBzdGFnZSBvbmNlIGl0J3MgY29tcGxldGUuIExldCdzIHRha2VcbiAqIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSAod2UnbGwgdXNlIHRoZVxuICogW3VzZVN0YXRlXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlc3RhdGUpIGhvb2spOlxuICpcbiAqIGBgYGpzeFxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCBbaW5Qcm9wLCBzZXRJblByb3BdID0gdXNlU3RhdGUoZmFsc2UpO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXs1MDB9PlxuICogICAgICAgICB7c3RhdGUgPT4gKFxuICogICAgICAgICAgIC8vIC4uLlxuICogICAgICAgICApfVxuICogICAgICAgPC9UcmFuc2l0aW9uPlxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJblByb3AodHJ1ZSl9PlxuICogICAgICAgICBDbGljayB0byBFbnRlclxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCB0aGUgY29tcG9uZW50IHdpbGwgc2hpZnQgdG8gdGhlIGAnZW50ZXJpbmcnYCBzdGF0ZVxuICogYW5kIHN0YXkgdGhlcmUgZm9yIDUwMG1zICh0aGUgdmFsdWUgb2YgYHRpbWVvdXRgKSBiZWZvcmUgaXQgZmluYWxseSBzd2l0Y2hlc1xuICogdG8gYCdlbnRlcmVkJ2AuXG4gKlxuICogV2hlbiBgaW5gIGlzIGBmYWxzZWAgdGhlIHNhbWUgdGhpbmcgaGFwcGVucyBleGNlcHQgdGhlIHN0YXRlIG1vdmVzIGZyb21cbiAqIGAnZXhpdGluZydgIHRvIGAnZXhpdGVkJ2AuXG4gKi9cblxudmFyIFRyYW5zaXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoVHJhbnNpdGlvbiwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gVHJhbnNpdGlvbihwcm9wcywgY29udGV4dCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSB8fCB0aGlzO1xuICAgIHZhciBwYXJlbnRHcm91cCA9IGNvbnRleHQ7IC8vIEluIHRoZSBjb250ZXh0IG9mIGEgVHJhbnNpdGlvbkdyb3VwIGFsbCBlbnRlcnMgYXJlIHJlYWxseSBhcHBlYXJzXG5cbiAgICB2YXIgYXBwZWFyID0gcGFyZW50R3JvdXAgJiYgIXBhcmVudEdyb3VwLmlzTW91bnRpbmcgPyBwcm9wcy5lbnRlciA6IHByb3BzLmFwcGVhcjtcbiAgICB2YXIgaW5pdGlhbFN0YXR1cztcbiAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByb3BzLmluKSB7XG4gICAgICBpZiAoYXBwZWFyKSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICAgIF90aGlzLmFwcGVhclN0YXR1cyA9IEVOVEVSSU5HO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVOVEVSRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy51bm1vdW50T25FeGl0IHx8IHByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gVU5NT1VOVEVEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVYSVRFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHN0YXR1czogaW5pdGlhbFN0YXR1c1xuICAgIH07XG4gICAgX3RoaXMubmV4dENhbGxiYWNrID0gbnVsbDtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBUcmFuc2l0aW9uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBwcmV2U3RhdGUpIHtcbiAgICB2YXIgbmV4dEluID0gX3JlZi5pbjtcblxuICAgIGlmIChuZXh0SW4gJiYgcHJldlN0YXRlLnN0YXR1cyA9PT0gVU5NT1VOVEVEKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgLy8gICBsZXQgbmV4dFN0YXR1cyA9IG51bGxcbiAgLy8gICBpZiAocHJldlByb3BzICE9PSB0aGlzLnByb3BzKSB7XG4gIC8vICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdGhpcy5zdGF0ZVxuICAvLyAgICAgaWYgKHRoaXMucHJvcHMuaW4pIHtcbiAgLy8gICAgICAgaWYgKHN0YXR1cyAhPT0gRU5URVJJTkcgJiYgc3RhdHVzICE9PSBFTlRFUkVEKSB7XG4gIC8vICAgICAgICAgbmV4dFN0YXR1cyA9IEVOVEVSSU5HXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHsgbmV4dFN0YXR1cyB9XG4gIC8vIH1cbiAgO1xuXG4gIHZhciBfcHJvdG8gPSBUcmFuc2l0aW9uLnByb3RvdHlwZTtcblxuICBfcHJvdG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyh0cnVlLCB0aGlzLmFwcGVhclN0YXR1cyk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICB2YXIgbmV4dFN0YXR1cyA9IG51bGw7XG5cbiAgICBpZiAocHJldlByb3BzICE9PSB0aGlzLnByb3BzKSB7XG4gICAgICB2YXIgc3RhdHVzID0gdGhpcy5zdGF0ZS5zdGF0dXM7XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklORztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gRU5URVJJTkcgfHwgc3RhdHVzID09PSBFTlRFUkVEKSB7XG4gICAgICAgICAgbmV4dFN0YXR1cyA9IEVYSVRJTkc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmYWxzZSwgbmV4dFN0YXR1cyk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0VGltZW91dHMgPSBmdW5jdGlvbiBnZXRUaW1lb3V0cygpIHtcbiAgICB2YXIgdGltZW91dCA9IHRoaXMucHJvcHMudGltZW91dDtcbiAgICB2YXIgZXhpdCwgZW50ZXIsIGFwcGVhcjtcbiAgICBleGl0ID0gZW50ZXIgPSBhcHBlYXIgPSB0aW1lb3V0O1xuXG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCAmJiB0eXBlb2YgdGltZW91dCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGV4aXQgPSB0aW1lb3V0LmV4aXQ7XG4gICAgICBlbnRlciA9IHRpbWVvdXQuZW50ZXI7IC8vIFRPRE86IHJlbW92ZSBmYWxsYmFjayBmb3IgbmV4dCBtYWpvclxuXG4gICAgICBhcHBlYXIgPSB0aW1lb3V0LmFwcGVhciAhPT0gdW5kZWZpbmVkID8gdGltZW91dC5hcHBlYXIgOiBlbnRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZXhpdDogZXhpdCxcbiAgICAgIGVudGVyOiBlbnRlcixcbiAgICAgIGFwcGVhcjogYXBwZWFyXG4gICAgfTtcbiAgfTtcblxuICBfcHJvdG8udXBkYXRlU3RhdHVzID0gZnVuY3Rpb24gdXBkYXRlU3RhdHVzKG1vdW50aW5nLCBuZXh0U3RhdHVzKSB7XG4gICAgaWYgKG1vdW50aW5nID09PSB2b2lkIDApIHtcbiAgICAgIG1vdW50aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG5leHRTdGF0dXMgIT09IG51bGwpIHtcbiAgICAgIC8vIG5leHRTdGF0dXMgd2lsbCBhbHdheXMgYmUgRU5URVJJTkcgb3IgRVhJVElORy5cbiAgICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG5cbiAgICAgIGlmIChuZXh0U3RhdHVzID09PSBFTlRFUklORykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy51bm1vdW50T25FeGl0IHx8IHRoaXMucHJvcHMubW91bnRPbkVudGVyKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3B1bGwvNzQ5XG4gICAgICAgICAgLy8gV2l0aCB1bm1vdW50T25FeGl0IG9yIG1vdW50T25FbnRlciwgdGhlIGVudGVyIGFuaW1hdGlvbiBzaG91bGQgaGFwcGVuIGF0IHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gYGV4aXRlZGAgYW5kIGBlbnRlcmluZ2AuXG4gICAgICAgICAgLy8gVG8gbWFrZSB0aGUgYW5pbWF0aW9uIGhhcHBlbiwgIHdlIGhhdmUgdG8gc2VwYXJhdGUgZWFjaCByZW5kZXJpbmcgYW5kIGF2b2lkIGJlaW5nIHByb2Nlc3NlZCBhcyBiYXRjaGVkLlxuXG4gICAgICAgICAgaWYgKG5vZGUpIGZvcmNlUmVmbG93KG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wZXJmb3JtRW50ZXIobW91bnRpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRXhpdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy51bm1vdW50T25FeGl0ICYmIHRoaXMuc3RhdGUuc3RhdHVzID09PSBFWElURUQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IFVOTU9VTlRFRFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5wZXJmb3JtRW50ZXIgPSBmdW5jdGlvbiBwZXJmb3JtRW50ZXIobW91bnRpbmcpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBlbnRlciA9IHRoaXMucHJvcHMuZW50ZXI7XG4gICAgdmFyIGFwcGVhcmluZyA9IHRoaXMuY29udGV4dCA/IHRoaXMuY29udGV4dC5pc01vdW50aW5nIDogbW91bnRpbmc7XG5cbiAgICB2YXIgX3JlZjIgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbYXBwZWFyaW5nXSA6IFtSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKSwgYXBwZWFyaW5nXSxcbiAgICAgICAgbWF5YmVOb2RlID0gX3JlZjJbMF0sXG4gICAgICAgIG1heWJlQXBwZWFyaW5nID0gX3JlZjJbMV07XG5cbiAgICB2YXIgdGltZW91dHMgPSB0aGlzLmdldFRpbWVvdXRzKCk7XG4gICAgdmFyIGVudGVyVGltZW91dCA9IGFwcGVhcmluZyA/IHRpbWVvdXRzLmFwcGVhciA6IHRpbWVvdXRzLmVudGVyOyAvLyBubyBlbnRlciBhbmltYXRpb24gc2tpcCByaWdodCB0byBFTlRFUkVEXG4gICAgLy8gaWYgd2UgYXJlIG1vdW50aW5nIGFuZCBydW5uaW5nIHRoaXMgaXQgbWVhbnMgYXBwZWFyIF9tdXN0XyBiZSBzZXRcblxuICAgIGlmICghbW91bnRpbmcgJiYgIWVudGVyIHx8IGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IEVOVEVSRURcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkVudGVyKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogRU5URVJJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucHJvcHMub25FbnRlcmluZyhtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcblxuICAgICAgX3RoaXMyLm9uVHJhbnNpdGlvbkVuZChlbnRlclRpbWVvdXQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIucHJvcHMub25FbnRlcmVkKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5wZXJmb3JtRXhpdCA9IGZ1bmN0aW9uIHBlcmZvcm1FeGl0KCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGV4aXQgPSB0aGlzLnByb3BzLmV4aXQ7XG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBtYXliZU5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB1bmRlZmluZWQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gbm8gZXhpdCBhbmltYXRpb24gc2tpcCByaWdodCB0byBFWElURURcblxuICAgIGlmICghZXhpdCB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uRXhpdChtYXliZU5vZGUpO1xuICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogRVhJVElOR1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRpbmcobWF5YmVOb2RlKTtcblxuICAgICAgX3RoaXMzLm9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0cy5leGl0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMucHJvcHMub25FeGl0ZWQobWF5YmVOb2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8uY2FuY2VsTmV4dENhbGxiYWNrID0gZnVuY3Rpb24gY2FuY2VsTmV4dENhbGxiYWNrKCkge1xuICAgIGlmICh0aGlzLm5leHRDYWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCk7XG4gICAgICB0aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5zYWZlU2V0U3RhdGUgPSBmdW5jdGlvbiBzYWZlU2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjaykge1xuICAgIC8vIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IHRoZXJlIGFyZSB3ZWlyZCByYWNlIGNvbmRpdGlvbnMgd2l0aFxuICAgIC8vIHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgdW5tb3VudGluZyBpbiB0ZXN0aW5nLCBzbyBhbHdheXMgbWFrZSBzdXJlIHRoYXRcbiAgICAvLyB3ZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHNldFN0YXRlIGNhbGxiYWNrcyBhZnRlciB3ZSB1bm1vdW50LlxuICAgIGNhbGxiYWNrID0gdGhpcy5zZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spO1xuICAgIHRoaXMuc2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgX3Byb3RvLnNldE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIHNldE5leHRDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgdmFyIGFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLm5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICBhY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgX3RoaXM0Lm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLm5leHRDYWxsYmFjaztcbiAgfTtcblxuICBfcHJvdG8ub25UcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gb25UcmFuc2l0aW9uRW5kKHRpbWVvdXQsIGhhbmRsZXIpIHtcbiAgICB0aGlzLnNldE5leHRDYWxsYmFjayhoYW5kbGVyKTtcbiAgICB2YXIgbm9kZSA9IHRoaXMucHJvcHMubm9kZVJlZiA/IHRoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50IDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgdmFyIGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIgPSB0aW1lb3V0ID09IG51bGwgJiYgIXRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXI7XG5cbiAgICBpZiAoIW5vZGUgfHwgZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLm5leHRDYWxsYmFjaywgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXIpIHtcbiAgICAgIHZhciBfcmVmMyA9IHRoaXMucHJvcHMubm9kZVJlZiA/IFt0aGlzLm5leHRDYWxsYmFja10gOiBbbm9kZSwgdGhpcy5uZXh0Q2FsbGJhY2tdLFxuICAgICAgICAgIG1heWJlTm9kZSA9IF9yZWYzWzBdLFxuICAgICAgICAgIG1heWJlTmV4dENhbGxiYWNrID0gX3JlZjNbMV07XG5cbiAgICAgIHRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXIobWF5YmVOb2RlLCBtYXliZU5leHRDYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgc2V0VGltZW91dCh0aGlzLm5leHRDYWxsYmFjaywgdGltZW91dCk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgaWYgKHN0YXR1cyA9PT0gVU5NT1VOVEVEKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBfaW4gPSBfdGhpcyRwcm9wcy5pbixcbiAgICAgICAgX21vdW50T25FbnRlciA9IF90aGlzJHByb3BzLm1vdW50T25FbnRlcixcbiAgICAgICAgX3VubW91bnRPbkV4aXQgPSBfdGhpcyRwcm9wcy51bm1vdW50T25FeGl0LFxuICAgICAgICBfYXBwZWFyID0gX3RoaXMkcHJvcHMuYXBwZWFyLFxuICAgICAgICBfZW50ZXIgPSBfdGhpcyRwcm9wcy5lbnRlcixcbiAgICAgICAgX2V4aXQgPSBfdGhpcyRwcm9wcy5leGl0LFxuICAgICAgICBfdGltZW91dCA9IF90aGlzJHByb3BzLnRpbWVvdXQsXG4gICAgICAgIF9hZGRFbmRMaXN0ZW5lciA9IF90aGlzJHByb3BzLmFkZEVuZExpc3RlbmVyLFxuICAgICAgICBfb25FbnRlciA9IF90aGlzJHByb3BzLm9uRW50ZXIsXG4gICAgICAgIF9vbkVudGVyaW5nID0gX3RoaXMkcHJvcHMub25FbnRlcmluZyxcbiAgICAgICAgX29uRW50ZXJlZCA9IF90aGlzJHByb3BzLm9uRW50ZXJlZCxcbiAgICAgICAgX29uRXhpdCA9IF90aGlzJHByb3BzLm9uRXhpdCxcbiAgICAgICAgX29uRXhpdGluZyA9IF90aGlzJHByb3BzLm9uRXhpdGluZyxcbiAgICAgICAgX29uRXhpdGVkID0gX3RoaXMkcHJvcHMub25FeGl0ZWQsXG4gICAgICAgIF9ub2RlUmVmID0gX3RoaXMkcHJvcHMubm9kZVJlZixcbiAgICAgICAgY2hpbGRQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF90aGlzJHByb3BzLCBbXCJjaGlsZHJlblwiLCBcImluXCIsIFwibW91bnRPbkVudGVyXCIsIFwidW5tb3VudE9uRXhpdFwiLCBcImFwcGVhclwiLCBcImVudGVyXCIsIFwiZXhpdFwiLCBcInRpbWVvdXRcIiwgXCJhZGRFbmRMaXN0ZW5lclwiLCBcIm9uRW50ZXJcIiwgXCJvbkVudGVyaW5nXCIsIFwib25FbnRlcmVkXCIsIFwib25FeGl0XCIsIFwib25FeGl0aW5nXCIsIFwib25FeGl0ZWRcIiwgXCJub2RlUmVmXCJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAvLyBhbGxvd3MgZm9yIG5lc3RlZCBUcmFuc2l0aW9uc1xuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uR3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9LCB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbihzdGF0dXMsIGNoaWxkUHJvcHMpIDogUmVhY3QuY2xvbmVFbGVtZW50KFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pLCBjaGlsZFByb3BzKSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2l0aW9uO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5UcmFuc2l0aW9uLmNvbnRleHRUeXBlID0gVHJhbnNpdGlvbkdyb3VwQ29udGV4dDtcblRyYW5zaXRpb24ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8ge1xuICAvKipcbiAgICogQSBSZWFjdCByZWZlcmVuY2UgdG8gRE9NIGVsZW1lbnQgdGhhdCBuZWVkIHRvIHRyYW5zaXRpb246XG4gICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81MTEyNzEzMC80NjcxOTMyXG4gICAqXG4gICAqICAgLSBXaGVuIGBub2RlUmVmYCBwcm9wIGlzIHVzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkIHRvIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICAgKiAgICAgIChlLmcuIGBvbkVudGVyYCkgYmVjYXVzZSB1c2VyIGFscmVhZHkgaGFzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG5vZGUuXG4gICAqICAgLSBXaGVuIGNoYW5naW5nIGBrZXlgIHByb3Agb2YgYFRyYW5zaXRpb25gIGluIGEgYFRyYW5zaXRpb25Hcm91cGAgYSBuZXdcbiAgICogICAgIGBub2RlUmVmYCBuZWVkIHRvIGJlIHByb3ZpZGVkIHRvIGBUcmFuc2l0aW9uYCB3aXRoIGNoYW5nZWQgYGtleWAgcHJvcFxuICAgKiAgICAgKHNlZVxuICAgKiAgICAgW3Rlc3QvQ1NTVHJhbnNpdGlvbi10ZXN0LmpzXShodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Jsb2IvMTM0MzVmODk3YjNhYjcxZjZlMTlkNzI0ZjE0NTU5NmY1OTEwNTgxYy90ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qcyNMMzYyLUw0MzcpKS5cbiAgICovXG4gIG5vZGVSZWY6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVudDogdHlwZW9mIEVsZW1lbnQgPT09ICd1bmRlZmluZWQnID8gUHJvcFR5cGVzLmFueSA6IGZ1bmN0aW9uIChwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wVmFsdWVba2V5XTtcbiAgICAgIHJldHVybiBQcm9wVHlwZXMuaW5zdGFuY2VPZih2YWx1ZSAmJiAnb3duZXJEb2N1bWVudCcgaW4gdmFsdWUgPyB2YWx1ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LkVsZW1lbnQgOiBFbGVtZW50KShwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KTtcbiAgICB9XG4gIH0pLFxuXG4gIC8qKlxuICAgKiBBIGBmdW5jdGlvbmAgY2hpbGQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIFJlYWN0IGVsZW1lbnQuIFRoaXMgZnVuY3Rpb24gaXNcbiAgICogY2FsbGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhbnNpdGlvbiBzdGF0dXMgKGAnZW50ZXJpbmcnYCwgYCdlbnRlcmVkJ2AsXG4gICAqIGAnZXhpdGluZydgLCBgJ2V4aXRlZCdgKSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXBwbHkgY29udGV4dFxuICAgKiBzcGVjaWZpYyBwcm9wcyB0byBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogYGBganN4XG4gICAqIDxUcmFuc2l0aW9uIGluPXt0aGlzLnN0YXRlLmlufSB0aW1lb3V0PXsxNTB9PlxuICAgKiAgIHtzdGF0ZSA9PiAoXG4gICAqICAgICA8TXlDb21wb25lbnQgY2xhc3NOYW1lPXtgZmFkZSBmYWRlLSR7c3RhdGV9YH0gLz5cbiAgICogICApfVxuICAgKiA8L1RyYW5zaXRpb24+XG4gICAqIGBgYFxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsIFByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWlyZWRdKS5pc1JlcXVpcmVkLFxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjb21wb25lbnQ7IHRyaWdnZXJzIHRoZSBlbnRlciBvciBleGl0IHN0YXRlc1xuICAgKi9cbiAgaW46IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBjaGlsZCBjb21wb25lbnQgaXMgbW91bnRlZCBpbW1lZGlhdGVseSBhbG9uZyB3aXRoXG4gICAqIHRoZSBwYXJlbnQgYFRyYW5zaXRpb25gIGNvbXBvbmVudC4gSWYgeW91IHdhbnQgdG8gXCJsYXp5IG1vdW50XCIgdGhlIGNvbXBvbmVudCBvbiB0aGVcbiAgICogZmlyc3QgYGluPXt0cnVlfWAgeW91IGNhbiBzZXQgYG1vdW50T25FbnRlcmAuIEFmdGVyIHRoZSBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIHRoZSBjb21wb25lbnQgd2lsbCBzdGF5XG4gICAqIG1vdW50ZWQsIGV2ZW4gb24gXCJleGl0ZWRcIiwgdW5sZXNzIHlvdSBhbHNvIHNwZWNpZnkgYHVubW91bnRPbkV4aXRgLlxuICAgKi9cbiAgbW91bnRPbkVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IHN0YXlzIG1vdW50ZWQgYWZ0ZXIgaXQgcmVhY2hlcyB0aGUgYCdleGl0ZWQnYCBzdGF0ZS5cbiAgICogU2V0IGB1bm1vdW50T25FeGl0YCBpZiB5b3UnZCBwcmVmZXIgdG8gdW5tb3VudCB0aGUgY29tcG9uZW50IGFmdGVyIGl0IGZpbmlzaGVzIGV4aXRpbmcuXG4gICAqL1xuICB1bm1vdW50T25FeGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGRvZXMgbm90IHBlcmZvcm0gdGhlIGVudGVyIHRyYW5zaXRpb24gd2hlblxuICAgKiBpdCBmaXJzdCBtb3VudHMsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBpbmAuIElmIHlvdSB3YW50IHRoaXNcbiAgICogYmVoYXZpb3IsIHNldCBib3RoIGBhcHBlYXJgIGFuZCBgaW5gIHRvIGB0cnVlYC5cbiAgICpcbiAgICogPiAqKk5vdGUqKjogdGhlcmUgYXJlIG5vIHNwZWNpYWwgYXBwZWFyIHN0YXRlcyBsaWtlIGBhcHBlYXJpbmdgL2BhcHBlYXJlZGAsIHRoaXMgcHJvcFxuICAgKiA+IG9ubHkgYWRkcyBhbiBhZGRpdGlvbmFsIGVudGVyIHRyYW5zaXRpb24uIEhvd2V2ZXIsIGluIHRoZVxuICAgKiA+IGA8Q1NTVHJhbnNpdGlvbj5gIGNvbXBvbmVudCB0aGF0IGZpcnN0IGVudGVyIHRyYW5zaXRpb24gZG9lcyByZXN1bHQgaW5cbiAgICogPiBhZGRpdGlvbmFsIGAuYXBwZWFyLSpgIGNsYXNzZXMsIHRoYXQgd2F5IHlvdSBjYW4gY2hvb3NlIHRvIHN0eWxlIGl0XG4gICAqID4gZGlmZmVyZW50bHkuXG4gICAqL1xuICBhcHBlYXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBlbnRlciB0cmFuc2l0aW9ucy5cbiAgICovXG4gIGVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZXhpdCB0cmFuc2l0aW9ucy5cbiAgICovXG4gIGV4aXQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gb2YgdGhlIHRyYW5zaXRpb24sIGluIG1pbGxpc2Vjb25kcy5cbiAgICogUmVxdWlyZWQgdW5sZXNzIGBhZGRFbmRMaXN0ZW5lcmAgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnM6XG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiB0aW1lb3V0PXs1MDB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBvciBpbmRpdmlkdWFsbHk6XG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiB0aW1lb3V0PXt7XG4gICAqICBhcHBlYXI6IDUwMCxcbiAgICogIGVudGVyOiAzMDAsXG4gICAqICBleGl0OiA1MDAsXG4gICAqIH19XG4gICAqIGBgYFxuICAgKlxuICAgKiAtIGBhcHBlYXJgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgZW50ZXJgXG4gICAqIC0gYGVudGVyYCBkZWZhdWx0cyB0byBgMGBcbiAgICogLSBgZXhpdGAgZGVmYXVsdHMgdG8gYDBgXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXIgfCB7IGVudGVyPzogbnVtYmVyLCBleGl0PzogbnVtYmVyLCBhcHBlYXI/OiBudW1iZXIgfX1cbiAgICovXG4gIHRpbWVvdXQ6IGZ1bmN0aW9uIHRpbWVvdXQocHJvcHMpIHtcbiAgICB2YXIgcHQgPSB0aW1lb3V0c1NoYXBlO1xuICAgIGlmICghcHJvcHMuYWRkRW5kTGlzdGVuZXIpIHB0ID0gcHQuaXNSZXF1aXJlZDtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHJldHVybiBwdC5hcHBseSh2b2lkIDAsIFtwcm9wc10uY29uY2F0KGFyZ3MpKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIHRyYW5zaXRpb24gZW5kIHRyaWdnZXIuIENhbGxlZCB3aXRoIHRoZSB0cmFuc2l0aW9uaW5nXG4gICAqIERPTSBub2RlIGFuZCBhIGBkb25lYCBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogYGBganN4XG4gICAqIGFkZEVuZExpc3RlbmVyPXsobm9kZSwgZG9uZSkgPT4ge1xuICAgKiAgIC8vIHVzZSB0aGUgY3NzIHRyYW5zaXRpb25lbmQgZXZlbnQgdG8gbWFyayB0aGUgZmluaXNoIG9mIGEgdHJhbnNpdGlvblxuICAgKiAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGRvbmUsIGZhbHNlKTtcbiAgICogfX1cbiAgICogYGBgXG4gICAqL1xuICBhZGRFbmRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGJlZm9yZSB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbCkgLT4gdm9pZFxuICAgKi9cbiAgb25FbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImVudGVyaW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKVxuICAgKi9cbiAgb25FbnRlcmluZzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImVudGVyZWRcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXJlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGJlZm9yZSB0aGUgXCJleGl0aW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJleGl0aW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJleGl0ZWRcIiBzdGF0dXMgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZFxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jXG59IDoge307IC8vIE5hbWUgdGhlIGZ1bmN0aW9uIHNvIGl0IGlzIGNsZWFyZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cblRyYW5zaXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlLFxuICBlbnRlcjogdHJ1ZSxcbiAgZXhpdDogdHJ1ZSxcbiAgb25FbnRlcjogbm9vcCxcbiAgb25FbnRlcmluZzogbm9vcCxcbiAgb25FbnRlcmVkOiBub29wLFxuICBvbkV4aXQ6IG5vb3AsXG4gIG9uRXhpdGluZzogbm9vcCxcbiAgb25FeGl0ZWQ6IG5vb3Bcbn07XG5UcmFuc2l0aW9uLlVOTU9VTlRFRCA9IFVOTU9VTlRFRDtcblRyYW5zaXRpb24uRVhJVEVEID0gRVhJVEVEO1xuVHJhbnNpdGlvbi5FTlRFUklORyA9IEVOVEVSSU5HO1xuVHJhbnNpdGlvbi5FTlRFUkVEID0gRU5URVJFRDtcblRyYW5zaXRpb24uRVhJVElORyA9IEVYSVRJTkc7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uOyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuICBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwiZXhwb3J0IHZhciBmb3JjZVJlZmxvdyA9IGZ1bmN0aW9uIGZvcmNlUmVmbG93KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuc2Nyb2xsVG9wO1xufTsiLCIvKipcbiAqIFJldHVybnMgdGhlIG93bmVyIGRvY3VtZW50IG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3duZXJEb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbn0iLCJ2YXIgclVwcGVyID0gLyhbQS1aXSkvZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGh5cGhlbmF0ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJVcHBlciwgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE0LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzJhZWI4YTJhNmJlYjAwNjE3YTQyMTdmN2Y4Mjg0OTI0ZmEyYWQ4MTkvc3JjL3ZlbmRvci9jb3JlL2h5cGhlbmF0ZVN0eWxlTmFtZS5qc1xuICovXG5pbXBvcnQgaHlwaGVuYXRlIGZyb20gJy4vaHlwaGVuYXRlJztcbnZhciBtc1BhdHRlcm4gPSAvXm1zLS87XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoeXBoZW5hdGVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5yZXBsYWNlKG1zUGF0dGVybiwgJy1tcy0nKTtcbn0iLCJ2YXIgc3VwcG9ydGVkVHJhbnNmb3JtcyA9IC9eKCh0cmFuc2xhdGV8cm90YXRlfHNjYWxlKShYfFl8WnwzZCk/fG1hdHJpeCgzZCk/fHBlcnNwZWN0aXZlfHNrZXcoWHxZKT8pJC9pO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUcmFuc2Zvcm0odmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHN1cHBvcnRlZFRyYW5zZm9ybXMudGVzdCh2YWx1ZSkpO1xufSIsImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gJy4vZ2V0Q29tcHV0ZWRTdHlsZSc7XG5pbXBvcnQgaHlwaGVuYXRlIGZyb20gJy4vaHlwaGVuYXRlU3R5bGUnO1xuaW1wb3J0IGlzVHJhbnNmb3JtIGZyb20gJy4vaXNUcmFuc2Zvcm0nO1xuXG5mdW5jdGlvbiBzdHlsZShub2RlLCBwcm9wZXJ0eSkge1xuICB2YXIgY3NzID0gJyc7XG4gIHZhciB0cmFuc2Zvcm1zID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGh5cGhlbmF0ZShwcm9wZXJ0eSkpIHx8IGdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZShoeXBoZW5hdGUocHJvcGVydHkpKTtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKHByb3BlcnR5KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0eVtrZXldO1xuXG4gICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgICAgbm9kZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShoeXBoZW5hdGUoa2V5KSk7XG4gICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybShrZXkpKSB7XG4gICAgICB0cmFuc2Zvcm1zICs9IGtleSArIFwiKFwiICsgdmFsdWUgKyBcIikgXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNzcyArPSBoeXBoZW5hdGUoa2V5KSArIFwiOiBcIiArIHZhbHVlICsgXCI7XCI7XG4gICAgfVxuICB9KTtcblxuICBpZiAodHJhbnNmb3Jtcykge1xuICAgIGNzcyArPSBcInRyYW5zZm9ybTogXCIgKyB0cmFuc2Zvcm1zICsgXCI7XCI7XG4gIH1cblxuICBub2RlLnN0eWxlLmNzc1RleHQgKz0gXCI7XCIgKyBjc3M7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlOyIsImltcG9ydCBvd25lcldpbmRvdyBmcm9tICcuL293bmVyV2luZG93Jztcbi8qKlxuICogUmV0dXJucyBvbmUgb3IgYWxsIGNvbXB1dGVkIHN0eWxlIHByb3BlcnRpZXMgb2YgYW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBwc3VlZG9FbGVtZW50IHRoZSBzdHlsZSBwcm9wZXJ0eVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUobm9kZSwgcHN1ZWRvRWxlbWVudCkge1xuICByZXR1cm4gb3duZXJXaW5kb3cobm9kZSkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBwc3VlZG9FbGVtZW50KTtcbn0iLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBvd25lciB3aW5kb3cgb2YgYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyV2luZG93KG5vZGUpIHtcbiAgdmFyIGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MgJiYgZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbn0iLCJleHBvcnQgZGVmYXVsdCAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXJldHVybi1hc3NpZ24gKi9cbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnLi9jYW5Vc2VET00nO1xuZXhwb3J0IHZhciBvcHRpb25zU3VwcG9ydGVkID0gZmFsc2U7XG5leHBvcnQgdmFyIG9uY2VTdXBwb3J0ZWQgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1N1cHBvcnRlZCA9IHRydWU7XG4gICAgfSxcblxuICAgIGdldCBvbmNlKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW11bHRpLWFzc2lnblxuICAgICAgcmV0dXJuIG9uY2VTdXBwb3J0ZWQgPSBvcHRpb25zU3VwcG9ydGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgfTtcblxuICBpZiAoY2FuVXNlRE9NKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIHRydWUpO1xuICB9XG59IGNhdGNoIChlKSB7XG4gIC8qICovXG59XG5cbi8qKlxuICogQW4gYGFkZEV2ZW50TGlzdGVuZXJgIHBvbnlmaWxsLCBzdXBwb3J0cyB0aGUgYG9uY2VgIG9wdGlvblxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIGV2ZW50TmFtZSB0aGUgZXZlbnQgbmFtZVxuICogQHBhcmFtIGhhbmRsZSB0aGUgaGFuZGxlclxuICogQHBhcmFtIG9wdGlvbnMgZXZlbnQgb3B0aW9uc1xuICovXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ2Jvb2xlYW4nICYmICFvbmNlU3VwcG9ydGVkKSB7XG4gICAgdmFyIG9uY2UgPSBvcHRpb25zLm9uY2UsXG4gICAgICAgIGNhcHR1cmUgPSBvcHRpb25zLmNhcHR1cmU7XG4gICAgdmFyIHdyYXBwZWRIYW5kbGVyID0gaGFuZGxlcjtcblxuICAgIGlmICghb25jZVN1cHBvcnRlZCAmJiBvbmNlKSB7XG4gICAgICB3cmFwcGVkSGFuZGxlciA9IGhhbmRsZXIuX19vbmNlIHx8IGZ1bmN0aW9uIG9uY2VIYW5kbGVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIG9uY2VIYW5kbGVyLCBjYXB0dXJlKTtcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZXIuX19vbmNlID0gd3JhcHBlZEhhbmRsZXI7XG4gICAgfVxuXG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgd3JhcHBlZEhhbmRsZXIsIG9wdGlvbnNTdXBwb3J0ZWQgPyBvcHRpb25zIDogY2FwdHVyZSk7XG4gIH1cblxuICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRkRXZlbnRMaXN0ZW5lcjsiLCJpbXBvcnQgYWRkRXZlbnRMaXN0ZW5lciBmcm9tICcuL2FkZEV2ZW50TGlzdGVuZXInO1xuaW1wb3J0IHJlbW92ZUV2ZW50TGlzdGVuZXIgZnJvbSAnLi9yZW1vdmVFdmVudExpc3RlbmVyJztcblxuZnVuY3Rpb24gbGlzdGVuKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0ZW47IiwiLyoqXG4gKiBBIGByZW1vdmVFdmVudExpc3RlbmVyYCBwb255ZmlsbFxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIGV2ZW50TmFtZSB0aGUgZXZlbnQgbmFtZVxuICogQHBhcmFtIGhhbmRsZSB0aGUgaGFuZGxlclxuICogQHBhcmFtIG9wdGlvbnMgZXZlbnQgb3B0aW9uc1xuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICB2YXIgY2FwdHVyZSA9IG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgIT09ICdib29sZWFuJyA/IG9wdGlvbnMuY2FwdHVyZSA6IG9wdGlvbnM7XG4gIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIGNhcHR1cmUpO1xuXG4gIGlmIChoYW5kbGVyLl9fb25jZSkge1xuICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIuX19vbmNlLCBjYXB0dXJlKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCByZW1vdmVFdmVudExpc3RlbmVyOyIsImltcG9ydCBjc3MgZnJvbSAnLi9jc3MnO1xuaW1wb3J0IGxpc3RlbiBmcm9tICcuL2xpc3Rlbic7XG5pbXBvcnQgdHJpZ2dlckV2ZW50IGZyb20gJy4vdHJpZ2dlckV2ZW50JztcblxuZnVuY3Rpb24gcGFyc2VEdXJhdGlvbihub2RlKSB7XG4gIHZhciBzdHIgPSBjc3Mobm9kZSwgJ3RyYW5zaXRpb25EdXJhdGlvbicpIHx8ICcnO1xuICB2YXIgbXVsdCA9IHN0ci5pbmRleE9mKCdtcycpID09PSAtMSA/IDEwMDAgOiAxO1xuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpICogbXVsdDtcbn1cblxuZnVuY3Rpb24gZW11bGF0ZVRyYW5zaXRpb25FbmQoZWxlbWVudCwgZHVyYXRpb24sIHBhZGRpbmcpIHtcbiAgaWYgKHBhZGRpbmcgPT09IHZvaWQgMCkge1xuICAgIHBhZGRpbmcgPSA1O1xuICB9XG5cbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICB2YXIgaGFuZGxlID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxsZWQpIHRyaWdnZXJFdmVudChlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcsIHRydWUpO1xuICB9LCBkdXJhdGlvbiArIHBhZGRpbmcpO1xuICB2YXIgcmVtb3ZlID0gbGlzdGVuKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIGNhbGxlZCA9IHRydWU7XG4gIH0sIHtcbiAgICBvbmNlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGNsZWFyVGltZW91dChoYW5kbGUpO1xuICAgIHJlbW92ZSgpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKGVsZW1lbnQsIGhhbmRsZXIsIGR1cmF0aW9uLCBwYWRkaW5nKSB7XG4gIGlmIChkdXJhdGlvbiA9PSBudWxsKSBkdXJhdGlvbiA9IHBhcnNlRHVyYXRpb24oZWxlbWVudCkgfHwgMDtcbiAgdmFyIHJlbW92ZUVtdWxhdGUgPSBlbXVsYXRlVHJhbnNpdGlvbkVuZChlbGVtZW50LCBkdXJhdGlvbiwgcGFkZGluZyk7XG4gIHZhciByZW1vdmUgPSBsaXN0ZW4oZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGVyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZW1vdmVFbXVsYXRlKCk7XG4gICAgcmVtb3ZlKCk7XG4gIH07XG59IiwiLyoqXG4gKiBUcmlnZ2VycyBhbiBldmVudCBvbiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gZXZlbnROYW1lIHRoZSBldmVudCBuYW1lIHRvIHRyaWdnZXJcbiAqIEBwYXJhbSBidWJibGVzIHdoZXRoZXIgdGhlIGV2ZW50IHNob3VsZCBidWJibGUgdXBcbiAqIEBwYXJhbSBjYW5jZWxhYmxlIHdoZXRoZXIgdGhlIGV2ZW50IHNob3VsZCBiZSBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyaWdnZXJFdmVudChub2RlLCBldmVudE5hbWUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpIHtcbiAgaWYgKGJ1YmJsZXMgPT09IHZvaWQgMCkge1xuICAgIGJ1YmJsZXMgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChjYW5jZWxhYmxlID09PSB2b2lkIDApIHtcbiAgICBjYW5jZWxhYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChub2RlKSB7XG4gICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgICBldmVudC5pbml0RXZlbnQoZXZlbnROYW1lLCBidWJibGVzLCBjYW5jZWxhYmxlKTtcbiAgICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9XG59IiwiaW1wb3J0IGNzcyBmcm9tICdkb20taGVscGVycy9jc3MnO1xuaW1wb3J0IHRyYW5zaXRpb25FbmQgZnJvbSAnZG9tLWhlbHBlcnMvdHJhbnNpdGlvbkVuZCc7XG5mdW5jdGlvbiBwYXJzZUR1cmF0aW9uKG5vZGUsIHByb3BlcnR5KSB7XG4gIGNvbnN0IHN0ciA9IGNzcyhub2RlLCBwcm9wZXJ0eSkgfHwgJyc7XG4gIGNvbnN0IG11bHQgPSBzdHIuaW5kZXhPZignbXMnKSA9PT0gLTEgPyAxMDAwIDogMTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKSAqIG11bHQ7XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIoZWxlbWVudCwgaGFuZGxlcikge1xuICBjb25zdCBkdXJhdGlvbiA9IHBhcnNlRHVyYXRpb24oZWxlbWVudCwgJ3RyYW5zaXRpb25EdXJhdGlvbicpO1xuICBjb25zdCBkZWxheSA9IHBhcnNlRHVyYXRpb24oZWxlbWVudCwgJ3RyYW5zaXRpb25EZWxheScpO1xuICBjb25zdCByZW1vdmUgPSB0cmFuc2l0aW9uRW5kKGVsZW1lbnQsIGUgPT4ge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWxlbWVudCkge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgICBoYW5kbGVyKGUpO1xuICAgIH1cbiAgfSwgZHVyYXRpb24gKyBkZWxheSk7XG59IiwiLy8gcmVhZGluZyBhIGRpbWVuc2lvbiBwcm9wIHdpbGwgY2F1c2UgdGhlIGJyb3dzZXIgdG8gcmVjYWxjdWxhdGUsXG4vLyB3aGljaCB3aWxsIGxldCBvdXIgYW5pbWF0aW9ucyB3b3JrXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmlnZ2VyQnJvd3NlclJlZmxvdyhub2RlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gIG5vZGUub2Zmc2V0SGVpZ2h0O1xufSIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbnZhciB0b0ZuUmVmID0gZnVuY3Rpb24gdG9GblJlZihyZWYpIHtcbiAgcmV0dXJuICFyZWYgfHwgdHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJyA/IHJlZiA6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZWZzKHJlZkEsIHJlZkIpIHtcbiAgdmFyIGEgPSB0b0ZuUmVmKHJlZkEpO1xuICB2YXIgYiA9IHRvRm5SZWYocmVmQik7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoYSkgYSh2YWx1ZSk7XG4gICAgaWYgKGIpIGIodmFsdWUpO1xuICB9O1xufVxuLyoqXG4gKiBDcmVhdGUgYW5kIHJldHVybnMgYSBzaW5nbGUgY2FsbGJhY2sgcmVmIGNvbXBvc2VkIGZyb20gdHdvIG90aGVyIFJlZnMuXG4gKlxuICogYGBgdHN4XG4gKiBjb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IFtlbGVtZW50LCBhdHRhY2hSZWZdID0gdXNlQ2FsbGJhY2tSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KCk7XG4gKiAgIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBhdHRhY2hSZWYpO1xuICpcbiAqICAgcmV0dXJuIDxidXR0b24gcmVmPXttZXJnZWRSZWZ9IHsuLi5wcm9wc30vPlxuICogfSlcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSByZWZBIEEgQ2FsbGJhY2sgb3IgbXV0YWJsZSBSZWZcbiAqIEBwYXJhbSByZWZCIEEgQ2FsbGJhY2sgb3IgbXV0YWJsZSBSZWZcbiAqIEBjYXRlZ29yeSByZWZzXG4gKi9cblxuZnVuY3Rpb24gdXNlTWVyZ2VkUmVmcyhyZWZBLCByZWZCKSB7XG4gIHJldHVybiB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbWVyZ2VSZWZzKHJlZkEsIHJlZkIpO1xuICB9LCBbcmVmQSwgcmVmQl0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VNZXJnZWRSZWZzOyIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRyYW5zaXRpb24gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uJztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHNhZmVGaW5kRE9NTm9kZSBmcm9tICcuL3NhZmVGaW5kRE9NTm9kZSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gTm9ybWFsaXplcyBUcmFuc2l0aW9uIGNhbGxiYWNrcyB3aGVuIG5vZGVSZWYgaXMgdXNlZC5cbmNvbnN0IFRyYW5zaXRpb25XcmFwcGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgb25FbnRlcixcbiAgb25FbnRlcmluZyxcbiAgb25FbnRlcmVkLFxuICBvbkV4aXQsXG4gIG9uRXhpdGluZyxcbiAgb25FeGl0ZWQsXG4gIGFkZEVuZExpc3RlbmVyLFxuICBjaGlsZHJlbixcbiAgY2hpbGRSZWYsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3Qgbm9kZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgbWVyZ2VkUmVmID0gdXNlTWVyZ2VkUmVmcyhub2RlUmVmLCBjaGlsZFJlZik7XG4gIGNvbnN0IGF0dGFjaFJlZiA9IHIgPT4ge1xuICAgIG1lcmdlZFJlZihzYWZlRmluZERPTU5vZGUocikpO1xuICB9O1xuICBjb25zdCBub3JtYWxpemUgPSBjYWxsYmFjayA9PiBwYXJhbSA9PiB7XG4gICAgaWYgKGNhbGxiYWNrICYmIG5vZGVSZWYuY3VycmVudCkge1xuICAgICAgY2FsbGJhY2sobm9kZVJlZi5jdXJyZW50LCBwYXJhbSk7XG4gICAgfVxuICB9O1xuXG4gIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuICBjb25zdCBoYW5kbGVFbnRlciA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkVudGVyKSwgW29uRW50ZXJdKTtcbiAgY29uc3QgaGFuZGxlRW50ZXJpbmcgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FbnRlcmluZyksIFtvbkVudGVyaW5nXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyZWQgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FbnRlcmVkKSwgW29uRW50ZXJlZF0pO1xuICBjb25zdCBoYW5kbGVFeGl0ID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRXhpdCksIFtvbkV4aXRdKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkV4aXRpbmcpLCBbb25FeGl0aW5nXSk7XG4gIGNvbnN0IGhhbmRsZUV4aXRlZCA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkV4aXRlZCksIFtvbkV4aXRlZF0pO1xuICBjb25zdCBoYW5kbGVBZGRFbmRMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShhZGRFbmRMaXN0ZW5lciksIFthZGRFbmRMaXN0ZW5lcl0pO1xuICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBhZGRFbmRMaXN0ZW5lcjogaGFuZGxlQWRkRW5kTGlzdGVuZXIsXG4gICAgbm9kZVJlZjogbm9kZVJlZixcbiAgICBjaGlsZHJlbjogdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gY2hpbGRyZW4oc3RhdHVzLCB7XG4gICAgICAuLi5pbm5lclByb3BzLFxuICAgICAgcmVmOiBhdHRhY2hSZWZcbiAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIHJlZjogYXR0YWNoUmVmXG4gICAgfSlcbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb25XcmFwcGVyOyIsImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2FmZUZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xuICBpZiAoY29tcG9uZW50T3JFbGVtZW50ICYmICdzZXRTdGF0ZScgaW4gY29tcG9uZW50T3JFbGVtZW50KSB7XG4gICAgcmV0dXJuIFJlYWN0RE9NLmZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudCAhPSBudWxsID8gY29tcG9uZW50T3JFbGVtZW50IDogbnVsbDtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRU5URVJFRCwgRU5URVJJTkcgfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwL1RyYW5zaXRpb24nO1xuaW1wb3J0IHRyYW5zaXRpb25FbmRMaXN0ZW5lciBmcm9tICcuL3RyYW5zaXRpb25FbmRMaXN0ZW5lcic7XG5pbXBvcnQgdHJpZ2dlckJyb3dzZXJSZWZsb3cgZnJvbSAnLi90cmlnZ2VyQnJvd3NlclJlZmxvdyc7XG5pbXBvcnQgVHJhbnNpdGlvbldyYXBwZXIgZnJvbSAnLi9UcmFuc2l0aW9uV3JhcHBlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIHRpbWVvdXQ6IDMwMCxcbiAgbW91bnRPbkVudGVyOiBmYWxzZSxcbiAgdW5tb3VudE9uRXhpdDogZmFsc2UsXG4gIGFwcGVhcjogZmFsc2Vcbn07XG5jb25zdCBmYWRlU3R5bGVzID0ge1xuICBbRU5URVJJTkddOiAnc2hvdycsXG4gIFtFTlRFUkVEXTogJ3Nob3cnXG59O1xuY29uc3QgRmFkZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIHRyYW5zaXRpb25DbGFzc2VzID0ge30sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VDYWxsYmFjaygobm9kZSwgaXNBcHBlYXJpbmcpID0+IHtcbiAgICB0cmlnZ2VyQnJvd3NlclJlZmxvdyhub2RlKTtcbiAgICBwcm9wcy5vbkVudGVyID09IG51bGwgPyB2b2lkIDAgOiBwcm9wcy5vbkVudGVyKG5vZGUsIGlzQXBwZWFyaW5nKTtcbiAgfSwgW3Byb3BzXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uV3JhcHBlciwge1xuICAgIHJlZjogcmVmLFxuICAgIGFkZEVuZExpc3RlbmVyOiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIsXG4gICAgLi4ucHJvcHMsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBjaGlsZHJlbjogKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcygnZmFkZScsIGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCBmYWRlU3R5bGVzW3N0YXR1c10sIHRyYW5zaXRpb25DbGFzc2VzW3N0YXR1c10pXG4gICAgfSlcbiAgfSk7XG59KTtcbkZhZGUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuRmFkZS5kaXNwbGF5TmFtZSA9ICdGYWRlJztcbmV4cG9ydCBkZWZhdWx0IEZhZGU7IiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHByb3BUeXBlcyA9IHtcbiAgLyoqIEFuIGFjY2Vzc2libGUgbGFiZWwgaW5kaWNhdGluZyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIENsb3NlIEJ1dHRvbi4gKi9cbiAgJ2FyaWEtbGFiZWwnOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogQSBjYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgQ2xvc2UgQnV0dG9uIGlzIGNsaWNrZWQuICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogUmVuZGVyIGRpZmZlcmVudCBjb2xvciB2YXJpYW50IGZvciB0aGUgYnV0dG9uLlxuICAgKlxuICAgKiBPbWl0dGluZyB0aGlzIHdpbGwgcmVuZGVyIHRoZSBkZWZhdWx0IGRhcmsgY29sb3IuXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWyd3aGl0ZSddKVxufTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGFiZWwnOiAnQ2xvc2UnXG59O1xuY29uc3QgQ2xvc2VCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjbGFzc05hbWUsXG4gIHZhcmlhbnQsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IC8qI19fUFVSRV9fKi9fanN4KFwiYnV0dG9uXCIsIHtcbiAgcmVmOiByZWYsXG4gIHR5cGU6IFwiYnV0dG9uXCIsXG4gIGNsYXNzTmFtZTogY2xhc3NOYW1lcygnYnRuLWNsb3NlJywgdmFyaWFudCAmJiBgYnRuLWNsb3NlLSR7dmFyaWFudH1gLCBjbGFzc05hbWUpLFxuICAuLi5wcm9wc1xufSkpO1xuQ2xvc2VCdXR0b24uZGlzcGxheU5hbWUgPSAnQ2xvc2VCdXR0b24nO1xuQ2xvc2VCdXR0b24ucHJvcFR5cGVzID0gcHJvcFR5cGVzO1xuQ2xvc2VCdXR0b24uZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQ2xvc2VCdXR0b247IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgKGNsYXNzTmFtZSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigocCwgcmVmKSA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gIC4uLnAsXG4gIHJlZjogcmVmLFxuICBjbGFzc05hbWU6IGNsYXNzTmFtZXMocC5jbGFzc05hbWUsIGNsYXNzTmFtZSlcbn0pKSk7IiwidmFyIHJIeXBoZW4gPSAvLSguKS9nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShySHlwaGVuLCBmdW5jdGlvbiAoXywgY2hyKSB7XG4gICAgcmV0dXJuIGNoci50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBjYW1lbGl6ZSBmcm9tICdkb20taGVscGVycy9jYW1lbGl6ZSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHBhc2NhbENhc2UgPSBzdHIgPT4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBjYW1lbGl6ZShzdHIpLnNsaWNlKDEpO1xuLy8gVE9ETzogZW1zdHJpY3RlbiAmIGZpeCB0aGUgdHlwaW5nIGhlcmUhIGBjcmVhdGVXaXRoQnNQcmVmaXg8VEVsZW1lbnRUeXBlPi4uLmBcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVdpdGhCc1ByZWZpeChwcmVmaXgsIHtcbiAgZGlzcGxheU5hbWUgPSBwYXNjYWxDYXNlKHByZWZpeCksXG4gIENvbXBvbmVudCxcbiAgZGVmYXVsdFByb3BzXG59ID0ge30pIHtcbiAgY29uc3QgQnNDb21wb25lbnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICAgIGNsYXNzTmFtZSxcbiAgICBic1ByZWZpeCxcbiAgICBhczogVGFnID0gQ29tcG9uZW50IHx8ICdkaXYnLFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCBwcmVmaXgpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUYWcsIHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcmVzb2x2ZWRQcmVmaXgpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfSk7XG4gIEJzQ29tcG9uZW50LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiAgQnNDb21wb25lbnQuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgcmV0dXJuIEJzQ29tcG9uZW50O1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgQW5jaG9yIGZyb20gJ0ByZXN0YXJ0L3VpL0FuY2hvcic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IEZhZGUgZnJvbSAnLi9GYWRlJztcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tICcuL0Nsb3NlQnV0dG9uJztcbmltcG9ydCBkaXZXaXRoQ2xhc3NOYW1lIGZyb20gJy4vZGl2V2l0aENsYXNzTmFtZSc7XG5pbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEaXZTdHlsZWRBc0g0ID0gZGl2V2l0aENsYXNzTmFtZSgnaDQnKTtcbkRpdlN0eWxlZEFzSDQuZGlzcGxheU5hbWUgPSAnRGl2U3R5bGVkQXNINCc7XG5jb25zdCBBbGVydEhlYWRpbmcgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2FsZXJ0LWhlYWRpbmcnLCB7XG4gIENvbXBvbmVudDogRGl2U3R5bGVkQXNINFxufSk7XG5jb25zdCBBbGVydExpbmsgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2FsZXJ0LWxpbmsnLCB7XG4gIENvbXBvbmVudDogQW5jaG9yXG59KTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdmFyaWFudDogJ3ByaW1hcnknLFxuICBzaG93OiB0cnVlLFxuICB0cmFuc2l0aW9uOiBGYWRlLFxuICBjbG9zZUxhYmVsOiAnQ2xvc2UgYWxlcnQnXG59O1xuY29uc3QgQWxlcnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigodW5jb250cm9sbGVkUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYnNQcmVmaXgsXG4gICAgc2hvdyxcbiAgICBjbG9zZUxhYmVsLFxuICAgIGNsb3NlVmFyaWFudCxcbiAgICBjbGFzc05hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgdmFyaWFudCxcbiAgICBvbkNsb3NlLFxuICAgIGRpc21pc3NpYmxlLFxuICAgIHRyYW5zaXRpb24sXG4gICAgLi4ucHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZCh1bmNvbnRyb2xsZWRQcm9wcywge1xuICAgIHNob3c6ICdvbkNsb3NlJ1xuICB9KTtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnYWxlcnQnKTtcbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICBvbkNsb3NlKGZhbHNlLCBlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBUcmFuc2l0aW9uID0gdHJhbnNpdGlvbiA9PT0gdHJ1ZSA/IEZhZGUgOiB0cmFuc2l0aW9uO1xuICBjb25zdCBhbGVydCA9IC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgcm9sZTogXCJhbGVydFwiLFxuICAgIC4uLighVHJhbnNpdGlvbiA/IHByb3BzIDogdW5kZWZpbmVkKSxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgZGlzbWlzc2libGUgJiYgYCR7cHJlZml4fS1kaXNtaXNzaWJsZWApLFxuICAgIGNoaWxkcmVuOiBbZGlzbWlzc2libGUgJiYgLyojX19QVVJFX18qL19qc3goQ2xvc2VCdXR0b24sIHtcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsb3NlLFxuICAgICAgXCJhcmlhLWxhYmVsXCI6IGNsb3NlTGFiZWwsXG4gICAgICB2YXJpYW50OiBjbG9zZVZhcmlhbnRcbiAgICB9KSwgY2hpbGRyZW5dXG4gIH0pO1xuICBpZiAoIVRyYW5zaXRpb24pIHJldHVybiBzaG93ID8gYWxlcnQgOiBudWxsO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbiwge1xuICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiB1bmRlZmluZWQsXG4gICAgaW46IHNob3csXG4gICAgY2hpbGRyZW46IGFsZXJ0XG4gIH0pO1xufSk7XG5BbGVydC5kaXNwbGF5TmFtZSA9ICdBbGVydCc7XG5BbGVydC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKEFsZXJ0LCB7XG4gIExpbms6IEFsZXJ0TGluayxcbiAgSGVhZGluZzogQWxlcnRIZWFkaW5nXG59KTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBBbGVydCBmcm9tIFwicmVhY3QtYm9vdHN0cmFwL0FsZXJ0XCI7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlID0gKHtcbiAgaGVhZGluZyxcbiAgaWNvbixcbiAgdHlwZSxcbiAgZGlzbWlzc2libGUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG59KSA9PiB7XG4gIHZhciB2YXJpYW50ID0gXCJwcmltYXJ5XCI7XG4gIGNvbnN0IHNob3dJY29uID0gaWNvbiA9PT0gdW5kZWZpbmVkIHx8IGljb247XG4gIHZhciBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiO1xuICB2YXIgW3Nob3csIHNldFNob3ddID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgaWYgKCFzaG93KSB7XG4gICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCAvPjtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcImVycm9yXCIpIHtcbiAgICB2YXJpYW50ID0gXCJkYW5nZXJcIjtcbiAgICBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWZpbGxcIjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcIndhcm5pbmdcIikge1xuICAgIHZhcmlhbnQgPSBcIndhcm5pbmdcIjtcbiAgICBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICB2YXJpYW50ID0gXCJzdWNjZXNzXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1jaGVjay1jaXJjbGVcIjtcbiAgfVxuXG4gIGljb24gPSBzaG93SWNvbiAmJiAoaWNvbiB8fCA8aSBjbGFzc05hbWU9e2Ake2ljb25DbGFzc30gbWUtMiBtLTBgfT48L2k+KTtcblxuICByZXR1cm4gKFxuICAgIDxBbGVydFxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2YXJpYW50PXt2YXJpYW50fVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvdyhmYWxzZSl9XG4gICAgICBkaXNtaXNzaWJsZT17ZGlzbWlzc2libGV9XG4gICAgPlxuICAgICAge2hlYWRpbmcgJiYgKFxuICAgICAgICA8QWxlcnQuSGVhZGluZz5cbiAgICAgICAgICB7aWNvbn1cbiAgICAgICAgICB7aGVhZGluZ31cbiAgICAgICAgPC9BbGVydC5IZWFkaW5nPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTBcIj5cbiAgICAgICAgeyFoZWFkaW5nICYmIGljb259XG4gICAgICAgIDxkaXY+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9BbGVydD5cbiAgKTtcbn07XG5cbk1lc3NhZ2UucHJvcFR5cGVzID0ge1xuICBoZWFkaW5nOiBQcm9wVHlwZXMubm9kZSxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG4gIGRpc21pc3NpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBoZWFkaW5nLCBlcnJvciB9KSA9PiB7XG4gIGNvbnNvbGUud2FybihlcnJvcik7XG4gIGhlYWRpbmcgPSBoZWFkaW5nIHx8IFwiRXJyb3JcIjtcblxuICB2YXIgbWVzc2FnZTtcbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJzdHJpbmdcIiB8fCBlcnJvciBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgIG1lc3NhZ2UgPSBlcnJvcjtcbiAgfSBlbHNlIGlmIChcbiAgICBlcnJvci5tZXNzYWdlICYmXG4gICAgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IGVycm9yLm1lc3NhZ2UgaW5zdGFuY2VvZiBTdHJpbmcpXG4gICkge1xuICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShlcnJvcik7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxNZXNzYWdlIGNsYXNzTmFtZT1cIm10LTMgbXgtM1wiIGhlYWRpbmc9e2hlYWRpbmd9IHR5cGU9XCJlcnJvclwiIGRpc21pc3NpYmxlPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9NZXNzYWdlPlxuICApO1xufTtcblxuRXJyb3JNZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgaGVhZGluZzogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuaW5zdGFuY2VPZihFcnJvcildKSxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5mbyA9ICh7IGNsYXNzTmFtZSwgc2l6ZSwgY29sb3IsIHRpdGxlIH0pID0+IHtcbiAgdmFyIGNsYXNzZXMgPSBcInNwaW5uZXItYm9yZGVyXCI7XG5cbiAgaWYgKGNsYXNzTmFtZSkge1xuICAgIGNsYXNzZXMgKz0gXCIgXCIgKyBjbGFzc05hbWU7XG4gIH1cbiAgaWYgKHNpemUgPT09IFwic21cIikge1xuICAgIGNsYXNzZXMgKz0gXCIgc3Bpbm5lci1ib3JkZXItc21cIjtcbiAgfVxuICBpZiAoY29sb3IgPT09IFwicHJpbWFyeVwiKSB7XG4gICAgY2xhc3NlcyArPSBcIiB0ZXh0LXByaW1hcnlcIjtcbiAgfSBlbHNlIGlmIChjb2xvciA9PT0gXCJzZWNvbmRhcnlcIikge1xuICAgIGNsYXNzZXMgKz0gXCIgdGV4dC1zZWNvbmRhcnlcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gdGl0bGU9e3RpdGxlfSBjbGFzc05hbWU9e2NsYXNzZXN9IHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICApO1xufTtcblxuTG9hZGluZ0luZm8ucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJzbVwiXSksXG4gIGNvbG9yOiBQcm9wVHlwZXMub25lT2YoW1wicHJpbWFyeVwiLCBcInNlY29uZGFyeVwiXSksXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTG9hZGluZ0luZm8uZGVmYXVsdFByb3BzID0ge1xuICB0aXRsZTogXCJMb2FkaW5nLi4uXCIsXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBJbmZvU2VydmljZSB9IGZyb20gXCIuLi9JbmZvU2VydmljZVwiO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCIuL01lc3NhZ2VcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcblxuYXN5bmMgZnVuY3Rpb24gX2xvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCkge1xuICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gIHJldHVybiBhd2FpdCBzZXJ2aWNlLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChzaG93TG9hZGluZ0luZm8sIHRoZW4sIG9uRXJyb3IpIHtcbiAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2hvd0xvYWRpbmdJbmZvKCk7XG4gICAgY29uc3QgdXNlcm5hbWUgPSBldmVudC50YXJnZXQudXNlcm5hbWUudmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBldmVudC50YXJnZXQucGFzc3dvcmQudmFsdWU7XG5cbiAgICAvLyBkZWFjdGl2ZSBsb2dpbiBmb3JtIChubyByZXRyeSB1bnRpbCB0aGUgc2VydmVyIGFuc3dlciBpcyB0aGVyZSBvciBhXG4gICAgLy8gdGltZW91dCkuXG4gICAgZXZlbnQudGFyZ2V0LnN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICB2YXIgbG9naW5fcHJvbWlzZSA9IF9sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIC8vIGFjdGl2ZSBsb2dpbiBhZ2FpblxuICAgICAgZXZlbnQudGFyZ2V0LnN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIGxvZ2luX3Byb21pc2UgPSBsb2dpbl9wcm9taXNlLnRoZW4odGhlbik7XG4gICAgfVxuXG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIGxvZ2luX3Byb21pc2UuY2F0Y2gob25FcnJvcik7XG4gICAgfVxuICB9O1xufVxuXG5jbGFzcyBUaW1lb3V0IHtcbiAgY29uc3RydWN0b3IoY2IsIG1zKSB7XG4gICAgdGhpcy5jYiA9IGNiO1xuICAgIG1zID0gTnVtYmVyLmlzSW50ZWdlcihtcykgPyBtcyA6IDEwMDAwO1xuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jYiwgbXMpO1xuICB9XG4gIHJlc2V0KG1zKSB7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIGlmICh0aGlzLmNiKSB7XG4gICAgICBtcyA9IE51bWJlci5pc0ludGVnZXIobXMpID8gbXMgOiAyMDAwMDtcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jYiwgbXMpO1xuICAgIH1cbiAgfVxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgIHRoaXMudGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgc3RvcCgpIHtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5jYiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5jb25zdCBMb2dpbkZvcm1JbnB1dHMgPSAoeyB0aGVuLCBvbkVycm9yLCBzaG93TWVzc2FnZXMsIHNob3dMb2FkaW5nSW5mbyB9KSA9PiB7XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgVGltZW91dChzaG93TWVzc2FnZXMpO1xuICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHRpbWVvdXQucGF1c2UoKTtcbiAgY29uc3Qgb25CbHVyID0gKCkgPT4gdGltZW91dC5yZXNldCgpO1xuICBjb25zdCBvbkNsaWNrID0gKCkgPT4gdGltZW91dC5zdG9wKCk7XG5cbiAgY29uc3Qgd3JhcHBlZE9uRXJyb3IgPSBhc3luYyAoZXJyb3IpID0+IHtcbiAgICBzaG93TWVzc2FnZXMoKTtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgcmV0dXJuIGF3YWl0IG9uRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtXG4gICAgICBjbGFzc05hbWU9XCJtLTBcIlxuICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdChzaG93TG9hZGluZ0luZm8sIHRoZW4sIHdyYXBwZWRPbkVycm9yKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBnLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVXNlcm5hbWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlVzZXJuYW1lXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQYXNzd29yZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTFcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbmF2YmFyLWJ0biBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICBuYW1lPVwic3VibWl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIExvZ2luXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuTG9naW5Gb3JtSW5wdXRzLnByb3BUeXBlcyA9IHtcbiAgdGhlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dNZXNzYWdlczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2hvd0xvYWRpbmdJbmZvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuY29uc3QgTG9naW5Gb3JtTWVzc2FnZSA9ICh7IG1lc3NhZ2UsIG1lc3NhZ2VUeXBlLCBzaG93SW5wdXRzIH0pID0+IHtcbiAgbWVzc2FnZSA9IG1lc3NhZ2UgPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tYXV0b1wiPlxuICAgICAgPE1lc3NhZ2UgdHlwZT17bWVzc2FnZVR5cGV9PnttZXNzYWdlfTwvTWVzc2FnZT5cbiAgICA8L2Rpdj5cbiAgKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYWxpZ24taXRlbXMtY2VudGVyIHJvdyBnLTNcIj5cbiAgICAgIHttZXNzYWdlfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tMVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbmF2YmFyLWJ0biBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgbmFtZT1cInNob3dcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9e3Nob3dJbnB1dHN9XG4gICAgICAgID5cbiAgICAgICAgICBMb2dpblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTG9naW5Gb3JtTWVzc2FnZS5wcm9wVHlwZXMgPSB7XG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5ub2RlLFxuICBtZXNzYWdlVHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcImVycm9yXCIsIFwid2FybmluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJpbmZvXCJdKSxcbiAgc2hvd0lucHV0czogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBjb25zdCBMb2dpbkZvcm0gPSAoeyB0aGVuLCBvbkVycm9yLCBtZXNzYWdlLCBtZXNzYWdlVHlwZSB9KSA9PiB7XG4gIGNvbnN0IFtzaG93SW5wdXRzLCBzZXRTaG93SW5wdXRzXSA9IHVzZVN0YXRlKFwibWVzc2FnZXNcIik7XG5cbiAgaWYgKHNob3dJbnB1dHMgPT09IFwiaW5wdXRzXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPExvZ2luRm9ybUlucHV0c1xuICAgICAgICB0aGVuPXt0aGVufVxuICAgICAgICBvbkVycm9yPXtvbkVycm9yfVxuICAgICAgICBzaG93TWVzc2FnZXM9eygpID0+IHNldFNob3dJbnB1dHMoXCJtZXNzYWdlc1wiKX1cbiAgICAgICAgc2hvd0xvYWRpbmdJbmZvPXsoKSA9PiBzZXRTaG93SW5wdXRzKFwibG9hZGluZ1wiKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSBlbHNlIGlmIChzaG93SW5wdXRzID09PSBcImxvYWRpbmdcIikge1xuICAgIHJldHVybiA8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxMb2dpbkZvcm1NZXNzYWdlXG4gICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgbWVzc2FnZVR5cGU9e21lc3NhZ2VUeXBlfVxuICAgICAgc2hvd0lucHV0cz17KCkgPT4gc2V0U2hvd0lucHV0cyhcImlucHV0c1wiKX1cbiAgICAvPlxuICApO1xufTtcblxuTG9naW5Gb3JtLnByb3BUeXBlcyA9IHtcbiAgdGhlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5ub2RlLFxuICBtZXNzYWdlVHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcImVycm9yXCIsIFwid2FybmluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJpbmZvXCJdKSxcbn07XG4iLCJ2YXIgdG9BcnJheSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFtdLnNsaWNlKTtcbi8qKlxuICogUnVucyBgcXVlcnlTZWxlY3RvckFsbGAgb24gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIHNlbGVjdG9yIHRoZSBzZWxlY3RvclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHFzYShlbGVtZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gdG9BcnJheShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWR1Y2VyIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBhIGNvbXBvbmVudCB1cGRhdGUuIHRoZSBob29rIGVxdWl2YWxlbnQgdG9cbiAqIGB0aGlzLmZvcmNlVXBkYXRlKClgIGluIGEgY2xhc3MgY29tcG9uZW50LiBJbiBtb3N0IGNhc2VzIHVzaW5nIGEgc3RhdGUgdmFsdWUgZGlyZWN0bHlcbiAqIGlzIHByZWZlcmFibGUgYnV0IG1heSBiZSByZXF1aXJlZCBpbiBzb21lIGFkdmFuY2VkIHVzYWdlcyBvZiByZWZzIGZvciBpbnRlcm9wIG9yXG4gKiB3aGVuIGRpcmVjdCBET00gbWFuaXB1bGF0aW9uIGlzIHJlcXVpcmVkLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gKlxuICogY29uc3QgdXBkYXRlT25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAqICBmb3JjZVVwZGF0ZSgpXG4gKiB9LCBbZm9yY2VVcGRhdGVdKVxuICpcbiAqIHJldHVybiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXt1cGRhdGVPbkNsaWNrfT5IaSB0aGVyZTwvYnV0dG9uPlxuICogYGBgXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRm9yY2VVcGRhdGUoKSB7XG4gIC8vIFRoZSB0b2dnbGluZyBzdGF0ZSB2YWx1ZSBpcyBkZXNpZ25lZCB0byBkZWZlYXQgUmVhY3Qgb3B0aW1pemF0aW9ucyBmb3Igc2tpcHBpbmdcbiAgLy8gdXBkYXRlcyB3aGVuIHRoZXkgYXJlIHN0cmljdGluZyBlcXVhbCB0byB0aGUgbGFzdCBzdGF0ZSB2YWx1ZVxuICB2YXIgX3VzZVJlZHVjZXIgPSB1c2VSZWR1Y2VyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHJldHVybiAhc3RhdGU7XG4gIH0sIGZhbHNlKSxcbiAgICAgIGRpc3BhdGNoID0gX3VzZVJlZHVjZXJbMV07XG5cbiAgcmV0dXJuIGRpc3BhdGNoO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Db250ZXh0OyIsInZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBmaW5kKGl0ZXIsIHRhciwga2V5KSB7XG5cdGZvciAoa2V5IG9mIGl0ZXIua2V5cygpKSB7XG5cdFx0aWYgKGRlcXVhbChrZXksIHRhcikpIHJldHVybiBrZXk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcXVhbChmb28sIGJhcikge1xuXHR2YXIgY3RvciwgbGVuLCB0bXA7XG5cdGlmIChmb28gPT09IGJhcikgcmV0dXJuIHRydWU7XG5cblx0aWYgKGZvbyAmJiBiYXIgJiYgKGN0b3I9Zm9vLmNvbnN0cnVjdG9yKSA9PT0gYmFyLmNvbnN0cnVjdG9yKSB7XG5cdFx0aWYgKGN0b3IgPT09IERhdGUpIHJldHVybiBmb28uZ2V0VGltZSgpID09PSBiYXIuZ2V0VGltZSgpO1xuXHRcdGlmIChjdG9yID09PSBSZWdFeHApIHJldHVybiBmb28udG9TdHJpbmcoKSA9PT0gYmFyLnRvU3RyaW5nKCk7XG5cblx0XHRpZiAoY3RvciA9PT0gQXJyYXkpIHtcblx0XHRcdGlmICgobGVuPWZvby5sZW5ndGgpID09PSBiYXIubGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBkZXF1YWwoZm9vW2xlbl0sIGJhcltsZW5dKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gU2V0KSB7XG5cdFx0XHRpZiAoZm9vLnNpemUgIT09IGJhci5zaXplKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGZvciAobGVuIG9mIGZvbykge1xuXHRcdFx0XHR0bXAgPSBsZW47XG5cdFx0XHRcdGlmICh0bXAgJiYgdHlwZW9mIHRtcCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0bXAgPSBmaW5kKGJhciwgdG1wKTtcblx0XHRcdFx0XHRpZiAoIXRtcCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghYmFyLmhhcyh0bXApKSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gTWFwKSB7XG5cdFx0XHRpZiAoZm9vLnNpemUgIT09IGJhci5zaXplKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGZvciAobGVuIG9mIGZvbykge1xuXHRcdFx0XHR0bXAgPSBsZW5bMF07XG5cdFx0XHRcdGlmICh0bXAgJiYgdHlwZW9mIHRtcCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0bXAgPSBmaW5kKGJhciwgdG1wKTtcblx0XHRcdFx0XHRpZiAoIXRtcCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZGVxdWFsKGxlblsxXSwgYmFyLmdldCh0bXApKSkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG5cdFx0XHRmb28gPSBuZXcgVWludDhBcnJheShmb28pO1xuXHRcdFx0YmFyID0gbmV3IFVpbnQ4QXJyYXkoYmFyKTtcblx0XHR9IGVsc2UgaWYgKGN0b3IgPT09IERhdGFWaWV3KSB7XG5cdFx0XHRpZiAoKGxlbj1mb28uYnl0ZUxlbmd0aCkgPT09IGJhci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBmb28uZ2V0SW50OChsZW4pID09PSBiYXIuZ2V0SW50OChsZW4pKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoZm9vKSkge1xuXHRcdFx0aWYgKChsZW49Zm9vLmJ5dGVMZW5ndGgpID09PSBiYXIuYnl0ZUxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZm9vW2xlbl0gPT09IGJhcltsZW5dKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmICghY3RvciB8fCB0eXBlb2YgZm9vID09PSAnb2JqZWN0Jykge1xuXHRcdFx0bGVuID0gMDtcblx0XHRcdGZvciAoY3RvciBpbiBmb28pIHtcblx0XHRcdFx0aWYgKGhhcy5jYWxsKGZvbywgY3RvcikgJiYgKytsZW4gJiYgIWhhcy5jYWxsKGJhciwgY3RvcikpIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWYgKCEoY3RvciBpbiBiYXIpIHx8ICFkZXF1YWwoZm9vW2N0b3JdLCBiYXJbY3Rvcl0pKSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXMoYmFyKS5sZW5ndGggPT09IGxlbjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZm9vICE9PSBmb28gJiYgYmFyICE9PSBiYXI7XG59XG4iLCJpbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVBU3RyaW5nKCkge1xuICB2YXIgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG5cbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5icmFuZHMgJiYgQXJyYXkuaXNBcnJheSh1YURhdGEuYnJhbmRzKSkge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXlvdXRWaWV3cG9ydCgpIHtcbiAgcmV0dXJuICEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuLi9kb20tdXRpbHMvY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgd2l0aGluIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi4vdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuLi91dGlscy9leHBhbmRUb0hhc2hNYXAuanNcIjtcbmltcG9ydCB7IGxlZnQsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdG9wLCBib3R0b20gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdG9QYWRkaW5nT2JqZWN0ID0gZnVuY3Rpb24gdG9QYWRkaW5nT2JqZWN0KHBhZGRpbmcsIHN0YXRlKSB7XG4gIHBhZGRpbmcgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBhZGRpbmcoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiBwYWRkaW5nO1xuICByZXR1cm4gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbn07XG5cbmZ1bmN0aW9uIGFycm93KF9yZWYpIHtcbiAgdmFyIF9zdGF0ZSRtb2RpZmllcnNEYXRhJDtcblxuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGlzVmVydGljYWwgPSBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgaWYgKCFhcnJvd0VsZW1lbnQgfHwgIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcGFkZGluZ09iamVjdCA9IHRvUGFkZGluZ09iamVjdChvcHRpb25zLnBhZGRpbmcsIHN0YXRlKTtcbiAgdmFyIGFycm93UmVjdCA9IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KTtcbiAgdmFyIG1pblByb3AgPSBheGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICB2YXIgbWF4UHJvcCA9IGF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICB2YXIgZW5kRGlmZiA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtsZW5dICsgc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnBvcHBlcltsZW5dO1xuICB2YXIgc3RhcnREaWZmID0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KGFycm93RWxlbWVudCk7XG4gIHZhciBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBheGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFdpZHRoIHx8IDAgOiAwO1xuICB2YXIgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7IC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgcG9wcGVyIGlmIHRoZSBjZW50ZXIgcG9pbnQgaXNcbiAgLy8gb3V0c2lkZSBvZiB0aGUgcG9wcGVyIGJvdW5kc1xuXG4gIHZhciBtaW4gPSBwYWRkaW5nT2JqZWN0W21pblByb3BdO1xuICB2YXIgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93UmVjdFtsZW5dIC0gcGFkZGluZ09iamVjdFttYXhQcm9wXTtcbiAgdmFyIGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dSZWN0W2xlbl0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gIHZhciBvZmZzZXQgPSB3aXRoaW4obWluLCBjZW50ZXIsIG1heCk7IC8vIFByZXZlbnRzIGJyZWFraW5nIHN5bnRheCBoaWdobGlnaHRpbmcuLi5cblxuICB2YXIgYXhpc1Byb3AgPSBheGlzO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gKF9zdGF0ZSRtb2RpZmllcnNEYXRhJCA9IHt9LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSRbYXhpc1Byb3BdID0gb2Zmc2V0LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQuY2VudGVyT2Zmc2V0ID0gb2Zmc2V0IC0gY2VudGVyLCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQpO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQsXG4gICAgICBhcnJvd0VsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyAnW2RhdGEtcG9wcGVyLWFycm93XScgOiBfb3B0aW9ucyRlbGVtZW50O1xuXG4gIGlmIChhcnJvd0VsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfSAvLyBDU1Mgc2VsZWN0b3JcblxuXG4gIGlmICh0eXBlb2YgYXJyb3dFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICBpZiAoIWFycm93RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoYXJyb3dFbGVtZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIGVsZW1lbnQgbXVzdCBiZSBhbiBIVE1MRWxlbWVudCAobm90IGFuIFNWR0VsZW1lbnQpLicsICdUbyB1c2UgYW4gU1ZHIGFycm93LCB3cmFwIGl0IGluIGFuIEhUTUxFbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzJywgJ3RoZSBhcnJvdy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29udGFpbnMoc3RhdGUuZWxlbWVudHMucG9wcGVyLCBhcnJvd0VsZW1lbnQpKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIG1vZGlmaWVyXFwncyBgZWxlbWVudGAgbXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBwb3BwZXInLCAnZWxlbWVudC4nXS5qb2luKCcgJykpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkgPSBnZXRDb21wdXRlZFN0eWxlKHN0YXRlLmVsZW1lbnRzLnBvcHBlcikudHJhbnNpdGlvblByb3BlcnR5IHx8ICcnO1xuXG4gICAgaWYgKGFkYXB0aXZlICYmIFsndHJhbnNmb3JtJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gdHJhbnNpdGlvblByb3BlcnR5LmluZGV4T2YocHJvcGVydHkpID49IDA7XG4gICAgfSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogRGV0ZWN0ZWQgQ1NTIHRyYW5zaXRpb25zIG9uIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nJywgJ0NTUyBwcm9wZXJ0aWVzOiBcInRyYW5zZm9ybVwiLCBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLicsICdcXG5cXG4nLCAnRGlzYWJsZSB0aGUgXCJjb21wdXRlU3R5bGVzXCIgbW9kaWZpZXJcXCdzIGBhZGFwdGl2ZWAgb3B0aW9uIHRvIGFsbG93JywgJ2ZvciBzbW9vdGggdHJhbnNpdGlvbnMsIG9yIHJlbW92ZSB0aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlIENTUycsICd0cmFuc2l0aW9uIGRlY2xhcmF0aW9uIG9uIHRoZSBwb3BwZXIgZWxlbWVudCBpZiBvbmx5IHRyYW5zaXRpb25pbmcnLCAnb3BhY2l0eSBvciBiYWNrZ3JvdW5kLWNvbG9yIGZvciBleGFtcGxlLicsICdcXG5cXG4nLCAnV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBwb3BwZXIgZWxlbWVudCBhcyBhIHdyYXBwZXIgYXJvdW5kIGFuIGlubmVyJywgJ2VsZW1lbnQgdGhhdCBjYW4gaGF2ZSBhbnkgQ1NTIHByb3BlcnR5IHRyYW5zaXRpb25lZCBmb3IgYW5pbWF0aW9ucy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCBhcnJvdyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93JztcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcyc7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycyc7XG5pbXBvcnQgZmxpcCBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAnO1xuaW1wb3J0IGhpZGUgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlJztcbmltcG9ydCBvZmZzZXQgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQnO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzJztcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cnO1xuaW1wb3J0IHsgcGxhY2VtZW50cyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcyc7XG5pbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IgfSBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLWJhc2UnO1xuXG4vLyBGb3IgdGhlIGNvbW1vbiBKUyBidWlsZCB3ZSB3aWxsIHR1cm4gdGhpcyBmaWxlIGludG8gYSBidW5kbGUgd2l0aCBubyBpbXBvcnRzLlxuLy8gVGhpcyBpcyBiL2MgdGhlIFBvcHBlciBsaWIgaXMgYWxsIGVzbSBmaWxlcywgYW5kIHdvdWxkIGJyZWFrIGluIGEgY29tbW9uIGpzIG9ubHkgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3BwZXIgPSBwb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBbaGlkZSwgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgZXZlbnRMaXN0ZW5lcnMsIG9mZnNldCwgZmxpcCwgcHJldmVudE92ZXJmbG93LCBhcnJvd11cbn0pO1xuZXhwb3J0IHsgcGxhY2VtZW50cyB9OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZUJ5TmFtZShtb2RpZmllcnMpIHtcbiAgdmFyIG1lcmdlZCA9IG1vZGlmaWVycy5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZCwgY3VycmVudCkge1xuICAgIHZhciBleGlzdGluZyA9IG1lcmdlZFtjdXJyZW50Lm5hbWVdO1xuICAgIG1lcmdlZFtjdXJyZW50Lm5hbWVdID0gZXhpc3RpbmcgPyBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZywgY3VycmVudCwge1xuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3Rpbmcub3B0aW9ucywgY3VycmVudC5vcHRpb25zKSxcbiAgICAgIGRhdGE6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLmRhdGEsIGN1cnJlbnQuZGF0YSlcbiAgICB9KSA6IGN1cnJlbnQ7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfSwge30pOyAvLyBJRTExIGRvZXMgbm90IHN1cHBvcnQgT2JqZWN0LnZhbHVlc1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhtZXJnZWQpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIG1lcmdlZFtrZXldO1xuICB9KTtcbn0iLCJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJlbmFibGVkXCIsIFwicGxhY2VtZW50XCIsIFwic3RyYXRlZ3lcIiwgXCJtb2RpZmllcnNcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZGVxdWFsIH0gZnJvbSAnZGVxdWFsJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB7IGNyZWF0ZVBvcHBlciB9IGZyb20gJy4vcG9wcGVyJztcbmNvbnN0IGRpc2FibGVkQXBwbHlTdHlsZXNNb2RpZmllciA9IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogZmFsc2UsXG4gIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gIGZuOiAoKSA9PiB1bmRlZmluZWRcbn07XG5cbi8vIHVudGlsIGRvY2pzIHN1cHBvcnRzIHR5cGUgZXhwb3J0cy4uLlxuXG5jb25zdCBhcmlhRGVzY3JpYmVkQnlNb2RpZmllciA9IHtcbiAgbmFtZTogJ2FyaWFEZXNjcmliZWRCeScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gIGVmZmVjdDogKHtcbiAgICBzdGF0ZVxuICB9KSA9PiAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcmVmZXJlbmNlLFxuICAgICAgcG9wcGVyXG4gICAgfSA9IHN0YXRlLmVsZW1lbnRzO1xuICAgIGlmICgncmVtb3ZlQXR0cmlidXRlJyBpbiByZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IGlkcyA9IChyZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykgfHwgJycpLnNwbGl0KCcsJykuZmlsdGVyKGlkID0+IGlkLnRyaW0oKSAhPT0gcG9wcGVyLmlkKTtcbiAgICAgIGlmICghaWRzLmxlbmd0aCkgcmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO2Vsc2UgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcy5qb2luKCcsJykpO1xuICAgIH1cbiAgfSxcbiAgZm46ICh7XG4gICAgc3RhdGVcbiAgfSkgPT4ge1xuICAgIHZhciBfcG9wcGVyJGdldEF0dHJpYnV0ZTtcbiAgICBjb25zdCB7XG4gICAgICBwb3BwZXIsXG4gICAgICByZWZlcmVuY2VcbiAgICB9ID0gc3RhdGUuZWxlbWVudHM7XG4gICAgY29uc3Qgcm9sZSA9IChfcG9wcGVyJGdldEF0dHJpYnV0ZSA9IHBvcHBlci5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wb3BwZXIkZ2V0QXR0cmlidXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHBvcHBlci5pZCAmJiByb2xlID09PSAndG9vbHRpcCcgJiYgJ3NldEF0dHJpYnV0ZScgaW4gcmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSByZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgICBpZiAoaWRzICYmIGlkcy5zcGxpdCgnLCcpLmluZGV4T2YocG9wcGVyLmlkKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcyA/IGAke2lkc30sJHtwb3BwZXIuaWR9YCA6IHBvcHBlci5pZCk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgRU1QVFlfTU9ESUZJRVJTID0gW107XG4vKipcbiAqIFBvc2l0aW9uIGFuIGVsZW1lbnQgcmVsYXRpdmUgc29tZSByZWZlcmVuY2UgZWxlbWVudCB1c2luZyBQb3BwZXIuanNcbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlRWxlbWVudFxuICogQHBhcmFtIHBvcHBlckVsZW1lbnRcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgIG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0PX0gICAgIG9wdGlvbnMubW9kaWZpZXJzIFBvcHBlci5qcyBtb2RpZmllcnNcbiAqIEBwYXJhbSB7Ym9vbGVhbj19ICAgIG9wdGlvbnMuZW5hYmxlZCB0b2dnbGUgdGhlIHBvcHBlciBmdW5jdGlvbmFsaXR5IG9uL29mZlxuICogQHBhcmFtIHtzdHJpbmc9fSAgICAgb3B0aW9ucy5wbGFjZW1lbnQgVGhlIHBvcHBlciBlbGVtZW50IHBsYWNlbWVudCByZWxhdGl2ZSB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gICAgIG9wdGlvbnMuc3RyYXRlZ3kgdGhlIHBvc2l0aW9uaW5nIHN0cmF0ZWd5XG4gKiBAcGFyYW0ge2Z1bmN0aW9uPX0gICBvcHRpb25zLm9uQ3JlYXRlIGNhbGxlZCB3aGVuIHRoZSBwb3BwZXIgaXMgY3JlYXRlZFxuICogQHBhcmFtIHtmdW5jdGlvbj19ICAgb3B0aW9ucy5vblVwZGF0ZSBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIHVwZGF0ZWRcbiAqXG4gKiBAcmV0dXJucyB7VXNlUG9wcGVyU3RhdGV9IFRoZSBwb3BwZXIgc3RhdGVcbiAqL1xuZnVuY3Rpb24gdXNlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnQsIF9yZWYgPSB7fSkge1xuICBsZXQge1xuICAgICAgZW5hYmxlZCA9IHRydWUsXG4gICAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICAgIG1vZGlmaWVycyA9IEVNUFRZX01PRElGSUVSU1xuICAgIH0gPSBfcmVmLFxuICAgIGNvbmZpZyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHByZXZNb2RpZmllcnMgPSB1c2VSZWYobW9kaWZpZXJzKTtcbiAgY29uc3QgcG9wcGVySW5zdGFuY2VSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHZhciBfcG9wcGVySW5zdGFuY2VSZWYkY3U7XG4gICAgKF9wb3BwZXJJbnN0YW5jZVJlZiRjdSA9IHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcG9wcGVySW5zdGFuY2VSZWYkY3UudXBkYXRlKCk7XG4gIH0sIFtdKTtcbiAgY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9wb3BwZXJJbnN0YW5jZVJlZiRjdTI7XG4gICAgKF9wb3BwZXJJbnN0YW5jZVJlZiRjdTIgPSBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3BvcHBlckluc3RhbmNlUmVmJGN1Mi5mb3JjZVVwZGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IFtwb3BwZXJTdGF0ZSwgc2V0U3RhdGVdID0gdXNlU2FmZVN0YXRlKHVzZVN0YXRlKHtcbiAgICBwbGFjZW1lbnQsXG4gICAgdXBkYXRlLFxuICAgIGZvcmNlVXBkYXRlLFxuICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIHN0eWxlczoge1xuICAgICAgcG9wcGVyOiB7fSxcbiAgICAgIGFycm93OiB7fVxuICAgIH1cbiAgfSkpO1xuICBjb25zdCB1cGRhdGVNb2RpZmllciA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBuYW1lOiAndXBkYXRlU3RhdGVNb2RpZmllcicsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwaGFzZTogJ3dyaXRlJyxcbiAgICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ10sXG4gICAgZm46ICh7XG4gICAgICBzdGF0ZVxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IHt9O1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIHN0eWxlc1tlbGVtZW50XSA9IHN0YXRlLnN0eWxlc1tlbGVtZW50XTtcbiAgICAgICAgYXR0cmlidXRlc1tlbGVtZW50XSA9IHN0YXRlLmF0dHJpYnV0ZXNbZWxlbWVudF07XG4gICAgICB9KTtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgdXBkYXRlLFxuICAgICAgICBmb3JjZVVwZGF0ZSxcbiAgICAgICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIFt1cGRhdGUsIGZvcmNlVXBkYXRlLCBzZXRTdGF0ZV0pO1xuICBjb25zdCBuZXh0TW9kaWZpZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFkZXF1YWwocHJldk1vZGlmaWVycy5jdXJyZW50LCBtb2RpZmllcnMpKSB7XG4gICAgICBwcmV2TW9kaWZpZXJzLmN1cnJlbnQgPSBtb2RpZmllcnM7XG4gICAgfVxuICAgIHJldHVybiBwcmV2TW9kaWZpZXJzLmN1cnJlbnQ7XG4gIH0sIFttb2RpZmllcnNdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgfHwgIWVuYWJsZWQpIHJldHVybjtcbiAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LnNldE9wdGlvbnMoe1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtb2RpZmllcnM6IFsuLi5uZXh0TW9kaWZpZXJzLCB1cGRhdGVNb2RpZmllciwgZGlzYWJsZWRBcHBseVN0eWxlc01vZGlmaWVyXVxuICAgIH0pO1xuICB9LCBbc3RyYXRlZ3ksIHBsYWNlbWVudCwgdXBkYXRlTW9kaWZpZXIsIGVuYWJsZWQsIG5leHRNb2RpZmllcnNdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQgfHwgcmVmZXJlbmNlRWxlbWVudCA9PSBudWxsIHx8IHBvcHBlckVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCA9IGNyZWF0ZVBvcHBlcihyZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50LCBPYmplY3QuYXNzaWduKHt9LCBjb25maWcsIHtcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbW9kaWZpZXJzOiBbLi4ubmV4dE1vZGlmaWVycywgYXJpYURlc2NyaWJlZEJ5TW9kaWZpZXIsIHVwZGF0ZU1vZGlmaWVyXVxuICAgIH0pKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LmRlc3Ryb3koKTtcbiAgICAgICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2V0U3RhdGUocyA9PiBPYmplY3QuYXNzaWduKHt9LCBzLCB7XG4gICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICBwb3BwZXI6IHt9XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvLyBUaGlzIGlzIG9ubHkgcnVuIG9uY2UgdG8gX2NyZWF0ZV8gdGhlIHBvcHBlclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2VuYWJsZWQsIHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnRdKTtcbiAgcmV0dXJuIHBvcHBlclN0YXRlO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlUG9wcGVyOyIsImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1vdW50ZWQgZnJvbSAnLi91c2VNb3VudGVkJztcblxuZnVuY3Rpb24gdXNlU2FmZVN0YXRlKHN0YXRlKSB7XG4gIHZhciBpc01vdW50ZWQgPSB1c2VNb3VudGVkKCk7XG4gIHJldHVybiBbc3RhdGVbMF0sIHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuZXh0U3RhdGUpIHtcbiAgICBpZiAoIWlzTW91bnRlZCgpKSByZXR1cm47XG4gICAgcmV0dXJuIHN0YXRlWzFdKG5leHRTdGF0ZSk7XG4gIH0sIFtpc01vdW50ZWQsIHN0YXRlWzFdXSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTYWZlU3RhdGU7IiwiLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSwgbm8tY29uZC1hc3NpZ24gKi9cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gZWxlbWVudCBjb250YWlucyBhbm90aGVyIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IGVsZW1lbnRcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50IHRvIGNoZWNrXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gSFRNTCBET00gYW5kIFNWRyBET00gbWF5IGhhdmUgZGlmZmVyZW50IHN1cHBvcnQgbGV2ZWxzLFxuICAvLyBzbyB3ZSBuZWVkIHRvIGNoZWNrIG9uIGNvbnRleHQgaW5zdGVhZCBvZiBhIGRvY3VtZW50IHJvb3QgZWxlbWVudC5cbiAgaWYgKGNvbnRleHQuY29udGFpbnMpIHJldHVybiBjb250ZXh0LmNvbnRhaW5zKG5vZGUpO1xuICBpZiAoY29udGV4dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikgcmV0dXJuIGNvbnRleHQgPT09IG5vZGUgfHwgISEoY29udGV4dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihub2RlKSAmIDE2KTtcbn0iLCJpbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnO1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nO1xuaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvb3duZXJEb2N1bWVudCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuZnVuY3Rpb24gaXNMZWZ0Q2xpY2tFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAhIShldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5KTtcbn1cbmV4cG9ydCBjb25zdCBnZXRSZWZUYXJnZXQgPSByZWYgPT4gcmVmICYmICgnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWYpO1xuY29uc3QgSW5pdGlhbFRyaWdnZXJFdmVudHMgPSB7XG4gIGNsaWNrOiAnbW91c2Vkb3duJyxcbiAgbW91c2V1cDogJ21vdXNlZG93bicsXG4gIHBvaW50ZXJ1cDogJ3BvaW50ZXJkb3duJ1xufTtcblxuLyoqXG4gKiBUaGUgYHVzZUNsaWNrT3V0c2lkZWAgaG9vayByZWdpc3RlcnMgeW91ciBjYWxsYmFjayBvbiB0aGUgZG9jdW1lbnQgdGhhdCBmaXJlc1xuICogd2hlbiBhIHBvaW50ZXIgZXZlbnQgaXMgcmVnaXN0ZXJlZCBvdXRzaWRlIG9mIHRoZSBwcm92aWRlZCByZWYgb3IgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge1JlZjxIVE1MRWxlbWVudD58IEhUTUxFbGVtZW50fSByZWYgIFRoZSBlbGVtZW50IGJvdW5kYXJ5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkNsaWNrT3V0c2lkZVxuICogQHBhcmFtIHtvYmplY3Q9fSAgb3B0aW9uc1xuICogQHBhcmFtIHtib29sZWFuPX0gb3B0aW9ucy5kaXNhYmxlZFxuICogQHBhcmFtIHtzdHJpbmc9fSAgb3B0aW9ucy5jbGlja1RyaWdnZXIgVGhlIERPTSBldmVudCBuYW1lIChjbGljaywgbW91c2Vkb3duLCBldGMpIHRvIGF0dGFjaCBsaXN0ZW5lcnMgb25cbiAqL1xuZnVuY3Rpb24gdXNlQ2xpY2tPdXRzaWRlKHJlZiwgb25DbGlja091dHNpZGUgPSBub29wLCB7XG4gIGRpc2FibGVkLFxuICBjbGlja1RyaWdnZXIgPSAnY2xpY2snXG59ID0ge30pIHtcbiAgY29uc3QgcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgd2FpdGluZ0ZvclRyaWdnZXIgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVNb3VzZUNhcHR1cmUgPSB1c2VDYWxsYmFjayhlID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZ2V0UmVmVGFyZ2V0KHJlZik7XG4gICAgd2FybmluZyghIWN1cnJlbnRUYXJnZXQsICdDbGlja091dHNpZGUgY2FwdHVyZWQgYSBjbG9zZSBldmVudCBidXQgZG9lcyBub3QgaGF2ZSBhIHJlZiB0byBjb21wYXJlIGl0IHRvLiAnICsgJ3VzZUNsaWNrT3V0c2lkZSgpLCBzaG91bGQgYmUgcGFzc2VkIGEgcmVmIHRoYXQgcmVzb2x2ZXMgdG8gYSBET00gbm9kZScpO1xuICAgIHByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZi5jdXJyZW50ID0gIWN1cnJlbnRUYXJnZXQgfHwgaXNNb2RpZmllZEV2ZW50KGUpIHx8ICFpc0xlZnRDbGlja0V2ZW50KGUpIHx8ICEhY29udGFpbnMoY3VycmVudFRhcmdldCwgZS50YXJnZXQpIHx8IHdhaXRpbmdGb3JUcmlnZ2VyLmN1cnJlbnQ7XG4gICAgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudCA9IGZhbHNlO1xuICB9LCBbcmVmXSk7XG4gIGNvbnN0IGhhbmRsZUluaXRpYWxNb3VzZSA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGdldFJlZlRhcmdldChyZWYpO1xuICAgIGlmIChjdXJyZW50VGFyZ2V0ICYmIGNvbnRhaW5zKGN1cnJlbnRUYXJnZXQsIGUudGFyZ2V0KSkge1xuICAgICAgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlTW91c2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmICghcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uQ2xpY2tPdXRzaWRlKGUpO1xuICAgIH1cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHJlZiA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQoZ2V0UmVmVGFyZ2V0KHJlZikpO1xuXG4gICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgZXZlbnQgdG8gYXZvaWQgdHJpZ2dlcmluZyBoYW5kbGVycyBpbW1lZGlhdGVseVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAwNzRcbiAgICBsZXQgY3VycmVudEV2ZW50ID0gKGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLmV2ZW50O1xuICAgIGxldCByZW1vdmVJbml0aWFsVHJpZ2dlckxpc3RlbmVyID0gbnVsbDtcbiAgICBpZiAoSW5pdGlhbFRyaWdnZXJFdmVudHNbY2xpY2tUcmlnZ2VyXSkge1xuICAgICAgcmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIEluaXRpYWxUcmlnZ2VyRXZlbnRzW2NsaWNrVHJpZ2dlcl0sIGhhbmRsZUluaXRpYWxNb3VzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXNlIGNhcHR1cmUgZm9yIHRoaXMgbGlzdGVuZXIgc28gaXQgZmlyZXMgYmVmb3JlIFJlYWN0J3MgbGlzdGVuZXIsIHRvXG4gICAgLy8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBjb250YWlucygpIGNoZWNrIGJlbG93IGlmIHRoZSB0YXJnZXQgRE9NXG4gICAgLy8gZWxlbWVudCBpcyByZW1vdmVkIGluIHRoZSBSZWFjdCBtb3VzZSBjYWxsYmFjay5cbiAgICBjb25zdCByZW1vdmVNb3VzZUNhcHR1cmVMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIGNsaWNrVHJpZ2dlciwgaGFuZGxlTW91c2VDYXB0dXJlLCB0cnVlKTtcbiAgICBjb25zdCByZW1vdmVNb3VzZUxpc3RlbmVyID0gbGlzdGVuKGRvYywgY2xpY2tUcmlnZ2VyLCBlID0+IHtcbiAgICAgIC8vIHNraXAgaWYgdGhpcyBldmVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHJ1bm5pbmcgd2hlbiB3ZSBhZGRlZCB0aGUgaGFuZGxlcnNcbiAgICAgIGlmIChlID09PSBjdXJyZW50RXZlbnQpIHtcbiAgICAgICAgY3VycmVudEV2ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBoYW5kbGVNb3VzZShlKTtcbiAgICB9KTtcbiAgICBsZXQgbW9iaWxlU2FmYXJpSGFja0xpc3RlbmVycyA9IFtdO1xuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2MuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzID0gW10uc2xpY2UuY2FsbChkb2MuYm9keS5jaGlsZHJlbikubWFwKGVsID0+IGxpc3RlbihlbCwgJ21vdXNlbW92ZScsIG5vb3ApKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIoKTtcbiAgICAgIHJlbW92ZU1vdXNlQ2FwdHVyZUxpc3RlbmVyKCk7XG4gICAgICByZW1vdmVNb3VzZUxpc3RlbmVyKCk7XG4gICAgICBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzLmZvckVhY2gocmVtb3ZlID0+IHJlbW92ZSgpKTtcbiAgICB9O1xuICB9LCBbcmVmLCBkaXNhYmxlZCwgY2xpY2tUcmlnZ2VyLCBoYW5kbGVNb3VzZUNhcHR1cmUsIGhhbmRsZUluaXRpYWxNb3VzZSwgaGFuZGxlTW91c2VdKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZUNsaWNrT3V0c2lkZTsiLCJleHBvcnQgZnVuY3Rpb24gdG9Nb2RpZmllck1hcChtb2RpZmllcnMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllcnMpKSB7XG4gICAgcmV0dXJuIG1vZGlmaWVycyB8fCByZXN1bHQ7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gIG1vZGlmaWVycyA9PSBudWxsID8gdm9pZCAwIDogbW9kaWZpZXJzLmZvckVhY2gobSA9PiB7XG4gICAgcmVzdWx0W20ubmFtZV0gPSBtO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b01vZGlmaWVyQXJyYXkobWFwID0ge30pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwKSkgcmV0dXJuIG1hcDtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKGsgPT4ge1xuICAgIG1hcFtrXS5uYW1lID0gaztcbiAgICByZXR1cm4gbWFwW2tdO1xuICB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcoe1xuICBlbmFibGVkLFxuICBlbmFibGVFdmVudHMsXG4gIHBsYWNlbWVudCxcbiAgZmxpcCxcbiAgb2Zmc2V0LFxuICBmaXhlZCxcbiAgY29udGFpbmVyUGFkZGluZyxcbiAgYXJyb3dFbGVtZW50LFxuICBwb3BwZXJDb25maWcgPSB7fVxufSkge1xuICB2YXIgX21vZGlmaWVycyRldmVudExpc3RlLCBfbW9kaWZpZXJzJHByZXZlbnRPdmUsIF9tb2RpZmllcnMkcHJldmVudE92ZTIsIF9tb2RpZmllcnMkb2Zmc2V0LCBfbW9kaWZpZXJzJGFycm93O1xuICBjb25zdCBtb2RpZmllcnMgPSB0b01vZGlmaWVyTWFwKHBvcHBlckNvbmZpZy5tb2RpZmllcnMpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyQ29uZmlnLCB7XG4gICAgcGxhY2VtZW50LFxuICAgIGVuYWJsZWQsXG4gICAgc3RyYXRlZ3k6IGZpeGVkID8gJ2ZpeGVkJyA6IHBvcHBlckNvbmZpZy5zdHJhdGVneSxcbiAgICBtb2RpZmllcnM6IHRvTW9kaWZpZXJBcnJheShPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMsIHtcbiAgICAgIGV2ZW50TGlzdGVuZXJzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGVuYWJsZUV2ZW50cyxcbiAgICAgICAgb3B0aW9uczogKF9tb2RpZmllcnMkZXZlbnRMaXN0ZSA9IG1vZGlmaWVycy5ldmVudExpc3RlbmVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkZXZlbnRMaXN0ZS5vcHRpb25zXG4gICAgICB9LFxuICAgICAgcHJldmVudE92ZXJmbG93OiBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMucHJldmVudE92ZXJmbG93LCB7XG4gICAgICAgIG9wdGlvbnM6IGNvbnRhaW5lclBhZGRpbmcgPyBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBwYWRkaW5nOiBjb250YWluZXJQYWRkaW5nXG4gICAgICAgIH0sIChfbW9kaWZpZXJzJHByZXZlbnRPdmUgPSBtb2RpZmllcnMucHJldmVudE92ZXJmbG93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRwcmV2ZW50T3ZlLm9wdGlvbnMpIDogKF9tb2RpZmllcnMkcHJldmVudE92ZTIgPSBtb2RpZmllcnMucHJldmVudE92ZXJmbG93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRwcmV2ZW50T3ZlMi5vcHRpb25zXG4gICAgICB9KSxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBvZmZzZXRcbiAgICAgICAgfSwgKF9tb2RpZmllcnMkb2Zmc2V0ID0gbW9kaWZpZXJzLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkb2Zmc2V0Lm9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgYXJyb3c6IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVycy5hcnJvdywge1xuICAgICAgICBlbmFibGVkOiAhIWFycm93RWxlbWVudCxcbiAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgKF9tb2RpZmllcnMkYXJyb3cgPSBtb2RpZmllcnMuYXJyb3cpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJGFycm93Lm9wdGlvbnMsIHtcbiAgICAgICAgICBlbGVtZW50OiBhcnJvd0VsZW1lbnRcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgZmxpcDogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGVuYWJsZWQ6ICEhZmxpcFxuICAgICAgfSwgbW9kaWZpZXJzLmZsaXApXG4gICAgfSkpXG4gIH0pO1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNhbGxiYWNrUmVmIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUNhbGxiYWNrUmVmJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHVzZVBvcHBlciBmcm9tICcuL3VzZVBvcHBlcic7XG5pbXBvcnQgdXNlQ2xpY2tPdXRzaWRlIGZyb20gJy4vdXNlQ2xpY2tPdXRzaWRlJztcbmltcG9ydCBtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnIGZyb20gJy4vbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyc7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbi8qKlxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKiBAcGFyYW0ge29iamVjdH0gIG9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5mbGlwIEF1dG9tYXRpY2FsbHkgYWRqdXN0IHRoZSBtZW51IGBkcm9wYCBwb3NpdGlvbiBiYXNlZCBvbiB2aWV3cG9ydCBlZGdlIGRldGVjdGlvblxuICogQHBhcmFtIHtbbnVtYmVyLCBudW1iZXJdfSBvcHRpb25zLm9mZnNldCBEZWZpbmUgYW4gb2Zmc2V0IGRpc3RhbmNlIGJldHdlZW4gdGhlIE1lbnUgYW5kIHRoZSBUb2dnbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5zaG93IERpc3BsYXkgdGhlIG1lbnUgbWFudWFsbHksIGlnbm9yZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBgRHJvcGRvd25gXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMudXNlUG9wcGVyIG9wdCBpbi9vdXQgb2YgdXNpbmcgUG9wcGVySlMgdG8gcG9zaXRpb24gbWVudXMuIFdoZW4gZGlzYWJsZWQgeW91IG11c3QgcG9zaXRpb24gaXQgeW91cnNlbGYuXG4gKiBAcGFyYW0ge3N0cmluZ30gIG9wdGlvbnMucm9vdENsb3NlRXZlbnQgVGhlIHBvaW50ZXIgZXZlbnQgdG8gbGlzdGVuIGZvciB3aGVuIGRldGVybWluaW5nIFwiY2xpY2tzIG91dHNpZGVcIiB0aGUgbWVudSBmb3IgdHJpZ2dlcmluZyBhIGNsb3NlLlxuICogQHBhcmFtIHtvYmplY3R9ICBvcHRpb25zLnBvcHBlckNvbmZpZyBPcHRpb25zIHBhc3NlZCB0byB0aGUgW2B1c2VQb3BwZXJgXSgvYXBpL3VzZVBvcHBlcikgaG9vay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyb3Bkb3duTWVudShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgY29uc3QgW2Fycm93RWxlbWVudCwgYXR0YWNoQXJyb3dSZWZdID0gdXNlQ2FsbGJhY2tSZWYoKTtcbiAgY29uc3QgaGFzU2hvd25SZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZmxpcCxcbiAgICBvZmZzZXQsXG4gICAgcm9vdENsb3NlRXZlbnQsXG4gICAgZml4ZWQgPSBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE92ZXJyaWRlLFxuICAgIHBvcHBlckNvbmZpZyA9IHt9LFxuICAgIGVuYWJsZUV2ZW50TGlzdGVuZXJzID0gdHJ1ZSxcbiAgICB1c2VQb3BwZXI6IHNob3VsZFVzZVBvcHBlciA9ICEhY29udGV4dFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2hvdyA9IChjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LnNob3cpID09IG51bGwgPyAhIW9wdGlvbnMuc2hvdyA6IGNvbnRleHQuc2hvdztcbiAgaWYgKHNob3cgJiYgIWhhc1Nob3duUmVmLmN1cnJlbnQpIHtcbiAgICBoYXNTaG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBoYW5kbGVDbG9zZSA9IGUgPT4ge1xuICAgIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQudG9nZ2xlKGZhbHNlLCBlKTtcbiAgfTtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBzZXRNZW51LFxuICAgIG1lbnVFbGVtZW50LFxuICAgIHRvZ2dsZUVsZW1lbnRcbiAgfSA9IGNvbnRleHQgfHwge307XG4gIGNvbnN0IHBvcHBlciA9IHVzZVBvcHBlcih0b2dnbGVFbGVtZW50LCBtZW51RWxlbWVudCwgbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyh7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPdmVycmlkZSB8fCBwbGFjZW1lbnQgfHwgJ2JvdHRvbS1zdGFydCcsXG4gICAgZW5hYmxlZDogc2hvdWxkVXNlUG9wcGVyLFxuICAgIGVuYWJsZUV2ZW50czogZW5hYmxlRXZlbnRMaXN0ZW5lcnMgPT0gbnVsbCA/IHNob3cgOiBlbmFibGVFdmVudExpc3RlbmVycyxcbiAgICBvZmZzZXQsXG4gICAgZmxpcCxcbiAgICBmaXhlZCxcbiAgICBhcnJvd0VsZW1lbnQsXG4gICAgcG9wcGVyQ29uZmlnXG4gIH0pKTtcbiAgY29uc3QgbWVudVByb3BzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcmVmOiBzZXRNZW51IHx8IG5vb3AsXG4gICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRvZ2dsZUVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHRvZ2dsZUVsZW1lbnQuaWRcbiAgfSwgcG9wcGVyLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgc3R5bGU6IHBvcHBlci5zdHlsZXMucG9wcGVyXG4gIH0pO1xuICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICBzaG93LFxuICAgIHBsYWNlbWVudCxcbiAgICBoYXNTaG93bjogaGFzU2hvd25SZWYuY3VycmVudCxcbiAgICB0b2dnbGU6IGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQudG9nZ2xlLFxuICAgIHBvcHBlcjogc2hvdWxkVXNlUG9wcGVyID8gcG9wcGVyIDogbnVsbCxcbiAgICBhcnJvd1Byb3BzOiBzaG91bGRVc2VQb3BwZXIgPyBPYmplY3QuYXNzaWduKHtcbiAgICAgIHJlZjogYXR0YWNoQXJyb3dSZWZcbiAgICB9LCBwb3BwZXIuYXR0cmlidXRlcy5hcnJvdywge1xuICAgICAgc3R5bGU6IHBvcHBlci5zdHlsZXMuYXJyb3dcbiAgICB9KSA6IHt9XG4gIH07XG4gIHVzZUNsaWNrT3V0c2lkZShtZW51RWxlbWVudCwgaGFuZGxlQ2xvc2UsIHtcbiAgICBjbGlja1RyaWdnZXI6IHJvb3RDbG9zZUV2ZW50LFxuICAgIGRpc2FibGVkOiAhc2hvd1xuICB9KTtcbiAgcmV0dXJuIFttZW51UHJvcHMsIG1ldGFkYXRhXTtcbn1cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdXNlUG9wcGVyOiB0cnVlXG59O1xuLyoqXG4gKiBBbHNvIGV4cG9ydGVkIGFzIGA8RHJvcGRvd24uTWVudT5gIGZyb20gYERyb3Bkb3duYC5cbiAqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25NZW51XG4gKiBAbWVtYmVyT2YgRHJvcGRvd25cbiAqL1xuZnVuY3Rpb24gRHJvcGRvd25NZW51KF9yZWYpIHtcbiAgbGV0IHtcbiAgICAgIGNoaWxkcmVuXG4gICAgfSA9IF9yZWYsXG4gICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93bk1lbnUob3B0aW9ucyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4ocHJvcHMsIG1ldGEpXG4gIH0pO1xufVxuRHJvcGRvd25NZW51LmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duTWVudSc7XG5Ecm9wZG93bk1lbnUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4vKiogQGNvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51OyIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGhvb2sgYXJvdW5kIGB1c2VTdGF0ZWAgZGVzaWduZWQgdG8gYmUgcGFpcmVkIHdpdGhcbiAqIHRoZSBjb21wb25lbnQgW2NhbGxiYWNrIHJlZl0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlZnMtYW5kLXRoZS1kb20uaHRtbCNjYWxsYmFjay1yZWZzKSBhcGkuXG4gKiBDYWxsYmFjayByZWZzIGFyZSB1c2VmdWwgb3ZlciBgdXNlUmVmKClgIHdoZW4geW91IG5lZWQgdG8gcmVzcG9uZCB0byB0aGUgcmVmIGJlaW5nIHNldFxuICogaW5zdGVhZCBvZiBsYXppbHkgYWNjZXNzaW5nIGl0IGluIGFuIGVmZmVjdC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgW2VsZW1lbnQsIGF0dGFjaFJlZl0gPSB1c2VDYWxsYmFja1JlZjxIVE1MRGl2RWxlbWVudD4oKVxuICpcbiAqIHVzZUVmZmVjdCgoKSA9PiB7XG4gKiAgIGlmICghZWxlbWVudCkgcmV0dXJuXG4gKlxuICogICBjb25zdCBjYWxlbmRhciA9IG5ldyBGdWxsQ2FsZW5kYXIuQ2FsZW5kYXIoZWxlbWVudClcbiAqXG4gKiAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgY2FsZW5kYXIuZGVzdHJveSgpXG4gKiAgIH1cbiAqIH0sIFtlbGVtZW50XSlcbiAqXG4gKiByZXR1cm4gPGRpdiByZWY9e2F0dGFjaFJlZn0gLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSByZWZzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoKSB7XG4gIHJldHVybiB1c2VTdGF0ZShudWxsKTtcbn0iLCJpbXBvcnQgJDg5eUUyJHJlYWN0LCB7dXNlQ29udGV4dCBhcyAkODl5RTIkdXNlQ29udGV4dCwgdXNlTWVtbyBhcyAkODl5RTIkdXNlTWVtbywgdXNlUmVmIGFzICQ4OXlFMiR1c2VSZWYsIHVzZVN0YXRlIGFzICQ4OXlFMiR1c2VTdGF0ZSwgdXNlTGF5b3V0RWZmZWN0IGFzICQ4OXlFMiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuXG4vKlxuICogQ29weXJpZ2h0IDIwMjAgQWRvYmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weVxuICogb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlclxuICogdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TXG4gKiBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi8gLypcbiAqIENvcHlyaWdodCAyMDIwIEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovIC8vIFdlIG11c3QgYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggQHJlYWN0LWFyaWEvdXRpbHMsIGFuZCB0aGlzIHVzZUxheW91dEVmZmVjdCBpc1xuLy8gZ3VhcmRlZCBieSBhIGNoZWNrIHRoYXQgaXQgb25seSBydW5zIG9uIHRoZSBjbGllbnQgc2lkZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBydWxlc2Rpci91c2VMYXlvdXRFZmZlY3RSdWxlXG5cbi8vIERlZmF1bHQgY29udGV4dCB2YWx1ZSB0byB1c2UgaW4gY2FzZSB0aGVyZSBpcyBubyBTU1JQcm92aWRlci4gVGhpcyBpcyBmaW5lIGZvclxuLy8gY2xpZW50LW9ubHkgYXBwcy4gSW4gb3JkZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgQXJpYSBwb3RlbnRpYWxseVxuLy8gYmVpbmcgb24gdGhlIHBhZ2UgYXQgb25jZSwgdGhlIHByZWZpeCBpcyBzZXQgdG8gYSByYW5kb20gbnVtYmVyLiBTU1JQcm92aWRlclxuLy8gd2lsbCByZXNldCB0aGlzIHRvIHplcm8gZm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gc2VydmVyIGFuZCBjbGllbnQsIHNvIGluIHRoZVxuLy8gU1NSIGNhc2UgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IEFyaWEgaXMgbm90IHN1cHBvcnRlZC5cbmNvbnN0ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCA9IHtcbiAgICBwcmVmaXg6IFN0cmluZyhNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMCkpLFxuICAgIGN1cnJlbnQ6IDBcbn07XG5jb25zdCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gKDAsICQ4OXlFMiRyZWFjdCkuY3JlYXRlQ29udGV4dCgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQpO1xuZnVuY3Rpb24gJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDlmOGFjOTZhZjRiMWIyYWUocHJvcHMpIHtcbiAgICBsZXQgY3VyID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IGNvdW50ZXIgPSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcihjdXIgPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCk7XG4gICAgbGV0IHZhbHVlID0gKDAsICQ4OXlFMiR1c2VNZW1vKSgoKT0+KHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IFNTUlByb3ZpZGVyLCBzdGFydCB3aXRoIGFuIGVtcHR5IHN0cmluZyBwcmVmaXgsIG90aGVyd2lzZVxuICAgICAgICAgICAgLy8gYXBwZW5kIGFuZCBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuXG4gICAgICAgICAgICBwcmVmaXg6IGN1ciA9PT0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0ID8gXCJcIiA6IGAke2N1ci5wcmVmaXh9LSR7Y291bnRlcn1gLFxuICAgICAgICAgICAgY3VycmVudDogMFxuICAgICAgICB9KSwgW1xuICAgICAgICBjdXIsXG4gICAgICAgIGNvdW50ZXJcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgJDg5eUUyJHJlYWN0KS5jcmVhdGVFbGVtZW50KCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0sIHByb3BzLmNoaWxkcmVuKTtcbn1cbmxldCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY2FuVXNlRE9NID0gQm9vbGVhbih0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5sZXQgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcyA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcihpc0Rpc2FibGVkID0gZmFsc2UpIHtcbiAgICBsZXQgY3R4ID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IHJlZiA9ICgwLCAkODl5RTIkdXNlUmVmKShudWxsKTtcbiAgICBpZiAocmVmLmN1cnJlbnQgPT09IG51bGwgJiYgIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgdmFyIF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyO1xuICAgICAgICAvLyBJbiBzdHJpY3QgbW9kZSwgUmVhY3QgcmVuZGVycyBjb21wb25lbnRzIHR3aWNlLCBhbmQgdGhlIHJlZiB3aWxsIGJlIHJlc2V0IHRvIG51bGwgb24gdGhlIHNlY29uZCByZW5kZXIuXG4gICAgICAgIC8vIFRoaXMgbWVhbnMgb3VyIGlkIGNvdW50ZXIgd2lsbCBiZSBpbmNyZW1lbnRlZCB0d2ljZSBpbnN0ZWFkIG9mIG9uY2UuIFRoaXMgaXMgYSBwcm9ibGVtIGJlY2F1c2Ugb24gdGhlXG4gICAgICAgIC8vIHNlcnZlciwgY29tcG9uZW50cyBhcmUgb25seSByZW5kZXJlZCBvbmNlIGFuZCBzbyBpZHMgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIgd29uJ3QgbWF0Y2ggdGhlIGNsaWVudC5cbiAgICAgICAgLy8gSW4gUmVhY3QgMTgsIHVzZUlkIHdhcyBpbnRyb2R1Y2VkIHRvIHNvbHZlIHRoaXMsIGJ1dCBpdCBpcyBub3QgYXZhaWxhYmxlIGluIG9sZGVyIHZlcnNpb25zLiBTbyB0byBzb2x2ZSB0aGlzXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gdXNlIHNvbWUgUmVhY3QgaW50ZXJuYWxzIHRvIGFjY2VzcyB0aGUgdW5kZXJseWluZyBGaWJlciBpbnN0YW5jZSwgd2hpY2ggaXMgc3RhYmxlIGJldHdlZW4gcmVuZGVycy5cbiAgICAgICAgLy8gVGhpcyBpcyBleHBvc2VkIGFzIFJlYWN0Q3VycmVudE93bmVyIGluIGRldmVsb3BtZW50LCB3aGljaCBpcyBhbGwgd2UgbmVlZCBzaW5jZSBTdHJpY3RNb2RlIG9ubHkgcnVucyBpbiBkZXZlbG9wbWVudC5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgd2Ugb25seSBpbmNyZW1lbnQgdGhlIGdsb2JhbCBjb3VudGVyIG9uY2UsIHdlIHN0b3JlIHRoZSBzdGFydGluZyBpZCBmb3IgdGhpcyBjb21wb25lbnQgaW5cbiAgICAgICAgLy8gYSB3ZWFrIG1hcCBhc3NvY2lhdGVkIHdpdGggdGhlIEZpYmVyLiBPbiB0aGUgc2Vjb25kIHJlbmRlciwgd2UgcmVzZXQgdGhlIGdsb2JhbCBjb3VudGVyIHRvIHRoaXMgdmFsdWUuXG4gICAgICAgIC8vIFNpbmNlIFJlYWN0IHJ1bnMgdGhlIHNlY29uZCByZW5kZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0LCB0aGlzIGlzIHNhZmUuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbGV0IGN1cnJlbnRPd25lciA9IChfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSAoMCwgJDg5eUUyJHJlYWN0KS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCkgPT09IG51bGwgfHwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyID0gX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyKSA9PT0gbnVsbCB8fCBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgICAgICBpZiAoY3VycmVudE93bmVyKSB7XG4gICAgICAgICAgICBsZXQgcHJldkNvbXBvbmVudFZhbHVlID0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5nZXQoY3VycmVudE93bmVyKTtcbiAgICAgICAgICAgIGlmIChwcmV2Q29tcG9uZW50VmFsdWUgPT0gbnVsbCkgLy8gT24gdGhlIGZpcnN0IHJlbmRlciwgYW5kIGZpcnN0IGNhbGwgdG8gdXNlSWQsIHN0b3JlIHRoZSBpZCBhbmQgc3RhdGUgaW4gb3VyIHdlYWsgbWFwLlxuICAgICAgICAgICAgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5zZXQoY3VycmVudE93bmVyLCB7XG4gICAgICAgICAgICAgICAgaWQ6IGN0eC5jdXJyZW50LFxuICAgICAgICAgICAgICAgIHN0YXRlOiBjdXJyZW50T3duZXIubWVtb2l6ZWRTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50T3duZXIubWVtb2l6ZWRTdGF0ZSAhPT0gcHJldkNvbXBvbmVudFZhbHVlLnN0YXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gT24gdGhlIHNlY29uZCByZW5kZXIsIHRoZSBtZW1vaXplZFN0YXRlIGdldHMgcmVzZXQgYnkgUmVhY3QuXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIGNvdW50ZXIsIGFuZCByZW1vdmUgZnJvbSB0aGUgd2VhayBtYXAgc28gd2UgZG9uJ3RcbiAgICAgICAgICAgICAgICAvLyBkbyB0aGlzIGZvciBzdWJzZXF1ZW50IHVzZUlkIGNhbGxzLlxuICAgICAgICAgICAgICAgIGN0eC5jdXJyZW50ID0gcHJldkNvbXBvbmVudFZhbHVlLmlkO1xuICAgICAgICAgICAgICAgICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMuZGVsZXRlKGN1cnJlbnRPd25lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVmLmN1cnJlbnQgPSArK2N0eC5jdXJyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNjE5NTAwOTU5ZmM0OGIyNihkZWZhdWx0SWQpIHtcbiAgICBsZXQgY3R4ID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgLy8gSWYgd2UgYXJlIHJlbmRlcmluZyBpbiBhIG5vbi1ET00gZW52aXJvbm1lbnQsIGFuZCB0aGVyZSdzIG5vIFNTUlByb3ZpZGVyLFxuICAgIC8vIHByb3ZpZGUgYSB3YXJuaW5nIHRvIGhpbnQgdG8gdGhlIGRldmVsb3BlciB0byBhZGQgb25lLlxuICAgIGlmIChjdHggPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCAmJiAhJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNhblVzZURPTSkgY29uc29sZS53YXJuKFwiV2hlbiBzZXJ2ZXIgcmVuZGVyaW5nLCB5b3UgbXVzdCB3cmFwIHlvdXIgYXBwbGljYXRpb24gaW4gYW4gPFNTUlByb3ZpZGVyPiB0byBlbnN1cmUgY29uc2lzdGVudCBpZHMgYXJlIGdlbmVyYXRlZCBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cIik7XG4gICAgbGV0IGNvdW50ZXIgPSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcighIWRlZmF1bHRJZCk7XG4gICAgcmV0dXJuIGRlZmF1bHRJZCB8fCBgcmVhY3QtYXJpYSR7Y3R4LnByZWZpeH0tJHtjb3VudGVyfWA7XG59XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNTM1YmQ2Y2E3ZjkwYTI3MygpIHtcbiAgICBsZXQgY3VyID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IGlzSW5TU1JDb250ZXh0ID0gY3VyICE9PSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQ7XG4gICAgbGV0IFtpc1NTUiwgc2V0SXNTU1JdID0gKDAsICQ4OXlFMiR1c2VTdGF0ZSkoaXNJblNTUkNvbnRleHQpO1xuICAgIC8vIElmIG9uIHRoZSBjbGllbnQsIGFuZCB0aGUgY29tcG9uZW50IHdhcyBpbml0aWFsbHkgc2VydmVyIHJlbmRlcmVkLFxuICAgIC8vIHRoZW4gc2NoZWR1bGUgYSBsYXlvdXQgZWZmZWN0IHRvIHVwZGF0ZSB0aGUgY29tcG9uZW50IGFmdGVyIGh5ZHJhdGlvbi5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpc0luU1NSQ29udGV4dCkgLy8gVGhpcyBpZiBzdGF0ZW1lbnQgdGVjaG5pY2FsbHkgYnJlYWtzIHRoZSBydWxlcyBvZiBob29rcywgYnV0IGlzIHNhZmVcbiAgICAvLyBiZWNhdXNlIHRoZSBjb25kaXRpb24gbmV2ZXIgY2hhbmdlcyBhZnRlciBtb3VudGluZy5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAoMCwgJDg5eUUyJHVzZUxheW91dEVmZmVjdCkoKCk9PntcbiAgICAgICAgc2V0SXNTU1IoZmFsc2UpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gaXNTU1I7XG59XG5cblxuXG5cbmV4cG9ydCB7JDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDlmOGFjOTZhZjRiMWIyYWUgYXMgU1NSUHJvdmlkZXIsICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ2MTk1MDA5NTlmYzQ4YjI2IGFzIHVzZVNTUlNhZmVJZCwgJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDUzNWJkNmNhN2Y5MGEyNzMgYXMgdXNlSXNTU1J9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmpzLm1hcFxuIiwiaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTU1JTYWZlSWQgfSBmcm9tICcuL3Nzcic7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBjb25zdCBpc1JvbGVNZW51ID0gZWwgPT4ge1xuICB2YXIgX2VsJGdldEF0dHJpYnV0ZTtcbiAgcmV0dXJuICgoX2VsJGdldEF0dHJpYnV0ZSA9IGVsLmdldEF0dHJpYnV0ZSgncm9sZScpKSA9PSBudWxsID8gdm9pZCAwIDogX2VsJGdldEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpKSA9PT0gJ21lbnUnO1xufTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG4gKiBXaXJlcyB1cCBEcm9wZG93biB0b2dnbGUgZnVuY3Rpb25hbGl0eSwgcmV0dXJuaW5nIGEgc2V0IGEgcHJvcHMgdG8gYXR0YWNoXG4gKiB0byB0aGUgZWxlbWVudCB0aGF0IGZ1bmN0aW9ucyBhcyB0aGUgZHJvcGRvd24gdG9nZ2xlIChnZW5lcmFsbHkgYSBidXR0b24pLlxuICpcbiAqIEBtZW1iZXJPZiBEcm9wZG93blxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJvcGRvd25Ub2dnbGUoKSB7XG4gIGNvbnN0IGlkID0gdXNlU1NSU2FmZUlkKCk7XG4gIGNvbnN0IHtcbiAgICBzaG93ID0gZmFsc2UsXG4gICAgdG9nZ2xlID0gbm9vcCxcbiAgICBzZXRUb2dnbGUsXG4gICAgbWVudUVsZW1lbnRcbiAgfSA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KSB8fCB7fTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhlID0+IHtcbiAgICB0b2dnbGUoIXNob3csIGUpO1xuICB9LCBbc2hvdywgdG9nZ2xlXSk7XG4gIGNvbnN0IHByb3BzID0ge1xuICAgIGlkLFxuICAgIHJlZjogc2V0VG9nZ2xlIHx8IG5vb3AsXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgJ2FyaWEtZXhwYW5kZWQnOiAhIXNob3dcbiAgfTtcblxuICAvLyBUaGlzIGlzIG1heWJlIGJldHRlciBkb3duIGluIGFuIGVmZmVjdCwgYnV0XG4gIC8vIHRoZSBjb21wb25lbnQgaXMgZ29pbmcgdG8gdXBkYXRlIGFueXdheSB3aGVuIHRoZSBtZW51IGVsZW1lbnRcbiAgLy8gaXMgc2V0IHNvIG1pZ2h0IHJldHVybiBuZXcgcHJvcHMuXG4gIGlmIChtZW51RWxlbWVudCAmJiBpc1JvbGVNZW51KG1lbnVFbGVtZW50KSkge1xuICAgIHByb3BzWydhcmlhLWhhc3BvcHVwJ10gPSB0cnVlO1xuICB9XG4gIHJldHVybiBbcHJvcHMsIHtcbiAgICBzaG93LFxuICAgIHRvZ2dsZVxuICB9XTtcbn1cbi8qKlxuICogQWxzbyBleHBvcnRlZCBhcyBgPERyb3Bkb3duLlRvZ2dsZT5gIGZyb20gYERyb3Bkb3duYC5cbiAqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25Ub2dnbGVcbiAqIEBtZW1iZXJPZiBEcm9wZG93blxuICovXG5mdW5jdGlvbiBEcm9wZG93blRvZ2dsZSh7XG4gIGNoaWxkcmVuXG59KSB7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93blRvZ2dsZSgpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuKHByb3BzLCBtZXRhKVxuICB9KTtcbn1cbkRyb3Bkb3duVG9nZ2xlLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duVG9nZ2xlJztcblxuLyoqIEBjb21wb25lbnQgKi9cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duVG9nZ2xlOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFNlbGVjdGFibGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgY29uc3QgbWFrZUV2ZW50S2V5ID0gKGV2ZW50S2V5LCBocmVmID0gbnVsbCkgPT4ge1xuICBpZiAoZXZlbnRLZXkgIT0gbnVsbCkgcmV0dXJuIFN0cmluZyhldmVudEtleSk7XG4gIHJldHVybiBocmVmIHx8IG51bGw7XG59O1xuZXhwb3J0IGRlZmF1bHQgU2VsZWN0YWJsZUNvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgTmF2Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuTmF2Q29udGV4dC5kaXNwbGF5TmFtZSA9ICdOYXZDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IE5hdkNvbnRleHQ7IiwiZXhwb3J0IGNvbnN0IEFUVFJJQlVURV9QUkVGSVggPSBgZGF0YS1yci11aS1gO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRZX1BSRUZJWCA9IGByclVpYDtcbmV4cG9ydCBmdW5jdGlvbiBkYXRhQXR0cihwcm9wZXJ0eSkge1xuICByZXR1cm4gYCR7QVRUUklCVVRFX1BSRUZJWH0ke3Byb3BlcnR5fWA7XG59XG5leHBvcnQgZnVuY3Rpb24gZGF0YVByb3AocHJvcGVydHkpIHtcbiAgcmV0dXJuIGAke1BST1BFUlRZX1BSRUZJWH0ke3Byb3BlcnR5fWA7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiZXZlbnRLZXlcIiwgXCJkaXNhYmxlZFwiLCBcIm9uQ2xpY2tcIiwgXCJhY3RpdmVcIiwgXCJhc1wiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCwgeyBtYWtlRXZlbnRLZXkgfSBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKipcbiAqIENyZWF0ZSBhIGRyb3Bkb3duIGl0ZW0uIFJldHVybnMgYSBzZXQgb2YgcHJvcHMgZm9yIHRoZSBkcm9wZG93biBpdGVtIGNvbXBvbmVudFxuICogaW5jbHVkaW5nIGFuIGBvbkNsaWNrYCBoYW5kbGVyIHRoYXQgcHJldmVudHMgc2VsZWN0aW9uIHdoZW4gdGhlIGl0ZW0gaXMgZGlzYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyb3Bkb3duSXRlbSh7XG4gIGtleSxcbiAgaHJlZixcbiAgYWN0aXZlLFxuICBkaXNhYmxlZCxcbiAgb25DbGlja1xufSkge1xuICBjb25zdCBvblNlbGVjdEN0eCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlQ29udGV4dChOYXZDb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUtleVxuICB9ID0gbmF2Q29udGV4dCB8fCB7fTtcbiAgY29uc3QgZXZlbnRLZXkgPSBtYWtlRXZlbnRLZXkoa2V5LCBocmVmKTtcbiAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmUgPT0gbnVsbCAmJiBrZXkgIT0gbnVsbCA/IG1ha2VFdmVudEtleShhY3RpdmVLZXkpID09PSBldmVudEtleSA6IGFjdGl2ZTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBvbkNsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkNsaWNrKGV2ZW50KTtcbiAgICBpZiAob25TZWxlY3RDdHggJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIG9uU2VsZWN0Q3R4KGV2ZW50S2V5LCBldmVudCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIFt7XG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgJ2FyaWEtZGlzYWJsZWQnOiBkaXNhYmxlZCB8fCB1bmRlZmluZWQsXG4gICAgJ2FyaWEtc2VsZWN0ZWQnOiBpc0FjdGl2ZSxcbiAgICBbZGF0YUF0dHIoJ2Ryb3Bkb3duLWl0ZW0nKV06ICcnXG4gIH0sIHtcbiAgICBpc0FjdGl2ZVxuICB9XTtcbn1cbmNvbnN0IERyb3Bkb3duSXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIGV2ZW50S2V5LFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgYWN0aXZlLFxuICAgICAgYXM6IENvbXBvbmVudCA9IEJ1dHRvblxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2Ryb3Bkb3duSXRlbVByb3BzXSA9IHVzZURyb3Bkb3duSXRlbSh7XG4gICAga2V5OiBldmVudEtleSxcbiAgICBocmVmOiBwcm9wcy5ocmVmLFxuICAgIGRpc2FibGVkLFxuICAgIG9uQ2xpY2ssXG4gICAgYWN0aXZlXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmXG4gIH0sIGRyb3Bkb3duSXRlbVByb3BzKSk7XG59KTtcbkRyb3Bkb3duSXRlbS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25JdGVtOyIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJ2RvbS1oZWxwZXJzL2NhblVzZURPTSc7XG5jb25zdCBDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQoY2FuVXNlRE9NID8gd2luZG93IDogdW5kZWZpbmVkKTtcbmV4cG9ydCBjb25zdCBXaW5kb3dQcm92aWRlciA9IENvbnRleHQuUHJvdmlkZXI7XG5cbi8qKlxuICogVGhlIGRvY3VtZW50IFwid2luZG93XCIgcGxhY2VkIGluIFJlYWN0IGNvbnRleHQuIEhlbHBmdWwgZm9yIGRldGVybWluaW5nXG4gKiBTU1IgY29udGV4dCwgb3Igd2hlbiByZW5kZXJpbmcgaW50byBhbiBpZnJhbWUuXG4gKlxuICogQHJldHVybnMgdGhlIGN1cnJlbnQgd2luZG93XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVdpbmRvdygpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoQ29udGV4dCk7XG59IiwiaW1wb3J0IHFzYSBmcm9tICdkb20taGVscGVycy9xdWVyeVNlbGVjdG9yQWxsJztcbmltcG9ydCBhZGRFdmVudExpc3RlbmVyIGZyb20gJ2RvbS1oZWxwZXJzL2FkZEV2ZW50TGlzdGVuZXInO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkUHJvcCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCB1c2VQcmV2aW91cyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VQcmV2aW91cyc7XG5pbXBvcnQgdXNlRm9yY2VVcGRhdGUgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRm9yY2VVcGRhdGUnO1xuaW1wb3J0IHVzZUV2ZW50TGlzdGVuZXIgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRMaXN0ZW5lcic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IERyb3Bkb3duTWVudSBmcm9tICcuL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgRHJvcGRvd25Ub2dnbGUsIHsgaXNSb2xlTWVudSB9IGZyb20gJy4vRHJvcGRvd25Ub2dnbGUnO1xuaW1wb3J0IERyb3Bkb3duSXRlbSBmcm9tICcuL0Ryb3Bkb3duSXRlbSc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQgZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyBkYXRhQXR0ciB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgdXNlV2luZG93IGZyb20gJy4vdXNlV2luZG93JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiB1c2VSZWZXaXRoVXBkYXRlKCkge1xuICBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgYXR0YWNoUmVmID0gdXNlQ2FsbGJhY2soZWxlbWVudCA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBlbGVtZW50O1xuICAgIC8vIGVuc3VyZSB0aGF0IGEgbWVudSBzZXQgdHJpZ2dlcnMgYW4gdXBkYXRlIGZvciBjb25zdW1lcnNcbiAgICBmb3JjZVVwZGF0ZSgpO1xuICB9LCBbZm9yY2VVcGRhdGVdKTtcbiAgcmV0dXJuIFtyZWYsIGF0dGFjaFJlZl07XG59XG5cbi8qKlxuICogQGRpc3BsYXlOYW1lIERyb3Bkb3duXG4gKiBAcHVibGljXG4gKi9cbmZ1bmN0aW9uIERyb3Bkb3duKHtcbiAgZGVmYXVsdFNob3csXG4gIHNob3c6IHJhd1Nob3csXG4gIG9uU2VsZWN0LFxuICBvblRvZ2dsZTogcmF3T25Ub2dnbGUsXG4gIGl0ZW1TZWxlY3RvciA9IGAqIFske2RhdGFBdHRyKCdkcm9wZG93bi1pdGVtJyl9XWAsXG4gIGZvY3VzRmlyc3RJdGVtT25TaG93LFxuICBwbGFjZW1lbnQgPSAnYm90dG9tLXN0YXJ0JyxcbiAgY2hpbGRyZW5cbn0pIHtcbiAgY29uc3Qgd2luZG93ID0gdXNlV2luZG93KCk7XG4gIGNvbnN0IFtzaG93LCBvblRvZ2dsZV0gPSB1c2VVbmNvbnRyb2xsZWRQcm9wKHJhd1Nob3csIGRlZmF1bHRTaG93LCByYXdPblRvZ2dsZSk7XG5cbiAgLy8gV2UgdXNlIG5vcm1hbCByZWZzIGluc3RlYWQgb2YgdXNlQ2FsbGJhY2tSZWYgaW4gb3JkZXIgdG8gcG9wdWxhdGUgdGhlXG4gIC8vIHRoZSB2YWx1ZSBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLCBvdGhlcndpc2UgdGhlIGVmZmVjdCB0byBmb2N1cyB0aGUgZWxlbWVudFxuICAvLyBtYXkgcnVuIGJlZm9yZSB0aGUgc3RhdGUgdmFsdWUgaXMgc2V0XG4gIGNvbnN0IFttZW51UmVmLCBzZXRNZW51XSA9IHVzZVJlZldpdGhVcGRhdGUoKTtcbiAgY29uc3QgbWVudUVsZW1lbnQgPSBtZW51UmVmLmN1cnJlbnQ7XG4gIGNvbnN0IFt0b2dnbGVSZWYsIHNldFRvZ2dsZV0gPSB1c2VSZWZXaXRoVXBkYXRlKCk7XG4gIGNvbnN0IHRvZ2dsZUVsZW1lbnQgPSB0b2dnbGVSZWYuY3VycmVudDtcbiAgY29uc3QgbGFzdFNob3cgPSB1c2VQcmV2aW91cyhzaG93KTtcbiAgY29uc3QgbGFzdFNvdXJjZUV2ZW50ID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBmb2N1c0luRHJvcGRvd24gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBvblNlbGVjdEN0eCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygobmV4dFNob3csIGV2ZW50LCBzb3VyY2UgPSBldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQudHlwZSkgPT4ge1xuICAgIG9uVG9nZ2xlKG5leHRTaG93LCB7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHNvdXJjZVxuICAgIH0pO1xuICB9LCBbb25Ub2dnbGVdKTtcbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlRXZlbnRDYWxsYmFjaygoa2V5LCBldmVudCkgPT4ge1xuICAgIG9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdChrZXksIGV2ZW50KTtcbiAgICB0b2dnbGUoZmFsc2UsIGV2ZW50LCAnc2VsZWN0Jyk7XG4gICAgaWYgKCFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICBvblNlbGVjdEN0eCA9PSBudWxsID8gdm9pZCAwIDogb25TZWxlY3RDdHgoa2V5LCBldmVudCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICB0b2dnbGUsXG4gICAgcGxhY2VtZW50LFxuICAgIHNob3csXG4gICAgbWVudUVsZW1lbnQsXG4gICAgdG9nZ2xlRWxlbWVudCxcbiAgICBzZXRNZW51LFxuICAgIHNldFRvZ2dsZVxuICB9KSwgW3RvZ2dsZSwgcGxhY2VtZW50LCBzaG93LCBtZW51RWxlbWVudCwgdG9nZ2xlRWxlbWVudCwgc2V0TWVudSwgc2V0VG9nZ2xlXSk7XG4gIGlmIChtZW51RWxlbWVudCAmJiBsYXN0U2hvdyAmJiAhc2hvdykge1xuICAgIGZvY3VzSW5Ecm9wZG93bi5jdXJyZW50ID0gbWVudUVsZW1lbnQuY29udGFpbnMobWVudUVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgfVxuICBjb25zdCBmb2N1c1RvZ2dsZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICh0b2dnbGVFbGVtZW50ICYmIHRvZ2dsZUVsZW1lbnQuZm9jdXMpIHtcbiAgICAgIHRvZ2dsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBtYXliZUZvY3VzRmlyc3QgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0eXBlID0gbGFzdFNvdXJjZUV2ZW50LmN1cnJlbnQ7XG4gICAgbGV0IGZvY3VzVHlwZSA9IGZvY3VzRmlyc3RJdGVtT25TaG93O1xuICAgIGlmIChmb2N1c1R5cGUgPT0gbnVsbCkge1xuICAgICAgZm9jdXNUeXBlID0gbWVudVJlZi5jdXJyZW50ICYmIGlzUm9sZU1lbnUobWVudVJlZi5jdXJyZW50KSA/ICdrZXlib2FyZCcgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZvY3VzVHlwZSA9PT0gZmFsc2UgfHwgZm9jdXNUeXBlID09PSAna2V5Ym9hcmQnICYmICEvXmtleS4rJC8udGVzdCh0eXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdCA9IHFzYShtZW51UmVmLmN1cnJlbnQsIGl0ZW1TZWxlY3RvcilbMF07XG4gICAgaWYgKGZpcnN0ICYmIGZpcnN0LmZvY3VzKSBmaXJzdC5mb2N1cygpO1xuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdykgbWF5YmVGb2N1c0ZpcnN0KCk7ZWxzZSBpZiAoZm9jdXNJbkRyb3Bkb3duLmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzSW5Ecm9wZG93bi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBmb2N1c1RvZ2dsZSgpO1xuICAgIH1cbiAgICAvLyBvbmx5IGBzaG93YCBzaG91bGQgYmUgY2hhbmdpbmdcbiAgfSwgW3Nob3csIGZvY3VzSW5Ecm9wZG93biwgZm9jdXNUb2dnbGUsIG1heWJlRm9jdXNGaXJzdF0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxhc3RTb3VyY2VFdmVudC5jdXJyZW50ID0gbnVsbDtcbiAgfSk7XG4gIGNvbnN0IGdldE5leHRGb2N1c2VkQ2hpbGQgPSAoY3VycmVudCwgb2Zmc2V0KSA9PiB7XG4gICAgaWYgKCFtZW51UmVmLmN1cnJlbnQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGl0ZW1zID0gcXNhKG1lbnVSZWYuY3VycmVudCwgaXRlbVNlbGVjdG9yKTtcbiAgICBsZXQgaW5kZXggPSBpdGVtcy5pbmRleE9mKGN1cnJlbnQpICsgb2Zmc2V0O1xuICAgIGluZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGl0ZW1zLmxlbmd0aCkpO1xuICAgIHJldHVybiBpdGVtc1tpbmRleF07XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIodXNlQ2FsbGJhY2soKCkgPT4gd2luZG93LmRvY3VtZW50LCBbd2luZG93XSksICdrZXlkb3duJywgZXZlbnQgPT4ge1xuICAgIHZhciBfbWVudVJlZiRjdXJyZW50LCBfdG9nZ2xlUmVmJGN1cnJlbnQ7XG4gICAgY29uc3Qge1xuICAgICAga2V5XG4gICAgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCBmcm9tTWVudSA9IChfbWVudVJlZiRjdXJyZW50ID0gbWVudVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21lbnVSZWYkY3VycmVudC5jb250YWlucyh0YXJnZXQpO1xuICAgIGNvbnN0IGZyb21Ub2dnbGUgPSAoX3RvZ2dsZVJlZiRjdXJyZW50ID0gdG9nZ2xlUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfdG9nZ2xlUmVmJGN1cnJlbnQuY29udGFpbnModGFyZ2V0KTtcblxuICAgIC8vIFNlY29uZCBvbmx5IHRvIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iLzhjZmJmNjkzM2I4YTAxNDZhYzNmYmMzNjlmMTllNTIwYmQxZWJkYWMvanMvc3JjL2Ryb3Bkb3duLmpzI0w0MDBcbiAgICAvLyBpbiBpbnNjcnV0YWJpbGl0eVxuICAgIGNvbnN0IGlzSW5wdXQgPSAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KHRhcmdldC50YWdOYW1lKTtcbiAgICBpZiAoaXNJbnB1dCAmJiAoa2V5ID09PSAnICcgfHwga2V5ICE9PSAnRXNjYXBlJyAmJiBmcm9tTWVudSB8fCBrZXkgPT09ICdFc2NhcGUnICYmIHRhcmdldC50eXBlID09PSAnc2VhcmNoJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFmcm9tTWVudSAmJiAhZnJvbVRvZ2dsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoa2V5ID09PSAnVGFiJyAmJiAoIW1lbnVSZWYuY3VycmVudCB8fCAhc2hvdykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdFNvdXJjZUV2ZW50LmN1cnJlbnQgPSBldmVudC50eXBlO1xuICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHNvdXJjZTogZXZlbnQudHlwZVxuICAgIH07XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IGdldE5leHRGb2N1c2VkQ2hpbGQodGFyZ2V0LCAtMSk7XG4gICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5mb2N1cykgbmV4dC5mb2N1cygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIXNob3cpIHtcbiAgICAgICAgICBvblRvZ2dsZSh0cnVlLCBtZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEZvY3VzZWRDaGlsZCh0YXJnZXQsIDEpO1xuICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQuZm9jdXMpIG5leHQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICAvLyBvbiBrZXlkb3duIHRoZSB0YXJnZXQgaXMgdGhlIGVsZW1lbnQgYmVpbmcgdGFiYmVkIEZST00sIHdlIG5lZWQgdGhhdFxuICAgICAgICAvLyB0byBrbm93IGlmIHRoaXMgZXZlbnQgaXMgcmVsZXZhbnQgdG8gdGhpcyBkcm9wZG93biAoZS5nLiBpbiB0aGlzIG1lbnUpLlxuICAgICAgICAvLyBPbiBga2V5dXBgIHRoZSB0YXJnZXQgaXMgdGhlIGVsZW1lbnQgYmVpbmcgdGFnZ2VkIFRPIHdoaWNoIHdlIHVzZSB0byBjaGVja1xuICAgICAgICAvLyBpZiBmb2N1cyBoYXMgbGVmdCB0aGUgbWVudVxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKHRhcmdldC5vd25lckRvY3VtZW50LCAna2V5dXAnLCBlID0+IHtcbiAgICAgICAgICB2YXIgX21lbnVSZWYkY3VycmVudDI7XG4gICAgICAgICAgaWYgKGUua2V5ID09PSAnVGFiJyAmJiAhZS50YXJnZXQgfHwgISgoX21lbnVSZWYkY3VycmVudDIgPSBtZW51UmVmLmN1cnJlbnQpICE9IG51bGwgJiYgX21lbnVSZWYkY3VycmVudDIuY29udGFpbnMoZS50YXJnZXQpKSkge1xuICAgICAgICAgICAgb25Ub2dnbGUoZmFsc2UsIG1ldGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIG9uVG9nZ2xlKGZhbHNlLCBtZXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RhYmxlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBoYW5kbGVTZWxlY3QsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGNvbnRleHQsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KTtcbn1cbkRyb3Bkb3duLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duJztcbkRyb3Bkb3duLk1lbnUgPSBEcm9wZG93bk1lbnU7XG5Ecm9wZG93bi5Ub2dnbGUgPSBEcm9wZG93blRvZ2dsZTtcbkRyb3Bkb3duLkl0ZW0gPSBEcm9wZG93bkl0ZW07XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bjsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHsgdmFyIGtleSA9IF90b1ByaW1pdGl2ZShhcmcsIFwic3RyaW5nXCIpOyByZXR1cm4gdHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIiA/IGtleSA6IFN0cmluZyhrZXkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUoaW5wdXQsIGhpbnQpIHsgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0OyB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmIChwcmltICE9PSB1bmRlZmluZWQpIHsgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7IGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7IH1cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRLZXkoa2V5KSB7XG4gIHJldHVybiAnZGVmYXVsdCcgKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xufVxuZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wVmFsdWUsIGRlZmF1bHRWYWx1ZSwgaGFuZGxlcikge1xuICBjb25zdCB3YXNQcm9wUmVmID0gdXNlUmVmKHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgW3N0YXRlVmFsdWUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIGNvbnN0IGlzUHJvcCA9IHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCB3YXNQcm9wID0gd2FzUHJvcFJlZi5jdXJyZW50O1xuICB3YXNQcm9wUmVmLmN1cnJlbnQgPSBpc1Byb3A7XG5cbiAgLyoqXG4gICAqIElmIGEgcHJvcCBzd2l0Y2hlcyBmcm9tIGNvbnRyb2xsZWQgdG8gVW5jb250cm9sbGVkXG4gICAqIHJlc2V0IGl0cyB2YWx1ZSB0byB0aGUgZGVmYXVsdFZhbHVlXG4gICAqL1xuICBpZiAoIWlzUHJvcCAmJiB3YXNQcm9wICYmIHN0YXRlVmFsdWUgIT09IGRlZmF1bHRWYWx1ZSkge1xuICAgIHNldFN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIFtpc1Byb3AgPyBwcm9wVmFsdWUgOiBzdGF0ZVZhbHVlLCB1c2VDYWxsYmFjaygodmFsdWUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoaGFuZGxlcikgaGFuZGxlcih2YWx1ZSwgLi4uYXJncyk7XG4gICAgc2V0U3RhdGUodmFsdWUpO1xuICB9LCBbaGFuZGxlcl0pXTtcbn1cbmV4cG9ydCB7IHVzZVVuY29udHJvbGxlZFByb3AgfTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWQocHJvcHMsIGNvbmZpZykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoKHJlc3VsdCwgZmllbGROYW1lKSA9PiB7XG4gICAgY29uc3QgX3JlZiA9IHJlc3VsdCxcbiAgICAgIF9kZWZhdWx0S2V5ID0gZGVmYXVsdEtleShmaWVsZE5hbWUpLFxuICAgICAge1xuICAgICAgICBbX2RlZmF1bHRLZXldOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBwcm9wc1ZhbHVlXG4gICAgICB9ID0gX3JlZixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBbX2RlZmF1bHRLZXksIGZpZWxkTmFtZV0ubWFwKF90b1Byb3BlcnR5S2V5KSk7XG4gICAgY29uc3QgaGFuZGxlck5hbWUgPSBjb25maWdbZmllbGROYW1lXTtcbiAgICBjb25zdCBbdmFsdWUsIGhhbmRsZXJdID0gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wc1ZhbHVlLCBkZWZhdWx0VmFsdWUsIHByb3BzW2hhbmRsZXJOYW1lXSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICAgIFtmaWVsZE5hbWVdOiB2YWx1ZSxcbiAgICAgIFtoYW5kbGVyTmFtZV06IGhhbmRsZXJcbiAgICB9KTtcbiAgfSwgcHJvcHMpO1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5cbi8qKlxuICogQXR0YWNoZXMgYW4gZXZlbnQgaGFuZGxlciBvdXRzaWRlIGRpcmVjdGx5IHRvIHNwZWNpZmllZCBET00gZWxlbWVudFxuICogYnlwYXNzaW5nIHRoZSByZWFjdCBzeW50aGV0aWMgZXZlbnQgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSB0YXJnZXQgdG8gbGlzdGVuIGZvciBldmVudHMgb25cbiAqIEBwYXJhbSBldmVudCBUaGUgRE9NIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGVyIEFuIGV2ZW50IGhhbmRsZXJcbiAqIEBwYXJhbSBjYXB0dXJlIFdoZXRoZXIgb3Igbm90IHRvIGxpc3RlbiBkdXJpbmcgdGhlIGNhcHR1cmUgZXZlbnQgcGhhc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcihldmVudFRhcmdldCwgZXZlbnQsIGxpc3RlbmVyLCBjYXB0dXJlKSB7XG4gIGlmIChjYXB0dXJlID09PSB2b2lkIDApIHtcbiAgICBjYXB0dXJlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IHVzZUV2ZW50Q2FsbGJhY2sobGlzdGVuZXIpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0YXJnZXQgPSB0eXBlb2YgZXZlbnRUYXJnZXQgPT09ICdmdW5jdGlvbicgPyBldmVudFRhcmdldCgpIDogZXZlbnRUYXJnZXQ7XG4gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIH07XG4gIH0sIFtldmVudFRhcmdldF0pO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbkRyb3Bkb3duQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Db250ZXh0OyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25JdGVtIH0gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd25JdGVtJztcbmltcG9ydCBBbmNob3IgZnJvbSAnQHJlc3RhcnQvdWkvQW5jaG9yJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRHJvcGRvd25JdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgZXZlbnRLZXksXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIG9uQ2xpY2ssXG4gIGFjdGl2ZSxcbiAgYXM6IENvbXBvbmVudCA9IEFuY2hvcixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi1pdGVtJyk7XG4gIGNvbnN0IFtkcm9wZG93bkl0ZW1Qcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93bkl0ZW0oe1xuICAgIGtleTogZXZlbnRLZXksXG4gICAgaHJlZjogcHJvcHMuaHJlZixcbiAgICBkaXNhYmxlZCxcbiAgICBvbkNsaWNrLFxuICAgIGFjdGl2ZVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIC4uLmRyb3Bkb3duSXRlbVByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgbWV0YS5pc0FjdGl2ZSAmJiAnYWN0aXZlJywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJylcbiAgfSk7XG59KTtcbkRyb3Bkb3duSXRlbS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25JdGVtOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnSW5wdXRHcm91cENvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgY29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbi8vIFRPRE86IGNoZWNrXG5cbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnTmF2YmFyQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0OyIsImltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcocmVmLCBjb21wb25lbnROYW1lKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkgcmV0dXJuIHJlZjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgY29uc3Qgd2FybmluZ1JlZiA9IHVzZUNhbGxiYWNrKHJlZlZhbHVlID0+IHtcbiAgICAhKHJlZlZhbHVlID09IG51bGwgfHwgIXJlZlZhbHVlLmlzUmVhY3RDb21wb25lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgJHtjb21wb25lbnROYW1lfSBpbmplY3RlZCBhIHJlZiB0byBhIHByb3ZpZGVkIFxcYGFzXFxgIGNvbXBvbmVudCB0aGF0IHJlc29sdmVkIHRvIGEgY29tcG9uZW50IGluc3RhbmNlIGluc3RlYWQgb2YgYSBET00gZWxlbWVudC4gYCArICdVc2UgYFJlYWN0LmZvcndhcmRSZWZgIHRvIHByb3ZpZGUgdGhlIGluamVjdGVkIHJlZiB0byB0aGUgY2xhc3MgY29tcG9uZW50IGFzIGEgcHJvcCBpbiBvcmRlciB0byBwYXNzIGl0IGRpcmVjdGx5IHRvIGEgRE9NIGVsZW1lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIH0sIFtjb21wb25lbnROYW1lXSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICByZXR1cm4gdXNlTWVyZ2VkUmVmcyh3YXJuaW5nUmVmLCByZWYpO1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURyb3Bkb3duTWVudSB9IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0VmZmVjdCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCBJbnB1dEdyb3VwQ29udGV4dCBmcm9tICcuL0lucHV0R3JvdXBDb250ZXh0JztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyBmcm9tICcuL3VzZVdyYXBwZWRSZWZXaXRoV2FybmluZyc7XG5pbXBvcnQgeyBhbGlnblByb3BUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBmbGlwOiB0cnVlXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcERpcmVjdGlvbiwgaXNSVEwpIHtcbiAgY29uc3QgdG9wU3RhcnQgPSBpc1JUTCA/ICd0b3AtZW5kJyA6ICd0b3Atc3RhcnQnO1xuICBjb25zdCB0b3BFbmQgPSBpc1JUTCA/ICd0b3Atc3RhcnQnIDogJ3RvcC1lbmQnO1xuICBjb25zdCBib3R0b21TdGFydCA9IGlzUlRMID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCc7XG4gIGNvbnN0IGJvdHRvbUVuZCA9IGlzUlRMID8gJ2JvdHRvbS1zdGFydCcgOiAnYm90dG9tLWVuZCc7XG4gIGNvbnN0IGxlZnRTdGFydCA9IGlzUlRMID8gJ3JpZ2h0LXN0YXJ0JyA6ICdsZWZ0LXN0YXJ0JztcbiAgY29uc3QgbGVmdEVuZCA9IGlzUlRMID8gJ3JpZ2h0LWVuZCcgOiAnbGVmdC1lbmQnO1xuICBjb25zdCByaWdodFN0YXJ0ID0gaXNSVEwgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnO1xuICBjb25zdCByaWdodEVuZCA9IGlzUlRMID8gJ2xlZnQtZW5kJyA6ICdyaWdodC1lbmQnO1xuICBsZXQgcGxhY2VtZW50ID0gYWxpZ25FbmQgPyBib3R0b21FbmQgOiBib3R0b21TdGFydDtcbiAgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICd1cCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gdG9wRW5kIDogdG9wU3RhcnQ7ZWxzZSBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ2VuZCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gcmlnaHRFbmQgOiByaWdodFN0YXJ0O2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICdzdGFydCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gbGVmdEVuZCA6IGxlZnRTdGFydDtlbHNlIGlmIChkcm9wRGlyZWN0aW9uID09PSAnZG93bi1jZW50ZXJlZCcpIHBsYWNlbWVudCA9ICdib3R0b20nO2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICd1cC1jZW50ZXJlZCcpIHBsYWNlbWVudCA9ICd0b3AnO1xuICByZXR1cm4gcGxhY2VtZW50O1xufVxuY29uc3QgRHJvcGRvd25NZW51ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgYWxpZ24sXG4gIHJvb3RDbG9zZUV2ZW50LFxuICBmbGlwLFxuICBzaG93OiBzaG93UHJvcHMsXG4gIHJlbmRlck9uTW91bnQsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICBwb3BwZXJDb25maWcsXG4gIHZhcmlhbnQsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgbGV0IGFsaWduRW5kID0gZmFsc2U7XG4gIGNvbnN0IGlzTmF2YmFyID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnZHJvcGRvd24tbWVudScpO1xuICBjb25zdCB7XG4gICAgYWxpZ246IGNvbnRleHRBbGlnbixcbiAgICBkcm9wLFxuICAgIGlzUlRMXG4gIH0gPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGFsaWduID0gYWxpZ24gfHwgY29udGV4dEFsaWduO1xuICBjb25zdCBpc0lucHV0R3JvdXAgPSB1c2VDb250ZXh0KElucHV0R3JvdXBDb250ZXh0KTtcbiAgY29uc3QgYWxpZ25DbGFzc2VzID0gW107XG4gIGlmIChhbGlnbikge1xuICAgIGlmICh0eXBlb2YgYWxpZ24gPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYWxpZ24pO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhrZXlzLmxlbmd0aCA9PT0gMSwgJ1RoZXJlIHNob3VsZCBvbmx5IGJlIDEgYnJlYWtwb2ludCB3aGVuIHBhc3NpbmcgYW4gb2JqZWN0IHRvIGBhbGlnbmAnKSA6IHZvaWQgMDtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBicmtQb2ludCA9IGtleXNbMF07XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGFsaWduW2Jya1BvaW50XTtcblxuICAgICAgICAvLyAuZHJvcGRvd24tbWVudS1lbmQgaXMgcmVxdWlyZWQgZm9yIHJlc3BvbnNpdmVseSBhbGlnbmluZ1xuICAgICAgICAvLyBsZWZ0IGluIGFkZGl0aW9uIHRvIGFsaWduIGxlZnQgY2xhc3Nlcy5cbiAgICAgICAgYWxpZ25FbmQgPSBkaXJlY3Rpb24gPT09ICdzdGFydCc7XG4gICAgICAgIGFsaWduQ2xhc3Nlcy5wdXNoKGAke3ByZWZpeH0tJHticmtQb2ludH0tJHtkaXJlY3Rpb259YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhbGlnbiA9PT0gJ2VuZCcpIHtcbiAgICAgIGFsaWduRW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGxhY2VtZW50ID0gZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50KGFsaWduRW5kLCBkcm9wLCBpc1JUTCk7XG4gIGNvbnN0IFttZW51UHJvcHMsIHtcbiAgICBoYXNTaG93bixcbiAgICBwb3BwZXIsXG4gICAgc2hvdyxcbiAgICB0b2dnbGVcbiAgfV0gPSB1c2VEcm9wZG93bk1lbnUoe1xuICAgIGZsaXAsXG4gICAgcm9vdENsb3NlRXZlbnQsXG4gICAgc2hvdzogc2hvd1Byb3BzLFxuICAgIHVzZVBvcHBlcjogIWlzTmF2YmFyICYmIGFsaWduQ2xhc3Nlcy5sZW5ndGggPT09IDAsXG4gICAgb2Zmc2V0OiBbMCwgMl0sXG4gICAgcG9wcGVyQ29uZmlnLFxuICAgIHBsYWNlbWVudFxuICB9KTtcbiAgbWVudVByb3BzLnJlZiA9IHVzZU1lcmdlZFJlZnModXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nKHJlZiwgJ0Ryb3Bkb3duTWVudScpLCBtZW51UHJvcHMucmVmKTtcbiAgdXNlSXNvbW9ycGhpY0VmZmVjdCgoKSA9PiB7XG4gICAgLy8gUG9wcGVyJ3MgaW5pdGlhbCBwb3NpdGlvbiBmb3IgdGhlIG1lbnUgaXMgaW5jb3JyZWN0IHdoZW5cbiAgICAvLyByZW5kZXJPbk1vdW50PXRydWUuIE5lZWQgdG8gY2FsbCB1cGRhdGUoKSB0byBjb3JyZWN0IGl0LlxuICAgIGlmIChzaG93KSBwb3BwZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcHBlci51cGRhdGUoKTtcbiAgfSwgW3Nob3ddKTtcbiAgaWYgKCFoYXNTaG93biAmJiAhcmVuZGVyT25Nb3VudCAmJiAhaXNJbnB1dEdyb3VwKSByZXR1cm4gbnVsbDtcblxuICAvLyBGb3IgY3VzdG9tIGNvbXBvbmVudHMgcHJvdmlkZSBhZGRpdGlvbmFsLCBub24tRE9NLCBwcm9wcztcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgbWVudVByb3BzLnNob3cgPSBzaG93O1xuICAgIG1lbnVQcm9wcy5jbG9zZSA9ICgpID0+IHRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogdG9nZ2xlKGZhbHNlKTtcbiAgICBtZW51UHJvcHMuYWxpZ24gPSBhbGlnbjtcbiAgfVxuICBsZXQgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgaWYgKHBvcHBlciAhPSBudWxsICYmIHBvcHBlci5wbGFjZW1lbnQpIHtcbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoZSBkZWZhdWx0IHBvcHBlciBzdHlsZSxcbiAgICAvLyBtZW51cyBhcmUgZGlzcGxheTogbm9uZSB3aGVuIG5vdCBzaG93bi5cbiAgICBzdHlsZSA9IHtcbiAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgLi4ubWVudVByb3BzLnN0eWxlXG4gICAgfTtcbiAgICBwcm9wc1sneC1wbGFjZW1lbnQnXSA9IHBvcHBlci5wbGFjZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIC4uLm1lbnVQcm9wcyxcbiAgICBzdHlsZTogc3R5bGVcbiAgICAvLyBCb290c3RyYXAgY3NzIHJlcXVpcmVzIHRoaXMgZGF0YSBhdHRyaWIgdG8gc3R5bGUgcmVzcG9uc2l2ZSBtZW51cy5cbiAgICAsXG4gICAgLi4uKChhbGlnbkNsYXNzZXMubGVuZ3RoIHx8IGlzTmF2YmFyKSAmJiB7XG4gICAgICAnZGF0YS1icy1wb3BwZXInOiAnc3RhdGljJ1xuICAgIH0pLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgc2hvdyAmJiAnc2hvdycsIGFsaWduRW5kICYmIGAke3ByZWZpeH0tZW5kYCwgdmFyaWFudCAmJiBgJHtwcmVmaXh9LSR7dmFyaWFudH1gLCAuLi5hbGlnbkNsYXNzZXMpXG4gIH0pO1xufSk7XG5Ecm9wZG93bk1lbnUuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25NZW51JztcbkRyb3Bkb3duTWVudS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCdXR0b25Qcm9wcyB9IGZyb20gJ0ByZXN0YXJ0L3VpL0J1dHRvbic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdmFyaWFudDogJ3ByaW1hcnknLFxuICBhY3RpdmU6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2Vcbn07XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBhcyxcbiAgYnNQcmVmaXgsXG4gIHZhcmlhbnQsXG4gIHNpemUsXG4gIGFjdGl2ZSxcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2J0bicpO1xuICBjb25zdCBbYnV0dG9uUHJvcHMsIHtcbiAgICB0YWdOYW1lXG4gIH1dID0gdXNlQnV0dG9uUHJvcHMoe1xuICAgIHRhZ05hbWU6IGFzLFxuICAgIC4uLnByb3BzXG4gIH0pO1xuICBjb25zdCBDb21wb25lbnQgPSB0YWdOYW1lO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4uYnV0dG9uUHJvcHMsXG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCBhY3RpdmUgJiYgJ2FjdGl2ZScsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgc2l6ZSAmJiBgJHtwcmVmaXh9LSR7c2l6ZX1gLCBwcm9wcy5ocmVmICYmIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcpXG4gIH0pO1xufSk7XG5CdXR0b24uZGlzcGxheU5hbWUgPSAnQnV0dG9uJztcbkJ1dHRvbi5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBCdXR0b247IiwiaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VEcm9wZG93blRvZ2dsZSB9IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duVG9nZ2xlJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcgZnJvbSAnLi91c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERyb3Bkb3duVG9nZ2xlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIHNwbGl0LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkQnNQcmVmaXgsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9IEJ1dHRvbixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi10b2dnbGUnKTtcbiAgY29uc3QgZHJvcGRvd25Db250ZXh0ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xuICBpZiAoY2hpbGRCc1ByZWZpeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMuYnNQcmVmaXggPSBjaGlsZEJzUHJlZml4O1xuICB9XG4gIGNvbnN0IFt0b2dnbGVQcm9wc10gPSB1c2VEcm9wZG93blRvZ2dsZSgpO1xuICB0b2dnbGVQcm9wcy5yZWYgPSB1c2VNZXJnZWRSZWZzKHRvZ2dsZVByb3BzLnJlZiwgdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nKHJlZiwgJ0Ryb3Bkb3duVG9nZ2xlJykpO1xuXG4gIC8vIFRoaXMgaW50ZW50aW9uYWxseSBmb3J3YXJkcyBzaXplIGFuZCB2YXJpYW50IChpZiBzZXQpIHRvIHRoZVxuICAvLyB1bmRlcmx5aW5nIGNvbXBvbmVudCwgdG8gYWxsb3cgaXQgdG8gcmVuZGVyIHNpemUgYW5kIHN0eWxlIHZhcmlhbnRzLlxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCBzcGxpdCAmJiBgJHtwcmVmaXh9LXNwbGl0YCwgKGRyb3Bkb3duQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZHJvcGRvd25Db250ZXh0LnNob3cpICYmICdzaG93JyksXG4gICAgLi4udG9nZ2xlUHJvcHMsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG59KTtcbkRyb3Bkb3duVG9nZ2xlLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duVG9nZ2xlJztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duVG9nZ2xlOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCYXNlRHJvcGRvd24gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd24nO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCBEcm9wZG93bkl0ZW0gZnJvbSAnLi9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IERyb3Bkb3duTWVudSwgeyBnZXREcm9wZG93bk1lbnVQbGFjZW1lbnQgfSBmcm9tICcuL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgRHJvcGRvd25Ub2dnbGUgZnJvbSAnLi9Ecm9wZG93blRvZ2dsZSc7XG5pbXBvcnQgSW5wdXRHcm91cENvbnRleHQgZnJvbSAnLi9JbnB1dEdyb3VwQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXgsIHVzZUlzUlRMIH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuaW1wb3J0IHsgYWxpZ25Qcm9wVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERyb3Bkb3duSGVhZGVyID0gY3JlYXRlV2l0aEJzUHJlZml4KCdkcm9wZG93bi1oZWFkZXInLCB7XG4gIGRlZmF1bHRQcm9wczoge1xuICAgIHJvbGU6ICdoZWFkaW5nJ1xuICB9XG59KTtcbmNvbnN0IERyb3Bkb3duRGl2aWRlciA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnZHJvcGRvd24tZGl2aWRlcicsIHtcbiAgQ29tcG9uZW50OiAnaHInLFxuICBkZWZhdWx0UHJvcHM6IHtcbiAgICByb2xlOiAnc2VwYXJhdG9yJ1xuICB9XG59KTtcbmNvbnN0IERyb3Bkb3duSXRlbVRleHQgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2Ryb3Bkb3duLWl0ZW0tdGV4dCcsIHtcbiAgQ29tcG9uZW50OiAnc3Bhbidcbn0pO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBuYXZiYXI6IGZhbHNlLFxuICBhbGlnbjogJ3N0YXJ0JyxcbiAgYXV0b0Nsb3NlOiB0cnVlLFxuICBkcm9wOiAnZG93bidcbn07XG5jb25zdCBEcm9wZG93biA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYnNQcmVmaXgsXG4gICAgZHJvcCxcbiAgICBzaG93LFxuICAgIGNsYXNzTmFtZSxcbiAgICBhbGlnbixcbiAgICBvblNlbGVjdCxcbiAgICBvblRvZ2dsZSxcbiAgICBmb2N1c0ZpcnN0SXRlbU9uU2hvdyxcbiAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICAgIG5hdmJhcjogXzQsXG4gICAgYXV0b0Nsb3NlLFxuICAgIC4uLnByb3BzXG4gIH0gPSB1c2VVbmNvbnRyb2xsZWQocFByb3BzLCB7XG4gICAgc2hvdzogJ29uVG9nZ2xlJ1xuICB9KTtcbiAgY29uc3QgaXNJbnB1dEdyb3VwID0gdXNlQ29udGV4dChJbnB1dEdyb3VwQ29udGV4dCk7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2Ryb3Bkb3duJyk7XG4gIGNvbnN0IGlzUlRMID0gdXNlSXNSVEwoKTtcbiAgY29uc3QgaXNDbG9zaW5nUGVybWl0dGVkID0gc291cmNlID0+IHtcbiAgICAvLyBhdXRvQ2xvc2U9ZmFsc2Ugb25seSBwZXJtaXRzIGNsb3NlIG9uIGJ1dHRvbiBjbGlja1xuICAgIGlmIChhdXRvQ2xvc2UgPT09IGZhbHNlKSByZXR1cm4gc291cmNlID09PSAnY2xpY2snO1xuXG4gICAgLy8gYXV0b0Nsb3NlPWluc2lkZSBkb2Vzbid0IHBlcm1pdCBjbG9zZSBvbiByb290Q2xvc2VcbiAgICBpZiAoYXV0b0Nsb3NlID09PSAnaW5zaWRlJykgcmV0dXJuIHNvdXJjZSAhPT0gJ3Jvb3RDbG9zZSc7XG5cbiAgICAvLyBhdXRvQ2xvc2U9b3V0c2lkZSBkb2Vzbid0IHBlcm1pdCBjbG9zZSBvbiBzZWxlY3RcbiAgICBpZiAoYXV0b0Nsb3NlID09PSAnb3V0c2lkZScpIHJldHVybiBzb3VyY2UgIT09ICdzZWxlY3QnO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBjb25zdCBoYW5kbGVUb2dnbGUgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0U2hvdywgbWV0YSkgPT4ge1xuICAgIGlmIChtZXRhLm9yaWdpbmFsRXZlbnQuY3VycmVudFRhcmdldCA9PT0gZG9jdW1lbnQgJiYgKG1ldGEuc291cmNlICE9PSAna2V5ZG93bicgfHwgbWV0YS5vcmlnaW5hbEV2ZW50LmtleSA9PT0gJ0VzY2FwZScpKSBtZXRhLnNvdXJjZSA9ICdyb290Q2xvc2UnO1xuICAgIGlmIChpc0Nsb3NpbmdQZXJtaXR0ZWQobWV0YS5zb3VyY2UpKSBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUobmV4dFNob3csIG1ldGEpO1xuICB9KTtcbiAgY29uc3QgYWxpZ25FbmQgPSBhbGlnbiA9PT0gJ2VuZCc7XG4gIGNvbnN0IHBsYWNlbWVudCA9IGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcCwgaXNSVEwpO1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgYWxpZ24sXG4gICAgZHJvcCxcbiAgICBpc1JUTFxuICB9KSwgW2FsaWduLCBkcm9wLCBpc1JUTF0pO1xuICBjb25zdCBkaXJlY3Rpb25DbGFzc2VzID0ge1xuICAgIGRvd246IHByZWZpeCxcbiAgICAnZG93bi1jZW50ZXJlZCc6IGAke3ByZWZpeH0tY2VudGVyYCxcbiAgICB1cDogJ2Ryb3B1cCcsXG4gICAgJ3VwLWNlbnRlcmVkJzogJ2Ryb3B1cC1jZW50ZXIgZHJvcHVwJyxcbiAgICBlbmQ6ICdkcm9wZW5kJyxcbiAgICBzdGFydDogJ2Ryb3BzdGFydCdcbiAgfTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0VmFsdWUsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEJhc2VEcm9wZG93biwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBzaG93OiBzaG93LFxuICAgICAgb25TZWxlY3Q6IG9uU2VsZWN0LFxuICAgICAgb25Ub2dnbGU6IGhhbmRsZVRvZ2dsZSxcbiAgICAgIGZvY3VzRmlyc3RJdGVtT25TaG93OiBmb2N1c0ZpcnN0SXRlbU9uU2hvdyxcbiAgICAgIGl0ZW1TZWxlY3RvcjogYC4ke3ByZWZpeH0taXRlbTpub3QoLmRpc2FibGVkKTpub3QoOmRpc2FibGVkKWAsXG4gICAgICBjaGlsZHJlbjogaXNJbnB1dEdyb3VwID8gcHJvcHMuY2hpbGRyZW4gOiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBzaG93ICYmICdzaG93JywgZGlyZWN0aW9uQ2xhc3Nlc1tkcm9wXSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSk7XG59KTtcbkRyb3Bkb3duLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duJztcbkRyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oRHJvcGRvd24sIHtcbiAgVG9nZ2xlOiBEcm9wZG93blRvZ2dsZSxcbiAgTWVudTogRHJvcGRvd25NZW51LFxuICBJdGVtOiBEcm9wZG93bkl0ZW0sXG4gIEl0ZW1UZXh0OiBEcm9wZG93bkl0ZW1UZXh0LFxuICBEaXZpZGVyOiBEcm9wZG93bkRpdmlkZXIsXG4gIEhlYWRlcjogRHJvcGRvd25IZWFkZXJcbn0pOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFRhYkNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBkZWZhdWx0IFRhYkNvbnRleHQ7IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXNcIiwgXCJhY3RpdmVcIiwgXCJldmVudEtleVwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQsIHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBUYWJDb250ZXh0IGZyb20gJy4vVGFiQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU5hdkl0ZW0oe1xuICBrZXksXG4gIG9uQ2xpY2ssXG4gIGFjdGl2ZSxcbiAgaWQsXG4gIHJvbGUsXG4gIGRpc2FibGVkXG59KSB7XG4gIGNvbnN0IHBhcmVudE9uU2VsZWN0ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VDb250ZXh0KE5hdkNvbnRleHQpO1xuICBjb25zdCB0YWJDb250ZXh0ID0gdXNlQ29udGV4dChUYWJDb250ZXh0KTtcbiAgbGV0IGlzQWN0aXZlID0gYWN0aXZlO1xuICBjb25zdCBwcm9wcyA9IHtcbiAgICByb2xlXG4gIH07XG4gIGlmIChuYXZDb250ZXh0KSB7XG4gICAgaWYgKCFyb2xlICYmIG5hdkNvbnRleHQucm9sZSA9PT0gJ3RhYmxpc3QnKSBwcm9wcy5yb2xlID0gJ3RhYic7XG4gICAgY29uc3QgY29udGV4dENvbnRyb2xsZXJJZCA9IG5hdkNvbnRleHQuZ2V0Q29udHJvbGxlcklkKGtleSAhPSBudWxsID8ga2V5IDogbnVsbCk7XG4gICAgY29uc3QgY29udGV4dENvbnRyb2xsZWRJZCA9IG5hdkNvbnRleHQuZ2V0Q29udHJvbGxlZElkKGtleSAhPSBudWxsID8ga2V5IDogbnVsbCk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJvcHNbZGF0YUF0dHIoJ2V2ZW50LWtleScpXSA9IGtleTtcbiAgICBwcm9wcy5pZCA9IGNvbnRleHRDb250cm9sbGVySWQgfHwgaWQ7XG4gICAgaXNBY3RpdmUgPSBhY3RpdmUgPT0gbnVsbCAmJiBrZXkgIT0gbnVsbCA/IG5hdkNvbnRleHQuYWN0aXZlS2V5ID09PSBrZXkgOiBhY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBTaW1wbGlmaWVkIHNjZW5hcmlvIGZvciBgbW91bnRPbkVudGVyYC5cbiAgICAgKlxuICAgICAqIFdoaWxlIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8ga2VlcCAnYXJpYS1jb250cm9scycgZm9yIHRhYnMgdGhhdCBoYXZlIGJlZW4gbW91bnRlZCBhdCBsZWFzdFxuICAgICAqIG9uY2UsIGl0IHdvdWxkIGFsc28gY29tcGxpY2F0ZSB0aGUgY29kZSBxdWl0ZSBhIGJpdCwgZm9yIHZlcnkgbGl0dGxlIGdhaW4uXG4gICAgICogVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpcyBwcm9iYWJseSBnb29kIGVub3VnaC5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LXJlc3RhcnQvdWkvcHVsbC80MCNpc3N1ZWNvbW1lbnQtMTAwOTk3MTU2MVxuICAgICAqL1xuICAgIGlmIChpc0FjdGl2ZSB8fCAhKHRhYkNvbnRleHQgIT0gbnVsbCAmJiB0YWJDb250ZXh0LnVubW91bnRPbkV4aXQpICYmICEodGFiQ29udGV4dCAhPSBudWxsICYmIHRhYkNvbnRleHQubW91bnRPbkVudGVyKSkgcHJvcHNbJ2FyaWEtY29udHJvbHMnXSA9IGNvbnRleHRDb250cm9sbGVkSWQ7XG4gIH1cbiAgaWYgKHByb3BzLnJvbGUgPT09ICd0YWInKSB7XG4gICAgcHJvcHNbJ2FyaWEtc2VsZWN0ZWQnXSA9IGlzQWN0aXZlO1xuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIHByb3BzLnRhYkluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcHJvcHMudGFiSW5kZXggPSAtMTtcbiAgICAgIHByb3BzWydhcmlhLWRpc2FibGVkJ10gPSB0cnVlO1xuICAgIH1cbiAgfVxuICBwcm9wcy5vbkNsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBvbkNsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGFyZW50T25TZWxlY3QgJiYgIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgcGFyZW50T25TZWxlY3Qoa2V5LCBlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3Byb3BzLCB7XG4gICAgaXNBY3RpdmVcbiAgfV07XG59XG5jb25zdCBOYXZJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgYXM6IENvbXBvbmVudCA9IEJ1dHRvbixcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGV2ZW50S2V5XG4gICAgfSA9IF9yZWYsXG4gICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VOYXZJdGVtKE9iamVjdC5hc3NpZ24oe1xuICAgIGtleTogbWFrZUV2ZW50S2V5KGV2ZW50S2V5LCBvcHRpb25zLmhyZWYpLFxuICAgIGFjdGl2ZVxuICB9LCBvcHRpb25zKSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBwcm9wc1tkYXRhQXR0cignYWN0aXZlJyldID0gbWV0YS5pc0FjdGl2ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgcHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7XG59KTtcbk5hdkl0ZW0uZGlzcGxheU5hbWUgPSAnTmF2SXRlbSc7XG5leHBvcnQgZGVmYXVsdCBOYXZJdGVtOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFuY2hvciBmcm9tICdAcmVzdGFydC91aS9BbmNob3InO1xuaW1wb3J0IHsgdXNlTmF2SXRlbSB9IGZyb20gJ0ByZXN0YXJ0L3VpL05hdkl0ZW0nO1xuaW1wb3J0IHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnQHJlc3RhcnQvdWkvU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGRpc2FibGVkOiBmYWxzZVxufTtcbmNvbnN0IE5hdkxpbmsgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBhczogQ29tcG9uZW50ID0gQW5jaG9yLFxuICBhY3RpdmUsXG4gIGV2ZW50S2V5LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2LWxpbmsnKTtcbiAgY29uc3QgW25hdkl0ZW1Qcm9wcywgbWV0YV0gPSB1c2VOYXZJdGVtKHtcbiAgICBrZXk6IG1ha2VFdmVudEtleShldmVudEtleSwgcHJvcHMuaHJlZiksXG4gICAgYWN0aXZlLFxuICAgIC4uLnByb3BzXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgLi4ubmF2SXRlbVByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4LCBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBtZXRhLmlzQWN0aXZlICYmICdhY3RpdmUnKVxuICB9KTtcbn0pO1xuTmF2TGluay5kaXNwbGF5TmFtZSA9ICdOYXZMaW5rJztcbk5hdkxpbmsuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgTmF2TGluazsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAnLi9Ecm9wZG93bic7XG5pbXBvcnQgTmF2TGluayBmcm9tICcuL05hdkxpbmsnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdkRyb3Bkb3duID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBjaGlsZHJlbixcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgcm9vdENsb3NlRXZlbnQsXG4gIG1lbnVSb2xlLFxuICBkaXNhYmxlZCxcbiAgYWN0aXZlLFxuICByZW5kZXJNZW51T25Nb3VudCxcbiAgbWVudVZhcmlhbnQsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgLyogTmF2SXRlbSBoYXMgbm8gYWRkaXRpb25hbCBsb2dpYywgaXQncyBwdXJlbHkgcHJlc2VudGF0aW9uYWwuIENhbiBzZXQgbmF2IGl0ZW0gY2xhc3MgaGVyZSB0byBzdXBwb3J0IFwiYXNcIiAqL1xuICBjb25zdCBuYXZJdGVtUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KHVuZGVmaW5lZCwgJ25hdi1pdGVtJyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoRHJvcGRvd24sIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBuYXZJdGVtUHJlZml4KSxcbiAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duLlRvZ2dsZSwge1xuICAgICAgaWQ6IGlkLFxuICAgICAgZXZlbnRLZXk6IG51bGwsXG4gICAgICBhY3RpdmU6IGFjdGl2ZSxcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgIGNoaWxkQnNQcmVmaXg6IGJzUHJlZml4LFxuICAgICAgYXM6IE5hdkxpbmssXG4gICAgICBjaGlsZHJlbjogdGl0bGVcbiAgICB9KSwgLyojX19QVVJFX18qL19qc3goRHJvcGRvd24uTWVudSwge1xuICAgICAgcm9sZTogbWVudVJvbGUsXG4gICAgICByZW5kZXJPbk1vdW50OiByZW5kZXJNZW51T25Nb3VudCxcbiAgICAgIHJvb3RDbG9zZUV2ZW50OiByb290Q2xvc2VFdmVudCxcbiAgICAgIHZhcmlhbnQ6IG1lbnVWYXJpYW50LFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSldXG4gIH0pO1xufSk7XG5OYXZEcm9wZG93bi5kaXNwbGF5TmFtZSA9ICdOYXZEcm9wZG93bic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdkRyb3Bkb3duLCB7XG4gIEl0ZW06IERyb3Bkb3duLkl0ZW0sXG4gIEl0ZW1UZXh0OiBEcm9wZG93bi5JdGVtVGV4dCxcbiAgRGl2aWRlcjogRHJvcGRvd24uRGl2aWRlcixcbiAgSGVhZGVyOiBEcm9wZG93bi5IZWFkZXJcbn0pOyIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSW5mb1NlcnZpY2UgfSBmcm9tIFwiLi4vSW5mb1NlcnZpY2VcIjtcbmltcG9ydCB7IExvZ2luRm9ybSB9IGZyb20gXCIuL0xvZ2luRm9ybVwiO1xuaW1wb3J0IHsgTG9hZGluZ0luZm8gfSBmcm9tIFwiLi9Mb2FkaW5nSW5mb1wiO1xuaW1wb3J0IHsgTmF2RHJvcGRvd24gfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwXCI7XG5cbmZ1bmN0aW9uIF9Vc2VyQ29tcG9uZW50KHNlc3Npb25faW5mbywgbG9nb3V0X2NhbGxiYWNrKSB7XG4gIGNvbnN0IHRpdGxlID0gKFxuICAgIDw+XG4gICAgICB7c2Vzc2lvbl9pbmZvLnVzZXJuYW1lfSA8aSBjbGFzc05hbWU9XCJiaSBiaS1wZXJzb24tZmlsbFwiIC8+XG4gICAgPC8+XG4gICk7XG4gIHJldHVybiAoXG4gICAgPE5hdkRyb3Bkb3duIGFsaWduPVwiZW5kXCIgdGl0bGU9e3RpdGxlfT5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGFzPVwiYnV0dG9uXCIgb25DbGljaz17bG9nb3V0X2NhbGxiYWNrfSBocmVmPVwiI1wiPlxuICAgICAgICBMb2dvdXRcbiAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICA8L05hdkRyb3Bkb3duPlxuICApO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvbiBvbkxvZ291dENhbGxiYWNrXG4gKlxuICogVG8gYmUgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dvdXQuXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuXG4vKipcbiAqIEBmdW5jdGlvbiBvbkxvZ2luQ2FsbGJhY2tcbiAqXG4gKiBUbyBiZSB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luLlxuICpcbiAqIEBwYXJhbSB7QGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlLlNlc3Npb25JbmZvfSBzZXNzaW9uSW5mbyBhYm91dFxuICogICB0aGUgY3VycmVudCB1c2VyLlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuXG4vKipcbiAqIFRoZSBVc2VyQ29tcG9uZW50IHNob3dzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyIG9yIGFcbiAqIExvZ2luRm9ybS5cbiAqXG4gKiBAcGFyYW0ge29uTG9naW5DYWxsYmFja30gb25Mb2dpbiBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlXG4gKiAgIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbG9naW4uIFdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlXG4gKiAgIFVzZXJDb21wb25lbnQgcHJvY2VlZHMgYXMgdXN1YWwgYW5kIHJlLXJlbmRlcnMgdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7b25Mb2dvdXRDYWxsYmFja30gb25Mb2dvdXQgQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZVxuICogICBjYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ291dC4gV2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVcbiAqICAgVXNlckNvbXBvbmVudCBwcm9jZWVkcyBhcyB1c3VhbCBhbmQgcmUtcmVuZGVycyB0aGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gVXNlckNvbXBvbmVudChvbkxvZ2luLCBvbkxvZ291dCkge1xuICBjb25zdCBbY29tcG9uZW50LCBzZXRDb21wb25lbnRdID0gdXNlU3RhdGUobnVsbCk7XG5cbiAgdmFyIHNob3dfY29tcG9uZW50ID0gY29tcG9uZW50O1xuICBpZiAoY29tcG9uZW50ID09PSBudWxsKSB7XG4gICAgdmFyIHNob3dfbG9naW5fZm9ybTtcblxuICAgIGNvbnN0IGxvZ291dF9jYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldENvbXBvbmVudCg8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz4pO1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gICAgICAgIGF3YWl0IHNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgIGlmIChvbkxvZ291dCgpKSB7XG4gICAgICAgICAgc2hvd19sb2dpbl9mb3JtKFwiWW91IGhhdmUgYmVlbiBsb2dnZWQgb3V0LlwiLCBcInN1Y2Nlc3NcIik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2hvd19sb2dpbl9mb3JtKFwiTG9nb3V0IGZhaWxlZDogXCIgKyBlLm1lc3NhZ2UsIFwiZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNob3dfc2Vzc2lvbl9pbmZvID0gKHNlc3Npb25faW5mbykgPT4ge1xuICAgICAgLy8gVE9ETyBpc19hbm9ueW1vdXMgbWVtYmVyP1xuICAgICAgaWYgKHNlc3Npb25faW5mby51c2VybmFtZSA9PT0gXCJhbm9ueW1vdXNcIikge1xuICAgICAgICBzaG93X2xvZ2luX2Zvcm0oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldENvbXBvbmVudChfVXNlckNvbXBvbmVudChzZXNzaW9uX2luZm8sIGxvZ291dF9jYWxsYmFjaykpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBsb2dpbl9mYWlsID0gKGVycm9yKSA9PiB7XG4gICAgICBzaG93X2xvZ2luX2Zvcm0oZXJyb3IubWVzc2FnZSwgXCJlcnJvclwiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9naW5fc3VjY2VzcyA9IChzZXNzaW9uX2luZm8pID0+IHtcbiAgICAgIGlmIChvbkxvZ2luKHNlc3Npb25faW5mbykpIHtcbiAgICAgICAgc2hvd19zZXNzaW9uX2luZm8oc2Vzc2lvbl9pbmZvKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2hvd19sb2dpbl9mb3JtID0gKG1lc3NhZ2UsIG1lc3NhZ2VUeXBlKSA9PiB7XG4gICAgICB2YXIgbG9naW5fZm9ybSA9IChcbiAgICAgICAgPExvZ2luRm9ybVxuICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgbWVzc2FnZVR5cGU9e21lc3NhZ2VUeXBlfVxuICAgICAgICAgIHRoZW49e2xvZ2luX3N1Y2Nlc3N9XG4gICAgICAgICAgb25FcnJvcj17bG9naW5fZmFpbH1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgICBzZXRDb21wb25lbnQobG9naW5fZm9ybSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgSW5mb1NlcnZpY2UoKTtcbiAgICBzZXJ2aWNlXG4gICAgICAuZ2V0U2Vzc2lvbkluZm8oKVxuICAgICAgLnRoZW4oc2hvd19zZXNzaW9uX2luZm8pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBzaG93X2xvZ2luX2Zvcm0oZXJyb3IubWVzc2FnZSwgXCJpbmZvXCIpKTtcbiAgICBzaG93X2NvbXBvbmVudCA9IDxMb2FkaW5nSW5mbyBzaXplPVwic21cIiAvPjtcbiAgfVxuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInVzZXItY29tcG9uZW50XCI+e3Nob3dfY29tcG9uZW50fTwvZGl2Pjtcbn1cblxuVXNlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uTG9naW46ICgpID0+IHRydWUsXG4gIG9uTG9nb3V0OiAoKSA9PiB0cnVlLFxufTtcbiIsImNvbnN0IEJyYW5kaW5nID0ge1xuICBuYW1lOiBcIkNhb3NEQlwiLFxufTtcblxuZXhwb3J0IHsgQnJhbmRpbmcgfTtcbiIsImNvbnN0IF9leGNsdWRlZCA9IFtcImFzXCIsIFwib25TZWxlY3RcIiwgXCJhY3RpdmVLZXlcIiwgXCJyb2xlXCIsIFwib25LZXlEb3duXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IHFzYSBmcm9tICdkb20taGVscGVycy9xdWVyeVNlbGVjdG9yQWxsJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUZvcmNlVXBkYXRlIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUZvcmNlVXBkYXRlJztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IE5hdkNvbnRleHQgZnJvbSAnLi9OYXZDb250ZXh0JztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCwgeyBtYWtlRXZlbnRLZXkgfSBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCBUYWJDb250ZXh0IGZyb20gJy4vVGFiQ29udGV4dCc7XG5pbXBvcnQgeyBkYXRhQXR0ciwgZGF0YVByb3AgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IE5hdkl0ZW0gZnJvbSAnLi9OYXZJdGVtJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5jb25zdCBub29wID0gKCkgPT4ge307XG5jb25zdCBFVkVOVF9LRVlfQVRUUiA9IGRhdGFBdHRyKCdldmVudC1rZXknKTtcbmNvbnN0IE5hdiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgICAgIGFzOiBDb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIG9uU2VsZWN0LFxuICAgICAgYWN0aXZlS2V5LFxuICAgICAgcm9sZSxcbiAgICAgIG9uS2V5RG93blxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gQSByZWYgYW5kIGZvcmNlVXBkYXRlIGZvciByZWZvY3VzLCBiL2Mgd2Ugb25seSB3YW50IHRvIHRyaWdnZXIgd2hlbiBuZWVkZWRcbiAgLy8gYW5kIGRvbid0IHdhbnQgdG8gcmVzZXQgdGhlIHNldCBpbiB0aGUgZWZmZWN0XG4gIGNvbnN0IGZvcmNlVXBkYXRlID0gdXNlRm9yY2VVcGRhdGUoKTtcbiAgY29uc3QgbmVlZHNSZWZvY3VzUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcGFyZW50T25TZWxlY3QgPSB1c2VDb250ZXh0KFNlbGVjdGFibGVDb250ZXh0KTtcbiAgY29uc3QgdGFiQ29udGV4dCA9IHVzZUNvbnRleHQoVGFiQ29udGV4dCk7XG4gIGxldCBnZXRDb250cm9sbGVkSWQsIGdldENvbnRyb2xsZXJJZDtcbiAgaWYgKHRhYkNvbnRleHQpIHtcbiAgICByb2xlID0gcm9sZSB8fCAndGFibGlzdCc7XG4gICAgYWN0aXZlS2V5ID0gdGFiQ29udGV4dC5hY3RpdmVLZXk7XG4gICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0byBkdXBsaWNhdGUgdGhlc2U/XG4gICAgZ2V0Q29udHJvbGxlZElkID0gdGFiQ29udGV4dC5nZXRDb250cm9sbGVkSWQ7XG4gICAgZ2V0Q29udHJvbGxlcklkID0gdGFiQ29udGV4dC5nZXRDb250cm9sbGVySWQ7XG4gIH1cbiAgY29uc3QgbGlzdE5vZGUgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGdldE5leHRBY3RpdmVUYWIgPSBvZmZzZXQgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRMaXN0Tm9kZSA9IGxpc3ROb2RlLmN1cnJlbnQ7XG4gICAgaWYgKCFjdXJyZW50TGlzdE5vZGUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGl0ZW1zID0gcXNhKGN1cnJlbnRMaXN0Tm9kZSwgYFske0VWRU5UX0tFWV9BVFRSfV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKWApO1xuICAgIGNvbnN0IGFjdGl2ZUNoaWxkID0gY3VycmVudExpc3ROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLXNlbGVjdGVkPXRydWVdJyk7XG4gICAgaWYgKCFhY3RpdmVDaGlsZCB8fCBhY3RpdmVDaGlsZCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaW5kZXggPSBpdGVtcy5pbmRleE9mKGFjdGl2ZUNoaWxkKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgbmV4dEluZGV4ID0gaW5kZXggKyBvZmZzZXQ7XG4gICAgaWYgKG5leHRJbmRleCA+PSBpdGVtcy5sZW5ndGgpIG5leHRJbmRleCA9IDA7XG4gICAgaWYgKG5leHRJbmRleCA8IDApIG5leHRJbmRleCA9IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGl0ZW1zW25leHRJbmRleF07XG4gIH07XG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChrZXksIGV2ZW50KSA9PiB7XG4gICAgaWYgKGtleSA9PSBudWxsKSByZXR1cm47XG4gICAgb25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0KGtleSwgZXZlbnQpO1xuICAgIHBhcmVudE9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBwYXJlbnRPblNlbGVjdChrZXksIGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBvbktleURvd24gPT0gbnVsbCA/IHZvaWQgMCA6IG9uS2V5RG93bihldmVudCk7XG4gICAgaWYgKCF0YWJDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBuZXh0QWN0aXZlQ2hpbGQ7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgbmV4dEFjdGl2ZUNoaWxkID0gZ2V0TmV4dEFjdGl2ZVRhYigtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBuZXh0QWN0aXZlQ2hpbGQgPSBnZXROZXh0QWN0aXZlVGFiKDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuZXh0QWN0aXZlQ2hpbGQpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGhhbmRsZVNlbGVjdChuZXh0QWN0aXZlQ2hpbGQuZGF0YXNldFtkYXRhUHJvcCgnRXZlbnRLZXknKV0gfHwgbnVsbCwgZXZlbnQpO1xuICAgIG5lZWRzUmVmb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICBmb3JjZVVwZGF0ZSgpO1xuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsaXN0Tm9kZS5jdXJyZW50ICYmIG5lZWRzUmVmb2N1c1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBhY3RpdmVDaGlsZCA9IGxpc3ROb2RlLmN1cnJlbnQucXVlcnlTZWxlY3RvcihgWyR7RVZFTlRfS0VZX0FUVFJ9XVthcmlhLXNlbGVjdGVkPXRydWVdYCk7XG4gICAgICBhY3RpdmVDaGlsZCA9PSBudWxsID8gdm9pZCAwIDogYWN0aXZlQ2hpbGQuZm9jdXMoKTtcbiAgICB9XG4gICAgbmVlZHNSZWZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgfSk7XG4gIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBsaXN0Tm9kZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RhYmxlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBoYW5kbGVTZWxlY3QsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KE5hdkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHJvbGUsXG4gICAgICAgIC8vIHVzZWQgYnkgTmF2TGluayB0byBkZXRlcm1pbmUgaXQncyByb2xlXG4gICAgICAgIGFjdGl2ZUtleTogbWFrZUV2ZW50S2V5KGFjdGl2ZUtleSksXG4gICAgICAgIGdldENvbnRyb2xsZWRJZDogZ2V0Q29udHJvbGxlZElkIHx8IG5vb3AsXG4gICAgICAgIGdldENvbnRyb2xsZXJJZDogZ2V0Q29udHJvbGxlcklkIHx8IG5vb3BcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIHJlZjogbWVyZ2VkUmVmLFxuICAgICAgICByb2xlOiByb2xlXG4gICAgICB9KSlcbiAgICB9KVxuICB9KTtcbn0pO1xuTmF2LmRpc3BsYXlOYW1lID0gJ05hdic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdiwge1xuICBJdGVtOiBOYXZJdGVtXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBjb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb250ZXh0LmRpc3BsYXlOYW1lID0gJ0NhcmRIZWFkZXJDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGNvbnRleHQ7IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ25hdi1pdGVtJyk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgYWxsIGZyb20gJ3Byb3AtdHlwZXMtZXh0cmEvbGliL2FsbCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IEJhc2VOYXYgZnJvbSAnQHJlc3RhcnQvdWkvTmF2JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IENhcmRIZWFkZXJDb250ZXh0IGZyb20gJy4vQ2FyZEhlYWRlckNvbnRleHQnO1xuaW1wb3J0IE5hdkl0ZW0gZnJvbSAnLi9OYXZJdGVtJztcbmltcG9ydCBOYXZMaW5rIGZyb20gJy4vTmF2TGluayc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBqdXN0aWZ5OiBmYWxzZSxcbiAgZmlsbDogZmFsc2Vcbn07XG5jb25zdCBOYXYgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigodW5jb250cm9sbGVkUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYXMgPSAnZGl2JyxcbiAgICBic1ByZWZpeDogaW5pdGlhbEJzUHJlZml4LFxuICAgIHZhcmlhbnQsXG4gICAgZmlsbCxcbiAgICBqdXN0aWZ5LFxuICAgIG5hdmJhcixcbiAgICBuYXZiYXJTY3JvbGwsXG4gICAgY2xhc3NOYW1lLFxuICAgIGFjdGl2ZUtleSxcbiAgICAuLi5wcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHVuY29udHJvbGxlZFByb3BzLCB7XG4gICAgYWN0aXZlS2V5OiAnb25TZWxlY3QnXG4gIH0pO1xuICBjb25zdCBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChpbml0aWFsQnNQcmVmaXgsICduYXYnKTtcbiAgbGV0IG5hdmJhckJzUHJlZml4O1xuICBsZXQgY2FyZEhlYWRlckJzUHJlZml4O1xuICBsZXQgaXNOYXZiYXIgPSBmYWxzZTtcbiAgY29uc3QgbmF2YmFyQ29udGV4dCA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIGNvbnN0IGNhcmRIZWFkZXJDb250ZXh0ID0gdXNlQ29udGV4dChDYXJkSGVhZGVyQ29udGV4dCk7XG4gIGlmIChuYXZiYXJDb250ZXh0KSB7XG4gICAgbmF2YmFyQnNQcmVmaXggPSBuYXZiYXJDb250ZXh0LmJzUHJlZml4O1xuICAgIGlzTmF2YmFyID0gbmF2YmFyID09IG51bGwgPyB0cnVlIDogbmF2YmFyO1xuICB9IGVsc2UgaWYgKGNhcmRIZWFkZXJDb250ZXh0KSB7XG4gICAgKHtcbiAgICAgIGNhcmRIZWFkZXJCc1ByZWZpeFxuICAgIH0gPSBjYXJkSGVhZGVyQ29udGV4dCk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEJhc2VOYXYsIHtcbiAgICBhczogYXMsXG4gICAgcmVmOiByZWYsXG4gICAgYWN0aXZlS2V5OiBhY3RpdmVLZXksXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwge1xuICAgICAgW2JzUHJlZml4XTogIWlzTmF2YmFyLFxuICAgICAgW2Ake25hdmJhckJzUHJlZml4fS1uYXZgXTogaXNOYXZiYXIsXG4gICAgICBbYCR7bmF2YmFyQnNQcmVmaXh9LW5hdi1zY3JvbGxgXTogaXNOYXZiYXIgJiYgbmF2YmFyU2Nyb2xsLFxuICAgICAgW2Ake2NhcmRIZWFkZXJCc1ByZWZpeH0tJHt2YXJpYW50fWBdOiAhIWNhcmRIZWFkZXJCc1ByZWZpeCxcbiAgICAgIFtgJHtic1ByZWZpeH0tJHt2YXJpYW50fWBdOiAhIXZhcmlhbnQsXG4gICAgICBbYCR7YnNQcmVmaXh9LWZpbGxgXTogZmlsbCxcbiAgICAgIFtgJHtic1ByZWZpeH0tanVzdGlmaWVkYF06IGp1c3RpZnlcbiAgICB9KSxcbiAgICAuLi5wcm9wc1xuICB9KTtcbn0pO1xuTmF2LmRpc3BsYXlOYW1lID0gJ05hdic7XG5OYXYuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXYsIHtcbiAgSXRlbTogTmF2SXRlbSxcbiAgTGluazogTmF2TGlua1xufSk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhckJyYW5kID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgYXMsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXZiYXItYnJhbmQnKTtcbiAgY29uc3QgQ29tcG9uZW50ID0gYXMgfHwgKHByb3BzLmhyZWYgPyAnYScgOiAnc3BhbicpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgpXG4gIH0pO1xufSk7XG5OYXZiYXJCcmFuZC5kaXNwbGF5TmFtZSA9ICdOYXZiYXJCcmFuZCc7XG5leHBvcnQgZGVmYXVsdCBOYXZiYXJCcmFuZDsiLCIvKipcbiAqIFNhZmUgY2hhaW5lZCBmdW5jdGlvblxuICpcbiAqIFdpbGwgb25seSBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gaWYgbmVlZGVkLFxuICogb3RoZXJ3aXNlIHdpbGwgcGFzcyBiYWNrIGV4aXN0aW5nIGZ1bmN0aW9ucyBvciBudWxsLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmN0aW9ucyB0byBjaGFpblxuICogQHJldHVybnMge2Z1bmN0aW9ufG51bGx9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiguLi5mdW5jcykge1xuICByZXR1cm4gZnVuY3MuZmlsdGVyKGYgPT4gZiAhPSBudWxsKS5yZWR1Y2UoKGFjYywgZikgPT4ge1xuICAgIGlmICh0eXBlb2YgZiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IFR5cGUsIG11c3Qgb25seSBwcm92aWRlIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBvciBudWxsLicpO1xuICAgIH1cbiAgICBpZiAoYWNjID09PSBudWxsKSByZXR1cm4gZjtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGFjYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGYuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfSwgbnVsbCk7XG59XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVDaGFpbmVkRnVuY3Rpb247IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgY3NzIGZyb20gJ2RvbS1oZWxwZXJzL2Nzcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEVOVEVSRUQsIEVOVEVSSU5HLCBFWElURUQsIEVYSVRJTkcgfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwL1RyYW5zaXRpb24nO1xuaW1wb3J0IHRyYW5zaXRpb25FbmRMaXN0ZW5lciBmcm9tICcuL3RyYW5zaXRpb25FbmRMaXN0ZW5lcic7XG5pbXBvcnQgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIGZyb20gJy4vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uJztcbmltcG9ydCB0cmlnZ2VyQnJvd3NlclJlZmxvdyBmcm9tICcuL3RyaWdnZXJCcm93c2VyUmVmbG93JztcbmltcG9ydCBUcmFuc2l0aW9uV3JhcHBlciBmcm9tICcuL1RyYW5zaXRpb25XcmFwcGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBNQVJHSU5TID0ge1xuICBoZWlnaHQ6IFsnbWFyZ2luVG9wJywgJ21hcmdpbkJvdHRvbSddLFxuICB3aWR0aDogWydtYXJnaW5MZWZ0JywgJ21hcmdpblJpZ2h0J11cbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0RGltZW5zaW9uVmFsdWUoZGltZW5zaW9uLCBlbGVtKSB7XG4gIGNvbnN0IG9mZnNldCA9IGBvZmZzZXQke2RpbWVuc2lvblswXS50b1VwcGVyQ2FzZSgpfSR7ZGltZW5zaW9uLnNsaWNlKDEpfWA7XG4gIGNvbnN0IHZhbHVlID0gZWxlbVtvZmZzZXRdO1xuICBjb25zdCBtYXJnaW5zID0gTUFSR0lOU1tkaW1lbnNpb25dO1xuICByZXR1cm4gdmFsdWUgK1xuICAvLyBAdHMtaWdub3JlXG4gIHBhcnNlSW50KGNzcyhlbGVtLCBtYXJnaW5zWzBdKSwgMTApICtcbiAgLy8gQHRzLWlnbm9yZVxuICBwYXJzZUludChjc3MoZWxlbSwgbWFyZ2luc1sxXSksIDEwKTtcbn1cbmNvbnN0IGNvbGxhcHNlU3R5bGVzID0ge1xuICBbRVhJVEVEXTogJ2NvbGxhcHNlJyxcbiAgW0VYSVRJTkddOiAnY29sbGFwc2luZycsXG4gIFtFTlRFUklOR106ICdjb2xsYXBzaW5nJyxcbiAgW0VOVEVSRURdOiAnY29sbGFwc2Ugc2hvdydcbn07XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGluOiBmYWxzZSxcbiAgdGltZW91dDogMzAwLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZSxcbiAgZ2V0RGltZW5zaW9uVmFsdWU6IGdldERlZmF1bHREaW1lbnNpb25WYWx1ZVxufTtcbmNvbnN0IENvbGxhcHNlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgb25FbnRlcixcbiAgb25FbnRlcmluZyxcbiAgb25FbnRlcmVkLFxuICBvbkV4aXQsXG4gIG9uRXhpdGluZyxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgZGltZW5zaW9uID0gJ2hlaWdodCcsXG4gIGdldERpbWVuc2lvblZhbHVlID0gZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIENvbXB1dGUgZGltZW5zaW9uICovXG4gIGNvbnN0IGNvbXB1dGVkRGltZW5zaW9uID0gdHlwZW9mIGRpbWVuc2lvbiA9PT0gJ2Z1bmN0aW9uJyA/IGRpbWVuc2lvbigpIDogZGltZW5zaW9uO1xuXG4gIC8qIC0tIEV4cGFuZGluZyAtLSAqL1xuICBjb25zdCBoYW5kbGVFbnRlciA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gJzAnO1xuICB9LCBvbkVudGVyKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsID0gYHNjcm9sbCR7Y29tcHV0ZWREaW1lbnNpb25bMF0udG9VcHBlckNhc2UoKX0ke2NvbXB1dGVkRGltZW5zaW9uLnNsaWNlKDEpfWA7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBgJHtlbGVtW3Njcm9sbF19cHhgO1xuICB9LCBvbkVudGVyaW5nKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyaW5nXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyZWQgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9IG51bGw7XG4gIH0sIG9uRW50ZXJlZCksIFtjb21wdXRlZERpbWVuc2lvbiwgb25FbnRlcmVkXSk7XG5cbiAgLyogLS0gQ29sbGFwc2luZyAtLSAqL1xuICBjb25zdCBoYW5kbGVFeGl0ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBgJHtnZXREaW1lbnNpb25WYWx1ZShjb21wdXRlZERpbWVuc2lvbiwgZWxlbSl9cHhgO1xuICAgIHRyaWdnZXJCcm93c2VyUmVmbG93KGVsZW0pO1xuICB9LCBvbkV4aXQpLCBbb25FeGl0LCBnZXREaW1lbnNpb25WYWx1ZSwgY29tcHV0ZWREaW1lbnNpb25dKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gbnVsbDtcbiAgfSwgb25FeGl0aW5nKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkV4aXRpbmddKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25XcmFwcGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgYWRkRW5kTGlzdGVuZXI6IHRyYW5zaXRpb25FbmRMaXN0ZW5lcixcbiAgICAuLi5wcm9wcyxcbiAgICBcImFyaWEtZXhwYW5kZWRcIjogcHJvcHMucm9sZSA/IHByb3BzLmluIDogbnVsbCxcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyaW5nOiBoYW5kbGVFbnRlcmluZyxcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBjaGlsZFJlZjogY2hpbGRyZW4ucmVmLFxuICAgIGNoaWxkcmVuOiAoc3RhdGUsIGlubmVyUHJvcHMpID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIC4uLmlubmVyUHJvcHMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsIGNvbGxhcHNlU3R5bGVzW3N0YXRlXSwgY29tcHV0ZWREaW1lbnNpb24gPT09ICd3aWR0aCcgJiYgJ2NvbGxhcHNlLWhvcml6b250YWwnKVxuICAgIH0pXG4gIH0pO1xufSk7XG5cbi8vIEB0cy1pZ25vcmVcblxuLy8gQHRzLWlnbm9yZVxuQ29sbGFwc2UuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQ29sbGFwc2U7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb2xsYXBzZSBmcm9tICcuL0NvbGxhcHNlJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhckNvbGxhcHNlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgY2hpbGRyZW4sXG4gIGJzUHJlZml4LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2YmFyLWNvbGxhcHNlJyk7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29sbGFwc2UsIHtcbiAgICBpbjogISEoY29udGV4dCAmJiBjb250ZXh0LmV4cGFuZGVkKSxcbiAgICAuLi5wcm9wcyxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgcmVmOiByZWYsXG4gICAgICBjbGFzc05hbWU6IGJzUHJlZml4LFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdmJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gJ05hdmJhckNvbGxhcHNlJztcbmV4cG9ydCBkZWZhdWx0IE5hdmJhckNvbGxhcHNlOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBsYWJlbDogJ1RvZ2dsZSBuYXZpZ2F0aW9uJ1xufTtcbmNvbnN0IE5hdmJhclRvZ2dsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBsYWJlbCxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gJ2J1dHRvbicsXG4gIG9uQ2xpY2ssXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXZiYXItdG9nZ2xlcicpO1xuICBjb25zdCB7XG4gICAgb25Ub2dnbGUsXG4gICAgZXhwYW5kZWRcbiAgfSA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCkgfHwge307XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAob25DbGljaykgb25DbGljayhlKTtcbiAgICBpZiAob25Ub2dnbGUpIG9uVG9nZ2xlKCk7XG4gIH0pO1xuICBpZiAoQ29tcG9uZW50ID09PSAnYnV0dG9uJykge1xuICAgIHByb3BzLnR5cGUgPSAnYnV0dG9uJztcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgXCJhcmlhLWxhYmVsXCI6IGxhYmVsLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4LCAhZXhwYW5kZWQgJiYgJ2NvbGxhcHNlZCcpLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCAvKiNfX1BVUkVfXyovX2pzeChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBgJHtic1ByZWZpeH0taWNvbmBcbiAgICB9KVxuICB9KTtcbn0pO1xuTmF2YmFyVG9nZ2xlLmRpc3BsYXlOYW1lID0gJ05hdmJhclRvZ2dsZSc7XG5OYXZiYXJUb2dnbGUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyVG9nZ2xlOyIsImltcG9ydCB1c2VFZmZlY3QgZnJvbSAnLi91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xudmFyIG1hdGNoZXJzQnlXaW5kb3cgPSBuZXcgV2Vha01hcCgpO1xuXG52YXIgZ2V0TWF0Y2hlciA9IGZ1bmN0aW9uIGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdykge1xuICBpZiAoIXF1ZXJ5IHx8ICF0YXJnZXRXaW5kb3cpIHJldHVybiB1bmRlZmluZWQ7XG4gIHZhciBtYXRjaGVycyA9IG1hdGNoZXJzQnlXaW5kb3cuZ2V0KHRhcmdldFdpbmRvdykgfHwgbmV3IE1hcCgpO1xuICBtYXRjaGVyc0J5V2luZG93LnNldCh0YXJnZXRXaW5kb3csIG1hdGNoZXJzKTtcbiAgdmFyIG1xbCA9IG1hdGNoZXJzLmdldChxdWVyeSk7XG5cbiAgaWYgKCFtcWwpIHtcbiAgICBtcWwgPSB0YXJnZXRXaW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgbXFsLnJlZkNvdW50ID0gMDtcbiAgICBtYXRjaGVycy5zZXQobXFsLm1lZGlhLCBtcWwpO1xuICB9XG5cbiAgcmV0dXJuIG1xbDtcbn07XG4vKipcbiAqIE1hdGNoIGEgbWVkaWEgcXVlcnkgYW5kIGdldCB1cGRhdGVzIGFzIHRoZSBtYXRjaCBjaGFuZ2VzLiBUaGUgbWVkaWEgc3RyaW5nIGlzXG4gKiBwYXNzZWQgZGlyZWN0bHkgdG8gYHdpbmRvdy5tYXRjaE1lZGlhYCBhbmQgcnVuIGFzIGEgTGF5b3V0IEVmZmVjdCwgc28gaW5pdGlhbFxuICogbWF0Y2hlcyBhcmUgcmV0dXJuZWQgYmVmb3JlIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludC5cbiAqXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgIGNvbnN0IGlzV2lkZSA9IHVzZU1lZGlhUXVlcnkoJ21pbi13aWR0aDogMTAwMHB4JylcbiAqXG4gKiAgIHJldHVybiBpc1dpZGUgPyBcInZlcnkgd2lkZVwiIDogJ25vdCBzbyB3aWRlJ1xuICogfVxuICogYGBgXG4gKlxuICogTWVkaWEgcXVlcnkgbGlzdHMgYXJlIGFsc28gcmV1c2VkIGdsb2JhbGx5LCBob29rIGNhbGxzIGZvciB0aGUgc2FtZSBxdWVyeVxuICogd2lsbCBvbmx5IGNyZWF0ZSBhIG1hdGNoZXIgb25jZSB1bmRlciB0aGUgaG9vZC5cbiAqXG4gKiBAcGFyYW0gcXVlcnkgQSBtZWRpYSBxdWVyeVxuICogQHBhcmFtIHRhcmdldFdpbmRvdyBUaGUgd2luZG93IHRvIG1hdGNoIGFnYWluc3QsIHVzZXMgdGhlIGdsb2JhbGx5IGF2YWlsYWJsZSBvbmUgYXMgYSBkZWZhdWx0LlxuICovXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeSwgdGFyZ2V0V2luZG93KSB7XG4gIGlmICh0YXJnZXRXaW5kb3cgPT09IHZvaWQgMCkge1xuICAgIHRhcmdldFdpbmRvdyA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogd2luZG93O1xuICB9XG5cbiAgdmFyIG1xbCA9IGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdyk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbXFsID8gbXFsLm1hdGNoZXMgOiBmYWxzZTtcbiAgfSksXG4gICAgICBtYXRjaGVzID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0TWF0Y2hlcyA9IF91c2VTdGF0ZVsxXTtcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBtcWwgPSBnZXRNYXRjaGVyKHF1ZXJ5LCB0YXJnZXRXaW5kb3cpO1xuXG4gICAgaWYgKCFtcWwpIHtcbiAgICAgIHJldHVybiBzZXRNYXRjaGVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2hlcnMgPSBtYXRjaGVyc0J5V2luZG93LmdldCh0YXJnZXRXaW5kb3cpO1xuXG4gICAgdmFyIGhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZSgpIHtcbiAgICAgIHNldE1hdGNoZXMobXFsLm1hdGNoZXMpO1xuICAgIH07XG5cbiAgICBtcWwucmVmQ291bnQrKztcbiAgICBtcWwuYWRkTGlzdGVuZXIoaGFuZGxlQ2hhbmdlKTtcbiAgICBoYW5kbGVDaGFuZ2UoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbXFsLnJlbW92ZUxpc3RlbmVyKGhhbmRsZUNoYW5nZSk7XG4gICAgICBtcWwucmVmQ291bnQtLTtcblxuICAgICAgaWYgKG1xbC5yZWZDb3VudCA8PSAwKSB7XG4gICAgICAgIG1hdGNoZXJzID09IG51bGwgPyB2b2lkIDAgOiBtYXRjaGVycy5kZWxldGUobXFsLm1lZGlhKTtcbiAgICAgIH1cblxuICAgICAgbXFsID0gdW5kZWZpbmVkO1xuICAgIH07XG4gIH0sIFtxdWVyeV0pO1xuICByZXR1cm4gbWF0Y2hlcztcbn0iLCJpbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBDcmVhdGUgYSByZXNwb25zaXZlIGhvb2sgd2UgYSBzZXQgb2YgYnJlYWtwb2ludCBuYW1lcyBhbmQgd2lkdGhzLlxuICogWW91IGNhbiB1c2UgYW55IHZhbGlkIGNzcyB1bml0cyBhcyB3ZWxsIGFzIGEgbnVtYmVycyAoZm9yIHBpeGVscykuXG4gKlxuICogKipOT1RFOioqIFRoZSBvYmplY3Qga2V5IG9yZGVyIGlzIGltcG9ydGFudCEgaXQncyBhc3N1bWVkIHRvIGJlIGluIG9yZGVyIGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdFxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCB1c2VCcmVha3BvaW50ID0gY3JlYXRlQnJlYWtwb2ludEhvb2soe1xuICogIHhzOiAwLFxuICogIHNtOiA1NzYsXG4gKiAgbWQ6IDc2OCxcbiAqICBsZzogOTkyLFxuICogIHhsOiAxMjAwLFxuICogfSlcbiAqIGBgYFxuICpcbiAqICoqV2F0Y2ggb3V0ISoqIHVzaW5nIHN0cmluZyB2YWx1ZXMgd2lsbCBzb21ldGltZXMgY29uc3RydWN0IG1lZGlhIHF1ZXJpZXMgdXNpbmcgY3NzIGBjYWxjKClgIHdoaWNoXG4gKiBpcyBOT1Qgc3VwcG9ydGVkIGluIG1lZGlhIHF1ZXJpZXMgYnkgYWxsIGJyb3dzZXJzIGF0IHRoZSBtb21lbnQuIHVzZSBudW1iZXJzIGZvclxuICogdGhlIHdpZGVzdCByYW5nZSBvZiBicm93c2VyIHN1cHBvcnQuXG4gKlxuICogQHBhcmFtIGJyZWFrcG9pbnRWYWx1ZXMgQSBvYmplY3QgaGFzaCBvZiBuYW1lcyB0byBicmVha3BvaW50IGRpbWVuc2lvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJyZWFrcG9pbnRIb29rKGJyZWFrcG9pbnRWYWx1ZXMpIHtcbiAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludFZhbHVlcyk7XG5cbiAgZnVuY3Rpb24gYW5kKHF1ZXJ5LCBuZXh0KSB7XG4gICAgaWYgKHF1ZXJ5ID09PSBuZXh0KSB7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnkgPyBxdWVyeSArIFwiIGFuZCBcIiArIG5leHQgOiBuZXh0O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmV4dChicmVha3BvaW50KSB7XG4gICAgcmV0dXJuIG5hbWVzW01hdGgubWluKG5hbWVzLmluZGV4T2YoYnJlYWtwb2ludCkgKyAxLCBuYW1lcy5sZW5ndGggLSAxKV07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNYXhRdWVyeShicmVha3BvaW50KSB7XG4gICAgdmFyIG5leHQgPSBnZXROZXh0KGJyZWFrcG9pbnQpO1xuICAgIHZhciB2YWx1ZSA9IGJyZWFrcG9pbnRWYWx1ZXNbbmV4dF07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHZhbHVlID0gdmFsdWUgLSAwLjIgKyBcInB4XCI7ZWxzZSB2YWx1ZSA9IFwiY2FsYyhcIiArIHZhbHVlICsgXCIgLSAwLjJweClcIjtcbiAgICByZXR1cm4gXCIobWF4LXdpZHRoOiBcIiArIHZhbHVlICsgXCIpXCI7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNaW5RdWVyeShicmVha3BvaW50KSB7XG4gICAgdmFyIHZhbHVlID0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlICsgXCJweFwiO1xuICAgIH1cblxuICAgIHJldHVybiBcIihtaW4td2lkdGg6IFwiICsgdmFsdWUgKyBcIilcIjtcbiAgfVxuICAvKipcbiAgICogTWF0Y2ggYSBzZXQgb2YgYnJlYWtwb2ludHNcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGNvbnN0IE1pZFNpemVPbmx5ID0gKCkgPT4ge1xuICAgKiAgIGNvbnN0IGlzTWlkID0gdXNlQnJlYWtwb2ludCh7IGxnOiAnZG93bicsIHNtOiAndXAnIH0pO1xuICAgKlxuICAgKiAgIGlmIChpc01pZCkgcmV0dXJuIDxkaXY+T24gYSBSZWFzb25hYmxlIHNpemVkIFNjcmVlbiE8L2Rpdj5cbiAgICogICByZXR1cm4gbnVsbDtcbiAgICogfVxuICAgKiBgYGBcbiAgICogQHBhcmFtIGJyZWFrcG9pbnRNYXAgQW4gb2JqZWN0IG1hcCBvZiBicmVha3BvaW50cyBhbmQgZGlyZWN0aW9ucywgcXVlcmllcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgXCJhbmRcIiB0byBqb2luXG4gICAqIGJyZWFrcG9pbnRzIHRvZ2V0aGVyXG4gICAqIEBwYXJhbSB3aW5kb3cgT3B0aW9uYWxseSBzcGVjaWZ5IHRoZSB0YXJnZXQgd2luZG93IHRvIG1hdGNoIGFnYWluc3QgKHVzZWZ1bCB3aGVuIHJlbmRlcmluZyBpbnRvIGlmcmFtZXMpXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gdXNlQnJlYWtwb2ludChicmVha3BvaW50T3JNYXAsIGRpcmVjdGlvbiwgd2luZG93KSB7XG4gICAgdmFyIGJyZWFrcG9pbnRNYXA7XG5cbiAgICBpZiAodHlwZW9mIGJyZWFrcG9pbnRPck1hcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGJyZWFrcG9pbnRNYXAgPSBicmVha3BvaW50T3JNYXA7XG4gICAgICB3aW5kb3cgPSBkaXJlY3Rpb247XG4gICAgICBkaXJlY3Rpb24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2JyZWFrcG9pbnRNYXA7XG5cbiAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCB0cnVlO1xuICAgICAgYnJlYWtwb2ludE1hcCA9IChfYnJlYWtwb2ludE1hcCA9IHt9LCBfYnJlYWtwb2ludE1hcFticmVha3BvaW50T3JNYXBdID0gZGlyZWN0aW9uLCBfYnJlYWtwb2ludE1hcCk7XG4gICAgfVxuXG4gICAgdmFyIHF1ZXJ5ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnJlYWtwb2ludE1hcCkucmVkdWNlKGZ1bmN0aW9uIChxdWVyeSwgX3JlZikge1xuICAgICAgICB2YXIga2V5ID0gX3JlZlswXSxcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF9yZWZbMV07XG5cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJyB8fCBkaXJlY3Rpb24gPT09IHRydWUpIHtcbiAgICAgICAgICBxdWVyeSA9IGFuZChxdWVyeSwgZ2V0TWluUXVlcnkoa2V5KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicgfHwgZGlyZWN0aW9uID09PSB0cnVlKSB7XG4gICAgICAgICAgcXVlcnkgPSBhbmQocXVlcnksIGdldE1heFF1ZXJ5KGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfSwgJycpO1xuICAgIH0sIFtKU09OLnN0cmluZ2lmeShicmVha3BvaW50TWFwKV0pO1xuICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5LCB3aW5kb3cpO1xuICB9XG5cbiAgcmV0dXJuIHVzZUJyZWFrcG9pbnQ7XG59XG52YXIgdXNlQnJlYWtwb2ludCA9IGNyZWF0ZUJyZWFrcG9pbnRIb29rKHtcbiAgeHM6IDAsXG4gIHNtOiA1NzYsXG4gIG1kOiA3NjgsXG4gIGxnOiA5OTIsXG4gIHhsOiAxMjAwLFxuICB4eGw6IDE0MDBcbn0pO1xuZXhwb3J0IGRlZmF1bHQgdXNlQnJlYWtwb2ludDsiLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBhY3RpdmVseSBmb2N1c2VkIGVsZW1lbnQgc2FmZWx5LlxuICpcbiAqIEBwYXJhbSBkb2MgdGhlIGRvY3VtZW50IHRvIGNoZWNrXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWN0aXZlRWxlbWVudChkb2MpIHtcbiAgaWYgKGRvYyA9PT0gdm9pZCAwKSB7XG4gICAgZG9jID0gb3duZXJEb2N1bWVudCgpO1xuICB9XG5cbiAgLy8gU3VwcG9ydDogSUUgOSBvbmx5XG4gIC8vIElFOSB0aHJvd3MgYW4gXCJVbnNwZWNpZmllZCBlcnJvclwiIGFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGZyb20gYW4gPGlmcmFtZT5cbiAgdHJ5IHtcbiAgICB2YXIgYWN0aXZlID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IC8vIElFMTEgcmV0dXJucyBhIHNlZW1pbmdseSBlbXB0eSBvYmplY3QgaW4gc29tZSBjYXNlcyB3aGVuIGFjY2Vzc2luZ1xuICAgIC8vIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgZnJvbSBhbiA8aWZyYW1lPlxuXG4gICAgaWYgKCFhY3RpdmUgfHwgIWFjdGl2ZS5ub2RlTmFtZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGFjdGl2ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8qIGllIHRocm93cyBpZiBubyBhY3RpdmUgZWxlbWVudCAqL1xuICAgIHJldHVybiBkb2MuYm9keTtcbiAgfVxufSIsImltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBnZXRCb2R5U2Nyb2xsYmFyV2lkdGggZnJvbSAnLi9nZXRTY3JvbGxiYXJXaWR0aCc7XG5leHBvcnQgY29uc3QgT1BFTl9EQVRBX0FUVFJJQlVURSA9IGRhdGFBdHRyKCdtb2RhbC1vcGVuJyk7XG5cbi8qKlxuICogTWFuYWdlcyBhIHN0YWNrIG9mIE1vZGFscyBhcyB3ZWxsIGFzIGVuc3VyaW5nXG4gKiBib2R5IHNjcm9sbGluZyBpcyBpcyBkaXNhYmxlZCBhbmQgcGFkZGluZyBhY2NvdW50ZWQgZm9yXG4gKi9cbmNsYXNzIE1vZGFsTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBvd25lckRvY3VtZW50LFxuICAgIGhhbmRsZUNvbnRhaW5lck92ZXJmbG93ID0gdHJ1ZSxcbiAgICBpc1JUTCA9IGZhbHNlXG4gIH0gPSB7fSkge1xuICAgIHRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cgPSBoYW5kbGVDb250YWluZXJPdmVyZmxvdztcbiAgICB0aGlzLmlzUlRMID0gaXNSVEw7XG4gICAgdGhpcy5tb2RhbHMgPSBbXTtcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50O1xuICB9XG4gIGdldFNjcm9sbGJhcldpZHRoKCkge1xuICAgIHJldHVybiBnZXRCb2R5U2Nyb2xsYmFyV2lkdGgodGhpcy5vd25lckRvY3VtZW50KTtcbiAgfVxuICBnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiAodGhpcy5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KS5ib2R5O1xuICB9XG4gIHNldE1vZGFsQXR0cmlidXRlcyhfbW9kYWwpIHtcbiAgICAvLyBGb3Igb3ZlcnJpZGluZ1xuICB9XG4gIHJlbW92ZU1vZGFsQXR0cmlidXRlcyhfbW9kYWwpIHtcbiAgICAvLyBGb3Igb3ZlcnJpZGluZ1xuICB9XG4gIHNldENvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICB9O1xuXG4gICAgLy8gd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgYWN0dWFsIGBzdHlsZWAgaGVyZVxuICAgIC8vIGJlY2F1c2Ugd2Ugd2lsbCBvdmVycmlkZSBpdFxuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gdGhpcy5pc1JUTCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICBjb250YWluZXJTdGF0ZS5zdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93OiBjb250YWluZXIuc3R5bGUub3ZlcmZsb3csXG4gICAgICBbcGFkZGluZ1Byb3BdOiBjb250YWluZXIuc3R5bGVbcGFkZGluZ1Byb3BdXG4gICAgfTtcbiAgICBpZiAoY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpIHtcbiAgICAgIC8vIHVzZSBjb21wdXRlZCBzdHlsZSwgaGVyZSB0byBnZXQgdGhlIHJlYWwgcGFkZGluZ1xuICAgICAgLy8gdG8gYWRkIG91ciBzY3JvbGxiYXIgd2lkdGhcbiAgICAgIHN0eWxlW3BhZGRpbmdQcm9wXSA9IGAke3BhcnNlSW50KGNzcyhjb250YWluZXIsIHBhZGRpbmdQcm9wKSB8fCAnMCcsIDEwKSArIGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRofXB4YDtcbiAgICB9XG4gICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZShPUEVOX0RBVEFfQVRUUklCVVRFLCAnJyk7XG4gICAgY3NzKGNvbnRhaW5lciwgc3R5bGUpO1xuICB9XG4gIHJlc2V0KCkge1xuICAgIFsuLi50aGlzLm1vZGFsc10uZm9yRWFjaChtID0+IHRoaXMucmVtb3ZlKG0pKTtcbiAgfVxuICByZW1vdmVDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIGNvbnRhaW5lci5yZW1vdmVBdHRyaWJ1dGUoT1BFTl9EQVRBX0FUVFJJQlVURSk7XG4gICAgT2JqZWN0LmFzc2lnbihjb250YWluZXIuc3R5bGUsIGNvbnRhaW5lclN0YXRlLnN0eWxlKTtcbiAgfVxuICBhZGQobW9kYWwpIHtcbiAgICBsZXQgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggIT09IC0xKSB7XG4gICAgICByZXR1cm4gbW9kYWxJZHg7XG4gICAgfVxuICAgIG1vZGFsSWR4ID0gdGhpcy5tb2RhbHMubGVuZ3RoO1xuICAgIHRoaXMubW9kYWxzLnB1c2gobW9kYWwpO1xuICAgIHRoaXMuc2V0TW9kYWxBdHRyaWJ1dGVzKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggIT09IDApIHtcbiAgICAgIHJldHVybiBtb2RhbElkeDtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNjcm9sbEJhcldpZHRoOiB0aGlzLmdldFNjcm9sbGJhcldpZHRoKCksXG4gICAgICBzdHlsZToge31cbiAgICB9O1xuICAgIGlmICh0aGlzLmhhbmRsZUNvbnRhaW5lck92ZXJmbG93KSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lclN0eWxlKHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxJZHg7XG4gIH1cbiAgcmVtb3ZlKG1vZGFsKSB7XG4gICAgY29uc3QgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubW9kYWxzLnNwbGljZShtb2RhbElkeCwgMSk7XG5cbiAgICAvLyBpZiB0aGF0IHdhcyB0aGUgbGFzdCBtb2RhbCBpbiBhIGNvbnRhaW5lcixcbiAgICAvLyBjbGVhbiB1cCB0aGUgY29udGFpbmVyXG4gICAgaWYgKCF0aGlzLm1vZGFscy5sZW5ndGggJiYgdGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdykge1xuICAgICAgdGhpcy5yZW1vdmVDb250YWluZXJTdHlsZSh0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVNb2RhbEF0dHJpYnV0ZXMobW9kYWwpO1xuICB9XG4gIGlzVG9wTW9kYWwobW9kYWwpIHtcbiAgICByZXR1cm4gISF0aGlzLm1vZGFscy5sZW5ndGggJiYgdGhpcy5tb2RhbHNbdGhpcy5tb2RhbHMubGVuZ3RoIC0gMV0gPT09IG1vZGFsO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBNb2RhbE1hbmFnZXI7IiwiLyoqXG4gKiBHZXQgdGhlIHdpZHRoIG9mIHRoZSB2ZXJ0aWNhbCB3aW5kb3cgc2Nyb2xsYmFyIGlmIGl0J3MgdmlzaWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb2R5U2Nyb2xsYmFyV2lkdGgob3duZXJEb2N1bWVudCA9IGRvY3VtZW50KSB7XG4gIGNvbnN0IHdpbmRvdyA9IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIHJldHVybiBNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIG93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKTtcbn0iLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICdkb20taGVscGVycy9vd25lckRvY3VtZW50JztcbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnZG9tLWhlbHBlcnMvY2FuVXNlRE9NJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlV2luZG93IGZyb20gJy4vdXNlV2luZG93JztcbmV4cG9ydCBjb25zdCByZXNvbHZlQ29udGFpbmVyUmVmID0gKHJlZiwgZG9jdW1lbnQpID0+IHtcbiAgaWYgKCFjYW5Vc2VET00pIHJldHVybiBudWxsO1xuICBpZiAocmVmID09IG51bGwpIHJldHVybiAoZG9jdW1lbnQgfHwgb3duZXJEb2N1bWVudCgpKS5ib2R5O1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmID0gcmVmKCk7XG4gIGlmIChyZWYgJiYgJ2N1cnJlbnQnIGluIHJlZikgcmVmID0gcmVmLmN1cnJlbnQ7XG4gIGlmIChyZWYgJiYgKCdub2RlVHlwZScgaW4gcmVmIHx8IHJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QpKSByZXR1cm4gcmVmO1xuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXYWl0Rm9yRE9NUmVmKHJlZiwgb25SZXNvbHZlZCkge1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgW3Jlc29sdmVkUmVmLCBzZXRSZWZdID0gdXNlU3RhdGUoKCkgPT4gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYsIHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KSk7XG4gIGlmICghcmVzb2x2ZWRSZWYpIHtcbiAgICBjb25zdCBlYXJseVJlZiA9IHJlc29sdmVDb250YWluZXJSZWYocmVmKTtcbiAgICBpZiAoZWFybHlSZWYpIHNldFJlZihlYXJseVJlZik7XG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25SZXNvbHZlZCAmJiByZXNvbHZlZFJlZikge1xuICAgICAgb25SZXNvbHZlZChyZXNvbHZlZFJlZik7XG4gICAgfVxuICB9LCBbb25SZXNvbHZlZCwgcmVzb2x2ZWRSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXh0UmVmID0gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYpO1xuICAgIGlmIChuZXh0UmVmICE9PSByZXNvbHZlZFJlZikge1xuICAgICAgc2V0UmVmKG5leHRSZWYpO1xuICAgIH1cbiAgfSwgW3JlZiwgcmVzb2x2ZWRSZWZdKTtcbiAgcmV0dXJuIHJlc29sdmVkUmVmO1xufSIsImltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgeyBjbG9uZUVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuZnVuY3Rpb24gTm9vcFRyYW5zaXRpb24oe1xuICBjaGlsZHJlbixcbiAgaW46IGluUHJvcCxcbiAgb25FeGl0ZWQsXG4gIG1vdW50T25FbnRlcixcbiAgdW5tb3VudE9uRXhpdFxufSkge1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhc0VudGVyZWRSZWYgPSB1c2VSZWYoaW5Qcm9wKTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gdXNlRXZlbnRDYWxsYmFjayhvbkV4aXRlZCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluUHJvcCkgaGFzRW50ZXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtlbHNlIHtcbiAgICAgIGhhbmRsZUV4aXRlZChyZWYuY3VycmVudCk7XG4gICAgfVxuICB9LCBbaW5Qcm9wLCBoYW5kbGVFeGl0ZWRdKTtcbiAgY29uc3QgY29tYmluZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgY2hpbGRyZW4ucmVmKTtcbiAgY29uc3QgY2hpbGQgPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgcmVmOiBjb21iaW5lZFJlZlxuICB9KTtcbiAgaWYgKGluUHJvcCkgcmV0dXJuIGNoaWxkO1xuICBpZiAodW5tb3VudE9uRXhpdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghaGFzRW50ZXJlZFJlZi5jdXJyZW50ICYmIG1vdW50T25FbnRlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjaGlsZDtcbn1cbmV4cG9ydCBkZWZhdWx0IE5vb3BUcmFuc2l0aW9uOyIsImltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0VmZmVjdCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIGNsb25lRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTm9vcFRyYW5zaXRpb24gZnJvbSAnLi9Ob29wVHJhbnNpdGlvbic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oe1xuICBpbjogaW5Qcm9wLFxuICBvblRyYW5zaXRpb25cbn0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBpc0luaXRpYWxSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIGNvbnN0IGhhbmRsZVRyYW5zaXRpb24gPSB1c2VFdmVudENhbGxiYWNrKG9uVHJhbnNpdGlvbik7XG4gIHVzZUlzb21vcnBoaWNFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBzdGFsZSA9IGZhbHNlO1xuICAgIGhhbmRsZVRyYW5zaXRpb24oe1xuICAgICAgaW46IGluUHJvcCxcbiAgICAgIGVsZW1lbnQ6IHJlZi5jdXJyZW50LFxuICAgICAgaW5pdGlhbDogaXNJbml0aWFsUmVmLmN1cnJlbnQsXG4gICAgICBpc1N0YWxlOiAoKSA9PiBzdGFsZVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdGFsZSA9IHRydWU7XG4gICAgfTtcbiAgfSwgW2luUHJvcCwgaGFuZGxlVHJhbnNpdGlvbl0pO1xuICB1c2VJc29tb3JwaGljRWZmZWN0KCgpID0+IHtcbiAgICBpc0luaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIC8vIHRoaXMgaXMgZm9yIHN0cmljdCBtb2RlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzSW5pdGlhbFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiByZWY7XG59XG4vKipcbiAqIEFkYXB0cyBhbiBpbXBlcmF0aXZlIHRyYW5zaXRpb24gZnVuY3Rpb24gdG8gYSBzdWJzZXQgb2YgdGhlIFJURyBgPFRyYW5zaXRpb24+YCBjb21wb25lbnQgQVBJLlxuICpcbiAqIEltcGVyYXRpdmVUcmFuc2l0aW9uIGRvZXMgbm90IHN1cHBvcnQgbW91bnRpbmcgb3B0aW9ucyBvciBgYXBwZWFyYCBhdCB0aGUgbW9tZW50LCBtZWFuaW5nXG4gKiB0aGF0IGl0IGFsd2F5cyBhY3RzIGxpa2U6IGBtb3VudE9uRW50ZXI9e3RydWV9IHVubW91bnRPbkV4aXQ9e3RydWV9IGFwcGVhcj17dHJ1ZX1gXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEltcGVyYXRpdmVUcmFuc2l0aW9uKHtcbiAgY2hpbGRyZW4sXG4gIGluOiBpblByb3AsXG4gIG9uRXhpdGVkLFxuICBvbkVudGVyZWQsXG4gIHRyYW5zaXRpb25cbn0pIHtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IHVzZVN0YXRlKCFpblByb3ApO1xuXG4gIC8vIFRPRE86IEkgdGhpbmsgdGhpcyBuZWVkcyB0byBiZSBpbiBhbiBlZmZlY3RcbiAgaWYgKGluUHJvcCAmJiBleGl0ZWQpIHtcbiAgICBzZXRFeGl0ZWQoZmFsc2UpO1xuICB9XG4gIGNvbnN0IHJlZiA9IHVzZVRyYW5zaXRpb24oe1xuICAgIGluOiAhIWluUHJvcCxcbiAgICBvblRyYW5zaXRpb246IG9wdGlvbnMgPT4ge1xuICAgICAgY29uc3Qgb25GaW5pc2ggPSAoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zLmlzU3RhbGUoKSkgcmV0dXJuO1xuICAgICAgICBpZiAob3B0aW9ucy5pbikge1xuICAgICAgICAgIG9uRW50ZXJlZCA9PSBudWxsID8gdm9pZCAwIDogb25FbnRlcmVkKG9wdGlvbnMuZWxlbWVudCwgb3B0aW9ucy5pbml0aWFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRFeGl0ZWQodHJ1ZSk7XG4gICAgICAgICAgb25FeGl0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXhpdGVkKG9wdGlvbnMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBQcm9taXNlLnJlc29sdmUodHJhbnNpdGlvbihvcHRpb25zKSkudGhlbihvbkZpbmlzaCwgZXJyb3IgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMuaW4pIHNldEV4aXRlZCh0cnVlKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjb21iaW5lZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBjaGlsZHJlbi5yZWYpO1xuICByZXR1cm4gZXhpdGVkICYmICFpblByb3AgPyBudWxsIDogLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgIHJlZjogY29tYmluZWRSZWZcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVHJhbnNpdGlvbihDb21wb25lbnQsIHJ1blRyYW5zaXRpb24sIHByb3BzKSB7XG4gIGlmIChDb21wb25lbnQpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcykpO1xuICB9XG4gIGlmIChydW5UcmFuc2l0aW9uKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEltcGVyYXRpdmVUcmFuc2l0aW9uLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdHJhbnNpdGlvbjogcnVuVHJhbnNpdGlvblxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTm9vcFRyYW5zaXRpb24sIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wic2hvd1wiLCBcInJvbGVcIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcImNoaWxkcmVuXCIsIFwiYmFja2Ryb3BcIiwgXCJrZXlib2FyZFwiLCBcIm9uQmFja2Ryb3BDbGlja1wiLCBcIm9uRXNjYXBlS2V5RG93blwiLCBcInRyYW5zaXRpb25cIiwgXCJydW5UcmFuc2l0aW9uXCIsIFwiYmFja2Ryb3BUcmFuc2l0aW9uXCIsIFwicnVuQmFja2Ryb3BUcmFuc2l0aW9uXCIsIFwiYXV0b0ZvY3VzXCIsIFwiZW5mb3JjZUZvY3VzXCIsIFwicmVzdG9yZUZvY3VzXCIsIFwicmVzdG9yZUZvY3VzT3B0aW9uc1wiLCBcInJlbmRlckRpYWxvZ1wiLCBcInJlbmRlckJhY2tkcm9wXCIsIFwibWFuYWdlclwiLCBcImNvbnRhaW5lclwiLCBcIm9uU2hvd1wiLCBcIm9uSGlkZVwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGVkXCIsIFwib25FeGl0aW5nXCIsIFwib25FbnRlclwiLCBcIm9uRW50ZXJpbmdcIiwgXCJvbkVudGVyZWRcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUsIHJlYWN0L3Byb3AtdHlwZXMgKi9cblxuaW1wb3J0IGFjdGl2ZUVsZW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvYWN0aXZlRWxlbWVudCc7XG5pbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnO1xuaW1wb3J0IGNhblVzZURPTSBmcm9tICdkb20taGVscGVycy9jYW5Vc2VET00nO1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZUltcGVyYXRpdmVIYW5kbGUsIGZvcndhcmRSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHVzZU1vdW50ZWQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTW91bnRlZCc7XG5pbXBvcnQgdXNlV2lsbFVubW91bnQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlV2lsbFVubW91bnQnO1xuaW1wb3J0IHVzZVByZXZpb3VzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVByZXZpb3VzJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IE1vZGFsTWFuYWdlciBmcm9tICcuL01vZGFsTWFuYWdlcic7XG5pbXBvcnQgdXNlV2FpdEZvckRPTVJlZiBmcm9tICcuL3VzZVdhaXRGb3JET01SZWYnO1xuaW1wb3J0IHVzZVdpbmRvdyBmcm9tICcuL3VzZVdpbmRvdyc7XG5pbXBvcnQgeyByZW5kZXJUcmFuc2l0aW9uIH0gZnJvbSAnLi9JbXBlcmF0aXZlVHJhbnNpdGlvbic7XG5pbXBvcnQgeyBpc0VzY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xubGV0IG1hbmFnZXI7XG5mdW5jdGlvbiBnZXRNYW5hZ2VyKHdpbmRvdykge1xuICBpZiAoIW1hbmFnZXIpIG1hbmFnZXIgPSBuZXcgTW9kYWxNYW5hZ2VyKHtcbiAgICBvd25lckRvY3VtZW50OiB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudFxuICB9KTtcbiAgcmV0dXJuIG1hbmFnZXI7XG59XG5mdW5jdGlvbiB1c2VNb2RhbE1hbmFnZXIocHJvdmlkZWQpIHtcbiAgY29uc3Qgd2luZG93ID0gdXNlV2luZG93KCk7XG4gIGNvbnN0IG1vZGFsTWFuYWdlciA9IHByb3ZpZGVkIHx8IGdldE1hbmFnZXIod2luZG93KTtcbiAgY29uc3QgbW9kYWwgPSB1c2VSZWYoe1xuICAgIGRpYWxvZzogbnVsbCxcbiAgICBiYWNrZHJvcDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obW9kYWwuY3VycmVudCwge1xuICAgIGFkZDogKCkgPT4gbW9kYWxNYW5hZ2VyLmFkZChtb2RhbC5jdXJyZW50KSxcbiAgICByZW1vdmU6ICgpID0+IG1vZGFsTWFuYWdlci5yZW1vdmUobW9kYWwuY3VycmVudCksXG4gICAgaXNUb3BNb2RhbDogKCkgPT4gbW9kYWxNYW5hZ2VyLmlzVG9wTW9kYWwobW9kYWwuY3VycmVudCksXG4gICAgc2V0RGlhbG9nUmVmOiB1c2VDYWxsYmFjayhyZWYgPT4ge1xuICAgICAgbW9kYWwuY3VycmVudC5kaWFsb2cgPSByZWY7XG4gICAgfSwgW10pLFxuICAgIHNldEJhY2tkcm9wUmVmOiB1c2VDYWxsYmFjayhyZWYgPT4ge1xuICAgICAgbW9kYWwuY3VycmVudC5iYWNrZHJvcCA9IHJlZjtcbiAgICB9LCBbXSlcbiAgfSk7XG59XG5jb25zdCBNb2RhbCA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIHNob3cgPSBmYWxzZSxcbiAgICAgIHJvbGUgPSAnZGlhbG9nJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBiYWNrZHJvcCA9IHRydWUsXG4gICAgICBrZXlib2FyZCA9IHRydWUsXG4gICAgICBvbkJhY2tkcm9wQ2xpY2ssXG4gICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICB0cmFuc2l0aW9uLFxuICAgICAgcnVuVHJhbnNpdGlvbixcbiAgICAgIGJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgIHJ1bkJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgIGF1dG9Gb2N1cyA9IHRydWUsXG4gICAgICBlbmZvcmNlRm9jdXMgPSB0cnVlLFxuICAgICAgcmVzdG9yZUZvY3VzID0gdHJ1ZSxcbiAgICAgIHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gICAgICByZW5kZXJEaWFsb2csXG4gICAgICByZW5kZXJCYWNrZHJvcCA9IHByb3BzID0+IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSksXG4gICAgICBtYW5hZ2VyOiBwcm92aWRlZE1hbmFnZXIsXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclJlZixcbiAgICAgIG9uU2hvdyxcbiAgICAgIG9uSGlkZSA9ICgpID0+IHt9LFxuICAgICAgb25FeGl0LFxuICAgICAgb25FeGl0ZWQsXG4gICAgICBvbkV4aXRpbmcsXG4gICAgICBvbkVudGVyLFxuICAgICAgb25FbnRlcmluZyxcbiAgICAgIG9uRW50ZXJlZFxuICAgIH0gPSBfcmVmLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBjb250YWluZXIgPSB1c2VXYWl0Rm9yRE9NUmVmKGNvbnRhaW5lclJlZik7XG4gIGNvbnN0IG1vZGFsID0gdXNlTW9kYWxNYW5hZ2VyKHByb3ZpZGVkTWFuYWdlcik7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZU1vdW50ZWQoKTtcbiAgY29uc3QgcHJldlNob3cgPSB1c2VQcmV2aW91cyhzaG93KTtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IHVzZVN0YXRlKCFzaG93KTtcbiAgY29uc3QgbGFzdEZvY3VzUmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gbW9kYWwsIFttb2RhbF0pO1xuICBpZiAoY2FuVXNlRE9NICYmICFwcmV2U2hvdyAmJiBzaG93KSB7XG4gICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBhY3RpdmVFbGVtZW50KCk7XG4gIH1cblxuICAvLyBUT0RPOiBJIHRoaW5rIHRoaXMgbmVlZHMgdG8gYmUgaW4gYW4gZWZmZWN0XG4gIGlmIChzaG93ICYmIGV4aXRlZCkge1xuICAgIHNldEV4aXRlZChmYWxzZSk7XG4gIH1cbiAgY29uc3QgaGFuZGxlU2hvdyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG1vZGFsLmFkZCgpO1xuICAgIHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50ID0gbGlzdGVuKGRvY3VtZW50LCAna2V5ZG93bicsIGhhbmRsZURvY3VtZW50S2V5RG93bik7XG4gICAgcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50ID0gbGlzdGVuKGRvY3VtZW50LCAnZm9jdXMnLFxuICAgIC8vIHRoZSB0aW1lb3V0IGlzIG5lY2Vzc2FyeSBiL2MgdGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIG5ldyBtb2RhbCBpcyBtb3VudGVkXG4gICAgLy8gYW5kIHNvIHN0ZWFscyBmb2N1cyBmcm9tIGl0XG4gICAgKCkgPT4gc2V0VGltZW91dChoYW5kbGVFbmZvcmNlRm9jdXMpLCB0cnVlKTtcbiAgICBpZiAob25TaG93KSB7XG4gICAgICBvblNob3coKTtcbiAgICB9XG5cbiAgICAvLyBhdXRvZm9jdXMgYWZ0ZXIgb25TaG93IHRvIG5vdCB0cmlnZ2VyIGEgZm9jdXMgZXZlbnQgZm9yIHByZXZpb3VzXG4gICAgLy8gbW9kYWxzIGJlZm9yZSB0aGlzIG9uZSBpcyBzaG93bi5cbiAgICBpZiAoYXV0b0ZvY3VzKSB7XG4gICAgICBjb25zdCBjdXJyZW50QWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoZG9jdW1lbnQpO1xuICAgICAgaWYgKG1vZGFsLmRpYWxvZyAmJiBjdXJyZW50QWN0aXZlRWxlbWVudCAmJiAhY29udGFpbnMobW9kYWwuZGlhbG9nLCBjdXJyZW50QWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBjdXJyZW50QWN0aXZlRWxlbWVudDtcbiAgICAgICAgbW9kYWwuZGlhbG9nLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlSGlkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgIHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50ID09IG51bGwgPyB2b2lkIDAgOiByZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYuY3VycmVudCgpO1xuICAgIHJlbW92ZUZvY3VzTGlzdGVuZXJSZWYuY3VycmVudCA9PSBudWxsID8gdm9pZCAwIDogcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50KCk7XG4gICAgaWYgKHJlc3RvcmVGb2N1cykge1xuICAgICAgdmFyIF9sYXN0Rm9jdXNSZWYkY3VycmVudDtcbiAgICAgIC8vIFN1cHBvcnQ6IDw9SUUxMSBkb2Vzbid0IHN1cHBvcnQgYGZvY3VzKClgIG9uIHN2ZyBlbGVtZW50cyAoUkI6ICM5MTcpXG4gICAgICAoX2xhc3RGb2N1c1JlZiRjdXJyZW50ID0gbGFzdEZvY3VzUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbGFzdEZvY3VzUmVmJGN1cnJlbnQuZm9jdXMgPT0gbnVsbCA/IHZvaWQgMCA6IF9sYXN0Rm9jdXNSZWYkY3VycmVudC5mb2N1cyhyZXN0b3JlRm9jdXNPcHRpb25zKTtcbiAgICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRPRE86IHRyeSBhbmQgY29tYmluZSB0aGVzZSBlZmZlY3RzOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LW92ZXJsYXlzL3B1bGwvNzk0I2Rpc2N1c3Npb25fcjQwOTk1NDEyMFxuXG4gIC8vIFNob3cgbG9naWMgd2hlbjpcbiAgLy8gIC0gc2hvdyBpcyBgdHJ1ZWAgX2FuZF8gYGNvbnRhaW5lcmAgaGFzIHJlc29sdmVkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93IHx8ICFjb250YWluZXIpIHJldHVybjtcbiAgICBoYW5kbGVTaG93KCk7XG4gIH0sIFtzaG93LCBjb250YWluZXIsIC8qIHNob3VsZCBuZXZlciBjaGFuZ2U6ICovaGFuZGxlU2hvd10pO1xuXG4gIC8vIEhpZGUgY2xlYW51cCBsb2dpYyB3aGVuOlxuICAvLyAgLSBgZXhpdGVkYCBzd2l0Y2hlcyB0byB0cnVlXG4gIC8vICAtIGNvbXBvbmVudCB1bm1vdW50cztcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWV4aXRlZCkgcmV0dXJuO1xuICAgIGhhbmRsZUhpZGUoKTtcbiAgfSwgW2V4aXRlZCwgaGFuZGxlSGlkZV0pO1xuICB1c2VXaWxsVW5tb3VudCgoKSA9PiB7XG4gICAgaGFuZGxlSGlkZSgpO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbnN0IGhhbmRsZUVuZm9yY2VGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZW5mb3JjZUZvY3VzIHx8ICFpc01vdW50ZWQoKSB8fCAhbW9kYWwuaXNUb3BNb2RhbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudCgpO1xuICAgIGlmIChtb2RhbC5kaWFsb2cgJiYgY3VycmVudEFjdGl2ZUVsZW1lbnQgJiYgIWNvbnRhaW5zKG1vZGFsLmRpYWxvZywgY3VycmVudEFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICBtb2RhbC5kaWFsb2cuZm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkJhY2tkcm9wQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQmFja2Ryb3BDbGljayhlKTtcbiAgICBpZiAoYmFja2Ryb3AgPT09IHRydWUpIHtcbiAgICAgIG9uSGlkZSgpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZURvY3VtZW50S2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKGtleWJvYXJkICYmIGlzRXNjS2V5KGUpICYmIG1vZGFsLmlzVG9wTW9kYWwoKSkge1xuICAgICAgb25Fc2NhcGVLZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbkVzY2FwZUtleURvd24oZSk7XG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICBvbkhpZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCByZW1vdmVGb2N1c0xpc3RlbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBoYW5kbGVIaWRkZW4gPSAoLi4uYXJncykgPT4ge1xuICAgIHNldEV4aXRlZCh0cnVlKTtcbiAgICBvbkV4aXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25FeGl0ZWQoLi4uYXJncyk7XG4gIH07XG4gIGlmICghY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgZGlhbG9nUHJvcHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByb2xlLFxuICAgIHJlZjogbW9kYWwuc2V0RGlhbG9nUmVmLFxuICAgIC8vIGFwcGFyZW50bHkgb25seSB3b3JrcyBvbiB0aGUgZGlhbG9nIHJvbGUgZWxlbWVudFxuICAgICdhcmlhLW1vZGFsJzogcm9sZSA9PT0gJ2RpYWxvZycgPyB0cnVlIDogdW5kZWZpbmVkXG4gIH0sIHJlc3QsIHtcbiAgICBzdHlsZSxcbiAgICBjbGFzc05hbWUsXG4gICAgdGFiSW5kZXg6IC0xXG4gIH0pO1xuICBsZXQgZGlhbG9nID0gcmVuZGVyRGlhbG9nID8gcmVuZGVyRGlhbG9nKGRpYWxvZ1Byb3BzKSA6IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGRpYWxvZ1Byb3BzLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIHJvbGU6ICdkb2N1bWVudCdcbiAgICB9KVxuICB9KSk7XG4gIGRpYWxvZyA9IHJlbmRlclRyYW5zaXRpb24odHJhbnNpdGlvbiwgcnVuVHJhbnNpdGlvbiwge1xuICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgbW91bnRPbkVudGVyOiB0cnVlLFxuICAgIGFwcGVhcjogdHJ1ZSxcbiAgICBpbjogISFzaG93LFxuICAgIG9uRXhpdCxcbiAgICBvbkV4aXRpbmcsXG4gICAgb25FeGl0ZWQ6IGhhbmRsZUhpZGRlbixcbiAgICBvbkVudGVyLFxuICAgIG9uRW50ZXJpbmcsXG4gICAgb25FbnRlcmVkLFxuICAgIGNoaWxkcmVuOiBkaWFsb2dcbiAgfSk7XG4gIGxldCBiYWNrZHJvcEVsZW1lbnQgPSBudWxsO1xuICBpZiAoYmFja2Ryb3ApIHtcbiAgICBiYWNrZHJvcEVsZW1lbnQgPSByZW5kZXJCYWNrZHJvcCh7XG4gICAgICByZWY6IG1vZGFsLnNldEJhY2tkcm9wUmVmLFxuICAgICAgb25DbGljazogaGFuZGxlQmFja2Ryb3BDbGlja1xuICAgIH0pO1xuICAgIGJhY2tkcm9wRWxlbWVudCA9IHJlbmRlclRyYW5zaXRpb24oYmFja2Ryb3BUcmFuc2l0aW9uLCBydW5CYWNrZHJvcFRyYW5zaXRpb24sIHtcbiAgICAgIGluOiAhIXNob3csXG4gICAgICBhcHBlYXI6IHRydWUsXG4gICAgICBtb3VudE9uRW50ZXI6IHRydWUsXG4gICAgICB1bm1vdW50T25FeGl0OiB0cnVlLFxuICAgICAgY2hpbGRyZW46IGJhY2tkcm9wRWxlbWVudFxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbCggLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtiYWNrZHJvcEVsZW1lbnQsIGRpYWxvZ11cbiAgICB9KSwgY29udGFpbmVyKVxuICB9KTtcbn0pO1xuTW9kYWwuZGlzcGxheU5hbWUgPSAnTW9kYWwnO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihNb2RhbCwge1xuICBNYW5hZ2VyOiBNb2RhbE1hbmFnZXJcbn0pOyIsImltcG9ydCB1c2VVcGRhdGVkUmVmIGZyb20gJy4vdXNlVXBkYXRlZFJlZic7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEF0dGFjaCBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgd2hlbiBhIGNvbXBvbmVudCB1bm1vdW50c1xuICpcbiAqIEBwYXJhbSBmbiBIYW5kbGVyIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgdW5tb3VudHNcbiAqIEBjYXRlZ29yeSBlZmZlY3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV2lsbFVubW91bnQoZm4pIHtcbiAgdmFyIG9uVW5tb3VudCA9IHVzZVVwZGF0ZWRSZWYoZm4pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gb25Vbm1vdW50LmN1cnJlbnQoKTtcbiAgICB9O1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIGEgcmVmIHRoYXQgaXMgaW1tZWRpYXRlbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdmFsdWVcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIFJlZiB2YWx1ZVxuICogQGNhdGVnb3J5IHJlZnNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VVcGRhdGVkUmVmKHZhbHVlKSB7XG4gIHZhciB2YWx1ZVJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIHZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlUmVmO1xufSIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VzY0tleShlKSB7XG4gIHJldHVybiBlLmNvZGUgPT09ICdFc2NhcGUnIHx8IGUua2V5Q29kZSA9PT0gMjc7XG59IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ29mZmNhbnZhcy1ib2R5Jyk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBFTlRFUkVELCBFTlRFUklORywgRVhJVElORyB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZExpc3RlbmVyIGZyb20gJy4vdHJhbnNpdGlvbkVuZExpc3RlbmVyJztcbmltcG9ydCBUcmFuc2l0aW9uV3JhcHBlciBmcm9tICcuL1RyYW5zaXRpb25XcmFwcGVyJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlXG59O1xuY29uc3QgdHJhbnNpdGlvblN0eWxlcyA9IHtcbiAgW0VOVEVSSU5HXTogJ3Nob3cnLFxuICBbRU5URVJFRF06ICdzaG93J1xufTtcbmNvbnN0IE9mZmNhbnZhc1RvZ2dsaW5nID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdvZmZjYW52YXMnKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25XcmFwcGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgYWRkRW5kTGlzdGVuZXI6IHRyYW5zaXRpb25FbmRMaXN0ZW5lcixcbiAgICAuLi5wcm9wcyxcbiAgICBjaGlsZFJlZjogY2hpbGRyZW4ucmVmLFxuICAgIGNoaWxkcmVuOiAoc3RhdHVzLCBpbm5lclByb3BzKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAuLi5pbm5lclByb3BzLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVYSVRJTkcpICYmIGAke2JzUHJlZml4fS10b2dnbGluZ2AsIHRyYW5zaXRpb25TdHlsZXNbc3RhdHVzXSlcbiAgICB9KVxuICB9KTtcbn0pO1xuT2ZmY2FudmFzVG9nZ2xpbmcuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuT2ZmY2FudmFzVG9nZ2xpbmcuZGlzcGxheU5hbWUgPSAnT2ZmY2FudmFzVG9nZ2xpbmcnO1xuZXhwb3J0IGRlZmF1bHQgT2ZmY2FudmFzVG9nZ2xpbmc7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgTW9kYWxDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uSGlkZSgpIHt9XG59KTtcbmV4cG9ydCBkZWZhdWx0IE1vZGFsQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSAnLi9DbG9zZUJ1dHRvbic7XG5pbXBvcnQgTW9kYWxDb250ZXh0IGZyb20gJy4vTW9kYWxDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGNsb3NlTGFiZWw6ICdDbG9zZScsXG4gIGNsb3NlQnV0dG9uOiBmYWxzZVxufTtcbmNvbnN0IEFic3RyYWN0TW9kYWxIZWFkZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjbG9zZUxhYmVsLFxuICBjbG9zZVZhcmlhbnQsXG4gIGNsb3NlQnV0dG9uLFxuICBvbkhpZGUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dCk7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC5vbkhpZGUoKTtcbiAgICBvbkhpZGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uSGlkZSgpO1xuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgY2hpbGRyZW46IFtjaGlsZHJlbiwgY2xvc2VCdXR0b24gJiYgLyojX19QVVJFX18qL19qc3goQ2xvc2VCdXR0b24sIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBjbG9zZUxhYmVsLFxuICAgICAgdmFyaWFudDogY2xvc2VWYXJpYW50LFxuICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICB9KV1cbiAgfSk7XG59KTtcbkFic3RyYWN0TW9kYWxIZWFkZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQWJzdHJhY3RNb2RhbEhlYWRlcjsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgQWJzdHJhY3RNb2RhbEhlYWRlciBmcm9tICcuL0Fic3RyYWN0TW9kYWxIZWFkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgY2xvc2VMYWJlbDogJ0Nsb3NlJyxcbiAgY2xvc2VCdXR0b246IGZhbHNlXG59O1xuY29uc3QgT2ZmY2FudmFzSGVhZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ29mZmNhbnZhcy1oZWFkZXInKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEFic3RyYWN0TW9kYWxIZWFkZXIsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeClcbiAgfSk7XG59KTtcbk9mZmNhbnZhc0hlYWRlci5kaXNwbGF5TmFtZSA9ICdPZmZjYW52YXNIZWFkZXInO1xuT2ZmY2FudmFzSGVhZGVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE9mZmNhbnZhc0hlYWRlcjsiLCJpbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCBkaXZXaXRoQ2xhc3NOYW1lIGZyb20gJy4vZGl2V2l0aENsYXNzTmFtZSc7XG5jb25zdCBEaXZTdHlsZWRBc0g1ID0gZGl2V2l0aENsYXNzTmFtZSgnaDUnKTtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVdpdGhCc1ByZWZpeCgnb2ZmY2FudmFzLXRpdGxlJywge1xuICBDb21wb25lbnQ6IERpdlN0eWxlZEFzSDVcbn0pOyIsImZ1bmN0aW9uIHJlcGxhY2VDbGFzc05hbWUob3JpZ0NsYXNzLCBjbGFzc1RvUmVtb3ZlKSB7XG4gIHJldHVybiBvcmlnQ2xhc3MucmVwbGFjZShuZXcgUmVnRXhwKFwiKF58XFxcXHMpXCIgKyBjbGFzc1RvUmVtb3ZlICsgXCIoPzpcXFxcc3wkKVwiLCAnZycpLCAnJDEnKS5yZXBsYWNlKC9cXHMrL2csICcgJykucmVwbGFjZSgvXlxccyp8XFxzKiQvZywgJycpO1xufVxuLyoqXG4gKiBSZW1vdmVzIGEgQ1NTIGNsYXNzIGZyb20gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzIG5hbWVcbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSByZXBsYWNlQ2xhc3NOYW1lKGVsZW1lbnQuY2xhc3NOYW1lLCBjbGFzc05hbWUpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHJlcGxhY2VDbGFzc05hbWUoZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCAnJywgY2xhc3NOYW1lKSk7XG4gIH1cbn0iLCJpbXBvcnQgYWRkQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvYWRkQ2xhc3MnO1xuaW1wb3J0IGNzcyBmcm9tICdkb20taGVscGVycy9jc3MnO1xuaW1wb3J0IHFzYSBmcm9tICdkb20taGVscGVycy9xdWVyeVNlbGVjdG9yQWxsJztcbmltcG9ydCByZW1vdmVDbGFzcyBmcm9tICdkb20taGVscGVycy9yZW1vdmVDbGFzcyc7XG5pbXBvcnQgTW9kYWxNYW5hZ2VyIGZyb20gJ0ByZXN0YXJ0L3VpL01vZGFsTWFuYWdlcic7XG5jb25zdCBTZWxlY3RvciA9IHtcbiAgRklYRURfQ09OVEVOVDogJy5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AnLFxuICBTVElDS1lfQ09OVEVOVDogJy5zdGlja3ktdG9wJyxcbiAgTkFWQkFSX1RPR0dMRVI6ICcubmF2YmFyLXRvZ2dsZXInXG59O1xuY2xhc3MgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyIGV4dGVuZHMgTW9kYWxNYW5hZ2VyIHtcbiAgYWRqdXN0QW5kU3RvcmUocHJvcCwgZWxlbWVudCwgYWRqdXN0KSB7XG4gICAgY29uc3QgYWN0dWFsID0gZWxlbWVudC5zdHlsZVtwcm9wXTtcbiAgICAvLyBUT0RPOiBET01TdHJpbmdNYXAgYW5kIENTU1N0eWxlRGVjbGFyYXRpb24gYXJlbid0IHN0cmljdGx5IGNvbXBhdGlibGVcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZWxlbWVudC5kYXRhc2V0W3Byb3BdID0gYWN0dWFsO1xuICAgIGNzcyhlbGVtZW50LCB7XG4gICAgICBbcHJvcF06IGAke3BhcnNlRmxvYXQoY3NzKGVsZW1lbnQsIHByb3ApKSArIGFkanVzdH1weGBcbiAgICB9KTtcbiAgfVxuICByZXN0b3JlKHByb3AsIGVsZW1lbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnQuZGF0YXNldFtwcm9wXTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIGVsZW1lbnQuZGF0YXNldFtwcm9wXTtcbiAgICAgIGNzcyhlbGVtZW50LCB7XG4gICAgICAgIFtwcm9wXTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBzZXRDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIHN1cGVyLnNldENvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICBhZGRDbGFzcyhjb250YWluZXIsICdtb2RhbC1vcGVuJyk7XG4gICAgaWYgKCFjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkgcmV0dXJuO1xuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gdGhpcy5pc1JUTCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBtYXJnaW5Qcm9wID0gdGhpcy5pc1JUTCA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCc7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuRklYRURfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLmFkanVzdEFuZFN0b3JlKHBhZGRpbmdQcm9wLCBlbCwgY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5TVElDS1lfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLmFkanVzdEFuZFN0b3JlKG1hcmdpblByb3AsIGVsLCAtY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5OQVZCQVJfVE9HR0xFUikuZm9yRWFjaChlbCA9PiB0aGlzLmFkanVzdEFuZFN0b3JlKG1hcmdpblByb3AsIGVsLCBjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkpO1xuICB9XG4gIHJlbW92ZUNvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgc3VwZXIucmVtb3ZlQ29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIHJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ21vZGFsLW9wZW4nKTtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHRoaXMuaXNSVEwgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3QgbWFyZ2luUHJvcCA9IHRoaXMuaXNSVEwgPyAnbWFyZ2luTGVmdCcgOiAnbWFyZ2luUmlnaHQnO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLkZJWEVEX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5yZXN0b3JlKHBhZGRpbmdQcm9wLCBlbCkpO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLlNUSUNLWV9DT05URU5UKS5mb3JFYWNoKGVsID0+IHRoaXMucmVzdG9yZShtYXJnaW5Qcm9wLCBlbCkpO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLk5BVkJBUl9UT0dHTEVSKS5mb3JFYWNoKGVsID0+IHRoaXMucmVzdG9yZShtYXJnaW5Qcm9wLCBlbCkpO1xuICB9XG59XG5sZXQgc2hhcmVkTWFuYWdlcjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRNYW5hZ2VyKG9wdGlvbnMpIHtcbiAgaWYgKCFzaGFyZWRNYW5hZ2VyKSBzaGFyZWRNYW5hZ2VyID0gbmV3IEJvb3RzdHJhcE1vZGFsTWFuYWdlcihvcHRpb25zKTtcbiAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7XG59XG5leHBvcnQgZGVmYXVsdCBCb290c3RyYXBNb2RhbE1hbmFnZXI7IiwiaW1wb3J0IGhhc0NsYXNzIGZyb20gJy4vaGFzQ2xhc3MnO1xuLyoqXG4gKiBBZGRzIGEgQ1NTIGNsYXNzIHRvIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7ZWxzZSBpZiAoIWhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lICsgXCIgXCIgKyBjbGFzc05hbWU7ZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAoZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCAnJykgKyBcIiBcIiArIGNsYXNzTmFtZSk7XG59IiwiLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBlbGVtZW50IGhhcyBhIENTUyBjbGFzcy5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHJldHVybiAhIWNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpO1xuICByZXR1cm4gKFwiIFwiICsgKGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgZWxlbWVudC5jbGFzc05hbWUpICsgXCIgXCIpLmluZGV4T2YoXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIikgIT09IC0xO1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVzZUJyZWFrcG9pbnQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlQnJlYWtwb2ludCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmFzZU1vZGFsIGZyb20gJ0ByZXN0YXJ0L3VpL01vZGFsJztcbmltcG9ydCBGYWRlIGZyb20gJy4vRmFkZSc7XG5pbXBvcnQgT2ZmY2FudmFzQm9keSBmcm9tICcuL09mZmNhbnZhc0JvZHknO1xuaW1wb3J0IE9mZmNhbnZhc1RvZ2dsaW5nIGZyb20gJy4vT2ZmY2FudmFzVG9nZ2xpbmcnO1xuaW1wb3J0IE1vZGFsQ29udGV4dCBmcm9tICcuL01vZGFsQ29udGV4dCc7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IE9mZmNhbnZhc0hlYWRlciBmcm9tICcuL09mZmNhbnZhc0hlYWRlcic7XG5pbXBvcnQgT2ZmY2FudmFzVGl0bGUgZnJvbSAnLi9PZmZjYW52YXNUaXRsZSc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IEJvb3RzdHJhcE1vZGFsTWFuYWdlciwgeyBnZXRTaGFyZWRNYW5hZ2VyIH0gZnJvbSAnLi9Cb290c3RyYXBNb2RhbE1hbmFnZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBzaG93OiBmYWxzZSxcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBzY3JvbGw6IGZhbHNlLFxuICBhdXRvRm9jdXM6IHRydWUsXG4gIGVuZm9yY2VGb2N1czogdHJ1ZSxcbiAgcmVzdG9yZUZvY3VzOiB0cnVlLFxuICBwbGFjZW1lbnQ6ICdzdGFydCcsXG4gIHJlbmRlclN0YXRpY05vZGU6IGZhbHNlXG59O1xuZnVuY3Rpb24gRGlhbG9nVHJhbnNpdGlvbihwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goT2ZmY2FudmFzVG9nZ2xpbmcsIHtcbiAgICAuLi5wcm9wc1xuICB9KTtcbn1cbmZ1bmN0aW9uIEJhY2tkcm9wVHJhbnNpdGlvbihwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRmFkZSwge1xuICAgIC4uLnByb3BzXG4gIH0pO1xufVxuY29uc3QgT2ZmY2FudmFzID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRieSxcbiAgcGxhY2VtZW50LFxuICByZXNwb25zaXZlLFxuICAvKiBCYXNlTW9kYWwgcHJvcHMgKi9cblxuICBzaG93LFxuICBiYWNrZHJvcCxcbiAga2V5Ym9hcmQsXG4gIHNjcm9sbCxcbiAgb25Fc2NhcGVLZXlEb3duLFxuICBvblNob3csXG4gIG9uSGlkZSxcbiAgY29udGFpbmVyLFxuICBhdXRvRm9jdXMsXG4gIGVuZm9yY2VGb2N1cyxcbiAgcmVzdG9yZUZvY3VzLFxuICByZXN0b3JlRm9jdXNPcHRpb25zLFxuICBvbkVudGVyZWQsXG4gIG9uRXhpdCxcbiAgb25FeGl0aW5nLFxuICBvbkVudGVyLFxuICBvbkVudGVyaW5nLFxuICBvbkV4aXRlZCxcbiAgYmFja2Ryb3BDbGFzc05hbWUsXG4gIG1hbmFnZXI6IHByb3BzTWFuYWdlcixcbiAgcmVuZGVyU3RhdGljTm9kZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBtb2RhbE1hbmFnZXIgPSB1c2VSZWYoKTtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdvZmZjYW52YXMnKTtcbiAgY29uc3Qge1xuICAgIG9uVG9nZ2xlXG4gIH0gPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpIHx8IHt9O1xuICBjb25zdCBbc2hvd09mZmNhbnZhcywgc2V0U2hvd09mZmNhbnZhc10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGhpZGVSZXNwb25zaXZlT2ZmY2FudmFzID0gdXNlQnJlYWtwb2ludChyZXNwb25zaXZlIHx8ICd4cycsICd1cCcpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgc2NyZWVuIGlzIHJlc2l6ZWQgd2hpbGUgdGhlIHJlc3BvbnNpdmVcbiAgICAvLyBvZmZjYW52YXMgaXMgc2hvd24uIElmIGByZXNwb25zaXZlYCBub3QgcHJvdmlkZWQsIGp1c3QgdXNlIGBzaG93YC5cbiAgICBzZXRTaG93T2ZmY2FudmFzKHJlc3BvbnNpdmUgPyBzaG93ICYmICFoaWRlUmVzcG9uc2l2ZU9mZmNhbnZhcyA6IHNob3cpO1xuICB9LCBbc2hvdywgcmVzcG9uc2l2ZSwgaGlkZVJlc3BvbnNpdmVPZmZjYW52YXNdKTtcbiAgY29uc3QgaGFuZGxlSGlkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG9uVG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiBvblRvZ2dsZSgpO1xuICAgIG9uSGlkZSA9PSBudWxsID8gdm9pZCAwIDogb25IaWRlKCk7XG4gIH0pO1xuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgb25IaWRlOiBoYW5kbGVIaWRlXG4gIH0pLCBbaGFuZGxlSGlkZV0pO1xuICBmdW5jdGlvbiBnZXRNb2RhbE1hbmFnZXIoKSB7XG4gICAgaWYgKHByb3BzTWFuYWdlcikgcmV0dXJuIHByb3BzTWFuYWdlcjtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAvLyBIYXZlIHRvIHVzZSBhIGRpZmZlcmVudCBtb2RhbCBtYW5hZ2VyIHNpbmNlIHRoZSBzaGFyZWRcbiAgICAgIC8vIG9uZSBoYW5kbGVzIG92ZXJmbG93LlxuICAgICAgaWYgKCFtb2RhbE1hbmFnZXIuY3VycmVudCkgbW9kYWxNYW5hZ2VyLmN1cnJlbnQgPSBuZXcgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyKHtcbiAgICAgICAgaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3c6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtb2RhbE1hbmFnZXIuY3VycmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFNoYXJlZE1hbmFnZXIoKTtcbiAgfVxuICBjb25zdCBoYW5kbGVFbnRlciA9IChub2RlLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKG5vZGUpIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICBvbkVudGVyID09IG51bGwgPyB2b2lkIDAgOiBvbkVudGVyKG5vZGUsIC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSAobm9kZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChub2RlKSBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcbiAgICBvbkV4aXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25FeGl0ZWQoLi4uYXJncyk7XG4gIH07XG4gIGNvbnN0IHJlbmRlckJhY2tkcm9wID0gdXNlQ2FsbGJhY2soYmFja2Ryb3BQcm9wcyA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgLi4uYmFja2Ryb3BQcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoYCR7YnNQcmVmaXh9LWJhY2tkcm9wYCwgYmFja2Ryb3BDbGFzc05hbWUpXG4gIH0pLCBbYmFja2Ryb3BDbGFzc05hbWUsIGJzUHJlZml4XSk7XG4gIGNvbnN0IHJlbmRlckRpYWxvZyA9IGRpYWxvZ1Byb3BzID0+IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAuLi5kaWFsb2dQcm9wcyxcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCByZXNwb25zaXZlID8gYCR7YnNQcmVmaXh9LSR7cmVzcG9uc2l2ZX1gIDogYnNQcmVmaXgsIGAke2JzUHJlZml4fS0ke3BsYWNlbWVudH1gKSxcbiAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRieSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IFshc2hvd09mZmNhbnZhcyAmJiAocmVzcG9uc2l2ZSB8fCByZW5kZXJTdGF0aWNOb2RlKSAmJiByZW5kZXJEaWFsb2coe30pLCAvKiNfX1BVUkVfXyovX2pzeChNb2RhbENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBtb2RhbENvbnRleHQsXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQmFzZU1vZGFsLCB7XG4gICAgICAgIHNob3c6IHNob3dPZmZjYW52YXMsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBiYWNrZHJvcDogYmFja2Ryb3AsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgICBrZXlib2FyZDoga2V5Ym9hcmQsXG4gICAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgICBlbmZvcmNlRm9jdXM6IGVuZm9yY2VGb2N1cyAmJiAhc2Nyb2xsLFxuICAgICAgICByZXN0b3JlRm9jdXM6IHJlc3RvcmVGb2N1cyxcbiAgICAgICAgcmVzdG9yZUZvY3VzT3B0aW9uczogcmVzdG9yZUZvY3VzT3B0aW9ucyxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uU2hvdzogb25TaG93LFxuICAgICAgICBvbkhpZGU6IGhhbmRsZUhpZGUsXG4gICAgICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgICAgICBvbkVudGVyaW5nOiBvbkVudGVyaW5nLFxuICAgICAgICBvbkVudGVyZWQ6IG9uRW50ZXJlZCxcbiAgICAgICAgb25FeGl0OiBvbkV4aXQsXG4gICAgICAgIG9uRXhpdGluZzogb25FeGl0aW5nLFxuICAgICAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgICAgICBtYW5hZ2VyOiBnZXRNb2RhbE1hbmFnZXIoKSxcbiAgICAgICAgdHJhbnNpdGlvbjogRGlhbG9nVHJhbnNpdGlvbixcbiAgICAgICAgYmFja2Ryb3BUcmFuc2l0aW9uOiBCYWNrZHJvcFRyYW5zaXRpb24sXG4gICAgICAgIHJlbmRlckJhY2tkcm9wOiByZW5kZXJCYWNrZHJvcCxcbiAgICAgICAgcmVuZGVyRGlhbG9nOiByZW5kZXJEaWFsb2dcbiAgICAgIH0pXG4gICAgfSldXG4gIH0pO1xufSk7XG5PZmZjYW52YXMuZGlzcGxheU5hbWUgPSAnT2ZmY2FudmFzJztcbk9mZmNhbnZhcy5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE9mZmNhbnZhcywge1xuICBCb2R5OiBPZmZjYW52YXNCb2R5LFxuICBIZWFkZXI6IE9mZmNhbnZhc0hlYWRlcixcbiAgVGl0bGU6IE9mZmNhbnZhc1RpdGxlXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IE9mZmNhbnZhcyBmcm9tICcuL09mZmNhbnZhcyc7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhck9mZmNhbnZhcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goT2ZmY2FudmFzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgc2hvdzogISEoY29udGV4dCAhPSBudWxsICYmIGNvbnRleHQuZXhwYW5kZWQpLFxuICAgIC4uLnByb3BzLFxuICAgIHJlbmRlclN0YXRpY05vZGU6IHRydWVcbiAgfSk7XG59KTtcbk5hdmJhck9mZmNhbnZhcy5kaXNwbGF5TmFtZSA9ICdOYXZiYXJPZmZjYW52YXMnO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyT2ZmY2FudmFzOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQgZnJvbSAnQHJlc3RhcnQvdWkvU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgTmF2YmFyQnJhbmQgZnJvbSAnLi9OYXZiYXJCcmFuZCc7XG5pbXBvcnQgTmF2YmFyQ29sbGFwc2UgZnJvbSAnLi9OYXZiYXJDb2xsYXBzZSc7XG5pbXBvcnQgTmF2YmFyVG9nZ2xlIGZyb20gJy4vTmF2YmFyVG9nZ2xlJztcbmltcG9ydCBOYXZiYXJPZmZjYW52YXMgZnJvbSAnLi9OYXZiYXJPZmZjYW52YXMnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyVGV4dCA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnbmF2YmFyLXRleHQnLCB7XG4gIENvbXBvbmVudDogJ3NwYW4nXG59KTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZXhwYW5kOiB0cnVlLFxuICB2YXJpYW50OiAnbGlnaHQnLFxuICBjb2xsYXBzZU9uU2VsZWN0OiBmYWxzZVxufTtcbmNvbnN0IE5hdmJhciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBic1ByZWZpeDogaW5pdGlhbEJzUHJlZml4LFxuICAgIGV4cGFuZCxcbiAgICB2YXJpYW50LFxuICAgIGJnLFxuICAgIGZpeGVkLFxuICAgIHN0aWNreSxcbiAgICBjbGFzc05hbWUsXG4gICAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICAgIGFzOiBDb21wb25lbnQgPSAnbmF2JyxcbiAgICBleHBhbmRlZCxcbiAgICBvblRvZ2dsZSxcbiAgICBvblNlbGVjdCxcbiAgICBjb2xsYXBzZU9uU2VsZWN0LFxuICAgIC4uLmNvbnRyb2xsZWRQcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHByb3BzLCB7XG4gICAgZXhwYW5kZWQ6ICdvblRvZ2dsZSdcbiAgfSk7XG4gIGNvbnN0IGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGluaXRpYWxCc1ByZWZpeCwgJ25hdmJhcicpO1xuICBjb25zdCBoYW5kbGVDb2xsYXBzZSA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgb25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0KC4uLmFyZ3MpO1xuICAgIGlmIChjb2xsYXBzZU9uU2VsZWN0ICYmIGV4cGFuZGVkKSB7XG4gICAgICBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoZmFsc2UpO1xuICAgIH1cbiAgfSwgW29uU2VsZWN0LCBjb2xsYXBzZU9uU2VsZWN0LCBleHBhbmRlZCwgb25Ub2dnbGVdKTtcblxuICAvLyB3aWxsIHJlc3VsdCBpbiBzb21lIGZhbHNlIHBvc2l0aXZlcyBidXQgdGhhdCBzZWVtcyBiZXR0ZXJcbiAgLy8gdGhhbiBmYWxzZSBuZWdhdGl2ZXMuIHN0cmljdCBgdW5kZWZpbmVkYCBjaGVjayBhbGxvd3MgZXhwbGljaXRcbiAgLy8gXCJudWxsaW5nXCIgb2YgdGhlIHJvbGUgaWYgdGhlIHVzZXIgcmVhbGx5IGRvZXNuJ3Qgd2FudCBvbmVcbiAgaWYgKGNvbnRyb2xsZWRQcm9wcy5yb2xlID09PSB1bmRlZmluZWQgJiYgQ29tcG9uZW50ICE9PSAnbmF2Jykge1xuICAgIGNvbnRyb2xsZWRQcm9wcy5yb2xlID0gJ25hdmlnYXRpb24nO1xuICB9XG4gIGxldCBleHBhbmRDbGFzcyA9IGAke2JzUHJlZml4fS1leHBhbmRgO1xuICBpZiAodHlwZW9mIGV4cGFuZCA9PT0gJ3N0cmluZycpIGV4cGFuZENsYXNzID0gYCR7ZXhwYW5kQ2xhc3N9LSR7ZXhwYW5kfWA7XG4gIGNvbnN0IG5hdmJhckNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgb25Ub2dnbGU6ICgpID0+IG9uVG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiBvblRvZ2dsZSghZXhwYW5kZWQpLFxuICAgIGJzUHJlZml4LFxuICAgIGV4cGFuZGVkOiAhIWV4cGFuZGVkLFxuICAgIGV4cGFuZFxuICB9KSwgW2JzUHJlZml4LCBleHBhbmRlZCwgZXhwYW5kLCBvblRvZ2dsZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTmF2YmFyQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBuYXZiYXJDb250ZXh0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RhYmxlQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGhhbmRsZUNvbGxhcHNlLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgLi4uY29udHJvbGxlZFByb3BzLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeCwgZXhwYW5kICYmIGV4cGFuZENsYXNzLCB2YXJpYW50ICYmIGAke2JzUHJlZml4fS0ke3ZhcmlhbnR9YCwgYmcgJiYgYGJnLSR7Ymd9YCwgc3RpY2t5ICYmIGBzdGlja3ktJHtzdGlja3l9YCwgZml4ZWQgJiYgYGZpeGVkLSR7Zml4ZWR9YClcbiAgICAgIH0pXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdmJhci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5OYXZiYXIuZGlzcGxheU5hbWUgPSAnTmF2YmFyJztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTmF2YmFyLCB7XG4gIEJyYW5kOiBOYXZiYXJCcmFuZCxcbiAgQ29sbGFwc2U6IE5hdmJhckNvbGxhcHNlLFxuICBPZmZjYW52YXM6IE5hdmJhck9mZmNhbnZhcyxcbiAgVGV4dDogTmF2YmFyVGV4dCxcbiAgVG9nZ2xlOiBOYXZiYXJUb2dnbGVcbn0pOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGZsdWlkOiBmYWxzZVxufTtcbmNvbnN0IENvbnRhaW5lciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBmbHVpZCxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdjb250YWluZXInKTtcbiAgY29uc3Qgc3VmZml4ID0gdHlwZW9mIGZsdWlkID09PSAnc3RyaW5nJyA/IGAtJHtmbHVpZH1gIDogJy1mbHVpZCc7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBmbHVpZCA/IGAke3ByZWZpeH0ke3N1ZmZpeH1gIDogcHJlZml4KVxuICB9KTtcbn0pO1xuQ29udGFpbmVyLmRpc3BsYXlOYW1lID0gJ0NvbnRhaW5lcic7XG5Db250YWluZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyOyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIHRoZSBDYW9zREIgUHJvamVjdC5cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgSGVucmlrIHRvbSBXw7ZyZGVuIDxoLnRvbXdvZXJkZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIFRpbW0gRml0c2NoZW4gPHQuZml0c2NoZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG4vLy8vLy8vIEFVVE8gQ09NUExFVElPTlxuY29uc3QgQ1FMX1dPUkRTID0gW1xuICBcIkZJTkRcIixcbiAgXCJGSUxFXCIsXG4gIFwiRU5USVRZXCIsXG4gIFwiU0VMRUNUXCIsXG4gIFwiQ09VTlRcIixcbiAgXCJSRUNPUkRcIixcbiAgXCJQUk9QRVJUWVwiLFxuICBcIlJFQ09SRFRZUEVcIixcbiAgXCJSRUZFUkVOQ0VTXCIsXG4gIFwiUkVGRVJFTkNFRCBCWVwiLFxuICBcIldISUNIXCIsXG4gIFwiV0lUSFwiLFxuICBcIkNSRUFURUQgQllcIixcbiAgXCJDUkVBVEVEIEJZIE1FXCIsXG4gIFwiQ1JFQVRFRCBBVFwiLFxuICBcIkNSRUFURUQgT05cIixcbiAgXCJDUkVBVEVEIElOXCIsXG4gIFwiQ1JFQVRFRCBCRUZPUkVcIixcbiAgXCJDUkVBVEVEIFVOVElMXCIsXG4gIFwiQ1JFQVRFRCBBRlRFUlwiLFxuICBcIkNSRUFURUQgU0lOQ0VcIixcbiAgXCJTT01FT05FXCIsXG4gIFwiU1RPUkVEIEFUXCIsXG4gIFwiSEFTIEEgUFJPUEVSVFlcIixcbiAgXCJIQVMgQkVFTlwiLFxuICBcIkFOWSBWRVJTSU9OIE9GXCIsXG4gIFwiRlJPTVwiLFxuICBcIklOU0VSVEVEIEFUXCIsXG4gIFwiSU5TRVJURUQgT05cIixcbiAgXCJJTlNFUlRFRCBJTlwiLFxuICBcIklOU0VSVEVEIEJZXCIsXG4gIFwiSU5TRVJURUQgQlkgTUVcIixcbiAgXCJJTlNFUlRFRCBCRUZPUkVcIixcbiAgXCJJTlNFUlRFRCBVTlRJTFwiLFxuICBcIklOU0VSVEVEIEFGVEVSXCIsXG4gIFwiSU5TRVJURUQgU0lOQ0VcIixcbiAgXCJVUERBVEVEIEFUXCIsXG4gIFwiVVBEQVRFRCBPTlwiLFxuICBcIlVQREFURUQgSU5cIixcbiAgXCJVUERBVEVEIEJZXCIsXG4gIFwiVVBEQVRFRCBCWSBNRVwiLFxuICBcIlVQREFURUQgQkVGT1JFXCIsXG4gIFwiVVBEQVRFRCBVTlRJTFwiLFxuICBcIlVQREFURUQgQUZURVJcIixcbiAgXCJVUERBVEVEIFNJTkNFXCIsXG4gIFwiU0lOQ0VcIixcbiAgXCJCRUZPUkVcIixcbiAgXCJPTlwiLFxuICBcIklOXCIsXG4gIFwiQUZURVJcIixcbiAgXCJVTlRJTFwiLFxuICBcIkFUXCIsXG4gIFwiQllcIixcbiAgXCJCWSBNRVwiLFxuXTtcblxuZnVuY3Rpb24gcHJlcGFyZVRlcm1zKHRlcm1zKSB7XG4gIHJldHVybiB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICB2YXIgdGVybV9lc2NhcGVkID0gdGVybTtcbiAgICBpZiAodGVybV9lc2NhcGVkLmluZGV4T2YoXCIgXCIpID4gLTEpIHtcbiAgICAgIGlmICh0ZXJtLmluZGV4T2YoJ1wiJykgPiAtMSkge1xuICAgICAgICB0ZXJtX2VzY2FwZWQgPSBgJyR7dGVybV9lc2NhcGVkfSdgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVybV9lc2NhcGVkID0gYFwiJHt0ZXJtX2VzY2FwZWR9XCJgO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb3JpZ2luYWw6IHRlcm0sXG4gICAgICBub3JtYWxpemVkOiB0ZXJtLnRyaW0oKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZXNjYXBlZDogdGVybV9lc2NhcGVkLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ3FsV29yZHMod29yZHMpIHtcbiAgcmV0dXJuIHdvcmRzLm1hcCgod29yZCkgPT4gKHtcbiAgICBvcmlnaW5hbDogd29yZCxcbiAgICBub3JtYWxpemVkOiB3b3JkLnRyaW0oKS50b0xvd2VyQ2FzZSgpLFxuICAgIGVzY2FwZWQ6IHdvcmQsXG4gIH0pKTtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0aW9uIHtcbiAgY29uc3RydWN0b3IodGVybXMsIGNxbF93b3Jkcykge1xuICAgIHRoaXMuX2NxbF93b3JkcyA9IHByZXBhcmVDcWxXb3JkcyhjcWxfd29yZHMgfHwgQ1FMX1dPUkRTKTtcbiAgICB0aGlzLl90ZXJtcyA9IHRlcm1zIHx8IFtdO1xuICAgIHRoaXMuX3Jlc29sdmVkX3Rlcm1zID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3VnZ2VzdGlvbnMoaXNDcWwsIGZ1bGxRdWVyeSwgd29yZCkge1xuICAgIGlmIChpc0NxbCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q3FsU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0U2VhcmNoVGVybVN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCk7XG4gIH1cblxuICBhc3luYyBfZG9fcmVzb2x2ZV90ZXJtcyh0ZXJtcykge1xuICAgIHZhciByZXNvbHZlZF90ZXJtcztcbiAgICBpZiAodHlwZW9mIHRlcm1zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlc29sdmVkX3Rlcm1zID0gYXdhaXQgdGVybXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWRfdGVybXMgPSBhd2FpdCB0ZXJtcztcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHByZXBhcmVUZXJtcyhyZXNvbHZlZF90ZXJtcyk7XG4gIH1cblxuICBhc3luYyBfZ2V0VGVybXMoKSB7XG4gICAgaWYgKCF0aGlzLl9yZXNvbHZlZF90ZXJtcykge1xuICAgICAgdGhpcy5fcmVzb2x2ZWRfdGVybXMgPSB0aGlzLl9kb19yZXNvbHZlX3Rlcm1zKHRoaXMuX3Rlcm1zKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3Jlc29sdmVkX3Rlcm1zO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2VhcmNoVGVybVN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCkge1xuICAgIHZhciB0ZXJtcyA9IGF3YWl0IHRoaXMuX2dldFRlcm1zKCk7XG4gICAgaWYgKGZ1bGxRdWVyeSA9PT0gd29yZCkge1xuICAgICAgLy8gc3RpbGwgb25seSBvbmUgd29yZCAtPiBhbHNvIGFwcGVuZCBGSU5ELCBTRUxFQ1QgYW5kIENPVU5UXG4gICAgICB0ZXJtcyA9IHByZXBhcmVDcWxXb3JkcyhbXCJGSU5EXCIsIFwiU0VMRUNUXCIsIFwiQ09VTlRcIl0pLmNvbmNhdCh0ZXJtcyk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmROb3JtYWxpemVkID0gd29yZC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGVybXMuZmlsdGVyKCh0ZXJtKSA9PiB0ZXJtLm5vcm1hbGl6ZWQuc3RhcnRzV2l0aCh3b3JkTm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3FsU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKSB7XG4gICAgY29uc3QgY3FsX3dvcmRzID0gdGhpcy5fY3FsX3dvcmRzO1xuXG4gICAgY29uc3Qgd29yZE5vcm1hbGl6ZWQgPSB3b3JkLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBjcWxfd29yZHNcbiAgICAgIC5maWx0ZXIoKHRlcm0pID0+IHRlcm0ubm9ybWFsaXplZC5zdGFydHNXaXRoKHdvcmROb3JtYWxpemVkKSlcbiAgICAgIC5jb25jYXQoYXdhaXQgdGhpcy5nZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKSk7XG4gIH1cbn1cblxuLy8vLy8vLyBRVUVSWSBHRU5FUkFUSU9OXG5cbmV4cG9ydCBjb25zdCBpc0NxbCA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICBxdWVyeSA9IHF1ZXJ5LnRvVXBwZXJDYXNlKCkudHJpbSgpO1xuICByZXR1cm4gKFxuICAgIHF1ZXJ5LnN0YXJ0c1dpdGgoXCJGSU5EXCIpIHx8XG4gICAgcXVlcnkuc3RhcnRzV2l0aChcIkNPVU5UXCIpIHx8XG4gICAgcXVlcnkuc3RhcnRzV2l0aChcIlNFTEVDVFwiKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gIHJldHVybiBxdWVyeS50b1VwcGVyQ2FzZSgpLnRyaW0oKS5zdGFydHNXaXRoKFwiU0VMRUNUXCIpO1xufTtcblxuY29uc3QgdHJhbnNsYXRvciA9IHtcbiAgXCI9XCI6IFwiPVwiLFxuICBcIj5cIjogXCI+XCIsXG4gIFwi4omlXCI6IFwiPj1cIixcbiAgXCI8XCI6IFwiPFwiLFxuICBcIuKJpFwiOiBcIjw9XCIsXG4gIFwi4omgXCI6IFwiIT1cIixcbiAgZXF1YWxzOiBcIj1cIixcbiAgaW46IFwiaW5cIixcbiAgXCJub3QgaW5cIjogXCJub3QgaW5cIixcbiAgXCJhZnRlciBkYXRlXCI6IFwiPlwiLFxuICBcInNpbmNlIGRhdGVcIjogXCI+PVwiLFxuICBcInVudGlsIGRhdGVcIjogXCI8PVwiLFxuICBcImJlZm9yZSBkYXRlXCI6IFwiPFwiLFxuICBcIm9uIGRhdGVcIjogXCJvblwiLFxuICBcIm5vdCBvbiBkYXRlXCI6IFwibm90IG9uXCIsXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgdHVwbGUgdG8gYSB2YWxpZCBDUUwgUE9WLWZpbHRlclxuICogZXhwcmVzc2lvbiBpbmNsdWRpbmcgcXVvdGF0aW9uIGZvciB0aGUgdmFsdWUgYW5kIHBhcmVudGhlc2lzIGFyb3VuZFxuICogZXZlcnl0aGluZyBmb3Igc2FmZSBpbnRlcnByZXRhdGlvbiBieSB0aGUgQ1FMIHBhcnNlci5cbiAqXG4gKiAgIEUuZy4gKFwiRXZlbnQubG9uZ2l0dWRlXCIsIFwiPlwiLCAtNDAsIFwiwrBcIikgcmVzdWx0cyBpblxuICogICAgICAgICcoRXZlbnQubG9uZ2l0dWRlID4gXCItNDDCsFwiKScuXG4gKlxuICogTm90ZTogVGhlIGNvcnJlY3QgcXVvdGF0aW9uIGZvciB0aGUgcHJvcGVydHkgbXVzdCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFzc2VkXG4gKiBgcHJvcGVydHlgIGFscmVhZHkgYW5kIGhlbmNlIGJlIGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybX5GaWx0ZXJEZWZpbml0aW9uLlxuICpcbiAqIE5vdGU6IFRoaXMgaXMgbmVlZGVkIGJ5IG1ha2VRdWVyeSBhbmQgaGFuZGxlcyB0aGUgbW9zdCBiYXNpYyBjYXNlcy4gRm9yXG4gKiBvcGVyYXRvcnMgbGlrZSBgbm90IGNvbnRhaW5zYCBvciBgcmFuZ2VgIHRoZXJlIGFyZSBzcGVjaWFsIHRyZWF0bWVudHNcbiAqIGVsc2V3aGVyZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvclxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFt1bml0XVxuICogQHJldHVybiB7c3RyaW5nfSBDUUwgUE9WLWZpbHRlciBleHByZXNzaW9uLlxuICovXG5jb25zdCB0b0NRTCA9IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSA9PiB7XG4gIHZhbHVlID0gdmFsdWUgfHwgXCJcIjtcbiAgdW5pdCA9IHVuaXQgfHwgXCJcIjtcbiAgY29uc3QgcXVvdGVzID0gdW5pdCAhPT0gXCJcIiA/IFwiXCIgOiB2YWx1ZS5pbmRleE9mKCdcIicpID09PSAtMSA/ICdcIicgOiBcIidcIjtcbiAgaWYgKHRyYW5zbGF0b3Jbb3BlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGAoJHtwcm9wZXJ0eX0gJHt0cmFuc2xhdG9yW29wZXJhdG9yXX0gJHtxdW90ZXN9JHt2YWx1ZX0ke3VuaXR9JHtxdW90ZXN9KWA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgdHJhbnNsYXRlICR7cHJvcGVydHl9ICR7b3BlcmF0b3J9IGZpbHRlcmAsIHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhbGxvd2VkX29wZXJhdG9ycyA9IHtcbiAgYm9vbGVhbjogW1wiaXMgdHJ1ZVwiLCBcImlzIGZhbHNlXCJdLFxuICB0ZXh0OiBbXCJlcXVhbHNcIiwgXCJub3QgZXF1YWxzXCIsIFwiY29udGFpbnNcIiwgXCJub3QgY29udGFpbnNcIl0sXG4gIGludGVnZXI6IFtcIj1cIiwgXCLiiaBcIiwgXCLiiaVcIiwgXCLiiaRcIiwgXCI8XCIsIFwiPlwiLCBcInJhbmdlXCJdLFxuICBkb3VibGU6IFtcIj1cIiwgXCLiiaBcIiwgXCLiiaVcIiwgXCLiiaRcIiwgXCI8XCIsIFwiPlwiLCBcInJhbmdlXCJdLFxuICBkYXRldGltZTogW1xuICAgIFwiPVwiLFxuICAgIFwi4omgXCIsXG4gICAgXCJvbiBkYXRlXCIsXG4gICAgXCJpblwiLFxuICAgIFwibm90IG9uIGRhdGVcIixcbiAgICBcIm5vdCBpblwiLFxuICAgIFwiYWZ0ZXIgZGF0ZVwiLFxuICAgIFwiYmVmb3JlIGRhdGVcIixcbiAgICBcInVudGlsIGRhdGVcIixcbiAgICBcInNpbmNlIGRhdGVcIixcbiAgXSxcbn07XG5cbi8qKlxuICogRGljdGlvbmFyeSBvZiBmdW5jdGlvbnM6XG4gKlxuICogKGRhdGF0eXBlLG9wZXJhdG9yKSAtPiBmdW5jdGlvbihwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KVxuICovXG5jb25zdCBtYWtlX3F1ZXJ5X2ZpbHRlciA9IHtcbiAgYm9vbGVhbjoge1xuICAgIFwiaXMgdHJ1ZVwiOiAocHJvcGVydHkpID0+IGAoJHtwcm9wZXJ0eX0gPSBUUlVFKWAsXG4gICAgXCJpcyBmYWxzZVwiOiAocHJvcGVydHkpID0+IGAoJHtwcm9wZXJ0eX0gPSBGQUxTRSlgLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgY29udGFpbnM6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlKSA9PiBgKCR7cHJvcGVydHl9IExJS0UgXCIqJHt2YWx1ZX0qXCIpYCxcbiAgICBcIm5vdCBlcXVhbHNcIjogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUpID0+XG4gICAgICBgKE5PVCAke3Byb3BlcnR5fSA9IFwiJHt2YWx1ZX1cIilgLFxuICAgIFwibm90IGNvbnRhaW5zXCI6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlKSA9PlxuICAgICAgYChOT1QgJHtwcm9wZXJ0eX0gTElLRSBcIioke3ZhbHVlfSpcIilgLFxuICB9LFxuICBpbnRlZ2VyOiB7XG4gICAgcmFuZ2U6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSA9PlxuICAgICAgYCgke3Byb3BlcnR5fSA+ICR7dmFsdWVbMF19JHt1bml0fSkgQU5EICgke3Byb3BlcnR5fSA8ICR7dmFsdWVbMV19JHt1bml0fSlgLFxuICB9LFxuICBkb3VibGU6IHtcbiAgICByYW5nZTogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+XG4gICAgICBgKCR7cHJvcGVydHl9ID4gJHt2YWx1ZVswXX0ke3VuaXR9KSBBTkQgKCR7cHJvcGVydHl9IDwgJHt2YWx1ZVsxXX0ke3VuaXR9KWAsXG4gIH0sXG4gIF9kZWZhdWx0OiB7IF9kZWZhdWx0OiB0b0NRTCB9LFxufTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHZhbGlkIENRTCBQT1YtZmlsdGVyIGV4cHJlc3Npb25zIGFwcHJvcHJpYXRlIGZvciBhIHR1cGxlXG4gKiAoZGF0YXR5cGUsIHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdF1cbiAqIEByZXR1cm4ge3N0cmluZ30gQ1FMIFBPVi1maWx0ZXIgZXhwcmVzc2lvbi5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlUXVlcnlGaWx0ZXIgPSAoZGF0YXR5cGUsIHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+IHtcbiAgaWYgKCFkYXRhdHlwZSB8fCAhb3BlcmF0b3IpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHVuaXQgPSB1bml0IHx8IFwiXCI7XG5cbiAgaWYgKG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXSkge1xuICAgIGlmIChcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtvcGVyYXRvcl0gfHxcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtvcGVyYXRvcl0gPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bb3BlcmF0b3JdKFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB1bml0LFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0gfHxcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0oXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHVuaXQsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW29wZXJhdG9yXSkge1xuICAgIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW29wZXJhdG9yXShcbiAgICAgIHByb3BlcnR5LFxuICAgICAgb3BlcmF0b3IsXG4gICAgICB2YWx1ZSxcbiAgICAgIHVuaXQsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW1wiX2RlZmF1bHRcIl0oXG4gICAgcHJvcGVydHksXG4gICAgb3BlcmF0b3IsXG4gICAgdmFsdWUsXG4gICAgdW5pdCxcbiAgKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZF90eXBlXG4gKiBAcmV0dXJucyB7UXVlcnlGb3Jtfm1ha2VRdWVyeUNhbGxiYWNrfVxuICovXG5leHBvcnQgY29uc3QgbWFrZVF1ZXJ5VGVtcGxhdGUgPVxuICAocmVjb3JkX3R5cGUpID0+IChzZWFyY2hfdGVybXMsIGFjdGl2ZUZpbHRlcnMpID0+IHtcbiAgICB2YXIgcXVlcnkgPSBcIkZJTkQgUkVDT1JEXCI7XG4gICAgaWYgKHJlY29yZF90eXBlKSB7XG4gICAgICBxdWVyeSArPSBgIFwiJHtyZWNvcmRfdHlwZX1cImA7XG4gICAgfVxuICAgIHZhciBmaWx0ZXJfY29ubmVjdG9yID0gXCIgV0lUSCBcIjtcbiAgICBpZiAoc2VhcmNoX3Rlcm1zICYmIHNlYXJjaF90ZXJtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzcGxpdHRlZF9zZWFyY2hfdGVybXMgPSBzcGxpdFNlYXJjaFRlcm1zKHNlYXJjaF90ZXJtcykubWFwKFxuICAgICAgICAod29yZCkgPT4gYEEgUFJPUEVSVFkgTElLRSAnKiR7d29yZC5yZXBsYWNlQWxsKFwiJ1wiLCBgXFxcXCdgKX0qJ2AsXG4gICAgICApO1xuICAgICAgaWYgKHNwbGl0dGVkX3NlYXJjaF90ZXJtcy5sZW5ndGgpIHtcbiAgICAgICAgZmlsdGVyX2Nvbm5lY3RvciA9IFwiIEFORCBcIjtcbiAgICAgICAgcXVlcnkgKz0gXCIgV0lUSCBcIiArIHNwbGl0dGVkX3NlYXJjaF90ZXJtcy5qb2luKGZpbHRlcl9jb25uZWN0b3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcnMgPSBhY3RpdmVGaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PlxuICAgICAgbWFrZVF1ZXJ5RmlsdGVyKFxuICAgICAgICBmaWx0ZXIuZGF0YXR5cGUsXG4gICAgICAgIGZpbHRlci5wcm9wZXJ0eSxcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yLFxuICAgICAgICBmaWx0ZXIudmFsdWUsXG4gICAgICAgIGZpbHRlci51bml0LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcXVlcnkgKz0gZmlsdGVyX2Nvbm5lY3RvciArIGZpbHRlcnMuam9pbihcIiBBTkQgXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeTtcbiAgfTtcblxuY29uc3QgX3NwbGl0U2VhcmNoVGVybXNQYXR0ZXJuID1cbiAgL1wiKD88ZHE+W15cIl0qKVwiIHwnKD88c3E+W14nXSopJyB8KD88bnE+W14gXSspL2c7XG5cbi8qKlxuICogU3BsaXQgYSBxdWVyeSBzdHJpbmcgaW50byBzaW5nbGUgdGVybXMuXG4gKlxuICogVGVybXMgYXJlIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZXMuIFRlcm1zIHdoaWNoIGNvbnRhaW4gd2hpdGUgc3BhY2VzXG4gKiB3aGljaCBhcmUgdG8gYmUgcHJlc2VydmVkIG11c3QgYmUgZW5jbG9zZWQgaW4gXCIgb3IgJyBxdW90ZXMuIFRoZVxuICogZW5jbG9zaW5nIHF1b3RhdGlvbiBtYXJrcyBhcmUgYmVpbmcgc3RyaXBwZWQuIEN1cnJlbnRseSBubyBzdXBwb3J0IGZvclxuICogZXNjYXBlIHNlcXVlbmNlcyBmb3IgcXVvdGF0aW9uIG1hcmtzLlxuICpcbiAqIEBmdW5jdGlvbiBzcGxpdFNlYXJjaFRlcm1zXG4gKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkgLSBjb21wbGV0ZSBxdWVyeSBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgdGhlIHNlYXJjaCB0ZXJtcy5cbiAqL1xuY29uc3Qgc3BsaXRTZWFyY2hUZXJtcyA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICAvLyBhZGQgZW1wdHkgc3BhY2UgYXQgdGhlIGVuZCwgc28gZXZlcnkgbWF0Y2hpbmcgZ3JvdXAgZW5kcyB3aXRoIGl0IC0+IGVhc2llciByZWdleC4gQWxzbywgdW5kZWZpbmVkIGlzIGZpbHRlcmVkIG91dFxuICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAocXVlcnkgKyBcIiBcIikubWF0Y2hBbGwoX3NwbGl0U2VhcmNoVGVybXNQYXR0ZXJuKSxcbiAgICAobSkgPT4gbVsxXSB8fCBtWzJdIHx8IG1bM10sXG4gICkuZmlsdGVyKCh3b3JkKSA9PiB3b3JkKTtcbn07XG5cbi8vLy8vLyBUQUJTXG5cbi8qKlxuICogRmlsdGVyRGVmaW5pdGlvbnMgZGVmaW5lIHdoaWNoIGZpbHRlcnMgY2FuIGJlIHNlbGVjdGVkIGJ5IHRoZSB1c2Vycy5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWVyeUZvcm1+RmlsdGVyRGVmaW5pdGlvblxuICogQHB1YmxpY1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gZGF0YXR5cGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWluXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3N0ZXBdXG4gKiBAcHJvcGVydHkge3N0cmludH0gW3VuaXRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lucHV0VHlwZV1cbiAqL1xuXG4vKipcbiAqIFF1ZXJ5RmlsdGVycyBzcGVjaWZ5IHRoZSBjdXJyZW50IGZpbHRlcnMgYSB1c2VyIGhhcyBzcGVjaWZpZWQgdXNpbmcgdGhlXG4gKiBRdWVyeUZvcm0uXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gUXVlcnlGb3JtflF1ZXJ5RmlsdGVyXG4gKiBAcHVibGljXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXRhdHlwZVxuICogQHByb3BlcnR5IHtzdGlybmd9IG9wZXJhdG9yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdW5pdFxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICovXG5cbi8qKlxuICogV2hlbiB0aGUgcXVlcnkgZm9ybSBpcyBiZWluZyBzdWJtaXR0ZWQsIHRoaXMgY2FsbGJhY2sgZ2VuZXJhdGVzIHRoZSBxdWVyeVxuICogZnJvbSB0aGUgc2VhcmNoIHRlcm1zIGFuZCBhY3RpdmUgRmlsdGVycy5cbiAqXG4gKiBAY2FsbGJhY2sgUXVlcnlGb3Jtfm1ha2VRdWVyeUNhbGxiYWNrXG4gKiBAcHVibGljXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGVybXNcbiAqIEBwYXJhbSB7UXVlcnlGb3JtflF1ZXJ5RmlsdGVyW119IGFjdGl2ZUZpbHRlcnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBnZW5lcmF0ZWQgQ1FMIHF1ZXJ5LlxuICovXG5cbi8qKlxuICogQ3JlYXRlIGEgdGFiIG9iamVjdC5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZFR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGFiZWxdXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtIHtRdWVyeUZvcm1+bWFrZVF1ZXJ5Q2FsbGJhY2t9IFttYWtlUXVlcnlDYWxsYmFjaz1tYWtlUXVlcnlUZW1wbGF0ZShpZCldXG4gKiBAcGFyYW0ge1F1ZXJ5Rm9ybX5GaWx0ZXJEZWZpbml0aW9uW119IFtmaWx0ZXJEZWZpbml0aW9ucz1bXV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYihcbiAgaWQsXG4gIHJlY29yZFR5cGUsXG4gIGxhYmVsLFxuICBkZXNjcmlwdGlvbixcbiAgbWFrZVF1ZXJ5Q2FsbGJhY2ssXG4gIGZpbHRlckRlZmluaXRpb25zLFxuKSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGlkLFxuICAgIHJlY29yZFR5cGU6IHJlY29yZFR5cGUsXG4gICAgbGFiZWw6IGxhYmVsIHx8IHJlY29yZFR5cGUgfHwgaWQsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBkZXNjcmlwdGlvbiB8fCBgU2hvdyBvbmx5IHJlc3VsdHMgb2YgdHlwZSAke2xhYmVsIHx8IHJlY29yZFR5cGUgfHwgaWR9YCxcbiAgICBtYWtlUXVlcnk6IG1ha2VRdWVyeUNhbGxiYWNrIHx8IG1ha2VRdWVyeVRlbXBsYXRlKHJlY29yZFR5cGUpLFxuICAgIGZpbHRlckRlZmluaXRpb25zOiBmaWx0ZXJEZWZpbml0aW9ucyB8fCBbXSxcbiAgfTtcbn1cblxuLy8vLy8vIERFQlVHR0lORyBBTkQgVEVTVElOR1xuXG4vKipcbiAqIENyZWF0ZSBzb21lIHF1ZXJ5IHBhbmVsIHRhYnMgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldF90ZXN0X3RhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IG1ha2VGaWx0ZXJEZWZpbml0aW9ucyA9IChpZCkgPT4gW1xuICAgIHsgcHJvcGVydHk6IGlkICsgXCItdGV4dC1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJ0ZXh0XCIgfSxcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLWRhdGV0aW1lLXByb3BlcnR5XCIsIGRhdGF0eXBlOiBcImRhdGV0aW1lXCIgfSxcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLWludGVnZXItcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IGlkICsgXCItZG91YmxlLXByb3BlcnR5XCIsXG4gICAgICBkYXRhdHlwZTogXCJkb3VibGVcIixcbiAgICAgIG1pbjogXCItNTBcIixcbiAgICAgIG1heDogXCI1MFwiLFxuICAgICAgdW5pdDogXCJtXCIsXG4gICAgfSxcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLWJvb2xlYW4tcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IGBcIiR7aWR9LXJlZmVyZW5jZS1wcm9wZXJ0eVwiLlwic3ViLXByb3BlcnR5XCJgLFxuICAgICAgbGFiZWw6IGBzdWItcHJvcGVydHkgb2YgJHtpZH0tcmVmZXJlbmNlLXByb3BlcnR5YCxcbiAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICB9LFxuICBdO1xuICByZXR1cm4gW1xuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwiYWxsXCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBcIkFsbFwiLFxuICAgICAgXCJTaG93IGFsbCBtYXRjaGluZyByZXN1bHRzXCIsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIlwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcImFsbFwiKSxcbiAgICApLFxuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwiZGF0YXNldFwiLFxuICAgICAgXCJEYXRhc2V0XCIsXG4gICAgICBcIkRhdGFzZXRcIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiRGF0YXNldFwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcImRhdGFzZXRcIiksXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcImV2ZW50XCIsXG4gICAgICBcIkV2ZW50XCIsXG4gICAgICBcIkV2ZW50XCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIkV2ZW50XCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwiZXZlbnRcIiksXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcInBlcnNvblwiLFxuICAgICAgXCJQZXJzb25cIixcbiAgICAgIFwiUGVyc29uXCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIlBlcnNvblwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcInBlcnNvblwiKSxcbiAgICApLFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldF90ZXN0X3N1Z2dlc3Rpb25zID0gYXN5bmMgKGlzQ3FsLCBmdWxsLCBwcmVmaXgpID0+IHtcbiAgY29uc3QgYWMgPSBuZXcgQXV0b0NvbXBsZXRpb24oXG4gICAgKCkgPT4gW1xuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjFcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24yXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uM1wiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjRcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb241XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uNlwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjdcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb244XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uOVwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjEwXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTFcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xMlwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjEzXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTRcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xNVwiLFxuICAgIF0sXG4gICAgQ1FMX1dPUkRTLFxuICApO1xuICByZXR1cm4gYWMuZ2V0U3VnZ2VzdGlvbnMoaXNDcWwsIGZ1bGwsIHByZWZpeCk7XG59O1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIFRpbW0gRml0c2NoZW4gPHQuZml0c2NoZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlTWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ29udGV4dCxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5pbXBvcnQgZ2V0Q2FyZXRDb29yZGluYXRlcyBmcm9tIFwidGV4dGFyZWEtY2FyZXRcIjtcbmltcG9ydCB7IEF1dG9Db21wbGV0aW9uIH0gZnJvbSBcIi4vUXVlcnlGb3JtLmhlbHBlcnNcIjtcbmltcG9ydCB7XG4gIGFsbG93ZWRfb3BlcmF0b3JzLFxuICBpc1NlbGVjdCBhcyBmSXNTZWxlY3QsXG4gIGlzQ3FsIGFzIGZJc0NxbCxcbiAgZ2V0X3Rlc3Rfc3VnZ2VzdGlvbnMsXG4gIGdldF90ZXN0X3RhYnMsXG59IGZyb20gXCIuL1F1ZXJ5Rm9ybS5oZWxwZXJzXCI7XG5cbmNvbnN0IFF1ZXJ5Rm9ybUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcblxuY29uc3QgUmFuZ2VGaWx0ZXJJbnB1dCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG9uQ2hhbmdlLCB2YWx1ZSB9ID0gcHJvcHM7XG4gIGNvbnN0IG9uQ2hhbmdlTWluID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0UgPSB7IHRhcmdldDogeyB2YWx1ZTogW2UudGFyZ2V0LnZhbHVlLCB2YWx1ZVsxXV0gfSB9O1xuICAgICAgb25DaGFuZ2UobmV3RSk7XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIHZhbHVlXSxcbiAgKTtcbiAgY29uc3Qgb25DaGFuZ2VNYXggPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgY29uc3QgbmV3RSA9IHsgdGFyZ2V0OiB7IHZhbHVlOiBbdmFsdWVbMF0sIGUudGFyZ2V0LnZhbHVlXSB9IH07XG4gICAgICBvbkNoYW5nZShuZXdFKTtcbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgdmFsdWVdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWVbMF19XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZU1pbn1cbiAgICAgICAgbWF4PXtwcm9wcy52YWx1ZVsxXX1cbiAgICAgIC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJteC0xXCI+dG88L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlWzFdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VNYXh9XG4gICAgICAgIG1pbj17cHJvcHMudmFsdWVbMF19XG4gICAgICAvPlxuICAgICAge3Byb3BzLnVuaXRFbGVtZW50fVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgRmlsdGVySW5wdXQgPSAoe1xuICBtaW4sXG4gIG1heCxcbiAgc3RlcCxcbiAgdmFsdWUsXG4gIHNldFZhbHVlLFxuICBkYXRhdHlwZSxcbiAgb3BlcmF0b3IsXG4gIHVuaXQsXG4gIGlucHV0dHlwZSxcbn0pID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4gc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpLCBbc2V0VmFsdWVdKTtcbiAgaWYgKCFkYXRhdHlwZSB8fCAhb3BlcmF0b3IpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIGNsYXNzTmFtZTogXCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIsXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtaW46IG1pbixcbiAgICBtYXg6IG1heCxcbiAgfTtcbiAgaWYgKGlucHV0dHlwZSkge1xuICAgIGRlZmF1bHRQcm9wcy50eXBlID0gaW5wdXR0eXBlO1xuICB9XG4gIGlmIChzdGVwKSB7XG4gICAgZGVmYXVsdFByb3BzLnN0ZXAgPSBzdGVwO1xuICB9XG5cbiAgY29uc3QgdW5pdEVsZW1lbnQgPSB1bml0ICYmIChcbiAgICA8c3BhbiBjbGFzc05hbWU9XCJtcy0xXCIgdGl0bGU9XCJUaGUgdW5pdFwiPlxuICAgICAge3VuaXR9XG4gICAgPC9zcGFuPlxuICApO1xuXG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IHtcbiAgICBib29sZWFuOiB7IF9kZWZhdWx0OiBudWxsIH0sXG4gICAgaW50ZWdlcjoge1xuICAgICAgX2RlZmF1bHQ6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8aW5wdXQgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cIm51bWJlclwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgICB7dW5pdEVsZW1lbnR9XG4gICAgICAgIDwvPlxuICAgICAgKSxcbiAgICAgIHJhbmdlOiAoXG4gICAgICAgIDxSYW5nZUZpbHRlcklucHV0XG4gICAgICAgICAgdW5pdEVsZW1lbnQ9e3VuaXRFbGVtZW50fVxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIGRvdWJsZToge1xuICAgICAgX2RlZmF1bHQ6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8aW5wdXQgc3RlcD1cIjAuMDAxXCIgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cIm51bWJlclwiIC8+XG4gICAgICAgICAge3VuaXRFbGVtZW50fVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICByYW5nZTogKFxuICAgICAgICA8UmFuZ2VGaWx0ZXJJbnB1dFxuICAgICAgICAgIHVuaXRFbGVtZW50PXt1bml0RWxlbWVudH1cbiAgICAgICAgICBzdGVwPVwiMC4wMDFcIlxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgX2RlZmF1bHQ6IHsgX2RlZmF1bHQ6IDxpbnB1dCB7Li4uZGVmYXVsdFByb3BzfSAvPiB9LFxuICB9O1xuXG4gIGlmIChpbnB1dEVsZW1lbnRbZGF0YXR5cGVdKSB7XG4gICAgaWYgKFxuICAgICAgaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtvcGVyYXRvcl0gfHxcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bb3BlcmF0b3JdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtvcGVyYXRvcl07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSB8fFxuICAgICAgaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnB1dEVsZW1lbnRbXCJfZGVmYXVsdFwiXVtvcGVyYXRvcl0pIHtcbiAgICByZXR1cm4gaW5wdXRFbGVtZW50W1wiX2RlZmF1bHRcIl1bb3BlcmF0b3JdO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0RWxlbWVudFtcIl9kZWZhdWx0XCJdW1wiX2RlZmF1bHRcIl07XG59O1xuXG5mdW5jdGlvbiBDcWxIaW50KCkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LWNxbC1oaW50XCJcbiAgICAgIHRpdGxlPVwiWW91IGFyZSB1c2luZyB0aGUgZXhwZXJ0IHNlYXJjaCBtb2RlLiBFbnRlciBhIHZhbGlkIENRTCBRdWVyeS5cIlxuICAgID5cbiAgICAgIENRTFxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1TaW5nbGVUYWIoeyB0YWIsIHNldEFjdGl2ZVRhYiwgaXNBY3RpdmVUYWIgfSkge1xuICBjb25zdCBhY3RpdmF0ZVRhYiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWlzQWN0aXZlVGFiKSB7XG4gICAgICBzZXRBY3RpdmVUYWIodGFiKTtcbiAgICB9XG4gIH0sIFt0YWIsIHNldEFjdGl2ZVRhYiwgaXNBY3RpdmVUYWJdKTtcblxuICBjb25zdCBjbGFzc05hbWUgPSBcImNhb3NkYi1mLXF1ZXJ5LXRhYlwiICsgKGlzQWN0aXZlVGFiID8gXCIgYWN0aXZlXCIgOiBcIlwiKTtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHRpdGxlPXt0YWIuZGVzY3JpcHRpb259XG4gICAgICB0YWJJbmRleD17aXNBY3RpdmVUYWIgPyBcIi0xXCIgOiBcIjBcIn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGljaz17aXNBY3RpdmVUYWIgPyB1bmRlZmluZWQgOiBhY3RpdmF0ZVRhYn1cbiAgICA+XG4gICAgICB7dGFiLmxhYmVsfVxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5mdW5jdGlvbiBBZGRUYWJGaWx0ZXJPcGVyYXRvcih7XG4gIGZpbHRlcixcbiAgZmlsdGVySWR4LFxuICB1cGRhdGVGaWx0ZXIsXG4gIHJlc3RvcmVPcGVyYXRvcixcbiAgcmVzdG9yZVZhbHVlLFxufSkge1xuICBjb25zdCBbb3BlcmF0b3IsIHNldE9wZXJhdG9yXSA9IHVzZVN0YXRlKFxuICAgIGZpbHRlci5vcGVyYXRvciB8fCBhbGxvd2VkX29wZXJhdG9yc1tmaWx0ZXIuZGF0YXR5cGVdWzBdLFxuICApO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGZpbHRlci52YWx1ZSB8fCBcIlwiKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSAoXG4gICAgPEZpbHRlcklucHV0XG4gICAgICBkYXRhdHlwZT17ZmlsdGVyLmRhdGF0eXBlfVxuICAgICAgb3BlcmF0b3I9e29wZXJhdG9yfVxuICAgICAgc2V0VmFsdWU9e3NldFZhbHVlfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgdW5pdD17ZmlsdGVyLnVuaXR9XG4gICAgICBtaW49e2ZpbHRlci5taW59XG4gICAgICBtYXg9e2ZpbHRlci5tYXh9XG4gICAgICBzdGVwPXtmaWx0ZXIuc3RlcH1cbiAgICAgIGlucHV0dHlwZT17ZmlsdGVyLmlucHV0dHlwZX1cbiAgICAvPlxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc3RvcmVPcGVyYXRvciAmJiBvcGVyYXRvciAhPT0gcmVzdG9yZU9wZXJhdG9yKSB7XG4gICAgICBzZXRPcGVyYXRvcihyZXN0b3JlT3BlcmF0b3IpO1xuICAgIH1cbiAgfSwgW3Jlc3RvcmVPcGVyYXRvciwgb3BlcmF0b3JdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXN0b3JlVmFsdWUgJiYgdmFsdWUgIT09IHJlc3RvcmVWYWx1ZSkge1xuICAgICAgc2V0VmFsdWUocmVzdG9yZVZhbHVlKTtcbiAgICB9XG4gIH0sIFtyZXN0b3JlVmFsdWUsIHZhbHVlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlcmF0b3IgIT09IGZpbHRlci5vcGVyYXRvcikge1xuICAgICAgdXBkYXRlRmlsdGVyKGZpbHRlcklkeCwge1xuICAgICAgICByZXN0b3JlT3BlcmF0b3I6IHVuZGVmaW5lZCxcbiAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbb3BlcmF0b3IsIGZpbHRlci5vcGVyYXRvciwgZmlsdGVySWR4LCB1cGRhdGVGaWx0ZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2YWx1ZSAhPT0gZmlsdGVyLnZhbHVlKSB7XG4gICAgICB1cGRhdGVGaWx0ZXIoZmlsdGVySWR4LCB7XG4gICAgICAgIHJlc3RvcmVWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgZmlsdGVyLnZhbHVlLCBmaWx0ZXJJZHgsIHVwZGF0ZUZpbHRlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgdmFsdWU9e29wZXJhdG9yfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0T3BlcmF0b3IoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICA+XG4gICAgICAgICAge2FsbG93ZWRfb3BlcmF0b3JzW2ZpbHRlci5kYXRhdHlwZV0ubWFwKChvcCwgaWR4KSA9PiAoXG4gICAgICAgICAgICA8b3B0aW9uIGtleT17aWR4fT57b3B9PC9vcHRpb24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleFwiPntpbnB1dEVsZW1lbnR9PC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEZpbHRlclNlbGVjdCh7IHNlbGVjdGVkLCBmaWx0ZXJEZWZpbml0aW9ucywgb25DaGFuZ2UsIHRpdGxlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c2VsZWN0XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBjbGFzc05hbWU9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICB2YWx1ZT17c2VsZWN0ZWR9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgPlxuICAgICAge2ZpbHRlckRlZmluaXRpb25zLm1hcCgoZmlsLCBpZHgpID0+IChcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT17ZmlsLnByb3BlcnR5fSBzdHlsZT17ZmlsLnN0eWxlfSBrZXk9e2lkeH0+XG4gICAgICAgICAge2ZpbC5sYWJlbCB8fCBmaWwucHJvcGVydHl9XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgKSl9XG4gICAgPC9zZWxlY3Q+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEFkZEZpbHRlcih7IGZpbHRlckRlZmluaXRpb25zLCBhZGRGaWx0ZXIgfSkge1xuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBhZGRGaWx0ZXIoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW2FkZEZpbHRlcl0sXG4gICk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxGaWx0ZXJTZWxlY3RcbiAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zLmNvbmNhdCh7XG4gICAgICAgICAgcHJvcGVydHk6IFwiX19hZGRfZmlsdGVyX19cIixcbiAgICAgICAgICBsYWJlbDogXCJBZGQgRmlsdGVyXCIsXG4gICAgICAgICAgc3R5bGU6IHsgZGlzcGxheTogXCJub25lXCIgfSxcbiAgICAgICAgfSl9XG4gICAgICAgIHNlbGVjdGVkPVwiX19hZGRfZmlsdGVyX19cIlxuICAgICAgICB0aXRsZT1cIkFkZCBGaWx0ZXJcIlxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBGaWx0ZXIoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgZmlsdGVySWR4LFxuICBhY3RpdmVGaWx0ZXJzLFxuICB1cGRhdGVGaWx0ZXIsXG4gIHNldFByb3BlcnR5LFxuICByZW1vdmVGaWx0ZXIsXG59KSB7XG4gIGNvbnN0IGFjdGl2ZUZpbHRlciA9IGFjdGl2ZUZpbHRlcnMgJiYgYWN0aXZlRmlsdGVyc1tmaWx0ZXJJZHhdO1xuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBzZXRQcm9wZXJ0eShmaWx0ZXJJZHgsIGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRQcm9wZXJ0eSwgZmlsdGVySWR4XSxcbiAgKTtcbiAgY29uc3QgcmVtb3ZlVGhpcyA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHJlbW92ZUZpbHRlcihmaWx0ZXJJZHgpLFxuICAgIFtyZW1vdmVGaWx0ZXIsIGZpbHRlcklkeF0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3JcIj5cbiAgICAgICAgPEZpbHRlclNlbGVjdFxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBzZWxlY3RlZD17YWN0aXZlRmlsdGVyLnByb3BlcnR5fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPEFkZFRhYkZpbHRlck9wZXJhdG9yXG4gICAgICAgIHJlc3RvcmVWYWx1ZT17YWN0aXZlRmlsdGVyLnJlc3RvcmVWYWx1ZX1cbiAgICAgICAgcmVzdG9yZU9wZXJhdG9yPXthY3RpdmVGaWx0ZXIucmVzdG9yZU9wZXJhdG9yfVxuICAgICAgICB1cGRhdGVGaWx0ZXI9e3VwZGF0ZUZpbHRlcn1cbiAgICAgICAgZmlsdGVySWR4PXtmaWx0ZXJJZHh9XG4gICAgICAgIGZpbHRlcj17YWN0aXZlRmlsdGVyfVxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1lbmQgZmxleC1ncm93LTFcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcbiAgICAgICAgICBvbkNsaWNrPXtyZW1vdmVUaGlzfVxuICAgICAgICA+XG4gICAgICAgICAgUmVtb3ZlIEZpbHRlclxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJGaWx0ZXJzSW5uZXIoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgcmVtb3ZlRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcklkeCkgPT4ge1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzLmZpbHRlcigoZmlsLCBpZHgpID0+IGlkeCAhPT0gZmlsdGVySWR4KSk7XG4gICAgfSxcbiAgICBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc10sXG4gICk7XG5cbiAgY29uc3QgdXBkYXRlRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcklkeCwgdXBkYXRlKSA9PiB7XG4gICAgICBjb25zdCBuZXdBY3RpdmVGaWx0ZXJzID0gW10uY29uY2F0KGFjdGl2ZUZpbHRlcnMpO1xuXG4gICAgICBuZXdBY3RpdmVGaWx0ZXJzW2ZpbHRlcklkeF0gPSB7XG4gICAgICAgIC4uLm5ld0FjdGl2ZUZpbHRlcnNbZmlsdGVySWR4XSxcbiAgICAgICAgLi4udXBkYXRlLFxuICAgICAgfTtcblxuICAgICAgc2V0QWN0aXZlRmlsdGVycyhuZXdBY3RpdmVGaWx0ZXJzKTtcbiAgICB9LFxuICAgIFthY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVGaWx0ZXJzXSxcbiAgKTtcblxuICBjb25zdCBzZXRQcm9wZXJ0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWx0ZXJJZHgsIHByb3BlcnR5TmFtZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHlGaWx0ZXIgPSBmaWx0ZXJEZWZpbml0aW9ucy5maWx0ZXIoXG4gICAgICAgIChmaWwpID0+IGZpbC5wcm9wZXJ0eSA9PT0gcHJvcGVydHlOYW1lLFxuICAgICAgKVswXTtcbiAgICAgIHVwZGF0ZUZpbHRlcihmaWx0ZXJJZHgsIHtcbiAgICAgICAgcmVzdG9yZVZhbHVlOiBcIlwiLFxuICAgICAgICByZXN0b3JlT3BlcmF0b3I6IGFsbG93ZWRfb3BlcmF0b3JzW3Byb3BlcnR5RmlsdGVyLmRhdGF0eXBlXVswXSxcbiAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgZGF0YXR5cGU6IHByb3BlcnR5RmlsdGVyLmRhdGF0eXBlLFxuICAgICAgICB1bml0OiBwcm9wZXJ0eUZpbHRlci51bml0LFxuICAgICAgICBtaW46IHByb3BlcnR5RmlsdGVyLm1pbixcbiAgICAgICAgbWF4OiBwcm9wZXJ0eUZpbHRlci5tYXgsXG4gICAgICAgIGZpbHRlcjogcHJvcGVydHlGaWx0ZXIsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFt1cGRhdGVGaWx0ZXIsIGZpbHRlckRlZmluaXRpb25zXSxcbiAgKTtcblxuICBjb25zdCBhZGRGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAocHJvcGVydHlOYW1lKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eUZpbHRlciA9IGZpbHRlckRlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgKGZpbCkgPT4gZmlsLnByb3BlcnR5ID09PSBwcm9wZXJ0eU5hbWUsXG4gICAgICApWzBdO1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhcbiAgICAgICAgYWN0aXZlRmlsdGVycy5jb25jYXQoe1xuICAgICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgZGF0YXR5cGU6IHByb3BlcnR5RmlsdGVyLmRhdGF0eXBlLFxuICAgICAgICAgIHVuaXQ6IHByb3BlcnR5RmlsdGVyLnVuaXQsXG4gICAgICAgICAgbWluOiBwcm9wZXJ0eUZpbHRlci5taW4sXG4gICAgICAgICAgbWF4OiBwcm9wZXJ0eUZpbHRlci5tYXgsXG4gICAgICAgICAgZmlsdGVyOiBwcm9wZXJ0eUZpbHRlcixcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnMsIGZpbHRlckRlZmluaXRpb25zXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7YWN0aXZlRmlsdGVycy5tYXAoKGZpbCwgaWR4KSA9PiAoXG4gICAgICAgIDxGaWx0ZXJcbiAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICBmaWx0ZXJJZHg9e2lkeH1cbiAgICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnN9XG4gICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJzPXtzZXRBY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIHVwZGF0ZUZpbHRlcj17dXBkYXRlRmlsdGVyfVxuICAgICAgICAgIHNldFByb3BlcnR5PXtzZXRQcm9wZXJ0eX1cbiAgICAgICAgICByZW1vdmVGaWx0ZXI9e3JlbW92ZUZpbHRlcn1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXhcIj5cbiAgICAgICAgPEFkZEZpbHRlclxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBhZGRGaWx0ZXI9e2FkZEZpbHRlcn1cbiAgICAgICAgLz5cbiAgICAgICAge2FjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICB0aXRsZT1cIlNlYXJjaCB3aXRoIGZpbHRlcnNcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtcy1hdXRvXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWFyY2hcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJGaWx0ZXJzKHtcbiAgZmlsdGVyRGVmaW5pdGlvbnMsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHNldEFjdGl2ZUZpbHRlcnMsXG59KSB7XG4gIGNvbnN0IFtzaG93RmlsdGVycywgc2V0U2hvd0ZpbHRlcnNdID0gdXNlU3RhdGUoYWN0aXZlRmlsdGVycy5sZW5ndGggPiAwKTtcblxuICBjb25zdCB0aXRsZSA9IHNob3dGaWx0ZXJzXG4gICAgPyBcIkNhbmNlbCBBZHZhbmNlZCBGaWx0ZXJpbmdcIlxuICAgIDogXCJBZHZhbmNlZCBGaWx0ZXJpbmdcIjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RmlsdGVycyghc2hvd0ZpbHRlcnMpfVxuICAgICAgICBjbGFzc05hbWU9XCJidG4gbXMtYXV0byBjYW9zZGItZi1xdWVyeS1maWx0ZXJzLXRvZ2dsZVwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgID5cbiAgICAgICAge3Nob3dGaWx0ZXJzID8gKFxuICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLXhcIj48L2k+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktZmlsdGVyXCI+PC9pPlxuICAgICAgICApfVxuICAgICAgPC9idXR0b24+XG4gICAgICB7c2hvd0ZpbHRlcnMgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIHctMTAwXCI+XG4gICAgICAgICAgPFF1ZXJ5Rm9ybVRhYkZpbHRlcnNJbm5lclxuICAgICAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zfVxuICAgICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJzKHtcbiAgdGFicyxcbiAgc2V0QWN0aXZlVGFiLFxuICBhY3RpdmVUYWIsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHNldEFjdGl2ZUZpbHRlcnMsXG59KSB7XG4gIGNvbnN0IGhhc0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYWN0aXZlVGFiICYmXG4gICAgICBhY3RpdmVUYWIuZmlsdGVyRGVmaW5pdGlvbnMgJiZcbiAgICAgIGFjdGl2ZVRhYi5maWx0ZXJEZWZpbml0aW9ucy5sZW5ndGggPiAwXG4gICAgKTtcbiAgfSwgW2FjdGl2ZVRhYl0pO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3QgZC1mbGV4IGZsZXgtd3JhcFwiPlxuICAgICAge3RhYnMubWFwKCh0YWIpID0+IChcbiAgICAgICAgPFF1ZXJ5Rm9ybVNpbmdsZVRhYlxuICAgICAgICAgIGlzQWN0aXZlVGFiPXthY3RpdmVUYWIuaWQgPT09IHRhYi5pZH1cbiAgICAgICAgICBzZXRBY3RpdmVUYWI9e3NldEFjdGl2ZVRhYn1cbiAgICAgICAgICBrZXk9e3RhYi5sYWJlbH1cbiAgICAgICAgICB0YWI9e3RhYn1cbiAgICAgICAgLz5cbiAgICAgICkpfXtcIiBcIn1cbiAgICAgIHtoYXNGaWx0ZXJzICYmIChcbiAgICAgICAgPFF1ZXJ5Rm9ybVRhYkZpbHRlcnNcbiAgICAgICAgICB7Li4uYWN0aXZlVGFifVxuICAgICAgICAgIGFjdGl2ZUZpbHRlcnM9e2FjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5U3VibWl0QnV0dG9uKHsgaXNTdWJtaXR0ZWQsIGFjdGl2ZSB9KSB7XG4gIGlmIChpc1N1Ym1pdHRlZCkge1xuICAgIHJldHVybiA8TG9hZGluZ0luZm8gY2xhc3NOYW1lPVwiYWxpZ24tc2VsZi1jZW50ZXJcIiBzaXplPVwic21cIiAvPjtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxidXR0b24gYXJpYS1sYWJlbD1cInNlYXJjaFwiIHRpdGxlPVwiU2VhcmNoXCIgdHlwZT1cInN1Ym1pdFwiIGRpc2FibGVkPXshYWN0aXZlfT5cbiAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLXNlYXJjaFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU2luZ2xlUXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtKHtcbiAgc3VnZ2VzdGlvbixcbiAgaXNIaWdobGlnaHRlZCxcbiAgb25Nb3VzZUVudGVyLFxufSkge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgb25Nb3VzZUVudGVyPXtvbk1vdXNlRW50ZXJ9XG4gICAgICBjbGFzc05hbWU9e2lzSGlnaGxpZ2h0ZWQgPyBcImhpZ2hsaWdodFwiIDogXCJcIn1cbiAgICA+XG4gICAgICB7c3VnZ2VzdGlvbi5vcmlnaW5hbH1cbiAgICA8L2xpPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1zKHtcbiAgc3VnZ2VzdGlvbnMsXG4gIGhpZ2hsaWdodEluZGV4LFxuICBzZWxlY3RTdWdnZXN0aW9uLFxufSkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c3VnZ2VzdGlvbnMubWFwKChzdWcsIGluZGV4KSA9PiAoXG4gICAgICAgIDxTaW5nbGVRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1cbiAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNlbGVjdFN1Z2dlc3Rpb24oaW5kZXgpfVxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgaXNIaWdobGlnaHRlZD17aGlnaGxpZ2h0SW5kZXggPT09IGluZGV4fVxuICAgICAgICAgIHN1Z2dlc3Rpb249e3N1Z31cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1TdWdnZXN0aW9ucyh7XG4gIHVuc2VsZWN0U3VnZ2VzdGlvbnMsXG4gIHNlbGVjdFN1Z2dlc3Rpb24sXG4gIGhpZ2hsaWdodEluZGV4LFxuICBzdWdnZXN0aW9ucyxcbiAgZ2V0SW5wdXRSZWYsXG4gIHdvcmRQb3MsXG4gIHdvcmQsXG4gIHhPZmZzZXQsXG59KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBpdGVtcyA9IChcbiAgICA8UXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtc1xuICAgICAgc2VsZWN0U3VnZ2VzdGlvbj17c2VsZWN0U3VnZ2VzdGlvbn1cbiAgICAgIGhpZ2hsaWdodEluZGV4PXtoaWdobGlnaHRJbmRleH1cbiAgICAgIHN1Z2dlc3Rpb25zPXtzdWdnZXN0aW9uc31cbiAgICAvPlxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGhpZ2hsaWdodEluZGV4ID4gLTEpIHtcbiAgICAgIHJlZi5jdXJyZW50LnNjcm9sbCgwLCAyNCAqIGhpZ2hsaWdodEluZGV4IC0gNDgpO1xuICAgIH1cbiAgfSwgW2hpZ2hsaWdodEluZGV4XSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRSZWYgPSBnZXRJbnB1dFJlZigpO1xuICAgIHZhciBjb29yZHMgPSBnZXRDYXJldENvb3JkaW5hdGVzKGlucHV0UmVmLmN1cnJlbnQsIHdvcmRQb3MpO1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSBpbnB1dFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGlmIChjb29yZHMubGVmdCA+IGlucHV0V2lkdGgpIHtcbiAgICAgIGNvbnN0IHJpZ2h0T2Zmc2V0ID1cbiAgICAgICAgZ2V0Q2FyZXRDb29yZGluYXRlcyhpbnB1dFJlZi5jdXJyZW50LCB3b3JkUG9zICsgd29yZC5sZW5ndGgpLmxlZnQgLVxuICAgICAgICBjb29yZHMubGVmdDtcblxuICAgICAgcmVmLmN1cnJlbnQuc3R5bGUubWFyZ2luTGVmdCA9IGAke2lucHV0V2lkdGggLSByaWdodE9mZnNldH1weGA7XG4gICAgfSBlbHNlIGlmIChjb29yZHMubGVmdCA+IDgpIHtcbiAgICAgIHJlZi5jdXJyZW50LnN0eWxlLm1hcmdpbkxlZnQgPSBgJHtjb29yZHMubGVmdCAtIDh9cHhgO1xuICAgIH1cbiAgfSwgW3dvcmQsIGdldElucHV0UmVmLCB3b3JkUG9zXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBvbk1vdXNlTGVhdmU9e3Vuc2VsZWN0U3VnZ2VzdGlvbnN9XG4gICAgICBzdHlsZT17eyBwYWRkaW5nTGVmdDogeE9mZnNldCB9fVxuICAgICAgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWctY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8b2wgcmVmPXtyZWZ9IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnXCI+XG4gICAgICAgIHtpdGVtc31cbiAgICAgIDwvb2w+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgdmFyIGN1cnNvcl9wb3MsIHdvcmRfcG9zLCB3b3JkLCBvcGVuLCB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zO1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBcIm9uRm9jdXNcIjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCByZWZvY3VzOiBmYWxzZSwgZm9jdXM6IHRydWUgfTtcbiAgICBjYXNlIFwib25CbHVyXCI6XG4gICAgICBpZiAoc3RhdGUub25DbGlja1ZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmFsdWU6IHN0YXRlLm9uQ2xpY2tWYWx1ZSxcbiAgICAgICAgICBjdXJzb3JQb3M6IHN0YXRlLm9uQ2xpY2tDdXJzb3JQb3MsXG4gICAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICAgIG9uQ2xpY2tWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlZm9jdXM6IHRydWUsXG4gICAgICAgICAgb3BlbjogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZm9jdXM6IGZhbHNlIH07XG4gICAgY2FzZSBcIm9uQ2hhbmdlXCI6XG4gICAgICBjdXJzb3JfcG9zID0gYWN0aW9uLnRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gICAgICB3b3JkX3BvcyA9IGFjdGlvbi50YXJnZXQudmFsdWUuc2xpY2UoMCwgY3Vyc29yX3BvcykubGFzdEluZGV4T2YoXCIgXCIpICsgMTtcbiAgICAgIHdvcmQgPSBhY3Rpb24udGFyZ2V0LnZhbHVlLnNsaWNlKHdvcmRfcG9zLCBjdXJzb3JfcG9zKTtcbiAgICAgIG9wZW4gPSB3b3JkLmxlbmd0aCA+IDI7XG4gICAgICB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zID1cbiAgICAgICAgb3BlbiAmJiBhY3Rpb24uZ2V0U3VnZ2VzdGlvbnNDYWxsYmFja1xuICAgICAgICAgID8gYWN0aW9uLmdldFN1Z2dlc3Rpb25zQ2FsbGJhY2soXG4gICAgICAgICAgICAgIGZJc0NxbChhY3Rpb24udGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgICAgICAgYWN0aW9uLnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgd29yZCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICBoaWdobGlnaHRJbmRleDogLTEsXG4gICAgICAgIGN1cnNvclBvczogY3Vyc29yX3BvcyxcbiAgICAgICAgY3Vyc29yUG9zTm9Db21wbGV0aW9uOiBjdXJzb3JfcG9zLFxuICAgICAgICB3b3JkUG9zOiB3b3JkX3BvcyxcbiAgICAgICAgdmFsdWU6IGFjdGlvbi50YXJnZXQudmFsdWUsXG4gICAgICAgIHZhbHVlTm9Db21wbGV0aW9uOiBhY3Rpb24udGFyZ2V0LnZhbHVlLFxuICAgICAgICByZWZvY3VzOiBmYWxzZSxcbiAgICAgICAgd29yZDogd29yZCxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgY2hhbmdlSWQ6IChzdGF0ZS5jaGFuZ2VJZCArIDEpIHwgMCxcbiAgICAgICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zLFxuICAgICAgfTtcbiAgICBjYXNlIFwicmVzb2x2ZVN1Z2dlc3Rpb25zXCI6XG4gICAgICBpZiAoc3RhdGUuY2hhbmdlSWQgPT09IGFjdGlvbi5jaGFuZ2VJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBhY3Rpb24uc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBlbHNlIHsgLyogc3VnZ2VzdGlvbnMgYXJlIG91dGRhdGVkIGR1ZSB0byBuZXcgY2hhbmdlcyAqLyB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwib25BcnJvd0Rvd25cIjpcbiAgICAgIGlmIChcbiAgICAgICAgc3RhdGUub3BlbiAmJlxuICAgICAgICBzdGF0ZS5zdWdnZXN0aW9ucyAmJlxuICAgICAgICBzdGF0ZS5oaWdobGlnaHRJbmRleCA8IHN0YXRlLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDFcbiAgICAgICkge1xuICAgICAgICBjb25zdCBuZXdIaWdobGlnaHRJbmRleCA9IHN0YXRlLmhpZ2hsaWdodEluZGV4ICsgMTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKDAsIHN0YXRlLndvcmRQb3MpICtcbiAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZCArXG4gICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2Uoc3RhdGUuY3Vyc29yUG9zTm9Db21wbGV0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3Q3Vyc29yUG9zID1cbiAgICAgICAgICBzdGF0ZS53b3JkUG9zICsgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGN1cnNvclBvczogbmV3Q3Vyc29yUG9zLFxuICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICBoaWdobGlnaHRJbmRleDogbmV3SGlnaGxpZ2h0SW5kZXgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwidW5zZWxlY3RTdWdnZXN0aW9uc1wiOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IHVuZGVmaW5lZCxcbiAgICAgICAgb25DbGlja1ZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIGNhc2UgXCJzZWxlY3RTdWdnZXN0aW9uXCI6XG4gICAgICBpZiAoYWN0aW9uLmluZGV4ID4gLTEgJiYgYWN0aW9uLmluZGV4IDwgc3RhdGUuc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZSgwLCBzdGF0ZS53b3JkUG9zKSArXG4gICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbYWN0aW9uLmluZGV4XS5lc2NhcGVkICtcbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZShzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb24pICtcbiAgICAgICAgICBcIiBcIjtcbiAgICAgICAgY29uc3QgbmV3Q3Vyc29yUG9zID1cbiAgICAgICAgICBzdGF0ZS53b3JkUG9zICsgc3RhdGUuc3VnZ2VzdGlvbnNbYWN0aW9uLmluZGV4XS5lc2NhcGVkLmxlbmd0aCArIDE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb25DbGlja1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICBvbkNsaWNrQ3Vyc29yUG9zOiBuZXdDdXJzb3JQb3MsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicmVzdG9yZVwiOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHZhbHVlOiBhY3Rpb24udmFsdWUgfTtcbiAgICBjYXNlIFwib25BcnJvd1VwXCI6XG4gICAgICBpZiAoc3RhdGUub3BlbiAmJiBzdGF0ZS5oaWdobGlnaHRJbmRleCA+IC0xKSB7XG4gICAgICAgIGNvbnN0IG5ld0hpZ2hsaWdodEluZGV4ID0gc3RhdGUuaGlnaGxpZ2h0SW5kZXggLSAxO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgbmV3SGlnaGxpZ2h0SW5kZXggPCAwXG4gICAgICAgICAgICA/IHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uXG4gICAgICAgICAgICA6IHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKDAsIHN0YXRlLndvcmRQb3MpICtcbiAgICAgICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQgK1xuICAgICAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZShzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb24pO1xuICAgICAgICBjb25zdCBuZXdDdXJzb3JQb3MgPVxuICAgICAgICAgIG5ld0hpZ2hsaWdodEluZGV4IDwgMFxuICAgICAgICAgICAgPyBzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb25cbiAgICAgICAgICAgIDogc3RhdGUud29yZFBvcyArXG4gICAgICAgICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zW25ld0hpZ2hsaWdodEluZGV4XS5lc2NhcGVkLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBjdXJzb3JQb3M6IG5ld0N1cnNvclBvcyxcbiAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgICAgaGlnaGxpZ2h0SW5kZXg6IG5ld0hpZ2hsaWdodEluZGV4LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtVGV4dEZpZWxkKHsgc2V0UXVlcnlTdHJpbmcsIGlzQ3FsLCByZXN0b3JlUXVlcnlTdHJpbmcgfSkge1xuICBjb25zdCB7IGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssIGlzU3VibWl0dGVkIH0gPSB1c2VDb250ZXh0KFF1ZXJ5Rm9ybUNvbnRleHQpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIHtcbiAgICByZWZvY3VzOiBmYWxzZSxcbiAgICB2YWx1ZTogXCJcIixcbiAgICBmb2N1czogZmFsc2UsXG4gICAgb3BlbjogZmFsc2UsXG4gICAgd29yZDogXCJcIixcbiAgICBoaWdobGlnaHRJbmRleDogLTEsXG4gICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiBudWxsLFxuICAgIHN1Z2dlc3Rpb25zOiBudWxsLFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFF1ZXJ5U3RyaW5nKHN0YXRlLnZhbHVlKTtcbiAgfSwgW3N0YXRlLnZhbHVlLCBzZXRRdWVyeVN0cmluZ10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc3RvcmVRdWVyeVN0cmluZykge1xuICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcInJlc3RvcmVcIiwgdmFsdWU6IHJlc3RvcmVRdWVyeVN0cmluZyB9KTtcbiAgICB9XG4gIH0sIFtyZXN0b3JlUXVlcnlTdHJpbmddKTtcblxuICBjb25zdCBvbkZvY3VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkZvY3VzXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uQmx1clwiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25BcnJvd1VwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkFycm93VXBcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uQXJyb3dEb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkFycm93RG93blwiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBcIm9uQ2hhbmdlXCIsXG4gICAgICAgIHRhcmdldDogZS50YXJnZXQsXG4gICAgICAgIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2s6IGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtnZXRTdWdnZXN0aW9uc0NhbGxiYWNrXSxcbiAgKTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIG9uQXJyb3dEb3duKGUpO1xuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gb25BcnJvd1VwKGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQXJyb3dVcCwgb25BcnJvd0Rvd25dLFxuICApO1xuXG4gIGNvbnN0IHVuc2VsZWN0U3VnZ2VzdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcInVuc2VsZWN0U3VnZ2VzdGlvbnNcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNlbGVjdFN1Z2dlc3Rpb24gPSB1c2VDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwic2VsZWN0U3VnZ2VzdGlvblwiLCBpbmRleDogaW5kZXggfSk7XG4gIH0sIFtdKTtcblxuICB2YXIgY2xhc3NOYW1lID0gXCJjYW9zZGItZi1xdWVyeS1mb3JtXCI7XG4gIGlmIChzdGF0ZS5vcGVuKSB7XG4gICAgY2xhc3NOYW1lICs9IFwiIG9wZW5cIjtcbiAgfVxuICBpZiAoc3RhdGUuZm9jdXMpIHtcbiAgICBjbGFzc05hbWUgKz0gXCIgZm9jdXNcIjtcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucykge1xuICAgICAgY29uc3QgY2hhbmdlSWQgPSBzdGF0ZS5jaGFuZ2VJZDtcbiAgICAgIHN0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucy50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogXCJyZXNvbHZlU3VnZ2VzdGlvbnNcIixcbiAgICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgY2hhbmdlSWQ6IGNoYW5nZUlkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3N0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucywgc3RhdGUuY2hhbmdlSWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhdGUuY3Vyc29yUG9zLCBzdGF0ZS5jdXJzb3JQb3MpO1xuICB9LCBbc3RhdGUudmFsdWUsIHN0YXRlLmN1cnNvclBvc10pO1xuXG4gIGNvbnN0IGdldElucHV0UmVmID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiBpbnB1dFJlZjtcbiAgfSwgW2lucHV0UmVmXSk7XG5cbiAgLy8gaGFuZGxlIGZvY3VzIGFmdGVyIHJlc2V0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnJlZm9jdXMpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtzdGF0ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXhcIj5cbiAgICAgICAge2lzQ3FsICYmIDxDcWxIaW50IC8+fVxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0ZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC1ncm93LTFcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJlbnRlciBzZWFyY2ggdGVybXNcIlxuICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgdGl0bGU9XCJFbnRlciBzZWFyY2ggdGVybXNcIlxuICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIHZhbHVlPXtzdGF0ZS52YWx1ZX1cbiAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICA+PC9pbnB1dD5cbiAgICAgICAgPFF1ZXJ5U3VibWl0QnV0dG9uXG4gICAgICAgICAgYWN0aXZlPXtzdGF0ZS52YWx1ZS5sZW5ndGggPiAwfVxuICAgICAgICAgIGlzU3VibWl0dGVkPXtpc1N1Ym1pdHRlZH1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAge3N0YXRlLm9wZW4gJiYgc3RhdGUuc3VnZ2VzdGlvbnMgJiYgKFxuICAgICAgICA8UXVlcnlGb3JtU3VnZ2VzdGlvbnNcbiAgICAgICAgICB1bnNlbGVjdFN1Z2dlc3Rpb25zPXt1bnNlbGVjdFN1Z2dlc3Rpb25zfVxuICAgICAgICAgIHNlbGVjdFN1Z2dlc3Rpb249e3NlbGVjdFN1Z2dlc3Rpb259XG4gICAgICAgICAgd29yZD17c3RhdGUud29yZH1cbiAgICAgICAgICB3b3JkUG9zPXtzdGF0ZS53b3JkUG9zfVxuICAgICAgICAgIGdldElucHV0UmVmPXtnZXRJbnB1dFJlZn1cbiAgICAgICAgICBzdWdnZXN0aW9ucz17c3RhdGUuc3VnZ2VzdGlvbnN9XG4gICAgICAgICAgaGlnaGxpZ2h0SW5kZXg9e3N0YXRlLmhpZ2hsaWdodEluZGV4fVxuICAgICAgICAgIHhPZmZzZXQ9e2lzQ3FsID8gNDQgOiAwfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gc3RvcmUoYWN0aXZlVGFiLCBhY3RpdmVGaWx0ZXJzLCBxdWVyeVN0cmluZykge1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVUYWJcIik7XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIik7XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCIpO1xuICBpZiAoYWN0aXZlVGFiKSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZVRhYlwiXSA9IEpTT04uc3RyaW5naWZ5KGFjdGl2ZVRhYik7XG4gIH1cbiAgaWYgKGFjdGl2ZUZpbHRlcnMgJiYgYWN0aXZlRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIl0gPSBKU09OLnN0cmluZ2lmeShhY3RpdmVGaWx0ZXJzKTtcbiAgfVxuICBpZiAocXVlcnlTdHJpbmcgJiYgcXVlcnlTdHJpbmcubGVuZ3RoID4gMCkge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5xdWVyeVN0cmluZ1wiXSA9IHF1ZXJ5U3RyaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc3RvcmUodGFicykge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgcmVzdG9yZUFjdGl2ZVRhYjpcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVUYWJcIl0gJiZcbiAgICAgIEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZVRhYlwiXSksXG4gICAgcmVzdG9yZUFjdGl2ZUZpbHRlcnM6XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlRmlsdGVyc1wiXSAmJlxuICAgICAgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlRmlsdGVyc1wiXSksXG4gICAgcmVzdG9yZVF1ZXJ5U3RyaW5nOiB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkucXVlcnlTdHJpbmdcIl0gfHwgXCJcIixcbiAgfTtcbiAgaWYgKFxuICAgIHJlc3VsdC5yZXN0b3JlQWN0aXZlVGFiICYmXG4gICAgdGFicy5maWx0ZXIoKHRhYikgPT4gdGFiLmlkID09PSByZXN1bHQucmVzdG9yZUFjdGl2ZVRhYi5pZCkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIC8vIGNvbmZpZyBjaGFuZ2VkXG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkuYWN0aXZlVGFiXCIpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIik7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkucXVlcnlTdHJpbmdcIik7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBRdWVyeUZvcm0oe1xuICBzdWJtaXRDYWxsYmFjayxcbiAgdGFicyxcbiAgZGVmYXVsdFRhYixcbiAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgcmVzdG9yZUNhbGxiYWNrLFxuICBzdG9yZUNhbGxiYWNrLFxuICByZXN0b3JlLFxufSkge1xuICBjb25zdCB7IHJlc3RvcmVRdWVyeVN0cmluZywgcmVzdG9yZUFjdGl2ZUZpbHRlcnMsIHJlc3RvcmVBY3RpdmVUYWIgfSA9IHJlc3RvcmVcbiAgICA/IHJlc3RvcmVDYWxsYmFjayh0YWJzKVxuICAgIDoge307XG4gIGNvbnN0IFtpc1N1Ym1pdHRlZCwgc2V0SXNTdWJtaXR0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcXVlcnlTdHJpbmcsIHNldFF1ZXJ5U3RyaW5nXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoXG4gICAgcmVzdG9yZUFjdGl2ZVRhYiB8fCB0YWJzW2RlZmF1bHRUYWJdLFxuICApO1xuICBjb25zdCBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc10gPSB1c2VTdGF0ZShcbiAgICByZXN0b3JlQWN0aXZlRmlsdGVycyB8fCBbXSxcbiAgKTtcblxuICBjb25zdCBvblN1Ym1pdCA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1N1Ym1pdHRlZCh0cnVlKTtcbiAgICAgIHN0b3JlQ2FsbGJhY2soYWN0aXZlVGFiLCBhY3RpdmVGaWx0ZXJzLCBxdWVyeVN0cmluZyk7XG4gICAgICBjb25zdCBhY3RpdmVUYWJEZWYgPSB0YWJzLmZpbHRlcigodCkgPT4gdC5pZCA9PT0gYWN0aXZlVGFiLmlkKVswXSB8fCB7fTtcbiAgICAgIGNvbnN0IGlzQ3FsID0gZklzQ3FsKHF1ZXJ5U3RyaW5nKTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ID0gaXNDcWwgJiYgZklzU2VsZWN0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgIGNvbnN0IG1ha2VRdWVyeSA9XG4gICAgICAgIGlzQ3FsIHx8ICFhY3RpdmVUYWJEZWYubWFrZVF1ZXJ5ID8gKHgpID0+IHggOiBhY3RpdmVUYWJEZWYubWFrZVF1ZXJ5O1xuICAgICAgY29uc3QgcGFnZVNpemUgPSBpc1NlbGVjdCA/IC0xIDogdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gc3VibWl0Q2FsbGJhY2sobWFrZVF1ZXJ5KHF1ZXJ5U3RyaW5nLCBhY3RpdmVGaWx0ZXJzKSwgcGFnZVNpemUpO1xuICAgIH0sXG4gICAgW1xuICAgICAgdGFicyxcbiAgICAgIGFjdGl2ZVRhYixcbiAgICAgIGFjdGl2ZUZpbHRlcnMsXG4gICAgICBxdWVyeVN0cmluZyxcbiAgICAgIHN1Ym1pdENhbGxiYWNrLFxuICAgICAgc3RvcmVDYWxsYmFjayxcbiAgICBdLFxuICApO1xuXG4gIGNvbnN0IGlzQ3FsID0gZklzQ3FsKHF1ZXJ5U3RyaW5nKTtcblxuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU3VibWl0dGVkOiBpc1N1Ym1pdHRlZCxcbiAgICAgIHF1ZXJ5U3RyaW5nOiBxdWVyeVN0cmluZyxcbiAgICAgIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2s6IGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gICAgfTtcbiAgfSwgW3F1ZXJ5U3RyaW5nLCBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrLCBpc1N1Ym1pdHRlZF0pO1xuXG4gIGNvbnN0IHNldEFjdGl2ZVRhYlJlc2V0RmlsdGVycyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YWIpID0+IHtcbiAgICAgIHNldEFjdGl2ZVRhYih0YWIpO1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhbXSk7XG4gICAgfSxcbiAgICBbc2V0QWN0aXZlRmlsdGVycywgc2V0QWN0aXZlVGFiXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIGF1dG9Db21wbGV0ZT1cIm9mZlwiIG9uU3VibWl0PXtvblN1Ym1pdH0+XG4gICAgICA8UXVlcnlGb3JtQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dH0+XG4gICAgICAgIDxRdWVyeUZvcm1UZXh0RmllbGRcbiAgICAgICAgICByZXN0b3JlUXVlcnlTdHJpbmc9e3Jlc3RvcmVRdWVyeVN0cmluZ31cbiAgICAgICAgICBpc0NxbD17aXNDcWx9XG4gICAgICAgICAgc2V0UXVlcnlTdHJpbmc9e3NldFF1ZXJ5U3RyaW5nfVxuICAgICAgICAvPlxuICAgICAgICB7IWlzQ3FsICYmIChcbiAgICAgICAgICA8UXVlcnlGb3JtVGFic1xuICAgICAgICAgICAgdGFicz17dGFic31cbiAgICAgICAgICAgIGFjdGl2ZVRhYj17YWN0aXZlVGFifVxuICAgICAgICAgICAgc2V0QWN0aXZlVGFiPXtzZXRBY3RpdmVUYWJSZXNldEZpbHRlcnN9XG4gICAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9RdWVyeUZvcm1Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvZm9ybT5cbiAgKTtcbn1cblxuUXVlcnlGb3JtLkF1dG9Db21wbGV0aW9uID0gQXV0b0NvbXBsZXRpb247XG5cbi8vIERlZmF1bHRzIGFyZSBzdWl0YWJsZSBmb3IgdGVzdGluZyBidXQgbm90IGZvciBwcm9kdWN0aW9uLlxuUXVlcnlGb3JtLmRlZmF1bHRQcm9wcyA9IHtcbiAgc3VibWl0Q2FsbGJhY2s6IChxdWVyeVN0cmluZywgcGFnZVNpemUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcInN1Ym1pdCBxdWVyeTogXCIsIHF1ZXJ5U3RyaW5nLCBwYWdlU2l6ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBhbGVydChxdWVyeVN0cmluZyk7XG4gICAgICAvLyByZWxvYWQgcGFnZVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIH0sIDEwMDApO1xuICB9LFxuICB0YWJzOiBnZXRfdGVzdF90YWJzKCksXG4gIGRlZmF1bHRUYWI6IDAsXG4gIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2s6IGdldF90ZXN0X3N1Z2dlc3Rpb25zLFxuICByZXN0b3JlQ2FsbGJhY2s6IHJlc3RvcmUsXG4gIHN0b3JlQ2FsbGJhY2s6IHN0b3JlLFxuICByZXN0b3JlOiBmYWxzZSxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCJyZWFjdC1ib290c3RyYXBcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFF1ZXJ5Rm9ybSB9IGZyb20gXCIuL1F1ZXJ5Rm9ybVwiO1xuXG5sZXQgbGFzdFF1ZXJ5Rm9ybUhlaWdodCA9IDA7XG5sZXQgc2Nyb2xsRG93blRpbWVvdXQgPSB1bmRlZmluZWQ7XG5cbmNvbnN0IHRvZ2dsZVF1ZXJ5UGFuZWwgPSAoY29udGFpbmVyKSA9PiB7XG4gIGlmICh0eXBlb2Ygc2Nyb2xsRG93blRpbWVvdXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsRG93blRpbWVvdXQpO1xuICB9XG4gIGNvbnN0IHsgdG9wLCBib3R0b20gfSA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgaWYgKGxhc3RRdWVyeUZvcm1IZWlnaHQgIT09IGJvdHRvbSAtIHRvcCkge1xuICAgIC8vIE9ubHkgdGhlIGhlaWdodCBvZiB0aGUgZm9ybSBoYXMgY2hhbmdlZC4gVGhpcyBpcyBub3QgYWN0dWFsbHkgYSBzY3JvbGwgZXZlbnQuXG4gICAgbGFzdFF1ZXJ5Rm9ybUhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICByZXR1cm47XG4gIH1cblxuICBzY3JvbGxEb3duVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHNjcm9sbERvd25UaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIGlmICh3aW5kb3cucGFnZVlPZmZzZXQgPiBsYXN0UXVlcnlGb3JtSGVpZ2h0KSB7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImNvbmRlbnNlZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJjb25kZW5zZWRcIik7XG4gICAgfVxuICB9LCAyMDApO1xufTtcblxuY29uc3QgUXVlcnlQYW5lbCA9IChwcm9wcykgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHByb3BzLnNjcm9sbEhhbmRsZXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBwcm9wcy5zY3JvbGxIYW5kbGVyKTtcbiAgICB9O1xuICB9LCBbcHJvcHMuc2Nyb2xsSGFuZGxlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxRdWVyeUZvcm0gey4uLnByb3BzfSAvPlxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuUXVlcnlQYW5lbC5wcm9wVHlwZXMgPSB7XG4gIHNjcm9sbEhhbmRsZXI6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IHsgUXVlcnlQYW5lbCwgdG9nZ2xlUXVlcnlQYW5lbCB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQnJhbmRpbmcgfSBmcm9tIFwiLi4vQnJhbmRpbmdcIjtcbmltcG9ydCB7IE5hdmJhciwgQ29udGFpbmVyLCBOYXYsIE5hdkRyb3Bkb3duIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcFwiO1xuaW1wb3J0IHsgVXNlckNvbXBvbmVudCB9IGZyb20gXCIuL1VzZXJDb21wb25lbnRcIjtcbmltcG9ydCB7IFF1ZXJ5UGFuZWwsIHRvZ2dsZVF1ZXJ5UGFuZWwgfSBmcm9tIFwiLi9RdWVyeVBhbmVsXCI7XG5cbmNsYXNzIE5hdmlnYXRpb25NYW5hZ2VySW1wbCB7XG4gIGNvbnN0cnVjdG9yKHsgaXRlbXMsIGJyYW5kLCB1c2VyX2NvbXBvbmVudCB9KSB7XG4gICAgdGhpcy5pdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgIHRoaXMuYnJhbmQgPSBicmFuZCB8fCBCcmFuZGluZy5uYW1lO1xuICAgIHRoaXMudXBkYXRlX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMudXNlcl9jb21wb25lbnQgPSB1c2VyX2NvbXBvbmVudDtcbiAgfVxuICByZWdpc3RlclVwZGF0ZUxpc3RlbmVyKGxpc3RlbmVyKSB7XG4gICAgdGhpcy51cGRhdGVfbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG4gIGFkZExpbmsobGluaykge1xuICAgIHRoaXMuaXRlbXMucHVzaChsaW5rKTtcbiAgICB0aGlzLm5vdGlmeVVwZGF0ZUxpc3RlbmVycygpO1xuICB9XG4gIG5vdGlmeVVwZGF0ZUxpc3RlbmVycygpIHtcbiAgICB0aGlzLnVwZGF0ZV9saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBOYXZpZ2F0aW9uTWFuYWdlciA9IG5ldyBOYXZpZ2F0aW9uTWFuYWdlckltcGwoe1xuICBpdGVtczogW1xuICAgIDxOYXYuTGluayBrZXk9XCIwXCIgaHJlZj1cIiNhY3Rpb24xXCI+XG4gICAgICBIb21lXG4gICAgPC9OYXYuTGluaz4sXG4gICAgPE5hdi5MaW5rIGtleT1cIjFcIiBocmVmPVwiI2FjdGlvbjJcIj5cbiAgICAgIExpbmtcbiAgICA8L05hdi5MaW5rPixcbiAgICA8TmF2RHJvcGRvd24ga2V5PVwiMlwiIHRpdGxlPVwiTGlua1wiPlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj1cIiNhY3Rpb24zXCI+QWN0aW9uPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj1cIiNhY3Rpb240XCI+QW5vdGhlciBhY3Rpb248L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICA8TmF2RHJvcGRvd24uRGl2aWRlciAvPlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj1cIiNhY3Rpb241XCI+U29tZXRoaW5nIGVsc2UgaGVyZTwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICA8L05hdkRyb3Bkb3duPixcbiAgICA8TmF2Lkxpbmsga2V5PVwiM1wiIGhyZWY9XCIjXCIgZGlzYWJsZWQ+XG4gICAgICBMaW5rXG4gICAgPC9OYXYuTGluaz4sXG4gIF0sXG4gIHVzZXJfY29tcG9uZW50OiA8VXNlckNvbXBvbmVudCAvPixcbn0pO1xuXG5leHBvcnQgY29uc3QgVG9wTmF2aWdhdGlvbkJhciA9ICgpID0+IHtcbiAgY29uc3QgcGFuZWxSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB0b2dnbGVRdWVyeVBhbmVsKHBhbmVsUmVmLmN1cnJlbnQpO1xuICB9LCBbcGFuZWxSZWZdKTtcblxuICByZXR1cm4gKFxuICAgIDxOYXZiYXIgYmc9XCJsaWdodFwiIGV4cGFuZD1cImxnXCI+XG4gICAgICA8Q29udGFpbmVyIGZsdWlkPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJkLWxnLW5vbmUgZC1pbmxpbmVcIj57TmF2aWdhdGlvbk1hbmFnZXIuYnJhbmR9PC9zcGFuPlxuICAgICAgICA8TmF2YmFyLlRvZ2dsZSBhcmlhLWNvbnRyb2xzPVwibmF2YmFyU2Nyb2xsXCIgLz5cbiAgICAgICAgPE5hdmJhci5Db2xsYXBzZSBpZD1cIm5hdmJhclNjcm9sbFwiPlxuICAgICAgICAgIDxOYXZiYXIuQnJhbmQgY2xhc3NOYW1lPVwiZC1ub25lIGQtbGctaW5saW5lXCI+XG4gICAgICAgICAgICB7TmF2aWdhdGlvbk1hbmFnZXIuYnJhbmR9XG4gICAgICAgICAgPC9OYXZiYXIuQnJhbmQ+XG4gICAgICAgICAgPE5hdiBjbGFzc05hbWU9XCJtZS1hdXRvIG15LTIgbXktbGctMFwiPlxuICAgICAgICAgICAge05hdmlnYXRpb25NYW5hZ2VyLml0ZW1zLm1hcCgoaXRlbSwga2V5KSA9PiAoXG4gICAgICAgICAgICAgIDxzcGFuIGtleT17a2V5fT57aXRlbX08L3NwYW4+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L05hdj5cbiAgICAgICAgICA8TmF2IHJlZj17cGFuZWxSZWZ9IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LXBhbmVsIG1lLWxnLTIgZnVsbFwiPlxuICAgICAgICAgICAgPFF1ZXJ5UGFuZWwgcmVzdG9yZT17dHJ1ZX0gc2Nyb2xsSGFuZGxlcj17c2Nyb2xsSGFuZGxlcn0gLz5cbiAgICAgICAgICA8L05hdj5cbiAgICAgICAgICA8TmF2PntOYXZpZ2F0aW9uTWFuYWdlci51c2VyX2NvbXBvbmVudH08L05hdj5cbiAgICAgICAgPC9OYXZiYXIuQ29sbGFwc2U+XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICA8L05hdmJhcj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUb3BOYXZpZ2F0aW9uQmFyIH0gZnJvbSBcIi4vVG9wTmF2aWdhdGlvbkJhclwiO1xuXG5leHBvcnQgY29uc3QgSGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwic2hhZG93LXNtIGJnLWxpZ2h0XCI+XG4gICAgICA8VG9wTmF2aWdhdGlvbkJhcj48L1RvcE5hdmlnYXRpb25CYXI+XG4gICAgPC9oZWFkZXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jbGFzcyBGb290ZXJNYW5hZ2VySW1wbCB7XG4gIGNvbnN0cnVjdG9yKHsgaXRlbXMsIGNvcHlSaWdodCB9KSB7XG4gICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuICAgIHRoaXMuY29weVJpZ2h0ID0gY29weVJpZ2h0O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBGb290ZXJNYW5hZ2VyID0gbmV3IEZvb3Rlck1hbmFnZXJJbXBsKHtcbiAgaXRlbXM6IFtcbiAgICA8YVxuICAgICAga2V5PVwiMFwiXG4gICAgICBjbGFzc05hbWU9XCJuYXYtbGluayBweC0yXCJcbiAgICAgIGhyZWY9XCJodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwtMy4wLmVuLmh0bWxcIlxuICAgID5cbiAgICAgIExpY2Vuc2UgKEFHUEwtdjMpXG4gICAgPC9hPixcbiAgICA8YSBrZXk9XCIxXCIgY2xhc3NOYW1lPVwibmF2LWxpbmsgcHgtMlwiIGhyZWY9XCJodHRwczovL2dpdGxhYi5jb20vY2Fvc2RiXCI+XG4gICAgICBTb3VyY2VzXG4gICAgPC9hPixcbiAgICA8YSBrZXk9XCIzXCIgY2xhc3NOYW1lPVwibmF2LWxpbmsgcHgtMlwiIGhyZWY9XCJodHRwczovL2RvY3MuaW5kaXNjYWxlLmNvbS9cIj5cbiAgICAgIERvY3VtZW50YXRpb25cbiAgICA8L2E+LFxuICBdLFxuICBjb3B5UmlnaHQ6IFwiwqkgMjAyMSBJbmRpU2NhbGUgR21iSFwiLFxufSk7XG5cbmV4cG9ydCBjb25zdCBGb290ZXIgPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9vdGVyLWJvcmRlclwiIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb3Rlci1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIHB5LTMgbXktNFwiPlxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJuYXYgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcGItMyBtYi0zXCI+XG4gICAgICAgICAgICB7Rm9vdGVyTWFuYWdlci5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNwYWNlciA9XG4gICAgICAgICAgICAgICAgaW5kZXggPT09IDAgPyBudWxsIDogPGxpIGNsYXNzTmFtZT1cIm5hdi1pdGVtIHB4LTFcIj7igKI8L2xpPjtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c3BhY2VyfVxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cIm5hdi1pdGVtXCI+e2l0ZW19PC9saT5cbiAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPntGb290ZXJNYW5hZ2VyLmNvcHlSaWdodH08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gICk7XG59O1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAyMyBUaW1tIEZpdHNjaGVuIDx0LmZpdHNjaGVuQGluZGlzY2FsZS5jb20+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgSW5kaVNjYWxlIEdtYkggPGluZm9AaW5kaXNjYWxlLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBXcmFwcGVyIGZvciBoYW5kbGluZyBQcm9taXNlcy4gVGhlIHJlc3VsdHMgb2YgdGhlIHByb21pc2UgYXJlIGJlaW5nXG4gKiByZW5kZXJlZC4gSW4gdGhlIG1lYW4gdGltZSwgYSBMb2FkaW5nSW5mbyBpcyBiZWluZyBzaG93bi5cbiAqXG4gKiBFeGFtcGxlOlxuICogICA8QXdhaXQgcHJvbWlzZT17ZmV0Y2hEYXRhKCl9XG4gKiAgICAgICAgICB0aGVuPXtkYXRhID0+IGNyZWF0ZVRhYmxlKGRhdGEpfVxuICogICAgICAgICAgY2F0Y2g9e2Vycm9yID0+IFwiPGRpdj5FcnJvcjogXCIgKyBlcnJvci5tZXNzYWdlPC9kaXY+fS8+XG4gKlxuICogV2hlbiBmZXRjaERhdGEgcmVzb2x2ZXMsIHRoZSBkYXRhIGlzIGJlaW5nIHByZXNlbnRlZCBhcyBhIHRhYmxlLiBBbiBlcnJvclxuICogZGl2IGlzIGJlaW5nIHNob3duIGlmIGZldGNoRGF0YSBmYWlscy5cbiAqXG4gKiBOQi4gRXF1aXZhbGVudGx5LCB5b3UgY291bGQgYWxzbyBkbzpcbiAqICAgPEF3YWl0IHByb21pc2U9e2ZldGNoRGF0YSgpXG4gKiAgICAgICAgICAudGhlbihkYXRhID0+IGNyZWF0ZVRhYmxlKGRhdGEpXG4gKiAgICAgICAgICAuY2F0Y2g9KGVycm9yID0+IFwiPGRpdj5FcnJvcjogXCIgKyBlcnJvci5tZXNzYWdlPC9kaXY+KVxuICogICB9Lz5cbiAqXG4gKiBAcGFyYW0ge1Byb21pc2V9IHByb21pc2UgLSBNdXN0IHJlc29sdmUgdG8gYSBSZWFjdC5Db21wb25lbnQgdW5sZXNzIHRoZVxuICogcGFyYW1ldGVyIGB0aGVuYCBkb2VzIHRoZSBjb252ZXNpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbdGhlbl0gLSBmdW5jdGlvbiB3aXRoIG9uZSBwYXJhbWV0ZXIuIEl0IGlzIGJlaW5nIGNhbGxlZFxuICogd2hlbiB0aGUgcHJvbWlzZSByZXNvbHZlcy4gSXQgc2hvdWxkIHByZXByb2Nlc3MgdGhlIHByb21pc2VzJyByZXN1bHRzIGFuZFxuICogbXVzdCBhIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYXRjaF0gLSBmdW5jdGlvbiB3aXRoIG9uZSBwYXJhbWV0ZXIuIEl0IGlzIGJlaW5nIGNhbGxlZFxuICogd2hlbiB0aGUgcHJvbWlzZSByZWplY3RzLiBJdCBzaG91bGQgcHJlcHJvY2VzcyB0aGUgZXJyb3IgYW5kIG11c3QgcmV0dXJuIGFcbiAqIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7UmVhY3QuQ29tcG9uZW50fSBbbG9hZGluZ10gLSBBIGNvbXBvbmVudCB3aGljaCB3aWxsIHNob3cgdW50aWwgdGhlXG4gKiBwcm9taXNlIHJlc29sdmVzLiBJZiB1bmRlZmluZWQsIG5vdGhpbmcgd2lsbCBiZSBzaG93bi5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gQXdhaXQocHJvcHMpIHtcbiAgY29uc3QgbG9hZGluZyA9IHByb3BzLmxvYWRpbmcgfHwgPExvYWRpbmdJbmZvIC8+O1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKGxvYWRpbmcpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlID0gYXN5bmMgKHRoZVByb21pc2UsIGRvVGhlbiwgZG9DYXRjaCkgPT4ge1xuICAgICAgdmFyIHJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoZVByb21pc2U7XG4gICAgICAgIGlmIChkb1RoZW4pIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBkb1RoZW4ocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGRvQ2F0Y2gpIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBkb0NhdGNoKGVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBfZXJyb3IgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgICAgICAgIHJlc3VsdCA9IDxzcGFuPkFuIHVuaGFuZGxlZCBlcnJvciBvY2N1cmVkOiB7X2Vycm9yfTwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKHJlc3VsdCk7XG4gICAgfTtcblxuICAgIGhhbmRsZShwcm9wcy5wcm9taXNlLCBwcm9wcy50aGVuLCBwcm9wcy5jYXRjaCk7XG4gIH0sIFtwcm9wcy5wcm9taXNlLCBwcm9wcy50aGVuLCBwcm9wcy5jYXRjaCwgc2V0U3RhdGVdKTtcblxuICByZXR1cm4gc3RhdGU7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IENoZWNrYm94ID0gKHtcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIGljb25zLFxuICBzdHlsZSxcbiAgY29sb3IsXG4gIHJlYWRPbmx5LFxuICBvbkNoYW5nZSxcbiAgb25CbHVyLFxuICBzZXRWYWx1ZSxcbiAgdGl0bGUsXG59KSA9PiB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUodmFsdWUgfHwgXCJmYWxzZVwiKTtcbiAgc3R5bGUgPSBzdHlsZSB8fCBcImNoZWNrXCI7XG4gIGNvbG9yID1cbiAgICBjb2xvciB8fFxuICAgIHtcbiAgICAgIGNoZWNrOiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtc3VjY2Vzc1wiLFxuICAgICAgICBmYWxzZTogXCIgdGV4dC1ib2R5XCIsXG4gICAgICAgIHBhcnRpYWw6IFwiIGNvbG9yLWxpZ2h0LWdyZWVuXCIsXG4gICAgICB9LFxuICAgICAgXCJjaGVjay1maWxsXCI6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1zdWNjZXNzXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgY29sb3ItbGlnaHQtZ3JlZW5cIixcbiAgICAgIH0sXG4gICAgICB4OiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtZGFuZ2VyXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgdGV4dC13YXJuaW5nXCIsXG4gICAgICB9LFxuICAgICAgXCJ4LWZpbGxcIjoge1xuICAgICAgICB0cnVlOiBcIiB0ZXh0LWRhbmdlclwiLFxuICAgICAgICBmYWxzZTogXCIgdGV4dC1ib2R5XCIsXG4gICAgICAgIHBhcnRpYWw6IFwiIHRleHQtd2FybmluZ1wiLFxuICAgICAgfSxcbiAgICB9W3N0eWxlXTtcblxuICBjb25zdCBpY29uQ2xhc3NOYW1lTWFwID0ge1xuICAgIHg6IHtcbiAgICAgIHRydWU6IFwiYmkgYmkteC1zcXVhcmVcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlXCIgKyBjb2xvcltcInBhcnRpYWxcIl0sXG4gICAgfSxcbiAgICBcIngtZmlsbFwiOiB7XG4gICAgICB0cnVlOiBcImJpIGJpLXgtc3F1YXJlLWZpbGxcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlLWZpbGxcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICAgIGNoZWNrOiB7XG4gICAgICB0cnVlOiBcImJpIGJpLWNoZWNrLXNxdWFyZVwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmVcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICAgIFwiY2hlY2stZmlsbFwiOiB7XG4gICAgICB0cnVlOiBcImJpIGJpLWNoZWNrLXNxdWFyZS1maWxsXCIgKyBjb2xvcltcInRydWVcIl0sXG4gICAgICBmYWxzZTogXCJiaSBiaS1zcXVhcmVcIiArIGNvbG9yW1wiZmFsc2VcIl0sXG4gICAgICBwYXJ0aWFsOiBcImJpIGJpLXNsYXNoLXNxdWFyZS1maWxsXCIgKyBjb2xvcltcInBhcnRpYWxcIl0sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCB0cmFuc2l0aW9ucyA9IHtcbiAgICBwYXJ0aWFsOiBcImZhbHNlXCIsXG4gICAgdHJ1ZTogXCJmYWxzZVwiLFxuICAgIGZhbHNlOiBcInRydWVcIixcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHt9O1xuXG4gIHZhciBpbnB1dDtcbiAgaWYgKCFyZWFkT25seSkge1xuICAgIGlucHV0ID0gKFxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzTmFtZT1cImNhb3NkYi1jaGVjay1ib3gtaW5wdXRcIlxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdmFsdWU9e3N0YXRlfVxuICAgICAgLz5cbiAgICApO1xuXG4gICAgcHJvcHMub25DbGljayA9ICgpID0+IHtcbiAgICAgIHNldFZhbHVlKG5hbWUsIHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgICBzZXRTdGF0ZSh0cmFuc2l0aW9uc1tzdGF0ZV0pO1xuICAgIH07XG5cbiAgICBwcm9wcy5vbktleURvd24gPSAoZSkgPT4ge1xuICAgICAgaWYgKGUuY29kZSA9PT0gXCJTcGFjZVwiKSB7XG4gICAgICAgIHNldFZhbHVlKG5hbWUsIHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgICAgIHNldFN0YXRlKHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJvcHMudGFiSW5kZXggPSBcIjBcIjtcbiAgICBwcm9wcy5vbkJsdXIgPSBvbkJsdXI7XG4gIH1cblxuICBpY29ucyA9IGljb25zIHx8IHt9O1xuXG4gIGNvbnN0IGljb24gPSBpY29uc1tzdGF0ZV0gfHwgKFxuICAgIDxpXG4gICAgICBjbGFzc05hbWU9e1wibXMtMSBjYW9zZGItY2hlY2tib3gtaWNvbiBcIiArIGljb25DbGFzc05hbWVNYXBbc3R5bGVdW3N0YXRlXX1cbiAgICAvPlxuICApO1xuXG4gIHZhciBjbGFzc05hbWUgPSBcImNhb3NkYi1jaGVja2JveCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI7XG4gIGlmIChyZWFkT25seSkge1xuICAgIGNsYXNzTmFtZSArPSBcIiByZWFkLW9ubHlcIjtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICBhcmlhLWNoZWNrZWQ9e3N0YXRlfVxuICAgID5cbiAgICAgIHtpbnB1dH1cbiAgICAgIDxzcGFuIHsuLi5wcm9wc30+e2ljb259PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbkNoZWNrYm94LnByb3BUeXBlcyA9IHtcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mKFtcInRydWVcIiwgXCJmYWxzZVwiXSksXG4gIGljb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdHlsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICBzZXRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuY29uc3QgQ2FyZCA9IGZ1bmN0aW9uICh7IGNsYXNzTmFtZSwgY2hpbGRyZW4gfSkge1xuICBjbGFzc05hbWUgPSBjbGFzc05hbWUgfHwgXCJcIjtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgY2FyZCBtdC0zIHJvdW5kZWQgc2hhZG93ICR7Y2xhc3NOYW1lfWB9PntjaGlsZHJlbn08L2Rpdj5cbiAgKTtcbn07XG5cbkNhcmQucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuQ2FyZC5Cb2R5ID0gZnVuY3Rpb24gQ2FyZEJvZHkoeyBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtYm9keVwiPntjaGlsZHJlbn08L2Rpdj47XG59O1xuXG5DYXJkLkJvZHkucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuRm9vdGVyID0gZnVuY3Rpb24gQ2FyZEZvb3Rlcih7IGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtZm9vdGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPntjaGlsZHJlbn08L2Rpdj5cbiAgKTtcbn07XG5cbkNhcmQuRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLlRpdGxlID0gZnVuY3Rpb24gQ2FyZFRpdGxlKHsgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gPGgzIGNsYXNzTmFtZT1cImNhcmQtdGl0bGVcIj57Y2hpbGRyZW59PC9oMz47XG59O1xuXG5DYXJkLlRpdGxlLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLkhlYWRlciA9IGZ1bmN0aW9uIENhcmRIZWFkZXIoeyB0aXRsZSwgY2hpbGRyZW4gfSkge1xuICB0aXRsZSA9IHRpdGxlID8gPENhcmQuVGl0bGU+e3RpdGxlfTwvQ2FyZC5UaXRsZT4gOiB1bmRlZmluZWQ7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkLWhlYWRlclwiPlxuICAgICAge3RpdGxlfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2FyZC5IZWFkZXIucHJvcFR5cGVzID0ge1xuICB0aXRsZTogUHJvcFR5cGVzLm5vZGUsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuZXhwb3J0IHsgQ2FyZCB9O1xuIiwiZnVuY3Rpb24gX19fJGluc2VydFN0eWxlKGNzcykge1xuICAgIGlmICghY3NzIHx8IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpO1xuICAgIHN0eWxlLmlubmVySFRNTCA9IGNzcztcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICByZXR1cm4gY3NzO1xufVxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RfX2RlZmF1bHQgZnJvbSAncmVhY3QnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbnZhciBfX2Fzc2lnbiQxID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiQxID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBfX2Fzc2lnbiQxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlciQxKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gX19nZW5lcmF0b3IkMSh0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBfX3NwcmVhZEFycmF5JDEodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cblxuLyoqXG4gKiBHaXZlcyBhIFhYLlhYIGZvcm1hdCBpbiBCeXRlcyBLQiwgTUIsIEdCIG9yIFRCXG4gKiBAcGFyYW0gZmlsZVNpemUgZmlsZSBzaXplIHRvIGdpdmUgZm9ybWF0IGluIEJ5dGVzXG4gKi9cbnZhciBmaWxlU2l6ZUZvcm1hdGVyID0gZnVuY3Rpb24gKGZpbGVTaXplKSB7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgaWYgKCFmaWxlU2l6ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoZmlsZVNpemUgPCAxMDI0KSB7XG4gICAgICAgIHJlc3VsdCA9IGZpbGVTaXplICsgXCIgQnl0ZXNcIjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vS0JcbiAgICAgICAgaWYgKGZpbGVTaXplIDwgMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChmaWxlU2l6ZSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcIiBLQlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpbGVTaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoKGZpbGVTaXplIC8gMTAyNCkgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCIgTUJcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaWxlU2l6ZSA8IDEwMjQgKiAxMDI0ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9ICgoKGZpbGVTaXplIC8gMTAyNCkgLyAxMDI0KSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcIiBHQlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKCgoKGZpbGVTaXplIC8gMTAyNCkgLyAxMDI0KSAvIDEwMjQpIC8gMTAyNCkudG9GaXhlZCgyKSArIFwiIFRCXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogSXRhbGlhbiB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZUl0YWxpYW4gPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIlRyYXNjaW5hIHF1aSBpIHR1b2kgZmlsZVwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIkNhcmljYW1lbnRvIGRpIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBmaWxlXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIkZpbGUgY2FyaWNhdGk6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIEZpbGUgcmlmaXV0YXRpOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJOZXNzdW4gZmlsZSB2YWxpZG8gaW4gYXR0ZXNhIGRpIGVzc2VyZSBjYXJpY2F0b1wiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiVHV0dGkgaSB0aXBpIGRpIGZpbGUgc29ubyBhY2NldHRhdGlcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlRpcGkgZGkgZmlsZSBjb25zZW50aXRpOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJDYXJpY2FtZW50b1wiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIkRpbWVuc2lvbmUgbWFzc2ltYSBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiRmlsZSAgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIklsIGZpbGUgw6ggc3RhdG8gY2FyaWNhdG8gY29uIHN1Y2Nlc3NvIFwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvcmUgZGkgY2FyaWNhbWVudG8gZGVsIGZpbGVcIixcbn07XG4vKipcbiAqIEl0YWxpYW4gdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1JdGFsaWFuID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJOb21lOiBcIixcbiAgICAgICAgc2l6ZTogXCJEaW1lbnNpb25lOiBcIixcbiAgICAgICAgdHlwZTogXCJUaXBvOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJwcmVwYXJhemlvbmVcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIkluIGNvcnNvXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiU3VjY2Vzc29cIixcbiAgICAgICAgdmFsaWQ6IFwiVmFsaWRvXCIsXG4gICAgICAgIGRlbmllZDogXCJOb24gdsOhbGlkb1wiLFxuICAgICAgICBlcnJvcjogXCJFcnJvcmVcIixcbiAgICAgICAgYWJvcnRlZDogXCJJbnRlcnJvdHRvXCJcbiAgICB9LFxufTtcbi8qKlxuICogSXRhbGlhbiB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JJdGFsaWFuID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHsgcmV0dXJuIFwiSWwgZmlsZSBcXHUwMEU4IG1vbHRvIGdyYW5kZS4gSWwgdGFtLiBpbCBtYXNzaW1vIFxcdTAwRTggXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpOyB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlRpcG8gZGkgZmlsZSBpbGxlZ2FsZVwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7IHJldHVybiBcIk51bWVybyBtYXNzaW1vIGRpIGZpbGUgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpIHJhZ2dpdW50b1wiKTsgfVxufTtcblxuLyoqXG4gKiBGcmVuY2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVGcmVuY2ggPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIkTDqXBvc2V6IHZvcyBmaWNoaWVycyBpY2lcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJFbnZvaSBkZSBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgZmljaGllcnNcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiRmljaGllcnMgdFxcdTAwRTlsXFx1MDBFOWNoYXJnXFx1MDBFOXMgOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBGaWNoaWVycyByZWpldFxcdTAwRTlzOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJBdWN1biBmaWNoaWVyIHZhbGlkZSBuZSBtYW5xdWVcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlRvdXMgdHlwZXMgZGUgZmljaGllcnMgYWNjZXB0XFx1MDBFOXMgXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJUeXBlcyBkZSBmaWNoaWVyOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJFbnZveWVyXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiVGFpbGxlIG1heGltYWxlIFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJGaWNoaWVycyAgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIkxlIGZpY2hpZXIgYSDDqXTDqSB0w6lsw6ljaGFyZ8OpIGF2ZWMgc3VjY8Ooc1wiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJldXIgbG9ycyBkdSB0w6lsw6ljaGFyZ2VtZW50IFwiLFxufTtcbi8qKlxuICogRnJlbmNoIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtRnJlbmNoID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJMZSBub206IFwiLFxuICAgICAgICBzaXplOiBcIkxlIHRhaWxsZTogXCIsXG4gICAgICAgIHR5cGU6IFwiTGUgdHlwZTogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwicHLDqXBhcmVyXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJFbiBjb3Vyc1wiLFxuICAgICAgICBzdWNjZXNzOiBcIlN1Y2PDqHNcIixcbiAgICAgICAgdmFsaWQ6IFwiVmFsaWRlXCIsXG4gICAgICAgIGRlbmllZDogXCJSZWZ1c8OpXCIsXG4gICAgICAgIGVycm9yOiBcIkVycmV1clwiLFxuICAgICAgICBhYm9ydGVkOiBcIkludGVycm9tcHVcIlxuICAgIH0sXG59O1xuLyoqXG4gKiBGcmVuY2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yRnJlbmNoID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHsgcmV0dXJuIFwiTGUgZmljaGllciBlc3QgdHJcXHUwMEU4cyB2b2x1bWluZXV4LiBMZSB0YW0uIGxlIG1heGltdW0gZXN0IGRlIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTsgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJUeXBlIGRlIGZpY2hpZXIgaWxsXFx1MDBFOWdhbCBcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykgeyByZXR1cm4gXCJMaW1pdGUgZGUgZmljaGllcnMgYXR0ZWludGUgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpOyB9XG59O1xuXG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVFbmdsaXNoID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJEcm9wIHlvdXIgZmlsZXMgaGVyZVwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIlVwbG9hZGluZyBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgZmlsZXNcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiVXBsb2FkZWQgZmlsZXM6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIFJlamVjdGVkIGZpbGVzOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJUaGVyZSBpcyBubyBtaXNzaW5nIHZhbGlkIGZpbGUgdG8gdXBsb2FkXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJBbGwgZmlsZSB0eXBlcyBhY2NlcHRlZFwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiQWxsb3dlZCB0eXBlczogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwiVXBsb2FkIGZpbGVzXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiTWF4IGZpbGUgc2l6ZTogXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIkZpbGVzIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCJGaWxlIHdhcyBzdWNjZXNzZnVseSB1cGxvYWRlZFwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvciBvbiB1cGxvYWRpbmcuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuXCIsXG59O1xuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtRW5nbGlzaCA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTmFtZTogXCIsXG4gICAgICAgIHNpemU6IFwiU2l6ZTogXCIsXG4gICAgICAgIHR5cGU6IFwiVHlwZTogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwiUHJlcGFyaW5nXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJVcGxvYWRpbmdcIixcbiAgICAgICAgc3VjY2VzczogXCJTdWNjZXNzXCIsXG4gICAgICAgIHZhbGlkOiBcIlZhbGlkXCIsXG4gICAgICAgIGRlbmllZDogXCJOb3QgdmFsaWRcIixcbiAgICAgICAgZXJyb3I6IFwiRXJyb3JcIixcbiAgICAgICAgYWJvcnRlZDogXCJBYm9ydGVkXCJcbiAgICB9LFxufTtcbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JFbmdsaXNoID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiRmlsZSBpcyB0b28gYmlnLiBNYXggZmlsZSBzaXplIGFsbG93ZWQgaXMgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiRmlsZSB0eXBlIGlzIG5vdCBhbGxvd2VkXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiTWF4IGFtb3VudCBvZiBmaWxlcyAoXCIuY29uY2F0KG1heEZpbGVzLCBcIikgaGFzIGJlZW4gcmVhY2hlZFwiKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFNwYW5pc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVTcGFuaXNoID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJTdWVsdGEgdHVzIGFyY2hpdm9zIGFxdcOtXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiU3ViaWVuZG8gXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIGFyY2hpdm9zXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIkFyY2hpdm9zIHN1Ymlkb3M6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIEFyY2hpdm9zIHJlY2hhemFkb3M6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIk5vIGhheSBhcmNoaXZvcyB2XFx1MDBFMWxpZG9zIHBlbmRpZW50ZXMgcG9yIHN1YmlyXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJUb2RvcyBsb3MgdGlwb3MgZGUgYXJjaGl2byBhY2VwdGFkb3NcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlRpcG8ocykgZGUgYXJjaGl2byBwZXJtaXRpZG9zOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJTdWJpclwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlRhbS4gbVxcdTAwRTF4aW1vIFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJBcmNoaXZvcyBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwiRWwgYXJjaGl2byBzZSBzdWJpw7MgY29ycmVjdGFtZW50ZVwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvciBhbCBzdWJpciBlbCBhcmNoaXZvXCIsXG59O1xuLyoqXG4gKiBTcGFuaXNoIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtU3BhbmlzaCA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTm9tYnJlOiBcIixcbiAgICAgICAgc2l6ZTogXCJUYW1hw7FvOiBcIixcbiAgICAgICAgdHlwZTogXCJUaXBvOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJQcmVwYXJhbmRvXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJTdWJpZW5kb1wiLFxuICAgICAgICBzdWNjZXNzOiBcIsOJeGl0b1wiLFxuICAgICAgICB2YWxpZDogXCJWw6FsaWRvXCIsXG4gICAgICAgIGRlbmllZDogXCJObyB2w6FsaWRvXCIsXG4gICAgICAgIGVycm9yOiBcIkVycm9yXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiQW51bGFkb1wiXG4gICAgfSxcbn07XG4vKipcbiAqIFNwYW5pc2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yU3BhbmlzaCA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7IHJldHVybiBcIkVsIGFyY2hpdm8gZXMgbXV5IGdyYW5kZS4gRWwgdGFtLiBtXFx1MDBFMXhpbW8gZXMgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpOyB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlRpcG8gZGUgYXJjaGl2byBubyBwZXJtaXRpZG9cIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykgeyByZXR1cm4gXCJDYW50aWRhZCBtXFx1MDBFMXhpbWEgZGUgYXJjaGl2b3MgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpIGFsY2FuemFkYVwiKTsgfVxufTtcblxuLyoqXG4gKiBSdXNzaWFuIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lUnVzc2lhbiA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwi0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YHRjtC00LAg0YHQstC+0Lgg0YTQsNC50LvRiy5cIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJcXHUwNDEyXFx1MDQ0QlxcdTA0MzNcXHUwNDQwXFx1MDQ0M1xcdTA0MzdcXHUwNDNBXFx1MDQzMCBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0M0VcXHUwNDMyXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIlxcdTA0MTdcXHUwNDMwXFx1MDQzM1xcdTA0NDBcXHUwNDQzXFx1MDQzNlxcdTA0MzVcXHUwNDNEXFx1MDQzRSBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzI6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIFxcdTA0M0VcXHUwNDQyXFx1MDQzQVxcdTA0M0JcXHUwNDNFXFx1MDQzRFxcdTA0MzVcXHUwNDNEXFx1MDQzRFxcdTA0NEJcXHUwNDQ1IFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMjogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiXFx1MDQxNFxcdTA0MzVcXHUwNDM5XFx1MDQ0MVxcdTA0NDJcXHUwNDMyXFx1MDQzOFxcdTA0NDJcXHUwNDM1XFx1MDQzQlxcdTA0NENcXHUwNDNEXFx1MDQ0QlxcdTA0MzkgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQiBcXHUwNDNEXFx1MDQzNSBcXHUwNDNFXFx1MDQ0MlxcdTA0NDFcXHUwNDQzXFx1MDQ0MlxcdTA0NDFcXHUwNDQyXFx1MDQzMlxcdTA0NDNcXHUwNDM1XFx1MDQ0MiBcXHUwNDM0XFx1MDQzQlxcdTA0NEYgXFx1MDQzN1xcdTA0MzBcXHUwNDMzXFx1MDQ0MFxcdTA0NDNcXHUwNDM3XFx1MDQzQVxcdTA0MzhcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlxcdTA0MUZcXHUwNDQwXFx1MDQzOFxcdTA0M0RcXHUwNDM4XFx1MDQzQ1xcdTA0MzBcXHUwNDRFXFx1MDQ0MlxcdTA0NDFcXHUwNDRGIFxcdTA0MzJcXHUwNDQxXFx1MDQzNSBcXHUwNDQyXFx1MDQzOFxcdTA0M0ZcXHUwNDRCIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMiBcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlxcdTA0MTRcXHUwNDNFXFx1MDQzRlxcdTA0NDNcXHUwNDQxXFx1MDQ0MlxcdTA0MzhcXHUwNDNDXFx1MDQ0QlxcdTA0MzUgXFx1MDQ0MlxcdTA0MzhcXHUwNDNGXFx1MDQ0QjogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwi0J7RgtC/0YDQsNCy0LjRgtGMXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiXFx1MDQzQ1xcdTA0MzBcXHUwNDNBXFx1MDQ0MSBcXHUwNDQwXFx1MDQzMFxcdTA0MzdcXHUwNDNDXFx1MDQzNVxcdTA0NDA6IFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJcXHUwNDI0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQ0QiBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwi0KTQsNC50Lsg0LHRi9C7INGD0YHQv9C10YjQvdC+INC30LDQs9GA0YPQttC10L1cIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwi0J7RiNC40LHQutCwINC/0YDQuCDQt9Cw0LPRgNGD0LfQutC1XCIsXG59O1xuLyoqXG4gKiBSdXNzaWFuIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqXG4gKi9cbnZhciBGaWxlSXRlbVJ1c3NpYW4gPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIlxcdTA0MThcXHUwNDNDXFx1MDQ0RjogXCIsXG4gICAgICAgIHNpemU6IFwi0KDQsNC30LzQtdGAOiBcIixcbiAgICAgICAgdHlwZTogXCJU0LjQvzogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwi0L/QvtC00LPQvtGC0L7QstC60LBcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcItCX0LDQs9GA0YPQt9C60LBcIixcbiAgICAgICAgc3VjY2VzczogXCLRg9GB0L/QtdGFXCIsXG4gICAgICAgIHZhbGlkOiBcItCz0L7QtNC90YvQuVwiLFxuICAgICAgICBkZW5pZWQ6IFwi0LLRi9C60LjQvdGD0YLRi9C5XCIsXG4gICAgICAgIGVycm9yOiBcItC+0YjQuNCx0LrQsFwiLFxuICAgICAgICBhYm9ydGVkOiBcItC/0YDQtdGA0LLQsNC90L3Ri9C5XCJcbiAgICB9LFxufTtcbi8qKlxuICogUnVzc2lhbiB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JSdXNzaWFuID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1MDQyNFxcdTA0MzBcXHUwNDM5XFx1MDQzQiBcXHUwNDQxXFx1MDQzQlxcdTA0MzhcXHUwNDQ4XFx1MDQzQVxcdTA0M0VcXHUwNDNDIFxcdTA0MzFcXHUwNDNFXFx1MDQzQlxcdTA0NENcXHUwNDQ4XFx1MDQzRVxcdTA0MzkuIFxcdTA0MUNcXHUwNDMwXFx1MDQzQVxcdTA0NDFcXHUwNDM4XFx1MDQzQ1xcdTA0MzBcXHUwNDNCXFx1MDQ0Q1xcdTA0M0RcXHUwNDNFIFxcdTA0MzRcXHUwNDNFXFx1MDQzRlxcdTA0NDNcXHUwNDQxXFx1MDQ0MlxcdTA0MzhcXHUwNDNDXFx1MDQ0QlxcdTA0MzkgXFx1MDQ0MFxcdTA0MzBcXHUwNDM3XFx1MDQzQ1xcdTA0MzVcXHUwNDQwIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDMwIC0gXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiXFx1MDQyMlxcdTA0MzhcXHUwNDNGIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDMwIFxcdTA0M0RcXHUwNDM1IFxcdTA0NDBcXHUwNDMwXFx1MDQzN1xcdTA0NDBcXHUwNDM1XFx1MDQ0OFxcdTA0MzVcXHUwNDNEXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1MDQxNFxcdTA0M0VcXHUwNDQxXFx1MDQ0MlxcdTA0MzhcXHUwNDMzXFx1MDQzRFxcdTA0NDNcXHUwNDQyXFx1MDQzRSBcXHUwNDNDXFx1MDQzMFxcdTA0M0FcXHUwNDQxXFx1MDQzOFxcdTA0M0NcXHUwNDMwXFx1MDQzQlxcdTA0NENcXHUwNDNEXFx1MDQzRVxcdTA0MzUgXFx1MDQzQVxcdTA0M0VcXHUwNDNCXFx1MDQzOFxcdTA0NDdcXHUwNDM1XFx1MDQ0MVxcdTA0NDJcXHUwNDMyXFx1MDQzRSBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzIgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpO1xuICAgIH1cbn07XG5cbi8qKlxuICogUG9ydHVndWVzZSB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmVcbiAqL1xudmFyIERyb3B6b25lUG9ydHVndWVzZSA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwiU29sdGUgc2V1cyBhcnF1aXZvcyBhcXVpIFwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIkVudmlhbmRvIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBhcnF1aXZvc1wiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJBcnF1aXZvcyBlbnZpYWRvczogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgQXJxdWl2b3MgcmVqZWl0YWRvczogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiTmVuaHVtIGFycXVpdm8gdlxcdTAwRTFsaWRvIGVzdFxcdTAwRTEgZmFsdGFuZG8gcGFyYSBlbnZpYXJcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlRvZG9zIG9zIHRpcG9zIGRlIGFycXVpdm8gc1xcdTAwRTNvIGFjZWl0b3NcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlRpcG9zIHBlcm1pdGlkb3M6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIkVudmlhclwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlRhbWFuaG8gbVxcdTAwRTF4aW1vOiBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiQXJxdWl2b3MgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIk8gYXJxdWl2byBmb2kgZW52aWFkbyBjb20gc3VjZXNzb1wiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvIGFvIGVudmlhclwiLFxufTtcbi8qKlxuICogUG9ydHVndWVzZSB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVBvcnR1Z3Vlc2UgPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIk5vbWU6IFwiLFxuICAgICAgICBzaXplOiBcIlRhbWFuaG86IFwiLFxuICAgICAgICB0eXBlOiBcIlRpcG86IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIlByZXBhcmFuZG9cIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIkVudmlhbmRvXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiw4p4aXRvXCIsXG4gICAgICAgIHZhbGlkOiBcInbDoWxpZG9cIixcbiAgICAgICAgZGVuaWVkOiBcIk5lZ2Fkb1wiLFxuICAgICAgICBlcnJvcjogXCJFcnJvXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiQWJvcnRhZG9cIlxuICAgIH0sXG59O1xuLyoqXG4gKiBQb3J0dWd1ZXNlIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvclBvcnR1Z3Vlc2UgPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkgeyByZXR1cm4gXCJPIGFycXVpdm8gXFx1MDBFOSBtdWl0byBncmFuZGUuIE8gdGFtYW5obyBtXFx1MDBFMXhpbW8gZGUgYXJxdWl2byBwZXJtaXRpZG8gXFx1MDBFOSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7IH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiTyB0aXBvIGRlIGFycXVpdm8gblxcdTAwRTNvIFxcdTAwRTkgcGVybWl0aWRvIFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7IHJldHVybiBcIlF1YW50aWRhZGUgbVxcdTAwRTF4aW1hIGRlIGFycXVpdm9zIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKSBhbGNhblxcdTAwRTdhZGFcIik7IH1cbn07XG5cbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZVNpbXBsaWZpZWRDaGluZXNlID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCLlsIbmgqjnmoTmlofku7bmlL7lnKjov5nph4xcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJcXHU0RTBBXFx1NEYyMCBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgXFx1NEUyQVxcdTY1ODdcXHU0RUY2XCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIlxcdTRFMEFcXHU0RjIwXFx1NjU4N1xcdTRFRjZcXHVGRjFBXCIuY29uY2F0KHVwbG9hZGVkLCBcIlxcdUZGMENcXHU2MkQyXFx1N0VERFxcdTY1ODdcXHU0RUY2XFx1RkYxQVwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIlxcdTZDQTFcXHU2NzA5XFx1N0YzQVxcdTVDMTFcXHU4OTgxXFx1NTJBMFxcdThGN0RcXHU3Njg0XFx1NjcwOVxcdTY1NDhcXHU2NTg3XFx1NEVGNlwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiXFx1NjNBNVxcdTUzRDdcXHU2MjQwXFx1NjcwOVxcdTY1ODdcXHU0RUY2XFx1N0M3QlxcdTU3OEJcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlxcdTUxNDFcXHU4QkI4XFx1NzY4NFxcdTdDN0JcXHU1NzhCOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCLkuIrkvKDmlofku7ZcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NTkyN1xcdTVDMEZcXHVGRjFBXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIlxcdTY1ODdcXHU2ODYzIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCLmlofku7blt7LmiJDlip/kuIrkvKBcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwi5LiK5Lyg5pe25Ye66ZSZXCIsXG59O1xuLyoqXG4gKiBDaGlubmVzZSB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVNpbXBsaWZpZWRDaGluZXNlID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJcXHU2NTg3XFx1Njg2M1xcdTU0MERcXHU3OUYwOiBcIixcbiAgICAgICAgc2l6ZTogXCLlsLrlr7g6IFwiLFxuICAgICAgICB0eXBlOiBcIuaWh+S7tuexu+WeizogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwi6aKE5Yqg6L29XCIsXG4gICAgICAgIHVwbG9hZGluZzogXCLkuIrkvKBcIixcbiAgICAgICAgc3VjY2VzczogXCLmiJDlip9cIixcbiAgICAgICAgdmFsaWQ6IFwi5o6l5Y+X55qE5paH5Lu2XCIsXG4gICAgICAgIGRlbmllZDogXCLooqvmi5Lnu53nmoTmlofku7ZcIixcbiAgICAgICAgZXJyb3I6IFwi6ZSZ6K+vXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwi5Lit5q2iXCJcbiAgICB9LFxufTtcbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JTaW1wbGlmaWVkQ2hpbmVzZSA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTY1ODdcXHU0RUY2XFx1NTkyQVxcdTU5MjdcXHUzMDAyIFxcdTUxNDFcXHU4QkI4XFx1NzY4NFxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU1OTI3XFx1NUMwRlxcdTRFM0EgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiXFx1NjU4N1xcdTRFRjZcXHU3QzdCXFx1NTc4QlxcdTRFMERcXHU1MTQxXFx1OEJCOFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTVERjJcXHU4RkJFXFx1NTIzMFxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU2NTcwIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKVwiKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVUcmFkaXRpb25hbENoaW5lc2UgPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIuaKiuS9oOeahOaWh+S7tuaUvuWcqOmAmeijoSBcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJcXHU0RTBBXFx1NTBCM1wiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIlxcdTUwMEJcXHU2NTg3XFx1NEVGNlwiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJcXHU0RTBBXFx1NTBCM1xcdTY1ODdcXHU0RUY2OiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBcXHU2MkQyXFx1N0Q1NVxcdTc2ODRcXHU2NTg3XFx1NEVGNlxcdUZGMUFcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJcXHU2QzkyXFx1NjcwOVxcdTdGM0FcXHU1QzExXFx1ODk4MVxcdTRFMEFcXHU1MEIzXFx1NzY4NFxcdTY3MDlcXHU2NTQ4XFx1NjU4N1xcdTRFRjZcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlxcdTYzQTVcXHU1M0Q3XFx1NjI0MFxcdTY3MDlcXHU2NTg3XFx1NEVGNlxcdTk4NUVcXHU1NzhCXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJcXHU1MTQxXFx1OEEzMVxcdTc2ODRcXHU5ODVFXFx1NTc4QlxcdUZGMUFcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCLkuIrlgrPmlofku7ZcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NTkyN1xcdTVDMEZcXHVGRjFBXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIiBcXHU2NTg3XFx1NEVGNiBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwi5paH5Lu25bey5oiQ5Yqf5LiK5YKzXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIuS4iuWCs+aZguWHuumMr1wiLFxufTtcbi8qKlxuICogQ2hpbmVzZSB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVRyYWRpdGlvbmFsQ2hpbmVzZSA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiXFx1NjU4N1xcdTZBOTRcXHU1NDBEXFx1N0EzMTogXCIsXG4gICAgICAgIHNpemU6IFwi5paH5Lu25aSn5bCPOiBcIixcbiAgICAgICAgdHlwZTogXCLmlofku7bpoZ7lnos6IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIumgkOWKoOi8iVwiLFxuICAgICAgICB1cGxvYWRpbmc6IFwi5LiK5YKzXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwi5oiQ5YqfXCIsXG4gICAgICAgIHZhbGlkOiBcIuacieaViOaWh+S7tlwiLFxuICAgICAgICBkZW5pZWQ6IFwi54Sh5pWI5paH5Lu2XCIsXG4gICAgICAgIGVycm9yOiBcIumMr+iqpFwiLFxuICAgICAgICBhYm9ydGVkOiBcIuS4reatolwiXG4gICAgfSxcbn07XG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yVHJhZGl0aW9uYWxDaGluZXNlID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1NjU4N1xcdTRFRjZcXHU1OTJBXFx1NTkyN1xcdTMwMDIgXFx1NTE0MVxcdThBMzFcXHU3Njg0XFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTU5MjdcXHU1QzBGXFx1NzBCQSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7XG4gICAgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJcXHU2NTg3XFx1NEVGNlxcdTk4NUVcXHU1NzhCXFx1NEUwRFxcdTUxNDFcXHU4QTMxXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1NURGMlxcdTkwNTRcXHU1MjMwXFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTY1NzggKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpO1xuICAgIH1cbn07XG5cbnZhciBGaWxlSXRlbUxvY2FsaXplciA9IHtcbiAgICBcIkVTLWVzXCI6IEZpbGVJdGVtU3BhbmlzaCxcbiAgICBcIkVOLWVuXCI6IEZpbGVJdGVtRW5nbGlzaCxcbiAgICBcIkZSLWZyXCI6IEZpbGVJdGVtRnJlbmNoLFxuICAgIFwiSVQtaXRcIjogRmlsZUl0ZW1JdGFsaWFuLFxuICAgIFwiUFQtcHRcIjogRmlsZUl0ZW1Qb3J0dWd1ZXNlLFxuICAgIFwiUlUtcnVcIjogRmlsZUl0ZW1SdXNzaWFuLFxuICAgIFwiWkgtY25cIjogRmlsZUl0ZW1TaW1wbGlmaWVkQ2hpbmVzZSxcbiAgICBcIlpILWhrXCI6IEZpbGVJdGVtVHJhZGl0aW9uYWxDaGluZXNlXG59O1xuLyoqXG4gKiBTZWN1cmUgdHJhbnNsYXRpb24gdGhyb3VnaCBhIHNlbGVjdG9yXG4gKiBAcGFyYW0gbG9jYWwgdGhlIExvY2FsaXphdGlvblxuICogQHJldHVybnMgYSBDb21wb25lbnRMb2NhbGl6ZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHRyYW5zbGF0aW9uXG4gKi9cbnZhciBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yID0gZnVuY3Rpb24gKGxvY2FsKSB7XG4gICAgc3dpdGNoIChsb2NhbCkge1xuICAgICAgICBjYXNlIFwiRVMtZXNcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiRVMtZXNcIl07XG4gICAgICAgIGNhc2UgXCJFTi1lblwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICAgICAgY2FzZSBcIkZSLWZyXCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIkZSLWZyXCJdO1xuICAgICAgICBjYXNlIFwiSVQtaXRcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiSVQtaXRcIl07XG4gICAgICAgIGNhc2UgXCJQVC1wdFwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJQVC1wdFwiXTtcbiAgICAgICAgY2FzZSBcIlJVLXJ1XCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIlJVLXJ1XCJdO1xuICAgICAgICBjYXNlIFwiWkgtY25cIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiWkgtY25cIl07XG4gICAgICAgIGNhc2UgXCJaSC1oa1wiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJaSC1oa1wiXTtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgfVxufTtcblxudmFyIERyb3B6b25lTG9jYWxpemVyID0ge1xuICAgIFwiRVMtZXNcIjogRHJvcHpvbmVTcGFuaXNoLFxuICAgIFwiRU4tZW5cIjogRHJvcHpvbmVFbmdsaXNoLFxuICAgIFwiRlItZnJcIjogRHJvcHpvbmVGcmVuY2gsXG4gICAgXCJJVC1pdFwiOiBEcm9wem9uZUl0YWxpYW4sXG4gICAgXCJQVC1wdFwiOiBEcm9wem9uZVBvcnR1Z3Vlc2UsXG4gICAgXCJSVS1ydVwiOiBEcm9wem9uZVJ1c3NpYW4sXG4gICAgXCJaSC1jblwiOiBEcm9wem9uZVNpbXBsaWZpZWRDaGluZXNlLFxuICAgIFwiWkgtaGtcIjogRHJvcHpvbmVUcmFkaXRpb25hbENoaW5lc2Vcbn07XG4vKipcbiAqIFNlY3VyZSB0cmFuc2xhdGlvbiB0aHJvdWdoIGEgc2VsZWN0b3JcbiAqIEBwYXJhbSBsb2NhbCB0aGUgTG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIENvbXBvbmVudExvY2FsaXplciBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdHJhbnNsYXRpb25cbiAqL1xudmFyIERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IgPSBmdW5jdGlvbiAobG9jYWwpIHtcbiAgICBzd2l0Y2ggKGxvY2FsKSB7XG4gICAgICAgIGNhc2UgXCJFUy1lc1wiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJFUy1lc1wiXTtcbiAgICAgICAgY2FzZSBcIkVOLWVuXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIkVOLWVuXCJdO1xuICAgICAgICBjYXNlIFwiRlItZnJcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiRlItZnJcIl07XG4gICAgICAgIGNhc2UgXCJJVC1pdFwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJJVC1pdFwiXTtcbiAgICAgICAgY2FzZSBcIlBULXB0XCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIlBULXB0XCJdO1xuICAgICAgICBjYXNlIFwiUlUtcnVcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiUlUtcnVcIl07XG4gICAgICAgIGNhc2UgXCJaSC1jblwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJaSC1jblwiXTtcbiAgICAgICAgY2FzZSBcIlpILWhrXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIlpILWhrXCJdO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICB9XG59O1xuXG52YXIgVmFsaWRhdGVFcnJvckxvY2FsaXplciA9IHtcbiAgICBcIkVTLWVzXCI6IFZhbGlkYXRlRXJyb3JTcGFuaXNoLFxuICAgIFwiRU4tZW5cIjogVmFsaWRhdGVFcnJvckVuZ2xpc2gsXG4gICAgXCJGUi1mclwiOiBWYWxpZGF0ZUVycm9yRnJlbmNoLFxuICAgIFwiSVQtaXRcIjogVmFsaWRhdGVFcnJvckl0YWxpYW4sXG4gICAgXCJQVC1wdFwiOiBWYWxpZGF0ZUVycm9yUG9ydHVndWVzZSxcbiAgICBcIlJVLXJ1XCI6IFZhbGlkYXRlRXJyb3JSdXNzaWFuLFxuICAgIFwiWkgtY25cIjogVmFsaWRhdGVFcnJvclNpbXBsaWZpZWRDaGluZXNlLFxuICAgIFwiWkgtaGtcIjogVmFsaWRhdGVFcnJvclRyYWRpdGlvbmFsQ2hpbmVzZSxcbn07XG4vKipcbiAqIFNlY3VyZSB0cmFuc2xhdGlvbiB0aHJvdWdoIGEgc2VsZWN0b3JcbiAqIEBwYXJhbSBsb2NhbCB0aGUgTG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIENvbXBvbmVudExvY2FsaXplciBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdHJhbnNsYXRpb25cbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJTZWxlY3RvciA9IGZ1bmN0aW9uIChsb2NhbCkge1xuICAgIGlmICghbG9jYWwgfHwgIVtcIkVTLWVzXCIsIFwiRU4tZW5cIiwgXCJGUi1mclwiLCBcIklULWl0XCIsIFwiUFQtcHRcIiwgXCJSVS1ydVwiLCBcIlpILWNuXCIsIFwiWkgtaGtcIl0uaW5jbHVkZXMobG9jYWwpKSB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0ZUVycm9yTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgfVxuICAgIHJldHVybiBWYWxpZGF0ZUVycm9yTG9jYWxpemVyW2xvY2FsXTtcbn07XG5cbi8qKlxuICogUmVhZHMgYW4gaW1hZ2UgKG9yIG90aGVyIHR5cGUpIGZpbGUgYXMgZGF0YSBVUkwgaW4gYSBwcm9taXNlIHdheSxcbiAqIHNvIHlvdSBjYW4gdXNlIGF3YWl0LlxuICogSXQgd2lsbCByZXR1cm4gYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgVVJMIHJlcHJlc2VudGF0aW9uXG4gKiBAcGFyYW0gZmlsZSBGaWxlIG9yIEJsb2Igb2JqZWN0XG4gKiBAcmV0dXJucyBkYXRhIFVSTCBvZiB0aGUgZmlsZVxuICovXG52YXIgcmVhZEFzRGF0YVVSTCA9IGZ1bmN0aW9uIChmaWxlLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfMSA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfMS5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgPT09IG51bGwgfHwgb25Qcm9ncmVzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Qcm9ncmVzcygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8xLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVhZGVyXzEucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMS5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4vKipcbiAqIFJlYWRzIGEgZmlsZSBhcyBUZXh0IGluIGEgcHJvbWlzZSB3YXksIHNvIHlvdSBjYW4gdXNlIGF3YWl0LlxuICogSWYgb3RoZXIga2luZCBvZiBmaWxlIGlzIHNlbnQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGl0IGFueXdheVxuICogYW5kIHdpbGwgcmV0dXJuIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIFVSTCByZXByZXNlbnRhdGlvblxuICogQHBhcmFtIGZpbGUgRmlsZSBvciBCbG9iIG9iamVjdFxuICogQHBhcmFtIGVuY29kaW5nIFRoZSB0eXBlIG9mIGVuY29kaW5nIHN1Y2ggYXMgXCJiYXNlNjRcIlxuICogQHJldHVybnMgZGF0YSB0ZXh0IG9mIHRoZSBmaWxlXG4gKi9cbnZhciByZWFkQXNUZXh0ID0gZnVuY3Rpb24gKGZpbGUsIGVuY29kaW5nLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfMiA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfMi5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfMi5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8yLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzIub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMi5yZWFkQXNUZXh0KGZpbGUsIGVuY29kaW5nID8gZW5jb2RpbmcgOiBcImJhc2U2NFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSZWFkcyBhIGZpbGUgYW5kIHJldHVybiB0aGUgcmF3IGJpbmFyeSBkYXRhIGZyb20gdGhlIGZpbGUuXG4gKiBAcGFyYW0gZmlsZSBGaWxlIG9yIEJsb2Igb2JqZWN0XG4gKiBAcGFyYW0gZW5jb2RpbmcgVGhlIHR5cGUgb2YgZW5jb2Rpbmcgc3VjaCBhcyBcImJhc2U2NFwiXG4gKiBAcmV0dXJucyByYXcgYmluYXJ5IGRhdGEgb2YgdGhlIGZpbGVcbiAqL1xudmFyIHJlYWRBc0JpbmFyeVN0cmluZyA9IGZ1bmN0aW9uIChmaWxlLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfMyA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfMy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfMy5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8zLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzMub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMy5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbi8qKlxuICogUmVhZHMgYSBmaWxlIGFuZCByZXR1cm5zIGFuIEFycmF5QnVmZmVyIHJlcHJlc2VudGluZyB0aGUgZmlsZSdzIGRhdGFcbiAqIEBwYXJhbSBmaWxlIEZpbGUgb3IgYmxvYiBvYmplY3RcbiAqIEBwYXJhbSBlbmNvZGluZyBUaGUgdHlwZSBvZiBlbmNvZGluZyBzdWNoIGFzIFwiYmFzZTY0XCJcbiAqIEByZXR1cm5zIEFycmF5QnVmZmVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmaWxlXG4gKi9cbnZhciByZWFkQXNBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIChmaWxlLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfNCA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfNC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfNC5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl80Lm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzQub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfNC5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFJlc2l6ZSBhbiBpbWFnZSByZXNvbHV0aW9uIGdpdmVuIG1heFdpZHRoIGFuZCBtYXhIZWlnaHRcbiAqXG4gKiBTaG91bGQgYmUgY2FsbGVkIHdpdGggYXdhaXRcbiAqIEBwYXJhbSBiYXNlNjRTdHIgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZSBmaWxlXG4gKiBAcGFyYW0gbWF4V2lkdGggdGhlIG1heCB3aWR0aCBvZiBoZSBpbWFnZVxuICogQHBhcmFtIG1heEhlaWdodCB0aGUgbWF4IGhlaWdodCBvZiBoZSBpbWFnZVxuICogQHJldHVybnMgdGhlIHJlc2l6ZWQgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gcmVzaXplSW1hZ2UoYmFzZTY0U3RyLCBtYXhXaWR0aCwgbWF4SGVpZ2h0KSB7XG4gICAgaWYgKG1heFdpZHRoID09PSB2b2lkIDApIHsgbWF4V2lkdGggPSAxMzU7IH1cbiAgICBpZiAobWF4SGVpZ2h0ID09PSB2b2lkIDApIHsgbWF4SGVpZ2h0ID0gMTIwOyB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBpbWdfMSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaW1nXzEuc3JjID0gYmFzZTY0U3RyO1xuICAgICAgICAgICAgaW1nXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgICAgICB2YXIgTUFYX1dJRFRIID0gbWF4V2lkdGg7XG4gICAgICAgICAgICAgICAgdmFyIE1BWF9IRUlHSFQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nXzEud2lkdGg7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IGltZ18xLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAobWF4V2lkdGggPiB3aWR0aCAmJiBtYXhIZWlnaHQgPiBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShiYXNlNjRTdHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBNQVhfV0lEVEgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAqPSBNQVhfV0lEVEggLyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gTUFYX1dJRFRIO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ID4gTUFYX0hFSUdIVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKj0gTUFYX0hFSUdIVCAvIGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IE1BWF9IRUlHSFQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZ18xLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjYW52YXMudG9EYXRhVVJMKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBbiBlcnJvciBvY3VycmVkIHdoZW4gdHJ5aW5nIHRvIG1ha2UgYSB0aHVtbmFpbFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQW4gZXJyb3Igb2N1cnJlZCB3aGVuIHRyeWluZyB0byBtYWtlIGEgdGh1bW5haWxcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFJlc2l6ZSBhbiBpbWFnZSByZXNvbHV0aW9uIGdpdmVuIG1heFdpZHRoIGFuZCBtYXhIZWlnaHRcbiAqXG4gKiBTaG91bGQgYmUgY2FsbGVkIHdpdGggYXdhaXRcbiAqIEBwYXJhbSBiYXNlNjRTdHIgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZSBmaWxlXG4gKiBAcGFyYW0gbWF4V2lkdGggdGhlIG1heCB3aWR0aCBvZiBoZSBpbWFnZVxuICogQHBhcmFtIG1heEhlaWdodCB0aGUgbWF4IGhlaWdodCBvZiBoZSBpbWFnZVxuICogQHJldHVybnMgdGhlIHJlc2l6ZWQgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gZ2V0SW1hZ2VPcmllbnRhdGlvbihpbWFnZVNvdXJjZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJnZXRJbWFnZU9yaWVudGF0aW9uIGltYWdlU291cmNlXCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgaWYgKCFpbWFnZVNvdXJjZSB8fCBpbWFnZVNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ2V0SW1hZ2VPcmllbnRhdGlvbiByZWplY3RlZFwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICByZWplY3QoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJnZXRJbWFnZU9yaWVudGF0aW9uIHRyeSBpbmlcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgdmFyIGltZ18xID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWdfMS5zcmMgPSBpbWFnZVNvdXJjZTtcbiAgICAgICAgICAgIGltZ18xLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ2V0SW1hZ2VPcmllbnRhdGlvbiBUaGVyZSB3YXMgYSBuZSBlcnJvciByZWFkaW5nXCIsIGV2KTtcbiAgICAgICAgICAgICAgICByZWplY3QoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW1nXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IGltZ18xLndpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBpbWdfMS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFwicG9ydHJhaXRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihcIkFuIGVycm9yIG9jdXJyZWQgd2hlbiB0cnlpbmcgdG8gZ2V0IHRoZSBpbWFnZSBvcmllbnRhdGlvblwiKTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkFuIGVycm9yIG9jdXJyZWQgd2hlbiB0cnlpbmcgdG8gZ2V0IHRoZSBpbWFnZSBvcmllbnRhdGlvblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlamVjdChcImxhbmRzY2FwZVwiKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG52YXIgc2V2ZW56aXAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUxNy03MmE1MWExMi1lNDAzLTQ2NzUtYmZkNy0yMmMyM2FmZmE3MzAucG5nXCI7XG52YXIgYWFjID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MTgtNzAyNmQ0ZjEtZWExNi00ZWQwLTg5ZmQtMzdjMWFhOGFjM2VkLnBuZ1wiO1xudmFyIGFidyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTE5LTg2M2M2M2I0LTkxN2UtNDQ3MS05NGZmLTdlMTU2NTFjYzE0Yi5wbmdcIjtcbnZhciBhY2NkYiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTIwLTliYzZhYTNiLTUxYzktNGRhMi05ZWY3LTM0OTE2MmI4NmQwYi5wbmdcIjtcbnZhciBhdmkgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUyMS1kYmQ2Y2YwZC1kNGQ3LTRiOTItYmIyNi0xN2U4YTUxYTkzODMucG5nXCI7XG52YXIgYXp3ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MjItMDcwZjQ4ZTgtNzhhOC00Mjk0LThkYmItYWFiODE1MjVlMTY0LnBuZ1wiO1xudmFyIGJtcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTk1LTkwYWI3ZjkwLWY4N2UtNDkwMC05NGQ5LWQwYjI2NzQ1ZGY0OC5wbmdcIjtcbnZhciBieiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTk3LWUyODVhZDVjLTYxM2EtNDY3OS1hMjcwLTQ5M2U1YmU0ZmZkOS5wbmdcIjtcbnZhciBiejIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjU5OC02MjNjNDEwYS0wODRhLTQzOTUtYTQ0OC0yMTFiMmZmNjFjZmUucG5nXCI7XG52YXIgY2RhID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDAtOGI3MGEwMDctNTEyZC00MjUyLTljNjYtZWFiZDNkZGQ2NTczLnBuZ1wiO1xudmFyIGNzaCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjAxLWU2MmU1ZDFhLWQ4YTItNDQ3NS1hMTRmLTg1OTIyY2VjOTI3Mi5wbmdcIjtcbnZhciBjc3MgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwMi00Yzc3MjkzNC1mNjA4LTRmMDEtODQ1OS1jNDYyMmNlZThhZDUucG5nXCI7XG52YXIgY3N2ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDQtYjViMDE5ZmUtNTcyZS00NzdlLTkyYzItMzc2OWE0OGExMzA0LnBuZ1wiO1xudmFyIGRvY3ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwNi03MTVjY2I2Ni00NzAyLTRmN2QtOWIwOS1hYzkzYmExN2I2NDMucG5nXCI7XG52YXIgZHJhd2lvID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDgtYmNhZTlkNTctOGU1NC00ODhjLTkwYzQtNDk1MmFlNTMwYjVlLnBuZ1wiO1xudmFyIGVvdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjE4LTM5N2Q2YmQyLTlmZGEtNDNlZC1hMTM1LWNiNDAzODhjMzVhZi5wbmdcIjtcbnZhciBlcHViID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjAtMjU4NmJhNDAtYzU4My00NTg5LWIxYTQtOGJiNWIyNThiNDRkLnBuZ1wiO1xudmFyIGZyZWVhcmMgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyMS0zYjk1ZmI2NC0yNTMzLTRjY2MtYWJjZC1iZDJiZWJhNTcyZTkucG5nXCI7XG52YXIgZ2lmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjItYWY3MDVhMGMtMmIyNS00YmE3LThhYjYtYmQ2OWVjOTdmN2UyLnBuZ1wiO1xudmFyIGd6aXAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyNC04OTE0MWE0Ni02NGU0LTRmYTAtYmY2OS01NGEwZWI0ZDQ4YzkucG5nXCI7XG52YXIgaHRtbCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjI1LTFiOGYyNjUyLTFkZTAtNDQ3NS04YzEyLTdkYTRhOTk3M2ZmYi5wbmdcIjtcbnZhciBpY2FsZW5kYXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyNi0zODY5OTcwNS0xZTZmLTRiY2EtOTg0Yi0wMzE2N2IyMzZmYWEucG5nXCI7XG52YXIgamF2YSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjUwLWYxMTY2MjQ2LWIzNjEtNGMzMC1hMDRlLTk3ODFjNTU1ZDE0YS5wbmdcIjtcbnZhciBqYXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1MC1mMTE2NjI0Ni1iMzYxLTRjMzAtYTA0ZS05NzgxYzU1NWQxNGEucG5nXCI7XG52YXIgamF2YXNjcmlwdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjUyLTQ1NjI5NDJlLWFhZWEtNDY2Yy05NjhmLTM4MGZmZmFiZjNmOS5wbmdcIjtcbnZhciBqcGVnID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTMtMDQ4N2U3ZTItMWVlMy00OWUyLThjZmUtM2UyMGYxZjc0OTBhLnBuZ1wiO1xudmFyIGpzb24gPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1Ni02ZTk2YzgxNS1lNGUyLTRmZmQtOWQ3MS01N2U5Y2MyNDUwYmMucG5nXCI7XG52YXIganNvbmxkID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTgtNWQyN2QzYzItMzk0Zi00M2ZiLWI1MTItOWI0MTRhMjU3ODc1LnBuZ1wiO1xudmFyIG1pZGkgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1OS05OGYzZWY2ZS1iOWYzLTRiNmQtYjE4Zi00NjliNTMzNGJhMjcucG5nXCI7XG52YXIgbXAzID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjEtYTU0ODQ1NTMtMDZjNy00ZmZhLWE4ZjktOTZiNTdiMWIwMzQ0LnBuZ1wiO1xudmFyIG1wNCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjYyLTA1YWQxNTk3LWQ1ZTUtNGVmYS04MzNlLTI4NzZlOTY2YTc0NS5wbmdcIjtcbnZhciBtcGVnID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjMtOTBjNTg5NTUtZjdmYi00YmRiLWFjNTMtOTI2NjdkMTZkNGEzLnBuZ1wiO1xudmFyIG1wa2cgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2NC05YTc1MzBlNy02ZDc4LTRlZjMtYTE3Ni0yMGNmN2Y1N2I1NTUucG5nXCI7XG52YXIgb2N0ZXQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2Ni1hYjNjNTA1ZC1iMmMwLTQxNzctOWEwNi1hZWQ1ZDljMzllZTQucG5nXCI7XG52YXIgb2RwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjctNmM3ZGNiY2MtOGQ4My00MWEyLThlMGEtODViMDllMjc5MWFlLnBuZ1wiO1xudmFyIG9kcyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjY4LTlmMjQ2ZTkxLWNmMmUtNDljZi05NjE3LWUxZmJiNzFhYmJiYi5wbmdcIjtcbnZhciBvZHQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2OS00NjExMzc2Mi04NGQxLTRiMzItOTQ0MS1iMDEzOGNlMTdhNWQucG5nXCI7XG52YXIgb2dhID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xNDU4MzUzNjQtMjA1NDUwOWQtMzQ0OC00ZDM0LTkyMWYtNzNkZDZlMjk3ZmM3LnBuZ1wiO1xudmFyIG9ndiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTQ1ODM1MzY3LTE5MTcyYmY4LWNkNWEtNGNiZS1iNTEyLWQwZGUxZDkxZjI2OS5wbmdcIjtcbnZhciBvZ3ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzE0NTgzNTM3My1hNTdlZjBmNS0zOTY4LTQ4M2ItOWY1NS02ZDY3ZTdmMWRjZWEucG5nXCI7XG52YXIgb3B1cyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjcwLTBmOTZlNzcwLWNlZGMtNDYzNS1hNWY5LWNmOTc4OTRjMWQ3YS5wbmdcIjtcbnZhciBvdGYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3MS0wMmFkMzVlZi1lYzNhLTRhNjUtYWJkNS01YmY3OTRkZmNmN2IucG5nXCI7XG52YXIgcGRmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzItM2E4NTZmZGEtODIzZC00OTk3LWI4MDItYzdjNjQwZTZlZjQ0LnBuZ1wiO1xudmFyIHBocCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjczLTBjNDQwOWFiLTc1NGUtNDYxOS04Y2ZhLTE3OWQwY2NmMWJkOS5wbmdcIjtcbnZhciBwbmcgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3NC1mZGI1NmQwMi01ODQ1LTQ5YjctODQ2Mi02MzU3YmM5NjM0NjQucG5nXCI7XG52YXIgcHB0eCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njc1LWM4Nzk2NDVkLWFjYjQtNDFhNi1hYjNjLTRlNmMyMDQ4YmFkYi5wbmdcIjtcbnZhciBwc2QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY4NS00ZTMyN2M0Yy1hNDA5LTRiODMtYjM2YS04ZDg4OTM2YjMxNGIucG5nXCI7XG52YXIgcHl0aG9uID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2ODgtOGU4MmZhZTQtM2E5Yi00OWMwLWJmOTktNzcxODk1MjU1MTRjLnBuZ1wiO1xudmFyIHRhciA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njg5LWZlMWZlZjlmLWQyZGItNDU1Yi04ZjRiLTA5YWNkMDk1ZjU3MS5wbmdcIjtcbnZhciByYXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY4OS1mZTFmZWY5Zi1kMmRiLTQ1NWItOGY0Yi0wOWFjZDA5NWY1NzEucG5nXCI7XG52YXIgcmVhY3QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5MS1kNDcyNTc2Yi1lYzZhLTQzMzItYWNkMi1kZDZhMDBiNzI5NTIucG5nXCI7XG52YXIgcnRmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTMtOWQ0MzU3MWUtMGM4Ni00MzhmLWIyNDctZTJjYjQyZTE5ZTA2LnBuZ1wiO1xudmFyIHNhc3MgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5NC00ZTY2MWQ2YS0xMTE4LTQ0MWUtOGJjMy1jNTJmY2IyMTMzYjYucG5nXCI7XG52YXIgc2ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5Ny0xZDgyZDcyNC0zNWI2LTRmMDYtODQ3YS0zYzU5YTVkZWRhNmUucG5nXCI7XG52YXIgc3dmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTgtMTkzODQyMzAtZGJkNy00ZTA1LWJjNjktZWY0NTM3YjZhYWUzLnBuZ1wiO1xudmFyIHRleHQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5OS01OTkzYTQ4Mi0wNGY0LTQ5MTUtYjEwNS05MDM3ZjUyN2NmNjEucG5nXCI7XG52YXIgdGlmZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzAwLWMyMzQ2MWM4LTY4MTktNDZlMS1hZWNkLTBhMWY4ZDM1MDdiYi5wbmdcIjtcbnZhciB0dGYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwMS1jODA0NGMwOS04ZDk1LTRhZjEtOTQxMC02Njc2MTAwMWQ3ZGEucG5nXCI7XG52YXIgdHlwZXNjcmlwdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzAyLTU5Mjk0MzM3LWVkOTktNDMwMi1iYWRkLTMxNmIyYzFmZjYyZi5wbmdcIjtcbnZhciB2c2QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNC04ZmQ1MWU3Yy1hZmEyLTQ3YTMtYWIyZi1kMGJjZDBlY2FlOWYucG5nXCI7XG52YXIgdnVlID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDUtMzMyOTRkYTEtNWMwZi00OWY3LWI4OTAtZTQ4NTdjZWMwYTZkLnBuZ1wiO1xudmFyIHdhdiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA2LTIyZjgwNWQwLTM5ZDQtNDk0Yi04MjRlLTQ3ZGM3NWQwNWViNy5wbmdcIjtcbnZhciB3ZWJtID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDctZTYxYTg0ZGUtZDM5Ni00ZGJmLThkMWItMWQ2ZWUxOWUxYWM4LnBuZ1wiO1xudmFyIHdlYmEgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNy1lNjFhODRkZS1kMzk2LTRkYmYtOGQxYi0xZDZlZTE5ZTFhYzgucG5nXCI7XG52YXIgd2VicCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA4LTIxZDA5NmRkLTcxNDgtNDBhYS05N2YxLWNiYjA5OTMzOTc0MC5wbmdcIjtcbnZhciB3bWEgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwOS04MTFkNGU5MC0zY2ZhLTQwNDQtYTk1Ni1hZWRhOWM2N2ZjOTIucG5nXCI7XG52YXIgd212ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTAtYzU0NzljNmMtMDI0OS00NTQyLWFkYWQtNDhiMGVmNDBiNzc1LnBuZ1wiO1xudmFyIHdvZmYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxMS0xNTI0YTNlNy0zZTMzLTQ4MjItYTM0Zi1mZjMyMzU0MDQwNDUucG5nXCI7XG52YXIgeGxzeCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzEyLTE3ZTJjNDkxLWY2ZTQtNDU4Ni1hZWY2LTA2YmNjNWY0YjBlNS5wbmdcIjtcbnZhciB4bWwgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxNS0yMDRiNWE4Yi05YzVhLTRiYWMtODI5NC05MjM3ZWJjMTYwODkucG5nXCI7XG52YXIgeHVsID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTYtNjQ1MTFkMjAtNThjYi00NWE4LTg1ZGYtZjRkOTQwOGI0NjlkLnBuZ1wiO1xudmFyIHppcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzE4LWE4NDk5MzMzLTYyODItNDgyMC1hYTFmLTRkMTMzZWI1NDY0OC5wbmdcIjtcblxuLyoqXG4gKiBMb29rcyBmb3IgdGhlIGZpcnN0IGZpbGUgZXh0ZW5zaW9uXG4gKiBAcGFyYW0gZmlsZU5hbWUgZmlsZSBuYW1lXG4gKiBAcmV0dXJucyB0aGUgZmlsZSBuYW1lIGV4dGVuc2lvblxuICovXG52YXIgZ2V0RXh0ID0gZnVuY3Rpb24gKGZpbGVOYW1lKSB7XG4gICAgdmFyIHJlID0gLyg/OlxcLihbXi5dKykpPyQvO1xuICAgIHZhciByZXN1bHQgPSByZS5leGVjKGZpbGVOYW1lKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHRbMV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG59O1xuXG52YXIgREVGX0dFTl9NSU1FID0gXCJvY3RldFwiO1xuLyoqXG4gKlxuICogQHBhcmFtIHRhaWxNaW1lXG4gKiBAcmV0dXJuc1xuICovXG52YXIgYXVkaW9TZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcImFhY1wiOiByZXR1cm4gXCJhYWNcIjtcbiAgICAgICAgY2FzZSBcIm1pZGlcIjogcmV0dXJuIFwibWlkaVwiO1xuICAgICAgICBjYXNlIFwieC1taWRpXCI6IHJldHVybiBcIm1pZGlcIjtcbiAgICAgICAgY2FzZSBcIm1wZWdcIjogcmV0dXJuIFwibXBlZ1wiOyAvL21wM1xuICAgICAgICBjYXNlIFwib2dnXCI6IHJldHVybiBcIm9nYVwiO1xuICAgICAgICBjYXNlIFwib3B1c1wiOiByZXR1cm4gXCJvcHVzXCI7XG4gICAgICAgIGNhc2UgXCJ3YXZcIjogcmV0dXJuIFwid2F2XCI7XG4gICAgICAgIGNhc2UgXCJ3ZWJtXCI6IHJldHVybiBcIndlYm1cIjtcbiAgICAgICAgLy9jYXNlIFwiM2dwcFwiOiByZXR1cm4gXCJ0aHJlZWdwXCI7XG4gICAgICAgIC8vY2FzZSBcIjNncHAyXCI6IHJldHVybiBcInRocmVlZ3BcIjtcbiAgICAgICAgLy9jYXNlIFwibXAzXCI6IHJldHVybiBcIm1wM1wiO1xuICAgICAgICBjYXNlIFwid21hXCI6IHJldHVybiBcIndtYVwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG52YXIgdGV4dFNlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwiY3NzXCI6IHJldHVybiBcImNzc1wiO1xuICAgICAgICBjYXNlIFwiY3N2XCI6IHJldHVybiBcImNzdlwiO1xuICAgICAgICBjYXNlIFwiaHRtbFwiOiByZXR1cm4gXCJodG1sXCI7XG4gICAgICAgIGNhc2UgXCJjYWxlbmRhclwiOiByZXR1cm4gXCJpY2FsZW5kYXJcIjtcbiAgICAgICAgY2FzZSBcImphdmFzY3JpcHRcIjogcmV0dXJuIFwiamF2YXNjcmlwdFwiO1xuICAgICAgICBjYXNlIFwieC1qYXZhc2NyaXB0XCI6IHJldHVybiBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgY2FzZSBcInBsYWluXCI6IHJldHVybiBcInRleHRcIjtcbiAgICAgICAgY2FzZSBcInhtbFwiOiByZXR1cm4gXCJ4bWxcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xudmFyIGltYWdlU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJibXBcIjogcmV0dXJuIFwiYm1wXCI7XG4gICAgICAgIGNhc2UgXCJnaWZcIjogcmV0dXJuIFwiZ2lmXCI7XG4gICAgICAgIC8vIGNhc2UgXCJ2bmQubWljcm9zb2Z0Lmljb25cIjogcmV0dXJuIFwiaWNvXCI7XG4gICAgICAgIC8vY2FzZSBcImljb1wiOiByZXR1cm4gXCJpY29cIjtcbiAgICAgICAgY2FzZSBcImpwZ1wiOiByZXR1cm4gXCJqcGVnXCI7XG4gICAgICAgIGNhc2UgXCJqcGVnXCI6IHJldHVybiBcImpwZWdcIjtcbiAgICAgICAgY2FzZSBcInBuZ1wiOiByZXR1cm4gXCJwbmdcIjtcbiAgICAgICAgLy9jYXNlIFwic3ZnK3htbFwiOiByZXR1cm4gXCJzdmdcIjtcbiAgICAgICAgLy9jYXNlIFwic3ZnXCI6IHJldHVybiBcInN2Z1wiO1xuICAgICAgICBjYXNlIFwidGlmZlwiOiByZXR1cm4gXCJ0aWZmXCI7XG4gICAgICAgIGNhc2UgXCJ3ZWJwXCI6IHJldHVybiBcIndlYnBcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xudmFyIGZvbnRTZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcIm90ZlwiOiByZXR1cm4gXCJvdGZcIjtcbiAgICAgICAgY2FzZSBcInR0ZlwiOiByZXR1cm4gXCJ0dGZcIjtcbiAgICAgICAgY2FzZSBcIndvZmZcIjogcmV0dXJuIFwid29mZlwiO1xuICAgICAgICBjYXNlIFwid29mZjJcIjogcmV0dXJuIFwid29mZlwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG52YXIgdmlkZW9TZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcIngtbXN2aWRlb1wiOiByZXR1cm4gXCJhdmlcIjtcbiAgICAgICAgY2FzZSBcIm1zdmlkZW9cIjogcmV0dXJuIFwiYXZpXCI7XG4gICAgICAgIGNhc2UgXCJhdmlcIjogcmV0dXJuIFwiYXZpXCI7XG4gICAgICAgIGNhc2UgXCJtcDRcIjogcmV0dXJuIFwibXA0XCI7XG4gICAgICAgIGNhc2UgXCJtcGVnXCI6IHJldHVybiBcIm1wZWdcIjtcbiAgICAgICAgY2FzZSBcIm9nZ1wiOiByZXR1cm4gXCJvZ3ZcIjtcbiAgICAgICAgY2FzZSBcIm1wMnRcIjogcmV0dXJuIFwibXAydFwiO1xuICAgICAgICBjYXNlIFwid212XCI6IHJldHVybiBcIndtdlwiO1xuICAgICAgICBjYXNlIFwid2VibVwiOiByZXR1cm4gXCJ3ZWJtXCI7XG4gICAgICAgIC8vIGNhc2UgXCIzZ3BwXCI6IHJldHVybiBcInRocmVlZ3BcIjtcbiAgICAgICAgLy8gY2FzZSBcIjNncHAyXCI6IHJldHVybiBcInRocmVlZ3AyXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB0YWlsTWltZVxuICogQHJldHVybnNcbiAqL1xudmFyIGFwcGxpY2F0aW9uU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJ4LWFiaXdvcmRcIjogcmV0dXJuIFwiYWJ3XCI7XG4gICAgICAgIGNhc2UgXCJhYml3b3JkXCI6IHJldHVybiBcImFid1wiO1xuICAgICAgICBjYXNlIFwieC1mcmVlYXJjXCI6IHJldHVybiBcImFyY1wiO1xuICAgICAgICBjYXNlIFwiZnJlZWFyY1wiOiByZXR1cm4gXCJhcmNcIjtcbiAgICAgICAgY2FzZSBcInZuZC5hbWF6b24uZWJvb2tcIjogcmV0dXJuIFwiYXp3XCI7XG4gICAgICAgIGNhc2UgXCJvY3RldC1zdHJlYW1cIjogcmV0dXJuIFwib2N0ZXRcIjtcbiAgICAgICAgY2FzZSBcIngtYnppcFwiOiByZXR1cm4gXCJielwiO1xuICAgICAgICBjYXNlIFwieC1iemlwMlwiOiByZXR1cm4gXCJiejJcIjtcbiAgICAgICAgY2FzZSBcImJ6aXBcIjogcmV0dXJuIFwiYnpcIjtcbiAgICAgICAgY2FzZSBcImJ6aXAyXCI6IHJldHVybiBcImJ6MlwiO1xuICAgICAgICBjYXNlIFwieC1jZGZcIjogcmV0dXJuIFwiY2RhXCI7XG4gICAgICAgIGNhc2UgXCJtc2FjY2Vzc1wiOiByZXR1cm4gXCJhY2NkYlwiO1xuICAgICAgICBjYXNlIFwiY3NoXCI6IHJldHVybiBcImNzaFwiO1xuICAgICAgICBjYXNlIFwieC1jc2hcIjogcmV0dXJuIFwiY3NoXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQubXMtZm9udG9iamVjdFwiOiByZXR1cm4gXCJlb3RcIjtcbiAgICAgICAgY2FzZSBcImVwdWIremlwXCI6IHJldHVybiBcImVwdWJcIjtcbiAgICAgICAgY2FzZSBcImd6aXBcIjogcmV0dXJuIFwiZ3ppcFwiO1xuICAgICAgICBjYXNlIFwiamF2YS1hcmNoaXZlXCI6IHJldHVybiBcImphclwiO1xuICAgICAgICBjYXNlIFwieC1qYXZhc2NyaXB0XCI6IHJldHVybiBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgY2FzZSBcImpzb25cIjogcmV0dXJuIFwianNvblwiO1xuICAgICAgICBjYXNlIFwibGQranNvblwiOiByZXR1cm4gXCJqc29ubGRcIjtcbiAgICAgICAgY2FzZSBcInZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCI6IHJldHVybiBcIm1wa2dcIjtcbiAgICAgICAgY2FzZSBcIm9nZ1wiOiByZXR1cm4gXCJvZ3hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5yYXJcIjogcmV0dXJuIFwicmFyXCI7XG4gICAgICAgIGNhc2UgXCJydGZcIjogcmV0dXJuIFwicnRmXCI7XG4gICAgICAgIGNhc2UgXCJ4LXNoXCI6IHJldHVybiBcInNoXCI7XG4gICAgICAgIGNhc2UgXCJzaFwiOiByZXR1cm4gXCJzaFwiO1xuICAgICAgICBjYXNlIFwieC1zaG9ja3dhdmUtZmxhc2hcIjogcmV0dXJuIFwic3dmXCI7XG4gICAgICAgIGNhc2UgXCJ4LXRhclwiOiByZXR1cm4gXCJ0YXJcIjtcbiAgICAgICAgY2FzZSBcIngtaHR0cGQtcGhwXCI6IHJldHVybiBcInBocFwiO1xuICAgICAgICBjYXNlIFwidm5kLnZpc2lvXCI6IHJldHVybiBcInZzZFwiO1xuICAgICAgICBjYXNlIFwieGh0bWwreG1sXCI6IHJldHVybiBcInhodG1sXCI7XG4gICAgICAgIGNhc2UgXCJ4bWxcIjogcmV0dXJuIFwieG1sXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQubW96aWxsYS54dWwreG1sXCI6IHJldHVybiBcInh1bFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIjogcmV0dXJuIFwiZG9jeFwiO1xuICAgICAgICBjYXNlIFwibXN3b3JkXCI6IHJldHVybiBcImRvY3hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI6IHJldHVybiBcInhsc3hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjogcmV0dXJuIFwicHB0eFwiO1xuICAgICAgICBjYXNlIFwidm5kLm1zLXBvd2VycG9pbnRcIjogcmV0dXJuIFwicHB0eFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIjogcmV0dXJuIFwib2RwXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRcIjogcmV0dXJuIFwib2R0XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI6IHJldHVybiBcIm9kc1wiO1xuICAgICAgICBjYXNlIFwiemlwXCI6IHJldHVybiBcInppcFwiO1xuICAgICAgICBjYXNlIFwieC16aXAtY29tcHJlc3NlZFwiOiByZXR1cm4gXCJ6aXBcIjtcbiAgICAgICAgY2FzZSBcInBkZlwiOiByZXR1cm4gXCJwZGZcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xuLyoqXG4gKiBTZWxlY3RzIHRvIHdpY2ggbWltZSB0eXBlIHRoZSBtaW1lIHR5cGUgZ2l2ZW4gYmVsb25ncyB0b1xuICogQHBhcmFtIG1pbWVUeXBlIG1pbWUgdHlwZSB0byBiZSBzZWFyY2hlZFxuICogQHJldHVybnMgdGhlIGdlbmVyaWMgdHlwZSxcbmlmIG5vdCBmb3VuZCBpdCByZXR1cm4gXCJvY3RldFwiIHRoYXQgbWVhbnMgZ2VuZXJpYyBiaW5hcnkgZmlsZVxuICovXG52YXIgbWltZVNlbGVjdG9yID0gZnVuY3Rpb24gKG1pbWVUeXBlKSB7XG4gICAgLy8gbGV0IGdlbmVyaWNNaW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFtaW1lVHlwZSB8fCAhbWltZVR5cGUuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgIHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxuICAgIHZhciBoZWFkZXJNaW1lID0gbWltZVR5cGUuc3BsaXQoXCIvXCIpWzBdO1xuICAgIHZhciB0YWlsTWltZSA9IG1pbWVUeXBlLnNwbGl0KFwiL1wiKVsxXTtcbiAgICAvKipcbiAgICAgKiBFdmVyeSBtaW1ldHlwZSB0aGF0XG4gICAgICogc3RhcnRzIHdpdGg6IFwiYXBwbGljYXRpb24vLi4uLlwiXG4gICAgICovXG4gICAgc3dpdGNoIChoZWFkZXJNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvblwiOiByZXR1cm4gYXBwbGljYXRpb25TZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJhdWRpb1wiOiByZXR1cm4gYXVkaW9TZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJ2aWRlb1wiOiByZXR1cm4gdmlkZW9TZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJ0ZXh0XCI6IHJldHVybiB0ZXh0U2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwiaW1hZ2VcIjogcmV0dXJuIGltYWdlU2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwiZm9udFwiOiByZXR1cm4gZm9udFNlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xuLyoqXG4gKiBTZWxlY3RzIHRvIHdpY2ggbWFwcGVkIGV4dGVuc2lvblxuICogdGhlIGdpdmVuIGV4ZW5zaW9uIGJlbG9uZ3MgdG9cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uXG4gKiBAcmV0dXJuc1xuICovXG52YXIgZXh0ZW5zaW9uU2VsZWN0b3IgPSBmdW5jdGlvbiAoZXh0ZW5zaW9uKSB7XG4gICAgdmFyIGdlbmVyaWNNaW1lID0gXCJvY3RldFwiO1xuICAgIGlmIChleHRlbnNpb24gJiYgZXh0ZW5zaW9uICE9PSBcIlwiKSB7XG4gICAgICAgIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJ6aXBcIikgfHwgZXh0ZW5zaW9uLmluY2x1ZGVzKFwicmFyXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiemlwXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwiZG9jXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiZG9jeFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcInhsc1wiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInhsc3hcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJkcmF3aW9cIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJkcmF3aW9cIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJwc2RcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJwc2RcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJjc3ZcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJjc3ZcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwianN4XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJyZWFjdFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJweVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicHl0aG9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInZ1ZVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwidnVlXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcImphdmFcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImphdmFcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwidHNcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInR5cGVzY3JpcHRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwic2Fzc1wiIHx8IGV4dGVuc2lvbiA9PT0gXCJzY3NzXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJzYXNzXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdlbmVyaWNNaW1lO1xufTtcbi8qKlxuICogQ2hhY2sgZm9yIGV4dGVudGlvbiB3aGV0aGVyIHRoZSBmaWxlIGlzIGNvZGUgb3Mgbm90XG4gKiBAcGFyYW0gZXh0ZW5zaW9uXG4gKiBAcmV0dXJuc1xuICovXG52YXIgY2hlY2tJc0NvZGUgPSBmdW5jdGlvbiAoZXh0ZW5zaW9uKSB7XG4gICAgdmFyIGdlbmVyaWNNaW1lID0gXCJ0ZXh0XCI7XG4gICAgaWYgKGV4dGVuc2lvbiAmJiBleHRlbnNpb24gIT09IFwiXCIpIHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbiA9PT0gXCJqc3hcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInJlYWN0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInB5XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJweXRob25cIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwidnVlXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ2dWVcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwiamF2YVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiamF2YVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJ0c1wiIHx8IGV4dGVuc2lvbiA9PT0gXCJ0c3hcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInR5cGVzY3JpcHRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwianNcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwieG1sXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ4bWxcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwicGhwXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJwaHBcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ2VuZXJpY01pbWU7XG59O1xuLyoqXG4gKiBMb29rcyBmb3IgYSBzdWl0YWJsZSBmaWxlIGljb25cbiAqIElmIG5vdCBmb3VuZCwgcmV0dXJucyBvY3RldC1zdHJlYW0gdXJsXG4gKiBAcGFyYW0gcHJvcHMgbWltZSBhbmQgZXh0ZW5zaW9uIGZyb20gZmlsZSB0byBzZWFyY2hcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgZmlsZSBpY29cbiAqL1xudmFyIGdldFVSTEZpbGVJY28gPSBmdW5jdGlvbiAoZmlsZSwgY3VzdG9tSWNvbnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gXCJmYWxsQmFja1wiO1xuICAgIC8vaWYgbm90IGZpbGUsIHJldHVybiBvY3RldFxuICAgIGlmICghZmlsZSkge1xuICAgICAgICByZXN1bHQgPSBERUZfR0VOX01JTUU7XG4gICAgICAgIGlmIChjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnMuZmFsbEJhY2spXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29ucy5mYWxsQmFjaywgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtaW1lU2VsZWN0b3IoZmlsZS50eXBlKTtcbiAgICB9XG4gICAgLy9JZiBwbGFpbiB0ZXh0XG4gICAgdmFyIGV4dGVudGlvbiA9IGdldEV4dChmaWxlLm5hbWUpO1xuICAgIGlmIChyZXN1bHQgPT09IFwidGV4dFwiKSB7XG4gICAgICAgIHJlc3VsdCA9IGNoZWNrSXNDb2RlKGV4dGVudGlvbik7XG4gICAgfVxuICAgIC8vSWYgb2N0ZXQgc3RyZWFtIHJlc3VsdCwgc2Vjb25kIGNoYW5jZTogZmlsZSBleHRlbnRpb25cbiAgICBpZiAocmVzdWx0ID09PSBERUZfR0VOX01JTUUpIHtcbiAgICAgICAgcmVzdWx0ID0gZXh0ZW5zaW9uU2VsZWN0b3IoZXh0ZW50aW9uKTtcbiAgICB9XG4gICAgdmFyIGN1c3RvbVVybCA9IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29uc1tyZXN1bHRdO1xuICAgIGlmIChjdXN0b21VcmwgIT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHsgdXJsOiBjdXN0b21VcmwsIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG59O1xuLyoqXG4gKiBMb29rcyBmb3IgYSBzdWl0YWJsZSBmaWxlIGljb25cbiAqIEBwYXJhbSBwcm9wcyBtaW1lIGFuZCBleHRlbnNpb24gZnJvbSBmaWxlIHRvIHNlYXJjaFxuICogQHJldHVybnMgdGhlIHJlc3VsdCBmaWxlIGljbywgaWYgbm90IGZvdW5kLCB0dXJucyBvY3RldC1zdHJlYW0gdXJsXG4gKi9cbnZhciBnZXRVUkxGaWxlSWNvRnJvbU5hbWVBbmRUeXBlID0gZnVuY3Rpb24gKG5hbWUsIHR5cGUsIGN1c3RvbUljb25zKSB7XG4gICAgdmFyIHJlc3VsdCA9IFwib2N0ZXRcIjtcbiAgICAvL2lmIG5vdCBuYW0gYW5kIHR5cGUsIHJldHVybiBvY3RldFxuICAgIGlmICghbmFtZSkge1xuICAgICAgICByZXN1bHQgPSBERUZfR0VOX01JTUU7XG4gICAgICAgIGlmIChjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnMuZmFsbEJhY2spXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29ucy5mYWxsQmFjaywgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtaW1lU2VsZWN0b3IodHlwZSk7XG4gICAgfVxuICAgIC8vSWYgcGxhaW4gdGV4dFxuICAgIHZhciBleHRlbnRpb24gPSBnZXRFeHQobmFtZSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgcmVzdWx0ID0gY2hlY2tJc0NvZGUoZXh0ZW50aW9uKTtcbiAgICB9XG4gICAgLy9JZiBvY3RldCBzdHJlYW0gcmVzdWx0LCBzZWNvbmQgY2hhbmNlOiBmaWxlIGV4dGVudGlvblxuICAgIGlmIChyZXN1bHQgPT09IERFRl9HRU5fTUlNRSkge1xuICAgICAgICByZXN1bHQgPSBleHRlbnNpb25TZWxlY3RvcihleHRlbnRpb24pO1xuICAgIH1cbiAgICB2YXIgY3VzdG9tVXJsID0gY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zW3Jlc3VsdF07XG4gICAgaWYgKGN1c3RvbVVybCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbVVybCwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgcmV0dXJuIHsgdXJsOiBtaW1lVXJsTGlzdFtyZXN1bHRdLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbn07XG52YXIgbWltZVVybExpc3QgPSB7XG4gICAgYWFjOiBhYWMsXG4gICAgYWNjZGI6IGFjY2RiLFxuICAgIGFidzogYWJ3LFxuICAgIGFyYzogZnJlZWFyYyxcbiAgICBhdmk6IGF2aSxcbiAgICBhenc6IGF6dyxcbiAgICBvY3RldDogb2N0ZXQsXG4gICAgYm1wOiBibXAsXG4gICAgYno6IGJ6LFxuICAgIGJ6MjogYnoyLFxuICAgIGNkYTogY2RhLFxuICAgIGNzaDogY3NoLFxuICAgIGNzczogY3NzLFxuICAgIGNzdjogY3N2LFxuICAgIGRvY3g6IGRvY3gsXG4gICAgZHJhd2lvOiBkcmF3aW8sXG4gICAgZW90OiBlb3QsXG4gICAgZXB1YjogZXB1YixcbiAgICBnemlwOiBnemlwLFxuICAgIGdpZjogZ2lmLFxuICAgIGh0bWw6IGh0bWwsXG4gICAgLy9pY286IGljbyxcbiAgICBpY2FsZW5kYXI6IGljYWxlbmRhcixcbiAgICBqYXI6IGphcixcbiAgICBqcGVnOiBqcGVnLFxuICAgIGphdmFzY3JpcHQ6IGphdmFzY3JpcHQsXG4gICAganNvbjoganNvbixcbiAgICBqc29ubGQ6IGpzb25sZCxcbiAgICBtaWRpOiBtaWRpLFxuICAgIC8vICBqczoganMsXG4gICAgbXAzOiBtcDMsXG4gICAgbXA0OiBtcDQsXG4gICAgbXBlZzogbXBlZyxcbiAgICBtcGtnOiBtcGtnLFxuICAgIG1wMnQ6IG9jdGV0LFxuICAgIG9kcDogb2RwLFxuICAgIG9kczogb2RzLFxuICAgIG9kdDogb2R0LFxuICAgIG9nYTogb2dhLFxuICAgIG9ndjogb2d2LFxuICAgIG9neDogb2d4LFxuICAgIG9wdXM6IG9wdXMsXG4gICAgb3RmOiBvdGYsXG4gICAgcG5nOiBwbmcsXG4gICAgcGRmOiBwZGYsXG4gICAgcGhwOiBwaHAsXG4gICAgcHB0eDogcHB0eCxcbiAgICBwc2Q6IHBzZCxcbiAgICByYXI6IHJhcixcbiAgICBydGY6IHJ0ZixcbiAgICBzYXNzOiBzYXNzLFxuICAgIHNoOiBzaCxcbiAgICAvL3N2Zzogc3ZnLFxuICAgIHN3Zjogc3dmLFxuICAgIHRhcjogdGFyLFxuICAgIHRpZmY6IHRpZmYsXG4gICAgdHRmOiB0dGYsXG4gICAgLy90czogdHMsXG4gICAgdHlwZXNjcmlwdDogdHlwZXNjcmlwdCxcbiAgICB0ZXh0OiB0ZXh0LFxuICAgIHZzZDogdnNkLFxuICAgIHdhdjogd2F2LFxuICAgIHdlYmE6IHdlYmEsXG4gICAgd2VibTogd2VibSxcbiAgICB3ZWJwOiB3ZWJwLFxuICAgIHdvZmY6IHdvZmYsXG4gICAgd21hOiB3bWEsXG4gICAgd212OiB3bXYsXG4gICAgeGh0bWw6IGh0bWwsXG4gICAgeGxzeDogeGxzeCxcbiAgICB4bWw6IHhtbCxcbiAgICB4dWw6IHh1bCxcbiAgICB6aXA6IHppcCxcbiAgICAvLyB0aHJlZWdwOiB0aHJlZWdwLFxuICAgIHNldmVuemlwOiBzZXZlbnppcCxcbiAgICBweXRob246IHB5dGhvbixcbiAgICBqYXZhOiBqYXZhLFxuICAgIHJlYWN0OiByZWFjdCxcbiAgICB2dWU6IHZ1ZSxcbiAgICBmYWxsQmFjazogb2N0ZXQsXG59O1xuXG4vKipcbiAqIEEgY2xhc3MgZGVmaW5pdGlvbiBmb3IgRXh0RmlsZS5cbiAqIFRoaXMgY2xhc3MgaGFzIHRoZSBwdXJwb3NlIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBpbnN0YW5jZXNcbiAqIG9mIGFuIEV4dEZpbGUgZm9yIHBlcmZvcm1pbmcgY29tcGxleCBvcGVyYXRpb25zIHRoYXQgY2Fubm90IGJlXG4gKiBhY2NvbXBsaXNoZWQganVzdCBieSB1c2luZyB0aGUgRXh0RmlsZSB0eXBlLlxuICogRm9yIGluc3RhbmNlLCBpdCBjYW4gaGVscCBpbiBjaGFuZ2luZyB0aGUgdmFsdWUgb2Ygc29tZSBhdHRyaWJ1dGVzXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHNjb3BlcyB0aGFua3MgdG8gbWVtb3J5IHJlZmVyZW5jZS5cbiAqL1xudmFyIEV4dEZpbGVJbnN0YW5jZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFeHRGaWxlSW5zdGFuY2UoZXh0RmlsZSkge1xuICAgICAgICB2YXIgaWQgPSBleHRGaWxlLmlkLCBmaWxlID0gZXh0RmlsZS5maWxlLCBuYW1lID0gZXh0RmlsZS5uYW1lLCBzaXplID0gZXh0RmlsZS5zaXplLCB0eXBlID0gZXh0RmlsZS50eXBlLCBpbWFnZVVybCA9IGV4dEZpbGUuaW1hZ2VVcmwsIHZhbGlkID0gZXh0RmlsZS52YWxpZCwgZXJyb3JzID0gZXh0RmlsZS5lcnJvcnMsIHVwbG9hZE1lc3NhZ2UgPSBleHRGaWxlLnVwbG9hZE1lc3NhZ2UsIHVwbG9hZFN0YXR1cyA9IGV4dEZpbGUudXBsb2FkU3RhdHVzLCBwcm9ncmVzcyA9IGV4dEZpbGUucHJvZ3Jlc3MsIHhociA9IGV4dEZpbGUueGhyLCBleHRyYURhdGEgPSBleHRGaWxlLmV4dHJhRGF0YSwgZXh0cmFVcGxvYWREYXRhID0gZXh0RmlsZS5leHRyYVVwbG9hZERhdGEsIHNlcnZlclJlc3BvbnNlID0gZXh0RmlsZS5zZXJ2ZXJSZXNwb25zZSwgZG93bmxvYWRVcmwgPSBleHRGaWxlLmRvd25sb2FkVXJsLCB2aWRlb1VybCA9IGV4dEZpbGUudmlkZW9Vcmw7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9IGltYWdlVXJsO1xuICAgICAgICB0aGlzLnZhbGlkID0gdmFsaWQ7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICAgICAgICB0aGlzLnVwbG9hZFN0YXR1cyA9IHVwbG9hZFN0YXR1cztcbiAgICAgICAgdGhpcy51cGxvYWRNZXNzYWdlID0gdXBsb2FkTWVzc2FnZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICB0aGlzLnhociA9IHhocjtcbiAgICAgICAgdGhpcy5leHRyYURhdGEgPSBleHRyYURhdGE7XG4gICAgICAgIHRoaXMuZXh0cmFVcGxvYWREYXRhID0gZXh0cmFVcGxvYWREYXRhO1xuICAgICAgICB0aGlzLnNlcnZlclJlc3BvbnNlID0gc2VydmVyUmVzcG9uc2U7XG4gICAgICAgIHRoaXMuZG93bmxvYWRVcmwgPSBkb3dubG9hZFVybDtcbiAgICAgICAgdGhpcy52aWRlb1VybCA9IHZpZGVvVXJsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBtZXRob2QgdW5kZXIgY29uc3RydWN0aW9uXG4gICAgICovXG4gICAgLyogIHByaXZhdGUgc3RhdGljIGthbXVpRmlsZSgpIHtcbiBcbiAgICAgfVxuICAqL1xuICAgIC8qKlxuICAgICAqIENvcGllcyBhbGwgbm9uIHVuZGVmaW5lZCBhdHRyaWJ1dGVzIGZyb20gRXh0RmlsZUluc3RhbmNlIHRvIGEgbmV3IEV4dEZpbGUgb2JqZWN0XG4gICAgICogQHBhcmFtIGV4dEZpbGVJbnN0YW5jZSB0aGUgaW5zdGFuY2Ugb2YgRXh0RmlsZVxuICAgICAqIEByZXR1cm5zIGFuIEV4dEZpbGUgb2JqZWN0XG4gICAgICovXG4gICAgRXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImJlZm9yZSB0b0V4dEZpbGUoKVwiLCBleHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICB2YXIgZXh0RmlsZUNsb25lID0ge307IC8vIHRoZSBuZXcgZW1wdHkgb2JqZWN0XG4gICAgICAgIHZhciBleHRGaWxlSW5zdGFuY2VLZXlzID0gT2JqZWN0LmtleXMoZXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgdmFyIGV4dEZpbGVJbnN0YW5jZVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoZXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgLy8gbGV0J3MgY29weSBhbGwgdXNlciBwcm9wZXJ0aWVzIGludG8gaXRcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRGaWxlSW5zdGFuY2VWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VmFsdWUgPSBleHRGaWxlSW5zdGFuY2VWYWx1ZXNbaV07XG4gICAgICAgICAgICB2YXIgY3VycktleSA9IGV4dEZpbGVJbnN0YW5jZUtleXNbaV07XG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBleHRGaWxlQ2xvbmVbY3VycktleV0gPSBjdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImFmdGVyIHRvRXh0RmlsZSgpXCIsIGV4dEZpbGVDbG9uZSk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJjdXJyZW50IGV4dEZpbGVDbG9uZSBrZXlzXCIsT2JqZWN0LmtleXMoIGV4dEZpbGVDbG9uZSkubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGV4dEZpbGVDbG9uZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvcGllcyBhbGwgbm9uIHVuZGVmaW5lZCBhdHRyaWJ1dGVzIGZyb20gRXh0RmlsZUluc3RhbmNlIHRvIGEgbmV3IEV4dEZpbGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIGFuIEV4dEZpbGUgb2JqZWN0XG4gICAgICovXG4gICAgRXh0RmlsZUluc3RhbmNlLnByb3RvdHlwZS50b0V4dEZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBFeHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIEV4dEZpbGVJbnN0YW5jZTtcbn0oKSk7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG5cclxudmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cblxudmFyIEV4dEZpbGVNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV4dEZpbGVNYW5hZ2VyKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmNyZWFzZXMgdGhlIGlkIGNvdW50ZXIgYW5kIHJldHVybnMgdGhlIG5leHQgaWQgYXZhaWxhYmxlLlxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IGludGVnZXIgaWQgYXZhaWxhYmxlXG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBFeHRGaWxlTWFuYWdlci5uZXh0SWQrKztcbiAgICAgICAgcmV0dXJuIEV4dEZpbGVNYW5hZ2VyLm5leHRJZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYSBkdWkgZmlsZSBsaXN0IGdpdmVuIGFuIGlkXG4gICAgICogQHBhcmFtIGlkIGlkIG9mIHRoZSBmaWxlTGlzdFxuICAgICAqIEBwYXJhbSBleHRGaWxlcyBsaXN0IG9mIER1aUZpbGVzIGZvcmluaXRpYWxpemluZyB0aGUgYXJyYXlcbiAgICAgKiBAcmV0dXJucyB0aGUgaWQgb2YgdGhlIGZpbGVMaXN0XG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3QgPSBmdW5jdGlvbiAoaWQsIGV4dEZpbGVzSW5zdGFuY2VzKSB7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW2lkXSA9IF9fc3ByZWFkQXJyYXkoW10sIGV4dEZpbGVzSW5zdGFuY2VzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IElEXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgSWQgYXNvY2lhdGVkIHdpdGggYSBEdWlGSWxlIGxpc3RcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5jcmVhdGVGaWxlTGlzdE1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5leHRJZCA9IEV4dEZpbGVNYW5hZ2VyLmdldE5leHRJZCgpO1xuICAgICAgICBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbbmV4dElkXSA9IFtdO1xuICAgICAgICByZXR1cm4gbmV4dElkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIGxpc3QgbWFwXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgSWQgYXNvY2lhdGVkIHdpdGggYSBEdWlGSWxlIGxpc3RcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5yZW1vdmVGaWxlTGlzdE1hcCA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW2lkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIG9uIHJlbW92ZVwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgZHJvcHpvbmVcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0c1tpZF07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igb24gZ2V0RXh0RmlsZUluc3RhbmNlTGlzdFwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzKHJlcGxhY2VzKSB0aGUgZXh0RmlsZSBsaXN0IG9uIHByZXBhcmluZyBzdGFnZSBhbmQgcmV0dXJucyB0aGUgbmV3IGFycmF5LlxuICAgICAqIFJlbW92ZXMgdGhlIG5vbiB2YWxpZCBmaWxlcyBpZiBjbGVhbk9uVXBsb2FkIGlzIHRydWUgYW5kIHZhbGlkYXRlRmlsZXMgaXMgYWxzbyB0cnVlXG4gICAgICogVGhlbiBzZXRzIG9uIHByZXBhcmluZyBzdGFnZSBhbGwgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgY3JlaXRlcmlhOlxuICAgICAqIElmIHRoZXVwbG9hZFN0YXR1cyBpcyBkaWZlcmVudCB0aGFuIFwic3VjZXNzXCIgQU5EXG4gICAgICogdGhlbiwgdXBkYXRlIHRoZSBmaWxlcyBvbiBwcmVwYXJpbmcgc3RhZ2UuIE90aGVyd2lzZSBrZWVwIHRoZSBleHRGaWxlIHByb3BzLlxuICAgICAqIEZpbmFsbHksIHVwZGF0ZXMgdGhlIEV4dEZpbGVJbnN0YW5jZSBsaXN0IG9uIEV4dEZpbGVNYW5hZ2VyLlxuICAgICAqIEBwYXJhbSBkcm9wem9uZUlkIHRoZSBpZCB0byBhY2Nlc3MgdGhlIHJpZ2h0IGxpc3RcbiAgICAgKiBAcGFyYW0gbG9jYWxGaWxlcyB0aGUgbGlzdCBvZiBleHRGaWxlc1xuICAgICAqIEBwYXJhbSB2YWxpZGF0ZUZpbGVzIGZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhhdCB2YWxpZGF0aW9uIGlzIGFjdGl2ZSBvciBvwr9ub3RcbiAgICAgKiBAcGFyYW0gY2xlYW5PblVwbG9hZCBmbGFnIHRvIGRldGVybWluZSB3aHRoZXIgdG8gY2xlbmEgdGhlIGxpc3Qgb29mIG5vbiB2YWxpZCBmaWxlcyBvciBub3RcbiAgICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgRXh0RmlsZUluc3RhbmNlXG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlcywgY2xlYW5PblVwbG9hZCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgYmVmb3JlIGlmXCIsIGRyb3B6b25lSWQsIGxvY2FsRmlsZXMsIGNsZWFuT25VcGxvYWQpO1xuICAgICAgICBpZiAoISh0eXBlb2YgZHJvcHpvbmVJZCA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZHJvcHpvbmVJZCA9PT0gXCJzdHJpbmdcIikpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgYmVmb3JlIHRyeVwiLCBsb2NhbEZpbGVzLCBjbGVhbk9uVXBsb2FkKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXN1bHRFeHRMaXN0ID0gW107XG4gICAgICAgICAgICAvL2luaXRpYWxpemVzIHRoZSBleHRGaWxlTEluc3RhbmNlIGxpc3RcbiAgICAgICAgICAgIHZhciB0ZW1Mb2NhbEZpbGVzID0gX19zcHJlYWRBcnJheShbXSwgbG9jYWxGaWxlcywgdHJ1ZSk7XG4gICAgICAgICAgICAvL3JlbW92ZSBub24gdmFsaWRzIGlmIGNsZWFuT25VcGxvYWQgaXMgdHJ1ZSBhbmQgdmFsaWRhdGVGaWxlcyBpcyBhbHNvIHRydWVcbiAgICAgICAgICAgIGlmIChjbGVhbk9uVXBsb2FkICYmIHZhbGlkYXRlRmlsZXMpIHtcbiAgICAgICAgICAgICAgICAvLyBjbGVhbiBvbiBVcGxvYWQgaXMgdHJ1ZSwgc28gbm9uIHZhbGlkIGZpbGVzIG11c3QgYmUgcmVtb3ZlZFxuICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXMgPSB0ZW1Mb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZXh0RmlsZSkgeyByZXR1cm4gZXh0RmlsZS52YWxpZDsgfSk7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRlbUxvY2FsRmlsZXMgZmlsdGVyXCIsIHRlbUxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIGFmdGVyIHJlbW92ZSBub24gdmFsaWRzXCIsIHRlbUxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXMpIHtcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0aW9uIGZsYWcgd2FzIHNldCB0byB0cnVlLCBzbyBvbmx5IHZhbGlkPXRydWUgZmlsZXMgd2lsbCBiZSBzZXQgdG8gXCJwcmVwYXJpbmdcIlxuICAgICAgICAgICAgICAgIC8vc28sIG9ubHkgdmFsaWQgZmlsZXMgd2FzIGtlcHQgaW4gdGhlIHRlbUxvY2FsZmlsZXMgYXJyYXlcbiAgICAgICAgICAgICAgICAvL25vdyBzZXQgdGhlIHByZXBhcmluZyBzdGF0ZSBvbmx5IGZvciBmaWxlcyB3aXRoIHVwbG9hZFN0YXR1cyAhPT0gXCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICB0ZW1Mb2NhbEZpbGVzID1cbiAgICAgICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dEZpbGUudXBsb2FkU3RhdHVzICE9PSBcInN1Y2Nlc3NcIiAmJiBleHRGaWxlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwicHJlcGFyaW5nXCIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIGV4dEZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGFsbCBmaWxlcyB3aWxsIGJlIHNldCB0byBcInByZXBhcmluZ1wiIHdoZXRoZXIgdGhlIHZhbGlkIHZhbHVlXG4gICAgICAgICAgICAgICAgLy8gZXhjZXB0IHRob3NlIGZpbGVzIHdpdGggdXBsb2FkU3RhdHVzID09PVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRGaWxlLnVwbG9hZFN0YXR1cyAhPT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJwcmVwYXJpbmdcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbih7fSwgZXh0RmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIHJlc3VsdFwiLCB0ZW1Mb2NhbEZpbGVzKTtcbiAgICAgICAgICAgIC8vY29udmVydG8gdG8gT2JqZWN0IGluc3RhbmNlc1xuICAgICAgICAgICAgcmVzdWx0RXh0TGlzdCA9IHRlbUxvY2FsRmlsZXMubWFwKGZ1bmN0aW9uIChGKSB7IHJldHVybiBuZXcgRXh0RmlsZUluc3RhbmNlKEYpOyB9KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBSRVNVTFQgcmVzdWx0RXh0TGlzdFwiLCByZXN1bHRFeHRMaXN0KTtcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdChkcm9wem9uZUlkLCByZXN1bHRFeHRMaXN0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBSRVNVTFQgcmVzdWx0U2V0XCIsIHJlc3VsdFNldCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0RXh0TGlzdDtcbiAgICAgICAgICAgIC8vIHJldHVybiBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbZHJvcHpvbmVJZF07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgRXJyb3Igb24gZ2V0IExpc3RcIiwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gKiBVcGRhdGVzKHJlcGxhY2VzKSB0aGUgZXh0RmlsZSBsaXN0IG9uIHByZXBhcmluZyBzdGFnZSBhbmQgcmV0dXJucyB0aGUgbmV3IGFycmF5LlxuICogUmVtb3ZlcyB0aGUgbm9uIHZhbGlkIGZpbGVzIGlmIGNsZWFuT25VcGxvYWQgaXMgdHJ1ZSBhbmQgdmFsaWRhdGVGaWxlcyBpcyBhbHNvIHRydWVcbiAqIFRoZW4gc2V0cyBvbiBwcmVwYXJpbmcgc3RhZ2UgYWxsIGZpbGVzIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGNyZWl0ZXJpYTpcbiAqIElmIHRoZXVwbG9hZFN0YXR1cyBpcyBkaWZlcmVudCB0aGFuIFwic3VjZXNzXCIgQU5EXG4gKiB0aGVuLCB1cGRhdGUgdGhlIGZpbGVzIG9uIHByZXBhcmluZyBzdGFnZS4gT3RoZXJ3aXNlIGtlZXAgdGhlIGV4dEZpbGUgcHJvcHMuXG4gKiBGaW5hbGx5LCB1cGRhdGVzIHRoZSBFeHRGaWxlSW5zdGFuY2UgbGlzdCBvbiBFeHRGaWxlTWFuYWdlci5cbiAqIEBwYXJhbSBkcm9wem9uZUlkIHRoZSBpZCB0byBhY2Nlc3MgdGhlIHJpZ2h0IGxpc3RcbiAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzXG4gKiBAcGFyYW0gdmFsaWRhdGVGaWxlcyBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgdmFsaWRhdGlvbiBpcyBhY3RpdmUgb3Igb8K/bm90XG4gKiBAcGFyYW0gY2xlYW5PblVwbG9hZCBmbGFnIHRvIGRldGVybWluZSB3aHRoZXIgdG8gY2xlbmEgdGhlIGxpc3Qgb29mIG5vbiB2YWxpZCBmaWxlcyBvciBub3RcbiAqIEByZXR1cm5zIGEgbGlzdCBvZiBFeHRGaWxlSW5zdGFuY2VcbiAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0TWFwUHJlcGFyaW5nMiA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzLCBjbGVhbk9uVXBsb2FkKSB7XG4gICAgICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0KGRyb3B6b25lSWQsIGxvY2FsRmlsZXMubWFwKGZ1bmN0aW9uIChGKSB7IHJldHVybiBuZXcgRXh0RmlsZUluc3RhbmNlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBGKSwgeyB1cGxvYWRTdGF0dXM6IFwicHJlcGFyaW5nXCIgfSkpOyB9KSk7XG4gICAgICAgIHJldHVybiBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgIH07XG4gICAgRXh0RmlsZU1hbmFnZXIubmV4dElkID0gMDtcbiAgICBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHMgPSB7fTtcbiAgICByZXR1cm4gRXh0RmlsZU1hbmFnZXI7XG59KCkpO1xuXG52YXIgY3JlYXRlVXBsb2FkQ29uZmlnID0gZnVuY3Rpb24gKHVybCwgbWV0aG9kLCBoZWFkZXJzLCB1cGxvYWRMYWJlbCwgY2xlYW5vblVwbG9hZCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgdXBsb2FkTGFiZWw6IHVwbG9hZExhYmVsLFxuICAgICAgICBjbGVhbm9uVXBsb2FkOiBjbGVhbm9uVXBsb2FkXG4gICAgfTtcbn07XG5cbi8qKlxuICogQSBzeW50ZXRpYyBmaWxlIGNyZWF0b3IuXG4gKiBWZXJ5IHVzZWZ1bCBmb3IgdGVzdHNcbiAqL1xudmFyIFN5bnRoZXRpY0ZpbGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3ludGhldGljRmlsZSgpIHtcbiAgICB9XG4gICAgLyoqXG4gKlxuICogQHBhcmFtIG5hbWUgdGhlIGZpbGUgbmFtZVxuICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICogQHBhcmFtIHR5cGUgdGhlIGZpbGUgdHlwZVxuICogQHJldHVybnNcbiAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZSA9IGZ1bmN0aW9uIChuYW1lLCBzaXplLCB0eXBlKSB7XG4gICAgICAgIHZhciBmaWxlID0gbmV3IEZpbGUoW10sIG5hbWUsIHsgdHlwZTogdHlwZSB9KTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZpbGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2FhYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJhY2NfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuYWFjXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9hYWNcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9hYncgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYWJpd29yZC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hYndcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtYWJpd29yZFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ZyZWVhcmMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiZnJlZWFyYy1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hcmNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtZnJlZWFyY1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2F2aSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJhdmktZmlsZS13aXRoLWxhcmdlLW5hbWUuYXZpXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby94LW1zdmlkZW9cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9hencgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYW1hem9uX2tpbmRsZV9lYm9vay1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hendcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2tcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vY3RldCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJiaW5hcnlfb2N0ZXRfc3RyZWFtLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmJpblwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYm1wID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImJpdF9tYXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuYm1wXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9ibXBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9ieiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ4X2J6aXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuYnpcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtYnppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2J6MiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ4X2J6aXBfMi1maWxlLXdpdGgtbGFyZ2UtbmFtZS5iejJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtYnppcDJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9jZGEgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiY2RfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuY2RhXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWNkZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzaCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmNzaFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1jc2hcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc3MgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5jc3NcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvY3NzXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfY3N2ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuY3N2XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2NzdlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2RvYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmRvY1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vbXN3b3JkXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZG9jeCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmRvY3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZW90ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZW90XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2VwdWIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5lcHViXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9lcHViK3ppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2d6aXAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5nelwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vZ3ppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2dpZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmdpZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvZ2lmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfaHRtID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaHRtXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9odG1sID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaHRtbFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9odG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfaWNvID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaWNvXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS92bmQubWljcm9zb2Z0Lmljb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9pY2FsZW5kYXIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5pY3NcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvY2FsZW5kYXJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qYXJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZWcgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qcGVnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9qcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanBnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuanBnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9qcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9qYXZhc2NyaXB0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanNvbiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpzb25cIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qc29ubGQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc29ubGRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2xkK2pzb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9taWQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5taWRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL21pZGlcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94X21pZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8veC1taWRpXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbWlkaSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZGlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3gtbWlkaVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hfbWlkaSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZGlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3gtbWlkaVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21qcyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1qc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9qYXZhc2NyaXB0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbXAzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXAzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9tcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbXA0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXA0XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby9tcDRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGVnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXBlZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vbXBlZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wa2cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5tcGtnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kcCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9kcFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZHRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29nYSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9nYVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vb2dnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2d2ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2d2XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby9vZ2dcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ3ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZ3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL29nZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29wdXMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vcHVzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9vcHVzXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb3RmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub3RmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJmb250L290ZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BuZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBuZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvcG5nXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcGRmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucGRmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9wZGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9waHAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5waHBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcHB0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucHB0XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BwdHggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wcHR4XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcmFyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucmFyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQucmFyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcnRmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucnRmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9ydGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9zaCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnNoXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LXNoXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfc3ZnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuc3ZnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9zdmcreG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfc3dmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuc3dmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RhciA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnRhclwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC10YXJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50aWZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3RpZmZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWZmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUudGlmZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvdGlmZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIm1wMnRfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUudHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL21wMnRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90dGYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50dGZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImZvbnQvdHRmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdGV4dCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnR4dFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3R5cGVzY3JpcHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidHlwZXNjcmlwdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50c1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ZzZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJtc192aXNpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS52c2RcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dhdiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ3YXZfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUud2F2XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby93YXZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJhID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIndlYl9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS53ZWJhXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby93ZWJtXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd2VibSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ3ZWJfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUud2VibVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vd2VibVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYnAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwid2ViX2ltYWdlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLndlYnBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3dlYnBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUud29mZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiZm9udC93b2ZmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd29mZjIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS53b2ZmMlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiZm9udC93b2ZmMlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hodG1sID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUueGh0bWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hsc3ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54bHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hscyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnhsc3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeG1sID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInhtbC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54bWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3htbF90eHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwieG1sX3BsYWluX3RleHQtZmlsZS13aXRoLWxhcmdlLW5hbWUueG1sXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94dWwgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54dWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV96aXAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiemlwLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnppcFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vemlwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfM2dwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncF92aWRlby1maWxlLXdpdGgtbGFyZ2UtbmFtZS4zZ3BcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvLzNncHBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3AyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncDJfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuM2cyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby8zZ3BwMlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncF9hID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncF9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS4zZ3BcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvLzNncHBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfdiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCIzZ3BfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuM2dwMlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vM2dwcDJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV83eiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJzZXZlbl96aXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuN3pcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3B5dGhvbiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJweXRob24tZmlsZS13aXRoLWxhcmdlLW5hbWUucHlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXZhID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImphdmEtZmlsZS13aXRoLWxhcmdlLW5hbWUuamF2YVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3JlYWN0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInJlYWN0X2pzeC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV92dWUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidnVlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnZ1ZVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZmFrZSAoc3ludGhldGljKSBmaWxlc1xuICAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemUgZm9yIGFsbCBzeW50aGV0aWMgZmlsZXNcbiAgICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiBhbGwgZmlsZSBpY29uIHByZXZpZXcgc3VwcG9ydGVkIGZpbGVzXG4gICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVGaWxlTGlzdE1pc2NlbGFuaW91cyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHZhciBsaXN0RmlsZSA9IFtdO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2FhYyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYWJ3KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9mcmVlYXJjKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9hdmkoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2F6dyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2N0ZXQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2JtcChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYnooc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2J6MihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfY2RhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc2goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzcyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfY3N2KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9kb2Moc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2RvY3goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2VvdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZXB1YihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZ3ppcChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZ2lmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9odG0oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2h0bWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ljbyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfaWNhbGVuZGFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZWcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfanMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzb24oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzb25sZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbWlkKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9taWRpKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94X21pZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeF9taWRpKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tanMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wMyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbXA0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGVnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGtnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kcyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2R0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ2Eoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29ndihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2d4KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vcHVzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vdGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BuZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcGRmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9waHAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BwdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcHB0eChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcmFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9ydGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3NoKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9zdmcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3N3ZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdGFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RpZmYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90dGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RleHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3R5cGVzY3JpcHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ZzZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd2F2KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJtKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJwKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmMihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeGh0bWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hsc3goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hscyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeG1sKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94bWxfdHh0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94dWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ppcChzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3Aoc2l6ZSkpO1xuICAgICAgICAvL2xpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfM2dwMihzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfYShzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfdihzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV83eihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcHl0aG9uKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXZhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9yZWFjdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdnVlKHNpemUpKTtcbiAgICAgICAgcmV0dXJuIGxpc3RGaWxlO1xuICAgIH07XG4gICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGU7XG59KCkpO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vIFNIT1JUQ1VUU1xuLyoqXG4gKiBDcmVhdGUgYSBsaXN0IG9mIHN5bnRoZXRpYyBmaWxlcyB3aXRoIGRpZmZlcmVudCBtaW1lIHR5cGVzXG4gKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplIGZvciBlYWNoIHN5bnRoZXRpYyBmaWxlXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2Ygc3ludGhldGljIGZpbGVcbiAqL1xudmFyIGNyZWF0ZUxpc3RPZk11bHRpVHlwZUZpbGUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGVMaXN0TWlzY2VsYW5pb3VzKHNpemUpO1xufTtcbi8qKlxuICogQ3JlYXRlcyBhIHN5bnRoZXRpYyBmaWxlLlxuICogQnkgZGVmYXVsdCwgY3JlYXRlcyBhIHBuZyBpbWFnZSBmaWxlXG4gKiBAcGFyYW0gbmFtZSB0aGUgZmlsZSBuYW1lIHRvIHNob3cuIEJ5IGRlZmF1bHQgaXMgc2V0IHRvIFwicG5nLWltYWdlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBuZ1wiXG4gKiBAcGFyYW0gc2l6ZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZmlsZS4gQnkgZGVmYXVsdCB0aGlzIHZhbHVlIGlzIHNldCB0byA0NTU1NTVcbiAqIEBwYXJhbSB0eXBlIHRoZSBtaW1lIHR5cGUgb2YgdGhlIGZpbGUuIEJ5IGRlZmF1bHQgaXMgc2V0IHRvIFwiaW1hZ2UvcG5nXCJcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBjcmVhdGVTeW50aGV0aWNGaWxlID0gZnVuY3Rpb24gKG5hbWUsIHNpemUsIHR5cGUpIHtcbiAgICBpZiAobmFtZSA9PT0gdm9pZCAwKSB7IG5hbWUgPSBcInBuZy1pbWFnZS1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wbmdcIjsgfVxuICAgIGlmIChzaXplID09PSB2b2lkIDApIHsgc2l6ZSA9IDQ1NTU1NTsgfVxuICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IFwiaW1hZ2UvcG5nXCI7IH1cbiAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKG5hbWUsIHNpemUsIHR5cGUpO1xufTtcblxuLyoqXG4gKiBBbiBpZCBnZW5lcmF0b3IgZm9yIEZpbGVJdGVtc1xuICovXG52YXIgRmlsZUlkR2VuZXJhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZpbGVJZEdlbmVyYXRvcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSBpZCBjb3VudGVyIGFuZCByZXR1cm5zIHRoZSBuZXh0IGlkIGF2YWlsYWJsZS5cbiAgICAgKiBAcmV0dXJucyB0aGUgbmV4dCBpbnRlZ2VyIGlkIGF2YWlsYWJsZVxuICAgICAqL1xuICAgIEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIEZpbGVJZEdlbmVyYXRvci5uZXh0SWQrKztcbiAgICAgICAgcmV0dXJuIEZpbGVJZEdlbmVyYXRvci5uZXh0SWQ7XG4gICAgfTtcbiAgICBGaWxlSWRHZW5lcmF0b3IubmV4dElkID0gMDtcbiAgICByZXR1cm4gRmlsZUlkR2VuZXJhdG9yO1xufSgpKTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZmlsZUxpc3QgaW50byBhbiBhcnJheSBvZiBzZXBhcmF0ZWQgRXh0RmlsZSBvYmplY3RzXG4gKiBAcGFyYW0gZmlsZUxpc3QgdGhlIEZpbGVMaXN0IG9iamVjdCBnaXZlbiBieSBpbnB1dChldmVudC50YXJnZXQuZmlsZXMpIG9yIGRyb3Agb3BlcmF0aW9uIChldmVudC5kYXRhVHJhbnNmZXIpXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBFeHRGaWxlIG9iamVjdHNcbiAqL1xudmFyIGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkgPSBmdW5jdGlvbiAoZmlsZUxpc3QpIHtcbiAgICB2YXIgZXh0RmlsZUFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGYgPSB2b2lkIDA7IChmID0gZmlsZUxpc3RbaV0pOyBpKyspIHtcbiAgICAgICAgZXh0RmlsZUFycmF5LnB1c2goeyBpZDogRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpLCBmaWxlOiBmLCBuYW1lOiBmLm5hbWUsIHNpemU6IGYuc2l6ZSwgdHlwZTogZi50eXBlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZXh0RmlsZUFycmF5O1xufTtcbi8qKlxuICogQ29udmVydHMgdGhlIGZpbGVMaXN0IGludG8gYW4gYXJyYXkgb2Ygc2VwYXJhdGVkIEV4dEZpbGUgaW5zdGFuY2VzXG4gKiBAcGFyYW0gZmlsZUxpc3QgdGhlIEZpbGVMaXN0IG9iamVjdCBnaXZlbiBieSBpbnB1dCAoZXZlbnQudGFyZ2V0LmZpbGVzKSBvciBkcm9wIG9wZXJhdGlvbiAoZXZlbnQuZGF0YVRyYW5zZmVyKVxuICogQHJldHVybnMgYW4gYXJyYXkgb2YgRXh0RmlsZSBpbnN0YW5jZXNcbiAqL1xudmFyIGZpbGVMaXN0VG9FeHRGaWxlSW5zdGFuY2VBcnJheSA9IGZ1bmN0aW9uIChmaWxlTGlzdCkge1xuICAgIHZhciBleHRGaWxlQXJyYXkgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgZiA9IHZvaWQgMDsgKGYgPSBmaWxlTGlzdFtpXSk7IGkrKykge1xuICAgICAgICBleHRGaWxlQXJyYXkucHVzaChuZXcgRXh0RmlsZUluc3RhbmNlKHsgaWQ6IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSwgZmlsZTogZiwgbmFtZTogZi5uYW1lLCBzaXplOiBmLnNpemUsIHR5cGU6IGYudHlwZSB9KSk7XG4gICAgfVxuICAgIHJldHVybiBleHRGaWxlQXJyYXk7XG59O1xuXG52YXIgaXNWYWxpZGF0ZUFjdGl2ZSA9IGZ1bmN0aW9uIChhY2NlcHQsIG1heEZpbGVTaXplLCBtYXhGaWxlcywgdmFsaWRhdG9yKSB7XG4gICAgcmV0dXJuICgoYWNjZXB0ICE9PSB1bmRlZmluZWQgJiYgYWNjZXB0ICE9PSBudWxsKSB8fFxuICAgICAgICAobWF4RmlsZVNpemUgIT09IHVuZGVmaW5lZCAmJiBtYXhGaWxlU2l6ZSAhPT0gbnVsbCkgfHxcbiAgICAgICAgKG1heEZpbGVzICE9PSB1bmRlZmluZWQgJiYgbWF4RmlsZXMgIT09IG51bGwpIHx8XG4gICAgICAgICh2YWxpZGF0b3IgIT09IHVuZGVmaW5lZCAmJiB2YWxpZGF0b3IgIT09IG51bGwpKTtcbn07XG5cbi8qKlxuICogVGhlIG1heCBzaXplIG9mIHRoZSB3b3JkIGluIGNoYXJhY3RlcnNcbiAqL1xudmFyIERFRkFVTFRfTUFYX1NJWkVfV09SRCA9IDMwO1xuLyoqXG4gKlxuICogQHBhcmFtIHdvcmQgdGhlIHdvcmQgdG8gYmUgc2hyaW5rZWRcbiAqIEByZXR1cm5zIHRoZSBzaHJpbmtlZCB3b3JkXG4gKi9cbnZhciBzaHJpbmtXb3JkID0gZnVuY3Rpb24gKHdvcmQsIGNhcmQpIHtcbiAgICBpZiAod29yZCA9PT0gdm9pZCAwKSB7IHdvcmQgPSBcIlwiOyB9XG4gICAgaWYgKGNhcmQgPT09IHZvaWQgMCkgeyBjYXJkID0gZmFsc2U7IH1cbiAgICB2YXIgbmV3V29yZCA9IHdvcmQ7XG4gICAgaWYgKGNhcmQpIHtcbiAgICAgICAgaWYgKHdvcmQubGVuZ3RoID49IDIwKSB7XG4gICAgICAgICAgICBuZXdXb3JkID0gd29yZC5zbGljZSgwLCAxMCkgKyBcIi4uLlwiICsgd29yZC5zbGljZSgtNyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAod29yZC5sZW5ndGggPj0gREVGQVVMVF9NQVhfU0laRV9XT1JEKSB7XG4gICAgICAgIG5ld1dvcmQgPSB3b3JkLnNsaWNlKDAsIDEzKSArIFwiLi4uXCIgKyB3b3JkLnNsaWNlKC04KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1dvcmQ7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgYSBleHRGaWxlIGFuZCBzZXRzIGl0cyB1cGxvYWRTdGF0dXMgdG8gXCJ1cGxvYWRpbmdcIlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGUgb2JqZWN0XG4gKiBAcmV0dXJucyB0aGUgZXh0ZW5kZWQgZmlsZSB3aXRoIHRoZSB1cGxvYWRTdGF0dXMgYXR0cmlidXRlIG1vZGlmaWVkXG4gKi9cbnZhciBzZXRQcmVwVG9VcGxvYWRpbmcgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJwcmVwVG9VcGxvYWQgT25lXCIsIGV4dEZpbGUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInVwbG9hZGluZ1wiIH0pKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBVcGRhdGVzIGEgZXh0RmlsZSBhbmQgc2V0cyBpdHMgdXBsb2FkU3RhdHVzIHRvIFwic3VjY2Vzc1wiXG4gKiBAcGFyYW0gZXh0RmlsZSB0aGUgZXh0ZW5kZWQgZmlsZSBvYmplY3RcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBmaWxlIHdpdGggdGhlIHVwbG9hZFN0YXR1cyBhdHRyaWJ1dGUgbW9kaWZpZWRcbiAqL1xudmFyIHVwbG9hZE9uZSA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBPbmVcIiwgZXh0RmlsZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwic3VjY2Vzc1wiIH0pKTtcbiAgICAgICAgfSwgMjAwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBBd2FpdHMgdGhlIGdpdmVuIHRpbWUgYmVmb3JlIHN0YXJ0IHVwbG9hZGluZ1xuICogQHBhcmFtIHByZXBhcmluZ1RpbWUgdGhlIHRpbWUgaW4gbWlsaXNlY29uZHMsIGJ5IGRlZmF1bHQgaXQgd2lsbCB3YWl0IDEuNSBzZWNzXG4gKiBAcmV0dXJucyBhbiBlbXB0eSBvYmplY3RcbiAqL1xudmFyIHNsZWVwUHJlcGFyaW5nID0gZnVuY3Rpb24gKHByZXBhcmluZ1RpbWUpIHtcbiAgICBpZiAocHJlcGFyaW5nVGltZSA9PT0gdm9pZCAwKSB7IHByZXBhcmluZ1RpbWUgPSA1MDAwOyB9XG4gICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZGZpbGVzIHByZXBhcmluZ1RpbWUgT25lXCIsIHByZXBhcmluZ1RpbWUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCBwcmVwYXJpbmdUaW1lKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZUluc3RhbmNlXG4gKiBAcmV0dXJuc1xuICovXG52YXIgcHJlcFRvVXBsb2FkT25lID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJwcmVwVG9VcGxvYWQgT25lXCIsIGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJ1cGxvYWRpbmdcIjtcbiAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGVJbnN0YW5jZSksIHsgdXBsb2FkU3RhdHVzOiBcInVwbG9hZGluZ1wiIH0pKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGVJbnN0YW5jZVxuICogQHJldHVybnNcbiAqL1xudmFyIHVwbG9hZE9uZUV4dEZpbGUgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBPbmVcIiwgZXh0RmlsZUluc3RhbmNlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcInN1Y2Nlc3NcIjtcbiAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGVJbnN0YW5jZSksIHsgdXBsb2FkU3RhdHVzOiBcInN1Y2Nlc3NcIiB9KSk7XG4gICAgICAgIH0sIDIwMDApO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlIHRoZSBleHRGaWxlIHRvIHVwbG9hZFxuICogQHBhcmFtIERyb3B6b25lTG9jYWxpemVyIHRoZSBsb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zIGEgZHVpVXBsb2FkUmVzcG9uc2Ugb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSByZXN1bHRcbiAqL1xudmFyIGZha2VGdWlVcGxvYWQgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlLCBEcm9wem9uZUxvY2FsaXplcikge1xuICAgIGlmIChEcm9wem9uZUxvY2FsaXplciA9PT0gdm9pZCAwKSB7IERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3RvcihcIkVOLWVuXCIpOyB9XG4gICAgdmFyIGV4dEZpbGUgPSBleHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmFuZG9tTnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApO1xuICAgICAgICAgICAgaWYgKHJhbmRvbU51bWJlciAlIDIgPT09IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBEcm9wem9uZUxvY2FsaXplci5mYWtldXBsb2Fkc3VjY2VzcztcbiAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZCA9IHsgdXJsOiBcIlwiIH07XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgc2VydmVyUmVzcG9uc2U6IHsgc3VjY2Vzczogc3VjY2VzcywgbWVzc2FnZTogbWVzc2FnZSwgcGF5bG9hZDogcGF5bG9hZCB9LCB1cGxvYWRTdGF0dXM6IFwic3VjY2Vzc1wiLCB1cGxvYWRNZXNzYWdlOiBtZXNzYWdlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBzdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBEcm9wem9uZUxvY2FsaXplci5mYWtlVXBsb2FkRXJyb3I7XG4gICAgICAgICAgICAgICAgdmFyIHBheWxvYWQgPSB7fTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyBzZXJ2ZXJSZXNwb25zZTogeyBzdWNjZXNzOiBzdWNjZXNzLCBtZXNzYWdlOiBtZXNzYWdlLCBwYXlsb2FkOiBwYXlsb2FkIH0sIHVwbG9hZFN0YXR1czogXCJlcnJvclwiLCB1cGxvYWRNZXNzYWdlOiBtZXNzYWdlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTcwMCk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbWluIChpbmNsdWRlZCkgYW5kIG1heCAoZXhjbHVkZWQpXG4gKiBAcGFyYW0gbWluIHRoZSBtaW4gbnVtYmVyXG4gKiBAcGFyYW0gbWF4IHRoZSBtYXggbnVtYmVyXG4gKiBAcmV0dXJucyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiBtaW4gKGluY2x1ZGVkKSBhbmQgbWF4IChleGNsdWRlZClcbiAqL1xuZnVuY3Rpb24gZ2V0UmFuZG9tSW50KG1pbiwgbWF4KSB7XG4gICAgaWYgKG1pbiA9PT0gdm9pZCAwKSB7IG1pbiA9IDA7IH1cbiAgICBpZiAobWF4ID09PSB2b2lkIDApIHsgbWF4ID0gMDsgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG59XG5cbi8qKlxuICogQ2xlYW5zIHRoZSBpbnB1dC52YWx1ZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBpbnB1dEVsZW1lbnRcbiAqL1xudmFyIGNsZWFuSW5wdXQgPSBmdW5jdGlvbiAoaW5wdXRFbGVtZW50KSB7XG4gICAgaWYgKCFpbnB1dEVsZW1lbnQpXG4gICAgICAgIHJldHVybjtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBcIlwiO1xufTtcblxuLyoqXG4gKiBJZiBjbGFzc05hbWUgaXMgZ2l2ZW4sIGFkZHMgY2xhc3MgbmFtZSBpbiBzdHJpbmcgZm9ybWF0IHRvIGEgYmFzZSBjbGFzcyBuYW1lXG4gKiBAcGFyYW0gYmFzZUNsYXNzTmFtZSB0aGUgYmFzZSBjbGFzcyBuYW1lXG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBjbGFzcyBuYW1lIHRvIGJlIGFkZGVkXG4gKiBAcmV0dXJucyBhIG5ldyBjbGFzcyBuYW1lIG9idGFpbmVkIGJ5IGFkZGluZyB0aGUgc2Vjb25kIHBhcmFtYXRlclxuICovXG52YXIgYWRkQ2xhc3NOYW1lID0gZnVuY3Rpb24gKGJhc2VDbGFzc05hbWUsIGNsYXNzTmFtZSkge1xuICAgIGlmIChjbGFzc05hbWUpXG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChiYXNlQ2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIGJhc2VDbGFzc05hbWU7XG59O1xuXG52YXIgaXNVcGxvYWRBYmxlRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlLCB2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgIHJldHVybiAoIXZhbGlkYXRlRmlsZXNGbGFnIHx8ICh2YWxpZGF0ZUZpbGVzRmxhZyAmJiBleHRGaWxlLnZhbGlkKSkgJiYgZXh0RmlsZS51cGxvYWRTdGF0dXMgIT09IFwic3VjY2Vzc1wiO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIGZpbGVcbiAqIEBwYXJhbSBuYW1lXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHNpemVcbiAqIEByZXR1cm5zIHRoZSBmaWxlIG5hbWUsIHR5cGUgYW5kIHNpemVcbiAqL1xudmFyIGdldExvY2FsRmlsZUl0ZW1EYXRhID0gZnVuY3Rpb24gKGZpbGUsIG5hbWUsIHR5cGUsIHNpemUpIHtcbiAgICB2YXIgbG9jYWxGaWxlTmFtZSA9IFwiXCI7XG4gICAgdmFyIGxvY2FsRmlsZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgdmFyIGxvY2FsRmlsZVNpemUgPSB1bmRlZmluZWQ7XG4gICAgLy8gaWYgZmlsZSBvYmplY3QgaXMgdmFsaWQsIG9idGFpbiBtZXRhZGF0YSBmcm9tIGl0XG4gICAgLy8gb3RoZXJ3aXNlIHRyeSB0byBnZXQgZmlsZSBkYXRhIGZyb20gaW5kaXZpZHVhbCBwcm9wcyBpbiBzdHJpbmcgZm9ybWF0XG4gICAgaWYgKGZpbGUgJiYgdHlwZW9mIGZpbGUubmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBsb2NhbEZpbGVOYW1lID0gZmlsZS5uYW1lO1xuICAgICAgICBsb2NhbEZpbGVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgICBsb2NhbEZpbGVTaXplID0gZmlsZS5zaXplO1xuICAgIH1cbiAgICBlbHNlIGlmIChuYW1lICYmIHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGxvY2FsRmlsZU5hbWUgPSBuYW1lO1xuICAgICAgICBsb2NhbEZpbGVUeXBlID0gdHlwZTtcbiAgICAgICAgbG9jYWxGaWxlU2l6ZSA9IHNpemU7XG4gICAgfVxuICAgIHJldHVybiBbbG9jYWxGaWxlTmFtZSwgbG9jYWxGaWxlVHlwZSwgbG9jYWxGaWxlU2l6ZV07XG59O1xuXG4vKipcbiAqIFNlcGFyYXRlIHRoZSBhY2NlcHQgc3RyaW5nIGFycmF5IGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzXG4gKiBAcGFyYW0gYWNjZXB0IHRoZSBzdHJpbmcgYWNjZXB0IGFycmF5XG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIGluIHdpY2ggZXZlcnkgaXRlbVxuICovXG52YXIgc2VwYXJhdGVBY2NlcHQgPSBmdW5jdGlvbiAoYWNjZXB0KSB7XG4gICAgaWYgKCFhY2NlcHQgfHwgYWNjZXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHZhciBjb21tYVNlcGFyYXRlZEFjY3BldCA9IGFjY2VwdC5zcGxpdChcIixcIikubWFwKGZ1bmN0aW9uIChhY2NlcHRJdGVtKSB7IHJldHVybiBhY2NlcHRJdGVtLnRyaW0oKTsgfSk7XG4gICAgcmV0dXJuIGNvbW1hU2VwYXJhdGVkQWNjcGV0O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGZpbGUgaXMgdmFsaWQgb3Igbm90IGdpdmVuIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW50aW9ucyBhbmQgbWltZSB0eXBlc1xuICogZS5nLiBhY2NlcHQgPSAgW1wiLmRvY1wiLCBcIi5kb2N4XCIsIFwiLnhtbFwiLCBcImFwcGxpY2F0aW9uL21zd29yZFwiLCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCJdXG4gKiBAcGFyYW0gYWNjZXB0IHRoZSBhcnJheSBvZiBzdHJpbmdzIGFjY2VwdCBpdGVtc1xuICogQHBhcmFtIGZpbGUgYSBGaWxlIG9iamVjdCB0byBiZSBldmFsdWF0ZWRcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIG1pbWUgdHlwZSBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBhY2NlcHQgcGFyYW1cbiAqL1xudmFyIHZhbGlkYXRlQWNjZXB0ID0gZnVuY3Rpb24gKGFjY2VwdCwgZmlsZSkge1xuICAgIHZhciB2YWxpZCA9IGZhbHNlO1xuICAgIHZhciBuYW1lID0gZmlsZS5uYW1lLCB0eXBlID0gZmlsZS50eXBlO1xuICAgIC8vQXJyYXkoNSkgWyBcIi5kb2NcIiwgXCIuZG9jeFwiLCBcIi54bWxcIiwgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiIF1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjY2VwdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWNjZXB0SXRlbSA9IGFjY2VwdFtpXTtcbiAgICAgICAgLy9jaGVjayBpcyBub3QgZW1wdHlcbiAgICAgICAgaWYgKGFjY2VwdEl0ZW0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAvL2NoZWNrIGV4dGVudGlvblxuICAgICAgICAgICAgaWYgKGFjY2VwdEl0ZW0uY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgICAgICAgICAgIGlmIChhY2NlcHRJdGVtLmluY2x1ZGVzKGdldEV4dChuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jaGVjayBtaW1lXG4gICAgICAgICAgICAvLyBoZWFkZXIvdGFpbCAgPT4gaW1hZ2UvcG5nICA7ICBpbWFnZS8qIDsgYXVkaW9cbiAgICAgICAgICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoID4gMCAmJiBhY2NlcHRJdGVtLmluY2x1ZGVzKFwiL1wiKSAmJiB0eXBlLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgIHZhciBoZWFkZXJNaW1lID0gYWNjZXB0SXRlbS5zcGxpdChcIi9cIilbMF07XG4gICAgICAgICAgICAgICAgdmFyIHRhaWxNaW1lID0gYWNjZXB0SXRlbS5zcGxpdChcIi9cIilbMV07XG4gICAgICAgICAgICAgICAgdmFyIGhlYWRlck1pbWVGaWxlID0gdHlwZS5zcGxpdChcIi9cIilbMF07XG4gICAgICAgICAgICAgICAgdmFyIHRhaWxNaW1lRmlsZSA9IHR5cGUuc3BsaXQoXCIvXCIpWzFdO1xuICAgICAgICAgICAgICAgIGlmIChoZWFkZXJNaW1lID09PSBoZWFkZXJNaW1lRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICBpbWFnZS8qXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWlsTWltZSA9PT0gXCIqXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhaWxNaW1lID09PSB0YWlsTWltZUZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBwcmVWYWxpZGF0ZWRGaWxlcyBGaWxlTGlzdFxuICogQHBhcmFtIHJlbWFpbmluZ1ZhbGlkcyBUaGUgbnVtYmVyIG9mIHJlbWFpbmluZyB2YWxpZCBmaWxlc1xuICogQHBhcmFtIGxvY2FsVmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gbWF4RmlsZXNcbiAqIEBwYXJhbSBsb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zXG4gKi9cbnZhciBmaWxlTGlzdHZhbGlkYXRvciA9IGZ1bmN0aW9uIChwcmVWYWxpZGF0ZWRGaWxlcywgcmVtYWluaW5nVmFsaWRzLCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKSB7XG4gICAgdmFyIG91dHB1dCA9IFtdO1xuICAgIC8vc2V0IGEgY291bnRkb3duIHdoZW4gdGhlcmUgaXMgYSBsaW1pdCBvbiBmaWxlc1xuICAgIHZhciBjb3VudGRvd24gPSByZW1haW5pbmdWYWxpZHM7XG4gICAgLy8gZ2V0IGxvY2FsaXplZCBsYWJlbHNcbiAgICB2YXIgVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyID0gVmFsaWRhdGVFcnJvckxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgLy9JdGVyYXRlIHRoZSBGaWxlIGxpc3RcbiAgICBmb3IgKHZhciBpID0gMCwgZiA9IHZvaWQgMDsgKGYgPSBwcmVWYWxpZGF0ZWRGaWxlc1tpXSk7IGkrKykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZmlsZSBsaXN0IHdpdGhcbiAgICAgICAgdmFyIHZhbGlkYXRlZEZpbGUgPSB2YWxpZGF0ZUZpbGUoZiwgdmFsaWRhdG9yLCBsb2NhbFZhbGlkYXRvciwgVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyKTtcbiAgICAgICAgaWYgKHZhbGlkYXRlZEZpbGUudmFsaWQpIHtcbiAgICAgICAgICAgIC8vbm90IHZhbGlkIGR1ZSB0byBmaWxlIGNvdW50IGxpbWl0XG4gICAgICAgICAgICB2YXIgdmFsaWQgPSBjb3VudGRvd24gPiAwO1xuICAgICAgICAgICAgdmFsaWRhdGVkRmlsZS52YWxpZCA9IHZhbGlkO1xuICAgICAgICAgICAgLy9hZGQgZXJyb3IgYWJvdXQgYW1vdW50XG4gICAgICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1heEZpbGVFcnJvck1lc3NlbmdlciA9IFZhbGlkYXRpb25FcnJvckxvY2FsaXplci5tYXhGaWxlQ291bnQ7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVkRmlsZS5lcnJvcnMgPSB2YWxpZGF0ZWRGaWxlLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICA/IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgdmFsaWRhdGVkRmlsZS5lcnJvcnMsIHRydWUpLCBbbWF4RmlsZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVzIHx8IEluZmluaXR5KV0sIGZhbHNlKSA6IFttYXhGaWxlRXJyb3JNZXNzZW5nZXIobWF4RmlsZXMgfHwgSW5maW5pdHkpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvdW50ZG93bi0tO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dC5wdXNoKHZhbGlkYXRlZEZpbGUpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufTtcbi8qKlxuICogRm9yIGVhY2ggRXh0RmlsZSBzZXRzIHRoZSB2YWxpZCBwcm9wIG9mIEV4dEZpbGUgdG8gXCJ0cnVlXCIgb3IgXCJmYWxzZVwiXG4gKiBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXZpZHVhbCB2YWxpZGF0aW9uLlxuICogSXQgYWxzbyBhZGQgdGhlIGxpc3Qgb2YgZXJyb3JzLlxuICogQHBhcmFtIGV4dEZpbGVMaXN0XG4gKiBAcGFyYW0gcmVtYWluaW5nVmFsaWRzXG4gKiBAcGFyYW0gbG9jYWxWYWxpZGF0b3JQcm9wc1xuICogQHBhcmFtIHZhbGlkYXRvclxuICogQHBhcmFtIG1heEZpbGVzXG4gKiBAcGFyYW0gbG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIG5ldyBFeHRGaWxlIGxpc3Qgd2l0aCBlYWNoIGl0ZW0gdmFsaWRhdGVkXG4gKi9cbnZhciB2YWxpZGF0ZUV4dEZpbGVMaXN0ID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0LCByZW1haW5pbmdWYWxpZHMsIGxvY2FsVmFsaWRhdG9yUHJvcHMsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbikge1xuICAgIC8vY29uc29sZS5sb2coXCJyZW1hbmluZyB2YWxpZHNcIiwgcmVtYWluaW5nVmFsaWRzKTtcbiAgICB2YXIgZmlsZUxpc3RSZXN1bHQgPSBbXTtcbiAgICBpZiAoIXJlbWFpbmluZ1ZhbGlkcylcbiAgICAgICAgcmV0dXJuIGZpbGVMaXN0UmVzdWx0O1xuICAgIHZhciByZW1haW5pbmcgPSByZW1haW5pbmdWYWxpZHM7XG4gICAgdmFyIFZhbGlkYXRpb25FcnJvckxvY2FsaXplciA9IFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIHZhciBtYXhGaWxlRXJyb3JNZXNzZW5nZXIgPSBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIubWF4RmlsZUNvdW50O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0RmlsZUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFeHRGaWxlID0gZXh0RmlsZUxpc3RbaV07XG4gICAgICAgIGN1cnJlbnRFeHRGaWxlID0gdmFsaWRhdGVFeHRGaWxlKGN1cnJlbnRFeHRGaWxlLCB2YWxpZGF0b3IsIGxvY2FsVmFsaWRhdG9yUHJvcHMsIFZhbGlkYXRpb25FcnJvckxvY2FsaXplcik7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0ZUV4dEZpbGVMaXN0IGFmdGVyIHZhbGlkYXRpb25cIiwgY3VycmVudEV4dEZpbGUpO1xuICAgICAgICBpZiAoY3VycmVudEV4dEZpbGUudmFsaWQpIHtcbiAgICAgICAgICAgIC8vbm90IHZhbGlkIGR1ZSB0byBmaWxlIGNvdW50IGxpbWl0XG4gICAgICAgICAgICB2YXIgdmFsaWQgPSByZW1haW5pbmcgPiAwO1xuICAgICAgICAgICAgY3VycmVudEV4dEZpbGUudmFsaWQgPSB2YWxpZDtcbiAgICAgICAgICAgIC8vYWRkIGVycm9yIGFib3V0IGFtb3VudFxuICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlLmVycm9ycyA9IGN1cnJlbnRFeHRGaWxlLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICA/IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgY3VycmVudEV4dEZpbGUuZXJyb3JzLCB0cnVlKSwgW21heEZpbGVFcnJvck1lc3NlbmdlcihtYXhGaWxlcyB8fCBJbmZpbml0eSldLCBmYWxzZSkgOiBbbWF4RmlsZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVzIHx8IEluZmluaXR5KV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW1haW5pbmctLTtcbiAgICAgICAgfVxuICAgICAgICBmaWxlTGlzdFJlc3VsdC5wdXNoKGN1cnJlbnRFeHRGaWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVMaXN0UmVzdWx0O1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlXG4gKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsaWRhdG9yUHJvcHNcbiAqIEBwYXJhbSBsb2NhbEVycm9yc1xuICogQHJldHVybnNcbiAqL1xudmFyIHZhbGlkYXRlRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlLCB2YWxpZGF0b3IsIHZhbGlkYXRvclByb3BzLCBsb2NhbEVycm9ycykge1xuICAgIHZhciBleHRGaWxlUmVzdWx0ID0gX19hc3NpZ24oe30sIGV4dEZpbGUpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAvL1RPLURPOiBBZGQgZXh0cmEgdmFsaWRhdGlvbiBmb3IgaW5kaXZpZHVhbCBwcm9wcyBldmVuIGlmIEZJbGUgb2JqZWN0IHdhcyBub3QgZ2l2ZW5cbiAgICBpZiAoIWV4dEZpbGUuZmlsZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIGV4dEZpbGVSZXN1bHQpO1xuICAgIH1cbiAgICAvL1RPLURPOiBhZGQgXCJvdmVycmlkZVZhbGlkYXRpb25cIiBwcm9wIHRvIGlnbm9yZSB0aGUgcmVzdCBvZiB2YWxpZGF0b3JzIGxpa2UgYWNjZXB0IGFuZCBtYXhGaWxlU2l6ZVxuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgdmFyIHJlc3VsdEN1c3RvbVZhbGlkYXRpb24gPSB2YWxpZGF0b3IoZXh0RmlsZVJlc3VsdC5maWxlKTtcbiAgICAgICAgdmFyIGVycm9yc1Jlc3VsdCA9IHJlc3VsdEN1c3RvbVZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAgICBpZiAoZXJyb3JzUmVzdWx0KVxuICAgICAgICAgICAgZXJyb3JzLnB1c2guYXBwbHkoZXJyb3JzLCBlcnJvcnNSZXN1bHQpO1xuICAgICAgICAvL3JldHVybiB7IC4uLmV4dEZpbGVSZXN1bHQsIC4uLnZhbGlkYXRvcihleHRGaWxlUmVzdWx0LmZpbGUgYXMgRmlsZSkgfTtcbiAgICB9XG4gICAgdmFyIG1heEZpbGVTaXplID0gdmFsaWRhdG9yUHJvcHMubWF4RmlsZVNpemUsIGFjY2VwdCA9IHZhbGlkYXRvclByb3BzLmFjY2VwdDtcbiAgICAvL2NvbnNvbGUubG9nKFwiVmFsaWRhdGlvblwiLCBtYXhGaWxlU2l6ZSwgYWNjZXB0KTtcbiAgICAvL2NoZWNrIGZpbGUgc2l6ZVxuICAgIHZhciBmaWxlID0gZXh0RmlsZS5maWxlO1xuICAgIGlmIChtYXhGaWxlU2l6ZSAmJiBmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xuICAgICAgICB2YXIgbWF4RmlsZVNpemVFcnJvck1lc3NlbmdlciA9IGxvY2FsRXJyb3JzLm1heFNpemVFcnJvcjtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIlNpemUgZXJyb3JcIiwgbWF4RmlsZVNpemVFcnJvck1lc3NlbmdlcihtYXhGaWxlU2l6ZSkpO1xuICAgICAgICBlcnJvcnMucHVzaChtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVTaXplKSk7XG4gICAgfVxuICAgIC8vY2hlY2sgZmlsZSB0eXBlXG4gICAgaWYgKGFjY2VwdCAmJiAhdmFsaWRhdGVBY2NlcHQoc2VwYXJhdGVBY2NlcHQoYWNjZXB0KSwgZmlsZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobG9jYWxFcnJvcnMuYWNjZXB0RXJyb3IpO1xuICAgIH1cbiAgICB2YXIgaXNWYWxpZCA9IGVycm9ycy5sZW5ndGggPT09IDA7XG4gICAgZXh0RmlsZVJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlUmVzdWx0KSwgeyB2YWxpZDogaXNWYWxpZCwgZXJyb3JzOiAhaXNWYWxpZCA/IGVycm9ycyA6IHVuZGVmaW5lZCB9KTtcbiAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGlvbiBleHRGaWxlUmVzdWx0XCIsIGV4dEZpbGVSZXN1bHQpO1xuICAgIHJldHVybiBleHRGaWxlUmVzdWx0O1xufTtcbi8qKlxuICogRnVuY3Rpb24gdGhhdCB2YWxpZGF0ZSB3aGV0aGVyIGEgZmlsZSBpcyB2YWxpZCwgb3Igbm90XG4gKiBhY2NvcmRpbmcgdG8gdGhlIEZpbGV2YWxpZGF0b3IgcHJvcGVydGllc1xuICogQHBhcmFtIGZpbGUgYSBGaWxlIG9iamVjdCB0byBiZSBldmFsdWF0ZWRcbiAqIEBwYXJhbSB2YWxpZGF0b3JQcm9wcyB0aGUgdmFsaWRhdG9yIG9iamVjdFxuICogQHJldHVybnMgYSBGaWxlVmFsaWRhdGVkIG9iamVjdFxuICovXG52YXIgdmFsaWRhdGVGaWxlID0gZnVuY3Rpb24gKGZpbGUsIHZhbGlkYXRvciwgdmFsaWRhdG9yUHJvcHMsIGxvY2FsRXJyb3JzKSB7XG4gICAgdmFyIGlkR2VuZXJhdGVkID0gRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IGlkOiBpZEdlbmVyYXRlZCwgZmlsZTogZmlsZSB9LCB2YWxpZGF0b3IoZmlsZSkpO1xuICAgIH1cbiAgICB2YXIgbWF4RmlsZVNpemUgPSB2YWxpZGF0b3JQcm9wcy5tYXhGaWxlU2l6ZSwgYWNjZXB0ID0gdmFsaWRhdG9yUHJvcHMuYWNjZXB0O1xuICAgIC8vY2hlY2sgZmlsZSBzaXplXG4gICAgaWYgKG1heEZpbGVTaXplICYmIGZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG4gICAgICAgIHZhciBtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyID0gbG9jYWxFcnJvcnMubWF4U2l6ZUVycm9yO1xuICAgICAgICBlcnJvcnMucHVzaChtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVTaXplKSk7XG4gICAgfVxuICAgIC8vY2hlY2sgZmlsZSB0eXBlXG4gICAgLy8gY29uc3QgYWxsb3dlZFR5cGVzID0gYWNjZXB0LmZpbHRlcigodHlwZSkgPT4gKGZpbGUudHlwZSA9PT0gdHlwZSkpXG4gICAgaWYgKGFjY2VwdCAmJiAhdmFsaWRhdGVBY2NlcHQoc2VwYXJhdGVBY2NlcHQoYWNjZXB0KSwgZmlsZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobG9jYWxFcnJvcnMuYWNjZXB0RXJyb3IpO1xuICAgIH1cbiAgICB2YXIgZmlsZVJlc3VsdCA9IHtcbiAgICAgICAgaWQ6IGlkR2VuZXJhdGVkLFxuICAgICAgICBmaWxlOiBmaWxlLFxuICAgICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgZXJyb3JzOiBlcnJvcnNcbiAgICB9O1xuICAgIC8vIGxvZ2ljIGhlcmVcbiAgICByZXR1cm4gZmlsZVJlc3VsdDtcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBiZXR3ZW4gMCBhbmQgM1xuICogd2hlcmVcbiAqIDAgPT4gZXJyb3JcbiAqIDEgPT4gdXBsb2FkaW5nXG4gKiAyID0+IHN1Y2Nlc3NcbiAqIDMgPT4gdW5kZWZpbmVkXG4gKiBAcmV0dXJucyBhIHJhbmRvbSB1cGxvYWQgc3RhdHVzIG9yIHVuZGVmaW5lZFxuICovXG52YXIgZ2V0UmFuZG9tVXBsb2FkU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBnZXRSYW5kb21JbnQoMCwgNCk7XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gXCJlcnJvclwiO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBcInVwbG9hZGluZ1wiO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBcInN1Y2Nlc3NcIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcblxuLyoqXG4gKiBsaXN0IG9mIGR1bXkgZXJyb3JzIGluIGVuZ2xpc2hcbiAqL1xudmFyIGxpc3RPZkVycm9ycyA9IFtcbiAgICBcIkZpbGUgaXMgdG9vIGJpZy4gTWF4IGZpbGUgc2l6ZSBhbGxvd2VkIGlzIDgwbWIuXCIsXG4gICAgXCJGaWxlJ3MgdHlwZSBpcyBub3QgYWxsb3dlZC5cIixcbiAgICBcIk1heCBhbW91bnQgb2YgZmlsZXMgKDI4KSBoYXMgYmVlbiByZWFjaGVkLlwiXG5dO1xuXG4vKipcbiAqIE1ha2UgYSB2YWxpZGF0ZWQgZmlsZSB0aGF0IGlzIHJlYWR5IHRvIGJlIHVzZWQgb24gRmlsZUl0ZW0gY29tcG9uZW50LFxuICogaWYgdmFsaWQgaXMgbm90IHNldCwgYSByYW5kb20gb3BlcmF0aW9uIHdpbGwgZGVjaWRlIHdoZXRoZXIgdGhlIGZpbGUgaXMgdmFsaWQgb3Igbm90XG4gKiBJZiB2YWxpZCBpcyBmYWxzZSwgdGhlbiB0aGUgbmF0dXJhbCBvcmRlciBpcyBub3QgdG8gYmUgdXBsb2FkYWJsZSBhbmQgd29udCBoYXZlIHVwbG9hZCBtZXNzYWdlIG5vciB1cGxvYWQgc3RhdHVzXG4gKiBJZiB2YWxpZCBpcyB0cnVlLCB0aGVuIGZpbGUgY2FuIGJlIHVwbG9hZGVkIGFuZCBjYW4gaGF2ZSB1cGxvYWQgbWVzc2FnZSBpZiB0aGUgc3RhdHVzIGlzIHN1Y2NlcyBvciBlcnJvclxuICogQHBhcmFtIGZpbGUgVGhlIGZpbGVcbiAqIEBwYXJhbSB2YWxpZCB0cnVlIGlmIGl0IGlzIGEgdmFsaWQgZmlsZSwgb3RoZXJ3aXNlIGlzIGZhbHNlXG4gKiBAcGFyYW0gdXBsb2FkU3RhdHVzIHRoZSBjdXJyZW50IHVwbG9hZCBzdGF0dXMuIElmIG5vdCBnaXZlbiBhIHJhbmRvbSB1cGxvYWQgc3RhdHVzIHdpbGwgYmUgc2V0XG4gKiBAcGFyYW0gdXBsb2FkTWVzc2FnZSB0aGUgdXBsb2FkIG1lc3NhZ2UgYWZ0ZXIgdXBsb2FkaW5nXG4gKiBAcmV0dXJucyBhIFZhaWRhdGVkIEZpbGUgb2JqZWN0XG4gKi9cbnZhciBtYWtlU3ludGhldGljRXh0RmlsZSA9IGZ1bmN0aW9uIChmaWxlLCB2YWxpZCwgdXBsb2FkU3RhdHVzLCB1cGxvYWRNZXNzYWdlKSB7XG4gICAgaWYgKHZhbGlkID09PSB2b2lkIDApIHsgdmFsaWQgPSAoTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyOCkgJSAyID09PSAwKTsgfVxuICAgIC8vaWYgdmFsaWQsIG5hdHVyYWxseSwgY2FuIGJlIHVwbG9hZGVkXG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIHZhciBuZXdVcG9hZFN0YXR1cyA9IHVwbG9hZFN0YXR1cyB8fCBnZXRSYW5kb21VcGxvYWRTdGF0dXMoKTtcbiAgICB2YXIgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IHVwbG9hZE1lc3NhZ2UgfHwgXCJcIjtcbiAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgLy93ZSBjYW4gZGVjaWRlIGFjY29yZGluZyB0byB1cGxvYWQgc3RhdHVzIFxuICAgICAgICBpZiAoIXVwbG9hZE1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmV3VXBvYWRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IFwiVXBsb2FkIGZhaWxlZC4gVGhlcmUgd2FzIGFuIGVycm9yXCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVVwbG9hZE1lc3NhZ2UgPSBcIkZpbGUgd2FzIHN1Y2Nlc3NmdWxseSB1cGxvYWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdXBsb2FkTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlcnJvcnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvL2lmIG5vdCB2YWxpZCwganVzdCBzaG93IGVycm9yIG1lc3NhZ2VzXG4gICAgICAgIHZhciByYW5kSW50ID0gZ2V0UmFuZG9tSW50KDAsIDMpO1xuICAgICAgICBlcnJvcnMucHVzaChsaXN0T2ZFcnJvcnNbcmFuZEludF0pO1xuICAgICAgICBuZXdVcG9hZFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy9ub3cgbWFrZSBhIEZpbGUgVmFsaWRhdGVkIGluc3RhbmNlIFxuICAgIHZhciBuZXdGaWxlVmFsaWRhdGVkID0ge1xuICAgICAgICBpZDogRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpLFxuICAgICAgICB2YWxpZDogdmFsaWQsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgIHVwbG9hZFN0YXR1czogbmV3VXBvYWRTdGF0dXMsXG4gICAgICAgIHVwbG9hZE1lc3NhZ2U6IGN1c3RvbVVwbG9hZE1lc3NhZ2UsXG4gICAgICAgIGVycm9yczogZXJyb3JzXG4gICAgfTtcbiAgICByZXR1cm4gbmV3RmlsZVZhbGlkYXRlZDtcbn07XG5cbnZhciBleHRGaWxlTW9jayA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpZCB8fCBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCksXG4gICAgICAgIG5hbWU6IFwiZmlsZU5hbWUuZXh0XCIsXG4gICAgICAgIHNpemU6IDI4ICogMTAyNCAqIDEwMjQsXG4gICAgICAgIHR5cGU6IFwiZmlsZXMtdWkvbW9ja1wiLFxuICAgICAgICBmaWxlOiBjcmVhdGVTeW50aGV0aWNGaWxlKFwiZmlsZU5hbWUuZXh0XCIsIDI4ICogMTAyNCAqIDEwMjQsIFwiZmlsZXMtdWkvbW9ja1wiKSxcbiAgICAgICAgZXJyb3JzOiBsaXN0T2ZFcnJvcnMsXG4gICAgICAgIHVwbG9hZE1lc3NhZ2U6IFwidXBsb2FkZWRcIixcbiAgICAgICAgdXBsb2FkU3RhdHVzOiBcInByZXBhcmluZ1wiLFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHByb2dyZXNzOiAyOCxcbiAgICAgICAgeGhyOiBuZXcgWE1MSHR0cFJlcXVlc3QoKSxcbiAgICAgICAgZXh0cmFEYXRhOiB7XG4gICAgICAgICAgICBleHRyYURhdGExOiBcImZpbGVzLXVpIGlzIHRoZSBiZXN0XCIsXG4gICAgICAgICAgICBleHRyYURhdGEyOiB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJmaWxlcy11aS5tb2NrXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGRvd25sb2FkVXJsOiBcImh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9tb2NrL2ZpbGUtZG93bmxvYWRcIlxuICAgIH07XG59O1xuXG5mdW5jdGlvbiBhZGRFeHRyYURhdGEoZm9ybURhdGEsIGV4dHJhRGF0YSkge1xuICAgIC8vaGVhZGVyc1xuICAgIHZhciBleHRyYURhdGFLZXlzID0gT2JqZWN0LmtleXMoZXh0cmFEYXRhIHx8IHt9KTtcbiAgICAvL2NvbnN0IGhlYWRlclZhbHVlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKGhlYWRlcnMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0cmFEYXRhS2V5cy5sZW5ndGggJiYgZXh0cmFEYXRhOyBpKyspIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZEZpbGUgZXh0cmFEYXRhXCIsIGV4dHJhRGF0YUtleXNbaV0sIGV4dHJhRGF0YVtleHRyYURhdGFLZXlzW2ldXSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChleHRyYURhdGFLZXlzW2ldLCBleHRyYURhdGFbZXh0cmFEYXRhS2V5c1tpXV0pO1xuICAgIH1cbiAgICAvLyBmb3JtRGF0YS5hcHBlbmQoXCJvdGhlclZhbHVlXCIsIFwiSEFBQUFBQUFBQUFBQUFBYVwiKTtcbn1cblxuZnVuY3Rpb24gYWRkSGVhZGVycyh4aHIsIGhlYWRlcnMpIHtcbiAgICAvL2hlYWRlcnNcbiAgICB2YXIgaGVhZGVyS2V5cyA9IE9iamVjdC5rZXlzKGhlYWRlcnMgfHwge30pO1xuICAgIC8vY29uc3QgaGVhZGVyVmFsdWVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoaGVhZGVycyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJLZXlzLmxlbmd0aCAmJiBoZWFkZXJzOyBpKyspIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZEZpbGUgaGVhZGVyc1wiLCBoZWFkZXJLZXlzW2ldLCBoZWFkZXJzW2hlYWRlcktleXNbaV1dKTtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyS2V5c1tpXSwgaGVhZGVyc1toZWFkZXJLZXlzW2ldXSk7XG4gICAgfVxufVxuXG52YXIgVElNRU9VVF9FUlJPUl9SRVNQT05TRSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBtZXNzYWdlOiBcIlRpbWVvdXQgZXJyb3JcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBBQk9SVEVEX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiVXBsb2FkIGFib3J0ZWRcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBKU09OX1BBUlNFX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiRXJyb3Igd2hlbiBwYXJzaW5nIEpTT04gcmVzcG9uc2VcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBVTkVYUEVDVEVEX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiVW5leHBlY3RlZCBlcnJvclwiLFxuICAgIHBheWxvYWQ6IHt9XG59O1xudmFyIE5PX1hIUl9QUk9WSURFRF9FUlJPUiA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiBcIlVuYWJsZSB0byB1cGxvYWQuIHhociBvYmplY3Qgd2FzIG5vdCBwcm92aWRlZFwiLCB1cGxvYWRTdGF0dXM6IFwiZXJyb3JcIiwgc2VydmVyUmVzcG9uc2U6IHsgc3VjY2VzczogZmFsc2UsIH0gfSk7XG59O1xuXG52YXIgbWFrZVNlcnZlclJlc3BvbnNlID0gZnVuY3Rpb24gKHN1Y2Nlc3MsIG1lc3NhZ2UsIHBheWxvYWQpIHtcbiAgICB2YXIgcmVzdWx0ID0geyBzdWNjZXNzOiBzdWNjZXNzLCBtZXNzYWdlOiBtZXNzYWdlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgSnNvblBhcnNlUmVzcG9uc2UgPSBmdW5jdGlvbiAoeGhyKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGpzb25SZXNwb25zZSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlKTtcbiAgICAgICAgdmFyIHN1Y2Nlc3MgPSBqc29uUmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBqc29uUmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgdmFyIHBheWxvYWQgPSBqc29uUmVzcG9uc2UucGF5bG9hZDtcbiAgICAgICAgdmFyIGZ1aVJlc3BvbnNlID0ge1xuICAgICAgICAgICAgc3VjY2VzczogdHlwZW9mIHN1Y2Nlc3MgPT09IFwiYm9vbGVhblwiID8gc3VjY2VzcyA6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyBtZXNzYWdlIDogXCJFcnJvciBvbiBtZXNzYWdlIHJlc3BvbnNlXCIsXG4gICAgICAgICAgICBwYXlsb2FkOiBwYXlsb2FkIHx8IHt9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmdWlSZXNwb25zZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlVcGxvYWQgRVJST1JcIiwgZXJyb3IpO1xuICAgICAgICByZXR1cm4gSlNPTl9QQVJTRV9FUlJPUl9SRVNQT05TRTtcbiAgICB9XG59O1xudmFyIG1ha2VTdWNjZXNzVXBsb2FkUmVzcG9uc2UgPSBmdW5jdGlvbiAoZXh0RmlsZSwgcmVzcG9uc2VGdWkpIHtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHNlcnZlclJlc3BvbnNlOiByZXNwb25zZUZ1aSwgdXBsb2FkTWVzc2FnZTogcmVzcG9uc2VGdWkubWVzc2FnZSwgdXBsb2FkU3RhdHVzOiBcInN1Y2Nlc3NcIiB9KTtcbn07XG52YXIgbWFrZUVycm9yVXBsb2FkUmVzcG9uc2UgPSBmdW5jdGlvbiAoZXh0RmlsZSwgcmVzcG9uc2VGdWkpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwibWFrZUVycm9yVXBsb2FkUmVzcG9uc2VcIiwgZXh0RmlsZSwgcmVzcG9uc2VGdWkpO1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogcmVzcG9uc2VGdWkubWVzc2FnZSwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIsIHNlcnZlclJlc3BvbnNlOiByZXNwb25zZUZ1aSB9KTtcbn07XG5cbi8qKlxuICogVXBsb2FkcyBvbmUgZm9ybURhdGEgb2JqZWN0IHRvIGEgZ2l2ZW4gZW5kcG9pbnQgaW4gYSBwcm9taXNpZmllZCB3YXlcbiAqIEBwYXJhbSB4aHIgWE1MSFRUUHJlcXVlc3Qgb2JqZWN0XG4gKiBAcGFyYW0gbWV0aG9kIG1ldGhvZCBmb3IgdXBsb2FkaW5nXG4gKiBAcGFyYW0gZW5kcG9pbnQgZW5kcG9pbnQgdG8gdXBsb2FkIHRoZSBmaWxlXG4gKiBAcGFyYW0gZGF0YSBGcm9tRGF0YSBvYmplY3QgdG8gcGVyZm9ybSBtdWx0aXBhcnQgZm9ybSBkYXRhIHVwbG9hZFxuICogQHBhcmFtIGhlYWRlcnMgdGhlIHNldCBvZiBoZWFkZXJzXG4gKiBAcmV0dXJucyBhIHNlcnZlciByZXNwb25zZSB0aGF0IGNvbnNpc3RzIG9uIHtzdGF0dXMsIHBheWxvYWQsIG1lc3NhZ2V9XG4gKi9cbnZhciB1cGxvYWRGb3JtRGF0YSA9IGZ1bmN0aW9uICh4aHIsIG1ldGhvZCwgZW5kcG9pbnQsIGRhdGEsIGhlYWRlcnMpIHtcbiAgICBpZiAobWV0aG9kID09PSB2b2lkIDApIHsgbWV0aG9kID0gXCJQT1NUXCI7IH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIHVwbG9hZEZpbGVcIiwgeGhyLCBtZXRob2QsIGVuZHBvaW50LCBkYXRhLCBoZWFkZXJzKTtcbiAgICAgICAgdmFyIGZpbmFsTWV0aG9kID0gW1wiUE9TVFwiLCBcIlBVVFwiLCBcIlBBVENIXCJdLmluY2x1ZGVzKG1ldGhvZC50b1VwcGVyQ2FzZSgpKSA/IG1ldGhvZCA6IFwiUE9TVFwiO1xuICAgICAgICAvKiAgIGxldCBsYXN0TGFzdFN0YXRlOiBudW1iZXIgPSAtMTtcbiAgICAgICAgICBsZXQgbGFzdFN0YXRlOiBudW1iZXIgPSAwO1xuICAgICAgICAgIGxldCBqdW1wZWQ6IGJvb2xlYW4gPSBmYWxzZTsgKi9cbiAgICAgICAgeGhyLnVwbG9hZC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIHVwbG9hZEZpbGUgb25Mb2FkXCIsIHhoci5yZWFkeVN0YXRlLCB4aHIucmVzcG9uc2UpO1xuICAgICAgICB9O1xuICAgICAgICB4aHIudXBsb2FkLm9udGltZW91dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUoVElNRU9VVF9FUlJPUl9SRVNQT05TRSk7IH07XG4gICAgICAgIHhoci51cGxvYWQub25hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgQUJPUlRFRUVFRERERFwiKTtcbiAgICAgICAgICAgIHJlc29sdmUoQUJPUlRFRF9FUlJPUl9SRVNQT05TRSk7XG4gICAgICAgIH07XG4gICAgICAgIHhoci5vbmxvYWRlbmQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8vIGxpc3RlbiBmb3IgYHByb2dyZXNzYCBldmVudFxuICAgICAgICAvL2N1cnJlbnRseSBsaXN0ZW5pbmcgb24gRmlsZUl0ZW0gY29tcG9uZW50IGhvb2tcbiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGaW5pc2hlZFwiLCB4aHIpO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgdXBsb2FkRmlsZSBvbnJlYWR5c3RhdGVjaGFuZ2UgZS50eXBlXCIsIGUudHlwZSk7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSB1cGxvYWRGaWxlIG9ucmVhZHlzdGF0ZWNoYW5nZVwiLCB4aHIucmVhZHlTdGF0ZSwgeGhyLnJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAvL2xhc3RMYXN0U3RhdGUgPSBsYXN0U3RhdGU7XG4gICAgICAgICAgICAgICAgLy9sYXN0U3RhdGUgPSB4aHIucmVhZHlTdGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5yZXNwb25zZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGVyZSBpcyB0aCBhbnN3ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoSnNvblBhcnNlUmVzcG9uc2UoeGhyKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2Vycm9yIHVuZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEVNUFRZIHN0YXR1c1wiLCB4aHIuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEVNUFRZIHJlYWR5U3RhdGVcIiwgeGhyLnJlYWR5U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgRU1QVFkgdXBsb2FkXCIsIHhoci51cGxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSBFTVBUWSBhYm9ydFwiLCB4aHIuYWJvcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zdCBqdW1wZWQgPSBsYXN0TGFzdFN0YXRlIC0gbGFzdExhc3RTdGF0ZSAhPT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoQUJPUlRFRF9FUlJPUl9SRVNQT05TRSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAvLyBvcGVuIHJlcXVlc3RcbiAgICAgICAgeGhyLm9wZW4oZmluYWxNZXRob2QsIGVuZHBvaW50LCB0cnVlKTtcbiAgICAgICAgLy9hZGQgaGVhZGVyIHRvIHJlcXVlc3RcbiAgICAgICAgYWRkSGVhZGVycyh4aHIsIGhlYWRlcnMpO1xuICAgICAgICAvL3N0YXJ0IHVwbG9hZGluZ1xuICAgICAgICB4aHIuc2VuZChkYXRhKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZmlsZSB0aGUgZXh0ZW5kZWQgZmlsZSB0byBiZSB1cGxvYWRlZFxuICogQHBhcmFtIHVybCB0aGUgZW5kcG9pbnRcbiAqIEBwYXJhbSBtZXRob2QgdGhlIG1ldGhvZCBmb3IgdXBsb2FkaW5nXG4gKiBAcGFyYW0gaGVhZGVycyBoZWFkZXJzIGZvciByZXF1ZXN0XG4gKiBAcmV0dXJuc1xuICovXG52YXIgdXBsb2FkRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXBsb2FkZXIsIGxvY2FsTWV0aG9kLCBmaWxlVG9VcGxvYWQsIGZvcm1EYXRhLCBmaW5hbEV4dHJhRGF0YSwgcmVzcG9uc2VGdWk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRlciA9IGV4dEZpbGUueGhyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXBsb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShOT19YSFJfUFJPVklERURfRVJST1IoZXh0RmlsZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsTWV0aG9kID0gbWV0aG9kIHx8IFwiUE9TVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVUb1VwbG9hZCA9IGV4dEZpbGUuZmlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCh1cGxvYWRMYWJlbCB8fCBcImZpbGVcIiwgZmlsZVRvVXBsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEV4dHJhRGF0YSA9IF9fYXNzaWduKHt9LCBleHRGaWxlLmV4dHJhVXBsb2FkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRXh0cmFEYXRhKGZvcm1EYXRhLCBmaW5hbEV4dHJhRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VGdWkgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRm9ybURhdGEodXBsb2FkZXIsIGxvY2FsTWV0aG9kLCB1cmwsIGZvcm1EYXRhLCBoZWFkZXJzIHx8IHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VGdWkgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRnVpLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIGlzIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtYWtlU3VjY2Vzc1VwbG9hZFJlc3BvbnNlKGV4dEZpbGUsIHJlc3BvbnNlRnVpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgaXMgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtYWtlRXJyb3JVcGxvYWRSZXNwb25zZShleHRGaWxlLCByZXNwb25zZUZ1aSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkUHJvbWlzZVhIUiB1cGxvYWRQcm9taXNlWEhSIEVSUk9SXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1ha2VFcnJvclVwbG9hZFJlc3BvbnNlKGV4dEZpbGUsIFVORVhQRUNURURfRVJST1JfUkVTUE9OU0UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTsgfSldO1xuICAgIH0pO1xufSk7IH07XG5mdW5jdGlvbiB1cGxvYWRGaWxlKGZpbGUsIHVybCwgbWV0aG9kLCBsYWJlbCwgaGVhZGVycykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZvcm1EYXRhLCBzZXJ2ZXJSZXNwb25zZTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGxhYmVsIHx8IFwiZmlsZVwiLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRm9ybURhdGEobmV3IFhNTEh0dHBSZXF1ZXN0KCksIG1ldGhvZCwgdXJsLCBmb3JtRGF0YSwgaGVhZGVycyldO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc2VydmVyUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZFByb21pc2VYSFIgdXBsb2FkUHJvbWlzZVhIUiBFUlJPUlwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoVU5FWFBFQ1RFRF9FUlJPUl9SRVNQT05TRSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfSk7XG59XG5cbnZhciB1bmV4cGVjdGVkRXJyb3JVcGxvYWRSZXN1bHQgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogXCJVbmV4cGVjdGVkIGVycm9yXCIsIHVwbG9hZFN0YXR1czogXCJlcnJvclwiLCBzZXJ2ZXJSZXNwb25zZToge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIkVycm9yIG9uIHVwbG9hZDogdW5leHBlY3RlZCBlcnJvciBcIixcbiAgICAgICAgICAgIHBheWxvYWQ6IHt9LFxuICAgICAgICB9IH0pO1xufTtcbnZhciB1bmFibGVUb1VwbG9hZFJlc3VsdCA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGV4dEZpbGUuaWQsXG4gICAgICAgIHVwbG9hZGVkRmlsZTogX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZE1lc3NhZ2U6IFwiVW5hYmxlIHRvIHVwbG9hZC4gWEhSIHdhcyBub3QgcHJvdmlkZWRcIiwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIgfSksXG4gICAgICAgIHNlcnZlclJlc3BvbnNlOiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiRXJyb3Igb24gdXBsb2FkOiBVbmFibGUgdG8gdXBsb2FkLiBYSFIgd2FzIG5vdCBwcm92aWRlZCBcIixcbiAgICAgICAgICAgIHBheWxvYWQ6IHt9LFxuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgY29tcGxldGVVcGxvYWRSZXN1bHQgPSBmdW5jdGlvbiAoZXh0RmlsZSwgc2VydmVyUmVzcG9uc2UsIHVwbG9hZFN0YXR1c3Jlc3VsdCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBleHRGaWxlLmlkLFxuICAgICAgICB1cGxvYWRlZEZpbGU6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiBzZXJ2ZXJSZXNwb25zZS5tZXNzYWdlLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1c3Jlc3VsdCB9KSxcbiAgICAgICAgc2VydmVyUmVzcG9uc2U6IHNlcnZlclJlc3BvbnNlXG4gICAgfTtcbn07XG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSB4aHIgYXR0cmlidXRlIGZvciBwZXJmb3JtaW5nIHVwbG9hZHNcbiAqIEBwYXJhbSBleHRGaWxlTGlzdCB0aGUgbGlzdCBvZiBleHRlbmRlZCBmaWxlc1xuICogQHJldHVybnMgdGhlIGFycmF5IG9mIGV4dEZpbGVzIHdpdGggdGhlIHhociBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWRcbiAqL1xudmFyIHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0ID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0KSB7XG4gICAgaWYgKCFleHRGaWxlTGlzdClcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBleHRGaWxlTGlzdC5tYXAoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB4aHI6IG5ldyBYTUxIdHRwUmVxdWVzdCgpIH0pO1xuICAgIH0pO1xufTtcbi8qKlxuICogVXBkYXRlcyB0aGUgdXBsb2FkU3RhdHVzIG9mIHRoZSBnaXZlbiBleHRGaWxlXG4gKiBmcm9tIFwicHJlcGFyaW5nXCIgdG8gXCJ1cGxvYWRpbmdcIlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGVcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBmaWxlIHdpdGggdXBsb2FkU3RhdHVzIHVwZGF0ZWQgdG8gXCJ1cGxvYWRpbmdcIlxuICovXG52YXIgaW5zdGFudFByZXBhcmluZ1RvVXBsb2FkT25lID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICBpZiAoZXh0RmlsZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpIHtcbiAgICAgICAgLy9mb3IgRXh0RmlsZSBpbnN0YW5jZVxuICAgICAgICBleHRGaWxlLnVwbG9hZFN0YXR1cyA9IFwidXBsb2FkaW5nXCI7XG4gICAgICAgIC8vZm9yIEV4dEZpbGUgdHlwZVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJ1cGxvYWRpbmdcIiB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dEZpbGU7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGVcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBwcmVwYXJpbmdUb1VwbG9hZE9uZSA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZXh0RmlsZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAvL2ZvciBFeHRGaWxlIGluc3RhbmNlXG4gICAgICAgICAgICAgICAgZXh0RmlsZS51cGxvYWRTdGF0dXMgPSBcInVwbG9hZGluZ1wiO1xuICAgICAgICAgICAgICAgIC8vZm9yIEV4dEZpbGUgdHlwZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJ1cGxvYWRpbmdcIiB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShleHRGaWxlKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBTbGVlcHMgZm9yIDEyMDAgbWlsaXNlY29uZHMgZm9yIHNob3dpbmcgYSBiZXR0ZXIgdHJhbnNpdGlvblxuICogb24gdXBsb2FkaW5nXG4gKiBAcGFyYW0gdGltZSB0aGUgdGltZSB0byBzbGVlcCBpbiBtaWxpc2Vjb25kc1xuICogQHJldHVybnMgdHJ1ZSBpcyBldmVyeXRoaW5nIGlzIG9rXG4gKi9cbnZhciBzbGVlcFRyYW5zaXRpb24gPSBmdW5jdGlvbiAodGltZSkge1xuICAgIGlmICh0aW1lID09PSB2b2lkIDApIHsgdGltZSA9IDE1MDA7IH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0sIHRpbWUpO1xuICAgIH0pO1xufTtcbi8qKlxuICogUmVtb3ZlcyB0aGUgZGVsZXRlZCBmaWxlcyBhbmQgdXBkYXRlcyB0aGUgYWJvcnRlZCBvbmVzIHdpdGggYSBtZXNzYWdlXG4gKiBAcGFyYW0gYXJyRXh0RmlsZSBpbmNvbW1pbmcgYXJyIG9mIGV4dEZsZSBpbnN0YW5jZXNcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIEV4dEZsZSBvYmplY3RzXG4gKi9cbnZhciBzYW5pdGl6ZUFyckV4dEZpbGUgPSBmdW5jdGlvbiAoYXJyRXh0RmlsZSkge1xuICAgIHJldHVybiBhcnJFeHRGaWxlLmZpbHRlcihmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7IHZhciBfYTsgcmV0dXJuICEoKF9hID0gZXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlbGV0ZWQpOyB9KVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwiYWJvcnRlZFwiXG4gICAgICAgICAgICAmJiAhZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UpIHtcbiAgICAgICAgICAgIC8vIFRPLURPOiBhZCBsb2NhbGl6YXRpb24gZm9yIHRoaXMgbWVzc2FnZVxuICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBcIlVwbG9hZCBhYm9ydGVkIGJ5IHVzZXJcIjtcbiAgICAgICAgICAgIC8vZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiZXJyb3JcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZShleHRGaWxlSW5zdGFuY2UpO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlSW5zdGFuY2VcbiAqIEBwYXJhbSBleHRGaWxlb2JqXG4gKi9cbnZhciBzZXROZXh0VXBsb2FkU3RhdHVzID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSwgZXh0RmlsZW9iaikge1xuICAgIHZhciBwcmV2U3RhdHVzID0gZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cztcbiAgICB2YXIgbmV4dFN0c3RhdXMgPSBleHRGaWxlb2JqLnVwbG9hZFN0YXR1cztcbiAgICAvL2NvbnNvbGUubG9nKFwic2V0TmV4dFVwbG9hZFN0YXR1c1wiLCBwcmV2U3RhdHVzLCBuZXh0U3RzdGF1cyk7XG4gICAgLy9jb25zb2xlLmxvZyhcInNldE5leHRVcGxvYWRTdGF0dXNcIiwgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UsIGV4dEZpbGVvYmoudXBsb2FkTWVzc2FnZSk7XG4gICAgaWYgKHByZXZTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIgJiZcbiAgICAgICAgW1wiYWJvcnRlZFwiLCB1bmRlZmluZWRdLmluY2x1ZGVzKG5leHRTdHN0YXVzKSkge1xuICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IGV4dEZpbGVvYmoudXBsb2FkTWVzc2FnZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocHJldlN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIiAmJlxuICAgICAgICBbXCJhYm9ydGVkXCIsIHVuZGVmaW5lZF0uaW5jbHVkZXMobmV4dFN0c3RhdXMpKSB7XG4gICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcImFib3J0ZWRcIjtcbiAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBleHRGaWxlb2JqLnVwbG9hZE1lc3NhZ2U7XG4gICAgfVxufTtcblxuLyoqXG4gKiBUaGUgZnVsbCBsaXN0IG9mIG5hbWVkIENvbG9ycyBwcm92aWRlZCBieVxuICogaHR0cHM6Ly9odG1sY29sb3Jjb2Rlcy5jb20vZXMvbm9tYnJlcy1kZS1sb3MtY29sb3Jlcy9cbiAqL1xudmFyIE5BTUVEX0NPTE9SUyA9IHtcbiAgICAvL1JFRFxuICAgIGluZGlhbnJlZDogXCIjQ0Q1QzVDXCIsXG4gICAgbGlnaHRjb3JhbDogXCIjRjA4MDgwXCIsXG4gICAgc2FsbW9uOiBcIiNGQTgwNzJcIixcbiAgICBkYXJrc2FsbW9uOiBcIiNFOTk2N0FcIixcbiAgICBsaWdodHNhbG1vbjogXCIjRkZBMDdBXCIsXG4gICAgY3JpbXNvbjogXCIjREMxNDNDXCIsXG4gICAgcmVkOiBcIiNGRjAwMDBcIixcbiAgICBmaXJlYnJpY2s6IFwiI0IyMjIyMlwiLFxuICAgIGRhcmtyZWQ6IFwiIzhCMDAwMFwiLFxuICAgIC8vUElOS1xuICAgIHBpbms6IFwiI0ZGQzBDQlwiLFxuICAgIGxpZ2h0cGluazogXCIjRkZCNkMxXCIsXG4gICAgaG90cGluazogXCIjRkY2OUI0XCIsXG4gICAgZGVlcHBpbms6IFwiI0ZGMTQ5M1wiLFxuICAgIG1lZGl1bXZpb2xldHJlZDogXCIjQzcxNTg1XCIsXG4gICAgcGFsZXZpb2xldHJlZDogXCIjREI3MDkzXCIsXG4gICAgLy9PUkFOR0VcbiAgICAvL1wibGlnaHRzYWxtb246IFwiI0ZGQTA3QVwiLFxuICAgIGNvcmFsOiBcIiNGRjdGNTBcIixcbiAgICB0b21hdG86IFwiI0ZGNjM0N1wiLFxuICAgIG9yYW5nZXJlZDogXCIjRkY0NTAwXCIsXG4gICAgZGFya29yYW5nZTogXCIjRkY4QzAwXCIsXG4gICAgb3JhbmdlOiBcIiNGRkE1MDBcIixcbiAgICAvL1lFTExPV1xuICAgIGdvbGQ6IFwiI0ZGRDcwMFwiLFxuICAgIHllbGxvdzogXCIjRkZGRjAwXCIsXG4gICAgbGlnaHR5ZWxsb3c6IFwiI0ZGRkZFMFwiLFxuICAgIGxlbW9uY2hpZmZvbjogXCIjRkZGQUNEXCIsXG4gICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFwiI0ZBRkFEMlwiLFxuICAgIHBhcGF5YXdoaXA6IFwiI0ZGRUZENVwiLFxuICAgIG1vY2Nhc2luOiBcIiNGRkU0QjVcIixcbiAgICBwZWFjaHB1ZmY6IFwiI0ZGREFCOVwiLFxuICAgIHBhbGVnb2xkZW5yb2Q6IFwiI0VFRThBQVwiLFxuICAgIGtoYWtpOiBcIiNGMEU2OENcIixcbiAgICBkYXJra2hha2k6IFwiI0JEQjc2QlwiLFxuICAgIC8vUFVSUExFXG4gICAgbGF2ZW5kZXI6IFwiI0U2RTZGQVwiLFxuICAgIHRoaXN0bGU6IFwiI0Q4QkZEOFwiLFxuICAgIHBsdW06IFwiI0REQTBERFwiLFxuICAgIHZpb2xldDogXCIjRUU4MkVFXCIsXG4gICAgb3JjaGlkOiBcIiNEQTcwRDZcIixcbiAgICBmdWNoc2lhOiBcIiNGRjAwRkZcIixcbiAgICBtYWdlbnRhOiBcIiNGRjAwRkZcIixcbiAgICBtZWRpdW1vcmNoaWQ6IFwiI0JBNTVEM1wiLFxuICAgIG1lZGl1bXB1cnBsZTogXCIjOTM3MERCXCIsXG4gICAgcmViZWNjYXB1cnBsZTogXCIjNjYzMzk5XCIsXG4gICAgYmx1ZXZpb2xldDogXCIjOEEyQkUyXCIsXG4gICAgZGFya3Zpb2xldDogXCIjOTQwMEQzXCIsXG4gICAgZGFya29yY2hpZDogXCIjOTkzMkNDXCIsXG4gICAgZGFya21hZ2VudGE6IFwiIzhCMDA4QlwiLFxuICAgIHB1cnBsZTogXCIjODAwMDgwXCIsXG4gICAgaW5kaWdvOiBcIiM0QjAwODJcIixcbiAgICBzbGF0ZWJsdWU6IFwiIzZBNUFDRFwiLFxuICAgIGRhcmtzbGF0ZWJsdWU6IFwiIzQ4M0Q4QlwiLFxuICAgIG1lZGl1bXNsYXRlYmx1ZTogXCIjN0I2OEVFXCIsXG4gICAgLy9HUkVFTlxuICAgIGdyZWVueWVsbG93OiBcIiNBREZGMkZcIixcbiAgICBjaGFydHJldXNlOiBcIiM3RkZGMDBcIixcbiAgICBsYXduZ3JlZW46IFwiIzdDRkMwMFwiLFxuICAgIGxpbWU6IFwiIzAwRkYwMFwiLFxuICAgIGxpbWVncmVlbjogXCIjMzJDRDMyXCIsXG4gICAgcGFsZWdyZWVuOiBcIiM5OEZCOThcIixcbiAgICBsaWdodGdyZWVuOiBcIiM5MEVFOTBcIixcbiAgICBtZWRpdW1zcHJpbmdncmVlbjogXCIjMDBGQTlBXCIsXG4gICAgc3ByaW5nZ3JlZW46IFwiIzAwRkY3RlwiLFxuICAgIG1lZGl1bXNlYWdyZWVuOiBcIiMzQ0IzNzFcIixcbiAgICBzZWFncmVlbjogXCIjMkU4QjU3XCIsXG4gICAgZm9yZXN0Z3JlZW46IFwiIzIyOEIyMlwiLFxuICAgIGdyZWVuOiBcIiMwMDgwMDBcIixcbiAgICBkYXJrZ3JlZW46IFwiIzAwNjQwMFwiLFxuICAgIHllbGxvd2dyZWVuOiBcIiM5QUNEMzJcIixcbiAgICBvbGl2ZWRyYWI6IFwiIzZCOEUyM1wiLFxuICAgIG9saXZlOiBcIiM4MDgwMDBcIixcbiAgICBkYXJrb2xpdmVncmVlbjogXCIjNTU2QjJGXCIsXG4gICAgbWVkaXVtYXF1YW1hcmluZTogXCIjNjZDREFBXCIsXG4gICAgZGFya3NlYWdyZWVuOiBcIiM4RkJDOEJcIixcbiAgICBsaWdodHNlYWdyZWVuOiBcIiMyMEIyQUFcIixcbiAgICBkYXJrY3lhbjogXCIjMDA4QjhCXCIsXG4gICAgdGVhbDogXCIjMDA4MDgwXCIsXG4gICAgLy9CTFVFXG4gICAgYXF1YTogXCIjMDBGRkZGXCIsXG4gICAgY3lhbjogXCIjMDBGRkZGXCIsXG4gICAgbGlnaHRjeWFuOiBcIiNFMEZGRkZcIixcbiAgICBwYWxldHVycXVvaXNlOiBcIiNBRkVFRUVcIixcbiAgICBhcXVhbWFyaW5lOiBcIiM3RkZGRDRcIixcbiAgICB0dXJxdW9pc2U6IFwiIzQwRTBEMFwiLFxuICAgIG1lZGl1bXR1cnF1b2lzZTogXCIjNDhEMUNDXCIsXG4gICAgZGFya3R1cnF1b2lzZTogXCIjMDBDRUQxXCIsXG4gICAgY2FkZXRibHVlOiBcIiM1RjlFQTBcIixcbiAgICBzdGVlbGJsdWU6IFwiIzQ2ODJCNFwiLFxuICAgIGxpZ2h0c3RlZWxibHVlOiBcIiNCMEM0REVcIixcbiAgICBwb3dkZXJibHVlOiBcIiNCMEUwRTZcIixcbiAgICBsaWdodGJsdWU6IFwiI0FERDhFNlwiLFxuICAgIHNreWJsdWU6IFwiIzg3Q0VFQlwiLFxuICAgIGxpZ2h0c2t5Ymx1ZTogXCIjODdDRUZBXCIsXG4gICAgZGVlcHNreWJsdWU6IFwiIzAwQkZGRlwiLFxuICAgIGRvZGdlcmJsdWU6IFwiIzFFOTBGRlwiLFxuICAgIGNvcm5mbG93ZXJibHVlOiBcIiM2NDk1RURcIixcbiAgICAvL1wibWVkaXVtc2xhdGVibHVlOiBcIiM3QjY4RUVcIixcbiAgICByb3lhbGJsdWU6IFwiIzQxNjlFMVwiLFxuICAgIGJsdWU6IFwiIzAwMDBGRlwiLFxuICAgIG1lZGl1bWJsdWU6IFwiIzAwMDBDRFwiLFxuICAgIGRhcmtibHVlOiBcIiMwMDAwOEJcIixcbiAgICBuYXZ5OiBcIiMwMDAwODBcIixcbiAgICBtaWRuaWdodGJsdWU6IFwiIzE5MTk3MFwiLFxuICAgIC8vQlJPV05cbiAgICBjb3Juc2lsazogXCIjRkZGOERDXCIsXG4gICAgYmxhbmNoZWRhbG1vbmQ6IFwiI0ZGRUJDRFwiLFxuICAgIGJpc3F1ZTogXCIjRkZFNEM0XCIsXG4gICAgbmF2YWpvd2hpdGU6IFwiI0ZGREVBRFwiLFxuICAgIHdoZWF0OiBcIiNGNURFQjNcIixcbiAgICBidXJseXdvb2Q6IFwiI0RFQjg4N1wiLFxuICAgIHRhbjogXCIjRDJCNDhDXCIsXG4gICAgcm9zeWJyb3duOiBcIiNCQzhGOEZcIixcbiAgICBzYW5keWJyb3duOiBcIiNGNEE0NjBcIixcbiAgICBnb2xkZW5yb2Q6IFwiI0RBQTUyMFwiLFxuICAgIGRhcmtnb2xkZW5yb2Q6IFwiI0I4ODYwQlwiLFxuICAgIHBlcnU6IFwiI0NEODUzRlwiLFxuICAgIGNob2NvbGF0ZTogXCIjRDI2OTFFXCIsXG4gICAgc2FkZGxlYnJvd246IFwiIzhCNDUxM1wiLFxuICAgIHNpZW5uYTogXCIjQTA1MjJEXCIsXG4gICAgYnJvd246IFwiI0E1MkEyQVwiLFxuICAgIG1hcm9vbjogXCIjODAwMDAwXCIsXG4gICAgLy9XSElURVxuICAgIHdoaXRlOiBcIiNGRkZGRkZcIixcbiAgICBzbm93OiBcIiNGRkZBRkFcIixcbiAgICBob25leWRldzogXCIjRjBGRkYwXCIsXG4gICAgbWludGNyZWFtOiBcIiNGNUZGRkFcIixcbiAgICBhenVyZTogXCIjRjBGRkZGXCIsXG4gICAgYWxpY2VibHVlOiBcIiNGMEY4RkZcIixcbiAgICBnaG9zdHdoaXRlOiBcIiNGOEY4RkZcIixcbiAgICB3aGl0ZXNtb2tlOiBcIiNGNUY1RjVcIixcbiAgICBzZWFzaGVsbDogXCIjRkZGNUVFXCIsXG4gICAgYmVpZ2U6IFwiI0Y1RjVEQ1wiLFxuICAgIG9sZGxhY2U6IFwiI0ZERjVFNlwiLFxuICAgIGZsb3JhbHdoaXRlOiBcIiNGRkZBRjBcIixcbiAgICBpdm9yeTogXCIjRkZGRkYwXCIsXG4gICAgYW50aXF1ZXdoaXRlOiBcIiNGQUVCRDdcIixcbiAgICBsaW5lbjogXCIjRkFGMEU2XCIsXG4gICAgbGF2ZW5kZXJibHVzaDogXCIjRkZGMEY1XCIsXG4gICAgbWlzdHlyb3NlOiBcIiNGRkU0RTFcIixcbiAgICAvL0dSRVlcbiAgICBnYWluc2Jvcm86IFwiI0RDRENEQ1wiLFxuICAgIGxpZ2h0Z3JheTogXCIjRDNEM0QzXCIsXG4gICAgc2lsdmVyOiBcIiNDMEMwQzBcIixcbiAgICBkYXJrZ3JheTogXCIjQTlBOUE5XCIsXG4gICAgZ3JheTogXCIjODA4MDgwXCIsXG4gICAgZGltZ3JheTogXCIjNjk2OTY5XCIsXG4gICAgbGlnaHRzbGF0ZWdyYXk6IFwiIzc3ODg5OVwiLFxuICAgIHNsYXRlZ3JheTogXCIjNzA4MDkwXCIsXG4gICAgZGFya3NsYXRlZ3JheTogXCIjMkY0RjRGXCIsXG4gICAgYmxhY2s6IFwiIzAwMDAwMFwiXG59O1xuXG4vKipcbiAqIE1ha2UgdGhlIGNvbG9yIGludG8gYSBkYXJrZXIgY29sb3JcbiAqIEBwYXJhbSBjb2xvcklucHV0XG4gKiBAcmV0dXJucyB0aGUgZGFya2VkIGNvbG9yIGluXG4gKi9cbnZhciBkYXJrZXJDb2xvciA9IGZ1bmN0aW9uIChjb2xvcklucHV0LCBwZXJjZW50YWdlKSB7XG4gICAgaWYgKHBlcmNlbnRhZ2UgPT09IHZvaWQgMCkgeyBwZXJjZW50YWdlID0gMjU7IH1cbiAgICB2YXIgZGFya2VkQ29sb3IgPSBcIlwiO1xuICAgIHZhciByZWR1Y2UgPSAoMTAwIC0gcGVyY2VudGFnZSkgLyAxMDA7XG4gICAgdmFyIGNvbXBvbmVudDEgPSAwO1xuICAgIHZhciBjb21wb25lbnQyID0gMDtcbiAgICB2YXIgY29tcG9uZW50MyA9IDA7XG4gICAgaWYgKGlzSGV4Q29sb3IoY29sb3VyTmFtZVRvSGV4KGNvbG9ySW5wdXQpKSkge1xuICAgICAgICBjb21wb25lbnQxID0gaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoMSkpICogMTYgKyBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCgyKSk7XG4gICAgICAgIGNvbXBvbmVudDIgPSBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCgzKSkgKiAxNiArIGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDQpKTtcbiAgICAgICAgY29tcG9uZW50MyA9IGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDUpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoNikpO1xuICAgICAgICBkYXJrZWRDb2xvciA9IFwicmdiKFwiLmNvbmNhdChjb21wb25lbnQxICogcmVkdWNlLCBcIiwgXCIpLmNvbmNhdChjb21wb25lbnQyICogcmVkdWNlLCBcIixcIikuY29uY2F0KGNvbXBvbmVudDMgKiByZWR1Y2UsIFwiKVwiKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmIChjb2xvcklucHV0LmluY2x1ZGVzKFwicmdiYVwiKSkge1xuICAgICAgICAgICAgdmFyIHNsaWNlciA9IGNvbG9ySW5wdXQucmVwbGFjZShcInJnYmEoXCIsIFwiXCIpO1xuICAgICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBzbGljZXIuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgZGFya2VkQ29sb3IgPSBcInJnYihcIi5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1swXSwgMTApICogcmVkdWNlLCBcIiwgXCIpLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzFdLCAxMCkgKiByZWR1Y2UsIFwiLFwiKS5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1syXSwgMTApICogcmVkdWNlLCBcIilcIik7XG4gICAgICAgICAgICAvL3JldHVybiBkYXJrZWRDb2xvcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2xvcklucHV0LmluY2x1ZGVzKFwicmdiXCIpKSB7XG4gICAgICAgICAgICB2YXIgc2xpY2VyID0gY29sb3JJbnB1dC5yZXBsYWNlKFwicmdiKFwiLCBcIlwiKTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gc2xpY2VyLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIGRhcmtlZENvbG9yID0gXCJyZ2IoXCIuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMF0sIDEwKSAqIHJlZHVjZSwgXCIsIFwiKS5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1sxXSwgMTApICogcmVkdWNlLCBcIixcIikuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMl0sIDEwKSAqIHJlZHVjZSwgXCIpXCIpO1xuICAgICAgICAgICAgLy8gcmV0dXJuIGRhcmtlZENvbG9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXJrZWRDb2xvcjtcbn07XG4vKipcbiAqIEluIG9yZGVyIHRvIG1hbmFnYWUgcmdiYSgpIHdlIGNvbnZlcnQgaGV4IGNvbG9ycyBpbnRvIHJnYmEoKVxuICogSWYgdGhlIGdpdmVuIGNvbG9yIGlzIGFscmVhZHkgYSByZ2IoKSBjb2xvciwgaXQgY2FuIGFkZCB0aGUgcGVyY2VudGFnZSB0byBjb252ZXJ0IGl0IGludG8gcmdiYSgpXG4gKlxuICpcbiAqIEBwYXJhbSBjb2xvcklucHV0IGNvbG9yIGluIGhleCBvciBpbiByZ2JcbiAqIEBwYXJhbSBwZXJjIHBlcmNlbnRhZ2UgZm9yIFJHQkEoKSBjb2xvclxuICogQHJldHVybnMgdGhlIHJnYmEgcmVwcmVzZW50YXRpb24gb2YgYSBoZXggY29sb3JcbiAqL1xudmFyIGhleENvbG9yVG9SR0IgPSBmdW5jdGlvbiAoY29sb3JJbnB1dCwgcGVyYywgZGVmYXVsdENvbG9yKSB7XG4gICAgaWYgKHBlcmMgPT09IHZvaWQgMCkgeyBwZXJjID0gMDsgfVxuICAgIHZhciByZXN1bHREZWZhdWx0ID0gZGVmYXVsdENvbG9yID8gZGVmYXVsdENvbG9yIDogXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNilcIjtcbiAgICBpZiAoIWNvbG9ySW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdERlZmF1bHQ7XG4gICAgfVxuICAgIC8vd29yayBvbmx5IGluIHVwcGVyY2FzZVxuICAgIHZhciBjb2xvciA9IGNvbG9ySW5wdXQudG9VcHBlckNhc2UoKTtcbiAgICAvLyBpcyBhbHJlYWR5IGEgcmdiYSBjb2xvclxuICAgIGlmIChjb2xvci5pbmNsdWRlcyhcIlJHQkFcIikpIHtcbiAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICAvL3JldHVybiByYmcgPT4gcmdiYVxuICAgIGlmIChjb2xvci5pbmNsdWRlcyhcIlJHQlwiKSkge1xuICAgICAgICByZXR1cm4gY29sb3IucmVwbGFjZSgnUkdCJywgXCJyZ2JhXCIpLnJlcGxhY2UoJyknLCBcIiwgXCIuY29uY2F0KHBlcmMsIFwiKVwiKSk7XG4gICAgfVxuICAgIC8vIGlmIGlzIGEgaGV4IGNvbG9yIG9yIG5hbWVkIGNvbG9yXG4gICAgaWYgKCFpc0hleENvbG9yKGNvbG91ck5hbWVUb0hleChjb2xvcikpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHREZWZhdWx0O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0T2sgPSBcIlwiO1xuICAgIC8vbGV0IHN0clZhcjogc3RyaW5nID0gXCJcIjtcbiAgICB2YXIgY29tcG9uZW50MSA9IDA7XG4gICAgdmFyIGNvbXBvbmVudDIgPSAwO1xuICAgIHZhciBjb21wb25lbnQzID0gMDtcbiAgICAvL0lmIHBhc3NlZCBhbGwgdmFsaWRhdGlvbnMsIHByb2NlZWQgdG8gdHJhbnNmb3JtXG4gICAgY29tcG9uZW50MSA9IGhleFRvZGVjKGNvbG9yLmNoYXJBdCgxKSkgKiAxNiArIGhleFRvZGVjKGNvbG9yLmNoYXJBdCgyKSk7XG4gICAgY29tcG9uZW50MiA9IGhleFRvZGVjKGNvbG9yLmNoYXJBdCgzKSkgKiAxNiArIGhleFRvZGVjKGNvbG9yLmNoYXJBdCg0KSk7XG4gICAgY29tcG9uZW50MyA9IGhleFRvZGVjKGNvbG9yLmNoYXJBdCg1KSkgKiAxNiArIGhleFRvZGVjKGNvbG9yLmNoYXJBdCg2KSk7XG4gICAgcmVzdWx0T2sgPSBcInJnYmEoXCIuY29uY2F0KGNvbXBvbmVudDEsIFwiLCBcIikuY29uY2F0KGNvbXBvbmVudDIsIFwiLFwiKS5jb25jYXQoY29tcG9uZW50MywgXCIgLCBcIikuY29uY2F0KHBlcmMsIFwiKVwiKTtcbiAgICByZXR1cm4gcmVzdWx0T2s7XG59O1xuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGVoZXIgdGhlIGNvbG9yIGlzIGhleGFkZWNpbWFsIGNzcyBjb2xvclxuICogRXhhbXBsZTogICNGRjU2QUNcbiAqXG4gKlxuICogQHBhcmFtIGNvbG9ySW5wdXQgdGhlIGNvbG9yIGlucHQgdG8gdGVzdFxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5wdXRDb2xvciBpcyBhIGhleGFkZWNpbWFsIGNzcyBjb2xvclxuICovXG52YXIgaXNIZXhDb2xvciA9IGZ1bmN0aW9uIChjb2xvcklucHV0KSB7XG4gICAgLy8gaWYgZmlyc3QgZWxlbWVudCBpcyBubyAnIycgcmV0dXJuIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvclxuICAgIGlmIChjb2xvcklucHV0LmNoYXJBdCgwKSAhPT0gJyMnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaWYgY29sb3IgbGVuZ2h0IGlzIG5vdCBleGFjdGx5IDcgcmV0dXJuIGRlZmF1bHRcbiAgICBpZiAoY29sb3JJbnB1dC5sZW5ndGggIT09IDcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBpZiBvbmUgb2YgdGhlIGxldHRlcnMgaXMgbm90IGluY2x1ZGVkIGluIGhleCBhcnJheSByZXR1cm4gIGRlZmF1bHRcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvbG9ySW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFoZXhBcnJheS5pbmNsdWRlcyhjb2xvcklucHV0LmNoYXJBdChpKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIENvbnZlcnRzIGEgbmFtZWQgY29sb3IgaW50byBoZXhhZGVjaW1hbCBjb2xvclxuICogZnJvbSBhIGxpc3Qgb2Ygd2VsbCBrbm93biBuYW1kIGNvbG9ycyBpZiBmb3VuZC5cbiAqIFdoZW4gbm90IGdpdmVuIHJldHVybnMgYSBcIlwiXG4gKiBXaGVuIG5vdCBmb3VuZCBpbiB0aGUgbGlzdCwgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSBnaXZlblxuICogQHBhcmFtIGNvbG91ciB0aGUgbmFtZWQgY29sb3JcbiAqIEByZXR1cm5zIFRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbG9yIG9yIFwiXCIgb3IgdGhlIHNhbWUgY29sb3JcbiAqL1xuZnVuY3Rpb24gY29sb3VyTmFtZVRvSGV4KGNvbG91cikge1xuICAgIC8qKlxuICAgICAqIFdoZW4gbm90IGdpdmVuXG4gICAgICovXG4gICAgaWYgKCFjb2xvdXIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHdoZW4gbmFtZWQgY29sb3IgaXMgZm91bmRcbiAgICAgKi9cbiAgICBpZiAoTkFNRURfQ09MT1JTW2NvbG91ci50b0xvY2FsZUxvd2VyQ2FzZSgpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBOQU1FRF9DT0xPUlNbY29sb3VyLnRvTG9jYWxlTG93ZXJDYXNlKCldO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSBuYW1lZCBjb2xvciB3YXMgbm90IGZvdW5kXG4gICAgICovXG4gICAgcmV0dXJuIGNvbG91cjtcbn1cbi8qKlxuICogaGV4QXJyYXkgJiBkZWNBcnJheVxuICpcbiAqIGFycmF5cyBvZiBudW1iZXJzIHVzZWQgdG8gY29udmVydCBoZXhhZGVjaW1hbCBudW1iZXJzIGludG8gZGVjaW1hbCBhbmQgdmljZXZlcnNhXG4gKi9cbnZhciBoZXhBcnJheSA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRiddO1xudmFyIGRlY0FycmF5ID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTVdO1xuLyoqXG4gKiBDb252ZXJ0cyBoZXggbnVtYmVyIGluIHN0cmluZyByZXByZXNlbnRhdGlvbiB0byBkZWNpbWFsIG51bWJlclxuICpcbiAqXG4gKiBAcGFyYW0gbGV0dGVyIHRoZSBzdHJpbmcgaGV4IG51bWJlclxuICogQHJldHVybnMgYSBkZWNpbWFsIG51bWJlclxuICovXG52YXIgaGV4VG9kZWMgPSBmdW5jdGlvbiAobGV0dGVyKSB7XG4gICAgaWYgKGhleEFycmF5LmluY2x1ZGVzKGxldHRlcikpIHtcbiAgICAgICAgcmV0dXJuIGRlY0FycmF5W2hleEFycmF5LmluZGV4T2YobGV0dGVyKV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG59O1xuLyoqXG4gKiBBc3VyZSBhIGJhc2UgY29sb3IuIFdoZW4gbm90IGdpdmVuIG9yIHdoZW4gZ2l2ZW4gYW4gaW5jb3JyZWN0IGNvbG9yIGZvcm1hdFxuICogZGVmYXVsdCBjb2xvciBpcyB0aGlzIGtpbmQgb2YgZ3JleSAjNWQ2NDc1XG4gKlxuICogQHBhcmFtIGNvbG9yIHBhcmFtIGNvbG9yIGdpdmVuIGJ5IHVzZXJcbiAqIEByZXR1cm5zIHJldHVybnMgdGhlIHNhbWUgY29sb3JcbiAqL1xudmFyIGFzdXJlQ29sb3IgPSBmdW5jdGlvbiAoY29sb3IpIHtcbiAgICBpZiAoY29sb3IgIT09IHVuZGVmaW5lZCAmJiBjb2xvciAhPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gREVGQVVMVF9GT05UX0NPTE9SO1xuICAgIH1cbn07XG4vKipcbiAqIEFzdXJlIGEgYmFzZSBjb2xvci4gV2hlbiBub3QgZ2l2ZW4gb3Igd2hlbiBnaXZlbiBhbiBpbmNvcnJlY3QgY29sb3IgZm9ybWF0XG4gKiBkZWZhdWx0IGNvbG9yIGlzIHRoaXMga2luZCBvZiBncmV5ICM1ZDY0NzVcbiAqXG4gKiBAcGFyYW0gY29sb3IgcGFyYW0gY29sb3IgZ2l2ZW4gYnkgdXNlclxuICogQHJldHVybnMgcmV0dXJucyB0aGUgc2FtZSBjb2xvclxuICovXG52YXIgY29tcGxldGVBc3VyZUNvbG9yID0gZnVuY3Rpb24gKGNvbG9yLCBwZXJjKSB7XG4gICAgaWYgKHBlcmMgPT09IHZvaWQgMCkgeyBwZXJjID0gMTsgfVxuICAgIHJldHVybiBoZXhDb2xvclRvUkdCKGFzdXJlQ29sb3IoY29sb3VyTmFtZVRvSGV4KGNvbG9yKSksIHBlcmMpO1xufTtcbnZhciBERUZBVUxUX0ZPTlRfQ09MT1IgPSBcIiM2NDZjN2ZcIjtcblxudmFyIGV4dEZpbGVSZWNvbmNpbGF0aW9uID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGV4dEZpbGVJbmNvbW1pbmcpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGFyck9mRXh0RmlsZXMgPSBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgIC8vIGNvbnRpbnVlIG9ubHkgaWYgYXJyT2ZFeHRGaWxlcyBleGlzdHNcbiAgICBpZiAoYXJyT2ZFeHRGaWxlcykge1xuICAgICAgICAvL2RpZmZlcmVudCBzaXplcyBtZWFucyB0aGVyZSB3YXMgZGVsZXRlZCBmaWxlc1xuICAgICAgICAvL2Fsc28gY2FuIGJlIG5ldyBmaWxlcyB0byBiZSB1cGxvYWRlZFxuICAgICAgICAvL25lZWRlZCBhbiBleHRyYSBmbGFnIHRvIGFsbG93IGFkZCBmaWxlcyBpbiB0aGUgbWlkZGxlIG9mIHVwbG9hZGluZyBwcm9jZXNzXG4gICAgICAgIC8vIGlmIG5ldyBmaWxlcyBhcmUgYWRkZWQsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBNYW5hZ2VyXG4gICAgICAgIC8vIG91dHNpZGUgdGhleSB3ZXJlIGFscmVhZHkgYWRkZWQgdG8gdGhlIFVJXG4gICAgICAgIC8vIGluc2lkZSBEcm9wem9uZSwgd2lsbCBiZSBuZWVkZWQgYSAubmV4dCgpIG1ldGhvZCBmb3IgbWFuYWdlclxuICAgICAgICAvLyAxc3QgYWxsb3cgZGVsZXRlZCBmaWxlcyBhbmQgaWdub3JlIG5ldyBvbmVzXG4gICAgICAgIC8vIHJlZHVjZSB0aGUgYXJyT2ZFeHRGaWxlSW5zdGFuY2VzIGFycmF5XG4gICAgICAgIC8vIHBhcmVjaWRvIGEgbGlzdGFzIGxpZ2FkYXMsIGl0ZXJhciBoYXN0YSBlbmNvbnRyYXIgbnVsbCBYRFxuICAgICAgICB2YXIgaW5jb21taW5nVGVtcCA9IF9fc3ByZWFkQXJyYXkoW10sIGV4dEZpbGVJbmNvbW1pbmcsIHRydWUpO1xuICAgICAgICBpbmNvbW1pbmdUZW1wID0gaW5jb21taW5nVGVtcC5maWx0ZXIoZnVuY3Rpb24gKEYpIHsgcmV0dXJuIChhcnJPZkV4dEZpbGVzID09PSBudWxsIHx8IGFyck9mRXh0RmlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyck9mRXh0RmlsZXMuZmluZEluZGV4KGZ1bmN0aW9uIChJKSB7IHJldHVybiBJLmlkID09PSBGLmlkOyB9KSkgPT09IC0xOyB9KTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInJlY29uY2lsaWF0aW9uIGluY29tbWluZ1RlbXBcIiwgaW5jb21taW5nVGVtcCk7XG4gICAgICAgIC8vZGlmZmVyZW50IHNpemVzIG5vdCBhbGxvd2VkXG4gICAgICAgIGlmIChhcnJPZkV4dEZpbGVzLmxlbmd0aCAhPT0gZXh0RmlsZUluY29tbWluZy5sZW5ndGggfHwgZXh0RmlsZUluY29tbWluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJPZkV4dEZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGV4dEZpbGVJbmNvbW1pbmdbaV0udXBsb2FkU3RhdHVzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlciBvbkNhbmNlbCBpXCIsIGkpO1xuICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIE1lcmdlIHByb3BzIHRoYXQgY29tZSBmb3JtIHVzZXIgYW5kIHRob3NlIG9uZXMgdGhhdCBhcmUgYnkgZGVmYXVsdFxuICogaWYgaW5jb21taW5nUHJvcHMgaXMgbnVsbCB0aGlzIHJldHVybnMgdGhlIGRlZmF1bHQgcHJvcHMgdmFsdWVcbiAqXG4gKiBAcGFyYW0gaW5jb21taW5nUHJvcHMgcHJvcCB0aGF0IGNvbWVzIGZyb20gcHJvcHMgYXR0cmlidXRvbyBvZiBhIFJlYWN0IE5vZGVcbiAqIEBwYXJhbSBkZWZhdWx0UHJvcHMgZGVmYXVsdCBwcm9wIGRlZmluZWQgZm9yIHRoYXQgIFJlYWN0IE5vZGVcbiAqIEByZXR1cm5zIG1lcmdlZCBwcm9wc1xuICovXG5mdW5jdGlvbiBtZXJnZVByb3BzKGluY29tbWluZ1Byb3BzLCBkZWZhdWx0UHJvcHMpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiaW5jb21taW5nUHJvcHNcIixpbmNvbW1pbmdQcm9wcyk7XG4gICAgaWYgKCFpbmNvbW1pbmdQcm9wcykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3BzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgZGVmYXVsdFByb3BzKSwgaW5jb21taW5nUHJvcHMpO1xuICAgIH1cbn1cblxudmFyIElucHV0SGlkZGVuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsIGlucHV0UmVmID0gcHJvcHMuaW5wdXRSZWYsIGFjY2VwdCA9IHByb3BzLmFjY2VwdCwgbXVsdGlwbGUgPSBwcm9wcy5tdWx0aXBsZTtcbiAgICAvKiBmdW5jdGlvbiBoYW5kbGVDbGljazxUIGV4dGVuZHMgSFRNTElucHV0RWxlbWVudD4oXG4gICAgICBldnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8VCwgTW91c2VFdmVudD5cbiAgICApOiB2b2lkIHtcbiAgICAgIGhhbmRsZUNsaWNrVXRpbChldnQpO1xuICAgIH0gKi9cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcImZ1aS1oaWRkZW4taW5wdXRcIiwgc3R5bGU6IHsgZGlzcGxheTogXCJub25lXCIgfSwgcmVmOiBpbnB1dFJlZiwgb25DaGFuZ2U6IG9uQ2hhbmdlLCB0eXBlOiBcImZpbGVcIiwgYWNjZXB0OiBhY2NlcHQsIG11bHRpcGxlOiBtdWx0aXBsZSB9KSkpO1xufTtcblxudmFyIGRlZmF1bHREcm96b25lUHJvcHMgPSB7XG4gICAgY2xpY2thYmxlOiB0cnVlLFxuICAgIGJlaGF2aW91cjogXCJhZGRcIixcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZHJvcE9uTGF5ZXI6IHRydWUsXG4gICAgdXBsb2FkQ29uZmlnOiB7fSxcbiAgICBhY3Rpb25CdXR0b25zOiB7fSxcbiAgICBoZWFkZXI6IHRydWUsXG4gICAgZm9vdGVyOiB0cnVlLFxuICAgIHZhbHVlOiBbXSxcbiAgICAvL2JvcmRlclJhZGl1czogXCI4cHhcIlxufTtcbnZhciBERUZBVUxUX0JPUkRFUl9SQURJVVMgPSBcIjhweFwiO1xuLypcbmV4cG9ydCBpbnRlcmZhY2UgQWR2YW5jZWRDb25maWdJdGVtIHtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERyb3B6b25lQWR2YW5jZWRDb25maWcgPSB7XG4gIGRyb3B6b25lTGF5ZXI6IGFueTtcbiAgZHJvcHpvbmVDb250YWluZXI6IGFueTtcbiAgZHJvcHpvbmVMYWJlbDogYW55O1xufVxuICovXG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1kcm9wem9uZS1jaGlsZHJlbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZ2FwOiA4cHg7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwYWRkaW5nOiA1cHggMDtcXG59XCIpO1xuXG52YXIgRHJvcHpvbmVDaGlsZHJlbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBsYWJlbCA9IHByb3BzLmxhYmVsLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb247XG4gICAgdmFyIGlzRW1wdHlBcnJheSA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcbiAgICAvL2NvbnNvbGUubG9nKFwiaXNFbXB0eUFycmF5XCIsIGlzRW1wdHlBcnJheSxjaGlsZHJlbik7XG4gICAgdmFyIERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIC8vY2hpbGRyZW4gd2lsbCBiZSBhbHdheXMgY29uc2lkZXIgYXMgbW9yZSBpbXBvcnRhbnRcbiAgICBpZiAoY2hpbGRyZW4gJiYgIWlzRW1wdHlBcnJheSkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZHJvcHpvbmUtY2hpbGRyZW4tY29udGFpbmVyXCIgfSwgY2hpbGRyZW4pKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZHJvcHpvbmUtY2hpbGRyZW4tY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCBudWxsLFxuICAgICAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgICAgIGxhYmVsIHx8IERyb3B6b25lTG9jYWxpemVyLmRlZmF1bHRMYWJlbCkpKTtcbn07XG5cbi8qKlxuICogUGVyZm9ybXMgc3RvcFByb3BhZ2F0aW9uIGFuZCBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvbnMgb24gYW4gZHJvcCBldmVudCBpbnN0YW5jZVxuICogQHBhcmFtIGV2dCBkcmFnIGV2ZW50IGhhbmRsZXIgb2JqZWN0XG4gKi9cbnZhciBoYW5kbGVEcm9wVXRpbCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG59O1xuLyoqXG4gKiBQZXJmb3JtcyBzdG9wUHJvcGFnYXRpb24gYW5kIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9ucyBvbiBhbiBkcm9wIGV2ZW50IGluc3RhbmNlXG4gKiBhbmQgYWxzbyBzcGVjaWZpZXMgdGhhdCB0aGUgZHJvcCBlZmZlY3QgaXMgbGlua1xuICogQHBhcmFtIGV2dCBkcmFnIGV2ZW50IGhhbmRsZXIgb2JqZWN0XG4gKi9cbnZhciBoYW5kbGVEcmFnVXRpbCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICBldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcImxpbmtcIjtcbiAgICBoYW5kbGVEcm9wVXRpbChldnQpO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyBzdG9wUHJvcGFnYXRpb24gYW5kIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9ucyBvbiBhbiBjbGljayBldmVudCBpbnN0YW5jZVxuICogQHBhcmFtIGV2dCBjbGljayBldmVudCBoYW5kbGVyIG9iamVjdFxuICovXG5mdW5jdGlvbiBoYW5kbGVDbGlja1V0aWwoZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xufVxuLyoqXG4gKiBDbGljayBwcm9ncmFtYXRpY2FsbHkgYW4gaW5wdXQgZWxlbWVudC5cbiAqIElmIHRoZSBpbnB1dCBlbGVtZW50IGlzIG51bGwsIG5vdGhpbmcgd2lsbCBoYXBwZW5kXG4gKiBAcGFyYW0gaW5wdXQgdGhlIGlucHV0IGVsZW1lbnQgdGFyZ2V0IHRvIG1ha2UgYSBjbGlja1xuICovXG52YXIgaGFuZGxlQ2xpY2tJbnB1dCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIGlmICghaW5wdXQpXG4gICAgICAgIHJldHVybjtcbiAgICBpbnB1dC5jbGljaygpO1xufTtcblxudmFyIGFzdXJlUmlwcGxlQ29sb3IgPSBmdW5jdGlvbiAoY29sb3IpIHtcbiAgICByZXR1cm4gY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjQpO1xufTtcbmZ1bmN0aW9uIGNyZWF0ZUZ1aVJpcHBsZUZyb21EaXYoZnVpQ29udGFpbmVyQWJzLCBmdWlDb250YWluZXJSZWwsIGNvbG9yKSB7XG4gICAgaWYgKCFmdWlDb250YWluZXJSZWwgfHwgIWZ1aUNvbnRhaW5lckFicylcbiAgICAgICAgcmV0dXJuO1xuICAgIGZ1aUNvbnRhaW5lckFicy5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgIC8vcmVtb3ZlUmlwcGxlSWZFeGlzdChmdWlDb250YWluZXJSZWwsIFwiZHVpLXJpcHBsZVwiKTtcbiAgICAvLyBjcmVhdGluZyB0aGUgc3BhbiBjaXJjbGUgcmlwcGxlXG4gICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIC8vZm9yIHNlYXJjaGluZ1xuICAgIGNpcmNsZS5pZCA9IFwiZmlsZXN1aS1yaXBwbGVcIjtcbiAgICAvL2ZvciBzdHlsZXNcbiAgICBjaXJjbGUuY2xhc3NOYW1lID0gXCJyaXBwbGVcIjtcbiAgICAvLyBjYWxjdWxhdGVzIHRoZSBkaWFtZXRlclxuICAgIHZhciBkaWFtZXRlciA9IE1hdGgubWF4KGZ1aUNvbnRhaW5lclJlbC5jbGllbnRXaWR0aCwgZnVpQ29udGFpbmVyUmVsLmNsaWVudEhlaWdodCk7XG4gICAgLy9jb25zdCByaXBwbGVDaXJjbGVSYWRpdXM6IG51bWJlciA9IGRpYW1ldGVyIC8gMjtcbiAgICAvL2NvbnNvbGUubG9nKFwidyxoXCIsIGZ1aUNvbnRhaW5lclJlbC5jbGllbnRXaWR0aCwgZnVpQ29udGFpbmVyUmVsLmNsaWVudEhlaWdodCk7XG4gICAgY2lyY2xlLnN0eWxlLndpZHRoID0gY2lyY2xlLnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KGRpYW1ldGVyLCBcInB4XCIpO1xuICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBhc3VyZVJpcHBsZUNvbG9yKGNvbG9yKTtcbiAgICBmdWlDb250YWluZXJSZWwuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICAvL3JlbW92ZSB0cmFzaFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBmdWlDb250YWluZXJBYnMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICBjaXJjbGUgPT09IG51bGwgfHwgY2lyY2xlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjaXJjbGUucmVtb3ZlKCk7XG4gICAgfSwgNTAxKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJpcHBsZUJ1dHRvbihldmVudCwgdmFyaWFudCwgY29sb3IpIHtcbiAgICB2YXIgYnV0dG9uQW5jaG9yRGl2ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICB2YXIgY2lyY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgdmFyIGRpYW1ldGVyID0gTWF0aC5tYXgoYnV0dG9uQW5jaG9yRGl2LmNsaWVudFdpZHRoLCBidXR0b25BbmNob3JEaXYuY2xpZW50SGVpZ2h0KTtcbiAgICAvL2NvbnN0IHJhZGl1cyA9IGRpYW1ldGVyIC8gMjtcbiAgICBjaXJjbGUuc3R5bGUud2lkdGggPSBjaXJjbGUuc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZGlhbWV0ZXIsIFwicHhcIik7XG4gICAgLyogY2lyY2xlLnN0eWxlLmxlZnQgPSBgJHtldmVudC5jbGllbnRYIC0gcmFkaXVzXG4gICAgIH1weGA7XG4gICBjaXJjbGUuc3R5bGUudG9wID0gYCR7ZXZlbnQuY2xpZW50WSAtIHJhZGl1c1xuICAgICB9cHhgOyAqL1xuICAgIGNpcmNsZS5jbGFzc0xpc3QuYWRkKFwicmlwcGxlXCIpO1xuICAgIGlmICh2YXJpYW50ICE9PSBcImNvbnRhaW5lZFwiKSB7XG4gICAgICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBhc3VyZVJpcHBsZUNvbG9yKGNvbG9yKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBoZXhDb2xvclRvUkdCKFwiI2ZmZmZmZlwiLCAwLjQpO1xuICAgIH1cbiAgICBidXR0b25BbmNob3JEaXYuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2lyY2xlID09PSBudWxsIHx8IGNpcmNsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2lyY2xlLnJlbW92ZSgpO1xuICAgIH0sIDUwMSk7XG59XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlc3VpLWRpc2FibGVkLXJvb3Qge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbn1cIik7XG5cbnZhciBEcm9wem9uZURpc2FibGVkTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb3BlbiA9IHByb3BzLm9wZW4sIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgfVxuICAgIHZhciBoYW5kbGVEcmFnID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBoYW5kbGVEcmFnVXRpbChldnQpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZURyb3AgPSBmdW5jdGlvbiAoZXZ0KSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgaGFuZGxlRHJvcFV0aWwoZXZ0KTtcbiAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgdmFyIGZpbmFsRGlzYWJsZWRMYXllckNsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShcImZpbGVzdWktZGlzYWJsZWQtcm9vdFwiLCBjbGFzc05hbWUpO1xuICAgIGlmIChvcGVuKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiBzdHlsZSwgY2xhc3NOYW1lOiBmaW5hbERpc2FibGVkTGF5ZXJDbGFzc05hbWUsIG9uRHJvcDogaGFuZGxlRHJvcCwgb25EcmFnT3ZlcjogaGFuZGxlRHJhZywgb25DbGljazogaGFuZGxlQ2xpY2sgfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIH1cbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4uZnVpLWRyb3B6b25lLXJvb3Qge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtaW4td2lkdGg6IDE1MHB4O1xcbiAgbWluLWhlaWdodDogMTgwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGdhcDogMCA4cHg7XFxuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xcbiAgZm9udC1zaXplOiAxLjVlbTtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDI4NTdlbTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICAvKiAgJi5mdWktZHJvcHpvbmUtYm9yZGVyIHtcXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXG4gICAgYm9yZGVyOiAxcHggZGFzaGVkICMwYzIzNTg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICAgICYuZnVpLWhpZGUtYm9yZGVyIHtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG4gIH0gKi9cXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XFxuICAuZnVpLWRyb3B6b25lLXJvb3Qge1xcbiAgICBmb250LXNpemU6IDEuM2VtO1xcbiAgfVxcbn1cXG4uZnVpLWRyb3B6b25lLXJvb3QuY2xpY2thYmxlIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmZpbGVzLXVpLWhlYWRlciB7XFxuICBtaW4taGVpZ2h0OiAyM3B4O1xcbiAgLyogIGhlaWdodDogMjJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgXFxuICB0b3A6IDA7XFxuICAqL1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDFyZW07XFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiA5NjBweCkge1xcbiAgLmZpbGVzLXVpLWhlYWRlciB7XFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgfVxcbn1cXG5cXG4uZmlsZXMtdWktZm9vdGVyIHtcXG4gIC8qICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDhweDsgKi9cXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBjdXJzb3I6IHRleHQ7XFxuICAvKiBoZWlnaHQ6IDIzcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwOyAqL1xcbiAgd2lkdGg6IDEwMCU7XFxuICAvKiBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICovXFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIHBhZGRpbmctbGVmdDogMTBweDtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMTtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogOTYwcHgpIHtcXG4gIC5maWxlcy11aS1mb290ZXIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFweDtcXG4gICAgZm9udC1zaXplOiAwLjlyZW07XFxuICB9XFxufVwiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXN1aS1iYXNlLXJpcHBsZS1hYnNvbHV0ZSAuZmlsZXN1aS1iYXNlLXJpcHBsZS1yZWxhdGl2ZSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGUgLmZpbGVzdWktYmFzZS1yaXBwbGUtcmVsYXRpdmUgc3Bhbi5yaXBwbGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXG4gIGFuaW1hdGlvbjogcmlwcGxlIDUwMG1zIGxpbmVhcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuQGtleWZyYW1lcyByaXBwbGUge1xcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDQpO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cIik7XG5cbi8qKlxuICogQWRkZWQgc3VwcG9ydCBmb3IgbGl0ZXJhbHMgJSBhbmQgcHhcbiAqIEBwYXJhbSBzaXplU3RyXG4gKiBAcmV0dXJuc1xuICovXG52YXIgcGFyc2VTaXplID0gZnVuY3Rpb24gKHNpemVTdHIpIHtcbiAgICBpZiAodHlwZW9mIHNpemVTdHIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHNpemVTdHI7XG4gICAgfVxuICAgIHN3aXRjaCAoc2l6ZVN0cikge1xuICAgICAgICBjYXNlIFwibWljcm9cIjpcbiAgICAgICAgICAgIHJldHVybiA4O1xuICAgICAgICBjYXNlIFwic21hbGxcIjpcbiAgICAgICAgICAgIHJldHVybiAxNTtcbiAgICAgICAgY2FzZSBcInNlbWktbWVkaXVtXCI6XG4gICAgICAgICAgICByZXR1cm4gMTg7XG4gICAgICAgIGNhc2UgXCJtZWRpdW1cIjpcbiAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgY2FzZSBcImxhcmdlXCI6XG4gICAgICAgICAgICByZXR1cm4gMjg7XG4gICAgICAgIGNhc2UgXCJleHRyYS1sYXJnZVwiOlxuICAgICAgICAgICAgcmV0dXJuIDMyO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgIH1cbn07XG5cbnZhciBDYW5jZWwgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IFwibm9uZVwiLCBvcGFjaXR5OiBcIi44N1wiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDRjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDggOC0zLjU5IDgtOC0zLjU5LTgtOC04em01IDExLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIiwgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIsIG9wYWNpdHk6IFwiLjVcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy41OS0xM0wxMiAxMC41OSA4LjQxIDcgNyA4LjQxIDEwLjU5IDEyIDcgMTUuNTkgOC40MSAxNyAxMiAxMy40MSAxNS41OSAxNyAxNyAxNS41OSAxMy40MSAxMiAxNyA4LjQxelwiIH0pKSk7XG59O1xuXG52YXIgQ2hlY2tDaXJjbGUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMHpcIiwgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIiB9KSkpO1xufTtcblxudmFyIENsZWFuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgZW5hYmxlQmFja2dyb3VuZDogXCJuZXcgMCAwIDI0IDI0XCIsIGhlaWdodDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IGZpbGw6IFwibm9uZVwiLCBoZWlnaHQ6IGZpbmFsU2l6ZSB8fCBcIjI0XCIsIHdpZHRoOiBmaW5hbFNpemUgfHwgXCIyNFwiIH0pKSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xNiwxMWgtMVYzYzAtMS4xLTAuOS0yLTItMmgtMkM5LjksMSw5LDEuOSw5LDN2OEg4Yy0yLjc2LDAtNSwyLjI0LTUsNXY3aDE4di03QzIxLDEzLjI0LDE4Ljc2LDExLDE2LDExeiBNMTEsM2gydjhoLTJWMyB6IE0xOSwyMWgtMnYtM2MwLTAuNTUtMC40NS0xLTEtMXMtMSwwLjQ1LTEsMXYzaC0ydi0zYzAtMC41NS0wLjQ1LTEtMS0xcy0xLDAuNDUtMSwxdjNIOXYtM2MwLTAuNTUtMC40NS0xLTEtMXMtMSwwLjQ1LTEsMXYzSDUgdi01YzAtMS42NSwxLjM1LTMsMy0zaDhjMS42NSwwLDMsMS4zNSwzLDNWMjF6XCIgfSkpKSkpO1xufTtcblxudmFyIENsZWFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IGNvbG9yRmlsbCB8fCBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTIgMTkgNi40MXpcIiB9KSkpO1xufTtcblxudmFyIENsb3VkRG9uZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIGVuYWJsZUJhY2tncm91bmQ6IFwibmV3IDAgMCAyNCAyNFwiLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgfHwgXCIjMDAwMDAwXCIsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUM4LjA4IDcuMTQgOS45NCA2IDEyIDZjMi42MiAwIDQuODggMS44NiA1LjM5IDQuNDNsLjMgMS41IDEuNTMuMTFjMS41Ni4xIDIuNzggMS40MSAyLjc4IDIuOTYgMCAxLjY1LTEuMzUgMy0zIDN6bS05LTMuODJsLTIuMDktMi4wOUw2LjUgMTMuNSAxMCAxN2w2LjAxLTYuMDEtMS40MS0xLjQxelwiIH0pKSk7XG59O1xuXG52YXIgRG9EaXN0dXJiID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4IDgtMy41OSA4LTgtMy41OS04LTgtOHpcIiwgb3BhY2l0eTogXCIuNFwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFDMTUuNTUgMTkuMzcgMTMuODUgMjAgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QzguNDUgNC42MyAxMC4xNSA0IDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwiIH0pKSk7XG59O1xuXG52YXIgRG93bmxvYWRGaWxlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgZW5hYmxlQmFja2dyb3VuZDogXCJuZXcgMCAwIDI0IDI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciB8fCBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIsIGhlaWdodDogZmluYWxTaXplLCB3aWR0aDogZmluYWxTaXplIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTgsMTV2M0g2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTJjMS4xLDAsMi0wLjksMi0ydi0zSDE4eiBNMTcsMTFsLTEuNDEtMS40MUwxMywxMi4xN1Y0aC0ydjguMTdMOC40MSw5LjU5TDcsMTFsNSw1IEwxNywxMXpcIiB9KSkpKTtcbn07XG5cbnZhciBJbmZvRGlzbmV5ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSkgLSAyO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IFxuICAgICAgICAvL2FsdD1cIlwiXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLCBcImFyaWEtbGFiZWxcIjogXCJpbmZvXCIsIGZpbGw6IGNvbG9yIHx8IFwiIzAwMDAwMFwiLCByb2xlOiBcImltZ1wiLCB0cmFuc2Zvcm06IFwiXCIsIHZlcnNpb246IFwiMS4xXCIsIHZpZXdCb3g6IFwiMCAwIDM2IDM2XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMjIuMzc4IDBjMi40MTIgMCAzLjYxOCAxLjY0MiAzLjYxOCAzLjUyMyAwIDIuMzQ5LTIuMDk1IDQuNTIyLTQuODIyIDQuNTIyLTIuMjg0IDAtMy42MTYtMS4zNS0zLjU1My0zLjU4MiAwLTEuODc3IDEuNTg2LTQuNDYyIDQuNzU3LTQuNDYyek0xNC45NTYgMzZjLTEuOTA0IDAtMy4yOTktMS4xNzQtMS45NjctNi4zNDNsMi4xODUtOS4xNjZjMC4zOC0xLjQ2NSAwLjQ0My0yLjA1NCAwLTIuMDU0LTAuNTcxIDAtMy4wNDAgMS4wMTItNC41MDQgMi4wMTFsLTAuOTUtMS41ODRjNC42My0zLjkzNSA5Ljk1Ni02LjI0MSAxMi4yNDItNi4yNDEgMS45MDMgMCAyLjIxOSAyLjI5MSAxLjI2OSA1LjgxNGwtMi41MDQgOS42MzRjLTAuNDQzIDEuNzAxLTAuMjU0IDIuMjg4IDAuMTkxIDIuMjg4IDAuNTcxIDAgMi40NDMtMC43MDYgNC4yODItMi4xNzNsMS4wODAgMS40NjVjLTQuNTA0IDQuNTg1LTkuNDIzIDYuMzQ5LTExLjMyNCA2LjM0OXpcIiB9KSkpO1xufTtcblxudmFyIFBsYXlJY29uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIG9wYWNpdHk6IFwiLjlcIiwgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNOCA1djE0bDExLTdMOCA1elwiIH0pKSk7XG59O1xuXG52YXIgVXBsb2FkID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBlbmFibGVCYWNrZ3JvdW5kOiBcIm5ldyAwIDAgMjQgMjRcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIsIGhlaWdodDogc2l6ZSB8fCBcIjI0XCIsIHdpZHRoOiBzaXplIHx8IFwiMjRcIiB9KSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE4LDE1djNINnYtM0g0djNjMCwxLjEsMC45LDIsMiwyaDEyYzEuMSwwLDItMC45LDItMnYtM0gxOHogTTcsOWwxLjQxLDEuNDFMMTEsNy44M1YxNmgyVjcuODNsMi41OSwyLjU4TDE3LDlsLTUtNUw3LDl6XCIgfSkpKSk7XG59O1xuXG52YXIgVXBsb2FkRXJyb3IgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBjb2xvckZpbGwgPyBjb2xvckZpbGwgOiBcIm5vbmVcIiwgaGVpZ2h0OiBmaW5hbFNpemUsIHdpZHRoOiBmaW5hbFNpemUgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTgsMTUuMTdWMTVoMnYyLjE3TDE4LDE1LjE3eiBNMTUuNDEsMTIuNTlMMTcsMTFsLTEuNDEtMS40MUwxNCwxMS4xN0wxNS40MSwxMi41OXogTTEzLDEwLjE3VjRoLTJ2NC4xN0wxMywxMC4xN3ogTTIxLjE5LDIxLjE5bC0xLjc4LTEuNzhMMi44MSwyLjgxTDEuMzksNC4yMmw2LjE5LDYuMTlMNywxMWw1LDVsMC41OS0wLjU5TDE1LjE3LDE4SDZ2LTNINHYzYzAsMS4xLDAuOSwyLDIsMmgxMS4xN2wyLjYxLDIuNjEgTDIxLjE5LDIxLjE5elwiIH0pKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAa2V5ZnJhbWVzIGZpbGVzdWktcm90YXRlLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG4uZmlsZXN1aS1yb3RhdGUge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG5cXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcXG4gIC5maWxlc3VpLXJvdGF0ZSB7XFxuICAgIGFuaW1hdGlvbjogZmlsZXN1aS1yb3RhdGUtc3BpbiBpbmZpbml0ZSAycyBsaW5lYXI7XFxuICB9XFxufVwiKTtcblxudmFyIFVwbG9hZGluZ1Byb2Nlc3MgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHNwaW4gPSBwcm9wcy5zcGluO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgdmFyIGZpbmFsQ2xhc3NuYW1lID0gY2xhc3NOYW1lIHx8IFwiXCI7XG4gICAgZmluYWxDbGFzc25hbWUgKz0gc3BpbiA/IFwiZmlsZXN1aS1yb3RhdGVcIiA6IFwiXCI7XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzbmFtZSwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QzE5LjU0IDE1LjAzIDIwIDEzLjU3IDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRDNC40NiA4Ljk3IDQgMTAuNDMgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIiB9KSkpO1xufTtcblxudmFyIFZpc2liaWxpdHkgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNGMtNC40MSAwLTggMy41OS04IDhzMy41OSA4IDggOCA4LTMuNTkgOC04LTMuNTktOC04LTh6XCIsIFxuICAgICAgICAgICAgLy9vcGFjaXR5PVwiLjlcIlxuICAgICAgICAgICAgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNEM3IDQgMi43MyA3LjExIDEgMTEuNSAyLjczIDE1Ljg5IDcgMTkgMTIgMTlzOS4yNy0zLjExIDExLTcuNUMyMS4yNyA3LjExIDE3IDQgMTIgNHptMCAxMi41Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIiB9KSkpO1xufTtcblxudmFyIERyb3B6b25lSGVhZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG1heEZpbGVTaXplID0gcHJvcHMubWF4RmlsZVNpemUsIG51bWJlck9mVmFsaWRGaWxlcyA9IHByb3BzLm51bWJlck9mVmFsaWRGaWxlcywgb25SZXNldCA9IHByb3BzLm9uUmVzZXQsIG9uQ2xlYW4gPSBwcm9wcy5vbkNsZWFuLCBtYXhGaWxlcyA9IHByb3BzLm1heEZpbGVzLCBvblVwbG9hZFN0YXJ0ID0gcHJvcHMub25VcGxvYWRTdGFydCwgaXNVcGxvYWRpbmcgPSBwcm9wcy5pc1VwbG9hZGluZywgdXJsUHJlc2VudCA9IHByb3BzLnVybFByZXNlbnQsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgYm9yZGVyUmFkaXVzID0gcHJvcHMuYm9yZGVyUmFkaXVzLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBfYSA9IHByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lID0gX2EgPT09IHZvaWQgMCA/IFwiXCIgOiBfYSwgcmVzZXRTdHlsZXMgPSBwcm9wcy5yZXNldFN0eWxlcywgY29sb3IgPSBwcm9wcy5jb2xvciwgX2IgPSBwcm9wcy5maXJzdENsYXNzTmFtZSwgZmlyc3RDbGFzc05hbWUgPSBfYiA9PT0gdm9pZCAwID8gXCJcIiA6IF9iO1xuICAgIHZhciBEcm9wem9uZUhlYWRlckxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5oZWFkZXI7XG4gICAgdmFyIGhhbmRsZUNsZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvbkNsZWFuID09PSBudWxsIHx8IG9uQ2xlYW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xlYW4oKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVTdGFydFVwbG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25VcGxvYWRTdGFydCA9PT0gbnVsbCB8fCBvblVwbG9hZFN0YXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZFN0YXJ0KCk7XG4gICAgfTtcbiAgICB2YXIgbWFrZUhlYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAob25VcGxvYWRTdGFydCAmJiB1cmxQcmVzZW50ICYmIG51bWJlck9mVmFsaWRGaWxlcykge1xuICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWRpbmdQcm9jZXNzLCB7IHNwaW46IHRydWUsIGNvbG9yOiBjb2xvciB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBEcm9wem9uZUhlYWRlckxvY2FsaXplci51cGxvYWRGaWxlc01lc3NhZ2UpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZCwgeyBjb2xvcjogY29sb3IsIG9uQ2xpY2s6IGhhbmRsZVN0YXJ0VXBsb2FkaW5nIH0pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFwiLFwiLFxuICAgICAgICAgICAgICAgIFwiXFx1MDBBMFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1heEZpbGVTaXplTWVzc2VuZ2VyID0gRHJvcHpvbmVIZWFkZXJMb2NhbGl6ZXIubWF4U2l6ZU1lc3NhZ2U7XG4gICAgICAgIHZhciBtYXhGaWxlU2l6ZUZvcm1hdHRlZCA9IGZpbGVTaXplRm9ybWF0ZXIobWF4RmlsZVNpemUpO1xuICAgICAgICBpZiAobWF4RmlsZVNpemVGb3JtYXR0ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG1heEZpbGVTaXplTWVzc2VuZ2VyKG1heEZpbGVTaXplRm9ybWF0dGVkKSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFwiLFwiLFxuICAgICAgICAgICAgICAgIFwiXFx1MDBBMFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbGlkRmlsZVNpemVNZXNzZW5nZXIgPSBEcm9wem9uZUhlYWRlckxvY2FsaXplci52YWxpZEZpbGVzTWVzc2FnZTtcbiAgICAgICAgaWYgKG1heEZpbGVzKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWxpZEZpbGVTaXplTWVzc2VuZ2VyKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgXCIsXCIsXG4gICAgICAgICAgICAgICAgXCJcXHUwMEEwXCIpKTtcbiAgICAgICAgfVxuICAgICAgICAvL2NsZWFuIG5vdCB2YWxpZCBmaWxlcyBvbiBjbGlja1xuICAgICAgICBpZiAob25DbGVhbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhbiwgeyBjb2xvcjogY29sb3IsIG9uQ2xpY2s6IGhhbmRsZUNsZWFuLCBzaXplOiBcInNlbWktbWVkaXVtXCIgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvblJlc2V0KSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KENhbmNlbCwgeyBjb2xvcjogY29sb3IsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpOyB9IH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZ0KSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gcmVzZXRTdHlsZXNcbiAgICAgICAgPyBjbGFzc05hbWVcbiAgICAgICAgOiBhZGRDbGFzc05hbWUoXCJmaWxlcy11aS1oZWFkZXJcIiArIFwiIFwiICsgZmlyc3RDbGFzc05hbWUsIGNsYXNzTmFtZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSByZXNldFN0eWxlc1xuICAgICAgICA/IHN0eWxlXG4gICAgICAgIDogX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBzdHlsZSksIHsgYm9yZGVyVG9wTGVmdFJhZGl1czogYm9yZGVyUmFkaXVzLCBib3JkZXJUb3BSaWdodFJhZGl1czogYm9yZGVyUmFkaXVzIH0pO1xuICAgIC8vY29uc29sZS5sb2coXCJoZWFkZXJ4IHJlc2V0U3R5bGVzXCIsIHJlc2V0U3R5bGVzKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiaGVhZGVyeCBzdHlsZVwiLCBzdHlsZSk7XG4gICAgLy9jb25zb2xlLmxvZyhcImhlYWRlcnggZmluYWxTdHlsZVwiLCBmaW5hbFN0eWxlKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgc3R5bGU6IGZpbmFsU3R5bGUgfSwgbWFrZUhlYWRlcigpLm1hcChmdW5jdGlvbiAoSGVhZGVySXRlbSwgaW5kZXgpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGtleTogaW5kZXgsIHN0eWxlOiB7IGRpc3BsYXk6IFwiZmxleFwiIH0gfSwgSGVhZGVySXRlbSkpOyB9KSkpO1xufTtcblxudmFyIERyb3B6b25lRm9vdGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGFjY2VwdCA9IHByb3BzLmFjY2VwdCwgbWVzc2FnZSA9IHByb3BzLm1lc3NhZ2UsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgYm9yZGVyUmFkaXVzID0gcHJvcHMuYm9yZGVyUmFkaXVzLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBfYSA9IHByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lID0gX2EgPT09IHZvaWQgMCA/IFwiXCIgOiBfYSwgX2IgPSBwcm9wcy5yZXNldFN0eWxlcywgcmVzZXRTdHlsZXMgPSBfYiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYiwgX2MgPSBwcm9wcy5hbGxvd2VkVHlwZXNMYWJlbCwgYWxsb3dlZFR5cGVzTGFiZWwgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCBfZCA9IHByb3BzLmN1c3RvbU1lc3NhZ2UsIGN1c3RvbU1lc3NhZ2UgPSBfZCA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2QsIF9lID0gcHJvcHMuZmlyc3RDbGFzc05hbWUsIGZpcnN0Q2xhc3NOYW1lID0gX2UgPT09IHZvaWQgMCA/IFwiXCIgOiBfZTtcbiAgICB2YXIgRHJvcHpvbmVGb290ZXJMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuZm9vdGVyO1xuICAgIHZhciBhY2NlcEN1c3RvbU1lc3NlbmdlciA9IERyb3B6b25lRm9vdGVyTG9jYWxpemVyLmFjY2VwdEN1c3RvbTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgfVxuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IHJlc2V0U3R5bGVzXG4gICAgICAgID8gY2xhc3NOYW1lXG4gICAgICAgIDogYWRkQ2xhc3NOYW1lKFwiZmlsZXMtdWktZm9vdGVyIFwiLmNvbmNhdChmaXJzdENsYXNzTmFtZSksIGNsYXNzTmFtZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSByZXNldFN0eWxlc1xuICAgICAgICA/IHN0eWxlXG4gICAgICAgIDogX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBzdHlsZSksIHsgYm9yZGVyQm90b21MZWZ0UmFkaXVzOiBib3JkZXJSYWRpdXMsIGJvcmRlckJvdG9tUmlnaHRSYWRpdXM6IGJvcmRlclJhZGl1cyB9KTtcbiAgICAvL2NvbnNvbGUubG9nKFwiZmlsZXMtdWktZm9vdGVyXCIsIGZpbmFsU3R5bGUpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBzdHlsZTogZmluYWxTdHlsZSB9LCBjdXN0b21NZXNzYWdlID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1c3RvbU1lc3NhZ2UpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBtZXNzYWdlXG4gICAgICAgID8gbWVzc2FnZVxuICAgICAgICA6ICFhY2NlcHRcbiAgICAgICAgICAgID8gYWxsb3dlZFR5cGVzTGFiZWxcbiAgICAgICAgICAgICAgICA/IERyb3B6b25lRm9vdGVyTG9jYWxpemVyLmFjY2VwdEFsbFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICA6IGFjY2VwQ3VzdG9tTWVzc2VuZ2VyKGFjY2VwdCkpKSkpO1xufTtcblxudmFyIER5bmFtaUNTUztcclxuKGZ1bmN0aW9uIChEeW5hbWlDU1MpIHtcclxuICAgIC8qKlxyXG4gICAgICogSW5zZXJ0cyBhIHN0eWxlc2hlZXQgaW50byB0aGUgRE9NLlxyXG4gICAgICogV2hlbiBhbiBlcnJvciBvY2N1cnMgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmdcclxuICAgICAqIEBwYXJhbSBkeW5hbWljU2hlZXQgYSBkeW5jYW1pYyBzaGVldFxyXG4gICAgICogQHJldHVybiB0aGUgaWQgb2YgdGhlIHN0eWxlc2hlZXQgaW4gc3RyaW5nIGZvcm1hdFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBpbnNlcnRTdHlsZVNoZWV0KGR5bmFtaWNTaGVldCkge1xyXG4gICAgICAgIHZhciByZXN1bHRfaWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGR5bmFtaWNTaGVldCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBkeW5hbWljU2hlZXQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vaWYgYWxyZWFkeSBleGlzdHNcclxuICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZHluYW1pY1NoZWV0LmlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZHluYW1pY1NoZWV0LmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHRfaWQgPSBkeW5hbWljU2hlZXQuaWQ7XHJcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgc3R5bGVTaGVldC5pZCA9IHJlc3VsdF9pZDtcclxuICAgICAgICBzdHlsZVNoZWV0LnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJ0ZXh0L2Nzc1wiKTtcclxuICAgICAgICB2YXIgY29udGV0UmF3ID0gdG9SYXdTdHlsZVNoZWV0KGR5bmFtaWNTaGVldC5zaGVldFJ1bGVzIHx8IFtdKSArIGR5bmFtaWNTaGVldC5yYXcgfHwgXCJcIjtcclxuICAgICAgICBzdHlsZVNoZWV0LnRleHRDb250ZW50ID0gY29udGV0UmF3O1xyXG4gICAgICAgIHZhciBhcHBlbmRSZXN1bHQgPSBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xyXG4gICAgICAgIGlmICghYXBwZW5kUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0X2lkO1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQgPSBpbnNlcnRTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiBoZSBzdHlsZSBzaGVldFxyXG4gICAgICogQHBhcmFtIHNoZWV0UnVsZXMgdGhlIHNldCBvZiBydWxlc1xyXG4gICAgICogQHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9yIHRoZSBpZFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBlZGl0U3R5bGVTaGVldChpZCwgc2hlZXRSdWxlcykge1xyXG4gICAgICAgIHZhciByZXN1bHRfaWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGlkID09PSBcInVuZGVmaW5lZFwiIHx8IGlkID09PSBudWxsIHx8IHNoZWV0UnVsZXMgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vaWYgZG9udCBleGlzdHMgeWV0XHJcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgaWYgKCFzdHlsZVNoZWV0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKiAgcmVzdWx0X2lkID0gaWQ7XHJcbiAgICAgICAgIC8vdmFyIHN0eWxlU2hlZXQ6IEhUTUxTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgIHN0eWxlU2hlZXQuaWQgPSByZXN1bHRfaWQ7XHJcbiAgICAgICAgIHN0eWxlU2hlZXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpOyAqL1xyXG4gICAgICAgIHN0eWxlU2hlZXQudGV4dENvbnRlbnQgPSB0b1Jhd1N0eWxlU2hlZXQoc2hlZXRSdWxlcyk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdF9pZDtcclxuICAgIH1cclxuICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldCA9IGVkaXRTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlbiBhbiBpZCBpbiBzdHJpbmcgZm9ybWF0LCBjaGVja3MgaW50byB0aGUgRE9NIHdoZXRoZXIgdGhlcmUgaXMgYSBzdHlsZVxyXG4gICAgICogd2l0aCB0aGUgZ2l2ZW4gaWQuIElmIHRydWUsIHRoaXMgZnVuY3Rpb24gd2lsbCByZW1vdmUgdGhlIHN0eWxlc2hlZXQgYW5kIHJldHVybiB0aGUgaWQuXHJcbiAgICAgKiBJZiBub3QgcHJlc2VudCwgd2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBzdHlsZXNoZWV0IHRvIHJlbW92ZSBpZiBleGlzdHNcclxuICAgICAqIEByZXR1cm5zIHRoZSBpZCBvciBhbiBlbXB0eSBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVTaGVldChpZCkge1xyXG4gICAgICAgIHZhciByZXN1bHRfaWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBodG1sT2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICAgIGlmIChodG1sT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoaHRtbE9iamVjdCk7XHJcbiAgICAgICAgICAgIHJlc3VsdF9pZCA9IGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0X2lkO1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLnJlbW92ZVN0eWxlU2hlZXQgPSByZW1vdmVTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlbiBhbiBpZCBpbiBzdHJpbmcgZm9ybWF0LCBjaGVja3MgaW50byB0aGUgRE9NIHdoZXRoZXIgdGhlcmUgaXMgYSBzdHlsZVxyXG4gICAgICogd2l0aCB0aGUgZ2l2ZW4gaWQgZXhpc3RzIGFuZCByZXR1cm5hIGJvb2xlYW4gcmVzdWx0XHJcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBzdHlsZXNoZWV0IHRvIGNoZWNrIGlmIGV4aXN0c1xyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc3R5bGVzaGVldCB3YXMgZm91bmRcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZXhpc3RTdHlsZVNoZWV0KGlkKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBpZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBodG1sT2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICAgIGlmIChodG1sT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MuZXhpc3RTdHlsZVNoZWV0ID0gZXhpc3RTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgc3R5bGVzaGVldCBnaXZlbiBhIHN0eWxlc2hlZXRcclxuICAgICAqIEBwYXJhbSBzdHlsZVNoZWV0IGFzdHlsZXNoZWV0XHJcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV3IHN0eWxlc2hlZXQgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIG1ha2VTdHlsZVNoZWV0KHN0eWxlU2hlZXQpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHN0eWxlU2hlZXQgPT09IFwidW5kZWZpbmVkXCIgfHwgc3R5bGVTaGVldCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQ7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MubWFrZVN0eWxlU2hlZXQgPSBtYWtlU3R5bGVTaGVldDtcclxufSkoRHluYW1pQ1NTIHx8IChEeW5hbWlDU1MgPSB7fSkpO1xyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2hhcmFjdGVyIGlzIHVwcGVyQ2FzZSBvciBub3RcclxuICogQHBhcmFtIGNoYXJhY3RlciBhIGNoYXJhY3RlclxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIHN0ciBjb250YWlucyBhIHN0cmluZyBjaGFyYWN0ZXJcclxuICovXHJcbmZ1bmN0aW9uIGlzVXBwZXIoY2hhcmFjdGVyKSB7XHJcbiAgICBpZiAoIWNoYXJhY3RlcilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gIS9bYS16XS8udGVzdChjaGFyYWN0ZXIpICYmIC9bQS1aXS8udGVzdChjaGFyYWN0ZXIpO1xyXG59XHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhIHJ1bGUgd2l0aCB1cHBlcmNhc2UgdG8gYSBoeXBoZW4tbG93ZXJjYXNlIHZlcnNpb25cclxuICogQHBhcmFtIHJ1bGVMYWJlbCB0aGUgcnVsZVxyXG4gKiBAcmV0dXJucyBhIGh5cGhlbi1sb3dlcmNhc2UgbGFiZWxcclxuICovXHJcbmZ1bmN0aW9uIGZyb21VcHBlckNhc2VUb0h5cGhlbihydWxlTGFiZWwpIHtcclxuICAgIHZhciByZXN1bHQgPSBcIlwiO1xyXG4gICAgdmFyIGNoYXJVcHBlciA9ICcgJztcclxuICAgIHZhciBpc3VwcGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVMYWJlbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjdXJyZW50Q2hhciA9IHJ1bGVMYWJlbFtpXTtcclxuICAgICAgICBpZiAoaXNVcHBlcihjdXJyZW50Q2hhcikpIHtcclxuICAgICAgICAgICAgY2hhclVwcGVyID0gY3VycmVudENoYXI7XHJcbiAgICAgICAgICAgIGlzdXBwZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL2FkZCBoeXBoZW5cclxuICAgIGlmIChpc3VwcGVyKSB7XHJcbiAgICAgICAgdmFyIHBhcnRzID0gcnVsZUxhYmVsLnNwbGl0KGNoYXJVcHBlcik7XHJcbiAgICAgICAgcmVzdWx0ID0gXCJcIi5jb25jYXQocGFydHNbMF0sIFwiLVwiKS5jb25jYXQoY2hhclVwcGVyLnRvTG93ZXJDYXNlKCkpLmNvbmNhdChwYXJ0c1sxXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBydWxlTGFiZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgdGhlIGxhYmVsIGNvbnRhaW5zIHRoZSBcIjpcIiBjaGFyYWN0ZXJcclxuICogQHBhcmFtIHJ1bGVMYWJlbCB0aGUgcnVsZVxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBydWxlIGxhYmVsIGNvcnJlc3BvbmRzIHRvIGEgcHNldWRvIGNsYXNzXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1BzZXVkbyhydWxlTGFiZWwpIHtcclxuICAgIGlmICghcnVsZUxhYmVsKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBydWxlTGFiZWwuaW5jbHVkZXMoXCI6XCIpO1xyXG59XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gY2xhc3NOYW1lXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5mdW5jdGlvbiBtYWtlUmF3UnVsZUxhYmVsKGNsYXNzTmFtZSkge1xyXG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcbiAgICB2YXIgc3BsaXRlZENsYXNzTmFtZSA9IGNsYXNzTmFtZS50cmltKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgLy9pcyBjb21wb3NlZCBjbGFzc25hbWU/XHJcbiAgICBpZiAoc3BsaXRlZENsYXNzTmFtZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGxpdGVkQ2xhc3NOYW1lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBcIi5cIi5jb25jYXQoc3BsaXRlZENsYXNzTmFtZVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdCArPSBcIntcXG5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCArPSBcIi5cIi5jb25jYXQoY2xhc3NOYW1lLCBcIntcXG5cIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gc2hlZXRSdWxlc1xyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZnVuY3Rpb24gdG9SYXdTdHlsZVNoZWV0KHNoZWV0UnVsZXMpIHtcclxuICAgIGlmICh0eXBlb2Ygc2hlZXRSdWxlcyA9PT0gXCJ1bmRlZmluZWRcIiB8fCBzaGVldFJ1bGVzID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICB2YXIgcmF3U3R5bGVTaGVldCA9IFwiXCI7XHJcbiAgICB2YXIgbmVzdGVkUHNldWRvcyA9IFtdO1xyXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaGVldFJ1bGVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgdmFyIGN1cnJlbnRSdWxlID0gc2hlZXRSdWxlc1tqXTtcclxuICAgICAgICB2YXIgY3Vycm5ldFJhd1J1bGUgPSBcIlwiO1xyXG4gICAgICAgIC8vIGN1cnJuZXRSYXdSdWxlICs9IGAuJHtjdXJyZW50UnVsZS5jbGFzc05hbWV9e1xcbmA7XHJcbiAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gbWFrZVJhd1J1bGVMYWJlbChjdXJyZW50UnVsZS5jbGFzc05hbWUpO1xyXG4gICAgICAgIC8vbGlzdCBvZiBsYWJlbHMgZm9yIHJ1bGVzXHJcbiAgICAgICAgdmFyIHJ1bGVza2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRSdWxlLnJ1bGVzKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVza2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgY3VycmVudEtleSA9IHJ1bGVza2V5c1tpXTtcclxuICAgICAgICAgICAgdmFyIHN0eWxlTGFiZWwgPSBmcm9tVXBwZXJDYXNlVG9IeXBoZW4oY3VycmVudEtleSk7XHJcbiAgICAgICAgICAgIC8vaWYgYSBwc2V1ZG8gY2xhc3MgZm91bmQsIHNlcGFyYXRlIGl0XHJcbiAgICAgICAgICAgIGlmIChpc1BzZXVkbyhzdHlsZUxhYmVsKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBzZXVkb0NsYXNzTmFtZSA9IGN1cnJlbnRSdWxlLmNsYXNzTmFtZSArIHN0eWxlTGFiZWw7XHJcbiAgICAgICAgICAgICAgICBuZXN0ZWRQc2V1ZG9zLnB1c2goeyBjbGFzc05hbWU6IHBzZXVkb0NsYXNzTmFtZSwgcnVsZXM6IGN1cnJlbnRSdWxlLnJ1bGVzW3N0eWxlTGFiZWxdIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlUnVsZSA9IGN1cnJlbnRSdWxlLnJ1bGVzW2N1cnJlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCJcXHRcIi5jb25jYXQoc3R5bGVMYWJlbCwgXCIgOiBcIikuY29uY2F0KHN0eWxlUnVsZSwgXCI7XFxuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwifVxcblwiO1xyXG4gICAgICAgIHJhd1N0eWxlU2hlZXQgKz0gY3Vycm5ldFJhd1J1bGU7XHJcbiAgICB9XHJcbiAgICAvL25lc3RlZCBwc2V1ZG9zXHJcbiAgICBmb3IgKHZhciBwID0gMDsgcCA8IG5lc3RlZFBzZXVkb3MubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICB2YXIgY3Vycm5ldFJhd1J1bGUgPSBcIlwiO1xyXG4gICAgICAgIHZhciBjdXJyZW50UnVsZSA9IG5lc3RlZFBzZXVkb3NbcF07XHJcbiAgICAgICAgdmFyIHJ1bGVza2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRSdWxlLnJ1bGVzKTtcclxuICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBcIi5cIi5jb25jYXQoY3VycmVudFJ1bGUuY2xhc3NOYW1lLCBcIntcXG5cIik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlc2tleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGN1cnJlbnRLZXkgPSBydWxlc2tleXNbaV07XHJcbiAgICAgICAgICAgIHZhciBzdHlsZUxhYmVsID0gZnJvbVVwcGVyQ2FzZVRvSHlwaGVuKGN1cnJlbnRLZXkpO1xyXG4gICAgICAgICAgICB2YXIgc3R5bGVSdWxlID0gY3VycmVudFJ1bGUucnVsZXNbY3VycmVudEtleV07XHJcbiAgICAgICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwiXFx0XCIuY29uY2F0KHN0eWxlTGFiZWwsIFwiIDogXCIpLmNvbmNhdChzdHlsZVJ1bGUsIFwiO1xcblwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCJ9XFxuXCI7XHJcbiAgICAgICAgcmF3U3R5bGVTaGVldCArPSBjdXJybmV0UmF3UnVsZTtcclxuICAgIH1cclxuICAgIHJldHVybiByYXdTdHlsZVNoZWV0O1xyXG59XG5cbnZhciBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSBjb3VudCBhbmQgcmV0cmlldmVzIHRoZSBuZXh0IG51bWJlclxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IHN0YXRpYyBudW1iZXIgaW4gc3R5bGVzXG4gICAgICovXG4gICAgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIuZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyKys7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJJZCBjYWxsZWQgXCIgKyBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm5leHRCdXR0b25DbGFzc05hbWVOdW1iZXI7XG4gICAgfTtcbiAgICBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZENsYXNzTmFtZSBpZGVudGlmeWVyXG4gICAgICogQHBhcmFtIHZhcmlhbnQgdGhlIHZhcmlhbnQgb2YgdGhlIGJ1dHRvblxuICAgICAqIEBwYXJhbSBkaXNhYmxlZCBkaXNhYmxlZCBwcm9wXG4gICAgICogQHBhcmFtIGNvbG9yIHRoZSB0aGVtZSBjb2xvclxuICAgICAqIEBwYXJhbSB0ZXh0Q29sb3IgdGhlIHRleHQgY29sb3JcbiAgICAgKiBAcmV0dXJucyBhIER5bmFtaWNTaGVldFxuICAgICAqL1xuICAgIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm1ha2VEeW5hbWljU3R5bGUgPSBmdW5jdGlvbiAoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCB0ZXh0RGVjb3JhdGlvbikge1xuICAgICAgICAvLyhbeyB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgbmV4dENsYXNzTmFtZSB9XSk7XG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0ge1xuICAgICAgICAgICAgaWQ6IFwibWF0ZXJpYWwtYnV0dG9uLXN0eWxlcy1cIi5jb25jYXQoaWRDbGFzc05hbWUpLFxuICAgICAgICAgICAgLy8gaWQ6IGBkdWktYnV0dG9uLXN0eWxlc2AsXG4gICAgICAgICAgICBzaGVldFJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwibWF0ZXJpYWwtYnV0dG9uLlwiLmNvbmNhdCh2YXJpYW50LCBcIi1cIikuY29uY2F0KGlkQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgLy9jbGFzc05hbWU6IGBkdWktYnV0dG9uLiR7dmFyaWFudH1gLFxuICAgICAgICAgICAgICAgICAgICBydWxlczoge30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJtYXRlcmlhbC1idXR0b24tcm9vdC5cIi5jb25jYXQodmFyaWFudCwgXCItXCIpLmNvbmNhdChpZENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgIC8vIGNsYXNzTmFtZTogYGR1aS1idXR0b24tcm9vdC4ke3ZhcmlhbnR9YCxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IHt9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIHZhciBzaGVldFJ1bGVzID0gc3R5bGVTaGVldC5zaGVldFJ1bGVzO1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHZhcmlhbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbmVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMF0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYXN1cmVDb2xvcihjb2xvdXJOYW1lVG9IZXgodGV4dENvbG9yKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogdGV4dERlY29yYXRpb25cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1sxXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiOmhvdmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGRhcmtlckNvbG9yKGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvcikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm91dGxpbmVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMF0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIFwiLmNvbmNhdChjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuNSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiB0ZXh0RGVjb3JhdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzFdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCI6aG92ZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjA4NSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzBdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiB0ZXh0RGVjb3JhdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzFdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCI6aG92ZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjA4NSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgPSBzaGVldFJ1bGVzO1xuICAgICAgICByZXR1cm4gc3R5bGVTaGVldDtcbiAgICB9O1xuICAgIHJldHVybiBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlcjtcbn0oKSk7XG5cbnZhciB1c2VNYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZSA9IGZ1bmN0aW9uICh2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgdGV4dERlY29yYXRpb24sIGNsYXNzTmFtZSwgaWRDbGFzc05hbWUsIHJlc2V0U3R5bGVzKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVzZU1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lXCIsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLFxuICAgIC8vIHRleHREZWNvcmF0aW9uLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLCByZXNldFN0eWxlcyk7XG4gICAgdmFyIGJhc2VDbGFzc05hbWUgPSBcIm1hdGVyaWFsLWJ1dHRvbi1yb290IG1hdGVyaWFsLWJ1dHRvblwiO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBpZFN0eWxlcyA9IF9hWzBdLCBzZXRJZFN0eWxlcyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc3R5bGVJbmplY3RlZCA9IF9iWzBdLCBzZXRTdHlsZUluamVjdGVkID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWUgPSBfY1swXSwgc2V0RmluYWxDbGFzc05hbWUgPSBfY1sxXTtcbiAgICAvL2NvbnN0IFtuZXh0Q2xhc3NOYW1lLCBzZXROZXh0Q2xhc3NOYW1lXSA9IFJlYWN0LnVzZVN0YXRlPG51bWJlcj4oMCk7XG4gICAgdmFyIGhhbmRsZUluc2VyU3R5bGUgPSBmdW5jdGlvbiAoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dERlY29yYXRpb24sIHRleHRDb2xvcikge1xuICAgICAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBiYXNlQ2xhc3NOYW1lO1xuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm1ha2VEeW5hbWljU3R5bGUoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCB0ZXh0RGVjb3JhdGlvbik7XG4gICAgICAgIHZhciBpZFN0eWxlID0gXCJcIjtcbiAgICAgICAgaWYgKCFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRHluYW1pQ1NTIGluc2VydFwiLCBpZFN0eWxlKTtcbiAgICAgICAgICAgIHNldElkU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpXG4gICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vYWxyZWFkeSBhIHN0eWxlc2hlZXQgYXNzb2NpYXRlZFxuICAgICAgICAgICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0KGlkU3R5bGVzLCBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgfHwgW10pO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkR5bmFtaUNTUyBlZGl0XCIsIGlkU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vbGV0IGZpbmFsQ2xhc3NOYW1lID0gYG1hdGVyaWFsLWJ1dHRvbi1yb290IG1hdGVyaWFsLWJ1dHRvbiBgO1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAvL2ZpbmFsQ2xhc3NOYW1lICs9IGAke3ZhcmlhbnR9ICR7dmFyaWFudH0tJHtuZXh0Q2xhc3NOYW1lfWA7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBcIi5jb25jYXQodmFyaWFudCwgXCIgXCIpLmNvbmNhdCh2YXJpYW50LCBcIi1cIikuY29uY2F0KGlkQ2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGRpc2FibGVkXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy9jbGFzc25hbWUgdG8gb3ZlcnJpZGUgc3R5bGVzIGluIHN0eWxlc2hlZXRcbiAgICAgICAgaWYgKGNsYXNzTmFtZSAmJiBjbGFzc05hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9zb21lIHRleHQgaW4gY2xhc3NOYW1lXG4gICAgICAgIGlmICh0ZXh0RGVjb3JhdGlvbikge1xuICAgICAgICAgICAgdmFyIGZpbmFsVGV4dERlY29yYXRpb24gPSB0ZXh0RGVjb3JhdGlvbiAmJlxuICAgICAgICAgICAgICAgIFtcInVwcGVyY2FzZVwiLCBcImNhcGl0YWxpemVcIiwgXCJsb3dlcmNhc2VcIiwgXCJub25lXCJdLmluY2x1ZGVzKHRleHREZWNvcmF0aW9uID09PSBudWxsIHx8IHRleHREZWNvcmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0ZXh0RGVjb3JhdGlvbi50b0xvd2VyQ2FzZSgpKSA/IHRleHREZWNvcmF0aW9uLnRvTG93ZXJDYXNlKCkgOiBcInVwcGVyY2FzZVwiO1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KGZpbmFsVGV4dERlY29yYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHNldEZpbmFsQ2xhc3NOYW1lKGZpbmFsQ2xhc3NOYW1lKTtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghcmVzZXRTdHlsZXMpXG4gICAgICAgICAgICBoYW5kbGVJbnNlclN0eWxlKGlkQ2xhc3NOYW1lLCB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHREZWNvcmF0aW9uLCB0ZXh0Q29sb3IpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0RGVjb3JhdGlvbiwgdGV4dENvbG9yLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLCByZXNldFN0eWxlc10pO1xuICAgIHZhciByZW1vdmVTdHlsZSA9IGZ1bmN0aW9uIChzdHlsZUluamVjdGVkLCBpZFN0eWxlcykge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJEeW5hbWlDU1MgcmVtb3ZpbmdcIiwgc3R5bGVJbmplY3RlZCwgaWRTdHlsZXMpO1xuICAgICAgICBpZiAoc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgLyogY29uc3QgcmVzID0gICovIER5bmFtaUNTUy5yZW1vdmVTdHlsZVNoZWV0KGlkU3R5bGVzKTtcbiAgICAgICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkR5bmFtaUNTUyByZW1vdmluZyByZXNcIiwgcmVzKTtcbiAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgc2V0SWRTdHlsZXMoXCJcIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmVTdHlsZShzdHlsZUluamVjdGVkLCBpZFN0eWxlcyk7IH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtzdHlsZUluamVjdGVkLCBpZFN0eWxlc10pO1xuICAgIHJldHVybiBmaW5hbENsYXNzTmFtZTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4ubWF0ZXJpYWwtYnV0dG9uLXJvb3Qge1xcbiAgYm9yZGVyOiAwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBvdXRsaW5lOiAwO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbiAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uIHtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMsIGJveC1zaGFkb3cgMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMsIGJvcmRlciAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIDBtcztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBtaW4td2lkdGg6IDY0cHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzU7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wMjg1N2VtO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLnVwcGVyY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLmxvd2VyY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLmNhcGl0YWxpemUge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24uY29udGFpbmVkIHtcXG4gIHBhZGRpbmc6IDZweCAxNnB4O1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi5vdXRsaW5lZCB7XFxuICBwYWRkaW5nOiA1cHggMTVweDtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi50ZXh0IHtcXG4gIHBhZGRpbmc6IDVweCAxNXB4O1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLXJvb3QuY29udGFpbmVkOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uIHNwYW4ubWF0ZXJpYWwtYnV0dG9uLWxhYmVsIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogaW5oZXJpdDtcXG4gIGFsaWduLWl0ZW1zOiBpbmhlcml0O1xcbiAganVzdGlmeS1jb250ZW50OiBpbmhlcml0O1xcbn1cXG5cXG5zcGFuLnJpcHBsZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbiAgYW5pbWF0aW9uOiByaXBwbGUgNTAwbXMgbGluZWFyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHJpcHBsZSB7XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoNCk7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVxcbi5tYXRlcmlhbC1idXR0b24tcm9vdC5kaXNhYmxlZCB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XFxuICBwYWRkaW5nOiA2cHggMTZweDtcXG59XFxuLm1hdGVyaWFsLWJ1dHRvbi1yb290LmRpc2FibGVkLmRhcmttb2RlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xcbn1cXG5cXG4vKiBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkge1xcbiAgLm1hdGVyaWFsLWJ1dHRvbiB7XFxuICAgIG1pbi13aWR0aDogMzBweDtcXG4gICAgZm9udC1zaXplOiAwLjc4cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcXG4gIH1cXG4gIC5tYXRlcmlhbC1idXR0b24uY29udGFpbmVkIHtcXG4gICAgcGFkZGluZzogNHB4IDEzcHg7XFxuICB9XFxuICAubWF0ZXJpYWwtYnV0dG9uLm91dGxpbmVkIHtcXG4gICAgcGFkZGluZzogNHB4IDEycHg7XFxuICB9XFxufVxcbiAqL1wiKTtcblxudmFyIEZpbGVzVWlDb250ZXh0ID0gUmVhY3RfX2RlZmF1bHQuY3JlYXRlQ29udGV4dCh7fSk7XG5cbnZhciBNYXRlcmlhbEJ1dHRvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLCBocmVmID0gcHJvcHMuaHJlZiwgdGV4dERlY29yYXRpb24gPSBwcm9wcy50ZXh0VHJhbnNmb3JtLCBfYSA9IHByb3BzLnZhcmlhbnQsIHZhcmlhbnQgPSBfYSA9PT0gdm9pZCAwID8gXCJjb250YWluZWRcIiA6IF9hLCBfYiA9IHByb3BzLmNvbG9yLCBjb2xvciA9IF9iID09PSB2b2lkIDAgPyBcIiMxOTc2ZDJcIiA6IF9iLCBfYyA9IHByb3BzLnRleHRDb2xvciwgdGV4dENvbG9yID0gX2MgPT09IHZvaWQgMCA/IFwid2hpdGVcIiA6IF9jLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHN0eWxlID0gcHJvcHMuc3R5bGUsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCByZXNldFN0eWxlcyA9IHByb3BzLnJlc2V0U3R5bGVzLCBkaXNhYmxlUmlwcGxlID0gcHJvcHMuZGlzYWJsZVJpcHBsZSwgZGFya01vZGVQcm9wID0gcHJvcHMuZGFya01vZGUsIGlkID0gcHJvcHMuaWQsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImRpc2FibGVkXCIsIFwiaHJlZlwiLCBcInRleHRUcmFuc2Zvcm1cIiwgXCJ2YXJpYW50XCIsIFwiY29sb3JcIiwgXCJ0ZXh0Q29sb3JcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwib25DbGlja1wiLCBcInJlc2V0U3R5bGVzXCIsIFwiZGlzYWJsZVJpcHBsZVwiLCBcImRhcmtNb2RlXCIsIFwiaWRcIl0pO1xuICAgIC8vY29udGV4dFxuICAgIHZhciBkYXJrTW9kZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KS5kYXJrTW9kZTtcbiAgICB2YXIgZGFya01vZGUgPSBkYXJrTW9kZVByb3AgIT09IHVuZGVmaW5lZCA/IGRhcmtNb2RlUHJvcCA6IGRhcmtNb2RlQ29udGV4dDtcbiAgICAvLyAgY29uc3QgaWRDbGFzc05hbWUgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBpZENsYXNzTmFtZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gaWQgfHwgRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpICsgXCJcIjsgfSwgW2lkXSk7XG4gICAgdmFyIG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lID0gdXNlTWF0ZXJpYWxCdXR0b25DbGFzc05hbWUodmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsIHRleHREZWNvcmF0aW9uLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLnJlcGxhY2UoXCI6XCIsIFwiXCIpLnJlcGxhY2UoXCI6XCIsIFwiXCIpLCByZXNldFN0eWxlcyk7XG4gICAgdmFyIGZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZSA9IG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lICYmIGRhcmtNb2RlXG4gICAgICAgID8gYWRkQ2xhc3NOYW1lKG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lLCBcImRhcmttb2RlXCIpXG4gICAgICAgIDogbWF0ZXJpYWxCdXR0b25DbGFzc05hbWU7XG4gICAgLy9jb25zb2xlLmxvZyhcImZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZVwiLCBmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGUsIGRhcmtNb2RlKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy9yaXBwbGVcbiAgICAgICAgaWYgKCFkaXNhYmxlUmlwcGxlKVxuICAgICAgICAgICAgY3JlYXRlUmlwcGxlQnV0dG9uKGUsIHZhcmlhbnQsIGNvbG9yKTtcbiAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgIH1cbiAgICBpZiAoZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlICE9PSB1bmRlZmluZWQgfHwgcmVzZXRTdHlsZXMpXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KGhyZWYgPyBcImFcIiA6IFwiYnV0dG9uXCIsIF9fYXNzaWduJDEoeyBjbGFzc05hbWU6IHJlc2V0U3R5bGVzICYmIGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IGZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZSwgXCJkYXRhLXRlc3RpZFwiOiBocmVmID8gXCJkdWktYW5jaG9yXCIgOiBcImR1aS1idXR0b25cIiwgb25DbGljazogaGFuZGxlQ2xpY2ssIGhyZWY6IGhyZWYsIHN0eWxlOiBzdHlsZSwgY2hpbGRyZW46IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBcIm1hdGVyaWFsLWJ1dHRvbi1sYWJlbFwiIH0sIGNoaWxkcmVuKSwgZGlzYWJsZWQ6IGRpc2FibGVkIH0sIHJlc3QpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBcImxvYWRpbmcgc3R5ZXNcIik7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktYnV0dG9ucy1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBnYXA6IDEwcHg7XFxufVxcbi5maWxlcy11aS1idXR0b25zLWNvbnRhaW5lci50b3Age1xcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XFxufVxcbi5maWxlcy11aS1idXR0b25zLWNvbnRhaW5lci5ib3R0b20ge1xcbiAgcGFkZGluZy10b3A6IDEwcHg7XFxufVwiKTtcblxudmFyIERyb3B6b25lQnV0dG9ucyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjbGVhbkJ1dHRvbiA9IHByb3BzLmNsZWFuQnV0dG9uLCBhYm9ydEJ1dHRvbiA9IHByb3BzLmFib3J0QnV0dG9uLCBjb250YWluZXJDbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGNvbnRhaW5lclN0eWxlID0gcHJvcHMuc3R5bGUsIGRlbGV0ZUJ1dHRvbiA9IHByb3BzLmRlbGV0ZUJ1dHRvbiwgdXBsb2FkQnV0dG9uID0gcHJvcHMudXBsb2FkQnV0dG9uLCBcbiAgICAvL2xvY2FsaXphdGlvbixcbiAgICBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgb25DbGVhbiA9IHByb3BzLm9uQ2xlYW4sIG9uRGVsZXRlID0gcHJvcHMub25EZWxldGUsIG9uVXBsb2FkID0gcHJvcHMub25VcGxvYWQsIHRvcCA9IHByb3BzLnRvcCwgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZDtcbiAgICB2YXIgYWN0aW9uQnV0dG9uc0xpc3QgPSBbXG4gICAgICAgIGNsZWFuQnV0dG9uXG4gICAgICAgICAgICA/IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgY2xlYW5CdXR0b24pLCB7IGxhYmVsOiBcIkNsZWFuXCIsIG9uQ2xpY2s6IGNsZWFuQnV0dG9uLm9uQ2xpY2sgfHwgb25DbGVhbiB9KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVsZXRlQnV0dG9uXG4gICAgICAgICAgICA/IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgZGVsZXRlQnV0dG9uKSwgeyBsYWJlbDogXCJEZWxldGVcIiwgb25DbGljazogZGVsZXRlQnV0dG9uLm9uQ2xpY2sgfHwgb25EZWxldGUgfSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHVwbG9hZEJ1dHRvblxuICAgICAgICAgICAgPyBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIHVwbG9hZEJ1dHRvbiksIHsgbGFiZWw6IFwiVXBsb2FkXCIsIG9uQ2xpY2s6IHVwbG9hZEJ1dHRvbi5vbkNsaWNrIHx8IG9uVXBsb2FkIH0pIDogdW5kZWZpbmVkLFxuICAgICAgICBhYm9ydEJ1dHRvblxuICAgICAgICAgICAgPyBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIGFib3J0QnV0dG9uKSwgeyBsYWJlbDogXCJBYm9ydFwiLCBvbkNsaWNrOiBhYm9ydEJ1dHRvbi5vbkNsaWNrIHx8IG9uQWJvcnQgfSkgOiB1bmRlZmluZWQsXG4gICAgXS5maWx0ZXIoZnVuY3Rpb24gKGFiKSB7IHJldHVybiBhYiAhPT0gdW5kZWZpbmVkOyB9KTtcbiAgICB2YXIgdGFpbENsYXNzTmFtZSA9IFwiXCIuY29uY2F0KHRvcCA/IFwiIHRvcFwiIDogXCIgYm90dG9tXCIpO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShcImZpbGVzLXVpLWJ1dHRvbnMtY29udGFpbmVyXCIgKyB0YWlsQ2xhc3NOYW1lLCBjb250YWluZXJDbGFzc05hbWUpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBjb250YWluZXJTdHlsZSB9LCBhY3Rpb25CdXR0b25zTGlzdC5tYXAoZnVuY3Rpb24gKGFjdGlvbkJ1dHRvblByb3BzLCBpbmRleCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBhY3Rpb25CdXR0b25Qcm9wcy5jaGlsZHJlbiwgbGFiZWwgPSBhY3Rpb25CdXR0b25Qcm9wcy5sYWJlbCwgcmVzZXRTdHlsZXMgPSBhY3Rpb25CdXR0b25Qcm9wcy5yZXNldFN0eWxlcywgY2xhc3NOYW1lID0gYWN0aW9uQnV0dG9uUHJvcHMuY2xhc3NOYW1lLCBzdHlsZSA9IGFjdGlvbkJ1dHRvblByb3BzLnN0eWxlLCBvbkNsaWNrID0gYWN0aW9uQnV0dG9uUHJvcHMub25DbGljaztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE1hdGVyaWFsQnV0dG9uLCB7IGtleTogaW5kZXgsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIHJlc2V0U3R5bGVzOiByZXNldFN0eWxlcywgb25DbGljazogZnVuY3Rpb24gKGV2dCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGV2dCk7IH0sIGRpc2FibGVkOiBkaXNhYmxlZCB9LCBjaGlsZHJlbiB8fCBsYWJlbCkpO1xuICAgIH0pKSk7XG59O1xuXG52YXIgRHJvcExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9uRHJvcCA9IHByb3BzLm9uRHJvcCwgb25EcmFnTGVhdmUgPSBwcm9wcy5vbkRyYWdMZWF2ZSwgY2xhc3NOYW1lTGF5ZXIgPSBwcm9wcy5jbGFzc05hbWUsIG9wZW4gPSBwcm9wcy5vcGVuLCBzdHlsZSA9IHByb3BzLnN0eWxlO1xuICAgIC8vY29uc29sZS5sb2coXCJEcm9wTGF5ZXJcIiwgY2xhc3NOYW1lTGF5ZXIpO1xuICAgIC8qICBjb25zdCBvbkRyYWdFbmQgPSAoZXZ0OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgLy9jb25zb2xlLmxvZyhcIkRyYWcgZW5kZWRcIik7XG4gICAgICAgb25EcmFnTGVhdmU/LihldnQpO1xuICAgICB9OyAqL1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lTGF5ZXIsIG9uRHJhZ0xlYXZlOiBvbkRyYWdMZWF2ZSwgb25Ecm9wOiBvbkRyb3AsIFxuICAgICAgICAvL29uRHJhZ0VuZD17b25EcmFnRW5kfVxuICAgICAgICBzdHlsZTogc3R5bGUgfHwgeyBkaXNwbGF5OiBvcGVuID8gdW5kZWZpbmVkIDogXCJub25lXCIgfSB9KSk7XG59O1xuXG5mdW5jdGlvbiB1c2VEcm9wem9uZUNsYXNzTmFtZShkcm9wem9uZUlkLCBjbGFzc05hbWUsIFxuLy9pc0RyYWdnaW5nOiBib29sZWFuLFxuLy9oZWFkZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZSxcbi8vZm9vdGVyOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2UsXG5jb2xvciwgXG4vL2JvcmRlclJhZGl1czogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuYmFja2dyb3VuZCwgbWluSGVpZ2h0KSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVzZURyb3B6b25lQ2xhc3NOYW1lXCIsIGNsYXNzTmFtZSwgaXNEcmFnZ2luZywgaGVhZGVyLCBmb290ZXIsIGNvbG9yLCBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpO1xuICAgIHZhciBmaW5hbERyb3B6b25lSWQgPSAoY29sb3IgPT09IHVuZGVmaW5lZCAmJiBiYWNrZ3JvdW5kID09PSB1bmRlZmluZWQgJiYgbWluSGVpZ2h0ID09PSB1bmRlZmluZWQpID8gXCJkZWZhdWx0XCIgOiBkcm9wem9uZUlkLnJlcGxhY2UoXCI6XCIsIFwiX1wiKS5yZXBsYWNlKFwiOlwiLCBcIl9cIik7XG4gICAgdmFyIGJhc2VDbGFzc05hbWUgPSBcImZ1aS1kcm9wem9uZS1yb290IGZ1aS1kcm9wem9uZS1ib3JkZXJcIjtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgaWRTdHlsZXMgPSBfYVswXSwgc2V0SWRTdHlsZXMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHN0eWxlSW5qZWN0ZWQgPSBfYlswXSwgc2V0U3R5bGVJbmplY3RlZCA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lID0gX2NbMF0sIHNldEZpbmFsQ2xhc3NOYW1lID0gX2NbMV07XG4gICAgdmFyIF9kID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWVIZWFkZXIgPSBfZFswXSwgc2V0RmluYWxDbGFzc05hbWVIZWFkZXIgPSBfZFsxXTtcbiAgICB2YXIgX2UgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBmaW5hbENsYXNzTmFtZUZvb3RlciA9IF9lWzBdLCBzZXRGaW5hbENsYXNzTmFtZUZvb3RlciA9IF9lWzFdO1xuICAgIHZhciBfZiA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lRGlzYWJsZWQgPSBfZlswXSwgc2V0RmluYWxDbGFzc05hbWVEaXNhYmxlZCA9IF9mWzFdO1xuICAgIC8vY29uc3QgW29mZnNldCwgc2V0T2Zmc2V0XSA9IFJlYWN0LnVzZVN0YXRlPG51bWJlcj4oMCk7XG4gICAgdmFyIG1ha2VDbGFzc05hbWUgPSBmdW5jdGlvbiAoY2xhc3NOYW1lLCBcbiAgICAvL2lzRHJhZ2dpbmc6IGJvb2xlYW4sXG4gICAgLy8gb2Zmc2V0OiBudW1iZXIsXG4gICAgY29sb3IsIFxuICAgIC8vYm9yZGVyUmFkaXVzOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0KSB7XG4gICAgICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGJhc2VDbGFzc05hbWU7XG4gICAgICAgIC8vIGJldHRlciB0byBjb21lIGJhY2sgdG8gdGhlIGN1c3RvbSBzdHlsZXNoZWV0IGZvciBlYWNoIGRyb3B6b25lIHdpdGggdGhlIHVuaXF1ZSBpZFxuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IG1ha2VEeW5hbWljRHJvcHpvbmVTdHlsZVNoZWV0KGZpbmFsRHJvcHpvbmVJZCwgXG4gICAgICAgIC8vIG9mZnNldCxcbiAgICAgICAgLy9pc0RyYWdnaW5nLFxuICAgICAgICBjb2xvciwgYmFja2dyb3VuZCwgbWluSGVpZ2h0KTtcbiAgICAgICAgdmFyIGlkU3R5bGUgPSBcIlwiO1xuICAgICAgICBpZiAoIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgIHNldElkU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpXG4gICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vYWxyZWFkeSBhIHN0eWxlc2hlZXQgYXNzb2NpYXRlZFxuICAgICAgICAgICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0KGlkU3R5bGVzLCBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGZpbGVzLXVpLWRyb3B6b25lLWV4dHJhLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpO1xuICAgICAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSA9IFwiXCIuY29uY2F0KGZpbmFsQ2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lID0gYCR7ZmluYWxDbGFzc05hbWV9IGZ1aS1oaWRlLWJvcmRlcmA7XG4gICAgICAgIH0gKi9cbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWUoZmluYWxDbGFzc05hbWUpO1xuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZUhlYWRlcihcImZpbGVzLXVpLWhlYWRlci1ib3JkZXItcmQtXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCkpO1xuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZUZvb3RlcihcImZpbGVzLXVpLWZvb3Rlci1ib3JkZXItcmQtdG9wLWJnLWNvbG9yLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpKTtcbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWVEaXNhYmxlZChcImZpbGVzLXVpLWRpc2FibGVkLWxheWVyLWNvbG9yLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpKTtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1ha2VDbGFzc05hbWUoY2xhc3NOYW1lLCBcbiAgICAgICAgLy9pc0RyYWdnaW5nLFxuICAgICAgICAvL29mZnNldCwgXG4gICAgICAgIGNvbG9yLCBcbiAgICAgICAgLy8gYm9yZGVyUmFkaXVzLCBcbiAgICAgICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2NsYXNzTmFtZSxcbiAgICAgICAgLy9pc0RyYWdnaW5nLFxuICAgICAgICAvLyBvZmZzZXQsIFxuICAgICAgICBjb2xvcixcbiAgICAgICAgLy9ib3JkZXJSYWRpdXMsIFxuICAgICAgICBiYWNrZ3JvdW5kLCBtaW5IZWlnaHRdKTtcbiAgICByZXR1cm4gW2ZpbmFsQ2xhc3NOYW1lLCBmaW5hbENsYXNzTmFtZUhlYWRlciwgZmluYWxDbGFzc05hbWVGb290ZXIsIGZpbmFsQ2xhc3NOYW1lRGlzYWJsZWRdO1xufVxudmFyIG1ha2VEeW5hbWljRHJvcHpvbmVTdHlsZVNoZWV0ID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIFxuLy8gb2Zmc2V0OiBudW1iZXIsXG4vL2lzRHJhZ2dpbmc6IGJvb2xlYW4sXG5jb2xvciwgYmFja2dyb3VuZCwgbWluSGVpZ2h0KSB7XG4gICAgdmFyIHJvb3RDb2xvckJvcmRlclN0eWxlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktZHJvcHpvbmUtZXh0cmEtXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IGRhc2hlZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGJhY2tncm91bmQsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IHR5cGVvZiBtaW5IZWlnaHQgPT09IFwibnVtYmVyXCIgPyBcIlwiLmNvbmNhdChtaW5IZWlnaHQsIFwicHhcIikgOiBtaW5IZWlnaHQsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB2YXIgcm9vdENvbG9yQm9yZGVyU3R5bGVIaWRlQm9yZGVyID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktcm9vdC1ib3JkZXItaGlkZVwiLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHZhciBoZWFkZXJCb3JkZXJTdHlsZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWhlYWRlci1ib3JkZXItcmQtXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgXCJib3JkZXItdG9wLWxlZnQtcmFkaXVzXCI6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIFwiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXNcIjogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgdmFyIGZvb3RlckJvcmRlclN0eWxlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktZm9vdGVyLWJvcmRlci1yZC10b3AtYmctY29sb3ItXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgXCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzXCI6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIFwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXNcIjogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjEyOSksXG4gICAgICAgICAgICBib3JkZXJUb3A6IFwiMXB4IGRvdHRlZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHZhciBkaXNhYmxlZExheWVyU3R5bGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmaWxlcy11aS1kaXNhYmxlZC1sYXllci1jb2xvci1cIi5jb25jYXQoZHJvcHpvbmVJZCksXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC4zOCksXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBzaGVldFJ1bGVzID0gW1xuICAgICAgICByb290Q29sb3JCb3JkZXJTdHlsZSxcbiAgICAgICAgcm9vdENvbG9yQm9yZGVyU3R5bGVIaWRlQm9yZGVyLFxuICAgICAgICBoZWFkZXJCb3JkZXJTdHlsZSxcbiAgICAgICAgZm9vdGVyQm9yZGVyU3R5bGUsXG4gICAgICAgIGRpc2FibGVkTGF5ZXJTdHlsZVxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IFwiZmlsZXMtZHJvcHpvbmUtdWktc3R5bGUtaWQtXCIgKyBkcm9wem9uZUlkLFxuICAgICAgICBzaGVldFJ1bGVzOiBzaGVldFJ1bGVzXG4gICAgfTtcbn07XG5cbi8qKlxuICogRWZmZWN0IGZvciBrZWVwaW5nIHRyYWNrIG9mIGNoYW5nZXNcbiAqIHVwZGF0ZSBmaWxlcyB3aGVuIHZhbHVlIGNoYW5nZXNcbiAqIGFsc28gdXBkYXRlcyB0aGUgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gKiBXaGVuIGBpc1VwbG9hZGluZ2AgaXMgdHJ1ZSwgaXQgb25seSB1cGRhdGVzIHdoZW4gdmFsdWUgYW5kIGFyck9mRXh0RmlsZXNcbiAqIGhhdmUgc2FtZSBsZW5naHQuIEFsc28sIG9ubHkgdXBkYXRlcyB0aGUgdXBsb2FkU3RhdHVzIGF0dHJpYnV0ZVxuICogZnJvbSBcInByZXBhcmluZ1wiLCB0byB1bmRlZmluZWQgd2hlbiBvbkNhbmNlbCgpIG1ldGhvZCBpcyBjYWxsZWQgaW5cbiAqIEZpbGVJdGVtIGNvbXBvbmVudFxuICogQHBhcmFtIGRyb3B6b25lSWQgdGhlIGFzb2NpYXRlZCBkcm9wem9uZUlkIGZvciB0aGUgY29ycmVzcG9uZGluZyBhcnJheSBvZiBFeHRGaWxlcyBpbiBjYXNlIG9mIG11bHRpcGxlIGRyb3B6b25lc1xuICogQHBhcmFtIHZhbHVlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBsaXN0IG9mIEZpbGVzIGZyb20gcHJvcHNcbiAqIEBwYXJhbSBpc1VwbG9hZGluZ1xuICogQHJldHVybnMgdGhlIGxvY2FsIGxpc3Qgb2YgRmlsZXNcbiAqL1xudmFyIHVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIHZhbHVlLCBpc1VwbG9hZGluZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIHZhbGlkYXRvciwgbG9jYWxpemF0aW9uLCB2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgIC8vY29uc29sZS5sb2coXCJpbmNvbW1pbmcgZXh0ZmlsZXMgZmlsZXVwZGF0ZXIgdmFsdWVcIiwgdmFsdWUubWFwKHggPT4geC51cGxvYWRTdGF0dXMpKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiRmlsZUxpc3RVcGRhdGVyXCIsIGRyb3B6b25lSWQsIHZhbHVlLCBpc1VwbG9hZGluZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIHZhbGlkYXRlRmlsZXNGbGFnKTtcbiAgICAvL3N0YXRlIGZvciBtYW5hZ2luZyB0aGUgZmlsZXMgbG9jYWxseVxuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFtdKSwgbG9jYWxGaWxlcyA9IF9hWzBdLCBzZXRMb2NhbEZpbGVzID0gX2FbMV07XG4gICAgLy8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoMCksIG51bWJlck9mVmFsaWRGaWxlcyA9IF9iWzBdLCBzZXROdW1iZXJPZlZhbGlkRmlsZXMgPSBfYlsxXTtcbiAgICAvL0RldGVjdCBjaGFuZ2VzIGluIHRoZSBmaWxlIGl0ZW0gcHJvcHMgd2hlbiB1cGxvYWQgc3RhcnRlZFxuICAgIC8vbW9zdGx5IGZvciBkZXRlY3RpbmcgXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyck9mRXh0RmlsZXMgPSBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsdWUgY2hhbmdlZFwiLCBpc1VwbG9hZGluZywgdmFsdWUubWFwKEYgPT4gRi51cGxvYWRTdGF0dXMpLCBkcm9wem9uZUlkKTtcbiAgICAgICAgLy8gLy9jb25zb2xlLmxvZyhcInZhbHVlIGNoYW5nZWRcIiwgdmFsdWUubWFwKEYgPT4gRi51cGxvYWRTdGF0dXMpKTtcbiAgICAgICAgaWYgKCFpc1VwbG9hZGluZykge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyB3aGVuIGlzIHVwbG9hZGluZ1xuICAgICAgICAgICAgaWYgKGFyck9mRXh0RmlsZXMpIHtcbiAgICAgICAgICAgICAgICAvL2xlbmdodCBvZiB0aGUgbmV3IGFyciBjYW4gYmUgZXF1YWwgb3IgbG93ZXJcbiAgICAgICAgICAgICAgICAvL3doZW4gbG93ZXIsIGl0IG1lYW5zIGEgZmlsZSB3YXMgZGVsZXRlZCwgaXQgd2lsbCBiZSByZW1vdmVkIG9ubHkgaWYgd2FzIG5vdCB1cGxvYWRlZFxuICAgICAgICAgICAgICAgIC8vd2hlbiBzYW1lIGxlbmdodCBpdCBtZWFucyB0aGF0IGEgZmlsZSBjb3VsZCBiZVxuICAgICAgICAgICAgICAgIC8vbm8gbWF0aGVyIHRoZSBzaXplLCBpdCB3aWxsIHNlYXJjaCBmb3IgdGhlIG1pc3NpbmcgYW5kIHRoZSBzdGF0dXMgdGhhdCBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9pZiB0aGUgY3VycmVudCBFeHQgZmlsZSBpcyBub3QgcHJlc2VudCBhbnltb3JlXG4gICAgICAgICAgICAgICAgICAgIC8vYWRkIGRlbGV0ZWQgZmxhZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXh0RmlsZUluZGV4ID0gdmFsdWUuZmluZEluZGV4KGZ1bmN0aW9uIChleHRGaWxlKSB7IHJldHVybiBleHRGaWxlLmlkID09PSBleHRGaWxlSW5zdGFuY2UuaWQ7IH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0RmlsZUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSA9IHsgZGVsZXRlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImV4dEZpbGVVcGRhdGVyIG5vdCBmb3VuZFwiLCBleHRGaWxlSW5zdGFuY2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJFeHRGaWxlT2JqID0gdmFsdWVbZXh0RmlsZUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE5leHRVcGxvYWRTdGF0dXMoZXh0RmlsZUluc3RhbmNlLCBjdXJyRXh0RmlsZU9iaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvKmlmIChhcnJPZkV4dEZpbGVzLmxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyT2ZFeHRGaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVbaV0udXBsb2FkU3RhdHVzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlciBvbkNhbmNlbCBpXCIsIGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc1tpXS51cGxvYWRTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2Ryb3B6b25lSWQsIHZhbHVlLFxuICAgICAgICAvLyBpc1VwbG9hZGluZ1xuICAgIF0pO1xuICAgIC8vRGV0ZWN0IGNoYW5nZXMgaW4gdmFsaWRhdGlvbiBwcm9wcyBmb3IgcmUtdmFsaWRhdGluZyBmaWxlc1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMobG9jYWxGaWxlcy5tYXAoZnVuY3Rpb24gKEYpIHsgcmV0dXJuIF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgRiksIHsgdmFsaWQ6IHVuZGVmaW5lZCB9KTsgfSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICB2YXIgdmFsaWRhdGVkRXh0RmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGxvY2FsRmlsZXMsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBudW1iZXJPZlZhbGlkRmlsZXMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIHNldExvY2FsRmlsZXModmFsaWRhdGVkRXh0RmlsZUxpc3QpO1xuICAgICAgICAvL21pc3NpbmcgZGVwZW5kZW5jaWUgbG9jYWxGaWxlcyB3YXMgbm90IGFkZGVkIGJ5IHB1cnBvc2VcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3ZhbGlkYXRlRmlsZXNGbGFnLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgbG9jYWxpemF0aW9uXSk7XG4gICAgLy8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgLy8gdXBkYXRlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgICAgICAgICAgc2V0TnVtYmVyT2ZWYWxpZEZpbGVzKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnZhbGlkOyB9KS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TnVtYmVyT2ZWYWxpZEZpbGVzKGxvY2FsRmlsZXMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH0sIFtsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzRmxhZ10pO1xuICAgIHJldHVybiBbbG9jYWxGaWxlcywgbnVtYmVyT2ZWYWxpZEZpbGVzLCBzZXRMb2NhbEZpbGVzXTtcbn07XG5cbnZhciB1c2VGYWtlUHJvZ3Jlc3MgPSBmdW5jdGlvbiAodGltZSkge1xuICAgIGlmICh0aW1lID09PSB2b2lkIDApIHsgdGltZSA9IDE1MDA7IH1cbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSgyOCksIHByb2dyZXNzID0gX2FbMF0sIHNldFByb2dyZXNzID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVwZGF0ZVByb2dyZXNzID0gZnVuY3Rpb24gKGN1cnJQcm9ncmVzcykge1xuICAgICAgICAgICAgaWYgKGN1cnJQcm9ncmVzcyA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gZ2V0UmFuZG9tSW50KDUsIDI0KTtcbiAgICAgICAgICAgIHZhciBuZXdQcm9ncmVzcyA9IGN1cnJQcm9ncmVzcyArIG9mZnNldDtcbiAgICAgICAgICAgIGlmIChuZXdQcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3UHJvZ3Jlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfbXlJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFByb2dyZXNzKGZ1bmN0aW9uIChfcHJvZ3Jlc3MpIHsgcmV0dXJuIHVwZGF0ZVByb2dyZXNzKF9wcm9ncmVzcyk7IH0pO1xuICAgICAgICB9LCB0aW1lKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZUZha2VQcm9ncmVzcyBTRVQgaW50ZXJ2YWxcIiwgX215SW50ZXJ2YWwpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZUZha2VQcm9ncmVzcyBDTEVBUiBpbnRlcnZhbFwiLCBfbXlJbnRlcnZhbCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF9teUludGVydmFsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW10pO1xuICAgIHJldHVybiBwcm9ncmVzcztcbn07XG5cbnZhciBtYWtlRHJvcExheWVyRHluYW1pY1N0eWxlID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGNvbG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IFwiZmlsZXMtdWktZHJvcC1sYXllci1zdHlsZS1pZC1cIiArIGRyb3B6b25lSWQsXG4gICAgICAgIHNoZWV0UnVsZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZHJvcHpvbmUtbGF5ZXItXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjQpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIwJVwiLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMCVcIixcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyMCxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjBweCBkYXNoZWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvcikpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImRyb3B6b25lLWxheWVyLWRyYWdcIixcbiAgICAgICAgICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBcIjJweFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICB9O1xufTtcblxuLy9jb25zdCBCQVNFX0RST1BfTEFZRVJfU1RZTEU6IHN0cmluZyA9IFwiZmlsZXMtdWktc3R5bGVzLWRyb3AtbGF5ZXJcIjsgXG4vKipcbiAqXG4gKiBAcGFyYW0gY29sb3JcbiAqIEBwYXJhbSBpc0RyYWdnaW5nXG4gKiBAcGFyYW0gbWFrZUNsYXNzTmFtZSB3aGV0aGVyIHRvIG1ha2UgdGhlIGNsYXNzbmFtZSBvciBub3RcbiAqIEByZXR1cm5zIHRoZSBjbGFzc25hbWUgZm9yIGxheWVyXG4gKi9cbnZhciB1c2VEcm9wTGF5ZXJDbGFzc05hbWUgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgY29sb3IsIFxuLy9pc0RyYWdnaW5nPzogYm9vbGVhbixcbm1ha2VDbGFzc05hbWUpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgaWRTdHlsZXMgPSBfYVswXSwgc2V0SWRTdHlsZXMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHN0eWxlSW5qZWN0ZWQgPSBfYlswXSwgc2V0U3R5bGVJbmplY3RlZCA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBjbGFzc05hbWVDcmVhdGVkID0gX2NbMF0sIHNldENsYXNzTmFtZUNyZWF0ZWQgPSBfY1sxXTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUlkID0gKGNvbG9yID09PSB1bmRlZmluZWQpID8gXCJkZWZhdWx0XCIgOiBkcm9wem9uZUlkLnJlcGxhY2UoXCI6XCIsIFwiX1wiKS5yZXBsYWNlKFwiOlwiLCBcIl9cIik7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwidXNlRHJvcExheWVyQ2xhc3NOYW1lXCIsIGNvbG9yLCBpc0RyYWdnaW5nLCBtYWtlQ2xhc3NOYW1lKTtcbiAgICAgICAgdmFyIGhhbmRsZUluc2VyU3R5bGUgPSBmdW5jdGlvbiAoY29sb3IpIHtcbiAgICAgICAgICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IFwiXCI7XG4gICAgICAgICAgICB2YXIgc3R5bGVTaGVldCA9IG1ha2VEcm9wTGF5ZXJEeW5hbWljU3R5bGUoZmluYWxEcm9wem9uZUlkLCBjb2xvclxuICAgICAgICAgICAgLy9pc0RyYWdnaW5nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIGlkU3R5bGUgPSBcIlwiO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZURyb3BMYXllckNsYXNzTmFtZSBoYW5kbGVJbnNlclN0eWxlXCIsIGNvbG9yLCBzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgIGlmIChmaW5hbERyb3B6b25lSWQgPT09IFwiZGVmYXVsdFwiICYmICFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgLy9jaGVjayBpZiBhbHJlYWR5IGluc2VydGVkXG4gICAgICAgICAgICAgICAgaWYgKER5bmFtaUNTUy5leGlzdFN0eWxlU2hlZXQoXCJmaWxlcy11aS1kcm9wLWxheWVyLXN0eWxlLWlkLVwiICsgZmluYWxEcm9wem9uZUlkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJZFN0eWxlcyhcImZpbGVzLXVpLWRyb3AtbGF5ZXItc3R5bGUtaWQtXCIgKyBmaW5hbERyb3B6b25lSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJZFN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgICAgICBzZXRJZFN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBhIHN0eWxlc2hlZXQgYXNzb2NpYXRlZFxuICAgICAgICAgICAgICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldChpZFN0eWxlcywgc3R5bGVTaGVldC5zaGVldFJ1bGVzIHx8IFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiZHJvcHpvbmUtbGF5ZXItXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCk7XG4gICAgICAgICAgICAvKiAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gYCBkcm9wem9uZS1sYXllci1kcmFnYDtcbiAgICAgICAgICAgICB9ICovXG4gICAgICAgICAgICBzZXRDbGFzc05hbWVDcmVhdGVkKGZpbmFsQ2xhc3NOYW1lKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiPT5cIiwgaXNEcmFnZ2luZyk7XG4gICAgICAgIGlmIChtYWtlQ2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBoYW5kbGVJbnNlclN0eWxlKGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbY29sb3IsXG4gICAgICAgIC8vIGlzRHJhZ2dpbmcsXG4gICAgICAgIG1ha2VDbGFzc05hbWVdKTtcbiAgICByZXR1cm4gY2xhc3NOYW1lQ3JlYXRlZDtcbn07XG5cbi8qKlxuICogSW5pdGlhbGl6ZXIgaG9vayBmb3IgRmlsZUl0ZW1OZW9cbiAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIE9iamVjdFxuICogQHBhcmFtIHZhbGlkIFdoZXRoZXIgdGhlIGZpbGUgaXMgdmFsaWQsIG5vdCB2YWxpZCBvciBub3Qgc2V0XG4gKiBAcGFyYW0gcHJldmlldyBXaGV0aGVyIHRvIHNob3cgYSBwcmV2aWV3IG9uIEZpbGVJdGVtXG4gKiBAcGFyYW0gaW1hZ2VVcmwgVGhlIGltYWdlIHVybFxuICogQHBhcmFtIHhociB0aGUgeGhyIG9iamVjdFxuICogQHBhcmFtIHByb2dyZXNzIHRoZSBjdXJyZW50IHByb2dyZXNzIGdpdmVuIGJ5IHByb3BzXG4gKiBAcmV0dXJucyBhbiBhcnJheSB0aHRhIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBbaXNJbWFnZSwgaXNWaWRlbywgdXJsLCBpbWFnZVNvdXJjZSwgbG9jYWxQcm9ncmVzc11cbiAqL1xudmFyIHVzZUZpbGVNb3NhaWNJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmaWxlLCBuYW1lLCB0eXBlLCB2YWxpZCwgcHJldmlldywgaW1hZ2VVcmwsIHZpZGVvVXJsLCBjdXN0b21JY29ucywgeGhyKSB7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc0ltYWdlID0gX2FbMF0sIHNldElzSW1hZ2UgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzVmlkZW8gPSBfYlswXSwgc2V0SXNWaWRlbyA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCB1cmwgPSBfY1swXSwgc2V0VXJsID0gX2NbMV07XG4gICAgdmFyIF9kID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgaW1hZ2VTb3VyY2UgPSBfZFswXSwgc2V0SW1hZ2VTb3VyY2UgPSBfZFsxXTtcbiAgICB2YXIgX2UgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCB2aWRlb1NvdXJjZSA9IF9lWzBdLCBzZXRWaWRlb1NvdXJjZSA9IF9lWzFdO1xuICAgIHZhciBfZiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNSZWFkeSA9IF9mWzBdLCBzZXRJc1JlYWR5ID0gX2ZbMV07XG4gICAgdmFyIGluaXQgPSBmdW5jdGlvbiAoZmlsZSwgbmFtZSwgdHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgY3VzdG9tSWNvbnMsIHhociwgcHJvZ3Jlc3MpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVybCwgcmVzcG9uc2UsIHJlc3BvbnNlXzE7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJpbml0XCIsIGZpbGUsIG5hbWUsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGUgJiYgKCFuYW1lICYmICF0eXBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKGZpbGUgPyBnZXRVUkxGaWxlSWNvKGZpbGUsIGN1c3RvbUljb25zKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRVUkxGaWxlSWNvRnJvbU5hbWVBbmRUeXBlKG5hbWUsIHR5cGUsIGN1c3RvbUljb25zKSkudXJsO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaW5pdFwiLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRVcmwodXJsKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaW1hZ2VVcmwgJiYgdmlkZW9VcmwpKSByZXR1cm4gWzMgLypicmVhayovLCAxXTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNWaWRlbyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW1hZ2VTb3VyY2UoaW1hZ2VVcmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZSh2aWRlb1VybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaW1hZ2VVcmwpIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0ltYWdlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZVNvdXJjZShpbWFnZVVybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlkZW9VcmwpIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1ZpZGVvKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZSh2aWRlb1VybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBnZXRIZWFkZXJBbmRUYWlsKGZpbGUsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0ltYWdlKHJlc3BvbnNlWzBdID09PSBcImltYWdlXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoW1wibXA0XCIsIFwib2dnXCIsIFwid2VibVwiXS5pbmNsdWRlcyhyZXNwb25zZVsxXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1ZpZGVvKHJlc3BvbnNlWzBdID09PSBcInZpZGVvXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShwcmV2aWV3ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsaWQgfHwgdHlwZW9mIHZhbGlkID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbGlkID09PSBudWxsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VbMF0gPT09IFwiaW1hZ2VcIikpIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZV8xID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGUpIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCByZWFkQXNEYXRhVVJMKGZpbGUpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlXzEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZV8xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZVNvdXJjZShyZXNwb25zZV8xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDU7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBzZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIC8vLy8vLyAgIENMRUFOIFVQXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5pdChmaWxlLCBuYW1lLCB0eXBlLCB2YWxpZCwgcHJldmlldyB8fCBmYWxzZSwgaW1hZ2VVcmwsIHZpZGVvVXJsLCBjdXN0b21JY29ucyk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRJbWFnZVNvdXJjZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgc2V0SXNJbWFnZShmYWxzZSk7XG4gICAgICAgICAgICBzZXRJc1ZpZGVvKGZhbHNlKTtcbiAgICAgICAgICAgIHNldElzUmVhZHkoZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbZmlsZSwgbmFtZSwgdHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgY3VzdG9tSWNvbnNdKTtcbiAgICByZXR1cm4gW2lzUmVhZHksIGlzSW1hZ2UsIGlzVmlkZW8sIHVybCwgaW1hZ2VTb3VyY2UsIHZpZGVvU291cmNlXTtcbn07XG4vKiBleHBvcnQgY29uc3QgaWRlbnRpZnlGaWxlU291cmNlID0gKGZpbGU6IEZpbGUgfCB1bmRlZmluZWQsIG5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZykgPT4ge1xuICAgIGlmKCFmaWxlKXtcblxuICAgIH1cbn0gKi9cbnZhciBnZXRIZWFkZXJBbmRUYWlsID0gZnVuY3Rpb24gKGZpbGUsIHR5cGUpIHtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBpZiAoZmlsZS50eXBlKSB7XG4gICAgICAgICAgICB2YXIgc3BsaXR0ZWRUeXBlID0gZmlsZS50eXBlLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIHJldHVybiBbc3BsaXR0ZWRUeXBlWzBdLCBzcGxpdHRlZFR5cGVbMV1dO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtcIm9jdGV0XCIsIFwib2N0ZXRcIl07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBzcGxpdHRlZFR5cGUgPSB0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHR5cGUuc3BsaXQoXCIvXCIpO1xuICAgICAgICBpZiAoc3BsaXR0ZWRUeXBlICYmIHNwbGl0dGVkVHlwZS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW3NwbGl0dGVkVHlwZVswXSwgc3BsaXR0ZWRUeXBlWzFdXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXCJvY3RldFwiLCBcIm9jdGV0XCJdO1xuICAgICAgICB9XG4gICAgfVxufTtcblxudmFyIHVzZUlzVXBsb2FkaW5nID0gZnVuY3Rpb24gKHVwbG9hZFN0YXR1cykge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNVcGxvYWRpbmcgPSBfYVswXSwgc2V0SXNVcGxvYWRpbmcgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZSh1cGxvYWRTdGF0dXMpLCBsYXN0VXBsb2FkU3RhdHVzID0gX2JbMF0sIHNldExhc3RVcGxvYWRTdGF0dXMgPSBfYlsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRMYXN0VXBsb2FkU3RhdHVzKHVwbG9hZFN0YXR1cyk7XG4gICAgICAgIGlmIChbXCJ1cGxvYWRpbmdcIiwgXCJwcmVwYXJpbmdcIl0uaW5jbHVkZXMobGFzdFVwbG9hZFN0YXR1cyB8fCBcIlwiKSAmJlxuICAgICAgICAgICAgW1wic3VjY2Vzc1wiLCBcImVycm9yXCIsIFwiYWJvcnRlZFwiXS5pbmNsdWRlcyh1cGxvYWRTdGF0dXMgfHwgXCJcIikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sIDM1MDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9iYXNlIGNvbXBhcmlzb25cbiAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKHVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIiB8fCB1cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFt1cGxvYWRTdGF0dXNdKTtcbiAgICByZXR1cm4gaXNVcGxvYWRpbmc7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBwcm9ncmVzcyB0aGUgcHJvZ3Jlc3MgZ2l2ZW4gYXMgYSBwcm9wIHRvIHRoZSBjb21wb25lbnRcbiAqIEBwYXJhbSB4aHIgdGhlIFhNTEh0dHBSZXF1ZXN0IG9iamVjdCBmb3IgQUpBWCBvcGVyYXRpb25zXG4gKiBAcmV0dXJucyB0aGUgcHJvZ3Jlc3MgdG8gYmUgc2hvd24gaW4gdGhlIGNvbXBvbmVudFxuICovXG52YXIgdXNlUHJvZ3Jlc3MgPSBmdW5jdGlvbiAocHJvZ3Jlc3MsIHhocikge1xuICAgIC8vY29uc29sZS5sb2coXCJnZXRQcm9ncmVzc1wiLCBwcm9ncmVzcywgeGhyKTtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBsb2NhbFByb2dyZXNzID0gX2FbMF0sIHNldExvY2FsUHJvZ3Jlc3MgPSBfYVsxXTtcbiAgICBpZiAocHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobG9jYWxQcm9ncmVzcyAhPT0gcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHNldExvY2FsUHJvZ3Jlc3MocHJvZ3Jlc3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoeGhyICE9PSB1bmRlZmluZWQgJiYgeGhyICE9PSBudWxsICYmIHhoci51cGxvYWQub25wcm9ncmVzcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8geGhyIHdhcyBnaXZlbiBidXQgaXQgd2FzIG5vdCBpbml0aWFsaXplZCB0aGUgYG9ucHJvZ3Jlc3NgIGV2ZW50XG4gICAgICAgICAgICB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ2V0UHJvZ3Jlc3MgcHJvZ3Jlc3NcIiwgcHJvZ3Jlc3MsIChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAxMDApO1xuICAgICAgICAgICAgICAgIHNldExvY2FsUHJvZ3Jlc3MoKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqIDEwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy9pbml0aWFsIHByb2dyZXNzIHZhbHVlIHNldCB0byAwXG4gICAgICAgICAgICBzZXRMb2NhbFByb2dyZXNzKDApO1xuICAgICAgICB9XG4gICAgICAgIC8vcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsUHJvZ3Jlc3M7XG59O1xuXG4vL2ltcG9ydCB7IHByaW50X21hbmFnZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vdXRpbHNcIjtcbi8qKlxuICpcbiAqIERlbW9zOlxuICpcbiAqIC0gW0Ryb3B6b25lXShodHRwczovL3d3dy5maWxlcy11aS5jb20vY29tcG9uZW50cy9kcm9wem9uZSlcbiAqXG4gKiBBUEk6XG4gKlxuICogLSBbRHJvcHpvbmUgQVBJXShodHRwczovL3d3dy5maWxlcy11aS5jb20vYXBpL2Ryb3B6b25lLylcbiAqL1xudmFyIERyb3B6b25lID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gbWVyZ2VQcm9wcyhwcm9wcywgZGVmYXVsdERyb3pvbmVQcm9wcyksIFxuICAgIC8vYmFzaWNcbiAgICBvbkNoYW5nZSA9IF9hLm9uQ2hhbmdlLCBfYiA9IF9hLnZhbHVlLCB2YWx1ZSA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBcbiAgICAvL3ZhbGlkYXRpb25cbiAgICBhY2NlcHQgPSBfYS5hY2NlcHQsIG1heEZpbGVTaXplID0gX2EubWF4RmlsZVNpemUsIG1heEZpbGVzID0gX2EubWF4RmlsZXMsIHZhbGlkYXRvciA9IF9hLnZhbGlkYXRvciwgY2xlYW5GaWxlcyA9IF9hLmNsZWFuRmlsZXMsIG9uQ2xlYW4gPSBfYS5vbkNsZWFuLCBhdXRvQ2xlYW4gPSBfYS5hdXRvQ2xlYW4sIFxuICAgIC8vdXBsb2FkaW5nXG4gICAgdXBsb2FkQ29uZmlnID0gX2EudXBsb2FkQ29uZmlnLCBmYWtlVXBsb2FkID0gX2EuZmFrZVVwbG9hZCwgb25VcGxvYWRTdGFydCA9IF9hLm9uVXBsb2FkU3RhcnQsIG9uVXBsb2FkRmluaXNoID0gX2Eub25VcGxvYWRGaW5pc2gsIFxuICAgIC8vc3R5bGluZ1xuICAgIGJhY2tncm91bmQgPSBfYS5iYWNrZ3JvdW5kLCBjb2xvciA9IF9hLmNvbG9yLCBtaW5IZWlnaHQgPSBfYS5taW5IZWlnaHQsIHN0eWxlID0gX2Euc3R5bGUsIFxuICAgIC8vdGV4dENvbG9yLFxuICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSwgXG4gICAgLy9sYWJlbFxuICAgIGxhYmVsID0gX2EubGFiZWwsIFxuICAgIC8vbG9jYWxpemF0aW9uXG4gICAgbG9jUHJvcHMgPSBfYS5sb2NhbGl6YXRpb24sIFxuICAgIC8vcmlwcGxlXG4gICAgZGlzYWJsZVJpcHBsZSA9IF9hLmRpc2FibGVSaXBwbGUsIFxuICAgIC8vZHJhZyBvcGVyYXRpb25zXG4gICAgb25EcmFnRW50ZXIgPSBfYS5vbkRyYWdFbnRlciwgb25EcmFnTGVhdmUgPSBfYS5vbkRyYWdMZWF2ZSwgXG4gICAgLy9hY3Rpb24gYnV0b3Ruc1xuICAgIGFjdGlvbkJ1dHRvbnMgPSBfYS5hY3Rpb25CdXR0b25zLCBcbiAgICAvL2Ryb3AgbGF5ZXJcbiAgICBkcm9wT25MYXllciA9IF9hLmRyb3BPbkxheWVyLCBcbiAgICAvL2hlYWRlciBhbmQgZm9vdGVyXG4gICAgaGVhZGVyID0gX2EuaGVhZGVyLCBmb290ZXIgPSBfYS5mb290ZXIsIF9jID0gX2EuaGVhZGVyQ29uZmlnLCBoZWFkZXJDb25maWcgPSBfYyA9PT0gdm9pZCAwID8ge30gOiBfYywgX2QgPSBfYS5mb290ZXJDb25maWcsIGZvb3RlckNvbmZpZyA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kLCBcbiAgICAvL2Rpc2FibGVkXG4gICAgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZCwgXG4gICAgLy9vcGVuIGZpbGUgZGlhbG9nXG4gICAgY2xpY2thYmxlID0gX2EuY2xpY2thYmxlLCBcbiAgICAvL2FkZCBvciByZXBsYWNlXG4gICAgYmVoYXZpb3VyID0gX2EuYmVoYXZpb3VyLCBcbiAgICAvL2NvbnRlbnRcbiAgICBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBcbiAgICAvL2FkdmFuY2VkQ29uZmlnLFxuICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcIm9uQ2hhbmdlXCIsIFwidmFsdWVcIiwgXCJhY2NlcHRcIiwgXCJtYXhGaWxlU2l6ZVwiLCBcIm1heEZpbGVzXCIsIFwidmFsaWRhdG9yXCIsIFwiY2xlYW5GaWxlc1wiLCBcIm9uQ2xlYW5cIiwgXCJhdXRvQ2xlYW5cIiwgXCJ1cGxvYWRDb25maWdcIiwgXCJmYWtlVXBsb2FkXCIsIFwib25VcGxvYWRTdGFydFwiLCBcIm9uVXBsb2FkRmluaXNoXCIsIFwiYmFja2dyb3VuZFwiLCBcImNvbG9yXCIsIFwibWluSGVpZ2h0XCIsIFwic3R5bGVcIiwgXCJjbGFzc05hbWVcIiwgXCJsYWJlbFwiLCBcImxvY2FsaXphdGlvblwiLCBcImRpc2FibGVSaXBwbGVcIiwgXCJvbkRyYWdFbnRlclwiLCBcIm9uRHJhZ0xlYXZlXCIsIFwiYWN0aW9uQnV0dG9uc1wiLCBcImRyb3BPbkxheWVyXCIsIFwiaGVhZGVyXCIsIFwiZm9vdGVyXCIsIFwiaGVhZGVyQ29uZmlnXCIsIFwiZm9vdGVyQ29uZmlnXCIsIFwiZGlzYWJsZWRcIiwgXCJjbGlja2FibGVcIiwgXCJiZWhhdmlvdXJcIiwgXCJjaGlsZHJlblwiXSk7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIFxuICAgIC8vIGRhcmtNb2RlOiBkYXJrTW9kZUNvbnRleHQsXG4gICAgLy9pY29ucyxcbiAgICBsb2NDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCkubG9jYWxpemF0aW9uO1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NQcm9wcyAhPT0gdW5kZWZpbmVkID8gbG9jUHJvcHMgOiBsb2NDb250ZXh0O1xuICAgIHZhciBfZSA9IHVwbG9hZENvbmZpZywgdXJsID0gX2UudXJsLCBtZXRob2QgPSBfZS5tZXRob2QsIGhlYWRlcnMgPSBfZS5oZWFkZXJzLCB1cGxvYWRMYWJlbCA9IF9lLnVwbG9hZExhYmVsLCBfZiA9IF9lLmNsZWFuT25VcGxvYWQsIGNsZWFuT25VcGxvYWQgPSBfZiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9mLCBfZyA9IF9lLnByZXBhcmluZ1RpbWUsIHByZXBhcmluZ1RpbWUgPSBfZyA9PT0gdm9pZCAwID8gMTUwMCA6IF9nLCBfaCA9IF9lLmF1dG9VcGxvYWQsIGF1dG9VcGxvYWQgPSBfaCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfaDtcbiAgICB2YXIgX2ogPSBhY3Rpb25CdXR0b25zLCBhY3Rpb25CdXR0b25zUG9zaXRpb24gPSBfai5wb3NpdGlvbiwgYWJvcnRCdXR0b24gPSBfai5hYm9ydEJ1dHRvbiwgZGVsZXRlQnV0dG9uID0gX2ouZGVsZXRlQnV0dG9uLCB1cGxvYWRCdXR0b24gPSBfai51cGxvYWRCdXR0b24sIGNsZWFuQnV0dG9uID0gX2ouY2xlYW5CdXR0b24sIGNvbnRhaW5lclN0eWxlID0gX2ouc3R5bGUsIGNvbnRhaW5lckNsYXNzTmFtZSA9IF9qLmNsYXNzTmFtZTtcbiAgICB2YXIgc3R5bGVCb3JkZXJSYWRpdXMgPSBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGUuYm9yZGVyUmFkaXVzO1xuICAgIHZhciBfayA9IGhlYWRlckNvbmZpZy5jbGVhbkZpbGVzLCBjbGVhbkZpbGVzSGVhZGVyID0gX2sgPT09IHZvaWQgMCA/IHRydWUgOiBfaywgX2wgPSBoZWFkZXJDb25maWcuZGVsZXRlRmlsZXMsIGRlbGV0ZUZpbGVzSGVhZGVyID0gX2wgPT09IHZvaWQgMCA/IHRydWUgOiBfbCwgX20gPSBoZWFkZXJDb25maWcubWF4RmlsZVNpemUsIG1heEZpbGVTaXplSGVhZGVyID0gX20gPT09IHZvaWQgMCA/IHRydWUgOiBfbSwgX28gPSBoZWFkZXJDb25maWcudXBsb2FkRmlsZXMsIHVwbG9hZEZpbGVzSGVhZGVyID0gX28gPT09IHZvaWQgMCA/IHRydWUgOiBfbywgX3AgPSBoZWFkZXJDb25maWcudXBsb2FkaW5nSWNvbiwgdXBsb2FkaW5nSWNvbkhlZGFlciA9IF9wID09PSB2b2lkIDAgPyB0cnVlIDogX3AsIF9xID0gaGVhZGVyQ29uZmlnLnZhbGlkRmlsZXNDb3VudCwgdmFsaWRGaWxlc0NvdW50SGVhZGVyID0gX3EgPT09IHZvaWQgMCA/IHRydWUgOiBfcSwgY3VzdG9tSGVhZGVyID0gaGVhZGVyQ29uZmlnLmN1c3RvbUhlYWRlciwgY2xhc3NOYW1lSGVhZGVyID0gaGVhZGVyQ29uZmlnLmNsYXNzTmFtZSwgX3IgPSBoZWFkZXJDb25maWcucmVzZXRTdHlsZXMsIHJlc2V0U3R5bGVzSGVhZGVyID0gX3IgPT09IHZvaWQgMCA/IGZhbHNlIDogX3IsIHN0eWxlSGVhZGVyID0gaGVhZGVyQ29uZmlnLnN0eWxlO1xuICAgIHZhciBjdXN0b21Gb290ZXIgPSBmb290ZXJDb25maWcuY3VzdG9tRm9vdGVyLCBfcyA9IGZvb3RlckNvbmZpZy5ub01pc3NpbmdGaWxlc0xhYmVsLCBub01pc3NpbmdGaWxlc0xhYmVsID0gX3MgPT09IHZvaWQgMCA/IHRydWUgOiBfcywgX3QgPSBmb290ZXJDb25maWcudXBsb2FkUHJvZ3Jlc3NNZXNzYWdlLCB1cGxvYWRQcm9ncmVzc01lc3NhZ2UgPSBfdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF90LCBfdSA9IGZvb3RlckNvbmZpZy51cGxvYWRSZXN1bHRNZXNzYWdlLCB1cGxvYWRSZXN1bHRNZXNzYWdlID0gX3UgPT09IHZvaWQgMCA/IHRydWUgOiBfdTtcbiAgICAvL2NvbnNvbGUubG9nKFwiRHJvcHpvbmUgcHJvcHNcIiwgZHJvcE9uTGF5ZXIpO1xuICAgIC8vbG9jYWxpemVyc1xuICAgIHZhciBEcm9wem9uZUxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICAvL3JlZiB0byBoYW5kbGUgcmlwcGxlXG4gICAgdmFyIGZ1aVJpcHBsZVJlZkFicyA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgZnVpUmlwcGxlUmVmUmVsID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vcmVmIHRvIHRoZSBoaWRkZW4gaW5wdXQgdGFnXG4gICAgdmFyIGlucHV0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vc3RhdGUgZm9yIGRyYWcgb3BlcmF0aW9uXG4gICAgdmFyIF92ID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc0RyYWdnaW5nID0gX3ZbMF0sIHNldElzRHJhZ2dpbmcgPSBfdlsxXTtcbiAgICAvL3N0YXRlIGZvciBjaGVja2luZyB1cGxvYWQgc3RhcnRcbiAgICB2YXIgX3cgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzVXBsb2FkaW5nID0gX3dbMF0sIHNldElzVXBsb2FkaW5nID0gX3dbMV07XG4gICAgLy9zdGF0ZSBmb3IgbWVzc2FnZSBvbiBmb290ZXJcbiAgICB2YXIgX3ggPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgbG9jYWxNZXNzYWdlID0gX3hbMF0sIHNldExvY2FsTWVzc2FnZSA9IF94WzFdO1xuICAgIC8vSWQgZm9yIHVwbG9kaW5nIHRocm91Z2ggRnVpRmlsZU1hbmFnZXJcbiAgICAvL2NvbnN0IGRyb3B6b25lSWQ6IHN0cmluZyB8IG51bWJlciA9IHVzZURyb3B6b25lRmlsZUxpc3RJRCgpO1xuICAgIC8vIGNvbnN0IGRyb3B6b25lSWQ6IHN0cmluZyB8IG51bWJlciA9IFJlYWN0LnVzZUlkKCk7XG4gICAgdmFyIGRyb3B6b25lSWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSArIFwiXCI7IH0sIFtdKTtcbiAgICAvL1JlYWN0LnVzZUlkKCk7XG4gICAgLy9GbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHZhbGlkYXRlIG9yIG5vdFxuICAgIHZhciB2YWxpZGF0ZUZpbGVzRmxhZyA9IGlzVmFsaWRhdGVBY3RpdmUoYWNjZXB0LCBtYXhGaWxlU2l6ZSwgbWF4RmlsZXMsIHZhbGlkYXRvcik7XG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBmaWxlcyBsb2NhbGx5XG4gICAgdmFyIF95ID0gdXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIoZHJvcHpvbmVJZCwgdmFsdWUgfHwgW10sIGlzVXBsb2FkaW5nLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgdmFsaWRhdG9yLCBsb2NhbGl6YXRpb24sIHZhbGlkYXRlRmlsZXNGbGFnKSwgbG9jYWxGaWxlcyA9IF95WzBdLCBudW1iZXJPZlZhbGlkRmlsZXMgPSBfeVsxXSwgc2V0TG9jYWxGaWxlcyA9IF95WzJdO1xuICAgIC8qKlxuICAgICAqIFVwbG9hZHMgZWFjaCBmaWxlIGluIHRoZSBhcnJheSBvZiBFeHRGaWxlc1xuICAgICAqIEZpcnN0LCBzZXRzIGFsbCB0aGUgZmlsZXMgaW4gcHJlcGFyaW5nIHN0YXR1cyBhbmQgYXdhaXRzIGBwcmVwYXJpbmdUaW1lYCBtaWxpc2Vjb25kcy5cbiAgICAgKiBJZiBgcHJlcGFyaW5nVGltZWAgaXMgbm90IGdpdmVuIG9yIGl0cyB2YWx1ZSBpcyBmYWxzZSBvciAwLCB0aGVyZSB3b27CtHQgYmUgYSBwcmVwYXJpbmcgcGhhc2UuXG4gICAgICogICAgICAgIFRoaXMgaXMgb25seSBmb3IgdGhlIGZpcnN0IGZpbGUsIHRoZSByZXN0IG9mIGZpbGVzIHdpbGwgaGF2ZSBwcmVwYXJpbmcgdGltZSB1bnRpbCB0aGUgZmlsZSBiZWZvcmUgd2FzIHVwbG9hZGVkXG4gICAgICogICAgICAgIFRoZSBmaXJzdCBmaWxlIHdpbGwganVtcCBmcm9tIHVuZGVmIHRvIFwidXBsb2FkaW5nXCJcbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKlxuICAgICAqIElmIGBvbkNhbmNlbGAgZXZlbnQgb2N1cnJzIG91dHNpZGUgb24gYW55IG9uIHRoZVxuICAgICAqIEZpbGVJdGVtcyhlLmcuIGJ5IGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uIG9uIGBGaWxlSXRlbWApLFxuICAgICAqIHRoZSBleHRGaWxlSW5zdGFuY2Ugd2lsbCBjaGFuZ2UgaXRzIHN0YXR1cyBmcm9tICdwcmVwYXJpbmcnIHRvIHVuZGVmaW5lZC4gSWYgc28sXG4gICAgICogYWZ0ZXIgdGhlIHdhaXRpbmcgdGltZSB0aGUgdmFsdWUgb2Ygc3RhdHVzIHdpbGwgYmUgZm91bmQgYXMgdW5kZWZpbmVkIGFuZFxuICAgICAqIHdvbsK0dCBwZXJmb20gdGhlIHVwbG9hZCBmb3IgdGhhdCBmaWxlIG9yIGFueSBvdGhlciB0aGF0IGZpdHMgdGhhdCBjb25kaXRpb24uXG4gICAgICogVGhlbiwgZm9yIGVhY2ggZmlsZSBzZXRzIHRoZSBmaWxlIGluICd1cGxvYWRpbmcnIHN0YXR1cy5cbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKiBUaGVuIHVwbG9hZHMgdGhlIGZpbGUgd2l0aCB0aGUgYHhocmAgaW5zdGFuY2UuXG4gICAgICogQWZ0ZXIgdGhhdCwgdGhhdCBmaWxlIHJlY2lldmVzIHRoZSBuZXcgdXBsb2FkU3RhdHVzIHRoYXQgY2FuIGJlXG4gICAgICogICdzdWNjZXNzJywgJ2Vycm9yJyBvciAnYWJvcnRlZCdcbiAgICAgKiBhbmQgb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzIHRvIHVwbG9hZFxuICAgICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICAgKi9cbiAgICB2YXIgdXBsb2FkZmlsZXMgPSBmdW5jdGlvbiAobG9jYWxGaWxlcykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgdG90YWxOdW1iZXIsIG1pc3NpbmdVcGxvYWQsIHRvdGFsUmVqZWN0ZWQsIGN1cnJlbnRDb3VudFVwbG9hZCwgdXBsb2FkaW5nTWVzc2VuZ2VyLCBuZXdFeHRGaWxlTG9jYWwsIHNlcnZlclJlc3BvbnNlcywgaSwgY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgdXBsb2FkUmVzcG9uc2UsIGZha2VQcm9ncmVzcywgdXBsb2FkZWRGaWxlLCBmaW5pc2hVcGxvYWRNZXNzZW5nZXI7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAvL3NldCB1cGxvYWRpbmcgZmxhZyB0byB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL2F2b2lkIHRvIGNhbGwgdXBsb2FkIGlmIG5vdCBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIC8vIGZsYWcgaXMgYWxyZWFkeSB0cnVlIG9yIHRoZXJlIGlzbnQgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgLy91cmwgd2FzIG5vdCBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcgfHwgbG9jYWxGaWxlcy5sZW5ndGggPT09IDAgfHwgIXVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKERyb3B6b25lTG9jYWxpemVyLm5vRmlsZXNNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxOdW1iZXIgPSBsb2NhbEZpbGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ1VwbG9hZCA9IGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNVcGxvYWRBYmxlRXh0RmlsZShleHRGaWxlLCB2YWxpZGF0ZUZpbGVzRmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxSZWplY3RlZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudFVwbG9hZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZGluZ01lc3NlbmdlciA9IERyb3B6b25lTG9jYWxpemVyLnVwbG9hZGluZ01lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIC8vbm8gbWlzc2luZyB0byB1cGxvYWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEobWlzc2luZ1VwbG9hZCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9NaXNzaW5nRmlsZXNMYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKERyb3B6b25lTG9jYWxpemVyLm5vRmlsZXNNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkUHJvZ3Jlc3NNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKHVwbG9hZGluZ01lc3NlbmdlcihcIlwiLmNvbmNhdChtaXNzaW5nVXBsb2FkLCBcIi9cIikuY29uY2F0KHRvdGFsTnVtYmVyKSkpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vUFJFUEFSSU5HIHN0YWdlXG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkU3RhcnQgPT09IG51bGwgfHwgb25VcGxvYWRTdGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25VcGxvYWRTdGFydChsb2NhbEZpbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdE1hcFByZXBhcmluZyhkcm9wem9uZUlkLCBsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzRmxhZywgY2xlYW5PblVwbG9hZCkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIG5ld0V4dEZpbGVMb2NhbCA9IF9fc3ByZWFkQXJyYXkkMShbXSwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgdHJ1ZSkubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC50b0V4dEZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQ0hBTkdFIChvIGFsZWpvIGVsIGlzVXBsb2FkaW5nIG8gbG8gYWxlam8gcGFyYSBxdWUgdGVuZ2EgbSxhcyB0aWVtcG8gYW50ZXMgZGUgbGEgcmVzcHV5ZXN0YSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKG5ld0V4dEZpbGVMb2NhbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQVdBSVQgd2hlbiBwcmVwYXJpbmcgdGltZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAgICAvL2dlbmVyYWwgc2xlZXAgZm9yIGFsbCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFByZXBhcmluZyhwcmVwYXJpbmdUaW1lKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAvL0FXQUlUIHdoZW4gcHJlcGFyaW5nIHRpbWUgaXMgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmFsIHNsZWVwIGZvciBhbGwgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGkgPCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLmxlbmd0aCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDE2XTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZSA9IGFyck9mRXh0RmlsZXNJbnN0YW5jZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKChfYSA9IGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UuZXh0cmFEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsZXRlZCkpKSByZXR1cm4gWzMgLypicmVhayovLCAxNF07XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YWdlIHRvIFwidXBsb2FkaW5nXCIgaW4gb25lIGZpbGUgYW5kIG5vdGlmeSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgLy8gUFJFUEFSSU5HID0+IFVQTE9BRElOR1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFnZSB0byBcInVwbG9hZGluZ1wiIGluIG9uZSBmaWxlIGFuZCBub3RpZnkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIC8vIFBSRVBBUklORyA9PiBVUExPQURJTkdcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW50UHJlcGFyaW5nVG9VcGxvYWRPbmUoY3VycmVudEV4dEZpbGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vbWVzc2dlIGluIGZvb3RlclxuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkUHJvZ3Jlc3NNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKHVwbG9hZGluZ01lc3NlbmdlcihcIlwiLmNvbmNhdCgrK2N1cnJlbnRDb3VudFVwbG9hZCwgXCIvXCIpLmNvbmNhdChtaXNzaW5nVXBsb2FkKSkpO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSBGSUxFU1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmYWtlVXBsb2FkKSByZXR1cm4gWzMgLypicmVhayovLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZmFrZUZ1aVVwbG9hZChjdXJyZW50RXh0RmlsZUluc3RhbmNlLCBEcm9wem9uZUxvY2FsaXplcildO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gNTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGZha2VQcm9ncmVzcyA8IDEwMCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDddO1xuICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgKz0gZ2V0UmFuZG9tSW50KDIxLCAzNSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UucHJvZ3Jlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzID4gMTAwID8gMTAwIDogZmFrZVByb2dyZXNzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oMTAwMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIF9iLnRyeXMucHVzaChbOCwgMTAsICwgMTFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRXh0RmlsZShjdXJyZW50RXh0RmlsZUluc3RhbmNlLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdChjdXJyZW50RXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkRmlsZSA9IHVwbG9hZFJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAvL3VwZGF0ZSBpbnN0YW5jZXNcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSB1cGxvYWRlZEZpbGUudXBsb2FkU3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSB1cGxvYWRlZEZpbGUudXBsb2FkTWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcImFib3J0ZWRcIikpIHJldHVybiBbMyAvKmJyZWFrKi8sIDEzXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKCldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxMztcbiAgICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkZWRGaWxlLnVwbG9hZFN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlamVjdGVkKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzLnB1c2godXBsb2FkUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxNV07XG4gICAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxNTtcbiAgICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgIHNldExvY2FsRmlsZXMoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBsb2FkIGdyb3VwIGZpbmlzaGVkIDpEXG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkRmluaXNoID09PSBudWxsIHx8IG9uVXBsb2FkRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZEZpbmlzaChzZXJ2ZXJSZXNwb25zZXMpO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hVcGxvYWRNZXNzZW5nZXIgPSBEcm9wem9uZUxvY2FsaXplci51cGxvYWRGaW5pc2hlZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwbG9hZFJlc3VsdE1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbE1lc3NhZ2UoZmluaXNoVXBsb2FkTWVzc2VuZ2VyKG1pc3NpbmdVcGxvYWQgLSB0b3RhbFJlamVjdGVkLCB0b3RhbFJlamVjdGVkKSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICB2YXIgaGFuZGxlQWJvcnRVcGxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsaXN0RXh0RmlsZUxvY2FsID0gRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdChkcm9wem9uZUlkKTtcbiAgICAgICAgaWYgKCFsaXN0RXh0RmlsZUxvY2FsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0RXh0RmlsZUxvY2FsLmZvckVhY2goZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIgfHxcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS54aHIgIT09IG51bGwgJiYgZXh0RmlsZUluc3RhbmNlLnhociAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UueGhyLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiYWJvcnRlZFwiO1xuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gXCJVcGxvYWQgd2FzIGFib3J0ZWQgYnkgdXNlclwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vdGhlIGZpbmFsIGNsYXNzTmFtZVxuICAgIHZhciBfeiA9IHVzZURyb3B6b25lQ2xhc3NOYW1lKGRyb3B6b25lSWQsIGNsYXNzTmFtZSwgXG4gICAgLy9pc0RyYWdnaW5nICYmIEJvb2xlYW4oZHJvcE9uTGF5ZXIpLFxuICAgIC8vIGhlYWRlcixcbiAgICAvLyBmb290ZXIsXG4gICAgY29sb3IsIFxuICAgIC8vc3R5bGU/LmJvcmRlclJhZGl1cyB8fCBib3JkZXJSYWRpdXMsXG4gICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0KSwgZHJvcHpvbmVDbGFzc05hbWUgPSBfelswXSwgaGVhZGVyQ2xhc3NOYW1lID0gX3pbMV0sIGZvb3RlckNsYXNzTmFtZSA9IF96WzJdLCBkaXNhYmxlZExheWVyQ2xhc3NOYW1lID0gX3pbM107XG4gICAgdmFyIGRyb3BMYXllckNsYXNzTmFtZSA9IHVzZURyb3BMYXllckNsYXNzTmFtZShkcm9wem9uZUlkLCBjb2xvciwgXG4gICAgLy8gaXNEcmFnZ2luZyxcbiAgICAhb25EcmFnRW50ZXIgJiYgIW9uRHJhZ0xlYXZlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgdmFyIHZhbGlkYXRlZEZ1aUZpbGVMaXN0ID0gdmFsaWRhdGVFeHRGaWxlTGlzdChsb2NhbEZpbGVzLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gbnVtYmVyT2ZWYWxpZEZpbGVzIDogSW5maW5pdHksIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pO1xuICAgICAgICBzZXRMb2NhbEZpbGVzKHZhbGlkYXRlZEZ1aUZpbGVMaXN0KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW21heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCBsb2NhbGl6YXRpb25dKTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgY2hhbmdlcyBpbiB0aGUgZXh0RmlsZSBsaXN0LlxuICAgICAqIE1ha2VzIGEgbmV3IGFycmF5IG9mIGV4dEZpbGUgYWNjb3JkaW5nIHRvIHRoZSBcImJlaGF2aW91clwiIHByb3AuXG4gICAgICogSWYgaXNVcGxvYWRpbmcgc3RhdGUgaXMgbm90IHRydWUgYW5kIHRoZSBiZWhhdmlvdXIgcHJvcHMgaXMgZXF1YWwgdG8gXCJhZGRcIixcbiAgICAgKiB0aGUgaW5jb21pbmcgZXh0RmlsZUxpc3QgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaXN0IG9mIGV4dEZpbGUuXG4gICAgICogT3RoZXJ3aXNlLCB0aGUgY29tcGxldGUgZXh0RmlsZSBsaXN0IGlzIHJlcGxhY2VkIGJ5IHRoZSBpbmNvbW1pbmcgZXh0RmlsZSBsaXN0XG4gICAgICogQHBhcmFtIGV4dEZpbGVMaXN0IHRoZSBuZXcgZmlsZUxpc3RcbiAgICAgKiBAcGFyYW0gaXNVcGxvYWRpbmcgYSBmbGFnIHRoYXQgZHNjcmliZXMgd2h0aGVyIHRoZSB1cGxvYWRpbmcgcHJvY2VzcyBpcyBhY3RpdmUgb3Igbm90XG4gICAgICovXG4gICAgdmFyIGhhbmRsZUZpbGVzQ2hhbmdlID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0LCBpc1VwbG9hZGluZykge1xuICAgICAgICB2YXIgZmluYWxFeHRGaWxlTGlzdCA9IGJlaGF2aW91ciA9PT0gXCJhZGRcIiAmJiAhaXNVcGxvYWRpbmdcbiAgICAgICAgICAgID8gX19zcHJlYWRBcnJheSQxKF9fc3ByZWFkQXJyYXkkMShbXSwgbG9jYWxGaWxlcywgdHJ1ZSksIGV4dEZpbGVMaXN0LCB0cnVlKSA6IF9fc3ByZWFkQXJyYXkkMShbXSwgZXh0RmlsZUxpc3QsIHRydWUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0b1VwbG9hZCAmJiAhaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgIHVwbG9hZGZpbGVzKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0aW9uIG9mIHJlY2lldmluZyB0aGUgZmlsZXMgd2hlbiB1c2VyIHNlbGVjdHMgdGhlIGZpbGVzXG4gICAgICogYnkgY2xpY2tpbmcgdGhlIElucHV0QnV0dG9uXG4gICAgICogQHBhcmFtIGV2dCBldmVudCBoYW5kbGVyIGZvciBnZXR0aW5nIGZpbGVzIGZyb20gaW5wdXQgZWxlbWVudCB0YXJnZXRcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlQ2hhbmdlSW5wdXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vaWYgKGlzVXBsb2FkaW5nKSByZXR1cm47XG4gICAgICAgIHZhciBmaWxlTGlzdCA9IGV2dC50YXJnZXQuZmlsZXM7XG4gICAgICAgIHZhciBleHRGaWxlTGlzdE91dHB1dCA9IGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkoZmlsZUxpc3QpO1xuICAgICAgICAvL3ZhbGlkYXRlIGV4dCBmaWxlc1xuICAgICAgICBpZiAodmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gb3V0ZXJGdWlWYWxpZGF0aW9uKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIGlmIChhdXRvQ2xlYW4pIHtcbiAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IGV4dEZpbGVMaXN0T3V0cHV0LmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pbml0IHhociBvbiBlYWNoIGV4dCBmaWxlXG4gICAgICAgIGlmICh1cmwpXG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0KGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgLy8gQ2xlYW4gaW5wdXQgZWxlbWVudCB0byB0cmlnZ2VyIG9uQ2hhbmdlIGV2ZW50IG9uIGlucHV0XG4gICAgICAgIGNsZWFuSW5wdXQoaW5wdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGVhY2ggRnVpRmlsZVxuICAgICAqIG91dHNpZGUgdGhlIERyb3B6b25lTmVvIGNvbXBvbmVudCBmaWxlIGRlY2xhcmF0aW9uXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSBnaXZlbiBieSBtYXhGaWxlcyBhbmQgbWF4RmlsZVNpemUgYW5kIGFjY2VwdCBwcm9wc1xuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FsbHMgdmFsaWRhdGVGdWlGaWxlTGlzdCBhbmQgc2V0cyB0aGUgdmFsaWQgcHJvcCBvZiBGdWlGaWxlIHRvIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIlxuICAgICAqIGRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBpbmRpdmlkdWFsIHZhbGlkYXRpb24uXG4gICAgICogSXQgYWxzbyBhZGQgdGhlIGxpc3Qgb2YgZXJyb3JzLlxuICAgICAqIEBwYXJhbSBmdWlGaWxlTGlzdFRvVmFsaWRhdGUgdGhlIGZ1aUZpbGVMaXN0IHRvIHZhbGlkYXRlXG4gICAgICogQHJldHVybnMgYSBsaXN0IG9mIHZhbGlkYXRlZCBGdWlGaWxlIGxpc3RcbiAgICAgKi9cbiAgICB2YXIgb3V0ZXJGdWlWYWxpZGF0aW9uID0gZnVuY3Rpb24gKGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSkge1xuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgdmFyIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSBudW1iZXJPZlZhbGlkRmlsZXM7XG4gICAgICAgIGlmIChiZWhhdmlvdXIgPT09IFwicmVwbGFjZVwiKSB7XG4gICAgICAgICAgICAvL3JlLXN0YXJ0IG51bWJlciBvZiB2YWxpZHNcbiAgICAgICAgICAgIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWxpZGF0ZWRGdWlGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QoZnVpRmlsZUxpc3RUb1ZhbGlkYXRlLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gZmluYWxOdW1iZXJPZlZhbGlkcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1aUZpbGVMaXN0O1xuICAgIH07XG4gICAgLy8gSEFORExFUlMgZm9yIENMSUNLLCBEUkFHIE5BRCBEUk9QXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICAgIC8vaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgICAgIGlmICghY2xpY2thYmxlIHx8IGRpc2FibGVkIHx8IGlzVXBsb2FkaW5nKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBtYWtlUmlwcGxlKCk7XG4gICAgICAgIGhhbmRsZUNsaWNrSW5wdXQoaW5wdXRSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIHZhciBoYW5kbGVEcmFnRW50ZXIgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIGhhbmRsZURyYWdVdGlsKGV2dCk7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SXNEcmFnZ2luZyh0cnVlKTtcbiAgICAgICAgLyogc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0SXNEcmFnZ2luZygoX2lzRHJhZ2dpbmcpID0+IHtcbiAgICAgICAgICAgIC8vaWYgKF9pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIC8vfVxuICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMjAwMCk7ICovXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVEcmFnRW50ZXJcIik7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlRHJhZ0xlYXZlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGhhbmRsZURyYWdVdGlsKGV2dCk7XG4gICAgICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpO1xuICAgIH07XG4gICAgLy8gUklQUExFXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHJpcHBsZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBtYWluIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHZhciBtYWtlUmlwcGxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjcmVhdGVGdWlSaXBwbGVGcm9tRGl2KGZ1aVJpcHBsZVJlZkFicy5jdXJyZW50LCBmdWlSaXBwbGVSZWZSZWwuY3VycmVudCwgY29sb3IpO1xuICAgIH07XG4gICAgLy8gS0FNVUkgPT4gUkVDSUVWRSBGSUxFUyBGUk9NIERST1AgT1IgSU5QVVQoIENMSUNLICksIFZBTElEQVRFIEFORCBDSEFOR0VcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0aW9uIG9mIHJlY2lldmluZyB0aGUgZmlsZXMgd2hlbiB1c2VyIGRyb3BzIHRoZSBmaWxlc1xuICAgICAqIGluIHRoZSBEcm9wem9uZSBjb250YWluZXIuXG4gICAgICogQWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBjb25maWcgZnJvbSBwcm9wcywgdGhpcyBmdW5jdGlvbiBjb3VsZFxuICAgICAqIHZhbGlkYXRlIGZpbGVzIGFuZCBhbHNvIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcGhhc2VcbiAgICAgKiBAcGFyYW0gZXZ0IGV2ZW4gaGFuZGxlciBmb3IgZ2V0dGluZyBmaWxlcyBmcm9tIGRhdGFUcmFuc2ZlclxuICAgICAqL1xuICAgIHZhciBrYW11aSA9IGZ1bmN0aW9uIChldnQpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZpbGVMaXN0LCBleHRGaWxlTGlzdE91dHB1dDtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBoYW5kbGVEcm9wVXRpbChldnQpO1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIGlmIChpc1VwbG9hZGluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICBpZiAoIWRpc2FibGVSaXBwbGUpXG4gICAgICAgICAgICAgICAgbWFrZVJpcHBsZSgpO1xuICAgICAgICAgICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgICAgICAgICBmaWxlTGlzdCA9IGV2dC5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkoZmlsZUxpc3QpO1xuICAgICAgICAgICAgLy92YWxpZGF0ZSBleHRlbmRlZCBmaWxlc1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBvdXRlckZ1aVZhbGlkYXRpb24oZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAgICAgICAgIGlmIChhdXRvQ2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBleHRGaWxlTGlzdE91dHB1dC5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vaW5pdCB4aHIgb24gZWFjaCBleHQgZmlsZVxuICAgICAgICAgICAgaWYgKHVybClcbiAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0KGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgLyoqKioqKioqKioqKiogSEVBREVSICYgRk9PVEVSICoqKioqKioqICovXG4gICAgLyoqXG4gICAgICogcmVzZXQgdGhlIGNvbXBsZXRlIGZpbGUgbGlzdFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVSZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKFtdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhbmRsZUNsZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DbGVhbikge1xuICAgICAgICAgICAgb25DbGVhbigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlciA9ICFkcm9wem9uZUNsYXNzTmFtZVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IChpc0RyYWdnaW5nICYmIGRyb3BPbkxheWVyKSB8fCBkaXNhYmxlZFxuICAgICAgICAgICAgPyBhZGRDbGFzc05hbWUoZHJvcHpvbmVDbGFzc05hbWUsIFwiZmlsZXMtdWktcm9vdC1ib3JkZXItaGlkZVwiKVxuICAgICAgICAgICAgOiBkcm9wem9uZUNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlckNsaWNrYWJsZSA9ICFmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogY2xpY2thYmxlICYmICFkaXNhYmxlZFxuICAgICAgICAgICAgPyBhZGRDbGFzc05hbWUoZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlciwgXCJjbGlja2FibGVcIilcbiAgICAgICAgICAgIDogZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlcjtcbiAgICBpZiAoIWZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJDbGlja2FibGUpXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9PT0gXCJiZWZvcmVcIiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUJ1dHRvbnMsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBhYm9ydEJ1dHRvbjogaXNVcGxvYWRpbmcgPyBhYm9ydEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25BYm9ydDogaGFuZGxlQWJvcnRVcGxvYWQsIGRlbGV0ZUJ1dHRvbjogZGVsZXRlQnV0dG9uLCBvbkRlbGV0ZTogIWlzVXBsb2FkaW5nID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIHVwbG9hZEJ1dHRvbjogIWlzVXBsb2FkaW5nICYmICFhdXRvVXBsb2FkID8gdXBsb2FkQnV0dG9uIDogdW5kZWZpbmVkLCBvblVwbG9hZDogIWF1dG9VcGxvYWQgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfSA6IHVuZGVmaW5lZCwgY2xlYW5CdXR0b246IHZhbGlkYXRlRmlsZXNGbGFnICYmICFpc1VwbG9hZGluZyAmJiAhYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgPyBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBvbkNsZWFuOiBoYW5kbGVDbGVhbiwgc3R5bGU6IGNvbnRhaW5lclN0eWxlLCBjbGFzc05hbWU6IGNvbnRhaW5lckNsYXNzTmFtZSwgdG9wOiB0cnVlIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbiQxKHsgc3R5bGU6IHN0eWxlLCBjbGFzc05hbWU6IGZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJDbGlja2FibGUgfSwgcmVzdCwgeyBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25EcmFnT3ZlcjogaGFuZGxlRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogIWRyb3BPbkxheWVyID8gaGFuZGxlRHJhZ0xlYXZlIDogdW5kZWZpbmVkLCBvbkRyb3A6ICFkcm9wT25MYXllciA/IGthbXVpIDogdW5kZWZpbmVkIH0pLFxuICAgICAgICAgICAgIWRpc2FibGVSaXBwbGUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByZWY6IGZ1aVJpcHBsZVJlZkFicywgY2xhc3NOYW1lOiBcImZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGVcIiwgc3R5bGU6IHsgYm9yZGVyUmFkaXVzOiBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGUuYm9yZGVyUmFkaXVzIH0gfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiBmdWlSaXBwbGVSZWZSZWwsIGNsYXNzTmFtZTogXCJmaWxlc3VpLWJhc2UtcmlwcGxlLXJlbGF0aXZlXCIgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGhlYWRlciA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21IZWFkZXIgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tSGVhZGVyKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUhlYWRlciwgeyBmaXJzdENsYXNzTmFtZTogaGVhZGVyQ2xhc3NOYW1lLCBjb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSwgc3R5bGU6IHN0eWxlSGVhZGVyLCBjbGFzc05hbWU6IGNsYXNzTmFtZUhlYWRlciwgcmVzZXRTdHlsZXM6IHJlc2V0U3R5bGVzSGVhZGVyLCBib3JkZXJSYWRpdXM6IHN0eWxlQm9yZGVyUmFkaXVzLCBpc1VwbG9hZGluZzogaXNVcGxvYWRpbmcgJiYgdXBsb2FkaW5nSWNvbkhlZGFlciwgb25SZXNldDogIWlzVXBsb2FkaW5nICYmIGRlbGV0ZUZpbGVzSGVhZGVyID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSAmJiBtYXhGaWxlU2l6ZUhlYWRlciA/IG1heEZpbGVTaXplIDogdW5kZWZpbmVkLCBtYXhGaWxlczogbWF4RmlsZXMgJiYgdmFsaWRGaWxlc0NvdW50SGVhZGVyID8gbWF4RmlsZXMgOiB1bmRlZmluZWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uLCB1cmxQcmVzZW50OiB1cmwgIT09IHVuZGVmaW5lZCAmJiB1cGxvYWRGaWxlc0hlYWRlciwgb25VcGxvYWRTdGFydDogIWF1dG9VcGxvYWQgJiYgIXVwbG9hZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBudW1iZXJPZlZhbGlkRmlsZXM6IG51bWJlck9mVmFsaWRGaWxlcywgXG4gICAgICAgICAgICAgICAgLy9vbkNsZWFuPXthdXRvQ2xlYW4gPyB1bmRlZmluZWQgOiBjbGVhbkJ1dHRvbiA/IHVuZGVmaW5lZCA6IG9uQ2xlYW59XG4gICAgICAgICAgICAgICAgb25DbGVhbjogIWNsZWFuRmlsZXNIZWFkZXIgfHwgaXNVcGxvYWRpbmcgfHwgY2xlYW5CdXR0b24gfHwgYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIDogKGNsZWFuRmlsZXMgfHwgb25DbGVhbikgJiYgdmFsaWRhdGVGaWxlc0ZsYWdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xlYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkIH0pKSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQ2hpbGRyZW4sIHsgbGFiZWw6IGxhYmVsLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9LCBjaGlsZHJlbiksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21Gb290ZXIgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tRm9vdGVyKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgZm9vdGVyICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lRm9vdGVyLCBfX2Fzc2lnbiQxKHsgZmlyc3RDbGFzc05hbWU6IGZvb3RlckNsYXNzTmFtZSwgYm9yZGVyUmFkaXVzOiBzdHlsZUJvcmRlclJhZGl1cywgYWNjZXB0OiBhY2NlcHQsIG1lc3NhZ2U6IGlzVXBsb2FkaW5nID8gbG9jYWxNZXNzYWdlIDogdW5kZWZpbmVkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9LCBmb290ZXJDb25maWcpKSkpKSksXG4gICAgICAgICAgICBkcm9wT25MYXllciAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wTGF5ZXIsIHsgb3BlbjogaXNEcmFnZ2luZywgY2xhc3NOYW1lOiAhaXNEcmFnZ2luZ1xuICAgICAgICAgICAgICAgICAgICA/IGRyb3BMYXllckNsYXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICA6IFwiXCIuY29uY2F0KGRyb3BMYXllckNsYXNzTmFtZSwgXCIgZHJvcHpvbmUtbGF5ZXItZHJhZ1wiKSwgb25EcmFnTGVhdmU6IGhhbmRsZURyYWdMZWF2ZSwgb25Ecm9wOiBrYW11aSwgc3R5bGU6IHsgYm9yZGVyUmFkaXVzOiBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGUuYm9yZGVyUmFkaXVzIH0gfSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dEhpZGRlbiwgeyBtdWx0aXBsZTogbWF4RmlsZXMgPyBtYXhGaWxlcyA+IDEgOiB0cnVlLCBhY2NlcHQ6IGFjY2VwdCB8fCBcIlwiLCBpbnB1dFJlZjogaW5wdXRSZWYsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2VJbnB1dCB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVEaXNhYmxlZExheWVyLCB7IG9wZW46IGRpc2FibGVkLCBjbGFzc05hbWU6IGRpc2FibGVkTGF5ZXJDbGFzc05hbWUgfSkpLFxuICAgICAgICBhY3Rpb25CdXR0b25zUG9zaXRpb24gPT09IFwiYWZ0ZXJcIiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUJ1dHRvbnMsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBhYm9ydEJ1dHRvbjogaXNVcGxvYWRpbmcgPyBhYm9ydEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25BYm9ydDogaGFuZGxlQWJvcnRVcGxvYWQsIGRlbGV0ZUJ1dHRvbjogZGVsZXRlQnV0dG9uLCBvbkRlbGV0ZTogIWlzVXBsb2FkaW5nID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIHVwbG9hZEJ1dHRvbjogIWlzVXBsb2FkaW5nICYmICFhdXRvVXBsb2FkID8gdXBsb2FkQnV0dG9uIDogdW5kZWZpbmVkLCBvblVwbG9hZDogIWF1dG9VcGxvYWQgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfSA6IHVuZGVmaW5lZCwgY2xlYW5CdXR0b246IHZhbGlkYXRlRmlsZXNGbGFnICYmICFpc1VwbG9hZGluZyAmJiAhYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgPyBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBvbkNsZWFuOiBoYW5kbGVDbGVhbiwgc3R5bGU6IGNvbnRhaW5lclN0eWxlLCBjbGFzc05hbWU6IGNvbnRhaW5lckNsYXNzTmFtZSwgdG9wOiBmYWxzZSB9KSkpKTtcbn07XG5cbnZhciBkZWZhdWx0RmlsZUlucHV0QnV0dG9uUHJvcHMgPSB7XG4gICAgdGV4dFRyYW5zZm9ybTogXCJ1cHBlcmNhc2VcIixcbiAgICBsYWJlbDogXCJicm93c2UuLi5cIixcbiAgICBiZWhhdmlvdXI6IFwiYWRkXCIsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHVwbG9hZENvbmZpZzoge30sXG4gICAgYWN0aW9uQnV0dG9uczoge30sXG4gICAgdmFsdWU6IFtdLFxufTtcblxudmFyIEZpbGVJbnB1dEJ1dHRvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IG1lcmdlUHJvcHMocHJvcHMsIGRlZmF1bHRGaWxlSW5wdXRCdXR0b25Qcm9wcyksIFxuICAgIC8vYmFzaWNcbiAgICBfYiA9IF9hLnZhbHVlLCBcbiAgICAvL2Jhc2ljXG4gICAgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYiwgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSwgXG4gICAgLy92YWxpZGF0aW9uXG4gICAgYWNjZXB0ID0gX2EuYWNjZXB0LCBtYXhGaWxlU2l6ZSA9IF9hLm1heEZpbGVTaXplLCBtYXhGaWxlcyA9IF9hLm1heEZpbGVzLCB2YWxpZGF0b3IgPSBfYS52YWxpZGF0b3IsIFxuICAgIC8vY2xlYW5GaWxlcyxcbiAgICAvL29uQ2xlYW4sXG4gICAgYXV0b0NsZWFuID0gX2EuYXV0b0NsZWFuLCBcbiAgICAvL3VwbG9hZGluZ1xuICAgIHVwbG9hZENvbmZpZyA9IF9hLnVwbG9hZENvbmZpZywgZmFrZVVwbG9hZCA9IF9hLmZha2VVcGxvYWQsIG9uVXBsb2FkU3RhcnQgPSBfYS5vblVwbG9hZFN0YXJ0LCBvblVwbG9hZEZpbmlzaCA9IF9hLm9uVXBsb2FkRmluaXNoLCBcbiAgICAvL3N0eWxpbmdcbiAgICAvL2JhY2tncm91bmQsXG4gICAgLy9taW5IZWlnaHQsXG4gICAgY29sb3IgPSBfYS5jb2xvciwgc3R5bGUgPSBfYS5zdHlsZSwgdGV4dENvbG9yID0gX2EudGV4dENvbG9yLCB0ZXh0VHJhbnNmb3JtID0gX2EudGV4dFRyYW5zZm9ybSwgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLCBcbiAgICAvL2xhYmVsXG4gICAgbGFiZWwgPSBfYS5sYWJlbCwgXG4gICAgLy9sb2NhbGl6YXRpb25cbiAgICBsb2NQcm9wcyA9IF9hLmxvY2FsaXphdGlvbiwgXG4gICAgLy9yaXBwbGVcbiAgICBkaXNhYmxlUmlwcGxlID0gX2EuZGlzYWJsZVJpcHBsZSwgXG4gICAgLy9hY3Rpb24gYnV0b3Ruc1xuICAgIGFjdGlvbkJ1dHRvbnMgPSBfYS5hY3Rpb25CdXR0b25zLCBcbiAgICAvL2Ryb3AgbGF5ZXJcbiAgICAvLyBkcm9wT25MYXllcixcbiAgICAvL2hlYWRlciBhbmQgZm9vdGVyXG4gICAgLy9oZWFkZXIsXG4gICAgLy9mb290ZXIsXG4gICAgLy9oZWFkZXJDb25maWcgPSB7fSxcbiAgICAvL2Zvb3RlckNvbmZpZyA9IHt9LFxuICAgIC8vZGlzYWJsZWRcbiAgICBkaXNhYmxlZCA9IF9hLmRpc2FibGVkLCBcbiAgICAvL2NsaWNrYWJsZSxcbiAgICAvL2FkZCBvciByZXBsYWNlXG4gICAgYmVoYXZpb3VyID0gX2EuYmVoYXZpb3VyLCBcbiAgICAvL2NvbnRlbnRcbiAgICBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBcbiAgICAvL2FkdmFuY2VkQ29uZmlnLFxuICAgIHZhcmlhbnQgPSBfYS52YXJpYW50LCByZXNldFN0eWxlcyA9IF9hLnJlc2V0U3R5bGVzLCBkYXJrTW9kZVByb3AgPSBfYS5kYXJrTW9kZSwgcmVzdCA9IF9fcmVzdChfYSwgW1widmFsdWVcIiwgXCJvbkNoYW5nZVwiLCBcImFjY2VwdFwiLCBcIm1heEZpbGVTaXplXCIsIFwibWF4RmlsZXNcIiwgXCJ2YWxpZGF0b3JcIiwgXCJhdXRvQ2xlYW5cIiwgXCJ1cGxvYWRDb25maWdcIiwgXCJmYWtlVXBsb2FkXCIsIFwib25VcGxvYWRTdGFydFwiLCBcIm9uVXBsb2FkRmluaXNoXCIsIFwiY29sb3JcIiwgXCJzdHlsZVwiLCBcInRleHRDb2xvclwiLCBcInRleHRUcmFuc2Zvcm1cIiwgXCJjbGFzc05hbWVcIiwgXCJsYWJlbFwiLCBcImxvY2FsaXphdGlvblwiLCBcImRpc2FibGVSaXBwbGVcIiwgXCJhY3Rpb25CdXR0b25zXCIsIFwiZGlzYWJsZWRcIiwgXCJiZWhhdmlvdXJcIiwgXCJjaGlsZHJlblwiLCBcInZhcmlhbnRcIiwgXCJyZXNldFN0eWxlc1wiLCBcImRhcmtNb2RlXCJdKTtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KSwgZGFya01vZGVDb250ZXh0ID0gX2MuZGFya01vZGUsIFxuICAgIC8vaWNvbnMsXG4gICAgbG9jQ29udGV4dCA9IF9jLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gbG9jUHJvcHMgIT09IHVuZGVmaW5lZCA/IGxvY1Byb3BzIDogbG9jQ29udGV4dDtcbiAgICB2YXIgZGFya01vZGUgPSBkYXJrTW9kZVByb3AgIT09IHVuZGVmaW5lZCA/IGRhcmtNb2RlUHJvcCA6IGRhcmtNb2RlQ29udGV4dDtcbiAgICB2YXIgX2QgPSB1cGxvYWRDb25maWcsIHVybCA9IF9kLnVybCwgbWV0aG9kID0gX2QubWV0aG9kLCBoZWFkZXJzID0gX2QuaGVhZGVycywgdXBsb2FkTGFiZWwgPSBfZC51cGxvYWRMYWJlbCwgX2UgPSBfZC5jbGVhbk9uVXBsb2FkLCBjbGVhbk9uVXBsb2FkID0gX2UgPT09IHZvaWQgMCA/IHRydWUgOiBfZSwgX2YgPSBfZC5wcmVwYXJpbmdUaW1lLCBwcmVwYXJpbmdUaW1lID0gX2YgPT09IHZvaWQgMCA/IDE1MDAgOiBfZiwgX2cgPSBfZC5hdXRvVXBsb2FkLCBhdXRvVXBsb2FkID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2c7XG4gICAgdmFyIF9oID0gYWN0aW9uQnV0dG9ucywgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID0gX2gucG9zaXRpb24sIGFib3J0QnV0dG9uID0gX2guYWJvcnRCdXR0b24sIGRlbGV0ZUJ1dHRvbiA9IF9oLmRlbGV0ZUJ1dHRvbiwgdXBsb2FkQnV0dG9uID0gX2gudXBsb2FkQnV0dG9uLCBjbGVhbkJ1dHRvbiA9IF9oLmNsZWFuQnV0dG9uLCBjb250YWluZXJTdHlsZSA9IF9oLnN0eWxlLCBjb250YWluZXJDbGFzc05hbWUgPSBfaC5jbGFzc05hbWU7XG4gICAgLy9sb2NhbGl6ZXJzXG4gICAgdmFyIERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIC8vcmVmIHRvIHRoZSBoaWRkZW4gaW5wdXQgdGFnXG4gICAgdmFyIGlucHV0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vc3RhdGUgZm9yIGNoZWNraW5nIHVwbG9hZCBzdGFydFxuICAgIHZhciBfaiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNVcGxvYWRpbmcgPSBfalswXSwgc2V0SXNVcGxvYWRpbmcgPSBfalsxXTtcbiAgICAvL0lkIGZvciB1cGxvZGluZyB0aHJvdWdoIEZ1aUZpbGVNYW5hZ2VyXG4gICAgLy9jb25zdCBpbnB1dEJ1dHRvbklkOiBzdHJpbmcgfCBudW1iZXIgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBpbnB1dEJ1dHRvbklkID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCkgKyBcIlwiOyB9LCBbXSk7XG4gICAgLy9GbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHZhbGlkYXRlIG9yIG5vdFxuICAgIHZhciB2YWxpZGF0ZUZpbGVzRmxhZyA9IGlzVmFsaWRhdGVBY3RpdmUoYWNjZXB0LCBtYXhGaWxlU2l6ZSwgbWF4RmlsZXMsIHZhbGlkYXRvcik7XG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBmaWxlcyBsb2NhbGx5XG4gICAgdmFyIF9rID0gdXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIoaW5wdXRCdXR0b25JZCwgdmFsdWUgfHwgW10sIGlzVXBsb2FkaW5nLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgdmFsaWRhdG9yLCBsb2NhbGl6YXRpb24sIHZhbGlkYXRlRmlsZXNGbGFnKSwgbG9jYWxGaWxlcyA9IF9rWzBdLCBudW1iZXJPZlZhbGlkRmlsZXMgPSBfa1sxXSwgc2V0TG9jYWxGaWxlcyA9IF9rWzJdO1xuICAgIC8qKlxuICAgICAqIFVwbG9hZHMgZWFjaCBmaWxlIGluIHRoZSBhcnJheSBvZiBFeHRGaWxlc1xuICAgICAqIEZpcnN0LCBzZXRzIGFsbCB0aGUgZmlsZXMgaW4gcHJlcGFyaW5nIHN0YXR1cyBhbmQgYXdhaXRzIGBwcmVwYXJpbmdUaW1lYCBtaWxpc2Vjb25kcy5cbiAgICAgKiBJZiBgcHJlcGFyaW5nVGltZWAgaXMgbm90IGdpdmVuIG9yIGl0cyB2YWx1ZSBpcyBmYWxzZSBvciAwLCB0aGVyZSB3b27CtHQgYmUgYSBwcmVwYXJpbmcgcGhhc2UuXG4gICAgICogICAgICAgIFRoaXMgaXMgb25seSBmb3IgdGhlIGZpcnN0IGZpbGUsIHRoZSByZXN0IG9mIGZpbGVzIHdpbGwgaGF2ZSBwcmVwYXJpbmcgdGltZSB1bnRpbCB0aGUgZmlsZSBiZWZvcmUgd2FzIHVwbG9hZGVkXG4gICAgICogICAgICAgIFRoZSBmaXJzdCBmaWxlIHdpbGwganVtcCBmcm9tIHVuZGVmIHRvIFwidXBsb2FkaW5nXCJcbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKlxuICAgICAqIElmIGBvbkNhbmNlbGAgZXZlbnQgb2N1cnJzIG91dHNpZGUgb24gYW55IG9uIHRoZVxuICAgICAqIEZpbGVJdGVtcyhlLmcuIGJ5IGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uIG9uIGBGaWxlSXRlbWApLFxuICAgICAqIHRoZSBleHRGaWxlSW5zdGFuY2Ugd2lsbCBjaGFuZ2UgaXRzIHN0YXR1cyBmcm9tICdwcmVwYXJpbmcnIHRvIHVuZGVmaW5lZC4gSWYgc28sXG4gICAgICogYWZ0ZXIgdGhlIHdhaXRpbmcgdGltZSB0aGUgdmFsdWUgb2Ygc3RhdHVzIHdpbGwgYmUgZm91bmQgYXMgdW5kZWZpbmVkIGFuZFxuICAgICAqIHdvbsK0dCBwZXJmb20gdGhlIHVwbG9hZCBmb3IgdGhhdCBmaWxlIG9yIGFueSBvdGhlciB0aGF0IGZpdHMgdGhhdCBjb25kaXRpb24uXG4gICAgICogVGhlbiwgZm9yIGVhY2ggZmlsZSBzZXRzIHRoZSBmaWxlIGluICd1cGxvYWRpbmcnIHN0YXR1cy5cbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKiBUaGVuIHVwbG9hZHMgdGhlIGZpbGUgd2l0aCB0aGUgYHhocmAgaW5zdGFuY2UuXG4gICAgICogQWZ0ZXIgdGhhdCwgdGhhdCBmaWxlIHJlY2lldmVzIHRoZSBuZXcgdXBsb2FkU3RhdHVzIHRoYXQgY2FuIGJlXG4gICAgICogICdzdWNjZXNzJywgJ2Vycm9yJyBvciAnYWJvcnRlZCdcbiAgICAgKiBhbmQgb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzIHRvIHVwbG9hZFxuICAgICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICAgKi9cbiAgICB2YXIgdXBsb2FkZmlsZXMgPSBmdW5jdGlvbiAobG9jYWxGaWxlcykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgbWlzc2luZ1VwbG9hZCwgbmV3RXh0RmlsZUxvY2FsLCBzZXJ2ZXJSZXNwb25zZXMsIGksIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIHVwbG9hZFJlc3BvbnNlLCBmYWtlUHJvZ3Jlc3MsIHVwbG9hZGVkRmlsZTtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHVwbG9hZGluZyBmbGFnIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vYXZvaWQgdG8gY2FsbCB1cGxvYWQgaWYgbm90IGFsbG93ZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZmxhZyBpcyBhbHJlYWR5IHRydWUgb3IgdGhlcmUgaXNudCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICAvL3VybCB3YXMgbm90IHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VwbG9hZGluZyB8fCBsb2NhbEZpbGVzLmxlbmd0aCA9PT0gMCB8fCAhdXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nVXBsb2FkID0gbG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1VwbG9hZEFibGVFeHRGaWxlKGV4dEZpbGUsIHZhbGlkYXRlRmlsZXNGbGFnKTtcbiAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkIHN0YXJ0OiBtaXNzaW5nVXBsb2FkXCIsIG1pc3NpbmdVcGxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAvL25vIG1pc3NpbmcgdG8gdXBsb2FkXG4gICAgICAgICAgICAgICAgICAgIGlmICghKG1pc3NpbmdVcGxvYWQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBzdGFydDogbm9GaWxlc01lc3NhZ2VcIiwgbWlzc2luZ1VwbG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL1BSRVBBUklORyBzdGFnZVxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGVGaWxlc0ZsYWdcIiwgdmFsaWRhdGVGaWxlc0ZsYWcpO1xuICAgICAgICAgICAgICAgICAgICBvblVwbG9hZFN0YXJ0ID09PSBudWxsIHx8IG9uVXBsb2FkU3RhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVXBsb2FkU3RhcnQobG9jYWxGaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcoaW5wdXRCdXR0b25JZCwgbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlc0ZsYWcsIGNsZWFuT25VcGxvYWQpIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBuZXdFeHRGaWxlTG9jYWwgPSBfX3NwcmVhZEFycmF5JDEoW10sIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMsIHRydWUpLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgudG9FeHRGaWxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSAobyBhbGVqbyBlbCBpc1VwbG9hZGluZyBvIGxvIGFsZWpvIHBhcmEgcXVlIHRlbmdhIG0sYXMgdGllbXBvIGFudGVzIGRlIGxhIHJlc3B1eWVzdGEpXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShuZXdFeHRGaWxlTG9jYWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRmlsZU1hbmFnZXJMb2cgYmVmb3JlIHNsZWVwXCIsIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpO1xuICAgICAgICAgICAgICAgICAgICAvL0FXQUlUIHdoZW4gcHJlcGFyaW5nIHRpbWUgaXMgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmFsIHNsZWVwIGZvciBhbGwgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBQcmVwYXJpbmcocHJlcGFyaW5nVGltZSldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNYW5hZ2VyTG9nIGJlZm9yZSBzbGVlcFwiLCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgLy9BV0FJVCB3aGVuIHByZXBhcmluZyB0aW1lIGlzIGdpdmVuXG4gICAgICAgICAgICAgICAgICAgIC8vZ2VuZXJhbCBzbGVlcCBmb3IgYWxsIGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpIDwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcy5sZW5ndGgpKSByZXR1cm4gWzMgLypicmVhayovLCAxNl07XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UgPSBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISgoX2EgPSBjdXJyZW50RXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlbGV0ZWQpKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTRdO1xuICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFnZSB0byBcInVwbG9hZGluZ1wiIGluIG9uZSBmaWxlIGFuZCBub3RpZnkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIC8vIFBSRVBBUklORyA9PiBVUExPQURJTkdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKCldO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhZ2UgdG8gXCJ1cGxvYWRpbmdcIiBpbiBvbmUgZmlsZSBhbmQgbm90aWZ5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAvLyBQUkVQQVJJTkcgPT4gVVBMT0FESU5HXG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFudFByZXBhcmluZ1RvVXBsb2FkT25lKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSBGSUxFU1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmYWtlVXBsb2FkKSByZXR1cm4gWzMgLypicmVhayovLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZmFrZUZ1aVVwbG9hZChjdXJyZW50RXh0RmlsZUluc3RhbmNlLCBEcm9wem9uZUxvY2FsaXplcildO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gNTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGZha2VQcm9ncmVzcyA8IDEwMCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDddO1xuICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgKz0gZ2V0UmFuZG9tSW50KDIxLCAzNSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UucHJvZ3Jlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzID4gMTAwID8gMTAwIDogZmFrZVByb2dyZXNzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oMTAwMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIF9iLnRyeXMucHVzaChbOCwgMTAsICwgMTFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRXh0RmlsZShjdXJyZW50RXh0RmlsZUluc3RhbmNlLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdChjdXJyZW50RXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkRmlsZSA9IHVwbG9hZFJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZmFrZSB1cGxvYWRSZXNwb25zZSB1cGxvYWRlZEZpbGVcIiwgdXBsb2FkZWRGaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgLy91cGRhdGUgaW5zdGFuY2VzXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gdXBsb2FkZWRGaWxlLnVwbG9hZFN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gdXBsb2FkZWRGaWxlLnVwbG9hZE1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICghIShjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpKSByZXR1cm4gWzMgLypicmVhayovLCAxM107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTM7XG4gICAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzLnB1c2godXBsb2FkUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxNV07XG4gICAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxNTtcbiAgICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgIHNldExvY2FsRmlsZXMoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBsb2FkIGdyb3VwIGZpbmlzaGVkIDpEXG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkRmluaXNoID09PSBudWxsIHx8IG9uVXBsb2FkRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZEZpbmlzaChzZXJ2ZXJSZXNwb25zZXMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgdmFyIGhhbmRsZUFib3J0VXBsb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGlzdEV4dEZpbGVMb2NhbCA9IEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QoaW5wdXRCdXR0b25JZCk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJBYm9ydGluZ1wiLCBsaXN0RXh0RmlsZUxvY2FsLCBpbnB1dEJ1dHRvbklkKTtcbiAgICAgICAgaWYgKCFsaXN0RXh0RmlsZUxvY2FsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0RXh0RmlsZUxvY2FsLmZvckVhY2goZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIgfHxcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS54aHIgIT09IG51bGwgJiYgZXh0RmlsZUluc3RhbmNlLnhociAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UueGhyLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiYWJvcnRlZFwiO1xuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gXCJVcGxvYWQgd2FzIGFib3J0ZWQgYnkgdXNlclwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICB2YXIgdmFsaWRhdGVkRnVpRmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGxvY2FsRmlsZXMsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBudW1iZXJPZlZhbGlkRmlsZXMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIHNldExvY2FsRmlsZXModmFsaWRhdGVkRnVpRmlsZUxpc3QpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbl0pO1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBjaGFuZ2VzIGluIHRoZSBleHRGaWxlIGxpc3QuXG4gICAgICogTWFrZXMgYSBuZXcgYXJyYXkgb2YgZXh0RmlsZSBhY2NvcmRpbmcgdG8gdGhlIFwiYmVoYXZpb3VyXCIgcHJvcC5cbiAgICAgKiBJZiBpc1VwbG9hZGluZyBzdGF0ZSBpcyBub3QgdHJ1ZSBhbmQgdGhlIGJlaGF2aW91ciBwcm9wcyBpcyBlcXVhbCB0byBcImFkZFwiLFxuICAgICAqIHRoZSBpbmNvbWluZyBleHRGaWxlTGlzdCBpcyBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpc3Qgb2YgZXh0RmlsZS5cbiAgICAgKiBPdGhlcndpc2UsIHRoZSBjb21wbGV0ZSBleHRGaWxlIGxpc3QgaXMgcmVwbGFjZWQgYnkgdGhlIGluY29tbWluZyBleHRGaWxlIGxpc3RcbiAgICAgKiBAcGFyYW0gZXh0RmlsZUxpc3QgdGhlIG5ldyBmaWxlTGlzdFxuICAgICAqIEBwYXJhbSBpc1VwbG9hZGluZyBhIGZsYWcgdGhhdCBkc2NyaWJlcyB3aHRoZXIgdGhlIHVwbG9hZGluZyBwcm9jZXNzIGlzIGFjdGl2ZSBvciBub3RcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlRmlsZXNDaGFuZ2UgPSBmdW5jdGlvbiAoZXh0RmlsZUxpc3QsIGlzVXBsb2FkaW5nKSB7XG4gICAgICAgIHZhciBmaW5hbEV4dEZpbGVMaXN0ID0gYmVoYXZpb3VyID09PSBcImFkZFwiICYmICFpc1VwbG9hZGluZ1xuICAgICAgICAgICAgPyBfX3NwcmVhZEFycmF5JDEoX19zcHJlYWRBcnJheSQxKFtdLCBsb2NhbEZpbGVzLCB0cnVlKSwgZXh0RmlsZUxpc3QsIHRydWUpIDogX19zcHJlYWRBcnJheSQxKFtdLCBleHRGaWxlTGlzdCwgdHJ1ZSk7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRvVXBsb2FkICYmICFpc1VwbG9hZGluZykge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF1dG9VcGxvYWRcIiwgZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgICAgICB1cGxvYWRmaWxlcyhmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGFjdGlvbiBvZiByZWNpZXZpbmcgdGhlIGZpbGVzIHdoZW4gdXNlciBzZWxlY3RzIHRoZSBmaWxlc1xuICAgICAqIGJ5IGNsaWNraW5nIHRoZSBJbnB1dEJ1dHRvblxuICAgICAqIEBwYXJhbSBldnQgZXZlbnQgaGFuZGxlciBmb3IgZ2V0dGluZyBmaWxlcyBmcm9tIGlucHV0IGVsZW1lbnQgdGFyZ2V0XG4gICAgICovXG4gICAgdmFyIGhhbmRsZUNoYW5nZUlucHV0ID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2lmIChpc1VwbG9hZGluZykgcmV0dXJuO1xuICAgICAgICB2YXIgZmlsZUxpc3QgPSBldnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICB2YXIgZXh0RmlsZUxpc3RPdXRwdXQgPSBmaWxlTGlzdFRvRXh0RmlsZUFycmF5KGZpbGVMaXN0KTtcbiAgICAgICAgLy92YWxpZGF0ZSBkdWkgZmlsZXNcbiAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IG91dGVyRnVpVmFsaWRhdGlvbihleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgICAgICBpZiAoYXV0b0NsZWFuKSB7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBleHRGaWxlTGlzdE91dHB1dC5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaW5pdCB4aHIgb24gZWFjaCBkdWkgZmlsZVxuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSB0b1VwbG9hZGFibGVFeHRGaWxlTGlzdChleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgIC8vIENsZWFuIGlucHV0IGVsZW1lbnQgdG8gdHJpZ2dlciBvbkNoYW5nZSBldmVudCBvbiBpbnB1dFxuICAgICAgICBjbGVhbklucHV0KGlucHV0UmVmLmN1cnJlbnQpO1xuICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgdmFsaWRhdGlvbiBwcm9jZXNzIGZvciBlYWNoIEZ1aUZpbGVcbiAgICAgKiBvdXRzaWRlIHRoZSBEcm9wem9uZU5lbyBjb21wb25lbnQgZmlsZSBkZWNsYXJhdGlvblxuICAgICAqIGFjY29yZGluZyB0byB0aGUgY3JpdGVyaWEgZ2l2ZW4gYnkgbWF4RmlsZXMgYW5kIG1heEZpbGVTaXplIGFuZCBhY2NlcHQgcHJvcHNcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbGxzIHZhbGlkYXRlRnVpRmlsZUxpc3QgYW5kIHNldHMgdGhlIHZhbGlkIHByb3Agb2YgRnVpRmlsZSB0byBcInRydWVcIiBvciBcImZhbHNlXCJcbiAgICAgKiBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXZpZHVhbCB2YWxpZGF0aW9uLlxuICAgICAqIEl0IGFsc28gYWRkIHRoZSBsaXN0IG9mIGVycm9ycy5cbiAgICAgKiBAcGFyYW0gZnVpRmlsZUxpc3RUb1ZhbGlkYXRlIHRoZSBmdWlGaWxlTGlzdCB0byB2YWxpZGF0ZVxuICAgICAqIEByZXR1cm5zIGEgbGlzdCBvZiB2YWxpZGF0ZWQgRnVpRmlsZSBsaXN0XG4gICAgICovXG4gICAgdmFyIG91dGVyRnVpVmFsaWRhdGlvbiA9IGZ1bmN0aW9uIChmdWlGaWxlTGlzdFRvVmFsaWRhdGUpIHtcbiAgICAgICAgdmFyIGxvY2FsVmFsaWRhdG9yID0geyBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsIGFjY2VwdDogYWNjZXB0IH07XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0ZWRGdWlGaWxlTGlzdCBwcmVcIiwgZnVpRmlsZUxpc3RUb1ZhbGlkYXRlKTtcbiAgICAgICAgdmFyIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSBudW1iZXJPZlZhbGlkRmlsZXM7XG4gICAgICAgIGlmIChiZWhhdmlvdXIgPT09IFwicmVwbGFjZVwiKSB7XG4gICAgICAgICAgICAvL3JlLXN0YXJ0IG51bWJlciBvZiB2YWxpZHNcbiAgICAgICAgICAgIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWxpZGF0ZWRGdWlGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QoZnVpRmlsZUxpc3RUb1ZhbGlkYXRlLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gZmluYWxOdW1iZXJPZlZhbGlkcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInZhbGlkYXRlZEZ1aUZpbGVMaXN0IGFmdFwiLCB2YWxpZGF0ZWRGdWlGaWxlTGlzdCk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRGdWlGaWxlTGlzdDtcbiAgICB9O1xuICAgIC8vIEhBTkRMRVJTIGZvciBDTElDS1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJIQUFBQUFBQUFcIik7XG4gICAgICAgIC8vaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaGFuZGxlQ2xpY2tJbnB1dChpbnB1dFJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogcmVzZXQgdGhlIGNvbXBsZXRlIGZpbGUgbGlzdFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVSZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKFtdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhbmRsZUNsZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID09PSBcImJlZm9yZVwiICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQnV0dG9ucywgeyBkaXNhYmxlZDogZGlzYWJsZWQsIGFib3J0QnV0dG9uOiBpc1VwbG9hZGluZyA/IGFib3J0QnV0dG9uIDogdW5kZWZpbmVkLCBvbkFib3J0OiBoYW5kbGVBYm9ydFVwbG9hZCwgZGVsZXRlQnV0dG9uOiBkZWxldGVCdXR0b24sIG9uRGVsZXRlOiAhaXNVcGxvYWRpbmcgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgdXBsb2FkQnV0dG9uOiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9VcGxvYWQgPyB1cGxvYWRCdXR0b24gOiB1bmRlZmluZWQsIG9uVXBsb2FkOiAhYXV0b1VwbG9hZCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9IDogdW5kZWZpbmVkLCBjbGVhbkJ1dHRvbjogdmFsaWRhdGVGaWxlc0ZsYWcgJiYgIWlzVXBsb2FkaW5nICYmICFhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICA/IGNsZWFuQnV0dG9uXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG9uQ2xlYW46IGhhbmRsZUNsZWFuLCBzdHlsZTogY29udGFpbmVyU3R5bGUsIGNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLCB0b3A6IHRydWUgfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE1hdGVyaWFsQnV0dG9uLCBfX2Fzc2lnbiQxKHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgc3R5bGU6IHN0eWxlLCBjb2xvcjogY29sb3IsIHZhcmlhbnQ6IHZhcmlhbnQsIHRleHRUcmFuc2Zvcm06IHRleHRUcmFuc2Zvcm0sIHRleHRDb2xvcjogdGV4dENvbG9yLCByZXNldFN0eWxlczogcmVzZXRTdHlsZXMsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBkaXNhYmxlUmlwcGxlOiBkaXNhYmxlUmlwcGxlLCBkYXJrTW9kZTogZGFya01vZGUsIGlkOiBpbnB1dEJ1dHRvbklkIH0sIHJlc3QpLCBjaGlsZHJlbiB8fCBsYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXRIaWRkZW4sIHsgbXVsdGlwbGU6IG1heEZpbGVzID8gbWF4RmlsZXMgPiAxIDogdHJ1ZSwgYWNjZXB0OiBhY2NlcHQgfHwgXCJcIiwgaW5wdXRSZWY6IGlucHV0UmVmLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlSW5wdXQgfSksXG4gICAgICAgIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9PT0gXCJhZnRlclwiICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQnV0dG9ucywgeyBkaXNhYmxlZDogZGlzYWJsZWQsIGFib3J0QnV0dG9uOiBpc1VwbG9hZGluZyA/IGFib3J0QnV0dG9uIDogdW5kZWZpbmVkLCBvbkFib3J0OiBoYW5kbGVBYm9ydFVwbG9hZCwgZGVsZXRlQnV0dG9uOiBkZWxldGVCdXR0b24sIG9uRGVsZXRlOiAhaXNVcGxvYWRpbmcgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgdXBsb2FkQnV0dG9uOiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9VcGxvYWQgPyB1cGxvYWRCdXR0b24gOiB1bmRlZmluZWQsIG9uVXBsb2FkOiAhYXV0b1VwbG9hZCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9IDogdW5kZWZpbmVkLCBjbGVhbkJ1dHRvbjogdmFsaWRhdGVGaWxlc0ZsYWcgJiYgIWlzVXBsb2FkaW5nICYmICFhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICA/IGNsZWFuQnV0dG9uXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG9uQ2xlYW46IGhhbmRsZUNsZWFuLCBzdHlsZTogY29udGFpbmVyU3R5bGUsIGNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLCB0b3A6IGZhbHNlIH0pKSkpO1xufTtcblxuLy9SZWFjdC5IVE1MUHJvcHM8SFRNTERpdkVsZW1lbnQ+XG52YXIgZGVmYXVsdEF2YXRhclByb3BzID0ge1xuICAgIHZhcmlhbnQ6IFwic3F1YXJlXCIsXG4gICAgYWx0OiBcImF2YXRhclwiLFxuICAgIGVtcHR5TGFiZWw6IFwiQWdyZWdhciBmb3RvXCIsXG4gICAgY2hhbmdlTGFiZWw6IFwiQ2FtYmlhciBmb3RvXCIsXG4gICAgbG9hZGluZ0xhYmVsOiBcIkxvYWRpbmcuLi5cIixcbiAgICByZWFkT25seTogZmFsc2UsXG4gICAgLy9zbWFydDogZmFsc2UsXG4gICAgc21hcnRJbWdGaXQ6IFwiY2VudGVyXCIsXG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDIwMHB4O1xcbiAgaGVpZ2h0OiAyMDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNDg2KTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lci5zcXVhcmUge1xcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lci5jaXJjbGUge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1pbWFnZSB7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXI6aG92ZXIgLmZ1aS1hdmF0YXItbGFiZWwuaGlkZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1sYWJlbCB7XFxuICBtYXJnaW46IDA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQ4Nik7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb2xvcjogd2hpdGU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIgLmZ1aS1hdmF0YXItbGFiZWwuaGlkZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1sYWJlbDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDcxLCA3MSwgNzEsIDAuNzQpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XCIpO1xuXG52YXIgdXNlQXZhdGFyU3R5bGUgPSBmdW5jdGlvbiAoYXZhdGFySWQsIGJvcmRlclJhZGl1cykge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBpZEF2YXRhclN0eWxlcyA9IF9hWzBdLCBzZXRJZEF2YXRhclN0eWxlcyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc3R5bGVJbmplY3RlZCA9IF9iWzBdLCBzZXRTdHlsZUluamVjdGVkID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgY2xhc3NOYW1lQm9yZGVyID0gX2NbMF0sIHNldENsYXNzTmFtZUJvcmRlciA9IF9jWzFdO1xuICAgIC8vY29uc29sZS5sb2coXCJib3JkZXJSYWRpdXNcIixib3JkZXJSYWRpdXMpO1xuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBkeW5hbWljIGNzcyBzaGVldCBmb3IgYXZhdGFyXG4gICAgICogQHBhcmFtIGJvcmRlclJhZGl1cyB0aGUgYm9yZGVyIHJhZGl1c1xuICAgICAqIEByZXR1cm5zIGEgZHluYW1pYyBjc3Mgc2hlZXRcbiAgICAgKi9cbiAgICB2YXIgbWFrZUR5bmFtaWNBdmF0YXJDU1NSdWxlcyA9IGZ1bmN0aW9uIChhdmF0YXJJZCwgYm9yZGVyUmFkaXVzKSB7XG4gICAgICAgIHZhciBmaW5hbElkU3R5bGUgPSAhYm9yZGVyUmFkaXVzID8gXCItZGVmYXVsdFwiIDogXCItXCIuY29uY2F0KGF2YXRhcklkKTtcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBEeW5hbWlDU1MubWFrZVN0eWxlU2hlZXQoe1xuICAgICAgICAgICAgaWQ6IFwiZnVpLWF2YXRhci1zdHlsZXNcIiArIGZpbmFsSWRTdHlsZSxcbiAgICAgICAgICAgIHNoZWV0UnVsZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWJvcmRlclwiICsgZmluYWxJZFN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIlwiLmNvbmNhdChib3JkZXJSYWRpdXMgfHwgXCI2cHhcIiwgXCIgIWltcG9ydGFudFwiKSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3R5bGVTaGVldDtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXZhdGFyLCBkZWxldGluZyBpbml0XCIsIHN0eWxlSW5qZWN0ZWQsIGlkQXZhdGFyU3R5bGVzKTtcbiAgICAgICAgICAgIGlmIChzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgY2F0Y2ggY3NzIGRlbGV0ZVwiKTtcbiAgICAgICAgICAgICAgICBEeW5hbWlDU1MucmVtb3ZlU3R5bGVTaGVldChpZEF2YXRhclN0eWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRJZEF2YXRhclN0eWxlcyhcIlwiKTtcbiAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQoZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLyogICAgICBpZiAoIWJvcmRlclJhZGl1cykge1xuICAgICAgICAgICAgICAgICBEeW5hbWlDU1MucmVtb3ZlU3R5bGVTaGVldChpZEF2YXRhclN0eWxlcyk7XG4gICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICB9ICovXG4gICAgICAgIHZhciBpZFN0eWxlID0gXCJcIjtcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBtYWtlRHluYW1pY0F2YXRhckNTU1J1bGVzKGF2YXRhcklkLCBib3JkZXJSYWRpdXMpO1xuICAgICAgICAvL2NoZWNrIGlmIGRlZmF1bHQgaXMgaW4gRE9NXG4gICAgICAgIGlmICghYm9yZGVyUmFkaXVzICYmICFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoRHluYW1pQ1NTLmV4aXN0U3R5bGVTaGVldChcImZ1aS1hdmF0YXItc3R5bGVzLWRlZmF1bHRcIikpIHtcbiAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIHNldElkQXZhdGFyU3R5bGVzKFwiZnVpLWF2YXRhci1zdHlsZXMtZGVmYXVsdFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgICAgICBzZXRJZEF2YXRhclN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgY2xhc3NuYW1lIHdhcyBhZGRlZFxuICAgICAgICAgICAgLy8gaWYgeWVzLCBlZGl0IGNzc1xuICAgICAgICAgICAgLy8gaWYgbm90IGluc2VydCBjc3NcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdmF0YXIsIG5vIGNzcywgaW5zZXJ0aW5nXCIpO1xuICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgbm8gY3NzLCBpbnNlcnRlZCBPS1wiLCBpZFN0eWxlKTtcbiAgICAgICAgICAgIHNldElkQXZhdGFyU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgY2F0Y2ggY3NzLCBtb2RpZml5aW5nXCIsIGlkQXZhdGFyU3R5bGVzKTtcbiAgICAgICAgICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldChpZEF2YXRhclN0eWxlcywgc3R5bGVTaGVldC5zaGVldFJ1bGVzIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRDbGFzc05hbWVCb3JkZXIoXCJmdWktYXZhdGFyLWJvcmRlci1cIiArIGF2YXRhcklkKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2JvcmRlclJhZGl1c10pO1xuICAgIHJldHVybiBjbGFzc05hbWVCb3JkZXI7XG59O1xuXG52YXIgQmFzZVByZXBhcmluZ0xvYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgLy9vbkNsaWNrLFxuICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsIFxuICAgIC8vY2xhc3NOYW1lLFxuICAgIHJhZGl1cyA9IHByb3BzLnJhZGl1cywgeCA9IHByb3BzLngsIHkgPSBwcm9wcy55LCB3aWR0aCA9IHByb3BzLndpZHRoO1xuICAgIHZhciBmaW5hbFJhZGl1cyA9IHJhZGl1cyB8fCA0NjtcbiAgICB2YXIgZmluYWxYID0geCB8fCA1MDtcbiAgICB2YXIgZmluYWxZID0geSB8fCA1MDtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHhtbG5zWGxpbms6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgc3R5bGU6IGZpbmFsU3R5bGUsIHZpZXdCb3g6IFwiMCAwIDEwMCAxMDBcIiwgcHJlc2VydmVBc3BlY3RSYXRpbzogXCJ4TWlkWU1pZFwiIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjaXJjbGVcIiwgeyBjeDogXCJcIi5jb25jYXQoZmluYWxYKSwgY3k6IFwiXCIuY29uY2F0KGZpbmFsWSksIHI6IFwiXCIuY29uY2F0KGZpbmFsUmFkaXVzKSwgZmlsbDogXCJub25lXCIsIHN0cm9rZTogY29sb3IgfHwgXCIjMTRmZjAwXCIsIHN0cm9rZVdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCB8fCA4LCBcInB4XCIpLCBzdHJva2VEYXNoYXJyYXk6IFwiMTY0LjkzMzYxNDMxMzQ2NDE1IDEwMC45Nzc4NzE0Mzc4MjEzOFwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYW5pbWF0ZVRyYW5zZm9ybVwiLCB7IGF0dHJpYnV0ZU5hbWU6IFwidHJhbnNmb3JtXCIsIHR5cGU6IFwicm90YXRlXCIsIHJlcGVhdENvdW50OiBcImluZGVmaW5pdGVcIiwgZHVyOiBcIjFzXCIsIHZhbHVlczogXCIwIFwiLmNvbmNhdChmaW5hbFgsIFwiIFwiKS5jb25jYXQoZmluYWxYLCBcIjszNjAgXCIpLmNvbmNhdChmaW5hbFgsIFwiIFwiKS5jb25jYXQoZmluYWxYKSwga2V5VGltZXM6IFwiMDsxXCIgfSkpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktbG9hZGVyLWNvbnRhaW5lciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDEpO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5maWxlcy11aS1sb2FkZXItY29udGFpbmVyLmNsaWNrYWJsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5maWxlcy11aS1sb2FkZXItY29udGFpbmVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42MSk7XFxufVwiKTtcblxudmFyIExvYWRlckNvbnRhaW5lciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHN0eWxlID0gcHJvcHMuc3R5bGUsIHNpemUgPSBwcm9wcy5zaXplLCBvbkNsaWNrID0gcHJvcHMub25DbGljaztcbiAgICB2YXIgZmluYWxTaXplID0gc2l6ZSA/IHBhcnNlU2l6ZShzaXplKSA6IHVuZGVmaW5lZDtcbiAgICAvL2NvbnN0IGlzQ2xpY2thYmxlID0gb25DbGljayAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IG9uQ2xpY2tcbiAgICAgICAgPyBcImZpbGVzLXVpLWxvYWRlci1jb250YWluZXIgY2xpY2thYmxlXCJcbiAgICAgICAgOiBcImZpbGVzLXVpLWxvYWRlci1jb250YWluZXJcIjtcbiAgICB2YXIgaGFuZGxlQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpO1xuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgb25DbGljazogaGFuZGxlQ2xpY2ssIGNsYXNzTmFtZTogY2xhc3NOYW1lID8gXCJcIi5jb25jYXQoZmluYWxDbGFzc05hbWUsIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKSA6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBzdHlsZSksIHsgaGVpZ2h0OiBmaW5hbFNpemUsIHdpZHRoOiBmaW5hbFNpemUgfSkgfSwgY2hpbGRyZW4pKTtcbn07XG5cbnZhciBJbmZpbml0ZUxvYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvbkNsaWNrID0gcHJvcHMub25DbGljaywgXG4gICAgLy90ZXh0LFxuICAgIHNpemUgPSBwcm9wcy5zaXplO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkZXJDb250YWluZXIsIHsgb25DbGljazogb25DbGljaywgc2l6ZTogc2l6ZSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCYXNlUHJlcGFyaW5nTG9hZGVyLCB7IHNpemU6IHNpemUgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgfSB9LCBvbkNsaWNrICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC43NSlcIiwgc2l6ZTogNDUsIG9uQ2xpY2s6IG9uQ2xpY2sgfSkpKSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVwiKTtcblxudmFyIExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgdmlzaWJsZSA9IHByb3BzLnZpc2libGUsIG90aGVyUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIiwgXCJ2aXNpYmxlXCJdKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoY2xhc3NOYW1lIHx8IFwiXCIsIFwiZmlsZXMtdWktbGF5ZXJcIik7XG4gICAgaWYgKHZpc2libGUpXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbiQxKHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IHN0eWxlIH0sIG90aGVyUHJvcHMpLCBjaGlsZHJlbikpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxudmFyIEltYWdlUHJldmlld0RlZmF1bHRQcm9wcyA9IHtcbiAgICAvL3dpZHRoOiBcIjEwMCVcIixcbiAgICAvL2hlaWdodDogXCIxMDAlXCIsXG4gICAgYWx0OiBcImltYWdlLXByZXZpZXdcIixcbiAgICAvL2NsYXNzTmFtZTogXCJmdWktaW1hZ2UtcHJldmlld1wiXG4gICAgc21hcnRJbWdGaXQ6IFwib3JpZW50YXRpb25cIlxufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZ1aS1pbWFnZS1wcmV2aWV3IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxufVwiKTtcblxudmFyIEltYWdlUHJldmlldyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IG1lcmdlUHJvcHMocHJvcHMsIEltYWdlUHJldmlld0RlZmF1bHRQcm9wcyksIHNyYyA9IF9hLnNyYywgYWx0ID0gX2EuYWx0LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQsIG9uRXJyb3IgPSBfYS5vbkVycm9yLCBcbiAgICAvL3NtYXJ0LFxuICAgIHNtYXJ0SW1nRml0ID0gX2Euc21hcnRJbWdGaXQsIHN0eWxlID0gX2Euc3R5bGUsIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZTtcbiAgICAvL2NvbnNvbGUubG9nKFwiSW1hZ2VQcmV2aWV3IHNtYXJ0SW1nRml0XCIsc21hcnRJbWdGaXQpO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKFt1bmRlZmluZWQsIHVuZGVmaW5lZF0pLCBfYyA9IF9iWzBdLCBmaW5hbEhlaWdodCA9IF9jWzBdLCBmaW5hbFdpZHRoID0gX2NbMV0sIHNldGZpbmFsRGltZW5zaW9ucyA9IF9iWzFdO1xuICAgIC8vLy9jb25zb2xlLnRhYmxlKHsgc3JjLCBhbHQsIGNsYXNzTmFtZSwgc3R5bGUsIHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgdmFyIF9kID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgc291cmNlID0gX2RbMF0sIHNldFNvdXJjZSA9IF9kWzFdO1xuICAgIC8qICBjb25zdCBbb3JpZW50YXRpb24sIHNldE9yaWVudGF0aW9uXSA9IFJlYWN0LnVzZVN0YXRlPFxuICAgICAgXCJsYW5kc2NhcGVcIiB8IFwicG9ydHJhaXRcIiB8IHVuZGVmaW5lZFxuICAgID4odW5kZWZpbmVkKTsgKi9cbiAgICB2YXIgZ2V0U291cmNlID0gZnVuY3Rpb24gKHNyYykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV3SW1hZ2VTcmM7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgcmVhZEFzRGF0YVVSTChzcmMpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIG5ld0ltYWdlU3JjID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRTdHJTb3VyY2UobmV3SW1hZ2VTcmMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIHZhciBoYW5kbGVTZXRTdHJTb3VyY2UgPSBmdW5jdGlvbiAoaW1hZ2VTb3VyY2UpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZpbmFsSGVpZ2h0LCBmaW5hbFdpZHRoLCBvcmllbnRhdGlvbl8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVTZXRTdHJTb3VyY2VcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTb3VyY2UgPT09IFwiXCIgfHwgIWltYWdlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlU2V0U3RyU291cmNlIHJldHVyblwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghIXNtYXJ0SW1nRml0KSByZXR1cm4gWzMgLypicmVhayovLCAxXTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZVNldFN0clNvdXJjZSBubyBpbWdmaXRcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAvL2lmIG5vdCBnaXZlblxuICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZ2V0SW1hZ2VPcmllbnRhdGlvbihpbWFnZVNvdXJjZSldO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25fMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZVNldFN0clNvdXJjZSBvcmllbnRhdGlvbiBvYnRhaW5lZFwiLCBvcmllbnRhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmllbnRhdGlvbl8xID09PSBcImxhbmRzY2FwZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc21hcnRJbWdGaXQgPT09IFwib3JpZW50YXRpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbWFydEltZ0ZpdCA9PT0gXCJjZW50ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHNldGZpbmFsRGltZW5zaW9ucyhbZmluYWxIZWlnaHQsIGZpbmFsV2lkdGhdKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlKGltYWdlU291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvL2lmIG5vdCB1bmRlZmluZWRcbiAgICAgICAgaWYgKCFzcmMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkltYWdlUHJldmlldyBUaGVyZSBpcyBzb3VyY2UgOkRcIik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3JjID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAvL2lmIGEgdXJsIHN0cmluZyBpcyBnaXZlbiwgYXNzaWduIGl0IGRpcmVjdGx5XG4gICAgICAgICAgICBoYW5kbGVTZXRTdHJTb3VyY2Uoc3JjKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vaWYgYSBGaWxlIG9iamVjdCBpcyBnaXZlbiwgY2hlY2sgaWYgaXMgYSBzdXBwb3J0ZWQgZm9ybWF0IGFuZCByZWFkIGl0XG4gICAgICAgICAgICB2YXIgaGVhZGVyTWltZSA9IHNyYy50eXBlID8gc3JjLnR5cGUuc3BsaXQoXCIvXCIpWzBdIDogXCJvY3RldFwiO1xuICAgICAgICAgICAgaWYgKGhlYWRlck1pbWUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICAgICAgICAgIC8vc2V0IHRoZSBpbWFnZSBzb3VyY2UgYW5kIGNyZWF0ZSB0aGUgdXJpIHN0cmluZyBpZiBpdCdzIGEgc3VwcG9ydGVkIGltYWdlIGZvcm1hdFxuICAgICAgICAgICAgICAgIGdldFNvdXJjZShzcmMpO1xuICAgICAgICAgICAgICAgIC8vaWYgbm90IGltYWdlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbc3JjXSk7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwiSW1hZ2VQcmV2aWV3XCIsIHNyYywgc291cmNlKTtcbiAgICAvKiBjb25zdCBmaW5hbFdpZHRoOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgd2lkdGggfHwgKG9yaWVudGF0aW9uID09PSBcImxhbmRzY2FwZVwiICYmIHNtYXJ0ID8gXCIxMDAlXCIgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGZpbmFsSGVpZ2h0OiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgaGVpZ2h0IHx8IChvcmllbnRhdGlvbiA9PT0gXCJwb3J0cmFpdFwiICYmIHNtYXJ0ID8gXCIxMDAlXCIgOiB1bmRlZmluZWQpOyAqL1xuICAgIC8vY29uc29sZS5sb2coXCJJbWFnZSByZXN1bHRcIiwgc3JjLCBzb3VyY2UsIGZpbmFsSGVpZ2h0LCBmaW5hbFdpZHRoKTtcbiAgICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVFcnJvclwiLCBvbkVycm9yKTtcbiAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHNyYyAmJiBzb3VyY2UgJiYgKGZpbmFsSGVpZ2h0IHx8IGZpbmFsV2lkdGgpICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgXG4gICAgICAgIC8vb25Mb2FkPXtoYW5kbGVMb2FkfVxuICAgICAgICBzdHlsZTogc3R5bGUgfHwge30sIG9uQ2xpY2s6IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LCB3aWR0aDogZmluYWxXaWR0aCwgaGVpZ2h0OiBmaW5hbEhlaWdodCwgc3JjOiBzb3VyY2UsIGFsdDogYWx0LCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgb25FcnJvcjogaGFuZGxlRXJyb3IgfSkpKSk7XG59O1xuXG4vKipcbiAqXG4gKiBEZW1vczpcbiAqXG4gKiAtIFtBdmF0YXJdKGh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9jb21wb25lbnRzL2F2YXRhcilcbiAqXG4gKiBBUEk6XG4gKlxuICogLSBbQXZhdGFyIEFQSV0oaHR0cHM6Ly93d3cuZmlsZXMtdWkuY29tL2FwaS9hdmF0YXIvKVxuICovXG52YXIgQXZhdGFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gbWVyZ2VQcm9wcyhwcm9wcywgZGVmYXVsdEF2YXRhclByb3BzKSwgcmVhZE9ubHkgPSBfYS5yZWFkT25seSwgc3JjID0gX2Euc3JjLCBhbHQgPSBfYS5hbHQsIGFjY2VwdCA9IF9hLmFjY2VwdCwgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSwgZW1wdHlMYWJlbCA9IF9hLmVtcHR5TGFiZWwsIGNoYW5nZUxhYmVsID0gX2EuY2hhbmdlTGFiZWwsIHZhcmlhbnQgPSBfYS52YXJpYW50LCBib3JkZXJSYWRpdXMgPSBfYS5ib3JkZXJSYWRpdXMsIHVwbG9hZGluZ0xhYmVsID0gX2EubG9hZGluZ0xhYmVsLCBpc1Vsb2FkaW5nID0gX2EuaXNMb2FkaW5nLCBvbkVycm9yID0gX2Eub25FcnJvciwgc21hcnRJbWdGaXQgPSBfYS5zbWFydEltZ0ZpdCwgc3R5bGUgPSBfYS5zdHlsZSwgcmVzdCA9IF9fcmVzdChfYSwgW1wicmVhZE9ubHlcIiwgXCJzcmNcIiwgXCJhbHRcIiwgXCJhY2NlcHRcIiwgXCJvbkNoYW5nZVwiLCBcImVtcHR5TGFiZWxcIiwgXCJjaGFuZ2VMYWJlbFwiLCBcInZhcmlhbnRcIiwgXCJib3JkZXJSYWRpdXNcIiwgXCJsb2FkaW5nTGFiZWxcIiwgXCJpc0xvYWRpbmdcIiwgXCJvbkVycm9yXCIsIFwic21hcnRJbWdGaXRcIiwgXCJzdHlsZVwiXSk7XG4gICAgLy9jb25zb2xlLmxvZyhcIkF2YXRhciBzbWFydEltZ0ZpdFwiLCBzbWFydEltZ0ZpdCk7XG4gICAgdmFyIGlucHV0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vY29uc3QgYXZhdGFySWQgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBhdmF0YXJJZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpICsgXCJcIjsgfSwgW10pO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZUJvcmRlciA9IHVzZUF2YXRhclN0eWxlKGF2YXRhcklkLnJlcGxhY2UoXCI6XCIsIFwiXCIpLnJlcGxhY2UoXCI6XCIsIFwiXCIpLCBib3JkZXJSYWRpdXMpO1xuICAgIC8vY29uc29sZS5sb2coXCJmaW5hbENsYXNzTmFtZUJvcmRlclwiLCBmaW5hbENsYXNzTmFtZUJvcmRlcik7XG4gICAgdmFyIGhhbmRsZUNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIGFsZXJ0KFwiQWdyZWdhciBmb3Rvb29vb29vXCIpO1xuICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpY2soKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVDaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdmFyIGZpbGVMaXN0ID0gZXZ0LnRhcmdldC5maWxlcztcbiAgICAgICAgdmFyIGZpbGVMaXN0T3V0cHV0ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBmID0gdm9pZCAwOyAoZiA9IGZpbGVMaXN0W2ldKTsgaSsrKSB7XG4gICAgICAgICAgICBmaWxlTGlzdE91dHB1dC5wdXNoKGYpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShmaWxlTGlzdE91dHB1dFswXSk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJBdmF0YXIgZXJyb3JcIiwgZXZ0KTtcbiAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKGV2dCk7XG4gICAgfTtcbiAgICBpZiAoIWZpbmFsQ2xhc3NOYW1lQm9yZGVyKVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24kMSh7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLW1haW4tY29udGFpbmVyXCIuY29uY2F0KHZhcmlhbnQgPT09IFwiY2lyY2xlXCIgPyBcIiBjaXJjbGVcIiA6IFwiXCIsIFwiIFwiKS5jb25jYXQoZmluYWxDbGFzc05hbWVCb3JkZXIpLCBzdHlsZTogc3R5bGUgfSwgcmVzdCksXG4gICAgICAgICAgICAgICAgaXNVbG9hZGluZyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWxhYmVsXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5maW5pdGVMb2FkZXIsIHsgc2l6ZTogNTAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRpbmdMYWJlbCkpKSA6IHNyYyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlUHJldmlldywgeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1pbWFnZVwiLCBzcmM6IHNyYywgYWx0OiBhbHQsIG9uRXJyb3I6IGhhbmRsZUVycm9yLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1sYWJlbFwiIH0sIGVtcHR5TGFiZWwpKSxcbiAgICAgICAgICAgICAgICAhcmVhZE9ubHkgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICFpc1Vsb2FkaW5nICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItbGFiZWwgaGlkZVwiLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9LCBzcmMgPyBjaGFuZ2VMYWJlbCA6IGVtcHR5TGFiZWwpKSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dEhpZGRlbiwgeyBtdWx0aXBsZTogZmFsc2UsIGFjY2VwdDogYWNjZXB0IHx8IFwiaW1hZ2UvKlwiLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlSW5wdXQsIGlucHV0UmVmOiBpbnB1dFJlZiB9KSkpKSkpO1xuICAgIH1cbn07XG4vKipcbiAqIGNyZWF0ZXMgYSBkeW5hbWljIGNzcyBzaGVldCBmb3IgYXZhdGFyXG4gKiBAcGFyYW0gYm9yZGVyUmFkaXVzIHRoZSBib3JkZXIgcmFkaXVzXG4gKiBAcmV0dXJucyBhIGR5bmFtaWMgY3NzIHNoZWV0XG4gKi9cbi8qIGNvbnN0IG1ha2VEeW5hbWljQXZhdGFyQ1NTUnVsZXMgPSAoXG4gIGJvcmRlclJhZGl1czogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBEeW5hbWljU2hlZXQgPT4ge1xuICBjb25zdCBzdHlsZVNoZWV0OiBEeW5hbWljU2hlZXQgPSBEeW5hbWlDU1MubWFrZVN0eWxlU2hlZXQoe1xuICAgIGlkOiBcImF2YXRhci1zdHlsZXNcIixcbiAgICBzaGVldFJ1bGVzOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWJvcmRlclwiLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcbiAgcmV0dXJuIHN0eWxlU2hlZXQ7XG59OyAqL1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciB7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg1OCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBtaW4taGVpZ2h0OiAxMDBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgd2lkdGg6IDMyMHB4O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMzIwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFxuICBnYXA6IDVweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMHB4O1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIgLmZpbGUtY2FyZC1pY29uLWxheWVyIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwcHg7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciAuZmlsZS1jYXJkLWljb24tbGF5ZXIgaW1nIHtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciAuZmlsZS1jYXJkLWljb24tbGF5ZXIuYmx1ciBpbWcge1xcbiAgZmlsdGVyOiBibHVyKDRweCk7XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMjAwJTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIgLmZpbGUtY2FyZC1zdGF0dXMtbGF5ZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEge1xcbiAgcGFkZGluZy1yaWdodDogMTBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBsaW5lLWhlaWdodDogMTlweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gMTAwcHgpO1xcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xcbiAgY29sb3I6IGJsYWNrO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhLmRhcmstbW9kZSB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhIC5maWxlLWNhcmQtc2l6ZSB7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgZm9udC1zaXplOiAwLjlyZW07XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEgLmZpbGUtY2FyZC1uYW1lIHtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMTtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEgLmZpbGUtY2FyZC1uYW1lLm5vdC1hbGxvd2VkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTgwLCAxNiwgMTYsIDAuNyk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLXVwbG9hZC1sYXllci1jb250YWluZXIge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC4yKSwgcmdiYSgwLCAwLCAwLCAwLjM1KSwgcmdiYSgwLCAwLCAwLCAwLjYyNSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpKTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgZm9udC1zaXplOiAxZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMiksIHJnYmEoMCwgMCwgMCwgMC4zKSwgcmdiYSgwLCAwLCAwLCAwLjQpLCByZ2JhKDAsIDAsIDAsIDAuNzUpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSkpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8ge1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTtcXG4gIGhlaWdodDogMTAwcHg7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBzY3JvbGxiYXItY29sb3I6IHJnYmEoMTAwLCAxMDgsIDEyNywgMC42NjI3NDUwOTgpIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbzo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDlweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm86Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbzo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDAsIDEwOCwgMTI3LCAwLjY2Mjc0NTA5OCk7XFxuICBib3JkZXItcmFkaXVzOiAyMHB4O1xcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8gLmZpbGVzLXVpLWZpbGUtY2FyZC1pbmZvLWxheWVyLWhlYWRlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICAvKiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1O1xcbiAgcmlnaHQ6IDU7ICovXFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvIC5oZWFkaW5nIHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBwYWRkaW5nOiAwIDVweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8gLmxhYmVsIHtcXG4gIHBhZGRpbmc6IDAgNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDM5OTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5jbGlja2FibGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4vKiAuZmlsZXMtdWktZmlsZS1pY29uIHtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgbWluLXdpZHRoOiAxOXB4O1xcbiAgbWluLWhlaWdodDogMTlweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuNjUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgJjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC44NSk7XFxuICB9XFxuICAmLmRhcmstbW9kZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC42NSk7XFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC44NSk7XFxuICAgIH1cXG4gIH1cXG59ICovXCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZmlsZS1pY29uIHtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgbWluLXdpZHRoOiAxOXB4O1xcbiAgbWluLWhlaWdodDogMTlweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuNjUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pY29uOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC44NSk7XFxufVxcbi5maWxlcy11aS1maWxlLWljb24uZGFyay1tb2RlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC42NSk7XFxufVxcbi5maWxlcy11aS1maWxlLWljb24uZGFyay1tb2RlOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC44NSk7XFxufVwiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUge1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMjEyMTI7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0wIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDApLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTEge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0zIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tNSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tNiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi03IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTgge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tOSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xOCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xOSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yNCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTAge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMSB7XFxuICBib3gtc2hhZG93OiAwcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yIHtcXG4gIGJveC1zaGFkb3c6IDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTMge1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNCB7XFxuICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNSB7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNiB7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTcge1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi04IHtcXG4gIGJveC1zaGFkb3c6IDBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tOSB7XFxuICBib3gtc2hhZG93OiAwcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEwIHtcXG4gIGJveC1zaGFkb3c6IDBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTExIHtcXG4gIGJveC1zaGFkb3c6IDBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEyIHtcXG4gIGJveC1zaGFkb3c6IDBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEzIHtcXG4gIGJveC1zaGFkb3c6IDBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE0IHtcXG4gIGJveC1zaGFkb3c6IDBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE1IHtcXG4gIGJveC1zaGFkb3c6IDBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE2IHtcXG4gIGJveC1zaGFkb3c6IDBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xNyB7XFxuICBib3gtc2hhZG93OiAwcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTgge1xcbiAgYm94LXNoYWRvdzogMHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE5IHtcXG4gIGJveC1zaGFkb3c6IDBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yMCB7XFxuICBib3gtc2hhZG93OiAwcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTIxIHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMjIge1xcbiAgYm94LXNoYWRvdzogMHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yMyB7XFxuICBib3gtc2hhZG93OiAwcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTI0IHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZS1jYXJkLXJpZ2h0LWxheWVyLWhlYWRlciB7XFxuICBtYXJnaW4tdG9wOiAzcHg7XFxuICBtYXJnaW4tcmlnaHQ6IDNweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgbGVmdDogdW5zZXQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBnYXA6IDJweDtcXG59XFxuXFxuLmZpbGUtY2FyZC1yaWdodC1sYXllci1mb290ZXIge1xcbiAgbWFyZ2luLWJvdHRvbTogM3B4O1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XFxuICBsZWZ0OiB1bnNldDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGdhcDogMnB4O1xcbiAgYm90dG9tOiAwO1xcbiAgcmlnaHQ6IDA7XFxufVwiKTtcblxudmFyIEZpbGVDYXJkUmlnaHRBY3Rpb25zID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGRhcmtNb2RlID0gcHJvcHMuZGFya01vZGUsIGRlbGV0ZUljb24gPSBwcm9wcy5kZWxldGVJY29uLCBkb3dubG9hZEljb24gPSBwcm9wcy5kb3dubG9hZEljb24sIGltYWdlSWNvbiA9IHByb3BzLmltYWdlSWNvbiwgaW5mb0ljb24gPSBwcm9wcy5pbmZvSWNvbiwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25Eb3dubG9hZCA9IHByb3BzLm9uRG93bmxvYWQsIG9uT3BlbkluZm8gPSBwcm9wcy5vbk9wZW5JbmZvLCBvblNlZSA9IHByb3BzLm9uU2VlLCBvbldhdGNoID0gcHJvcHMub25XYXRjaCwgdmlkZW9JY29uID0gcHJvcHMudmlkZW9JY29uLCBpc0FjdGl2ZSA9IHByb3BzLmlzQWN0aXZlLCB2aXNpYmxlID0gcHJvcHMudmlzaWJsZTtcbiAgICBpZiAodmlzaWJsZSlcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtcmlnaHQtbGF5ZXItaGVhZGVyXCIgfSwgaXNBY3RpdmUgJiYgZGVsZXRlSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjbGFzc05hbWU6IGRhcmtNb2RlID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCIgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25EZWxldGUsIHNpemU6IFwic21hbGxcIiwgY29sb3JGaWxsOiBcInRyYW5zcGFyZW50XCIgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXJpZ2h0LWxheWVyLWZvb3RlclwiIH0sIGlzQWN0aXZlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIGltYWdlSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXNpYmlsaXR5LCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uU2VlLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIHZpZGVvSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChQbGF5SWNvbiwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbldhdGNoLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIGRvd25sb2FkSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEb3dubG9hZEZpbGUsIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25Eb3dubG9hZCwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICBpbmZvSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmZvRGlzbmV5LCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgb25DbGljazogb25PcGVuSW5mbywgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIHNpemU6IFwibWljcm9cIiB9KSkpKSkpKTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG52YXIgRmlsZUNhcmRJbmZvTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgXG4gICAgLy92YWxpZCxcbiAgICBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIG9uQ2xvc2VJbmZvID0gcHJvcHMub25DbG9zZUluZm8sIFxuICAgIC8vIHVwbG9hZFN0YXR1cyxcbiAgICBsb2NhbE5hbWUgPSBwcm9wcy5sb2NhbE5hbWUsIHNpemVGb3JtYXR0ZWQgPSBwcm9wcy5zaXplRm9ybWF0dGVkLCBsb2NhbFR5cGUgPSBwcm9wcy5sb2NhbFR5cGU7XG4gICAgdmFyIEZpbGVJdGVtTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIHZhciBfYSA9IEZpbGVJdGVtTG9jYWxpemVyLmZ1bGxJbmZvTGF5ZXIsIG5hbWVMYWJlbCA9IF9hLm5hbWUsIHNpemVMYWJlbCA9IF9hLnNpemUsIHR5cGVMYWJlbCA9IF9hLnR5cGU7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1maWxlLWluZm9cIiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENhbmNlbCwgeyBzdHlsZTogeyBtYXJnaW46IDAsIHJpZ2h0OiA1LCB0b3A6IDAsIHBvc2l0aW9uOiBcImFic29sdXRlXCIgfSwgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjgpXCIsIG9uQ2xpY2s6IG9uQ2xvc2VJbmZvLCBjb2xvckZpbGw6IFwiYmxhY2tcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgbmFtZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIGxvY2FsTmFtZSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIHNpemVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBzaXplRm9ybWF0dGVkKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgdHlwZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIGxvY2FsVHlwZSkpKTtcbn07XG5cbnZhciBBYm9ydGVkU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9EaXN0dXJiLCB7IGNvbG9yOiBcIiNmNDQzMzZcIiwgc2l6ZTogc2l6ZSB8fCA2NSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCxcbiAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuYWJvcnRlZCkpKTtcbn07XG5cbnZhciBFbXB0eVN0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBoZWlnaHQgPSBwcm9wcy5oZWlnaHQ7XG4gICAgdmFyIGZpbmFsSGVpZ2h0ID0gIWhlaWdodFxuICAgICAgICA/IFwiMTMycHhcIlxuICAgICAgICA6IHR5cGVvZiBoZWlnaHQgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgID8gXCJcIi5jb25jYXQoaGVpZ2h0LCBcInB4XCIpXG4gICAgICAgICAgICA6IGhlaWdodDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogeyB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogZmluYWxIZWlnaHQgfSB9KSkpO1xufTtcblxudmFyIEVycm9yU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjQpXCIsIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInJnYmEoMjQ0LCA2NywgNTQsIDAuOClcIixcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNTAlXCIsXG4gICAgICAgICAgICB9LCBzaXplOiBzaXplIHx8IDY1IH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLFxuICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5lcnJvcikpKTtcbn07XG5cbnZhciBQcmVwYXJpbmdTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbmZpbml0ZUxvYWRlciwgeyBvbkNsaWNrOiBvbkNhbmNlbCwgc2l6ZTogc2l6ZSB8fCA2NSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIucHJlcGFyaW5nKSkpO1xufTtcblxudmFyIFN1Y2Nlc3NTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja0NpcmNsZSwgeyBjb2xvcjogXCIjNGNhZjUwXCIsIHNpemU6IHNpemUgfHwgNjUgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsXG4gICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnN1Y2Nlc3MpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJ0ZXh0LmZpbGVzLXVpLXRleHQtZHluYW1pYy1sb2FkZXIge1xcbiAgdGV4dC1hbmNob3I6IG1pZGRsZTtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbiAgZmlsbDogYWxpY2VibHVlO1xcbn1cIik7XG5cbnZhciBEeW5hbWljTG9hZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICAvL29uQ2xpY2ssXG4gICAgc3R5bGUgPSBwcm9wcy5zdHlsZSwgXG4gICAgLy9jbGFzc05hbWUsXG4gICAgcGVyY2VudGFnZSA9IHByb3BzLnBlcmNlbnRhZ2UsIGhpZGVQZXJuY2VudGFnZSA9IHByb3BzLmhpZGVQZXJuY2VudGFnZSwgcmFkaXVzID0gcHJvcHMucmFkaXVzLCB4ID0gcHJvcHMueCwgeSA9IHByb3BzLnksIHdpZHRoID0gcHJvcHMud2lkdGgsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrO1xuICAgIC8vY29uc29sZS50YWJsZShwcm9wcyk7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwicGVyY2VudGFnZVwiLCBwZXJjZW50YWdlKTtcbiAgICB2YXIgZmluYWxSYWRpdXMgPSByYWRpdXMgfHwgMjg7XG4gICAgdmFyIGZpbmFsWCA9IHggfHwgMzA7XG4gICAgdmFyIGZpbmFsWSA9IHkgfHwgMzA7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICB2YXIgY2lyY2xlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGZ1bmN0aW9uIHNldFByb2dyZXNzKHBlcmNlbnQsIG15Q2lyY2xlLCBjaXJjdW1mZXJlbmNlKSB7XG4gICAgICAgIG15Q2lyY2xlLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBcIlwiLmNvbmNhdChjaXJjdW1mZXJlbmNlICogKDEgLSBwZXJjZW50IC8gMTAwKSk7XG4gICAgICAgIC8vbXlDaXJjbGUuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IGAwYDtcbiAgICAgICAgLyogbGV0IHBjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGN0XCIpO1xuICAgICAgICBwY3QuaW5uZXJIVE1MID0gcGVyY2VudC50b0ZpeGVkKDApICsgXCIlXCI7ICovXG4gICAgfVxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBteUNpcmNsZSA9IGNpcmNsZVJlZi5jdXJyZW50O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwicGVyY2VudGFnZSB1c2VFZmZlY3RcIiwgcGVyY2VudGFnZSk7XG4gICAgICAgIGlmIChteUNpcmNsZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgbXlDaXJjbGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgcGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogbXlDaXJjbGUuci5iYXNlVmFsLnZhbHVlO1xuICAgICAgICAgICAgbXlDaXJjbGUuc3R5bGUuc3Ryb2tlRGFzaGFycmF5ID0gXCJcIi5jb25jYXQoY2lyY3VtZmVyZW5jZSwgXCIgMTAwMFwiKTtcbiAgICAgICAgICAgIHNldFByb2dyZXNzKHBlcmNlbnRhZ2UgPj0gMTAwID8gMTAwIDogcGVyY2VudGFnZSwgbXlDaXJjbGUsIGNpcmN1bWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgfSwgW3BlcmNlbnRhZ2VdKTtcbiAgICBpZiAocGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTG9hZGVyQ29udGFpbmVyLCB7IHNpemU6IHNpemUgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogXCJkdWlfc3ZnX2NpcmNsZV9sb2FkZXJcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgeG1sbnNYbGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBzdHlsZTogZmluYWxTdHlsZSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiY2lyY2xlXCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKC05MGRlZylcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzdHJva2U6IGNvbG9yIHx8IFwiIzE0ZmYwMFwiLCBjeDogXCJcIi5jb25jYXQoZmluYWxYKSwgY3k6IFwiXCIuY29uY2F0KGZpbmFsWSksIHI6IFwiXCIuY29uY2F0KGZpbmFsUmFkaXVzKSwgc3Ryb2tlV2lkdGg6IFwiXCIuY29uY2F0KHdpZHRoIHx8IDgsIFwicHhcIiksIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jbGFzc05hbWU9XCJjaXJjbGVfbG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcImNpcmNsZVwiLCByZWY6IGNpcmNsZVJlZiwgZmlsbDogXCJub25lXCIgfSksXG4gICAgICAgICAgICAgICAgICAgICFoaWRlUGVybmNlbnRhZ2UgJiYgcGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dFwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS10ZXh0LWR5bmFtaWMtbG9hZGVyXCIsIHg6IFwiXCIuY29uY2F0KGZpbmFsWCksIHk6IFwiXCIuY29uY2F0KChmaW5hbFggKiA3KSAvIDYpIH0sIFwiXCIuY29uY2F0KHBlcmNlbnRhZ2UudG9GaXhlZCgwKSwgXCIgJVwiKSkpKSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpXCIsIHNpemU6IDQ1LCBvbkNsaWNrOiBvbkNsaWNrIH0pKSkpKSk7XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICB9XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIubGRzLWNvbG9yYmFyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG59XFxuLmxkcy1jb2xvcmJhciAuZmlsZXMtdWktdGV4dC1kZWZhdWx0LWxvYWRlciB7XFxuICBmb250LXNpemU6IDEuNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xcbn1cIik7XG5cbnZhciBVcGxvYWRpbmdTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZSwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3M7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIHByb2dyZXNzICE9PSB1bmRlZmluZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChEeW5hbWljTG9hZGVyLCB7IHNpemU6IDcwLCB4OiAzNSwgeTogMzUsIHJhZGl1czogMzIsIHBlcmNlbnRhZ2U6IHByb2dyZXNzLCB3aWR0aDogNiwgaGlkZVBlcm5jZW50YWdlOiBwcm9ncmVzcyA9PT0gdW5kZWZpbmVkIHx8IG9uQWJvcnQgIT09IHVuZGVmaW5lZCwgb25DbGljazogb25BYm9ydCB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmZpbml0ZUxvYWRlciwgeyBvbkNsaWNrOiBvbkFib3J0LCBzaXplOiBzaXplIHx8IDcwIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCxcbiAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIudXBsb2FkaW5nKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXIge1xcbiAgd2lkdGg6IDEwMHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdC1jYXJkIHtcXG4gIHRyYW5zaXRpb246IGFsbCAxLjVzIGVhc2U7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0LWNhcmQgLmVsZXZhdGlvbi1pdGVtLWNhcmQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QtY2FyZCAuZWxldmF0aW9uLWl0ZW0tY2FyZCBzcGFuIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjsgLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgKi9cXG4gIGxpbmUtY2xhbXA6IDI7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbn1cIik7XG5cbnZhciBGaWxlQ2FyZFVwbG9hZExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3MsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgZWxldmF0aW9uQ29udGFpbmVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBsaXN0Q29udGFpbmVyU3RvcnlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoW3VuZGVmaW5lZF0pLCBzdGF0dXNIaXN0b3J5ID0gX2FbMF0sIHNldFN0YXR1c0hpc3RvcnkgPSBfYVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRTdGF0dXNIaXN0b3J5KGZ1bmN0aW9uIChzdGF0dXNIaXN0b3J5KSB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzSGlzdG9yeVtzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDFdID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdXBsb2FkU3RhdHVzID09PSBcInVwbG9hZGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRlbXBTdGF0dXNIaXN0b3J5ID0gX19zcHJlYWRBcnJheSQxKFtdLCBzdGF0dXNIaXN0b3J5LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0ZW1wU3RhdHVzSGlzdG9yeVtzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDFdID0gdXBsb2FkU3RhdHVzO1xuICAgICAgICAgICAgICAgIC8vcmVwbGFjZVxuICAgICAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5JDEoW10sIHRlbXBTdGF0dXNIaXN0b3J5LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5JDEoX19zcHJlYWRBcnJheSQxKFtdLCBzdGF0dXNIaXN0b3J5LCB0cnVlKSwgW3VwbG9hZFN0YXR1c10sIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSwgW3VwbG9hZFN0YXR1c10pO1xuICAgIHZhciBlbGV2YXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudEVsZXZhdGlvbkNvbnRhaW5lciA9IGVsZXZhdGlvbkNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgY3VycmVudEVsZXZhdGlvbkxpc3QgPSBsaXN0Q29udGFpbmVyU3RvcnlSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGN1cnJlbnRFbGV2YXRpb25Db250YWluZXIgPT09IG51bGwgfHwgY3VycmVudEVsZXZhdGlvbkxpc3QgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGN1cnJlbnRFbGV2YXRpb25MaXN0LnN0eWxlLnRvcCA9XG4gICAgICAgICAgICAwIC0gKHN0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMSkgKiAxMDAgKyBcInB4XCI7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoc3RhdHVzSGlzdG9yeS5sZW5ndGggPiAxKVxuICAgICAgICAgICAgZWxldmF0ZSgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbc3RhdHVzSGlzdG9yeS5sZW5ndGhdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWxheWVyLWNvbnRhaW5lclwiLCByZWY6IGVsZXZhdGlvbkNvbnRhaW5lclJlZiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1saXN0LWNhcmRcIiwgcmVmOiBsaXN0Q29udGFpbmVyU3RvcnlSZWYgfSwgc3RhdHVzSGlzdG9yeS5tYXAoZnVuY3Rpb24gKHN0YXR1cywgaW5kZXgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInByZXBhcmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQcmVwYXJpbmdTdGF0dXMsIHsgb25DYW5jZWw6IG9uQ2FuY2VsLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1cGxvYWRpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVXBsb2FkaW5nU3RhdHVzLCB7IG9uQWJvcnQ6IG9uQWJvcnQsIHByb2dyZXNzOiBwcm9ncmVzcywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXJyb3JTdGF0dXMsIHsgc2l6ZTogNjAsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3VjY2Vzc1N0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJhYm9ydGVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFib3J0ZWRTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFbXB0eVN0YXR1cywgbnVsbCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktdG9vbHRpcCB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5maWxlcy11aS10b29sdGlwOmhvdmVyIHtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5maWxlcy11aS10b29sdGlwOmhvdmVyIC5maWxlcy11aS10b29sdGlwdGV4dCB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgb3BhY2l0eTogMTtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQ6aG92ZXIge1xcbiAgei1pbmRleDogMjtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZDpob3ZlciAuZmlsZXMtdWktdG9vbHRpcHRleHQge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB6LWluZGV4OiAyO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHdpZHRoOiAyMDBweDtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDI7XFxuICBsZWZ0OiBjYWxjKDUwJSAtIDEwMHB4KTtcXG4gIGxlZnQ6IDA7XFxuICBtYXJnaW4tdG9wOiA1cHg7XFxuICB0b3A6IDEwMCU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcztcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQubm90LXZhbGlkLWVycm9yIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICNjNjI4MjgsICNkMzJmMmYpO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dC5ub3QtdmFsaWQtZXJyb3I6OmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2QzMmYyZiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2VzcyB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjMWI1ZTIwLCAjMmU3ZDMyKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2Vzczo6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjMmU3ZDMyIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dDo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDEwMCU7XFxuICBsZWZ0OiA1MCU7XFxuICBtYXJnaW4tbGVmdDogLTVweDtcXG4gIGJvcmRlci13aWR0aDogNXB4O1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0IHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgd2lkdGg6IDEzMnB4O1xcbiAgY29sb3I6ICNmZmY7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBwYWRkaW5nOiAycHggMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMjtcXG4gIGxlZnQ6IDA7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcztcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0Lm5vdC12YWxpZC1lcnJvciB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjYzYyODI4LCAjZDMyZjJmKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0Lm5vdC12YWxpZC1lcnJvcjo6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZDMyZjJmIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2VzcyB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjMWI1ZTIwLCAjMmU3ZDMyKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0LnN1Y2Nlc3M6OmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzJlN2QzMiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0OjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMTAwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIG1hcmdpbi1sZWZ0OiAtNXB4O1xcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbn1cIik7XG5cbnZhciBUb29sdGlwID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIFxuICAgIC8vbWVzc2FnZSxcbiAgICAvL3N0eWxlLFxuICAgIC8vY2hpbGRyZW4sXG4gICAgLy9jb2xvcixcbiAgICB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIHZhbGlkID0gcHJvcHMudmFsaWQsIGVycm9ycyA9IHByb3BzLmVycm9ycywgXG4gICAgLy9jbGFzc05hbWUsXG4gICAgdXBsb2FkTWVzc2FnZSA9IHByb3BzLnVwbG9hZE1lc3NhZ2UsIG9wZW4gPSBwcm9wcy5vcGVuO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIHN0YXR1c0NsYXNzTmFtZSA9IF9hWzBdLCBzZXRTYXR1c0NsYXNzTmFtZSA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIG1lc3NhZ2UgPSBfYlswXSwgc2V0TWVzc2FnZSA9IF9iWzFdO1xuICAgIHZhciBoYW5kbGVDaGFuZ2VTdGF0dXMgPSBmdW5jdGlvbiAodXBsb2FkU3RhdHVzLCB2YWxpZCkge1xuICAgICAgICAvL2hpZ2hlciBwcmlvcml0eVxuICAgICAgICBpZiAodXBsb2FkU3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldE1lc3NhZ2UodXBsb2FkTWVzc2FnZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkU3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgICAgIHNldFNhdHVzQ2xhc3NOYW1lKFwic3VjY2Vzc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNhdHVzQ2xhc3NOYW1lKFwibm90LXZhbGlkLWVycm9yXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbGlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNhdHVzQ2xhc3NOYW1lKFwibm90LXZhbGlkLWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRNZXNzYWdlKGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucmVkdWNlKGZ1bmN0aW9uIChhY3VtLCBjdXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN1bSArPSBcIlwiLmNvbmNhdChjdXJyLCBcIi4gXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3VtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBoYW5kbGVDaGFuZ2VTdGF0dXModXBsb2FkU3RhdHVzLCB2YWxpZCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFt1cGxvYWRTdGF0dXMsIHZhbGlkXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBvcGVuICYmIG1lc3NhZ2UgJiYgc3RhdHVzQ2xhc3NOYW1lICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS10b29sdGlwdGV4dCBcIi5jb25jYXQoc3RhdHVzQ2xhc3NOYW1lKSB9LCBtZXNzYWdlKSkpKTtcbn07XG5cbnZhciBEb3dubG9hZEhpZGRlbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBkb3dubG9hZFVybCA9IHByb3BzLmRvd25sb2FkVXJsLCBhbmNob3JSZWYgPSBwcm9wcy5hbmNob3JSZWYsIGZpbGVOYW1lID0gcHJvcHMuZmlsZU5hbWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZ0KSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKGRvd25sb2FkVXJsKVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgcmVmOiBhbmNob3JSZWYsIHRhcmdldDogXCJfYmxhbmtcIiwgaHJlZjogZG93bmxvYWRVcmwsIGRvd25sb2FkOiBmaWxlTmFtZSwgaGlkZGVuOiB0cnVlLCByZWw6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwiLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9LCBcImRvd25sb2FkX2ZpbGVcIikpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDEzMnB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTMycHg7XFxuICBoZWlnaHQ6IDEzMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXIgaW1nIHtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbWFnZS1sYXllci5ibHVyIGltZyB7XFxuICBmaWx0ZXI6IGJsdXIoNHB4KTtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAyMDAlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIC5maWxlLW1vc2FpYy1tYWluLWxheWVyLWhlYWRlciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciAuZmlsZS1tb3NhaWMtbWFpbi1sYXllci1mb290ZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciAuZmlsZS1tb3NhaWMtbWFpbi1sYXllci1mb290ZXIgLmZpbGUtbW9zYWljLWZvb3Rlci1yaWdodCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIC5maWxlLW1vc2FpYy1tYWluLWxheWVyLWZvb3RlciAuZmlsZS1tb3NhaWMtZm9vdGVyLWxlZnQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1ncm93OiAxO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgd2lkdGg6IGluaGVyaXQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlIDBzO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA5cHg7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMTA4LCAxMjcsIDAuNjYyNzQ1MDk4KTtcXG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XFxuICBib3JkZXI6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyLWhlYWRlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllciAuaGVhZGluZyB7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgcGFkZGluZzogMCA1cHg7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXIgLmxhYmVsIHtcXG4gIHBhZGRpbmc6IDAgNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDM5OTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1maWxlLW5hbWUge1xcbiAgbWFyZ2luLXRvcDogMXB4O1xcbiAgaGVpZ2h0OiAzMXB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBjb2xvcjogYmxhY2s7XFxuICBmb250LXNpemU6IDAuOTVlbTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBsaW5lLWhlaWdodDogMTVweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wN3JlbTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMjtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAvKiAgZGlzcGxheTogZmxleDtcXG4gICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAqL1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWZpbGUtbmFtZS5kYXJrLW1vZGUge1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyLmNsaWNrYWJsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi8qIC5maWxlcy11aS1maWxlLWljb24ge1xcbiAgZm9udC1zaXplOiAwLjdyZW07XFxuICBtaW4td2lkdGg6IDE5cHg7XFxuICBtaW4taGVpZ2h0OiAxOXB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC42NSk7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICAmOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjg1KTtcXG4gIH1cXG4gICYuZGFyay1tb2RlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjY1KTtcXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjg1KTtcXG4gICAgfVxcbiAgfVxcbn1cXG4gKi9cIik7XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1sYXllci1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cIik7XG5cbnZhciBMYXllckNvbnRhaW5lciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYWRkQ2xhc3NOYW1lKGNsYXNzTmFtZSB8fCBcIlwiLCBcImZpbGVzLXVpLWxheWVyLWNvbnRhaW5lclwiKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUgfSwgY2hpbGRyZW4pKTtcbn07XG5cbnZhciBGaWxlTW9zYWljTmFtZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBmaWxlTmFtZSA9IHByb3BzLmZpbGVOYW1lO1xuICAgIGlmIChmaWxlTmFtZSlcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGZpbGVOYW1lKTtcbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIH1cbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjUpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0IHtcXG4gIHRyYW5zaXRpb246IGFsbCAxLjVzIGVhc2U7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QgLmVsZXZhdGlvbi1pdGVtIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMzJweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QgLmVsZXZhdGlvbi1pdGVtIHNwYW4ge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMjtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxufVwiKTtcblxudmFyIEZpbGVNb3NhaWNVcGxvYWRMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIG9uQ2FuY2VsID0gcHJvcHMub25DYW5jZWwsIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBwcm9ncmVzcyA9IHByb3BzLnByb2dyZXNzLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb247XG4gICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNb3NhaWNVcGxvYWRMYXllciBDSEFOR0UgcHJvZ3Jlc3NcIiwgcHJvZ3Jlc3MsIHVwbG9hZFN0YXR1cyk7XG4gICAgdmFyIGVsZXZhdGlvbkNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgbGlzdENvbnRhaW5lclN0b3J5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFt1bmRlZmluZWRdKSwgc3RhdHVzSGlzdG9yeSA9IF9hWzBdLCBzZXRTdGF0dXNIaXN0b3J5ID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0U3RhdHVzSGlzdG9yeShmdW5jdGlvbiAoc3RhdHVzSGlzdG9yeSkge1xuICAgICAgICAgICAgaWYgKHN0YXR1c0hpc3Rvcnlbc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxXSA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHVwbG9hZFN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wU3RhdHVzSGlzdG9yeSA9IF9fc3ByZWFkQXJyYXkkMShbXSwgc3RhdHVzSGlzdG9yeSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGVtcFN0YXR1c0hpc3Rvcnlbc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxXSA9IHVwbG9hZFN0YXR1cztcbiAgICAgICAgICAgICAgICAvL3JlcGxhY2VcbiAgICAgICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheSQxKFtdLCB0ZW1wU3RhdHVzSGlzdG9yeSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheSQxKF9fc3ByZWFkQXJyYXkkMShbXSwgc3RhdHVzSGlzdG9yeSwgdHJ1ZSksIFt1cGxvYWRTdGF0dXNdLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0sIFt1cGxvYWRTdGF0dXNdKTtcbiAgICB2YXIgZWxldmF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGV2YXRpb25Db250YWluZXIgPSBlbGV2YXRpb25Db250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGV2YXRpb25MaXN0ID0gbGlzdENvbnRhaW5lclN0b3J5UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxldmF0aW9uQ29udGFpbmVyID09PSBudWxsIHx8IGN1cnJlbnRFbGV2YXRpb25MaXN0ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdXJyZW50RWxldmF0aW9uTGlzdC5zdHlsZS50b3AgPVxuICAgICAgICAgICAgMCAtIChzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDEpICogMTMyICsgXCJweFwiO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHN0YXR1c0hpc3RvcnkubGVuZ3RoID4gMSlcbiAgICAgICAgICAgIGVsZXZhdGUoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3N0YXR1c0hpc3RvcnkubGVuZ3RoXSk7XG4gICAgLy9kZWZhdWx0IHBoYXNlXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1sYXllci1jb250YWluZXJcIiwgcmVmOiBlbGV2YXRpb25Db250YWluZXJSZWYgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24tbGlzdFwiLCByZWY6IGxpc3RDb250YWluZXJTdG9yeVJlZiB9LCBzdGF0dXNIaXN0b3J5Lm1hcChmdW5jdGlvbiAoc3RhdHVzLCBpbmRleCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJlcGFyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQcmVwYXJpbmdTdGF0dXMsIHsgb25DYW5jZWw6IG9uQ2FuY2VsLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1cGxvYWRpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZGluZ1N0YXR1cywgeyBvbkFib3J0OiBvbkFib3J0LCBwcm9ncmVzczogcHJvZ3Jlc3MsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFcnJvclN0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdWNjZXNzU3RhdHVzLCB7IGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImFib3J0ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFib3J0ZWRTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1wdHlTdGF0dXMsIG51bGwpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKSkpO1xufTtcblxudmFyIEZpbGVNb3NhaWNJbWFnZUxheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwiRmlsZU1vc2FpY0ltYWdlTGF5ZXJcIiwgcHJvcHMpO1xuICAgIHZhciBpbWFnZVNvdXJjZSA9IHByb3BzLmltYWdlU291cmNlLCB1cmwgPSBwcm9wcy51cmwsIGZpbGVOYW1lID0gcHJvcHMuZmlsZU5hbWUsIGNhcmQgPSBwcm9wcy5jYXJkLCBpc0JsdXIgPSBwcm9wcy5pc0JsdXIsIHNtYXJ0SW1nRml0ID0gcHJvcHMuc21hcnRJbWdGaXQ7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgbG9jYWxTb3VyY2UgPSBfYVswXSwgc2V0TG9jYWxTb3VyY2UgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGVycm9yID0gX2JbMF0sIHNldEVycm9yID0gX2JbMV07XG4gICAgLy9hc3NpZ24gdG8gbG9jYWxTb3VyY2UgdGhlIGltYWdlU291cmNlIG9yIHRoZSB1cmwgb2YgdGhlIGlsZSB0eXBlXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0TG9jYWxTb3VyY2UoaW1hZ2VTb3VyY2UgfHwgdXJsKTtcbiAgICB9LCBbaW1hZ2VTb3VyY2UsIHVybF0pO1xuICAgIC8qKlxuICAgICAqIFdoZW4gYW4gZXJyb3Igb2NjdXJzIHdoZW4gc2V0dGluZyB0aGUgc291cmNlLCB0aGUgdXJsIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLlxuICAgICAqIFRoZSB1cmwgYWx3YXlzIGlzIGEgdmFsaWQgaW1hZ2UgdXJsXG4gICAgICovXG4gICAgdmFyIGhhbmRsZUVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICAgICAgc2V0TG9jYWxTb3VyY2UodXJsKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNb3NhaWNJbWFnZUxheWVyIGVycm9yXCIsIHVybCk7XG4gICAgfTtcbiAgICAvL0lmIGJsdXIgaXMgdHJ1ZVxuICAgIGlmIChpc0JsdXIpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAhY2FyZCAmJiAhZXJyb3IgJiYgaW1hZ2VTb3VyY2UgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW1hZ2VQcmV2aWV3LCB7IHNyYzogbG9jYWxTb3VyY2UsIGFsdDogXCJibHVyIFwiLmNvbmNhdChmaWxlTmFtZSksIHNtYXJ0SW1nRml0OiBmYWxzZSB9KSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlUHJldmlldywgeyBvbkVycm9yOiBoYW5kbGVFcnJvciwgc3JjOiBsb2NhbFNvdXJjZSwgc3R5bGU6IHsgYm9yZGVyUmFkaXVzOiBcIjBweFwiIH0sIGFsdDogXCJwcmV2aWV3IFwiLmNvbmNhdChmaWxlTmFtZSksIHNtYXJ0SW1nRml0OiBzbWFydEltZ0ZpdCB9KSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgcGFkZGluZzogMC41cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtZXJyb3Ige1xcbiAgY29sb3I6ICNmNDQzMzY7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1vayB7XFxuICBjb2xvcjogIzVjN2ExZjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGNvbG9yOiAjOGI2YjEwO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcucGVyY2VudGFnZSB7XFxuICBwYWRkaW5nOiA3cHggNHB4IDJweCA1cHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC5hYm9ydC1idXR0b24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IC0ycHg7XFxuICB0b3A6IC0ycHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC51cGxvYWRpbmctdGV4dC51cCB7XFxuICBtYXJnaW4tYm90dG9tOiAtMjJweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcgLnVwbG9hZGluZy10ZXh0LmRvd24ge1xcbiAgbWFyZ2luLXRvcDogLTIwcHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC51cGxvYWRpbmctdGV4dCBwLnBlcmNlbnRhZ2Uge1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XCIpO1xuXG52YXIgRmlsZU1vc2FpY1N0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB2YWxpZCA9IHByb3BzLnZhbGlkLCB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIGlmICh1cGxvYWRTdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciBmaWxlLXN0YXR1cy1va1wiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xvdWREb25lLCB7IGNvbG9yOiBcIiM0Y2FmNTBcIiwgc2l6ZTogXCJzbWFsbFwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnN1Y2Nlc3MpKTtcbiAgICB9XG4gICAgaWYgKHVwbG9hZFN0YXR1cyA9PT0gXCJlcnJvclwiIHx8IHVwbG9hZFN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIGZpbGUtc3RhdHVzLWVycm9yXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWRFcnJvciwgeyBjb2xvcjogXCIjZjQ0MzM2XCIsIHNpemU6IFwic2VtaS1tZWRpdW1cIiwgY2xhc3NOYW1lOiBcInN0YXR1cy1pY29uXCIgfSksXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5lcnJvcikpO1xuICAgIH1cbiAgICBpZiAodmFsaWQgIT09IHVuZGVmaW5lZCAmJiB2YWxpZCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciBmaWxlLXN0YXR1cy1va1wiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrQ2lyY2xlLCB7IGNvbG9yOiBcIiM0Y2FmNTBcIiwgc2l6ZTogXCJzbWFsbFwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci52YWxpZCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIGZpbGUtc3RhdHVzLWVycm9yXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9EaXN0dXJiLCB7IGNvbG9yOiBcIiNmNDQzMzZcIiwgc2l6ZTogXCJzbWFsbFwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5kZW5pZWQpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG52YXIgRmlsZU1vc2FpY0luZm9MYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB2YWxpZCA9IHByb3BzLnZhbGlkLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIG9uQ2xvc2VJbmZvID0gcHJvcHMub25DbG9zZUluZm8sIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgbG9jYWxOYW1lID0gcHJvcHMubG9jYWxOYW1lLCBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZCwgbG9jYWxUeXBlID0gcHJvcHMubG9jYWxUeXBlO1xuICAgIHZhciBGaWxlSXRlbUxvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICB2YXIgX2EgPSBGaWxlSXRlbUxvY2FsaXplci5mdWxsSW5mb0xheWVyLCBuYW1lTGFiZWwgPSBfYS5uYW1lLCBzaXplTGFiZWwgPSBfYS5zaXplLCB0eXBlTGFiZWwgPSBfYS50eXBlO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyLWhlYWRlclwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENhbmNlbFxuICAgICAgICAgICAgLy9zdHlsZT17eyBtYXJnaW46IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgICAgICwgeyBcbiAgICAgICAgICAgICAgICAvL3N0eWxlPXt7IG1hcmdpbjogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44KVwiLCBvbkNsaWNrOiBvbkNsb3NlSW5mbywgY29sb3JGaWxsOiBcImJsYWNrXCIgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNTdGF0dXMsIHsgdmFsaWQ6IHZhbGlkLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCBuYW1lTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgbG9jYWxOYW1lKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgc2l6ZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIHNpemVGb3JtYXR0ZWQpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCB0eXBlTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgbG9jYWxUeXBlKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzdWktZmlsZS1pdGVtLXNpemUge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgYm9yZGVyOiAwLjVweCBzb2xpZCB3aGVhdDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODkpO1xcbiAgcGFkZGluZzogMnB4IDEuNXB4O1xcbiAgYm9yZGVyLXJhZGl1czogN3B4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjc1KTtcXG4gIG1pbi13aWR0aDogNDVweDtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG59XFxuLmZpbGVzdWktZmlsZS1pdGVtLXNpemU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjg1KTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTcpO1xcbn1cIik7XG5cbnZhciBGaWxlTW9zYWljU2l6ZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHNpemVGb3JtYXR0ZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXN1aS1maWxlLWl0ZW0tc2l6ZVwiIH0sIHNpemVGb3JtYXR0ZWQpKSkpO1xufTtcblxudmFyIEZpbGVNb3NhaWNNYWluTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgZGFya01vZGUgPSBwcm9wcy5kYXJrTW9kZSwgZGVsZXRlSWNvbiA9IHByb3BzLmRlbGV0ZUljb24sIGRvd25sb2FkSWNvbiA9IHByb3BzLmRvd25sb2FkSWNvbiwgaW1hZ2VJY29uID0gcHJvcHMuaW1hZ2VJY29uLCBpbmZvSWNvbiA9IHByb3BzLmluZm9JY29uLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvbkRvd25sb2FkID0gcHJvcHMub25Eb3dubG9hZCwgb25PcGVuSW5mbyA9IHByb3BzLm9uT3BlbkluZm8sIG9uU2VlID0gcHJvcHMub25TZWUsIG9uV2F0Y2ggPSBwcm9wcy5vbldhdGNoLCBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZCwgdmFsaWQgPSBwcm9wcy52YWxpZCwgdmlkZW9JY29uID0gcHJvcHMudmlkZW9JY29uLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgaXNBY3RpdmUgPSBwcm9wcy5pc0FjdGl2ZTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtbWFpbi1sYXllci1oZWFkZXJcIiB9LCBpc0FjdGl2ZSAmJiBkZWxldGVJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNsYXNzTmFtZTogZGFya01vZGUgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIiA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbkRlbGV0ZSwgc2l6ZTogXCJzbWFsbFwiLCBjb2xvckZpbGw6IFwidHJhbnNwYXJlbnRcIiB9KSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtbW9zYWljLW1haW4tbGF5ZXItZm9vdGVyXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtZm9vdGVyLWxlZnRcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1N0YXR1cywgeyB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSxcbiAgICAgICAgICAgICAgICBpc0FjdGl2ZSAmJiBzaXplRm9ybWF0dGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNTaXplLCB7IHNpemVGb3JtYXR0ZWQ6IHNpemVGb3JtYXR0ZWQgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtZm9vdGVyLXJpZ2h0XCIgfSwgaXNBY3RpdmUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgaW1hZ2VJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc2liaWxpdHksIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25TZWUsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgdmlkZW9JY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFBsYXlJY29uLCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uV2F0Y2gsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgZG93bmxvYWRJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERvd25sb2FkRmlsZSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbkRvd25sb2FkLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIGluZm9JY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEluZm9EaXNuZXksIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBvbkNsaWNrOiBvbk9wZW5JbmZvLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgc2l6ZTogXCJtaWNyb1wiIH0pKSkpKSkpKTtcbn07XG5cbnZhciBGaWxlTW9zYWljID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgZmlsZSA9IHByb3BzLmZpbGUsIHByb3BOYW1lID0gcHJvcHMubmFtZSwgcHJvcFNpemUgPSBwcm9wcy5zaXplLCBwcm9wVHlwZSA9IHByb3BzLnR5cGUsIGlkID0gcHJvcHMuaWQsIHZhbGlkID0gcHJvcHMudmFsaWQsIGVycm9ycyA9IHByb3BzLmVycm9ycywgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCB1cGxvYWRNZXNzYWdlID0gcHJvcHMudXBsb2FkTWVzc2FnZSwgcHJvZ3Jlc3MgPSBwcm9wcy5wcm9ncmVzcywgeGhyID0gcHJvcHMueGhyLCBsb2NQcm9wcyA9IHByb3BzLmxvY2FsaXphdGlvbiwgcHJldmlldyA9IHByb3BzLnByZXZpZXcsIGltYWdlVXJsID0gcHJvcHMuaW1hZ2VVcmwsIHZpZGVvVXJsID0gcHJvcHMudmlkZW9VcmwsIGluZm8gPSBwcm9wcy5pbmZvLCBfYSA9IHByb3BzLmJhY2tncm91bmRCbHVySW1hZ2UsIGJhY2tncm91bmRCbHVySW1hZ2UgPSBfYSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9hLCBkYXJrTW9kZVByb3AgPSBwcm9wcy5kYXJrTW9kZSwgX2IgPSBwcm9wcy5hbHdheXNBY3RpdmUsIGFsd2F5c0FjdGl2ZSA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIF9jID0gcHJvcHMucmVzdWx0T25Ub29sdGlwLCByZXN1bHRPblRvb2x0aXAgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCBkb3dubG9hZFVybCA9IHByb3BzLmRvd25sb2FkVXJsLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLCBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgb25Eb3dubG9hZCA9IHByb3BzLm9uRG93bmxvYWQsIG9uU2VlID0gcHJvcHMub25TZWUsIG9uV2F0Y2ggPSBwcm9wcy5vbldhdGNoLCBvbkRvdWJsZUNsaWNrID0gcHJvcHMub25Eb3VibGVDbGljaywgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIG9uUmlnaHRDbGljayA9IHByb3BzLm9uUmlnaHRDbGljaywgX2QgPSBwcm9wcy5zbWFydEltZ0ZpdCwgc21hcnRJbWdGaXQgPSBfZCA9PT0gdm9pZCAwID8gXCJvcmllbnRhdGlvblwiIDogX2Q7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIF9lID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCksIGRhcmtNb2RlQ29udGV4dCA9IF9lLmRhcmtNb2RlLCBpY29ucyA9IF9lLmljb25zLCBsb2NDb250ZXh0ID0gX2UubG9jYWxpemF0aW9uO1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NQcm9wcyAhPT0gdW5kZWZpbmVkID8gbG9jUHJvcHMgOiBsb2NDb250ZXh0O1xuICAgIHZhciBkYXJrTW9kZSA9IGRhcmtNb2RlUHJvcCAhPT0gdW5kZWZpbmVkID8gZGFya01vZGVQcm9wIDogZGFya01vZGVDb250ZXh0O1xuICAgIC8vLy9jb25zb2xlLmxvZyhcImdsb2JhbENvbmZpZ1wiLCBkYXJrTW9kZSwgaWNvbnMpO1xuICAgIC8vbG9jYWxpemVyc1xuICAgIC8vcmVmIGZvciBhbmNob3IgZG93bmxvYWQgZWxlbWVudFxuICAgIHZhciBkb3dubG9hZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoYWRkQ2xhc3NOYW1lKFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgZmlsZXMtdWktdG9vbHRpcFwiLCBjbGFzc05hbWUpLCBvbkNsaWNrID8gXCJjbGlja2FibGVcIiA6IHVuZGVmaW5lZCk7XG4gICAgdmFyIGZpbGVNb3NhaWNGaWxlTmFtZUNsYXNzTmFtZSA9IGRhcmtNb2RlXG4gICAgICAgID8gXCJmaWxlcy11aS1maWxlLW1vc2FpYy1maWxlLW5hbWUgZGFyay1tb2RlXCJcbiAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWZpbGUtbmFtZVwiO1xuICAgIC8vIGxvY2FsIHByb3BlcnRpZXMgZnJvbSBmaWxlXG4gICAgdmFyIF9mID0gZ2V0TG9jYWxGaWxlSXRlbURhdGEoZmlsZSwgcHJvcE5hbWUsIHByb3BUeXBlLCBwcm9wU2l6ZSksIGxvY2FsTmFtZSA9IF9mWzBdLCBsb2NhbFR5cGUgPSBfZlsxXSwgbG9jYWxTaXplID0gX2ZbMl07XG4gICAgLy8gaGFuZGxlIHByb2dyZXNzXG4gICAgdmFyIGxvY2FsUHJvZ3Jlc3MgPSB1c2VQcm9ncmVzcyhwcm9ncmVzcywgeGhyKTtcbiAgICAvLy8vY29uc29sZS5sb2coXCJGaWxlTW9zYWljIHByb2dyZXNzIGxvY2FsUHJvZ3Jlc3MgXCIgKyBsb2NhbFByb2dyZXNzKTtcbiAgICAvL0luaXRpYWxpemUgRmlsZSBJdGVtXG4gICAgdmFyIF9nID0gdXNlRmlsZU1vc2FpY0luaXRpYWxpemVyKGZpbGUsIHByb3BOYW1lLCBwcm9wVHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgaWNvbnMpLCBpc1JlYWR5ID0gX2dbMF0sIGlzSW1hZ2UgPSBfZ1sxXSwgaXNWaWRlbyA9IF9nWzJdLCB1cmwgPSBfZ1szXSwgaW1hZ2VTb3VyY2UgPSBfZ1s0XSwgdmlkZW9Tb3VyY2UgPSBfZ1s1XTtcbiAgICAvL1RoZSBzaXplIGZvcm1hdHRlZCBhbmQgcm91bmRlZCBpbiAyIGRlY2ltYWxzXG4gICAgdmFyIHNpemVGb3JtYXR0ZWQgPSBmaWxlU2l6ZUZvcm1hdGVyKGxvY2FsU2l6ZSk7XG4gICAgLy9hbHdheXNBY3RpdmVcbiAgICB2YXIgX2ggPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHNob3dJbmZvID0gX2hbMF0sIHNldFNob3dJbmZvID0gX2hbMV07XG4gICAgLyoqKioqKioqKiBBTFdBWVMgQUNUSVZFIExPR0lDICAqKioqKioqKioqKioqKiovXG4gICAgLy9zdGF0ZSBmb3IgYWN0aW9uT25Ib3ZlclxuICAgIHZhciBfaiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaG92ZXJpbmcgPSBfalswXSwgc2V0SG92ZXJpbmcgPSBfalsxXTtcbiAgICB2YXIgaGFuZGxlT25Ib3ZlckVudGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYWx3YXlzQWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRIb3ZlcmluZyh0cnVlKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVPbkhvdmVyTGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChhbHdheXNBY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldEhvdmVyaW5nKGZhbHNlKTtcbiAgICB9O1xuICAgIC8qKioqKioqKioqKioqKioqKiBIQU5ETEVSUyAqKioqKioqKioqL1xuICAgIC8vZGVsZXRlIGZpbGUgaXRlbVxuICAgIHZhciBoYW5kbGVEZWxldGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkRlbGV0ZSA9PT0gbnVsbCB8fCBvbkRlbGV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25EZWxldGUoaWQpOyB9O1xuICAgIC8vb3BlbiBpbmZvIGxheWVyXG4gICAgdmFyIGhhbmRsZU9wZW5JbmZvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0U2hvd0luZm8odHJ1ZSk7IH07XG4gICAgLy9jbG9zZSBpbmZvIGxheWVyXG4gICAgdmFyIGhhbmRsZUNsb3NlSW5mbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFNob3dJbmZvKGZhbHNlKTsgfTtcbiAgICB2YXIgaXNVcGxvYWRpbmcgPSB1c2VJc1VwbG9hZGluZyh1cGxvYWRTdGF0dXMpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkNoYW5nZSBpc1VwbG9hZGluZ1wiLCBpc1VwbG9hZGluZyk7XG4gICAgICAgIGlmIChpc1VwbG9hZGluZyAmJiBzaG93SW5mbykge1xuICAgICAgICAgICAgaGFuZGxlQ2xvc2VJbmZvKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2lzVXBsb2FkaW5nXSk7XG4gICAgLyoqKioqKioqKioqKioqKiBDTElDSyAqKioqKioqKioqKioqKiovXG4gICAgLyoqXG4gICAgICogVE8tRE86IEFkZCBmdW5jdGlvbmFsbGl0eSBvbiBjbGljayBldmVudFxuICAgICAqIEBwYXJhbSBlIGV2ZW50IG9iamVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICAgICAgLy9hdm9pZCBjaGlsZHJlbiB0byB0cmlnZ2VyIG9uQ2xpY2sgcmlwcGxlIGZyb20gcGFyZW50XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZURvdWJsZUNsaWNrID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2FsZXJ0KFwiZG91YmxlIGNsaWNrIG9uIGZpbGVcIik7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkRvdWJsZUNsaWNrID09PSBudWxsIHx8IG9uRG91YmxlQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRG91YmxlQ2xpY2soZXZ0KTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXZ0KSB7XG4gICAgICAgIC8vIGFsZXJ0KFwicmlnaHQgY2xpY2shISEhXCIpO1xuICAgICAgICAvL2dldCBjb29yZGluYXRlc1xuICAgICAgICAvL3ppbmRleFxuICAgICAgICAvL2NyZWF0ZSBtZW51IGNvbXBvbmVudFxuICAgICAgICAvLyBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25SaWdodENsaWNrID09PSBudWxsIHx8IG9uUmlnaHRDbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SaWdodENsaWNrKGV2dCk7XG4gICAgfVxuICAgIC8vIERPV05MT0FEIEZJTEVcbiAgICAvKipcbiAgICAgKiBvbkRvd25sb2FkLCBmb3JtIDFcbiAgICAgKiBUcmlnZ2VyIGRvd2xvYWQgZGlyZWN0bHkgcGVyZm9ybWluZyBhIGNsaWNrIG9uIGFuY2hvciBlbGVtZW50XG4gICAgICovXG4gICAgdmFyIGlubmVyRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gZG93bmxvYWRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGFuY2hvckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogb25Eb3dubGFkLCBmb3JtIDJcbiAgICAgKiBIYW5kbGUgdGhlIGRvd25sb2FkIHRyaWdnZXJpbmcgYW4gb3V0c2lkZSBldmVudFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uRG93bmxvYWQpIHtcbiAgICAgICAgICAgIG9uRG93bmxvYWQgPT09IG51bGwgfHwgb25Eb3dubG9hZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Eb3dubG9hZChpZCwgZG93bmxvYWRVcmwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkb3dubG9hZFVybCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpbm5lckRvd25sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBoYW5kbGVBYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgeGhyID09PSBudWxsIHx8IHhociA9PT0gdm9pZCAwID8gdm9pZCAwIDogeGhyLmFib3J0KCk7XG4gICAgICAgIG9uQWJvcnQgPT09IG51bGwgfHwgb25BYm9ydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BYm9ydChpZCk7XG4gICAgfTtcbiAgICBpZiAoaXNSZWFkeSlcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IHN0eWxlLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25Nb3VzZUVudGVyOiBoYW5kbGVPbkhvdmVyRW50ZXIsIG9uTW91c2VMZWF2ZTogaGFuZGxlT25Ib3ZlckxlYXZlLCBvbkRvdWJsZUNsaWNrOiBoYW5kbGVEb3VibGVDbGljaywgb25Db250ZXh0TWVudTogaGFuZGxlUmlnaHRDbGljayB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllckNvbnRhaW5lciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXJcIiwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXIgYmx1clwiLCB2aXNpYmxlOiBiYWNrZ3JvdW5kQmx1ckltYWdlIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY0ltYWdlTGF5ZXIsIHsgaW1hZ2VTb3VyY2U6IGltYWdlU291cmNlLCB1cmw6IHVybCwgZmlsZU5hbWU6IGxvY2FsTmFtZSwgaXNCbHVyOiB0cnVlLCBzbWFydEltZ0ZpdDogZmFsc2UgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW1hZ2VMYXllciwgeyBpbWFnZVNvdXJjZTogaW1hZ2VTb3VyY2UsIHVybDogdXJsLCBmaWxlTmFtZTogbG9jYWxOYW1lLCBpc0JsdXI6IGZhbHNlLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXJcIiwgdmlzaWJsZTogIWlzVXBsb2FkaW5nICYmICFzaG93SW5mbyB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNNYWluTGF5ZXIsIHsgZGVsZXRlSWNvbjogb25EZWxldGUgIT09IHVuZGVmaW5lZCwgb25EZWxldGU6IGhhbmRsZURlbGV0ZSwgZGFya01vZGU6IGRhcmtNb2RlLCB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiwgc2l6ZUZvcm1hdHRlZDogc2l6ZUZvcm1hdHRlZCwgaW1hZ2VJY29uOiBpc0ltYWdlICYmIG9uU2VlICE9PSB1bmRlZmluZWQsIG9uU2VlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvblNlZSA9PT0gbnVsbCB8fCBvblNlZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWUoaW1hZ2VTb3VyY2UpOyB9LCB2aWRlb0ljb246IGlzVmlkZW8gJiYgb25XYXRjaCAhPT0gdW5kZWZpbmVkLCBvbldhdGNoOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbldhdGNoID09PSBudWxsIHx8IG9uV2F0Y2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uV2F0Y2godmlkZW9Tb3VyY2UpOyB9LCBkb3dubG9hZEljb246IG9uRG93bmxvYWQgIT09IHVuZGVmaW5lZCB8fCBkb3dubG9hZFVybCAhPT0gdW5kZWZpbmVkLCBvbkRvd25sb2FkOiBoYW5kbGVEb3dubG9hZCwgaW5mb0ljb246IGluZm8gIT09IHVuZGVmaW5lZCwgb25PcGVuSW5mbzogaGFuZGxlT3BlbkluZm8sIGlzQWN0aXZlOiBhbHdheXNBY3RpdmUgfHwgaG92ZXJpbmcgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXJcIiwgdmlzaWJsZTogc2hvd0luZm8sIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbmZvTGF5ZXIsIHsgb25DbG9zZUluZm86IGhhbmRsZUNsb3NlSW5mbywgdmFsaWQ6IHZhbGlkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiwgbG9jYWxOYW1lOiBsb2NhbE5hbWUsIHNpemVGb3JtYXR0ZWQ6IHNpemVGb3JtYXR0ZWQsIGxvY2FsVHlwZTogbG9jYWxUeXBlIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXJcIiwgdmlzaWJsZTogaXNVcGxvYWRpbmcsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNVcGxvYWRMYXllciwgeyB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgcHJvZ3Jlc3M6IGxvY2FsUHJvZ3Jlc3MsIG9uQ2FuY2VsOiBvbkNhbmNlbCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2FuY2VsID09PSBudWxsIHx8IG9uQ2FuY2VsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNhbmNlbChpZCk7IH0gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IG9uQWJvcnQgPyBoYW5kbGVBYm9ydCA6IHVuZGVmaW5lZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbGVNb3NhaWNGaWxlTmFtZUNsYXNzTmFtZSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY05hbWUsIHsgZmlsZU5hbWU6IGxvY2FsTmFtZSB9KSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRvb2x0aXAsIHsgb3BlbjogcmVzdWx0T25Ub29sdGlwLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgdmFsaWQ6IHZhbGlkLCBlcnJvcnM6IGVycm9ycywgdXBsb2FkTWVzc2FnZTogdXBsb2FkTWVzc2FnZSB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG93bmxvYWRIaWRkZW4sIHsgZmlsZU5hbWU6IGxvY2FsTmFtZSwgYW5jaG9yUmVmOiBkb3dubG9hZFJlZiwgZG93bmxvYWRVcmw6IGRvd25sb2FkVXJsIH0pKSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxudmFyIHNldEZpbmFsRWxldmF0aW9uID0gZnVuY3Rpb24gKGVsZXZhdGlvbikge1xuICAgIC8vICBsZXQgZmluYWxFbGV2YXRpb246IG51bWJlciAgPSBcIlwiO1xuICAgIHZhciBmaW5hbEVsZXZhdGlvbiA9IE51bWJlcihlbGV2YXRpb24pO1xuICAgIGlmICghaXNOYU4oZmluYWxFbGV2YXRpb24pKSB7XG4gICAgICAgIGlmIChmaW5hbEVsZXZhdGlvbiA+IDI0KSB7XG4gICAgICAgICAgICByZXR1cm4gMjQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmluYWxFbGV2YXRpb24gPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaW5hbEVsZXZhdGlvbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxufTtcbnZhciBtYWtlRmlsZUNhcmRDbGFzc05hbWUgPSBmdW5jdGlvbiAoZWxldmF0aW9uLCBkYXJrTW9kZSwgY2xhc3NOYW1lLCBjbGlja2FibGUpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiRmlsZUNhcmQgbWFrZUZpbGVDYXJkQ2xhc3NOYW1lXCIsIGVsZXZhdGlvbiwgZGFya01vZGUsIGNsYXNzTmFtZSk7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gXCJmaWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgZmlsZXMtdWktdG9vbHRpcCBjYXJkXCI7XG4gICAgaWYgKGVsZXZhdGlvbikge1xuICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBlbGV2YXRpb24tXCIgKyBzZXRGaW5hbEVsZXZhdGlvbihlbGV2YXRpb24pO1xuICAgIH1cbiAgICBpZiAoZGFya01vZGUpIHtcbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgZGFyay1tb2RlXCI7XG4gICAgfVxuICAgIGlmIChjbGlja2FibGUpXG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGNsaWNrYWJsZVwiO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgfVxuICAgIC8vY29uc29sZS5sb2coXCJGaWxlQ2FyZCBmaW5hbENsYXNzTmFtZVwiLCBmaW5hbENsYXNzTmFtZSk7XG4gICAgcmV0dXJuIGZpbmFsQ2xhc3NOYW1lO1xufTtcbnZhciBGaWxlQ2FyZCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGZpbGUgPSBwcm9wcy5maWxlLCBwcm9wTmFtZSA9IHByb3BzLm5hbWUsIHByb3BTaXplID0gcHJvcHMuc2l6ZSwgcHJvcFR5cGUgPSBwcm9wcy50eXBlLCBpZCA9IHByb3BzLmlkLCB2YWxpZCA9IHByb3BzLnZhbGlkLCBlcnJvcnMgPSBwcm9wcy5lcnJvcnMsIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgdXBsb2FkTWVzc2FnZSA9IHByb3BzLnVwbG9hZE1lc3NhZ2UsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3MsIHhociA9IHByb3BzLnhociwgbG9jUHJvcHMgPSBwcm9wcy5sb2NhbGl6YXRpb24sIHByZXZpZXcgPSBwcm9wcy5wcmV2aWV3LCBpbWFnZVVybCA9IHByb3BzLmltYWdlVXJsLCB2aWRlb1VybCA9IHByb3BzLnZpZGVvVXJsLCBpbmZvID0gcHJvcHMuaW5mbywgX2EgPSBwcm9wcy5iYWNrZ3JvdW5kQmx1ckltYWdlLCBiYWNrZ3JvdW5kQmx1ckltYWdlID0gX2EgPT09IHZvaWQgMCA/IHRydWUgOiBfYSwgZGFya01vZGVQcm9wID0gcHJvcHMuZGFya01vZGUsIF9iID0gcHJvcHMuYWx3YXlzQWN0aXZlLCBhbHdheXNBY3RpdmUgPSBfYiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9iLCBfYyA9IHByb3BzLnJlc3VsdE9uVG9vbHRpcCwgcmVzdWx0T25Ub29sdGlwID0gX2MgPT09IHZvaWQgMCA/IHRydWUgOiBfYywgZG93bmxvYWRVcmwgPSBwcm9wcy5kb3dubG9hZFVybCwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIG9uRG93bmxvYWQgPSBwcm9wcy5vbkRvd25sb2FkLCBvblNlZSA9IHByb3BzLm9uU2VlLCBvbldhdGNoID0gcHJvcHMub25XYXRjaCwgb25Eb3VibGVDbGljayA9IHByb3BzLm9uRG91YmxlQ2xpY2ssIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBvblJpZ2h0Q2xpY2sgPSBwcm9wcy5vblJpZ2h0Q2xpY2ssIF9kID0gcHJvcHMuZWxldmF0aW9uLCBlbGV2YXRpb24gPSBfZCA9PT0gdm9pZCAwID8gNCA6IF9kLCBfZSA9IHByb3BzLnNtYXJ0SW1nRml0LCBzbWFydEltZ0ZpdCA9IF9lID09PSB2b2lkIDAgPyBcIm9yaWVudGF0aW9uXCIgOiBfZTtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgX2YgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KSwgZGFya01vZGVDb250ZXh0ID0gX2YuZGFya01vZGUsIGljb25zID0gX2YuaWNvbnMsIGxvY0NvbnRleHQgPSBfZi5sb2NhbGl6YXRpb247XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IGxvY1Byb3BzICE9PSB1bmRlZmluZWQgPyBsb2NQcm9wcyA6IGxvY0NvbnRleHQ7XG4gICAgdmFyIGRhcmtNb2RlID0gZGFya01vZGVQcm9wICE9PSB1bmRlZmluZWQgPyBkYXJrTW9kZVByb3AgOiBkYXJrTW9kZUNvbnRleHQ7XG4gICAgLy9jb25zb2xlLmxvZyhcImdsb2JhbENvbmZpZ1wiLCBkYXJrTW9kZSwgaWNvbnMpO1xuICAgIC8vcmVmIGZvciBhbmNob3IgZWxlbWVudFxuICAgIHZhciBkb3dubG9hZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvL2NsYXNzTmFtZSBjcmVhdGVkXG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gbWFrZUZpbGVDYXJkQ2xhc3NOYW1lKGVsZXZhdGlvbiwgZGFya01vZGUsIGNsYXNzTmFtZSwgb25DbGljayAhPT0gdW5kZWZpbmVkKTtcbiAgICAvLyBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gZmlsZVxuICAgIHZhciBfZyA9IGdldExvY2FsRmlsZUl0ZW1EYXRhKGZpbGUsIHByb3BOYW1lLCBwcm9wVHlwZSwgcHJvcFNpemUpLCBsb2NhbE5hbWUgPSBfZ1swXSwgbG9jYWxUeXBlID0gX2dbMV0sIGxvY2FsU2l6ZSA9IF9nWzJdO1xuICAgIC8vIGhhbmRsZSBwcm9ncmVzc1xuICAgIHZhciBsb2NhbFByb2dyZXNzID0gdXNlUHJvZ3Jlc3MocHJvZ3Jlc3MsIHhocik7XG4gICAgLy9Jbml0aWFsaXplIEZpbGUgSXRlbVxuICAgIHZhciBfaCA9IHVzZUZpbGVNb3NhaWNJbml0aWFsaXplcihmaWxlLCBwcm9wTmFtZSwgcHJvcFR5cGUsIHZhbGlkLCBwcmV2aWV3LCBpbWFnZVVybCwgdmlkZW9VcmwsIGljb25zKSwgaXNSZWFkeSA9IF9oWzBdLCBpc0ltYWdlID0gX2hbMV0sIGlzVmlkZW8gPSBfaFsyXSwgdXJsID0gX2hbM10sIGltYWdlU291cmNlID0gX2hbNF0sIHZpZGVvU291cmNlID0gX2hbNV07XG4gICAgLy9UaGUgc2l6ZSBmb3JtYXR0ZWQgYW5kIHJvdW5kZWQgaW4gMiBkZWNpbWFsc1xuICAgIHZhciBzaXplRm9ybWF0dGVkID0gZmlsZVNpemVGb3JtYXRlcihsb2NhbFNpemUpO1xuICAgIC8vYWx3YXlzQWN0aXZlXG4gICAgdmFyIF9qID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzaG93SW5mbyA9IF9qWzBdLCBzZXRTaG93SW5mbyA9IF9qWzFdO1xuICAgIC8qKioqKioqKiogQUxXQVlTIEFDVElWRSBMT0dJQyAgKioqKioqKioqKioqKioqL1xuICAgIC8vc3RhdGUgZm9yIGFjdGlvbk9uSG92ZXJcbiAgICB2YXIgX2sgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGhvdmVyaW5nID0gX2tbMF0sIHNldEhvdmVyaW5nID0gX2tbMV07XG4gICAgdmFyIGhhbmRsZU9uSG92ZXJFbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGFsd2F5c0FjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SG92ZXJpbmcodHJ1ZSk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlT25Ib3ZlckxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYWx3YXlzQWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRIb3ZlcmluZyhmYWxzZSk7XG4gICAgfTtcbiAgICAvKioqKioqKioqKioqKioqKiogSEFORExFUlMgKioqKioqKioqKi9cbiAgICAvL2RlbGV0ZSBmaWxlIGl0ZW1cbiAgICB2YXIgaGFuZGxlRGVsZXRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25EZWxldGUgPT09IG51bGwgfHwgb25EZWxldGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRGVsZXRlKGlkKTsgfTtcbiAgICAvL29wZW4gaW5mbyBsYXllclxuICAgIHZhciBoYW5kbGVPcGVuSW5mbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFNob3dJbmZvKHRydWUpOyB9O1xuICAgIC8vY2xvc2UgaW5mbyBsYXllclxuICAgIHZhciBoYW5kbGVDbG9zZUluZm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRTaG93SW5mbyhmYWxzZSk7IH07XG4gICAgdmFyIGlzVXBsb2FkaW5nID0gdXNlSXNVcGxvYWRpbmcodXBsb2FkU3RhdHVzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJDaGFuZ2UgaXNVcGxvYWRpbmdcIiwgaXNVcGxvYWRpbmcpO1xuICAgICAgICBpZiAoaXNVcGxvYWRpbmcgJiYgc2hvd0luZm8pXG4gICAgICAgICAgICBoYW5kbGVDbG9zZUluZm8oKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2lzVXBsb2FkaW5nXSk7XG4gICAgLyoqKioqKioqKioqKioqKiBDbGljayAqKioqKioqKioqKioqKiovXG4gICAgLyoqXG4gICAgICogVE8tRE86IEFkZCBmdW5jdGlvbmFsbGl0eSBvbiBjbGljayBldmVudFxuICAgICAqIEBwYXJhbSBlIGV2ZW50IG9iamVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICAgICAgLy9hdm9pZCBjaGlsZHJlbiB0byB0cmlnZ2VyIG9uQ2xpY2sgcmlwcGxlIGZyb20gcGFyZW50XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZURvdWJsZUNsaWNrID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2FsZXJ0KFwiZG91YmxlIGNsaWNrIG9uIGZpbGVcIik7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkRvdWJsZUNsaWNrID09PSBudWxsIHx8IG9uRG91YmxlQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRG91YmxlQ2xpY2soZXZ0KTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXZ0KSB7XG4gICAgICAgIC8vIGFsZXJ0KFwicmlnaHQgY2xpY2shISEhXCIpO1xuICAgICAgICAvL2dldCBjb29yZGluYXRlc1xuICAgICAgICAvL3ppbmRleFxuICAgICAgICAvL2NyZWF0ZSBtZW51IGNvbXBvbmVudFxuICAgICAgICAvLyBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25SaWdodENsaWNrID09PSBudWxsIHx8IG9uUmlnaHRDbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SaWdodENsaWNrKGV2dCk7XG4gICAgfVxuICAgIC8vIERPV05MT0FEIEZJTEVcbiAgICAvKipcbiAgICAgKiBvbkRvd25sb2FkLCBmb3JtIDFcbiAgICAgKiBUcmlnZ2VyIGRvd2xvYWQgZGlyZWN0bHkgcGVyZm9ybWluZyBhIGNsaWNrIG9uIGFuY2hvciBlbGVtZW50XG4gICAgICovXG4gICAgdmFyIGlubmVyRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gZG93bmxvYWRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGFuY2hvckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogb25Eb3dubGFkLCBmb3JtIDJcbiAgICAgKiBIYW5kbGUgdGhlIGRvd25sb2FkIHRyaWdnZXJpbmcgYW4gb3V0c2lkZSBldmVudFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uRG93bmxvYWQpIHtcbiAgICAgICAgICAgIG9uRG93bmxvYWQgPT09IG51bGwgfHwgb25Eb3dubG9hZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Eb3dubG9hZChpZCwgZG93bmxvYWRVcmwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkb3dubG9hZFVybCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpbm5lckRvd25sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBoYW5kbGVBYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgeGhyID09PSBudWxsIHx8IHhociA9PT0gdm9pZCAwID8gdm9pZCAwIDogeGhyLmFib3J0KCk7XG4gICAgICAgIG9uQWJvcnQgPT09IG51bGwgfHwgb25BYm9ydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BYm9ydChpZCk7XG4gICAgfTtcbiAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBvbk1vdXNlRW50ZXI6IGhhbmRsZU9uSG92ZXJFbnRlciwgb25Nb3VzZUxlYXZlOiBoYW5kbGVPbkhvdmVyTGVhdmUsIG9uRG91YmxlQ2xpY2s6IGhhbmRsZURvdWJsZUNsaWNrLCBvbkNvbnRleHRNZW51OiBoYW5kbGVSaWdodENsaWNrIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyQ29udGFpbmVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1tYWluLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1wbHVzLWRhdGFcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXJDb250YWluZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pY29uLWxheWVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tbGF5ZXIgYmx1clwiLCB2aXNpYmxlOiBiYWNrZ3JvdW5kQmx1ckltYWdlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbWFnZUxheWVyLCB7IGltYWdlU291cmNlOiBpbWFnZVNvdXJjZSwgZmlsZU5hbWU6IGxvY2FsTmFtZSwgdXJsOiB1cmwsIGlzQmx1cjogdHJ1ZSwgc21hcnRJbWdGaXQ6IGZhbHNlIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tbGF5ZXJcIiwgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW1hZ2VMYXllciwgeyBpbWFnZVNvdXJjZTogaW1hZ2VTb3VyY2UsIHVybDogdXJsLCBmaWxlTmFtZTogbG9jYWxOYW1lLCBpc0JsdXI6IGZhbHNlLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtc3RhdHVzLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1N0YXR1cywgeyB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGRhcmtNb2RlID8gXCJmaWxlLWNhcmQtZGF0YSBkYXJrLW1vZGVcIiA6IFwiZmlsZS1jYXJkLWRhdGFcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLW5hbWVcIiB9LCBsb2NhbE5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXNpemVcIiB9LCBzaXplRm9ybWF0dGVkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1zaXplXCIgfSwgc2hyaW5rV29yZChsb2NhbFR5cGUpKSkpKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXJcIiwgdmlzaWJsZTogc2hvd0luZm8sIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVDYXJkSW5mb0xheWVyLCB7IG9uQ2xvc2VJbmZvOiBoYW5kbGVDbG9zZUluZm8sIHZhbGlkOiB2YWxpZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24sIGxvY2FsTmFtZTogbG9jYWxOYW1lLCBzaXplRm9ybWF0dGVkOiBzaXplRm9ybWF0dGVkLCBsb2NhbFR5cGU6IGxvY2FsVHlwZSB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXVwbG9hZC1sYXllci1jb250YWluZXJcIiwgdmlzaWJsZTogaXNVcGxvYWRpbmcsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlQ2FyZFVwbG9hZExheWVyLCB7IHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBwcm9ncmVzczogbG9jYWxQcm9ncmVzcywgb25DYW5jZWw6IG9uQ2FuY2VsID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DYW5jZWwgPT09IG51bGwgfHwgb25DYW5jZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2FuY2VsKGlkKTsgfSA6IHVuZGVmaW5lZCwgb25BYm9ydDogb25BYm9ydCA/IGhhbmRsZUFib3J0IDogdW5kZWZpbmVkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZUNhcmRSaWdodEFjdGlvbnMsIHsgZGVsZXRlSWNvbjogb25EZWxldGUgIT09IHVuZGVmaW5lZCwgb25EZWxldGU6IGhhbmRsZURlbGV0ZSwgZGFya01vZGU6IGRhcmtNb2RlLCBpbWFnZUljb246IGlzSW1hZ2UgJiYgb25TZWUgIT09IHVuZGVmaW5lZCwgb25TZWU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uU2VlID09PSBudWxsIHx8IG9uU2VlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlZShpbWFnZVNvdXJjZSk7IH0sIHZpZGVvSWNvbjogaXNWaWRlbyAmJiBvbldhdGNoICE9PSB1bmRlZmluZWQsIG9uV2F0Y2g6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uV2F0Y2ggPT09IG51bGwgfHwgb25XYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25XYXRjaCh2aWRlb1NvdXJjZSk7IH0sIGRvd25sb2FkSWNvbjogb25Eb3dubG9hZCAhPT0gdW5kZWZpbmVkIHx8IGRvd25sb2FkVXJsICE9PSB1bmRlZmluZWQsIG9uRG93bmxvYWQ6IGhhbmRsZURvd25sb2FkLCBpbmZvSWNvbjogaW5mbyAhPT0gdW5kZWZpbmVkLCBvbk9wZW5JbmZvOiBoYW5kbGVPcGVuSW5mbywgaXNBY3RpdmU6IGFsd2F5c0FjdGl2ZSB8fCBob3ZlcmluZywgdmlzaWJsZTogIWlzVXBsb2FkaW5nICYmICFzaG93SW5mbyB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwgeyBvcGVuOiByZXN1bHRPblRvb2x0aXAsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCB2YWxpZDogdmFsaWQsIGVycm9yczogZXJyb3JzLCB1cGxvYWRNZXNzYWdlOiB1cGxvYWRNZXNzYWdlIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEb3dubG9hZEhpZGRlbiwgeyBmaWxlTmFtZTogbG9jYWxOYW1lLCBhbmNob3JSZWY6IGRvd25sb2FkUmVmLCBkb3dubG9hZFVybDogZG93bmxvYWRVcmwgfSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZ1aS1mdWxsc2NyZWVuLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43MzQpO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwJSk7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLWluLW91dDtcXG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogNDAwMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5mdWktZnVsbHNjcmVlbi1jb250YWluZXIuc2hvdy1mcyB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTtcXG59XFxuXFxuLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogOTAlO1xcbiAgaGVpZ2h0OiA5MCU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC8qICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XFxuICAgIHdpZHRoOiA4MCU7XFxuICAgIGhlaWdodDogYXV0bztcXG4gIH0qL1xcbn1cXG4uZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIGltZyB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB2aWRlbyB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogYXV0bztcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KSB7XFxuICAuZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIHtcXG4gICAgaGVpZ2h0OiA5MCU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcbiAgLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB2aWRlbyB7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuICAuZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIGltZyB7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxufVxcblxcbi5idXR0b24tZnVsbC1zY3JlZW4ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxufVwiKTtcblxudmFyIEZ1bGxTY3JlZW4gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb3BlbiA9IHByb3BzLm9wZW4sIG9uQ2xvc2UgPSBwcm9wcy5vbkNsb3NlLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsb3NlKGUpIHtcbiAgICAgICAgLy9hdm9pZCBjaGlsZHJlbiB0byB0cmlnZ2VyIG9uQ2xpY2sgcmlwcGxlIGZyb20gcGFyZW50XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uQ2xvc2UgPT09IG51bGwgfHwgb25DbG9zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbG9zZSgpO1xuICAgIH1cbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaGFuZGxlQ2xvc2VFc2MgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gXCJFc2NhcGVcIilcbiAgICAgICAgICAgICAgICBvbkNsb3NlID09PSBudWxsIHx8IG9uQ2xvc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImFkZGluZyBsaXN0ZW5lclwiKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlQ2xvc2VFc2MpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInJlbW92aW5nIGxpc3RlbmVyXCIpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlQ2xvc2VFc2MpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBvcGVuID8gXCJmdWktZnVsbHNjcmVlbi1jb250YWluZXIgc2hvdy1mc1wiIDogXCJmdWktZnVsbHNjcmVlbi1jb250YWluZXJcIiwgb25DbGljazogaGFuZGxlQ2xvc2UgfSxcbiAgICAgICAgb3BlbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXJcIiwgb25DbGljazogaGFuZGxlQ2xvc2UgfSwgY2hpbGRyZW4pKSxcbiAgICAgICAgb25DbG9zZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIiwgb25DbGljazogaGFuZGxlQ2xvc2UsIGNvbG9yRmlsbDogXCJ0cmFuc3BhcmVudFwiLCBjbGFzc05hbWU6IFwiYnV0dG9uLWZ1bGwtc2NyZWVuXCIsIHNpemU6IFwiZXh0cmEtbGFyZ2VcIiB9KSkpKTtcbn07XG5cbnZhciBWaWRlb1ByZXZpZXcgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdmlkZW9TcmMgPSBwcm9wcy5zcmMsIFxuICAgIC8qIGF1dG9QbGF5LCBjb250cm9scywgICovXG4gICAgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBvdGhlcnMgPSBfX3Jlc3QocHJvcHMsIFtcInNyY1wiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCJdKTtcbiAgICB2YXIgdmlkZW9SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgc291cmNlID0gX2FbMF0sIHNldFNvdXJjZSA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vaWYgbm90IHVuZGVmaW5lZFxuICAgICAgICBpZiAoIXZpZGVvU3JjKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2aWRlb1NyYyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgLy9pZiBhIHVybCBzdHJpbmcgaXMgZ2l2ZW4sIGFzc2lnbiBpdCBkaXJlY3RseVxuICAgICAgICAgICAgc2V0U291cmNlKHZpZGVvU3JjKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vaWYgYSBGaWxlIG9iamVjdCBpcyBnaXZlbiwgY2hlY2sgaWYgaXMgYSBzdXBwb3J0ZWQgZm9ybWF0XG4gICAgICAgICAgICB2YXIgaGVhZGVyTWltZSA9IHZpZGVvU3JjLnR5cGUgPyB2aWRlb1NyYy50eXBlLnNwbGl0KFwiL1wiKVswXSA6IFwib2N0ZXRcIjtcbiAgICAgICAgICAgIHZhciB0YWlsTWltZSA9IHZpZGVvU3JjLnR5cGUgPyB2aWRlb1NyYy50eXBlLnNwbGl0KFwiL1wiKVsxXSA6IFwib2N0ZXRcIjtcbiAgICAgICAgICAgIGlmIChoZWFkZXJNaW1lID09PSBcInZpZGVvXCIgJiYgW1wibXA0XCIsIFwib2dnXCIsIFwid2VibVwiXS5pbmNsdWRlcyh0YWlsTWltZSkpIHtcbiAgICAgICAgICAgICAgICAvL3NldCB0aGUgdmlkZW8gc291cmNlIGFuZCBjcmVhdGUgdGhlIHVyaSBzdHJpbmcgaWYgaXMgYSBzdXBwb3J0ZWQgdmlkZW8gZm9ybWF0XG4gICAgICAgICAgICAgICAgdmFyIG5ld1ZpZGVvU3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh2aWRlb1NyYyk7XG4gICAgICAgICAgICAgICAgc2V0U291cmNlKG5ld1ZpZGVvU3JjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFt2aWRlb1NyY10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChzb3VyY2UgJiYgdmlkZW9SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgdmlkZW9SZWYuY3VycmVudC5sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9LCBbc291cmNlXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCB2aWRlb1NyYyAmJiBzb3VyY2UgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ2aWRlb1wiLCBfX2Fzc2lnbiQxKHsgb25DbGljazogZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0sIFxuICAgICAgICAvL29uTG9hZGVkTWV0YWRhdGE9e2hhbmRsZUxvYWRlZH1cbiAgICAgICAgaWQ6IFwiZmlsZXMtdWktdmlkZW9cIiwgXG4gICAgICAgIC8vY29udHJvbHM9e2NvbnRyb2xzfVxuICAgICAgICByZWY6IHZpZGVvUmVmLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcImZpbGVzdWktdmlkZW8tcHJldmlld1wiLCBcbiAgICAgICAgLy9hdXRvUGxheT17YXV0b3BsYXl9XG4gICAgICAgIHNyYzogc291cmNlLCBcbiAgICAgICAgLy93aWR0aD17XCIxMDAlXCJ9XG4gICAgICAgIGhlaWdodDogXCIxMDAlXCIsIHN0eWxlOiBzdHlsZSB9LCBvdGhlcnMpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIsIHsgdHlwZTogXCJ2aWRlby93ZWJtXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzb3VyY2VcIiwgeyB0eXBlOiBcInZpZGVvL29nZ1wiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIsIHsgdHlwZTogXCJ2aWRlby9tcDRcIiB9KSkpKSk7XG59O1xuXG52YXIgRmlsZXNVaVByb3ZpZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGNvbmZpZyA9IHByb3BzLmNvbmZpZztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZXNVaUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbmZpZyB8fCB7fSB9LCBjaGlsZHJlbikpO1xufTtcblxuZXhwb3J0IHsgQUJPUlRFRF9FUlJPUl9SRVNQT05TRSwgQXZhdGFyLCBEcm9wem9uZSwgRHJvcHpvbmVFbmdsaXNoLCBEcm9wem9uZUZyZW5jaCwgRHJvcHpvbmVJdGFsaWFuLCBEcm9wem9uZUxvY2FsaXplciwgRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3RvciwgRHJvcHpvbmVQb3J0dWd1ZXNlLCBEcm9wem9uZVJ1c3NpYW4sIERyb3B6b25lU2ltcGxpZmllZENoaW5lc2UsIERyb3B6b25lU3BhbmlzaCwgRHJvcHpvbmVUcmFkaXRpb25hbENoaW5lc2UsIEV4dEZpbGVJbnN0YW5jZSwgRmlsZUNhcmQsIEZpbGVJZEdlbmVyYXRvciwgRmlsZUlucHV0QnV0dG9uLCBGaWxlSXRlbUVuZ2xpc2gsIEZpbGVJdGVtRnJlbmNoLCBGaWxlSXRlbUl0YWxpYW4sIEZpbGVJdGVtTG9jYWxpemVyLCBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yLCBGaWxlSXRlbVBvcnR1Z3Vlc2UsIEZpbGVJdGVtUnVzc2lhbiwgRmlsZUl0ZW1TaW1wbGlmaWVkQ2hpbmVzZSwgRmlsZUl0ZW1TcGFuaXNoLCBGaWxlSXRlbVRyYWRpdGlvbmFsQ2hpbmVzZSwgRmlsZU1vc2FpYywgRmlsZXNVaVByb3ZpZGVyLCBGdWxsU2NyZWVuLCBJbWFnZVByZXZpZXcsIEpTT05fUEFSU0VfRVJST1JfUkVTUE9OU0UsIEpzb25QYXJzZVJlc3BvbnNlLCBNYXRlcmlhbEJ1dHRvbiwgTkFNRURfQ09MT1JTLCBOT19YSFJfUFJPVklERURfRVJST1IsIFN5bnRoZXRpY0ZpbGUsIFRJTUVPVVRfRVJST1JfUkVTUE9OU0UsIFVORVhQRUNURURfRVJST1JfUkVTUE9OU0UsIFZhbGlkYXRlRXJyb3JFbmdsaXNoLCBWYWxpZGF0ZUVycm9yRnJlbmNoLCBWYWxpZGF0ZUVycm9ySXRhbGlhbiwgVmFsaWRhdGVFcnJvckxvY2FsaXplciwgVmFsaWRhdGVFcnJvckxvY2FsaXplclNlbGVjdG9yLCBWYWxpZGF0ZUVycm9yUG9ydHVndWVzZSwgVmFsaWRhdGVFcnJvclJ1c3NpYW4sIFZhbGlkYXRlRXJyb3JTaW1wbGlmaWVkQ2hpbmVzZSwgVmFsaWRhdGVFcnJvclNwYW5pc2gsIFZhbGlkYXRlRXJyb3JUcmFkaXRpb25hbENoaW5lc2UsIFZpZGVvUHJldmlldywgYWFjLCBhYncsIGFjY2RiLCBhZGRDbGFzc05hbWUsIGFkZEV4dHJhRGF0YSwgYWRkSGVhZGVycywgYXN1cmVDb2xvciwgY2xlYW5JbnB1dCwgY29sb3VyTmFtZVRvSGV4LCBjb21wbGV0ZUFzdXJlQ29sb3IsIGNvbXBsZXRlVXBsb2FkUmVzdWx0LCBjcmVhdGVMaXN0T2ZNdWx0aVR5cGVGaWxlLCBjcmVhdGVTeW50aGV0aWNGaWxlLCBjcmVhdGVVcGxvYWRDb25maWcsIGRhcmtlckNvbG9yLCBleHRGaWxlTW9jaywgZXh0RmlsZVJlY29uY2lsYXRpb24sIGZha2VGdWlVcGxvYWQsIGZpbGVMaXN0VG9FeHRGaWxlQXJyYXksIGZpbGVMaXN0VG9FeHRGaWxlSW5zdGFuY2VBcnJheSwgZmlsZUxpc3R2YWxpZGF0b3IsIGZpbGVTaXplRm9ybWF0ZXIsIGdldEV4dCwgZ2V0SW1hZ2VPcmllbnRhdGlvbiwgZ2V0TG9jYWxGaWxlSXRlbURhdGEsIGdldFJhbmRvbUludCwgZ2V0VVJMRmlsZUljbywgZ2V0VVJMRmlsZUljb0Zyb21OYW1lQW5kVHlwZSwgaGV4Q29sb3JUb1JHQiwgaGV4VG9kZWMsIGluc3RhbnRQcmVwYXJpbmdUb1VwbG9hZE9uZSwgaXNIZXhDb2xvciwgaXNVcGxvYWRBYmxlRXh0RmlsZSwgaXNWYWxpZGF0ZUFjdGl2ZSwgbWFrZUVycm9yVXBsb2FkUmVzcG9uc2UsIG1ha2VTZXJ2ZXJSZXNwb25zZSwgbWFrZVN1Y2Nlc3NVcGxvYWRSZXNwb25zZSwgbWFrZVN5bnRoZXRpY0V4dEZpbGUsIHByZXBUb1VwbG9hZE9uZSwgcHJlcGFyaW5nVG9VcGxvYWRPbmUsIHJlYWRBc0FycmF5QnVmZmVyLCByZWFkQXNCaW5hcnlTdHJpbmcsIHJlYWRBc0RhdGFVUkwsIHJlYWRBc1RleHQsIHJlc2l6ZUltYWdlLCBzYW5pdGl6ZUFyckV4dEZpbGUsIHNlcGFyYXRlQWNjZXB0LCBzZXROZXh0VXBsb2FkU3RhdHVzLCBzZXRQcmVwVG9VcGxvYWRpbmcsIHNocmlua1dvcmQsIHNsZWVwUHJlcGFyaW5nLCBzbGVlcFRyYW5zaXRpb24sIHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0LCB1bmFibGVUb1VwbG9hZFJlc3VsdCwgdW5leHBlY3RlZEVycm9yVXBsb2FkUmVzdWx0LCB1cGxvYWRFeHRGaWxlLCB1cGxvYWRGaWxlLCB1cGxvYWRGb3JtRGF0YSwgdXBsb2FkT25lLCB1cGxvYWRPbmVFeHRGaWxlLCB1c2VGYWtlUHJvZ3Jlc3MsIHZhbGlkYXRlQWNjZXB0LCB2YWxpZGF0ZUV4dEZpbGUsIHZhbGlkYXRlRXh0RmlsZUxpc3QsIHZhbGlkYXRlRmlsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZXMuanMubWFwXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlUmVmLFxuICB1c2VNZW1vLFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxuICB1c2VDYWxsYmFjayxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBEcm9wem9uZSwgRmlsZU1vc2FpYyB9IGZyb20gXCJAZmlsZXMtdWkvcmVhY3RcIjtcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tIFwiLi9NZXNzYWdlXCI7XG5pbXBvcnQgeyBBd2FpdCB9IGZyb20gXCIuL0F3YWl0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5cbmNvbnN0IFNpbmdsZU5ld0RpciA9ICh7IG5hbWUsIGVkaXQsIHNldE5ld0RpciwgaWR4IH0pID0+IHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IFtfbmFtZSwgc2V0TmFtZV0gPSB1c2VTdGF0ZShuYW1lIHx8IFwiXCIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVkaXQpIHtcbiAgICAgIHJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbcmVmLCBlZGl0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX25hbWUuaW5kZXhPZihcIi9cIikgPiAtMSkge1xuICAgICAgY29uc3QgZGlycyA9IF9uYW1lLnNwbGl0KFwiL1wiLCAyKTtcbiAgICAgIHNldE5hbWUoZGlyc1swXSk7XG4gICAgICBjb25zdCBhZGQgPSB7IG5hbWU6IGRpcnNbMV0sIGVkaXQ6IHRydWUgfTtcbiAgICAgIHNldE5ld0Rpcih7IG5hbWU6IGRpcnNbMF0sIGVkaXQ6IGZhbHNlIH0sIGlkeCwgYWRkKTtcbiAgICB9XG4gIH0sIFtfbmFtZSwgc2V0TmV3RGlyLCBpZHhdKTtcblxuICBpZiAoIWVkaXQpIHtcbiAgICBjb25zdCBvbkNsaWNrID0gKCkgPT4ge1xuICAgICAgc2V0TmV3RGlyKHsgbmFtZTogX25hbWUsIGVkaXQ6IHRydWUgfSwgaWR4KTtcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgICBzdHlsZT17eyBwYWRkaW5nTGVmdDogXCIwLjFyZW1cIiwgcGFkZGluZ1JpZ2h0OiBcIjByZW1cIiB9fVxuICAgICAgPlxuICAgICAgICB7X25hbWV9L1xuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKGUpID0+IHtcbiAgICBzZXROYW1lKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBvbkJsdXIgPSAoZSkgPT4ge1xuICAgIGlmIChlLnJlbGF0ZWRUYXJnZXQ/LmNsYXNzTGlzdC5jb250YWlucyhcImNhb3NkYi1mLWNhbmNlbC1uZXctZGlyZWN0b3J5XCIpKSB7XG4gICAgICBzZXROZXdEaXIoeyBlZGl0OiBmYWxzZSB9LCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXROZXdEaXIoeyBuYW1lOiBfbmFtZSwgZWRpdDogZmFsc2UgfSwgaWR4KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlKSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIHNldE5ld0Rpcih7IG5hbWU6IF9uYW1lLCBlZGl0OiBmYWxzZSB9LCBpZHgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHZhbHVlPXtfbmFtZX1cbiAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIHRpdGxlPVwiSW5zZXJ0IG5ldyBkaXJlY3RvcnkgbmFtZS4gQSBkaXJlY3RvcnkgbmFtZSBtdXN0IG5vdCBjb250YWluIHRoZSBzbGFzaCAnLycuXCJcbiAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAvPlxuICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNhb3NkYi1mLWNhbmNlbC1uZXctZGlyZWN0b3J5XCI+XG4gICAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLXhcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIj5cbiAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktY2hlY2tcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICApO1xufTtcblxuY29uc3QgTmV3RGlycyA9ICh7IHNldERpcmVjdG9yeSwgdmFsdWUgfSkgPT4ge1xuICBjb25zdCBbbmV3RGlycywgc2V0TmV3RGlyc10gPSB1c2VTdGF0ZShcbiAgICB2YWx1ZS5tYXAoKGQpID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGQgfTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBzZXRTaW5nbGVOZXdEaXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZCwgaWR4LCBhZGQpID0+IHtcbiAgICAgIHZhciBfbmV3RGlycyA9IFtdLmNvbmNhdChuZXdEaXJzKTtcbiAgICAgIGlmIChkLm5hbWUpIHtcbiAgICAgICAgX25ld0RpcnNbaWR4XSA9IGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbmV3RGlycyA9IF9uZXdEaXJzLnNsaWNlKDAsIGlkeCkuY29uY2F0KF9uZXdEaXJzLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgX25ld0RpcnMgPSBfbmV3RGlyc1xuICAgICAgICAgIC5zbGljZSgwLCBpZHggKyAxKVxuICAgICAgICAgIC5jb25jYXQoW2FkZF0sIF9uZXdEaXJzLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgIH1cbiAgICAgIHNldE5ld0RpcnMoX25ld0RpcnMpO1xuICAgICAgc2V0RGlyZWN0b3J5KF9uZXdEaXJzLm1hcCgoZCkgPT4gZC5uYW1lKSk7XG4gICAgfSxcbiAgICBbbmV3RGlycywgc2V0TmV3RGlycywgc2V0RGlyZWN0b3J5XSxcbiAgKTtcblxuICBjb25zdCBhZGREaXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgX25ld0RpcnMgPSBuZXdEaXJzLm1hcCgoZCkgPT4ge1xuICAgICAgcmV0dXJuIHsgLi4uZCwgZWRpdDogZmFsc2UgfTtcbiAgICB9KTtcbiAgICBfbmV3RGlycy5wdXNoKHsgZWRpdDogdHJ1ZSB9KTtcbiAgICBzZXROZXdEaXJzKF9uZXdEaXJzKTtcbiAgfSwgW25ld0RpcnMsIHNldE5ld0RpcnNdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7bmV3RGlycy5tYXAoKG5ld0RpciwgaWR4KSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNpbmdsZU5ld0RpclxuICAgICAgICAgICAga2V5PXtgJHtuZXdEaXIubmFtZX0tJHtpZHh9YH1cbiAgICAgICAgICAgIGlkeD17aWR4fVxuICAgICAgICAgICAgbmFtZT17bmV3RGlyLm5hbWV9XG4gICAgICAgICAgICBzZXROZXdEaXI9e3NldFNpbmdsZU5ld0Rpcn1cbiAgICAgICAgICAgIGVkaXQ9e25ld0Rpci5lZGl0fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICAgIHtuZXdEaXJzLmZpbHRlcigoZCkgPT4gZC5lZGl0KS5sZW5ndGggPiAwIHx8IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cIm1zLWF1dG8gYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gYWRkRGlyKCl9XG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1mb2xkZXItcGx1c1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IERpcmVjdG9yeUZpZWxkID0gKHtcbiAgZGlyZWN0b3J5QmFzZSxcbiAgcmVhZE9ubHksXG4gIHZhbHVlLFxuICBzZXREaXJlY3RvcnksXG4gIGxhYmVsLFxufSkgPT4ge1xuICBjb25zdCBfbGFiZWwgPSBsYWJlbCB8fCBcIkRpcmVjdG9yeVwiO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWItMSByb3cgY2Fvc2RiLWYtZmlsZS11cGxvYWQtZGlyZWN0b3J5LWlucHV0XCI+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57X2xhYmVsfTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS05IGQtZmxleFwiPlxuICAgICAgICB7IWRpcmVjdG9yeUJhc2UgfHwgKFxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCJ1bnNldFwiLCBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2wtcGxhaW50ZXh0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZGlyZWN0b3J5QmFzZS5qb2luKFwiL1wiKSArIFwiL1wifVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgICAge3JlYWRPbmx5IHx8IDxOZXdEaXJzIHNldERpcmVjdG9yeT17c2V0RGlyZWN0b3J5fSB2YWx1ZT17dmFsdWV9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBTZWxlY3QgPSAoeyBvcHRpb25zLCBvbkNoYW5nZSwgdmFsdWUsIGNsYXNzTmFtZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNlbGVjdCBjbGFzc05hbWU9e2NsYXNzTmFtZX0gb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17dmFsdWV9PlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxuICAgICAge29wdGlvbnMubWFwKChvLCBpZHgpID0+IChcbiAgICAgICAgPG9wdGlvbiBrZXk9e2lkeH0gdmFsdWU9e28udmFsdWV9IHRpdGxlPXtvLnRpdGxlfT5cbiAgICAgICAgICB7by5sYWJlbCB8fCBvLnZhbHVlfVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICkpfVxuICAgIDwvc2VsZWN0PlxuICApO1xufTtcblxuY29uc3QgUmVjb3JkVHlwZUZpZWxkID0gKHsgb3B0aW9ucywgdmFsdWUsIG9uQ2hhbmdlLCBsYWJlbCB9KSA9PiB7XG4gIGNvbnN0IF9sYWJlbCA9IGxhYmVsIHx8IFwiUmVjb3JkVHlwZVwiO1xuICBjb25zdCBfcmVhZE9ubHkgPSAhb3B0aW9ucztcbiAgY29uc3QgY2xhc3NOYW1lID0gX3JlYWRPbmx5ID8gXCJmb3JtLWNvbnRyb2wtcGxhaW50ZXh0XCIgOiBcImZvcm0tY29udHJvbFwiO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHJvdyBjYW9zZGItZi1maWxlLXVwbG9hZC1yZWNvcmR0eXBlLXNlbGVjdFwiPlxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBlLTEgY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57X2xhYmVsfTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS05XCI+XG4gICAgICAgIHshX3JlYWRPbmx5IHx8IChcbiAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHJlYWRPbmx5PXtfcmVhZE9ubHl9IHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAge19yZWFkT25seSB8fCAoXG4gICAgICAgICAgPEF3YWl0XG4gICAgICAgICAgICBwcm9taXNlPXtQcm9taXNlLmFsbChbb3B0aW9ucywgdmFsdWVdKX1cbiAgICAgICAgICAgIHRoZW49eyhyZXNvbHZlZCkgPT4gKFxuICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17cmVzb2x2ZWRbMF19XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtyZXNvbHZlZFsxXX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgRmlsZSA9ICh7IGZpbGUsIHJlbW92ZUZpbGUgfSkgPT4ge1xuICByZXR1cm4gPEZpbGVNb3NhaWMgey4uLmZpbGV9IG9uRGVsZXRlPXtyZW1vdmVGaWxlfSAvPjtcbn07XG5cbmNvbnN0IEZpbGVVcGxvYWRGYWlsZWQgPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPE1lc3NhZ2UgdHlwZT1cImVycm9yXCI+XG4gICAgICB7XCJUaGUgZmlsZSB1cGxvYWQgZmFpbGVkOiBcIn1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L01lc3NhZ2U+XG4gICk7XG59O1xuXG5jb25zdCBGaWxlVXBsb2FkU3VjY2VzcyA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAge2NoaWxkcmVuIHx8IChcbiAgICAgICAgPE1lc3NhZ2UgdHlwZT1cInN1Y2Nlc3NcIj5Zb3VyIGZpbGVzIGhhdmUgYmVlbiB1cGxvYWRlZC48L01lc3NhZ2U+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgU2luZ2xlRmlsZVJlc3BvbnNlID0gKHsgZGlyZWN0b3J5LCBmaWxlLCByZXNwb25zZUVycm9ycyB9KSA9PiB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChyZXNwb25zZUVycm9ycykge1xuICAgIHJlc3VsdCA9IChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTZcIj57ZmlsZS5wYXRoLnJlcGxhY2VBbGwoZGlyZWN0b3J5LCBcIlwiKX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNiB0ZXh0LWVuZFwiPlxuICAgICAgICAgIHtmaWxlLmVycm9yID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWRhbmdlclwiPntmaWxlLmVycm9yfTwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJ0ZXh0LXN1Y2Nlc3MgYmkgYmktY2hlY2tcIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02XCI+e2ZpbGUucGF0aC5yZXBsYWNlQWxsKGRpcmVjdG9yeSwgXCJcIil9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTRcIj57ZmlsZS5pZH08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tMiB0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImJ0biBjYW9zZGItZnMtYnRuLWZpbGVcIiBocmVmPXtmaWxlLnVybH0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZSBjYW9zZGItbGFiZWwtZmlsZVwiPkY8L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9XCJsaXN0LWdyb3VwLWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+e3Jlc3VsdH08L2Rpdj5cbiAgICA8L2xpPlxuICApO1xufTtcblxuY29uc3QgaGFuZGxlUmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgdmFyIGhlYWRlciA9IHJlc3BvbnNlLmhhc0Vycm9ycyA/IChcbiAgICA8TWVzc2FnZSB0eXBlPVwiZXJyb3JcIj5UaGUgZmlsZSB1cGxvYWQgZmFpbGVkLjwvTWVzc2FnZT5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPE1lc3NhZ2UgdHlwZT1cInN1Y2Nlc3NcIj5Zb3VyIGZpbGVzIGhhdmUgYmVlbiB1cGxvYWRlZC48L01lc3NhZ2U+XG4gICAgICB7IXJlc3BvbnNlLnVybCB8fCAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItM1wiPlxuICAgICAgICAgIEdvIHRvIGRpcmVjdG9yeTogPGEgaHJlZj17cmVzcG9uc2UudXJsfT57cmVzcG9uc2UuZGlyZWN0b3J5fTwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7aGVhZGVyfVxuICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02XCI+PC9kaXY+XG4gICAgICAgICAgICB7cmVzcG9uc2UuaGFzRXJyb3JzID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IHRleHQtZW5kIGZ3LWJvbGRcIj5FcnJvcjwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS0zIGZ3LWJvbGRcIj5JRDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTMgdGV4dC1lbmQgZnctYm9sZFwiPkZpbGUgRW50aXR5PC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAge3Jlc3BvbnNlLm5ld0ZpbGVzPy5tYXAoKGYsIGlkeCkgPT4gKFxuICAgICAgICAgIDxTaW5nbGVGaWxlUmVzcG9uc2VcbiAgICAgICAgICAgIHJlc3BvbnNlRXJyb3JzPXtyZXNwb25zZS5oYXNFcnJvcnN9XG4gICAgICAgICAgICBkaXJlY3Rvcnk9e3Jlc3BvbnNlLmRpcmVjdG9yeX1cbiAgICAgICAgICAgIGZpbGU9e2Z9XG4gICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCB0b0RpcmVjdG9yeUFycmF5ID0gKGRpcikgPT4ge1xuICBpZiAoZGlyPy5zcGxpdCkge1xuICAgIHJldHVybiBkaXIuc3BsaXQoXCIvXCIpLmZpbHRlcigoeCkgPT4geCk7XG4gIH1cbiAgcmV0dXJuIGRpcjtcbn07XG5cbmNvbnN0IEZpbGVVcGxvYWQgPSAoe1xuICBmaWxlcyxcbiAgb25DYW5jZWwsXG4gIHJlY29yZFR5cGVTaG93LFxuICByZWNvcmRUeXBlcyxcbiAgZGlyZWN0b3J5QmFzZSxcbiAgZGlyZWN0b3J5LFxuICBkaXJlY3RvcnlSZWFkT25seSxcbiAgZGlyZWN0b3J5U2hvdyxcbiAgcmVjb3JkVHlwZSxcbiAgb25DaGFuZ2UsXG4gIG9uU3VibWl0LFxuICBhY2NlcHQsXG4gIHN0YXRlLFxuICBvbkZpbmlzaCxcbn0pID0+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,"&lt;")),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_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.internal.AMP_RE_,"&amp;")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.internal.LT_RE_,"&lt;")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.internal.GT_RE_,"&gt;")),-1!=e.indexOf(\'"\')&&(e=e.replace(goog.string.internal.QUOT_RE_,"&quot;")),-1!=e.indexOf("\'")&&(e=e.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;")),-1!=e.indexOf("\\0")&&(e=e.replace(goog.string.internal.NULL_RE_,"&#0;"))}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," &#160;"),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_,"&#101;")),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={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'},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," &#160;"),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 Q=__webpack_module_cache__[F];if(void 0!==Q)return Q.exports;var l=__webpack_module_cache__[F]={exports:{}};return __webpack_modules__[F](l,l.exports,__webpack_require__),l.exports}__webpack_require__.n=F=>{var Q=F&&F.__esModule?()=>F.default:()=>F;return __webpack_require__.d(Q,{a:Q}),Q},__webpack_require__.d=(F,Q)=>{for(var l in Q)__webpack_require__.o(Q,l)&&!__webpack_require__.o(F,l)&&Object.defineProperty(F,l,{enumerable:!0,get:Q[l]})},__webpack_require__.o=(F,Q)=>Object.prototype.hasOwnProperty.call(F,Q),__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};\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};\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};\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};\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.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};\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};\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};\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}();\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  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            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  if ("".concat(BUILD_MODULE_EXT_FILE_UPLOAD) === "ENABLED") {\n    caosdb_modules.register(file_upload);\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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c291cmNlcyI6WyJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyLy4vc3JjL2ZpbGUtdXBsb2FkLmpzP2RkNjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gXCJyZWFjdC1kb20vY2xpZW50XCI7XG5pbXBvcnQgXCJyZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWVcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tIFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktY29yZS1jb21wb25lbnRzXCI7XG5cbmNvbnN0IGdldF9maWxlc3lzdGVtX2JvZHkgPSAoKSA9PiB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nhb3NkYi1mLWZpbGVzeXN0ZW0gLmNhcmQtYm9keVwiKTtcbn07XG5cbmNvbnN0IGdldF9maWxlc3lzdGVtX2hlYWRlciA9ICgpID0+IHtcbiAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2Fvc2RiLWYtZmlsZXN5c3RlbSAuY2FyZC1oZWFkZXJcIik7XG59O1xuXG5jb25zdCBnZXRfY3VycmVudF9kaXJlY3RvcnkgPSAoKSA9PiB7XG4gIGNvbnN0IGhlYWRlciA9IGdldF9maWxlc3lzdGVtX2hlYWRlcigpO1xuICBpZiAoIWhlYWRlcikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gQXJyYXkuZnJvbShoZWFkZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNhb3NkYi1mcy1jd2RcIikpLm1hcChcbiAgICAoZWwpID0+IGVsLnRleHRDb250ZW50LFxuICApO1xufTtcblxuY29uc3QgY3JlYXRlX2ZpbGVfdXBsb2FkX3JlcXVlc3RfeG1sID0gKGZpbGVzLCB0YXJnZXREaXJlY3RvcnksIHJlY29yZFR5cGUpID0+IHtcbiAgY29uc3QgX3BhcmVudCA9IHJlY29yZFR5cGUgPyBgPFBhcmVudCBpZD1cIiR7cmVjb3JkVHlwZX1cIi8+YCA6IFwiXCI7XG4gIGNvbnN0IHJlcXVlc3QgPVxuICAgIFwiPFJlcXVlc3Q+XCIgK1xuICAgIGZpbGVzLm1hcCgoZiwgaWR4KSA9PiB7XG4gICAgICByZXR1cm4gYDxGaWxlIHVwbG9hZD1cIiR7aWR4fS0ke2YubmFtZX1cIiBwYXRoPVwiJHt0YXJnZXREaXJlY3Rvcnl9JHtmLm5hbWV9XCI+JHtfcGFyZW50fTwvRmlsZT5gO1xuICAgIH0pICtcbiAgICBcIjwvUmVxdWVzdD5cIjtcblxuICByZXR1cm4gcmVxdWVzdDtcbn07XG5cbmNvbnN0IGNyZWF0ZV9mb3JtX2RhdGEgPSAoeG1sLCBmaWxlcykgPT4ge1xuICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICBmb3JtRGF0YS5hcHBlbmQoXCJGaWxlUmVwcmVzZW50YXRpb25cIiwgeG1sKTtcbiAgZmlsZXMuZm9yRWFjaCgoZiwgaWR4KSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGAke2lkeH0tJHtmLm5hbWV9YDtcbiAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgZi5maWxlLCBuYW1lKTtcbiAgfSk7XG4gIHJldHVybiBmb3JtRGF0YTtcbn07XG5cbmNvbnN0IHNwbGl0X3BhcmVudF9kaXIgPSAobm9kZSkgPT4ge1xuICByZXBhaXJfdXJpKG5vZGUsIFwiaHJlZlwiKTtcbiAgY29uc3QgcGF0aF9vbGQgPSBub2RlXG4gICAgLmdldEF0dHJpYnV0ZShcImhyZWZcIilcbiAgICAuc3Vic3RyaW5nKGNvbm5lY3Rpb24uZ2V0RmlsZVN5c3RlbVBhdGgoKS5sZW5ndGgpXG4gICAgLnNwbGl0KFwiL1wiKTtcbiAgaWYgKHBhdGhfb2xkLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCBwYXJlbnRfZGlyID0gcGF0aF9vbGQuc2xpY2UoMCwgcGF0aF9vbGQubGVuZ3RoIC0gMSk7XG4gICAgY29uc3QgcGFyZW50X2Rpcl9ub2RlID0gbm9kZS5jbG9uZU5vZGUoKTtcbiAgICBwYXJlbnRfZGlyX25vZGUuc2V0QXR0cmlidXRlKFxuICAgICAgXCJocmVmXCIsXG4gICAgICBjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkgKyBwYXJlbnRfZGlyLmpvaW4oXCIvXCIpICsgXCIvXCIsXG4gICAgKTtcbiAgICBwYXJlbnRfZGlyX25vZGUudGV4dENvbnRlbnQgPSBwYXJlbnRfZGlyLmpvaW4oXCIvXCIpICsgXCIvXCI7XG4gICAgcGFyZW50X2Rpci50aXRsZSA9IFwiR28gdG8gcGFyZW50IGRpcmVjdG9yeS5cIjtcbiAgICBub2RlLmJlZm9yZShwYXJlbnRfZGlyX25vZGUpO1xuICAgIG5vZGUuZGF0YXNldC5lbnRpdHlQYXRoID0gbm9kZS50ZXh0Q29udGVudDtcbiAgICBub2RlLnRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudC5zcGxpdChcIi9cIikuc2xpY2UoLTEpWzBdO1xuICAgIG5vZGUudGl0bGUgPSBcIkRvd25sb2FkIHRoaXMgZmlsZVwiO1xuICB9XG59O1xuXG5jb25zdCByZXBhaXJfdXJpID0gKG5vZGUsIGF0dHIpID0+IHtcbiAgY29uc3QgcGF0aF9vbGQgPSBub2RlXG4gICAgLmdldEF0dHJpYnV0ZShhdHRyKVxuICAgIC5zdWJzdHJpbmcoY29ubmVjdGlvbi5nZXRGaWxlU3lzdGVtUGF0aCgpLmxlbmd0aClcbiAgICAuc3BsaXQoXCIvXCIpO1xuICBjb25zdCBwYXRoX25ldyA9IHBhdGhfb2xkLm1hcChlbmNvZGVVUklDb21wb25lbnQpO1xuICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCBjb25uZWN0aW9uLmdldEZpbGVTeXN0ZW1QYXRoKCkgKyBwYXRoX25ldy5qb2luKFwiL1wiKSk7XG59O1xuXG5jb25zdCB1cGxvYWRSZXF1ZXN0ID0gKGZvcm1EYXRhKSA9PiB7XG4gIHJldHVybiAkLmFqYXgoe1xuICAgIHVybDogY29ubmVjdGlvbi5nZXRCYXNlUGF0aCgpICsgXCJFbnRpdHkvXCIsXG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBkYXRhVHlwZTogXCJ4bWxcIixcbiAgICBjb250ZW50VHlwZTogZmFsc2UsXG4gICAgcHJvY2Vzc0RhdGE6IGZhbHNlLFxuICAgIGRhdGE6IGZvcm1EYXRhLFxuICB9KTtcbn07XG5cbmNvbnN0IGRlZmF1bHRPblN1Ym1pdCA9IGFzeW5jIChkYXRhKSA9PiB7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY29sbGFwc2VGaWxlVXBsb2FkfnVsXCIpPy5yZW1vdmUoKTtcbiAgdmFyIHsgZmlsZXMsIGRpcmVjdG9yeSwgcmVjb3JkVHlwZSB9ID0gZGF0YTtcbiAgZGlyZWN0b3J5ID0gZGlyZWN0b3J5IHx8IFtdO1xuICBkaXJlY3RvcnkgPSBkaXJlY3RvcnkubGVuZ3RoID4gMCA/IFwiL1wiICsgZGlyZWN0b3J5LmpvaW4oXCIvXCIpICsgXCIvXCIgOiBcIi9cIjtcblxuICBjb25zdCB4bWwgPSBjcmVhdGVfZmlsZV91cGxvYWRfcmVxdWVzdF94bWwoZmlsZXMsIGRpcmVjdG9yeSwgcmVjb3JkVHlwZSk7XG4gIGNvbnN0IGZvcm1EYXRhID0gY3JlYXRlX2Zvcm1fZGF0YSh4bWwsIGZpbGVzKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB1cGxvYWRSZXF1ZXN0KGZvcm1EYXRhKTtcbiAgLy8gVE9ETyBoYW5kbGUgWE1MRG9jdW1lbnQsIGV4dHJhY3QgZXJyb3JzIG9yIGlkcy5cbiAgY29uc3QgaXRlcmF0b3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICBcIi9SZXNwb25zZS9GaWxlXCIsXG4gICAgcmVzcG9uc2UsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICApO1xuICBjb25zdCBuZXdGaWxlcyA9IFtdO1xuXG4gIHZhciBuZXh0ID0gaXRlcmF0b3IuaXRlcmF0ZU5leHQoKTtcbiAgdmFyIGhhc0Vycm9ycyA9IGZhbHNlO1xuICB3aGlsZSAobmV4dCkge1xuICAgIHZhciBlcnJvciA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXCJFcnJvclwiLCBuZXh0LCBudWxsLCBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFKVxuICAgICAgPy5pdGVyYXRlTmV4dCgpO1xuICAgIGNvbnN0IHBhdGggPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgIFwiQHBhdGhcIixcbiAgICAgIG5leHQsXG4gICAgICBudWxsLFxuICAgICAgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUsXG4gICAgKT8uc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgaWQgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICAgIFwiQGlkXCIsXG4gICAgICBuZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICk/LnN0cmluZ1ZhbHVlO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgIGVycm9yID0gcmVzcG9uc2UuZXZhbHVhdGUoXG4gICAgICAgIFwiQGRlc2NyaXB0aW9uXCIsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBudWxsLFxuICAgICAgICBYUGF0aFJlc3VsdC5TVFJJTkdfVFlQRSxcbiAgICAgICk/LnN0cmluZ1ZhbHVlO1xuICAgIH1cbiAgICBuZXdGaWxlcy5wdXNoKHtcbiAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgIGlkOiBpZCxcbiAgICAgIHBhdGg6IHBhdGgsXG4gICAgICB1cmw6ICFpZCB8fCBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkVudGl0eS9cIiArIGlkLFxuICAgIH0pO1xuICAgIG5leHQgPSBpdGVyYXRvci5pdGVyYXRlTmV4dCgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgaGFzRXJyb3JzOiBoYXNFcnJvcnMsXG4gICAgdXJsOiBjb25uZWN0aW9uLmdldEJhc2VQYXRoKCkgKyBcIkZpbGVTeXN0ZW0vXCIgKyBkaXJlY3RvcnksXG4gICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksXG4gICAgbmV3RmlsZXM6IG5ld0ZpbGVzLFxuICB9O1xufTtcblxuY29uc3QgZmluZFN1aXRhYmxlUmVjb3JkVHlwZXMgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY29ubmVjdGlvbi5nZXQoXCJFbnRpdHkvP3F1ZXJ5PUZJTkQgUkVDT1JEVFlQRVwiKTtcbiAgY29uc3QgaXRlcmF0b3IgPSByZXNwb25zZS5ldmFsdWF0ZShcbiAgICBcIi9SZXNwb25zZS9SZWNvcmRUeXBlXCIsXG4gICAgcmVzcG9uc2UsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICApO1xuICBjb25zdCByZXN1bHRzID0gW107XG5cbiAgdmFyIG47XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbiA9IGl0ZXJhdG9yLml0ZXJhdGVOZXh0KCk7XG4gICAgaWYgKCFuKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgaGFzVXNlUGVybWlzc2lvbiA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXG4gICAgICAgIFwiUGVybWlzc2lvbnMvUGVybWlzc2lvbltAbmFtZT0nVVNFOkFTX1BBUkVOVCddXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlVOT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUsXG4gICAgICApXG4gICAgICAuaXRlcmF0ZU5leHQoKTtcbiAgICBpZiAoIWhhc1VzZVBlcm1pc3Npb24pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBoYXNPYmxpZ2F0b3J5UHJvcGVydGllcyA9IHJlc3BvbnNlXG4gICAgICAuZXZhbHVhdGUoXG4gICAgICAgIFwiUHJvcGVydHlbQGltcG9ydGFuY2U9J09CTElHQVRPUlknXVwiLFxuICAgICAgICBuLFxuICAgICAgICBudWxsLFxuICAgICAgICBYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLFxuICAgICAgKVxuICAgICAgLml0ZXJhdGVOZXh0KCk7XG4gICAgaWYgKGhhc09ibGlnYXRvcnlQcm9wZXJ0aWVzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgIG5hbWU6IHJlc3BvbnNlLmV2YWx1YXRlKFwiQG5hbWVcIiwgbiwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpXG4gICAgICAgID8uc3RyaW5nVmFsdWUsXG4gICAgICBpZDogcmVzcG9uc2UuZXZhbHVhdGUoXCJAaWRcIiwgbiwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpXG4gICAgICAgID8uc3RyaW5nVmFsdWUsXG4gICAgICBkZXNjcmlwdGlvbjogcmVzcG9uc2UuZXZhbHVhdGUoXG4gICAgICAgIFwiQGRlc2NyaXB0aW9uXCIsXG4gICAgICAgIG4sXG4gICAgICAgIG51bGwsXG4gICAgICAgIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLFxuICAgICAgKT8uc3RyaW5nVmFsdWUsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG5jb25zdCBmaWxlX3VwbG9hZCA9IHtcbiAgZ2V0X3JlY29yZF90eXBlczogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIC8vIFRPRE8gYWRkIHBlcm1pc3Npb25zIHRvIEdSUEMgQVBJLCB0aGVuIHVzZSB0aGlzIGFnYWluXG4gICAgLy9jb25zdCBzZXJ2aWNlID0gbmV3IFRyYW5zYWN0aW9uU2VydmljZSgpO1xuICAgIC8vY29uc3QgcmVzdWx0cyA9IGF3YWl0IHNlcnZpY2UuZXhlY3V0ZVF1ZXJ5KFwiRklORCBSRUNPUkRUWVBFXCIpO1xuICAgIC8vY29uc29sZS5sb2cocmVzdWx0cyk7XG4gICAgcmV0dXJuIGF3YWl0IGZpbmRTdWl0YWJsZVJlY29yZFR5cGVzKCk7XG4gIH0sXG4gIGNyZWF0ZV9maWxlX3VwbG9hZF93aWRnZXQ6IGZ1bmN0aW9uIChjb250YWluZXIsIGNvbmZpZykge1xuICAgIGNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGNvbnRhaW5lcik7XG4gICAgY29uc3QgX2NvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICBpZiAoIV9jb25maWcuaGFzT3duUHJvcGVydHkoXCJvblN1Ym1pdFwiKSkge1xuICAgICAgX2NvbmZpZy5vblN1Ym1pdCA9IGRlZmF1bHRPblN1Ym1pdDtcbiAgICB9XG5cbiAgICBpZiAoIV9jb25maWcuaGFzT3duUHJvcGVydHkoXCJyZWNvcmRUeXBlc1wiKSkge1xuICAgICAgX2NvbmZpZy5yZWNvcmRUeXBlcyA9IHRoaXMuZ2V0X3JlY29yZF90eXBlcygpLnRoZW4oKHJlc3VsdHMpID0+XG4gICAgICAgIHJlc3VsdHMubWFwKChydCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBydC5uYW1lLCB2YWx1ZTogcnQuaWQsIHRpdGxlOiBydC5kZXNjcmlwdGlvbiB9O1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcm9vdC5yZW5kZXIoXG4gICAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgICAgPGZvcm0+XG4gICAgICAgICAgPEZpbGVVcGxvYWQgey4uLl9jb25maWd9IC8+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvUmVhY3QuU3RyaWN0TW9kZT4sXG4gICAgKTtcbiAgfSxcblxuICBjcmVhdGVfdXBsb2FkX2J1dHRvbjogKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9ICQoYFxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInB5LTAgcHgtMSBtcy0yIGJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VGaWxlVXBsb2FkXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgYXJpYS1jb250cm9scz1cImNvbGxhcHNlRmlsZVVwbG9hZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJpIGJpLXBsdXMtbGdcIi8+XG4gICAgICA8L2J1dHRvbj5gKTtcblxuICAgIGNvbnN0IF9vbkNsaWNrID0gKCkgPT4ge1xuICAgICAgYnV0dG9uWzBdLmNsYXNzTGlzdC5hZGQoXCJkLW5vbmVcIik7XG4gICAgfTtcbiAgICBidXR0b24ub24oXCJjbGlja1wiLCBfb25DbGljayk7XG4gICAgcmV0dXJuIGJ1dHRvblswXTtcbiAgfSxcblxuICBpbml0X2ZpbGVfdXBsb2FkOiBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gJChcbiAgICAgIGA8ZGl2IGNsYXNzPVwicm93IGNvbGxhcHNlIG1iLTVcIiBpZD1cImNvbGxhcHNlRmlsZVVwbG9hZFwiLz5gLFxuICAgICk7XG4gICAgY29uc3QgZmlsZXN5c3RlbV9oZWFkZXIgPVxuICAgICAgZ2V0X2ZpbGVzeXN0ZW1faGVhZGVyKCk/LnF1ZXJ5U2VsZWN0b3IoXCJkaXYudGV4dC1lbmRcIik7XG4gICAgY29uc3QgZmlsZXN5c3RlbV9ib2R5ID0gZ2V0X2ZpbGVzeXN0ZW1fYm9keSgpO1xuXG4gICAgaWYgKGZpbGVzeXN0ZW1fYm9keSAmJiBmaWxlc3lzdGVtX2hlYWRlcikge1xuICAgICAgY29uc3QgYnV0dG9uID0gdGhpcy5jcmVhdGVfdXBsb2FkX2J1dHRvbigpO1xuICAgICAgZmlsZXN5c3RlbV9oZWFkZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcblxuICAgICAgJChmaWxlc3lzdGVtX2JvZHkpLnByZXBlbmQoY29udGFpbmVyKTtcblxuICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICBkaXJlY3RvcnlSZWFkT25seTogZmFsc2UsXG4gICAgICAgIGRpcmVjdG9yeUJhc2U6IGdldF9jdXJyZW50X2RpcmVjdG9yeSgpLFxuICAgICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICAgIGJ1dHRvbi5jbGljaygpO1xuICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKFwiZC1ub25lXCIpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZpbmlzaDogKCkgPT4ge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICB0aGlzLmNyZWF0ZV9maWxlX3VwbG9hZF93aWRnZXQoY29udGFpbmVyWzBdLCBjb25maWcpO1xuICAgIH1cbiAgfSxcblxuICByZXBhaXJfZmlsZV9zeXN0ZW1fbGlua3M6IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlbnRpdHkgdmlld1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcIi5jYW9zZGItZW50aXR5LWhlYWRpbmctYXR0ciBhXCIpXG4gICAgICAuZm9yRWFjaChzcGxpdF9wYXJlbnRfZGlyKTtcblxuICAgIC8vIGZpbGVzeXN0ZW0gdmlld1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcImltZy5lbnRpdHktaW1hZ2UtcHJldmlld1wiKVxuICAgICAgLmZvckVhY2goKG5vZGUpID0+IHJlcGFpcl91cmkobm9kZSwgXCJzcmNcIikpO1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbChcImEuY2Fvc2RiLWZzLWZpbGVcIilcbiAgICAgIC5mb3JFYWNoKChub2RlKSA9PiByZXBhaXJfdXJpKG5vZGUsIFwiaHJlZlwiKSk7XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiYS5jYW9zZGItZnMtZGlyXCIpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gcmVwYWlyX3VyaShub2RlLCBcImhyZWZcIikpO1xuICB9LFxuXG4gIGluaXQ6IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmluaXRfZmlsZV91cGxvYWQoKTtcbiAgICB0aGlzLnJlcGFpcl9maWxlX3N5c3RlbV9saW5rcygpO1xuICAgIHdpbmRvdy5jYW9zZGJfZmlsZV91cGxvYWRfd2lkZ2V0ID0gdGhpcztcbiAgfSxcbn07XG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgaWYgKGAke0JVSUxEX01PRFVMRV9FWFRfRklMRV9VUExPQUR9YCA9PT0gXCJFTkFCTEVEXCIpIHtcbiAgICBjYW9zZGJfbW9kdWxlcy5yZWdpc3RlcihmaWxlX3VwbG9hZCk7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJleHBvcnRzIiwiT3AiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd24iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwiZGVzYyIsInZhbHVlIiwiJFN5bWJvbCIsIlN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiaXRlcmF0b3IiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJlcnIiLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJzZWxmIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsImNyZWF0ZSIsImNvbnRleHQiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiZm4iLCJhcmciLCJ0eXBlIiwiY2FsbCIsIkNvbnRpbnVlU2VudGluZWwiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJtZXRob2QiLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsIlByb21pc2VJbXBsIiwiaW52b2tlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlY29yZCIsInJlc3VsdCIsIl90eXBlb2YiLCJfX2F3YWl0IiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJkb25lIiwibWV0aG9kTmFtZSIsInVuZGVmaW5lZCIsIlR5cGVFcnJvciIsImluZm8iLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsIml0ZXJhYmxlIiwiaXRlcmF0b3JNZXRob2QiLCJpc05hTiIsImxlbmd0aCIsImkiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJpdGVyIiwia2V5cyIsInZhbCIsIm9iamVjdCIsInJldmVyc2UiLCJwb3AiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwiX25leHQiLCJfdGhyb3ciLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsIlJlYWN0IiwiUmVhY3RET00iLCJGaWxlVXBsb2FkIiwiZ2V0X2ZpbGVzeXN0ZW1fYm9keSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImdldF9maWxlc3lzdGVtX2hlYWRlciIsImdldF9jdXJyZW50X2RpcmVjdG9yeSIsImhlYWRlciIsIkFycmF5IiwiZnJvbSIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJtYXAiLCJlbCIsInRleHRDb250ZW50IiwiY3JlYXRlX2ZpbGVfdXBsb2FkX3JlcXVlc3RfeG1sIiwiZmlsZXMiLCJ0YXJnZXREaXJlY3RvcnkiLCJyZWNvcmRUeXBlIiwiX3BhcmVudCIsImNvbmNhdCIsInJlcXVlc3QiLCJmIiwiaWR4IiwiY3JlYXRlX2Zvcm1fZGF0YSIsInhtbCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJmaWxlIiwic3BsaXRfcGFyZW50X2RpciIsIm5vZGUiLCJyZXBhaXJfdXJpIiwicGF0aF9vbGQiLCJnZXRBdHRyaWJ1dGUiLCJzdWJzdHJpbmciLCJjb25uZWN0aW9uIiwiZ2V0RmlsZVN5c3RlbVBhdGgiLCJzcGxpdCIsInBhcmVudF9kaXIiLCJwYXJlbnRfZGlyX25vZGUiLCJjbG9uZU5vZGUiLCJzZXRBdHRyaWJ1dGUiLCJqb2luIiwidGl0bGUiLCJiZWZvcmUiLCJkYXRhc2V0IiwiZW50aXR5UGF0aCIsImF0dHIiLCJwYXRoX25ldyIsImVuY29kZVVSSUNvbXBvbmVudCIsInVwbG9hZFJlcXVlc3QiLCIkIiwiYWpheCIsInVybCIsImdldEJhc2VQYXRoIiwiZGF0YVR5cGUiLCJjb250ZW50VHlwZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImRlZmF1bHRPblN1Ym1pdCIsIl9yZWYiLCJfY2FsbGVlIiwiX2RvY3VtZW50JHF1ZXJ5U2VsZWN0IiwiZGlyZWN0b3J5IiwicmVzcG9uc2UiLCJuZXdGaWxlcyIsImhhc0Vycm9ycyIsIl9yZXNwb25zZSRldmFsdWF0ZSIsIl9yZXNwb25zZSRldmFsdWF0ZTIiLCJfcmVzcG9uc2UkZXZhbHVhdGUzIiwicGF0aCIsImlkIiwiX3Jlc3BvbnNlJGV2YWx1YXRlNCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJyZW1vdmUiLCJldmFsdWF0ZSIsIlhQYXRoUmVzdWx0IiwiVU5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSIsIml0ZXJhdGVOZXh0IiwiU1RSSU5HX1RZUEUiLCJzdHJpbmdWYWx1ZSIsIl94IiwiZmluZFN1aXRhYmxlUmVjb3JkVHlwZXMiLCJfcmVmMiIsIl9jYWxsZWUyIiwicmVzdWx0cyIsIm4iLCJfcmVzcG9uc2UkZXZhbHVhdGU1IiwiX3Jlc3BvbnNlJGV2YWx1YXRlNiIsIl9yZXNwb25zZSRldmFsdWF0ZTciLCJoYXNVc2VQZXJtaXNzaW9uIiwiaGFzT2JsaWdhdG9yeVByb3BlcnRpZXMiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJnZXQiLCJkZXNjcmlwdGlvbiIsImZpbGVfdXBsb2FkIiwiZ2V0X3JlY29yZF90eXBlcyIsIl9nZXRfcmVjb3JkX3R5cGVzIiwiX2NhbGxlZTMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJjcmVhdGVfZmlsZV91cGxvYWRfd2lkZ2V0IiwiY29udGFpbmVyIiwiY29uZmlnIiwicm9vdCIsImNyZWF0ZVJvb3QiLCJfY29uZmlnIiwib25TdWJtaXQiLCJyZWNvcmRUeXBlcyIsInJ0IiwibGFiZWwiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiU3RyaWN0TW9kZSIsImNyZWF0ZV91cGxvYWRfYnV0dG9uIiwiYnV0dG9uIiwiX29uQ2xpY2siLCJjbGFzc0xpc3QiLCJhZGQiLCJvbiIsImluaXRfZmlsZV91cGxvYWQiLCJfZ2V0X2ZpbGVzeXN0ZW1faGVhZGUiLCJmaWxlc3lzdGVtX2hlYWRlciIsImZpbGVzeXN0ZW1fYm9keSIsImFwcGVuZENoaWxkIiwicHJlcGVuZCIsImRpcmVjdG9yeVJlYWRPbmx5IiwiZGlyZWN0b3J5QmFzZSIsIm9uQ2FuY2VsIiwiY2xpY2siLCJvbkZpbmlzaCIsIndpbmRvdyIsImxvY2F0aW9uIiwicmVsb2FkIiwicmVwYWlyX2ZpbGVfc3lzdGVtX2xpbmtzIiwicXVlcnlTZWxlY3RvckFsbCIsImluaXQiLCJfaW5pdCIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiY2Fvc2RiX2ZpbGVfdXBsb2FkX3dpZGdldCIsInJlYWR5IiwiQlVJTERfTU9EVUxFX0VYVF9GSUxFX1VQTE9BRCIsImNhb3NkYl9tb2R1bGVzIiwicmVnaXN0ZXIiXSwic291cmNlUm9vdCI6IiJ9\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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NUIsR0FBUUwsY0FBZ0IsS0FFbEIsR0FBUU4sT0FBUyxVQUFjLEtBQU0sUUFFM0MsR0FBUVYsT0FBUyxLQUNqQixHQUFRb0IsbUJBQXFCLEtBRWhCLEtBQUksS0FBUyxJQUtKLE1BQVcsYUFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uP2RkZDciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanM/MzhlZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvaW5kZXguc2Nzcz80ZWNkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanM/NDQyNSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcz81NjE5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9pbnZhcmlhbnQvYnJvd3Nlci5qcz85ZDhiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzLWV4dHJhL2xpYi9hbGwuanM/ZWRiNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy1leHRyYS9saWIvdXRpbHMvY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIuanM/ZDhmZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanM/NTFmNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcz85NzY3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcz8wNzkyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcz84OTA3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanM/NmU3ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzPzcxZjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzP2Q1YjUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzP2M2MDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3NjaGVkdWxlci9pbmRleC5qcz9mN2Q1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcz8wZmNhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanM/YjczYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanM/ZWJlMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanM/ZmY3ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcz80ZWEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzPzRkYmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3RleHRhcmVhLWNhcmV0L2luZGV4LmpzP2NlZGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3dhcm5pbmcvd2FybmluZy5qcz8zNzEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy9leHRlcm5hbCB1bWQge1wiY29tbW9uanNcIjpcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiLFwiY29tbW9uanMyXCI6XCJAaW5kaXNjYWxlL2Nhb3NkYi13ZWJ1aS1pbmZvLXNlcnZpY2VcIixcImFtZFwiOlwiQ2Fvc0RCSW5mb1NlcnZpY2VcIixcInJvb3RcIjpcIkNhb3NEQkluZm9TZXJ2aWNlXCJ9PzFmOTkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL2V4dGVybmFsIHVtZCB7XCJjb21tb25qc1wiOlwicmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcImFtZFwiOlwiUmVhY3RcIixcInJvb3RcIjpcIlJlYWN0XCJ9P2Y3MzciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwPzVjYjYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0PzBmMDYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycz8yZDA0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsPzY4NTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQ/YmYzZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdD85NzVhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy93ZWJwYWNrL3J1bnRpbWUvbm9uY2U/YWM5NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvSW5mb1NlcnZpY2UuanM/OWIzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9TZXJ2ZXJWZXJzaW9uSW5mby5qc3g/ZGIwNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcz8zNjljIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzP2ExNWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3VuY29udHJvbGxhYmxlL2xpYi9lc20vdXRpbHMuanM/ZDhkNiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvdW5jb250cm9sbGFibGUvbGliL2VzbS9ob29rLmpzP2RiNWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VDb21taXR0ZWRSZWYuanM/NWE3YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZUV2ZW50Q2FsbGJhY2suanM/YzUxYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZU1vdW50ZWQuanM/Y2ZkNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVByZXZpb3VzLmpzP2U0NTUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VJc29tb3JwaGljRWZmZWN0LmpzP2UxOGQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VSZXNpemVPYnNlcnZlci5qcz85ZjNmIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vQnV0dG9uLmpzPzcyYWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9BbmNob3IuanM/OGVkOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9UaGVtZVByb3ZpZGVyLmpzP2IwM2MiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzPzBhMWMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanM/MmQ0NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbi5qcz9kN2Y3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlLmpzPzA3MGIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL3V0aWxzL3JlZmxvdy5qcz8zNzU3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vb3duZXJEb2N1bWVudC5qcz8xNTUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaHlwaGVuYXRlLmpzPzYyMzciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9oeXBoZW5hdGVTdHlsZS5qcz83ZTU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaXNUcmFuc2Zvcm0uanM/MmFkOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2Nzcy5qcz9lMTk2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vZ2V0Q29tcHV0ZWRTdHlsZS5qcz9hNGRhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vb3duZXJXaW5kb3cuanM/NWEyZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2NhblVzZURPTS5qcz80YTA3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vYWRkRXZlbnRMaXN0ZW5lci5qcz9kNTEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vbGlzdGVuLmpzP2ZlOTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9yZW1vdmVFdmVudExpc3RlbmVyLmpzPzA5NDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS90cmFuc2l0aW9uRW5kLmpzP2ZiZGYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS90cmlnZ2VyRXZlbnQuanM/NDc1NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS90cmFuc2l0aW9uRW5kTGlzdGVuZXIuanM/ZGQzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS90cmlnZ2VyQnJvd3NlclJlZmxvdy5qcz80NTg5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlTWVyZ2VkUmVmcy5qcz8xYWUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL1RyYW5zaXRpb25XcmFwcGVyLmpzPzYxNDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vc2FmZUZpbmRET01Ob2RlLmpzP2JkNGEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRmFkZS5qcz80YWZkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Nsb3NlQnV0dG9uLmpzPzk1MDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vZGl2V2l0aENsYXNzTmFtZS5qcz9kODFiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY2FtZWxpemUuanM/YmQ3YiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9jcmVhdGVXaXRoQnNQcmVmaXguanM/MTMzMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9BbGVydC5qcz8wNjQyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL01lc3NhZ2UuanN4PzI3NWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvTG9hZGluZ0luZm8uanN4PzE3ZTgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvTG9naW5Gb3JtLmpzeD9hNWYzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vcXVlcnlTZWxlY3RvckFsbC5qcz83OWEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlRm9yY2VVcGRhdGUuanM/Yzg5YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duQ29udGV4dC5qcz84YmU3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kZXF1YWwvZGlzdC9pbmRleC5tanM/MjZiYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanM/N2ZlMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3cuanM/ZTM2YyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzP2Q1MmUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzPzdiNTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91c2VyQWdlbnQuanM/MWU4YSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc0xheW91dFZpZXdwb3J0LmpzPzg5MmYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzP2U3ZjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcz84ZjMyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzPzE5NjgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanM/YzBhMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzP2ExYmQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanM/NjljZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanM/MzAwYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzPzJkYjMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzPzFhZDMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanM/ODRmMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcz82MjhlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzPzFmZDQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanM/YmE2NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcz80NjUxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanM/ZDVhOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcz8xYmI0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzP2I4YTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qcz9iNTlkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzPzQ4ZDkiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcz9hYWJlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanM/ZjVmYSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanM/MWU5NiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzPzA3NDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanM/YTY0NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanM/YzBlYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcz85YmE0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qcz8xM2VlIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcz80ODA4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFZpZXdwb3J0UmVjdC5qcz9kOWEyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50UmVjdC5qcz9kMDg2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanM/NzY0MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzPzE5YjEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcz8wNTY3Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanM/NTBhYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzPzAwMDEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzPzA3NmQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzP2VlOTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzP2ZjMDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qcz81ZjQwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanM/MmZjMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcz81ZTQyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanM/NDUwYyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcz82Njg1Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vcG9wcGVyLmpzPzRkODAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcz9jNjMzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanM/NDQ5NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzPzRkNzAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VQb3BwZXIuanM/MDIwNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvaG9va3MvZXNtL3VzZVNhZmVTdGF0ZS5qcz9hOTU2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vY29udGFpbnMuanM/MjIzZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL3VzZUNsaWNrT3V0c2lkZS5qcz8zYTdjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZy5qcz81Mjc4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vRHJvcGRvd25NZW51LmpzPzQyYWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VDYWxsYmFja1JlZi5qcz9iNDhhIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVhY3QtYXJpYS9zc3IvZGlzdC9pbXBvcnQubWpzPzdmNzgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93blRvZ2dsZS5qcz81YzdjIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vU2VsZWN0YWJsZUNvbnRleHQuanM/ZDQ3OSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05hdkNvbnRleHQuanM/MjMyMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0RhdGFLZXkuanM/OGY3MCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL0Ryb3Bkb3duSXRlbS5qcz8wNDk5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXNlV2luZG93LmpzPzllZjQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ecm9wZG93bi5qcz9iZDYyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9ub2RlX21vZHVsZXMvdW5jb250cm9sbGFibGUvbGliL2VzbS9pbmRleC5qcz9iNmI0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlRXZlbnRMaXN0ZW5lci5qcz9hMmUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duQ29udGV4dC5qcz80N2Q2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duSXRlbS5qcz8yZmUyIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0lucHV0R3JvdXBDb250ZXh0LmpzP2E0YzUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyQ29udGV4dC5qcz8zMDRiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL3VzZVdyYXBwZWRSZWZXaXRoV2FybmluZy5qcz85NTEzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duTWVudS5qcz9mYTkwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0J1dHRvbi5qcz9mZGEwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL0Ryb3Bkb3duVG9nZ2xlLmpzP2EyOWYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vRHJvcGRvd24uanM/OWI5OCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL1RhYkNvbnRleHQuanM/MjJiNyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL05hdkl0ZW0uanM/ZWNiMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZMaW5rLmpzPzFmYTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2RHJvcGRvd24uanM/YzUxMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Vc2VyQ29tcG9uZW50LmpzeD9kNmRiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9CcmFuZGluZy5qcz9hNzgzIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vTmF2LmpzPzU0ZDIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQ2FyZEhlYWRlckNvbnRleHQuanM/YWJlMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZJdGVtLmpzP2Q1YzciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2LmpzP2U2N2QiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyQnJhbmQuanM/YjNhOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanM/NDAyOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Db2xsYXBzZS5qcz9kMjNkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9yZWFjdC1ib290c3RyYXAvZXNtL05hdmJhckNvbGxhcHNlLmpzP2I2YjAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vTmF2YmFyVG9nZ2xlLmpzPzU2NGYiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VNZWRpYVF1ZXJ5LmpzP2Q1NmUiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VCcmVha3BvaW50LmpzPzU3NjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hY3RpdmVFbGVtZW50LmpzPzg0OTciLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Nb2RhbE1hbmFnZXIuanM/ODZiOSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL2dldFNjcm9sbGJhcldpZHRoLmpzP2JlMTEiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS91c2VXYWl0Rm9yRE9NUmVmLmpzPzVlYjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L3VpL2VzbS9Ob29wVHJhbnNpdGlvbi5qcz81MWFkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vSW1wZXJhdGl2ZVRyYW5zaXRpb24uanM/YzM3NCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvQHJlc3RhcnQvdWkvZXNtL01vZGFsLmpzP2JiZWIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL0ByZXN0YXJ0L2hvb2tzL2VzbS91c2VXaWxsVW5tb3VudC5qcz9mOGE2Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC9ob29rcy9lc20vdXNlVXBkYXRlZFJlZi5qcz8zYjUwIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AcmVzdGFydC91aS9lc20vdXRpbHMuanM/NGNiMSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXNCb2R5LmpzPzM2NTMiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzVG9nZ2xpbmcuanM/YWU5NSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Nb2RhbENvbnRleHQuanM/YTA5ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9BYnN0cmFjdE1vZGFsSGVhZGVyLmpzP2FiZTIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzSGVhZGVyLmpzPzJmNjIiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vT2ZmY2FudmFzVGl0bGUuanM/MTQxMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3JlbW92ZUNsYXNzLmpzP2ExYTAiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWJvb3RzdHJhcC9lc20vQm9vdHN0cmFwTW9kYWxNYW5hZ2VyLmpzPzc5ZTQiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vbm9kZV9tb2R1bGVzL2RvbS1oZWxwZXJzL2VzbS9hZGRDbGFzcy5qcz8yZTI5Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9kb20taGVscGVycy9lc20vaGFzQ2xhc3MuanM/NDU1ZSIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9PZmZjYW52YXMuanM/ZjUyNCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXJPZmZjYW52YXMuanM/NDM5MyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9OYXZiYXIuanM/NDExZiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9ub2RlX21vZHVsZXMvcmVhY3QtYm9vdHN0cmFwL2VzbS9Db250YWluZXIuanM/NDlkOCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9RdWVyeUZvcm0uaGVscGVycy5qcz83MDhkIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5Rm9ybS5qc3g/NDAzMiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9RdWVyeVBhbmVsLmpzeD8zMGQxIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL1RvcE5hdmlnYXRpb25CYXIuanN4P2VlMDgiLCJ3ZWJwYWNrOi8vQ2Fvc0RCV2VidWkyL0Nhb3NEQkNvcmVDb21wb25lbnRzLy4vc3JjL2NvbXBvbmVudHMvSGVhZGVyLmpzeD9iNWZiIiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9jb21wb25lbnRzL0Zvb3Rlci5qc3g/MThkMyIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9Bd2FpdC5qc3g/YTQ4ZCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC5qc3g/YmFjYiIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9DYXJkLmpzeD8xMzU0Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL25vZGVfbW9kdWxlcy9AZmlsZXMtdWkvcmVhY3QvYnVpbGQvaW5kZXguZXMuanM/ZTNmMCIsIndlYnBhY2s6Ly9DYW9zREJXZWJ1aTIvQ2Fvc0RCQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tcG9uZW50cy9GaWxlVXBsb2FkLmpzeD9jYTM4Iiwid2VicGFjazovL0Nhb3NEQldlYnVpMi9DYW9zREJDb3JlQ29tcG9uZW50cy8uL3NyYy9pbmRleC5zY3NzP2VkNzUiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIiksIChmdW5jdGlvbiB3ZWJwYWNrTG9hZE9wdGlvbmFsRXh0ZXJuYWxNb2R1bGUoKSB7IHRyeSB7IHJldHVybiByZXF1aXJlKFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIpOyB9IGNhdGNoKGUpIHt9IH0oKSkpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiUmVhY3RcIiwgXCJDYW9zREJJbmZvU2VydmljZVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJDYW9zREJDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpLCAoZnVuY3Rpb24gd2VicGFja0xvYWRPcHRpb25hbEV4dGVybmFsTW9kdWxlKCkgeyB0cnkgeyByZXR1cm4gcmVxdWlyZShcIkBpbmRpc2NhbGUvY2Fvc2RiLXdlYnVpLWluZm8tc2VydmljZVwiKTsgfSBjYXRjaChlKSB7fSB9KCkpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJDYW9zREJDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3Rvcnkocm9vdFtcIlJlYWN0XCJdLCByb290W1wiQ2Fvc0RCSW5mb1NlcnZpY2VcIl0pO1xufSkoc2VsZiwgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fNjM5X18sIF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzE4OV9fKSB7XG5yZXR1cm4gIiwiLyohXG5cdENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuXHRMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuXHRodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXHR2YXIgbmF0aXZlQ29kZVN0cmluZyA9ICdbbmF0aXZlIGNvZGVdJztcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRpZiAoYXJnLmxlbmd0aCkge1xuXHRcdFx0XHRcdHZhciBpbm5lciA9IGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHRcdFx0XHRpZiAoaW5uZXIpIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGlmIChhcmcudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgIWFyZy50b1N0cmluZy50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnLnRvU3RyaW5nKCkpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNhb3NkYi1mLXF1ZXJ5LWNxbC1oaW50e2JvcmRlci1yYWRpdXM6MnJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7Y29sb3I6IzI2MjYyNjtwYWRkaW5nOi4xcmVtIC40cmVtfS5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3tkaXNwbGF5Om5vbmV9bmF2IC5uYXZiYXItY29sbGFwc2V7YWxpZ24taXRlbXM6c3RhcnQ7ZmxleC13cmFwOndyYXB9bmF2IC5uYXZiYXItY29sbGFwc2UgZm9ybXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluLC5jYW9zZGItZi1xdWVyeS1wYW5lbHttYXJnaW4tdG9wOi41cmVtO3dpZHRoOjEwMCU7b3JkZXI6MX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm17b3JkZXI6dW5zZXQ7aGVpZ2h0OjQ0cHg7cGFkZGluZy1sZWZ0OjJyZW07cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1yaWdodDoycmVtO3BhZGRpbmctYm90dG9tOi41cmVtO2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czoycmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtOmhvdmVyLC5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybTpob3ZlciwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXN7Ym94LXNoYWRvdzowIDFweCA2cHggcmdiYSgzMiwzMywzNiwuMjgpfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWd7bWFyZ2luLXRvcDouNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LWhlaWdodDoyMDBweDtwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdy15OmF1dG87Ym94LXNoYWRvdzowIDRweCA2cHggcmdiYSgzMiwzMywzNiwuMjgpO3BhZGRpbmc6MHB4fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGksLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGl7cGFkZGluZy1sZWZ0Oi41cmVtO3BhZGRpbmctcmlnaHQ6LjVyZW07aGVpZ2h0OjI0cHg7bGlzdC1zdHlsZS10eXBlOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0uZm9jdXMub3BlbiBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyBsaS5oaWdobGlnaHQsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLm9wZW4gb2wuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcgbGkuaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6I2Q5ZDlkOX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpOmhvdmVyLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5vcGVuIG9sLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Q5ZDlkOX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS5mb2N1cy5zdWJtaXQub3BlbiAuY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWcsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1mb3JtLmZvY3VzLnN1Ym1pdC5vcGVuIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3tkaXNwbGF5Om5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gYnV0dG9uLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBidXR0b257YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O2JvcmRlcjpub25lfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1mb3JtIGlucHV0LC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dHtib3JkZXI6bm9uZX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cywuY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cy12aXNpYmxlLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktZm9ybSBpbnB1dDpmb2N1cywuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0gaW5wdXQ6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOm5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gZm9ybSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgZm9ybXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0LC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3R7bWFyZ2luLXRvcDouNXJlbTtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgaW5wdXQuZm9ybS1jb250cm9sLC5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgaW5wdXQuZm9ybS1jb250cm9se2Rpc3BsYXk6dW5zZXQ7d2lkdGg6dW5zZXR9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZDpmb2N1cy13aXRoaW4gLmNhb3NkYi1mLXF1ZXJ5LXRhYiwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYntoZWlnaHQ6NDRweDttYXJnaW4tcmlnaHQ6MXJlbTtwYWRkaW5nOjZweDtiYWNrZ3JvdW5kLWNvbG9yOnVuc2V0O2JvcmRlcjpub25lO2JvcmRlci1ib3R0b206LjJyZW0gc29saWQgcmdiYSgwLDAsMCwwKX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbiAuY2Fvc2RiLWYtcXVlcnktdGFiLmFjdGl2ZSwuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi5hY3RpdmV7Ym9yZGVyLWJvdHRvbTouMnJlbSBzb2xpZCBncmF5fS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQ6Zm9jdXMtd2l0aGluIC5jYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3IsLmNhb3NkYi1mLXF1ZXJ5LXBhbmVsIC5jYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3J7ZmxleC1iYXNpczoxMDAlfUBtZWRpYShtaW4td2lkdGg6IDk5MnB4KXsuY2Fvc2RiLWYtcXVlcnktcGFuZWwgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWF4LWNvbnRlbnQgbWF4LWNvbnRlbnQgYXV0byBtYXgtY29udGVudDtncmlkLWNvbHVtbi1nYXA6LjVyZW07cGFkZGluZzouMnJlbSAwcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbCAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMgaW5wdXQuZm9ybS1jb250cm9se2Rpc3BsYXk6dW5zZXQ7d2lkdGg6dW5zZXR9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZHttYXJnaW4tdG9wOjA7d2lkdGg6dW5zZXQ7b3JkZXI6dW5zZXR9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCBmb3Jte2ZsZXgtZGlyZWN0aW9uOnJvd30uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS1maWx0ZXJzLXRvZ2dsZXtkaXNwbGF5Om5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3R7bWFyZ2luLXRvcDowcmVtfS5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQgLmNhb3NkYi1mLXF1ZXJ5LXRhYntoZWlnaHQ6MzhweH0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS10YWItZmlsdGVyc3tkaXNwbGF5Om5vbmV9LmNhb3NkYi1mLXF1ZXJ5LXBhbmVsLmNvbmRlbnNlZCAuY2Fvc2RiLWYtcXVlcnktZm9ybXtoZWlnaHQ6MzhweDtvcmRlcjoxO3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctdG9wOi4zcmVtO3BhZGRpbmctcmlnaHQ6MXJlbTtwYWRkaW5nLWJvdHRvbTouM3JlbX0uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkIC5jYW9zZGItZi1xdWVyeS1mb3JtIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1Z3tkaXNwbGF5Om5vbmV9fS51c2VyLWNvbXBvbmVudCAuYWxlcnR7cGFkZGluZy10b3A6LjM3NXJlbTtwYWRkaW5nLWJvdHRvbTouMzc1cmVtO2ZvbnQtc2l6ZToxcmVtO21hcmdpbjowfWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNSk7Ym9yZGVyLXJhZGl1czowfWZvb3Rlcntjb2xvcjojODc4Nzg3fWZvb3RlciAubmF2e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNhMGEwYTB9Zm9vdGVyIC5uYXYtbGlua3tjb2xvcjojODc4Nzg3ICFpbXBvcnRhbnR9Zm9vdGVyIC5uYXYtbGluazpob3Zlcntjb2xvcjojNmQ2ZDZkICFpbXBvcnRhbnR9Zm9vdGVyIC5mb290ZXItYm9keXtib3JkZXItdG9wOjFweCBzb2xpZCAjYmFiYWJhO2JhY2tncm91bmQtY29sb3I6I2QzZDNkMzttaW4taGVpZ2h0OjIwcmVtfWZvb3RlciAuZm9vdGVyLWJvcmRlcntoZWlnaHQ6M3JlbTtib3gtc2hhZG93OjBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwwLDAsLjQpIGluc2V0Oy13ZWJraXQtYm94LXNoYWRvdzowcHggLTVweCA3cHggLTVweCByZ2JhKDAsMCwwLC40KSBpbnNldDstbW96LWJveC1zaGFkb3c6MHB4IC01cHggNnB4IC03cHggcmdiYSgwLDAsMCwuNCkgaW5zZXR9LmNhb3NkYi1jaGVja2JveHtjdXJzb3I6cG9pbnRlcn0uY2Fvc2RiLWNoZWNrYm94IC5jYW9zZGItY2hlY2tib3gtaWNvbntmb250LXNpemU6MS4zZW19LmNhb3NkYi1jaGVja2JveCAuY2Fvc2RiLWNoZWNrLWJveC1pbnB1dHtkaXNwbGF5Om5vbmV9LmNhb3NkYi1jaGVja2JveC5yZWFkLW9ubHl7Y3Vyc29yOmF1dG99LmNvbG9yLWxpZ2h0LWdyZWVue2NvbG9yOiNiNGU2MDB9Lm1pbmljYXJke2JvcmRlcjoxcHggc29saWQgcmVkO3dpZHRoOjQwMHB4O2Rpc3BsYXk6ZmxleH0ubWluaWNhcmQgLm1pbmljYXJkLXRpdGxle2JhY2tncm91bmQtY29sb3I6cmVkfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3NyYy9jb21wb25lbnRzL1F1ZXJ5Rm9ybS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvaW5kZXguc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFJQSx5QkFDRSxrQkFBQSxDQUNBLHdCQUFBLENBQ0EsYUFBQSxDQUNBLG1CQUFBLENBR0YseUJBQ0UsWUFBQSxDQUdGLHFCQUNFLGlCQUFBLENBQ0EsY0FBQSxDQUVBLDBCQUNFLFlBQUEsQ0FDQSxxQkFBQSxDQUlKLG1FQUVFLGdCQUFBLENBQ0EsVUFBQSxDQUNBLE9BQUEsQ0FFQSw2R0FDRSxXQUFBLENBQ0EsV0FBQSxDQUNBLGlCQUFBLENBQ0EsaUJBQUEsQ0FDQSxrQkFBQSxDQUNBLG9CQUFBLENBQ0EscUJBQUEsQ0FDQSxxQkFBQSxDQUNBLGtCQUFBLENBRUEsa1BBRUUsdUNBQUEsQ0FLRSx5TEFDRSxnQkFBQSxDQUNBLHFCQUFBLENBQ0Esb0JBQUEsQ0FDQSxnQkFBQSxDQUNBLGlCQUFBLENBQ0EsZUFBQSxDQUNBLHVDQUFBLENBQ0EsV0FBQSxDQUVBLCtMQUNFLGtCQUFBLENBQ0EsbUJBQUEsQ0FDQSxXQUFBLENBQ0Esb0JBQUEsQ0FDQSxtTkFDRSx3QkFBQSxDQUVGLDJNQUNFLHdCQUFBLENBT0osbU1BQ0UsWUFBQSxDQU1SLDJIQUNFLHdCQUFBLENBQ0EsV0FBQSxDQUdGLHlIQUNFLFdBQUEsQ0FFQSwwUkFFRSxZQUFBLENBS04sNkVBQ0UscUJBQUEsQ0FHRixxSEFDRSxnQkFBQSxDQUNBLGlCQUFBLENBQ0Esa0JBQUEsQ0FHRiwySEFDRSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSxjQUFBLENBRUEsaUtBQ0UsYUFBQSxDQUNBLFdBQUEsQ0FJSiwyR0FDRSxXQUFBLENBQ0EsaUJBQUEsQ0FDQSxXQUFBLENBQ0Esc0JBQUEsQ0FDQSxXQUFBLENBQ0EsdUNBQUEsQ0FDQSx5SEFDRSw4QkFBQSxDQUlKLHFKQUNFLGVBQUEsQ0NwRUEseUJEMEVBLGtEQUNFLFlBQUEsQ0FDQSw4REFBQSxDQUNBLHFCQUFBLENBQ0Esa0JBQUEsQ0FFQSxxRUFDRSxhQUFBLENBQ0EsV0FBQSxDQUtOLGdDQUNFLFlBQUEsQ0FDQSxXQUFBLENBQ0EsV0FBQSxDQUVBLHFDQUNFLGtCQUFBLENBR0YsK0RBQ0UsWUFBQSxDQUdGLHlEQUNFLGVBQUEsQ0FHRixvREFDRSxXQUFBLENBR0YsNERBQ0UsWUFBQSxDQUdGLHFEQUNFLFdBQUEsQ0FDQSxPQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FFQSw4RUFDRSxZQUFBLENBQUEsQ0VwTFIsdUJBQ0UsbUJBQUEsQ0FDQSxzQkFBQSxDQUNBLGNBQUEsQ0FDQSxRQUFBLENBR0YsT0FDRSx1Q0FBQSxDQUNBLGVBQUEsQ0FHRixPQUNFLGFBQUEsQ0FFQSxZQUNFLCtCQUFBLENBRUYsaUJBQ0Usd0JBQUEsQ0FFRix1QkFDRSx3QkFBQSxDQUVGLG9CQUNFLDRCQUFBLENBQ0Esd0JBNUJnQixDQTZCaEIsZ0JBQUEsQ0FFRixzQkFDRSxXQUFBLENBQ0EsaURBQUEsQ0FDQSx5REFBQSxDQUNBLHNEQUFBLENBSUosaUJBU0UsY0FBQSxDQVJBLHVDQUNFLGVBQUEsQ0FHRix5Q0FDRSxZQUFBLENBS0YsMkJBQ0UsV0FBQSxDQUlKLG1CQUNFLGFBQUEsQ0FHRixVQUNFLG9CQUFBLENBQ0EsV0FBQSxDQUNBLFlBQUEsQ0FFQSwwQkFDRSxvQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcXFwiO1xcbkBpbXBvcnQgXFxcImJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlc1xcXCI7XFxuQGltcG9ydCBcXFwiYm9vdHN0cmFwL3Njc3MvbWl4aW5zXFxcIjtcXG5cXG4uY2Fvc2RiLWYtcXVlcnktY3FsLWhpbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMnJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbih3aGl0ZSwgMTUlKTtcXG4gIGNvbG9yOiBsaWdodGVuKGJsYWNrLCAxNSUpO1xcbiAgcGFkZGluZzogMC4xcmVtIDAuNHJlbTtcXG59XFxuXFxuLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbm5hdiAubmF2YmFyLWNvbGxhcHNlIHtcXG4gIGFsaWduLWl0ZW1zOiBzdGFydDtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG5cXG4gIGZvcm0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgfVxcbn1cXG5cXG4uY2Fvc2RiLWYtcXVlcnktcGFuZWwuY29uZGVuc2VkOmZvY3VzLXdpdGhpbixcXG4uY2Fvc2RiLWYtcXVlcnktcGFuZWwge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBvcmRlcjogMTtcXG5cXG4gIC5jYW9zZGItZi1xdWVyeS1mb3JtIHtcXG4gICAgb3JkZXI6IHVuc2V0O1xcbiAgICBoZWlnaHQ6IDQ0cHg7XFxuICAgIHBhZGRpbmctbGVmdDogMnJlbTtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMnJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxuICAgIGJvcmRlci1yYWRpdXM6IDJyZW07XFxuXFxuICAgICY6aG92ZXIsXFxuICAgICYuZm9jdXMge1xcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2JhKDMyLCAzMywgMzYsIDAuMjgpO1xcbiAgICB9XFxuXFxuICAgICYuZm9jdXMge1xcbiAgICAgICYub3BlbiB7XFxuICAgICAgICBvbC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyB7XFxuICAgICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7XFxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNnB4IHJnYmEoMzIsIDMzLCAzNiwgMC4yOCk7XFxuICAgICAgICAgIHBhZGRpbmc6IDBweDtcXG5cXG4gICAgICAgICAgbGkge1xcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcXG4gICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XFxuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xcbiAgICAgICAgICAgICYuaGlnaGxpZ2h0IHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbih3aGl0ZSwgMTUlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4od2hpdGUsIDE1JSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgfVxcbiAgICAgICYuc3VibWl0IHtcXG4gICAgICAgICYub3BlbiB7XFxuICAgICAgICAgIC5jYW9zZGItZi1xdWVyeS1mb3JtLXN1ZyB7XFxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBidXR0b24ge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICB9XFxuXFxuICAgIGlucHV0IHtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuXFxuICAgICAgJjpmb2N1cyxcXG4gICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgb3V0bGluZTogbm9uZTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIGZvcm0ge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgfVxcblxcbiAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0IHtcXG4gICAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuXFxuICAgIGlucHV0LmZvcm0tY29udHJvbCB7XFxuICAgICAgZGlzcGxheTogdW5zZXQ7XFxuICAgICAgd2lkdGg6IHVuc2V0O1xcbiAgICB9XFxuICB9XFxuXFxuICAuY2Fvc2RiLWYtcXVlcnktdGFiIHtcXG4gICAgaGVpZ2h0OiA0NHB4O1xcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxuICAgIHBhZGRpbmc6IDZweDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAmLmFjdGl2ZSB7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkIGdyYXk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3Ige1xcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xcbiAgfVxcbn1cXG5cXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XFxuICAuY2Fvc2RiLWYtcXVlcnktcGFuZWwge1xcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMge1xcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtYXgtY29udGVudCBtYXgtY29udGVudCBhdXRvIG1heC1jb250ZW50O1xcbiAgICAgIGdyaWQtY29sdW1uLWdhcDogMC41cmVtO1xcbiAgICAgIHBhZGRpbmc6IDAuMnJlbSAwcmVtO1xcblxcbiAgICAgIGlucHV0LmZvcm0tY29udHJvbCB7XFxuICAgICAgICBkaXNwbGF5OiB1bnNldDtcXG4gICAgICAgIHdpZHRoOiB1bnNldDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYW9zZGItZi1xdWVyeS1wYW5lbC5jb25kZW5zZWQge1xcbiAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICB3aWR0aDogdW5zZXQ7XFxuICAgIG9yZGVyOiB1bnNldDtcXG5cXG4gICAgZm9ybSB7XFxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktZmlsdGVycy10b2dnbGUge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LXRhYi1saXN0IHtcXG4gICAgICBtYXJnaW4tdG9wOiAwcmVtO1xcbiAgICB9XFxuXFxuICAgIC5jYW9zZGItZi1xdWVyeS10YWIge1xcbiAgICAgIGhlaWdodDogMzhweDtcXG4gICAgfVxcblxcbiAgICAuY2Fvc2RiLWYtcXVlcnktdGFiLWZpbHRlcnMge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0ge1xcbiAgICAgIGhlaWdodDogMzhweDtcXG4gICAgICBvcmRlcjogMTtcXG4gICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XFxuICAgICAgcGFkZGluZy10b3A6IDAuM3JlbTtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjNyZW07XFxuXFxuICAgICAgLmNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiLFwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cXG4vL1xcbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcXG4vL1xcbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXFxuLy9cXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXFxuXFxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50Llxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxcbi8vICAgIG1kXFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICBtZFxcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxcbi8vICAgIG1kXFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcXG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xcbiAgQGlmIG5vdCAkbiB7XFxuICAgIEBlcnJvciBcXFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFxcXCI7XFxuICB9XFxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcXG59XFxuXFxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50Llxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIDU3NnB4XFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xcbn1cXG5cXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXFxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXFxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxcbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcXG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXFxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcXG4vL1xcbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcXG4vLyAgICA3NjcuOThweFxcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcXG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xcbn1cXG5cXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250Llxcbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxcbi8vXFxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXFxuLy8gICAgXFxcIlxcXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxcbi8vICAgIFxcXCItc21cXFwiXFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXFxcIlxcXCIsIFxcXCItI3skbmFtZX1cXFwiKTtcXG59XFxuXFxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50Llxcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXFxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgQGlmICRtaW4ge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIHtcXG4gICAgQGNvbnRlbnQ7XFxuICB9XFxufVxcblxcbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XFxuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gIEBpZiAkbWF4IHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSB7XFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxcbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcXG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcXG5cXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XFxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXFxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXFxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XFxuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XFxuXFxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcXG4gICAgICBAY29udGVudDtcXG4gICAgfVxcbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xcbiAgICAgIEBjb250ZW50O1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiQGltcG9ydCBcXFwiLi9jb21wb25lbnRzL1F1ZXJ5Rm9ybVxcXCI7XFxuXFxuJGZvb3Rlci1ib2R5LWNvbG9yOiBsaWdodGdyYXk7XFxuXFxuLnVzZXItY29tcG9uZW50IC5hbGVydCB7XFxuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07XFxuICBmb250LXNpemU6IDFyZW07XFxuICBtYXJnaW46IDA7XFxufVxcblxcbmhlYWRlciB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxufVxcblxcbmZvb3RlciB7XFxuICBjb2xvcjogZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMzAlKTtcXG5cXG4gIC5uYXYge1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgMjAlKTtcXG4gIH1cXG4gIC5uYXYtbGluayB7XFxuICAgIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1ib2R5LWNvbG9yLCAzMCUpICFpbXBvcnRhbnQ7XFxuICB9XFxuICAubmF2LWxpbms6aG92ZXIge1xcbiAgICBjb2xvcjogZGFya2VuKCRmb290ZXItYm9keS1jb2xvciwgNDAlKSAhaW1wb3J0YW50O1xcbiAgfVxcbiAgLmZvb3Rlci1ib2R5IHtcXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGRhcmtlbigkZm9vdGVyLWJvZHktY29sb3IsIDEwJSk7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItYm9keS1jb2xvcjtcXG4gICAgbWluLWhlaWdodDogMjByZW07XFxuICB9XFxuICAuZm9vdGVyLWJvcmRlciB7XFxuICAgIGhlaWdodDogM3JlbTtcXG4gICAgYm94LXNoYWRvdzogMHB4IC01cHggN3B4IC01cHggcmdiYSgwLCAwLCAwLCAwLjQpIGluc2V0O1xcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCAtNXB4IDdweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC40KSBpbnNldDtcXG4gICAgLW1vei1ib3gtc2hhZG93OiAwcHggLTVweCA2cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuNCkgaW5zZXQ7XFxuICB9XFxufVxcblxcbi5jYW9zZGItY2hlY2tib3gge1xcbiAgLmNhb3NkYi1jaGVja2JveC1pY29uIHtcXG4gICAgZm9udC1zaXplOiAxLjNlbTtcXG4gIH1cXG5cXG4gIC5jYW9zZGItY2hlY2stYm94LWlucHV0IHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG5cXG4gIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICYucmVhZC1vbmx5IHtcXG4gICAgY3Vyc29yOiBhdXRvO1xcbiAgfVxcbn1cXG5cXG4uY29sb3ItbGlnaHQtZ3JlZW4ge1xcbiAgY29sb3I6ICNiNGU2MDA7XFxufVxcblxcbi5taW5pY2FyZCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCByZWQ7XFxuICB3aWR0aDogNDAwcHg7XFxuICBkaXNwbGF5OiBmbGV4O1xcblxcbiAgLm1pbmljYXJkLXRpdGxlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMgdG8gYmUgdHJ1ZS5cbiAqXG4gKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRlZCkgYW5kIGFyZ3VtZW50c1xuICogdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG4gKiBleHBlY3RpbmcuXG4gKlxuICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcbiAqIHdpbGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5cbiAqL1xuXG52YXIgaW52YXJpYW50ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAnTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArXG4gICAgICAgICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLidcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0luZGV4KytdOyB9KVxuICAgICAgKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgfVxuXG4gICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGludmFyaWFudDtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGFsbDtcblxudmFyIF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlciA9IHJlcXVpcmUoJy4vdXRpbHMvY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXInKTtcblxudmFyIF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGFsbCgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbGlkYXRvcnMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWxpZGF0b3JzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsUHJvcFR5cGVzKCkge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgdmFyIGVycm9yID0gbnVsbDtcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaChmdW5jdGlvbiAodmFsaWRhdG9yKSB7XG4gICAgICBpZiAoZXJyb3IgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciByZXN1bHQgPSB2YWxpZGF0b3IuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgICBlcnJvciA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIHJldHVybiAoMCwgX2NyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyMi5kZWZhdWx0KShhbGxQcm9wVHlwZXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXI7XG4vKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4vLyBNb3N0bHkgdGFrZW4gZnJvbSBSZWFjdFByb3BUeXBlcy5cblxuZnVuY3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcbiAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgIHZhciBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIHZhciBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4gICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKCdSZXF1aXJlZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lU2FmZSArICdgIHdhcyBub3Qgc3BlY2lmaWVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZVNhZmUgKyAnYC4nKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiA+IDYgPyBfbGVuIC0gNiA6IDApLCBfa2V5ID0gNjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gNl0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlLmFwcGx5KHVuZGVmaW5lZCwgW3Byb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZVNhZmUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWVTYWZlXS5jb25jYXQoYXJncykpO1xuICB9XG5cbiAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG4gIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuLypcbiBNb2Rlcm5penIgMy4wLjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKSxjYT1yZXF1aXJlKFwic2NoZWR1bGVyXCIpO2Z1bmN0aW9uIHAoYSl7Zm9yKHZhciBiPVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrYSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliKz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tjXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrYStcIjsgdmlzaXQgXCIrYitcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9dmFyIGRhPW5ldyBTZXQsZWE9e307ZnVuY3Rpb24gZmEoYSxiKXtoYShhLGIpO2hhKGErXCJDYXB0dXJlXCIsYil9XG5mdW5jdGlvbiBoYShhLGIpe2VhW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKylkYS5hZGQoYlthXSl9XG52YXIgaWE9IShcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvd3x8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnR8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLGphPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksa2E9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGxhPVxue30sbWE9e307ZnVuY3Rpb24gb2EoYSl7aWYoamEuY2FsbChtYSxhKSlyZXR1cm4hMDtpZihqYS5jYWxsKGxhLGEpKXJldHVybiExO2lmKGthLnRlc3QoYSkpcmV0dXJuIG1hW2FdPSEwO2xhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHBhKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybiEwO2Nhc2UgXCJib29sZWFuXCI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm5cImRhdGEtXCIhPT1hJiZcImFyaWEtXCIhPT1hO2RlZmF1bHQ6cmV0dXJuITF9fVxuZnVuY3Rpb24gcWEoYSxiLGMsZCl7aWYobnVsbD09PWJ8fFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYnx8cGEoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+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/KFNrKGZ1bmN0aW9uKCl7c2wobnVsbCxudWxsLGEsITEsZnVuY3Rpb24oKXthLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbDthW3VmXT1udWxsfSl9KSwhMCk6ITF9O2V4cG9ydHMudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9Ums7XG5leHBvcnRzLnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFwbChjKSl0aHJvdyBFcnJvcihwKDIwMCkpO2lmKG51bGw9PWF8fHZvaWQgMD09PWEuX3JlYWN0SW50ZXJuYWxzKXRocm93IEVycm9yKHAoMzgpKTtyZXR1cm4gc2woYSxiLGMsITEsZCl9O2V4cG9ydHMudmVyc2lvbj1cIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwiO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztmdW5jdGlvbiBmKGEsYil7dmFyIGM9YS5sZW5ndGg7YS5wdXNoKGIpO2E6Zm9yKDswPGM7KXt2YXIgZD1jLTE+Pj4xLGU9YVtkXTtpZigwPGcoZSxiKSlhW2RdPWIsYVtjXT1lLGM9ZDtlbHNlIGJyZWFrIGF9fWZ1bmN0aW9uIGgoYSl7cmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOmFbMF19ZnVuY3Rpb24gayhhKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXSxjPWEucG9wKCk7aWYoYyE9PWIpe2FbMF09YzthOmZvcih2YXIgZD0wLGU9YS5sZW5ndGgsdz1lPj4+MTtkPHc7KXt2YXIgbT0yKihkKzEpLTEsQz1hW21dLG49bSsxLHg9YVtuXTtpZigwPmcoQyxjKSluPGUmJjA+Zyh4LEMpPyhhW2RdPXgsYVtuXT1jLGQ9bik6KGFbZF09QyxhW21dPWMsZD1tKTtlbHNlIGlmKG48ZSYmMD5nKHgsYykpYVtkXT14LGFbbl09YyxkPW47ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGcoYSxiKXt2YXIgYz1hLnNvcnRJbmRleC1iLnNvcnRJbmRleDtyZXR1cm4gMCE9PWM/YzphLmlkLWIuaWR9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGw9cGVyZm9ybWFuY2U7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5ub3coKX19ZWxzZXt2YXIgcD1EYXRlLHE9cC5ub3coKTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBwLm5vdygpLXF9fXZhciByPVtdLHQ9W10sdT0xLHY9bnVsbCx5PTMsej0hMSxBPSExLEI9ITEsRD1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om51bGwsRT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpudWxsLEY9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7XG5cInVuZGVmaW5lZFwiIT09dHlwZW9mIG5hdmlnYXRvciYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcmJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiBHKGEpe2Zvcih2YXIgYj1oKHQpO251bGwhPT1iOyl7aWYobnVsbD09PWIuY2FsbGJhY2spayh0KTtlbHNlIGlmKGIuc3RhcnRUaW1lPD1hKWsodCksYi5zb3J0SW5kZXg9Yi5leHBpcmF0aW9uVGltZSxmKHIsYik7ZWxzZSBicmVhaztiPWgodCl9fWZ1bmN0aW9uIEgoYSl7Qj0hMTtHKGEpO2lmKCFBKWlmKG51bGwhPT1oKHIpKUE9ITAsSShKKTtlbHNle3ZhciBiPWgodCk7bnVsbCE9PWImJksoSCxiLnN0YXJ0VGltZS1hKX19XG5mdW5jdGlvbiBKKGEsYil7QT0hMTtCJiYoQj0hMSxFKEwpLEw9LTEpO3o9ITA7dmFyIGM9eTt0cnl7RyhiKTtmb3Iodj1oKHIpO251bGwhPT12JiYoISh2LmV4cGlyYXRpb25UaW1lPmIpfHxhJiYhTSgpKTspe3ZhciBkPXYuY2FsbGJhY2s7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3YuY2FsbGJhY2s9bnVsbDt5PXYucHJpb3JpdHlMZXZlbDt2YXIgZT1kKHYuZXhwaXJhdGlvblRpbWU8PWIpO2I9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZT92LmNhbGxiYWNrPWU6dj09PWgocikmJmsocik7RyhiKX1lbHNlIGsocik7dj1oKHIpfWlmKG51bGwhPT12KXZhciB3PSEwO2Vsc2V7dmFyIG09aCh0KTtudWxsIT09bSYmSyhILG0uc3RhcnRUaW1lLWIpO3c9ITF9cmV0dXJuIHd9ZmluYWxseXt2PW51bGwseT1jLHo9ITF9fXZhciBOPSExLE89bnVsbCxMPS0xLFA9NSxRPS0xO1xuZnVuY3Rpb24gTSgpe3JldHVybiBleHBvcnRzLnVuc3RhYmxlX25vdygpLVE8UD8hMTohMH1mdW5jdGlvbiBSKCl7aWYobnVsbCE9PU8pe3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7UT1hO3ZhciBiPSEwO3RyeXtiPU8oITAsYSl9ZmluYWxseXtiP1MoKTooTj0hMSxPPW51bGwpfX1lbHNlIE49ITF9dmFyIFM7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIEYpUz1mdW5jdGlvbigpe0YoUil9O2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIFQ9bmV3IE1lc3NhZ2VDaGFubmVsLFU9VC5wb3J0MjtULnBvcnQxLm9ubWVzc2FnZT1SO1M9ZnVuY3Rpb24oKXtVLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIFM9ZnVuY3Rpb24oKXtEKFIsMCl9O2Z1bmN0aW9uIEkoYSl7Tz1hO058fChOPSEwLFMoKSl9ZnVuY3Rpb24gSyhhLGIpe0w9RChmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfVxuZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NTtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Mb3dQcmlvcml0eT00O2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsO2V4cG9ydHMudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MjtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe2EuY2FsbGJhY2s9bnVsbH07ZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe0F8fHp8fChBPSEwLEkoSikpfTtcbmV4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oYSl7MD5hfHwxMjU8YT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkXCIpOlA9MDxhP01hdGguZmxvb3IoMUUzL2EpOjV9O2V4cG9ydHMudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4geX07ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBoKHIpfTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKHkpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPXl9dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXt5PWN9fTtleHBvcnRzLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fTtcbmV4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6YT0zfXZhciBjPXk7eT1hO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7eT1jfX07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yz8oYz1jLmRlbGF5LGM9XCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPGM/ZCtjOmQpOmM9ZDtzd2l0Y2goYSl7Y2FzZSAxOnZhciBlPS0xO2JyZWFrO2Nhc2UgMjplPTI1MDticmVhaztjYXNlIDU6ZT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDplPTFFNDticmVhaztkZWZhdWx0OmU9NUUzfWU9YytlO2E9e2lkOnUrKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD1jLGYodCxhKSxudWxsPT09aChyKSYmYT09PWgodCkmJihCPyhFKEwpLEw9LTEpOkI9ITAsSyhILGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxmKHIsYSksQXx8enx8KEE9ITAsSShKKSkpO3JldHVybiBhfTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQ9TTtleHBvcnRzLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj15O3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXt5PWN9fX07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cbiAgY3NzICs9IG9iai5jc3M7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH1cblxuICAvLyBGb3Igb2xkIElFXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7fSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCIvKiBqc2hpbnQgYnJvd3NlcjogdHJ1ZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXG4vLyBXZSdsbCBjb3B5IHRoZSBwcm9wZXJ0aWVzIGJlbG93IGludG8gdGhlIG1pcnJvciBkaXYuXG4vLyBOb3RlIHRoYXQgc29tZSBicm93c2Vycywgc3VjaCBhcyBGaXJlZm94LCBkbyBub3QgY29uY2F0ZW5hdGUgcHJvcGVydGllc1xuLy8gaW50byB0aGVpciBzaG9ydGhhbmQgKGUuZy4gcGFkZGluZy10b3AsIHBhZGRpbmctYm90dG9tIGV0Yy4gLT4gcGFkZGluZyksXG4vLyBzbyB3ZSBoYXZlIHRvIGxpc3QgZXZlcnkgc2luZ2xlIHByb3BlcnR5IGV4cGxpY2l0bHkuXG52YXIgcHJvcGVydGllcyA9IFtcbiAgJ2RpcmVjdGlvbicsICAvLyBSVEwgc3VwcG9ydFxuICAnYm94U2l6aW5nJyxcbiAgJ3dpZHRoJywgIC8vIG9uIENocm9tZSBhbmQgSUUsIGV4Y2x1ZGUgdGhlIHNjcm9sbGJhciwgc28gdGhlIG1pcnJvciBkaXYgd3JhcHMgZXhhY3RseSBhcyB0aGUgdGV4dGFyZWEgZG9lc1xuICAnaGVpZ2h0JyxcbiAgJ292ZXJmbG93WCcsXG4gICdvdmVyZmxvd1knLCAgLy8gY29weSB0aGUgc2Nyb2xsYmFyIGZvciBJRVxuXG4gICdib3JkZXJUb3BXaWR0aCcsXG4gICdib3JkZXJSaWdodFdpZHRoJyxcbiAgJ2JvcmRlckJvdHRvbVdpZHRoJyxcbiAgJ2JvcmRlckxlZnRXaWR0aCcsXG4gICdib3JkZXJTdHlsZScsXG5cbiAgJ3BhZGRpbmdUb3AnLFxuICAncGFkZGluZ1JpZ2h0JyxcbiAgJ3BhZGRpbmdCb3R0b20nLFxuICAncGFkZGluZ0xlZnQnLFxuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250XG4gICdmb250U3R5bGUnLFxuICAnZm9udFZhcmlhbnQnLFxuICAnZm9udFdlaWdodCcsXG4gICdmb250U3RyZXRjaCcsXG4gICdmb250U2l6ZScsXG4gICdmb250U2l6ZUFkanVzdCcsXG4gICdsaW5lSGVpZ2h0JyxcbiAgJ2ZvbnRGYW1pbHknLFxuXG4gICd0ZXh0QWxpZ24nLFxuICAndGV4dFRyYW5zZm9ybScsXG4gICd0ZXh0SW5kZW50JyxcbiAgJ3RleHREZWNvcmF0aW9uJywgIC8vIG1pZ2h0IG5vdCBtYWtlIGEgZGlmZmVyZW5jZSwgYnV0IGJldHRlciBiZSBzYWZlXG5cbiAgJ2xldHRlclNwYWNpbmcnLFxuICAnd29yZFNwYWNpbmcnLFxuXG4gICd0YWJTaXplJyxcbiAgJ01velRhYlNpemUnXG5cbl07XG5cbnZhciBpc0Jyb3dzZXIgPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpO1xudmFyIGlzRmlyZWZveCA9IChpc0Jyb3dzZXIgJiYgd2luZG93Lm1veklubmVyU2NyZWVuWCAhPSBudWxsKTtcblxuZnVuY3Rpb24gZ2V0Q2FyZXRDb29yZGluYXRlcyhlbGVtZW50LCBwb3NpdGlvbiwgb3B0aW9ucykge1xuICBpZiAoIWlzQnJvd3Nlcikge1xuICAgIHRocm93IG5ldyBFcnJvcigndGV4dGFyZWEtY2FyZXQtcG9zaXRpb24jZ2V0Q2FyZXRDb29yZGluYXRlcyBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gYSBicm93c2VyJyk7XG4gIH1cblxuICB2YXIgZGVidWcgPSBvcHRpb25zICYmIG9wdGlvbnMuZGVidWcgfHwgZmFsc2U7XG4gIGlmIChkZWJ1Zykge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbnB1dC10ZXh0YXJlYS1jYXJldC1wb3NpdGlvbi1taXJyb3ItZGl2Jyk7XG4gICAgaWYgKGVsKSBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgfVxuXG4gIC8vIFRoZSBtaXJyb3IgZGl2IHdpbGwgcmVwbGljYXRlIHRoZSB0ZXh0YXJlYSdzIHN0eWxlXG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlkID0gJ2lucHV0LXRleHRhcmVhLWNhcmV0LXBvc2l0aW9uLW1pcnJvci1kaXYnO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG5cbiAgdmFyIHN0eWxlID0gZGl2LnN0eWxlO1xuICB2YXIgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIDogZWxlbWVudC5jdXJyZW50U3R5bGU7ICAvLyBjdXJyZW50U3R5bGUgZm9yIElFIDwgOVxuICB2YXIgaXNJbnB1dCA9IGVsZW1lbnQubm9kZU5hbWUgPT09ICdJTlBVVCc7XG5cbiAgLy8gRGVmYXVsdCB0ZXh0YXJlYSBzdHlsZXNcbiAgc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7XG4gIGlmICghaXNJbnB1dClcbiAgICBzdHlsZS53b3JkV3JhcCA9ICdicmVhay13b3JkJzsgIC8vIG9ubHkgZm9yIHRleHRhcmVhLXNcblxuICAvLyBQb3NpdGlvbiBvZmYtc2NyZWVuXG4gIHN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsgIC8vIHJlcXVpcmVkIHRvIHJldHVybiBjb29yZGluYXRlcyBwcm9wZXJseVxuICBpZiAoIWRlYnVnKVxuICAgIHN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsgIC8vIG5vdCAnZGlzcGxheTogbm9uZScgYmVjYXVzZSB3ZSB3YW50IHJlbmRlcmluZ1xuXG4gIC8vIFRyYW5zZmVyIHRoZSBlbGVtZW50J3MgcHJvcGVydGllcyB0byB0aGUgZGl2XG4gIHByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgIGlmIChpc0lucHV0ICYmIHByb3AgPT09ICdsaW5lSGVpZ2h0Jykge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciA8aW5wdXQ+cyBiZWNhdXNlIHRleHQgaXMgcmVuZGVyZWQgY2VudGVyZWQgYW5kIGxpbmUgaGVpZ2h0IG1heSBiZSAhPSBoZWlnaHRcbiAgICAgIHN0eWxlLmxpbmVIZWlnaHQgPSBjb21wdXRlZC5oZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlW3Byb3BdID0gY29tcHV0ZWRbcHJvcF07XG4gICAgfVxuICB9KTtcblxuICBpZiAoaXNGaXJlZm94KSB7XG4gICAgLy8gRmlyZWZveCBsaWVzIGFib3V0IHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSBmb3IgdGV4dGFyZWFzOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQyNzVcbiAgICBpZiAoZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBwYXJzZUludChjb21wdXRlZC5oZWlnaHQpKVxuICAgICAgc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsgIC8vIGZvciBDaHJvbWUgdG8gbm90IHJlbmRlciBhIHNjcm9sbGJhcjsgSUUga2VlcHMgb3ZlcmZsb3dZID0gJ3Njcm9sbCdcbiAgfVxuXG4gIGRpdi50ZXh0Q29udGVudCA9IGVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTtcbiAgLy8gVGhlIHNlY29uZCBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbnB1dCB0eXBlPVwidGV4dFwiIHZzIHRleHRhcmVhOlxuICAvLyBzcGFjZXMgbmVlZCB0byBiZSByZXBsYWNlZCB3aXRoIG5vbi1icmVha2luZyBzcGFjZXMgLSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMzQwMjAzNS8xMjY5MDM3XG4gIGlmIChpc0lucHV0KVxuICAgIGRpdi50ZXh0Q29udGVudCA9IGRpdi50ZXh0Q29udGVudC5yZXBsYWNlKC9cXHMvZywgJ1xcdTAwYTAnKTtcblxuICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgLy8gV3JhcHBpbmcgbXVzdCBiZSByZXBsaWNhdGVkICpleGFjdGx5KiwgaW5jbHVkaW5nIHdoZW4gYSBsb25nIHdvcmQgZ2V0c1xuICAvLyBvbnRvIHRoZSBuZXh0IGxpbmUsIHdpdGggd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIGJlZm9yZSAoIzcpLlxuICAvLyBUaGUgICpvbmx5KiByZWxpYWJsZSB3YXkgdG8gZG8gdGhhdCBpcyB0byBjb3B5IHRoZSAqZW50aXJlKiByZXN0IG9mIHRoZVxuICAvLyB0ZXh0YXJlYSdzIGNvbnRlbnQgaW50byB0aGUgPHNwYW4+IGNyZWF0ZWQgYXQgdGhlIGNhcmV0IHBvc2l0aW9uLlxuICAvLyBGb3IgaW5wdXRzLCBqdXN0ICcuJyB3b3VsZCBiZSBlbm91Z2gsIGJ1dCBubyBuZWVkIHRvIGJvdGhlci5cbiAgc3Bhbi50ZXh0Q29udGVudCA9IGVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKHBvc2l0aW9uKSB8fCAnLic7ICAvLyB8fCBiZWNhdXNlIGEgY29tcGxldGVseSBlbXB0eSBmYXV4IHNwYW4gZG9lc24ndCByZW5kZXIgYXQgYWxsXG4gIGRpdi5hcHBlbmRDaGlsZChzcGFuKTtcblxuICB2YXIgY29vcmRpbmF0ZXMgPSB7XG4gICAgdG9wOiBzcGFuLm9mZnNldFRvcCArIHBhcnNlSW50KGNvbXB1dGVkWydib3JkZXJUb3BXaWR0aCddKSxcbiAgICBsZWZ0OiBzcGFuLm9mZnNldExlZnQgKyBwYXJzZUludChjb21wdXRlZFsnYm9yZGVyTGVmdFdpZHRoJ10pLFxuICAgIGhlaWdodDogcGFyc2VJbnQoY29tcHV0ZWRbJ2xpbmVIZWlnaHQnXSlcbiAgfTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBzcGFuLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjYWFhJztcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7XG4gIH1cblxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59XG5cbmlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyAhPSAndW5kZWZpbmVkJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGdldENhcmV0Q29vcmRpbmF0ZXM7XG59IGVsc2UgaWYoaXNCcm93c2VyKSB7XG4gIHdpbmRvdy5nZXRDYXJldENvb3JkaW5hdGVzID0gZ2V0Q2FyZXRDb29yZGluYXRlcztcbn1cblxufSgpKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xuXG52YXIgX19ERVZfXyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbic7XG5cbnZhciB3YXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKF9fREVWX18pIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIHByaW50V2FybmluZyhmb3JtYXQsIGFyZ3MpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiA+IDEgPyBsZW4gLSAxIDogMCk7XG4gICAgZm9yICh2YXIga2V5ID0gMTsga2V5IDwgbGVuOyBrZXkrKykge1xuICAgICAgYXJnc1trZXkgLSAxXSA9IGFyZ3VtZW50c1trZXldO1xuICAgIH1cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgK1xuICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgIH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4gIH1cblxuICB3YXJuaW5nID0gZnVuY3Rpb24oY29uZGl0aW9uLCBmb3JtYXQsIGFyZ3MpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiA+IDIgPyBsZW4gLSAyIDogMCk7XG4gICAgZm9yICh2YXIga2V5ID0gMjsga2V5IDwgbGVuOyBrZXkrKykge1xuICAgICAgYXJnc1trZXkgLSAyXSA9IGFyZ3VtZW50c1trZXldO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJlcyBhIHdhcm5pbmcgJyArXG4gICAgICAgICAgJ21lc3NhZ2UgYXJndW1lbnQnXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KG51bGwsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7XG4iLCJpZih0eXBlb2YgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTg5X18gPT09ICd1bmRlZmluZWQnKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICd1bmRlZmluZWQnXCIpOyBlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7IHRocm93IGU7IH1cblxubW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xODlfXzsiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzYzOV9fOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuXHRcdGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgZGVmaW5pdGlvbikge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH0iLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwidmFyIEluZm9TZXJ2aWNlO1xuXG5jbGFzcyBNb2NrdXBJbmZvU2VydmljZUltcGwge1xuICBhc3luYyBnZXRTZXNzaW9uSW5mbygpIHtcbiAgICBhd2FpdCB0aGlzLnNsZWVwKDMwMDApO1xuICAgIHRocm93IHsgbWVzc2FnZTogXCJQbGVhc2UgbG9nIGluIVwiIH07XG4gIH1cblxuICBzbGVlcChtcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG5cbiAgYXN5bmMgbG9naW4odXNlcm5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLnNsZWVwKDMwMDApO1xuICAgIGlmICh1c2VybmFtZSA9PSBcImVycm9yXCIpIHtcbiAgICAgIHRocm93IHsgbWVzc2FnZTogXCJMb2dpbiBmYWlsZWQhIEFoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoIVwiIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByZWFsbTogXCJNb2NrUmVhbG1cIixcbiAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcbiAgICAgIHJvbGVzOiBbXSxcbiAgICAgIGV4cGlyZXM6IDYwMDAwLFxuICAgIH07XG4gIH1cbiAgYXN5bmMgbG9nb3V0KCkge1xuICAgIGF3YWl0IHRoaXMuc2xlZXAoMzAwMCk7XG4gIH1cbn1cblxudHJ5IHtcbiAgSW5mb1NlcnZpY2UgPSByZXF1aXJlKFwiQGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlXCIpLkluZm9TZXJ2aWNlO1xufSBjYXRjaCAoZXJyb3IpIHtcbiAgY29uc29sZS5sb2coXCJQcm92aWRpbmcgbW9ja3VwIGltcGxlbWVudGF0aW9uIGZvciBJbmZvU2VydmljZVwiKTtcblxuICBJbmZvU2VydmljZSA9IE1vY2t1cEluZm9TZXJ2aWNlSW1wbDtcbn1cblxuZXhwb3J0IHsgSW5mb1NlcnZpY2UgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSW5mb1NlcnZpY2UgfSBmcm9tIFwiLi4vSW5mb1NlcnZpY2VcIjtcblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgcmV0dXJuIFwiQ291bGQgbm90IHJldHJpZXZlIFNlcnZlciBWZXJzaW9uIEluZm86IFwiICsgZXJyb3IubWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmVyVmVyc2lvbkluZm8oc2V0VmVyc2lvbikge1xuICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gIHNlcnZpY2VcbiAgICAuZ2V0VmVyc2lvbkluZm8oKVxuICAgIC50aGVuKChzZXJ2ZXJWZXJzaW9uKSA9PiBzZXJ2ZXJWZXJzaW9uLm5vQnVpbGQoKS50b1N0cmluZygpKVxuICAgIC5jYXRjaChoYW5kbGVFcnJvcilcbiAgICAudGhlbihzZXRWZXJzaW9uKTtcbiAgcmV0dXJuIFwiLi4uXCI7IC8vIHNvbWUgbmljZXIgd2FpdGluZyBpbmZvP1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2VydmVyVmVyc2lvbkluZm8oKSB7XG4gIHZhciBbdmVyc2lvbiwgc2V0VmVyc2lvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgaWYgKHZlcnNpb24gPT09IG51bGwpIHtcbiAgICB2ZXJzaW9uID0gZ2V0U2VydmVyVmVyc2lvbkluZm8oc2V0VmVyc2lvbik7XG4gIH1cblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItY29tcC1zZXJ2ZXItdmVyc2lvbi1pbmZvXCI+e3ZlcnNpb259PC9kaXY+O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJpbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCc7XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG5mdW5jdGlvbiByZWFkT25seVByb3BUeXBlKGhhbmRsZXIsIG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUpIHtcbiAgICBpZiAocHJvcHNbcHJvcE5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghcHJvcHNbaGFuZGxlcl0pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIllvdSBoYXZlIHByb3ZpZGVkIGEgYFwiICsgcHJvcE5hbWUgKyBcImAgcHJvcCB0byBgXCIgKyBuYW1lICsgXCJgIFwiICsgKFwid2l0aG91dCBhbiBgXCIgKyBoYW5kbGVyICsgXCJgIGhhbmRsZXIgcHJvcC4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gXCIpICsgKFwiSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgXCIgKyBkZWZhdWx0S2V5KHByb3BOYW1lKSArIFwiYC4gXCIpICsgKFwiT3RoZXJ3aXNlLCBzZXQgYFwiICsgaGFuZGxlciArIFwiYC5cIikpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuY29udHJvbGxlZFByb3BUeXBlcyhjb250cm9sbGVkVmFsdWVzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgcHJvcFR5cGVzID0ge307XG4gIE9iamVjdC5rZXlzKGNvbnRyb2xsZWRWYWx1ZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAvLyBhZGQgZGVmYXVsdCBwcm9wVHlwZXMgZm9yIGZvbGtzIHRoYXQgdXNlIHJ1bnRpbWUgY2hlY2tzXG4gICAgcHJvcFR5cGVzW2RlZmF1bHRLZXkocHJvcCldID0gbm9vcDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IGNvbnRyb2xsZWRWYWx1ZXNbcHJvcF07XG4gICAgICAhKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJyAmJiBoYW5kbGVyLnRyaW0oKS5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnVW5jb250cm9sbGFibGUgLSBbJXNdOiB0aGUgcHJvcCBgJXNgIG5lZWRzIGEgdmFsaWQgaGFuZGxlciBrZXkgbmFtZSBpbiBvcmRlciB0byBtYWtlIGl0IHVuY29udHJvbGxhYmxlJywgZGlzcGxheU5hbWUsIHByb3ApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAgIHByb3BUeXBlc1twcm9wXSA9IHJlYWRPbmx5UHJvcFR5cGUoaGFuZGxlciwgZGlzcGxheU5hbWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwcm9wVHlwZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQcm9wKHByb3BzLCBwcm9wKSB7XG4gIHJldHVybiBwcm9wc1twcm9wXSAhPT0gdW5kZWZpbmVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRLZXkoa2V5KSB7XG4gIHJldHVybiAnZGVmYXVsdCcgKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xufVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5BY2NlcHRSZWYoY29tcG9uZW50KSB7XG4gIHJldHVybiAhIWNvbXBvbmVudCAmJiAodHlwZW9mIGNvbXBvbmVudCAhPT0gJ2Z1bmN0aW9uJyB8fCBjb21wb25lbnQucHJvdG90eXBlICYmIGNvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcblxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkoYXJnKSB7IHZhciBrZXkgPSBfdG9QcmltaXRpdmUoYXJnLCBcInN0cmluZ1wiKTsgcmV0dXJuIHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTsgfVxuXG5mdW5jdGlvbiBfdG9QcmltaXRpdmUoaW5wdXQsIGhpbnQpIHsgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0OyB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmIChwcmltICE9PSB1bmRlZmluZWQpIHsgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7IGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7IH1cblxuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wVmFsdWUsIGRlZmF1bHRWYWx1ZSwgaGFuZGxlcikge1xuICB2YXIgd2FzUHJvcFJlZiA9IHVzZVJlZihwcm9wVmFsdWUgIT09IHVuZGVmaW5lZCk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSksXG4gICAgICBzdGF0ZVZhbHVlID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0U3RhdGUgPSBfdXNlU3RhdGVbMV07XG5cbiAgdmFyIGlzUHJvcCA9IHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICB2YXIgd2FzUHJvcCA9IHdhc1Byb3BSZWYuY3VycmVudDtcbiAgd2FzUHJvcFJlZi5jdXJyZW50ID0gaXNQcm9wO1xuICAvKipcbiAgICogSWYgYSBwcm9wIHN3aXRjaGVzIGZyb20gY29udHJvbGxlZCB0byBVbmNvbnRyb2xsZWRcbiAgICogcmVzZXQgaXRzIHZhbHVlIHRvIHRoZSBkZWZhdWx0VmFsdWVcbiAgICovXG5cbiAgaWYgKCFpc1Byb3AgJiYgd2FzUHJvcCAmJiBzdGF0ZVZhbHVlICE9PSBkZWZhdWx0VmFsdWUpIHtcbiAgICBzZXRTdGF0ZShkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIFtpc1Byb3AgPyBwcm9wVmFsdWUgOiBzdGF0ZVZhbHVlLCB1c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBpZiAoaGFuZGxlcikgaGFuZGxlci5hcHBseSh2b2lkIDAsIFt2YWx1ZV0uY29uY2F0KGFyZ3MpKTtcbiAgICBzZXRTdGF0ZSh2YWx1ZSk7XG4gIH0sIFtoYW5kbGVyXSldO1xufVxuXG5leHBvcnQgeyB1c2VVbmNvbnRyb2xsZWRQcm9wIH07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWQocHJvcHMsIGNvbmZpZykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZmllbGROYW1lKSB7XG4gICAgdmFyIF9leHRlbmRzMjtcblxuICAgIHZhciBfcmVmID0gcmVzdWx0LFxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBfcmVmW1V0aWxzLmRlZmF1bHRLZXkoZmllbGROYW1lKV0sXG4gICAgICAgIHByb3BzVmFsdWUgPSBfcmVmW2ZpZWxkTmFtZV0sXG4gICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBbVXRpbHMuZGVmYXVsdEtleShmaWVsZE5hbWUpLCBmaWVsZE5hbWVdLm1hcChfdG9Qcm9wZXJ0eUtleSkpO1xuXG4gICAgdmFyIGhhbmRsZXJOYW1lID0gY29uZmlnW2ZpZWxkTmFtZV07XG5cbiAgICB2YXIgX3VzZVVuY29udHJvbGxlZFByb3AgPSB1c2VVbmNvbnRyb2xsZWRQcm9wKHByb3BzVmFsdWUsIGRlZmF1bHRWYWx1ZSwgcHJvcHNbaGFuZGxlck5hbWVdKSxcbiAgICAgICAgdmFsdWUgPSBfdXNlVW5jb250cm9sbGVkUHJvcFswXSxcbiAgICAgICAgaGFuZGxlciA9IF91c2VVbmNvbnRyb2xsZWRQcm9wWzFdO1xuXG4gICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCAoX2V4dGVuZHMyID0ge30sIF9leHRlbmRzMltmaWVsZE5hbWVdID0gdmFsdWUsIF9leHRlbmRzMltoYW5kbGVyTmFtZV0gPSBoYW5kbGVyLCBfZXh0ZW5kczIpKTtcbiAgfSwgcHJvcHMpO1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBDcmVhdGVzIGEgYFJlZmAgd2hvc2UgdmFsdWUgaXMgdXBkYXRlZCBpbiBhbiBlZmZlY3QsIGVuc3VyaW5nIHRoZSBtb3N0IHJlY2VudFxuICogdmFsdWUgaXMgdGhlIG9uZSByZW5kZXJlZCB3aXRoLiBHZW5lcmFsbHkgb25seSByZXF1aXJlZCBmb3IgQ29uY3VycmVudCBtb2RlIHVzYWdlXG4gKiB3aGVyZSBwcmV2aW91cyB3b3JrIGluIGByZW5kZXIoKWAgbWF5IGJlIGRpc2NhcmRlZCBiZWZvcmUgYmVpbmcgdXNlZC5cbiAqXG4gKiBUaGlzIGlzIHNhZmUgdG8gYWNjZXNzIGluIGFuIGV2ZW50IGhhbmRsZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBgUmVmYCB2YWx1ZVxuICovXG5cbmZ1bmN0aW9uIHVzZUNvbW1pdHRlZFJlZih2YWx1ZSkge1xuICB2YXIgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9LCBbdmFsdWVdKTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ29tbWl0dGVkUmVmOyIsImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbW1pdHRlZFJlZiBmcm9tICcuL3VzZUNvbW1pdHRlZFJlZic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VFdmVudENhbGxiYWNrKGZuKSB7XG4gIHZhciByZWYgPSB1c2VDb21taXR0ZWRSZWYoZm4pO1xuICByZXR1cm4gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZWYuY3VycmVudCAmJiByZWYuY3VycmVudC5hcHBseShyZWYsIGFyZ3VtZW50cyk7XG4gIH0sIFtyZWZdKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogVHJhY2sgd2hldGhlciBhIGNvbXBvbmVudCBpcyBjdXJyZW50IG1vdW50ZWQuIEdlbmVyYWxseSBsZXNzIHByZWZlcmFibGUgdGhhblxuICogcHJvcGVybGx5IGNhbmNlbGluZyBlZmZlY3RzIHNvIHRoZXkgZG9uJ3QgcnVuIGFmdGVyIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCxcbiAqIGJ1dCBoZWxwZnVsIGluIGNhc2VzIHdoZXJlIHRoYXQgaXNuJ3QgZmVhc2libGUsIHN1Y2ggYXMgYSBgUHJvbWlzZWAgcmVzb2x1dGlvbi5cbiAqXG4gKiBAcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgY3VycmVudCBpc01vdW50ZWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudFxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuICogY29uc3QgaXNNb3VudGVkID0gdXNlTW91bnRlZCgpXG4gKlxuICogdXNlRWZmZWN0KCgpID0+IHtcbiAqICAgZmV0Y2hkYXRhKCkudGhlbigobmV3RGF0YSkgPT4ge1xuICogICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAqICAgICAgICBzZXREYXRhKG5ld0RhdGEpO1xuICogICAgICB9XG4gKiAgIH0pXG4gKiB9KVxuICogYGBgXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTW91bnRlZCgpIHtcbiAgdmFyIG1vdW50ZWQgPSB1c2VSZWYodHJ1ZSk7XG4gIHZhciBpc01vdW50ZWQgPSB1c2VSZWYoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBtb3VudGVkLmN1cnJlbnQ7XG4gIH0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vdW50ZWQuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIGlzTW91bnRlZC5jdXJyZW50O1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBTdG9yZSB0aGUgbGFzdCBvZiBzb21lIHZhbHVlLiBUcmFja2VkIHZpYSBhIGBSZWZgIG9ubHkgdXBkYXRpbmcgaXRcbiAqIGFmdGVyIHRoZSBjb21wb25lbnQgcmVuZGVycy5cbiAqXG4gKiBIZWxwZnVsIGlmIHlvdSBuZWVkIHRvIGNvbXBhcmUgYSBwcm9wIHZhbHVlIHRvIGl0J3MgcHJldmlvdXMgdmFsdWUgZHVyaW5nIHJlbmRlci5cbiAqXG4gKiBgYGB0c1xuICogZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gKiAgIGNvbnN0IGxhc3RQcm9wcyA9IHVzZVByZXZpb3VzKHByb3BzKVxuICpcbiAqICAgaWYgKGxhc3RQcm9wcy5mb28gIT09IHByb3BzLmZvbylcbiAqICAgICByZXNldFZhbHVlRnJvbVByb3BzKHByb3BzLmZvbylcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gdHJhY2tcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VQcmV2aW91cyh2YWx1ZSkge1xuICB2YXIgcmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59IiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG52YXIgaXNSZWFjdE5hdGl2ZSA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIC8vIEB0cy1pZ25vcmVcbmdsb2JhbC5uYXZpZ2F0b3IgJiYgLy8gQHRzLWlnbm9yZVxuZ2xvYmFsLm5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnO1xudmFyIGlzRE9NID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcbi8qKlxuICogSXMgYHVzZUxheW91dEVmZmVjdGAgaW4gYSBET00gb3IgUmVhY3QgTmF0aXZlIGVudmlyb25tZW50LCBvdGhlcndpc2UgcmVzb2x2ZXMgdG8gdXNlRWZmZWN0XG4gKiBPbmx5IHVzZWZ1bCB0byBhdm9pZCB0aGUgY29uc29sZSB3YXJuaW5nLlxuICpcbiAqIFBSRUZFUiBgdXNlRWZmZWN0YCBVTkxFU1MgWU9VIEtOT1cgV0hBVCBZT1UgQVJFIERPSU5HLlxuICpcbiAqIEBjYXRlZ29yeSBlZmZlY3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgaXNET00gfHwgaXNSZWFjdE5hdGl2ZSA/IHVzZUxheW91dEVmZmVjdCA6IHVzZUVmZmVjdDsiLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFZmZlY3QgZnJvbSAnLi91c2VJc29tb3JwaGljRWZmZWN0JztcbnZhciB0YXJnZXRNYXAgPSBuZXcgV2Vha01hcCgpO1xudmFyIHJlc2l6ZU9ic2VydmVyO1xuXG5mdW5jdGlvbiBnZXRSZXNpemVPYnNlcnZlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJldHVybi1hc3NpZ25cbiAgcmV0dXJuIHJlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIgfHwgbmV3IHdpbmRvdy5SZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHZhciBoYW5kbGVyID0gdGFyZ2V0TWFwLmdldChlbnRyeS50YXJnZXQpO1xuICAgICAgaWYgKGhhbmRsZXIpIGhhbmRsZXIoZW50cnkuY29udGVudFJlY3QpO1xuICAgIH0pO1xuICB9KTtcbn1cbi8qKlxuICogRWZmaWNpZW50bHkgb2JzZXJ2ZSBzaXplIGNoYW5nZXMgb24gYW4gZWxlbWVudC4gRGVwZW5kcyBvbiB0aGUgYFJlc2l6ZU9ic2VydmVyYCBhcGksXG4gKiBhbmQgcG9seWZpbGxzIGFyZSBuZWVkZWQgaW4gb2xkZXIgYnJvd3NlcnMuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFtyZWYsIGF0dGFjaFJlZl0gPSB1c2VDYWxsYmFja1JlZihudWxsKTtcbiAqXG4gKiBjb25zdCByZWN0ID0gdXNlUmVzaXplT2JzZXJ2ZXIocmVmKTtcbiAqXG4gKiByZXR1cm4gKFxuICogIDxkaXYgcmVmPXthdHRhY2hSZWZ9PlxuICogICAge0pTT04uc3RyaW5naWZ5KHJlY3QpfVxuICogIDwvZGl2PlxuICogKVxuICogYGBgXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIERPTSBlbGVtZW50IHRvIG9ic2VydmVcbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVJlc2l6ZU9ic2VydmVyKGVsZW1lbnQpIHtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKG51bGwpLFxuICAgICAgcmVjdCA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldFJlY3QgPSBfdXNlU3RhdGVbMV07XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICBnZXRSZXNpemVPYnNlcnZlcigpLm9ic2VydmUoZWxlbWVudCk7XG4gICAgc2V0UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICB0YXJnZXRNYXAuc2V0KGVsZW1lbnQsIGZ1bmN0aW9uIChyZWN0KSB7XG4gICAgICBzZXRSZWN0KHJlY3QpO1xuICAgIH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICB0YXJnZXRNYXAuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH07XG4gIH0sIFtlbGVtZW50XSk7XG4gIHJldHVybiByZWN0O1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcImFzXCIsIFwiZGlzYWJsZWRcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJpdmlhbEhyZWYoaHJlZikge1xuICByZXR1cm4gIWhyZWYgfHwgaHJlZi50cmltKCkgPT09ICcjJztcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCdXR0b25Qcm9wcyh7XG4gIHRhZ05hbWUsXG4gIGRpc2FibGVkLFxuICBocmVmLFxuICB0YXJnZXQsXG4gIHJlbCxcbiAgcm9sZSxcbiAgb25DbGljayxcbiAgdGFiSW5kZXggPSAwLFxuICB0eXBlXG59KSB7XG4gIGlmICghdGFnTmFtZSkge1xuICAgIGlmIChocmVmICE9IG51bGwgfHwgdGFyZ2V0ICE9IG51bGwgfHwgcmVsICE9IG51bGwpIHtcbiAgICAgIHRhZ05hbWUgPSAnYSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZ05hbWUgPSAnYnV0dG9uJztcbiAgICB9XG4gIH1cbiAgY29uc3QgbWV0YSA9IHtcbiAgICB0YWdOYW1lXG4gIH07XG4gIGlmICh0YWdOYW1lID09PSAnYnV0dG9uJykge1xuICAgIHJldHVybiBbe1xuICAgICAgdHlwZTogdHlwZSB8fCAnYnV0dG9uJyxcbiAgICAgIGRpc2FibGVkXG4gICAgfSwgbWV0YV07XG4gIH1cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSBldmVudCA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHRhZ05hbWUgPT09ICdhJyAmJiBpc1RyaXZpYWxIcmVmKGhyZWYpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkNsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkNsaWNrKGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBoYW5kbGVDbGljayhldmVudCk7XG4gICAgfVxuICB9O1xuICBpZiAodGFnTmFtZSA9PT0gJ2EnKSB7XG4gICAgLy8gRW5zdXJlIHRoZXJlJ3MgYSBocmVmIHNvIEVudGVyIGNhbiB0cmlnZ2VyIGFuY2hvciBidXR0b24uXG4gICAgaHJlZiB8fCAoaHJlZiA9ICcjJyk7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICBocmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW3tcbiAgICByb2xlOiByb2xlICE9IG51bGwgPyByb2xlIDogJ2J1dHRvbicsXG4gICAgLy8gZXhwbGljaXRseSB1bmRlZmluZWQgc28gdGhhdCBpdCBvdmVycmlkZXMgdGhlIHByb3BzIGRpc2FibGVkIGluIGEgc3ByZWFkXG4gICAgLy8gZS5nLiA8VGFnIHsuLi5wcm9wc30gey4uLmhvb2tQcm9wc30gLz5cbiAgICBkaXNhYmxlZDogdW5kZWZpbmVkLFxuICAgIHRhYkluZGV4OiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IHRhYkluZGV4LFxuICAgIGhyZWYsXG4gICAgdGFyZ2V0OiB0YWdOYW1lID09PSAnYScgPyB0YXJnZXQgOiB1bmRlZmluZWQsXG4gICAgJ2FyaWEtZGlzYWJsZWQnOiAhZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBkaXNhYmxlZCxcbiAgICByZWw6IHRhZ05hbWUgPT09ICdhJyA/IHJlbCA6IHVuZGVmaW5lZCxcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgfSwgbWV0YV07XG59XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoX3JlZiwgcmVmKSA9PiB7XG4gIGxldCB7XG4gICAgICBhczogYXNQcm9wLFxuICAgICAgZGlzYWJsZWRcbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtidXR0b25Qcm9wcywge1xuICAgIHRhZ05hbWU6IENvbXBvbmVudFxuICB9XSA9IHVzZUJ1dHRvblByb3BzKE9iamVjdC5hc3NpZ24oe1xuICAgIHRhZ05hbWU6IGFzUHJvcCxcbiAgICBkaXNhYmxlZFxuICB9LCBwcm9wcykpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywgYnV0dG9uUHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7XG59KTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9ICdCdXR0b24nO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImNvbnN0IF9leGNsdWRlZCA9IFtcIm9uS2V5RG93blwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYW5jaG9yLWhhcy1jb250ZW50ICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAcmVzdGFydC9ob29rcyc7XG5pbXBvcnQgeyB1c2VCdXR0b25Qcm9wcyB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNUcml2aWFsSHJlZihocmVmKSB7XG4gIHJldHVybiAhaHJlZiB8fCBocmVmLnRyaW0oKSA9PT0gJyMnO1xufVxuLyoqXG4gKiBBbiBnZW5lcmljIGA8YT5gIGNvbXBvbmVudCB0aGF0IGNvdmVycyBhIGZldyBBMTF5IGNhc2VzLCBlbnN1cmluZyB0aGF0XG4gKiBjYXNlcyB3aGVyZSB0aGUgYGhyZWZgIGlzIG1pc3Npbmcgb3IgdHJpdmlhbCBsaWtlIFwiI1wiIGFyZSB0cmVhdGVkIGxpa2UgYnV0dG9ucy5cbiAqL1xuY29uc3QgQW5jaG9yID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgb25LZXlEb3duXG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbYnV0dG9uUHJvcHNdID0gdXNlQnV0dG9uUHJvcHMoT2JqZWN0LmFzc2lnbih7XG4gICAgdGFnTmFtZTogJ2EnXG4gIH0sIHByb3BzKSk7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGJ1dHRvblByb3BzLm9uS2V5RG93bihlKTtcbiAgICBvbktleURvd24gPT0gbnVsbCA/IHZvaWQgMCA6IG9uS2V5RG93bihlKTtcbiAgfSk7XG4gIGlmIChpc1RyaXZpYWxIcmVmKHByb3BzLmhyZWYpIHx8IHByb3BzLnJvbGUgPT09ICdidXR0b24nKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgcHJvcHMsIGJ1dHRvblByb3BzLCB7XG4gICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICByZWY6IHJlZlxuICB9LCBwcm9wcywge1xuICAgIG9uS2V5RG93bjogb25LZXlEb3duXG4gIH0pKTtcbn0pO1xuQW5jaG9yLmRpc3BsYXlOYW1lID0gJ0FuY2hvcic7XG5leHBvcnQgZGVmYXVsdCBBbmNob3I7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkVBS1BPSU5UUyA9IFsneHhsJywgJ3hsJywgJ2xnJywgJ21kJywgJ3NtJywgJ3hzJ107XG5leHBvcnQgY29uc3QgREVGQVVMVF9NSU5fQlJFQUtQT0lOVCA9ICd4cyc7XG5jb25zdCBUaGVtZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gIHByZWZpeGVzOiB7fSxcbiAgYnJlYWtwb2ludHM6IERFRkFVTFRfQlJFQUtQT0lOVFMsXG4gIG1pbkJyZWFrcG9pbnQ6IERFRkFVTFRfTUlOX0JSRUFLUE9JTlRcbn0pO1xuY29uc3Qge1xuICBDb25zdW1lcixcbiAgUHJvdmlkZXJcbn0gPSBUaGVtZUNvbnRleHQ7XG5mdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHtcbiAgcHJlZml4ZXMgPSB7fSxcbiAgYnJlYWtwb2ludHMgPSBERUZBVUxUX0JSRUFLUE9JTlRTLFxuICBtaW5CcmVha3BvaW50ID0gREVGQVVMVF9NSU5fQlJFQUtQT0lOVCxcbiAgZGlyLFxuICBjaGlsZHJlblxufSkge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcHJlZml4ZXM6IHtcbiAgICAgIC4uLnByZWZpeGVzXG4gICAgfSxcbiAgICBicmVha3BvaW50cyxcbiAgICBtaW5CcmVha3BvaW50LFxuICAgIGRpclxuICB9KSwgW3ByZWZpeGVzLCBicmVha3BvaW50cywgbWluQnJlYWtwb2ludCwgZGlyXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChQcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0VmFsdWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJvb3RzdHJhcFByZWZpeChwcmVmaXgsIGRlZmF1bHRQcmVmaXgpIHtcbiAgY29uc3Qge1xuICAgIHByZWZpeGVzXG4gIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiBwcmVmaXggfHwgcHJlZml4ZXNbZGVmYXVsdFByZWZpeF0gfHwgZGVmYXVsdFByZWZpeDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCb290c3RyYXBCcmVha3BvaW50cygpIHtcbiAgY29uc3Qge1xuICAgIGJyZWFrcG9pbnRzXG4gIH0gPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiBicmVha3BvaW50cztcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VCb290c3RyYXBNaW5CcmVha3BvaW50KCkge1xuICBjb25zdCB7XG4gICAgbWluQnJlYWtwb2ludFxuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gbWluQnJlYWtwb2ludDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc1JUTCgpIHtcbiAgY29uc3Qge1xuICAgIGRpclxuICB9ID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gZGlyID09PSAncnRsJztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJvb3RzdHJhcENvbXBvbmVudChDb21wb25lbnQsIG9wdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykgb3B0cyA9IHtcbiAgICBwcmVmaXg6IG9wdHNcbiAgfTtcbiAgY29uc3QgaXNDbGFzc3kgPSBDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudDtcbiAgLy8gSWYgaXQncyBhIGZ1bmN0aW9uYWwgY29tcG9uZW50IG1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBpdCB3aXRoIGEgcmVmXG4gIGNvbnN0IHtcbiAgICBwcmVmaXgsXG4gICAgZm9yd2FyZFJlZkFzID0gaXNDbGFzc3kgPyAncmVmJyA6ICdpbm5lclJlZidcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IFdyYXBwZWQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIHByb3BzW2ZvcndhcmRSZWZBc10gPSByZWY7XG4gICAgY29uc3QgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgocHJvcHMuYnNQcmVmaXgsIHByZWZpeCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBic1ByZWZpeDogYnNQcmVmaXhcbiAgICB9KTtcbiAgfSk7XG4gIFdyYXBwZWQuZGlzcGxheU5hbWUgPSBgQm9vdHN0cmFwKCR7Q29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lfSlgO1xuICByZXR1cm4gV3JhcHBlZDtcbn1cbmV4cG9ydCB7IGNyZWF0ZUJvb3RzdHJhcENvbXBvbmVudCwgQ29uc3VtZXIgYXMgVGhlbWVDb25zdW1lciB9O1xuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2VcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IHRpbWVvdXRzU2hhcGUgfSBmcm9tICcuL3V0aWxzL1Byb3BUeXBlcyc7XG5pbXBvcnQgVHJhbnNpdGlvbkdyb3VwQ29udGV4dCBmcm9tICcuL1RyYW5zaXRpb25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsgZm9yY2VSZWZsb3cgfSBmcm9tICcuL3V0aWxzL3JlZmxvdyc7XG5leHBvcnQgdmFyIFVOTU9VTlRFRCA9ICd1bm1vdW50ZWQnO1xuZXhwb3J0IHZhciBFWElURUQgPSAnZXhpdGVkJztcbmV4cG9ydCB2YXIgRU5URVJJTkcgPSAnZW50ZXJpbmcnO1xuZXhwb3J0IHZhciBFTlRFUkVEID0gJ2VudGVyZWQnO1xuZXhwb3J0IHZhciBFWElUSU5HID0gJ2V4aXRpbmcnO1xuLyoqXG4gKiBUaGUgVHJhbnNpdGlvbiBjb21wb25lbnQgbGV0cyB5b3UgZGVzY3JpYmUgYSB0cmFuc2l0aW9uIGZyb20gb25lIGNvbXBvbmVudFxuICogc3RhdGUgdG8gYW5vdGhlciBfb3ZlciB0aW1lXyB3aXRoIGEgc2ltcGxlIGRlY2xhcmF0aXZlIEFQSS4gTW9zdCBjb21tb25seVxuICogaXQncyB1c2VkIHRvIGFuaW1hdGUgdGhlIG1vdW50aW5nIGFuZCB1bm1vdW50aW5nIG9mIGEgY29tcG9uZW50LCBidXQgY2FuIGFsc29cbiAqIGJlIHVzZWQgdG8gZGVzY3JpYmUgaW4tcGxhY2UgdHJhbnNpdGlvbiBzdGF0ZXMgYXMgd2VsbC5cbiAqXG4gKiAtLS1cbiAqXG4gKiAqKk5vdGUqKjogYFRyYW5zaXRpb25gIGlzIGEgcGxhdGZvcm0tYWdub3N0aWMgYmFzZSBjb21wb25lbnQuIElmIHlvdSdyZSB1c2luZ1xuICogdHJhbnNpdGlvbnMgaW4gQ1NTLCB5b3UnbGwgcHJvYmFibHkgd2FudCB0byB1c2VcbiAqIFtgQ1NTVHJhbnNpdGlvbmBdKGh0dHBzOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvY3NzLXRyYW5zaXRpb24pXG4gKiBpbnN0ZWFkLiBJdCBpbmhlcml0cyBhbGwgdGhlIGZlYXR1cmVzIG9mIGBUcmFuc2l0aW9uYCwgYnV0IGNvbnRhaW5zXG4gKiBhZGRpdGlvbmFsIGZlYXR1cmVzIG5lY2Vzc2FyeSB0byBwbGF5IG5pY2Ugd2l0aCBDU1MgdHJhbnNpdGlvbnMgKGhlbmNlIHRoZVxuICogbmFtZSBvZiB0aGUgY29tcG9uZW50KS5cbiAqXG4gKiAtLS1cbiAqXG4gKiBCeSBkZWZhdWx0IHRoZSBgVHJhbnNpdGlvbmAgY29tcG9uZW50IGRvZXMgbm90IGFsdGVyIHRoZSBiZWhhdmlvciBvZiB0aGVcbiAqIGNvbXBvbmVudCBpdCByZW5kZXJzLCBpdCBvbmx5IHRyYWNrcyBcImVudGVyXCIgYW5kIFwiZXhpdFwiIHN0YXRlcyBmb3IgdGhlXG4gKiBjb21wb25lbnRzLiBJdCdzIHVwIHRvIHlvdSB0byBnaXZlIG1lYW5pbmcgYW5kIGVmZmVjdCB0byB0aG9zZSBzdGF0ZXMuIEZvclxuICogZXhhbXBsZSB3ZSBjYW4gYWRkIHN0eWxlcyB0byBhIGNvbXBvbmVudCB3aGVuIGl0IGVudGVycyBvciBleGl0czpcbiAqXG4gKiBgYGBqc3hcbiAqIGltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbiAqXG4gKiBjb25zdCBkdXJhdGlvbiA9IDMwMDtcbiAqXG4gKiBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gKiAgIHRyYW5zaXRpb246IGBvcGFjaXR5ICR7ZHVyYXRpb259bXMgZWFzZS1pbi1vdXRgLFxuICogICBvcGFjaXR5OiAwLFxuICogfVxuICpcbiAqIGNvbnN0IHRyYW5zaXRpb25TdHlsZXMgPSB7XG4gKiAgIGVudGVyaW5nOiB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZW50ZXJlZDogIHsgb3BhY2l0eTogMSB9LFxuICogICBleGl0aW5nOiAgeyBvcGFjaXR5OiAwIH0sXG4gKiAgIGV4aXRlZDogIHsgb3BhY2l0eTogMCB9LFxuICogfTtcbiAqXG4gKiBjb25zdCBGYWRlID0gKHsgaW46IGluUHJvcCB9KSA9PiAoXG4gKiAgIDxUcmFuc2l0aW9uIGluPXtpblByb3B9IHRpbWVvdXQ9e2R1cmF0aW9ufT5cbiAqICAgICB7c3RhdGUgPT4gKFxuICogICAgICAgPGRpdiBzdHlsZT17e1xuICogICAgICAgICAuLi5kZWZhdWx0U3R5bGUsXG4gKiAgICAgICAgIC4uLnRyYW5zaXRpb25TdHlsZXNbc3RhdGVdXG4gKiAgICAgICB9fT5cbiAqICAgICAgICAgSSdtIGEgZmFkZSBUcmFuc2l0aW9uIVxuICogICAgICAgPC9kaXY+XG4gKiAgICAgKX1cbiAqICAgPC9UcmFuc2l0aW9uPlxuICogKTtcbiAqIGBgYFxuICpcbiAqIFRoZXJlIGFyZSA0IG1haW4gc3RhdGVzIGEgVHJhbnNpdGlvbiBjYW4gYmUgaW46XG4gKiAgLSBgJ2VudGVyaW5nJ2BcbiAqICAtIGAnZW50ZXJlZCdgXG4gKiAgLSBgJ2V4aXRpbmcnYFxuICogIC0gYCdleGl0ZWQnYFxuICpcbiAqIFRyYW5zaXRpb24gc3RhdGUgaXMgdG9nZ2xlZCB2aWEgdGhlIGBpbmAgcHJvcC4gV2hlbiBgdHJ1ZWAgdGhlIGNvbXBvbmVudFxuICogYmVnaW5zIHRoZSBcIkVudGVyXCIgc3RhZ2UuIER1cmluZyB0aGlzIHN0YWdlLCB0aGUgY29tcG9uZW50IHdpbGwgc2hpZnQgZnJvbVxuICogaXRzIGN1cnJlbnQgdHJhbnNpdGlvbiBzdGF0ZSwgdG8gYCdlbnRlcmluZydgIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlXG4gKiB0cmFuc2l0aW9uIGFuZCB0aGVuIHRvIHRoZSBgJ2VudGVyZWQnYCBzdGFnZSBvbmNlIGl0J3MgY29tcGxldGUuIExldCdzIHRha2VcbiAqIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSAod2UnbGwgdXNlIHRoZVxuICogW3VzZVN0YXRlXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlc3RhdGUpIGhvb2spOlxuICpcbiAqIGBgYGpzeFxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCBbaW5Qcm9wLCBzZXRJblByb3BdID0gdXNlU3RhdGUoZmFsc2UpO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXs1MDB9PlxuICogICAgICAgICB7c3RhdGUgPT4gKFxuICogICAgICAgICAgIC8vIC4uLlxuICogICAgICAgICApfVxuICogICAgICAgPC9UcmFuc2l0aW9uPlxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJblByb3AodHJ1ZSl9PlxuICogICAgICAgICBDbGljayB0byBFbnRlclxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCB0aGUgY29tcG9uZW50IHdpbGwgc2hpZnQgdG8gdGhlIGAnZW50ZXJpbmcnYCBzdGF0ZVxuICogYW5kIHN0YXkgdGhlcmUgZm9yIDUwMG1zICh0aGUgdmFsdWUgb2YgYHRpbWVvdXRgKSBiZWZvcmUgaXQgZmluYWxseSBzd2l0Y2hlc1xuICogdG8gYCdlbnRlcmVkJ2AuXG4gKlxuICogV2hlbiBgaW5gIGlzIGBmYWxzZWAgdGhlIHNhbWUgdGhpbmcgaGFwcGVucyBleGNlcHQgdGhlIHN0YXRlIG1vdmVzIGZyb21cbiAqIGAnZXhpdGluZydgIHRvIGAnZXhpdGVkJ2AuXG4gKi9cblxudmFyIFRyYW5zaXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoVHJhbnNpdGlvbiwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gVHJhbnNpdGlvbihwcm9wcywgY29udGV4dCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSB8fCB0aGlzO1xuICAgIHZhciBwYXJlbnRHcm91cCA9IGNvbnRleHQ7IC8vIEluIHRoZSBjb250ZXh0IG9mIGEgVHJhbnNpdGlvbkdyb3VwIGFsbCBlbnRlcnMgYXJlIHJlYWxseSBhcHBlYXJzXG5cbiAgICB2YXIgYXBwZWFyID0gcGFyZW50R3JvdXAgJiYgIXBhcmVudEdyb3VwLmlzTW91bnRpbmcgPyBwcm9wcy5lbnRlciA6IHByb3BzLmFwcGVhcjtcbiAgICB2YXIgaW5pdGlhbFN0YXR1cztcbiAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByb3BzLmluKSB7XG4gICAgICBpZiAoYXBwZWFyKSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICAgIF90aGlzLmFwcGVhclN0YXR1cyA9IEVOVEVSSU5HO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVOVEVSRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy51bm1vdW50T25FeGl0IHx8IHByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gVU5NT1VOVEVEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVYSVRFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHN0YXR1czogaW5pdGlhbFN0YXR1c1xuICAgIH07XG4gICAgX3RoaXMubmV4dENhbGxiYWNrID0gbnVsbDtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBUcmFuc2l0aW9uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBwcmV2U3RhdGUpIHtcbiAgICB2YXIgbmV4dEluID0gX3JlZi5pbjtcblxuICAgIGlmIChuZXh0SW4gJiYgcHJldlN0YXRlLnN0YXR1cyA9PT0gVU5NT1VOVEVEKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgLy8gICBsZXQgbmV4dFN0YXR1cyA9IG51bGxcbiAgLy8gICBpZiAocHJldlByb3BzICE9PSB0aGlzLnByb3BzKSB7XG4gIC8vICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdGhpcy5zdGF0ZVxuICAvLyAgICAgaWYgKHRoaXMucHJvcHMuaW4pIHtcbiAgLy8gICAgICAgaWYgKHN0YXR1cyAhPT0gRU5URVJJTkcgJiYgc3RhdHVzICE9PSBFTlRFUkVEKSB7XG4gIC8vICAgICAgICAgbmV4dFN0YXR1cyA9IEVOVEVSSU5HXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHsgbmV4dFN0YXR1cyB9XG4gIC8vIH1cbiAgO1xuXG4gIHZhciBfcHJvdG8gPSBUcmFuc2l0aW9uLnByb3RvdHlwZTtcblxuICBfcHJvdG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyh0cnVlLCB0aGlzLmFwcGVhclN0YXR1cyk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICB2YXIgbmV4dFN0YXR1cyA9IG51bGw7XG5cbiAgICBpZiAocHJldlByb3BzICE9PSB0aGlzLnByb3BzKSB7XG4gICAgICB2YXIgc3RhdHVzID0gdGhpcy5zdGF0ZS5zdGF0dXM7XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklORztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gRU5URVJJTkcgfHwgc3RhdHVzID09PSBFTlRFUkVEKSB7XG4gICAgICAgICAgbmV4dFN0YXR1cyA9IEVYSVRJTkc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmYWxzZSwgbmV4dFN0YXR1cyk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0VGltZW91dHMgPSBmdW5jdGlvbiBnZXRUaW1lb3V0cygpIHtcbiAgICB2YXIgdGltZW91dCA9IHRoaXMucHJvcHMudGltZW91dDtcbiAgICB2YXIgZXhpdCwgZW50ZXIsIGFwcGVhcjtcbiAgICBleGl0ID0gZW50ZXIgPSBhcHBlYXIgPSB0aW1lb3V0O1xuXG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCAmJiB0eXBlb2YgdGltZW91dCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGV4aXQgPSB0aW1lb3V0LmV4aXQ7XG4gICAgICBlbnRlciA9IHRpbWVvdXQuZW50ZXI7IC8vIFRPRE86IHJlbW92ZSBmYWxsYmFjayBmb3IgbmV4dCBtYWpvclxuXG4gICAgICBhcHBlYXIgPSB0aW1lb3V0LmFwcGVhciAhPT0gdW5kZWZpbmVkID8gdGltZW91dC5hcHBlYXIgOiBlbnRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZXhpdDogZXhpdCxcbiAgICAgIGVudGVyOiBlbnRlcixcbiAgICAgIGFwcGVhcjogYXBwZWFyXG4gICAgfTtcbiAgfTtcblxuICBfcHJvdG8udXBkYXRlU3RhdHVzID0gZnVuY3Rpb24gdXBkYXRlU3RhdHVzKG1vdW50aW5nLCBuZXh0U3RhdHVzKSB7XG4gICAgaWYgKG1vdW50aW5nID09PSB2b2lkIDApIHtcbiAgICAgIG1vdW50aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG5leHRTdGF0dXMgIT09IG51bGwpIHtcbiAgICAgIC8vIG5leHRTdGF0dXMgd2lsbCBhbHdheXMgYmUgRU5URVJJTkcgb3IgRVhJVElORy5cbiAgICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG5cbiAgICAgIGlmIChuZXh0U3RhdHVzID09PSBFTlRFUklORykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy51bm1vdW50T25FeGl0IHx8IHRoaXMucHJvcHMubW91bnRPbkVudGVyKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3B1bGwvNzQ5XG4gICAgICAgICAgLy8gV2l0aCB1bm1vdW50T25FeGl0IG9yIG1vdW50T25FbnRlciwgdGhlIGVudGVyIGFuaW1hdGlvbiBzaG91bGQgaGFwcGVuIGF0IHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gYGV4aXRlZGAgYW5kIGBlbnRlcmluZ2AuXG4gICAgICAgICAgLy8gVG8gbWFrZSB0aGUgYW5pbWF0aW9uIGhhcHBlbiwgIHdlIGhhdmUgdG8gc2VwYXJhdGUgZWFjaCByZW5kZXJpbmcgYW5kIGF2b2lkIGJlaW5nIHByb2Nlc3NlZCBhcyBiYXRjaGVkLlxuXG4gICAgICAgICAgaWYgKG5vZGUpIGZvcmNlUmVmbG93KG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wZXJmb3JtRW50ZXIobW91bnRpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRXhpdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy51bm1vdW50T25FeGl0ICYmIHRoaXMuc3RhdGUuc3RhdHVzID09PSBFWElURUQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IFVOTU9VTlRFRFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5wZXJmb3JtRW50ZXIgPSBmdW5jdGlvbiBwZXJmb3JtRW50ZXIobW91bnRpbmcpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBlbnRlciA9IHRoaXMucHJvcHMuZW50ZXI7XG4gICAgdmFyIGFwcGVhcmluZyA9IHRoaXMuY29udGV4dCA/IHRoaXMuY29udGV4dC5pc01vdW50aW5nIDogbW91bnRpbmc7XG5cbiAgICB2YXIgX3JlZjIgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbYXBwZWFyaW5nXSA6IFtSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKSwgYXBwZWFyaW5nXSxcbiAgICAgICAgbWF5YmVOb2RlID0gX3JlZjJbMF0sXG4gICAgICAgIG1heWJlQXBwZWFyaW5nID0gX3JlZjJbMV07XG5cbiAgICB2YXIgdGltZW91dHMgPSB0aGlzLmdldFRpbWVvdXRzKCk7XG4gICAgdmFyIGVudGVyVGltZW91dCA9IGFwcGVhcmluZyA/IHRpbWVvdXRzLmFwcGVhciA6IHRpbWVvdXRzLmVudGVyOyAvLyBubyBlbnRlciBhbmltYXRpb24gc2tpcCByaWdodCB0byBFTlRFUkVEXG4gICAgLy8gaWYgd2UgYXJlIG1vdW50aW5nIGFuZCBydW5uaW5nIHRoaXMgaXQgbWVhbnMgYXBwZWFyIF9tdXN0XyBiZSBzZXRcblxuICAgIGlmICghbW91bnRpbmcgJiYgIWVudGVyIHx8IGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IEVOVEVSRURcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkVudGVyKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogRU5URVJJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucHJvcHMub25FbnRlcmluZyhtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcblxuICAgICAgX3RoaXMyLm9uVHJhbnNpdGlvbkVuZChlbnRlclRpbWVvdXQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIucHJvcHMub25FbnRlcmVkKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5wZXJmb3JtRXhpdCA9IGZ1bmN0aW9uIHBlcmZvcm1FeGl0KCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGV4aXQgPSB0aGlzLnByb3BzLmV4aXQ7XG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBtYXliZU5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB1bmRlZmluZWQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gbm8gZXhpdCBhbmltYXRpb24gc2tpcCByaWdodCB0byBFWElURURcblxuICAgIGlmICghZXhpdCB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uRXhpdChtYXliZU5vZGUpO1xuICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogRVhJVElOR1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRpbmcobWF5YmVOb2RlKTtcblxuICAgICAgX3RoaXMzLm9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0cy5leGl0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMucHJvcHMub25FeGl0ZWQobWF5YmVOb2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8uY2FuY2VsTmV4dENhbGxiYWNrID0gZnVuY3Rpb24gY2FuY2VsTmV4dENhbGxiYWNrKCkge1xuICAgIGlmICh0aGlzLm5leHRDYWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCk7XG4gICAgICB0aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5zYWZlU2V0U3RhdGUgPSBmdW5jdGlvbiBzYWZlU2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjaykge1xuICAgIC8vIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IHRoZXJlIGFyZSB3ZWlyZCByYWNlIGNvbmRpdGlvbnMgd2l0aFxuICAgIC8vIHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgdW5tb3VudGluZyBpbiB0ZXN0aW5nLCBzbyBhbHdheXMgbWFrZSBzdXJlIHRoYXRcbiAgICAvLyB3ZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHNldFN0YXRlIGNhbGxiYWNrcyBhZnRlciB3ZSB1bm1vdW50LlxuICAgIGNhbGxiYWNrID0gdGhpcy5zZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spO1xuICAgIHRoaXMuc2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgX3Byb3RvLnNldE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIHNldE5leHRDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgdmFyIGFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLm5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICBhY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgX3RoaXM0Lm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLm5leHRDYWxsYmFjaztcbiAgfTtcblxuICBfcHJvdG8ub25UcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gb25UcmFuc2l0aW9uRW5kKHRpbWVvdXQsIGhhbmRsZXIpIHtcbiAgICB0aGlzLnNldE5leHRDYWxsYmFjayhoYW5kbGVyKTtcbiAgICB2YXIgbm9kZSA9IHRoaXMucHJvcHMubm9kZVJlZiA/IHRoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50IDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgdmFyIGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIgPSB0aW1lb3V0ID09IG51bGwgJiYgIXRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXI7XG5cbiAgICBpZiAoIW5vZGUgfHwgZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLm5leHRDYWxsYmFjaywgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXIpIHtcbiAgICAgIHZhciBfcmVmMyA9IHRoaXMucHJvcHMubm9kZVJlZiA/IFt0aGlzLm5leHRDYWxsYmFja10gOiBbbm9kZSwgdGhpcy5uZXh0Q2FsbGJhY2tdLFxuICAgICAgICAgIG1heWJlTm9kZSA9IF9yZWYzWzBdLFxuICAgICAgICAgIG1heWJlTmV4dENhbGxiYWNrID0gX3JlZjNbMV07XG5cbiAgICAgIHRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXIobWF5YmVOb2RlLCBtYXliZU5leHRDYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgc2V0VGltZW91dCh0aGlzLm5leHRDYWxsYmFjaywgdGltZW91dCk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgaWYgKHN0YXR1cyA9PT0gVU5NT1VOVEVEKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBfaW4gPSBfdGhpcyRwcm9wcy5pbixcbiAgICAgICAgX21vdW50T25FbnRlciA9IF90aGlzJHByb3BzLm1vdW50T25FbnRlcixcbiAgICAgICAgX3VubW91bnRPbkV4aXQgPSBfdGhpcyRwcm9wcy51bm1vdW50T25FeGl0LFxuICAgICAgICBfYXBwZWFyID0gX3RoaXMkcHJvcHMuYXBwZWFyLFxuICAgICAgICBfZW50ZXIgPSBfdGhpcyRwcm9wcy5lbnRlcixcbiAgICAgICAgX2V4aXQgPSBfdGhpcyRwcm9wcy5leGl0LFxuICAgICAgICBfdGltZW91dCA9IF90aGlzJHByb3BzLnRpbWVvdXQsXG4gICAgICAgIF9hZGRFbmRMaXN0ZW5lciA9IF90aGlzJHByb3BzLmFkZEVuZExpc3RlbmVyLFxuICAgICAgICBfb25FbnRlciA9IF90aGlzJHByb3BzLm9uRW50ZXIsXG4gICAgICAgIF9vbkVudGVyaW5nID0gX3RoaXMkcHJvcHMub25FbnRlcmluZyxcbiAgICAgICAgX29uRW50ZXJlZCA9IF90aGlzJHByb3BzLm9uRW50ZXJlZCxcbiAgICAgICAgX29uRXhpdCA9IF90aGlzJHByb3BzLm9uRXhpdCxcbiAgICAgICAgX29uRXhpdGluZyA9IF90aGlzJHByb3BzLm9uRXhpdGluZyxcbiAgICAgICAgX29uRXhpdGVkID0gX3RoaXMkcHJvcHMub25FeGl0ZWQsXG4gICAgICAgIF9ub2RlUmVmID0gX3RoaXMkcHJvcHMubm9kZVJlZixcbiAgICAgICAgY2hpbGRQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF90aGlzJHByb3BzLCBbXCJjaGlsZHJlblwiLCBcImluXCIsIFwibW91bnRPbkVudGVyXCIsIFwidW5tb3VudE9uRXhpdFwiLCBcImFwcGVhclwiLCBcImVudGVyXCIsIFwiZXhpdFwiLCBcInRpbWVvdXRcIiwgXCJhZGRFbmRMaXN0ZW5lclwiLCBcIm9uRW50ZXJcIiwgXCJvbkVudGVyaW5nXCIsIFwib25FbnRlcmVkXCIsIFwib25FeGl0XCIsIFwib25FeGl0aW5nXCIsIFwib25FeGl0ZWRcIiwgXCJub2RlUmVmXCJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAvLyBhbGxvd3MgZm9yIG5lc3RlZCBUcmFuc2l0aW9uc1xuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uR3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9LCB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbihzdGF0dXMsIGNoaWxkUHJvcHMpIDogUmVhY3QuY2xvbmVFbGVtZW50KFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pLCBjaGlsZFByb3BzKSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2l0aW9uO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5UcmFuc2l0aW9uLmNvbnRleHRUeXBlID0gVHJhbnNpdGlvbkdyb3VwQ29udGV4dDtcblRyYW5zaXRpb24ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8ge1xuICAvKipcbiAgICogQSBSZWFjdCByZWZlcmVuY2UgdG8gRE9NIGVsZW1lbnQgdGhhdCBuZWVkIHRvIHRyYW5zaXRpb246XG4gICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81MTEyNzEzMC80NjcxOTMyXG4gICAqXG4gICAqICAgLSBXaGVuIGBub2RlUmVmYCBwcm9wIGlzIHVzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkIHRvIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICAgKiAgICAgIChlLmcuIGBvbkVudGVyYCkgYmVjYXVzZSB1c2VyIGFscmVhZHkgaGFzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG5vZGUuXG4gICAqICAgLSBXaGVuIGNoYW5naW5nIGBrZXlgIHByb3Agb2YgYFRyYW5zaXRpb25gIGluIGEgYFRyYW5zaXRpb25Hcm91cGAgYSBuZXdcbiAgICogICAgIGBub2RlUmVmYCBuZWVkIHRvIGJlIHByb3ZpZGVkIHRvIGBUcmFuc2l0aW9uYCB3aXRoIGNoYW5nZWQgYGtleWAgcHJvcFxuICAgKiAgICAgKHNlZVxuICAgKiAgICAgW3Rlc3QvQ1NTVHJhbnNpdGlvbi10ZXN0LmpzXShodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Jsb2IvMTM0MzVmODk3YjNhYjcxZjZlMTlkNzI0ZjE0NTU5NmY1OTEwNTgxYy90ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qcyNMMzYyLUw0MzcpKS5cbiAgICovXG4gIG5vZGVSZWY6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVudDogdHlwZW9mIEVsZW1lbnQgPT09ICd1bmRlZmluZWQnID8gUHJvcFR5cGVzLmFueSA6IGZ1bmN0aW9uIChwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wVmFsdWVba2V5XTtcbiAgICAgIHJldHVybiBQcm9wVHlwZXMuaW5zdGFuY2VPZih2YWx1ZSAmJiAnb3duZXJEb2N1bWVudCcgaW4gdmFsdWUgPyB2YWx1ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LkVsZW1lbnQgOiBFbGVtZW50KShwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KTtcbiAgICB9XG4gIH0pLFxuXG4gIC8qKlxuICAgKiBBIGBmdW5jdGlvbmAgY2hpbGQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIFJlYWN0IGVsZW1lbnQuIFRoaXMgZnVuY3Rpb24gaXNcbiAgICogY2FsbGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhbnNpdGlvbiBzdGF0dXMgKGAnZW50ZXJpbmcnYCwgYCdlbnRlcmVkJ2AsXG4gICAqIGAnZXhpdGluZydgLCBgJ2V4aXRlZCdgKSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXBwbHkgY29udGV4dFxuICAgKiBzcGVjaWZpYyBwcm9wcyB0byBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogYGBganN4XG4gICAqIDxUcmFuc2l0aW9uIGluPXt0aGlzLnN0YXRlLmlufSB0aW1lb3V0PXsxNTB9PlxuICAgKiAgIHtzdGF0ZSA9PiAoXG4gICAqICAgICA8TXlDb21wb25lbnQgY2xhc3NOYW1lPXtgZmFkZSBmYWRlLSR7c3RhdGV9YH0gLz5cbiAgICogICApfVxuICAgKiA8L1RyYW5zaXRpb24+XG4gICAqIGBgYFxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsIFByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWlyZWRdKS5pc1JlcXVpcmVkLFxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjb21wb25lbnQ7IHRyaWdnZXJzIHRoZSBlbnRlciBvciBleGl0IHN0YXRlc1xuICAgKi9cbiAgaW46IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBjaGlsZCBjb21wb25lbnQgaXMgbW91bnRlZCBpbW1lZGlhdGVseSBhbG9uZyB3aXRoXG4gICAqIHRoZSBwYXJlbnQgYFRyYW5zaXRpb25gIGNvbXBvbmVudC4gSWYgeW91IHdhbnQgdG8gXCJsYXp5IG1vdW50XCIgdGhlIGNvbXBvbmVudCBvbiB0aGVcbiAgICogZmlyc3QgYGluPXt0cnVlfWAgeW91IGNhbiBzZXQgYG1vdW50T25FbnRlcmAuIEFmdGVyIHRoZSBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIHRoZSBjb21wb25lbnQgd2lsbCBzdGF5XG4gICAqIG1vdW50ZWQsIGV2ZW4gb24gXCJleGl0ZWRcIiwgdW5sZXNzIHlvdSBhbHNvIHNwZWNpZnkgYHVubW91bnRPbkV4aXRgLlxuICAgKi9cbiAgbW91bnRPbkVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IHN0YXlzIG1vdW50ZWQgYWZ0ZXIgaXQgcmVhY2hlcyB0aGUgYCdleGl0ZWQnYCBzdGF0ZS5cbiAgICogU2V0IGB1bm1vdW50T25FeGl0YCBpZiB5b3UnZCBwcmVmZXIgdG8gdW5tb3VudCB0aGUgY29tcG9uZW50IGFmdGVyIGl0IGZpbmlzaGVzIGV4aXRpbmcuXG4gICAqL1xuICB1bm1vdW50T25FeGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGRvZXMgbm90IHBlcmZvcm0gdGhlIGVudGVyIHRyYW5zaXRpb24gd2hlblxuICAgKiBpdCBmaXJzdCBtb3VudHMsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBpbmAuIElmIHlvdSB3YW50IHRoaXNcbiAgICogYmVoYXZpb3IsIHNldCBib3RoIGBhcHBlYXJgIGFuZCBgaW5gIHRvIGB0cnVlYC5cbiAgICpcbiAgICogPiAqKk5vdGUqKjogdGhlcmUgYXJlIG5vIHNwZWNpYWwgYXBwZWFyIHN0YXRlcyBsaWtlIGBhcHBlYXJpbmdgL2BhcHBlYXJlZGAsIHRoaXMgcHJvcFxuICAgKiA+IG9ubHkgYWRkcyBhbiBhZGRpdGlvbmFsIGVudGVyIHRyYW5zaXRpb24uIEhvd2V2ZXIsIGluIHRoZVxuICAgKiA+IGA8Q1NTVHJhbnNpdGlvbj5gIGNvbXBvbmVudCB0aGF0IGZpcnN0IGVudGVyIHRyYW5zaXRpb24gZG9lcyByZXN1bHQgaW5cbiAgICogPiBhZGRpdGlvbmFsIGAuYXBwZWFyLSpgIGNsYXNzZXMsIHRoYXQgd2F5IHlvdSBjYW4gY2hvb3NlIHRvIHN0eWxlIGl0XG4gICAqID4gZGlmZmVyZW50bHkuXG4gICAqL1xuICBhcHBlYXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBlbnRlciB0cmFuc2l0aW9ucy5cbiAgICovXG4gIGVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZXhpdCB0cmFuc2l0aW9ucy5cbiAgICovXG4gIGV4aXQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gb2YgdGhlIHRyYW5zaXRpb24sIGluIG1pbGxpc2Vjb25kcy5cbiAgICogUmVxdWlyZWQgdW5sZXNzIGBhZGRFbmRMaXN0ZW5lcmAgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnM6XG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiB0aW1lb3V0PXs1MDB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBvciBpbmRpdmlkdWFsbHk6XG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiB0aW1lb3V0PXt7XG4gICAqICBhcHBlYXI6IDUwMCxcbiAgICogIGVudGVyOiAzMDAsXG4gICAqICBleGl0OiA1MDAsXG4gICAqIH19XG4gICAqIGBgYFxuICAgKlxuICAgKiAtIGBhcHBlYXJgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgZW50ZXJgXG4gICAqIC0gYGVudGVyYCBkZWZhdWx0cyB0byBgMGBcbiAgICogLSBgZXhpdGAgZGVmYXVsdHMgdG8gYDBgXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXIgfCB7IGVudGVyPzogbnVtYmVyLCBleGl0PzogbnVtYmVyLCBhcHBlYXI/OiBudW1iZXIgfX1cbiAgICovXG4gIHRpbWVvdXQ6IGZ1bmN0aW9uIHRpbWVvdXQocHJvcHMpIHtcbiAgICB2YXIgcHQgPSB0aW1lb3V0c1NoYXBlO1xuICAgIGlmICghcHJvcHMuYWRkRW5kTGlzdGVuZXIpIHB0ID0gcHQuaXNSZXF1aXJlZDtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHJldHVybiBwdC5hcHBseSh2b2lkIDAsIFtwcm9wc10uY29uY2F0KGFyZ3MpKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIHRyYW5zaXRpb24gZW5kIHRyaWdnZXIuIENhbGxlZCB3aXRoIHRoZSB0cmFuc2l0aW9uaW5nXG4gICAqIERPTSBub2RlIGFuZCBhIGBkb25lYCBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogYGBganN4XG4gICAqIGFkZEVuZExpc3RlbmVyPXsobm9kZSwgZG9uZSkgPT4ge1xuICAgKiAgIC8vIHVzZSB0aGUgY3NzIHRyYW5zaXRpb25lbmQgZXZlbnQgdG8gbWFyayB0aGUgZmluaXNoIG9mIGEgdHJhbnNpdGlvblxuICAgKiAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGRvbmUsIGZhbHNlKTtcbiAgICogfX1cbiAgICogYGBgXG4gICAqL1xuICBhZGRFbmRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGJlZm9yZSB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbCkgLT4gdm9pZFxuICAgKi9cbiAgb25FbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImVudGVyaW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKVxuICAgKi9cbiAgb25FbnRlcmluZzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImVudGVyZWRcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXJlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGJlZm9yZSB0aGUgXCJleGl0aW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJleGl0aW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJleGl0ZWRcIiBzdGF0dXMgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZFxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jXG59IDoge307IC8vIE5hbWUgdGhlIGZ1bmN0aW9uIHNvIGl0IGlzIGNsZWFyZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cblRyYW5zaXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlLFxuICBlbnRlcjogdHJ1ZSxcbiAgZXhpdDogdHJ1ZSxcbiAgb25FbnRlcjogbm9vcCxcbiAgb25FbnRlcmluZzogbm9vcCxcbiAgb25FbnRlcmVkOiBub29wLFxuICBvbkV4aXQ6IG5vb3AsXG4gIG9uRXhpdGluZzogbm9vcCxcbiAgb25FeGl0ZWQ6IG5vb3Bcbn07XG5UcmFuc2l0aW9uLlVOTU9VTlRFRCA9IFVOTU9VTlRFRDtcblRyYW5zaXRpb24uRVhJVEVEID0gRVhJVEVEO1xuVHJhbnNpdGlvbi5FTlRFUklORyA9IEVOVEVSSU5HO1xuVHJhbnNpdGlvbi5FTlRFUkVEID0gRU5URVJFRDtcblRyYW5zaXRpb24uRVhJVElORyA9IEVYSVRJTkc7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uOyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuICBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwiZXhwb3J0IHZhciBmb3JjZVJlZmxvdyA9IGZ1bmN0aW9uIGZvcmNlUmVmbG93KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuc2Nyb2xsVG9wO1xufTsiLCIvKipcbiAqIFJldHVybnMgdGhlIG93bmVyIGRvY3VtZW50IG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3duZXJEb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbn0iLCJ2YXIgclVwcGVyID0gLyhbQS1aXSkvZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGh5cGhlbmF0ZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJVcHBlciwgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy0yMDE0LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzJhZWI4YTJhNmJlYjAwNjE3YTQyMTdmN2Y4Mjg0OTI0ZmEyYWQ4MTkvc3JjL3ZlbmRvci9jb3JlL2h5cGhlbmF0ZVN0eWxlTmFtZS5qc1xuICovXG5pbXBvcnQgaHlwaGVuYXRlIGZyb20gJy4vaHlwaGVuYXRlJztcbnZhciBtc1BhdHRlcm4gPSAvXm1zLS87XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoeXBoZW5hdGVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5yZXBsYWNlKG1zUGF0dGVybiwgJy1tcy0nKTtcbn0iLCJ2YXIgc3VwcG9ydGVkVHJhbnNmb3JtcyA9IC9eKCh0cmFuc2xhdGV8cm90YXRlfHNjYWxlKShYfFl8WnwzZCk/fG1hdHJpeCgzZCk/fHBlcnNwZWN0aXZlfHNrZXcoWHxZKT8pJC9pO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUcmFuc2Zvcm0odmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHN1cHBvcnRlZFRyYW5zZm9ybXMudGVzdCh2YWx1ZSkpO1xufSIsImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gJy4vZ2V0Q29tcHV0ZWRTdHlsZSc7XG5pbXBvcnQgaHlwaGVuYXRlIGZyb20gJy4vaHlwaGVuYXRlU3R5bGUnO1xuaW1wb3J0IGlzVHJhbnNmb3JtIGZyb20gJy4vaXNUcmFuc2Zvcm0nO1xuXG5mdW5jdGlvbiBzdHlsZShub2RlLCBwcm9wZXJ0eSkge1xuICB2YXIgY3NzID0gJyc7XG4gIHZhciB0cmFuc2Zvcm1zID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGh5cGhlbmF0ZShwcm9wZXJ0eSkpIHx8IGdldENvbXB1dGVkU3R5bGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZShoeXBoZW5hdGUocHJvcGVydHkpKTtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKHByb3BlcnR5KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0eVtrZXldO1xuXG4gICAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgICAgbm9kZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShoeXBoZW5hdGUoa2V5KSk7XG4gICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybShrZXkpKSB7XG4gICAgICB0cmFuc2Zvcm1zICs9IGtleSArIFwiKFwiICsgdmFsdWUgKyBcIikgXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNzcyArPSBoeXBoZW5hdGUoa2V5KSArIFwiOiBcIiArIHZhbHVlICsgXCI7XCI7XG4gICAgfVxuICB9KTtcblxuICBpZiAodHJhbnNmb3Jtcykge1xuICAgIGNzcyArPSBcInRyYW5zZm9ybTogXCIgKyB0cmFuc2Zvcm1zICsgXCI7XCI7XG4gIH1cblxuICBub2RlLnN0eWxlLmNzc1RleHQgKz0gXCI7XCIgKyBjc3M7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0eWxlOyIsImltcG9ydCBvd25lcldpbmRvdyBmcm9tICcuL293bmVyV2luZG93Jztcbi8qKlxuICogUmV0dXJucyBvbmUgb3IgYWxsIGNvbXB1dGVkIHN0eWxlIHByb3BlcnRpZXMgb2YgYW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIG5vZGUgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBwc3VlZG9FbGVtZW50IHRoZSBzdHlsZSBwcm9wZXJ0eVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUobm9kZSwgcHN1ZWRvRWxlbWVudCkge1xuICByZXR1cm4gb3duZXJXaW5kb3cobm9kZSkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBwc3VlZG9FbGVtZW50KTtcbn0iLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBvd25lciB3aW5kb3cgb2YgYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyV2luZG93KG5vZGUpIHtcbiAgdmFyIGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MgJiYgZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbn0iLCJleHBvcnQgZGVmYXVsdCAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXJldHVybi1hc3NpZ24gKi9cbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnLi9jYW5Vc2VET00nO1xuZXhwb3J0IHZhciBvcHRpb25zU3VwcG9ydGVkID0gZmFsc2U7XG5leHBvcnQgdmFyIG9uY2VTdXBwb3J0ZWQgPSBmYWxzZTtcblxudHJ5IHtcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgZ2V0IHBhc3NpdmUoKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1N1cHBvcnRlZCA9IHRydWU7XG4gICAgfSxcblxuICAgIGdldCBvbmNlKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW11bHRpLWFzc2lnblxuICAgICAgcmV0dXJuIG9uY2VTdXBwb3J0ZWQgPSBvcHRpb25zU3VwcG9ydGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgfTtcblxuICBpZiAoY2FuVXNlRE9NKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIHRydWUpO1xuICB9XG59IGNhdGNoIChlKSB7XG4gIC8qICovXG59XG5cbi8qKlxuICogQW4gYGFkZEV2ZW50TGlzdGVuZXJgIHBvbnlmaWxsLCBzdXBwb3J0cyB0aGUgYG9uY2VgIG9wdGlvblxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIGV2ZW50TmFtZSB0aGUgZXZlbnQgbmFtZVxuICogQHBhcmFtIGhhbmRsZSB0aGUgaGFuZGxlclxuICogQHBhcmFtIG9wdGlvbnMgZXZlbnQgb3B0aW9uc1xuICovXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyAhPT0gJ2Jvb2xlYW4nICYmICFvbmNlU3VwcG9ydGVkKSB7XG4gICAgdmFyIG9uY2UgPSBvcHRpb25zLm9uY2UsXG4gICAgICAgIGNhcHR1cmUgPSBvcHRpb25zLmNhcHR1cmU7XG4gICAgdmFyIHdyYXBwZWRIYW5kbGVyID0gaGFuZGxlcjtcblxuICAgIGlmICghb25jZVN1cHBvcnRlZCAmJiBvbmNlKSB7XG4gICAgICB3cmFwcGVkSGFuZGxlciA9IGhhbmRsZXIuX19vbmNlIHx8IGZ1bmN0aW9uIG9uY2VIYW5kbGVyKGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIG9uY2VIYW5kbGVyLCBjYXB0dXJlKTtcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZXIuX19vbmNlID0gd3JhcHBlZEhhbmRsZXI7XG4gICAgfVxuXG4gICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgd3JhcHBlZEhhbmRsZXIsIG9wdGlvbnNTdXBwb3J0ZWQgPyBvcHRpb25zIDogY2FwdHVyZSk7XG4gIH1cblxuICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRkRXZlbnRMaXN0ZW5lcjsiLCJpbXBvcnQgYWRkRXZlbnRMaXN0ZW5lciBmcm9tICcuL2FkZEV2ZW50TGlzdGVuZXInO1xuaW1wb3J0IHJlbW92ZUV2ZW50TGlzdGVuZXIgZnJvbSAnLi9yZW1vdmVFdmVudExpc3RlbmVyJztcblxuZnVuY3Rpb24gbGlzdGVuKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGhhbmRsZXIsIG9wdGlvbnMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0ZW47IiwiLyoqXG4gKiBBIGByZW1vdmVFdmVudExpc3RlbmVyYCBwb255ZmlsbFxuICogXG4gKiBAcGFyYW0gbm9kZSB0aGUgZWxlbWVudFxuICogQHBhcmFtIGV2ZW50TmFtZSB0aGUgZXZlbnQgbmFtZVxuICogQHBhcmFtIGhhbmRsZSB0aGUgaGFuZGxlclxuICogQHBhcmFtIG9wdGlvbnMgZXZlbnQgb3B0aW9uc1xuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICB2YXIgY2FwdHVyZSA9IG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgIT09ICdib29sZWFuJyA/IG9wdGlvbnMuY2FwdHVyZSA6IG9wdGlvbnM7XG4gIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIsIGNhcHR1cmUpO1xuXG4gIGlmIChoYW5kbGVyLl9fb25jZSkge1xuICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIuX19vbmNlLCBjYXB0dXJlKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCByZW1vdmVFdmVudExpc3RlbmVyOyIsImltcG9ydCBjc3MgZnJvbSAnLi9jc3MnO1xuaW1wb3J0IGxpc3RlbiBmcm9tICcuL2xpc3Rlbic7XG5pbXBvcnQgdHJpZ2dlckV2ZW50IGZyb20gJy4vdHJpZ2dlckV2ZW50JztcblxuZnVuY3Rpb24gcGFyc2VEdXJhdGlvbihub2RlKSB7XG4gIHZhciBzdHIgPSBjc3Mobm9kZSwgJ3RyYW5zaXRpb25EdXJhdGlvbicpIHx8ICcnO1xuICB2YXIgbXVsdCA9IHN0ci5pbmRleE9mKCdtcycpID09PSAtMSA/IDEwMDAgOiAxO1xuICByZXR1cm4gcGFyc2VGbG9hdChzdHIpICogbXVsdDtcbn1cblxuZnVuY3Rpb24gZW11bGF0ZVRyYW5zaXRpb25FbmQoZWxlbWVudCwgZHVyYXRpb24sIHBhZGRpbmcpIHtcbiAgaWYgKHBhZGRpbmcgPT09IHZvaWQgMCkge1xuICAgIHBhZGRpbmcgPSA1O1xuICB9XG5cbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICB2YXIgaGFuZGxlID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFjYWxsZWQpIHRyaWdnZXJFdmVudChlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcsIHRydWUpO1xuICB9LCBkdXJhdGlvbiArIHBhZGRpbmcpO1xuICB2YXIgcmVtb3ZlID0gbGlzdGVuKGVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIGNhbGxlZCA9IHRydWU7XG4gIH0sIHtcbiAgICBvbmNlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGNsZWFyVGltZW91dChoYW5kbGUpO1xuICAgIHJlbW92ZSgpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKGVsZW1lbnQsIGhhbmRsZXIsIGR1cmF0aW9uLCBwYWRkaW5nKSB7XG4gIGlmIChkdXJhdGlvbiA9PSBudWxsKSBkdXJhdGlvbiA9IHBhcnNlRHVyYXRpb24oZWxlbWVudCkgfHwgMDtcbiAgdmFyIHJlbW92ZUVtdWxhdGUgPSBlbXVsYXRlVHJhbnNpdGlvbkVuZChlbGVtZW50LCBkdXJhdGlvbiwgcGFkZGluZyk7XG4gIHZhciByZW1vdmUgPSBsaXN0ZW4oZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGVyKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZW1vdmVFbXVsYXRlKCk7XG4gICAgcmVtb3ZlKCk7XG4gIH07XG59IiwiLyoqXG4gKiBUcmlnZ2VycyBhbiBldmVudCBvbiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gZXZlbnROYW1lIHRoZSBldmVudCBuYW1lIHRvIHRyaWdnZXJcbiAqIEBwYXJhbSBidWJibGVzIHdoZXRoZXIgdGhlIGV2ZW50IHNob3VsZCBidWJibGUgdXBcbiAqIEBwYXJhbSBjYW5jZWxhYmxlIHdoZXRoZXIgdGhlIGV2ZW50IHNob3VsZCBiZSBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyaWdnZXJFdmVudChub2RlLCBldmVudE5hbWUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpIHtcbiAgaWYgKGJ1YmJsZXMgPT09IHZvaWQgMCkge1xuICAgIGJ1YmJsZXMgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChjYW5jZWxhYmxlID09PSB2b2lkIDApIHtcbiAgICBjYW5jZWxhYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChub2RlKSB7XG4gICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgICBldmVudC5pbml0RXZlbnQoZXZlbnROYW1lLCBidWJibGVzLCBjYW5jZWxhYmxlKTtcbiAgICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9XG59IiwiaW1wb3J0IGNzcyBmcm9tICdkb20taGVscGVycy9jc3MnO1xuaW1wb3J0IHRyYW5zaXRpb25FbmQgZnJvbSAnZG9tLWhlbHBlcnMvdHJhbnNpdGlvbkVuZCc7XG5mdW5jdGlvbiBwYXJzZUR1cmF0aW9uKG5vZGUsIHByb3BlcnR5KSB7XG4gIGNvbnN0IHN0ciA9IGNzcyhub2RlLCBwcm9wZXJ0eSkgfHwgJyc7XG4gIGNvbnN0IG11bHQgPSBzdHIuaW5kZXhPZignbXMnKSA9PT0gLTEgPyAxMDAwIDogMTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKSAqIG11bHQ7XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIoZWxlbWVudCwgaGFuZGxlcikge1xuICBjb25zdCBkdXJhdGlvbiA9IHBhcnNlRHVyYXRpb24oZWxlbWVudCwgJ3RyYW5zaXRpb25EdXJhdGlvbicpO1xuICBjb25zdCBkZWxheSA9IHBhcnNlRHVyYXRpb24oZWxlbWVudCwgJ3RyYW5zaXRpb25EZWxheScpO1xuICBjb25zdCByZW1vdmUgPSB0cmFuc2l0aW9uRW5kKGVsZW1lbnQsIGUgPT4ge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWxlbWVudCkge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgICBoYW5kbGVyKGUpO1xuICAgIH1cbiAgfSwgZHVyYXRpb24gKyBkZWxheSk7XG59IiwiLy8gcmVhZGluZyBhIGRpbWVuc2lvbiBwcm9wIHdpbGwgY2F1c2UgdGhlIGJyb3dzZXIgdG8gcmVjYWxjdWxhdGUsXG4vLyB3aGljaCB3aWxsIGxldCBvdXIgYW5pbWF0aW9ucyB3b3JrXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmlnZ2VyQnJvd3NlclJlZmxvdyhub2RlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gIG5vZGUub2Zmc2V0SGVpZ2h0O1xufSIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbnZhciB0b0ZuUmVmID0gZnVuY3Rpb24gdG9GblJlZihyZWYpIHtcbiAgcmV0dXJuICFyZWYgfHwgdHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJyA/IHJlZiA6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZWZzKHJlZkEsIHJlZkIpIHtcbiAgdmFyIGEgPSB0b0ZuUmVmKHJlZkEpO1xuICB2YXIgYiA9IHRvRm5SZWYocmVmQik7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoYSkgYSh2YWx1ZSk7XG4gICAgaWYgKGIpIGIodmFsdWUpO1xuICB9O1xufVxuLyoqXG4gKiBDcmVhdGUgYW5kIHJldHVybnMgYSBzaW5nbGUgY2FsbGJhY2sgcmVmIGNvbXBvc2VkIGZyb20gdHdvIG90aGVyIFJlZnMuXG4gKlxuICogYGBgdHN4XG4gKiBjb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IFtlbGVtZW50LCBhdHRhY2hSZWZdID0gdXNlQ2FsbGJhY2tSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KCk7XG4gKiAgIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBhdHRhY2hSZWYpO1xuICpcbiAqICAgcmV0dXJuIDxidXR0b24gcmVmPXttZXJnZWRSZWZ9IHsuLi5wcm9wc30vPlxuICogfSlcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSByZWZBIEEgQ2FsbGJhY2sgb3IgbXV0YWJsZSBSZWZcbiAqIEBwYXJhbSByZWZCIEEgQ2FsbGJhY2sgb3IgbXV0YWJsZSBSZWZcbiAqIEBjYXRlZ29yeSByZWZzXG4gKi9cblxuZnVuY3Rpb24gdXNlTWVyZ2VkUmVmcyhyZWZBLCByZWZCKSB7XG4gIHJldHVybiB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbWVyZ2VSZWZzKHJlZkEsIHJlZkIpO1xuICB9LCBbcmVmQSwgcmVmQl0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VNZXJnZWRSZWZzOyIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRyYW5zaXRpb24gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uJztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHNhZmVGaW5kRE9NTm9kZSBmcm9tICcuL3NhZmVGaW5kRE9NTm9kZSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gTm9ybWFsaXplcyBUcmFuc2l0aW9uIGNhbGxiYWNrcyB3aGVuIG5vZGVSZWYgaXMgdXNlZC5cbmNvbnN0IFRyYW5zaXRpb25XcmFwcGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgb25FbnRlcixcbiAgb25FbnRlcmluZyxcbiAgb25FbnRlcmVkLFxuICBvbkV4aXQsXG4gIG9uRXhpdGluZyxcbiAgb25FeGl0ZWQsXG4gIGFkZEVuZExpc3RlbmVyLFxuICBjaGlsZHJlbixcbiAgY2hpbGRSZWYsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3Qgbm9kZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgbWVyZ2VkUmVmID0gdXNlTWVyZ2VkUmVmcyhub2RlUmVmLCBjaGlsZFJlZik7XG4gIGNvbnN0IGF0dGFjaFJlZiA9IHIgPT4ge1xuICAgIG1lcmdlZFJlZihzYWZlRmluZERPTU5vZGUocikpO1xuICB9O1xuICBjb25zdCBub3JtYWxpemUgPSBjYWxsYmFjayA9PiBwYXJhbSA9PiB7XG4gICAgaWYgKGNhbGxiYWNrICYmIG5vZGVSZWYuY3VycmVudCkge1xuICAgICAgY2FsbGJhY2sobm9kZVJlZi5jdXJyZW50LCBwYXJhbSk7XG4gICAgfVxuICB9O1xuXG4gIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuICBjb25zdCBoYW5kbGVFbnRlciA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkVudGVyKSwgW29uRW50ZXJdKTtcbiAgY29uc3QgaGFuZGxlRW50ZXJpbmcgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FbnRlcmluZyksIFtvbkVudGVyaW5nXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyZWQgPSB1c2VDYWxsYmFjayhub3JtYWxpemUob25FbnRlcmVkKSwgW29uRW50ZXJlZF0pO1xuICBjb25zdCBoYW5kbGVFeGl0ID0gdXNlQ2FsbGJhY2sobm9ybWFsaXplKG9uRXhpdCksIFtvbkV4aXRdKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkV4aXRpbmcpLCBbb25FeGl0aW5nXSk7XG4gIGNvbnN0IGhhbmRsZUV4aXRlZCA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShvbkV4aXRlZCksIFtvbkV4aXRlZF0pO1xuICBjb25zdCBoYW5kbGVBZGRFbmRMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKG5vcm1hbGl6ZShhZGRFbmRMaXN0ZW5lciksIFthZGRFbmRMaXN0ZW5lcl0pO1xuICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBhZGRFbmRMaXN0ZW5lcjogaGFuZGxlQWRkRW5kTGlzdGVuZXIsXG4gICAgbm9kZVJlZjogbm9kZVJlZixcbiAgICBjaGlsZHJlbjogdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gY2hpbGRyZW4oc3RhdHVzLCB7XG4gICAgICAuLi5pbm5lclByb3BzLFxuICAgICAgcmVmOiBhdHRhY2hSZWZcbiAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIHJlZjogYXR0YWNoUmVmXG4gICAgfSlcbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb25XcmFwcGVyOyIsImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2FmZUZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xuICBpZiAoY29tcG9uZW50T3JFbGVtZW50ICYmICdzZXRTdGF0ZScgaW4gY29tcG9uZW50T3JFbGVtZW50KSB7XG4gICAgcmV0dXJuIFJlYWN0RE9NLmZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudE9yRWxlbWVudCAhPSBudWxsID8gY29tcG9uZW50T3JFbGVtZW50IDogbnVsbDtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRU5URVJFRCwgRU5URVJJTkcgfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwL1RyYW5zaXRpb24nO1xuaW1wb3J0IHRyYW5zaXRpb25FbmRMaXN0ZW5lciBmcm9tICcuL3RyYW5zaXRpb25FbmRMaXN0ZW5lcic7XG5pbXBvcnQgdHJpZ2dlckJyb3dzZXJSZWZsb3cgZnJvbSAnLi90cmlnZ2VyQnJvd3NlclJlZmxvdyc7XG5pbXBvcnQgVHJhbnNpdGlvbldyYXBwZXIgZnJvbSAnLi9UcmFuc2l0aW9uV3JhcHBlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIHRpbWVvdXQ6IDMwMCxcbiAgbW91bnRPbkVudGVyOiBmYWxzZSxcbiAgdW5tb3VudE9uRXhpdDogZmFsc2UsXG4gIGFwcGVhcjogZmFsc2Vcbn07XG5jb25zdCBmYWRlU3R5bGVzID0ge1xuICBbRU5URVJJTkddOiAnc2hvdycsXG4gIFtFTlRFUkVEXTogJ3Nob3cnXG59O1xuY29uc3QgRmFkZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIHRyYW5zaXRpb25DbGFzc2VzID0ge30sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgY29uc3QgaGFuZGxlRW50ZXIgPSB1c2VDYWxsYmFjaygobm9kZSwgaXNBcHBlYXJpbmcpID0+IHtcbiAgICB0cmlnZ2VyQnJvd3NlclJlZmxvdyhub2RlKTtcbiAgICBwcm9wcy5vbkVudGVyID09IG51bGwgPyB2b2lkIDAgOiBwcm9wcy5vbkVudGVyKG5vZGUsIGlzQXBwZWFyaW5nKTtcbiAgfSwgW3Byb3BzXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uV3JhcHBlciwge1xuICAgIHJlZjogcmVmLFxuICAgIGFkZEVuZExpc3RlbmVyOiB0cmFuc2l0aW9uRW5kTGlzdGVuZXIsXG4gICAgLi4ucHJvcHMsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgY2hpbGRSZWY6IGNoaWxkcmVuLnJlZixcbiAgICBjaGlsZHJlbjogKHN0YXR1cywgaW5uZXJQcm9wcykgPT4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgLi4uaW5uZXJQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcygnZmFkZScsIGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCBmYWRlU3R5bGVzW3N0YXR1c10sIHRyYW5zaXRpb25DbGFzc2VzW3N0YXR1c10pXG4gICAgfSlcbiAgfSk7XG59KTtcbkZhZGUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuRmFkZS5kaXNwbGF5TmFtZSA9ICdGYWRlJztcbmV4cG9ydCBkZWZhdWx0IEZhZGU7IiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHByb3BUeXBlcyA9IHtcbiAgLyoqIEFuIGFjY2Vzc2libGUgbGFiZWwgaW5kaWNhdGluZyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIENsb3NlIEJ1dHRvbi4gKi9cbiAgJ2FyaWEtbGFiZWwnOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogQSBjYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgQ2xvc2UgQnV0dG9uIGlzIGNsaWNrZWQuICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogUmVuZGVyIGRpZmZlcmVudCBjb2xvciB2YXJpYW50IGZvciB0aGUgYnV0dG9uLlxuICAgKlxuICAgKiBPbWl0dGluZyB0aGlzIHdpbGwgcmVuZGVyIHRoZSBkZWZhdWx0IGRhcmsgY29sb3IuXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWyd3aGl0ZSddKVxufTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGFiZWwnOiAnQ2xvc2UnXG59O1xuY29uc3QgQ2xvc2VCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjbGFzc05hbWUsXG4gIHZhcmlhbnQsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IC8qI19fUFVSRV9fKi9fanN4KFwiYnV0dG9uXCIsIHtcbiAgcmVmOiByZWYsXG4gIHR5cGU6IFwiYnV0dG9uXCIsXG4gIGNsYXNzTmFtZTogY2xhc3NOYW1lcygnYnRuLWNsb3NlJywgdmFyaWFudCAmJiBgYnRuLWNsb3NlLSR7dmFyaWFudH1gLCBjbGFzc05hbWUpLFxuICAuLi5wcm9wc1xufSkpO1xuQ2xvc2VCdXR0b24uZGlzcGxheU5hbWUgPSAnQ2xvc2VCdXR0b24nO1xuQ2xvc2VCdXR0b24ucHJvcFR5cGVzID0gcHJvcFR5cGVzO1xuQ2xvc2VCdXR0b24uZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQ2xvc2VCdXR0b247IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgKGNsYXNzTmFtZSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigocCwgcmVmKSA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gIC4uLnAsXG4gIHJlZjogcmVmLFxuICBjbGFzc05hbWU6IGNsYXNzTmFtZXMocC5jbGFzc05hbWUsIGNsYXNzTmFtZSlcbn0pKSk7IiwidmFyIHJIeXBoZW4gPSAvLSguKS9nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShySHlwaGVuLCBmdW5jdGlvbiAoXywgY2hyKSB7XG4gICAgcmV0dXJuIGNoci50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn0iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBjYW1lbGl6ZSBmcm9tICdkb20taGVscGVycy9jYW1lbGl6ZSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHBhc2NhbENhc2UgPSBzdHIgPT4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBjYW1lbGl6ZShzdHIpLnNsaWNlKDEpO1xuLy8gVE9ETzogZW1zdHJpY3RlbiAmIGZpeCB0aGUgdHlwaW5nIGhlcmUhIGBjcmVhdGVXaXRoQnNQcmVmaXg8VEVsZW1lbnRUeXBlPi4uLmBcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVdpdGhCc1ByZWZpeChwcmVmaXgsIHtcbiAgZGlzcGxheU5hbWUgPSBwYXNjYWxDYXNlKHByZWZpeCksXG4gIENvbXBvbmVudCxcbiAgZGVmYXVsdFByb3BzXG59ID0ge30pIHtcbiAgY29uc3QgQnNDb21wb25lbnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICAgIGNsYXNzTmFtZSxcbiAgICBic1ByZWZpeCxcbiAgICBhczogVGFnID0gQ29tcG9uZW50IHx8ICdkaXYnLFxuICAgIC4uLnByb3BzXG4gIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCBwcmVmaXgpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUYWcsIHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcmVzb2x2ZWRQcmVmaXgpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfSk7XG4gIEJzQ29tcG9uZW50LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiAgQnNDb21wb25lbnQuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgcmV0dXJuIEJzQ29tcG9uZW50O1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgQW5jaG9yIGZyb20gJ0ByZXN0YXJ0L3VpL0FuY2hvcic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IEZhZGUgZnJvbSAnLi9GYWRlJztcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tICcuL0Nsb3NlQnV0dG9uJztcbmltcG9ydCBkaXZXaXRoQ2xhc3NOYW1lIGZyb20gJy4vZGl2V2l0aENsYXNzTmFtZSc7XG5pbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEaXZTdHlsZWRBc0g0ID0gZGl2V2l0aENsYXNzTmFtZSgnaDQnKTtcbkRpdlN0eWxlZEFzSDQuZGlzcGxheU5hbWUgPSAnRGl2U3R5bGVkQXNINCc7XG5jb25zdCBBbGVydEhlYWRpbmcgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2FsZXJ0LWhlYWRpbmcnLCB7XG4gIENvbXBvbmVudDogRGl2U3R5bGVkQXNINFxufSk7XG5jb25zdCBBbGVydExpbmsgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2FsZXJ0LWxpbmsnLCB7XG4gIENvbXBvbmVudDogQW5jaG9yXG59KTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdmFyaWFudDogJ3ByaW1hcnknLFxuICBzaG93OiB0cnVlLFxuICB0cmFuc2l0aW9uOiBGYWRlLFxuICBjbG9zZUxhYmVsOiAnQ2xvc2UgYWxlcnQnXG59O1xuY29uc3QgQWxlcnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigodW5jb250cm9sbGVkUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYnNQcmVmaXgsXG4gICAgc2hvdyxcbiAgICBjbG9zZUxhYmVsLFxuICAgIGNsb3NlVmFyaWFudCxcbiAgICBjbGFzc05hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgdmFyaWFudCxcbiAgICBvbkNsb3NlLFxuICAgIGRpc21pc3NpYmxlLFxuICAgIHRyYW5zaXRpb24sXG4gICAgLi4ucHJvcHNcbiAgfSA9IHVzZVVuY29udHJvbGxlZCh1bmNvbnRyb2xsZWRQcm9wcywge1xuICAgIHNob3c6ICdvbkNsb3NlJ1xuICB9KTtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnYWxlcnQnKTtcbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICBvbkNsb3NlKGZhbHNlLCBlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBUcmFuc2l0aW9uID0gdHJhbnNpdGlvbiA9PT0gdHJ1ZSA/IEZhZGUgOiB0cmFuc2l0aW9uO1xuICBjb25zdCBhbGVydCA9IC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgcm9sZTogXCJhbGVydFwiLFxuICAgIC4uLighVHJhbnNpdGlvbiA/IHByb3BzIDogdW5kZWZpbmVkKSxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBwcmVmaXgsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgZGlzbWlzc2libGUgJiYgYCR7cHJlZml4fS1kaXNtaXNzaWJsZWApLFxuICAgIGNoaWxkcmVuOiBbZGlzbWlzc2libGUgJiYgLyojX19QVVJFX18qL19qc3goQ2xvc2VCdXR0b24sIHtcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsb3NlLFxuICAgICAgXCJhcmlhLWxhYmVsXCI6IGNsb3NlTGFiZWwsXG4gICAgICB2YXJpYW50OiBjbG9zZVZhcmlhbnRcbiAgICB9KSwgY2hpbGRyZW5dXG4gIH0pO1xuICBpZiAoIVRyYW5zaXRpb24pIHJldHVybiBzaG93ID8gYWxlcnQgOiBudWxsO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbiwge1xuICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiB1bmRlZmluZWQsXG4gICAgaW46IHNob3csXG4gICAgY2hpbGRyZW46IGFsZXJ0XG4gIH0pO1xufSk7XG5BbGVydC5kaXNwbGF5TmFtZSA9ICdBbGVydCc7XG5BbGVydC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKEFsZXJ0LCB7XG4gIExpbms6IEFsZXJ0TGluayxcbiAgSGVhZGluZzogQWxlcnRIZWFkaW5nXG59KTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBBbGVydCBmcm9tIFwicmVhY3QtYm9vdHN0cmFwL0FsZXJ0XCI7XG5cbmV4cG9ydCBjb25zdCBNZXNzYWdlID0gKHtcbiAgaGVhZGluZyxcbiAgaWNvbixcbiAgdHlwZSxcbiAgZGlzbWlzc2libGUsXG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG59KSA9PiB7XG4gIHZhciB2YXJpYW50ID0gXCJwcmltYXJ5XCI7XG4gIGNvbnN0IHNob3dJY29uID0gaWNvbiA9PT0gdW5kZWZpbmVkIHx8IGljb247XG4gIHZhciBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLWNpcmNsZVwiO1xuICB2YXIgW3Nob3csIHNldFNob3ddID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgaWYgKCFzaG93KSB7XG4gICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCAvPjtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcImVycm9yXCIpIHtcbiAgICB2YXJpYW50ID0gXCJkYW5nZXJcIjtcbiAgICBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWZpbGxcIjtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcIndhcm5pbmdcIikge1xuICAgIHZhcmlhbnQgPSBcIndhcm5pbmdcIjtcbiAgICBpY29uQ2xhc3MgPSBcImJpIGJpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICB2YXJpYW50ID0gXCJzdWNjZXNzXCI7XG4gICAgaWNvbkNsYXNzID0gXCJiaSBiaS1jaGVjay1jaXJjbGVcIjtcbiAgfVxuXG4gIGljb24gPSBzaG93SWNvbiAmJiAoaWNvbiB8fCA8aSBjbGFzc05hbWU9e2Ake2ljb25DbGFzc30gbWUtMiBtLTBgfT48L2k+KTtcblxuICByZXR1cm4gKFxuICAgIDxBbGVydFxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICB2YXJpYW50PXt2YXJpYW50fVxuICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvdyhmYWxzZSl9XG4gICAgICBkaXNtaXNzaWJsZT17ZGlzbWlzc2libGV9XG4gICAgPlxuICAgICAge2hlYWRpbmcgJiYgKFxuICAgICAgICA8QWxlcnQuSGVhZGluZz5cbiAgICAgICAgICB7aWNvbn1cbiAgICAgICAgICB7aGVhZGluZ31cbiAgICAgICAgPC9BbGVydC5IZWFkaW5nPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtLTBcIj5cbiAgICAgICAgeyFoZWFkaW5nICYmIGljb259XG4gICAgICAgIDxkaXY+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9BbGVydD5cbiAgKTtcbn07XG5cbk1lc3NhZ2UucHJvcFR5cGVzID0ge1xuICBoZWFkaW5nOiBQcm9wVHlwZXMubm9kZSxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZihbXCJlcnJvclwiLCBcIndhcm5pbmdcIiwgXCJzdWNjZXNzXCIsIFwiaW5mb1wiXSksXG4gIGRpc21pc3NpYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBFcnJvck1lc3NhZ2UgPSAoeyBoZWFkaW5nLCBlcnJvciB9KSA9PiB7XG4gIGNvbnNvbGUud2FybihlcnJvcik7XG4gIGhlYWRpbmcgPSBoZWFkaW5nIHx8IFwiRXJyb3JcIjtcblxuICB2YXIgbWVzc2FnZTtcbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gXCJzdHJpbmdcIiB8fCBlcnJvciBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgIG1lc3NhZ2UgPSBlcnJvcjtcbiAgfSBlbHNlIGlmIChcbiAgICBlcnJvci5tZXNzYWdlICYmXG4gICAgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IGVycm9yLm1lc3NhZ2UgaW5zdGFuY2VvZiBTdHJpbmcpXG4gICkge1xuICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShlcnJvcik7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxNZXNzYWdlIGNsYXNzTmFtZT1cIm10LTMgbXgtM1wiIGhlYWRpbmc9e2hlYWRpbmd9IHR5cGU9XCJlcnJvclwiIGRpc21pc3NpYmxlPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9NZXNzYWdlPlxuICApO1xufTtcblxuRXJyb3JNZXNzYWdlLnByb3BUeXBlcyA9IHtcbiAgaGVhZGluZzogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuaW5zdGFuY2VPZihFcnJvcildKSxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5mbyA9ICh7IGNsYXNzTmFtZSwgc2l6ZSwgY29sb3IsIHRpdGxlIH0pID0+IHtcbiAgdmFyIGNsYXNzZXMgPSBcInNwaW5uZXItYm9yZGVyXCI7XG5cbiAgaWYgKGNsYXNzTmFtZSkge1xuICAgIGNsYXNzZXMgKz0gXCIgXCIgKyBjbGFzc05hbWU7XG4gIH1cbiAgaWYgKHNpemUgPT09IFwic21cIikge1xuICAgIGNsYXNzZXMgKz0gXCIgc3Bpbm5lci1ib3JkZXItc21cIjtcbiAgfVxuICBpZiAoY29sb3IgPT09IFwicHJpbWFyeVwiKSB7XG4gICAgY2xhc3NlcyArPSBcIiB0ZXh0LXByaW1hcnlcIjtcbiAgfSBlbHNlIGlmIChjb2xvciA9PT0gXCJzZWNvbmRhcnlcIikge1xuICAgIGNsYXNzZXMgKz0gXCIgdGV4dC1zZWNvbmRhcnlcIjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPHNwYW4gdGl0bGU9e3RpdGxlfSBjbGFzc05hbWU9e2NsYXNzZXN9IHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICApO1xufTtcblxuTG9hZGluZ0luZm8ucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJzbVwiXSksXG4gIGNvbG9yOiBQcm9wVHlwZXMub25lT2YoW1wicHJpbWFyeVwiLCBcInNlY29uZGFyeVwiXSksXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcblxuTG9hZGluZ0luZm8uZGVmYXVsdFByb3BzID0ge1xuICB0aXRsZTogXCJMb2FkaW5nLi4uXCIsXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBJbmZvU2VydmljZSB9IGZyb20gXCIuLi9JbmZvU2VydmljZVwiO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCIuL01lc3NhZ2VcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcblxuYXN5bmMgZnVuY3Rpb24gX2xvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCkge1xuICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gIHJldHVybiBhd2FpdCBzZXJ2aWNlLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChzaG93TG9hZGluZ0luZm8sIHRoZW4sIG9uRXJyb3IpIHtcbiAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2hvd0xvYWRpbmdJbmZvKCk7XG4gICAgY29uc3QgdXNlcm5hbWUgPSBldmVudC50YXJnZXQudXNlcm5hbWUudmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBldmVudC50YXJnZXQucGFzc3dvcmQudmFsdWU7XG5cbiAgICAvLyBkZWFjdGl2ZSBsb2dpbiBmb3JtIChubyByZXRyeSB1bnRpbCB0aGUgc2VydmVyIGFuc3dlciBpcyB0aGVyZSBvciBhXG4gICAgLy8gdGltZW91dCkuXG4gICAgZXZlbnQudGFyZ2V0LnN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICB2YXIgbG9naW5fcHJvbWlzZSA9IF9sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIC8vIGFjdGl2ZSBsb2dpbiBhZ2FpblxuICAgICAgZXZlbnQudGFyZ2V0LnN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIGxvZ2luX3Byb21pc2UgPSBsb2dpbl9wcm9taXNlLnRoZW4odGhlbik7XG4gICAgfVxuXG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIGxvZ2luX3Byb21pc2UuY2F0Y2gob25FcnJvcik7XG4gICAgfVxuICB9O1xufVxuXG5jbGFzcyBUaW1lb3V0IHtcbiAgY29uc3RydWN0b3IoY2IsIG1zKSB7XG4gICAgdGhpcy5jYiA9IGNiO1xuICAgIG1zID0gTnVtYmVyLmlzSW50ZWdlcihtcykgPyBtcyA6IDEwMDAwO1xuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jYiwgbXMpO1xuICB9XG4gIHJlc2V0KG1zKSB7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIGlmICh0aGlzLmNiKSB7XG4gICAgICBtcyA9IE51bWJlci5pc0ludGVnZXIobXMpID8gbXMgOiAyMDAwMDtcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5jYiwgbXMpO1xuICAgIH1cbiAgfVxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgIHRoaXMudGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgc3RvcCgpIHtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5jYiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5jb25zdCBMb2dpbkZvcm1JbnB1dHMgPSAoeyB0aGVuLCBvbkVycm9yLCBzaG93TWVzc2FnZXMsIHNob3dMb2FkaW5nSW5mbyB9KSA9PiB7XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgVGltZW91dChzaG93TWVzc2FnZXMpO1xuICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHRpbWVvdXQucGF1c2UoKTtcbiAgY29uc3Qgb25CbHVyID0gKCkgPT4gdGltZW91dC5yZXNldCgpO1xuICBjb25zdCBvbkNsaWNrID0gKCkgPT4gdGltZW91dC5zdG9wKCk7XG5cbiAgY29uc3Qgd3JhcHBlZE9uRXJyb3IgPSBhc3luYyAoZXJyb3IpID0+IHtcbiAgICBzaG93TWVzc2FnZXMoKTtcbiAgICBpZiAob25FcnJvcikge1xuICAgICAgcmV0dXJuIGF3YWl0IG9uRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtXG4gICAgICBjbGFzc05hbWU9XCJtLTBcIlxuICAgICAgb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdChzaG93TG9hZGluZ0luZm8sIHRoZW4sIHdyYXBwZWRPbkVycm9yKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBnLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVXNlcm5hbWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlVzZXJuYW1lXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBhc3N3b3JkXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQYXNzd29yZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTFcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbmF2YmFyLWJ0biBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICBuYW1lPVwic3VibWl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIExvZ2luXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuTG9naW5Gb3JtSW5wdXRzLnByb3BUeXBlcyA9IHtcbiAgdGhlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dNZXNzYWdlczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2hvd0xvYWRpbmdJbmZvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuY29uc3QgTG9naW5Gb3JtTWVzc2FnZSA9ICh7IG1lc3NhZ2UsIG1lc3NhZ2VUeXBlLCBzaG93SW5wdXRzIH0pID0+IHtcbiAgbWVzc2FnZSA9IG1lc3NhZ2UgPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tYXV0b1wiPlxuICAgICAgPE1lc3NhZ2UgdHlwZT17bWVzc2FnZVR5cGV9PnttZXNzYWdlfTwvTWVzc2FnZT5cbiAgICA8L2Rpdj5cbiAgKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYWxpZ24taXRlbXMtY2VudGVyIHJvdyBnLTNcIj5cbiAgICAgIHttZXNzYWdlfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tMVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbmF2YmFyLWJ0biBkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgbmFtZT1cInNob3dcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9e3Nob3dJbnB1dHN9XG4gICAgICAgID5cbiAgICAgICAgICBMb2dpblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuTG9naW5Gb3JtTWVzc2FnZS5wcm9wVHlwZXMgPSB7XG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5ub2RlLFxuICBtZXNzYWdlVHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcImVycm9yXCIsIFwid2FybmluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJpbmZvXCJdKSxcbiAgc2hvd0lucHV0czogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBjb25zdCBMb2dpbkZvcm0gPSAoeyB0aGVuLCBvbkVycm9yLCBtZXNzYWdlLCBtZXNzYWdlVHlwZSB9KSA9PiB7XG4gIGNvbnN0IFtzaG93SW5wdXRzLCBzZXRTaG93SW5wdXRzXSA9IHVzZVN0YXRlKFwibWVzc2FnZXNcIik7XG5cbiAgaWYgKHNob3dJbnB1dHMgPT09IFwiaW5wdXRzXCIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPExvZ2luRm9ybUlucHV0c1xuICAgICAgICB0aGVuPXt0aGVufVxuICAgICAgICBvbkVycm9yPXtvbkVycm9yfVxuICAgICAgICBzaG93TWVzc2FnZXM9eygpID0+IHNldFNob3dJbnB1dHMoXCJtZXNzYWdlc1wiKX1cbiAgICAgICAgc2hvd0xvYWRpbmdJbmZvPXsoKSA9PiBzZXRTaG93SW5wdXRzKFwibG9hZGluZ1wiKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSBlbHNlIGlmIChzaG93SW5wdXRzID09PSBcImxvYWRpbmdcIikge1xuICAgIHJldHVybiA8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxMb2dpbkZvcm1NZXNzYWdlXG4gICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgbWVzc2FnZVR5cGU9e21lc3NhZ2VUeXBlfVxuICAgICAgc2hvd0lucHV0cz17KCkgPT4gc2V0U2hvd0lucHV0cyhcImlucHV0c1wiKX1cbiAgICAvPlxuICApO1xufTtcblxuTG9naW5Gb3JtLnByb3BUeXBlcyA9IHtcbiAgdGhlbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5ub2RlLFxuICBtZXNzYWdlVHlwZTogUHJvcFR5cGVzLm9uZU9mKFtcImVycm9yXCIsIFwid2FybmluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJpbmZvXCJdKSxcbn07XG4iLCJ2YXIgdG9BcnJheSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIFtdLnNsaWNlKTtcbi8qKlxuICogUnVucyBgcXVlcnlTZWxlY3RvckFsbGAgb24gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIHNlbGVjdG9yIHRoZSBzZWxlY3RvclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHFzYShlbGVtZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gdG9BcnJheShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbn0iLCJpbXBvcnQgeyB1c2VSZWR1Y2VyIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBhIGNvbXBvbmVudCB1cGRhdGUuIHRoZSBob29rIGVxdWl2YWxlbnQgdG9cbiAqIGB0aGlzLmZvcmNlVXBkYXRlKClgIGluIGEgY2xhc3MgY29tcG9uZW50LiBJbiBtb3N0IGNhc2VzIHVzaW5nIGEgc3RhdGUgdmFsdWUgZGlyZWN0bHlcbiAqIGlzIHByZWZlcmFibGUgYnV0IG1heSBiZSByZXF1aXJlZCBpbiBzb21lIGFkdmFuY2VkIHVzYWdlcyBvZiByZWZzIGZvciBpbnRlcm9wIG9yXG4gKiB3aGVuIGRpcmVjdCBET00gbWFuaXB1bGF0aW9uIGlzIHJlcXVpcmVkLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gKlxuICogY29uc3QgdXBkYXRlT25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAqICBmb3JjZVVwZGF0ZSgpXG4gKiB9LCBbZm9yY2VVcGRhdGVdKVxuICpcbiAqIHJldHVybiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXt1cGRhdGVPbkNsaWNrfT5IaSB0aGVyZTwvYnV0dG9uPlxuICogYGBgXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRm9yY2VVcGRhdGUoKSB7XG4gIC8vIFRoZSB0b2dnbGluZyBzdGF0ZSB2YWx1ZSBpcyBkZXNpZ25lZCB0byBkZWZlYXQgUmVhY3Qgb3B0aW1pemF0aW9ucyBmb3Igc2tpcHBpbmdcbiAgLy8gdXBkYXRlcyB3aGVuIHRoZXkgYXJlIHN0cmljdGluZyBlcXVhbCB0byB0aGUgbGFzdCBzdGF0ZSB2YWx1ZVxuICB2YXIgX3VzZVJlZHVjZXIgPSB1c2VSZWR1Y2VyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHJldHVybiAhc3RhdGU7XG4gIH0sIGZhbHNlKSxcbiAgICAgIGRpc3BhdGNoID0gX3VzZVJlZHVjZXJbMV07XG5cbiAgcmV0dXJuIGRpc3BhdGNoO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Db250ZXh0OyIsInZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBmaW5kKGl0ZXIsIHRhciwga2V5KSB7XG5cdGZvciAoa2V5IG9mIGl0ZXIua2V5cygpKSB7XG5cdFx0aWYgKGRlcXVhbChrZXksIHRhcikpIHJldHVybiBrZXk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcXVhbChmb28sIGJhcikge1xuXHR2YXIgY3RvciwgbGVuLCB0bXA7XG5cdGlmIChmb28gPT09IGJhcikgcmV0dXJuIHRydWU7XG5cblx0aWYgKGZvbyAmJiBiYXIgJiYgKGN0b3I9Zm9vLmNvbnN0cnVjdG9yKSA9PT0gYmFyLmNvbnN0cnVjdG9yKSB7XG5cdFx0aWYgKGN0b3IgPT09IERhdGUpIHJldHVybiBmb28uZ2V0VGltZSgpID09PSBiYXIuZ2V0VGltZSgpO1xuXHRcdGlmIChjdG9yID09PSBSZWdFeHApIHJldHVybiBmb28udG9TdHJpbmcoKSA9PT0gYmFyLnRvU3RyaW5nKCk7XG5cblx0XHRpZiAoY3RvciA9PT0gQXJyYXkpIHtcblx0XHRcdGlmICgobGVuPWZvby5sZW5ndGgpID09PSBiYXIubGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBkZXF1YWwoZm9vW2xlbl0sIGJhcltsZW5dKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVuID09PSAtMTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gU2V0KSB7XG5cdFx0XHRpZiAoZm9vLnNpemUgIT09IGJhci5zaXplKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGZvciAobGVuIG9mIGZvbykge1xuXHRcdFx0XHR0bXAgPSBsZW47XG5cdFx0XHRcdGlmICh0bXAgJiYgdHlwZW9mIHRtcCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0bXAgPSBmaW5kKGJhciwgdG1wKTtcblx0XHRcdFx0XHRpZiAoIXRtcCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghYmFyLmhhcyh0bXApKSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gTWFwKSB7XG5cdFx0XHRpZiAoZm9vLnNpemUgIT09IGJhci5zaXplKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGZvciAobGVuIG9mIGZvbykge1xuXHRcdFx0XHR0bXAgPSBsZW5bMF07XG5cdFx0XHRcdGlmICh0bXAgJiYgdHlwZW9mIHRtcCA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0bXAgPSBmaW5kKGJhciwgdG1wKTtcblx0XHRcdFx0XHRpZiAoIXRtcCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZGVxdWFsKGxlblsxXSwgYmFyLmdldCh0bXApKSkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKGN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG5cdFx0XHRmb28gPSBuZXcgVWludDhBcnJheShmb28pO1xuXHRcdFx0YmFyID0gbmV3IFVpbnQ4QXJyYXkoYmFyKTtcblx0XHR9IGVsc2UgaWYgKGN0b3IgPT09IERhdGFWaWV3KSB7XG5cdFx0XHRpZiAoKGxlbj1mb28uYnl0ZUxlbmd0aCkgPT09IGJhci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBmb28uZ2V0SW50OChsZW4pID09PSBiYXIuZ2V0SW50OChsZW4pKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoZm9vKSkge1xuXHRcdFx0aWYgKChsZW49Zm9vLmJ5dGVMZW5ndGgpID09PSBiYXIuYnl0ZUxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZm9vW2xlbl0gPT09IGJhcltsZW5dKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmICghY3RvciB8fCB0eXBlb2YgZm9vID09PSAnb2JqZWN0Jykge1xuXHRcdFx0bGVuID0gMDtcblx0XHRcdGZvciAoY3RvciBpbiBmb28pIHtcblx0XHRcdFx0aWYgKGhhcy5jYWxsKGZvbywgY3RvcikgJiYgKytsZW4gJiYgIWhhcy5jYWxsKGJhciwgY3RvcikpIHJldHVybiBmYWxzZTtcblx0XHRcdFx0aWYgKCEoY3RvciBpbiBiYXIpIHx8ICFkZXF1YWwoZm9vW2N0b3JdLCBiYXJbY3Rvcl0pKSByZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXMoYmFyKS5sZW5ndGggPT09IGxlbjtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZm9vICE9PSBmb28gJiYgYmFyICE9PSBiYXI7XG59XG4iLCJpbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVBU3RyaW5nKCkge1xuICB2YXIgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG5cbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5icmFuZHMgJiYgQXJyYXkuaXNBcnJheSh1YURhdGEuYnJhbmRzKSkge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXlvdXRWaWV3cG9ydCgpIHtcbiAgcmV0dXJuICEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuLi9kb20tdXRpbHMvY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgd2l0aGluIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi4vdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuLi91dGlscy9leHBhbmRUb0hhc2hNYXAuanNcIjtcbmltcG9ydCB7IGxlZnQsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdG9wLCBib3R0b20gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdG9QYWRkaW5nT2JqZWN0ID0gZnVuY3Rpb24gdG9QYWRkaW5nT2JqZWN0KHBhZGRpbmcsIHN0YXRlKSB7XG4gIHBhZGRpbmcgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBhZGRpbmcoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiBwYWRkaW5nO1xuICByZXR1cm4gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbn07XG5cbmZ1bmN0aW9uIGFycm93KF9yZWYpIHtcbiAgdmFyIF9zdGF0ZSRtb2RpZmllcnNEYXRhJDtcblxuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGlzVmVydGljYWwgPSBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgaWYgKCFhcnJvd0VsZW1lbnQgfHwgIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcGFkZGluZ09iamVjdCA9IHRvUGFkZGluZ09iamVjdChvcHRpb25zLnBhZGRpbmcsIHN0YXRlKTtcbiAgdmFyIGFycm93UmVjdCA9IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KTtcbiAgdmFyIG1pblByb3AgPSBheGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICB2YXIgbWF4UHJvcCA9IGF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICB2YXIgZW5kRGlmZiA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtsZW5dICsgc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnBvcHBlcltsZW5dO1xuICB2YXIgc3RhcnREaWZmID0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KGFycm93RWxlbWVudCk7XG4gIHZhciBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBheGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFdpZHRoIHx8IDAgOiAwO1xuICB2YXIgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7IC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgcG9wcGVyIGlmIHRoZSBjZW50ZXIgcG9pbnQgaXNcbiAgLy8gb3V0c2lkZSBvZiB0aGUgcG9wcGVyIGJvdW5kc1xuXG4gIHZhciBtaW4gPSBwYWRkaW5nT2JqZWN0W21pblByb3BdO1xuICB2YXIgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93UmVjdFtsZW5dIC0gcGFkZGluZ09iamVjdFttYXhQcm9wXTtcbiAgdmFyIGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dSZWN0W2xlbl0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gIHZhciBvZmZzZXQgPSB3aXRoaW4obWluLCBjZW50ZXIsIG1heCk7IC8vIFByZXZlbnRzIGJyZWFraW5nIHN5bnRheCBoaWdobGlnaHRpbmcuLi5cblxuICB2YXIgYXhpc1Byb3AgPSBheGlzO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gKF9zdGF0ZSRtb2RpZmllcnNEYXRhJCA9IHt9LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSRbYXhpc1Byb3BdID0gb2Zmc2V0LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQuY2VudGVyT2Zmc2V0ID0gb2Zmc2V0IC0gY2VudGVyLCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQpO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQsXG4gICAgICBhcnJvd0VsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyAnW2RhdGEtcG9wcGVyLWFycm93XScgOiBfb3B0aW9ucyRlbGVtZW50O1xuXG4gIGlmIChhcnJvd0VsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfSAvLyBDU1Mgc2VsZWN0b3JcblxuXG4gIGlmICh0eXBlb2YgYXJyb3dFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICBpZiAoIWFycm93RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoYXJyb3dFbGVtZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIGVsZW1lbnQgbXVzdCBiZSBhbiBIVE1MRWxlbWVudCAobm90IGFuIFNWR0VsZW1lbnQpLicsICdUbyB1c2UgYW4gU1ZHIGFycm93LCB3cmFwIGl0IGluIGFuIEhUTUxFbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzJywgJ3RoZSBhcnJvdy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29udGFpbnMoc3RhdGUuZWxlbWVudHMucG9wcGVyLCBhcnJvd0VsZW1lbnQpKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIG1vZGlmaWVyXFwncyBgZWxlbWVudGAgbXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBwb3BwZXInLCAnZWxlbWVudC4nXS5qb2luKCcgJykpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkgPSBnZXRDb21wdXRlZFN0eWxlKHN0YXRlLmVsZW1lbnRzLnBvcHBlcikudHJhbnNpdGlvblByb3BlcnR5IHx8ICcnO1xuXG4gICAgaWYgKGFkYXB0aXZlICYmIFsndHJhbnNmb3JtJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gdHJhbnNpdGlvblByb3BlcnR5LmluZGV4T2YocHJvcGVydHkpID49IDA7XG4gICAgfSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogRGV0ZWN0ZWQgQ1NTIHRyYW5zaXRpb25zIG9uIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nJywgJ0NTUyBwcm9wZXJ0aWVzOiBcInRyYW5zZm9ybVwiLCBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLicsICdcXG5cXG4nLCAnRGlzYWJsZSB0aGUgXCJjb21wdXRlU3R5bGVzXCIgbW9kaWZpZXJcXCdzIGBhZGFwdGl2ZWAgb3B0aW9uIHRvIGFsbG93JywgJ2ZvciBzbW9vdGggdHJhbnNpdGlvbnMsIG9yIHJlbW92ZSB0aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlIENTUycsICd0cmFuc2l0aW9uIGRlY2xhcmF0aW9uIG9uIHRoZSBwb3BwZXIgZWxlbWVudCBpZiBvbmx5IHRyYW5zaXRpb25pbmcnLCAnb3BhY2l0eSBvciBiYWNrZ3JvdW5kLWNvbG9yIGZvciBleGFtcGxlLicsICdcXG5cXG4nLCAnV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBwb3BwZXIgZWxlbWVudCBhcyBhIHdyYXBwZXIgYXJvdW5kIGFuIGlubmVyJywgJ2VsZW1lbnQgdGhhdCBjYW4gaGF2ZSBhbnkgQ1NTIHByb3BlcnR5IHRyYW5zaXRpb25lZCBmb3IgYW5pbWF0aW9ucy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCBhcnJvdyBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93JztcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcyc7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycyc7XG5pbXBvcnQgZmxpcCBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAnO1xuaW1wb3J0IGhpZGUgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlJztcbmltcG9ydCBvZmZzZXQgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQnO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzJztcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSAnQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cnO1xuaW1wb3J0IHsgcGxhY2VtZW50cyB9IGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcyc7XG5pbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IgfSBmcm9tICdAcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLWJhc2UnO1xuXG4vLyBGb3IgdGhlIGNvbW1vbiBKUyBidWlsZCB3ZSB3aWxsIHR1cm4gdGhpcyBmaWxlIGludG8gYSBidW5kbGUgd2l0aCBubyBpbXBvcnRzLlxuLy8gVGhpcyBpcyBiL2MgdGhlIFBvcHBlciBsaWIgaXMgYWxsIGVzbSBmaWxlcywgYW5kIHdvdWxkIGJyZWFrIGluIGEgY29tbW9uIGpzIG9ubHkgZW52aXJvbm1lbnRcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3BwZXIgPSBwb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBbaGlkZSwgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgZXZlbnRMaXN0ZW5lcnMsIG9mZnNldCwgZmxpcCwgcHJldmVudE92ZXJmbG93LCBhcnJvd11cbn0pO1xuZXhwb3J0IHsgcGxhY2VtZW50cyB9OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZUJ5TmFtZShtb2RpZmllcnMpIHtcbiAgdmFyIG1lcmdlZCA9IG1vZGlmaWVycy5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZCwgY3VycmVudCkge1xuICAgIHZhciBleGlzdGluZyA9IG1lcmdlZFtjdXJyZW50Lm5hbWVdO1xuICAgIG1lcmdlZFtjdXJyZW50Lm5hbWVdID0gZXhpc3RpbmcgPyBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZywgY3VycmVudCwge1xuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3Rpbmcub3B0aW9ucywgY3VycmVudC5vcHRpb25zKSxcbiAgICAgIGRhdGE6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLmRhdGEsIGN1cnJlbnQuZGF0YSlcbiAgICB9KSA6IGN1cnJlbnQ7XG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfSwge30pOyAvLyBJRTExIGRvZXMgbm90IHN1cHBvcnQgT2JqZWN0LnZhbHVlc1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhtZXJnZWQpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIG1lcmdlZFtrZXldO1xuICB9KTtcbn0iLCJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCJjb25zdCBfZXhjbHVkZWQgPSBbXCJlbmFibGVkXCIsIFwicGxhY2VtZW50XCIsIFwic3RyYXRlZ3lcIiwgXCJtb2RpZmllcnNcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZGVxdWFsIH0gZnJvbSAnZGVxdWFsJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB7IGNyZWF0ZVBvcHBlciB9IGZyb20gJy4vcG9wcGVyJztcbmNvbnN0IGRpc2FibGVkQXBwbHlTdHlsZXNNb2RpZmllciA9IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogZmFsc2UsXG4gIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gIGZuOiAoKSA9PiB1bmRlZmluZWRcbn07XG5cbi8vIHVudGlsIGRvY2pzIHN1cHBvcnRzIHR5cGUgZXhwb3J0cy4uLlxuXG5jb25zdCBhcmlhRGVzY3JpYmVkQnlNb2RpZmllciA9IHtcbiAgbmFtZTogJ2FyaWFEZXNjcmliZWRCeScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYWZ0ZXJXcml0ZScsXG4gIGVmZmVjdDogKHtcbiAgICBzdGF0ZVxuICB9KSA9PiAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcmVmZXJlbmNlLFxuICAgICAgcG9wcGVyXG4gICAgfSA9IHN0YXRlLmVsZW1lbnRzO1xuICAgIGlmICgncmVtb3ZlQXR0cmlidXRlJyBpbiByZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IGlkcyA9IChyZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykgfHwgJycpLnNwbGl0KCcsJykuZmlsdGVyKGlkID0+IGlkLnRyaW0oKSAhPT0gcG9wcGVyLmlkKTtcbiAgICAgIGlmICghaWRzLmxlbmd0aCkgcmVmZXJlbmNlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO2Vsc2UgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcy5qb2luKCcsJykpO1xuICAgIH1cbiAgfSxcbiAgZm46ICh7XG4gICAgc3RhdGVcbiAgfSkgPT4ge1xuICAgIHZhciBfcG9wcGVyJGdldEF0dHJpYnV0ZTtcbiAgICBjb25zdCB7XG4gICAgICBwb3BwZXIsXG4gICAgICByZWZlcmVuY2VcbiAgICB9ID0gc3RhdGUuZWxlbWVudHM7XG4gICAgY29uc3Qgcm9sZSA9IChfcG9wcGVyJGdldEF0dHJpYnV0ZSA9IHBvcHBlci5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wb3BwZXIkZ2V0QXR0cmlidXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHBvcHBlci5pZCAmJiByb2xlID09PSAndG9vbHRpcCcgJiYgJ3NldEF0dHJpYnV0ZScgaW4gcmVmZXJlbmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSByZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgICBpZiAoaWRzICYmIGlkcy5zcGxpdCgnLCcpLmluZGV4T2YocG9wcGVyLmlkKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScsIGlkcyA/IGAke2lkc30sJHtwb3BwZXIuaWR9YCA6IHBvcHBlci5pZCk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgRU1QVFlfTU9ESUZJRVJTID0gW107XG4vKipcbiAqIFBvc2l0aW9uIGFuIGVsZW1lbnQgcmVsYXRpdmUgc29tZSByZWZlcmVuY2UgZWxlbWVudCB1c2luZyBQb3BwZXIuanNcbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlRWxlbWVudFxuICogQHBhcmFtIHBvcHBlckVsZW1lbnRcbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgIG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0PX0gICAgIG9wdGlvbnMubW9kaWZpZXJzIFBvcHBlci5qcyBtb2RpZmllcnNcbiAqIEBwYXJhbSB7Ym9vbGVhbj19ICAgIG9wdGlvbnMuZW5hYmxlZCB0b2dnbGUgdGhlIHBvcHBlciBmdW5jdGlvbmFsaXR5IG9uL29mZlxuICogQHBhcmFtIHtzdHJpbmc9fSAgICAgb3B0aW9ucy5wbGFjZW1lbnQgVGhlIHBvcHBlciBlbGVtZW50IHBsYWNlbWVudCByZWxhdGl2ZSB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gICAgIG9wdGlvbnMuc3RyYXRlZ3kgdGhlIHBvc2l0aW9uaW5nIHN0cmF0ZWd5XG4gKiBAcGFyYW0ge2Z1bmN0aW9uPX0gICBvcHRpb25zLm9uQ3JlYXRlIGNhbGxlZCB3aGVuIHRoZSBwb3BwZXIgaXMgY3JlYXRlZFxuICogQHBhcmFtIHtmdW5jdGlvbj19ICAgb3B0aW9ucy5vblVwZGF0ZSBjYWxsZWQgd2hlbiB0aGUgcG9wcGVyIGlzIHVwZGF0ZWRcbiAqXG4gKiBAcmV0dXJucyB7VXNlUG9wcGVyU3RhdGV9IFRoZSBwb3BwZXIgc3RhdGVcbiAqL1xuZnVuY3Rpb24gdXNlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnQsIF9yZWYgPSB7fSkge1xuICBsZXQge1xuICAgICAgZW5hYmxlZCA9IHRydWUsXG4gICAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICAgIG1vZGlmaWVycyA9IEVNUFRZX01PRElGSUVSU1xuICAgIH0gPSBfcmVmLFxuICAgIGNvbmZpZyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHByZXZNb2RpZmllcnMgPSB1c2VSZWYobW9kaWZpZXJzKTtcbiAgY29uc3QgcG9wcGVySW5zdGFuY2VSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgdXBkYXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHZhciBfcG9wcGVySW5zdGFuY2VSZWYkY3U7XG4gICAgKF9wb3BwZXJJbnN0YW5jZVJlZiRjdSA9IHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcG9wcGVySW5zdGFuY2VSZWYkY3UudXBkYXRlKCk7XG4gIH0sIFtdKTtcbiAgY29uc3QgZm9yY2VVcGRhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdmFyIF9wb3BwZXJJbnN0YW5jZVJlZiRjdTI7XG4gICAgKF9wb3BwZXJJbnN0YW5jZVJlZiRjdTIgPSBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3BvcHBlckluc3RhbmNlUmVmJGN1Mi5mb3JjZVVwZGF0ZSgpO1xuICB9LCBbXSk7XG4gIGNvbnN0IFtwb3BwZXJTdGF0ZSwgc2V0U3RhdGVdID0gdXNlU2FmZVN0YXRlKHVzZVN0YXRlKHtcbiAgICBwbGFjZW1lbnQsXG4gICAgdXBkYXRlLFxuICAgIGZvcmNlVXBkYXRlLFxuICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgIHN0eWxlczoge1xuICAgICAgcG9wcGVyOiB7fSxcbiAgICAgIGFycm93OiB7fVxuICAgIH1cbiAgfSkpO1xuICBjb25zdCB1cGRhdGVNb2RpZmllciA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBuYW1lOiAndXBkYXRlU3RhdGVNb2RpZmllcicsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBwaGFzZTogJ3dyaXRlJyxcbiAgICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ10sXG4gICAgZm46ICh7XG4gICAgICBzdGF0ZVxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IHt9O1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIHN0eWxlc1tlbGVtZW50XSA9IHN0YXRlLnN0eWxlc1tlbGVtZW50XTtcbiAgICAgICAgYXR0cmlidXRlc1tlbGVtZW50XSA9IHN0YXRlLmF0dHJpYnV0ZXNbZWxlbWVudF07XG4gICAgICB9KTtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgdXBkYXRlLFxuICAgICAgICBmb3JjZVVwZGF0ZSxcbiAgICAgICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIFt1cGRhdGUsIGZvcmNlVXBkYXRlLCBzZXRTdGF0ZV0pO1xuICBjb25zdCBuZXh0TW9kaWZpZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFkZXF1YWwocHJldk1vZGlmaWVycy5jdXJyZW50LCBtb2RpZmllcnMpKSB7XG4gICAgICBwcmV2TW9kaWZpZXJzLmN1cnJlbnQgPSBtb2RpZmllcnM7XG4gICAgfVxuICAgIHJldHVybiBwcmV2TW9kaWZpZXJzLmN1cnJlbnQ7XG4gIH0sIFttb2RpZmllcnNdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgfHwgIWVuYWJsZWQpIHJldHVybjtcbiAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LnNldE9wdGlvbnMoe1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtb2RpZmllcnM6IFsuLi5uZXh0TW9kaWZpZXJzLCB1cGRhdGVNb2RpZmllciwgZGlzYWJsZWRBcHBseVN0eWxlc01vZGlmaWVyXVxuICAgIH0pO1xuICB9LCBbc3RyYXRlZ3ksIHBsYWNlbWVudCwgdXBkYXRlTW9kaWZpZXIsIGVuYWJsZWQsIG5leHRNb2RpZmllcnNdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZWQgfHwgcmVmZXJlbmNlRWxlbWVudCA9PSBudWxsIHx8IHBvcHBlckVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCA9IGNyZWF0ZVBvcHBlcihyZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50LCBPYmplY3QuYXNzaWduKHt9LCBjb25maWcsIHtcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbW9kaWZpZXJzOiBbLi4ubmV4dE1vZGlmaWVycywgYXJpYURlc2NyaWJlZEJ5TW9kaWZpZXIsIHVwZGF0ZU1vZGlmaWVyXVxuICAgIH0pKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LmRlc3Ryb3koKTtcbiAgICAgICAgcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2V0U3RhdGUocyA9PiBPYmplY3QuYXNzaWduKHt9LCBzLCB7XG4gICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgc3R5bGVzOiB7XG4gICAgICAgICAgICBwb3BwZXI6IHt9XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvLyBUaGlzIGlzIG9ubHkgcnVuIG9uY2UgdG8gX2NyZWF0ZV8gdGhlIHBvcHBlclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2VuYWJsZWQsIHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnRdKTtcbiAgcmV0dXJuIHBvcHBlclN0YXRlO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlUG9wcGVyOyIsImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1vdW50ZWQgZnJvbSAnLi91c2VNb3VudGVkJztcblxuZnVuY3Rpb24gdXNlU2FmZVN0YXRlKHN0YXRlKSB7XG4gIHZhciBpc01vdW50ZWQgPSB1c2VNb3VudGVkKCk7XG4gIHJldHVybiBbc3RhdGVbMF0sIHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuZXh0U3RhdGUpIHtcbiAgICBpZiAoIWlzTW91bnRlZCgpKSByZXR1cm47XG4gICAgcmV0dXJuIHN0YXRlWzFdKG5leHRTdGF0ZSk7XG4gIH0sIFtpc01vdW50ZWQsIHN0YXRlWzFdXSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VTYWZlU3RhdGU7IiwiLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSwgbm8tY29uZC1hc3NpZ24gKi9cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gZWxlbWVudCBjb250YWlucyBhbm90aGVyIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IGVsZW1lbnRcbiAqIEBwYXJhbSBub2RlIHRoZSBlbGVtZW50IHRvIGNoZWNrXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gSFRNTCBET00gYW5kIFNWRyBET00gbWF5IGhhdmUgZGlmZmVyZW50IHN1cHBvcnQgbGV2ZWxzLFxuICAvLyBzbyB3ZSBuZWVkIHRvIGNoZWNrIG9uIGNvbnRleHQgaW5zdGVhZCBvZiBhIGRvY3VtZW50IHJvb3QgZWxlbWVudC5cbiAgaWYgKGNvbnRleHQuY29udGFpbnMpIHJldHVybiBjb250ZXh0LmNvbnRhaW5zKG5vZGUpO1xuICBpZiAoY29udGV4dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikgcmV0dXJuIGNvbnRleHQgPT09IG5vZGUgfHwgISEoY29udGV4dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihub2RlKSAmIDE2KTtcbn0iLCJpbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnO1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nO1xuaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvb3duZXJEb2N1bWVudCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnO1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuZnVuY3Rpb24gaXNMZWZ0Q2xpY2tFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQuYnV0dG9uID09PSAwO1xufVxuZnVuY3Rpb24gaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiAhIShldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5KTtcbn1cbmV4cG9ydCBjb25zdCBnZXRSZWZUYXJnZXQgPSByZWYgPT4gcmVmICYmICgnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWYpO1xuY29uc3QgSW5pdGlhbFRyaWdnZXJFdmVudHMgPSB7XG4gIGNsaWNrOiAnbW91c2Vkb3duJyxcbiAgbW91c2V1cDogJ21vdXNlZG93bicsXG4gIHBvaW50ZXJ1cDogJ3BvaW50ZXJkb3duJ1xufTtcblxuLyoqXG4gKiBUaGUgYHVzZUNsaWNrT3V0c2lkZWAgaG9vayByZWdpc3RlcnMgeW91ciBjYWxsYmFjayBvbiB0aGUgZG9jdW1lbnQgdGhhdCBmaXJlc1xuICogd2hlbiBhIHBvaW50ZXIgZXZlbnQgaXMgcmVnaXN0ZXJlZCBvdXRzaWRlIG9mIHRoZSBwcm92aWRlZCByZWYgb3IgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge1JlZjxIVE1MRWxlbWVudD58IEhUTUxFbGVtZW50fSByZWYgIFRoZSBlbGVtZW50IGJvdW5kYXJ5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkNsaWNrT3V0c2lkZVxuICogQHBhcmFtIHtvYmplY3Q9fSAgb3B0aW9uc1xuICogQHBhcmFtIHtib29sZWFuPX0gb3B0aW9ucy5kaXNhYmxlZFxuICogQHBhcmFtIHtzdHJpbmc9fSAgb3B0aW9ucy5jbGlja1RyaWdnZXIgVGhlIERPTSBldmVudCBuYW1lIChjbGljaywgbW91c2Vkb3duLCBldGMpIHRvIGF0dGFjaCBsaXN0ZW5lcnMgb25cbiAqL1xuZnVuY3Rpb24gdXNlQ2xpY2tPdXRzaWRlKHJlZiwgb25DbGlja091dHNpZGUgPSBub29wLCB7XG4gIGRpc2FibGVkLFxuICBjbGlja1RyaWdnZXIgPSAnY2xpY2snXG59ID0ge30pIHtcbiAgY29uc3QgcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgd2FpdGluZ0ZvclRyaWdnZXIgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVNb3VzZUNhcHR1cmUgPSB1c2VDYWxsYmFjayhlID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZ2V0UmVmVGFyZ2V0KHJlZik7XG4gICAgd2FybmluZyghIWN1cnJlbnRUYXJnZXQsICdDbGlja091dHNpZGUgY2FwdHVyZWQgYSBjbG9zZSBldmVudCBidXQgZG9lcyBub3QgaGF2ZSBhIHJlZiB0byBjb21wYXJlIGl0IHRvLiAnICsgJ3VzZUNsaWNrT3V0c2lkZSgpLCBzaG91bGQgYmUgcGFzc2VkIGEgcmVmIHRoYXQgcmVzb2x2ZXMgdG8gYSBET00gbm9kZScpO1xuICAgIHByZXZlbnRNb3VzZUNsaWNrT3V0c2lkZVJlZi5jdXJyZW50ID0gIWN1cnJlbnRUYXJnZXQgfHwgaXNNb2RpZmllZEV2ZW50KGUpIHx8ICFpc0xlZnRDbGlja0V2ZW50KGUpIHx8ICEhY29udGFpbnMoY3VycmVudFRhcmdldCwgZS50YXJnZXQpIHx8IHdhaXRpbmdGb3JUcmlnZ2VyLmN1cnJlbnQ7XG4gICAgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudCA9IGZhbHNlO1xuICB9LCBbcmVmXSk7XG4gIGNvbnN0IGhhbmRsZUluaXRpYWxNb3VzZSA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IGdldFJlZlRhcmdldChyZWYpO1xuICAgIGlmIChjdXJyZW50VGFyZ2V0ICYmIGNvbnRhaW5zKGN1cnJlbnRUYXJnZXQsIGUudGFyZ2V0KSkge1xuICAgICAgd2FpdGluZ0ZvclRyaWdnZXIuY3VycmVudCA9IHRydWU7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlTW91c2UgPSB1c2VFdmVudENhbGxiYWNrKGUgPT4ge1xuICAgIGlmICghcHJldmVudE1vdXNlQ2xpY2tPdXRzaWRlUmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uQ2xpY2tPdXRzaWRlKGUpO1xuICAgIH1cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkIHx8IHJlZiA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQoZ2V0UmVmVGFyZ2V0KHJlZikpO1xuXG4gICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgZXZlbnQgdG8gYXZvaWQgdHJpZ2dlcmluZyBoYW5kbGVycyBpbW1lZGlhdGVseVxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAwNzRcbiAgICBsZXQgY3VycmVudEV2ZW50ID0gKGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLmV2ZW50O1xuICAgIGxldCByZW1vdmVJbml0aWFsVHJpZ2dlckxpc3RlbmVyID0gbnVsbDtcbiAgICBpZiAoSW5pdGlhbFRyaWdnZXJFdmVudHNbY2xpY2tUcmlnZ2VyXSkge1xuICAgICAgcmVtb3ZlSW5pdGlhbFRyaWdnZXJMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIEluaXRpYWxUcmlnZ2VyRXZlbnRzW2NsaWNrVHJpZ2dlcl0sIGhhbmRsZUluaXRpYWxNb3VzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gVXNlIGNhcHR1cmUgZm9yIHRoaXMgbGlzdGVuZXIgc28gaXQgZmlyZXMgYmVmb3JlIFJlYWN0J3MgbGlzdGVuZXIsIHRvXG4gICAgLy8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBjb250YWlucygpIGNoZWNrIGJlbG93IGlmIHRoZSB0YXJnZXQgRE9NXG4gICAgLy8gZWxlbWVudCBpcyByZW1vdmVkIGluIHRoZSBSZWFjdCBtb3VzZSBjYWxsYmFjay5cbiAgICBjb25zdCByZW1vdmVNb3VzZUNhcHR1cmVMaXN0ZW5lciA9IGxpc3Rlbihkb2MsIGNsaWNrVHJpZ2dlciwgaGFuZGxlTW91c2VDYXB0dXJlLCB0cnVlKTtcbiAgICBjb25zdCByZW1vdmVNb3VzZUxpc3RlbmVyID0gbGlzdGVuKGRvYywgY2xpY2tUcmlnZ2VyLCBlID0+IHtcbiAgICAgIC8vIHNraXAgaWYgdGhpcyBldmVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHJ1bm5pbmcgd2hlbiB3ZSBhZGRlZCB0aGUgaGFuZGxlcnNcbiAgICAgIGlmIChlID09PSBjdXJyZW50RXZlbnQpIHtcbiAgICAgICAgY3VycmVudEV2ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBoYW5kbGVNb3VzZShlKTtcbiAgICB9KTtcbiAgICBsZXQgbW9iaWxlU2FmYXJpSGFja0xpc3RlbmVycyA9IFtdO1xuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2MuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzID0gW10uc2xpY2UuY2FsbChkb2MuYm9keS5jaGlsZHJlbikubWFwKGVsID0+IGxpc3RlbihlbCwgJ21vdXNlbW92ZScsIG5vb3ApKTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHJlbW92ZUluaXRpYWxUcmlnZ2VyTGlzdGVuZXIoKTtcbiAgICAgIHJlbW92ZU1vdXNlQ2FwdHVyZUxpc3RlbmVyKCk7XG4gICAgICByZW1vdmVNb3VzZUxpc3RlbmVyKCk7XG4gICAgICBtb2JpbGVTYWZhcmlIYWNrTGlzdGVuZXJzLmZvckVhY2gocmVtb3ZlID0+IHJlbW92ZSgpKTtcbiAgICB9O1xuICB9LCBbcmVmLCBkaXNhYmxlZCwgY2xpY2tUcmlnZ2VyLCBoYW5kbGVNb3VzZUNhcHR1cmUsIGhhbmRsZUluaXRpYWxNb3VzZSwgaGFuZGxlTW91c2VdKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZUNsaWNrT3V0c2lkZTsiLCJleHBvcnQgZnVuY3Rpb24gdG9Nb2RpZmllck1hcChtb2RpZmllcnMpIHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllcnMpKSB7XG4gICAgcmV0dXJuIG1vZGlmaWVycyB8fCByZXN1bHQ7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gIG1vZGlmaWVycyA9PSBudWxsID8gdm9pZCAwIDogbW9kaWZpZXJzLmZvckVhY2gobSA9PiB7XG4gICAgcmVzdWx0W20ubmFtZV0gPSBtO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b01vZGlmaWVyQXJyYXkobWFwID0ge30pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwKSkgcmV0dXJuIG1hcDtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkubWFwKGsgPT4ge1xuICAgIG1hcFtrXS5uYW1lID0gaztcbiAgICByZXR1cm4gbWFwW2tdO1xuICB9KTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlT3B0aW9uc1dpdGhQb3BwZXJDb25maWcoe1xuICBlbmFibGVkLFxuICBlbmFibGVFdmVudHMsXG4gIHBsYWNlbWVudCxcbiAgZmxpcCxcbiAgb2Zmc2V0LFxuICBmaXhlZCxcbiAgY29udGFpbmVyUGFkZGluZyxcbiAgYXJyb3dFbGVtZW50LFxuICBwb3BwZXJDb25maWcgPSB7fVxufSkge1xuICB2YXIgX21vZGlmaWVycyRldmVudExpc3RlLCBfbW9kaWZpZXJzJHByZXZlbnRPdmUsIF9tb2RpZmllcnMkcHJldmVudE92ZTIsIF9tb2RpZmllcnMkb2Zmc2V0LCBfbW9kaWZpZXJzJGFycm93O1xuICBjb25zdCBtb2RpZmllcnMgPSB0b01vZGlmaWVyTWFwKHBvcHBlckNvbmZpZy5tb2RpZmllcnMpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyQ29uZmlnLCB7XG4gICAgcGxhY2VtZW50LFxuICAgIGVuYWJsZWQsXG4gICAgc3RyYXRlZ3k6IGZpeGVkID8gJ2ZpeGVkJyA6IHBvcHBlckNvbmZpZy5zdHJhdGVneSxcbiAgICBtb2RpZmllcnM6IHRvTW9kaWZpZXJBcnJheShPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMsIHtcbiAgICAgIGV2ZW50TGlzdGVuZXJzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGVuYWJsZUV2ZW50cyxcbiAgICAgICAgb3B0aW9uczogKF9tb2RpZmllcnMkZXZlbnRMaXN0ZSA9IG1vZGlmaWVycy5ldmVudExpc3RlbmVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkZXZlbnRMaXN0ZS5vcHRpb25zXG4gICAgICB9LFxuICAgICAgcHJldmVudE92ZXJmbG93OiBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllcnMucHJldmVudE92ZXJmbG93LCB7XG4gICAgICAgIG9wdGlvbnM6IGNvbnRhaW5lclBhZGRpbmcgPyBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBwYWRkaW5nOiBjb250YWluZXJQYWRkaW5nXG4gICAgICAgIH0sIChfbW9kaWZpZXJzJHByZXZlbnRPdmUgPSBtb2RpZmllcnMucHJldmVudE92ZXJmbG93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRwcmV2ZW50T3ZlLm9wdGlvbnMpIDogKF9tb2RpZmllcnMkcHJldmVudE92ZTIgPSBtb2RpZmllcnMucHJldmVudE92ZXJmbG93KSA9PSBudWxsID8gdm9pZCAwIDogX21vZGlmaWVycyRwcmV2ZW50T3ZlMi5vcHRpb25zXG4gICAgICB9KSxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBvZmZzZXRcbiAgICAgICAgfSwgKF9tb2RpZmllcnMkb2Zmc2V0ID0gbW9kaWZpZXJzLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9tb2RpZmllcnMkb2Zmc2V0Lm9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgYXJyb3c6IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVycy5hcnJvdywge1xuICAgICAgICBlbmFibGVkOiAhIWFycm93RWxlbWVudCxcbiAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgKF9tb2RpZmllcnMkYXJyb3cgPSBtb2RpZmllcnMuYXJyb3cpID09IG51bGwgPyB2b2lkIDAgOiBfbW9kaWZpZXJzJGFycm93Lm9wdGlvbnMsIHtcbiAgICAgICAgICBlbGVtZW50OiBhcnJvd0VsZW1lbnRcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgZmxpcDogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGVuYWJsZWQ6ICEhZmxpcFxuICAgICAgfSwgbW9kaWZpZXJzLmZsaXApXG4gICAgfSkpXG4gIH0pO1xufSIsImNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNhbGxiYWNrUmVmIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUNhbGxiYWNrUmVmJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IHVzZVBvcHBlciBmcm9tICcuL3VzZVBvcHBlcic7XG5pbXBvcnQgdXNlQ2xpY2tPdXRzaWRlIGZyb20gJy4vdXNlQ2xpY2tPdXRzaWRlJztcbmltcG9ydCBtZXJnZU9wdGlvbnNXaXRoUG9wcGVyQ29uZmlnIGZyb20gJy4vbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyc7XG5pbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbi8qKlxuICogQG1lbWJlck9mIERyb3Bkb3duXG4gKiBAcGFyYW0ge29iamVjdH0gIG9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5mbGlwIEF1dG9tYXRpY2FsbHkgYWRqdXN0IHRoZSBtZW51IGBkcm9wYCBwb3NpdGlvbiBiYXNlZCBvbiB2aWV3cG9ydCBlZGdlIGRldGVjdGlvblxuICogQHBhcmFtIHtbbnVtYmVyLCBudW1iZXJdfSBvcHRpb25zLm9mZnNldCBEZWZpbmUgYW4gb2Zmc2V0IGRpc3RhbmNlIGJldHdlZW4gdGhlIE1lbnUgYW5kIHRoZSBUb2dnbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5zaG93IERpc3BsYXkgdGhlIG1lbnUgbWFudWFsbHksIGlnbm9yZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBgRHJvcGRvd25gXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMudXNlUG9wcGVyIG9wdCBpbi9vdXQgb2YgdXNpbmcgUG9wcGVySlMgdG8gcG9zaXRpb24gbWVudXMuIFdoZW4gZGlzYWJsZWQgeW91IG11c3QgcG9zaXRpb24gaXQgeW91cnNlbGYuXG4gKiBAcGFyYW0ge3N0cmluZ30gIG9wdGlvbnMucm9vdENsb3NlRXZlbnQgVGhlIHBvaW50ZXIgZXZlbnQgdG8gbGlzdGVuIGZvciB3aGVuIGRldGVybWluaW5nIFwiY2xpY2tzIG91dHNpZGVcIiB0aGUgbWVudSBmb3IgdHJpZ2dlcmluZyBhIGNsb3NlLlxuICogQHBhcmFtIHtvYmplY3R9ICBvcHRpb25zLnBvcHBlckNvbmZpZyBPcHRpb25zIHBhc3NlZCB0byB0aGUgW2B1c2VQb3BwZXJgXSgvYXBpL3VzZVBvcHBlcikgaG9vay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyb3Bkb3duTWVudShvcHRpb25zID0ge30pIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KTtcbiAgY29uc3QgW2Fycm93RWxlbWVudCwgYXR0YWNoQXJyb3dSZWZdID0gdXNlQ2FsbGJhY2tSZWYoKTtcbiAgY29uc3QgaGFzU2hvd25SZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7XG4gICAgZmxpcCxcbiAgICBvZmZzZXQsXG4gICAgcm9vdENsb3NlRXZlbnQsXG4gICAgZml4ZWQgPSBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE92ZXJyaWRlLFxuICAgIHBvcHBlckNvbmZpZyA9IHt9LFxuICAgIGVuYWJsZUV2ZW50TGlzdGVuZXJzID0gdHJ1ZSxcbiAgICB1c2VQb3BwZXI6IHNob3VsZFVzZVBvcHBlciA9ICEhY29udGV4dFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2hvdyA9IChjb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiBjb250ZXh0LnNob3cpID09IG51bGwgPyAhIW9wdGlvbnMuc2hvdyA6IGNvbnRleHQuc2hvdztcbiAgaWYgKHNob3cgJiYgIWhhc1Nob3duUmVmLmN1cnJlbnQpIHtcbiAgICBoYXNTaG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBoYW5kbGVDbG9zZSA9IGUgPT4ge1xuICAgIGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQudG9nZ2xlKGZhbHNlLCBlKTtcbiAgfTtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBzZXRNZW51LFxuICAgIG1lbnVFbGVtZW50LFxuICAgIHRvZ2dsZUVsZW1lbnRcbiAgfSA9IGNvbnRleHQgfHwge307XG4gIGNvbnN0IHBvcHBlciA9IHVzZVBvcHBlcih0b2dnbGVFbGVtZW50LCBtZW51RWxlbWVudCwgbWVyZ2VPcHRpb25zV2l0aFBvcHBlckNvbmZpZyh7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPdmVycmlkZSB8fCBwbGFjZW1lbnQgfHwgJ2JvdHRvbS1zdGFydCcsXG4gICAgZW5hYmxlZDogc2hvdWxkVXNlUG9wcGVyLFxuICAgIGVuYWJsZUV2ZW50czogZW5hYmxlRXZlbnRMaXN0ZW5lcnMgPT0gbnVsbCA/IHNob3cgOiBlbmFibGVFdmVudExpc3RlbmVycyxcbiAgICBvZmZzZXQsXG4gICAgZmxpcCxcbiAgICBmaXhlZCxcbiAgICBhcnJvd0VsZW1lbnQsXG4gICAgcG9wcGVyQ29uZmlnXG4gIH0pKTtcbiAgY29uc3QgbWVudVByb3BzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcmVmOiBzZXRNZW51IHx8IG5vb3AsXG4gICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRvZ2dsZUVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHRvZ2dsZUVsZW1lbnQuaWRcbiAgfSwgcG9wcGVyLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgc3R5bGU6IHBvcHBlci5zdHlsZXMucG9wcGVyXG4gIH0pO1xuICBjb25zdCBtZXRhZGF0YSA9IHtcbiAgICBzaG93LFxuICAgIHBsYWNlbWVudCxcbiAgICBoYXNTaG93bjogaGFzU2hvd25SZWYuY3VycmVudCxcbiAgICB0b2dnbGU6IGNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbnRleHQudG9nZ2xlLFxuICAgIHBvcHBlcjogc2hvdWxkVXNlUG9wcGVyID8gcG9wcGVyIDogbnVsbCxcbiAgICBhcnJvd1Byb3BzOiBzaG91bGRVc2VQb3BwZXIgPyBPYmplY3QuYXNzaWduKHtcbiAgICAgIHJlZjogYXR0YWNoQXJyb3dSZWZcbiAgICB9LCBwb3BwZXIuYXR0cmlidXRlcy5hcnJvdywge1xuICAgICAgc3R5bGU6IHBvcHBlci5zdHlsZXMuYXJyb3dcbiAgICB9KSA6IHt9XG4gIH07XG4gIHVzZUNsaWNrT3V0c2lkZShtZW51RWxlbWVudCwgaGFuZGxlQ2xvc2UsIHtcbiAgICBjbGlja1RyaWdnZXI6IHJvb3RDbG9zZUV2ZW50LFxuICAgIGRpc2FibGVkOiAhc2hvd1xuICB9KTtcbiAgcmV0dXJuIFttZW51UHJvcHMsIG1ldGFkYXRhXTtcbn1cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdXNlUG9wcGVyOiB0cnVlXG59O1xuLyoqXG4gKiBBbHNvIGV4cG9ydGVkIGFzIGA8RHJvcGRvd24uTWVudT5gIGZyb20gYERyb3Bkb3duYC5cbiAqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25NZW51XG4gKiBAbWVtYmVyT2YgRHJvcGRvd25cbiAqL1xuZnVuY3Rpb24gRHJvcGRvd25NZW51KF9yZWYpIHtcbiAgbGV0IHtcbiAgICAgIGNoaWxkcmVuXG4gICAgfSA9IF9yZWYsXG4gICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93bk1lbnUob3B0aW9ucyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4ocHJvcHMsIG1ldGEpXG4gIH0pO1xufVxuRHJvcGRvd25NZW51LmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duTWVudSc7XG5Ecm9wZG93bk1lbnUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4vKiogQGNvbXBvbmVudCAqL1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51OyIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGhvb2sgYXJvdW5kIGB1c2VTdGF0ZWAgZGVzaWduZWQgdG8gYmUgcGFpcmVkIHdpdGhcbiAqIHRoZSBjb21wb25lbnQgW2NhbGxiYWNrIHJlZl0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlZnMtYW5kLXRoZS1kb20uaHRtbCNjYWxsYmFjay1yZWZzKSBhcGkuXG4gKiBDYWxsYmFjayByZWZzIGFyZSB1c2VmdWwgb3ZlciBgdXNlUmVmKClgIHdoZW4geW91IG5lZWQgdG8gcmVzcG9uZCB0byB0aGUgcmVmIGJlaW5nIHNldFxuICogaW5zdGVhZCBvZiBsYXppbHkgYWNjZXNzaW5nIGl0IGluIGFuIGVmZmVjdC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgW2VsZW1lbnQsIGF0dGFjaFJlZl0gPSB1c2VDYWxsYmFja1JlZjxIVE1MRGl2RWxlbWVudD4oKVxuICpcbiAqIHVzZUVmZmVjdCgoKSA9PiB7XG4gKiAgIGlmICghZWxlbWVudCkgcmV0dXJuXG4gKlxuICogICBjb25zdCBjYWxlbmRhciA9IG5ldyBGdWxsQ2FsZW5kYXIuQ2FsZW5kYXIoZWxlbWVudClcbiAqXG4gKiAgIHJldHVybiAoKSA9PiB7XG4gKiAgICAgY2FsZW5kYXIuZGVzdHJveSgpXG4gKiAgIH1cbiAqIH0sIFtlbGVtZW50XSlcbiAqXG4gKiByZXR1cm4gPGRpdiByZWY9e2F0dGFjaFJlZn0gLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSByZWZzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoKSB7XG4gIHJldHVybiB1c2VTdGF0ZShudWxsKTtcbn0iLCJpbXBvcnQgJDg5eUUyJHJlYWN0LCB7dXNlQ29udGV4dCBhcyAkODl5RTIkdXNlQ29udGV4dCwgdXNlTWVtbyBhcyAkODl5RTIkdXNlTWVtbywgdXNlUmVmIGFzICQ4OXlFMiR1c2VSZWYsIHVzZVN0YXRlIGFzICQ4OXlFMiR1c2VTdGF0ZSwgdXNlTGF5b3V0RWZmZWN0IGFzICQ4OXlFMiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuXG4vKlxuICogQ29weXJpZ2h0IDIwMjAgQWRvYmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBUaGlzIGZpbGUgaXMgbGljZW5zZWQgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weVxuICogb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlclxuICogdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TXG4gKiBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2VcbiAqIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi8gLypcbiAqIENvcHlyaWdodCAyMDIwIEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovIC8vIFdlIG11c3QgYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggQHJlYWN0LWFyaWEvdXRpbHMsIGFuZCB0aGlzIHVzZUxheW91dEVmZmVjdCBpc1xuLy8gZ3VhcmRlZCBieSBhIGNoZWNrIHRoYXQgaXQgb25seSBydW5zIG9uIHRoZSBjbGllbnQgc2lkZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBydWxlc2Rpci91c2VMYXlvdXRFZmZlY3RSdWxlXG5cbi8vIERlZmF1bHQgY29udGV4dCB2YWx1ZSB0byB1c2UgaW4gY2FzZSB0aGVyZSBpcyBubyBTU1JQcm92aWRlci4gVGhpcyBpcyBmaW5lIGZvclxuLy8gY2xpZW50LW9ubHkgYXBwcy4gSW4gb3JkZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSBjb3BpZXMgb2YgUmVhY3QgQXJpYSBwb3RlbnRpYWxseVxuLy8gYmVpbmcgb24gdGhlIHBhZ2UgYXQgb25jZSwgdGhlIHByZWZpeCBpcyBzZXQgdG8gYSByYW5kb20gbnVtYmVyLiBTU1JQcm92aWRlclxuLy8gd2lsbCByZXNldCB0aGlzIHRvIHplcm8gZm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gc2VydmVyIGFuZCBjbGllbnQsIHNvIGluIHRoZVxuLy8gU1NSIGNhc2UgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IEFyaWEgaXMgbm90IHN1cHBvcnRlZC5cbmNvbnN0ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCA9IHtcbiAgICBwcmVmaXg6IFN0cmluZyhNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMCkpLFxuICAgIGN1cnJlbnQ6IDBcbn07XG5jb25zdCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gKDAsICQ4OXlFMiRyZWFjdCkuY3JlYXRlQ29udGV4dCgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQpO1xuZnVuY3Rpb24gJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDlmOGFjOTZhZjRiMWIyYWUocHJvcHMpIHtcbiAgICBsZXQgY3VyID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IGNvdW50ZXIgPSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcihjdXIgPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCk7XG4gICAgbGV0IHZhbHVlID0gKDAsICQ4OXlFMiR1c2VNZW1vKSgoKT0+KHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IFNTUlByb3ZpZGVyLCBzdGFydCB3aXRoIGFuIGVtcHR5IHN0cmluZyBwcmVmaXgsIG90aGVyd2lzZVxuICAgICAgICAgICAgLy8gYXBwZW5kIGFuZCBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuXG4gICAgICAgICAgICBwcmVmaXg6IGN1ciA9PT0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGRlZmF1bHRDb250ZXh0ID8gXCJcIiA6IGAke2N1ci5wcmVmaXh9LSR7Y291bnRlcn1gLFxuICAgICAgICAgICAgY3VycmVudDogMFxuICAgICAgICB9KSwgW1xuICAgICAgICBjdXIsXG4gICAgICAgIGNvdW50ZXJcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAoMCwgJDg5eUUyJHJlYWN0KS5jcmVhdGVFbGVtZW50KCQ3MDRjZjFkM2I2ODRjYzVjJHZhciRTU1JDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0sIHByb3BzLmNoaWxkcmVuKTtcbn1cbmxldCAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkY2FuVXNlRE9NID0gQm9vbGVhbih0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5sZXQgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcyA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcihpc0Rpc2FibGVkID0gZmFsc2UpIHtcbiAgICBsZXQgY3R4ID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IHJlZiA9ICgwLCAkODl5RTIkdXNlUmVmKShudWxsKTtcbiAgICBpZiAocmVmLmN1cnJlbnQgPT09IG51bGwgJiYgIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgdmFyIF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyO1xuICAgICAgICAvLyBJbiBzdHJpY3QgbW9kZSwgUmVhY3QgcmVuZGVycyBjb21wb25lbnRzIHR3aWNlLCBhbmQgdGhlIHJlZiB3aWxsIGJlIHJlc2V0IHRvIG51bGwgb24gdGhlIHNlY29uZCByZW5kZXIuXG4gICAgICAgIC8vIFRoaXMgbWVhbnMgb3VyIGlkIGNvdW50ZXIgd2lsbCBiZSBpbmNyZW1lbnRlZCB0d2ljZSBpbnN0ZWFkIG9mIG9uY2UuIFRoaXMgaXMgYSBwcm9ibGVtIGJlY2F1c2Ugb24gdGhlXG4gICAgICAgIC8vIHNlcnZlciwgY29tcG9uZW50cyBhcmUgb25seSByZW5kZXJlZCBvbmNlIGFuZCBzbyBpZHMgZ2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIgd29uJ3QgbWF0Y2ggdGhlIGNsaWVudC5cbiAgICAgICAgLy8gSW4gUmVhY3QgMTgsIHVzZUlkIHdhcyBpbnRyb2R1Y2VkIHRvIHNvbHZlIHRoaXMsIGJ1dCBpdCBpcyBub3QgYXZhaWxhYmxlIGluIG9sZGVyIHZlcnNpb25zLiBTbyB0byBzb2x2ZSB0aGlzXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gdXNlIHNvbWUgUmVhY3QgaW50ZXJuYWxzIHRvIGFjY2VzcyB0aGUgdW5kZXJseWluZyBGaWJlciBpbnN0YW5jZSwgd2hpY2ggaXMgc3RhYmxlIGJldHdlZW4gcmVuZGVycy5cbiAgICAgICAgLy8gVGhpcyBpcyBleHBvc2VkIGFzIFJlYWN0Q3VycmVudE93bmVyIGluIGRldmVsb3BtZW50LCB3aGljaCBpcyBhbGwgd2UgbmVlZCBzaW5jZSBTdHJpY3RNb2RlIG9ubHkgcnVucyBpbiBkZXZlbG9wbWVudC5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgd2Ugb25seSBpbmNyZW1lbnQgdGhlIGdsb2JhbCBjb3VudGVyIG9uY2UsIHdlIHN0b3JlIHRoZSBzdGFydGluZyBpZCBmb3IgdGhpcyBjb21wb25lbnQgaW5cbiAgICAgICAgLy8gYSB3ZWFrIG1hcCBhc3NvY2lhdGVkIHdpdGggdGhlIEZpYmVyLiBPbiB0aGUgc2Vjb25kIHJlbmRlciwgd2UgcmVzZXQgdGhlIGdsb2JhbCBjb3VudGVyIHRvIHRoaXMgdmFsdWUuXG4gICAgICAgIC8vIFNpbmNlIFJlYWN0IHJ1bnMgdGhlIHNlY29uZCByZW5kZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0LCB0aGlzIGlzIHNhZmUuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbGV0IGN1cnJlbnRPd25lciA9IChfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQgPSAoMCwgJDg5eUUyJHJlYWN0KS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCkgPT09IG51bGwgfHwgX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEX1JlYWN0Q3VycmVudE93bmVyID0gX1JlYWN0X19fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyKSA9PT0gbnVsbCB8fCBfUmVhY3RfX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURfUmVhY3RDdXJyZW50T3duZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9SZWFjdF9fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRF9SZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgICAgICBpZiAoY3VycmVudE93bmVyKSB7XG4gICAgICAgICAgICBsZXQgcHJldkNvbXBvbmVudFZhbHVlID0gJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5nZXQoY3VycmVudE93bmVyKTtcbiAgICAgICAgICAgIGlmIChwcmV2Q29tcG9uZW50VmFsdWUgPT0gbnVsbCkgLy8gT24gdGhlIGZpcnN0IHJlbmRlciwgYW5kIGZpcnN0IGNhbGwgdG8gdXNlSWQsIHN0b3JlIHRoZSBpZCBhbmQgc3RhdGUgaW4gb3VyIHdlYWsgbWFwLlxuICAgICAgICAgICAgJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNvbXBvbmVudElkcy5zZXQoY3VycmVudE93bmVyLCB7XG4gICAgICAgICAgICAgICAgaWQ6IGN0eC5jdXJyZW50LFxuICAgICAgICAgICAgICAgIHN0YXRlOiBjdXJyZW50T3duZXIubWVtb2l6ZWRTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50T3duZXIubWVtb2l6ZWRTdGF0ZSAhPT0gcHJldkNvbXBvbmVudFZhbHVlLnN0YXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gT24gdGhlIHNlY29uZCByZW5kZXIsIHRoZSBtZW1vaXplZFN0YXRlIGdldHMgcmVzZXQgYnkgUmVhY3QuXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIGNvdW50ZXIsIGFuZCByZW1vdmUgZnJvbSB0aGUgd2VhayBtYXAgc28gd2UgZG9uJ3RcbiAgICAgICAgICAgICAgICAvLyBkbyB0aGlzIGZvciBzdWJzZXF1ZW50IHVzZUlkIGNhbGxzLlxuICAgICAgICAgICAgICAgIGN0eC5jdXJyZW50ID0gcHJldkNvbXBvbmVudFZhbHVlLmlkO1xuICAgICAgICAgICAgICAgICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRjb21wb25lbnRJZHMuZGVsZXRlKGN1cnJlbnRPd25lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVmLmN1cnJlbnQgPSArK2N0eC5jdXJyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNjE5NTAwOTU5ZmM0OGIyNihkZWZhdWx0SWQpIHtcbiAgICBsZXQgY3R4ID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgLy8gSWYgd2UgYXJlIHJlbmRlcmluZyBpbiBhIG5vbi1ET00gZW52aXJvbm1lbnQsIGFuZCB0aGVyZSdzIG5vIFNTUlByb3ZpZGVyLFxuICAgIC8vIHByb3ZpZGUgYSB3YXJuaW5nIHRvIGhpbnQgdG8gdGhlIGRldmVsb3BlciB0byBhZGQgb25lLlxuICAgIGlmIChjdHggPT09ICQ3MDRjZjFkM2I2ODRjYzVjJHZhciRkZWZhdWx0Q29udGV4dCAmJiAhJDcwNGNmMWQzYjY4NGNjNWMkdmFyJGNhblVzZURPTSkgY29uc29sZS53YXJuKFwiV2hlbiBzZXJ2ZXIgcmVuZGVyaW5nLCB5b3UgbXVzdCB3cmFwIHlvdXIgYXBwbGljYXRpb24gaW4gYW4gPFNTUlByb3ZpZGVyPiB0byBlbnN1cmUgY29uc2lzdGVudCBpZHMgYXJlIGdlbmVyYXRlZCBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlci5cIik7XG4gICAgbGV0IGNvdW50ZXIgPSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkdXNlQ291bnRlcighIWRlZmF1bHRJZCk7XG4gICAgcmV0dXJuIGRlZmF1bHRJZCB8fCBgcmVhY3QtYXJpYSR7Y3R4LnByZWZpeH0tJHtjb3VudGVyfWA7XG59XG5mdW5jdGlvbiAkNzA0Y2YxZDNiNjg0Y2M1YyRleHBvcnQkNTM1YmQ2Y2E3ZjkwYTI3MygpIHtcbiAgICBsZXQgY3VyID0gKDAsICQ4OXlFMiR1c2VDb250ZXh0KSgkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkU1NSQ29udGV4dCk7XG4gICAgbGV0IGlzSW5TU1JDb250ZXh0ID0gY3VyICE9PSAkNzA0Y2YxZDNiNjg0Y2M1YyR2YXIkZGVmYXVsdENvbnRleHQ7XG4gICAgbGV0IFtpc1NTUiwgc2V0SXNTU1JdID0gKDAsICQ4OXlFMiR1c2VTdGF0ZSkoaXNJblNTUkNvbnRleHQpO1xuICAgIC8vIElmIG9uIHRoZSBjbGllbnQsIGFuZCB0aGUgY29tcG9uZW50IHdhcyBpbml0aWFsbHkgc2VydmVyIHJlbmRlcmVkLFxuICAgIC8vIHRoZW4gc2NoZWR1bGUgYSBsYXlvdXQgZWZmZWN0IHRvIHVwZGF0ZSB0aGUgY29tcG9uZW50IGFmdGVyIGh5ZHJhdGlvbi5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpc0luU1NSQ29udGV4dCkgLy8gVGhpcyBpZiBzdGF0ZW1lbnQgdGVjaG5pY2FsbHkgYnJlYWtzIHRoZSBydWxlcyBvZiBob29rcywgYnV0IGlzIHNhZmVcbiAgICAvLyBiZWNhdXNlIHRoZSBjb25kaXRpb24gbmV2ZXIgY2hhbmdlcyBhZnRlciBtb3VudGluZy5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAoMCwgJDg5eUUyJHVzZUxheW91dEVmZmVjdCkoKCk9PntcbiAgICAgICAgc2V0SXNTU1IoZmFsc2UpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gaXNTU1I7XG59XG5cblxuXG5cbmV4cG9ydCB7JDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDlmOGFjOTZhZjRiMWIyYWUgYXMgU1NSUHJvdmlkZXIsICQ3MDRjZjFkM2I2ODRjYzVjJGV4cG9ydCQ2MTk1MDA5NTlmYzQ4YjI2IGFzIHVzZVNTUlNhZmVJZCwgJDcwNGNmMWQzYjY4NGNjNWMkZXhwb3J0JDUzNWJkNmNhN2Y5MGEyNzMgYXMgdXNlSXNTU1J9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kdWxlLmpzLm1hcFxuIiwiaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTU1JTYWZlSWQgfSBmcm9tICcuL3Nzcic7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBjb25zdCBpc1JvbGVNZW51ID0gZWwgPT4ge1xuICB2YXIgX2VsJGdldEF0dHJpYnV0ZTtcbiAgcmV0dXJuICgoX2VsJGdldEF0dHJpYnV0ZSA9IGVsLmdldEF0dHJpYnV0ZSgncm9sZScpKSA9PSBudWxsID8gdm9pZCAwIDogX2VsJGdldEF0dHJpYnV0ZS50b0xvd2VyQ2FzZSgpKSA9PT0gJ21lbnUnO1xufTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG4gKiBXaXJlcyB1cCBEcm9wZG93biB0b2dnbGUgZnVuY3Rpb25hbGl0eSwgcmV0dXJuaW5nIGEgc2V0IGEgcHJvcHMgdG8gYXR0YWNoXG4gKiB0byB0aGUgZWxlbWVudCB0aGF0IGZ1bmN0aW9ucyBhcyB0aGUgZHJvcGRvd24gdG9nZ2xlIChnZW5lcmFsbHkgYSBidXR0b24pLlxuICpcbiAqIEBtZW1iZXJPZiBEcm9wZG93blxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRHJvcGRvd25Ub2dnbGUoKSB7XG4gIGNvbnN0IGlkID0gdXNlU1NSU2FmZUlkKCk7XG4gIGNvbnN0IHtcbiAgICBzaG93ID0gZmFsc2UsXG4gICAgdG9nZ2xlID0gbm9vcCxcbiAgICBzZXRUb2dnbGUsXG4gICAgbWVudUVsZW1lbnRcbiAgfSA9IHVzZUNvbnRleHQoRHJvcGRvd25Db250ZXh0KSB8fCB7fTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhlID0+IHtcbiAgICB0b2dnbGUoIXNob3csIGUpO1xuICB9LCBbc2hvdywgdG9nZ2xlXSk7XG4gIGNvbnN0IHByb3BzID0ge1xuICAgIGlkLFxuICAgIHJlZjogc2V0VG9nZ2xlIHx8IG5vb3AsXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgJ2FyaWEtZXhwYW5kZWQnOiAhIXNob3dcbiAgfTtcblxuICAvLyBUaGlzIGlzIG1heWJlIGJldHRlciBkb3duIGluIGFuIGVmZmVjdCwgYnV0XG4gIC8vIHRoZSBjb21wb25lbnQgaXMgZ29pbmcgdG8gdXBkYXRlIGFueXdheSB3aGVuIHRoZSBtZW51IGVsZW1lbnRcbiAgLy8gaXMgc2V0IHNvIG1pZ2h0IHJldHVybiBuZXcgcHJvcHMuXG4gIGlmIChtZW51RWxlbWVudCAmJiBpc1JvbGVNZW51KG1lbnVFbGVtZW50KSkge1xuICAgIHByb3BzWydhcmlhLWhhc3BvcHVwJ10gPSB0cnVlO1xuICB9XG4gIHJldHVybiBbcHJvcHMsIHtcbiAgICBzaG93LFxuICAgIHRvZ2dsZVxuICB9XTtcbn1cbi8qKlxuICogQWxzbyBleHBvcnRlZCBhcyBgPERyb3Bkb3duLlRvZ2dsZT5gIGZyb20gYERyb3Bkb3duYC5cbiAqXG4gKiBAZGlzcGxheU5hbWUgRHJvcGRvd25Ub2dnbGVcbiAqIEBtZW1iZXJPZiBEcm9wZG93blxuICovXG5mdW5jdGlvbiBEcm9wZG93blRvZ2dsZSh7XG4gIGNoaWxkcmVuXG59KSB7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93blRvZ2dsZSgpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuKHByb3BzLCBtZXRhKVxuICB9KTtcbn1cbkRyb3Bkb3duVG9nZ2xlLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duVG9nZ2xlJztcblxuLyoqIEBjb21wb25lbnQgKi9cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duVG9nZ2xlOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFNlbGVjdGFibGVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgY29uc3QgbWFrZUV2ZW50S2V5ID0gKGV2ZW50S2V5LCBocmVmID0gbnVsbCkgPT4ge1xuICBpZiAoZXZlbnRLZXkgIT0gbnVsbCkgcmV0dXJuIFN0cmluZyhldmVudEtleSk7XG4gIHJldHVybiBocmVmIHx8IG51bGw7XG59O1xuZXhwb3J0IGRlZmF1bHQgU2VsZWN0YWJsZUNvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgTmF2Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuTmF2Q29udGV4dC5kaXNwbGF5TmFtZSA9ICdOYXZDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IE5hdkNvbnRleHQ7IiwiZXhwb3J0IGNvbnN0IEFUVFJJQlVURV9QUkVGSVggPSBgZGF0YS1yci11aS1gO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRZX1BSRUZJWCA9IGByclVpYDtcbmV4cG9ydCBmdW5jdGlvbiBkYXRhQXR0cihwcm9wZXJ0eSkge1xuICByZXR1cm4gYCR7QVRUUklCVVRFX1BSRUZJWH0ke3Byb3BlcnR5fWA7XG59XG5leHBvcnQgZnVuY3Rpb24gZGF0YVByb3AocHJvcGVydHkpIHtcbiAgcmV0dXJuIGAke1BST1BFUlRZX1BSRUZJWH0ke3Byb3BlcnR5fWA7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiZXZlbnRLZXlcIiwgXCJkaXNhYmxlZFwiLCBcIm9uQ2xpY2tcIiwgXCJhY3RpdmVcIiwgXCJhc1wiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCwgeyBtYWtlRXZlbnRLZXkgfSBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vKipcbiAqIENyZWF0ZSBhIGRyb3Bkb3duIGl0ZW0uIFJldHVybnMgYSBzZXQgb2YgcHJvcHMgZm9yIHRoZSBkcm9wZG93biBpdGVtIGNvbXBvbmVudFxuICogaW5jbHVkaW5nIGFuIGBvbkNsaWNrYCBoYW5kbGVyIHRoYXQgcHJldmVudHMgc2VsZWN0aW9uIHdoZW4gdGhlIGl0ZW0gaXMgZGlzYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyb3Bkb3duSXRlbSh7XG4gIGtleSxcbiAgaHJlZixcbiAgYWN0aXZlLFxuICBkaXNhYmxlZCxcbiAgb25DbGlja1xufSkge1xuICBjb25zdCBvblNlbGVjdEN0eCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCBuYXZDb250ZXh0ID0gdXNlQ29udGV4dChOYXZDb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUtleVxuICB9ID0gbmF2Q29udGV4dCB8fCB7fTtcbiAgY29uc3QgZXZlbnRLZXkgPSBtYWtlRXZlbnRLZXkoa2V5LCBocmVmKTtcbiAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmUgPT0gbnVsbCAmJiBrZXkgIT0gbnVsbCA/IG1ha2VFdmVudEtleShhY3RpdmVLZXkpID09PSBldmVudEtleSA6IGFjdGl2ZTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBvbkNsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkNsaWNrKGV2ZW50KTtcbiAgICBpZiAob25TZWxlY3RDdHggJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgIG9uU2VsZWN0Q3R4KGV2ZW50S2V5LCBldmVudCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIFt7XG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgJ2FyaWEtZGlzYWJsZWQnOiBkaXNhYmxlZCB8fCB1bmRlZmluZWQsXG4gICAgJ2FyaWEtc2VsZWN0ZWQnOiBpc0FjdGl2ZSxcbiAgICBbZGF0YUF0dHIoJ2Ryb3Bkb3duLWl0ZW0nKV06ICcnXG4gIH0sIHtcbiAgICBpc0FjdGl2ZVxuICB9XTtcbn1cbmNvbnN0IERyb3Bkb3duSXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIGV2ZW50S2V5LFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrLFxuICAgICAgYWN0aXZlLFxuICAgICAgYXM6IENvbXBvbmVudCA9IEJ1dHRvblxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2Ryb3Bkb3duSXRlbVByb3BzXSA9IHVzZURyb3Bkb3duSXRlbSh7XG4gICAga2V5OiBldmVudEtleSxcbiAgICBocmVmOiBwcm9wcy5ocmVmLFxuICAgIGRpc2FibGVkLFxuICAgIG9uQ2xpY2ssXG4gICAgYWN0aXZlXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIHJlZjogcmVmXG4gIH0sIGRyb3Bkb3duSXRlbVByb3BzKSk7XG59KTtcbkRyb3Bkb3duSXRlbS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25JdGVtOyIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJ2RvbS1oZWxwZXJzL2NhblVzZURPTSc7XG5jb25zdCBDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQoY2FuVXNlRE9NID8gd2luZG93IDogdW5kZWZpbmVkKTtcbmV4cG9ydCBjb25zdCBXaW5kb3dQcm92aWRlciA9IENvbnRleHQuUHJvdmlkZXI7XG5cbi8qKlxuICogVGhlIGRvY3VtZW50IFwid2luZG93XCIgcGxhY2VkIGluIFJlYWN0IGNvbnRleHQuIEhlbHBmdWwgZm9yIGRldGVybWluaW5nXG4gKiBTU1IgY29udGV4dCwgb3Igd2hlbiByZW5kZXJpbmcgaW50byBhbiBpZnJhbWUuXG4gKlxuICogQHJldHVybnMgdGhlIGN1cnJlbnQgd2luZG93XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVdpbmRvdygpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoQ29udGV4dCk7XG59IiwiaW1wb3J0IHFzYSBmcm9tICdkb20taGVscGVycy9xdWVyeVNlbGVjdG9yQWxsJztcbmltcG9ydCBhZGRFdmVudExpc3RlbmVyIGZyb20gJ2RvbS1oZWxwZXJzL2FkZEV2ZW50TGlzdGVuZXInO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkUHJvcCB9IGZyb20gJ3VuY29udHJvbGxhYmxlJztcbmltcG9ydCB1c2VQcmV2aW91cyBmcm9tICdAcmVzdGFydC9ob29rcy91c2VQcmV2aW91cyc7XG5pbXBvcnQgdXNlRm9yY2VVcGRhdGUgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRm9yY2VVcGRhdGUnO1xuaW1wb3J0IHVzZUV2ZW50TGlzdGVuZXIgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRMaXN0ZW5lcic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBEcm9wZG93bkNvbnRleHQgZnJvbSAnLi9Ecm9wZG93bkNvbnRleHQnO1xuaW1wb3J0IERyb3Bkb3duTWVudSBmcm9tICcuL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgRHJvcGRvd25Ub2dnbGUsIHsgaXNSb2xlTWVudSB9IGZyb20gJy4vRHJvcGRvd25Ub2dnbGUnO1xuaW1wb3J0IERyb3Bkb3duSXRlbSBmcm9tICcuL0Ryb3Bkb3duSXRlbSc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQgZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyBkYXRhQXR0ciB9IGZyb20gJy4vRGF0YUtleSc7XG5pbXBvcnQgdXNlV2luZG93IGZyb20gJy4vdXNlV2luZG93JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiB1c2VSZWZXaXRoVXBkYXRlKCkge1xuICBjb25zdCBmb3JjZVVwZGF0ZSA9IHVzZUZvcmNlVXBkYXRlKCk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgYXR0YWNoUmVmID0gdXNlQ2FsbGJhY2soZWxlbWVudCA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBlbGVtZW50O1xuICAgIC8vIGVuc3VyZSB0aGF0IGEgbWVudSBzZXQgdHJpZ2dlcnMgYW4gdXBkYXRlIGZvciBjb25zdW1lcnNcbiAgICBmb3JjZVVwZGF0ZSgpO1xuICB9LCBbZm9yY2VVcGRhdGVdKTtcbiAgcmV0dXJuIFtyZWYsIGF0dGFjaFJlZl07XG59XG5cbi8qKlxuICogQGRpc3BsYXlOYW1lIERyb3Bkb3duXG4gKiBAcHVibGljXG4gKi9cbmZ1bmN0aW9uIERyb3Bkb3duKHtcbiAgZGVmYXVsdFNob3csXG4gIHNob3c6IHJhd1Nob3csXG4gIG9uU2VsZWN0LFxuICBvblRvZ2dsZTogcmF3T25Ub2dnbGUsXG4gIGl0ZW1TZWxlY3RvciA9IGAqIFske2RhdGFBdHRyKCdkcm9wZG93bi1pdGVtJyl9XWAsXG4gIGZvY3VzRmlyc3RJdGVtT25TaG93LFxuICBwbGFjZW1lbnQgPSAnYm90dG9tLXN0YXJ0JyxcbiAgY2hpbGRyZW5cbn0pIHtcbiAgY29uc3Qgd2luZG93ID0gdXNlV2luZG93KCk7XG4gIGNvbnN0IFtzaG93LCBvblRvZ2dsZV0gPSB1c2VVbmNvbnRyb2xsZWRQcm9wKHJhd1Nob3csIGRlZmF1bHRTaG93LCByYXdPblRvZ2dsZSk7XG5cbiAgLy8gV2UgdXNlIG5vcm1hbCByZWZzIGluc3RlYWQgb2YgdXNlQ2FsbGJhY2tSZWYgaW4gb3JkZXIgdG8gcG9wdWxhdGUgdGhlXG4gIC8vIHRoZSB2YWx1ZSBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLCBvdGhlcndpc2UgdGhlIGVmZmVjdCB0byBmb2N1cyB0aGUgZWxlbWVudFxuICAvLyBtYXkgcnVuIGJlZm9yZSB0aGUgc3RhdGUgdmFsdWUgaXMgc2V0XG4gIGNvbnN0IFttZW51UmVmLCBzZXRNZW51XSA9IHVzZVJlZldpdGhVcGRhdGUoKTtcbiAgY29uc3QgbWVudUVsZW1lbnQgPSBtZW51UmVmLmN1cnJlbnQ7XG4gIGNvbnN0IFt0b2dnbGVSZWYsIHNldFRvZ2dsZV0gPSB1c2VSZWZXaXRoVXBkYXRlKCk7XG4gIGNvbnN0IHRvZ2dsZUVsZW1lbnQgPSB0b2dnbGVSZWYuY3VycmVudDtcbiAgY29uc3QgbGFzdFNob3cgPSB1c2VQcmV2aW91cyhzaG93KTtcbiAgY29uc3QgbGFzdFNvdXJjZUV2ZW50ID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBmb2N1c0luRHJvcGRvd24gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBvblNlbGVjdEN0eCA9IHVzZUNvbnRleHQoU2VsZWN0YWJsZUNvbnRleHQpO1xuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygobmV4dFNob3csIGV2ZW50LCBzb3VyY2UgPSBldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQudHlwZSkgPT4ge1xuICAgIG9uVG9nZ2xlKG5leHRTaG93LCB7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHNvdXJjZVxuICAgIH0pO1xuICB9LCBbb25Ub2dnbGVdKTtcbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlRXZlbnRDYWxsYmFjaygoa2V5LCBldmVudCkgPT4ge1xuICAgIG9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBvblNlbGVjdChrZXksIGV2ZW50KTtcbiAgICB0b2dnbGUoZmFsc2UsIGV2ZW50LCAnc2VsZWN0Jyk7XG4gICAgaWYgKCFldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICBvblNlbGVjdEN0eCA9PSBudWxsID8gdm9pZCAwIDogb25TZWxlY3RDdHgoa2V5LCBldmVudCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICB0b2dnbGUsXG4gICAgcGxhY2VtZW50LFxuICAgIHNob3csXG4gICAgbWVudUVsZW1lbnQsXG4gICAgdG9nZ2xlRWxlbWVudCxcbiAgICBzZXRNZW51LFxuICAgIHNldFRvZ2dsZVxuICB9KSwgW3RvZ2dsZSwgcGxhY2VtZW50LCBzaG93LCBtZW51RWxlbWVudCwgdG9nZ2xlRWxlbWVudCwgc2V0TWVudSwgc2V0VG9nZ2xlXSk7XG4gIGlmIChtZW51RWxlbWVudCAmJiBsYXN0U2hvdyAmJiAhc2hvdykge1xuICAgIGZvY3VzSW5Ecm9wZG93bi5jdXJyZW50ID0gbWVudUVsZW1lbnQuY29udGFpbnMobWVudUVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgfVxuICBjb25zdCBmb2N1c1RvZ2dsZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICh0b2dnbGVFbGVtZW50ICYmIHRvZ2dsZUVsZW1lbnQuZm9jdXMpIHtcbiAgICAgIHRvZ2dsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBtYXliZUZvY3VzRmlyc3QgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0eXBlID0gbGFzdFNvdXJjZUV2ZW50LmN1cnJlbnQ7XG4gICAgbGV0IGZvY3VzVHlwZSA9IGZvY3VzRmlyc3RJdGVtT25TaG93O1xuICAgIGlmIChmb2N1c1R5cGUgPT0gbnVsbCkge1xuICAgICAgZm9jdXNUeXBlID0gbWVudVJlZi5jdXJyZW50ICYmIGlzUm9sZU1lbnUobWVudVJlZi5jdXJyZW50KSA/ICdrZXlib2FyZCcgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZvY3VzVHlwZSA9PT0gZmFsc2UgfHwgZm9jdXNUeXBlID09PSAna2V5Ym9hcmQnICYmICEvXmtleS4rJC8udGVzdCh0eXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaXJzdCA9IHFzYShtZW51UmVmLmN1cnJlbnQsIGl0ZW1TZWxlY3RvcilbMF07XG4gICAgaWYgKGZpcnN0ICYmIGZpcnN0LmZvY3VzKSBmaXJzdC5mb2N1cygpO1xuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvdykgbWF5YmVGb2N1c0ZpcnN0KCk7ZWxzZSBpZiAoZm9jdXNJbkRyb3Bkb3duLmN1cnJlbnQpIHtcbiAgICAgIGZvY3VzSW5Ecm9wZG93bi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBmb2N1c1RvZ2dsZSgpO1xuICAgIH1cbiAgICAvLyBvbmx5IGBzaG93YCBzaG91bGQgYmUgY2hhbmdpbmdcbiAgfSwgW3Nob3csIGZvY3VzSW5Ecm9wZG93biwgZm9jdXNUb2dnbGUsIG1heWJlRm9jdXNGaXJzdF0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxhc3RTb3VyY2VFdmVudC5jdXJyZW50ID0gbnVsbDtcbiAgfSk7XG4gIGNvbnN0IGdldE5leHRGb2N1c2VkQ2hpbGQgPSAoY3VycmVudCwgb2Zmc2V0KSA9PiB7XG4gICAgaWYgKCFtZW51UmVmLmN1cnJlbnQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGl0ZW1zID0gcXNhKG1lbnVSZWYuY3VycmVudCwgaXRlbVNlbGVjdG9yKTtcbiAgICBsZXQgaW5kZXggPSBpdGVtcy5pbmRleE9mKGN1cnJlbnQpICsgb2Zmc2V0O1xuICAgIGluZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGl0ZW1zLmxlbmd0aCkpO1xuICAgIHJldHVybiBpdGVtc1tpbmRleF07XG4gIH07XG4gIHVzZUV2ZW50TGlzdGVuZXIodXNlQ2FsbGJhY2soKCkgPT4gd2luZG93LmRvY3VtZW50LCBbd2luZG93XSksICdrZXlkb3duJywgZXZlbnQgPT4ge1xuICAgIHZhciBfbWVudVJlZiRjdXJyZW50LCBfdG9nZ2xlUmVmJGN1cnJlbnQ7XG4gICAgY29uc3Qge1xuICAgICAga2V5XG4gICAgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCBmcm9tTWVudSA9IChfbWVudVJlZiRjdXJyZW50ID0gbWVudVJlZi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21lbnVSZWYkY3VycmVudC5jb250YWlucyh0YXJnZXQpO1xuICAgIGNvbnN0IGZyb21Ub2dnbGUgPSAoX3RvZ2dsZVJlZiRjdXJyZW50ID0gdG9nZ2xlUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfdG9nZ2xlUmVmJGN1cnJlbnQuY29udGFpbnModGFyZ2V0KTtcblxuICAgIC8vIFNlY29uZCBvbmx5IHRvIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iLzhjZmJmNjkzM2I4YTAxNDZhYzNmYmMzNjlmMTllNTIwYmQxZWJkYWMvanMvc3JjL2Ryb3Bkb3duLmpzI0w0MDBcbiAgICAvLyBpbiBpbnNjcnV0YWJpbGl0eVxuICAgIGNvbnN0IGlzSW5wdXQgPSAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KHRhcmdldC50YWdOYW1lKTtcbiAgICBpZiAoaXNJbnB1dCAmJiAoa2V5ID09PSAnICcgfHwga2V5ICE9PSAnRXNjYXBlJyAmJiBmcm9tTWVudSB8fCBrZXkgPT09ICdFc2NhcGUnICYmIHRhcmdldC50eXBlID09PSAnc2VhcmNoJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFmcm9tTWVudSAmJiAhZnJvbVRvZ2dsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoa2V5ID09PSAnVGFiJyAmJiAoIW1lbnVSZWYuY3VycmVudCB8fCAhc2hvdykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGFzdFNvdXJjZUV2ZW50LmN1cnJlbnQgPSBldmVudC50eXBlO1xuICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgIHNvdXJjZTogZXZlbnQudHlwZVxuICAgIH07XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IGdldE5leHRGb2N1c2VkQ2hpbGQodGFyZ2V0LCAtMSk7XG4gICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5mb2N1cykgbmV4dC5mb2N1cygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIXNob3cpIHtcbiAgICAgICAgICBvblRvZ2dsZSh0cnVlLCBtZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEZvY3VzZWRDaGlsZCh0YXJnZXQsIDEpO1xuICAgICAgICAgIGlmIChuZXh0ICYmIG5leHQuZm9jdXMpIG5leHQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICAvLyBvbiBrZXlkb3duIHRoZSB0YXJnZXQgaXMgdGhlIGVsZW1lbnQgYmVpbmcgdGFiYmVkIEZST00sIHdlIG5lZWQgdGhhdFxuICAgICAgICAvLyB0byBrbm93IGlmIHRoaXMgZXZlbnQgaXMgcmVsZXZhbnQgdG8gdGhpcyBkcm9wZG93biAoZS5nLiBpbiB0aGlzIG1lbnUpLlxuICAgICAgICAvLyBPbiBga2V5dXBgIHRoZSB0YXJnZXQgaXMgdGhlIGVsZW1lbnQgYmVpbmcgdGFnZ2VkIFRPIHdoaWNoIHdlIHVzZSB0byBjaGVja1xuICAgICAgICAvLyBpZiBmb2N1cyBoYXMgbGVmdCB0aGUgbWVudVxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKHRhcmdldC5vd25lckRvY3VtZW50LCAna2V5dXAnLCBlID0+IHtcbiAgICAgICAgICB2YXIgX21lbnVSZWYkY3VycmVudDI7XG4gICAgICAgICAgaWYgKGUua2V5ID09PSAnVGFiJyAmJiAhZS50YXJnZXQgfHwgISgoX21lbnVSZWYkY3VycmVudDIgPSBtZW51UmVmLmN1cnJlbnQpICE9IG51bGwgJiYgX21lbnVSZWYkY3VycmVudDIuY29udGFpbnMoZS50YXJnZXQpKSkge1xuICAgICAgICAgICAgb25Ub2dnbGUoZmFsc2UsIG1ldGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIG9uVG9nZ2xlKGZhbHNlLCBtZXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RhYmxlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBoYW5kbGVTZWxlY3QsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGNvbnRleHQsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KTtcbn1cbkRyb3Bkb3duLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duJztcbkRyb3Bkb3duLk1lbnUgPSBEcm9wZG93bk1lbnU7XG5Ecm9wZG93bi5Ub2dnbGUgPSBEcm9wZG93blRvZ2dsZTtcbkRyb3Bkb3duLkl0ZW0gPSBEcm9wZG93bkl0ZW07XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bjsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHsgdmFyIGtleSA9IF90b1ByaW1pdGl2ZShhcmcsIFwic3RyaW5nXCIpOyByZXR1cm4gdHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIiA/IGtleSA6IFN0cmluZyhrZXkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUoaW5wdXQsIGhpbnQpIHsgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0OyB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmIChwcmltICE9PSB1bmRlZmluZWQpIHsgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7IGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7IH1cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRLZXkoa2V5KSB7XG4gIHJldHVybiAnZGVmYXVsdCcgKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xufVxuZnVuY3Rpb24gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wVmFsdWUsIGRlZmF1bHRWYWx1ZSwgaGFuZGxlcikge1xuICBjb25zdCB3YXNQcm9wUmVmID0gdXNlUmVmKHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgW3N0YXRlVmFsdWUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIGNvbnN0IGlzUHJvcCA9IHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCB3YXNQcm9wID0gd2FzUHJvcFJlZi5jdXJyZW50O1xuICB3YXNQcm9wUmVmLmN1cnJlbnQgPSBpc1Byb3A7XG5cbiAgLyoqXG4gICAqIElmIGEgcHJvcCBzd2l0Y2hlcyBmcm9tIGNvbnRyb2xsZWQgdG8gVW5jb250cm9sbGVkXG4gICAqIHJlc2V0IGl0cyB2YWx1ZSB0byB0aGUgZGVmYXVsdFZhbHVlXG4gICAqL1xuICBpZiAoIWlzUHJvcCAmJiB3YXNQcm9wICYmIHN0YXRlVmFsdWUgIT09IGRlZmF1bHRWYWx1ZSkge1xuICAgIHNldFN0YXRlKGRlZmF1bHRWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIFtpc1Byb3AgPyBwcm9wVmFsdWUgOiBzdGF0ZVZhbHVlLCB1c2VDYWxsYmFjaygodmFsdWUsIC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoaGFuZGxlcikgaGFuZGxlcih2YWx1ZSwgLi4uYXJncyk7XG4gICAgc2V0U3RhdGUodmFsdWUpO1xuICB9LCBbaGFuZGxlcl0pXTtcbn1cbmV4cG9ydCB7IHVzZVVuY29udHJvbGxlZFByb3AgfTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWQocHJvcHMsIGNvbmZpZykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoKHJlc3VsdCwgZmllbGROYW1lKSA9PiB7XG4gICAgY29uc3QgX3JlZiA9IHJlc3VsdCxcbiAgICAgIF9kZWZhdWx0S2V5ID0gZGVmYXVsdEtleShmaWVsZE5hbWUpLFxuICAgICAge1xuICAgICAgICBbX2RlZmF1bHRLZXldOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBwcm9wc1ZhbHVlXG4gICAgICB9ID0gX3JlZixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBbX2RlZmF1bHRLZXksIGZpZWxkTmFtZV0ubWFwKF90b1Byb3BlcnR5S2V5KSk7XG4gICAgY29uc3QgaGFuZGxlck5hbWUgPSBjb25maWdbZmllbGROYW1lXTtcbiAgICBjb25zdCBbdmFsdWUsIGhhbmRsZXJdID0gdXNlVW5jb250cm9sbGVkUHJvcChwcm9wc1ZhbHVlLCBkZWZhdWx0VmFsdWUsIHByb3BzW2hhbmRsZXJOYW1lXSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICAgIFtmaWVsZE5hbWVdOiB2YWx1ZSxcbiAgICAgIFtoYW5kbGVyTmFtZV06IGhhbmRsZXJcbiAgICB9KTtcbiAgfSwgcHJvcHMpO1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5cbi8qKlxuICogQXR0YWNoZXMgYW4gZXZlbnQgaGFuZGxlciBvdXRzaWRlIGRpcmVjdGx5IHRvIHNwZWNpZmllZCBET00gZWxlbWVudFxuICogYnlwYXNzaW5nIHRoZSByZWFjdCBzeW50aGV0aWMgZXZlbnQgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSB0YXJnZXQgdG8gbGlzdGVuIGZvciBldmVudHMgb25cbiAqIEBwYXJhbSBldmVudCBUaGUgRE9NIGV2ZW50IG5hbWVcbiAqIEBwYXJhbSBoYW5kbGVyIEFuIGV2ZW50IGhhbmRsZXJcbiAqIEBwYXJhbSBjYXB0dXJlIFdoZXRoZXIgb3Igbm90IHRvIGxpc3RlbiBkdXJpbmcgdGhlIGNhcHR1cmUgZXZlbnQgcGhhc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRMaXN0ZW5lcihldmVudFRhcmdldCwgZXZlbnQsIGxpc3RlbmVyLCBjYXB0dXJlKSB7XG4gIGlmIChjYXB0dXJlID09PSB2b2lkIDApIHtcbiAgICBjYXB0dXJlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IHVzZUV2ZW50Q2FsbGJhY2sobGlzdGVuZXIpO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciB0YXJnZXQgPSB0eXBlb2YgZXZlbnRUYXJnZXQgPT09ICdmdW5jdGlvbicgPyBldmVudFRhcmdldCgpIDogZXZlbnRUYXJnZXQ7XG4gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIGNhcHR1cmUpO1xuICAgIH07XG4gIH0sIFtldmVudFRhcmdldF0pO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IERyb3Bkb3duQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbkRyb3Bkb3duQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25Db250ZXh0OyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRHJvcGRvd25JdGVtIH0gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd25JdGVtJztcbmltcG9ydCBBbmNob3IgZnJvbSAnQHJlc3RhcnQvdWkvQW5jaG9yJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRHJvcGRvd25JdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgZXZlbnRLZXksXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIG9uQ2xpY2ssXG4gIGFjdGl2ZSxcbiAgYXM6IENvbXBvbmVudCA9IEFuY2hvcixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi1pdGVtJyk7XG4gIGNvbnN0IFtkcm9wZG93bkl0ZW1Qcm9wcywgbWV0YV0gPSB1c2VEcm9wZG93bkl0ZW0oe1xuICAgIGtleTogZXZlbnRLZXksXG4gICAgaHJlZjogcHJvcHMuaHJlZixcbiAgICBkaXNhYmxlZCxcbiAgICBvbkNsaWNrLFxuICAgIGFjdGl2ZVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIC4uLmRyb3Bkb3duSXRlbVByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgbWV0YS5pc0FjdGl2ZSAmJiAnYWN0aXZlJywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJylcbiAgfSk7XG59KTtcbkRyb3Bkb3duSXRlbS5kaXNwbGF5TmFtZSA9ICdEcm9wZG93bkl0ZW0nO1xuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25JdGVtOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnSW5wdXRHcm91cENvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgY29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbi8vIFRPRE86IGNoZWNrXG5cbmNvbnN0IGNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmNvbnRleHQuZGlzcGxheU5hbWUgPSAnTmF2YmFyQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBjb250ZXh0OyIsImltcG9ydCBpbnZhcmlhbnQgZnJvbSAnaW52YXJpYW50JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcocmVmLCBjb21wb25lbnROYW1lKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkgcmV0dXJuIHJlZjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgY29uc3Qgd2FybmluZ1JlZiA9IHVzZUNhbGxiYWNrKHJlZlZhbHVlID0+IHtcbiAgICAhKHJlZlZhbHVlID09IG51bGwgfHwgIXJlZlZhbHVlLmlzUmVhY3RDb21wb25lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgJHtjb21wb25lbnROYW1lfSBpbmplY3RlZCBhIHJlZiB0byBhIHByb3ZpZGVkIFxcYGFzXFxgIGNvbXBvbmVudCB0aGF0IHJlc29sdmVkIHRvIGEgY29tcG9uZW50IGluc3RhbmNlIGluc3RlYWQgb2YgYSBET00gZWxlbWVudC4gYCArICdVc2UgYFJlYWN0LmZvcndhcmRSZWZgIHRvIHByb3ZpZGUgdGhlIGluamVjdGVkIHJlZiB0byB0aGUgY2xhc3MgY29tcG9uZW50IGFzIGEgcHJvcCBpbiBvcmRlciB0byBwYXNzIGl0IGRpcmVjdGx5IHRvIGEgRE9NIGVsZW1lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIH0sIFtjb21wb25lbnROYW1lXSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICByZXR1cm4gdXNlTWVyZ2VkUmVmcyh3YXJuaW5nUmVmLCByZWYpO1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURyb3Bkb3duTWVudSB9IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0VmZmVjdCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCBJbnB1dEdyb3VwQ29udGV4dCBmcm9tICcuL0lucHV0R3JvdXBDb250ZXh0JztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHVzZVdyYXBwZWRSZWZXaXRoV2FybmluZyBmcm9tICcuL3VzZVdyYXBwZWRSZWZXaXRoV2FybmluZyc7XG5pbXBvcnQgeyBhbGlnblByb3BUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBmbGlwOiB0cnVlXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcERpcmVjdGlvbiwgaXNSVEwpIHtcbiAgY29uc3QgdG9wU3RhcnQgPSBpc1JUTCA/ICd0b3AtZW5kJyA6ICd0b3Atc3RhcnQnO1xuICBjb25zdCB0b3BFbmQgPSBpc1JUTCA/ICd0b3Atc3RhcnQnIDogJ3RvcC1lbmQnO1xuICBjb25zdCBib3R0b21TdGFydCA9IGlzUlRMID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCc7XG4gIGNvbnN0IGJvdHRvbUVuZCA9IGlzUlRMID8gJ2JvdHRvbS1zdGFydCcgOiAnYm90dG9tLWVuZCc7XG4gIGNvbnN0IGxlZnRTdGFydCA9IGlzUlRMID8gJ3JpZ2h0LXN0YXJ0JyA6ICdsZWZ0LXN0YXJ0JztcbiAgY29uc3QgbGVmdEVuZCA9IGlzUlRMID8gJ3JpZ2h0LWVuZCcgOiAnbGVmdC1lbmQnO1xuICBjb25zdCByaWdodFN0YXJ0ID0gaXNSVEwgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnO1xuICBjb25zdCByaWdodEVuZCA9IGlzUlRMID8gJ2xlZnQtZW5kJyA6ICdyaWdodC1lbmQnO1xuICBsZXQgcGxhY2VtZW50ID0gYWxpZ25FbmQgPyBib3R0b21FbmQgOiBib3R0b21TdGFydDtcbiAgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICd1cCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gdG9wRW5kIDogdG9wU3RhcnQ7ZWxzZSBpZiAoZHJvcERpcmVjdGlvbiA9PT0gJ2VuZCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gcmlnaHRFbmQgOiByaWdodFN0YXJ0O2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICdzdGFydCcpIHBsYWNlbWVudCA9IGFsaWduRW5kID8gbGVmdEVuZCA6IGxlZnRTdGFydDtlbHNlIGlmIChkcm9wRGlyZWN0aW9uID09PSAnZG93bi1jZW50ZXJlZCcpIHBsYWNlbWVudCA9ICdib3R0b20nO2Vsc2UgaWYgKGRyb3BEaXJlY3Rpb24gPT09ICd1cC1jZW50ZXJlZCcpIHBsYWNlbWVudCA9ICd0b3AnO1xuICByZXR1cm4gcGxhY2VtZW50O1xufVxuY29uc3QgRHJvcGRvd25NZW51ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgYWxpZ24sXG4gIHJvb3RDbG9zZUV2ZW50LFxuICBmbGlwLFxuICBzaG93OiBzaG93UHJvcHMsXG4gIHJlbmRlck9uTW91bnQsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICBwb3BwZXJDb25maWcsXG4gIHZhcmlhbnQsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgbGV0IGFsaWduRW5kID0gZmFsc2U7XG4gIGNvbnN0IGlzTmF2YmFyID0gdXNlQ29udGV4dChOYXZiYXJDb250ZXh0KTtcbiAgY29uc3QgcHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnZHJvcGRvd24tbWVudScpO1xuICBjb25zdCB7XG4gICAgYWxpZ246IGNvbnRleHRBbGlnbixcbiAgICBkcm9wLFxuICAgIGlzUlRMXG4gIH0gPSB1c2VDb250ZXh0KERyb3Bkb3duQ29udGV4dCk7XG4gIGFsaWduID0gYWxpZ24gfHwgY29udGV4dEFsaWduO1xuICBjb25zdCBpc0lucHV0R3JvdXAgPSB1c2VDb250ZXh0KElucHV0R3JvdXBDb250ZXh0KTtcbiAgY29uc3QgYWxpZ25DbGFzc2VzID0gW107XG4gIGlmIChhbGlnbikge1xuICAgIGlmICh0eXBlb2YgYWxpZ24gPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYWxpZ24pO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhrZXlzLmxlbmd0aCA9PT0gMSwgJ1RoZXJlIHNob3VsZCBvbmx5IGJlIDEgYnJlYWtwb2ludCB3aGVuIHBhc3NpbmcgYW4gb2JqZWN0IHRvIGBhbGlnbmAnKSA6IHZvaWQgMDtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBicmtQb2ludCA9IGtleXNbMF07XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGFsaWduW2Jya1BvaW50XTtcblxuICAgICAgICAvLyAuZHJvcGRvd24tbWVudS1lbmQgaXMgcmVxdWlyZWQgZm9yIHJlc3BvbnNpdmVseSBhbGlnbmluZ1xuICAgICAgICAvLyBsZWZ0IGluIGFkZGl0aW9uIHRvIGFsaWduIGxlZnQgY2xhc3Nlcy5cbiAgICAgICAgYWxpZ25FbmQgPSBkaXJlY3Rpb24gPT09ICdzdGFydCc7XG4gICAgICAgIGFsaWduQ2xhc3Nlcy5wdXNoKGAke3ByZWZpeH0tJHticmtQb2ludH0tJHtkaXJlY3Rpb259YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhbGlnbiA9PT0gJ2VuZCcpIHtcbiAgICAgIGFsaWduRW5kID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGxhY2VtZW50ID0gZ2V0RHJvcGRvd25NZW51UGxhY2VtZW50KGFsaWduRW5kLCBkcm9wLCBpc1JUTCk7XG4gIGNvbnN0IFttZW51UHJvcHMsIHtcbiAgICBoYXNTaG93bixcbiAgICBwb3BwZXIsXG4gICAgc2hvdyxcbiAgICB0b2dnbGVcbiAgfV0gPSB1c2VEcm9wZG93bk1lbnUoe1xuICAgIGZsaXAsXG4gICAgcm9vdENsb3NlRXZlbnQsXG4gICAgc2hvdzogc2hvd1Byb3BzLFxuICAgIHVzZVBvcHBlcjogIWlzTmF2YmFyICYmIGFsaWduQ2xhc3Nlcy5sZW5ndGggPT09IDAsXG4gICAgb2Zmc2V0OiBbMCwgMl0sXG4gICAgcG9wcGVyQ29uZmlnLFxuICAgIHBsYWNlbWVudFxuICB9KTtcbiAgbWVudVByb3BzLnJlZiA9IHVzZU1lcmdlZFJlZnModXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nKHJlZiwgJ0Ryb3Bkb3duTWVudScpLCBtZW51UHJvcHMucmVmKTtcbiAgdXNlSXNvbW9ycGhpY0VmZmVjdCgoKSA9PiB7XG4gICAgLy8gUG9wcGVyJ3MgaW5pdGlhbCBwb3NpdGlvbiBmb3IgdGhlIG1lbnUgaXMgaW5jb3JyZWN0IHdoZW5cbiAgICAvLyByZW5kZXJPbk1vdW50PXRydWUuIE5lZWQgdG8gY2FsbCB1cGRhdGUoKSB0byBjb3JyZWN0IGl0LlxuICAgIGlmIChzaG93KSBwb3BwZXIgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcHBlci51cGRhdGUoKTtcbiAgfSwgW3Nob3ddKTtcbiAgaWYgKCFoYXNTaG93biAmJiAhcmVuZGVyT25Nb3VudCAmJiAhaXNJbnB1dEdyb3VwKSByZXR1cm4gbnVsbDtcblxuICAvLyBGb3IgY3VzdG9tIGNvbXBvbmVudHMgcHJvdmlkZSBhZGRpdGlvbmFsLCBub24tRE9NLCBwcm9wcztcbiAgaWYgKHR5cGVvZiBDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgbWVudVByb3BzLnNob3cgPSBzaG93O1xuICAgIG1lbnVQcm9wcy5jbG9zZSA9ICgpID0+IHRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogdG9nZ2xlKGZhbHNlKTtcbiAgICBtZW51UHJvcHMuYWxpZ24gPSBhbGlnbjtcbiAgfVxuICBsZXQgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgaWYgKHBvcHBlciAhPSBudWxsICYmIHBvcHBlci5wbGFjZW1lbnQpIHtcbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoZSBkZWZhdWx0IHBvcHBlciBzdHlsZSxcbiAgICAvLyBtZW51cyBhcmUgZGlzcGxheTogbm9uZSB3aGVuIG5vdCBzaG93bi5cbiAgICBzdHlsZSA9IHtcbiAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgLi4ubWVudVByb3BzLnN0eWxlXG4gICAgfTtcbiAgICBwcm9wc1sneC1wbGFjZW1lbnQnXSA9IHBvcHBlci5wbGFjZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgIC4uLnByb3BzLFxuICAgIC4uLm1lbnVQcm9wcyxcbiAgICBzdHlsZTogc3R5bGVcbiAgICAvLyBCb290c3RyYXAgY3NzIHJlcXVpcmVzIHRoaXMgZGF0YSBhdHRyaWIgdG8gc3R5bGUgcmVzcG9uc2l2ZSBtZW51cy5cbiAgICAsXG4gICAgLi4uKChhbGlnbkNsYXNzZXMubGVuZ3RoIHx8IGlzTmF2YmFyKSAmJiB7XG4gICAgICAnZGF0YS1icy1wb3BwZXInOiAnc3RhdGljJ1xuICAgIH0pLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIHByZWZpeCwgc2hvdyAmJiAnc2hvdycsIGFsaWduRW5kICYmIGAke3ByZWZpeH0tZW5kYCwgdmFyaWFudCAmJiBgJHtwcmVmaXh9LSR7dmFyaWFudH1gLCAuLi5hbGlnbkNsYXNzZXMpXG4gIH0pO1xufSk7XG5Ecm9wZG93bk1lbnUuZGlzcGxheU5hbWUgPSAnRHJvcGRvd25NZW51JztcbkRyb3Bkb3duTWVudS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCdXR0b25Qcm9wcyB9IGZyb20gJ0ByZXN0YXJ0L3VpL0J1dHRvbic7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgdmFyaWFudDogJ3ByaW1hcnknLFxuICBhY3RpdmU6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2Vcbn07XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBhcyxcbiAgYnNQcmVmaXgsXG4gIHZhcmlhbnQsXG4gIHNpemUsXG4gIGFjdGl2ZSxcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2J0bicpO1xuICBjb25zdCBbYnV0dG9uUHJvcHMsIHtcbiAgICB0YWdOYW1lXG4gIH1dID0gdXNlQnV0dG9uUHJvcHMoe1xuICAgIHRhZ05hbWU6IGFzLFxuICAgIC4uLnByb3BzXG4gIH0pO1xuICBjb25zdCBDb21wb25lbnQgPSB0YWdOYW1lO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4uYnV0dG9uUHJvcHMsXG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCBhY3RpdmUgJiYgJ2FjdGl2ZScsIHZhcmlhbnQgJiYgYCR7cHJlZml4fS0ke3ZhcmlhbnR9YCwgc2l6ZSAmJiBgJHtwcmVmaXh9LSR7c2l6ZX1gLCBwcm9wcy5ocmVmICYmIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcpXG4gIH0pO1xufSk7XG5CdXR0b24uZGlzcGxheU5hbWUgPSAnQnV0dG9uJztcbkJ1dHRvbi5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBCdXR0b247IiwiaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VEcm9wZG93blRvZ2dsZSB9IGZyb20gJ0ByZXN0YXJ0L3VpL0Ryb3Bkb3duVG9nZ2xlJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9CdXR0b24nO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB1c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcgZnJvbSAnLi91c2VXcmFwcGVkUmVmV2l0aFdhcm5pbmcnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERyb3Bkb3duVG9nZ2xlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIHNwbGl0LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkQnNQcmVmaXgsXG4gIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgYXM6IENvbXBvbmVudCA9IEJ1dHRvbixcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi10b2dnbGUnKTtcbiAgY29uc3QgZHJvcGRvd25Db250ZXh0ID0gdXNlQ29udGV4dChEcm9wZG93bkNvbnRleHQpO1xuICBpZiAoY2hpbGRCc1ByZWZpeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHJvcHMuYnNQcmVmaXggPSBjaGlsZEJzUHJlZml4O1xuICB9XG4gIGNvbnN0IFt0b2dnbGVQcm9wc10gPSB1c2VEcm9wZG93blRvZ2dsZSgpO1xuICB0b2dnbGVQcm9wcy5yZWYgPSB1c2VNZXJnZWRSZWZzKHRvZ2dsZVByb3BzLnJlZiwgdXNlV3JhcHBlZFJlZldpdGhXYXJuaW5nKHJlZiwgJ0Ryb3Bkb3duVG9nZ2xlJykpO1xuXG4gIC8vIFRoaXMgaW50ZW50aW9uYWxseSBmb3J3YXJkcyBzaXplIGFuZCB2YXJpYW50IChpZiBzZXQpIHRvIHRoZVxuICAvLyB1bmRlcmx5aW5nIGNvbXBvbmVudCwgdG8gYWxsb3cgaXQgdG8gcmVuZGVyIHNpemUgYW5kIHN0eWxlIHZhcmlhbnRzLlxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgcHJlZml4LCBzcGxpdCAmJiBgJHtwcmVmaXh9LXNwbGl0YCwgKGRyb3Bkb3duQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogZHJvcGRvd25Db250ZXh0LnNob3cpICYmICdzaG93JyksXG4gICAgLi4udG9nZ2xlUHJvcHMsXG4gICAgLi4ucHJvcHNcbiAgfSk7XG59KTtcbkRyb3Bkb3duVG9nZ2xlLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duVG9nZ2xlJztcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duVG9nZ2xlOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCYXNlRHJvcGRvd24gZnJvbSAnQHJlc3RhcnQvdWkvRHJvcGRvd24nO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgRHJvcGRvd25Db250ZXh0IGZyb20gJy4vRHJvcGRvd25Db250ZXh0JztcbmltcG9ydCBEcm9wZG93bkl0ZW0gZnJvbSAnLi9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IERyb3Bkb3duTWVudSwgeyBnZXREcm9wZG93bk1lbnVQbGFjZW1lbnQgfSBmcm9tICcuL0Ryb3Bkb3duTWVudSc7XG5pbXBvcnQgRHJvcGRvd25Ub2dnbGUgZnJvbSAnLi9Ecm9wZG93blRvZ2dsZSc7XG5pbXBvcnQgSW5wdXRHcm91cENvbnRleHQgZnJvbSAnLi9JbnB1dEdyb3VwQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXgsIHVzZUlzUlRMIH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBjcmVhdGVXaXRoQnNQcmVmaXggZnJvbSAnLi9jcmVhdGVXaXRoQnNQcmVmaXgnO1xuaW1wb3J0IHsgYWxpZ25Qcm9wVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERyb3Bkb3duSGVhZGVyID0gY3JlYXRlV2l0aEJzUHJlZml4KCdkcm9wZG93bi1oZWFkZXInLCB7XG4gIGRlZmF1bHRQcm9wczoge1xuICAgIHJvbGU6ICdoZWFkaW5nJ1xuICB9XG59KTtcbmNvbnN0IERyb3Bkb3duRGl2aWRlciA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnZHJvcGRvd24tZGl2aWRlcicsIHtcbiAgQ29tcG9uZW50OiAnaHInLFxuICBkZWZhdWx0UHJvcHM6IHtcbiAgICByb2xlOiAnc2VwYXJhdG9yJ1xuICB9XG59KTtcbmNvbnN0IERyb3Bkb3duSXRlbVRleHQgPSBjcmVhdGVXaXRoQnNQcmVmaXgoJ2Ryb3Bkb3duLWl0ZW0tdGV4dCcsIHtcbiAgQ29tcG9uZW50OiAnc3Bhbidcbn0pO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBuYXZiYXI6IGZhbHNlLFxuICBhbGlnbjogJ3N0YXJ0JyxcbiAgYXV0b0Nsb3NlOiB0cnVlLFxuICBkcm9wOiAnZG93bidcbn07XG5jb25zdCBEcm9wZG93biA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYnNQcmVmaXgsXG4gICAgZHJvcCxcbiAgICBzaG93LFxuICAgIGNsYXNzTmFtZSxcbiAgICBhbGlnbixcbiAgICBvblNlbGVjdCxcbiAgICBvblRvZ2dsZSxcbiAgICBmb2N1c0ZpcnN0SXRlbU9uU2hvdyxcbiAgICAvLyBOZWVkIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBcImFzXCIgZHVyaW5nIHByb3AgZGVzdHJ1Y3R1cmluZyB0byBiZSBjb21wYXRpYmxlIHdpdGggc3R5bGVkLWNvbXBvbmVudHMgZ2l0aHViLmNvbS9yZWFjdC1ib290c3RyYXAvcmVhY3QtYm9vdHN0cmFwL2lzc3Vlcy8zNTk1XG4gICAgYXM6IENvbXBvbmVudCA9ICdkaXYnLFxuICAgIG5hdmJhcjogXzQsXG4gICAgYXV0b0Nsb3NlLFxuICAgIC4uLnByb3BzXG4gIH0gPSB1c2VVbmNvbnRyb2xsZWQocFByb3BzLCB7XG4gICAgc2hvdzogJ29uVG9nZ2xlJ1xuICB9KTtcbiAgY29uc3QgaXNJbnB1dEdyb3VwID0gdXNlQ29udGV4dChJbnB1dEdyb3VwQ29udGV4dCk7XG4gIGNvbnN0IHByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ2Ryb3Bkb3duJyk7XG4gIGNvbnN0IGlzUlRMID0gdXNlSXNSVEwoKTtcbiAgY29uc3QgaXNDbG9zaW5nUGVybWl0dGVkID0gc291cmNlID0+IHtcbiAgICAvLyBhdXRvQ2xvc2U9ZmFsc2Ugb25seSBwZXJtaXRzIGNsb3NlIG9uIGJ1dHRvbiBjbGlja1xuICAgIGlmIChhdXRvQ2xvc2UgPT09IGZhbHNlKSByZXR1cm4gc291cmNlID09PSAnY2xpY2snO1xuXG4gICAgLy8gYXV0b0Nsb3NlPWluc2lkZSBkb2Vzbid0IHBlcm1pdCBjbG9zZSBvbiByb290Q2xvc2VcbiAgICBpZiAoYXV0b0Nsb3NlID09PSAnaW5zaWRlJykgcmV0dXJuIHNvdXJjZSAhPT0gJ3Jvb3RDbG9zZSc7XG5cbiAgICAvLyBhdXRvQ2xvc2U9b3V0c2lkZSBkb2Vzbid0IHBlcm1pdCBjbG9zZSBvbiBzZWxlY3RcbiAgICBpZiAoYXV0b0Nsb3NlID09PSAnb3V0c2lkZScpIHJldHVybiBzb3VyY2UgIT09ICdzZWxlY3QnO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICBjb25zdCBoYW5kbGVUb2dnbGUgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0U2hvdywgbWV0YSkgPT4ge1xuICAgIGlmIChtZXRhLm9yaWdpbmFsRXZlbnQuY3VycmVudFRhcmdldCA9PT0gZG9jdW1lbnQgJiYgKG1ldGEuc291cmNlICE9PSAna2V5ZG93bicgfHwgbWV0YS5vcmlnaW5hbEV2ZW50LmtleSA9PT0gJ0VzY2FwZScpKSBtZXRhLnNvdXJjZSA9ICdyb290Q2xvc2UnO1xuICAgIGlmIChpc0Nsb3NpbmdQZXJtaXR0ZWQobWV0YS5zb3VyY2UpKSBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUobmV4dFNob3csIG1ldGEpO1xuICB9KTtcbiAgY29uc3QgYWxpZ25FbmQgPSBhbGlnbiA9PT0gJ2VuZCc7XG4gIGNvbnN0IHBsYWNlbWVudCA9IGdldERyb3Bkb3duTWVudVBsYWNlbWVudChhbGlnbkVuZCwgZHJvcCwgaXNSVEwpO1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgYWxpZ24sXG4gICAgZHJvcCxcbiAgICBpc1JUTFxuICB9KSwgW2FsaWduLCBkcm9wLCBpc1JUTF0pO1xuICBjb25zdCBkaXJlY3Rpb25DbGFzc2VzID0ge1xuICAgIGRvd246IHByZWZpeCxcbiAgICAnZG93bi1jZW50ZXJlZCc6IGAke3ByZWZpeH0tY2VudGVyYCxcbiAgICB1cDogJ2Ryb3B1cCcsXG4gICAgJ3VwLWNlbnRlcmVkJzogJ2Ryb3B1cC1jZW50ZXIgZHJvcHVwJyxcbiAgICBlbmQ6ICdkcm9wZW5kJyxcbiAgICBzdGFydDogJ2Ryb3BzdGFydCdcbiAgfTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0VmFsdWUsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEJhc2VEcm9wZG93biwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBzaG93OiBzaG93LFxuICAgICAgb25TZWxlY3Q6IG9uU2VsZWN0LFxuICAgICAgb25Ub2dnbGU6IGhhbmRsZVRvZ2dsZSxcbiAgICAgIGZvY3VzRmlyc3RJdGVtT25TaG93OiBmb2N1c0ZpcnN0SXRlbU9uU2hvdyxcbiAgICAgIGl0ZW1TZWxlY3RvcjogYC4ke3ByZWZpeH0taXRlbTpub3QoLmRpc2FibGVkKTpub3QoOmRpc2FibGVkKWAsXG4gICAgICBjaGlsZHJlbjogaXNJbnB1dEdyb3VwID8gcHJvcHMuY2hpbGRyZW4gOiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBzaG93ICYmICdzaG93JywgZGlyZWN0aW9uQ2xhc3Nlc1tkcm9wXSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSk7XG59KTtcbkRyb3Bkb3duLmRpc3BsYXlOYW1lID0gJ0Ryb3Bkb3duJztcbkRyb3Bkb3duLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oRHJvcGRvd24sIHtcbiAgVG9nZ2xlOiBEcm9wZG93blRvZ2dsZSxcbiAgTWVudTogRHJvcGRvd25NZW51LFxuICBJdGVtOiBEcm9wZG93bkl0ZW0sXG4gIEl0ZW1UZXh0OiBEcm9wZG93bkl0ZW1UZXh0LFxuICBEaXZpZGVyOiBEcm9wZG93bkRpdmlkZXIsXG4gIEhlYWRlcjogRHJvcGRvd25IZWFkZXJcbn0pOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFRhYkNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBkZWZhdWx0IFRhYkNvbnRleHQ7IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXNcIiwgXCJhY3RpdmVcIiwgXCJldmVudEtleVwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQsIHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnLi9TZWxlY3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBUYWJDb250ZXh0IGZyb20gJy4vVGFiQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU5hdkl0ZW0oe1xuICBrZXksXG4gIG9uQ2xpY2ssXG4gIGFjdGl2ZSxcbiAgaWQsXG4gIHJvbGUsXG4gIGRpc2FibGVkXG59KSB7XG4gIGNvbnN0IHBhcmVudE9uU2VsZWN0ID0gdXNlQ29udGV4dChTZWxlY3RhYmxlQ29udGV4dCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VDb250ZXh0KE5hdkNvbnRleHQpO1xuICBjb25zdCB0YWJDb250ZXh0ID0gdXNlQ29udGV4dChUYWJDb250ZXh0KTtcbiAgbGV0IGlzQWN0aXZlID0gYWN0aXZlO1xuICBjb25zdCBwcm9wcyA9IHtcbiAgICByb2xlXG4gIH07XG4gIGlmIChuYXZDb250ZXh0KSB7XG4gICAgaWYgKCFyb2xlICYmIG5hdkNvbnRleHQucm9sZSA9PT0gJ3RhYmxpc3QnKSBwcm9wcy5yb2xlID0gJ3RhYic7XG4gICAgY29uc3QgY29udGV4dENvbnRyb2xsZXJJZCA9IG5hdkNvbnRleHQuZ2V0Q29udHJvbGxlcklkKGtleSAhPSBudWxsID8ga2V5IDogbnVsbCk7XG4gICAgY29uc3QgY29udGV4dENvbnRyb2xsZWRJZCA9IG5hdkNvbnRleHQuZ2V0Q29udHJvbGxlZElkKGtleSAhPSBudWxsID8ga2V5IDogbnVsbCk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJvcHNbZGF0YUF0dHIoJ2V2ZW50LWtleScpXSA9IGtleTtcbiAgICBwcm9wcy5pZCA9IGNvbnRleHRDb250cm9sbGVySWQgfHwgaWQ7XG4gICAgaXNBY3RpdmUgPSBhY3RpdmUgPT0gbnVsbCAmJiBrZXkgIT0gbnVsbCA/IG5hdkNvbnRleHQuYWN0aXZlS2V5ID09PSBrZXkgOiBhY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBTaW1wbGlmaWVkIHNjZW5hcmlvIGZvciBgbW91bnRPbkVudGVyYC5cbiAgICAgKlxuICAgICAqIFdoaWxlIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8ga2VlcCAnYXJpYS1jb250cm9scycgZm9yIHRhYnMgdGhhdCBoYXZlIGJlZW4gbW91bnRlZCBhdCBsZWFzdFxuICAgICAqIG9uY2UsIGl0IHdvdWxkIGFsc28gY29tcGxpY2F0ZSB0aGUgY29kZSBxdWl0ZSBhIGJpdCwgZm9yIHZlcnkgbGl0dGxlIGdhaW4uXG4gICAgICogVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBpcyBwcm9iYWJseSBnb29kIGVub3VnaC5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LXJlc3RhcnQvdWkvcHVsbC80MCNpc3N1ZWNvbW1lbnQtMTAwOTk3MTU2MVxuICAgICAqL1xuICAgIGlmIChpc0FjdGl2ZSB8fCAhKHRhYkNvbnRleHQgIT0gbnVsbCAmJiB0YWJDb250ZXh0LnVubW91bnRPbkV4aXQpICYmICEodGFiQ29udGV4dCAhPSBudWxsICYmIHRhYkNvbnRleHQubW91bnRPbkVudGVyKSkgcHJvcHNbJ2FyaWEtY29udHJvbHMnXSA9IGNvbnRleHRDb250cm9sbGVkSWQ7XG4gIH1cbiAgaWYgKHByb3BzLnJvbGUgPT09ICd0YWInKSB7XG4gICAgcHJvcHNbJ2FyaWEtc2VsZWN0ZWQnXSA9IGlzQWN0aXZlO1xuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIHByb3BzLnRhYkluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcHJvcHMudGFiSW5kZXggPSAtMTtcbiAgICAgIHByb3BzWydhcmlhLWRpc2FibGVkJ10gPSB0cnVlO1xuICAgIH1cbiAgfVxuICBwcm9wcy5vbkNsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBvbkNsaWNrID09IG51bGwgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocGFyZW50T25TZWxlY3QgJiYgIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgcGFyZW50T25TZWxlY3Qoa2V5LCBlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3Byb3BzLCB7XG4gICAgaXNBY3RpdmVcbiAgfV07XG59XG5jb25zdCBOYXZJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKF9yZWYsIHJlZikgPT4ge1xuICBsZXQge1xuICAgICAgYXM6IENvbXBvbmVudCA9IEJ1dHRvbixcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGV2ZW50S2V5XG4gICAgfSA9IF9yZWYsXG4gICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtwcm9wcywgbWV0YV0gPSB1c2VOYXZJdGVtKE9iamVjdC5hc3NpZ24oe1xuICAgIGtleTogbWFrZUV2ZW50S2V5KGV2ZW50S2V5LCBvcHRpb25zLmhyZWYpLFxuICAgIGFjdGl2ZVxuICB9LCBvcHRpb25zKSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBwcm9wc1tkYXRhQXR0cignYWN0aXZlJyldID0gbWV0YS5pc0FjdGl2ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgcHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7XG59KTtcbk5hdkl0ZW0uZGlzcGxheU5hbWUgPSAnTmF2SXRlbSc7XG5leHBvcnQgZGVmYXVsdCBOYXZJdGVtOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEFuY2hvciBmcm9tICdAcmVzdGFydC91aS9BbmNob3InO1xuaW1wb3J0IHsgdXNlTmF2SXRlbSB9IGZyb20gJ0ByZXN0YXJ0L3VpL05hdkl0ZW0nO1xuaW1wb3J0IHsgbWFrZUV2ZW50S2V5IH0gZnJvbSAnQHJlc3RhcnQvdWkvU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGRpc2FibGVkOiBmYWxzZVxufTtcbmNvbnN0IE5hdkxpbmsgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBic1ByZWZpeCxcbiAgY2xhc3NOYW1lLFxuICBhczogQ29tcG9uZW50ID0gQW5jaG9yLFxuICBhY3RpdmUsXG4gIGV2ZW50S2V5LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2LWxpbmsnKTtcbiAgY29uc3QgW25hdkl0ZW1Qcm9wcywgbWV0YV0gPSB1c2VOYXZJdGVtKHtcbiAgICBrZXk6IG1ha2VFdmVudEtleShldmVudEtleSwgcHJvcHMuaHJlZiksXG4gICAgYWN0aXZlLFxuICAgIC4uLnByb3BzXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgLi4ubmF2SXRlbVByb3BzLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4LCBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBtZXRhLmlzQWN0aXZlICYmICdhY3RpdmUnKVxuICB9KTtcbn0pO1xuTmF2TGluay5kaXNwbGF5TmFtZSA9ICdOYXZMaW5rJztcbk5hdkxpbmsuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgTmF2TGluazsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAnLi9Ecm9wZG93bic7XG5pbXBvcnQgTmF2TGluayBmcm9tICcuL05hdkxpbmsnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdkRyb3Bkb3duID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBjaGlsZHJlbixcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgcm9vdENsb3NlRXZlbnQsXG4gIG1lbnVSb2xlLFxuICBkaXNhYmxlZCxcbiAgYWN0aXZlLFxuICByZW5kZXJNZW51T25Nb3VudCxcbiAgbWVudVZhcmlhbnQsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgLyogTmF2SXRlbSBoYXMgbm8gYWRkaXRpb25hbCBsb2dpYywgaXQncyBwdXJlbHkgcHJlc2VudGF0aW9uYWwuIENhbiBzZXQgbmF2IGl0ZW0gY2xhc3MgaGVyZSB0byBzdXBwb3J0IFwiYXNcIiAqL1xuICBjb25zdCBuYXZJdGVtUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KHVuZGVmaW5lZCwgJ25hdi1pdGVtJyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoRHJvcGRvd24sIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBuYXZJdGVtUHJlZml4KSxcbiAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KERyb3Bkb3duLlRvZ2dsZSwge1xuICAgICAgaWQ6IGlkLFxuICAgICAgZXZlbnRLZXk6IG51bGwsXG4gICAgICBhY3RpdmU6IGFjdGl2ZSxcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgIGNoaWxkQnNQcmVmaXg6IGJzUHJlZml4LFxuICAgICAgYXM6IE5hdkxpbmssXG4gICAgICBjaGlsZHJlbjogdGl0bGVcbiAgICB9KSwgLyojX19QVVJFX18qL19qc3goRHJvcGRvd24uTWVudSwge1xuICAgICAgcm9sZTogbWVudVJvbGUsXG4gICAgICByZW5kZXJPbk1vdW50OiByZW5kZXJNZW51T25Nb3VudCxcbiAgICAgIHJvb3RDbG9zZUV2ZW50OiByb290Q2xvc2VFdmVudCxcbiAgICAgIHZhcmlhbnQ6IG1lbnVWYXJpYW50LFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSldXG4gIH0pO1xufSk7XG5OYXZEcm9wZG93bi5kaXNwbGF5TmFtZSA9ICdOYXZEcm9wZG93bic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdkRyb3Bkb3duLCB7XG4gIEl0ZW06IERyb3Bkb3duLkl0ZW0sXG4gIEl0ZW1UZXh0OiBEcm9wZG93bi5JdGVtVGV4dCxcbiAgRGl2aWRlcjogRHJvcGRvd24uRGl2aWRlcixcbiAgSGVhZGVyOiBEcm9wZG93bi5IZWFkZXJcbn0pOyIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgSW5mb1NlcnZpY2UgfSBmcm9tIFwiLi4vSW5mb1NlcnZpY2VcIjtcbmltcG9ydCB7IExvZ2luRm9ybSB9IGZyb20gXCIuL0xvZ2luRm9ybVwiO1xuaW1wb3J0IHsgTG9hZGluZ0luZm8gfSBmcm9tIFwiLi9Mb2FkaW5nSW5mb1wiO1xuaW1wb3J0IHsgTmF2RHJvcGRvd24gfSBmcm9tIFwicmVhY3QtYm9vdHN0cmFwXCI7XG5cbmZ1bmN0aW9uIF9Vc2VyQ29tcG9uZW50KHNlc3Npb25faW5mbywgbG9nb3V0X2NhbGxiYWNrKSB7XG4gIGNvbnN0IHRpdGxlID0gKFxuICAgIDw+XG4gICAgICB7c2Vzc2lvbl9pbmZvLnVzZXJuYW1lfSA8aSBjbGFzc05hbWU9XCJiaSBiaS1wZXJzb24tZmlsbFwiIC8+XG4gICAgPC8+XG4gICk7XG4gIHJldHVybiAoXG4gICAgPE5hdkRyb3Bkb3duIGFsaWduPVwiZW5kXCIgdGl0bGU9e3RpdGxlfT5cbiAgICAgIDxOYXZEcm9wZG93bi5JdGVtIGFzPVwiYnV0dG9uXCIgb25DbGljaz17bG9nb3V0X2NhbGxiYWNrfSBocmVmPVwiI1wiPlxuICAgICAgICBMb2dvdXRcbiAgICAgIDwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICA8L05hdkRyb3Bkb3duPlxuICApO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvbiBvbkxvZ291dENhbGxiYWNrXG4gKlxuICogVG8gYmUgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dvdXQuXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuXG4vKipcbiAqIEBmdW5jdGlvbiBvbkxvZ2luQ2FsbGJhY2tcbiAqXG4gKiBUbyBiZSB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luLlxuICpcbiAqIEBwYXJhbSB7QGluZGlzY2FsZS9jYW9zZGItd2VidWktaW5mby1zZXJ2aWNlLlNlc3Npb25JbmZvfSBzZXNzaW9uSW5mbyBhYm91dFxuICogICB0aGUgY3VycmVudCB1c2VyLlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuXG4vKipcbiAqIFRoZSBVc2VyQ29tcG9uZW50IHNob3dzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyIG9yIGFcbiAqIExvZ2luRm9ybS5cbiAqXG4gKiBAcGFyYW0ge29uTG9naW5DYWxsYmFja30gb25Mb2dpbiBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlXG4gKiAgIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbG9naW4uIFdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlXG4gKiAgIFVzZXJDb21wb25lbnQgcHJvY2VlZHMgYXMgdXN1YWwgYW5kIHJlLXJlbmRlcnMgdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7b25Mb2dvdXRDYWxsYmFja30gb25Mb2dvdXQgQ2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZVxuICogICBjYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ291dC4gV2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGVcbiAqICAgVXNlckNvbXBvbmVudCBwcm9jZWVkcyBhcyB1c3VhbCBhbmQgcmUtcmVuZGVycyB0aGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gVXNlckNvbXBvbmVudChvbkxvZ2luLCBvbkxvZ291dCkge1xuICBjb25zdCBbY29tcG9uZW50LCBzZXRDb21wb25lbnRdID0gdXNlU3RhdGUobnVsbCk7XG5cbiAgdmFyIHNob3dfY29tcG9uZW50ID0gY29tcG9uZW50O1xuICBpZiAoY29tcG9uZW50ID09PSBudWxsKSB7XG4gICAgdmFyIHNob3dfbG9naW5fZm9ybTtcblxuICAgIGNvbnN0IGxvZ291dF9jYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldENvbXBvbmVudCg8TG9hZGluZ0luZm8gc2l6ZT1cInNtXCIgLz4pO1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gbmV3IEluZm9TZXJ2aWNlKCk7XG4gICAgICAgIGF3YWl0IHNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgIGlmIChvbkxvZ291dCgpKSB7XG4gICAgICAgICAgc2hvd19sb2dpbl9mb3JtKFwiWW91IGhhdmUgYmVlbiBsb2dnZWQgb3V0LlwiLCBcInN1Y2Nlc3NcIik7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2hvd19sb2dpbl9mb3JtKFwiTG9nb3V0IGZhaWxlZDogXCIgKyBlLm1lc3NhZ2UsIFwiZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHNob3dfc2Vzc2lvbl9pbmZvID0gKHNlc3Npb25faW5mbykgPT4ge1xuICAgICAgLy8gVE9ETyBpc19hbm9ueW1vdXMgbWVtYmVyP1xuICAgICAgaWYgKHNlc3Npb25faW5mby51c2VybmFtZSA9PT0gXCJhbm9ueW1vdXNcIikge1xuICAgICAgICBzaG93X2xvZ2luX2Zvcm0oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldENvbXBvbmVudChfVXNlckNvbXBvbmVudChzZXNzaW9uX2luZm8sIGxvZ291dF9jYWxsYmFjaykpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBsb2dpbl9mYWlsID0gKGVycm9yKSA9PiB7XG4gICAgICBzaG93X2xvZ2luX2Zvcm0oZXJyb3IubWVzc2FnZSwgXCJlcnJvclwiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9naW5fc3VjY2VzcyA9IChzZXNzaW9uX2luZm8pID0+IHtcbiAgICAgIGlmIChvbkxvZ2luKHNlc3Npb25faW5mbykpIHtcbiAgICAgICAgc2hvd19zZXNzaW9uX2luZm8oc2Vzc2lvbl9pbmZvKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc2hvd19sb2dpbl9mb3JtID0gKG1lc3NhZ2UsIG1lc3NhZ2VUeXBlKSA9PiB7XG4gICAgICB2YXIgbG9naW5fZm9ybSA9IChcbiAgICAgICAgPExvZ2luRm9ybVxuICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgbWVzc2FnZVR5cGU9e21lc3NhZ2VUeXBlfVxuICAgICAgICAgIHRoZW49e2xvZ2luX3N1Y2Nlc3N9XG4gICAgICAgICAgb25FcnJvcj17bG9naW5fZmFpbH1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgICBzZXRDb21wb25lbnQobG9naW5fZm9ybSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgSW5mb1NlcnZpY2UoKTtcbiAgICBzZXJ2aWNlXG4gICAgICAuZ2V0U2Vzc2lvbkluZm8oKVxuICAgICAgLnRoZW4oc2hvd19zZXNzaW9uX2luZm8pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiBzaG93X2xvZ2luX2Zvcm0oZXJyb3IubWVzc2FnZSwgXCJpbmZvXCIpKTtcbiAgICBzaG93X2NvbXBvbmVudCA9IDxMb2FkaW5nSW5mbyBzaXplPVwic21cIiAvPjtcbiAgfVxuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInVzZXItY29tcG9uZW50XCI+e3Nob3dfY29tcG9uZW50fTwvZGl2Pjtcbn1cblxuVXNlckNvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uTG9naW46ICgpID0+IHRydWUsXG4gIG9uTG9nb3V0OiAoKSA9PiB0cnVlLFxufTtcbiIsImNvbnN0IEJyYW5kaW5nID0ge1xuICBuYW1lOiBcIkNhb3NEQlwiLFxufTtcblxuZXhwb3J0IHsgQnJhbmRpbmcgfTtcbiIsImNvbnN0IF9leGNsdWRlZCA9IFtcImFzXCIsIFwib25TZWxlY3RcIiwgXCJhY3RpdmVLZXlcIiwgXCJyb2xlXCIsIFwib25LZXlEb3duXCJdO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IHFzYSBmcm9tICdkb20taGVscGVycy9xdWVyeVNlbGVjdG9yQWxsJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUZvcmNlVXBkYXRlIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUZvcmNlVXBkYXRlJztcbmltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IE5hdkNvbnRleHQgZnJvbSAnLi9OYXZDb250ZXh0JztcbmltcG9ydCBTZWxlY3RhYmxlQ29udGV4dCwgeyBtYWtlRXZlbnRLZXkgfSBmcm9tICcuL1NlbGVjdGFibGVDb250ZXh0JztcbmltcG9ydCBUYWJDb250ZXh0IGZyb20gJy4vVGFiQ29udGV4dCc7XG5pbXBvcnQgeyBkYXRhQXR0ciwgZGF0YVByb3AgfSBmcm9tICcuL0RhdGFLZXknO1xuaW1wb3J0IE5hdkl0ZW0gZnJvbSAnLi9OYXZJdGVtJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG5jb25zdCBub29wID0gKCkgPT4ge307XG5jb25zdCBFVkVOVF9LRVlfQVRUUiA9IGRhdGFBdHRyKCdldmVudC1rZXknKTtcbmNvbnN0IE5hdiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIC8vIE5lZWQgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IFwiYXNcIiBkdXJpbmcgcHJvcCBkZXN0cnVjdHVyaW5nIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBzdHlsZWQtY29tcG9uZW50cyBnaXRodWIuY29tL3JlYWN0LWJvb3RzdHJhcC9yZWFjdC1ib290c3RyYXAvaXNzdWVzLzM1OTVcbiAgICAgIGFzOiBDb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIG9uU2VsZWN0LFxuICAgICAgYWN0aXZlS2V5LFxuICAgICAgcm9sZSxcbiAgICAgIG9uS2V5RG93blxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gQSByZWYgYW5kIGZvcmNlVXBkYXRlIGZvciByZWZvY3VzLCBiL2Mgd2Ugb25seSB3YW50IHRvIHRyaWdnZXIgd2hlbiBuZWVkZWRcbiAgLy8gYW5kIGRvbid0IHdhbnQgdG8gcmVzZXQgdGhlIHNldCBpbiB0aGUgZWZmZWN0XG4gIGNvbnN0IGZvcmNlVXBkYXRlID0gdXNlRm9yY2VVcGRhdGUoKTtcbiAgY29uc3QgbmVlZHNSZWZvY3VzUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcGFyZW50T25TZWxlY3QgPSB1c2VDb250ZXh0KFNlbGVjdGFibGVDb250ZXh0KTtcbiAgY29uc3QgdGFiQ29udGV4dCA9IHVzZUNvbnRleHQoVGFiQ29udGV4dCk7XG4gIGxldCBnZXRDb250cm9sbGVkSWQsIGdldENvbnRyb2xsZXJJZDtcbiAgaWYgKHRhYkNvbnRleHQpIHtcbiAgICByb2xlID0gcm9sZSB8fCAndGFibGlzdCc7XG4gICAgYWN0aXZlS2V5ID0gdGFiQ29udGV4dC5hY3RpdmVLZXk7XG4gICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0byBkdXBsaWNhdGUgdGhlc2U/XG4gICAgZ2V0Q29udHJvbGxlZElkID0gdGFiQ29udGV4dC5nZXRDb250cm9sbGVkSWQ7XG4gICAgZ2V0Q29udHJvbGxlcklkID0gdGFiQ29udGV4dC5nZXRDb250cm9sbGVySWQ7XG4gIH1cbiAgY29uc3QgbGlzdE5vZGUgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGdldE5leHRBY3RpdmVUYWIgPSBvZmZzZXQgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRMaXN0Tm9kZSA9IGxpc3ROb2RlLmN1cnJlbnQ7XG4gICAgaWYgKCFjdXJyZW50TGlzdE5vZGUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGl0ZW1zID0gcXNhKGN1cnJlbnRMaXN0Tm9kZSwgYFske0VWRU5UX0tFWV9BVFRSfV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKWApO1xuICAgIGNvbnN0IGFjdGl2ZUNoaWxkID0gY3VycmVudExpc3ROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1thcmlhLXNlbGVjdGVkPXRydWVdJyk7XG4gICAgaWYgKCFhY3RpdmVDaGlsZCB8fCBhY3RpdmVDaGlsZCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaW5kZXggPSBpdGVtcy5pbmRleE9mKGFjdGl2ZUNoaWxkKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgbmV4dEluZGV4ID0gaW5kZXggKyBvZmZzZXQ7XG4gICAgaWYgKG5leHRJbmRleCA+PSBpdGVtcy5sZW5ndGgpIG5leHRJbmRleCA9IDA7XG4gICAgaWYgKG5leHRJbmRleCA8IDApIG5leHRJbmRleCA9IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGl0ZW1zW25leHRJbmRleF07XG4gIH07XG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChrZXksIGV2ZW50KSA9PiB7XG4gICAgaWYgKGtleSA9PSBudWxsKSByZXR1cm47XG4gICAgb25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0KGtleSwgZXZlbnQpO1xuICAgIHBhcmVudE9uU2VsZWN0ID09IG51bGwgPyB2b2lkIDAgOiBwYXJlbnRPblNlbGVjdChrZXksIGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBvbktleURvd24gPT0gbnVsbCA/IHZvaWQgMCA6IG9uS2V5RG93bihldmVudCk7XG4gICAgaWYgKCF0YWJDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBuZXh0QWN0aXZlQ2hpbGQ7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgbmV4dEFjdGl2ZUNoaWxkID0gZ2V0TmV4dEFjdGl2ZVRhYigtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBuZXh0QWN0aXZlQ2hpbGQgPSBnZXROZXh0QWN0aXZlVGFiKDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuZXh0QWN0aXZlQ2hpbGQpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGhhbmRsZVNlbGVjdChuZXh0QWN0aXZlQ2hpbGQuZGF0YXNldFtkYXRhUHJvcCgnRXZlbnRLZXknKV0gfHwgbnVsbCwgZXZlbnQpO1xuICAgIG5lZWRzUmVmb2N1c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICBmb3JjZVVwZGF0ZSgpO1xuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsaXN0Tm9kZS5jdXJyZW50ICYmIG5lZWRzUmVmb2N1c1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBhY3RpdmVDaGlsZCA9IGxpc3ROb2RlLmN1cnJlbnQucXVlcnlTZWxlY3RvcihgWyR7RVZFTlRfS0VZX0FUVFJ9XVthcmlhLXNlbGVjdGVkPXRydWVdYCk7XG4gICAgICBhY3RpdmVDaGlsZCA9PSBudWxsID8gdm9pZCAwIDogYWN0aXZlQ2hpbGQuZm9jdXMoKTtcbiAgICB9XG4gICAgbmVlZHNSZWZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgfSk7XG4gIGNvbnN0IG1lcmdlZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBsaXN0Tm9kZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RhYmxlQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBoYW5kbGVTZWxlY3QsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KE5hdkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHJvbGUsXG4gICAgICAgIC8vIHVzZWQgYnkgTmF2TGluayB0byBkZXRlcm1pbmUgaXQncyByb2xlXG4gICAgICAgIGFjdGl2ZUtleTogbWFrZUV2ZW50S2V5KGFjdGl2ZUtleSksXG4gICAgICAgIGdldENvbnRyb2xsZWRJZDogZ2V0Q29udHJvbGxlZElkIHx8IG5vb3AsXG4gICAgICAgIGdldENvbnRyb2xsZXJJZDogZ2V0Q29udHJvbGxlcklkIHx8IG5vb3BcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgICAgIHJlZjogbWVyZ2VkUmVmLFxuICAgICAgICByb2xlOiByb2xlXG4gICAgICB9KSlcbiAgICB9KVxuICB9KTtcbn0pO1xuTmF2LmRpc3BsYXlOYW1lID0gJ05hdic7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE5hdiwge1xuICBJdGVtOiBOYXZJdGVtXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBjb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5jb250ZXh0LmRpc3BsYXlOYW1lID0gJ0NhcmRIZWFkZXJDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGNvbnRleHQ7IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ25hdi1pdGVtJyk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgYWxsIGZyb20gJ3Byb3AtdHlwZXMtZXh0cmEvbGliL2FsbCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IEJhc2VOYXYgZnJvbSAnQHJlc3RhcnQvdWkvTmF2JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IENhcmRIZWFkZXJDb250ZXh0IGZyb20gJy4vQ2FyZEhlYWRlckNvbnRleHQnO1xuaW1wb3J0IE5hdkl0ZW0gZnJvbSAnLi9OYXZJdGVtJztcbmltcG9ydCBOYXZMaW5rIGZyb20gJy4vTmF2TGluayc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBqdXN0aWZ5OiBmYWxzZSxcbiAgZmlsbDogZmFsc2Vcbn07XG5jb25zdCBOYXYgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigodW5jb250cm9sbGVkUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgYXMgPSAnZGl2JyxcbiAgICBic1ByZWZpeDogaW5pdGlhbEJzUHJlZml4LFxuICAgIHZhcmlhbnQsXG4gICAgZmlsbCxcbiAgICBqdXN0aWZ5LFxuICAgIG5hdmJhcixcbiAgICBuYXZiYXJTY3JvbGwsXG4gICAgY2xhc3NOYW1lLFxuICAgIGFjdGl2ZUtleSxcbiAgICAuLi5wcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHVuY29udHJvbGxlZFByb3BzLCB7XG4gICAgYWN0aXZlS2V5OiAnb25TZWxlY3QnXG4gIH0pO1xuICBjb25zdCBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChpbml0aWFsQnNQcmVmaXgsICduYXYnKTtcbiAgbGV0IG5hdmJhckJzUHJlZml4O1xuICBsZXQgY2FyZEhlYWRlckJzUHJlZml4O1xuICBsZXQgaXNOYXZiYXIgPSBmYWxzZTtcbiAgY29uc3QgbmF2YmFyQ29udGV4dCA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCk7XG4gIGNvbnN0IGNhcmRIZWFkZXJDb250ZXh0ID0gdXNlQ29udGV4dChDYXJkSGVhZGVyQ29udGV4dCk7XG4gIGlmIChuYXZiYXJDb250ZXh0KSB7XG4gICAgbmF2YmFyQnNQcmVmaXggPSBuYXZiYXJDb250ZXh0LmJzUHJlZml4O1xuICAgIGlzTmF2YmFyID0gbmF2YmFyID09IG51bGwgPyB0cnVlIDogbmF2YmFyO1xuICB9IGVsc2UgaWYgKGNhcmRIZWFkZXJDb250ZXh0KSB7XG4gICAgKHtcbiAgICAgIGNhcmRIZWFkZXJCc1ByZWZpeFxuICAgIH0gPSBjYXJkSGVhZGVyQ29udGV4dCk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEJhc2VOYXYsIHtcbiAgICBhczogYXMsXG4gICAgcmVmOiByZWYsXG4gICAgYWN0aXZlS2V5OiBhY3RpdmVLZXksXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwge1xuICAgICAgW2JzUHJlZml4XTogIWlzTmF2YmFyLFxuICAgICAgW2Ake25hdmJhckJzUHJlZml4fS1uYXZgXTogaXNOYXZiYXIsXG4gICAgICBbYCR7bmF2YmFyQnNQcmVmaXh9LW5hdi1zY3JvbGxgXTogaXNOYXZiYXIgJiYgbmF2YmFyU2Nyb2xsLFxuICAgICAgW2Ake2NhcmRIZWFkZXJCc1ByZWZpeH0tJHt2YXJpYW50fWBdOiAhIWNhcmRIZWFkZXJCc1ByZWZpeCxcbiAgICAgIFtgJHtic1ByZWZpeH0tJHt2YXJpYW50fWBdOiAhIXZhcmlhbnQsXG4gICAgICBbYCR7YnNQcmVmaXh9LWZpbGxgXTogZmlsbCxcbiAgICAgIFtgJHtic1ByZWZpeH0tanVzdGlmaWVkYF06IGp1c3RpZnlcbiAgICB9KSxcbiAgICAuLi5wcm9wc1xuICB9KTtcbn0pO1xuTmF2LmRpc3BsYXlOYW1lID0gJ05hdic7XG5OYXYuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihOYXYsIHtcbiAgSXRlbTogTmF2SXRlbSxcbiAgTGluazogTmF2TGlua1xufSk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhckJyYW5kID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgYXMsXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXZiYXItYnJhbmQnKTtcbiAgY29uc3QgQ29tcG9uZW50ID0gYXMgfHwgKHByb3BzLmhyZWYgPyAnYScgOiAnc3BhbicpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgYnNQcmVmaXgpXG4gIH0pO1xufSk7XG5OYXZiYXJCcmFuZC5kaXNwbGF5TmFtZSA9ICdOYXZiYXJCcmFuZCc7XG5leHBvcnQgZGVmYXVsdCBOYXZiYXJCcmFuZDsiLCIvKipcbiAqIFNhZmUgY2hhaW5lZCBmdW5jdGlvblxuICpcbiAqIFdpbGwgb25seSBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gaWYgbmVlZGVkLFxuICogb3RoZXJ3aXNlIHdpbGwgcGFzcyBiYWNrIGV4aXN0aW5nIGZ1bmN0aW9ucyBvciBudWxsLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmN0aW9ucyB0byBjaGFpblxuICogQHJldHVybnMge2Z1bmN0aW9ufG51bGx9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiguLi5mdW5jcykge1xuICByZXR1cm4gZnVuY3MuZmlsdGVyKGYgPT4gZiAhPSBudWxsKS5yZWR1Y2UoKGFjYywgZikgPT4ge1xuICAgIGlmICh0eXBlb2YgZiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IFR5cGUsIG11c3Qgb25seSBwcm92aWRlIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBvciBudWxsLicpO1xuICAgIH1cbiAgICBpZiAoYWNjID09PSBudWxsKSByZXR1cm4gZjtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGFjYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGYuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfSwgbnVsbCk7XG59XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVDaGFpbmVkRnVuY3Rpb247IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgY3NzIGZyb20gJ2RvbS1oZWxwZXJzL2Nzcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEVOVEVSRUQsIEVOVEVSSU5HLCBFWElURUQsIEVYSVRJTkcgfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwL1RyYW5zaXRpb24nO1xuaW1wb3J0IHRyYW5zaXRpb25FbmRMaXN0ZW5lciBmcm9tICcuL3RyYW5zaXRpb25FbmRMaXN0ZW5lcic7XG5pbXBvcnQgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIGZyb20gJy4vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uJztcbmltcG9ydCB0cmlnZ2VyQnJvd3NlclJlZmxvdyBmcm9tICcuL3RyaWdnZXJCcm93c2VyUmVmbG93JztcbmltcG9ydCBUcmFuc2l0aW9uV3JhcHBlciBmcm9tICcuL1RyYW5zaXRpb25XcmFwcGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBNQVJHSU5TID0ge1xuICBoZWlnaHQ6IFsnbWFyZ2luVG9wJywgJ21hcmdpbkJvdHRvbSddLFxuICB3aWR0aDogWydtYXJnaW5MZWZ0JywgJ21hcmdpblJpZ2h0J11cbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0RGltZW5zaW9uVmFsdWUoZGltZW5zaW9uLCBlbGVtKSB7XG4gIGNvbnN0IG9mZnNldCA9IGBvZmZzZXQke2RpbWVuc2lvblswXS50b1VwcGVyQ2FzZSgpfSR7ZGltZW5zaW9uLnNsaWNlKDEpfWA7XG4gIGNvbnN0IHZhbHVlID0gZWxlbVtvZmZzZXRdO1xuICBjb25zdCBtYXJnaW5zID0gTUFSR0lOU1tkaW1lbnNpb25dO1xuICByZXR1cm4gdmFsdWUgK1xuICAvLyBAdHMtaWdub3JlXG4gIHBhcnNlSW50KGNzcyhlbGVtLCBtYXJnaW5zWzBdKSwgMTApICtcbiAgLy8gQHRzLWlnbm9yZVxuICBwYXJzZUludChjc3MoZWxlbSwgbWFyZ2luc1sxXSksIDEwKTtcbn1cbmNvbnN0IGNvbGxhcHNlU3R5bGVzID0ge1xuICBbRVhJVEVEXTogJ2NvbGxhcHNlJyxcbiAgW0VYSVRJTkddOiAnY29sbGFwc2luZycsXG4gIFtFTlRFUklOR106ICdjb2xsYXBzaW5nJyxcbiAgW0VOVEVSRURdOiAnY29sbGFwc2Ugc2hvdydcbn07XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGluOiBmYWxzZSxcbiAgdGltZW91dDogMzAwLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZSxcbiAgZ2V0RGltZW5zaW9uVmFsdWU6IGdldERlZmF1bHREaW1lbnNpb25WYWx1ZVxufTtcbmNvbnN0IENvbGxhcHNlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgb25FbnRlcixcbiAgb25FbnRlcmluZyxcbiAgb25FbnRlcmVkLFxuICBvbkV4aXQsXG4gIG9uRXhpdGluZyxcbiAgY2xhc3NOYW1lLFxuICBjaGlsZHJlbixcbiAgZGltZW5zaW9uID0gJ2hlaWdodCcsXG4gIGdldERpbWVuc2lvblZhbHVlID0gZ2V0RGVmYXVsdERpbWVuc2lvblZhbHVlLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIC8qIENvbXB1dGUgZGltZW5zaW9uICovXG4gIGNvbnN0IGNvbXB1dGVkRGltZW5zaW9uID0gdHlwZW9mIGRpbWVuc2lvbiA9PT0gJ2Z1bmN0aW9uJyA/IGRpbWVuc2lvbigpIDogZGltZW5zaW9uO1xuXG4gIC8qIC0tIEV4cGFuZGluZyAtLSAqL1xuICBjb25zdCBoYW5kbGVFbnRlciA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gJzAnO1xuICB9LCBvbkVudGVyKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsID0gYHNjcm9sbCR7Y29tcHV0ZWREaW1lbnNpb25bMF0udG9VcHBlckNhc2UoKX0ke2NvbXB1dGVkRGltZW5zaW9uLnNsaWNlKDEpfWA7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBgJHtlbGVtW3Njcm9sbF19cHhgO1xuICB9LCBvbkVudGVyaW5nKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkVudGVyaW5nXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyZWQgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihlbGVtID0+IHtcbiAgICBlbGVtLnN0eWxlW2NvbXB1dGVkRGltZW5zaW9uXSA9IG51bGw7XG4gIH0sIG9uRW50ZXJlZCksIFtjb21wdXRlZERpbWVuc2lvbiwgb25FbnRlcmVkXSk7XG5cbiAgLyogLS0gQ29sbGFwc2luZyAtLSAqL1xuICBjb25zdCBoYW5kbGVFeGl0ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oZWxlbSA9PiB7XG4gICAgZWxlbS5zdHlsZVtjb21wdXRlZERpbWVuc2lvbl0gPSBgJHtnZXREaW1lbnNpb25WYWx1ZShjb21wdXRlZERpbWVuc2lvbiwgZWxlbSl9cHhgO1xuICAgIHRyaWdnZXJCcm93c2VyUmVmbG93KGVsZW0pO1xuICB9LCBvbkV4aXQpLCBbb25FeGl0LCBnZXREaW1lbnNpb25WYWx1ZSwgY29tcHV0ZWREaW1lbnNpb25dKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKGVsZW0gPT4ge1xuICAgIGVsZW0uc3R5bGVbY29tcHV0ZWREaW1lbnNpb25dID0gbnVsbDtcbiAgfSwgb25FeGl0aW5nKSwgW2NvbXB1dGVkRGltZW5zaW9uLCBvbkV4aXRpbmddKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25XcmFwcGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgYWRkRW5kTGlzdGVuZXI6IHRyYW5zaXRpb25FbmRMaXN0ZW5lcixcbiAgICAuLi5wcm9wcyxcbiAgICBcImFyaWEtZXhwYW5kZWRcIjogcHJvcHMucm9sZSA/IHByb3BzLmluIDogbnVsbCxcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyaW5nOiBoYW5kbGVFbnRlcmluZyxcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBjaGlsZFJlZjogY2hpbGRyZW4ucmVmLFxuICAgIGNoaWxkcmVuOiAoc3RhdGUsIGlubmVyUHJvcHMpID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIC4uLmlubmVyUHJvcHMsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsIGNvbGxhcHNlU3R5bGVzW3N0YXRlXSwgY29tcHV0ZWREaW1lbnNpb24gPT09ICd3aWR0aCcgJiYgJ2NvbGxhcHNlLWhvcml6b250YWwnKVxuICAgIH0pXG4gIH0pO1xufSk7XG5cbi8vIEB0cy1pZ25vcmVcblxuLy8gQHRzLWlnbm9yZVxuQ29sbGFwc2UuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQ29sbGFwc2U7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb2xsYXBzZSBmcm9tICcuL0NvbGxhcHNlJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhckNvbGxhcHNlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgY2hpbGRyZW4sXG4gIGJzUHJlZml4LFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGJzUHJlZml4LCAnbmF2YmFyLWNvbGxhcHNlJyk7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29sbGFwc2UsIHtcbiAgICBpbjogISEoY29udGV4dCAmJiBjb250ZXh0LmV4cGFuZGVkKSxcbiAgICAuLi5wcm9wcyxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgcmVmOiByZWYsXG4gICAgICBjbGFzc05hbWU6IGJzUHJlZml4LFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdmJhckNvbGxhcHNlLmRpc3BsYXlOYW1lID0gJ05hdmJhckNvbGxhcHNlJztcbmV4cG9ydCBkZWZhdWx0IE5hdmJhckNvbGxhcHNlOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBsYWJlbDogJ1RvZ2dsZSBuYXZpZ2F0aW9uJ1xufTtcbmNvbnN0IE5hdmJhclRvZ2dsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBsYWJlbCxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gJ2J1dHRvbicsXG4gIG9uQ2xpY2ssXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICduYXZiYXItdG9nZ2xlcicpO1xuICBjb25zdCB7XG4gICAgb25Ub2dnbGUsXG4gICAgZXhwYW5kZWRcbiAgfSA9IHVzZUNvbnRleHQoTmF2YmFyQ29udGV4dCkgfHwge307XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAob25DbGljaykgb25DbGljayhlKTtcbiAgICBpZiAob25Ub2dnbGUpIG9uVG9nZ2xlKCk7XG4gIH0pO1xuICBpZiAoQ29tcG9uZW50ID09PSAnYnV0dG9uJykge1xuICAgIHByb3BzLnR5cGUgPSAnYnV0dG9uJztcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCB7XG4gICAgLi4ucHJvcHMsXG4gICAgcmVmOiByZWYsXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgXCJhcmlhLWxhYmVsXCI6IGxhYmVsLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc05hbWUsIGJzUHJlZml4LCAhZXhwYW5kZWQgJiYgJ2NvbGxhcHNlZCcpLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCAvKiNfX1BVUkVfXyovX2pzeChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBgJHtic1ByZWZpeH0taWNvbmBcbiAgICB9KVxuICB9KTtcbn0pO1xuTmF2YmFyVG9nZ2xlLmRpc3BsYXlOYW1lID0gJ05hdmJhclRvZ2dsZSc7XG5OYXZiYXJUb2dnbGUuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyVG9nZ2xlOyIsImltcG9ydCB1c2VFZmZlY3QgZnJvbSAnLi91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xudmFyIG1hdGNoZXJzQnlXaW5kb3cgPSBuZXcgV2Vha01hcCgpO1xuXG52YXIgZ2V0TWF0Y2hlciA9IGZ1bmN0aW9uIGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdykge1xuICBpZiAoIXF1ZXJ5IHx8ICF0YXJnZXRXaW5kb3cpIHJldHVybiB1bmRlZmluZWQ7XG4gIHZhciBtYXRjaGVycyA9IG1hdGNoZXJzQnlXaW5kb3cuZ2V0KHRhcmdldFdpbmRvdykgfHwgbmV3IE1hcCgpO1xuICBtYXRjaGVyc0J5V2luZG93LnNldCh0YXJnZXRXaW5kb3csIG1hdGNoZXJzKTtcbiAgdmFyIG1xbCA9IG1hdGNoZXJzLmdldChxdWVyeSk7XG5cbiAgaWYgKCFtcWwpIHtcbiAgICBtcWwgPSB0YXJnZXRXaW5kb3cubWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgbXFsLnJlZkNvdW50ID0gMDtcbiAgICBtYXRjaGVycy5zZXQobXFsLm1lZGlhLCBtcWwpO1xuICB9XG5cbiAgcmV0dXJuIG1xbDtcbn07XG4vKipcbiAqIE1hdGNoIGEgbWVkaWEgcXVlcnkgYW5kIGdldCB1cGRhdGVzIGFzIHRoZSBtYXRjaCBjaGFuZ2VzLiBUaGUgbWVkaWEgc3RyaW5nIGlzXG4gKiBwYXNzZWQgZGlyZWN0bHkgdG8gYHdpbmRvdy5tYXRjaE1lZGlhYCBhbmQgcnVuIGFzIGEgTGF5b3V0IEVmZmVjdCwgc28gaW5pdGlhbFxuICogbWF0Y2hlcyBhcmUgcmV0dXJuZWQgYmVmb3JlIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludC5cbiAqXG4gKiBgYGB0c3hcbiAqIGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgIGNvbnN0IGlzV2lkZSA9IHVzZU1lZGlhUXVlcnkoJ21pbi13aWR0aDogMTAwMHB4JylcbiAqXG4gKiAgIHJldHVybiBpc1dpZGUgPyBcInZlcnkgd2lkZVwiIDogJ25vdCBzbyB3aWRlJ1xuICogfVxuICogYGBgXG4gKlxuICogTWVkaWEgcXVlcnkgbGlzdHMgYXJlIGFsc28gcmV1c2VkIGdsb2JhbGx5LCBob29rIGNhbGxzIGZvciB0aGUgc2FtZSBxdWVyeVxuICogd2lsbCBvbmx5IGNyZWF0ZSBhIG1hdGNoZXIgb25jZSB1bmRlciB0aGUgaG9vZC5cbiAqXG4gKiBAcGFyYW0gcXVlcnkgQSBtZWRpYSBxdWVyeVxuICogQHBhcmFtIHRhcmdldFdpbmRvdyBUaGUgd2luZG93IHRvIG1hdGNoIGFnYWluc3QsIHVzZXMgdGhlIGdsb2JhbGx5IGF2YWlsYWJsZSBvbmUgYXMgYSBkZWZhdWx0LlxuICovXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVkaWFRdWVyeShxdWVyeSwgdGFyZ2V0V2luZG93KSB7XG4gIGlmICh0YXJnZXRXaW5kb3cgPT09IHZvaWQgMCkge1xuICAgIHRhcmdldFdpbmRvdyA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogd2luZG93O1xuICB9XG5cbiAgdmFyIG1xbCA9IGdldE1hdGNoZXIocXVlcnksIHRhcmdldFdpbmRvdyk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbXFsID8gbXFsLm1hdGNoZXMgOiBmYWxzZTtcbiAgfSksXG4gICAgICBtYXRjaGVzID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0TWF0Y2hlcyA9IF91c2VTdGF0ZVsxXTtcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHZhciBtcWwgPSBnZXRNYXRjaGVyKHF1ZXJ5LCB0YXJnZXRXaW5kb3cpO1xuXG4gICAgaWYgKCFtcWwpIHtcbiAgICAgIHJldHVybiBzZXRNYXRjaGVzKGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2hlcnMgPSBtYXRjaGVyc0J5V2luZG93LmdldCh0YXJnZXRXaW5kb3cpO1xuXG4gICAgdmFyIGhhbmRsZUNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUNoYW5nZSgpIHtcbiAgICAgIHNldE1hdGNoZXMobXFsLm1hdGNoZXMpO1xuICAgIH07XG5cbiAgICBtcWwucmVmQ291bnQrKztcbiAgICBtcWwuYWRkTGlzdGVuZXIoaGFuZGxlQ2hhbmdlKTtcbiAgICBoYW5kbGVDaGFuZ2UoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbXFsLnJlbW92ZUxpc3RlbmVyKGhhbmRsZUNoYW5nZSk7XG4gICAgICBtcWwucmVmQ291bnQtLTtcblxuICAgICAgaWYgKG1xbC5yZWZDb3VudCA8PSAwKSB7XG4gICAgICAgIG1hdGNoZXJzID09IG51bGwgPyB2b2lkIDAgOiBtYXRjaGVycy5kZWxldGUobXFsLm1lZGlhKTtcbiAgICAgIH1cblxuICAgICAgbXFsID0gdW5kZWZpbmVkO1xuICAgIH07XG4gIH0sIFtxdWVyeV0pO1xuICByZXR1cm4gbWF0Y2hlcztcbn0iLCJpbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tICcuL3VzZU1lZGlhUXVlcnknO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBDcmVhdGUgYSByZXNwb25zaXZlIGhvb2sgd2UgYSBzZXQgb2YgYnJlYWtwb2ludCBuYW1lcyBhbmQgd2lkdGhzLlxuICogWW91IGNhbiB1c2UgYW55IHZhbGlkIGNzcyB1bml0cyBhcyB3ZWxsIGFzIGEgbnVtYmVycyAoZm9yIHBpeGVscykuXG4gKlxuICogKipOT1RFOioqIFRoZSBvYmplY3Qga2V5IG9yZGVyIGlzIGltcG9ydGFudCEgaXQncyBhc3N1bWVkIHRvIGJlIGluIG9yZGVyIGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdFxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCB1c2VCcmVha3BvaW50ID0gY3JlYXRlQnJlYWtwb2ludEhvb2soe1xuICogIHhzOiAwLFxuICogIHNtOiA1NzYsXG4gKiAgbWQ6IDc2OCxcbiAqICBsZzogOTkyLFxuICogIHhsOiAxMjAwLFxuICogfSlcbiAqIGBgYFxuICpcbiAqICoqV2F0Y2ggb3V0ISoqIHVzaW5nIHN0cmluZyB2YWx1ZXMgd2lsbCBzb21ldGltZXMgY29uc3RydWN0IG1lZGlhIHF1ZXJpZXMgdXNpbmcgY3NzIGBjYWxjKClgIHdoaWNoXG4gKiBpcyBOT1Qgc3VwcG9ydGVkIGluIG1lZGlhIHF1ZXJpZXMgYnkgYWxsIGJyb3dzZXJzIGF0IHRoZSBtb21lbnQuIHVzZSBudW1iZXJzIGZvclxuICogdGhlIHdpZGVzdCByYW5nZSBvZiBicm93c2VyIHN1cHBvcnQuXG4gKlxuICogQHBhcmFtIGJyZWFrcG9pbnRWYWx1ZXMgQSBvYmplY3QgaGFzaCBvZiBuYW1lcyB0byBicmVha3BvaW50IGRpbWVuc2lvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJyZWFrcG9pbnRIb29rKGJyZWFrcG9pbnRWYWx1ZXMpIHtcbiAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMoYnJlYWtwb2ludFZhbHVlcyk7XG5cbiAgZnVuY3Rpb24gYW5kKHF1ZXJ5LCBuZXh0KSB7XG4gICAgaWYgKHF1ZXJ5ID09PSBuZXh0KSB7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnkgPyBxdWVyeSArIFwiIGFuZCBcIiArIG5leHQgOiBuZXh0O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmV4dChicmVha3BvaW50KSB7XG4gICAgcmV0dXJuIG5hbWVzW01hdGgubWluKG5hbWVzLmluZGV4T2YoYnJlYWtwb2ludCkgKyAxLCBuYW1lcy5sZW5ndGggLSAxKV07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNYXhRdWVyeShicmVha3BvaW50KSB7XG4gICAgdmFyIG5leHQgPSBnZXROZXh0KGJyZWFrcG9pbnQpO1xuICAgIHZhciB2YWx1ZSA9IGJyZWFrcG9pbnRWYWx1ZXNbbmV4dF07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHZhbHVlID0gdmFsdWUgLSAwLjIgKyBcInB4XCI7ZWxzZSB2YWx1ZSA9IFwiY2FsYyhcIiArIHZhbHVlICsgXCIgLSAwLjJweClcIjtcbiAgICByZXR1cm4gXCIobWF4LXdpZHRoOiBcIiArIHZhbHVlICsgXCIpXCI7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNaW5RdWVyeShicmVha3BvaW50KSB7XG4gICAgdmFyIHZhbHVlID0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlICsgXCJweFwiO1xuICAgIH1cblxuICAgIHJldHVybiBcIihtaW4td2lkdGg6IFwiICsgdmFsdWUgKyBcIilcIjtcbiAgfVxuICAvKipcbiAgICogTWF0Y2ggYSBzZXQgb2YgYnJlYWtwb2ludHNcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGNvbnN0IE1pZFNpemVPbmx5ID0gKCkgPT4ge1xuICAgKiAgIGNvbnN0IGlzTWlkID0gdXNlQnJlYWtwb2ludCh7IGxnOiAnZG93bicsIHNtOiAndXAnIH0pO1xuICAgKlxuICAgKiAgIGlmIChpc01pZCkgcmV0dXJuIDxkaXY+T24gYSBSZWFzb25hYmxlIHNpemVkIFNjcmVlbiE8L2Rpdj5cbiAgICogICByZXR1cm4gbnVsbDtcbiAgICogfVxuICAgKiBgYGBcbiAgICogQHBhcmFtIGJyZWFrcG9pbnRNYXAgQW4gb2JqZWN0IG1hcCBvZiBicmVha3BvaW50cyBhbmQgZGlyZWN0aW9ucywgcXVlcmllcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgXCJhbmRcIiB0byBqb2luXG4gICAqIGJyZWFrcG9pbnRzIHRvZ2V0aGVyXG4gICAqIEBwYXJhbSB3aW5kb3cgT3B0aW9uYWxseSBzcGVjaWZ5IHRoZSB0YXJnZXQgd2luZG93IHRvIG1hdGNoIGFnYWluc3QgKHVzZWZ1bCB3aGVuIHJlbmRlcmluZyBpbnRvIGlmcmFtZXMpXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gdXNlQnJlYWtwb2ludChicmVha3BvaW50T3JNYXAsIGRpcmVjdGlvbiwgd2luZG93KSB7XG4gICAgdmFyIGJyZWFrcG9pbnRNYXA7XG5cbiAgICBpZiAodHlwZW9mIGJyZWFrcG9pbnRPck1hcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGJyZWFrcG9pbnRNYXAgPSBicmVha3BvaW50T3JNYXA7XG4gICAgICB3aW5kb3cgPSBkaXJlY3Rpb247XG4gICAgICBkaXJlY3Rpb24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2JyZWFrcG9pbnRNYXA7XG5cbiAgICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCB0cnVlO1xuICAgICAgYnJlYWtwb2ludE1hcCA9IChfYnJlYWtwb2ludE1hcCA9IHt9LCBfYnJlYWtwb2ludE1hcFticmVha3BvaW50T3JNYXBdID0gZGlyZWN0aW9uLCBfYnJlYWtwb2ludE1hcCk7XG4gICAgfVxuXG4gICAgdmFyIHF1ZXJ5ID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoYnJlYWtwb2ludE1hcCkucmVkdWNlKGZ1bmN0aW9uIChxdWVyeSwgX3JlZikge1xuICAgICAgICB2YXIga2V5ID0gX3JlZlswXSxcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF9yZWZbMV07XG5cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJyB8fCBkaXJlY3Rpb24gPT09IHRydWUpIHtcbiAgICAgICAgICBxdWVyeSA9IGFuZChxdWVyeSwgZ2V0TWluUXVlcnkoa2V5KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicgfHwgZGlyZWN0aW9uID09PSB0cnVlKSB7XG4gICAgICAgICAgcXVlcnkgPSBhbmQocXVlcnksIGdldE1heFF1ZXJ5KGtleSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgfSwgJycpO1xuICAgIH0sIFtKU09OLnN0cmluZ2lmeShicmVha3BvaW50TWFwKV0pO1xuICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KHF1ZXJ5LCB3aW5kb3cpO1xuICB9XG5cbiAgcmV0dXJuIHVzZUJyZWFrcG9pbnQ7XG59XG52YXIgdXNlQnJlYWtwb2ludCA9IGNyZWF0ZUJyZWFrcG9pbnRIb29rKHtcbiAgeHM6IDAsXG4gIHNtOiA1NzYsXG4gIG1kOiA3NjgsXG4gIGxnOiA5OTIsXG4gIHhsOiAxMjAwLFxuICB4eGw6IDE0MDBcbn0pO1xuZXhwb3J0IGRlZmF1bHQgdXNlQnJlYWtwb2ludDsiLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBhY3RpdmVseSBmb2N1c2VkIGVsZW1lbnQgc2FmZWx5LlxuICpcbiAqIEBwYXJhbSBkb2MgdGhlIGRvY3VtZW50IHRvIGNoZWNrXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWN0aXZlRWxlbWVudChkb2MpIHtcbiAgaWYgKGRvYyA9PT0gdm9pZCAwKSB7XG4gICAgZG9jID0gb3duZXJEb2N1bWVudCgpO1xuICB9XG5cbiAgLy8gU3VwcG9ydDogSUUgOSBvbmx5XG4gIC8vIElFOSB0aHJvd3MgYW4gXCJVbnNwZWNpZmllZCBlcnJvclwiIGFjY2Vzc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGZyb20gYW4gPGlmcmFtZT5cbiAgdHJ5IHtcbiAgICB2YXIgYWN0aXZlID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IC8vIElFMTEgcmV0dXJucyBhIHNlZW1pbmdseSBlbXB0eSBvYmplY3QgaW4gc29tZSBjYXNlcyB3aGVuIGFjY2Vzc2luZ1xuICAgIC8vIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgZnJvbSBhbiA8aWZyYW1lPlxuXG4gICAgaWYgKCFhY3RpdmUgfHwgIWFjdGl2ZS5ub2RlTmFtZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGFjdGl2ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8qIGllIHRocm93cyBpZiBubyBhY3RpdmUgZWxlbWVudCAqL1xuICAgIHJldHVybiBkb2MuYm9keTtcbiAgfVxufSIsImltcG9ydCBjc3MgZnJvbSAnZG9tLWhlbHBlcnMvY3NzJztcbmltcG9ydCB7IGRhdGFBdHRyIH0gZnJvbSAnLi9EYXRhS2V5JztcbmltcG9ydCBnZXRCb2R5U2Nyb2xsYmFyV2lkdGggZnJvbSAnLi9nZXRTY3JvbGxiYXJXaWR0aCc7XG5leHBvcnQgY29uc3QgT1BFTl9EQVRBX0FUVFJJQlVURSA9IGRhdGFBdHRyKCdtb2RhbC1vcGVuJyk7XG5cbi8qKlxuICogTWFuYWdlcyBhIHN0YWNrIG9mIE1vZGFscyBhcyB3ZWxsIGFzIGVuc3VyaW5nXG4gKiBib2R5IHNjcm9sbGluZyBpcyBpcyBkaXNhYmxlZCBhbmQgcGFkZGluZyBhY2NvdW50ZWQgZm9yXG4gKi9cbmNsYXNzIE1vZGFsTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBvd25lckRvY3VtZW50LFxuICAgIGhhbmRsZUNvbnRhaW5lck92ZXJmbG93ID0gdHJ1ZSxcbiAgICBpc1JUTCA9IGZhbHNlXG4gIH0gPSB7fSkge1xuICAgIHRoaXMuaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3cgPSBoYW5kbGVDb250YWluZXJPdmVyZmxvdztcbiAgICB0aGlzLmlzUlRMID0gaXNSVEw7XG4gICAgdGhpcy5tb2RhbHMgPSBbXTtcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lckRvY3VtZW50O1xuICB9XG4gIGdldFNjcm9sbGJhcldpZHRoKCkge1xuICAgIHJldHVybiBnZXRCb2R5U2Nyb2xsYmFyV2lkdGgodGhpcy5vd25lckRvY3VtZW50KTtcbiAgfVxuICBnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiAodGhpcy5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KS5ib2R5O1xuICB9XG4gIHNldE1vZGFsQXR0cmlidXRlcyhfbW9kYWwpIHtcbiAgICAvLyBGb3Igb3ZlcnJpZGluZ1xuICB9XG4gIHJlbW92ZU1vZGFsQXR0cmlidXRlcyhfbW9kYWwpIHtcbiAgICAvLyBGb3Igb3ZlcnJpZGluZ1xuICB9XG4gIHNldENvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICB9O1xuXG4gICAgLy8gd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgYWN0dWFsIGBzdHlsZWAgaGVyZVxuICAgIC8vIGJlY2F1c2Ugd2Ugd2lsbCBvdmVycmlkZSBpdFxuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gdGhpcy5pc1JUTCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICBjb250YWluZXJTdGF0ZS5zdHlsZSA9IHtcbiAgICAgIG92ZXJmbG93OiBjb250YWluZXIuc3R5bGUub3ZlcmZsb3csXG4gICAgICBbcGFkZGluZ1Byb3BdOiBjb250YWluZXIuc3R5bGVbcGFkZGluZ1Byb3BdXG4gICAgfTtcbiAgICBpZiAoY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpIHtcbiAgICAgIC8vIHVzZSBjb21wdXRlZCBzdHlsZSwgaGVyZSB0byBnZXQgdGhlIHJlYWwgcGFkZGluZ1xuICAgICAgLy8gdG8gYWRkIG91ciBzY3JvbGxiYXIgd2lkdGhcbiAgICAgIHN0eWxlW3BhZGRpbmdQcm9wXSA9IGAke3BhcnNlSW50KGNzcyhjb250YWluZXIsIHBhZGRpbmdQcm9wKSB8fCAnMCcsIDEwKSArIGNvbnRhaW5lclN0YXRlLnNjcm9sbEJhcldpZHRofXB4YDtcbiAgICB9XG4gICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZShPUEVOX0RBVEFfQVRUUklCVVRFLCAnJyk7XG4gICAgY3NzKGNvbnRhaW5lciwgc3R5bGUpO1xuICB9XG4gIHJlc2V0KCkge1xuICAgIFsuLi50aGlzLm1vZGFsc10uZm9yRWFjaChtID0+IHRoaXMucmVtb3ZlKG0pKTtcbiAgfVxuICByZW1vdmVDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIGNvbnRhaW5lci5yZW1vdmVBdHRyaWJ1dGUoT1BFTl9EQVRBX0FUVFJJQlVURSk7XG4gICAgT2JqZWN0LmFzc2lnbihjb250YWluZXIuc3R5bGUsIGNvbnRhaW5lclN0YXRlLnN0eWxlKTtcbiAgfVxuICBhZGQobW9kYWwpIHtcbiAgICBsZXQgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggIT09IC0xKSB7XG4gICAgICByZXR1cm4gbW9kYWxJZHg7XG4gICAgfVxuICAgIG1vZGFsSWR4ID0gdGhpcy5tb2RhbHMubGVuZ3RoO1xuICAgIHRoaXMubW9kYWxzLnB1c2gobW9kYWwpO1xuICAgIHRoaXMuc2V0TW9kYWxBdHRyaWJ1dGVzKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggIT09IDApIHtcbiAgICAgIHJldHVybiBtb2RhbElkeDtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNjcm9sbEJhcldpZHRoOiB0aGlzLmdldFNjcm9sbGJhcldpZHRoKCksXG4gICAgICBzdHlsZToge31cbiAgICB9O1xuICAgIGlmICh0aGlzLmhhbmRsZUNvbnRhaW5lck92ZXJmbG93KSB7XG4gICAgICB0aGlzLnNldENvbnRhaW5lclN0eWxlKHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxJZHg7XG4gIH1cbiAgcmVtb3ZlKG1vZGFsKSB7XG4gICAgY29uc3QgbW9kYWxJZHggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJZHggPT09IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubW9kYWxzLnNwbGljZShtb2RhbElkeCwgMSk7XG5cbiAgICAvLyBpZiB0aGF0IHdhcyB0aGUgbGFzdCBtb2RhbCBpbiBhIGNvbnRhaW5lcixcbiAgICAvLyBjbGVhbiB1cCB0aGUgY29udGFpbmVyXG4gICAgaWYgKCF0aGlzLm1vZGFscy5sZW5ndGggJiYgdGhpcy5oYW5kbGVDb250YWluZXJPdmVyZmxvdykge1xuICAgICAgdGhpcy5yZW1vdmVDb250YWluZXJTdHlsZSh0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVNb2RhbEF0dHJpYnV0ZXMobW9kYWwpO1xuICB9XG4gIGlzVG9wTW9kYWwobW9kYWwpIHtcbiAgICByZXR1cm4gISF0aGlzLm1vZGFscy5sZW5ndGggJiYgdGhpcy5tb2RhbHNbdGhpcy5tb2RhbHMubGVuZ3RoIC0gMV0gPT09IG1vZGFsO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBNb2RhbE1hbmFnZXI7IiwiLyoqXG4gKiBHZXQgdGhlIHdpZHRoIG9mIHRoZSB2ZXJ0aWNhbCB3aW5kb3cgc2Nyb2xsYmFyIGlmIGl0J3MgdmlzaWJsZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb2R5U2Nyb2xsYmFyV2lkdGgob3duZXJEb2N1bWVudCA9IGRvY3VtZW50KSB7XG4gIGNvbnN0IHdpbmRvdyA9IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIHJldHVybiBNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIG93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKTtcbn0iLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICdkb20taGVscGVycy9vd25lckRvY3VtZW50JztcbmltcG9ydCBjYW5Vc2VET00gZnJvbSAnZG9tLWhlbHBlcnMvY2FuVXNlRE9NJztcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlV2luZG93IGZyb20gJy4vdXNlV2luZG93JztcbmV4cG9ydCBjb25zdCByZXNvbHZlQ29udGFpbmVyUmVmID0gKHJlZiwgZG9jdW1lbnQpID0+IHtcbiAgaWYgKCFjYW5Vc2VET00pIHJldHVybiBudWxsO1xuICBpZiAocmVmID09IG51bGwpIHJldHVybiAoZG9jdW1lbnQgfHwgb3duZXJEb2N1bWVudCgpKS5ib2R5O1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmID0gcmVmKCk7XG4gIGlmIChyZWYgJiYgJ2N1cnJlbnQnIGluIHJlZikgcmVmID0gcmVmLmN1cnJlbnQ7XG4gIGlmIChyZWYgJiYgKCdub2RlVHlwZScgaW4gcmVmIHx8IHJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QpKSByZXR1cm4gcmVmO1xuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VXYWl0Rm9yRE9NUmVmKHJlZiwgb25SZXNvbHZlZCkge1xuICBjb25zdCB3aW5kb3cgPSB1c2VXaW5kb3coKTtcbiAgY29uc3QgW3Jlc29sdmVkUmVmLCBzZXRSZWZdID0gdXNlU3RhdGUoKCkgPT4gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYsIHdpbmRvdyA9PSBudWxsID8gdm9pZCAwIDogd2luZG93LmRvY3VtZW50KSk7XG4gIGlmICghcmVzb2x2ZWRSZWYpIHtcbiAgICBjb25zdCBlYXJseVJlZiA9IHJlc29sdmVDb250YWluZXJSZWYocmVmKTtcbiAgICBpZiAoZWFybHlSZWYpIHNldFJlZihlYXJseVJlZik7XG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25SZXNvbHZlZCAmJiByZXNvbHZlZFJlZikge1xuICAgICAgb25SZXNvbHZlZChyZXNvbHZlZFJlZik7XG4gICAgfVxuICB9LCBbb25SZXNvbHZlZCwgcmVzb2x2ZWRSZWZdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXh0UmVmID0gcmVzb2x2ZUNvbnRhaW5lclJlZihyZWYpO1xuICAgIGlmIChuZXh0UmVmICE9PSByZXNvbHZlZFJlZikge1xuICAgICAgc2V0UmVmKG5leHRSZWYpO1xuICAgIH1cbiAgfSwgW3JlZiwgcmVzb2x2ZWRSZWZdKTtcbiAgcmV0dXJuIHJlc29sdmVkUmVmO1xufSIsImltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZU1lcmdlZFJlZnMgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTWVyZ2VkUmVmcyc7XG5pbXBvcnQgeyBjbG9uZUVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuZnVuY3Rpb24gTm9vcFRyYW5zaXRpb24oe1xuICBjaGlsZHJlbixcbiAgaW46IGluUHJvcCxcbiAgb25FeGl0ZWQsXG4gIG1vdW50T25FbnRlcixcbiAgdW5tb3VudE9uRXhpdFxufSkge1xuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhc0VudGVyZWRSZWYgPSB1c2VSZWYoaW5Qcm9wKTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gdXNlRXZlbnRDYWxsYmFjayhvbkV4aXRlZCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluUHJvcCkgaGFzRW50ZXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtlbHNlIHtcbiAgICAgIGhhbmRsZUV4aXRlZChyZWYuY3VycmVudCk7XG4gICAgfVxuICB9LCBbaW5Qcm9wLCBoYW5kbGVFeGl0ZWRdKTtcbiAgY29uc3QgY29tYmluZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJlZiwgY2hpbGRyZW4ucmVmKTtcbiAgY29uc3QgY2hpbGQgPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgcmVmOiBjb21iaW5lZFJlZlxuICB9KTtcbiAgaWYgKGluUHJvcCkgcmV0dXJuIGNoaWxkO1xuICBpZiAodW5tb3VudE9uRXhpdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghaGFzRW50ZXJlZFJlZi5jdXJyZW50ICYmIG1vdW50T25FbnRlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjaGlsZDtcbn1cbmV4cG9ydCBkZWZhdWx0IE5vb3BUcmFuc2l0aW9uOyIsImltcG9ydCB1c2VNZXJnZWRSZWZzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZU1lcmdlZFJlZnMnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlSXNvbW9ycGhpY0VmZmVjdCBmcm9tICdAcmVzdGFydC9ob29rcy91c2VJc29tb3JwaGljRWZmZWN0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYsIGNsb25lRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTm9vcFRyYW5zaXRpb24gZnJvbSAnLi9Ob29wVHJhbnNpdGlvbic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oe1xuICBpbjogaW5Qcm9wLFxuICBvblRyYW5zaXRpb25cbn0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBpc0luaXRpYWxSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIGNvbnN0IGhhbmRsZVRyYW5zaXRpb24gPSB1c2VFdmVudENhbGxiYWNrKG9uVHJhbnNpdGlvbik7XG4gIHVzZUlzb21vcnBoaWNFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBzdGFsZSA9IGZhbHNlO1xuICAgIGhhbmRsZVRyYW5zaXRpb24oe1xuICAgICAgaW46IGluUHJvcCxcbiAgICAgIGVsZW1lbnQ6IHJlZi5jdXJyZW50LFxuICAgICAgaW5pdGlhbDogaXNJbml0aWFsUmVmLmN1cnJlbnQsXG4gICAgICBpc1N0YWxlOiAoKSA9PiBzdGFsZVxuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdGFsZSA9IHRydWU7XG4gICAgfTtcbiAgfSwgW2luUHJvcCwgaGFuZGxlVHJhbnNpdGlvbl0pO1xuICB1c2VJc29tb3JwaGljRWZmZWN0KCgpID0+IHtcbiAgICBpc0luaXRpYWxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIC8vIHRoaXMgaXMgZm9yIHN0cmljdCBtb2RlXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzSW5pdGlhbFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiByZWY7XG59XG4vKipcbiAqIEFkYXB0cyBhbiBpbXBlcmF0aXZlIHRyYW5zaXRpb24gZnVuY3Rpb24gdG8gYSBzdWJzZXQgb2YgdGhlIFJURyBgPFRyYW5zaXRpb24+YCBjb21wb25lbnQgQVBJLlxuICpcbiAqIEltcGVyYXRpdmVUcmFuc2l0aW9uIGRvZXMgbm90IHN1cHBvcnQgbW91bnRpbmcgb3B0aW9ucyBvciBgYXBwZWFyYCBhdCB0aGUgbW9tZW50LCBtZWFuaW5nXG4gKiB0aGF0IGl0IGFsd2F5cyBhY3RzIGxpa2U6IGBtb3VudE9uRW50ZXI9e3RydWV9IHVubW91bnRPbkV4aXQ9e3RydWV9IGFwcGVhcj17dHJ1ZX1gXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEltcGVyYXRpdmVUcmFuc2l0aW9uKHtcbiAgY2hpbGRyZW4sXG4gIGluOiBpblByb3AsXG4gIG9uRXhpdGVkLFxuICBvbkVudGVyZWQsXG4gIHRyYW5zaXRpb25cbn0pIHtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IHVzZVN0YXRlKCFpblByb3ApO1xuXG4gIC8vIFRPRE86IEkgdGhpbmsgdGhpcyBuZWVkcyB0byBiZSBpbiBhbiBlZmZlY3RcbiAgaWYgKGluUHJvcCAmJiBleGl0ZWQpIHtcbiAgICBzZXRFeGl0ZWQoZmFsc2UpO1xuICB9XG4gIGNvbnN0IHJlZiA9IHVzZVRyYW5zaXRpb24oe1xuICAgIGluOiAhIWluUHJvcCxcbiAgICBvblRyYW5zaXRpb246IG9wdGlvbnMgPT4ge1xuICAgICAgY29uc3Qgb25GaW5pc2ggPSAoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zLmlzU3RhbGUoKSkgcmV0dXJuO1xuICAgICAgICBpZiAob3B0aW9ucy5pbikge1xuICAgICAgICAgIG9uRW50ZXJlZCA9PSBudWxsID8gdm9pZCAwIDogb25FbnRlcmVkKG9wdGlvbnMuZWxlbWVudCwgb3B0aW9ucy5pbml0aWFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRFeGl0ZWQodHJ1ZSk7XG4gICAgICAgICAgb25FeGl0ZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRXhpdGVkKG9wdGlvbnMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBQcm9taXNlLnJlc29sdmUodHJhbnNpdGlvbihvcHRpb25zKSkudGhlbihvbkZpbmlzaCwgZXJyb3IgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMuaW4pIHNldEV4aXRlZCh0cnVlKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjb21iaW5lZFJlZiA9IHVzZU1lcmdlZFJlZnMocmVmLCBjaGlsZHJlbi5yZWYpO1xuICByZXR1cm4gZXhpdGVkICYmICFpblByb3AgPyBudWxsIDogLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgIHJlZjogY29tYmluZWRSZWZcbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVHJhbnNpdGlvbihDb21wb25lbnQsIHJ1blRyYW5zaXRpb24sIHByb3BzKSB7XG4gIGlmIChDb21wb25lbnQpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcykpO1xuICB9XG4gIGlmIChydW5UcmFuc2l0aW9uKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEltcGVyYXRpdmVUcmFuc2l0aW9uLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdHJhbnNpdGlvbjogcnVuVHJhbnNpdGlvblxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTm9vcFRyYW5zaXRpb24sIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG59IiwiY29uc3QgX2V4Y2x1ZGVkID0gW1wic2hvd1wiLCBcInJvbGVcIiwgXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcImNoaWxkcmVuXCIsIFwiYmFja2Ryb3BcIiwgXCJrZXlib2FyZFwiLCBcIm9uQmFja2Ryb3BDbGlja1wiLCBcIm9uRXNjYXBlS2V5RG93blwiLCBcInRyYW5zaXRpb25cIiwgXCJydW5UcmFuc2l0aW9uXCIsIFwiYmFja2Ryb3BUcmFuc2l0aW9uXCIsIFwicnVuQmFja2Ryb3BUcmFuc2l0aW9uXCIsIFwiYXV0b0ZvY3VzXCIsIFwiZW5mb3JjZUZvY3VzXCIsIFwicmVzdG9yZUZvY3VzXCIsIFwicmVzdG9yZUZvY3VzT3B0aW9uc1wiLCBcInJlbmRlckRpYWxvZ1wiLCBcInJlbmRlckJhY2tkcm9wXCIsIFwibWFuYWdlclwiLCBcImNvbnRhaW5lclwiLCBcIm9uU2hvd1wiLCBcIm9uSGlkZVwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGVkXCIsIFwib25FeGl0aW5nXCIsIFwib25FbnRlclwiLCBcIm9uRW50ZXJpbmdcIiwgXCJvbkVudGVyZWRcIl07XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUsIHJlYWN0L3Byb3AtdHlwZXMgKi9cblxuaW1wb3J0IGFjdGl2ZUVsZW1lbnQgZnJvbSAnZG9tLWhlbHBlcnMvYWN0aXZlRWxlbWVudCc7XG5pbXBvcnQgY29udGFpbnMgZnJvbSAnZG9tLWhlbHBlcnMvY29udGFpbnMnO1xuaW1wb3J0IGNhblVzZURPTSBmcm9tICdkb20taGVscGVycy9jYW5Vc2VET00nO1xuaW1wb3J0IGxpc3RlbiBmcm9tICdkb20taGVscGVycy9saXN0ZW4nO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZUltcGVyYXRpdmVIYW5kbGUsIGZvcndhcmRSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHVzZU1vdW50ZWQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlTW91bnRlZCc7XG5pbXBvcnQgdXNlV2lsbFVubW91bnQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlV2lsbFVubW91bnQnO1xuaW1wb3J0IHVzZVByZXZpb3VzIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZVByZXZpb3VzJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IE1vZGFsTWFuYWdlciBmcm9tICcuL01vZGFsTWFuYWdlcic7XG5pbXBvcnQgdXNlV2FpdEZvckRPTVJlZiBmcm9tICcuL3VzZVdhaXRGb3JET01SZWYnO1xuaW1wb3J0IHVzZVdpbmRvdyBmcm9tICcuL3VzZVdpbmRvdyc7XG5pbXBvcnQgeyByZW5kZXJUcmFuc2l0aW9uIH0gZnJvbSAnLi9JbXBlcmF0aXZlVHJhbnNpdGlvbic7XG5pbXBvcnQgeyBpc0VzY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xubGV0IG1hbmFnZXI7XG5mdW5jdGlvbiBnZXRNYW5hZ2VyKHdpbmRvdykge1xuICBpZiAoIW1hbmFnZXIpIG1hbmFnZXIgPSBuZXcgTW9kYWxNYW5hZ2VyKHtcbiAgICBvd25lckRvY3VtZW50OiB3aW5kb3cgPT0gbnVsbCA/IHZvaWQgMCA6IHdpbmRvdy5kb2N1bWVudFxuICB9KTtcbiAgcmV0dXJuIG1hbmFnZXI7XG59XG5mdW5jdGlvbiB1c2VNb2RhbE1hbmFnZXIocHJvdmlkZWQpIHtcbiAgY29uc3Qgd2luZG93ID0gdXNlV2luZG93KCk7XG4gIGNvbnN0IG1vZGFsTWFuYWdlciA9IHByb3ZpZGVkIHx8IGdldE1hbmFnZXIod2luZG93KTtcbiAgY29uc3QgbW9kYWwgPSB1c2VSZWYoe1xuICAgIGRpYWxvZzogbnVsbCxcbiAgICBiYWNrZHJvcDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24obW9kYWwuY3VycmVudCwge1xuICAgIGFkZDogKCkgPT4gbW9kYWxNYW5hZ2VyLmFkZChtb2RhbC5jdXJyZW50KSxcbiAgICByZW1vdmU6ICgpID0+IG1vZGFsTWFuYWdlci5yZW1vdmUobW9kYWwuY3VycmVudCksXG4gICAgaXNUb3BNb2RhbDogKCkgPT4gbW9kYWxNYW5hZ2VyLmlzVG9wTW9kYWwobW9kYWwuY3VycmVudCksXG4gICAgc2V0RGlhbG9nUmVmOiB1c2VDYWxsYmFjayhyZWYgPT4ge1xuICAgICAgbW9kYWwuY3VycmVudC5kaWFsb2cgPSByZWY7XG4gICAgfSwgW10pLFxuICAgIHNldEJhY2tkcm9wUmVmOiB1c2VDYWxsYmFjayhyZWYgPT4ge1xuICAgICAgbW9kYWwuY3VycmVudC5iYWNrZHJvcCA9IHJlZjtcbiAgICB9LCBbXSlcbiAgfSk7XG59XG5jb25zdCBNb2RhbCA9IC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKChfcmVmLCByZWYpID0+IHtcbiAgbGV0IHtcbiAgICAgIHNob3cgPSBmYWxzZSxcbiAgICAgIHJvbGUgPSAnZGlhbG9nJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBiYWNrZHJvcCA9IHRydWUsXG4gICAgICBrZXlib2FyZCA9IHRydWUsXG4gICAgICBvbkJhY2tkcm9wQ2xpY2ssXG4gICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICB0cmFuc2l0aW9uLFxuICAgICAgcnVuVHJhbnNpdGlvbixcbiAgICAgIGJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgIHJ1bkJhY2tkcm9wVHJhbnNpdGlvbixcbiAgICAgIGF1dG9Gb2N1cyA9IHRydWUsXG4gICAgICBlbmZvcmNlRm9jdXMgPSB0cnVlLFxuICAgICAgcmVzdG9yZUZvY3VzID0gdHJ1ZSxcbiAgICAgIHJlc3RvcmVGb2N1c09wdGlvbnMsXG4gICAgICByZW5kZXJEaWFsb2csXG4gICAgICByZW5kZXJCYWNrZHJvcCA9IHByb3BzID0+IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSksXG4gICAgICBtYW5hZ2VyOiBwcm92aWRlZE1hbmFnZXIsXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclJlZixcbiAgICAgIG9uU2hvdyxcbiAgICAgIG9uSGlkZSA9ICgpID0+IHt9LFxuICAgICAgb25FeGl0LFxuICAgICAgb25FeGl0ZWQsXG4gICAgICBvbkV4aXRpbmcsXG4gICAgICBvbkVudGVyLFxuICAgICAgb25FbnRlcmluZyxcbiAgICAgIG9uRW50ZXJlZFxuICAgIH0gPSBfcmVmLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBjb250YWluZXIgPSB1c2VXYWl0Rm9yRE9NUmVmKGNvbnRhaW5lclJlZik7XG4gIGNvbnN0IG1vZGFsID0gdXNlTW9kYWxNYW5hZ2VyKHByb3ZpZGVkTWFuYWdlcik7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZU1vdW50ZWQoKTtcbiAgY29uc3QgcHJldlNob3cgPSB1c2VQcmV2aW91cyhzaG93KTtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IHVzZVN0YXRlKCFzaG93KTtcbiAgY29uc3QgbGFzdEZvY3VzUmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gbW9kYWwsIFttb2RhbF0pO1xuICBpZiAoY2FuVXNlRE9NICYmICFwcmV2U2hvdyAmJiBzaG93KSB7XG4gICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBhY3RpdmVFbGVtZW50KCk7XG4gIH1cblxuICAvLyBUT0RPOiBJIHRoaW5rIHRoaXMgbmVlZHMgdG8gYmUgaW4gYW4gZWZmZWN0XG4gIGlmIChzaG93ICYmIGV4aXRlZCkge1xuICAgIHNldEV4aXRlZChmYWxzZSk7XG4gIH1cbiAgY29uc3QgaGFuZGxlU2hvdyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG1vZGFsLmFkZCgpO1xuICAgIHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50ID0gbGlzdGVuKGRvY3VtZW50LCAna2V5ZG93bicsIGhhbmRsZURvY3VtZW50S2V5RG93bik7XG4gICAgcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50ID0gbGlzdGVuKGRvY3VtZW50LCAnZm9jdXMnLFxuICAgIC8vIHRoZSB0aW1lb3V0IGlzIG5lY2Vzc2FyeSBiL2MgdGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIG5ldyBtb2RhbCBpcyBtb3VudGVkXG4gICAgLy8gYW5kIHNvIHN0ZWFscyBmb2N1cyBmcm9tIGl0XG4gICAgKCkgPT4gc2V0VGltZW91dChoYW5kbGVFbmZvcmNlRm9jdXMpLCB0cnVlKTtcbiAgICBpZiAob25TaG93KSB7XG4gICAgICBvblNob3coKTtcbiAgICB9XG5cbiAgICAvLyBhdXRvZm9jdXMgYWZ0ZXIgb25TaG93IHRvIG5vdCB0cmlnZ2VyIGEgZm9jdXMgZXZlbnQgZm9yIHByZXZpb3VzXG4gICAgLy8gbW9kYWxzIGJlZm9yZSB0aGlzIG9uZSBpcyBzaG93bi5cbiAgICBpZiAoYXV0b0ZvY3VzKSB7XG4gICAgICBjb25zdCBjdXJyZW50QWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQoZG9jdW1lbnQpO1xuICAgICAgaWYgKG1vZGFsLmRpYWxvZyAmJiBjdXJyZW50QWN0aXZlRWxlbWVudCAmJiAhY29udGFpbnMobW9kYWwuZGlhbG9nLCBjdXJyZW50QWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgbGFzdEZvY3VzUmVmLmN1cnJlbnQgPSBjdXJyZW50QWN0aXZlRWxlbWVudDtcbiAgICAgICAgbW9kYWwuZGlhbG9nLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlSGlkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG1vZGFsLnJlbW92ZSgpO1xuICAgIHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZi5jdXJyZW50ID09IG51bGwgPyB2b2lkIDAgOiByZW1vdmVLZXlkb3duTGlzdGVuZXJSZWYuY3VycmVudCgpO1xuICAgIHJlbW92ZUZvY3VzTGlzdGVuZXJSZWYuY3VycmVudCA9PSBudWxsID8gdm9pZCAwIDogcmVtb3ZlRm9jdXNMaXN0ZW5lclJlZi5jdXJyZW50KCk7XG4gICAgaWYgKHJlc3RvcmVGb2N1cykge1xuICAgICAgdmFyIF9sYXN0Rm9jdXNSZWYkY3VycmVudDtcbiAgICAgIC8vIFN1cHBvcnQ6IDw9SUUxMSBkb2Vzbid0IHN1cHBvcnQgYGZvY3VzKClgIG9uIHN2ZyBlbGVtZW50cyAoUkI6ICM5MTcpXG4gICAgICAoX2xhc3RGb2N1c1JlZiRjdXJyZW50ID0gbGFzdEZvY3VzUmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbGFzdEZvY3VzUmVmJGN1cnJlbnQuZm9jdXMgPT0gbnVsbCA/IHZvaWQgMCA6IF9sYXN0Rm9jdXNSZWYkY3VycmVudC5mb2N1cyhyZXN0b3JlRm9jdXNPcHRpb25zKTtcbiAgICAgIGxhc3RGb2N1c1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRPRE86IHRyeSBhbmQgY29tYmluZSB0aGVzZSBlZmZlY3RzOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LW92ZXJsYXlzL3B1bGwvNzk0I2Rpc2N1c3Npb25fcjQwOTk1NDEyMFxuXG4gIC8vIFNob3cgbG9naWMgd2hlbjpcbiAgLy8gIC0gc2hvdyBpcyBgdHJ1ZWAgX2FuZF8gYGNvbnRhaW5lcmAgaGFzIHJlc29sdmVkXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93IHx8ICFjb250YWluZXIpIHJldHVybjtcbiAgICBoYW5kbGVTaG93KCk7XG4gIH0sIFtzaG93LCBjb250YWluZXIsIC8qIHNob3VsZCBuZXZlciBjaGFuZ2U6ICovaGFuZGxlU2hvd10pO1xuXG4gIC8vIEhpZGUgY2xlYW51cCBsb2dpYyB3aGVuOlxuICAvLyAgLSBgZXhpdGVkYCBzd2l0Y2hlcyB0byB0cnVlXG4gIC8vICAtIGNvbXBvbmVudCB1bm1vdW50cztcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWV4aXRlZCkgcmV0dXJuO1xuICAgIGhhbmRsZUhpZGUoKTtcbiAgfSwgW2V4aXRlZCwgaGFuZGxlSGlkZV0pO1xuICB1c2VXaWxsVW5tb3VudCgoKSA9PiB7XG4gICAgaGFuZGxlSGlkZSgpO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbnN0IGhhbmRsZUVuZm9yY2VGb2N1cyA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghZW5mb3JjZUZvY3VzIHx8ICFpc01vdW50ZWQoKSB8fCAhbW9kYWwuaXNUb3BNb2RhbCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudCgpO1xuICAgIGlmIChtb2RhbC5kaWFsb2cgJiYgY3VycmVudEFjdGl2ZUVsZW1lbnQgJiYgIWNvbnRhaW5zKG1vZGFsLmRpYWxvZywgY3VycmVudEFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICBtb2RhbC5kaWFsb2cuZm9jdXMoKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gdXNlRXZlbnRDYWxsYmFjayhlID0+IHtcbiAgICBpZiAoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvbkJhY2tkcm9wQ2xpY2sgPT0gbnVsbCA/IHZvaWQgMCA6IG9uQmFja2Ryb3BDbGljayhlKTtcbiAgICBpZiAoYmFja2Ryb3AgPT09IHRydWUpIHtcbiAgICAgIG9uSGlkZSgpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZURvY3VtZW50S2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soZSA9PiB7XG4gICAgaWYgKGtleWJvYXJkICYmIGlzRXNjS2V5KGUpICYmIG1vZGFsLmlzVG9wTW9kYWwoKSkge1xuICAgICAgb25Fc2NhcGVLZXlEb3duID09IG51bGwgPyB2b2lkIDAgOiBvbkVzY2FwZUtleURvd24oZSk7XG4gICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICBvbkhpZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCByZW1vdmVGb2N1c0xpc3RlbmVyUmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IHJlbW92ZUtleWRvd25MaXN0ZW5lclJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBoYW5kbGVIaWRkZW4gPSAoLi4uYXJncykgPT4ge1xuICAgIHNldEV4aXRlZCh0cnVlKTtcbiAgICBvbkV4aXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25FeGl0ZWQoLi4uYXJncyk7XG4gIH07XG4gIGlmICghY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgZGlhbG9nUHJvcHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByb2xlLFxuICAgIHJlZjogbW9kYWwuc2V0RGlhbG9nUmVmLFxuICAgIC8vIGFwcGFyZW50bHkgb25seSB3b3JrcyBvbiB0aGUgZGlhbG9nIHJvbGUgZWxlbWVudFxuICAgICdhcmlhLW1vZGFsJzogcm9sZSA9PT0gJ2RpYWxvZycgPyB0cnVlIDogdW5kZWZpbmVkXG4gIH0sIHJlc3QsIHtcbiAgICBzdHlsZSxcbiAgICBjbGFzc05hbWUsXG4gICAgdGFiSW5kZXg6IC0xXG4gIH0pO1xuICBsZXQgZGlhbG9nID0gcmVuZGVyRGlhbG9nID8gcmVuZGVyRGlhbG9nKGRpYWxvZ1Byb3BzKSA6IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGRpYWxvZ1Byb3BzLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIHJvbGU6ICdkb2N1bWVudCdcbiAgICB9KVxuICB9KSk7XG4gIGRpYWxvZyA9IHJlbmRlclRyYW5zaXRpb24odHJhbnNpdGlvbiwgcnVuVHJhbnNpdGlvbiwge1xuICAgIHVubW91bnRPbkV4aXQ6IHRydWUsXG4gICAgbW91bnRPbkVudGVyOiB0cnVlLFxuICAgIGFwcGVhcjogdHJ1ZSxcbiAgICBpbjogISFzaG93LFxuICAgIG9uRXhpdCxcbiAgICBvbkV4aXRpbmcsXG4gICAgb25FeGl0ZWQ6IGhhbmRsZUhpZGRlbixcbiAgICBvbkVudGVyLFxuICAgIG9uRW50ZXJpbmcsXG4gICAgb25FbnRlcmVkLFxuICAgIGNoaWxkcmVuOiBkaWFsb2dcbiAgfSk7XG4gIGxldCBiYWNrZHJvcEVsZW1lbnQgPSBudWxsO1xuICBpZiAoYmFja2Ryb3ApIHtcbiAgICBiYWNrZHJvcEVsZW1lbnQgPSByZW5kZXJCYWNrZHJvcCh7XG4gICAgICByZWY6IG1vZGFsLnNldEJhY2tkcm9wUmVmLFxuICAgICAgb25DbGljazogaGFuZGxlQmFja2Ryb3BDbGlja1xuICAgIH0pO1xuICAgIGJhY2tkcm9wRWxlbWVudCA9IHJlbmRlclRyYW5zaXRpb24oYmFja2Ryb3BUcmFuc2l0aW9uLCBydW5CYWNrZHJvcFRyYW5zaXRpb24sIHtcbiAgICAgIGluOiAhIXNob3csXG4gICAgICBhcHBlYXI6IHRydWUsXG4gICAgICBtb3VudE9uRW50ZXI6IHRydWUsXG4gICAgICB1bm1vdW50T25FeGl0OiB0cnVlLFxuICAgICAgY2hpbGRyZW46IGJhY2tkcm9wRWxlbWVudFxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL1JlYWN0RE9NLmNyZWF0ZVBvcnRhbCggLyojX19QVVJFX18qL19qc3hzKF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtiYWNrZHJvcEVsZW1lbnQsIGRpYWxvZ11cbiAgICB9KSwgY29udGFpbmVyKVxuICB9KTtcbn0pO1xuTW9kYWwuZGlzcGxheU5hbWUgPSAnTW9kYWwnO1xuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmFzc2lnbihNb2RhbCwge1xuICBNYW5hZ2VyOiBNb2RhbE1hbmFnZXJcbn0pOyIsImltcG9ydCB1c2VVcGRhdGVkUmVmIGZyb20gJy4vdXNlVXBkYXRlZFJlZic7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEF0dGFjaCBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgd2hlbiBhIGNvbXBvbmVudCB1bm1vdW50c1xuICpcbiAqIEBwYXJhbSBmbiBIYW5kbGVyIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgdW5tb3VudHNcbiAqIEBjYXRlZ29yeSBlZmZlY3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlV2lsbFVubW91bnQoZm4pIHtcbiAgdmFyIG9uVW5tb3VudCA9IHVzZVVwZGF0ZWRSZWYoZm4pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gb25Vbm1vdW50LmN1cnJlbnQoKTtcbiAgICB9O1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIGEgcmVmIHRoYXQgaXMgaW1tZWRpYXRlbHkgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdmFsdWVcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIFJlZiB2YWx1ZVxuICogQGNhdGVnb3J5IHJlZnNcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VVcGRhdGVkUmVmKHZhbHVlKSB7XG4gIHZhciB2YWx1ZVJlZiA9IHVzZVJlZih2YWx1ZSk7XG4gIHZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlUmVmO1xufSIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VzY0tleShlKSB7XG4gIHJldHVybiBlLmNvZGUgPT09ICdFc2NhcGUnIHx8IGUua2V5Q29kZSA9PT0gMjc7XG59IiwiaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVXaXRoQnNQcmVmaXgoJ29mZmNhbnZhcy1ib2R5Jyk7IiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBFTlRFUkVELCBFTlRFUklORywgRVhJVElORyB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbic7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZExpc3RlbmVyIGZyb20gJy4vdHJhbnNpdGlvbkVuZExpc3RlbmVyJztcbmltcG9ydCBUcmFuc2l0aW9uV3JhcHBlciBmcm9tICcuL1RyYW5zaXRpb25XcmFwcGVyJztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlXG59O1xuY29uc3QgdHJhbnNpdGlvblN0eWxlcyA9IHtcbiAgW0VOVEVSSU5HXTogJ3Nob3cnLFxuICBbRU5URVJFRF06ICdzaG93J1xufTtcbmNvbnN0IE9mZmNhbnZhc1RvZ2dsaW5nID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59LCByZWYpID0+IHtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdvZmZjYW52YXMnKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25XcmFwcGVyLCB7XG4gICAgcmVmOiByZWYsXG4gICAgYWRkRW5kTGlzdGVuZXI6IHRyYW5zaXRpb25FbmRMaXN0ZW5lcixcbiAgICAuLi5wcm9wcyxcbiAgICBjaGlsZFJlZjogY2hpbGRyZW4ucmVmLFxuICAgIGNoaWxkcmVuOiAoc3RhdHVzLCBpbm5lclByb3BzKSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAuLi5pbm5lclByb3BzLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzTmFtZSwgY2hpbGRyZW4ucHJvcHMuY2xhc3NOYW1lLCAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVYSVRJTkcpICYmIGAke2JzUHJlZml4fS10b2dnbGluZ2AsIHRyYW5zaXRpb25TdHlsZXNbc3RhdHVzXSlcbiAgICB9KVxuICB9KTtcbn0pO1xuT2ZmY2FudmFzVG9nZ2xpbmcuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuT2ZmY2FudmFzVG9nZ2xpbmcuZGlzcGxheU5hbWUgPSAnT2ZmY2FudmFzVG9nZ2xpbmcnO1xuZXhwb3J0IGRlZmF1bHQgT2ZmY2FudmFzVG9nZ2xpbmc7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgTW9kYWxDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uSGlkZSgpIHt9XG59KTtcbmV4cG9ydCBkZWZhdWx0IE1vZGFsQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSAnLi9DbG9zZUJ1dHRvbic7XG5pbXBvcnQgTW9kYWxDb250ZXh0IGZyb20gJy4vTW9kYWxDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGNsb3NlTGFiZWw6ICdDbG9zZScsXG4gIGNsb3NlQnV0dG9uOiBmYWxzZVxufTtcbmNvbnN0IEFic3RyYWN0TW9kYWxIZWFkZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZigoe1xuICBjbG9zZUxhYmVsLFxuICBjbG9zZVZhcmlhbnQsXG4gIGNsb3NlQnV0dG9uLFxuICBvbkhpZGUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1vZGFsQ29udGV4dCk7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgY29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogY29udGV4dC5vbkhpZGUoKTtcbiAgICBvbkhpZGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9uSGlkZSgpO1xuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhcImRpdlwiLCB7XG4gICAgcmVmOiByZWYsXG4gICAgLi4ucHJvcHMsXG4gICAgY2hpbGRyZW46IFtjaGlsZHJlbiwgY2xvc2VCdXR0b24gJiYgLyojX19QVVJFX18qL19qc3goQ2xvc2VCdXR0b24sIHtcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBjbG9zZUxhYmVsLFxuICAgICAgdmFyaWFudDogY2xvc2VWYXJpYW50LFxuICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICB9KV1cbiAgfSk7XG59KTtcbkFic3RyYWN0TW9kYWxIZWFkZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQWJzdHJhY3RNb2RhbEhlYWRlcjsiLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUJvb3RzdHJhcFByZWZpeCB9IGZyb20gJy4vVGhlbWVQcm92aWRlcic7XG5pbXBvcnQgQWJzdHJhY3RNb2RhbEhlYWRlciBmcm9tICcuL0Fic3RyYWN0TW9kYWxIZWFkZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgY2xvc2VMYWJlbDogJ0Nsb3NlJyxcbiAgY2xvc2VCdXR0b246IGZhbHNlXG59O1xuY29uc3QgT2ZmY2FudmFzSGVhZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBic1ByZWZpeCA9IHVzZUJvb3RzdHJhcFByZWZpeChic1ByZWZpeCwgJ29mZmNhbnZhcy1oZWFkZXInKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEFic3RyYWN0TW9kYWxIZWFkZXIsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeClcbiAgfSk7XG59KTtcbk9mZmNhbnZhc0hlYWRlci5kaXNwbGF5TmFtZSA9ICdPZmZjYW52YXNIZWFkZXInO1xuT2ZmY2FudmFzSGVhZGVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IE9mZmNhbnZhc0hlYWRlcjsiLCJpbXBvcnQgY3JlYXRlV2l0aEJzUHJlZml4IGZyb20gJy4vY3JlYXRlV2l0aEJzUHJlZml4JztcbmltcG9ydCBkaXZXaXRoQ2xhc3NOYW1lIGZyb20gJy4vZGl2V2l0aENsYXNzTmFtZSc7XG5jb25zdCBEaXZTdHlsZWRBc0g1ID0gZGl2V2l0aENsYXNzTmFtZSgnaDUnKTtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVdpdGhCc1ByZWZpeCgnb2ZmY2FudmFzLXRpdGxlJywge1xuICBDb21wb25lbnQ6IERpdlN0eWxlZEFzSDVcbn0pOyIsImZ1bmN0aW9uIHJlcGxhY2VDbGFzc05hbWUob3JpZ0NsYXNzLCBjbGFzc1RvUmVtb3ZlKSB7XG4gIHJldHVybiBvcmlnQ2xhc3MucmVwbGFjZShuZXcgUmVnRXhwKFwiKF58XFxcXHMpXCIgKyBjbGFzc1RvUmVtb3ZlICsgXCIoPzpcXFxcc3wkKVwiLCAnZycpLCAnJDEnKS5yZXBsYWNlKC9cXHMrL2csICcgJykucmVwbGFjZSgvXlxccyp8XFxzKiQvZywgJycpO1xufVxuLyoqXG4gKiBSZW1vdmVzIGEgQ1NTIGNsYXNzIGZyb20gYSBnaXZlbiBlbGVtZW50LlxuICogXG4gKiBAcGFyYW0gZWxlbWVudCB0aGUgZWxlbWVudFxuICogQHBhcmFtIGNsYXNzTmFtZSB0aGUgQ1NTIGNsYXNzIG5hbWVcbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHtcbiAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSByZXBsYWNlQ2xhc3NOYW1lKGVsZW1lbnQuY2xhc3NOYW1lLCBjbGFzc05hbWUpO1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHJlcGxhY2VDbGFzc05hbWUoZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCAnJywgY2xhc3NOYW1lKSk7XG4gIH1cbn0iLCJpbXBvcnQgYWRkQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvYWRkQ2xhc3MnO1xuaW1wb3J0IGNzcyBmcm9tICdkb20taGVscGVycy9jc3MnO1xuaW1wb3J0IHFzYSBmcm9tICdkb20taGVscGVycy9xdWVyeVNlbGVjdG9yQWxsJztcbmltcG9ydCByZW1vdmVDbGFzcyBmcm9tICdkb20taGVscGVycy9yZW1vdmVDbGFzcyc7XG5pbXBvcnQgTW9kYWxNYW5hZ2VyIGZyb20gJ0ByZXN0YXJ0L3VpL01vZGFsTWFuYWdlcic7XG5jb25zdCBTZWxlY3RvciA9IHtcbiAgRklYRURfQ09OVEVOVDogJy5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AnLFxuICBTVElDS1lfQ09OVEVOVDogJy5zdGlja3ktdG9wJyxcbiAgTkFWQkFSX1RPR0dMRVI6ICcubmF2YmFyLXRvZ2dsZXInXG59O1xuY2xhc3MgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyIGV4dGVuZHMgTW9kYWxNYW5hZ2VyIHtcbiAgYWRqdXN0QW5kU3RvcmUocHJvcCwgZWxlbWVudCwgYWRqdXN0KSB7XG4gICAgY29uc3QgYWN0dWFsID0gZWxlbWVudC5zdHlsZVtwcm9wXTtcbiAgICAvLyBUT0RPOiBET01TdHJpbmdNYXAgYW5kIENTU1N0eWxlRGVjbGFyYXRpb24gYXJlbid0IHN0cmljdGx5IGNvbXBhdGlibGVcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZWxlbWVudC5kYXRhc2V0W3Byb3BdID0gYWN0dWFsO1xuICAgIGNzcyhlbGVtZW50LCB7XG4gICAgICBbcHJvcF06IGAke3BhcnNlRmxvYXQoY3NzKGVsZW1lbnQsIHByb3ApKSArIGFkanVzdH1weGBcbiAgICB9KTtcbiAgfVxuICByZXN0b3JlKHByb3AsIGVsZW1lbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnQuZGF0YXNldFtwcm9wXTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIGVsZW1lbnQuZGF0YXNldFtwcm9wXTtcbiAgICAgIGNzcyhlbGVtZW50LCB7XG4gICAgICAgIFtwcm9wXTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBzZXRDb250YWluZXJTdHlsZShjb250YWluZXJTdGF0ZSkge1xuICAgIHN1cGVyLnNldENvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldEVsZW1lbnQoKTtcbiAgICBhZGRDbGFzcyhjb250YWluZXIsICdtb2RhbC1vcGVuJyk7XG4gICAgaWYgKCFjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkgcmV0dXJuO1xuICAgIGNvbnN0IHBhZGRpbmdQcm9wID0gdGhpcy5pc1JUTCA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICBjb25zdCBtYXJnaW5Qcm9wID0gdGhpcy5pc1JUTCA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCc7XG4gICAgcXNhKGNvbnRhaW5lciwgU2VsZWN0b3IuRklYRURfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLmFkanVzdEFuZFN0b3JlKHBhZGRpbmdQcm9wLCBlbCwgY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5TVElDS1lfQ09OVEVOVCkuZm9yRWFjaChlbCA9PiB0aGlzLmFkanVzdEFuZFN0b3JlKG1hcmdpblByb3AsIGVsLCAtY29udGFpbmVyU3RhdGUuc2Nyb2xsQmFyV2lkdGgpKTtcbiAgICBxc2EoY29udGFpbmVyLCBTZWxlY3Rvci5OQVZCQVJfVE9HR0xFUikuZm9yRWFjaChlbCA9PiB0aGlzLmFkanVzdEFuZFN0b3JlKG1hcmdpblByb3AsIGVsLCBjb250YWluZXJTdGF0ZS5zY3JvbGxCYXJXaWR0aCkpO1xuICB9XG4gIHJlbW92ZUNvbnRhaW5lclN0eWxlKGNvbnRhaW5lclN0YXRlKSB7XG4gICAgc3VwZXIucmVtb3ZlQ29udGFpbmVyU3R5bGUoY29udGFpbmVyU3RhdGUpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0RWxlbWVudCgpO1xuICAgIHJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ21vZGFsLW9wZW4nKTtcbiAgICBjb25zdCBwYWRkaW5nUHJvcCA9IHRoaXMuaXNSVEwgPyAncGFkZGluZ0xlZnQnIDogJ3BhZGRpbmdSaWdodCc7XG4gICAgY29uc3QgbWFyZ2luUHJvcCA9IHRoaXMuaXNSVEwgPyAnbWFyZ2luTGVmdCcgOiAnbWFyZ2luUmlnaHQnO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLkZJWEVEX0NPTlRFTlQpLmZvckVhY2goZWwgPT4gdGhpcy5yZXN0b3JlKHBhZGRpbmdQcm9wLCBlbCkpO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLlNUSUNLWV9DT05URU5UKS5mb3JFYWNoKGVsID0+IHRoaXMucmVzdG9yZShtYXJnaW5Qcm9wLCBlbCkpO1xuICAgIHFzYShjb250YWluZXIsIFNlbGVjdG9yLk5BVkJBUl9UT0dHTEVSKS5mb3JFYWNoKGVsID0+IHRoaXMucmVzdG9yZShtYXJnaW5Qcm9wLCBlbCkpO1xuICB9XG59XG5sZXQgc2hhcmVkTWFuYWdlcjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRNYW5hZ2VyKG9wdGlvbnMpIHtcbiAgaWYgKCFzaGFyZWRNYW5hZ2VyKSBzaGFyZWRNYW5hZ2VyID0gbmV3IEJvb3RzdHJhcE1vZGFsTWFuYWdlcihvcHRpb25zKTtcbiAgcmV0dXJuIHNoYXJlZE1hbmFnZXI7XG59XG5leHBvcnQgZGVmYXVsdCBCb290c3RyYXBNb2RhbE1hbmFnZXI7IiwiaW1wb3J0IGhhc0NsYXNzIGZyb20gJy4vaGFzQ2xhc3MnO1xuLyoqXG4gKiBBZGRzIGEgQ1NTIGNsYXNzIHRvIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7ZWxzZSBpZiAoIWhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lICsgXCIgXCIgKyBjbGFzc05hbWU7ZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAoZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCAnJykgKyBcIiBcIiArIGNsYXNzTmFtZSk7XG59IiwiLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBlbGVtZW50IGhhcyBhIENTUyBjbGFzcy5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHJldHVybiAhIWNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpO1xuICByZXR1cm4gKFwiIFwiICsgKGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgZWxlbWVudC5jbGFzc05hbWUpICsgXCIgXCIpLmluZGV4T2YoXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIikgIT09IC0xO1xufSIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVzZUJyZWFrcG9pbnQgZnJvbSAnQHJlc3RhcnQvaG9va3MvdXNlQnJlYWtwb2ludCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAcmVzdGFydC9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmFzZU1vZGFsIGZyb20gJ0ByZXN0YXJ0L3VpL01vZGFsJztcbmltcG9ydCBGYWRlIGZyb20gJy4vRmFkZSc7XG5pbXBvcnQgT2ZmY2FudmFzQm9keSBmcm9tICcuL09mZmNhbnZhc0JvZHknO1xuaW1wb3J0IE9mZmNhbnZhc1RvZ2dsaW5nIGZyb20gJy4vT2ZmY2FudmFzVG9nZ2xpbmcnO1xuaW1wb3J0IE1vZGFsQ29udGV4dCBmcm9tICcuL01vZGFsQ29udGV4dCc7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IE9mZmNhbnZhc0hlYWRlciBmcm9tICcuL09mZmNhbnZhc0hlYWRlcic7XG5pbXBvcnQgT2ZmY2FudmFzVGl0bGUgZnJvbSAnLi9PZmZjYW52YXNUaXRsZSc7XG5pbXBvcnQgeyB1c2VCb290c3RyYXBQcmVmaXggfSBmcm9tICcuL1RoZW1lUHJvdmlkZXInO1xuaW1wb3J0IEJvb3RzdHJhcE1vZGFsTWFuYWdlciwgeyBnZXRTaGFyZWRNYW5hZ2VyIH0gZnJvbSAnLi9Cb290c3RyYXBNb2RhbE1hbmFnZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBzaG93OiBmYWxzZSxcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBzY3JvbGw6IGZhbHNlLFxuICBhdXRvRm9jdXM6IHRydWUsXG4gIGVuZm9yY2VGb2N1czogdHJ1ZSxcbiAgcmVzdG9yZUZvY3VzOiB0cnVlLFxuICBwbGFjZW1lbnQ6ICdzdGFydCcsXG4gIHJlbmRlclN0YXRpY05vZGU6IGZhbHNlXG59O1xuZnVuY3Rpb24gRGlhbG9nVHJhbnNpdGlvbihwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goT2ZmY2FudmFzVG9nZ2xpbmcsIHtcbiAgICAuLi5wcm9wc1xuICB9KTtcbn1cbmZ1bmN0aW9uIEJhY2tkcm9wVHJhbnNpdGlvbihwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRmFkZSwge1xuICAgIC4uLnByb3BzXG4gIH0pO1xufVxuY29uc3QgT2ZmY2FudmFzID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoKHtcbiAgYnNQcmVmaXgsXG4gIGNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRieSxcbiAgcGxhY2VtZW50LFxuICByZXNwb25zaXZlLFxuICAvKiBCYXNlTW9kYWwgcHJvcHMgKi9cblxuICBzaG93LFxuICBiYWNrZHJvcCxcbiAga2V5Ym9hcmQsXG4gIHNjcm9sbCxcbiAgb25Fc2NhcGVLZXlEb3duLFxuICBvblNob3csXG4gIG9uSGlkZSxcbiAgY29udGFpbmVyLFxuICBhdXRvRm9jdXMsXG4gIGVuZm9yY2VGb2N1cyxcbiAgcmVzdG9yZUZvY3VzLFxuICByZXN0b3JlRm9jdXNPcHRpb25zLFxuICBvbkVudGVyZWQsXG4gIG9uRXhpdCxcbiAgb25FeGl0aW5nLFxuICBvbkVudGVyLFxuICBvbkVudGVyaW5nLFxuICBvbkV4aXRlZCxcbiAgYmFja2Ryb3BDbGFzc05hbWUsXG4gIG1hbmFnZXI6IHByb3BzTWFuYWdlcixcbiAgcmVuZGVyU3RhdGljTm9kZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBtb2RhbE1hbmFnZXIgPSB1c2VSZWYoKTtcbiAgYnNQcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdvZmZjYW52YXMnKTtcbiAgY29uc3Qge1xuICAgIG9uVG9nZ2xlXG4gIH0gPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpIHx8IHt9O1xuICBjb25zdCBbc2hvd09mZmNhbnZhcywgc2V0U2hvd09mZmNhbnZhc10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGhpZGVSZXNwb25zaXZlT2ZmY2FudmFzID0gdXNlQnJlYWtwb2ludChyZXNwb25zaXZlIHx8ICd4cycsICd1cCcpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgc2NyZWVuIGlzIHJlc2l6ZWQgd2hpbGUgdGhlIHJlc3BvbnNpdmVcbiAgICAvLyBvZmZjYW52YXMgaXMgc2hvd24uIElmIGByZXNwb25zaXZlYCBub3QgcHJvdmlkZWQsIGp1c3QgdXNlIGBzaG93YC5cbiAgICBzZXRTaG93T2ZmY2FudmFzKHJlc3BvbnNpdmUgPyBzaG93ICYmICFoaWRlUmVzcG9uc2l2ZU9mZmNhbnZhcyA6IHNob3cpO1xuICB9LCBbc2hvdywgcmVzcG9uc2l2ZSwgaGlkZVJlc3BvbnNpdmVPZmZjYW52YXNdKTtcbiAgY29uc3QgaGFuZGxlSGlkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIG9uVG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiBvblRvZ2dsZSgpO1xuICAgIG9uSGlkZSA9PSBudWxsID8gdm9pZCAwIDogb25IaWRlKCk7XG4gIH0pO1xuICBjb25zdCBtb2RhbENvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgb25IaWRlOiBoYW5kbGVIaWRlXG4gIH0pLCBbaGFuZGxlSGlkZV0pO1xuICBmdW5jdGlvbiBnZXRNb2RhbE1hbmFnZXIoKSB7XG4gICAgaWYgKHByb3BzTWFuYWdlcikgcmV0dXJuIHByb3BzTWFuYWdlcjtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAvLyBIYXZlIHRvIHVzZSBhIGRpZmZlcmVudCBtb2RhbCBtYW5hZ2VyIHNpbmNlIHRoZSBzaGFyZWRcbiAgICAgIC8vIG9uZSBoYW5kbGVzIG92ZXJmbG93LlxuICAgICAgaWYgKCFtb2RhbE1hbmFnZXIuY3VycmVudCkgbW9kYWxNYW5hZ2VyLmN1cnJlbnQgPSBuZXcgQm9vdHN0cmFwTW9kYWxNYW5hZ2VyKHtcbiAgICAgICAgaGFuZGxlQ29udGFpbmVyT3ZlcmZsb3c6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtb2RhbE1hbmFnZXIuY3VycmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFNoYXJlZE1hbmFnZXIoKTtcbiAgfVxuICBjb25zdCBoYW5kbGVFbnRlciA9IChub2RlLCAuLi5hcmdzKSA9PiB7XG4gICAgaWYgKG5vZGUpIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICBvbkVudGVyID09IG51bGwgPyB2b2lkIDAgOiBvbkVudGVyKG5vZGUsIC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSAobm9kZSwgLi4uYXJncykgPT4ge1xuICAgIGlmIChub2RlKSBub2RlLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcbiAgICBvbkV4aXRlZCA9PSBudWxsID8gdm9pZCAwIDogb25FeGl0ZWQoLi4uYXJncyk7XG4gIH07XG4gIGNvbnN0IHJlbmRlckJhY2tkcm9wID0gdXNlQ2FsbGJhY2soYmFja2Ryb3BQcm9wcyA9PiAvKiNfX1BVUkVfXyovX2pzeChcImRpdlwiLCB7XG4gICAgLi4uYmFja2Ryb3BQcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoYCR7YnNQcmVmaXh9LWJhY2tkcm9wYCwgYmFja2Ryb3BDbGFzc05hbWUpXG4gIH0pLCBbYmFja2Ryb3BDbGFzc05hbWUsIGJzUHJlZml4XSk7XG4gIGNvbnN0IHJlbmRlckRpYWxvZyA9IGRpYWxvZ1Byb3BzID0+IC8qI19fUFVSRV9fKi9fanN4KFwiZGl2XCIsIHtcbiAgICAuLi5kaWFsb2dQcm9wcyxcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCByZXNwb25zaXZlID8gYCR7YnNQcmVmaXh9LSR7cmVzcG9uc2l2ZX1gIDogYnNQcmVmaXgsIGAke2JzUHJlZml4fS0ke3BsYWNlbWVudH1gKSxcbiAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRieSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IFshc2hvd09mZmNhbnZhcyAmJiAocmVzcG9uc2l2ZSB8fCByZW5kZXJTdGF0aWNOb2RlKSAmJiByZW5kZXJEaWFsb2coe30pLCAvKiNfX1BVUkVfXyovX2pzeChNb2RhbENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBtb2RhbENvbnRleHQsXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQmFzZU1vZGFsLCB7XG4gICAgICAgIHNob3c6IHNob3dPZmZjYW52YXMsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBiYWNrZHJvcDogYmFja2Ryb3AsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgICBrZXlib2FyZDoga2V5Ym9hcmQsXG4gICAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgICBlbmZvcmNlRm9jdXM6IGVuZm9yY2VGb2N1cyAmJiAhc2Nyb2xsLFxuICAgICAgICByZXN0b3JlRm9jdXM6IHJlc3RvcmVGb2N1cyxcbiAgICAgICAgcmVzdG9yZUZvY3VzT3B0aW9uczogcmVzdG9yZUZvY3VzT3B0aW9ucyxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uU2hvdzogb25TaG93LFxuICAgICAgICBvbkhpZGU6IGhhbmRsZUhpZGUsXG4gICAgICAgIG9uRW50ZXI6IGhhbmRsZUVudGVyLFxuICAgICAgICBvbkVudGVyaW5nOiBvbkVudGVyaW5nLFxuICAgICAgICBvbkVudGVyZWQ6IG9uRW50ZXJlZCxcbiAgICAgICAgb25FeGl0OiBvbkV4aXQsXG4gICAgICAgIG9uRXhpdGluZzogb25FeGl0aW5nLFxuICAgICAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgICAgICBtYW5hZ2VyOiBnZXRNb2RhbE1hbmFnZXIoKSxcbiAgICAgICAgdHJhbnNpdGlvbjogRGlhbG9nVHJhbnNpdGlvbixcbiAgICAgICAgYmFja2Ryb3BUcmFuc2l0aW9uOiBCYWNrZHJvcFRyYW5zaXRpb24sXG4gICAgICAgIHJlbmRlckJhY2tkcm9wOiByZW5kZXJCYWNrZHJvcCxcbiAgICAgICAgcmVuZGVyRGlhbG9nOiByZW5kZXJEaWFsb2dcbiAgICAgIH0pXG4gICAgfSldXG4gIH0pO1xufSk7XG5PZmZjYW52YXMuZGlzcGxheU5hbWUgPSAnT2ZmY2FudmFzJztcbk9mZmNhbnZhcy5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5leHBvcnQgZGVmYXVsdCBPYmplY3QuYXNzaWduKE9mZmNhbnZhcywge1xuICBCb2R5OiBPZmZjYW52YXNCb2R5LFxuICBIZWFkZXI6IE9mZmNhbnZhc0hlYWRlcixcbiAgVGl0bGU6IE9mZmNhbnZhc1RpdGxlXG59KTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IE9mZmNhbnZhcyBmcm9tICcuL09mZmNhbnZhcyc7XG5pbXBvcnQgTmF2YmFyQ29udGV4dCBmcm9tICcuL05hdmJhckNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IE5hdmJhck9mZmNhbnZhcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE5hdmJhckNvbnRleHQpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goT2ZmY2FudmFzLCB7XG4gICAgcmVmOiByZWYsXG4gICAgc2hvdzogISEoY29udGV4dCAhPSBudWxsICYmIGNvbnRleHQuZXhwYW5kZWQpLFxuICAgIC4uLnByb3BzLFxuICAgIHJlbmRlclN0YXRpY05vZGU6IHRydWVcbiAgfSk7XG59KTtcbk5hdmJhck9mZmNhbnZhcy5kaXNwbGF5TmFtZSA9ICdOYXZiYXJPZmZjYW52YXMnO1xuZXhwb3J0IGRlZmF1bHQgTmF2YmFyT2ZmY2FudmFzOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU2VsZWN0YWJsZUNvbnRleHQgZnJvbSAnQHJlc3RhcnQvdWkvU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlVW5jb250cm9sbGVkIH0gZnJvbSAndW5jb250cm9sbGFibGUnO1xuaW1wb3J0IGNyZWF0ZVdpdGhCc1ByZWZpeCBmcm9tICcuL2NyZWF0ZVdpdGhCc1ByZWZpeCc7XG5pbXBvcnQgTmF2YmFyQnJhbmQgZnJvbSAnLi9OYXZiYXJCcmFuZCc7XG5pbXBvcnQgTmF2YmFyQ29sbGFwc2UgZnJvbSAnLi9OYXZiYXJDb2xsYXBzZSc7XG5pbXBvcnQgTmF2YmFyVG9nZ2xlIGZyb20gJy4vTmF2YmFyVG9nZ2xlJztcbmltcG9ydCBOYXZiYXJPZmZjYW52YXMgZnJvbSAnLi9OYXZiYXJPZmZjYW52YXMnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZiYXJDb250ZXh0IGZyb20gJy4vTmF2YmFyQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTmF2YmFyVGV4dCA9IGNyZWF0ZVdpdGhCc1ByZWZpeCgnbmF2YmFyLXRleHQnLCB7XG4gIENvbXBvbmVudDogJ3NwYW4nXG59KTtcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZXhwYW5kOiB0cnVlLFxuICB2YXJpYW50OiAnbGlnaHQnLFxuICBjb2xsYXBzZU9uU2VsZWN0OiBmYWxzZVxufTtcbmNvbnN0IE5hdmJhciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBic1ByZWZpeDogaW5pdGlhbEJzUHJlZml4LFxuICAgIGV4cGFuZCxcbiAgICB2YXJpYW50LFxuICAgIGJnLFxuICAgIGZpeGVkLFxuICAgIHN0aWNreSxcbiAgICBjbGFzc05hbWUsXG4gICAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICAgIGFzOiBDb21wb25lbnQgPSAnbmF2JyxcbiAgICBleHBhbmRlZCxcbiAgICBvblRvZ2dsZSxcbiAgICBvblNlbGVjdCxcbiAgICBjb2xsYXBzZU9uU2VsZWN0LFxuICAgIC4uLmNvbnRyb2xsZWRQcm9wc1xuICB9ID0gdXNlVW5jb250cm9sbGVkKHByb3BzLCB7XG4gICAgZXhwYW5kZWQ6ICdvblRvZ2dsZSdcbiAgfSk7XG4gIGNvbnN0IGJzUHJlZml4ID0gdXNlQm9vdHN0cmFwUHJlZml4KGluaXRpYWxCc1ByZWZpeCwgJ25hdmJhcicpO1xuICBjb25zdCBoYW5kbGVDb2xsYXBzZSA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgb25TZWxlY3QgPT0gbnVsbCA/IHZvaWQgMCA6IG9uU2VsZWN0KC4uLmFyZ3MpO1xuICAgIGlmIChjb2xsYXBzZU9uU2VsZWN0ICYmIGV4cGFuZGVkKSB7XG4gICAgICBvblRvZ2dsZSA9PSBudWxsID8gdm9pZCAwIDogb25Ub2dnbGUoZmFsc2UpO1xuICAgIH1cbiAgfSwgW29uU2VsZWN0LCBjb2xsYXBzZU9uU2VsZWN0LCBleHBhbmRlZCwgb25Ub2dnbGVdKTtcblxuICAvLyB3aWxsIHJlc3VsdCBpbiBzb21lIGZhbHNlIHBvc2l0aXZlcyBidXQgdGhhdCBzZWVtcyBiZXR0ZXJcbiAgLy8gdGhhbiBmYWxzZSBuZWdhdGl2ZXMuIHN0cmljdCBgdW5kZWZpbmVkYCBjaGVjayBhbGxvd3MgZXhwbGljaXRcbiAgLy8gXCJudWxsaW5nXCIgb2YgdGhlIHJvbGUgaWYgdGhlIHVzZXIgcmVhbGx5IGRvZXNuJ3Qgd2FudCBvbmVcbiAgaWYgKGNvbnRyb2xsZWRQcm9wcy5yb2xlID09PSB1bmRlZmluZWQgJiYgQ29tcG9uZW50ICE9PSAnbmF2Jykge1xuICAgIGNvbnRyb2xsZWRQcm9wcy5yb2xlID0gJ25hdmlnYXRpb24nO1xuICB9XG4gIGxldCBleHBhbmRDbGFzcyA9IGAke2JzUHJlZml4fS1leHBhbmRgO1xuICBpZiAodHlwZW9mIGV4cGFuZCA9PT0gJ3N0cmluZycpIGV4cGFuZENsYXNzID0gYCR7ZXhwYW5kQ2xhc3N9LSR7ZXhwYW5kfWA7XG4gIGNvbnN0IG5hdmJhckNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgb25Ub2dnbGU6ICgpID0+IG9uVG9nZ2xlID09IG51bGwgPyB2b2lkIDAgOiBvblRvZ2dsZSghZXhwYW5kZWQpLFxuICAgIGJzUHJlZml4LFxuICAgIGV4cGFuZGVkOiAhIWV4cGFuZGVkLFxuICAgIGV4cGFuZFxuICB9KSwgW2JzUHJlZml4LCBleHBhbmRlZCwgZXhwYW5kLCBvblRvZ2dsZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTmF2YmFyQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBuYXZiYXJDb250ZXh0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3RhYmxlQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGhhbmRsZUNvbGxhcHNlLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENvbXBvbmVudCwge1xuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgLi4uY29udHJvbGxlZFByb3BzLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBic1ByZWZpeCwgZXhwYW5kICYmIGV4cGFuZENsYXNzLCB2YXJpYW50ICYmIGAke2JzUHJlZml4fS0ke3ZhcmlhbnR9YCwgYmcgJiYgYGJnLSR7Ymd9YCwgc3RpY2t5ICYmIGBzdGlja3ktJHtzdGlja3l9YCwgZml4ZWQgJiYgYGZpeGVkLSR7Zml4ZWR9YClcbiAgICAgIH0pXG4gICAgfSlcbiAgfSk7XG59KTtcbk5hdmJhci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5OYXZiYXIuZGlzcGxheU5hbWUgPSAnTmF2YmFyJztcbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5hc3NpZ24oTmF2YmFyLCB7XG4gIEJyYW5kOiBOYXZiYXJCcmFuZCxcbiAgQ29sbGFwc2U6IE5hdmJhckNvbGxhcHNlLFxuICBPZmZjYW52YXM6IE5hdmJhck9mZmNhbnZhcyxcbiAgVGV4dDogTmF2YmFyVGV4dCxcbiAgVG9nZ2xlOiBOYXZiYXJUb2dnbGVcbn0pOyIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGZsdWlkOiBmYWxzZVxufTtcbmNvbnN0IENvbnRhaW5lciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGJzUHJlZml4LFxuICBmbHVpZCxcbiAgLy8gTmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgXCJhc1wiIGR1cmluZyBwcm9wIGRlc3RydWN0dXJpbmcgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHN0eWxlZC1jb21wb25lbnRzIGdpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvMzU5NVxuICBhczogQ29tcG9uZW50ID0gJ2RpdicsXG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn0sIHJlZikgPT4ge1xuICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdjb250YWluZXInKTtcbiAgY29uc3Qgc3VmZml4ID0gdHlwZW9mIGZsdWlkID09PSAnc3RyaW5nJyA/IGAtJHtmbHVpZH1gIDogJy1mbHVpZCc7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDb21wb25lbnQsIHtcbiAgICByZWY6IHJlZixcbiAgICAuLi5wcm9wcyxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBmbHVpZCA/IGAke3ByZWZpeH0ke3N1ZmZpeH1gIDogcHJlZml4KVxuICB9KTtcbn0pO1xuQ29udGFpbmVyLmRpc3BsYXlOYW1lID0gJ0NvbnRhaW5lcic7XG5Db250YWluZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyOyIsIi8qXG4gKiBUaGlzIGZpbGUgaXMgYSBwYXJ0IG9mIHRoZSBDYW9zREIgUHJvamVjdC5cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgSGVucmlrIHRvbSBXw7ZyZGVuIDxoLnRvbXdvZXJkZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIFRpbW0gRml0c2NoZW4gPHQuZml0c2NoZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG4vLy8vLy8vIEFVVE8gQ09NUExFVElPTlxuY29uc3QgQ1FMX1dPUkRTID0gW1xuICBcIkZJTkRcIixcbiAgXCJGSUxFXCIsXG4gIFwiRU5USVRZXCIsXG4gIFwiU0VMRUNUXCIsXG4gIFwiQ09VTlRcIixcbiAgXCJSRUNPUkRcIixcbiAgXCJQUk9QRVJUWVwiLFxuICBcIlJFQ09SRFRZUEVcIixcbiAgXCJSRUZFUkVOQ0VTXCIsXG4gIFwiUkVGRVJFTkNFRCBCWVwiLFxuICBcIldISUNIXCIsXG4gIFwiV0lUSFwiLFxuICBcIkNSRUFURUQgQllcIixcbiAgXCJDUkVBVEVEIEJZIE1FXCIsXG4gIFwiQ1JFQVRFRCBBVFwiLFxuICBcIkNSRUFURUQgT05cIixcbiAgXCJDUkVBVEVEIElOXCIsXG4gIFwiQ1JFQVRFRCBCRUZPUkVcIixcbiAgXCJDUkVBVEVEIFVOVElMXCIsXG4gIFwiQ1JFQVRFRCBBRlRFUlwiLFxuICBcIkNSRUFURUQgU0lOQ0VcIixcbiAgXCJTT01FT05FXCIsXG4gIFwiU1RPUkVEIEFUXCIsXG4gIFwiSEFTIEEgUFJPUEVSVFlcIixcbiAgXCJIQVMgQkVFTlwiLFxuICBcIkFOWSBWRVJTSU9OIE9GXCIsXG4gIFwiRlJPTVwiLFxuICBcIklOU0VSVEVEIEFUXCIsXG4gIFwiSU5TRVJURUQgT05cIixcbiAgXCJJTlNFUlRFRCBJTlwiLFxuICBcIklOU0VSVEVEIEJZXCIsXG4gIFwiSU5TRVJURUQgQlkgTUVcIixcbiAgXCJJTlNFUlRFRCBCRUZPUkVcIixcbiAgXCJJTlNFUlRFRCBVTlRJTFwiLFxuICBcIklOU0VSVEVEIEFGVEVSXCIsXG4gIFwiSU5TRVJURUQgU0lOQ0VcIixcbiAgXCJVUERBVEVEIEFUXCIsXG4gIFwiVVBEQVRFRCBPTlwiLFxuICBcIlVQREFURUQgSU5cIixcbiAgXCJVUERBVEVEIEJZXCIsXG4gIFwiVVBEQVRFRCBCWSBNRVwiLFxuICBcIlVQREFURUQgQkVGT1JFXCIsXG4gIFwiVVBEQVRFRCBVTlRJTFwiLFxuICBcIlVQREFURUQgQUZURVJcIixcbiAgXCJVUERBVEVEIFNJTkNFXCIsXG4gIFwiU0lOQ0VcIixcbiAgXCJCRUZPUkVcIixcbiAgXCJPTlwiLFxuICBcIklOXCIsXG4gIFwiQUZURVJcIixcbiAgXCJVTlRJTFwiLFxuICBcIkFUXCIsXG4gIFwiQllcIixcbiAgXCJCWSBNRVwiLFxuXTtcblxuZnVuY3Rpb24gcHJlcGFyZVRlcm1zKHRlcm1zKSB7XG4gIHJldHVybiB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICB2YXIgdGVybV9lc2NhcGVkID0gdGVybTtcbiAgICBpZiAodGVybV9lc2NhcGVkLmluZGV4T2YoXCIgXCIpID4gLTEpIHtcbiAgICAgIGlmICh0ZXJtLmluZGV4T2YoJ1wiJykgPiAtMSkge1xuICAgICAgICB0ZXJtX2VzY2FwZWQgPSBgJyR7dGVybV9lc2NhcGVkfSdgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVybV9lc2NhcGVkID0gYFwiJHt0ZXJtX2VzY2FwZWR9XCJgO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgb3JpZ2luYWw6IHRlcm0sXG4gICAgICBub3JtYWxpemVkOiB0ZXJtLnRyaW0oKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZXNjYXBlZDogdGVybV9lc2NhcGVkLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlQ3FsV29yZHMod29yZHMpIHtcbiAgcmV0dXJuIHdvcmRzLm1hcCgod29yZCkgPT4gKHtcbiAgICBvcmlnaW5hbDogd29yZCxcbiAgICBub3JtYWxpemVkOiB3b3JkLnRyaW0oKS50b0xvd2VyQ2FzZSgpLFxuICAgIGVzY2FwZWQ6IHdvcmQsXG4gIH0pKTtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0aW9uIHtcbiAgY29uc3RydWN0b3IodGVybXMsIGNxbF93b3Jkcykge1xuICAgIHRoaXMuX2NxbF93b3JkcyA9IHByZXBhcmVDcWxXb3JkcyhjcWxfd29yZHMgfHwgQ1FMX1dPUkRTKTtcbiAgICB0aGlzLl90ZXJtcyA9IHRlcm1zIHx8IFtdO1xuICAgIHRoaXMuX3Jlc29sdmVkX3Rlcm1zID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3VnZ2VzdGlvbnMoaXNDcWwsIGZ1bGxRdWVyeSwgd29yZCkge1xuICAgIGlmIChpc0NxbCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q3FsU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0U2VhcmNoVGVybVN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCk7XG4gIH1cblxuICBhc3luYyBfZG9fcmVzb2x2ZV90ZXJtcyh0ZXJtcykge1xuICAgIHZhciByZXNvbHZlZF90ZXJtcztcbiAgICBpZiAodHlwZW9mIHRlcm1zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlc29sdmVkX3Rlcm1zID0gYXdhaXQgdGVybXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWRfdGVybXMgPSBhd2FpdCB0ZXJtcztcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHByZXBhcmVUZXJtcyhyZXNvbHZlZF90ZXJtcyk7XG4gIH1cblxuICBhc3luYyBfZ2V0VGVybXMoKSB7XG4gICAgaWYgKCF0aGlzLl9yZXNvbHZlZF90ZXJtcykge1xuICAgICAgdGhpcy5fcmVzb2x2ZWRfdGVybXMgPSB0aGlzLl9kb19yZXNvbHZlX3Rlcm1zKHRoaXMuX3Rlcm1zKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3Jlc29sdmVkX3Rlcm1zO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2VhcmNoVGVybVN1Z2dlc3Rpb25zKGZ1bGxRdWVyeSwgd29yZCkge1xuICAgIHZhciB0ZXJtcyA9IGF3YWl0IHRoaXMuX2dldFRlcm1zKCk7XG4gICAgaWYgKGZ1bGxRdWVyeSA9PT0gd29yZCkge1xuICAgICAgLy8gc3RpbGwgb25seSBvbmUgd29yZCAtPiBhbHNvIGFwcGVuZCBGSU5ELCBTRUxFQ1QgYW5kIENPVU5UXG4gICAgICB0ZXJtcyA9IHByZXBhcmVDcWxXb3JkcyhbXCJGSU5EXCIsIFwiU0VMRUNUXCIsIFwiQ09VTlRcIl0pLmNvbmNhdCh0ZXJtcyk7XG4gICAgfVxuICAgIGNvbnN0IHdvcmROb3JtYWxpemVkID0gd29yZC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGVybXMuZmlsdGVyKCh0ZXJtKSA9PiB0ZXJtLm5vcm1hbGl6ZWQuc3RhcnRzV2l0aCh3b3JkTm9ybWFsaXplZCkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3FsU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKSB7XG4gICAgY29uc3QgY3FsX3dvcmRzID0gdGhpcy5fY3FsX3dvcmRzO1xuXG4gICAgY29uc3Qgd29yZE5vcm1hbGl6ZWQgPSB3b3JkLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBjcWxfd29yZHNcbiAgICAgIC5maWx0ZXIoKHRlcm0pID0+IHRlcm0ubm9ybWFsaXplZC5zdGFydHNXaXRoKHdvcmROb3JtYWxpemVkKSlcbiAgICAgIC5jb25jYXQoYXdhaXQgdGhpcy5nZXRTZWFyY2hUZXJtU3VnZ2VzdGlvbnMoZnVsbFF1ZXJ5LCB3b3JkKSk7XG4gIH1cbn1cblxuLy8vLy8vLyBRVUVSWSBHRU5FUkFUSU9OXG5cbmV4cG9ydCBjb25zdCBpc0NxbCA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICBxdWVyeSA9IHF1ZXJ5LnRvVXBwZXJDYXNlKCkudHJpbSgpO1xuICByZXR1cm4gKFxuICAgIHF1ZXJ5LnN0YXJ0c1dpdGgoXCJGSU5EXCIpIHx8XG4gICAgcXVlcnkuc3RhcnRzV2l0aChcIkNPVU5UXCIpIHx8XG4gICAgcXVlcnkuc3RhcnRzV2l0aChcIlNFTEVDVFwiKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VsZWN0ID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gIHJldHVybiBxdWVyeS50b1VwcGVyQ2FzZSgpLnRyaW0oKS5zdGFydHNXaXRoKFwiU0VMRUNUXCIpO1xufTtcblxuY29uc3QgdHJhbnNsYXRvciA9IHtcbiAgXCI9XCI6IFwiPVwiLFxuICBcIj5cIjogXCI+XCIsXG4gIFwi4omlXCI6IFwiPj1cIixcbiAgXCI8XCI6IFwiPFwiLFxuICBcIuKJpFwiOiBcIjw9XCIsXG4gIFwi4omgXCI6IFwiIT1cIixcbiAgZXF1YWxzOiBcIj1cIixcbiAgaW46IFwiaW5cIixcbiAgXCJub3QgaW5cIjogXCJub3QgaW5cIixcbiAgXCJhZnRlciBkYXRlXCI6IFwiPlwiLFxuICBcInNpbmNlIGRhdGVcIjogXCI+PVwiLFxuICBcInVudGlsIGRhdGVcIjogXCI8PVwiLFxuICBcImJlZm9yZSBkYXRlXCI6IFwiPFwiLFxuICBcIm9uIGRhdGVcIjogXCJvblwiLFxuICBcIm5vdCBvbiBkYXRlXCI6IFwibm90IG9uXCIsXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSAocHJvcGVydHksIG9wZXJhdG9yLCB2YWx1ZSwgdW5pdCkgdHVwbGUgdG8gYSB2YWxpZCBDUUwgUE9WLWZpbHRlclxuICogZXhwcmVzc2lvbiBpbmNsdWRpbmcgcXVvdGF0aW9uIGZvciB0aGUgdmFsdWUgYW5kIHBhcmVudGhlc2lzIGFyb3VuZFxuICogZXZlcnl0aGluZyBmb3Igc2FmZSBpbnRlcnByZXRhdGlvbiBieSB0aGUgQ1FMIHBhcnNlci5cbiAqXG4gKiAgIEUuZy4gKFwiRXZlbnQubG9uZ2l0dWRlXCIsIFwiPlwiLCAtNDAsIFwiwrBcIikgcmVzdWx0cyBpblxuICogICAgICAgICcoRXZlbnQubG9uZ2l0dWRlID4gXCItNDDCsFwiKScuXG4gKlxuICogTm90ZTogVGhlIGNvcnJlY3QgcXVvdGF0aW9uIGZvciB0aGUgcHJvcGVydHkgbXVzdCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFzc2VkXG4gKiBgcHJvcGVydHlgIGFscmVhZHkgYW5kIGhlbmNlIGJlIGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybX5GaWx0ZXJEZWZpbml0aW9uLlxuICpcbiAqIE5vdGU6IFRoaXMgaXMgbmVlZGVkIGJ5IG1ha2VRdWVyeSBhbmQgaGFuZGxlcyB0aGUgbW9zdCBiYXNpYyBjYXNlcy4gRm9yXG4gKiBvcGVyYXRvcnMgbGlrZSBgbm90IGNvbnRhaW5zYCBvciBgcmFuZ2VgIHRoZXJlIGFyZSBzcGVjaWFsIHRyZWF0bWVudHNcbiAqIGVsc2V3aGVyZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvclxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFt1bml0XVxuICogQHJldHVybiB7c3RyaW5nfSBDUUwgUE9WLWZpbHRlciBleHByZXNzaW9uLlxuICovXG5jb25zdCB0b0NRTCA9IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSA9PiB7XG4gIHZhbHVlID0gdmFsdWUgfHwgXCJcIjtcbiAgdW5pdCA9IHVuaXQgfHwgXCJcIjtcbiAgY29uc3QgcXVvdGVzID0gdW5pdCAhPT0gXCJcIiA/IFwiXCIgOiB2YWx1ZS5pbmRleE9mKCdcIicpID09PSAtMSA/ICdcIicgOiBcIidcIjtcbiAgaWYgKHRyYW5zbGF0b3Jbb3BlcmF0b3JdKSB7XG4gICAgcmV0dXJuIGAoJHtwcm9wZXJ0eX0gJHt0cmFuc2xhdG9yW29wZXJhdG9yXX0gJHtxdW90ZXN9JHt2YWx1ZX0ke3VuaXR9JHtxdW90ZXN9KWA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgdHJhbnNsYXRlICR7cHJvcGVydHl9ICR7b3BlcmF0b3J9IGZpbHRlcmAsIHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhbGxvd2VkX29wZXJhdG9ycyA9IHtcbiAgYm9vbGVhbjogW1wiaXMgdHJ1ZVwiLCBcImlzIGZhbHNlXCJdLFxuICB0ZXh0OiBbXCJlcXVhbHNcIiwgXCJub3QgZXF1YWxzXCIsIFwiY29udGFpbnNcIiwgXCJub3QgY29udGFpbnNcIl0sXG4gIGludGVnZXI6IFtcIj1cIiwgXCLiiaBcIiwgXCLiiaVcIiwgXCLiiaRcIiwgXCI8XCIsIFwiPlwiLCBcInJhbmdlXCJdLFxuICBkb3VibGU6IFtcIj1cIiwgXCLiiaBcIiwgXCLiiaVcIiwgXCLiiaRcIiwgXCI8XCIsIFwiPlwiLCBcInJhbmdlXCJdLFxuICBkYXRldGltZTogW1xuICAgIFwiPVwiLFxuICAgIFwi4omgXCIsXG4gICAgXCJvbiBkYXRlXCIsXG4gICAgXCJpblwiLFxuICAgIFwibm90IG9uIGRhdGVcIixcbiAgICBcIm5vdCBpblwiLFxuICAgIFwiYWZ0ZXIgZGF0ZVwiLFxuICAgIFwiYmVmb3JlIGRhdGVcIixcbiAgICBcInVudGlsIGRhdGVcIixcbiAgICBcInNpbmNlIGRhdGVcIixcbiAgXSxcbn07XG5cbi8qKlxuICogRGljdGlvbmFyeSBvZiBmdW5jdGlvbnM6XG4gKlxuICogKGRhdGF0eXBlLG9wZXJhdG9yKSAtPiBmdW5jdGlvbihwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KVxuICovXG5jb25zdCBtYWtlX3F1ZXJ5X2ZpbHRlciA9IHtcbiAgYm9vbGVhbjoge1xuICAgIFwiaXMgdHJ1ZVwiOiAocHJvcGVydHkpID0+IGAoJHtwcm9wZXJ0eX0gPSBUUlVFKWAsXG4gICAgXCJpcyBmYWxzZVwiOiAocHJvcGVydHkpID0+IGAoJHtwcm9wZXJ0eX0gPSBGQUxTRSlgLFxuICB9LFxuICB0ZXh0OiB7XG4gICAgY29udGFpbnM6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlKSA9PiBgKCR7cHJvcGVydHl9IExJS0UgXCIqJHt2YWx1ZX0qXCIpYCxcbiAgICBcIm5vdCBlcXVhbHNcIjogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUpID0+XG4gICAgICBgKE5PVCAke3Byb3BlcnR5fSA9IFwiJHt2YWx1ZX1cIilgLFxuICAgIFwibm90IGNvbnRhaW5zXCI6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlKSA9PlxuICAgICAgYChOT1QgJHtwcm9wZXJ0eX0gTElLRSBcIioke3ZhbHVlfSpcIilgLFxuICB9LFxuICBpbnRlZ2VyOiB7XG4gICAgcmFuZ2U6IChwcm9wZXJ0eSwgb3BlcmF0b3IsIHZhbHVlLCB1bml0KSA9PlxuICAgICAgYCgke3Byb3BlcnR5fSA+ICR7dmFsdWVbMF19JHt1bml0fSkgQU5EICgke3Byb3BlcnR5fSA8ICR7dmFsdWVbMV19JHt1bml0fSlgLFxuICB9LFxuICBkb3VibGU6IHtcbiAgICByYW5nZTogKHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+XG4gICAgICBgKCR7cHJvcGVydHl9ID4gJHt2YWx1ZVswXX0ke3VuaXR9KSBBTkQgKCR7cHJvcGVydHl9IDwgJHt2YWx1ZVsxXX0ke3VuaXR9KWAsXG4gIH0sXG4gIF9kZWZhdWx0OiB7IF9kZWZhdWx0OiB0b0NRTCB9LFxufTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHZhbGlkIENRTCBQT1YtZmlsdGVyIGV4cHJlc3Npb25zIGFwcHJvcHJpYXRlIGZvciBhIHR1cGxlXG4gKiAoZGF0YXR5cGUsIHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhdHlwZVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdF1cbiAqIEByZXR1cm4ge3N0cmluZ30gQ1FMIFBPVi1maWx0ZXIgZXhwcmVzc2lvbi5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlUXVlcnlGaWx0ZXIgPSAoZGF0YXR5cGUsIHByb3BlcnR5LCBvcGVyYXRvciwgdmFsdWUsIHVuaXQpID0+IHtcbiAgaWYgKCFkYXRhdHlwZSB8fCAhb3BlcmF0b3IpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHVuaXQgPSB1bml0IHx8IFwiXCI7XG5cbiAgaWYgKG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXSkge1xuICAgIGlmIChcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtvcGVyYXRvcl0gfHxcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtvcGVyYXRvcl0gPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltkYXRhdHlwZV1bb3BlcmF0b3JdKFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB1bml0LFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0gfHxcbiAgICAgIG1ha2VfcXVlcnlfZmlsdGVyW2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gbWFrZV9xdWVyeV9maWx0ZXJbZGF0YXR5cGVdW1wiX2RlZmF1bHRcIl0oXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBvcGVyYXRvcixcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHVuaXQsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW29wZXJhdG9yXSkge1xuICAgIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW29wZXJhdG9yXShcbiAgICAgIHByb3BlcnR5LFxuICAgICAgb3BlcmF0b3IsXG4gICAgICB2YWx1ZSxcbiAgICAgIHVuaXQsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBtYWtlX3F1ZXJ5X2ZpbHRlcltcIl9kZWZhdWx0XCJdW1wiX2RlZmF1bHRcIl0oXG4gICAgcHJvcGVydHksXG4gICAgb3BlcmF0b3IsXG4gICAgdmFsdWUsXG4gICAgdW5pdCxcbiAgKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZF90eXBlXG4gKiBAcmV0dXJucyB7UXVlcnlGb3Jtfm1ha2VRdWVyeUNhbGxiYWNrfVxuICovXG5leHBvcnQgY29uc3QgbWFrZVF1ZXJ5VGVtcGxhdGUgPVxuICAocmVjb3JkX3R5cGUpID0+IChzZWFyY2hfdGVybXMsIGFjdGl2ZUZpbHRlcnMpID0+IHtcbiAgICB2YXIgcXVlcnkgPSBcIkZJTkQgUkVDT1JEXCI7XG4gICAgaWYgKHJlY29yZF90eXBlKSB7XG4gICAgICBxdWVyeSArPSBgIFwiJHtyZWNvcmRfdHlwZX1cImA7XG4gICAgfVxuICAgIHZhciBmaWx0ZXJfY29ubmVjdG9yID0gXCIgV0lUSCBcIjtcbiAgICBpZiAoc2VhcmNoX3Rlcm1zICYmIHNlYXJjaF90ZXJtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzcGxpdHRlZF9zZWFyY2hfdGVybXMgPSBzcGxpdFNlYXJjaFRlcm1zKHNlYXJjaF90ZXJtcykubWFwKFxuICAgICAgICAod29yZCkgPT4gYEEgUFJPUEVSVFkgTElLRSAnKiR7d29yZC5yZXBsYWNlQWxsKFwiJ1wiLCBgXFxcXCdgKX0qJ2AsXG4gICAgICApO1xuICAgICAgaWYgKHNwbGl0dGVkX3NlYXJjaF90ZXJtcy5sZW5ndGgpIHtcbiAgICAgICAgZmlsdGVyX2Nvbm5lY3RvciA9IFwiIEFORCBcIjtcbiAgICAgICAgcXVlcnkgKz0gXCIgV0lUSCBcIiArIHNwbGl0dGVkX3NlYXJjaF90ZXJtcy5qb2luKGZpbHRlcl9jb25uZWN0b3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcnMgPSBhY3RpdmVGaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PlxuICAgICAgbWFrZVF1ZXJ5RmlsdGVyKFxuICAgICAgICBmaWx0ZXIuZGF0YXR5cGUsXG4gICAgICAgIGZpbHRlci5wcm9wZXJ0eSxcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yLFxuICAgICAgICBmaWx0ZXIudmFsdWUsXG4gICAgICAgIGZpbHRlci51bml0LFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcXVlcnkgKz0gZmlsdGVyX2Nvbm5lY3RvciArIGZpbHRlcnMuam9pbihcIiBBTkQgXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBxdWVyeTtcbiAgfTtcblxuY29uc3QgX3NwbGl0U2VhcmNoVGVybXNQYXR0ZXJuID1cbiAgL1wiKD88ZHE+W15cIl0qKVwiIHwnKD88c3E+W14nXSopJyB8KD88bnE+W14gXSspL2c7XG5cbi8qKlxuICogU3BsaXQgYSBxdWVyeSBzdHJpbmcgaW50byBzaW5nbGUgdGVybXMuXG4gKlxuICogVGVybXMgYXJlIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZXMuIFRlcm1zIHdoaWNoIGNvbnRhaW4gd2hpdGUgc3BhY2VzXG4gKiB3aGljaCBhcmUgdG8gYmUgcHJlc2VydmVkIG11c3QgYmUgZW5jbG9zZWQgaW4gXCIgb3IgJyBxdW90ZXMuIFRoZVxuICogZW5jbG9zaW5nIHF1b3RhdGlvbiBtYXJrcyBhcmUgYmVpbmcgc3RyaXBwZWQuIEN1cnJlbnRseSBubyBzdXBwb3J0IGZvclxuICogZXNjYXBlIHNlcXVlbmNlcyBmb3IgcXVvdGF0aW9uIG1hcmtzLlxuICpcbiAqIEBmdW5jdGlvbiBzcGxpdFNlYXJjaFRlcm1zXG4gKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkgLSBjb21wbGV0ZSBxdWVyeSBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgdGhlIHNlYXJjaCB0ZXJtcy5cbiAqL1xuY29uc3Qgc3BsaXRTZWFyY2hUZXJtcyA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICAvLyBhZGQgZW1wdHkgc3BhY2UgYXQgdGhlIGVuZCwgc28gZXZlcnkgbWF0Y2hpbmcgZ3JvdXAgZW5kcyB3aXRoIGl0IC0+IGVhc2llciByZWdleC4gQWxzbywgdW5kZWZpbmVkIGlzIGZpbHRlcmVkIG91dFxuICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAocXVlcnkgKyBcIiBcIikubWF0Y2hBbGwoX3NwbGl0U2VhcmNoVGVybXNQYXR0ZXJuKSxcbiAgICAobSkgPT4gbVsxXSB8fCBtWzJdIHx8IG1bM10sXG4gICkuZmlsdGVyKCh3b3JkKSA9PiB3b3JkKTtcbn07XG5cbi8vLy8vLyBUQUJTXG5cbi8qKlxuICogRmlsdGVyRGVmaW5pdGlvbnMgZGVmaW5lIHdoaWNoIGZpbHRlcnMgY2FuIGJlIHNlbGVjdGVkIGJ5IHRoZSB1c2Vycy5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWVyeUZvcm1+RmlsdGVyRGVmaW5pdGlvblxuICogQHB1YmxpY1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3BlcnR5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gZGF0YXR5cGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWluXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3N0ZXBdXG4gKiBAcHJvcGVydHkge3N0cmludH0gW3VuaXRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lucHV0VHlwZV1cbiAqL1xuXG4vKipcbiAqIFF1ZXJ5RmlsdGVycyBzcGVjaWZ5IHRoZSBjdXJyZW50IGZpbHRlcnMgYSB1c2VyIGhhcyBzcGVjaWZpZWQgdXNpbmcgdGhlXG4gKiBRdWVyeUZvcm0uXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gUXVlcnlGb3JtflF1ZXJ5RmlsdGVyXG4gKiBAcHVibGljXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvcGVydHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXRhdHlwZVxuICogQHByb3BlcnR5IHtzdGlybmd9IG9wZXJhdG9yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdW5pdFxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICovXG5cbi8qKlxuICogV2hlbiB0aGUgcXVlcnkgZm9ybSBpcyBiZWluZyBzdWJtaXR0ZWQsIHRoaXMgY2FsbGJhY2sgZ2VuZXJhdGVzIHRoZSBxdWVyeVxuICogZnJvbSB0aGUgc2VhcmNoIHRlcm1zIGFuZCBhY3RpdmUgRmlsdGVycy5cbiAqXG4gKiBAY2FsbGJhY2sgUXVlcnlGb3Jtfm1ha2VRdWVyeUNhbGxiYWNrXG4gKiBAcHVibGljXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGVybXNcbiAqIEBwYXJhbSB7UXVlcnlGb3JtflF1ZXJ5RmlsdGVyW119IGFjdGl2ZUZpbHRlcnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBnZW5lcmF0ZWQgQ1FMIHF1ZXJ5LlxuICovXG5cbi8qKlxuICogQ3JlYXRlIGEgdGFiIG9iamVjdC5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuICogQHBhcmFtIHtzdHJpbmd9IHJlY29yZFR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGFiZWxdXG4gKiBAcGFyYW0ge3N0cmluZ30gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtIHtRdWVyeUZvcm1+bWFrZVF1ZXJ5Q2FsbGJhY2t9IFttYWtlUXVlcnlDYWxsYmFjaz1tYWtlUXVlcnlUZW1wbGF0ZShpZCldXG4gKiBAcGFyYW0ge1F1ZXJ5Rm9ybX5GaWx0ZXJEZWZpbml0aW9uW119IFtmaWx0ZXJEZWZpbml0aW9ucz1bXV1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhYihcbiAgaWQsXG4gIHJlY29yZFR5cGUsXG4gIGxhYmVsLFxuICBkZXNjcmlwdGlvbixcbiAgbWFrZVF1ZXJ5Q2FsbGJhY2ssXG4gIGZpbHRlckRlZmluaXRpb25zLFxuKSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGlkLFxuICAgIHJlY29yZFR5cGU6IHJlY29yZFR5cGUsXG4gICAgbGFiZWw6IGxhYmVsIHx8IHJlY29yZFR5cGUgfHwgaWQsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBkZXNjcmlwdGlvbiB8fCBgU2hvdyBvbmx5IHJlc3VsdHMgb2YgdHlwZSAke2xhYmVsIHx8IHJlY29yZFR5cGUgfHwgaWR9YCxcbiAgICBtYWtlUXVlcnk6IG1ha2VRdWVyeUNhbGxiYWNrIHx8IG1ha2VRdWVyeVRlbXBsYXRlKHJlY29yZFR5cGUpLFxuICAgIGZpbHRlckRlZmluaXRpb25zOiBmaWx0ZXJEZWZpbml0aW9ucyB8fCBbXSxcbiAgfTtcbn1cblxuLy8vLy8vIERFQlVHR0lORyBBTkQgVEVTVElOR1xuXG4vKipcbiAqIENyZWF0ZSBzb21lIHF1ZXJ5IHBhbmVsIHRhYnMgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldF90ZXN0X3RhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IG1ha2VGaWx0ZXJEZWZpbml0aW9ucyA9IChpZCkgPT4gW1xuICAgIHsgcHJvcGVydHk6IGlkICsgXCItdGV4dC1wcm9wZXJ0eVwiLCBkYXRhdHlwZTogXCJ0ZXh0XCIgfSxcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLWRhdGV0aW1lLXByb3BlcnR5XCIsIGRhdGF0eXBlOiBcImRhdGV0aW1lXCIgfSxcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLWludGVnZXItcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IGlkICsgXCItZG91YmxlLXByb3BlcnR5XCIsXG4gICAgICBkYXRhdHlwZTogXCJkb3VibGVcIixcbiAgICAgIG1pbjogXCItNTBcIixcbiAgICAgIG1heDogXCI1MFwiLFxuICAgICAgdW5pdDogXCJtXCIsXG4gICAgfSxcbiAgICB7IHByb3BlcnR5OiBpZCArIFwiLWJvb2xlYW4tcHJvcGVydHlcIiwgZGF0YXR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IGBcIiR7aWR9LXJlZmVyZW5jZS1wcm9wZXJ0eVwiLlwic3ViLXByb3BlcnR5XCJgLFxuICAgICAgbGFiZWw6IGBzdWItcHJvcGVydHkgb2YgJHtpZH0tcmVmZXJlbmNlLXByb3BlcnR5YCxcbiAgICAgIGRhdGF0eXBlOiBcInRleHRcIixcbiAgICB9LFxuICBdO1xuICByZXR1cm4gW1xuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwiYWxsXCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBcIkFsbFwiLFxuICAgICAgXCJTaG93IGFsbCBtYXRjaGluZyByZXN1bHRzXCIsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIlwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcImFsbFwiKSxcbiAgICApLFxuICAgIGNyZWF0ZVRhYihcbiAgICAgIFwiZGF0YXNldFwiLFxuICAgICAgXCJEYXRhc2V0XCIsXG4gICAgICBcIkRhdGFzZXRcIixcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIG1ha2VRdWVyeVRlbXBsYXRlKFwiRGF0YXNldFwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcImRhdGFzZXRcIiksXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcImV2ZW50XCIsXG4gICAgICBcIkV2ZW50XCIsXG4gICAgICBcIkV2ZW50XCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIkV2ZW50XCIpLFxuICAgICAgbWFrZUZpbHRlckRlZmluaXRpb25zKFwiZXZlbnRcIiksXG4gICAgKSxcbiAgICBjcmVhdGVUYWIoXG4gICAgICBcInBlcnNvblwiLFxuICAgICAgXCJQZXJzb25cIixcbiAgICAgIFwiUGVyc29uXCIsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBtYWtlUXVlcnlUZW1wbGF0ZShcIlBlcnNvblwiKSxcbiAgICAgIG1ha2VGaWx0ZXJEZWZpbml0aW9ucyhcInBlcnNvblwiKSxcbiAgICApLFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldF90ZXN0X3N1Z2dlc3Rpb25zID0gYXN5bmMgKGlzQ3FsLCBmdWxsLCBwcmVmaXgpID0+IHtcbiAgY29uc3QgYWMgPSBuZXcgQXV0b0NvbXBsZXRpb24oXG4gICAgKCkgPT4gW1xuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjFcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24yXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uM1wiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjRcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb241XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uNlwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjdcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb244XCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uOVwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjEwXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTFcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xMlwiLFxuICAgICAgcHJlZml4ICsgXCItc3VnZ2VzdGlvbjEzXCIsXG4gICAgICBwcmVmaXggKyBcIi1zdWdnZXN0aW9uMTRcIixcbiAgICAgIHByZWZpeCArIFwiLXN1Z2dlc3Rpb24xNVwiLFxuICAgIF0sXG4gICAgQ1FMX1dPUkRTLFxuICApO1xuICByZXR1cm4gYWMuZ2V0U3VnZ2VzdGlvbnMoaXNDcWwsIGZ1bGwsIHByZWZpeCk7XG59O1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIFRpbW0gRml0c2NoZW4gPHQuZml0c2NoZW5AaW5kaXNjYWxlLmNvbT5cbiAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzIEluZGlTY2FsZSBHbWJIIDxpbmZvQGluZGlzY2FsZS5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGVcbiAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlTWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZVJlZHVjZXIsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlQ29udGV4dCxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5pbXBvcnQgZ2V0Q2FyZXRDb29yZGluYXRlcyBmcm9tIFwidGV4dGFyZWEtY2FyZXRcIjtcbmltcG9ydCB7IEF1dG9Db21wbGV0aW9uIH0gZnJvbSBcIi4vUXVlcnlGb3JtLmhlbHBlcnNcIjtcbmltcG9ydCB7XG4gIGFsbG93ZWRfb3BlcmF0b3JzLFxuICBpc1NlbGVjdCBhcyBmSXNTZWxlY3QsXG4gIGlzQ3FsIGFzIGZJc0NxbCxcbiAgZ2V0X3Rlc3Rfc3VnZ2VzdGlvbnMsXG4gIGdldF90ZXN0X3RhYnMsXG59IGZyb20gXCIuL1F1ZXJ5Rm9ybS5oZWxwZXJzXCI7XG5cbmNvbnN0IFF1ZXJ5Rm9ybUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcblxuY29uc3QgUmFuZ2VGaWx0ZXJJbnB1dCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG9uQ2hhbmdlLCB2YWx1ZSB9ID0gcHJvcHM7XG4gIGNvbnN0IG9uQ2hhbmdlTWluID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld0UgPSB7IHRhcmdldDogeyB2YWx1ZTogW2UudGFyZ2V0LnZhbHVlLCB2YWx1ZVsxXV0gfSB9O1xuICAgICAgb25DaGFuZ2UobmV3RSk7XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIHZhbHVlXSxcbiAgKTtcbiAgY29uc3Qgb25DaGFuZ2VNYXggPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgY29uc3QgbmV3RSA9IHsgdGFyZ2V0OiB7IHZhbHVlOiBbdmFsdWVbMF0sIGUudGFyZ2V0LnZhbHVlXSB9IH07XG4gICAgICBvbkNoYW5nZShuZXdFKTtcbiAgICB9LFxuICAgIFtvbkNoYW5nZSwgdmFsdWVdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWVbMF19XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZU1pbn1cbiAgICAgICAgbWF4PXtwcm9wcy52YWx1ZVsxXX1cbiAgICAgIC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJteC0xXCI+dG88L3NwYW4+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlWzFdfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VNYXh9XG4gICAgICAgIG1pbj17cHJvcHMudmFsdWVbMF19XG4gICAgICAvPlxuICAgICAge3Byb3BzLnVuaXRFbGVtZW50fVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgRmlsdGVySW5wdXQgPSAoe1xuICBtaW4sXG4gIG1heCxcbiAgc3RlcCxcbiAgdmFsdWUsXG4gIHNldFZhbHVlLFxuICBkYXRhdHlwZSxcbiAgb3BlcmF0b3IsXG4gIHVuaXQsXG4gIGlucHV0dHlwZSxcbn0pID0+IHtcbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4gc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpLCBbc2V0VmFsdWVdKTtcbiAgaWYgKCFkYXRhdHlwZSB8fCAhb3BlcmF0b3IpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgIGNsYXNzTmFtZTogXCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCIsXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtaW46IG1pbixcbiAgICBtYXg6IG1heCxcbiAgfTtcbiAgaWYgKGlucHV0dHlwZSkge1xuICAgIGRlZmF1bHRQcm9wcy50eXBlID0gaW5wdXR0eXBlO1xuICB9XG4gIGlmIChzdGVwKSB7XG4gICAgZGVmYXVsdFByb3BzLnN0ZXAgPSBzdGVwO1xuICB9XG5cbiAgY29uc3QgdW5pdEVsZW1lbnQgPSB1bml0ICYmIChcbiAgICA8c3BhbiBjbGFzc05hbWU9XCJtcy0xXCIgdGl0bGU9XCJUaGUgdW5pdFwiPlxuICAgICAge3VuaXR9XG4gICAgPC9zcGFuPlxuICApO1xuXG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IHtcbiAgICBib29sZWFuOiB7IF9kZWZhdWx0OiBudWxsIH0sXG4gICAgaW50ZWdlcjoge1xuICAgICAgX2RlZmF1bHQ6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8aW5wdXQgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cIm51bWJlclwiIHN0ZXA9XCIxXCIgLz5cbiAgICAgICAgICB7dW5pdEVsZW1lbnR9XG4gICAgICAgIDwvPlxuICAgICAgKSxcbiAgICAgIHJhbmdlOiAoXG4gICAgICAgIDxSYW5nZUZpbHRlcklucHV0XG4gICAgICAgICAgdW5pdEVsZW1lbnQ9e3VuaXRFbGVtZW50fVxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICB9LFxuICAgIGRvdWJsZToge1xuICAgICAgX2RlZmF1bHQ6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8aW5wdXQgc3RlcD1cIjAuMDAxXCIgey4uLmRlZmF1bHRQcm9wc30gdHlwZT1cIm51bWJlclwiIC8+XG4gICAgICAgICAge3VuaXRFbGVtZW50fVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICByYW5nZTogKFxuICAgICAgICA8UmFuZ2VGaWx0ZXJJbnB1dFxuICAgICAgICAgIHVuaXRFbGVtZW50PXt1bml0RWxlbWVudH1cbiAgICAgICAgICBzdGVwPVwiMC4wMDFcIlxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgIC8+XG4gICAgICApLFxuICAgIH0sXG4gICAgX2RlZmF1bHQ6IHsgX2RlZmF1bHQ6IDxpbnB1dCB7Li4uZGVmYXVsdFByb3BzfSAvPiB9LFxuICB9O1xuXG4gIGlmIChpbnB1dEVsZW1lbnRbZGF0YXR5cGVdKSB7XG4gICAgaWYgKFxuICAgICAgaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtvcGVyYXRvcl0gfHxcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bb3BlcmF0b3JdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtvcGVyYXRvcl07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGlucHV0RWxlbWVudFtkYXRhdHlwZV1bXCJfZGVmYXVsdFwiXSB8fFxuICAgICAgaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gaW5wdXRFbGVtZW50W2RhdGF0eXBlXVtcIl9kZWZhdWx0XCJdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbnB1dEVsZW1lbnRbXCJfZGVmYXVsdFwiXVtvcGVyYXRvcl0pIHtcbiAgICByZXR1cm4gaW5wdXRFbGVtZW50W1wiX2RlZmF1bHRcIl1bb3BlcmF0b3JdO1xuICB9XG5cbiAgcmV0dXJuIGlucHV0RWxlbWVudFtcIl9kZWZhdWx0XCJdW1wiX2RlZmF1bHRcIl07XG59O1xuXG5mdW5jdGlvbiBDcWxIaW50KCkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LWNxbC1oaW50XCJcbiAgICAgIHRpdGxlPVwiWW91IGFyZSB1c2luZyB0aGUgZXhwZXJ0IHNlYXJjaCBtb2RlLiBFbnRlciBhIHZhbGlkIENRTCBRdWVyeS5cIlxuICAgID5cbiAgICAgIENRTFxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1TaW5nbGVUYWIoeyB0YWIsIHNldEFjdGl2ZVRhYiwgaXNBY3RpdmVUYWIgfSkge1xuICBjb25zdCBhY3RpdmF0ZVRhYiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWlzQWN0aXZlVGFiKSB7XG4gICAgICBzZXRBY3RpdmVUYWIodGFiKTtcbiAgICB9XG4gIH0sIFt0YWIsIHNldEFjdGl2ZVRhYiwgaXNBY3RpdmVUYWJdKTtcblxuICBjb25zdCBjbGFzc05hbWUgPSBcImNhb3NkYi1mLXF1ZXJ5LXRhYlwiICsgKGlzQWN0aXZlVGFiID8gXCIgYWN0aXZlXCIgOiBcIlwiKTtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHRpdGxlPXt0YWIuZGVzY3JpcHRpb259XG4gICAgICB0YWJJbmRleD17aXNBY3RpdmVUYWIgPyBcIi0xXCIgOiBcIjBcIn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGljaz17aXNBY3RpdmVUYWIgPyB1bmRlZmluZWQgOiBhY3RpdmF0ZVRhYn1cbiAgICA+XG4gICAgICB7dGFiLmxhYmVsfVxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG5mdW5jdGlvbiBBZGRUYWJGaWx0ZXJPcGVyYXRvcih7XG4gIGZpbHRlcixcbiAgZmlsdGVySWR4LFxuICB1cGRhdGVGaWx0ZXIsXG4gIHJlc3RvcmVPcGVyYXRvcixcbiAgcmVzdG9yZVZhbHVlLFxufSkge1xuICBjb25zdCBbb3BlcmF0b3IsIHNldE9wZXJhdG9yXSA9IHVzZVN0YXRlKFxuICAgIGZpbHRlci5vcGVyYXRvciB8fCBhbGxvd2VkX29wZXJhdG9yc1tmaWx0ZXIuZGF0YXR5cGVdWzBdLFxuICApO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGZpbHRlci52YWx1ZSB8fCBcIlwiKTtcblxuICBjb25zdCBpbnB1dEVsZW1lbnQgPSAoXG4gICAgPEZpbHRlcklucHV0XG4gICAgICBkYXRhdHlwZT17ZmlsdGVyLmRhdGF0eXBlfVxuICAgICAgb3BlcmF0b3I9e29wZXJhdG9yfVxuICAgICAgc2V0VmFsdWU9e3NldFZhbHVlfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgdW5pdD17ZmlsdGVyLnVuaXR9XG4gICAgICBtaW49e2ZpbHRlci5taW59XG4gICAgICBtYXg9e2ZpbHRlci5tYXh9XG4gICAgICBzdGVwPXtmaWx0ZXIuc3RlcH1cbiAgICAgIGlucHV0dHlwZT17ZmlsdGVyLmlucHV0dHlwZX1cbiAgICAvPlxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc3RvcmVPcGVyYXRvciAmJiBvcGVyYXRvciAhPT0gcmVzdG9yZU9wZXJhdG9yKSB7XG4gICAgICBzZXRPcGVyYXRvcihyZXN0b3JlT3BlcmF0b3IpO1xuICAgIH1cbiAgfSwgW3Jlc3RvcmVPcGVyYXRvciwgb3BlcmF0b3JdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXN0b3JlVmFsdWUgJiYgdmFsdWUgIT09IHJlc3RvcmVWYWx1ZSkge1xuICAgICAgc2V0VmFsdWUocmVzdG9yZVZhbHVlKTtcbiAgICB9XG4gIH0sIFtyZXN0b3JlVmFsdWUsIHZhbHVlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlcmF0b3IgIT09IGZpbHRlci5vcGVyYXRvcikge1xuICAgICAgdXBkYXRlRmlsdGVyKGZpbHRlcklkeCwge1xuICAgICAgICByZXN0b3JlT3BlcmF0b3I6IHVuZGVmaW5lZCxcbiAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbb3BlcmF0b3IsIGZpbHRlci5vcGVyYXRvciwgZmlsdGVySWR4LCB1cGRhdGVGaWx0ZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2YWx1ZSAhPT0gZmlsdGVyLnZhbHVlKSB7XG4gICAgICB1cGRhdGVGaWx0ZXIoZmlsdGVySWR4LCB7XG4gICAgICAgIHJlc3RvcmVWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgZmlsdGVyLnZhbHVlLCBmaWx0ZXJJZHgsIHVwZGF0ZUZpbHRlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICAgICAgdmFsdWU9e29wZXJhdG9yfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0T3BlcmF0b3IoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICA+XG4gICAgICAgICAge2FsbG93ZWRfb3BlcmF0b3JzW2ZpbHRlci5kYXRhdHlwZV0ubWFwKChvcCwgaWR4KSA9PiAoXG4gICAgICAgICAgICA8b3B0aW9uIGtleT17aWR4fT57b3B9PC9vcHRpb24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleFwiPntpbnB1dEVsZW1lbnR9PC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEZpbHRlclNlbGVjdCh7IHNlbGVjdGVkLCBmaWx0ZXJEZWZpbml0aW9ucywgb25DaGFuZ2UsIHRpdGxlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c2VsZWN0XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBjbGFzc05hbWU9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXG4gICAgICB2YWx1ZT17c2VsZWN0ZWR9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgPlxuICAgICAge2ZpbHRlckRlZmluaXRpb25zLm1hcCgoZmlsLCBpZHgpID0+IChcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT17ZmlsLnByb3BlcnR5fSBzdHlsZT17ZmlsLnN0eWxlfSBrZXk9e2lkeH0+XG4gICAgICAgICAge2ZpbC5sYWJlbCB8fCBmaWwucHJvcGVydHl9XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgKSl9XG4gICAgPC9zZWxlY3Q+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEFkZEZpbHRlcih7IGZpbHRlckRlZmluaXRpb25zLCBhZGRGaWx0ZXIgfSkge1xuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBhZGRGaWx0ZXIoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW2FkZEZpbHRlcl0sXG4gICk7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxGaWx0ZXJTZWxlY3RcbiAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zLmNvbmNhdCh7XG4gICAgICAgICAgcHJvcGVydHk6IFwiX19hZGRfZmlsdGVyX19cIixcbiAgICAgICAgICBsYWJlbDogXCJBZGQgRmlsdGVyXCIsXG4gICAgICAgICAgc3R5bGU6IHsgZGlzcGxheTogXCJub25lXCIgfSxcbiAgICAgICAgfSl9XG4gICAgICAgIHNlbGVjdGVkPVwiX19hZGRfZmlsdGVyX19cIlxuICAgICAgICB0aXRsZT1cIkFkZCBGaWx0ZXJcIlxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBGaWx0ZXIoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgZmlsdGVySWR4LFxuICBhY3RpdmVGaWx0ZXJzLFxuICB1cGRhdGVGaWx0ZXIsXG4gIHNldFByb3BlcnR5LFxuICByZW1vdmVGaWx0ZXIsXG59KSB7XG4gIGNvbnN0IGFjdGl2ZUZpbHRlciA9IGFjdGl2ZUZpbHRlcnMgJiYgYWN0aXZlRmlsdGVyc1tmaWx0ZXJJZHhdO1xuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBzZXRQcm9wZXJ0eShmaWx0ZXJJZHgsIGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRQcm9wZXJ0eSwgZmlsdGVySWR4XSxcbiAgKTtcbiAgY29uc3QgcmVtb3ZlVGhpcyA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHJlbW92ZUZpbHRlcihmaWx0ZXJJZHgpLFxuICAgIFtyZW1vdmVGaWx0ZXIsIGZpbHRlcklkeF0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYW9zZGItZi1xdWVyeS1maWx0ZXItcHJvcGVydHktc2VsZWN0b3JcIj5cbiAgICAgICAgPEZpbHRlclNlbGVjdFxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBzZWxlY3RlZD17YWN0aXZlRmlsdGVyLnByb3BlcnR5fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPEFkZFRhYkZpbHRlck9wZXJhdG9yXG4gICAgICAgIHJlc3RvcmVWYWx1ZT17YWN0aXZlRmlsdGVyLnJlc3RvcmVWYWx1ZX1cbiAgICAgICAgcmVzdG9yZU9wZXJhdG9yPXthY3RpdmVGaWx0ZXIucmVzdG9yZU9wZXJhdG9yfVxuICAgICAgICB1cGRhdGVGaWx0ZXI9e3VwZGF0ZUZpbHRlcn1cbiAgICAgICAgZmlsdGVySWR4PXtmaWx0ZXJJZHh9XG4gICAgICAgIGZpbHRlcj17YWN0aXZlRmlsdGVyfVxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1lbmQgZmxleC1ncm93LTFcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCJcbiAgICAgICAgICBvbkNsaWNrPXtyZW1vdmVUaGlzfVxuICAgICAgICA+XG4gICAgICAgICAgUmVtb3ZlIEZpbHRlclxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJGaWx0ZXJzSW5uZXIoe1xuICBmaWx0ZXJEZWZpbml0aW9ucyxcbiAgYWN0aXZlRmlsdGVycyxcbiAgc2V0QWN0aXZlRmlsdGVycyxcbn0pIHtcbiAgY29uc3QgcmVtb3ZlRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcklkeCkgPT4ge1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhhY3RpdmVGaWx0ZXJzLmZpbHRlcigoZmlsLCBpZHgpID0+IGlkeCAhPT0gZmlsdGVySWR4KSk7XG4gICAgfSxcbiAgICBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc10sXG4gICk7XG5cbiAgY29uc3QgdXBkYXRlRmlsdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGZpbHRlcklkeCwgdXBkYXRlKSA9PiB7XG4gICAgICBjb25zdCBuZXdBY3RpdmVGaWx0ZXJzID0gW10uY29uY2F0KGFjdGl2ZUZpbHRlcnMpO1xuXG4gICAgICBuZXdBY3RpdmVGaWx0ZXJzW2ZpbHRlcklkeF0gPSB7XG4gICAgICAgIC4uLm5ld0FjdGl2ZUZpbHRlcnNbZmlsdGVySWR4XSxcbiAgICAgICAgLi4udXBkYXRlLFxuICAgICAgfTtcblxuICAgICAgc2V0QWN0aXZlRmlsdGVycyhuZXdBY3RpdmVGaWx0ZXJzKTtcbiAgICB9LFxuICAgIFthY3RpdmVGaWx0ZXJzLCBzZXRBY3RpdmVGaWx0ZXJzXSxcbiAgKTtcblxuICBjb25zdCBzZXRQcm9wZXJ0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWx0ZXJJZHgsIHByb3BlcnR5TmFtZSkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHlGaWx0ZXIgPSBmaWx0ZXJEZWZpbml0aW9ucy5maWx0ZXIoXG4gICAgICAgIChmaWwpID0+IGZpbC5wcm9wZXJ0eSA9PT0gcHJvcGVydHlOYW1lLFxuICAgICAgKVswXTtcbiAgICAgIHVwZGF0ZUZpbHRlcihmaWx0ZXJJZHgsIHtcbiAgICAgICAgcmVzdG9yZVZhbHVlOiBcIlwiLFxuICAgICAgICByZXN0b3JlT3BlcmF0b3I6IGFsbG93ZWRfb3BlcmF0b3JzW3Byb3BlcnR5RmlsdGVyLmRhdGF0eXBlXVswXSxcbiAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5TmFtZSxcbiAgICAgICAgZGF0YXR5cGU6IHByb3BlcnR5RmlsdGVyLmRhdGF0eXBlLFxuICAgICAgICB1bml0OiBwcm9wZXJ0eUZpbHRlci51bml0LFxuICAgICAgICBtaW46IHByb3BlcnR5RmlsdGVyLm1pbixcbiAgICAgICAgbWF4OiBwcm9wZXJ0eUZpbHRlci5tYXgsXG4gICAgICAgIGZpbHRlcjogcHJvcGVydHlGaWx0ZXIsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFt1cGRhdGVGaWx0ZXIsIGZpbHRlckRlZmluaXRpb25zXSxcbiAgKTtcblxuICBjb25zdCBhZGRGaWx0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAocHJvcGVydHlOYW1lKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eUZpbHRlciA9IGZpbHRlckRlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgKGZpbCkgPT4gZmlsLnByb3BlcnR5ID09PSBwcm9wZXJ0eU5hbWUsXG4gICAgICApWzBdO1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhcbiAgICAgICAgYWN0aXZlRmlsdGVycy5jb25jYXQoe1xuICAgICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgZGF0YXR5cGU6IHByb3BlcnR5RmlsdGVyLmRhdGF0eXBlLFxuICAgICAgICAgIHVuaXQ6IHByb3BlcnR5RmlsdGVyLnVuaXQsXG4gICAgICAgICAgbWluOiBwcm9wZXJ0eUZpbHRlci5taW4sXG4gICAgICAgICAgbWF4OiBwcm9wZXJ0eUZpbHRlci5tYXgsXG4gICAgICAgICAgZmlsdGVyOiBwcm9wZXJ0eUZpbHRlcixcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0sXG4gICAgW2FjdGl2ZUZpbHRlcnMsIHNldEFjdGl2ZUZpbHRlcnMsIGZpbHRlckRlZmluaXRpb25zXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7YWN0aXZlRmlsdGVycy5tYXAoKGZpbCwgaWR4KSA9PiAoXG4gICAgICAgIDxGaWx0ZXJcbiAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICBmaWx0ZXJJZHg9e2lkeH1cbiAgICAgICAgICBmaWx0ZXJEZWZpbml0aW9ucz17ZmlsdGVyRGVmaW5pdGlvbnN9XG4gICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICBzZXRBY3RpdmVGaWx0ZXJzPXtzZXRBY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgIHVwZGF0ZUZpbHRlcj17dXBkYXRlRmlsdGVyfVxuICAgICAgICAgIHNldFByb3BlcnR5PXtzZXRQcm9wZXJ0eX1cbiAgICAgICAgICByZW1vdmVGaWx0ZXI9e3JlbW92ZUZpbHRlcn1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXhcIj5cbiAgICAgICAgPEFkZEZpbHRlclxuICAgICAgICAgIGZpbHRlckRlZmluaXRpb25zPXtmaWx0ZXJEZWZpbml0aW9uc31cbiAgICAgICAgICBhZGRGaWx0ZXI9e2FkZEZpbHRlcn1cbiAgICAgICAgLz5cbiAgICAgICAge2FjdGl2ZUZpbHRlcnMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICB0aXRsZT1cIlNlYXJjaCB3aXRoIGZpbHRlcnNcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtcy1hdXRvXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWFyY2hcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJGaWx0ZXJzKHtcbiAgZmlsdGVyRGVmaW5pdGlvbnMsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHNldEFjdGl2ZUZpbHRlcnMsXG59KSB7XG4gIGNvbnN0IFtzaG93RmlsdGVycywgc2V0U2hvd0ZpbHRlcnNdID0gdXNlU3RhdGUoYWN0aXZlRmlsdGVycy5sZW5ndGggPiAwKTtcblxuICBjb25zdCB0aXRsZSA9IHNob3dGaWx0ZXJzXG4gICAgPyBcIkNhbmNlbCBBZHZhbmNlZCBGaWx0ZXJpbmdcIlxuICAgIDogXCJBZHZhbmNlZCBGaWx0ZXJpbmdcIjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RmlsdGVycyghc2hvd0ZpbHRlcnMpfVxuICAgICAgICBjbGFzc05hbWU9XCJidG4gbXMtYXV0byBjYW9zZGItZi1xdWVyeS1maWx0ZXJzLXRvZ2dsZVwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgID5cbiAgICAgICAge3Nob3dGaWx0ZXJzID8gKFxuICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLXhcIj48L2k+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktZmlsdGVyXCI+PC9pPlxuICAgICAgICApfVxuICAgICAgPC9idXR0b24+XG4gICAgICB7c2hvd0ZpbHRlcnMgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LXRhYi1maWx0ZXJzIHctMTAwXCI+XG4gICAgICAgICAgPFF1ZXJ5Rm9ybVRhYkZpbHRlcnNJbm5lclxuICAgICAgICAgICAgZmlsdGVyRGVmaW5pdGlvbnM9e2ZpbHRlckRlZmluaXRpb25zfVxuICAgICAgICAgICAgYWN0aXZlRmlsdGVycz17YWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAgIHNldEFjdGl2ZUZpbHRlcnM9e3NldEFjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1UYWJzKHtcbiAgdGFicyxcbiAgc2V0QWN0aXZlVGFiLFxuICBhY3RpdmVUYWIsXG4gIGFjdGl2ZUZpbHRlcnMsXG4gIHNldEFjdGl2ZUZpbHRlcnMsXG59KSB7XG4gIGNvbnN0IGhhc0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgYWN0aXZlVGFiICYmXG4gICAgICBhY3RpdmVUYWIuZmlsdGVyRGVmaW5pdGlvbnMgJiZcbiAgICAgIGFjdGl2ZVRhYi5maWx0ZXJEZWZpbml0aW9ucy5sZW5ndGggPiAwXG4gICAgKTtcbiAgfSwgW2FjdGl2ZVRhYl0pO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktdGFiLWxpc3QgZC1mbGV4IGZsZXgtd3JhcFwiPlxuICAgICAge3RhYnMubWFwKCh0YWIpID0+IChcbiAgICAgICAgPFF1ZXJ5Rm9ybVNpbmdsZVRhYlxuICAgICAgICAgIGlzQWN0aXZlVGFiPXthY3RpdmVUYWIuaWQgPT09IHRhYi5pZH1cbiAgICAgICAgICBzZXRBY3RpdmVUYWI9e3NldEFjdGl2ZVRhYn1cbiAgICAgICAgICBrZXk9e3RhYi5sYWJlbH1cbiAgICAgICAgICB0YWI9e3RhYn1cbiAgICAgICAgLz5cbiAgICAgICkpfXtcIiBcIn1cbiAgICAgIHtoYXNGaWx0ZXJzICYmIChcbiAgICAgICAgPFF1ZXJ5Rm9ybVRhYkZpbHRlcnNcbiAgICAgICAgICB7Li4uYWN0aXZlVGFifVxuICAgICAgICAgIGFjdGl2ZUZpbHRlcnM9e2FjdGl2ZUZpbHRlcnN9XG4gICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFF1ZXJ5U3VibWl0QnV0dG9uKHsgaXNTdWJtaXR0ZWQsIGFjdGl2ZSB9KSB7XG4gIGlmIChpc1N1Ym1pdHRlZCkge1xuICAgIHJldHVybiA8TG9hZGluZ0luZm8gY2xhc3NOYW1lPVwiYWxpZ24tc2VsZi1jZW50ZXJcIiBzaXplPVwic21cIiAvPjtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxidXR0b24gYXJpYS1sYWJlbD1cInNlYXJjaFwiIHRpdGxlPVwiU2VhcmNoXCIgdHlwZT1cInN1Ym1pdFwiIGRpc2FibGVkPXshYWN0aXZlfT5cbiAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLXNlYXJjaFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU2luZ2xlUXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtKHtcbiAgc3VnZ2VzdGlvbixcbiAgaXNIaWdobGlnaHRlZCxcbiAgb25Nb3VzZUVudGVyLFxufSkge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgb25Nb3VzZUVudGVyPXtvbk1vdXNlRW50ZXJ9XG4gICAgICBjbGFzc05hbWU9e2lzSGlnaGxpZ2h0ZWQgPyBcImhpZ2hsaWdodFwiIDogXCJcIn1cbiAgICA+XG4gICAgICB7c3VnZ2VzdGlvbi5vcmlnaW5hbH1cbiAgICA8L2xpPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1zKHtcbiAgc3VnZ2VzdGlvbnMsXG4gIGhpZ2hsaWdodEluZGV4LFxuICBzZWxlY3RTdWdnZXN0aW9uLFxufSkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c3VnZ2VzdGlvbnMubWFwKChzdWcsIGluZGV4KSA9PiAoXG4gICAgICAgIDxTaW5nbGVRdWVyeUZvcm1TdWdnZXN0aW9uc0l0ZW1cbiAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNlbGVjdFN1Z2dlc3Rpb24oaW5kZXgpfVxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgaXNIaWdobGlnaHRlZD17aGlnaGxpZ2h0SW5kZXggPT09IGluZGV4fVxuICAgICAgICAgIHN1Z2dlc3Rpb249e3N1Z31cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBRdWVyeUZvcm1TdWdnZXN0aW9ucyh7XG4gIHVuc2VsZWN0U3VnZ2VzdGlvbnMsXG4gIHNlbGVjdFN1Z2dlc3Rpb24sXG4gIGhpZ2hsaWdodEluZGV4LFxuICBzdWdnZXN0aW9ucyxcbiAgZ2V0SW5wdXRSZWYsXG4gIHdvcmRQb3MsXG4gIHdvcmQsXG4gIHhPZmZzZXQsXG59KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBpdGVtcyA9IChcbiAgICA8UXVlcnlGb3JtU3VnZ2VzdGlvbnNJdGVtc1xuICAgICAgc2VsZWN0U3VnZ2VzdGlvbj17c2VsZWN0U3VnZ2VzdGlvbn1cbiAgICAgIGhpZ2hsaWdodEluZGV4PXtoaWdobGlnaHRJbmRleH1cbiAgICAgIHN1Z2dlc3Rpb25zPXtzdWdnZXN0aW9uc31cbiAgICAvPlxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGhpZ2hsaWdodEluZGV4ID4gLTEpIHtcbiAgICAgIHJlZi5jdXJyZW50LnNjcm9sbCgwLCAyNCAqIGhpZ2hsaWdodEluZGV4IC0gNDgpO1xuICAgIH1cbiAgfSwgW2hpZ2hsaWdodEluZGV4XSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRSZWYgPSBnZXRJbnB1dFJlZigpO1xuICAgIHZhciBjb29yZHMgPSBnZXRDYXJldENvb3JkaW5hdGVzKGlucHV0UmVmLmN1cnJlbnQsIHdvcmRQb3MpO1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSBpbnB1dFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGlmIChjb29yZHMubGVmdCA+IGlucHV0V2lkdGgpIHtcbiAgICAgIGNvbnN0IHJpZ2h0T2Zmc2V0ID1cbiAgICAgICAgZ2V0Q2FyZXRDb29yZGluYXRlcyhpbnB1dFJlZi5jdXJyZW50LCB3b3JkUG9zICsgd29yZC5sZW5ndGgpLmxlZnQgLVxuICAgICAgICBjb29yZHMubGVmdDtcblxuICAgICAgcmVmLmN1cnJlbnQuc3R5bGUubWFyZ2luTGVmdCA9IGAke2lucHV0V2lkdGggLSByaWdodE9mZnNldH1weGA7XG4gICAgfSBlbHNlIGlmIChjb29yZHMubGVmdCA+IDgpIHtcbiAgICAgIHJlZi5jdXJyZW50LnN0eWxlLm1hcmdpbkxlZnQgPSBgJHtjb29yZHMubGVmdCAtIDh9cHhgO1xuICAgIH1cbiAgfSwgW3dvcmQsIGdldElucHV0UmVmLCB3b3JkUG9zXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBvbk1vdXNlTGVhdmU9e3Vuc2VsZWN0U3VnZ2VzdGlvbnN9XG4gICAgICBzdHlsZT17eyBwYWRkaW5nTGVmdDogeE9mZnNldCB9fVxuICAgICAgY2xhc3NOYW1lPVwiY2Fvc2RiLWYtcXVlcnktZm9ybS1zdWctY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8b2wgcmVmPXtyZWZ9IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LWZvcm0tc3VnXCI+XG4gICAgICAgIHtpdGVtc31cbiAgICAgIDwvb2w+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgdmFyIGN1cnNvcl9wb3MsIHdvcmRfcG9zLCB3b3JkLCBvcGVuLCB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zO1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBcIm9uRm9jdXNcIjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCByZWZvY3VzOiBmYWxzZSwgZm9jdXM6IHRydWUgfTtcbiAgICBjYXNlIFwib25CbHVyXCI6XG4gICAgICBpZiAoc3RhdGUub25DbGlja1ZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmFsdWU6IHN0YXRlLm9uQ2xpY2tWYWx1ZSxcbiAgICAgICAgICBjdXJzb3JQb3M6IHN0YXRlLm9uQ2xpY2tDdXJzb3JQb3MsXG4gICAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICAgIG9uQ2xpY2tWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHJlZm9jdXM6IHRydWUsXG4gICAgICAgICAgb3BlbjogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZm9jdXM6IGZhbHNlIH07XG4gICAgY2FzZSBcIm9uQ2hhbmdlXCI6XG4gICAgICBjdXJzb3JfcG9zID0gYWN0aW9uLnRhcmdldC5zZWxlY3Rpb25FbmQ7XG4gICAgICB3b3JkX3BvcyA9IGFjdGlvbi50YXJnZXQudmFsdWUuc2xpY2UoMCwgY3Vyc29yX3BvcykubGFzdEluZGV4T2YoXCIgXCIpICsgMTtcbiAgICAgIHdvcmQgPSBhY3Rpb24udGFyZ2V0LnZhbHVlLnNsaWNlKHdvcmRfcG9zLCBjdXJzb3JfcG9zKTtcbiAgICAgIG9wZW4gPSB3b3JkLmxlbmd0aCA+IDI7XG4gICAgICB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zID1cbiAgICAgICAgb3BlbiAmJiBhY3Rpb24uZ2V0U3VnZ2VzdGlvbnNDYWxsYmFja1xuICAgICAgICAgID8gYWN0aW9uLmdldFN1Z2dlc3Rpb25zQ2FsbGJhY2soXG4gICAgICAgICAgICAgIGZJc0NxbChhY3Rpb24udGFyZ2V0LnZhbHVlKSxcbiAgICAgICAgICAgICAgYWN0aW9uLnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgd29yZCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvbkNsaWNrVmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgb25DbGlja0N1cnNvclBvczogdW5kZWZpbmVkLFxuICAgICAgICBoaWdobGlnaHRJbmRleDogLTEsXG4gICAgICAgIGN1cnNvclBvczogY3Vyc29yX3BvcyxcbiAgICAgICAgY3Vyc29yUG9zTm9Db21wbGV0aW9uOiBjdXJzb3JfcG9zLFxuICAgICAgICB3b3JkUG9zOiB3b3JkX3BvcyxcbiAgICAgICAgdmFsdWU6IGFjdGlvbi50YXJnZXQudmFsdWUsXG4gICAgICAgIHZhbHVlTm9Db21wbGV0aW9uOiBhY3Rpb24udGFyZ2V0LnZhbHVlLFxuICAgICAgICByZWZvY3VzOiBmYWxzZSxcbiAgICAgICAgd29yZDogd29yZCxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgY2hhbmdlSWQ6IChzdGF0ZS5jaGFuZ2VJZCArIDEpIHwgMCxcbiAgICAgICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiB1bnJlc29sdmVkX3N1Z2dlc3Rpb25zLFxuICAgICAgfTtcbiAgICBjYXNlIFwicmVzb2x2ZVN1Z2dlc3Rpb25zXCI6XG4gICAgICBpZiAoc3RhdGUuY2hhbmdlSWQgPT09IGFjdGlvbi5jaGFuZ2VJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBhY3Rpb24uc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBlbHNlIHsgLyogc3VnZ2VzdGlvbnMgYXJlIG91dGRhdGVkIGR1ZSB0byBuZXcgY2hhbmdlcyAqLyB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwib25BcnJvd0Rvd25cIjpcbiAgICAgIGlmIChcbiAgICAgICAgc3RhdGUub3BlbiAmJlxuICAgICAgICBzdGF0ZS5zdWdnZXN0aW9ucyAmJlxuICAgICAgICBzdGF0ZS5oaWdobGlnaHRJbmRleCA8IHN0YXRlLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDFcbiAgICAgICkge1xuICAgICAgICBjb25zdCBuZXdIaWdobGlnaHRJbmRleCA9IHN0YXRlLmhpZ2hsaWdodEluZGV4ICsgMTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPVxuICAgICAgICAgIHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKDAsIHN0YXRlLndvcmRQb3MpICtcbiAgICAgICAgICBzdGF0ZS5zdWdnZXN0aW9uc1tuZXdIaWdobGlnaHRJbmRleF0uZXNjYXBlZCArXG4gICAgICAgICAgc3RhdGUudmFsdWVOb0NvbXBsZXRpb24uc2xpY2Uoc3RhdGUuY3Vyc29yUG9zTm9Db21wbGV0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3Q3Vyc29yUG9zID1cbiAgICAgICAgICBzdGF0ZS53b3JkUG9zICsgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQubGVuZ3RoO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGN1cnNvclBvczogbmV3Q3Vyc29yUG9zLFxuICAgICAgICAgIHZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICBoaWdobGlnaHRJbmRleDogbmV3SGlnaGxpZ2h0SW5kZXgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwidW5zZWxlY3RTdWdnZXN0aW9uc1wiOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9uQ2xpY2tDdXJzb3JQb3M6IHVuZGVmaW5lZCxcbiAgICAgICAgb25DbGlja1ZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIGNhc2UgXCJzZWxlY3RTdWdnZXN0aW9uXCI6XG4gICAgICBpZiAoYWN0aW9uLmluZGV4ID4gLTEgJiYgYWN0aW9uLmluZGV4IDwgc3RhdGUuc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID1cbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZSgwLCBzdGF0ZS53b3JkUG9zKSArXG4gICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbYWN0aW9uLmluZGV4XS5lc2NhcGVkICtcbiAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZShzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb24pICtcbiAgICAgICAgICBcIiBcIjtcbiAgICAgICAgY29uc3QgbmV3Q3Vyc29yUG9zID1cbiAgICAgICAgICBzdGF0ZS53b3JkUG9zICsgc3RhdGUuc3VnZ2VzdGlvbnNbYWN0aW9uLmluZGV4XS5lc2NhcGVkLmxlbmd0aCArIDE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb25DbGlja1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgICBvbkNsaWNrQ3Vyc29yUG9zOiBuZXdDdXJzb3JQb3MsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicmVzdG9yZVwiOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHZhbHVlOiBhY3Rpb24udmFsdWUgfTtcbiAgICBjYXNlIFwib25BcnJvd1VwXCI6XG4gICAgICBpZiAoc3RhdGUub3BlbiAmJiBzdGF0ZS5oaWdobGlnaHRJbmRleCA+IC0xKSB7XG4gICAgICAgIGNvbnN0IG5ld0hpZ2hsaWdodEluZGV4ID0gc3RhdGUuaGlnaGxpZ2h0SW5kZXggLSAxO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgICAgICAgbmV3SGlnaGxpZ2h0SW5kZXggPCAwXG4gICAgICAgICAgICA/IHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uXG4gICAgICAgICAgICA6IHN0YXRlLnZhbHVlTm9Db21wbGV0aW9uLnNsaWNlKDAsIHN0YXRlLndvcmRQb3MpICtcbiAgICAgICAgICAgICAgc3RhdGUuc3VnZ2VzdGlvbnNbbmV3SGlnaGxpZ2h0SW5kZXhdLmVzY2FwZWQgK1xuICAgICAgICAgICAgICBzdGF0ZS52YWx1ZU5vQ29tcGxldGlvbi5zbGljZShzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb24pO1xuICAgICAgICBjb25zdCBuZXdDdXJzb3JQb3MgPVxuICAgICAgICAgIG5ld0hpZ2hsaWdodEluZGV4IDwgMFxuICAgICAgICAgICAgPyBzdGF0ZS5jdXJzb3JQb3NOb0NvbXBsZXRpb25cbiAgICAgICAgICAgIDogc3RhdGUud29yZFBvcyArXG4gICAgICAgICAgICAgIHN0YXRlLnN1Z2dlc3Rpb25zW25ld0hpZ2hsaWdodEluZGV4XS5lc2NhcGVkLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBjdXJzb3JQb3M6IG5ld0N1cnNvclBvcyxcbiAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgICAgaGlnaGxpZ2h0SW5kZXg6IG5ld0hpZ2hsaWdodEluZGV4LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gUXVlcnlGb3JtVGV4dEZpZWxkKHsgc2V0UXVlcnlTdHJpbmcsIGlzQ3FsLCByZXN0b3JlUXVlcnlTdHJpbmcgfSkge1xuICBjb25zdCB7IGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssIGlzU3VibWl0dGVkIH0gPSB1c2VDb250ZXh0KFF1ZXJ5Rm9ybUNvbnRleHQpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyKHJlZHVjZXIsIHtcbiAgICByZWZvY3VzOiBmYWxzZSxcbiAgICB2YWx1ZTogXCJcIixcbiAgICBmb2N1czogZmFsc2UsXG4gICAgb3BlbjogZmFsc2UsXG4gICAgd29yZDogXCJcIixcbiAgICBoaWdobGlnaHRJbmRleDogLTEsXG4gICAgdW5yZXNvbHZlZFN1Z2dlc3Rpb25zOiBudWxsLFxuICAgIHN1Z2dlc3Rpb25zOiBudWxsLFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFF1ZXJ5U3RyaW5nKHN0YXRlLnZhbHVlKTtcbiAgfSwgW3N0YXRlLnZhbHVlLCBzZXRRdWVyeVN0cmluZ10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc3RvcmVRdWVyeVN0cmluZykge1xuICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcInJlc3RvcmVcIiwgdmFsdWU6IHJlc3RvcmVRdWVyeVN0cmluZyB9KTtcbiAgICB9XG4gIH0sIFtyZXN0b3JlUXVlcnlTdHJpbmddKTtcblxuICBjb25zdCBvbkZvY3VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkZvY3VzXCIgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvbkJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcIm9uQmx1clwiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25BcnJvd1VwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkFycm93VXBcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uQXJyb3dEb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJvbkFycm93RG93blwiIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBcIm9uQ2hhbmdlXCIsXG4gICAgICAgIHRhcmdldDogZS50YXJnZXQsXG4gICAgICAgIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2s6IGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtnZXRTdWdnZXN0aW9uc0NhbGxiYWNrXSxcbiAgKTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIG9uQXJyb3dEb3duKGUpO1xuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gb25BcnJvd1VwKGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQXJyb3dVcCwgb25BcnJvd0Rvd25dLFxuICApO1xuXG4gIGNvbnN0IHVuc2VsZWN0U3VnZ2VzdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiBcInVuc2VsZWN0U3VnZ2VzdGlvbnNcIiB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNlbGVjdFN1Z2dlc3Rpb24gPSB1c2VDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwic2VsZWN0U3VnZ2VzdGlvblwiLCBpbmRleDogaW5kZXggfSk7XG4gIH0sIFtdKTtcblxuICB2YXIgY2xhc3NOYW1lID0gXCJjYW9zZGItZi1xdWVyeS1mb3JtXCI7XG4gIGlmIChzdGF0ZS5vcGVuKSB7XG4gICAgY2xhc3NOYW1lICs9IFwiIG9wZW5cIjtcbiAgfVxuICBpZiAoc3RhdGUuZm9jdXMpIHtcbiAgICBjbGFzc05hbWUgKz0gXCIgZm9jdXNcIjtcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucykge1xuICAgICAgY29uc3QgY2hhbmdlSWQgPSBzdGF0ZS5jaGFuZ2VJZDtcbiAgICAgIHN0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucy50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogXCJyZXNvbHZlU3VnZ2VzdGlvbnNcIixcbiAgICAgICAgICBzdWdnZXN0aW9uczogc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgY2hhbmdlSWQ6IGNoYW5nZUlkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3N0YXRlLnVucmVzb2x2ZWRTdWdnZXN0aW9ucywgc3RhdGUuY2hhbmdlSWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhdGUuY3Vyc29yUG9zLCBzdGF0ZS5jdXJzb3JQb3MpO1xuICB9LCBbc3RhdGUudmFsdWUsIHN0YXRlLmN1cnNvclBvc10pO1xuXG4gIGNvbnN0IGdldElucHV0UmVmID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJldHVybiBpbnB1dFJlZjtcbiAgfSwgW2lucHV0UmVmXSk7XG5cbiAgLy8gaGFuZGxlIGZvY3VzIGFmdGVyIHJlc2V0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnJlZm9jdXMpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtzdGF0ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXhcIj5cbiAgICAgICAge2lzQ3FsICYmIDxDcWxIaW50IC8+fVxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0ZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC1ncm93LTFcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJlbnRlciBzZWFyY2ggdGVybXNcIlxuICAgICAgICAgIG5hbWU9XCJxdWVyeVwiXG4gICAgICAgICAgdGl0bGU9XCJFbnRlciBzZWFyY2ggdGVybXNcIlxuICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgIHZhbHVlPXtzdGF0ZS52YWx1ZX1cbiAgICAgICAgICByZWY9e2lucHV0UmVmfVxuICAgICAgICA+PC9pbnB1dD5cbiAgICAgICAgPFF1ZXJ5U3VibWl0QnV0dG9uXG4gICAgICAgICAgYWN0aXZlPXtzdGF0ZS52YWx1ZS5sZW5ndGggPiAwfVxuICAgICAgICAgIGlzU3VibWl0dGVkPXtpc1N1Ym1pdHRlZH1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAge3N0YXRlLm9wZW4gJiYgc3RhdGUuc3VnZ2VzdGlvbnMgJiYgKFxuICAgICAgICA8UXVlcnlGb3JtU3VnZ2VzdGlvbnNcbiAgICAgICAgICB1bnNlbGVjdFN1Z2dlc3Rpb25zPXt1bnNlbGVjdFN1Z2dlc3Rpb25zfVxuICAgICAgICAgIHNlbGVjdFN1Z2dlc3Rpb249e3NlbGVjdFN1Z2dlc3Rpb259XG4gICAgICAgICAgd29yZD17c3RhdGUud29yZH1cbiAgICAgICAgICB3b3JkUG9zPXtzdGF0ZS53b3JkUG9zfVxuICAgICAgICAgIGdldElucHV0UmVmPXtnZXRJbnB1dFJlZn1cbiAgICAgICAgICBzdWdnZXN0aW9ucz17c3RhdGUuc3VnZ2VzdGlvbnN9XG4gICAgICAgICAgaGlnaGxpZ2h0SW5kZXg9e3N0YXRlLmhpZ2hsaWdodEluZGV4fVxuICAgICAgICAgIHhPZmZzZXQ9e2lzQ3FsID8gNDQgOiAwfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gc3RvcmUoYWN0aXZlVGFiLCBhY3RpdmVGaWx0ZXJzLCBxdWVyeVN0cmluZykge1xuICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJxdWVyeS5hY3RpdmVUYWJcIik7XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIik7XG4gIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LnF1ZXJ5U3RyaW5nXCIpO1xuICBpZiAoYWN0aXZlVGFiKSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZVRhYlwiXSA9IEpTT04uc3RyaW5naWZ5KGFjdGl2ZVRhYik7XG4gIH1cbiAgaWYgKGFjdGl2ZUZpbHRlcnMgJiYgYWN0aXZlRmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIl0gPSBKU09OLnN0cmluZ2lmeShhY3RpdmVGaWx0ZXJzKTtcbiAgfVxuICBpZiAocXVlcnlTdHJpbmcgJiYgcXVlcnlTdHJpbmcubGVuZ3RoID4gMCkge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5xdWVyeVN0cmluZ1wiXSA9IHF1ZXJ5U3RyaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc3RvcmUodGFicykge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgcmVzdG9yZUFjdGl2ZVRhYjpcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2VbXCJxdWVyeS5hY3RpdmVUYWJcIl0gJiZcbiAgICAgIEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZVtcInF1ZXJ5LmFjdGl2ZVRhYlwiXSksXG4gICAgcmVzdG9yZUFjdGl2ZUZpbHRlcnM6XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlRmlsdGVyc1wiXSAmJlxuICAgICAgSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkuYWN0aXZlRmlsdGVyc1wiXSksXG4gICAgcmVzdG9yZVF1ZXJ5U3RyaW5nOiB3aW5kb3cubG9jYWxTdG9yYWdlW1wicXVlcnkucXVlcnlTdHJpbmdcIl0gfHwgXCJcIixcbiAgfTtcbiAgaWYgKFxuICAgIHJlc3VsdC5yZXN0b3JlQWN0aXZlVGFiICYmXG4gICAgdGFicy5maWx0ZXIoKHRhYikgPT4gdGFiLmlkID09PSByZXN1bHQucmVzdG9yZUFjdGl2ZVRhYi5pZCkubGVuZ3RoID09PSAwXG4gICkge1xuICAgIC8vIGNvbmZpZyBjaGFuZ2VkXG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkuYWN0aXZlVGFiXCIpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInF1ZXJ5LmFjdGl2ZUZpbHRlcnNcIik7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicXVlcnkucXVlcnlTdHJpbmdcIik7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBRdWVyeUZvcm0oe1xuICBzdWJtaXRDYWxsYmFjayxcbiAgdGFicyxcbiAgZGVmYXVsdFRhYixcbiAgZ2V0U3VnZ2VzdGlvbnNDYWxsYmFjayxcbiAgcmVzdG9yZUNhbGxiYWNrLFxuICBzdG9yZUNhbGxiYWNrLFxuICByZXN0b3JlLFxufSkge1xuICBjb25zdCB7IHJlc3RvcmVRdWVyeVN0cmluZywgcmVzdG9yZUFjdGl2ZUZpbHRlcnMsIHJlc3RvcmVBY3RpdmVUYWIgfSA9IHJlc3RvcmVcbiAgICA/IHJlc3RvcmVDYWxsYmFjayh0YWJzKVxuICAgIDoge307XG4gIGNvbnN0IFtpc1N1Ym1pdHRlZCwgc2V0SXNTdWJtaXR0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcXVlcnlTdHJpbmcsIHNldFF1ZXJ5U3RyaW5nXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGUoXG4gICAgcmVzdG9yZUFjdGl2ZVRhYiB8fCB0YWJzW2RlZmF1bHRUYWJdLFxuICApO1xuICBjb25zdCBbYWN0aXZlRmlsdGVycywgc2V0QWN0aXZlRmlsdGVyc10gPSB1c2VTdGF0ZShcbiAgICByZXN0b3JlQWN0aXZlRmlsdGVycyB8fCBbXSxcbiAgKTtcblxuICBjb25zdCBvblN1Ym1pdCA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBzZXRJc1N1Ym1pdHRlZCh0cnVlKTtcbiAgICAgIHN0b3JlQ2FsbGJhY2soYWN0aXZlVGFiLCBhY3RpdmVGaWx0ZXJzLCBxdWVyeVN0cmluZyk7XG4gICAgICBjb25zdCBhY3RpdmVUYWJEZWYgPSB0YWJzLmZpbHRlcigodCkgPT4gdC5pZCA9PT0gYWN0aXZlVGFiLmlkKVswXSB8fCB7fTtcbiAgICAgIGNvbnN0IGlzQ3FsID0gZklzQ3FsKHF1ZXJ5U3RyaW5nKTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ID0gaXNDcWwgJiYgZklzU2VsZWN0KHF1ZXJ5U3RyaW5nKTtcbiAgICAgIGNvbnN0IG1ha2VRdWVyeSA9XG4gICAgICAgIGlzQ3FsIHx8ICFhY3RpdmVUYWJEZWYubWFrZVF1ZXJ5ID8gKHgpID0+IHggOiBhY3RpdmVUYWJEZWYubWFrZVF1ZXJ5O1xuICAgICAgY29uc3QgcGFnZVNpemUgPSBpc1NlbGVjdCA/IC0xIDogdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gc3VibWl0Q2FsbGJhY2sobWFrZVF1ZXJ5KHF1ZXJ5U3RyaW5nLCBhY3RpdmVGaWx0ZXJzKSwgcGFnZVNpemUpO1xuICAgIH0sXG4gICAgW1xuICAgICAgdGFicyxcbiAgICAgIGFjdGl2ZVRhYixcbiAgICAgIGFjdGl2ZUZpbHRlcnMsXG4gICAgICBxdWVyeVN0cmluZyxcbiAgICAgIHN1Ym1pdENhbGxiYWNrLFxuICAgICAgc3RvcmVDYWxsYmFjayxcbiAgICBdLFxuICApO1xuXG4gIGNvbnN0IGlzQ3FsID0gZklzQ3FsKHF1ZXJ5U3RyaW5nKTtcblxuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU3VibWl0dGVkOiBpc1N1Ym1pdHRlZCxcbiAgICAgIHF1ZXJ5U3RyaW5nOiBxdWVyeVN0cmluZyxcbiAgICAgIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2s6IGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2ssXG4gICAgfTtcbiAgfSwgW3F1ZXJ5U3RyaW5nLCBnZXRTdWdnZXN0aW9uc0NhbGxiYWNrLCBpc1N1Ym1pdHRlZF0pO1xuXG4gIGNvbnN0IHNldEFjdGl2ZVRhYlJlc2V0RmlsdGVycyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YWIpID0+IHtcbiAgICAgIHNldEFjdGl2ZVRhYih0YWIpO1xuICAgICAgc2V0QWN0aXZlRmlsdGVycyhbXSk7XG4gICAgfSxcbiAgICBbc2V0QWN0aXZlRmlsdGVycywgc2V0QWN0aXZlVGFiXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIGF1dG9Db21wbGV0ZT1cIm9mZlwiIG9uU3VibWl0PXtvblN1Ym1pdH0+XG4gICAgICA8UXVlcnlGb3JtQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dH0+XG4gICAgICAgIDxRdWVyeUZvcm1UZXh0RmllbGRcbiAgICAgICAgICByZXN0b3JlUXVlcnlTdHJpbmc9e3Jlc3RvcmVRdWVyeVN0cmluZ31cbiAgICAgICAgICBpc0NxbD17aXNDcWx9XG4gICAgICAgICAgc2V0UXVlcnlTdHJpbmc9e3NldFF1ZXJ5U3RyaW5nfVxuICAgICAgICAvPlxuICAgICAgICB7IWlzQ3FsICYmIChcbiAgICAgICAgICA8UXVlcnlGb3JtVGFic1xuICAgICAgICAgICAgdGFicz17dGFic31cbiAgICAgICAgICAgIGFjdGl2ZVRhYj17YWN0aXZlVGFifVxuICAgICAgICAgICAgc2V0QWN0aXZlVGFiPXtzZXRBY3RpdmVUYWJSZXNldEZpbHRlcnN9XG4gICAgICAgICAgICBhY3RpdmVGaWx0ZXJzPXthY3RpdmVGaWx0ZXJzfVxuICAgICAgICAgICAgc2V0QWN0aXZlRmlsdGVycz17c2V0QWN0aXZlRmlsdGVyc31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9RdWVyeUZvcm1Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvZm9ybT5cbiAgKTtcbn1cblxuUXVlcnlGb3JtLkF1dG9Db21wbGV0aW9uID0gQXV0b0NvbXBsZXRpb247XG5cbi8vIERlZmF1bHRzIGFyZSBzdWl0YWJsZSBmb3IgdGVzdGluZyBidXQgbm90IGZvciBwcm9kdWN0aW9uLlxuUXVlcnlGb3JtLmRlZmF1bHRQcm9wcyA9IHtcbiAgc3VibWl0Q2FsbGJhY2s6IChxdWVyeVN0cmluZywgcGFnZVNpemUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcInN1Ym1pdCBxdWVyeTogXCIsIHF1ZXJ5U3RyaW5nLCBwYWdlU2l6ZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBhbGVydChxdWVyeVN0cmluZyk7XG4gICAgICAvLyByZWxvYWQgcGFnZVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIH0sIDEwMDApO1xuICB9LFxuICB0YWJzOiBnZXRfdGVzdF90YWJzKCksXG4gIGRlZmF1bHRUYWI6IDAsXG4gIGdldFN1Z2dlc3Rpb25zQ2FsbGJhY2s6IGdldF90ZXN0X3N1Z2dlc3Rpb25zLFxuICByZXN0b3JlQ2FsbGJhY2s6IHJlc3RvcmUsXG4gIHN0b3JlQ2FsbGJhY2s6IHN0b3JlLFxuICByZXN0b3JlOiBmYWxzZSxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbnRhaW5lciB9IGZyb20gXCJyZWFjdC1ib290c3RyYXBcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFF1ZXJ5Rm9ybSB9IGZyb20gXCIuL1F1ZXJ5Rm9ybVwiO1xuXG5sZXQgbGFzdFF1ZXJ5Rm9ybUhlaWdodCA9IDA7XG5sZXQgc2Nyb2xsRG93blRpbWVvdXQgPSB1bmRlZmluZWQ7XG5cbmNvbnN0IHRvZ2dsZVF1ZXJ5UGFuZWwgPSAoY29udGFpbmVyKSA9PiB7XG4gIGlmICh0eXBlb2Ygc2Nyb2xsRG93blRpbWVvdXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsRG93blRpbWVvdXQpO1xuICB9XG4gIGNvbnN0IHsgdG9wLCBib3R0b20gfSA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgaWYgKGxhc3RRdWVyeUZvcm1IZWlnaHQgIT09IGJvdHRvbSAtIHRvcCkge1xuICAgIC8vIE9ubHkgdGhlIGhlaWdodCBvZiB0aGUgZm9ybSBoYXMgY2hhbmdlZC4gVGhpcyBpcyBub3QgYWN0dWFsbHkgYSBzY3JvbGwgZXZlbnQuXG4gICAgbGFzdFF1ZXJ5Rm9ybUhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICByZXR1cm47XG4gIH1cblxuICBzY3JvbGxEb3duVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIHNjcm9sbERvd25UaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIGlmICh3aW5kb3cucGFnZVlPZmZzZXQgPiBsYXN0UXVlcnlGb3JtSGVpZ2h0KSB7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImNvbmRlbnNlZFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoXCJjb25kZW5zZWRcIik7XG4gICAgfVxuICB9LCAyMDApO1xufTtcblxuY29uc3QgUXVlcnlQYW5lbCA9IChwcm9wcykgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHByb3BzLnNjcm9sbEhhbmRsZXIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBwcm9wcy5zY3JvbGxIYW5kbGVyKTtcbiAgICB9O1xuICB9LCBbcHJvcHMuc2Nyb2xsSGFuZGxlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxRdWVyeUZvcm0gey4uLnByb3BzfSAvPlxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuUXVlcnlQYW5lbC5wcm9wVHlwZXMgPSB7XG4gIHNjcm9sbEhhbmRsZXI6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuZXhwb3J0IHsgUXVlcnlQYW5lbCwgdG9nZ2xlUXVlcnlQYW5lbCB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQnJhbmRpbmcgfSBmcm9tIFwiLi4vQnJhbmRpbmdcIjtcbmltcG9ydCB7IE5hdmJhciwgQ29udGFpbmVyLCBOYXYsIE5hdkRyb3Bkb3duIH0gZnJvbSBcInJlYWN0LWJvb3RzdHJhcFwiO1xuaW1wb3J0IHsgVXNlckNvbXBvbmVudCB9IGZyb20gXCIuL1VzZXJDb21wb25lbnRcIjtcbmltcG9ydCB7IFF1ZXJ5UGFuZWwsIHRvZ2dsZVF1ZXJ5UGFuZWwgfSBmcm9tIFwiLi9RdWVyeVBhbmVsXCI7XG5cbmNsYXNzIE5hdmlnYXRpb25NYW5hZ2VySW1wbCB7XG4gIGNvbnN0cnVjdG9yKHsgaXRlbXMsIGJyYW5kLCB1c2VyX2NvbXBvbmVudCB9KSB7XG4gICAgdGhpcy5pdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgIHRoaXMuYnJhbmQgPSBicmFuZCB8fCBCcmFuZGluZy5uYW1lO1xuICAgIHRoaXMudXBkYXRlX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMudXNlcl9jb21wb25lbnQgPSB1c2VyX2NvbXBvbmVudDtcbiAgfVxuICByZWdpc3RlclVwZGF0ZUxpc3RlbmVyKGxpc3RlbmVyKSB7XG4gICAgdGhpcy51cGRhdGVfbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9XG4gIGFkZExpbmsobGluaykge1xuICAgIHRoaXMuaXRlbXMucHVzaChsaW5rKTtcbiAgICB0aGlzLm5vdGlmeVVwZGF0ZUxpc3RlbmVycygpO1xuICB9XG4gIG5vdGlmeVVwZGF0ZUxpc3RlbmVycygpIHtcbiAgICB0aGlzLnVwZGF0ZV9saXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IGxpc3RlbmVyKCkpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBOYXZpZ2F0aW9uTWFuYWdlciA9IG5ldyBOYXZpZ2F0aW9uTWFuYWdlckltcGwoe1xuICBpdGVtczogW1xuICAgIDxOYXYuTGluayBrZXk9XCIwXCIgaHJlZj1cIiNhY3Rpb24xXCI+XG4gICAgICBIb21lXG4gICAgPC9OYXYuTGluaz4sXG4gICAgPE5hdi5MaW5rIGtleT1cIjFcIiBocmVmPVwiI2FjdGlvbjJcIj5cbiAgICAgIExpbmtcbiAgICA8L05hdi5MaW5rPixcbiAgICA8TmF2RHJvcGRvd24ga2V5PVwiMlwiIHRpdGxlPVwiTGlua1wiPlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj1cIiNhY3Rpb24zXCI+QWN0aW9uPC9OYXZEcm9wZG93bi5JdGVtPlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj1cIiNhY3Rpb240XCI+QW5vdGhlciBhY3Rpb248L05hdkRyb3Bkb3duLkl0ZW0+XG4gICAgICA8TmF2RHJvcGRvd24uRGl2aWRlciAvPlxuICAgICAgPE5hdkRyb3Bkb3duLkl0ZW0gaHJlZj1cIiNhY3Rpb241XCI+U29tZXRoaW5nIGVsc2UgaGVyZTwvTmF2RHJvcGRvd24uSXRlbT5cbiAgICA8L05hdkRyb3Bkb3duPixcbiAgICA8TmF2Lkxpbmsga2V5PVwiM1wiIGhyZWY9XCIjXCIgZGlzYWJsZWQ+XG4gICAgICBMaW5rXG4gICAgPC9OYXYuTGluaz4sXG4gIF0sXG4gIHVzZXJfY29tcG9uZW50OiA8VXNlckNvbXBvbmVudCAvPixcbn0pO1xuXG5leHBvcnQgY29uc3QgVG9wTmF2aWdhdGlvbkJhciA9ICgpID0+IHtcbiAgY29uc3QgcGFuZWxSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB0b2dnbGVRdWVyeVBhbmVsKHBhbmVsUmVmLmN1cnJlbnQpO1xuICB9LCBbcGFuZWxSZWZdKTtcblxuICByZXR1cm4gKFxuICAgIDxOYXZiYXIgYmc9XCJsaWdodFwiIGV4cGFuZD1cImxnXCI+XG4gICAgICA8Q29udGFpbmVyIGZsdWlkPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJkLWxnLW5vbmUgZC1pbmxpbmVcIj57TmF2aWdhdGlvbk1hbmFnZXIuYnJhbmR9PC9zcGFuPlxuICAgICAgICA8TmF2YmFyLlRvZ2dsZSBhcmlhLWNvbnRyb2xzPVwibmF2YmFyU2Nyb2xsXCIgLz5cbiAgICAgICAgPE5hdmJhci5Db2xsYXBzZSBpZD1cIm5hdmJhclNjcm9sbFwiPlxuICAgICAgICAgIDxOYXZiYXIuQnJhbmQgY2xhc3NOYW1lPVwiZC1ub25lIGQtbGctaW5saW5lXCI+XG4gICAgICAgICAgICB7TmF2aWdhdGlvbk1hbmFnZXIuYnJhbmR9XG4gICAgICAgICAgPC9OYXZiYXIuQnJhbmQ+XG4gICAgICAgICAgPE5hdiBjbGFzc05hbWU9XCJtZS1hdXRvIG15LTIgbXktbGctMFwiPlxuICAgICAgICAgICAge05hdmlnYXRpb25NYW5hZ2VyLml0ZW1zLm1hcCgoaXRlbSwga2V5KSA9PiAoXG4gICAgICAgICAgICAgIDxzcGFuIGtleT17a2V5fT57aXRlbX08L3NwYW4+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L05hdj5cbiAgICAgICAgICA8TmF2IHJlZj17cGFuZWxSZWZ9IGNsYXNzTmFtZT1cImNhb3NkYi1mLXF1ZXJ5LXBhbmVsIG1lLWxnLTIgZnVsbFwiPlxuICAgICAgICAgICAgPFF1ZXJ5UGFuZWwgcmVzdG9yZT17dHJ1ZX0gc2Nyb2xsSGFuZGxlcj17c2Nyb2xsSGFuZGxlcn0gLz5cbiAgICAgICAgICA8L05hdj5cbiAgICAgICAgICA8TmF2PntOYXZpZ2F0aW9uTWFuYWdlci51c2VyX2NvbXBvbmVudH08L05hdj5cbiAgICAgICAgPC9OYXZiYXIuQ29sbGFwc2U+XG4gICAgICA8L0NvbnRhaW5lcj5cbiAgICA8L05hdmJhcj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUb3BOYXZpZ2F0aW9uQmFyIH0gZnJvbSBcIi4vVG9wTmF2aWdhdGlvbkJhclwiO1xuXG5leHBvcnQgY29uc3QgSGVhZGVyID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwic2hhZG93LXNtIGJnLWxpZ2h0XCI+XG4gICAgICA8VG9wTmF2aWdhdGlvbkJhcj48L1RvcE5hdmlnYXRpb25CYXI+XG4gICAgPC9oZWFkZXI+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jbGFzcyBGb290ZXJNYW5hZ2VySW1wbCB7XG4gIGNvbnN0cnVjdG9yKHsgaXRlbXMsIGNvcHlSaWdodCB9KSB7XG4gICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xuICAgIHRoaXMuY29weVJpZ2h0ID0gY29weVJpZ2h0O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBGb290ZXJNYW5hZ2VyID0gbmV3IEZvb3Rlck1hbmFnZXJJbXBsKHtcbiAgaXRlbXM6IFtcbiAgICA8YVxuICAgICAga2V5PVwiMFwiXG4gICAgICBjbGFzc05hbWU9XCJuYXYtbGluayBweC0yXCJcbiAgICAgIGhyZWY9XCJodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwtMy4wLmVuLmh0bWxcIlxuICAgID5cbiAgICAgIExpY2Vuc2UgKEFHUEwtdjMpXG4gICAgPC9hPixcbiAgICA8YSBrZXk9XCIxXCIgY2xhc3NOYW1lPVwibmF2LWxpbmsgcHgtMlwiIGhyZWY9XCJodHRwczovL2dpdGxhYi5jb20vY2Fvc2RiXCI+XG4gICAgICBTb3VyY2VzXG4gICAgPC9hPixcbiAgICA8YSBrZXk9XCIzXCIgY2xhc3NOYW1lPVwibmF2LWxpbmsgcHgtMlwiIGhyZWY9XCJodHRwczovL2RvY3MuaW5kaXNjYWxlLmNvbS9cIj5cbiAgICAgIERvY3VtZW50YXRpb25cbiAgICA8L2E+LFxuICBdLFxuICBjb3B5UmlnaHQ6IFwiwqkgMjAyMSBJbmRpU2NhbGUgR21iSFwiLFxufSk7XG5cbmV4cG9ydCBjb25zdCBGb290ZXIgPSAoKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9vdGVyLWJvcmRlclwiIC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb3Rlci1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIHB5LTMgbXktNFwiPlxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJuYXYgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcGItMyBtYi0zXCI+XG4gICAgICAgICAgICB7Rm9vdGVyTWFuYWdlci5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNwYWNlciA9XG4gICAgICAgICAgICAgICAgaW5kZXggPT09IDAgPyBudWxsIDogPGxpIGNsYXNzTmFtZT1cIm5hdi1pdGVtIHB4LTFcIj7igKI8L2xpPjtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c3BhY2VyfVxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cIm5hdi1pdGVtXCI+e2l0ZW19PC9saT5cbiAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPntGb290ZXJNYW5hZ2VyLmNvcHlSaWdodH08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gICk7XG59O1xuIiwiLypcbiAqIFRoaXMgZmlsZSBpcyBhIHBhcnQgb2YgdGhlIENhb3NEQiBQcm9qZWN0LlxuICpcbiAqIENvcHlyaWdodCAoQykgMjAyMyBUaW1tIEZpdHNjaGVuIDx0LmZpdHNjaGVuQGluZGlzY2FsZS5jb20+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMjMgSW5kaVNjYWxlIEdtYkggPGluZm9AaW5kaXNjYWxlLmNvbT5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZVxuICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExvYWRpbmdJbmZvIH0gZnJvbSBcIi4vTG9hZGluZ0luZm9cIjtcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBXcmFwcGVyIGZvciBoYW5kbGluZyBQcm9taXNlcy4gVGhlIHJlc3VsdHMgb2YgdGhlIHByb21pc2UgYXJlIGJlaW5nXG4gKiByZW5kZXJlZC4gSW4gdGhlIG1lYW4gdGltZSwgYSBMb2FkaW5nSW5mbyBpcyBiZWluZyBzaG93bi5cbiAqXG4gKiBFeGFtcGxlOlxuICogICA8QXdhaXQgcHJvbWlzZT17ZmV0Y2hEYXRhKCl9XG4gKiAgICAgICAgICB0aGVuPXtkYXRhID0+IGNyZWF0ZVRhYmxlKGRhdGEpfVxuICogICAgICAgICAgY2F0Y2g9e2Vycm9yID0+IFwiPGRpdj5FcnJvcjogXCIgKyBlcnJvci5tZXNzYWdlPC9kaXY+fS8+XG4gKlxuICogV2hlbiBmZXRjaERhdGEgcmVzb2x2ZXMsIHRoZSBkYXRhIGlzIGJlaW5nIHByZXNlbnRlZCBhcyBhIHRhYmxlLiBBbiBlcnJvclxuICogZGl2IGlzIGJlaW5nIHNob3duIGlmIGZldGNoRGF0YSBmYWlscy5cbiAqXG4gKiBOQi4gRXF1aXZhbGVudGx5LCB5b3UgY291bGQgYWxzbyBkbzpcbiAqICAgPEF3YWl0IHByb21pc2U9e2ZldGNoRGF0YSgpXG4gKiAgICAgICAgICAudGhlbihkYXRhID0+IGNyZWF0ZVRhYmxlKGRhdGEpXG4gKiAgICAgICAgICAuY2F0Y2g9KGVycm9yID0+IFwiPGRpdj5FcnJvcjogXCIgKyBlcnJvci5tZXNzYWdlPC9kaXY+KVxuICogICB9Lz5cbiAqXG4gKiBAcGFyYW0ge1Byb21pc2V9IHByb21pc2UgLSBNdXN0IHJlc29sdmUgdG8gYSBSZWFjdC5Db21wb25lbnQgdW5sZXNzIHRoZVxuICogcGFyYW1ldGVyIGB0aGVuYCBkb2VzIHRoZSBjb252ZXNpb24uXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbdGhlbl0gLSBmdW5jdGlvbiB3aXRoIG9uZSBwYXJhbWV0ZXIuIEl0IGlzIGJlaW5nIGNhbGxlZFxuICogd2hlbiB0aGUgcHJvbWlzZSByZXNvbHZlcy4gSXQgc2hvdWxkIHByZXByb2Nlc3MgdGhlIHByb21pc2VzJyByZXN1bHRzIGFuZFxuICogbXVzdCBhIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYXRjaF0gLSBmdW5jdGlvbiB3aXRoIG9uZSBwYXJhbWV0ZXIuIEl0IGlzIGJlaW5nIGNhbGxlZFxuICogd2hlbiB0aGUgcHJvbWlzZSByZWplY3RzLiBJdCBzaG91bGQgcHJlcHJvY2VzcyB0aGUgZXJyb3IgYW5kIG11c3QgcmV0dXJuIGFcbiAqIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7UmVhY3QuQ29tcG9uZW50fSBbbG9hZGluZ10gLSBBIGNvbXBvbmVudCB3aGljaCB3aWxsIHNob3cgdW50aWwgdGhlXG4gKiBwcm9taXNlIHJlc29sdmVzLiBJZiB1bmRlZmluZWQsIG5vdGhpbmcgd2lsbCBiZSBzaG93bi5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gQXdhaXQocHJvcHMpIHtcbiAgY29uc3QgbG9hZGluZyA9IHByb3BzLmxvYWRpbmcgfHwgPExvYWRpbmdJbmZvIC8+O1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKGxvYWRpbmcpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlID0gYXN5bmMgKHRoZVByb21pc2UsIGRvVGhlbiwgZG9DYXRjaCkgPT4ge1xuICAgICAgdmFyIHJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoZVByb21pc2U7XG4gICAgICAgIGlmIChkb1RoZW4pIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBkb1RoZW4ocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGRvQ2F0Y2gpIHtcbiAgICAgICAgICByZXN1bHQgPSBhd2FpdCBkb0NhdGNoKGVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBfZXJyb3IgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgICAgICAgIHJlc3VsdCA9IDxzcGFuPkFuIHVuaGFuZGxlZCBlcnJvciBvY2N1cmVkOiB7X2Vycm9yfTwvc3Bhbj47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKHJlc3VsdCk7XG4gICAgfTtcblxuICAgIGhhbmRsZShwcm9wcy5wcm9taXNlLCBwcm9wcy50aGVuLCBwcm9wcy5jYXRjaCk7XG4gIH0sIFtwcm9wcy5wcm9taXNlLCBwcm9wcy50aGVuLCBwcm9wcy5jYXRjaCwgc2V0U3RhdGVdKTtcblxuICByZXR1cm4gc3RhdGU7XG59XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IENoZWNrYm94ID0gKHtcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIGljb25zLFxuICBzdHlsZSxcbiAgY29sb3IsXG4gIHJlYWRPbmx5LFxuICBvbkNoYW5nZSxcbiAgb25CbHVyLFxuICBzZXRWYWx1ZSxcbiAgdGl0bGUsXG59KSA9PiB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUodmFsdWUgfHwgXCJmYWxzZVwiKTtcbiAgc3R5bGUgPSBzdHlsZSB8fCBcImNoZWNrXCI7XG4gIGNvbG9yID1cbiAgICBjb2xvciB8fFxuICAgIHtcbiAgICAgIGNoZWNrOiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtc3VjY2Vzc1wiLFxuICAgICAgICBmYWxzZTogXCIgdGV4dC1ib2R5XCIsXG4gICAgICAgIHBhcnRpYWw6IFwiIGNvbG9yLWxpZ2h0LWdyZWVuXCIsXG4gICAgICB9LFxuICAgICAgXCJjaGVjay1maWxsXCI6IHtcbiAgICAgICAgdHJ1ZTogXCIgdGV4dC1zdWNjZXNzXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgY29sb3ItbGlnaHQtZ3JlZW5cIixcbiAgICAgIH0sXG4gICAgICB4OiB7XG4gICAgICAgIHRydWU6IFwiIHRleHQtZGFuZ2VyXCIsXG4gICAgICAgIGZhbHNlOiBcIiB0ZXh0LWJvZHlcIixcbiAgICAgICAgcGFydGlhbDogXCIgdGV4dC13YXJuaW5nXCIsXG4gICAgICB9LFxuICAgICAgXCJ4LWZpbGxcIjoge1xuICAgICAgICB0cnVlOiBcIiB0ZXh0LWRhbmdlclwiLFxuICAgICAgICBmYWxzZTogXCIgdGV4dC1ib2R5XCIsXG4gICAgICAgIHBhcnRpYWw6IFwiIHRleHQtd2FybmluZ1wiLFxuICAgICAgfSxcbiAgICB9W3N0eWxlXTtcblxuICBjb25zdCBpY29uQ2xhc3NOYW1lTWFwID0ge1xuICAgIHg6IHtcbiAgICAgIHRydWU6IFwiYmkgYmkteC1zcXVhcmVcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlXCIgKyBjb2xvcltcInBhcnRpYWxcIl0sXG4gICAgfSxcbiAgICBcIngtZmlsbFwiOiB7XG4gICAgICB0cnVlOiBcImJpIGJpLXgtc3F1YXJlLWZpbGxcIiArIGNvbG9yW1widHJ1ZVwiXSxcbiAgICAgIGZhbHNlOiBcImJpIGJpLXNxdWFyZVwiICsgY29sb3JbXCJmYWxzZVwiXSxcbiAgICAgIHBhcnRpYWw6IFwiYmkgYmktc2xhc2gtc3F1YXJlLWZpbGxcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICAgIGNoZWNrOiB7XG4gICAgICB0cnVlOiBcImJpIGJpLWNoZWNrLXNxdWFyZVwiICsgY29sb3JbXCJ0cnVlXCJdLFxuICAgICAgZmFsc2U6IFwiYmkgYmktc3F1YXJlXCIgKyBjb2xvcltcImZhbHNlXCJdLFxuICAgICAgcGFydGlhbDogXCJiaSBiaS1zbGFzaC1zcXVhcmVcIiArIGNvbG9yW1wicGFydGlhbFwiXSxcbiAgICB9LFxuICAgIFwiY2hlY2stZmlsbFwiOiB7XG4gICAgICB0cnVlOiBcImJpIGJpLWNoZWNrLXNxdWFyZS1maWxsXCIgKyBjb2xvcltcInRydWVcIl0sXG4gICAgICBmYWxzZTogXCJiaSBiaS1zcXVhcmVcIiArIGNvbG9yW1wiZmFsc2VcIl0sXG4gICAgICBwYXJ0aWFsOiBcImJpIGJpLXNsYXNoLXNxdWFyZS1maWxsXCIgKyBjb2xvcltcInBhcnRpYWxcIl0sXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCB0cmFuc2l0aW9ucyA9IHtcbiAgICBwYXJ0aWFsOiBcImZhbHNlXCIsXG4gICAgdHJ1ZTogXCJmYWxzZVwiLFxuICAgIGZhbHNlOiBcInRydWVcIixcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHt9O1xuXG4gIHZhciBpbnB1dDtcbiAgaWYgKCFyZWFkT25seSkge1xuICAgIGlucHV0ID0gKFxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzTmFtZT1cImNhb3NkYi1jaGVjay1ib3gtaW5wdXRcIlxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdmFsdWU9e3N0YXRlfVxuICAgICAgLz5cbiAgICApO1xuXG4gICAgcHJvcHMub25DbGljayA9ICgpID0+IHtcbiAgICAgIHNldFZhbHVlKG5hbWUsIHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgICBzZXRTdGF0ZSh0cmFuc2l0aW9uc1tzdGF0ZV0pO1xuICAgIH07XG5cbiAgICBwcm9wcy5vbktleURvd24gPSAoZSkgPT4ge1xuICAgICAgaWYgKGUuY29kZSA9PT0gXCJTcGFjZVwiKSB7XG4gICAgICAgIHNldFZhbHVlKG5hbWUsIHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgICAgIHNldFN0YXRlKHRyYW5zaXRpb25zW3N0YXRlXSk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJvcHMudGFiSW5kZXggPSBcIjBcIjtcbiAgICBwcm9wcy5vbkJsdXIgPSBvbkJsdXI7XG4gIH1cblxuICBpY29ucyA9IGljb25zIHx8IHt9O1xuXG4gIGNvbnN0IGljb24gPSBpY29uc1tzdGF0ZV0gfHwgKFxuICAgIDxpXG4gICAgICBjbGFzc05hbWU9e1wibXMtMSBjYW9zZGItY2hlY2tib3gtaWNvbiBcIiArIGljb25DbGFzc05hbWVNYXBbc3R5bGVdW3N0YXRlXX1cbiAgICAvPlxuICApO1xuXG4gIHZhciBjbGFzc05hbWUgPSBcImNhb3NkYi1jaGVja2JveCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI7XG4gIGlmIChyZWFkT25seSkge1xuICAgIGNsYXNzTmFtZSArPSBcIiByZWFkLW9ubHlcIjtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICBhcmlhLWNoZWNrZWQ9e3N0YXRlfVxuICAgID5cbiAgICAgIHtpbnB1dH1cbiAgICAgIDxzcGFuIHsuLi5wcm9wc30+e2ljb259PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgKTtcbn07XG5cbkNoZWNrYm94LnByb3BUeXBlcyA9IHtcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mKFtcInRydWVcIiwgXCJmYWxzZVwiXSksXG4gIGljb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdHlsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29sb3I6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICBzZXRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuY29uc3QgQ2FyZCA9IGZ1bmN0aW9uICh7IGNsYXNzTmFtZSwgY2hpbGRyZW4gfSkge1xuICBjbGFzc05hbWUgPSBjbGFzc05hbWUgfHwgXCJcIjtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgY2FyZCBtdC0zIHJvdW5kZWQgc2hhZG93ICR7Y2xhc3NOYW1lfWB9PntjaGlsZHJlbn08L2Rpdj5cbiAgKTtcbn07XG5cbkNhcmQucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuQ2FyZC5Cb2R5ID0gZnVuY3Rpb24gQ2FyZEJvZHkoeyBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtYm9keVwiPntjaGlsZHJlbn08L2Rpdj47XG59O1xuXG5DYXJkLkJvZHkucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgIFByb3BUeXBlcy5ub2RlLFxuICBdKSxcbn07XG5cbkNhcmQuRm9vdGVyID0gZnVuY3Rpb24gQ2FyZEZvb3Rlcih7IGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmQtZm9vdGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPntjaGlsZHJlbn08L2Rpdj5cbiAgKTtcbn07XG5cbkNhcmQuRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLlRpdGxlID0gZnVuY3Rpb24gQ2FyZFRpdGxlKHsgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gPGgzIGNsYXNzTmFtZT1cImNhcmQtdGl0bGVcIj57Y2hpbGRyZW59PC9oMz47XG59O1xuXG5DYXJkLlRpdGxlLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5ub2RlKSxcbiAgICBQcm9wVHlwZXMubm9kZSxcbiAgXSksXG59O1xuXG5DYXJkLkhlYWRlciA9IGZ1bmN0aW9uIENhcmRIZWFkZXIoeyB0aXRsZSwgY2hpbGRyZW4gfSkge1xuICB0aXRsZSA9IHRpdGxlID8gPENhcmQuVGl0bGU+e3RpdGxlfTwvQ2FyZC5UaXRsZT4gOiB1bmRlZmluZWQ7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjYXJkLWhlYWRlclwiPlxuICAgICAge3RpdGxlfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2FyZC5IZWFkZXIucHJvcFR5cGVzID0ge1xuICB0aXRsZTogUHJvcFR5cGVzLm5vZGUsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubm9kZSksXG4gICAgUHJvcFR5cGVzLm5vZGUsXG4gIF0pLFxufTtcblxuZXhwb3J0IHsgQ2FyZCB9O1xuIiwiZnVuY3Rpb24gX19fJGluc2VydFN0eWxlKGNzcykge1xuICAgIGlmICghY3NzIHx8IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0L2NzcycpO1xuICAgIHN0eWxlLmlubmVySFRNTCA9IGNzcztcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICByZXR1cm4gY3NzO1xufVxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RfX2RlZmF1bHQgZnJvbSAncmVhY3QnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuXHJcbnZhciBfX2Fzc2lnbiQxID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiQxID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBfX2Fzc2lnbiQxLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlciQxKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gX19nZW5lcmF0b3IkMSh0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKGcgJiYgKGcgPSAwLCBvcFswXSAmJiAoXyA9IDApKSwgXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBfX3NwcmVhZEFycmF5JDEodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cblxuLyoqXG4gKiBHaXZlcyBhIFhYLlhYIGZvcm1hdCBpbiBCeXRlcyBLQiwgTUIsIEdCIG9yIFRCXG4gKiBAcGFyYW0gZmlsZVNpemUgZmlsZSBzaXplIHRvIGdpdmUgZm9ybWF0IGluIEJ5dGVzXG4gKi9cbnZhciBmaWxlU2l6ZUZvcm1hdGVyID0gZnVuY3Rpb24gKGZpbGVTaXplKSB7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgaWYgKCFmaWxlU2l6ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoZmlsZVNpemUgPCAxMDI0KSB7XG4gICAgICAgIHJlc3VsdCA9IGZpbGVTaXplICsgXCIgQnl0ZXNcIjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vS0JcbiAgICAgICAgaWYgKGZpbGVTaXplIDwgMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChmaWxlU2l6ZSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcIiBLQlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpbGVTaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICAgICAgICByZXN1bHQgPSAoKGZpbGVTaXplIC8gMTAyNCkgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCIgTUJcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaWxlU2l6ZSA8IDEwMjQgKiAxMDI0ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9ICgoKGZpbGVTaXplIC8gMTAyNCkgLyAxMDI0KSAvIDEwMjQpLnRvRml4ZWQoMikgKyBcIiBHQlwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKCgoKGZpbGVTaXplIC8gMTAyNCkgLyAxMDI0KSAvIDEwMjQpIC8gMTAyNCkudG9GaXhlZCgyKSArIFwiIFRCXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogSXRhbGlhbiB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZUl0YWxpYW4gPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIlRyYXNjaW5hIHF1aSBpIHR1b2kgZmlsZVwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIkNhcmljYW1lbnRvIGRpIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBmaWxlXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIkZpbGUgY2FyaWNhdGk6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIEZpbGUgcmlmaXV0YXRpOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJOZXNzdW4gZmlsZSB2YWxpZG8gaW4gYXR0ZXNhIGRpIGVzc2VyZSBjYXJpY2F0b1wiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiVHV0dGkgaSB0aXBpIGRpIGZpbGUgc29ubyBhY2NldHRhdGlcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlRpcGkgZGkgZmlsZSBjb25zZW50aXRpOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJDYXJpY2FtZW50b1wiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIkRpbWVuc2lvbmUgbWFzc2ltYSBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiRmlsZSAgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIklsIGZpbGUgw6ggc3RhdG8gY2FyaWNhdG8gY29uIHN1Y2Nlc3NvIFwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvcmUgZGkgY2FyaWNhbWVudG8gZGVsIGZpbGVcIixcbn07XG4vKipcbiAqIEl0YWxpYW4gdHJhbnNsYXRpb24gZm9yIEZpbGVJdGVtIGNvbXBvbmVudFxuICovXG52YXIgRmlsZUl0ZW1JdGFsaWFuID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJOb21lOiBcIixcbiAgICAgICAgc2l6ZTogXCJEaW1lbnNpb25lOiBcIixcbiAgICAgICAgdHlwZTogXCJUaXBvOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJwcmVwYXJhemlvbmVcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIkluIGNvcnNvXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiU3VjY2Vzc29cIixcbiAgICAgICAgdmFsaWQ6IFwiVmFsaWRvXCIsXG4gICAgICAgIGRlbmllZDogXCJOb24gdsOhbGlkb1wiLFxuICAgICAgICBlcnJvcjogXCJFcnJvcmVcIixcbiAgICAgICAgYWJvcnRlZDogXCJJbnRlcnJvdHRvXCJcbiAgICB9LFxufTtcbi8qKlxuICogSXRhbGlhbiB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JJdGFsaWFuID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHsgcmV0dXJuIFwiSWwgZmlsZSBcXHUwMEU4IG1vbHRvIGdyYW5kZS4gSWwgdGFtLiBpbCBtYXNzaW1vIFxcdTAwRTggXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpOyB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlRpcG8gZGkgZmlsZSBpbGxlZ2FsZVwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7IHJldHVybiBcIk51bWVybyBtYXNzaW1vIGRpIGZpbGUgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpIHJhZ2dpdW50b1wiKTsgfVxufTtcblxuLyoqXG4gKiBGcmVuY2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVGcmVuY2ggPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIkTDqXBvc2V6IHZvcyBmaWNoaWVycyBpY2lcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJFbnZvaSBkZSBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgZmljaGllcnNcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiRmljaGllcnMgdFxcdTAwRTlsXFx1MDBFOWNoYXJnXFx1MDBFOXMgOiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBGaWNoaWVycyByZWpldFxcdTAwRTlzOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJBdWN1biBmaWNoaWVyIHZhbGlkZSBuZSBtYW5xdWVcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlRvdXMgdHlwZXMgZGUgZmljaGllcnMgYWNjZXB0XFx1MDBFOXMgXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJUeXBlcyBkZSBmaWNoaWVyOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJFbnZveWVyXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiVGFpbGxlIG1heGltYWxlIFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJGaWNoaWVycyAgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIkxlIGZpY2hpZXIgYSDDqXTDqSB0w6lsw6ljaGFyZ8OpIGF2ZWMgc3VjY8Ooc1wiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJldXIgbG9ycyBkdSB0w6lsw6ljaGFyZ2VtZW50IFwiLFxufTtcbi8qKlxuICogRnJlbmNoIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtRnJlbmNoID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJMZSBub206IFwiLFxuICAgICAgICBzaXplOiBcIkxlIHRhaWxsZTogXCIsXG4gICAgICAgIHR5cGU6IFwiTGUgdHlwZTogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwicHLDqXBhcmVyXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJFbiBjb3Vyc1wiLFxuICAgICAgICBzdWNjZXNzOiBcIlN1Y2PDqHNcIixcbiAgICAgICAgdmFsaWQ6IFwiVmFsaWRlXCIsXG4gICAgICAgIGRlbmllZDogXCJSZWZ1c8OpXCIsXG4gICAgICAgIGVycm9yOiBcIkVycmV1clwiLFxuICAgICAgICBhYm9ydGVkOiBcIkludGVycm9tcHVcIlxuICAgIH0sXG59O1xuLyoqXG4gKiBGcmVuY2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yRnJlbmNoID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHsgcmV0dXJuIFwiTGUgZmljaGllciBlc3QgdHJcXHUwMEU4cyB2b2x1bWluZXV4LiBMZSB0YW0uIGxlIG1heGltdW0gZXN0IGRlIFwiLmNvbmNhdChmaWxlU2l6ZUZvcm1hdGVyKG1heFNpemUpKTsgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJUeXBlIGRlIGZpY2hpZXIgaWxsXFx1MDBFOWdhbCBcIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykgeyByZXR1cm4gXCJMaW1pdGUgZGUgZmljaGllcnMgYXR0ZWludGUgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpOyB9XG59O1xuXG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVFbmdsaXNoID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJEcm9wIHlvdXIgZmlsZXMgaGVyZVwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIlVwbG9hZGluZyBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgZmlsZXNcIik7IH0sXG4gICAgdXBsb2FkRmluaXNoZWQ6IGZ1bmN0aW9uICh1cGxvYWRlZCwgcmVqZWN0ZWQpIHsgcmV0dXJuIFwiVXBsb2FkZWQgZmlsZXM6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIFJlamVjdGVkIGZpbGVzOiBcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJUaGVyZSBpcyBubyBtaXNzaW5nIHZhbGlkIGZpbGUgdG8gdXBsb2FkXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJBbGwgZmlsZSB0eXBlcyBhY2NlcHRlZFwiLFxuICAgICAgICBhY2NlcHRDdXN0b206IGZ1bmN0aW9uIChhY2NlcHQpIHsgcmV0dXJuIFwiQWxsb3dlZCB0eXBlczogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwiVXBsb2FkIGZpbGVzXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiTWF4IGZpbGUgc2l6ZTogXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIkZpbGVzIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCJGaWxlIHdhcyBzdWNjZXNzZnVseSB1cGxvYWRlZFwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvciBvbiB1cGxvYWRpbmcuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuXCIsXG59O1xuLyoqXG4gKiBFbmdsaXNoIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtRW5nbGlzaCA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTmFtZTogXCIsXG4gICAgICAgIHNpemU6IFwiU2l6ZTogXCIsXG4gICAgICAgIHR5cGU6IFwiVHlwZTogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwiUHJlcGFyaW5nXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJVcGxvYWRpbmdcIixcbiAgICAgICAgc3VjY2VzczogXCJTdWNjZXNzXCIsXG4gICAgICAgIHZhbGlkOiBcIlZhbGlkXCIsXG4gICAgICAgIGRlbmllZDogXCJOb3QgdmFsaWRcIixcbiAgICAgICAgZXJyb3I6IFwiRXJyb3JcIixcbiAgICAgICAgYWJvcnRlZDogXCJBYm9ydGVkXCJcbiAgICB9LFxufTtcbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JFbmdsaXNoID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiRmlsZSBpcyB0b28gYmlnLiBNYXggZmlsZSBzaXplIGFsbG93ZWQgaXMgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiRmlsZSB0eXBlIGlzIG5vdCBhbGxvd2VkXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiTWF4IGFtb3VudCBvZiBmaWxlcyAoXCIuY29uY2F0KG1heEZpbGVzLCBcIikgaGFzIGJlZW4gcmVhY2hlZFwiKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFNwYW5pc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVTcGFuaXNoID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCJTdWVsdGEgdHVzIGFyY2hpdm9zIGFxdcOtXCIsXG4gICAgdXBsb2FkaW5nTWVzc2FnZTogZnVuY3Rpb24gKGFtb3VudE9mRmlsZXMpIHsgcmV0dXJuIFwiU3ViaWVuZG8gXCIuY29uY2F0KGFtb3VudE9mRmlsZXMsIFwiIGFyY2hpdm9zXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIkFyY2hpdm9zIHN1Ymlkb3M6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIEFyY2hpdm9zIHJlY2hhemFkb3M6IFwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIk5vIGhheSBhcmNoaXZvcyB2XFx1MDBFMWxpZG9zIHBlbmRpZW50ZXMgcG9yIHN1YmlyXCIsXG4gICAgZm9vdGVyOiB7XG4gICAgICAgIGFjY2VwdEFsbDogXCJUb2RvcyBsb3MgdGlwb3MgZGUgYXJjaGl2byBhY2VwdGFkb3NcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlRpcG8ocykgZGUgYXJjaGl2byBwZXJtaXRpZG9zOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCJTdWJpclwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlRhbS4gbVxcdTAwRTF4aW1vIFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJBcmNoaXZvcyBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwiRWwgYXJjaGl2byBzZSBzdWJpw7MgY29ycmVjdGFtZW50ZVwiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvciBhbCBzdWJpciBlbCBhcmNoaXZvXCIsXG59O1xuLyoqXG4gKiBTcGFuaXNoIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqL1xudmFyIEZpbGVJdGVtU3BhbmlzaCA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiTm9tYnJlOiBcIixcbiAgICAgICAgc2l6ZTogXCJUYW1hw7FvOiBcIixcbiAgICAgICAgdHlwZTogXCJUaXBvOiBcIlxuICAgIH0sXG4gICAgc3RhdHVzOiB7XG4gICAgICAgIHByZXBhcmluZzogXCJQcmVwYXJhbmRvXCIsXG4gICAgICAgIHVwbG9hZGluZzogXCJTdWJpZW5kb1wiLFxuICAgICAgICBzdWNjZXNzOiBcIsOJeGl0b1wiLFxuICAgICAgICB2YWxpZDogXCJWw6FsaWRvXCIsXG4gICAgICAgIGRlbmllZDogXCJObyB2w6FsaWRvXCIsXG4gICAgICAgIGVycm9yOiBcIkVycm9yXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiQW51bGFkb1wiXG4gICAgfSxcbn07XG4vKipcbiAqIFNwYW5pc2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yU3BhbmlzaCA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7IHJldHVybiBcIkVsIGFyY2hpdm8gZXMgbXV5IGdyYW5kZS4gRWwgdGFtLiBtXFx1MDBFMXhpbW8gZXMgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpOyB9LFxuICAgIGFjY2VwdEVycm9yOiBcIlRpcG8gZGUgYXJjaGl2byBubyBwZXJtaXRpZG9cIixcbiAgICBtYXhGaWxlQ291bnQ6IGZ1bmN0aW9uIChtYXhGaWxlcykgeyByZXR1cm4gXCJDYW50aWRhZCBtXFx1MDBFMXhpbWEgZGUgYXJjaGl2b3MgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpIGFsY2FuemFkYVwiKTsgfVxufTtcblxuLyoqXG4gKiBSdXNzaWFuIHRyYW5zbGF0aW9uIGZvciBEcm9wem9uZSBjb21wb25lbnRcbiAqL1xudmFyIERyb3B6b25lUnVzc2lhbiA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwi0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YHRjtC00LAg0YHQstC+0Lgg0YTQsNC50LvRiy5cIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJcXHUwNDEyXFx1MDQ0QlxcdTA0MzNcXHUwNDQwXFx1MDQ0M1xcdTA0MzdcXHUwNDNBXFx1MDQzMCBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQlxcdTA0M0VcXHUwNDMyXCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIlxcdTA0MTdcXHUwNDMwXFx1MDQzM1xcdTA0NDBcXHUwNDQzXFx1MDQzNlxcdTA0MzVcXHUwNDNEXFx1MDQzRSBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzI6IFwiLmNvbmNhdCh1cGxvYWRlZCwgXCIsIFxcdTA0M0VcXHUwNDQyXFx1MDQzQVxcdTA0M0JcXHUwNDNFXFx1MDQzRFxcdTA0MzVcXHUwNDNEXFx1MDQzRFxcdTA0NEJcXHUwNDQ1IFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMjogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiXFx1MDQxNFxcdTA0MzVcXHUwNDM5XFx1MDQ0MVxcdTA0NDJcXHUwNDMyXFx1MDQzOFxcdTA0NDJcXHUwNDM1XFx1MDQzQlxcdTA0NENcXHUwNDNEXFx1MDQ0QlxcdTA0MzkgXFx1MDQ0NFxcdTA0MzBcXHUwNDM5XFx1MDQzQiBcXHUwNDNEXFx1MDQzNSBcXHUwNDNFXFx1MDQ0MlxcdTA0NDFcXHUwNDQzXFx1MDQ0MlxcdTA0NDFcXHUwNDQyXFx1MDQzMlxcdTA0NDNcXHUwNDM1XFx1MDQ0MiBcXHUwNDM0XFx1MDQzQlxcdTA0NEYgXFx1MDQzN1xcdTA0MzBcXHUwNDMzXFx1MDQ0MFxcdTA0NDNcXHUwNDM3XFx1MDQzQVxcdTA0MzhcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlxcdTA0MUZcXHUwNDQwXFx1MDQzOFxcdTA0M0RcXHUwNDM4XFx1MDQzQ1xcdTA0MzBcXHUwNDRFXFx1MDQ0MlxcdTA0NDFcXHUwNDRGIFxcdTA0MzJcXHUwNDQxXFx1MDQzNSBcXHUwNDQyXFx1MDQzOFxcdTA0M0ZcXHUwNDRCIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDNFXFx1MDQzMiBcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlxcdTA0MTRcXHUwNDNFXFx1MDQzRlxcdTA0NDNcXHUwNDQxXFx1MDQ0MlxcdTA0MzhcXHUwNDNDXFx1MDQ0QlxcdTA0MzUgXFx1MDQ0MlxcdTA0MzhcXHUwNDNGXFx1MDQ0QjogXCIuY29uY2F0KGFjY2VwdCk7IH1cbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgICB1cGxvYWRGaWxlc01lc3NhZ2U6IFwi0J7RgtC/0YDQsNCy0LjRgtGMXCIsXG4gICAgICAgIG1heFNpemVNZXNzYWdlOiBmdW5jdGlvbiAobWF4RmlsZVNpemUpIHsgcmV0dXJuIFwiXFx1MDQzQ1xcdTA0MzBcXHUwNDNBXFx1MDQ0MSBcXHUwNDQwXFx1MDQzMFxcdTA0MzdcXHUwNDNDXFx1MDQzNVxcdTA0NDA6IFwiLmNvbmNhdChtYXhGaWxlU2l6ZSk7IH0sXG4gICAgICAgIHZhbGlkRmlsZXNNZXNzYWdlOiBmdW5jdGlvbiAobnVtYmVyT2ZWYWxpZEZpbGVzLCBtYXhGaWxlcykgeyByZXR1cm4gXCJcXHUwNDI0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQ0QiBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwi0KTQsNC50Lsg0LHRi9C7INGD0YHQv9C10YjQvdC+INC30LDQs9GA0YPQttC10L1cIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwi0J7RiNC40LHQutCwINC/0YDQuCDQt9Cw0LPRgNGD0LfQutC1XCIsXG59O1xuLyoqXG4gKiBSdXNzaWFuIHRyYW5zbGF0aW9uIGZvciBGaWxlSXRlbSBjb21wb25lbnRcbiAqXG4gKi9cbnZhciBGaWxlSXRlbVJ1c3NpYW4gPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIlxcdTA0MThcXHUwNDNDXFx1MDQ0RjogXCIsXG4gICAgICAgIHNpemU6IFwi0KDQsNC30LzQtdGAOiBcIixcbiAgICAgICAgdHlwZTogXCJU0LjQvzogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwi0L/QvtC00LPQvtGC0L7QstC60LBcIixcbiAgICAgICAgdXBsb2FkaW5nOiBcItCX0LDQs9GA0YPQt9C60LBcIixcbiAgICAgICAgc3VjY2VzczogXCLRg9GB0L/QtdGFXCIsXG4gICAgICAgIHZhbGlkOiBcItCz0L7QtNC90YvQuVwiLFxuICAgICAgICBkZW5pZWQ6IFwi0LLRi9C60LjQvdGD0YLRi9C5XCIsXG4gICAgICAgIGVycm9yOiBcItC+0YjQuNCx0LrQsFwiLFxuICAgICAgICBhYm9ydGVkOiBcItC/0YDQtdGA0LLQsNC90L3Ri9C5XCJcbiAgICB9LFxufTtcbi8qKlxuICogUnVzc2lhbiB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JSdXNzaWFuID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1MDQyNFxcdTA0MzBcXHUwNDM5XFx1MDQzQiBcXHUwNDQxXFx1MDQzQlxcdTA0MzhcXHUwNDQ4XFx1MDQzQVxcdTA0M0VcXHUwNDNDIFxcdTA0MzFcXHUwNDNFXFx1MDQzQlxcdTA0NENcXHUwNDQ4XFx1MDQzRVxcdTA0MzkuIFxcdTA0MUNcXHUwNDMwXFx1MDQzQVxcdTA0NDFcXHUwNDM4XFx1MDQzQ1xcdTA0MzBcXHUwNDNCXFx1MDQ0Q1xcdTA0M0RcXHUwNDNFIFxcdTA0MzRcXHUwNDNFXFx1MDQzRlxcdTA0NDNcXHUwNDQxXFx1MDQ0MlxcdTA0MzhcXHUwNDNDXFx1MDQ0QlxcdTA0MzkgXFx1MDQ0MFxcdTA0MzBcXHUwNDM3XFx1MDQzQ1xcdTA0MzVcXHUwNDQwIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDMwIC0gXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiXFx1MDQyMlxcdTA0MzhcXHUwNDNGIFxcdTA0NDRcXHUwNDMwXFx1MDQzOVxcdTA0M0JcXHUwNDMwIFxcdTA0M0RcXHUwNDM1IFxcdTA0NDBcXHUwNDMwXFx1MDQzN1xcdTA0NDBcXHUwNDM1XFx1MDQ0OFxcdTA0MzVcXHUwNDNEXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1MDQxNFxcdTA0M0VcXHUwNDQxXFx1MDQ0MlxcdTA0MzhcXHUwNDMzXFx1MDQzRFxcdTA0NDNcXHUwNDQyXFx1MDQzRSBcXHUwNDNDXFx1MDQzMFxcdTA0M0FcXHUwNDQxXFx1MDQzOFxcdTA0M0NcXHUwNDMwXFx1MDQzQlxcdTA0NENcXHUwNDNEXFx1MDQzRVxcdTA0MzUgXFx1MDQzQVxcdTA0M0VcXHUwNDNCXFx1MDQzOFxcdTA0NDdcXHUwNDM1XFx1MDQ0MVxcdTA0NDJcXHUwNDMyXFx1MDQzRSBcXHUwNDQ0XFx1MDQzMFxcdTA0MzlcXHUwNDNCXFx1MDQzRVxcdTA0MzIgKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpO1xuICAgIH1cbn07XG5cbi8qKlxuICogUG9ydHVndWVzZSB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmVcbiAqL1xudmFyIERyb3B6b25lUG9ydHVndWVzZSA9IHtcbiAgICBkZWZhdWx0TGFiZWw6IFwiU29sdGUgc2V1cyBhcnF1aXZvcyBhcXVpIFwiLFxuICAgIHVwbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIChhbW91bnRPZkZpbGVzKSB7IHJldHVybiBcIkVudmlhbmRvIFwiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIiBhcnF1aXZvc1wiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJBcnF1aXZvcyBlbnZpYWRvczogXCIuY29uY2F0KHVwbG9hZGVkLCBcIiwgQXJxdWl2b3MgcmVqZWl0YWRvczogXCIpLmNvbmNhdChyZWplY3RlZCk7IH0sXG4gICAgbm9GaWxlc01lc3NhZ2U6IFwiTmVuaHVtIGFycXVpdm8gdlxcdTAwRTFsaWRvIGVzdFxcdTAwRTEgZmFsdGFuZG8gcGFyYSBlbnZpYXJcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlRvZG9zIG9zIHRpcG9zIGRlIGFycXVpdm8gc1xcdTAwRTNvIGFjZWl0b3NcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlRpcG9zIHBlcm1pdGlkb3M6IFwiLmNvbmNhdChhY2NlcHQpOyB9XG4gICAgfSxcbiAgICBoZWFkZXI6IHtcbiAgICAgICAgdXBsb2FkRmlsZXNNZXNzYWdlOiBcIkVudmlhclwiLFxuICAgICAgICBtYXhTaXplTWVzc2FnZTogZnVuY3Rpb24gKG1heEZpbGVTaXplKSB7IHJldHVybiBcIlRhbWFuaG8gbVxcdTAwRTF4aW1vOiBcIi5jb25jYXQobWF4RmlsZVNpemUpOyB9LFxuICAgICAgICB2YWxpZEZpbGVzTWVzc2FnZTogZnVuY3Rpb24gKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpIHsgcmV0dXJuIFwiQXJxdWl2b3MgXCIuY29uY2F0KG51bWJlck9mVmFsaWRGaWxlcywgXCIvXCIpLmNvbmNhdChtYXhGaWxlcyk7IH1cbiAgICB9LFxuICAgIGZha2V1cGxvYWRzdWNjZXNzOiBcIk8gYXJxdWl2byBmb2kgZW52aWFkbyBjb20gc3VjZXNzb1wiLFxuICAgIGZha2VVcGxvYWRFcnJvcjogXCJFcnJvIGFvIGVudmlhclwiLFxufTtcbi8qKlxuICogUG9ydHVndWVzZSB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVBvcnR1Z3Vlc2UgPSB7XG4gICAgZnVsbEluZm9MYXllcjoge1xuICAgICAgICBuYW1lOiBcIk5vbWU6IFwiLFxuICAgICAgICBzaXplOiBcIlRhbWFuaG86IFwiLFxuICAgICAgICB0eXBlOiBcIlRpcG86IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIlByZXBhcmFuZG9cIixcbiAgICAgICAgdXBsb2FkaW5nOiBcIkVudmlhbmRvXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwiw4p4aXRvXCIsXG4gICAgICAgIHZhbGlkOiBcInbDoWxpZG9cIixcbiAgICAgICAgZGVuaWVkOiBcIk5lZ2Fkb1wiLFxuICAgICAgICBlcnJvcjogXCJFcnJvXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwiQWJvcnRhZG9cIlxuICAgIH0sXG59O1xuLyoqXG4gKiBQb3J0dWd1ZXNlIHRyYW5zbGF0aW9uIGZvciBWYWxpZGF0aW9uIEVycm9yc1xuICovXG52YXIgVmFsaWRhdGVFcnJvclBvcnR1Z3Vlc2UgPSB7XG4gICAgbWF4U2l6ZUVycm9yOiBmdW5jdGlvbiAobWF4U2l6ZSkgeyByZXR1cm4gXCJPIGFycXVpdm8gXFx1MDBFOSBtdWl0byBncmFuZGUuIE8gdGFtYW5obyBtXFx1MDBFMXhpbW8gZGUgYXJxdWl2byBwZXJtaXRpZG8gXFx1MDBFOSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7IH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiTyB0aXBvIGRlIGFycXVpdm8gblxcdTAwRTNvIFxcdTAwRTkgcGVybWl0aWRvIFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7IHJldHVybiBcIlF1YW50aWRhZGUgbVxcdTAwRTF4aW1hIGRlIGFycXVpdm9zIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKSBhbGNhblxcdTAwRTdhZGFcIik7IH1cbn07XG5cbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgRHJvcHpvbmUgY29tcG9uZW50XG4gKi9cbnZhciBEcm9wem9uZVNpbXBsaWZpZWRDaGluZXNlID0ge1xuICAgIGRlZmF1bHRMYWJlbDogXCLlsIbmgqjnmoTmlofku7bmlL7lnKjov5nph4xcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJcXHU0RTBBXFx1NEYyMCBcIi5jb25jYXQoYW1vdW50T2ZGaWxlcywgXCIgXFx1NEUyQVxcdTY1ODdcXHU0RUY2XCIpOyB9LFxuICAgIHVwbG9hZEZpbmlzaGVkOiBmdW5jdGlvbiAodXBsb2FkZWQsIHJlamVjdGVkKSB7IHJldHVybiBcIlxcdTRFMEFcXHU0RjIwXFx1NjU4N1xcdTRFRjZcXHVGRjFBXCIuY29uY2F0KHVwbG9hZGVkLCBcIlxcdUZGMENcXHU2MkQyXFx1N0VERFxcdTY1ODdcXHU0RUY2XFx1RkYxQVwiKS5jb25jYXQocmVqZWN0ZWQpOyB9LFxuICAgIG5vRmlsZXNNZXNzYWdlOiBcIlxcdTZDQTFcXHU2NzA5XFx1N0YzQVxcdTVDMTFcXHU4OTgxXFx1NTJBMFxcdThGN0RcXHU3Njg0XFx1NjcwOVxcdTY1NDhcXHU2NTg3XFx1NEVGNlwiLFxuICAgIGZvb3Rlcjoge1xuICAgICAgICBhY2NlcHRBbGw6IFwiXFx1NjNBNVxcdTUzRDdcXHU2MjQwXFx1NjcwOVxcdTY1ODdcXHU0RUY2XFx1N0M3QlxcdTU3OEJcIixcbiAgICAgICAgYWNjZXB0Q3VzdG9tOiBmdW5jdGlvbiAoYWNjZXB0KSB7IHJldHVybiBcIlxcdTUxNDFcXHU4QkI4XFx1NzY4NFxcdTdDN0JcXHU1NzhCOiBcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCLkuIrkvKDmlofku7ZcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NTkyN1xcdTVDMEZcXHVGRjFBXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIlxcdTY1ODdcXHU2ODYzIFwiLmNvbmNhdChudW1iZXJPZlZhbGlkRmlsZXMsIFwiL1wiKS5jb25jYXQobWF4RmlsZXMpOyB9XG4gICAgfSxcbiAgICBmYWtldXBsb2Fkc3VjY2VzczogXCLmlofku7blt7LmiJDlip/kuIrkvKBcIixcbiAgICBmYWtlVXBsb2FkRXJyb3I6IFwi5LiK5Lyg5pe25Ye66ZSZXCIsXG59O1xuLyoqXG4gKiBDaGlubmVzZSB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVNpbXBsaWZpZWRDaGluZXNlID0ge1xuICAgIGZ1bGxJbmZvTGF5ZXI6IHtcbiAgICAgICAgbmFtZTogXCJcXHU2NTg3XFx1Njg2M1xcdTU0MERcXHU3OUYwOiBcIixcbiAgICAgICAgc2l6ZTogXCLlsLrlr7g6IFwiLFxuICAgICAgICB0eXBlOiBcIuaWh+S7tuexu+WeizogXCJcbiAgICB9LFxuICAgIHN0YXR1czoge1xuICAgICAgICBwcmVwYXJpbmc6IFwi6aKE5Yqg6L29XCIsXG4gICAgICAgIHVwbG9hZGluZzogXCLkuIrkvKBcIixcbiAgICAgICAgc3VjY2VzczogXCLmiJDlip9cIixcbiAgICAgICAgdmFsaWQ6IFwi5o6l5Y+X55qE5paH5Lu2XCIsXG4gICAgICAgIGRlbmllZDogXCLooqvmi5Lnu53nmoTmlofku7ZcIixcbiAgICAgICAgZXJyb3I6IFwi6ZSZ6K+vXCIsXG4gICAgICAgIGFib3J0ZWQ6IFwi5Lit5q2iXCJcbiAgICB9LFxufTtcbi8qKlxuICogRW5nbGlzaCB0cmFuc2xhdGlvbiBmb3IgVmFsaWRhdGlvbiBFcnJvcnNcbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JTaW1wbGlmaWVkQ2hpbmVzZSA9IHtcbiAgICBtYXhTaXplRXJyb3I6IGZ1bmN0aW9uIChtYXhTaXplKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTY1ODdcXHU0RUY2XFx1NTkyQVxcdTU5MjdcXHUzMDAyIFxcdTUxNDFcXHU4QkI4XFx1NzY4NFxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU1OTI3XFx1NUMwRlxcdTRFM0EgXCIuY29uY2F0KGZpbGVTaXplRm9ybWF0ZXIobWF4U2l6ZSkpO1xuICAgIH0sXG4gICAgYWNjZXB0RXJyb3I6IFwiXFx1NjU4N1xcdTRFRjZcXHU3QzdCXFx1NTc4QlxcdTRFMERcXHU1MTQxXFx1OEJCOFwiLFxuICAgIG1heEZpbGVDb3VudDogZnVuY3Rpb24gKG1heEZpbGVzKSB7XG4gICAgICAgIHJldHVybiBcIlxcdTVERjJcXHU4RkJFXFx1NTIzMFxcdTY3MDBcXHU1OTI3XFx1NjU4N1xcdTRFRjZcXHU2NTcwIChcIi5jb25jYXQobWF4RmlsZXMsIFwiKVwiKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIERyb3B6b25lIGNvbXBvbmVudFxuICovXG52YXIgRHJvcHpvbmVUcmFkaXRpb25hbENoaW5lc2UgPSB7XG4gICAgZGVmYXVsdExhYmVsOiBcIuaKiuS9oOeahOaWh+S7tuaUvuWcqOmAmeijoSBcIixcbiAgICB1cGxvYWRpbmdNZXNzYWdlOiBmdW5jdGlvbiAoYW1vdW50T2ZGaWxlcykgeyByZXR1cm4gXCJcXHU0RTBBXFx1NTBCM1wiLmNvbmNhdChhbW91bnRPZkZpbGVzLCBcIlxcdTUwMEJcXHU2NTg3XFx1NEVGNlwiKTsgfSxcbiAgICB1cGxvYWRGaW5pc2hlZDogZnVuY3Rpb24gKHVwbG9hZGVkLCByZWplY3RlZCkgeyByZXR1cm4gXCJcXHU0RTBBXFx1NTBCM1xcdTY1ODdcXHU0RUY2OiBcIi5jb25jYXQodXBsb2FkZWQsIFwiLCBcXHU2MkQyXFx1N0Q1NVxcdTc2ODRcXHU2NTg3XFx1NEVGNlxcdUZGMUFcIikuY29uY2F0KHJlamVjdGVkKTsgfSxcbiAgICBub0ZpbGVzTWVzc2FnZTogXCJcXHU2QzkyXFx1NjcwOVxcdTdGM0FcXHU1QzExXFx1ODk4MVxcdTRFMEFcXHU1MEIzXFx1NzY4NFxcdTY3MDlcXHU2NTQ4XFx1NjU4N1xcdTRFRjZcIixcbiAgICBmb290ZXI6IHtcbiAgICAgICAgYWNjZXB0QWxsOiBcIlxcdTYzQTVcXHU1M0Q3XFx1NjI0MFxcdTY3MDlcXHU2NTg3XFx1NEVGNlxcdTk4NUVcXHU1NzhCXCIsXG4gICAgICAgIGFjY2VwdEN1c3RvbTogZnVuY3Rpb24gKGFjY2VwdCkgeyByZXR1cm4gXCJcXHU1MTQxXFx1OEEzMVxcdTc2ODRcXHU5ODVFXFx1NTc4QlxcdUZGMUFcIi5jb25jYXQoYWNjZXB0KTsgfVxuICAgIH0sXG4gICAgaGVhZGVyOiB7XG4gICAgICAgIHVwbG9hZEZpbGVzTWVzc2FnZTogXCLkuIrlgrPmlofku7ZcIixcbiAgICAgICAgbWF4U2l6ZU1lc3NhZ2U6IGZ1bmN0aW9uIChtYXhGaWxlU2l6ZSkgeyByZXR1cm4gXCJcXHU2NzAwXFx1NTkyN1xcdTY1ODdcXHU0RUY2XFx1NTkyN1xcdTVDMEZcXHVGRjFBXCIuY29uY2F0KG1heEZpbGVTaXplKTsgfSxcbiAgICAgICAgdmFsaWRGaWxlc01lc3NhZ2U6IGZ1bmN0aW9uIChudW1iZXJPZlZhbGlkRmlsZXMsIG1heEZpbGVzKSB7IHJldHVybiBcIiBcXHU2NTg3XFx1NEVGNiBcIi5jb25jYXQobnVtYmVyT2ZWYWxpZEZpbGVzLCBcIi9cIikuY29uY2F0KG1heEZpbGVzKTsgfVxuICAgIH0sXG4gICAgZmFrZXVwbG9hZHN1Y2Nlc3M6IFwi5paH5Lu25bey5oiQ5Yqf5LiK5YKzXCIsXG4gICAgZmFrZVVwbG9hZEVycm9yOiBcIuS4iuWCs+aZguWHuumMr1wiLFxufTtcbi8qKlxuICogQ2hpbmVzZSB0cmFuc2xhdGlvbiBmb3IgRmlsZUl0ZW0gY29tcG9uZW50XG4gKi9cbnZhciBGaWxlSXRlbVRyYWRpdGlvbmFsQ2hpbmVzZSA9IHtcbiAgICBmdWxsSW5mb0xheWVyOiB7XG4gICAgICAgIG5hbWU6IFwiXFx1NjU4N1xcdTZBOTRcXHU1NDBEXFx1N0EzMTogXCIsXG4gICAgICAgIHNpemU6IFwi5paH5Lu25aSn5bCPOiBcIixcbiAgICAgICAgdHlwZTogXCLmlofku7bpoZ7lnos6IFwiXG4gICAgfSxcbiAgICBzdGF0dXM6IHtcbiAgICAgICAgcHJlcGFyaW5nOiBcIumgkOWKoOi8iVwiLFxuICAgICAgICB1cGxvYWRpbmc6IFwi5LiK5YKzXCIsXG4gICAgICAgIHN1Y2Nlc3M6IFwi5oiQ5YqfXCIsXG4gICAgICAgIHZhbGlkOiBcIuacieaViOaWh+S7tlwiLFxuICAgICAgICBkZW5pZWQ6IFwi54Sh5pWI5paH5Lu2XCIsXG4gICAgICAgIGVycm9yOiBcIumMr+iqpFwiLFxuICAgICAgICBhYm9ydGVkOiBcIuS4reatolwiXG4gICAgfSxcbn07XG4vKipcbiAqIEVuZ2xpc2ggdHJhbnNsYXRpb24gZm9yIFZhbGlkYXRpb24gRXJyb3JzXG4gKi9cbnZhciBWYWxpZGF0ZUVycm9yVHJhZGl0aW9uYWxDaGluZXNlID0ge1xuICAgIG1heFNpemVFcnJvcjogZnVuY3Rpb24gKG1heFNpemUpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1NjU4N1xcdTRFRjZcXHU1OTJBXFx1NTkyN1xcdTMwMDIgXFx1NTE0MVxcdThBMzFcXHU3Njg0XFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTU5MjdcXHU1QzBGXFx1NzBCQSBcIi5jb25jYXQoZmlsZVNpemVGb3JtYXRlcihtYXhTaXplKSk7XG4gICAgfSxcbiAgICBhY2NlcHRFcnJvcjogXCJcXHU2NTg3XFx1NEVGNlxcdTk4NUVcXHU1NzhCXFx1NEUwRFxcdTUxNDFcXHU4QTMxXCIsXG4gICAgbWF4RmlsZUNvdW50OiBmdW5jdGlvbiAobWF4RmlsZXMpIHtcbiAgICAgICAgcmV0dXJuIFwiXFx1NURGMlxcdTkwNTRcXHU1MjMwXFx1NjcwMFxcdTU5MjdcXHU2NTg3XFx1NEVGNlxcdTY1NzggKFwiLmNvbmNhdChtYXhGaWxlcywgXCIpXCIpO1xuICAgIH1cbn07XG5cbnZhciBGaWxlSXRlbUxvY2FsaXplciA9IHtcbiAgICBcIkVTLWVzXCI6IEZpbGVJdGVtU3BhbmlzaCxcbiAgICBcIkVOLWVuXCI6IEZpbGVJdGVtRW5nbGlzaCxcbiAgICBcIkZSLWZyXCI6IEZpbGVJdGVtRnJlbmNoLFxuICAgIFwiSVQtaXRcIjogRmlsZUl0ZW1JdGFsaWFuLFxuICAgIFwiUFQtcHRcIjogRmlsZUl0ZW1Qb3J0dWd1ZXNlLFxuICAgIFwiUlUtcnVcIjogRmlsZUl0ZW1SdXNzaWFuLFxuICAgIFwiWkgtY25cIjogRmlsZUl0ZW1TaW1wbGlmaWVkQ2hpbmVzZSxcbiAgICBcIlpILWhrXCI6IEZpbGVJdGVtVHJhZGl0aW9uYWxDaGluZXNlXG59O1xuLyoqXG4gKiBTZWN1cmUgdHJhbnNsYXRpb24gdGhyb3VnaCBhIHNlbGVjdG9yXG4gKiBAcGFyYW0gbG9jYWwgdGhlIExvY2FsaXphdGlvblxuICogQHJldHVybnMgYSBDb21wb25lbnRMb2NhbGl6ZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHRyYW5zbGF0aW9uXG4gKi9cbnZhciBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yID0gZnVuY3Rpb24gKGxvY2FsKSB7XG4gICAgc3dpdGNoIChsb2NhbCkge1xuICAgICAgICBjYXNlIFwiRVMtZXNcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiRVMtZXNcIl07XG4gICAgICAgIGNhc2UgXCJFTi1lblwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICAgICAgY2FzZSBcIkZSLWZyXCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIkZSLWZyXCJdO1xuICAgICAgICBjYXNlIFwiSVQtaXRcIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiSVQtaXRcIl07XG4gICAgICAgIGNhc2UgXCJQVC1wdFwiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJQVC1wdFwiXTtcbiAgICAgICAgY2FzZSBcIlJVLXJ1XCI6IHJldHVybiBGaWxlSXRlbUxvY2FsaXplcltcIlJVLXJ1XCJdO1xuICAgICAgICBjYXNlIFwiWkgtY25cIjogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiWkgtY25cIl07XG4gICAgICAgIGNhc2UgXCJaSC1oa1wiOiByZXR1cm4gRmlsZUl0ZW1Mb2NhbGl6ZXJbXCJaSC1oa1wiXTtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIEZpbGVJdGVtTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgfVxufTtcblxudmFyIERyb3B6b25lTG9jYWxpemVyID0ge1xuICAgIFwiRVMtZXNcIjogRHJvcHpvbmVTcGFuaXNoLFxuICAgIFwiRU4tZW5cIjogRHJvcHpvbmVFbmdsaXNoLFxuICAgIFwiRlItZnJcIjogRHJvcHpvbmVGcmVuY2gsXG4gICAgXCJJVC1pdFwiOiBEcm9wem9uZUl0YWxpYW4sXG4gICAgXCJQVC1wdFwiOiBEcm9wem9uZVBvcnR1Z3Vlc2UsXG4gICAgXCJSVS1ydVwiOiBEcm9wem9uZVJ1c3NpYW4sXG4gICAgXCJaSC1jblwiOiBEcm9wem9uZVNpbXBsaWZpZWRDaGluZXNlLFxuICAgIFwiWkgtaGtcIjogRHJvcHpvbmVUcmFkaXRpb25hbENoaW5lc2Vcbn07XG4vKipcbiAqIFNlY3VyZSB0cmFuc2xhdGlvbiB0aHJvdWdoIGEgc2VsZWN0b3JcbiAqIEBwYXJhbSBsb2NhbCB0aGUgTG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIENvbXBvbmVudExvY2FsaXplciBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdHJhbnNsYXRpb25cbiAqL1xudmFyIERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IgPSBmdW5jdGlvbiAobG9jYWwpIHtcbiAgICBzd2l0Y2ggKGxvY2FsKSB7XG4gICAgICAgIGNhc2UgXCJFUy1lc1wiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJFUy1lc1wiXTtcbiAgICAgICAgY2FzZSBcIkVOLWVuXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIkVOLWVuXCJdO1xuICAgICAgICBjYXNlIFwiRlItZnJcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiRlItZnJcIl07XG4gICAgICAgIGNhc2UgXCJJVC1pdFwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJJVC1pdFwiXTtcbiAgICAgICAgY2FzZSBcIlBULXB0XCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIlBULXB0XCJdO1xuICAgICAgICBjYXNlIFwiUlUtcnVcIjogcmV0dXJuIERyb3B6b25lTG9jYWxpemVyW1wiUlUtcnVcIl07XG4gICAgICAgIGNhc2UgXCJaSC1jblwiOiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJaSC1jblwiXTtcbiAgICAgICAgY2FzZSBcIlpILWhrXCI6IHJldHVybiBEcm9wem9uZUxvY2FsaXplcltcIlpILWhrXCJdO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gRHJvcHpvbmVMb2NhbGl6ZXJbXCJFTi1lblwiXTtcbiAgICB9XG59O1xuXG52YXIgVmFsaWRhdGVFcnJvckxvY2FsaXplciA9IHtcbiAgICBcIkVTLWVzXCI6IFZhbGlkYXRlRXJyb3JTcGFuaXNoLFxuICAgIFwiRU4tZW5cIjogVmFsaWRhdGVFcnJvckVuZ2xpc2gsXG4gICAgXCJGUi1mclwiOiBWYWxpZGF0ZUVycm9yRnJlbmNoLFxuICAgIFwiSVQtaXRcIjogVmFsaWRhdGVFcnJvckl0YWxpYW4sXG4gICAgXCJQVC1wdFwiOiBWYWxpZGF0ZUVycm9yUG9ydHVndWVzZSxcbiAgICBcIlJVLXJ1XCI6IFZhbGlkYXRlRXJyb3JSdXNzaWFuLFxuICAgIFwiWkgtY25cIjogVmFsaWRhdGVFcnJvclNpbXBsaWZpZWRDaGluZXNlLFxuICAgIFwiWkgtaGtcIjogVmFsaWRhdGVFcnJvclRyYWRpdGlvbmFsQ2hpbmVzZSxcbn07XG4vKipcbiAqIFNlY3VyZSB0cmFuc2xhdGlvbiB0aHJvdWdoIGEgc2VsZWN0b3JcbiAqIEBwYXJhbSBsb2NhbCB0aGUgTG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIENvbXBvbmVudExvY2FsaXplciBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgdHJhbnNsYXRpb25cbiAqL1xudmFyIFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJTZWxlY3RvciA9IGZ1bmN0aW9uIChsb2NhbCkge1xuICAgIGlmICghbG9jYWwgfHwgIVtcIkVTLWVzXCIsIFwiRU4tZW5cIiwgXCJGUi1mclwiLCBcIklULWl0XCIsIFwiUFQtcHRcIiwgXCJSVS1ydVwiLCBcIlpILWNuXCIsIFwiWkgtaGtcIl0uaW5jbHVkZXMobG9jYWwpKSB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0ZUVycm9yTG9jYWxpemVyW1wiRU4tZW5cIl07XG4gICAgfVxuICAgIHJldHVybiBWYWxpZGF0ZUVycm9yTG9jYWxpemVyW2xvY2FsXTtcbn07XG5cbi8qKlxuICogUmVhZHMgYW4gaW1hZ2UgKG9yIG90aGVyIHR5cGUpIGZpbGUgYXMgZGF0YSBVUkwgaW4gYSBwcm9taXNlIHdheSxcbiAqIHNvIHlvdSBjYW4gdXNlIGF3YWl0LlxuICogSXQgd2lsbCByZXR1cm4gYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgVVJMIHJlcHJlc2VudGF0aW9uXG4gKiBAcGFyYW0gZmlsZSBGaWxlIG9yIEJsb2Igb2JqZWN0XG4gKiBAcmV0dXJucyBkYXRhIFVSTCBvZiB0aGUgZmlsZVxuICovXG52YXIgcmVhZEFzRGF0YVVSTCA9IGZ1bmN0aW9uIChmaWxlLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfMSA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfMS5vbnByb2dyZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MgPT09IG51bGwgfHwgb25Qcm9ncmVzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Qcm9ncmVzcygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8xLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVhZGVyXzEucmVzdWx0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMS5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG4vKipcbiAqIFJlYWRzIGEgZmlsZSBhcyBUZXh0IGluIGEgcHJvbWlzZSB3YXksIHNvIHlvdSBjYW4gdXNlIGF3YWl0LlxuICogSWYgb3RoZXIga2luZCBvZiBmaWxlIGlzIHNlbnQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGl0IGFueXdheVxuICogYW5kIHdpbGwgcmV0dXJuIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIFVSTCByZXByZXNlbnRhdGlvblxuICogQHBhcmFtIGZpbGUgRmlsZSBvciBCbG9iIG9iamVjdFxuICogQHBhcmFtIGVuY29kaW5nIFRoZSB0eXBlIG9mIGVuY29kaW5nIHN1Y2ggYXMgXCJiYXNlNjRcIlxuICogQHJldHVybnMgZGF0YSB0ZXh0IG9mIHRoZSBmaWxlXG4gKi9cbnZhciByZWFkQXNUZXh0ID0gZnVuY3Rpb24gKGZpbGUsIGVuY29kaW5nLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfMiA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfMi5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfMi5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8yLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzIub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMi5yZWFkQXNUZXh0KGZpbGUsIGVuY29kaW5nID8gZW5jb2RpbmcgOiBcImJhc2U2NFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSZWFkcyBhIGZpbGUgYW5kIHJldHVybiB0aGUgcmF3IGJpbmFyeSBkYXRhIGZyb20gdGhlIGZpbGUuXG4gKiBAcGFyYW0gZmlsZSBGaWxlIG9yIEJsb2Igb2JqZWN0XG4gKiBAcGFyYW0gZW5jb2RpbmcgVGhlIHR5cGUgb2YgZW5jb2Rpbmcgc3VjaCBhcyBcImJhc2U2NFwiXG4gKiBAcmV0dXJucyByYXcgYmluYXJ5IGRhdGEgb2YgdGhlIGZpbGVcbiAqL1xudmFyIHJlYWRBc0JpbmFyeVN0cmluZyA9IGZ1bmN0aW9uIChmaWxlLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfMyA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfMy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfMy5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl8zLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzMub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfMy5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbi8qKlxuICogUmVhZHMgYSBmaWxlIGFuZCByZXR1cm5zIGFuIEFycmF5QnVmZmVyIHJlcHJlc2VudGluZyB0aGUgZmlsZSdzIGRhdGFcbiAqIEBwYXJhbSBmaWxlIEZpbGUgb3IgYmxvYiBvYmplY3RcbiAqIEBwYXJhbSBlbmNvZGluZyBUaGUgdHlwZSBvZiBlbmNvZGluZyBzdWNoIGFzIFwiYmFzZTY0XCJcbiAqIEByZXR1cm5zIEFycmF5QnVmZmVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmaWxlXG4gKi9cbnZhciByZWFkQXNBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIChmaWxlLCBvblByb2dyZXNzLCBvbkVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZWFkZXJfNCA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXJfNC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXJfNC5yZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlcl80Lm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25Qcm9ncmVzcyA9PT0gbnVsbCB8fCBvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblByb2dyZXNzKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyXzQub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXJfNC5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFJlc2l6ZSBhbiBpbWFnZSByZXNvbHV0aW9uIGdpdmVuIG1heFdpZHRoIGFuZCBtYXhIZWlnaHRcbiAqXG4gKiBTaG91bGQgYmUgY2FsbGVkIHdpdGggYXdhaXRcbiAqIEBwYXJhbSBiYXNlNjRTdHIgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZSBmaWxlXG4gKiBAcGFyYW0gbWF4V2lkdGggdGhlIG1heCB3aWR0aCBvZiBoZSBpbWFnZVxuICogQHBhcmFtIG1heEhlaWdodCB0aGUgbWF4IGhlaWdodCBvZiBoZSBpbWFnZVxuICogQHJldHVybnMgdGhlIHJlc2l6ZWQgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gcmVzaXplSW1hZ2UoYmFzZTY0U3RyLCBtYXhXaWR0aCwgbWF4SGVpZ2h0KSB7XG4gICAgaWYgKG1heFdpZHRoID09PSB2b2lkIDApIHsgbWF4V2lkdGggPSAxMzU7IH1cbiAgICBpZiAobWF4SGVpZ2h0ID09PSB2b2lkIDApIHsgbWF4SGVpZ2h0ID0gMTIwOyB9XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBpbWdfMSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaW1nXzEuc3JjID0gYmFzZTY0U3RyO1xuICAgICAgICAgICAgaW1nXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgICAgICB2YXIgTUFYX1dJRFRIID0gbWF4V2lkdGg7XG4gICAgICAgICAgICAgICAgdmFyIE1BWF9IRUlHSFQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nXzEud2lkdGg7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IGltZ18xLmhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAobWF4V2lkdGggPiB3aWR0aCAmJiBtYXhIZWlnaHQgPiBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShiYXNlNjRTdHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBNQVhfV0lEVEgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAqPSBNQVhfV0lEVEggLyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gTUFYX1dJRFRIO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ID4gTUFYX0hFSUdIVCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKj0gTUFYX0hFSUdIVCAvIGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IE1BWF9IRUlHSFQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZ18xLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjYW52YXMudG9EYXRhVVJMKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBbiBlcnJvciBvY3VycmVkIHdoZW4gdHJ5aW5nIHRvIG1ha2UgYSB0aHVtbmFpbFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQW4gZXJyb3Igb2N1cnJlZCB3aGVuIHRyeWluZyB0byBtYWtlIGEgdGh1bW5haWxcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFJlc2l6ZSBhbiBpbWFnZSByZXNvbHV0aW9uIGdpdmVuIG1heFdpZHRoIGFuZCBtYXhIZWlnaHRcbiAqXG4gKiBTaG91bGQgYmUgY2FsbGVkIHdpdGggYXdhaXRcbiAqIEBwYXJhbSBiYXNlNjRTdHIgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZSBmaWxlXG4gKiBAcGFyYW0gbWF4V2lkdGggdGhlIG1heCB3aWR0aCBvZiBoZSBpbWFnZVxuICogQHBhcmFtIG1heEhlaWdodCB0aGUgbWF4IGhlaWdodCBvZiBoZSBpbWFnZVxuICogQHJldHVybnMgdGhlIHJlc2l6ZWQgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gZ2V0SW1hZ2VPcmllbnRhdGlvbihpbWFnZVNvdXJjZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJnZXRJbWFnZU9yaWVudGF0aW9uIGltYWdlU291cmNlXCIsIGltYWdlU291cmNlKTtcbiAgICAgICAgaWYgKCFpbWFnZVNvdXJjZSB8fCBpbWFnZVNvdXJjZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ2V0SW1hZ2VPcmllbnRhdGlvbiByZWplY3RlZFwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICByZWplY3QoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJnZXRJbWFnZU9yaWVudGF0aW9uIHRyeSBpbmlcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgdmFyIGltZ18xID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWdfMS5zcmMgPSBpbWFnZVNvdXJjZTtcbiAgICAgICAgICAgIGltZ18xLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ2V0SW1hZ2VPcmllbnRhdGlvbiBUaGVyZSB3YXMgYSBuZSBlcnJvciByZWFkaW5nXCIsIGV2KTtcbiAgICAgICAgICAgICAgICByZWplY3QoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW1nXzEub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IGltZ18xLndpZHRoO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBpbWdfMS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoXCJsYW5kc2NhcGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKFwicG9ydHJhaXRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihcIkFuIGVycm9yIG9jdXJyZWQgd2hlbiB0cnlpbmcgdG8gZ2V0IHRoZSBpbWFnZSBvcmllbnRhdGlvblwiKTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkFuIGVycm9yIG9jdXJyZWQgd2hlbiB0cnlpbmcgdG8gZ2V0IHRoZSBpbWFnZSBvcmllbnRhdGlvblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlamVjdChcImxhbmRzY2FwZVwiKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG52YXIgc2V2ZW56aXAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUxNy03MmE1MWExMi1lNDAzLTQ2NzUtYmZkNy0yMmMyM2FmZmE3MzAucG5nXCI7XG52YXIgYWFjID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MTgtNzAyNmQ0ZjEtZWExNi00ZWQwLTg5ZmQtMzdjMWFhOGFjM2VkLnBuZ1wiO1xudmFyIGFidyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTE5LTg2M2M2M2I0LTkxN2UtNDQ3MS05NGZmLTdlMTU2NTFjYzE0Yi5wbmdcIjtcbnZhciBhY2NkYiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTIwLTliYzZhYTNiLTUxYzktNGRhMi05ZWY3LTM0OTE2MmI4NmQwYi5wbmdcIjtcbnZhciBhdmkgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjUyMS1kYmQ2Y2YwZC1kNGQ3LTRiOTItYmIyNi0xN2U4YTUxYTkzODMucG5nXCI7XG52YXIgYXp3ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY1MjItMDcwZjQ4ZTgtNzhhOC00Mjk0LThkYmItYWFiODE1MjVlMTY0LnBuZ1wiO1xudmFyIGJtcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTk1LTkwYWI3ZjkwLWY4N2UtNDkwMC05NGQ5LWQwYjI2NzQ1ZGY0OC5wbmdcIjtcbnZhciBieiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NTk3LWUyODVhZDVjLTYxM2EtNDY3OS1hMjcwLTQ5M2U1YmU0ZmZkOS5wbmdcIjtcbnZhciBiejIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjU5OC02MjNjNDEwYS0wODRhLTQzOTUtYTQ0OC0yMTFiMmZmNjFjZmUucG5nXCI7XG52YXIgY2RhID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDAtOGI3MGEwMDctNTEyZC00MjUyLTljNjYtZWFiZDNkZGQ2NTczLnBuZ1wiO1xudmFyIGNzaCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjAxLWU2MmU1ZDFhLWQ4YTItNDQ3NS1hMTRmLTg1OTIyY2VjOTI3Mi5wbmdcIjtcbnZhciBjc3MgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwMi00Yzc3MjkzNC1mNjA4LTRmMDEtODQ1OS1jNDYyMmNlZThhZDUucG5nXCI7XG52YXIgY3N2ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDQtYjViMDE5ZmUtNTcyZS00NzdlLTkyYzItMzc2OWE0OGExMzA0LnBuZ1wiO1xudmFyIGRvY3ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYwNi03MTVjY2I2Ni00NzAyLTRmN2QtOWIwOS1hYzkzYmExN2I2NDMucG5nXCI7XG52YXIgZHJhd2lvID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MDgtYmNhZTlkNTctOGU1NC00ODhjLTkwYzQtNDk1MmFlNTMwYjVlLnBuZ1wiO1xudmFyIGVvdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjE4LTM5N2Q2YmQyLTlmZGEtNDNlZC1hMTM1LWNiNDAzODhjMzVhZi5wbmdcIjtcbnZhciBlcHViID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjAtMjU4NmJhNDAtYzU4My00NTg5LWIxYTQtOGJiNWIyNThiNDRkLnBuZ1wiO1xudmFyIGZyZWVhcmMgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyMS0zYjk1ZmI2NC0yNTMzLTRjY2MtYWJjZC1iZDJiZWJhNTcyZTkucG5nXCI7XG52YXIgZ2lmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2MjItYWY3MDVhMGMtMmIyNS00YmE3LThhYjYtYmQ2OWVjOTdmN2UyLnBuZ1wiO1xudmFyIGd6aXAgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyNC04OTE0MWE0Ni02NGU0LTRmYTAtYmY2OS01NGEwZWI0ZDQ4YzkucG5nXCI7XG52YXIgaHRtbCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjI1LTFiOGYyNjUyLTFkZTAtNDQ3NS04YzEyLTdkYTRhOTk3M2ZmYi5wbmdcIjtcbnZhciBpY2FsZW5kYXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjYyNi0zODY5OTcwNS0xZTZmLTRiY2EtOTg0Yi0wMzE2N2IyMzZmYWEucG5nXCI7XG52YXIgamF2YSA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjUwLWYxMTY2MjQ2LWIzNjEtNGMzMC1hMDRlLTk3ODFjNTU1ZDE0YS5wbmdcIjtcbnZhciBqYXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1MC1mMTE2NjI0Ni1iMzYxLTRjMzAtYTA0ZS05NzgxYzU1NWQxNGEucG5nXCI7XG52YXIgamF2YXNjcmlwdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjUyLTQ1NjI5NDJlLWFhZWEtNDY2Yy05NjhmLTM4MGZmZmFiZjNmOS5wbmdcIjtcbnZhciBqcGVnID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTMtMDQ4N2U3ZTItMWVlMy00OWUyLThjZmUtM2UyMGYxZjc0OTBhLnBuZ1wiO1xudmFyIGpzb24gPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1Ni02ZTk2YzgxNS1lNGUyLTRmZmQtOWQ3MS01N2U5Y2MyNDUwYmMucG5nXCI7XG52YXIganNvbmxkID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NTgtNWQyN2QzYzItMzk0Zi00M2ZiLWI1MTItOWI0MTRhMjU3ODc1LnBuZ1wiO1xudmFyIG1pZGkgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY1OS05OGYzZWY2ZS1iOWYzLTRiNmQtYjE4Zi00NjliNTMzNGJhMjcucG5nXCI7XG52YXIgbXAzID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjEtYTU0ODQ1NTMtMDZjNy00ZmZhLWE4ZjktOTZiNTdiMWIwMzQ0LnBuZ1wiO1xudmFyIG1wNCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjYyLTA1YWQxNTk3LWQ1ZTUtNGVmYS04MzNlLTI4NzZlOTY2YTc0NS5wbmdcIjtcbnZhciBtcGVnID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjMtOTBjNTg5NTUtZjdmYi00YmRiLWFjNTMtOTI2NjdkMTZkNGEzLnBuZ1wiO1xudmFyIG1wa2cgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2NC05YTc1MzBlNy02ZDc4LTRlZjMtYTE3Ni0yMGNmN2Y1N2I1NTUucG5nXCI7XG52YXIgb2N0ZXQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2Ni1hYjNjNTA1ZC1iMmMwLTQxNzctOWEwNi1hZWQ1ZDljMzllZTQucG5nXCI7XG52YXIgb2RwID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NjctNmM3ZGNiY2MtOGQ4My00MWEyLThlMGEtODViMDllMjc5MWFlLnBuZ1wiO1xudmFyIG9kcyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjY4LTlmMjQ2ZTkxLWNmMmUtNDljZi05NjE3LWUxZmJiNzFhYmJiYi5wbmdcIjtcbnZhciBvZHQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY2OS00NjExMzc2Mi04NGQxLTRiMzItOTQ0MS1iMDEzOGNlMTdhNWQucG5nXCI7XG52YXIgb2dhID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xNDU4MzUzNjQtMjA1NDUwOWQtMzQ0OC00ZDM0LTkyMWYtNzNkZDZlMjk3ZmM3LnBuZ1wiO1xudmFyIG9ndiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTQ1ODM1MzY3LTE5MTcyYmY4LWNkNWEtNGNiZS1iNTEyLWQwZGUxZDkxZjI2OS5wbmdcIjtcbnZhciBvZ3ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzE0NTgzNTM3My1hNTdlZjBmNS0zOTY4LTQ4M2ItOWY1NS02ZDY3ZTdmMWRjZWEucG5nXCI7XG52YXIgb3B1cyA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjcwLTBmOTZlNzcwLWNlZGMtNDYzNS1hNWY5LWNmOTc4OTRjMWQ3YS5wbmdcIjtcbnZhciBvdGYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3MS0wMmFkMzVlZi1lYzNhLTRhNjUtYWJkNS01YmY3OTRkZmNmN2IucG5nXCI7XG52YXIgcGRmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2NzItM2E4NTZmZGEtODIzZC00OTk3LWI4MDItYzdjNjQwZTZlZjQ0LnBuZ1wiO1xudmFyIHBocCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NjczLTBjNDQwOWFiLTc1NGUtNDYxOS04Y2ZhLTE3OWQwY2NmMWJkOS5wbmdcIjtcbnZhciBwbmcgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY3NC1mZGI1NmQwMi01ODQ1LTQ5YjctODQ2Mi02MzU3YmM5NjM0NjQucG5nXCI7XG52YXIgcHB0eCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njc1LWM4Nzk2NDVkLWFjYjQtNDFhNi1hYjNjLTRlNmMyMDQ4YmFkYi5wbmdcIjtcbnZhciBwc2QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY4NS00ZTMyN2M0Yy1hNDA5LTRiODMtYjM2YS04ZDg4OTM2YjMxNGIucG5nXCI7XG52YXIgcHl0aG9uID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2ODgtOGU4MmZhZTQtM2E5Yi00OWMwLWJmOTktNzcxODk1MjU1MTRjLnBuZ1wiO1xudmFyIHRhciA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2Njg5LWZlMWZlZjlmLWQyZGItNDU1Yi04ZjRiLTA5YWNkMDk1ZjU3MS5wbmdcIjtcbnZhciByYXIgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY4OS1mZTFmZWY5Zi1kMmRiLTQ1NWItOGY0Yi0wOWFjZDA5NWY1NzEucG5nXCI7XG52YXIgcmVhY3QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5MS1kNDcyNTc2Yi1lYzZhLTQzMzItYWNkMi1kZDZhMDBiNzI5NTIucG5nXCI7XG52YXIgcnRmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTMtOWQ0MzU3MWUtMGM4Ni00MzhmLWIyNDctZTJjYjQyZTE5ZTA2LnBuZ1wiO1xudmFyIHNhc3MgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5NC00ZTY2MWQ2YS0xMTE4LTQ0MWUtOGJjMy1jNTJmY2IyMTMzYjYucG5nXCI7XG52YXIgc2ggPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5Ny0xZDgyZDcyNC0zNWI2LTRmMDYtODQ3YS0zYzU5YTVkZWRhNmUucG5nXCI7XG52YXIgc3dmID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY2OTgtMTkzODQyMzAtZGJkNy00ZTA1LWJjNjktZWY0NTM3YjZhYWUzLnBuZ1wiO1xudmFyIHRleHQgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjY5OS01OTkzYTQ4Mi0wNGY0LTQ5MTUtYjEwNS05MDM3ZjUyN2NmNjEucG5nXCI7XG52YXIgdGlmZiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzAwLWMyMzQ2MWM4LTY4MTktNDZlMS1hZWNkLTBhMWY4ZDM1MDdiYi5wbmdcIjtcbnZhciB0dGYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwMS1jODA0NGMwOS04ZDk1LTRhZjEtOTQxMC02Njc2MTAwMWQ3ZGEucG5nXCI7XG52YXIgdHlwZXNjcmlwdCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzAyLTU5Mjk0MzM3LWVkOTktNDMwMi1iYWRkLTMxNmIyYzFmZjYyZi5wbmdcIjtcbnZhciB2c2QgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNC04ZmQ1MWU3Yy1hZmEyLTQ3YTMtYWIyZi1kMGJjZDBlY2FlOWYucG5nXCI7XG52YXIgdnVlID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDUtMzMyOTRkYTEtNWMwZi00OWY3LWI4OTAtZTQ4NTdjZWMwYTZkLnBuZ1wiO1xudmFyIHdhdiA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA2LTIyZjgwNWQwLTM5ZDQtNDk0Yi04MjRlLTQ3ZGM3NWQwNWViNy5wbmdcIjtcbnZhciB3ZWJtID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MDctZTYxYTg0ZGUtZDM5Ni00ZGJmLThkMWItMWQ2ZWUxOWUxYWM4LnBuZ1wiO1xudmFyIHdlYmEgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwNy1lNjFhODRkZS1kMzk2LTRkYmYtOGQxYi0xZDZlZTE5ZTFhYzgucG5nXCI7XG52YXIgd2VicCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzA4LTIxZDA5NmRkLTcxNDgtNDBhYS05N2YxLWNiYjA5OTMzOTc0MC5wbmdcIjtcbnZhciB3bWEgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcwOS04MTFkNGU5MC0zY2ZhLTQwNDQtYTk1Ni1hZWRhOWM2N2ZjOTIucG5nXCI7XG52YXIgd212ID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTAtYzU0NzljNmMtMDI0OS00NTQyLWFkYWQtNDhiMGVmNDBiNzc1LnBuZ1wiO1xudmFyIHdvZmYgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxMS0xNTI0YTNlNy0zZTMzLTQ4MjItYTM0Zi1mZjMyMzU0MDQwNDUucG5nXCI7XG52YXIgeGxzeCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzEyLTE3ZTJjNDkxLWY2ZTQtNDU4Ni1hZWY2LTA2YmNjNWY0YjBlNS5wbmdcIjtcbnZhciB4bWwgPSBcImh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzQzNjc4NzM2LzEzMjA4NjcxNS0yMDRiNWE4Yi05YzVhLTRiYWMtODI5NC05MjM3ZWJjMTYwODkucG5nXCI7XG52YXIgeHVsID0gXCJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS80MzY3ODczNi8xMzIwODY3MTYtNjQ1MTFkMjAtNThjYi00NWE4LTg1ZGYtZjRkOTQwOGI0NjlkLnBuZ1wiO1xudmFyIHppcCA9IFwiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNDM2Nzg3MzYvMTMyMDg2NzE4LWE4NDk5MzMzLTYyODItNDgyMC1hYTFmLTRkMTMzZWI1NDY0OC5wbmdcIjtcblxuLyoqXG4gKiBMb29rcyBmb3IgdGhlIGZpcnN0IGZpbGUgZXh0ZW5zaW9uXG4gKiBAcGFyYW0gZmlsZU5hbWUgZmlsZSBuYW1lXG4gKiBAcmV0dXJucyB0aGUgZmlsZSBuYW1lIGV4dGVuc2lvblxuICovXG52YXIgZ2V0RXh0ID0gZnVuY3Rpb24gKGZpbGVOYW1lKSB7XG4gICAgdmFyIHJlID0gLyg/OlxcLihbXi5dKykpPyQvO1xuICAgIHZhciByZXN1bHQgPSByZS5leGVjKGZpbGVOYW1lKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHRbMV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG59O1xuXG52YXIgREVGX0dFTl9NSU1FID0gXCJvY3RldFwiO1xuLyoqXG4gKlxuICogQHBhcmFtIHRhaWxNaW1lXG4gKiBAcmV0dXJuc1xuICovXG52YXIgYXVkaW9TZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcImFhY1wiOiByZXR1cm4gXCJhYWNcIjtcbiAgICAgICAgY2FzZSBcIm1pZGlcIjogcmV0dXJuIFwibWlkaVwiO1xuICAgICAgICBjYXNlIFwieC1taWRpXCI6IHJldHVybiBcIm1pZGlcIjtcbiAgICAgICAgY2FzZSBcIm1wZWdcIjogcmV0dXJuIFwibXBlZ1wiOyAvL21wM1xuICAgICAgICBjYXNlIFwib2dnXCI6IHJldHVybiBcIm9nYVwiO1xuICAgICAgICBjYXNlIFwib3B1c1wiOiByZXR1cm4gXCJvcHVzXCI7XG4gICAgICAgIGNhc2UgXCJ3YXZcIjogcmV0dXJuIFwid2F2XCI7XG4gICAgICAgIGNhc2UgXCJ3ZWJtXCI6IHJldHVybiBcIndlYm1cIjtcbiAgICAgICAgLy9jYXNlIFwiM2dwcFwiOiByZXR1cm4gXCJ0aHJlZWdwXCI7XG4gICAgICAgIC8vY2FzZSBcIjNncHAyXCI6IHJldHVybiBcInRocmVlZ3BcIjtcbiAgICAgICAgLy9jYXNlIFwibXAzXCI6IHJldHVybiBcIm1wM1wiO1xuICAgICAgICBjYXNlIFwid21hXCI6IHJldHVybiBcIndtYVwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG52YXIgdGV4dFNlbGVjdG9yID0gZnVuY3Rpb24gKHRhaWxNaW1lKSB7XG4gICAgc3dpdGNoICh0YWlsTWltZSkge1xuICAgICAgICBjYXNlIFwiY3NzXCI6IHJldHVybiBcImNzc1wiO1xuICAgICAgICBjYXNlIFwiY3N2XCI6IHJldHVybiBcImNzdlwiO1xuICAgICAgICBjYXNlIFwiaHRtbFwiOiByZXR1cm4gXCJodG1sXCI7XG4gICAgICAgIGNhc2UgXCJjYWxlbmRhclwiOiByZXR1cm4gXCJpY2FsZW5kYXJcIjtcbiAgICAgICAgY2FzZSBcImphdmFzY3JpcHRcIjogcmV0dXJuIFwiamF2YXNjcmlwdFwiO1xuICAgICAgICBjYXNlIFwieC1qYXZhc2NyaXB0XCI6IHJldHVybiBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgY2FzZSBcInBsYWluXCI6IHJldHVybiBcInRleHRcIjtcbiAgICAgICAgY2FzZSBcInhtbFwiOiByZXR1cm4gXCJ4bWxcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xudmFyIGltYWdlU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJibXBcIjogcmV0dXJuIFwiYm1wXCI7XG4gICAgICAgIGNhc2UgXCJnaWZcIjogcmV0dXJuIFwiZ2lmXCI7XG4gICAgICAgIC8vIGNhc2UgXCJ2bmQubWljcm9zb2Z0Lmljb25cIjogcmV0dXJuIFwiaWNvXCI7XG4gICAgICAgIC8vY2FzZSBcImljb1wiOiByZXR1cm4gXCJpY29cIjtcbiAgICAgICAgY2FzZSBcImpwZ1wiOiByZXR1cm4gXCJqcGVnXCI7XG4gICAgICAgIGNhc2UgXCJqcGVnXCI6IHJldHVybiBcImpwZWdcIjtcbiAgICAgICAgY2FzZSBcInBuZ1wiOiByZXR1cm4gXCJwbmdcIjtcbiAgICAgICAgLy9jYXNlIFwic3ZnK3htbFwiOiByZXR1cm4gXCJzdmdcIjtcbiAgICAgICAgLy9jYXNlIFwic3ZnXCI6IHJldHVybiBcInN2Z1wiO1xuICAgICAgICBjYXNlIFwidGlmZlwiOiByZXR1cm4gXCJ0aWZmXCI7XG4gICAgICAgIGNhc2UgXCJ3ZWJwXCI6IHJldHVybiBcIndlYnBcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xudmFyIGZvbnRTZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcIm90ZlwiOiByZXR1cm4gXCJvdGZcIjtcbiAgICAgICAgY2FzZSBcInR0ZlwiOiByZXR1cm4gXCJ0dGZcIjtcbiAgICAgICAgY2FzZSBcIndvZmZcIjogcmV0dXJuIFwid29mZlwiO1xuICAgICAgICBjYXNlIFwid29mZjJcIjogcmV0dXJuIFwid29mZlwiO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gREVGX0dFTl9NSU1FO1xuICAgIH1cbn07XG52YXIgdmlkZW9TZWxlY3RvciA9IGZ1bmN0aW9uICh0YWlsTWltZSkge1xuICAgIHN3aXRjaCAodGFpbE1pbWUpIHtcbiAgICAgICAgY2FzZSBcIngtbXN2aWRlb1wiOiByZXR1cm4gXCJhdmlcIjtcbiAgICAgICAgY2FzZSBcIm1zdmlkZW9cIjogcmV0dXJuIFwiYXZpXCI7XG4gICAgICAgIGNhc2UgXCJhdmlcIjogcmV0dXJuIFwiYXZpXCI7XG4gICAgICAgIGNhc2UgXCJtcDRcIjogcmV0dXJuIFwibXA0XCI7XG4gICAgICAgIGNhc2UgXCJtcGVnXCI6IHJldHVybiBcIm1wZWdcIjtcbiAgICAgICAgY2FzZSBcIm9nZ1wiOiByZXR1cm4gXCJvZ3ZcIjtcbiAgICAgICAgY2FzZSBcIm1wMnRcIjogcmV0dXJuIFwibXAydFwiO1xuICAgICAgICBjYXNlIFwid212XCI6IHJldHVybiBcIndtdlwiO1xuICAgICAgICBjYXNlIFwid2VibVwiOiByZXR1cm4gXCJ3ZWJtXCI7XG4gICAgICAgIC8vIGNhc2UgXCIzZ3BwXCI6IHJldHVybiBcInRocmVlZ3BcIjtcbiAgICAgICAgLy8gY2FzZSBcIjNncHAyXCI6IHJldHVybiBcInRocmVlZ3AyXCI7XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB0YWlsTWltZVxuICogQHJldHVybnNcbiAqL1xudmFyIGFwcGxpY2F0aW9uU2VsZWN0b3IgPSBmdW5jdGlvbiAodGFpbE1pbWUpIHtcbiAgICBzd2l0Y2ggKHRhaWxNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJ4LWFiaXdvcmRcIjogcmV0dXJuIFwiYWJ3XCI7XG4gICAgICAgIGNhc2UgXCJhYml3b3JkXCI6IHJldHVybiBcImFid1wiO1xuICAgICAgICBjYXNlIFwieC1mcmVlYXJjXCI6IHJldHVybiBcImFyY1wiO1xuICAgICAgICBjYXNlIFwiZnJlZWFyY1wiOiByZXR1cm4gXCJhcmNcIjtcbiAgICAgICAgY2FzZSBcInZuZC5hbWF6b24uZWJvb2tcIjogcmV0dXJuIFwiYXp3XCI7XG4gICAgICAgIGNhc2UgXCJvY3RldC1zdHJlYW1cIjogcmV0dXJuIFwib2N0ZXRcIjtcbiAgICAgICAgY2FzZSBcIngtYnppcFwiOiByZXR1cm4gXCJielwiO1xuICAgICAgICBjYXNlIFwieC1iemlwMlwiOiByZXR1cm4gXCJiejJcIjtcbiAgICAgICAgY2FzZSBcImJ6aXBcIjogcmV0dXJuIFwiYnpcIjtcbiAgICAgICAgY2FzZSBcImJ6aXAyXCI6IHJldHVybiBcImJ6MlwiO1xuICAgICAgICBjYXNlIFwieC1jZGZcIjogcmV0dXJuIFwiY2RhXCI7XG4gICAgICAgIGNhc2UgXCJtc2FjY2Vzc1wiOiByZXR1cm4gXCJhY2NkYlwiO1xuICAgICAgICBjYXNlIFwiY3NoXCI6IHJldHVybiBcImNzaFwiO1xuICAgICAgICBjYXNlIFwieC1jc2hcIjogcmV0dXJuIFwiY3NoXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQubXMtZm9udG9iamVjdFwiOiByZXR1cm4gXCJlb3RcIjtcbiAgICAgICAgY2FzZSBcImVwdWIremlwXCI6IHJldHVybiBcImVwdWJcIjtcbiAgICAgICAgY2FzZSBcImd6aXBcIjogcmV0dXJuIFwiZ3ppcFwiO1xuICAgICAgICBjYXNlIFwiamF2YS1hcmNoaXZlXCI6IHJldHVybiBcImphclwiO1xuICAgICAgICBjYXNlIFwieC1qYXZhc2NyaXB0XCI6IHJldHVybiBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgY2FzZSBcImpzb25cIjogcmV0dXJuIFwianNvblwiO1xuICAgICAgICBjYXNlIFwibGQranNvblwiOiByZXR1cm4gXCJqc29ubGRcIjtcbiAgICAgICAgY2FzZSBcInZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCI6IHJldHVybiBcIm1wa2dcIjtcbiAgICAgICAgY2FzZSBcIm9nZ1wiOiByZXR1cm4gXCJvZ3hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5yYXJcIjogcmV0dXJuIFwicmFyXCI7XG4gICAgICAgIGNhc2UgXCJydGZcIjogcmV0dXJuIFwicnRmXCI7XG4gICAgICAgIGNhc2UgXCJ4LXNoXCI6IHJldHVybiBcInNoXCI7XG4gICAgICAgIGNhc2UgXCJzaFwiOiByZXR1cm4gXCJzaFwiO1xuICAgICAgICBjYXNlIFwieC1zaG9ja3dhdmUtZmxhc2hcIjogcmV0dXJuIFwic3dmXCI7XG4gICAgICAgIGNhc2UgXCJ4LXRhclwiOiByZXR1cm4gXCJ0YXJcIjtcbiAgICAgICAgY2FzZSBcIngtaHR0cGQtcGhwXCI6IHJldHVybiBcInBocFwiO1xuICAgICAgICBjYXNlIFwidm5kLnZpc2lvXCI6IHJldHVybiBcInZzZFwiO1xuICAgICAgICBjYXNlIFwieGh0bWwreG1sXCI6IHJldHVybiBcInhodG1sXCI7XG4gICAgICAgIGNhc2UgXCJ4bWxcIjogcmV0dXJuIFwieG1sXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQubW96aWxsYS54dWwreG1sXCI6IHJldHVybiBcInh1bFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIjogcmV0dXJuIFwiZG9jeFwiO1xuICAgICAgICBjYXNlIFwibXN3b3JkXCI6IHJldHVybiBcImRvY3hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI6IHJldHVybiBcInhsc3hcIjtcbiAgICAgICAgY2FzZSBcInZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjogcmV0dXJuIFwicHB0eFwiO1xuICAgICAgICBjYXNlIFwidm5kLm1zLXBvd2VycG9pbnRcIjogcmV0dXJuIFwicHB0eFwiO1xuICAgICAgICBjYXNlIFwidm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIjogcmV0dXJuIFwib2RwXCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRcIjogcmV0dXJuIFwib2R0XCI7XG4gICAgICAgIGNhc2UgXCJ2bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI6IHJldHVybiBcIm9kc1wiO1xuICAgICAgICBjYXNlIFwiemlwXCI6IHJldHVybiBcInppcFwiO1xuICAgICAgICBjYXNlIFwieC16aXAtY29tcHJlc3NlZFwiOiByZXR1cm4gXCJ6aXBcIjtcbiAgICAgICAgY2FzZSBcInBkZlwiOiByZXR1cm4gXCJwZGZcIjtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xuLyoqXG4gKiBTZWxlY3RzIHRvIHdpY2ggbWltZSB0eXBlIHRoZSBtaW1lIHR5cGUgZ2l2ZW4gYmVsb25ncyB0b1xuICogQHBhcmFtIG1pbWVUeXBlIG1pbWUgdHlwZSB0byBiZSBzZWFyY2hlZFxuICogQHJldHVybnMgdGhlIGdlbmVyaWMgdHlwZSxcbmlmIG5vdCBmb3VuZCBpdCByZXR1cm4gXCJvY3RldFwiIHRoYXQgbWVhbnMgZ2VuZXJpYyBiaW5hcnkgZmlsZVxuICovXG52YXIgbWltZVNlbGVjdG9yID0gZnVuY3Rpb24gKG1pbWVUeXBlKSB7XG4gICAgLy8gbGV0IGdlbmVyaWNNaW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFtaW1lVHlwZSB8fCAhbWltZVR5cGUuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgIHJldHVybiBERUZfR0VOX01JTUU7XG4gICAgfVxuICAgIHZhciBoZWFkZXJNaW1lID0gbWltZVR5cGUuc3BsaXQoXCIvXCIpWzBdO1xuICAgIHZhciB0YWlsTWltZSA9IG1pbWVUeXBlLnNwbGl0KFwiL1wiKVsxXTtcbiAgICAvKipcbiAgICAgKiBFdmVyeSBtaW1ldHlwZSB0aGF0XG4gICAgICogc3RhcnRzIHdpdGg6IFwiYXBwbGljYXRpb24vLi4uLlwiXG4gICAgICovXG4gICAgc3dpdGNoIChoZWFkZXJNaW1lKSB7XG4gICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvblwiOiByZXR1cm4gYXBwbGljYXRpb25TZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJhdWRpb1wiOiByZXR1cm4gYXVkaW9TZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJ2aWRlb1wiOiByZXR1cm4gdmlkZW9TZWxlY3Rvcih0YWlsTWltZSk7XG4gICAgICAgIGNhc2UgXCJ0ZXh0XCI6IHJldHVybiB0ZXh0U2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwiaW1hZ2VcIjogcmV0dXJuIGltYWdlU2VsZWN0b3IodGFpbE1pbWUpO1xuICAgICAgICBjYXNlIFwiZm9udFwiOiByZXR1cm4gZm9udFNlbGVjdG9yKHRhaWxNaW1lKTtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIERFRl9HRU5fTUlNRTtcbiAgICB9XG59O1xuLyoqXG4gKiBTZWxlY3RzIHRvIHdpY2ggbWFwcGVkIGV4dGVuc2lvblxuICogdGhlIGdpdmVuIGV4ZW5zaW9uIGJlbG9uZ3MgdG9cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uXG4gKiBAcmV0dXJuc1xuICovXG52YXIgZXh0ZW5zaW9uU2VsZWN0b3IgPSBmdW5jdGlvbiAoZXh0ZW5zaW9uKSB7XG4gICAgdmFyIGdlbmVyaWNNaW1lID0gXCJvY3RldFwiO1xuICAgIGlmIChleHRlbnNpb24gJiYgZXh0ZW5zaW9uICE9PSBcIlwiKSB7XG4gICAgICAgIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJ6aXBcIikgfHwgZXh0ZW5zaW9uLmluY2x1ZGVzKFwicmFyXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiemlwXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uLmluY2x1ZGVzKFwiZG9jXCIpKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiZG9jeFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbi5pbmNsdWRlcyhcInhsc1wiKSkge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInhsc3hcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJkcmF3aW9cIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJkcmF3aW9cIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJwc2RcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJwc2RcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24uaW5jbHVkZXMoXCJjc3ZcIikpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJjc3ZcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwianN4XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJyZWFjdFwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJweVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwicHl0aG9uXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInZ1ZVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwidnVlXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcImphdmFcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImphdmFcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwidHNcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInR5cGVzY3JpcHRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwic2Fzc1wiIHx8IGV4dGVuc2lvbiA9PT0gXCJzY3NzXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJzYXNzXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdlbmVyaWNNaW1lO1xufTtcbi8qKlxuICogQ2hhY2sgZm9yIGV4dGVudGlvbiB3aGV0aGVyIHRoZSBmaWxlIGlzIGNvZGUgb3Mgbm90XG4gKiBAcGFyYW0gZXh0ZW5zaW9uXG4gKiBAcmV0dXJuc1xuICovXG52YXIgY2hlY2tJc0NvZGUgPSBmdW5jdGlvbiAoZXh0ZW5zaW9uKSB7XG4gICAgdmFyIGdlbmVyaWNNaW1lID0gXCJ0ZXh0XCI7XG4gICAgaWYgKGV4dGVuc2lvbiAmJiBleHRlbnNpb24gIT09IFwiXCIpIHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbiA9PT0gXCJqc3hcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInJlYWN0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uID09PSBcInB5XCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJweXRob25cIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwidnVlXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ2dWVcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwiamF2YVwiKSB7XG4gICAgICAgICAgICBnZW5lcmljTWltZSA9IFwiamF2YVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbiA9PT0gXCJ0c1wiIHx8IGV4dGVuc2lvbiA9PT0gXCJ0c3hcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcInR5cGVzY3JpcHRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwianNcIikge1xuICAgICAgICAgICAgZ2VuZXJpY01pbWUgPSBcImphdmFzY3JpcHRcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwieG1sXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJ4bWxcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHRlbnNpb24gPT09IFwicGhwXCIpIHtcbiAgICAgICAgICAgIGdlbmVyaWNNaW1lID0gXCJwaHBcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ2VuZXJpY01pbWU7XG59O1xuLyoqXG4gKiBMb29rcyBmb3IgYSBzdWl0YWJsZSBmaWxlIGljb25cbiAqIElmIG5vdCBmb3VuZCwgcmV0dXJucyBvY3RldC1zdHJlYW0gdXJsXG4gKiBAcGFyYW0gcHJvcHMgbWltZSBhbmQgZXh0ZW5zaW9uIGZyb20gZmlsZSB0byBzZWFyY2hcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgZmlsZSBpY29cbiAqL1xudmFyIGdldFVSTEZpbGVJY28gPSBmdW5jdGlvbiAoZmlsZSwgY3VzdG9tSWNvbnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gXCJmYWxsQmFja1wiO1xuICAgIC8vaWYgbm90IGZpbGUsIHJldHVybiBvY3RldFxuICAgIGlmICghZmlsZSkge1xuICAgICAgICByZXN1bHQgPSBERUZfR0VOX01JTUU7XG4gICAgICAgIGlmIChjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnMuZmFsbEJhY2spXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29ucy5mYWxsQmFjaywgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtaW1lU2VsZWN0b3IoZmlsZS50eXBlKTtcbiAgICB9XG4gICAgLy9JZiBwbGFpbiB0ZXh0XG4gICAgdmFyIGV4dGVudGlvbiA9IGdldEV4dChmaWxlLm5hbWUpO1xuICAgIGlmIChyZXN1bHQgPT09IFwidGV4dFwiKSB7XG4gICAgICAgIHJlc3VsdCA9IGNoZWNrSXNDb2RlKGV4dGVudGlvbik7XG4gICAgfVxuICAgIC8vSWYgb2N0ZXQgc3RyZWFtIHJlc3VsdCwgc2Vjb25kIGNoYW5jZTogZmlsZSBleHRlbnRpb25cbiAgICBpZiAocmVzdWx0ID09PSBERUZfR0VOX01JTUUpIHtcbiAgICAgICAgcmVzdWx0ID0gZXh0ZW5zaW9uU2VsZWN0b3IoZXh0ZW50aW9uKTtcbiAgICB9XG4gICAgdmFyIGN1c3RvbVVybCA9IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29uc1tyZXN1bHRdO1xuICAgIGlmIChjdXN0b21VcmwgIT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHsgdXJsOiBjdXN0b21VcmwsIG1pbWVSZXN1bWU6IHJlc3VsdCB9O1xuICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG59O1xuLyoqXG4gKiBMb29rcyBmb3IgYSBzdWl0YWJsZSBmaWxlIGljb25cbiAqIEBwYXJhbSBwcm9wcyBtaW1lIGFuZCBleHRlbnNpb24gZnJvbSBmaWxlIHRvIHNlYXJjaFxuICogQHJldHVybnMgdGhlIHJlc3VsdCBmaWxlIGljbywgaWYgbm90IGZvdW5kLCB0dXJucyBvY3RldC1zdHJlYW0gdXJsXG4gKi9cbnZhciBnZXRVUkxGaWxlSWNvRnJvbU5hbWVBbmRUeXBlID0gZnVuY3Rpb24gKG5hbWUsIHR5cGUsIGN1c3RvbUljb25zKSB7XG4gICAgdmFyIHJlc3VsdCA9IFwib2N0ZXRcIjtcbiAgICAvL2lmIG5vdCBuYW0gYW5kIHR5cGUsIHJldHVybiBvY3RldFxuICAgIGlmICghbmFtZSkge1xuICAgICAgICByZXN1bHQgPSBERUZfR0VOX01JTUU7XG4gICAgICAgIGlmIChjdXN0b21JY29ucyA9PT0gbnVsbCB8fCBjdXN0b21JY29ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VzdG9tSWNvbnMuZmFsbEJhY2spXG4gICAgICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbUljb25zID09PSBudWxsIHx8IGN1c3RvbUljb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXN0b21JY29ucy5mYWxsQmFjaywgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgICAgIHJldHVybiB7IHVybDogbWltZVVybExpc3RbcmVzdWx0XSwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBtaW1lU2VsZWN0b3IodHlwZSk7XG4gICAgfVxuICAgIC8vSWYgcGxhaW4gdGV4dFxuICAgIHZhciBleHRlbnRpb24gPSBnZXRFeHQobmFtZSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgcmVzdWx0ID0gY2hlY2tJc0NvZGUoZXh0ZW50aW9uKTtcbiAgICB9XG4gICAgLy9JZiBvY3RldCBzdHJlYW0gcmVzdWx0LCBzZWNvbmQgY2hhbmNlOiBmaWxlIGV4dGVudGlvblxuICAgIGlmIChyZXN1bHQgPT09IERFRl9HRU5fTUlNRSkge1xuICAgICAgICByZXN1bHQgPSBleHRlbnNpb25TZWxlY3RvcihleHRlbnRpb24pO1xuICAgIH1cbiAgICB2YXIgY3VzdG9tVXJsID0gY3VzdG9tSWNvbnMgPT09IG51bGwgfHwgY3VzdG9tSWNvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN1c3RvbUljb25zW3Jlc3VsdF07XG4gICAgaWYgKGN1c3RvbVVybCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4geyB1cmw6IGN1c3RvbVVybCwgbWltZVJlc3VtZTogcmVzdWx0IH07XG4gICAgcmV0dXJuIHsgdXJsOiBtaW1lVXJsTGlzdFtyZXN1bHRdLCBtaW1lUmVzdW1lOiByZXN1bHQgfTtcbn07XG52YXIgbWltZVVybExpc3QgPSB7XG4gICAgYWFjOiBhYWMsXG4gICAgYWNjZGI6IGFjY2RiLFxuICAgIGFidzogYWJ3LFxuICAgIGFyYzogZnJlZWFyYyxcbiAgICBhdmk6IGF2aSxcbiAgICBhenc6IGF6dyxcbiAgICBvY3RldDogb2N0ZXQsXG4gICAgYm1wOiBibXAsXG4gICAgYno6IGJ6LFxuICAgIGJ6MjogYnoyLFxuICAgIGNkYTogY2RhLFxuICAgIGNzaDogY3NoLFxuICAgIGNzczogY3NzLFxuICAgIGNzdjogY3N2LFxuICAgIGRvY3g6IGRvY3gsXG4gICAgZHJhd2lvOiBkcmF3aW8sXG4gICAgZW90OiBlb3QsXG4gICAgZXB1YjogZXB1YixcbiAgICBnemlwOiBnemlwLFxuICAgIGdpZjogZ2lmLFxuICAgIGh0bWw6IGh0bWwsXG4gICAgLy9pY286IGljbyxcbiAgICBpY2FsZW5kYXI6IGljYWxlbmRhcixcbiAgICBqYXI6IGphcixcbiAgICBqcGVnOiBqcGVnLFxuICAgIGphdmFzY3JpcHQ6IGphdmFzY3JpcHQsXG4gICAganNvbjoganNvbixcbiAgICBqc29ubGQ6IGpzb25sZCxcbiAgICBtaWRpOiBtaWRpLFxuICAgIC8vICBqczoganMsXG4gICAgbXAzOiBtcDMsXG4gICAgbXA0OiBtcDQsXG4gICAgbXBlZzogbXBlZyxcbiAgICBtcGtnOiBtcGtnLFxuICAgIG1wMnQ6IG9jdGV0LFxuICAgIG9kcDogb2RwLFxuICAgIG9kczogb2RzLFxuICAgIG9kdDogb2R0LFxuICAgIG9nYTogb2dhLFxuICAgIG9ndjogb2d2LFxuICAgIG9neDogb2d4LFxuICAgIG9wdXM6IG9wdXMsXG4gICAgb3RmOiBvdGYsXG4gICAgcG5nOiBwbmcsXG4gICAgcGRmOiBwZGYsXG4gICAgcGhwOiBwaHAsXG4gICAgcHB0eDogcHB0eCxcbiAgICBwc2Q6IHBzZCxcbiAgICByYXI6IHJhcixcbiAgICBydGY6IHJ0ZixcbiAgICBzYXNzOiBzYXNzLFxuICAgIHNoOiBzaCxcbiAgICAvL3N2Zzogc3ZnLFxuICAgIHN3Zjogc3dmLFxuICAgIHRhcjogdGFyLFxuICAgIHRpZmY6IHRpZmYsXG4gICAgdHRmOiB0dGYsXG4gICAgLy90czogdHMsXG4gICAgdHlwZXNjcmlwdDogdHlwZXNjcmlwdCxcbiAgICB0ZXh0OiB0ZXh0LFxuICAgIHZzZDogdnNkLFxuICAgIHdhdjogd2F2LFxuICAgIHdlYmE6IHdlYmEsXG4gICAgd2VibTogd2VibSxcbiAgICB3ZWJwOiB3ZWJwLFxuICAgIHdvZmY6IHdvZmYsXG4gICAgd21hOiB3bWEsXG4gICAgd212OiB3bXYsXG4gICAgeGh0bWw6IGh0bWwsXG4gICAgeGxzeDogeGxzeCxcbiAgICB4bWw6IHhtbCxcbiAgICB4dWw6IHh1bCxcbiAgICB6aXA6IHppcCxcbiAgICAvLyB0aHJlZWdwOiB0aHJlZWdwLFxuICAgIHNldmVuemlwOiBzZXZlbnppcCxcbiAgICBweXRob246IHB5dGhvbixcbiAgICBqYXZhOiBqYXZhLFxuICAgIHJlYWN0OiByZWFjdCxcbiAgICB2dWU6IHZ1ZSxcbiAgICBmYWxsQmFjazogb2N0ZXQsXG59O1xuXG4vKipcbiAqIEEgY2xhc3MgZGVmaW5pdGlvbiBmb3IgRXh0RmlsZS5cbiAqIFRoaXMgY2xhc3MgaGFzIHRoZSBwdXJwb3NlIHRvIGFsbG93IHRoZSBjcmVhdGlvbiBvZiBpbnN0YW5jZXNcbiAqIG9mIGFuIEV4dEZpbGUgZm9yIHBlcmZvcm1pbmcgY29tcGxleCBvcGVyYXRpb25zIHRoYXQgY2Fubm90IGJlXG4gKiBhY2NvbXBsaXNoZWQganVzdCBieSB1c2luZyB0aGUgRXh0RmlsZSB0eXBlLlxuICogRm9yIGluc3RhbmNlLCBpdCBjYW4gaGVscCBpbiBjaGFuZ2luZyB0aGUgdmFsdWUgb2Ygc29tZSBhdHRyaWJ1dGVzXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHNjb3BlcyB0aGFua3MgdG8gbWVtb3J5IHJlZmVyZW5jZS5cbiAqL1xudmFyIEV4dEZpbGVJbnN0YW5jZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFeHRGaWxlSW5zdGFuY2UoZXh0RmlsZSkge1xuICAgICAgICB2YXIgaWQgPSBleHRGaWxlLmlkLCBmaWxlID0gZXh0RmlsZS5maWxlLCBuYW1lID0gZXh0RmlsZS5uYW1lLCBzaXplID0gZXh0RmlsZS5zaXplLCB0eXBlID0gZXh0RmlsZS50eXBlLCBpbWFnZVVybCA9IGV4dEZpbGUuaW1hZ2VVcmwsIHZhbGlkID0gZXh0RmlsZS52YWxpZCwgZXJyb3JzID0gZXh0RmlsZS5lcnJvcnMsIHVwbG9hZE1lc3NhZ2UgPSBleHRGaWxlLnVwbG9hZE1lc3NhZ2UsIHVwbG9hZFN0YXR1cyA9IGV4dEZpbGUudXBsb2FkU3RhdHVzLCBwcm9ncmVzcyA9IGV4dEZpbGUucHJvZ3Jlc3MsIHhociA9IGV4dEZpbGUueGhyLCBleHRyYURhdGEgPSBleHRGaWxlLmV4dHJhRGF0YSwgZXh0cmFVcGxvYWREYXRhID0gZXh0RmlsZS5leHRyYVVwbG9hZERhdGEsIHNlcnZlclJlc3BvbnNlID0gZXh0RmlsZS5zZXJ2ZXJSZXNwb25zZSwgZG93bmxvYWRVcmwgPSBleHRGaWxlLmRvd25sb2FkVXJsLCB2aWRlb1VybCA9IGV4dEZpbGUudmlkZW9Vcmw7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5pbWFnZVVybCA9IGltYWdlVXJsO1xuICAgICAgICB0aGlzLnZhbGlkID0gdmFsaWQ7XG4gICAgICAgIHRoaXMuZXJyb3JzID0gZXJyb3JzO1xuICAgICAgICB0aGlzLnVwbG9hZFN0YXR1cyA9IHVwbG9hZFN0YXR1cztcbiAgICAgICAgdGhpcy51cGxvYWRNZXNzYWdlID0gdXBsb2FkTWVzc2FnZTtcbiAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICB0aGlzLnhociA9IHhocjtcbiAgICAgICAgdGhpcy5leHRyYURhdGEgPSBleHRyYURhdGE7XG4gICAgICAgIHRoaXMuZXh0cmFVcGxvYWREYXRhID0gZXh0cmFVcGxvYWREYXRhO1xuICAgICAgICB0aGlzLnNlcnZlclJlc3BvbnNlID0gc2VydmVyUmVzcG9uc2U7XG4gICAgICAgIHRoaXMuZG93bmxvYWRVcmwgPSBkb3dubG9hZFVybDtcbiAgICAgICAgdGhpcy52aWRlb1VybCA9IHZpZGVvVXJsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBtZXRob2QgdW5kZXIgY29uc3RydWN0aW9uXG4gICAgICovXG4gICAgLyogIHByaXZhdGUgc3RhdGljIGthbXVpRmlsZSgpIHtcbiBcbiAgICAgfVxuICAqL1xuICAgIC8qKlxuICAgICAqIENvcGllcyBhbGwgbm9uIHVuZGVmaW5lZCBhdHRyaWJ1dGVzIGZyb20gRXh0RmlsZUluc3RhbmNlIHRvIGEgbmV3IEV4dEZpbGUgb2JqZWN0XG4gICAgICogQHBhcmFtIGV4dEZpbGVJbnN0YW5jZSB0aGUgaW5zdGFuY2Ugb2YgRXh0RmlsZVxuICAgICAqIEByZXR1cm5zIGFuIEV4dEZpbGUgb2JqZWN0XG4gICAgICovXG4gICAgRXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImJlZm9yZSB0b0V4dEZpbGUoKVwiLCBleHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICB2YXIgZXh0RmlsZUNsb25lID0ge307IC8vIHRoZSBuZXcgZW1wdHkgb2JqZWN0XG4gICAgICAgIHZhciBleHRGaWxlSW5zdGFuY2VLZXlzID0gT2JqZWN0LmtleXMoZXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgdmFyIGV4dEZpbGVJbnN0YW5jZVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoZXh0RmlsZUluc3RhbmNlKTtcbiAgICAgICAgLy8gbGV0J3MgY29weSBhbGwgdXNlciBwcm9wZXJ0aWVzIGludG8gaXRcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRGaWxlSW5zdGFuY2VWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VmFsdWUgPSBleHRGaWxlSW5zdGFuY2VWYWx1ZXNbaV07XG4gICAgICAgICAgICB2YXIgY3VycktleSA9IGV4dEZpbGVJbnN0YW5jZUtleXNbaV07XG4gICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBleHRGaWxlQ2xvbmVbY3VycktleV0gPSBjdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImFmdGVyIHRvRXh0RmlsZSgpXCIsIGV4dEZpbGVDbG9uZSk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJjdXJyZW50IGV4dEZpbGVDbG9uZSBrZXlzXCIsT2JqZWN0LmtleXMoIGV4dEZpbGVDbG9uZSkubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGV4dEZpbGVDbG9uZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvcGllcyBhbGwgbm9uIHVuZGVmaW5lZCBhdHRyaWJ1dGVzIGZyb20gRXh0RmlsZUluc3RhbmNlIHRvIGEgbmV3IEV4dEZpbGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIGFuIEV4dEZpbGUgb2JqZWN0XG4gICAgICovXG4gICAgRXh0RmlsZUluc3RhbmNlLnByb3RvdHlwZS50b0V4dEZpbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBFeHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIEV4dEZpbGVJbnN0YW5jZTtcbn0oKSk7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG5cclxudmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cblxudmFyIEV4dEZpbGVNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV4dEZpbGVNYW5hZ2VyKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmNyZWFzZXMgdGhlIGlkIGNvdW50ZXIgYW5kIHJldHVybnMgdGhlIG5leHQgaWQgYXZhaWxhYmxlLlxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IGludGVnZXIgaWQgYXZhaWxhYmxlXG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBFeHRGaWxlTWFuYWdlci5uZXh0SWQrKztcbiAgICAgICAgcmV0dXJuIEV4dEZpbGVNYW5hZ2VyLm5leHRJZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYSBkdWkgZmlsZSBsaXN0IGdpdmVuIGFuIGlkXG4gICAgICogQHBhcmFtIGlkIGlkIG9mIHRoZSBmaWxlTGlzdFxuICAgICAqIEBwYXJhbSBleHRGaWxlcyBsaXN0IG9mIER1aUZpbGVzIGZvcmluaXRpYWxpemluZyB0aGUgYXJyYXlcbiAgICAgKiBAcmV0dXJucyB0aGUgaWQgb2YgdGhlIGZpbGVMaXN0XG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3QgPSBmdW5jdGlvbiAoaWQsIGV4dEZpbGVzSW5zdGFuY2VzKSB7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW2lkXSA9IF9fc3ByZWFkQXJyYXkoW10sIGV4dEZpbGVzSW5zdGFuY2VzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IElEXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgSWQgYXNvY2lhdGVkIHdpdGggYSBEdWlGSWxlIGxpc3RcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5jcmVhdGVGaWxlTGlzdE1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5leHRJZCA9IEV4dEZpbGVNYW5hZ2VyLmdldE5leHRJZCgpO1xuICAgICAgICBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbbmV4dElkXSA9IFtdO1xuICAgICAgICByZXR1cm4gbmV4dElkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBhIGxpc3QgbWFwXG4gICAgICogQHJldHVybnMgdGhlIG5leHQgSWQgYXNvY2lhdGVkIHdpdGggYSBEdWlGSWxlIGxpc3RcbiAgICAgKi9cbiAgICBFeHRGaWxlTWFuYWdlci5yZW1vdmVGaWxlTGlzdE1hcCA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuZmlsZUxpc3RzW2lkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIG9uIHJlbW92ZVwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgZHJvcHpvbmVcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEV4dEZpbGVNYW5hZ2VyLmZpbGVMaXN0c1tpZF07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3Igb24gZ2V0RXh0RmlsZUluc3RhbmNlTGlzdFwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzKHJlcGxhY2VzKSB0aGUgZXh0RmlsZSBsaXN0IG9uIHByZXBhcmluZyBzdGFnZSBhbmQgcmV0dXJucyB0aGUgbmV3IGFycmF5LlxuICAgICAqIFJlbW92ZXMgdGhlIG5vbiB2YWxpZCBmaWxlcyBpZiBjbGVhbk9uVXBsb2FkIGlzIHRydWUgYW5kIHZhbGlkYXRlRmlsZXMgaXMgYWxzbyB0cnVlXG4gICAgICogVGhlbiBzZXRzIG9uIHByZXBhcmluZyBzdGFnZSBhbGwgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgY3JlaXRlcmlhOlxuICAgICAqIElmIHRoZXVwbG9hZFN0YXR1cyBpcyBkaWZlcmVudCB0aGFuIFwic3VjZXNzXCIgQU5EXG4gICAgICogdGhlbiwgdXBkYXRlIHRoZSBmaWxlcyBvbiBwcmVwYXJpbmcgc3RhZ2UuIE90aGVyd2lzZSBrZWVwIHRoZSBleHRGaWxlIHByb3BzLlxuICAgICAqIEZpbmFsbHksIHVwZGF0ZXMgdGhlIEV4dEZpbGVJbnN0YW5jZSBsaXN0IG9uIEV4dEZpbGVNYW5hZ2VyLlxuICAgICAqIEBwYXJhbSBkcm9wem9uZUlkIHRoZSBpZCB0byBhY2Nlc3MgdGhlIHJpZ2h0IGxpc3RcbiAgICAgKiBAcGFyYW0gbG9jYWxGaWxlcyB0aGUgbGlzdCBvZiBleHRGaWxlc1xuICAgICAqIEBwYXJhbSB2YWxpZGF0ZUZpbGVzIGZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhhdCB2YWxpZGF0aW9uIGlzIGFjdGl2ZSBvciBvwr9ub3RcbiAgICAgKiBAcGFyYW0gY2xlYW5PblVwbG9hZCBmbGFnIHRvIGRldGVybWluZSB3aHRoZXIgdG8gY2xlbmEgdGhlIGxpc3Qgb29mIG5vbiB2YWxpZCBmaWxlcyBvciBub3RcbiAgICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgRXh0RmlsZUluc3RhbmNlXG4gICAgICovXG4gICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlcywgY2xlYW5PblVwbG9hZCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgYmVmb3JlIGlmXCIsIGRyb3B6b25lSWQsIGxvY2FsRmlsZXMsIGNsZWFuT25VcGxvYWQpO1xuICAgICAgICBpZiAoISh0eXBlb2YgZHJvcHpvbmVJZCA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZHJvcHpvbmVJZCA9PT0gXCJzdHJpbmdcIikpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgYmVmb3JlIHRyeVwiLCBsb2NhbEZpbGVzLCBjbGVhbk9uVXBsb2FkKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXN1bHRFeHRMaXN0ID0gW107XG4gICAgICAgICAgICAvL2luaXRpYWxpemVzIHRoZSBleHRGaWxlTEluc3RhbmNlIGxpc3RcbiAgICAgICAgICAgIHZhciB0ZW1Mb2NhbEZpbGVzID0gX19zcHJlYWRBcnJheShbXSwgbG9jYWxGaWxlcywgdHJ1ZSk7XG4gICAgICAgICAgICAvL3JlbW92ZSBub24gdmFsaWRzIGlmIGNsZWFuT25VcGxvYWQgaXMgdHJ1ZSBhbmQgdmFsaWRhdGVGaWxlcyBpcyBhbHNvIHRydWVcbiAgICAgICAgICAgIGlmIChjbGVhbk9uVXBsb2FkICYmIHZhbGlkYXRlRmlsZXMpIHtcbiAgICAgICAgICAgICAgICAvLyBjbGVhbiBvbiBVcGxvYWQgaXMgdHJ1ZSwgc28gbm9uIHZhbGlkIGZpbGVzIG11c3QgYmUgcmVtb3ZlZFxuICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXMgPSB0ZW1Mb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZXh0RmlsZSkgeyByZXR1cm4gZXh0RmlsZS52YWxpZDsgfSk7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInRlbUxvY2FsRmlsZXMgZmlsdGVyXCIsIHRlbUxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIGFmdGVyIHJlbW92ZSBub24gdmFsaWRzXCIsIHRlbUxvY2FsRmlsZXMpO1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXMpIHtcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0aW9uIGZsYWcgd2FzIHNldCB0byB0cnVlLCBzbyBvbmx5IHZhbGlkPXRydWUgZmlsZXMgd2lsbCBiZSBzZXQgdG8gXCJwcmVwYXJpbmdcIlxuICAgICAgICAgICAgICAgIC8vc28sIG9ubHkgdmFsaWQgZmlsZXMgd2FzIGtlcHQgaW4gdGhlIHRlbUxvY2FsZmlsZXMgYXJyYXlcbiAgICAgICAgICAgICAgICAvL25vdyBzZXQgdGhlIHByZXBhcmluZyBzdGF0ZSBvbmx5IGZvciBmaWxlcyB3aXRoIHVwbG9hZFN0YXR1cyAhPT0gXCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICB0ZW1Mb2NhbEZpbGVzID1cbiAgICAgICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dEZpbGUudXBsb2FkU3RhdHVzICE9PSBcInN1Y2Nlc3NcIiAmJiBleHRGaWxlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwicHJlcGFyaW5nXCIgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIGV4dEZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGFsbCBmaWxlcyB3aWxsIGJlIHNldCB0byBcInByZXBhcmluZ1wiIHdoZXRoZXIgdGhlIHZhbGlkIHZhbHVlXG4gICAgICAgICAgICAgICAgLy8gZXhjZXB0IHRob3NlIGZpbGVzIHdpdGggdXBsb2FkU3RhdHVzID09PVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgdGVtTG9jYWxGaWxlcyA9XG4gICAgICAgICAgICAgICAgICAgIHRlbUxvY2FsRmlsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRGaWxlLnVwbG9hZFN0YXR1cyAhPT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJwcmVwYXJpbmdcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbih7fSwgZXh0RmlsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInNldEZpbGVMaXN0TWFwUHJlcGFyaW5nIHJlc3VsdFwiLCB0ZW1Mb2NhbEZpbGVzKTtcbiAgICAgICAgICAgIC8vY29udmVydG8gdG8gT2JqZWN0IGluc3RhbmNlc1xuICAgICAgICAgICAgcmVzdWx0RXh0TGlzdCA9IHRlbUxvY2FsRmlsZXMubWFwKGZ1bmN0aW9uIChGKSB7IHJldHVybiBuZXcgRXh0RmlsZUluc3RhbmNlKEYpOyB9KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBSRVNVTFQgcmVzdWx0RXh0TGlzdFwiLCByZXN1bHRFeHRMaXN0KTtcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdChkcm9wem9uZUlkLCByZXN1bHRFeHRMaXN0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJzZXRGaWxlTGlzdE1hcFByZXBhcmluZyBSRVNVTFQgcmVzdWx0U2V0XCIsIHJlc3VsdFNldCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0RXh0TGlzdDtcbiAgICAgICAgICAgIC8vIHJldHVybiBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHNbZHJvcHpvbmVJZF07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwic2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcgRXJyb3Igb24gZ2V0IExpc3RcIiwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gKiBVcGRhdGVzKHJlcGxhY2VzKSB0aGUgZXh0RmlsZSBsaXN0IG9uIHByZXBhcmluZyBzdGFnZSBhbmQgcmV0dXJucyB0aGUgbmV3IGFycmF5LlxuICogUmVtb3ZlcyB0aGUgbm9uIHZhbGlkIGZpbGVzIGlmIGNsZWFuT25VcGxvYWQgaXMgdHJ1ZSBhbmQgdmFsaWRhdGVGaWxlcyBpcyBhbHNvIHRydWVcbiAqIFRoZW4gc2V0cyBvbiBwcmVwYXJpbmcgc3RhZ2UgYWxsIGZpbGVzIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGNyZWl0ZXJpYTpcbiAqIElmIHRoZXVwbG9hZFN0YXR1cyBpcyBkaWZlcmVudCB0aGFuIFwic3VjZXNzXCIgQU5EXG4gKiB0aGVuLCB1cGRhdGUgdGhlIGZpbGVzIG9uIHByZXBhcmluZyBzdGFnZS4gT3RoZXJ3aXNlIGtlZXAgdGhlIGV4dEZpbGUgcHJvcHMuXG4gKiBGaW5hbGx5LCB1cGRhdGVzIHRoZSBFeHRGaWxlSW5zdGFuY2UgbGlzdCBvbiBFeHRGaWxlTWFuYWdlci5cbiAqIEBwYXJhbSBkcm9wem9uZUlkIHRoZSBpZCB0byBhY2Nlc3MgdGhlIHJpZ2h0IGxpc3RcbiAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzXG4gKiBAcGFyYW0gdmFsaWRhdGVGaWxlcyBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgdmFsaWRhdGlvbiBpcyBhY3RpdmUgb3Igb8K/bm90XG4gKiBAcGFyYW0gY2xlYW5PblVwbG9hZCBmbGFnIHRvIGRldGVybWluZSB3aHRoZXIgdG8gY2xlbmEgdGhlIGxpc3Qgb29mIG5vbiB2YWxpZCBmaWxlcyBvciBub3RcbiAqIEByZXR1cm5zIGEgbGlzdCBvZiBFeHRGaWxlSW5zdGFuY2VcbiAqL1xuICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0TWFwUHJlcGFyaW5nMiA9IGZ1bmN0aW9uIChkcm9wem9uZUlkLCBsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzLCBjbGVhbk9uVXBsb2FkKSB7XG4gICAgICAgIEV4dEZpbGVNYW5hZ2VyLnNldEZpbGVMaXN0KGRyb3B6b25lSWQsIGxvY2FsRmlsZXMubWFwKGZ1bmN0aW9uIChGKSB7IHJldHVybiBuZXcgRXh0RmlsZUluc3RhbmNlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBGKSwgeyB1cGxvYWRTdGF0dXM6IFwicHJlcGFyaW5nXCIgfSkpOyB9KSk7XG4gICAgICAgIHJldHVybiBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgIH07XG4gICAgRXh0RmlsZU1hbmFnZXIubmV4dElkID0gMDtcbiAgICBFeHRGaWxlTWFuYWdlci5maWxlTGlzdHMgPSB7fTtcbiAgICByZXR1cm4gRXh0RmlsZU1hbmFnZXI7XG59KCkpO1xuXG52YXIgY3JlYXRlVXBsb2FkQ29uZmlnID0gZnVuY3Rpb24gKHVybCwgbWV0aG9kLCBoZWFkZXJzLCB1cGxvYWRMYWJlbCwgY2xlYW5vblVwbG9hZCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgdXBsb2FkTGFiZWw6IHVwbG9hZExhYmVsLFxuICAgICAgICBjbGVhbm9uVXBsb2FkOiBjbGVhbm9uVXBsb2FkXG4gICAgfTtcbn07XG5cbi8qKlxuICogQSBzeW50ZXRpYyBmaWxlIGNyZWF0b3IuXG4gKiBWZXJ5IHVzZWZ1bCBmb3IgdGVzdHNcbiAqL1xudmFyIFN5bnRoZXRpY0ZpbGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3ludGhldGljRmlsZSgpIHtcbiAgICB9XG4gICAgLyoqXG4gKlxuICogQHBhcmFtIG5hbWUgdGhlIGZpbGUgbmFtZVxuICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICogQHBhcmFtIHR5cGUgdGhlIGZpbGUgdHlwZVxuICogQHJldHVybnNcbiAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZSA9IGZ1bmN0aW9uIChuYW1lLCBzaXplLCB0eXBlKSB7XG4gICAgICAgIHZhciBmaWxlID0gbmV3IEZpbGUoW10sIG5hbWUsIHsgdHlwZTogdHlwZSB9KTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZpbGUsIFwic2l6ZVwiLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2FhYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJhY2NfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuYWFjXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9hYWNcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9hYncgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYWJpd29yZC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hYndcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtYWJpd29yZFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ZyZWVhcmMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiZnJlZWFyYy1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hcmNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtZnJlZWFyY1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2F2aSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJhdmktZmlsZS13aXRoLWxhcmdlLW5hbWUuYXZpXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby94LW1zdmlkZW9cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9hencgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiYW1hem9uX2tpbmRsZV9lYm9vay1maWxlLXdpdGgtbGFyZ2UtbmFtZS5hendcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2tcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vY3RldCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJiaW5hcnlfb2N0ZXRfc3RyZWFtLWZpbGUtd2l0aC1sYXJnZS1uYW1lLmJpblwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfYm1wID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImJpdF9tYXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuYm1wXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9ibXBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9ieiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ4X2J6aXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuYnpcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtYnppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2J6MiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ4X2J6aXBfMi1maWxlLXdpdGgtbGFyZ2UtbmFtZS5iejJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtYnppcDJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9jZGEgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiY2RfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuY2RhXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LWNkZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzaCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmNzaFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC1jc2hcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc3MgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5jc3NcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvY3NzXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfY3N2ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuY3N2XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2NzdlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2RvYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmRvY1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vbXN3b3JkXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZG9jeCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmRvY3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfZW90ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuZW90XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2VwdWIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5lcHViXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9lcHViK3ppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2d6aXAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5nelwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vZ3ppcFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2dpZiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmdpZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvZ2lmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfaHRtID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaHRtXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9odG1sID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaHRtbFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9odG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfaWNvID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuaWNvXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS92bmQubWljcm9zb2Z0Lmljb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9pY2FsZW5kYXIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5pY3NcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvY2FsZW5kYXJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qYXJcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZWcgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qcGVnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9qcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanBnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuanBnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9qcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9qYXZhc2NyaXB0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfanNvbiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLmpzb25cIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2pzb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qc29ubGQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc29ubGRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL2xkK2pzb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9taWQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5taWRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL21pZGlcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94X21pZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8veC1taWRpXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbWlkaSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZGlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3gtbWlkaVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hfbWlkaSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1pZGlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvL3gtbWlkaVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21qcyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm1qc1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9qYXZhc2NyaXB0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbXAzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXAzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9tcGVnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfbXA0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXA0XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby9tcDRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGVnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUubXBlZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vbXBlZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wa2cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5tcGtnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kcCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9kcFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZHRcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29nYSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLm9nYVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vb2dnXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb2d2ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub2d2XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby9vZ2dcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ3ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vZ3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL29nZ1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29wdXMgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5vcHVzXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby9vcHVzXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfb3RmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUub3RmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJmb250L290ZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BuZyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBuZ1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvcG5nXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcGRmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucGRmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9wZGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9waHAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5waHBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcHB0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucHB0XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BwdHggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wcHR4XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcmFyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucmFyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi92bmQucmFyXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfcnRmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUucnRmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi9ydGZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9zaCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnNoXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LXNoXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfc3ZnID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuc3ZnXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJpbWFnZS9zdmcreG1sXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfc3dmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUuc3dmXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RhciA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnRhclwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24veC10YXJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50aWZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3RpZmZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWZmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUudGlmZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiaW1hZ2UvdGlmZlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RzID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIm1wMnRfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUudHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvL21wMnRcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV90dGYgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50dGZcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImZvbnQvdHRmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfdGV4dCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnR4dFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3R5cGVzY3JpcHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidHlwZXNjcmlwdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS50c1wiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ZzZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJtc192aXNpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS52c2RcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb1wiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dhdiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ3YXZfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUud2F2XCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby93YXZcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJhID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIndlYl9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS53ZWJhXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhdWRpby93ZWJtXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd2VibSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ3ZWJfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUud2VibVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidmlkZW8vd2VibVwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3dlYnAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwid2ViX2ltYWdlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLndlYnBcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImltYWdlL3dlYnBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUud29mZlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiZm9udC93b2ZmXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfd29mZjIgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS53b2ZmMlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiZm9udC93b2ZmMlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hodG1sID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInRlc3QtZmlsZS13aXRoLWxhcmdlLW5hbWUueGh0bWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hsc3ggPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54bHNcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hscyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJ0ZXN0LWZpbGUtd2l0aC1sYXJnZS1uYW1lLnhsc3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfeG1sID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInhtbC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54bWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3htbFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3htbF90eHQgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwieG1sX3BsYWluX3RleHQtZmlsZS13aXRoLWxhcmdlLW5hbWUueG1sXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJhcHBsaWNhdGlvbi94bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV94dWwgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidGVzdC1maWxlLXdpdGgtbGFyZ2UtbmFtZS54dWxcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWxcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV96aXAgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwiemlwLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnppcFwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXBwbGljYXRpb24vemlwXCIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgKlxuICAgICogQHBhcmFtIHNpemUgdGhlIGZpbGUgc2l6ZVxuICAgICogQHJldHVybnMgYSBzeW50ZXRpYyBGaWxlIG9iamVjdCBpbnN0YW5jZVxuICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVfM2dwID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncF92aWRlby1maWxlLXdpdGgtbGFyZ2UtbmFtZS4zZ3BcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInZpZGVvLzNncHBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3AyID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncDJfdmlkZW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuM2cyXCIsIHNpemUgPyBzaXplIDogMzUxNjUxNiwgXCJ2aWRlby8zZ3BwMlwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlXzNncF9hID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcIjNncF9hdWRpby1maWxlLXdpdGgtbGFyZ2UtbmFtZS4zZ3BcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImF1ZGlvLzNncHBcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfdiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCIzZ3BfYXVkaW8tZmlsZS13aXRoLWxhcmdlLW5hbWUuM2dwMlwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwiYXVkaW8vM2dwcDJcIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV83eiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJzZXZlbl96aXAtZmlsZS13aXRoLWxhcmdlLW5hbWUuN3pcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3B5dGhvbiA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGUoXCJweXRob24tZmlsZS13aXRoLWxhcmdlLW5hbWUucHlcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXZhID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcImphdmEtZmlsZS13aXRoLWxhcmdlLW5hbWUuamF2YVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICpcbiAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemVcbiAgICAqIEByZXR1cm5zIGEgc3ludGV0aWMgRmlsZSBvYmplY3QgaW5zdGFuY2VcbiAgICAqL1xuICAgIFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3JlYWN0ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGUuY3JlYXRlRmlsZShcInJlYWN0X2pzeC1maWxlLXdpdGgtbGFyZ2UtbmFtZS5qc3hcIiwgc2l6ZSA/IHNpemUgOiAzNTE2NTE2LCBcInRleHQvcGxhaW5cIik7XG4gICAgfTtcbiAgICAvKipcbiAgICAqXG4gICAgKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplXG4gICAgKiBAcmV0dXJucyBhIHN5bnRldGljIEZpbGUgb2JqZWN0IGluc3RhbmNlXG4gICAgKi9cbiAgICBTeW50aGV0aWNGaWxlLmNyZWF0ZV92dWUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKFwidnVlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnZ1ZVwiLCBzaXplID8gc2l6ZSA6IDM1MTY1MTYsIFwidGV4dC9wbGFpblwiKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZmFrZSAoc3ludGhldGljKSBmaWxlc1xuICAgICAqIEBwYXJhbSBzaXplIHRoZSBmaWxlIHNpemUgZm9yIGFsbCBzeW50aGV0aWMgZmlsZXNcbiAgICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiBhbGwgZmlsZSBpY29uIHByZXZpZXcgc3VwcG9ydGVkIGZpbGVzXG4gICAgICovXG4gICAgU3ludGhldGljRmlsZS5jcmVhdGVGaWxlTGlzdE1pc2NlbGFuaW91cyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHZhciBsaXN0RmlsZSA9IFtdO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2FhYyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYWJ3KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9mcmVlYXJjKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9hdmkoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2F6dyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2N0ZXQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2JtcChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfYnooc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2J6MihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfY2RhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9jc2goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2NzcyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfY3N2KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9kb2Moc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2RvY3goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2VvdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZXB1YihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZ3ppcChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfZ2lmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9odG0oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2h0bWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2ljbyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfaWNhbGVuZGFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXIoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZWcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pwZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfanMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzb24oc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX2pzb25sZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbWlkKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9taWRpKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94X21pZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeF9taWRpKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tanMoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX21wMyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfbXA0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGVnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9tcGtnKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZHAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29kcyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2R0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vZ2Eoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX29ndihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfb2d4KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vcHVzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9vdGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BuZyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcGRmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9waHAoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3BwdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcHB0eChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcmFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9ydGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3NoKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9zdmcoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3N3ZihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdGFyKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90aWYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RpZmYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RzKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV90dGYoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3RleHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3R5cGVzY3JpcHQoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ZzZChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfd2F2KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJtKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93ZWJwKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV93b2ZmMihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeGh0bWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hsc3goc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3hscyhzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfeG1sKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94bWxfdHh0KHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV94dWwoc2l6ZSkpO1xuICAgICAgICBsaXN0RmlsZS5wdXNoKFN5bnRoZXRpY0ZpbGUuY3JlYXRlX3ppcChzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3Aoc2l6ZSkpO1xuICAgICAgICAvL2xpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfM2dwMihzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfYShzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV8zZ3BfdihzaXplKSk7XG4gICAgICAgIC8vbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV83eihzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfcHl0aG9uKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9qYXZhKHNpemUpKTtcbiAgICAgICAgbGlzdEZpbGUucHVzaChTeW50aGV0aWNGaWxlLmNyZWF0ZV9yZWFjdChzaXplKSk7XG4gICAgICAgIGxpc3RGaWxlLnB1c2goU3ludGhldGljRmlsZS5jcmVhdGVfdnVlKHNpemUpKTtcbiAgICAgICAgcmV0dXJuIGxpc3RGaWxlO1xuICAgIH07XG4gICAgcmV0dXJuIFN5bnRoZXRpY0ZpbGU7XG59KCkpO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vIFNIT1JUQ1VUU1xuLyoqXG4gKiBDcmVhdGUgYSBsaXN0IG9mIHN5bnRoZXRpYyBmaWxlcyB3aXRoIGRpZmZlcmVudCBtaW1lIHR5cGVzXG4gKiBAcGFyYW0gc2l6ZSB0aGUgZmlsZSBzaXplIGZvciBlYWNoIHN5bnRoZXRpYyBmaWxlXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2Ygc3ludGhldGljIGZpbGVcbiAqL1xudmFyIGNyZWF0ZUxpc3RPZk11bHRpVHlwZUZpbGUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgIHJldHVybiBTeW50aGV0aWNGaWxlLmNyZWF0ZUZpbGVMaXN0TWlzY2VsYW5pb3VzKHNpemUpO1xufTtcbi8qKlxuICogQ3JlYXRlcyBhIHN5bnRoZXRpYyBmaWxlLlxuICogQnkgZGVmYXVsdCwgY3JlYXRlcyBhIHBuZyBpbWFnZSBmaWxlXG4gKiBAcGFyYW0gbmFtZSB0aGUgZmlsZSBuYW1lIHRvIHNob3cuIEJ5IGRlZmF1bHQgaXMgc2V0IHRvIFwicG5nLWltYWdlLWZpbGUtd2l0aC1sYXJnZS1uYW1lLnBuZ1wiXG4gKiBAcGFyYW0gc2l6ZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZmlsZS4gQnkgZGVmYXVsdCB0aGlzIHZhbHVlIGlzIHNldCB0byA0NTU1NTVcbiAqIEBwYXJhbSB0eXBlIHRoZSBtaW1lIHR5cGUgb2YgdGhlIGZpbGUuIEJ5IGRlZmF1bHQgaXMgc2V0IHRvIFwiaW1hZ2UvcG5nXCJcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBjcmVhdGVTeW50aGV0aWNGaWxlID0gZnVuY3Rpb24gKG5hbWUsIHNpemUsIHR5cGUpIHtcbiAgICBpZiAobmFtZSA9PT0gdm9pZCAwKSB7IG5hbWUgPSBcInBuZy1pbWFnZS1maWxlLXdpdGgtbGFyZ2UtbmFtZS5wbmdcIjsgfVxuICAgIGlmIChzaXplID09PSB2b2lkIDApIHsgc2l6ZSA9IDQ1NTU1NTsgfVxuICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IFwiaW1hZ2UvcG5nXCI7IH1cbiAgICByZXR1cm4gU3ludGhldGljRmlsZS5jcmVhdGVGaWxlKG5hbWUsIHNpemUsIHR5cGUpO1xufTtcblxuLyoqXG4gKiBBbiBpZCBnZW5lcmF0b3IgZm9yIEZpbGVJdGVtc1xuICovXG52YXIgRmlsZUlkR2VuZXJhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZpbGVJZEdlbmVyYXRvcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSBpZCBjb3VudGVyIGFuZCByZXR1cm5zIHRoZSBuZXh0IGlkIGF2YWlsYWJsZS5cbiAgICAgKiBAcmV0dXJucyB0aGUgbmV4dCBpbnRlZ2VyIGlkIGF2YWlsYWJsZVxuICAgICAqL1xuICAgIEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIEZpbGVJZEdlbmVyYXRvci5uZXh0SWQrKztcbiAgICAgICAgcmV0dXJuIEZpbGVJZEdlbmVyYXRvci5uZXh0SWQ7XG4gICAgfTtcbiAgICBGaWxlSWRHZW5lcmF0b3IubmV4dElkID0gMDtcbiAgICByZXR1cm4gRmlsZUlkR2VuZXJhdG9yO1xufSgpKTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgZmlsZUxpc3QgaW50byBhbiBhcnJheSBvZiBzZXBhcmF0ZWQgRXh0RmlsZSBvYmplY3RzXG4gKiBAcGFyYW0gZmlsZUxpc3QgdGhlIEZpbGVMaXN0IG9iamVjdCBnaXZlbiBieSBpbnB1dChldmVudC50YXJnZXQuZmlsZXMpIG9yIGRyb3Agb3BlcmF0aW9uIChldmVudC5kYXRhVHJhbnNmZXIpXG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBFeHRGaWxlIG9iamVjdHNcbiAqL1xudmFyIGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkgPSBmdW5jdGlvbiAoZmlsZUxpc3QpIHtcbiAgICB2YXIgZXh0RmlsZUFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGYgPSB2b2lkIDA7IChmID0gZmlsZUxpc3RbaV0pOyBpKyspIHtcbiAgICAgICAgZXh0RmlsZUFycmF5LnB1c2goeyBpZDogRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpLCBmaWxlOiBmLCBuYW1lOiBmLm5hbWUsIHNpemU6IGYuc2l6ZSwgdHlwZTogZi50eXBlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZXh0RmlsZUFycmF5O1xufTtcbi8qKlxuICogQ29udmVydHMgdGhlIGZpbGVMaXN0IGludG8gYW4gYXJyYXkgb2Ygc2VwYXJhdGVkIEV4dEZpbGUgaW5zdGFuY2VzXG4gKiBAcGFyYW0gZmlsZUxpc3QgdGhlIEZpbGVMaXN0IG9iamVjdCBnaXZlbiBieSBpbnB1dCAoZXZlbnQudGFyZ2V0LmZpbGVzKSBvciBkcm9wIG9wZXJhdGlvbiAoZXZlbnQuZGF0YVRyYW5zZmVyKVxuICogQHJldHVybnMgYW4gYXJyYXkgb2YgRXh0RmlsZSBpbnN0YW5jZXNcbiAqL1xudmFyIGZpbGVMaXN0VG9FeHRGaWxlSW5zdGFuY2VBcnJheSA9IGZ1bmN0aW9uIChmaWxlTGlzdCkge1xuICAgIHZhciBleHRGaWxlQXJyYXkgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgZiA9IHZvaWQgMDsgKGYgPSBmaWxlTGlzdFtpXSk7IGkrKykge1xuICAgICAgICBleHRGaWxlQXJyYXkucHVzaChuZXcgRXh0RmlsZUluc3RhbmNlKHsgaWQ6IEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSwgZmlsZTogZiwgbmFtZTogZi5uYW1lLCBzaXplOiBmLnNpemUsIHR5cGU6IGYudHlwZSB9KSk7XG4gICAgfVxuICAgIHJldHVybiBleHRGaWxlQXJyYXk7XG59O1xuXG52YXIgaXNWYWxpZGF0ZUFjdGl2ZSA9IGZ1bmN0aW9uIChhY2NlcHQsIG1heEZpbGVTaXplLCBtYXhGaWxlcywgdmFsaWRhdG9yKSB7XG4gICAgcmV0dXJuICgoYWNjZXB0ICE9PSB1bmRlZmluZWQgJiYgYWNjZXB0ICE9PSBudWxsKSB8fFxuICAgICAgICAobWF4RmlsZVNpemUgIT09IHVuZGVmaW5lZCAmJiBtYXhGaWxlU2l6ZSAhPT0gbnVsbCkgfHxcbiAgICAgICAgKG1heEZpbGVzICE9PSB1bmRlZmluZWQgJiYgbWF4RmlsZXMgIT09IG51bGwpIHx8XG4gICAgICAgICh2YWxpZGF0b3IgIT09IHVuZGVmaW5lZCAmJiB2YWxpZGF0b3IgIT09IG51bGwpKTtcbn07XG5cbi8qKlxuICogVGhlIG1heCBzaXplIG9mIHRoZSB3b3JkIGluIGNoYXJhY3RlcnNcbiAqL1xudmFyIERFRkFVTFRfTUFYX1NJWkVfV09SRCA9IDMwO1xuLyoqXG4gKlxuICogQHBhcmFtIHdvcmQgdGhlIHdvcmQgdG8gYmUgc2hyaW5rZWRcbiAqIEByZXR1cm5zIHRoZSBzaHJpbmtlZCB3b3JkXG4gKi9cbnZhciBzaHJpbmtXb3JkID0gZnVuY3Rpb24gKHdvcmQsIGNhcmQpIHtcbiAgICBpZiAod29yZCA9PT0gdm9pZCAwKSB7IHdvcmQgPSBcIlwiOyB9XG4gICAgaWYgKGNhcmQgPT09IHZvaWQgMCkgeyBjYXJkID0gZmFsc2U7IH1cbiAgICB2YXIgbmV3V29yZCA9IHdvcmQ7XG4gICAgaWYgKGNhcmQpIHtcbiAgICAgICAgaWYgKHdvcmQubGVuZ3RoID49IDIwKSB7XG4gICAgICAgICAgICBuZXdXb3JkID0gd29yZC5zbGljZSgwLCAxMCkgKyBcIi4uLlwiICsgd29yZC5zbGljZSgtNyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAod29yZC5sZW5ndGggPj0gREVGQVVMVF9NQVhfU0laRV9XT1JEKSB7XG4gICAgICAgIG5ld1dvcmQgPSB3b3JkLnNsaWNlKDAsIDEzKSArIFwiLi4uXCIgKyB3b3JkLnNsaWNlKC04KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1dvcmQ7XG59O1xuXG4vKipcbiAqIFVwZGF0ZXMgYSBleHRGaWxlIGFuZCBzZXRzIGl0cyB1cGxvYWRTdGF0dXMgdG8gXCJ1cGxvYWRpbmdcIlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGUgb2JqZWN0XG4gKiBAcmV0dXJucyB0aGUgZXh0ZW5kZWQgZmlsZSB3aXRoIHRoZSB1cGxvYWRTdGF0dXMgYXR0cmlidXRlIG1vZGlmaWVkXG4gKi9cbnZhciBzZXRQcmVwVG9VcGxvYWRpbmcgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJwcmVwVG9VcGxvYWQgT25lXCIsIGV4dEZpbGUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkU3RhdHVzOiBcInVwbG9hZGluZ1wiIH0pKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBVcGRhdGVzIGEgZXh0RmlsZSBhbmQgc2V0cyBpdHMgdXBsb2FkU3RhdHVzIHRvIFwic3VjY2Vzc1wiXG4gKiBAcGFyYW0gZXh0RmlsZSB0aGUgZXh0ZW5kZWQgZmlsZSBvYmplY3RcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBmaWxlIHdpdGggdGhlIHVwbG9hZFN0YXR1cyBhdHRyaWJ1dGUgbW9kaWZpZWRcbiAqL1xudmFyIHVwbG9hZE9uZSA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBPbmVcIiwgZXh0RmlsZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRTdGF0dXM6IFwic3VjY2Vzc1wiIH0pKTtcbiAgICAgICAgfSwgMjAwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBBd2FpdHMgdGhlIGdpdmVuIHRpbWUgYmVmb3JlIHN0YXJ0IHVwbG9hZGluZ1xuICogQHBhcmFtIHByZXBhcmluZ1RpbWUgdGhlIHRpbWUgaW4gbWlsaXNlY29uZHMsIGJ5IGRlZmF1bHQgaXQgd2lsbCB3YWl0IDEuNSBzZWNzXG4gKiBAcmV0dXJucyBhbiBlbXB0eSBvYmplY3RcbiAqL1xudmFyIHNsZWVwUHJlcGFyaW5nID0gZnVuY3Rpb24gKHByZXBhcmluZ1RpbWUpIHtcbiAgICBpZiAocHJlcGFyaW5nVGltZSA9PT0gdm9pZCAwKSB7IHByZXBhcmluZ1RpbWUgPSA1MDAwOyB9XG4gICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZGZpbGVzIHByZXBhcmluZ1RpbWUgT25lXCIsIHByZXBhcmluZ1RpbWUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LCBwcmVwYXJpbmdUaW1lKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZXh0RmlsZUluc3RhbmNlXG4gKiBAcmV0dXJuc1xuICovXG52YXIgcHJlcFRvVXBsb2FkT25lID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgIC8vY29uc29sZS5sb2coXCJwcmVwVG9VcGxvYWQgT25lXCIsIGV4dEZpbGVJbnN0YW5jZSk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gXCJ1cGxvYWRpbmdcIjtcbiAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGVJbnN0YW5jZSksIHsgdXBsb2FkU3RhdHVzOiBcInVwbG9hZGluZ1wiIH0pKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGVJbnN0YW5jZVxuICogQHJldHVybnNcbiAqL1xudmFyIHVwbG9hZE9uZUV4dEZpbGUgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBPbmVcIiwgZXh0RmlsZUluc3RhbmNlKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcInN1Y2Nlc3NcIjtcbiAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGVJbnN0YW5jZSksIHsgdXBsb2FkU3RhdHVzOiBcInN1Y2Nlc3NcIiB9KSk7XG4gICAgICAgIH0sIDIwMDApO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlIHRoZSBleHRGaWxlIHRvIHVwbG9hZFxuICogQHBhcmFtIERyb3B6b25lTG9jYWxpemVyIHRoZSBsb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zIGEgZHVpVXBsb2FkUmVzcG9uc2Ugb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSByZXN1bHRcbiAqL1xudmFyIGZha2VGdWlVcGxvYWQgPSBmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlLCBEcm9wem9uZUxvY2FsaXplcikge1xuICAgIGlmIChEcm9wem9uZUxvY2FsaXplciA9PT0gdm9pZCAwKSB7IERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3RvcihcIkVOLWVuXCIpOyB9XG4gICAgdmFyIGV4dEZpbGUgPSBleHRGaWxlSW5zdGFuY2UudG9FeHRGaWxlKCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmFuZG9tTnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApO1xuICAgICAgICAgICAgaWYgKHJhbmRvbU51bWJlciAlIDIgPT09IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBEcm9wem9uZUxvY2FsaXplci5mYWtldXBsb2Fkc3VjY2VzcztcbiAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZCA9IHsgdXJsOiBcIlwiIH07XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgc2VydmVyUmVzcG9uc2U6IHsgc3VjY2Vzczogc3VjY2VzcywgbWVzc2FnZTogbWVzc2FnZSwgcGF5bG9hZDogcGF5bG9hZCB9LCB1cGxvYWRTdGF0dXM6IFwic3VjY2Vzc1wiLCB1cGxvYWRNZXNzYWdlOiBtZXNzYWdlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBzdWNjZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBEcm9wem9uZUxvY2FsaXplci5mYWtlVXBsb2FkRXJyb3I7XG4gICAgICAgICAgICAgICAgdmFyIHBheWxvYWQgPSB7fTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyBzZXJ2ZXJSZXNwb25zZTogeyBzdWNjZXNzOiBzdWNjZXNzLCBtZXNzYWdlOiBtZXNzYWdlLCBwYXlsb2FkOiBwYXlsb2FkIH0sIHVwbG9hZFN0YXR1czogXCJlcnJvclwiLCB1cGxvYWRNZXNzYWdlOiBtZXNzYWdlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTcwMCk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gbWluIChpbmNsdWRlZCkgYW5kIG1heCAoZXhjbHVkZWQpXG4gKiBAcGFyYW0gbWluIHRoZSBtaW4gbnVtYmVyXG4gKiBAcGFyYW0gbWF4IHRoZSBtYXggbnVtYmVyXG4gKiBAcmV0dXJucyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiBtaW4gKGluY2x1ZGVkKSBhbmQgbWF4IChleGNsdWRlZClcbiAqL1xuZnVuY3Rpb24gZ2V0UmFuZG9tSW50KG1pbiwgbWF4KSB7XG4gICAgaWYgKG1pbiA9PT0gdm9pZCAwKSB7IG1pbiA9IDA7IH1cbiAgICBpZiAobWF4ID09PSB2b2lkIDApIHsgbWF4ID0gMDsgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG59XG5cbi8qKlxuICogQ2xlYW5zIHRoZSBpbnB1dC52YWx1ZSBhdHRyaWJ1dGVcbiAqIEBwYXJhbSBpbnB1dEVsZW1lbnRcbiAqL1xudmFyIGNsZWFuSW5wdXQgPSBmdW5jdGlvbiAoaW5wdXRFbGVtZW50KSB7XG4gICAgaWYgKCFpbnB1dEVsZW1lbnQpXG4gICAgICAgIHJldHVybjtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBcIlwiO1xufTtcblxuLyoqXG4gKiBJZiBjbGFzc05hbWUgaXMgZ2l2ZW4sIGFkZHMgY2xhc3MgbmFtZSBpbiBzdHJpbmcgZm9ybWF0IHRvIGEgYmFzZSBjbGFzcyBuYW1lXG4gKiBAcGFyYW0gYmFzZUNsYXNzTmFtZSB0aGUgYmFzZSBjbGFzcyBuYW1lXG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBjbGFzcyBuYW1lIHRvIGJlIGFkZGVkXG4gKiBAcmV0dXJucyBhIG5ldyBjbGFzcyBuYW1lIG9idGFpbmVkIGJ5IGFkZGluZyB0aGUgc2Vjb25kIHBhcmFtYXRlclxuICovXG52YXIgYWRkQ2xhc3NOYW1lID0gZnVuY3Rpb24gKGJhc2VDbGFzc05hbWUsIGNsYXNzTmFtZSkge1xuICAgIGlmIChjbGFzc05hbWUpXG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChiYXNlQ2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIGJhc2VDbGFzc05hbWU7XG59O1xuXG52YXIgaXNVcGxvYWRBYmxlRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlLCB2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgIHJldHVybiAoIXZhbGlkYXRlRmlsZXNGbGFnIHx8ICh2YWxpZGF0ZUZpbGVzRmxhZyAmJiBleHRGaWxlLnZhbGlkKSkgJiYgZXh0RmlsZS51cGxvYWRTdGF0dXMgIT09IFwic3VjY2Vzc1wiO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIGZpbGVcbiAqIEBwYXJhbSBuYW1lXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHNpemVcbiAqIEByZXR1cm5zIHRoZSBmaWxlIG5hbWUsIHR5cGUgYW5kIHNpemVcbiAqL1xudmFyIGdldExvY2FsRmlsZUl0ZW1EYXRhID0gZnVuY3Rpb24gKGZpbGUsIG5hbWUsIHR5cGUsIHNpemUpIHtcbiAgICB2YXIgbG9jYWxGaWxlTmFtZSA9IFwiXCI7XG4gICAgdmFyIGxvY2FsRmlsZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgdmFyIGxvY2FsRmlsZVNpemUgPSB1bmRlZmluZWQ7XG4gICAgLy8gaWYgZmlsZSBvYmplY3QgaXMgdmFsaWQsIG9idGFpbiBtZXRhZGF0YSBmcm9tIGl0XG4gICAgLy8gb3RoZXJ3aXNlIHRyeSB0byBnZXQgZmlsZSBkYXRhIGZyb20gaW5kaXZpZHVhbCBwcm9wcyBpbiBzdHJpbmcgZm9ybWF0XG4gICAgaWYgKGZpbGUgJiYgdHlwZW9mIGZpbGUubmFtZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBsb2NhbEZpbGVOYW1lID0gZmlsZS5uYW1lO1xuICAgICAgICBsb2NhbEZpbGVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgICBsb2NhbEZpbGVTaXplID0gZmlsZS5zaXplO1xuICAgIH1cbiAgICBlbHNlIGlmIChuYW1lICYmIHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGxvY2FsRmlsZU5hbWUgPSBuYW1lO1xuICAgICAgICBsb2NhbEZpbGVUeXBlID0gdHlwZTtcbiAgICAgICAgbG9jYWxGaWxlU2l6ZSA9IHNpemU7XG4gICAgfVxuICAgIHJldHVybiBbbG9jYWxGaWxlTmFtZSwgbG9jYWxGaWxlVHlwZSwgbG9jYWxGaWxlU2l6ZV07XG59O1xuXG4vKipcbiAqIFNlcGFyYXRlIHRoZSBhY2NlcHQgc3RyaW5nIGFycmF5IGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzXG4gKiBAcGFyYW0gYWNjZXB0IHRoZSBzdHJpbmcgYWNjZXB0IGFycmF5XG4gKiBAcmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIGluIHdpY2ggZXZlcnkgaXRlbVxuICovXG52YXIgc2VwYXJhdGVBY2NlcHQgPSBmdW5jdGlvbiAoYWNjZXB0KSB7XG4gICAgaWYgKCFhY2NlcHQgfHwgYWNjZXB0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHZhciBjb21tYVNlcGFyYXRlZEFjY3BldCA9IGFjY2VwdC5zcGxpdChcIixcIikubWFwKGZ1bmN0aW9uIChhY2NlcHRJdGVtKSB7IHJldHVybiBhY2NlcHRJdGVtLnRyaW0oKTsgfSk7XG4gICAgcmV0dXJuIGNvbW1hU2VwYXJhdGVkQWNjcGV0O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGZpbGUgaXMgdmFsaWQgb3Igbm90IGdpdmVuIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW50aW9ucyBhbmQgbWltZSB0eXBlc1xuICogZS5nLiBhY2NlcHQgPSAgW1wiLmRvY1wiLCBcIi5kb2N4XCIsIFwiLnhtbFwiLCBcImFwcGxpY2F0aW9uL21zd29yZFwiLCBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCJdXG4gKiBAcGFyYW0gYWNjZXB0IHRoZSBhcnJheSBvZiBzdHJpbmdzIGFjY2VwdCBpdGVtc1xuICogQHBhcmFtIGZpbGUgYSBGaWxlIG9iamVjdCB0byBiZSBldmFsdWF0ZWRcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIG1pbWUgdHlwZSBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBhY2NlcHQgcGFyYW1cbiAqL1xudmFyIHZhbGlkYXRlQWNjZXB0ID0gZnVuY3Rpb24gKGFjY2VwdCwgZmlsZSkge1xuICAgIHZhciB2YWxpZCA9IGZhbHNlO1xuICAgIHZhciBuYW1lID0gZmlsZS5uYW1lLCB0eXBlID0gZmlsZS50eXBlO1xuICAgIC8vQXJyYXkoNSkgWyBcIi5kb2NcIiwgXCIuZG9jeFwiLCBcIi54bWxcIiwgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIiwgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiIF1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjY2VwdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYWNjZXB0SXRlbSA9IGFjY2VwdFtpXTtcbiAgICAgICAgLy9jaGVjayBpcyBub3QgZW1wdHlcbiAgICAgICAgaWYgKGFjY2VwdEl0ZW0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAvL2NoZWNrIGV4dGVudGlvblxuICAgICAgICAgICAgaWYgKGFjY2VwdEl0ZW0uY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgICAgICAgICAgIGlmIChhY2NlcHRJdGVtLmluY2x1ZGVzKGdldEV4dChuYW1lKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9jaGVjayBtaW1lXG4gICAgICAgICAgICAvLyBoZWFkZXIvdGFpbCAgPT4gaW1hZ2UvcG5nICA7ICBpbWFnZS8qIDsgYXVkaW9cbiAgICAgICAgICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoID4gMCAmJiBhY2NlcHRJdGVtLmluY2x1ZGVzKFwiL1wiKSAmJiB0eXBlLmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgIHZhciBoZWFkZXJNaW1lID0gYWNjZXB0SXRlbS5zcGxpdChcIi9cIilbMF07XG4gICAgICAgICAgICAgICAgdmFyIHRhaWxNaW1lID0gYWNjZXB0SXRlbS5zcGxpdChcIi9cIilbMV07XG4gICAgICAgICAgICAgICAgdmFyIGhlYWRlck1pbWVGaWxlID0gdHlwZS5zcGxpdChcIi9cIilbMF07XG4gICAgICAgICAgICAgICAgdmFyIHRhaWxNaW1lRmlsZSA9IHR5cGUuc3BsaXQoXCIvXCIpWzFdO1xuICAgICAgICAgICAgICAgIGlmIChoZWFkZXJNaW1lID09PSBoZWFkZXJNaW1lRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICBpbWFnZS8qXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWlsTWltZSA9PT0gXCIqXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhaWxNaW1lID09PSB0YWlsTWltZUZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBwcmVWYWxpZGF0ZWRGaWxlcyBGaWxlTGlzdFxuICogQHBhcmFtIHJlbWFpbmluZ1ZhbGlkcyBUaGUgbnVtYmVyIG9mIHJlbWFpbmluZyB2YWxpZCBmaWxlc1xuICogQHBhcmFtIGxvY2FsVmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gbWF4RmlsZXNcbiAqIEBwYXJhbSBsb2NhbGl6YXRpb25cbiAqIEByZXR1cm5zXG4gKi9cbnZhciBmaWxlTGlzdHZhbGlkYXRvciA9IGZ1bmN0aW9uIChwcmVWYWxpZGF0ZWRGaWxlcywgcmVtYWluaW5nVmFsaWRzLCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKSB7XG4gICAgdmFyIG91dHB1dCA9IFtdO1xuICAgIC8vc2V0IGEgY291bnRkb3duIHdoZW4gdGhlcmUgaXMgYSBsaW1pdCBvbiBmaWxlc1xuICAgIHZhciBjb3VudGRvd24gPSByZW1haW5pbmdWYWxpZHM7XG4gICAgLy8gZ2V0IGxvY2FsaXplZCBsYWJlbHNcbiAgICB2YXIgVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyID0gVmFsaWRhdGVFcnJvckxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbik7XG4gICAgLy9JdGVyYXRlIHRoZSBGaWxlIGxpc3RcbiAgICBmb3IgKHZhciBpID0gMCwgZiA9IHZvaWQgMDsgKGYgPSBwcmVWYWxpZGF0ZWRGaWxlc1tpXSk7IGkrKykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZmlsZSBsaXN0IHdpdGhcbiAgICAgICAgdmFyIHZhbGlkYXRlZEZpbGUgPSB2YWxpZGF0ZUZpbGUoZiwgdmFsaWRhdG9yLCBsb2NhbFZhbGlkYXRvciwgVmFsaWRhdGlvbkVycm9yTG9jYWxpemVyKTtcbiAgICAgICAgaWYgKHZhbGlkYXRlZEZpbGUudmFsaWQpIHtcbiAgICAgICAgICAgIC8vbm90IHZhbGlkIGR1ZSB0byBmaWxlIGNvdW50IGxpbWl0XG4gICAgICAgICAgICB2YXIgdmFsaWQgPSBjb3VudGRvd24gPiAwO1xuICAgICAgICAgICAgdmFsaWRhdGVkRmlsZS52YWxpZCA9IHZhbGlkO1xuICAgICAgICAgICAgLy9hZGQgZXJyb3IgYWJvdXQgYW1vdW50XG4gICAgICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1heEZpbGVFcnJvck1lc3NlbmdlciA9IFZhbGlkYXRpb25FcnJvckxvY2FsaXplci5tYXhGaWxlQ291bnQ7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVkRmlsZS5lcnJvcnMgPSB2YWxpZGF0ZWRGaWxlLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICA/IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgdmFsaWRhdGVkRmlsZS5lcnJvcnMsIHRydWUpLCBbbWF4RmlsZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVzIHx8IEluZmluaXR5KV0sIGZhbHNlKSA6IFttYXhGaWxlRXJyb3JNZXNzZW5nZXIobWF4RmlsZXMgfHwgSW5maW5pdHkpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvdW50ZG93bi0tO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dC5wdXNoKHZhbGlkYXRlZEZpbGUpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufTtcbi8qKlxuICogRm9yIGVhY2ggRXh0RmlsZSBzZXRzIHRoZSB2YWxpZCBwcm9wIG9mIEV4dEZpbGUgdG8gXCJ0cnVlXCIgb3IgXCJmYWxzZVwiXG4gKiBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXZpZHVhbCB2YWxpZGF0aW9uLlxuICogSXQgYWxzbyBhZGQgdGhlIGxpc3Qgb2YgZXJyb3JzLlxuICogQHBhcmFtIGV4dEZpbGVMaXN0XG4gKiBAcGFyYW0gcmVtYWluaW5nVmFsaWRzXG4gKiBAcGFyYW0gbG9jYWxWYWxpZGF0b3JQcm9wc1xuICogQHBhcmFtIHZhbGlkYXRvclxuICogQHBhcmFtIG1heEZpbGVzXG4gKiBAcGFyYW0gbG9jYWxpemF0aW9uXG4gKiBAcmV0dXJucyBhIG5ldyBFeHRGaWxlIGxpc3Qgd2l0aCBlYWNoIGl0ZW0gdmFsaWRhdGVkXG4gKi9cbnZhciB2YWxpZGF0ZUV4dEZpbGVMaXN0ID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0LCByZW1haW5pbmdWYWxpZHMsIGxvY2FsVmFsaWRhdG9yUHJvcHMsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbikge1xuICAgIC8vY29uc29sZS5sb2coXCJyZW1hbmluZyB2YWxpZHNcIiwgcmVtYWluaW5nVmFsaWRzKTtcbiAgICB2YXIgZmlsZUxpc3RSZXN1bHQgPSBbXTtcbiAgICBpZiAoIXJlbWFpbmluZ1ZhbGlkcylcbiAgICAgICAgcmV0dXJuIGZpbGVMaXN0UmVzdWx0O1xuICAgIHZhciByZW1haW5pbmcgPSByZW1haW5pbmdWYWxpZHM7XG4gICAgdmFyIFZhbGlkYXRpb25FcnJvckxvY2FsaXplciA9IFZhbGlkYXRlRXJyb3JMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIHZhciBtYXhGaWxlRXJyb3JNZXNzZW5nZXIgPSBWYWxpZGF0aW9uRXJyb3JMb2NhbGl6ZXIubWF4RmlsZUNvdW50O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0RmlsZUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFeHRGaWxlID0gZXh0RmlsZUxpc3RbaV07XG4gICAgICAgIGN1cnJlbnRFeHRGaWxlID0gdmFsaWRhdGVFeHRGaWxlKGN1cnJlbnRFeHRGaWxlLCB2YWxpZGF0b3IsIGxvY2FsVmFsaWRhdG9yUHJvcHMsIFZhbGlkYXRpb25FcnJvckxvY2FsaXplcik7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0ZUV4dEZpbGVMaXN0IGFmdGVyIHZhbGlkYXRpb25cIiwgY3VycmVudEV4dEZpbGUpO1xuICAgICAgICBpZiAoY3VycmVudEV4dEZpbGUudmFsaWQpIHtcbiAgICAgICAgICAgIC8vbm90IHZhbGlkIGR1ZSB0byBmaWxlIGNvdW50IGxpbWl0XG4gICAgICAgICAgICB2YXIgdmFsaWQgPSByZW1haW5pbmcgPiAwO1xuICAgICAgICAgICAgY3VycmVudEV4dEZpbGUudmFsaWQgPSB2YWxpZDtcbiAgICAgICAgICAgIC8vYWRkIGVycm9yIGFib3V0IGFtb3VudFxuICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlLmVycm9ycyA9IGN1cnJlbnRFeHRGaWxlLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICA/IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgY3VycmVudEV4dEZpbGUuZXJyb3JzLCB0cnVlKSwgW21heEZpbGVFcnJvck1lc3NlbmdlcihtYXhGaWxlcyB8fCBJbmZpbml0eSldLCBmYWxzZSkgOiBbbWF4RmlsZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVzIHx8IEluZmluaXR5KV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW1haW5pbmctLTtcbiAgICAgICAgfVxuICAgICAgICBmaWxlTGlzdFJlc3VsdC5wdXNoKGN1cnJlbnRFeHRGaWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVMaXN0UmVzdWx0O1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlXG4gKiBAcGFyYW0gdmFsaWRhdG9yXG4gKiBAcGFyYW0gdmFsaWRhdG9yUHJvcHNcbiAqIEBwYXJhbSBsb2NhbEVycm9yc1xuICogQHJldHVybnNcbiAqL1xudmFyIHZhbGlkYXRlRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlLCB2YWxpZGF0b3IsIHZhbGlkYXRvclByb3BzLCBsb2NhbEVycm9ycykge1xuICAgIHZhciBleHRGaWxlUmVzdWx0ID0gX19hc3NpZ24oe30sIGV4dEZpbGUpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAvL1RPLURPOiBBZGQgZXh0cmEgdmFsaWRhdGlvbiBmb3IgaW5kaXZpZHVhbCBwcm9wcyBldmVuIGlmIEZJbGUgb2JqZWN0IHdhcyBub3QgZ2l2ZW5cbiAgICBpZiAoIWV4dEZpbGUuZmlsZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIGV4dEZpbGVSZXN1bHQpO1xuICAgIH1cbiAgICAvL1RPLURPOiBhZGQgXCJvdmVycmlkZVZhbGlkYXRpb25cIiBwcm9wIHRvIGlnbm9yZSB0aGUgcmVzdCBvZiB2YWxpZGF0b3JzIGxpa2UgYWNjZXB0IGFuZCBtYXhGaWxlU2l6ZVxuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgdmFyIHJlc3VsdEN1c3RvbVZhbGlkYXRpb24gPSB2YWxpZGF0b3IoZXh0RmlsZVJlc3VsdC5maWxlKTtcbiAgICAgICAgdmFyIGVycm9yc1Jlc3VsdCA9IHJlc3VsdEN1c3RvbVZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAgICBpZiAoZXJyb3JzUmVzdWx0KVxuICAgICAgICAgICAgZXJyb3JzLnB1c2guYXBwbHkoZXJyb3JzLCBlcnJvcnNSZXN1bHQpO1xuICAgICAgICAvL3JldHVybiB7IC4uLmV4dEZpbGVSZXN1bHQsIC4uLnZhbGlkYXRvcihleHRGaWxlUmVzdWx0LmZpbGUgYXMgRmlsZSkgfTtcbiAgICB9XG4gICAgdmFyIG1heEZpbGVTaXplID0gdmFsaWRhdG9yUHJvcHMubWF4RmlsZVNpemUsIGFjY2VwdCA9IHZhbGlkYXRvclByb3BzLmFjY2VwdDtcbiAgICAvL2NvbnNvbGUubG9nKFwiVmFsaWRhdGlvblwiLCBtYXhGaWxlU2l6ZSwgYWNjZXB0KTtcbiAgICAvL2NoZWNrIGZpbGUgc2l6ZVxuICAgIHZhciBmaWxlID0gZXh0RmlsZS5maWxlO1xuICAgIGlmIChtYXhGaWxlU2l6ZSAmJiBmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xuICAgICAgICB2YXIgbWF4RmlsZVNpemVFcnJvck1lc3NlbmdlciA9IGxvY2FsRXJyb3JzLm1heFNpemVFcnJvcjtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIlNpemUgZXJyb3JcIiwgbWF4RmlsZVNpemVFcnJvck1lc3NlbmdlcihtYXhGaWxlU2l6ZSkpO1xuICAgICAgICBlcnJvcnMucHVzaChtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVTaXplKSk7XG4gICAgfVxuICAgIC8vY2hlY2sgZmlsZSB0eXBlXG4gICAgaWYgKGFjY2VwdCAmJiAhdmFsaWRhdGVBY2NlcHQoc2VwYXJhdGVBY2NlcHQoYWNjZXB0KSwgZmlsZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobG9jYWxFcnJvcnMuYWNjZXB0RXJyb3IpO1xuICAgIH1cbiAgICB2YXIgaXNWYWxpZCA9IGVycm9ycy5sZW5ndGggPT09IDA7XG4gICAgZXh0RmlsZVJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlUmVzdWx0KSwgeyB2YWxpZDogaXNWYWxpZCwgZXJyb3JzOiAhaXNWYWxpZCA/IGVycm9ycyA6IHVuZGVmaW5lZCB9KTtcbiAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGlvbiBleHRGaWxlUmVzdWx0XCIsIGV4dEZpbGVSZXN1bHQpO1xuICAgIHJldHVybiBleHRGaWxlUmVzdWx0O1xufTtcbi8qKlxuICogRnVuY3Rpb24gdGhhdCB2YWxpZGF0ZSB3aGV0aGVyIGEgZmlsZSBpcyB2YWxpZCwgb3Igbm90XG4gKiBhY2NvcmRpbmcgdG8gdGhlIEZpbGV2YWxpZGF0b3IgcHJvcGVydGllc1xuICogQHBhcmFtIGZpbGUgYSBGaWxlIG9iamVjdCB0byBiZSBldmFsdWF0ZWRcbiAqIEBwYXJhbSB2YWxpZGF0b3JQcm9wcyB0aGUgdmFsaWRhdG9yIG9iamVjdFxuICogQHJldHVybnMgYSBGaWxlVmFsaWRhdGVkIG9iamVjdFxuICovXG52YXIgdmFsaWRhdGVGaWxlID0gZnVuY3Rpb24gKGZpbGUsIHZhbGlkYXRvciwgdmFsaWRhdG9yUHJvcHMsIGxvY2FsRXJyb3JzKSB7XG4gICAgdmFyIGlkR2VuZXJhdGVkID0gRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpO1xuICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IGlkOiBpZEdlbmVyYXRlZCwgZmlsZTogZmlsZSB9LCB2YWxpZGF0b3IoZmlsZSkpO1xuICAgIH1cbiAgICB2YXIgbWF4RmlsZVNpemUgPSB2YWxpZGF0b3JQcm9wcy5tYXhGaWxlU2l6ZSwgYWNjZXB0ID0gdmFsaWRhdG9yUHJvcHMuYWNjZXB0O1xuICAgIC8vY2hlY2sgZmlsZSBzaXplXG4gICAgaWYgKG1heEZpbGVTaXplICYmIGZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG4gICAgICAgIHZhciBtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyID0gbG9jYWxFcnJvcnMubWF4U2l6ZUVycm9yO1xuICAgICAgICBlcnJvcnMucHVzaChtYXhGaWxlU2l6ZUVycm9yTWVzc2VuZ2VyKG1heEZpbGVTaXplKSk7XG4gICAgfVxuICAgIC8vY2hlY2sgZmlsZSB0eXBlXG4gICAgLy8gY29uc3QgYWxsb3dlZFR5cGVzID0gYWNjZXB0LmZpbHRlcigodHlwZSkgPT4gKGZpbGUudHlwZSA9PT0gdHlwZSkpXG4gICAgaWYgKGFjY2VwdCAmJiAhdmFsaWRhdGVBY2NlcHQoc2VwYXJhdGVBY2NlcHQoYWNjZXB0KSwgZmlsZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobG9jYWxFcnJvcnMuYWNjZXB0RXJyb3IpO1xuICAgIH1cbiAgICB2YXIgZmlsZVJlc3VsdCA9IHtcbiAgICAgICAgaWQ6IGlkR2VuZXJhdGVkLFxuICAgICAgICBmaWxlOiBmaWxlLFxuICAgICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgZXJyb3JzOiBlcnJvcnNcbiAgICB9O1xuICAgIC8vIGxvZ2ljIGhlcmVcbiAgICByZXR1cm4gZmlsZVJlc3VsdDtcbn07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBiZXR3ZW4gMCBhbmQgM1xuICogd2hlcmVcbiAqIDAgPT4gZXJyb3JcbiAqIDEgPT4gdXBsb2FkaW5nXG4gKiAyID0+IHN1Y2Nlc3NcbiAqIDMgPT4gdW5kZWZpbmVkXG4gKiBAcmV0dXJucyBhIHJhbmRvbSB1cGxvYWQgc3RhdHVzIG9yIHVuZGVmaW5lZFxuICovXG52YXIgZ2V0UmFuZG9tVXBsb2FkU3RhdHVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBnZXRSYW5kb21JbnQoMCwgNCk7XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gXCJlcnJvclwiO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBcInVwbG9hZGluZ1wiO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBcInN1Y2Nlc3NcIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufTtcblxuLyoqXG4gKiBsaXN0IG9mIGR1bXkgZXJyb3JzIGluIGVuZ2xpc2hcbiAqL1xudmFyIGxpc3RPZkVycm9ycyA9IFtcbiAgICBcIkZpbGUgaXMgdG9vIGJpZy4gTWF4IGZpbGUgc2l6ZSBhbGxvd2VkIGlzIDgwbWIuXCIsXG4gICAgXCJGaWxlJ3MgdHlwZSBpcyBub3QgYWxsb3dlZC5cIixcbiAgICBcIk1heCBhbW91bnQgb2YgZmlsZXMgKDI4KSBoYXMgYmVlbiByZWFjaGVkLlwiXG5dO1xuXG4vKipcbiAqIE1ha2UgYSB2YWxpZGF0ZWQgZmlsZSB0aGF0IGlzIHJlYWR5IHRvIGJlIHVzZWQgb24gRmlsZUl0ZW0gY29tcG9uZW50LFxuICogaWYgdmFsaWQgaXMgbm90IHNldCwgYSByYW5kb20gb3BlcmF0aW9uIHdpbGwgZGVjaWRlIHdoZXRoZXIgdGhlIGZpbGUgaXMgdmFsaWQgb3Igbm90XG4gKiBJZiB2YWxpZCBpcyBmYWxzZSwgdGhlbiB0aGUgbmF0dXJhbCBvcmRlciBpcyBub3QgdG8gYmUgdXBsb2FkYWJsZSBhbmQgd29udCBoYXZlIHVwbG9hZCBtZXNzYWdlIG5vciB1cGxvYWQgc3RhdHVzXG4gKiBJZiB2YWxpZCBpcyB0cnVlLCB0aGVuIGZpbGUgY2FuIGJlIHVwbG9hZGVkIGFuZCBjYW4gaGF2ZSB1cGxvYWQgbWVzc2FnZSBpZiB0aGUgc3RhdHVzIGlzIHN1Y2NlcyBvciBlcnJvclxuICogQHBhcmFtIGZpbGUgVGhlIGZpbGVcbiAqIEBwYXJhbSB2YWxpZCB0cnVlIGlmIGl0IGlzIGEgdmFsaWQgZmlsZSwgb3RoZXJ3aXNlIGlzIGZhbHNlXG4gKiBAcGFyYW0gdXBsb2FkU3RhdHVzIHRoZSBjdXJyZW50IHVwbG9hZCBzdGF0dXMuIElmIG5vdCBnaXZlbiBhIHJhbmRvbSB1cGxvYWQgc3RhdHVzIHdpbGwgYmUgc2V0XG4gKiBAcGFyYW0gdXBsb2FkTWVzc2FnZSB0aGUgdXBsb2FkIG1lc3NhZ2UgYWZ0ZXIgdXBsb2FkaW5nXG4gKiBAcmV0dXJucyBhIFZhaWRhdGVkIEZpbGUgb2JqZWN0XG4gKi9cbnZhciBtYWtlU3ludGhldGljRXh0RmlsZSA9IGZ1bmN0aW9uIChmaWxlLCB2YWxpZCwgdXBsb2FkU3RhdHVzLCB1cGxvYWRNZXNzYWdlKSB7XG4gICAgaWYgKHZhbGlkID09PSB2b2lkIDApIHsgdmFsaWQgPSAoTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyOCkgJSAyID09PSAwKTsgfVxuICAgIC8vaWYgdmFsaWQsIG5hdHVyYWxseSwgY2FuIGJlIHVwbG9hZGVkXG4gICAgdmFyIGVycm9ycyA9IFtdO1xuICAgIHZhciBuZXdVcG9hZFN0YXR1cyA9IHVwbG9hZFN0YXR1cyB8fCBnZXRSYW5kb21VcGxvYWRTdGF0dXMoKTtcbiAgICB2YXIgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IHVwbG9hZE1lc3NhZ2UgfHwgXCJcIjtcbiAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgLy93ZSBjYW4gZGVjaWRlIGFjY29yZGluZyB0byB1cGxvYWQgc3RhdHVzIFxuICAgICAgICBpZiAoIXVwbG9hZE1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmV3VXBvYWRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IFwiVXBsb2FkIGZhaWxlZC4gVGhlcmUgd2FzIGFuIGVycm9yXCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVVwbG9hZE1lc3NhZ2UgPSBcIkZpbGUgd2FzIHN1Y2Nlc3NmdWxseSB1cGxvYWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogdXBsb2FkTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlcnJvcnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvL2lmIG5vdCB2YWxpZCwganVzdCBzaG93IGVycm9yIG1lc3NhZ2VzXG4gICAgICAgIHZhciByYW5kSW50ID0gZ2V0UmFuZG9tSW50KDAsIDMpO1xuICAgICAgICBlcnJvcnMucHVzaChsaXN0T2ZFcnJvcnNbcmFuZEludF0pO1xuICAgICAgICBuZXdVcG9hZFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgY3VzdG9tVXBsb2FkTWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy9ub3cgbWFrZSBhIEZpbGUgVmFsaWRhdGVkIGluc3RhbmNlIFxuICAgIHZhciBuZXdGaWxlVmFsaWRhdGVkID0ge1xuICAgICAgICBpZDogRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpLFxuICAgICAgICB2YWxpZDogdmFsaWQsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgIHVwbG9hZFN0YXR1czogbmV3VXBvYWRTdGF0dXMsXG4gICAgICAgIHVwbG9hZE1lc3NhZ2U6IGN1c3RvbVVwbG9hZE1lc3NhZ2UsXG4gICAgICAgIGVycm9yczogZXJyb3JzXG4gICAgfTtcbiAgICByZXR1cm4gbmV3RmlsZVZhbGlkYXRlZDtcbn07XG5cbnZhciBleHRGaWxlTW9jayA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBpZCB8fCBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCksXG4gICAgICAgIG5hbWU6IFwiZmlsZU5hbWUuZXh0XCIsXG4gICAgICAgIHNpemU6IDI4ICogMTAyNCAqIDEwMjQsXG4gICAgICAgIHR5cGU6IFwiZmlsZXMtdWkvbW9ja1wiLFxuICAgICAgICBmaWxlOiBjcmVhdGVTeW50aGV0aWNGaWxlKFwiZmlsZU5hbWUuZXh0XCIsIDI4ICogMTAyNCAqIDEwMjQsIFwiZmlsZXMtdWkvbW9ja1wiKSxcbiAgICAgICAgZXJyb3JzOiBsaXN0T2ZFcnJvcnMsXG4gICAgICAgIHVwbG9hZE1lc3NhZ2U6IFwidXBsb2FkZWRcIixcbiAgICAgICAgdXBsb2FkU3RhdHVzOiBcInByZXBhcmluZ1wiLFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHByb2dyZXNzOiAyOCxcbiAgICAgICAgeGhyOiBuZXcgWE1MSHR0cFJlcXVlc3QoKSxcbiAgICAgICAgZXh0cmFEYXRhOiB7XG4gICAgICAgICAgICBleHRyYURhdGExOiBcImZpbGVzLXVpIGlzIHRoZSBiZXN0XCIsXG4gICAgICAgICAgICBleHRyYURhdGEyOiB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJmaWxlcy11aS5tb2NrXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGRvd25sb2FkVXJsOiBcImh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9tb2NrL2ZpbGUtZG93bmxvYWRcIlxuICAgIH07XG59O1xuXG5mdW5jdGlvbiBhZGRFeHRyYURhdGEoZm9ybURhdGEsIGV4dHJhRGF0YSkge1xuICAgIC8vaGVhZGVyc1xuICAgIHZhciBleHRyYURhdGFLZXlzID0gT2JqZWN0LmtleXMoZXh0cmFEYXRhIHx8IHt9KTtcbiAgICAvL2NvbnN0IGhlYWRlclZhbHVlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKGhlYWRlcnMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0cmFEYXRhS2V5cy5sZW5ndGggJiYgZXh0cmFEYXRhOyBpKyspIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZEZpbGUgZXh0cmFEYXRhXCIsIGV4dHJhRGF0YUtleXNbaV0sIGV4dHJhRGF0YVtleHRyYURhdGFLZXlzW2ldXSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChleHRyYURhdGFLZXlzW2ldLCBleHRyYURhdGFbZXh0cmFEYXRhS2V5c1tpXV0pO1xuICAgIH1cbiAgICAvLyBmb3JtRGF0YS5hcHBlbmQoXCJvdGhlclZhbHVlXCIsIFwiSEFBQUFBQUFBQUFBQUFBYVwiKTtcbn1cblxuZnVuY3Rpb24gYWRkSGVhZGVycyh4aHIsIGhlYWRlcnMpIHtcbiAgICAvL2hlYWRlcnNcbiAgICB2YXIgaGVhZGVyS2V5cyA9IE9iamVjdC5rZXlzKGhlYWRlcnMgfHwge30pO1xuICAgIC8vY29uc3QgaGVhZGVyVmFsdWVzOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoaGVhZGVycyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJLZXlzLmxlbmd0aCAmJiBoZWFkZXJzOyBpKyspIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZEZpbGUgaGVhZGVyc1wiLCBoZWFkZXJLZXlzW2ldLCBoZWFkZXJzW2hlYWRlcktleXNbaV1dKTtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyS2V5c1tpXSwgaGVhZGVyc1toZWFkZXJLZXlzW2ldXSk7XG4gICAgfVxufVxuXG52YXIgVElNRU9VVF9FUlJPUl9SRVNQT05TRSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBtZXNzYWdlOiBcIlRpbWVvdXQgZXJyb3JcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBBQk9SVEVEX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiVXBsb2FkIGFib3J0ZWRcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBKU09OX1BBUlNFX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiRXJyb3Igd2hlbiBwYXJzaW5nIEpTT04gcmVzcG9uc2VcIixcbiAgICBwYXlsb2FkOiB7fVxufTtcbnZhciBVTkVYUEVDVEVEX0VSUk9SX1JFU1BPTlNFID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIG1lc3NhZ2U6IFwiVW5leHBlY3RlZCBlcnJvclwiLFxuICAgIHBheWxvYWQ6IHt9XG59O1xudmFyIE5PX1hIUl9QUk9WSURFRF9FUlJPUiA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiBcIlVuYWJsZSB0byB1cGxvYWQuIHhociBvYmplY3Qgd2FzIG5vdCBwcm92aWRlZFwiLCB1cGxvYWRTdGF0dXM6IFwiZXJyb3JcIiwgc2VydmVyUmVzcG9uc2U6IHsgc3VjY2VzczogZmFsc2UsIH0gfSk7XG59O1xuXG52YXIgbWFrZVNlcnZlclJlc3BvbnNlID0gZnVuY3Rpb24gKHN1Y2Nlc3MsIG1lc3NhZ2UsIHBheWxvYWQpIHtcbiAgICB2YXIgcmVzdWx0ID0geyBzdWNjZXNzOiBzdWNjZXNzLCBtZXNzYWdlOiBtZXNzYWdlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgSnNvblBhcnNlUmVzcG9uc2UgPSBmdW5jdGlvbiAoeGhyKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGpzb25SZXNwb25zZSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlKTtcbiAgICAgICAgdmFyIHN1Y2Nlc3MgPSBqc29uUmVzcG9uc2Uuc3VjY2VzcztcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBqc29uUmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgdmFyIHBheWxvYWQgPSBqc29uUmVzcG9uc2UucGF5bG9hZDtcbiAgICAgICAgdmFyIGZ1aVJlc3BvbnNlID0ge1xuICAgICAgICAgICAgc3VjY2VzczogdHlwZW9mIHN1Y2Nlc3MgPT09IFwiYm9vbGVhblwiID8gc3VjY2VzcyA6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyBtZXNzYWdlIDogXCJFcnJvciBvbiBtZXNzYWdlIHJlc3BvbnNlXCIsXG4gICAgICAgICAgICBwYXlsb2FkOiBwYXlsb2FkIHx8IHt9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmdWlSZXNwb25zZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlVcGxvYWQgRVJST1JcIiwgZXJyb3IpO1xuICAgICAgICByZXR1cm4gSlNPTl9QQVJTRV9FUlJPUl9SRVNQT05TRTtcbiAgICB9XG59O1xudmFyIG1ha2VTdWNjZXNzVXBsb2FkUmVzcG9uc2UgPSBmdW5jdGlvbiAoZXh0RmlsZSwgcmVzcG9uc2VGdWkpIHtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHNlcnZlclJlc3BvbnNlOiByZXNwb25zZUZ1aSwgdXBsb2FkTWVzc2FnZTogcmVzcG9uc2VGdWkubWVzc2FnZSwgdXBsb2FkU3RhdHVzOiBcInN1Y2Nlc3NcIiB9KTtcbn07XG52YXIgbWFrZUVycm9yVXBsb2FkUmVzcG9uc2UgPSBmdW5jdGlvbiAoZXh0RmlsZSwgcmVzcG9uc2VGdWkpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwibWFrZUVycm9yVXBsb2FkUmVzcG9uc2VcIiwgZXh0RmlsZSwgcmVzcG9uc2VGdWkpO1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogcmVzcG9uc2VGdWkubWVzc2FnZSwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIsIHNlcnZlclJlc3BvbnNlOiByZXNwb25zZUZ1aSB9KTtcbn07XG5cbi8qKlxuICogVXBsb2FkcyBvbmUgZm9ybURhdGEgb2JqZWN0IHRvIGEgZ2l2ZW4gZW5kcG9pbnQgaW4gYSBwcm9taXNpZmllZCB3YXlcbiAqIEBwYXJhbSB4aHIgWE1MSFRUUHJlcXVlc3Qgb2JqZWN0XG4gKiBAcGFyYW0gbWV0aG9kIG1ldGhvZCBmb3IgdXBsb2FkaW5nXG4gKiBAcGFyYW0gZW5kcG9pbnQgZW5kcG9pbnQgdG8gdXBsb2FkIHRoZSBmaWxlXG4gKiBAcGFyYW0gZGF0YSBGcm9tRGF0YSBvYmplY3QgdG8gcGVyZm9ybSBtdWx0aXBhcnQgZm9ybSBkYXRhIHVwbG9hZFxuICogQHBhcmFtIGhlYWRlcnMgdGhlIHNldCBvZiBoZWFkZXJzXG4gKiBAcmV0dXJucyBhIHNlcnZlciByZXNwb25zZSB0aGF0IGNvbnNpc3RzIG9uIHtzdGF0dXMsIHBheWxvYWQsIG1lc3NhZ2V9XG4gKi9cbnZhciB1cGxvYWRGb3JtRGF0YSA9IGZ1bmN0aW9uICh4aHIsIG1ldGhvZCwgZW5kcG9pbnQsIGRhdGEsIGhlYWRlcnMpIHtcbiAgICBpZiAobWV0aG9kID09PSB2b2lkIDApIHsgbWV0aG9kID0gXCJQT1NUXCI7IH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIHVwbG9hZEZpbGVcIiwgeGhyLCBtZXRob2QsIGVuZHBvaW50LCBkYXRhLCBoZWFkZXJzKTtcbiAgICAgICAgdmFyIGZpbmFsTWV0aG9kID0gW1wiUE9TVFwiLCBcIlBVVFwiLCBcIlBBVENIXCJdLmluY2x1ZGVzKG1ldGhvZC50b1VwcGVyQ2FzZSgpKSA/IG1ldGhvZCA6IFwiUE9TVFwiO1xuICAgICAgICAvKiAgIGxldCBsYXN0TGFzdFN0YXRlOiBudW1iZXIgPSAtMTtcbiAgICAgICAgICBsZXQgbGFzdFN0YXRlOiBudW1iZXIgPSAwO1xuICAgICAgICAgIGxldCBqdW1wZWQ6IGJvb2xlYW4gPSBmYWxzZTsgKi9cbiAgICAgICAgeGhyLnVwbG9hZC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIHVwbG9hZEZpbGUgb25Mb2FkXCIsIHhoci5yZWFkeVN0YXRlLCB4aHIucmVzcG9uc2UpO1xuICAgICAgICB9O1xuICAgICAgICB4aHIudXBsb2FkLm9udGltZW91dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUoVElNRU9VVF9FUlJPUl9SRVNQT05TRSk7IH07XG4gICAgICAgIHhoci51cGxvYWQub25hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgQUJPUlRFRUVFRERERFwiKTtcbiAgICAgICAgICAgIHJlc29sdmUoQUJPUlRFRF9FUlJPUl9SRVNQT05TRSk7XG4gICAgICAgIH07XG4gICAgICAgIHhoci5vbmxvYWRlbmQgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IH07XG4gICAgICAgIC8vIGxpc3RlbiBmb3IgYHByb2dyZXNzYCBldmVudFxuICAgICAgICAvL2N1cnJlbnRseSBsaXN0ZW5pbmcgb24gRmlsZUl0ZW0gY29tcG9uZW50IGhvb2tcbiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGaW5pc2hlZFwiLCB4aHIpO1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgdXBsb2FkRmlsZSBvbnJlYWR5c3RhdGVjaGFuZ2UgZS50eXBlXCIsIGUudHlwZSk7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSB1cGxvYWRGaWxlIG9ucmVhZHlzdGF0ZWNoYW5nZVwiLCB4aHIucmVhZHlTdGF0ZSwgeGhyLnJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAvL2xhc3RMYXN0U3RhdGUgPSBsYXN0U3RhdGU7XG4gICAgICAgICAgICAgICAgLy9sYXN0U3RhdGUgPSB4aHIucmVhZHlTdGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5yZXNwb25zZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGVyZSBpcyB0aCBhbnN3ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoSnNvblBhcnNlUmVzcG9uc2UoeGhyKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2Vycm9yIHVuZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEVNUFRZIHN0YXR1c1wiLCB4aHIuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRnVpX3VwbG9hZEZvcm1EYXRhIEVNUFRZIHJlYWR5U3RhdGVcIiwgeGhyLnJlYWR5U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJGdWlfdXBsb2FkRm9ybURhdGEgRU1QVFkgdXBsb2FkXCIsIHhoci51cGxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZ1aV91cGxvYWRGb3JtRGF0YSBFTVBUWSBhYm9ydFwiLCB4aHIuYWJvcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zdCBqdW1wZWQgPSBsYXN0TGFzdFN0YXRlIC0gbGFzdExhc3RTdGF0ZSAhPT0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoQUJPUlRFRF9FUlJPUl9SRVNQT05TRSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pOyB9O1xuICAgICAgICAvLyBvcGVuIHJlcXVlc3RcbiAgICAgICAgeGhyLm9wZW4oZmluYWxNZXRob2QsIGVuZHBvaW50LCB0cnVlKTtcbiAgICAgICAgLy9hZGQgaGVhZGVyIHRvIHJlcXVlc3RcbiAgICAgICAgYWRkSGVhZGVycyh4aHIsIGhlYWRlcnMpO1xuICAgICAgICAvL3N0YXJ0IHVwbG9hZGluZ1xuICAgICAgICB4aHIuc2VuZChkYXRhKTtcbiAgICB9KTtcbn07XG4vKipcbiAqXG4gKiBAcGFyYW0gZmlsZSB0aGUgZXh0ZW5kZWQgZmlsZSB0byBiZSB1cGxvYWRlZFxuICogQHBhcmFtIHVybCB0aGUgZW5kcG9pbnRcbiAqIEBwYXJhbSBtZXRob2QgdGhlIG1ldGhvZCBmb3IgdXBsb2FkaW5nXG4gKiBAcGFyYW0gaGVhZGVycyBoZWFkZXJzIGZvciByZXF1ZXN0XG4gKiBAcmV0dXJuc1xuICovXG52YXIgdXBsb2FkRXh0RmlsZSA9IGZ1bmN0aW9uIChleHRGaWxlLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXBsb2FkZXIsIGxvY2FsTWV0aG9kLCBmaWxlVG9VcGxvYWQsIGZvcm1EYXRhLCBmaW5hbEV4dHJhRGF0YSwgcmVzcG9uc2VGdWk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRlciA9IGV4dEZpbGUueGhyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXBsb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShOT19YSFJfUFJPVklERURfRVJST1IoZXh0RmlsZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsTWV0aG9kID0gbWV0aG9kIHx8IFwiUE9TVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVUb1VwbG9hZCA9IGV4dEZpbGUuZmlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCh1cGxvYWRMYWJlbCB8fCBcImZpbGVcIiwgZmlsZVRvVXBsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEV4dHJhRGF0YSA9IF9fYXNzaWduKHt9LCBleHRGaWxlLmV4dHJhVXBsb2FkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRXh0cmFEYXRhKGZvcm1EYXRhLCBmaW5hbEV4dHJhRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VGdWkgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRm9ybURhdGEodXBsb2FkZXIsIGxvY2FsTWV0aG9kLCB1cmwsIGZvcm1EYXRhLCBoZWFkZXJzIHx8IHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VGdWkgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRnVpLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhdHVzIGlzIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtYWtlU3VjY2Vzc1VwbG9hZFJlc3BvbnNlKGV4dEZpbGUsIHJlc3BvbnNlRnVpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXMgaXMgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtYWtlRXJyb3JVcGxvYWRSZXNwb25zZShleHRGaWxlLCByZXNwb25zZUZ1aSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkUHJvbWlzZVhIUiB1cGxvYWRQcm9taXNlWEhSIEVSUk9SXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1ha2VFcnJvclVwbG9hZFJlc3BvbnNlKGV4dEZpbGUsIFVORVhQRUNURURfRVJST1JfUkVTUE9OU0UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTsgfSldO1xuICAgIH0pO1xufSk7IH07XG5mdW5jdGlvbiB1cGxvYWRGaWxlKGZpbGUsIHVybCwgbWV0aG9kLCBsYWJlbCwgaGVhZGVycykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZvcm1EYXRhLCBzZXJ2ZXJSZXNwb25zZTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGxhYmVsIHx8IFwiZmlsZVwiLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRm9ybURhdGEobmV3IFhNTEh0dHBSZXF1ZXN0KCksIG1ldGhvZCwgdXJsLCBmb3JtRGF0YSwgaGVhZGVycyldO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc2VydmVyUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZFByb21pc2VYSFIgdXBsb2FkUHJvbWlzZVhIUiBFUlJPUlwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoVU5FWFBFQ1RFRF9FUlJPUl9SRVNQT05TRSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfSk7XG59XG5cbnZhciB1bmV4cGVjdGVkRXJyb3JVcGxvYWRSZXN1bHQgPSBmdW5jdGlvbiAoZXh0RmlsZSkge1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXh0RmlsZSksIHsgdXBsb2FkTWVzc2FnZTogXCJVbmV4cGVjdGVkIGVycm9yXCIsIHVwbG9hZFN0YXR1czogXCJlcnJvclwiLCBzZXJ2ZXJSZXNwb25zZToge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBcIkVycm9yIG9uIHVwbG9hZDogdW5leHBlY3RlZCBlcnJvciBcIixcbiAgICAgICAgICAgIHBheWxvYWQ6IHt9LFxuICAgICAgICB9IH0pO1xufTtcbnZhciB1bmFibGVUb1VwbG9hZFJlc3VsdCA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGV4dEZpbGUuaWQsXG4gICAgICAgIHVwbG9hZGVkRmlsZTogX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZE1lc3NhZ2U6IFwiVW5hYmxlIHRvIHVwbG9hZC4gWEhSIHdhcyBub3QgcHJvdmlkZWRcIiwgdXBsb2FkU3RhdHVzOiBcImVycm9yXCIgfSksXG4gICAgICAgIHNlcnZlclJlc3BvbnNlOiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiRXJyb3Igb24gdXBsb2FkOiBVbmFibGUgdG8gdXBsb2FkLiBYSFIgd2FzIG5vdCBwcm92aWRlZCBcIixcbiAgICAgICAgICAgIHBheWxvYWQ6IHt9LFxuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgY29tcGxldGVVcGxvYWRSZXN1bHQgPSBmdW5jdGlvbiAoZXh0RmlsZSwgc2VydmVyUmVzcG9uc2UsIHVwbG9hZFN0YXR1c3Jlc3VsdCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBleHRGaWxlLmlkLFxuICAgICAgICB1cGxvYWRlZEZpbGU6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB1cGxvYWRNZXNzYWdlOiBzZXJ2ZXJSZXNwb25zZS5tZXNzYWdlLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1c3Jlc3VsdCB9KSxcbiAgICAgICAgc2VydmVyUmVzcG9uc2U6IHNlcnZlclJlc3BvbnNlXG4gICAgfTtcbn07XG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSB4aHIgYXR0cmlidXRlIGZvciBwZXJmb3JtaW5nIHVwbG9hZHNcbiAqIEBwYXJhbSBleHRGaWxlTGlzdCB0aGUgbGlzdCBvZiBleHRlbmRlZCBmaWxlc1xuICogQHJldHVybnMgdGhlIGFycmF5IG9mIGV4dEZpbGVzIHdpdGggdGhlIHhociBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWRcbiAqL1xudmFyIHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0ID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0KSB7XG4gICAgaWYgKCFleHRGaWxlTGlzdClcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBleHRGaWxlTGlzdC5tYXAoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRGaWxlKSwgeyB4aHI6IG5ldyBYTUxIdHRwUmVxdWVzdCgpIH0pO1xuICAgIH0pO1xufTtcbi8qKlxuICogVXBkYXRlcyB0aGUgdXBsb2FkU3RhdHVzIG9mIHRoZSBnaXZlbiBleHRGaWxlXG4gKiBmcm9tIFwicHJlcGFyaW5nXCIgdG8gXCJ1cGxvYWRpbmdcIlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGVcbiAqIEByZXR1cm5zIHRoZSBleHRlbmRlZCBmaWxlIHdpdGggdXBsb2FkU3RhdHVzIHVwZGF0ZWQgdG8gXCJ1cGxvYWRpbmdcIlxuICovXG52YXIgaW5zdGFudFByZXBhcmluZ1RvVXBsb2FkT25lID0gZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICBpZiAoZXh0RmlsZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpIHtcbiAgICAgICAgLy9mb3IgRXh0RmlsZSBpbnN0YW5jZVxuICAgICAgICBleHRGaWxlLnVwbG9hZFN0YXR1cyA9IFwidXBsb2FkaW5nXCI7XG4gICAgICAgIC8vZm9yIEV4dEZpbGUgdHlwZVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJ1cGxvYWRpbmdcIiB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGV4dEZpbGU7XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGV4dEZpbGUgdGhlIGV4dGVuZGVkIGZpbGVcbiAqIEByZXR1cm5zXG4gKi9cbnZhciBwcmVwYXJpbmdUb1VwbG9hZE9uZSA9IGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoZXh0RmlsZS51cGxvYWRTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAvL2ZvciBFeHRGaWxlIGluc3RhbmNlXG4gICAgICAgICAgICAgICAgZXh0RmlsZS51cGxvYWRTdGF0dXMgPSBcInVwbG9hZGluZ1wiO1xuICAgICAgICAgICAgICAgIC8vZm9yIEV4dEZpbGUgdHlwZVxuICAgICAgICAgICAgICAgIHJlc29sdmUoX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dEZpbGUpLCB7IHVwbG9hZFN0YXR1czogXCJ1cGxvYWRpbmdcIiB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShleHRGaWxlKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBTbGVlcHMgZm9yIDEyMDAgbWlsaXNlY29uZHMgZm9yIHNob3dpbmcgYSBiZXR0ZXIgdHJhbnNpdGlvblxuICogb24gdXBsb2FkaW5nXG4gKiBAcGFyYW0gdGltZSB0aGUgdGltZSB0byBzbGVlcCBpbiBtaWxpc2Vjb25kc1xuICogQHJldHVybnMgdHJ1ZSBpcyBldmVyeXRoaW5nIGlzIG9rXG4gKi9cbnZhciBzbGVlcFRyYW5zaXRpb24gPSBmdW5jdGlvbiAodGltZSkge1xuICAgIGlmICh0aW1lID09PSB2b2lkIDApIHsgdGltZSA9IDE1MDA7IH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0sIHRpbWUpO1xuICAgIH0pO1xufTtcbi8qKlxuICogUmVtb3ZlcyB0aGUgZGVsZXRlZCBmaWxlcyBhbmQgdXBkYXRlcyB0aGUgYWJvcnRlZCBvbmVzIHdpdGggYSBtZXNzYWdlXG4gKiBAcGFyYW0gYXJyRXh0RmlsZSBpbmNvbW1pbmcgYXJyIG9mIGV4dEZsZSBpbnN0YW5jZXNcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIEV4dEZsZSBvYmplY3RzXG4gKi9cbnZhciBzYW5pdGl6ZUFyckV4dEZpbGUgPSBmdW5jdGlvbiAoYXJyRXh0RmlsZSkge1xuICAgIHJldHVybiBhcnJFeHRGaWxlLmZpbHRlcihmdW5jdGlvbiAoZXh0RmlsZUluc3RhbmNlKSB7IHZhciBfYTsgcmV0dXJuICEoKF9hID0gZXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlbGV0ZWQpOyB9KVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwiYWJvcnRlZFwiXG4gICAgICAgICAgICAmJiAhZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UpIHtcbiAgICAgICAgICAgIC8vIFRPLURPOiBhZCBsb2NhbGl6YXRpb24gZm9yIHRoaXMgbWVzc2FnZVxuICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBcIlVwbG9hZCBhYm9ydGVkIGJ5IHVzZXJcIjtcbiAgICAgICAgICAgIC8vZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiZXJyb3JcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZShleHRGaWxlSW5zdGFuY2UpO1xuICAgIH0pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBleHRGaWxlSW5zdGFuY2VcbiAqIEBwYXJhbSBleHRGaWxlb2JqXG4gKi9cbnZhciBzZXROZXh0VXBsb2FkU3RhdHVzID0gZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSwgZXh0RmlsZW9iaikge1xuICAgIHZhciBwcmV2U3RhdHVzID0gZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cztcbiAgICB2YXIgbmV4dFN0c3RhdXMgPSBleHRGaWxlb2JqLnVwbG9hZFN0YXR1cztcbiAgICAvL2NvbnNvbGUubG9nKFwic2V0TmV4dFVwbG9hZFN0YXR1c1wiLCBwcmV2U3RhdHVzLCBuZXh0U3RzdGF1cyk7XG4gICAgLy9jb25zb2xlLmxvZyhcInNldE5leHRVcGxvYWRTdGF0dXNcIiwgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UsIGV4dEZpbGVvYmoudXBsb2FkTWVzc2FnZSk7XG4gICAgaWYgKHByZXZTdGF0dXMgPT09IFwicHJlcGFyaW5nXCIgJiZcbiAgICAgICAgW1wiYWJvcnRlZFwiLCB1bmRlZmluZWRdLmluY2x1ZGVzKG5leHRTdHN0YXVzKSkge1xuICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkTWVzc2FnZSA9IGV4dEZpbGVvYmoudXBsb2FkTWVzc2FnZTtcbiAgICB9XG4gICAgZWxzZSBpZiAocHJldlN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIiAmJlxuICAgICAgICBbXCJhYm9ydGVkXCIsIHVuZGVmaW5lZF0uaW5jbHVkZXMobmV4dFN0c3RhdXMpKSB7XG4gICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSBcImFib3J0ZWRcIjtcbiAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSBleHRGaWxlb2JqLnVwbG9hZE1lc3NhZ2U7XG4gICAgfVxufTtcblxuLyoqXG4gKiBUaGUgZnVsbCBsaXN0IG9mIG5hbWVkIENvbG9ycyBwcm92aWRlZCBieVxuICogaHR0cHM6Ly9odG1sY29sb3Jjb2Rlcy5jb20vZXMvbm9tYnJlcy1kZS1sb3MtY29sb3Jlcy9cbiAqL1xudmFyIE5BTUVEX0NPTE9SUyA9IHtcbiAgICAvL1JFRFxuICAgIGluZGlhbnJlZDogXCIjQ0Q1QzVDXCIsXG4gICAgbGlnaHRjb3JhbDogXCIjRjA4MDgwXCIsXG4gICAgc2FsbW9uOiBcIiNGQTgwNzJcIixcbiAgICBkYXJrc2FsbW9uOiBcIiNFOTk2N0FcIixcbiAgICBsaWdodHNhbG1vbjogXCIjRkZBMDdBXCIsXG4gICAgY3JpbXNvbjogXCIjREMxNDNDXCIsXG4gICAgcmVkOiBcIiNGRjAwMDBcIixcbiAgICBmaXJlYnJpY2s6IFwiI0IyMjIyMlwiLFxuICAgIGRhcmtyZWQ6IFwiIzhCMDAwMFwiLFxuICAgIC8vUElOS1xuICAgIHBpbms6IFwiI0ZGQzBDQlwiLFxuICAgIGxpZ2h0cGluazogXCIjRkZCNkMxXCIsXG4gICAgaG90cGluazogXCIjRkY2OUI0XCIsXG4gICAgZGVlcHBpbms6IFwiI0ZGMTQ5M1wiLFxuICAgIG1lZGl1bXZpb2xldHJlZDogXCIjQzcxNTg1XCIsXG4gICAgcGFsZXZpb2xldHJlZDogXCIjREI3MDkzXCIsXG4gICAgLy9PUkFOR0VcbiAgICAvL1wibGlnaHRzYWxtb246IFwiI0ZGQTA3QVwiLFxuICAgIGNvcmFsOiBcIiNGRjdGNTBcIixcbiAgICB0b21hdG86IFwiI0ZGNjM0N1wiLFxuICAgIG9yYW5nZXJlZDogXCIjRkY0NTAwXCIsXG4gICAgZGFya29yYW5nZTogXCIjRkY4QzAwXCIsXG4gICAgb3JhbmdlOiBcIiNGRkE1MDBcIixcbiAgICAvL1lFTExPV1xuICAgIGdvbGQ6IFwiI0ZGRDcwMFwiLFxuICAgIHllbGxvdzogXCIjRkZGRjAwXCIsXG4gICAgbGlnaHR5ZWxsb3c6IFwiI0ZGRkZFMFwiLFxuICAgIGxlbW9uY2hpZmZvbjogXCIjRkZGQUNEXCIsXG4gICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFwiI0ZBRkFEMlwiLFxuICAgIHBhcGF5YXdoaXA6IFwiI0ZGRUZENVwiLFxuICAgIG1vY2Nhc2luOiBcIiNGRkU0QjVcIixcbiAgICBwZWFjaHB1ZmY6IFwiI0ZGREFCOVwiLFxuICAgIHBhbGVnb2xkZW5yb2Q6IFwiI0VFRThBQVwiLFxuICAgIGtoYWtpOiBcIiNGMEU2OENcIixcbiAgICBkYXJra2hha2k6IFwiI0JEQjc2QlwiLFxuICAgIC8vUFVSUExFXG4gICAgbGF2ZW5kZXI6IFwiI0U2RTZGQVwiLFxuICAgIHRoaXN0bGU6IFwiI0Q4QkZEOFwiLFxuICAgIHBsdW06IFwiI0REQTBERFwiLFxuICAgIHZpb2xldDogXCIjRUU4MkVFXCIsXG4gICAgb3JjaGlkOiBcIiNEQTcwRDZcIixcbiAgICBmdWNoc2lhOiBcIiNGRjAwRkZcIixcbiAgICBtYWdlbnRhOiBcIiNGRjAwRkZcIixcbiAgICBtZWRpdW1vcmNoaWQ6IFwiI0JBNTVEM1wiLFxuICAgIG1lZGl1bXB1cnBsZTogXCIjOTM3MERCXCIsXG4gICAgcmViZWNjYXB1cnBsZTogXCIjNjYzMzk5XCIsXG4gICAgYmx1ZXZpb2xldDogXCIjOEEyQkUyXCIsXG4gICAgZGFya3Zpb2xldDogXCIjOTQwMEQzXCIsXG4gICAgZGFya29yY2hpZDogXCIjOTkzMkNDXCIsXG4gICAgZGFya21hZ2VudGE6IFwiIzhCMDA4QlwiLFxuICAgIHB1cnBsZTogXCIjODAwMDgwXCIsXG4gICAgaW5kaWdvOiBcIiM0QjAwODJcIixcbiAgICBzbGF0ZWJsdWU6IFwiIzZBNUFDRFwiLFxuICAgIGRhcmtzbGF0ZWJsdWU6IFwiIzQ4M0Q4QlwiLFxuICAgIG1lZGl1bXNsYXRlYmx1ZTogXCIjN0I2OEVFXCIsXG4gICAgLy9HUkVFTlxuICAgIGdyZWVueWVsbG93OiBcIiNBREZGMkZcIixcbiAgICBjaGFydHJldXNlOiBcIiM3RkZGMDBcIixcbiAgICBsYXduZ3JlZW46IFwiIzdDRkMwMFwiLFxuICAgIGxpbWU6IFwiIzAwRkYwMFwiLFxuICAgIGxpbWVncmVlbjogXCIjMzJDRDMyXCIsXG4gICAgcGFsZWdyZWVuOiBcIiM5OEZCOThcIixcbiAgICBsaWdodGdyZWVuOiBcIiM5MEVFOTBcIixcbiAgICBtZWRpdW1zcHJpbmdncmVlbjogXCIjMDBGQTlBXCIsXG4gICAgc3ByaW5nZ3JlZW46IFwiIzAwRkY3RlwiLFxuICAgIG1lZGl1bXNlYWdyZWVuOiBcIiMzQ0IzNzFcIixcbiAgICBzZWFncmVlbjogXCIjMkU4QjU3XCIsXG4gICAgZm9yZXN0Z3JlZW46IFwiIzIyOEIyMlwiLFxuICAgIGdyZWVuOiBcIiMwMDgwMDBcIixcbiAgICBkYXJrZ3JlZW46IFwiIzAwNjQwMFwiLFxuICAgIHllbGxvd2dyZWVuOiBcIiM5QUNEMzJcIixcbiAgICBvbGl2ZWRyYWI6IFwiIzZCOEUyM1wiLFxuICAgIG9saXZlOiBcIiM4MDgwMDBcIixcbiAgICBkYXJrb2xpdmVncmVlbjogXCIjNTU2QjJGXCIsXG4gICAgbWVkaXVtYXF1YW1hcmluZTogXCIjNjZDREFBXCIsXG4gICAgZGFya3NlYWdyZWVuOiBcIiM4RkJDOEJcIixcbiAgICBsaWdodHNlYWdyZWVuOiBcIiMyMEIyQUFcIixcbiAgICBkYXJrY3lhbjogXCIjMDA4QjhCXCIsXG4gICAgdGVhbDogXCIjMDA4MDgwXCIsXG4gICAgLy9CTFVFXG4gICAgYXF1YTogXCIjMDBGRkZGXCIsXG4gICAgY3lhbjogXCIjMDBGRkZGXCIsXG4gICAgbGlnaHRjeWFuOiBcIiNFMEZGRkZcIixcbiAgICBwYWxldHVycXVvaXNlOiBcIiNBRkVFRUVcIixcbiAgICBhcXVhbWFyaW5lOiBcIiM3RkZGRDRcIixcbiAgICB0dXJxdW9pc2U6IFwiIzQwRTBEMFwiLFxuICAgIG1lZGl1bXR1cnF1b2lzZTogXCIjNDhEMUNDXCIsXG4gICAgZGFya3R1cnF1b2lzZTogXCIjMDBDRUQxXCIsXG4gICAgY2FkZXRibHVlOiBcIiM1RjlFQTBcIixcbiAgICBzdGVlbGJsdWU6IFwiIzQ2ODJCNFwiLFxuICAgIGxpZ2h0c3RlZWxibHVlOiBcIiNCMEM0REVcIixcbiAgICBwb3dkZXJibHVlOiBcIiNCMEUwRTZcIixcbiAgICBsaWdodGJsdWU6IFwiI0FERDhFNlwiLFxuICAgIHNreWJsdWU6IFwiIzg3Q0VFQlwiLFxuICAgIGxpZ2h0c2t5Ymx1ZTogXCIjODdDRUZBXCIsXG4gICAgZGVlcHNreWJsdWU6IFwiIzAwQkZGRlwiLFxuICAgIGRvZGdlcmJsdWU6IFwiIzFFOTBGRlwiLFxuICAgIGNvcm5mbG93ZXJibHVlOiBcIiM2NDk1RURcIixcbiAgICAvL1wibWVkaXVtc2xhdGVibHVlOiBcIiM3QjY4RUVcIixcbiAgICByb3lhbGJsdWU6IFwiIzQxNjlFMVwiLFxuICAgIGJsdWU6IFwiIzAwMDBGRlwiLFxuICAgIG1lZGl1bWJsdWU6IFwiIzAwMDBDRFwiLFxuICAgIGRhcmtibHVlOiBcIiMwMDAwOEJcIixcbiAgICBuYXZ5OiBcIiMwMDAwODBcIixcbiAgICBtaWRuaWdodGJsdWU6IFwiIzE5MTk3MFwiLFxuICAgIC8vQlJPV05cbiAgICBjb3Juc2lsazogXCIjRkZGOERDXCIsXG4gICAgYmxhbmNoZWRhbG1vbmQ6IFwiI0ZGRUJDRFwiLFxuICAgIGJpc3F1ZTogXCIjRkZFNEM0XCIsXG4gICAgbmF2YWpvd2hpdGU6IFwiI0ZGREVBRFwiLFxuICAgIHdoZWF0OiBcIiNGNURFQjNcIixcbiAgICBidXJseXdvb2Q6IFwiI0RFQjg4N1wiLFxuICAgIHRhbjogXCIjRDJCNDhDXCIsXG4gICAgcm9zeWJyb3duOiBcIiNCQzhGOEZcIixcbiAgICBzYW5keWJyb3duOiBcIiNGNEE0NjBcIixcbiAgICBnb2xkZW5yb2Q6IFwiI0RBQTUyMFwiLFxuICAgIGRhcmtnb2xkZW5yb2Q6IFwiI0I4ODYwQlwiLFxuICAgIHBlcnU6IFwiI0NEODUzRlwiLFxuICAgIGNob2NvbGF0ZTogXCIjRDI2OTFFXCIsXG4gICAgc2FkZGxlYnJvd246IFwiIzhCNDUxM1wiLFxuICAgIHNpZW5uYTogXCIjQTA1MjJEXCIsXG4gICAgYnJvd246IFwiI0E1MkEyQVwiLFxuICAgIG1hcm9vbjogXCIjODAwMDAwXCIsXG4gICAgLy9XSElURVxuICAgIHdoaXRlOiBcIiNGRkZGRkZcIixcbiAgICBzbm93OiBcIiNGRkZBRkFcIixcbiAgICBob25leWRldzogXCIjRjBGRkYwXCIsXG4gICAgbWludGNyZWFtOiBcIiNGNUZGRkFcIixcbiAgICBhenVyZTogXCIjRjBGRkZGXCIsXG4gICAgYWxpY2VibHVlOiBcIiNGMEY4RkZcIixcbiAgICBnaG9zdHdoaXRlOiBcIiNGOEY4RkZcIixcbiAgICB3aGl0ZXNtb2tlOiBcIiNGNUY1RjVcIixcbiAgICBzZWFzaGVsbDogXCIjRkZGNUVFXCIsXG4gICAgYmVpZ2U6IFwiI0Y1RjVEQ1wiLFxuICAgIG9sZGxhY2U6IFwiI0ZERjVFNlwiLFxuICAgIGZsb3JhbHdoaXRlOiBcIiNGRkZBRjBcIixcbiAgICBpdm9yeTogXCIjRkZGRkYwXCIsXG4gICAgYW50aXF1ZXdoaXRlOiBcIiNGQUVCRDdcIixcbiAgICBsaW5lbjogXCIjRkFGMEU2XCIsXG4gICAgbGF2ZW5kZXJibHVzaDogXCIjRkZGMEY1XCIsXG4gICAgbWlzdHlyb3NlOiBcIiNGRkU0RTFcIixcbiAgICAvL0dSRVlcbiAgICBnYWluc2Jvcm86IFwiI0RDRENEQ1wiLFxuICAgIGxpZ2h0Z3JheTogXCIjRDNEM0QzXCIsXG4gICAgc2lsdmVyOiBcIiNDMEMwQzBcIixcbiAgICBkYXJrZ3JheTogXCIjQTlBOUE5XCIsXG4gICAgZ3JheTogXCIjODA4MDgwXCIsXG4gICAgZGltZ3JheTogXCIjNjk2OTY5XCIsXG4gICAgbGlnaHRzbGF0ZWdyYXk6IFwiIzc3ODg5OVwiLFxuICAgIHNsYXRlZ3JheTogXCIjNzA4MDkwXCIsXG4gICAgZGFya3NsYXRlZ3JheTogXCIjMkY0RjRGXCIsXG4gICAgYmxhY2s6IFwiIzAwMDAwMFwiXG59O1xuXG4vKipcbiAqIE1ha2UgdGhlIGNvbG9yIGludG8gYSBkYXJrZXIgY29sb3JcbiAqIEBwYXJhbSBjb2xvcklucHV0XG4gKiBAcmV0dXJucyB0aGUgZGFya2VkIGNvbG9yIGluXG4gKi9cbnZhciBkYXJrZXJDb2xvciA9IGZ1bmN0aW9uIChjb2xvcklucHV0LCBwZXJjZW50YWdlKSB7XG4gICAgaWYgKHBlcmNlbnRhZ2UgPT09IHZvaWQgMCkgeyBwZXJjZW50YWdlID0gMjU7IH1cbiAgICB2YXIgZGFya2VkQ29sb3IgPSBcIlwiO1xuICAgIHZhciByZWR1Y2UgPSAoMTAwIC0gcGVyY2VudGFnZSkgLyAxMDA7XG4gICAgdmFyIGNvbXBvbmVudDEgPSAwO1xuICAgIHZhciBjb21wb25lbnQyID0gMDtcbiAgICB2YXIgY29tcG9uZW50MyA9IDA7XG4gICAgaWYgKGlzSGV4Q29sb3IoY29sb3VyTmFtZVRvSGV4KGNvbG9ySW5wdXQpKSkge1xuICAgICAgICBjb21wb25lbnQxID0gaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoMSkpICogMTYgKyBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCgyKSk7XG4gICAgICAgIGNvbXBvbmVudDIgPSBoZXhUb2RlYyhjb2xvcklucHV0LmNoYXJBdCgzKSkgKiAxNiArIGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDQpKTtcbiAgICAgICAgY29tcG9uZW50MyA9IGhleFRvZGVjKGNvbG9ySW5wdXQuY2hhckF0KDUpKSAqIDE2ICsgaGV4VG9kZWMoY29sb3JJbnB1dC5jaGFyQXQoNikpO1xuICAgICAgICBkYXJrZWRDb2xvciA9IFwicmdiKFwiLmNvbmNhdChjb21wb25lbnQxICogcmVkdWNlLCBcIiwgXCIpLmNvbmNhdChjb21wb25lbnQyICogcmVkdWNlLCBcIixcIikuY29uY2F0KGNvbXBvbmVudDMgKiByZWR1Y2UsIFwiKVwiKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmIChjb2xvcklucHV0LmluY2x1ZGVzKFwicmdiYVwiKSkge1xuICAgICAgICAgICAgdmFyIHNsaWNlciA9IGNvbG9ySW5wdXQucmVwbGFjZShcInJnYmEoXCIsIFwiXCIpO1xuICAgICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBzbGljZXIuc3BsaXQoXCIsXCIpO1xuICAgICAgICAgICAgZGFya2VkQ29sb3IgPSBcInJnYihcIi5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1swXSwgMTApICogcmVkdWNlLCBcIiwgXCIpLmNvbmNhdChwYXJzZUludChjb21wb25lbnRzWzFdLCAxMCkgKiByZWR1Y2UsIFwiLFwiKS5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1syXSwgMTApICogcmVkdWNlLCBcIilcIik7XG4gICAgICAgICAgICAvL3JldHVybiBkYXJrZWRDb2xvcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2xvcklucHV0LmluY2x1ZGVzKFwicmdiXCIpKSB7XG4gICAgICAgICAgICB2YXIgc2xpY2VyID0gY29sb3JJbnB1dC5yZXBsYWNlKFwicmdiKFwiLCBcIlwiKTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gc2xpY2VyLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIGRhcmtlZENvbG9yID0gXCJyZ2IoXCIuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMF0sIDEwKSAqIHJlZHVjZSwgXCIsIFwiKS5jb25jYXQocGFyc2VJbnQoY29tcG9uZW50c1sxXSwgMTApICogcmVkdWNlLCBcIixcIikuY29uY2F0KHBhcnNlSW50KGNvbXBvbmVudHNbMl0sIDEwKSAqIHJlZHVjZSwgXCIpXCIpO1xuICAgICAgICAgICAgLy8gcmV0dXJuIGRhcmtlZENvbG9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXJrZWRDb2xvcjtcbn07XG4vKipcbiAqIEluIG9yZGVyIHRvIG1hbmFnYWUgcmdiYSgpIHdlIGNvbnZlcnQgaGV4IGNvbG9ycyBpbnRvIHJnYmEoKVxuICogSWYgdGhlIGdpdmVuIGNvbG9yIGlzIGFscmVhZHkgYSByZ2IoKSBjb2xvciwgaXQgY2FuIGFkZCB0aGUgcGVyY2VudGFnZSB0byBjb252ZXJ0IGl0IGludG8gcmdiYSgpXG4gKlxuICpcbiAqIEBwYXJhbSBjb2xvcklucHV0IGNvbG9yIGluIGhleCBvciBpbiByZ2JcbiAqIEBwYXJhbSBwZXJjIHBlcmNlbnRhZ2UgZm9yIFJHQkEoKSBjb2xvclxuICogQHJldHVybnMgdGhlIHJnYmEgcmVwcmVzZW50YXRpb24gb2YgYSBoZXggY29sb3JcbiAqL1xudmFyIGhleENvbG9yVG9SR0IgPSBmdW5jdGlvbiAoY29sb3JJbnB1dCwgcGVyYywgZGVmYXVsdENvbG9yKSB7XG4gICAgaWYgKHBlcmMgPT09IHZvaWQgMCkgeyBwZXJjID0gMDsgfVxuICAgIHZhciByZXN1bHREZWZhdWx0ID0gZGVmYXVsdENvbG9yID8gZGVmYXVsdENvbG9yIDogXCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNilcIjtcbiAgICBpZiAoIWNvbG9ySW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdERlZmF1bHQ7XG4gICAgfVxuICAgIC8vd29yayBvbmx5IGluIHVwcGVyY2FzZVxuICAgIHZhciBjb2xvciA9IGNvbG9ySW5wdXQudG9VcHBlckNhc2UoKTtcbiAgICAvLyBpcyBhbHJlYWR5IGEgcmdiYSBjb2xvclxuICAgIGlmIChjb2xvci5pbmNsdWRlcyhcIlJHQkFcIikpIHtcbiAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICAvL3JldHVybiByYmcgPT4gcmdiYVxuICAgIGlmIChjb2xvci5pbmNsdWRlcyhcIlJHQlwiKSkge1xuICAgICAgICByZXR1cm4gY29sb3IucmVwbGFjZSgnUkdCJywgXCJyZ2JhXCIpLnJlcGxhY2UoJyknLCBcIiwgXCIuY29uY2F0KHBlcmMsIFwiKVwiKSk7XG4gICAgfVxuICAgIC8vIGlmIGlzIGEgaGV4IGNvbG9yIG9yIG5hbWVkIGNvbG9yXG4gICAgaWYgKCFpc0hleENvbG9yKGNvbG91ck5hbWVUb0hleChjb2xvcikpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHREZWZhdWx0O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0T2sgPSBcIlwiO1xuICAgIC8vbGV0IHN0clZhcjogc3RyaW5nID0gXCJcIjtcbiAgICB2YXIgY29tcG9uZW50MSA9IDA7XG4gICAgdmFyIGNvbXBvbmVudDIgPSAwO1xuICAgIHZhciBjb21wb25lbnQzID0gMDtcbiAgICAvL0lmIHBhc3NlZCBhbGwgdmFsaWRhdGlvbnMsIHByb2NlZWQgdG8gdHJhbnNmb3JtXG4gICAgY29tcG9uZW50MSA9IGhleFRvZGVjKGNvbG9yLmNoYXJBdCgxKSkgKiAxNiArIGhleFRvZGVjKGNvbG9yLmNoYXJBdCgyKSk7XG4gICAgY29tcG9uZW50MiA9IGhleFRvZGVjKGNvbG9yLmNoYXJBdCgzKSkgKiAxNiArIGhleFRvZGVjKGNvbG9yLmNoYXJBdCg0KSk7XG4gICAgY29tcG9uZW50MyA9IGhleFRvZGVjKGNvbG9yLmNoYXJBdCg1KSkgKiAxNiArIGhleFRvZGVjKGNvbG9yLmNoYXJBdCg2KSk7XG4gICAgcmVzdWx0T2sgPSBcInJnYmEoXCIuY29uY2F0KGNvbXBvbmVudDEsIFwiLCBcIikuY29uY2F0KGNvbXBvbmVudDIsIFwiLFwiKS5jb25jYXQoY29tcG9uZW50MywgXCIgLCBcIikuY29uY2F0KHBlcmMsIFwiKVwiKTtcbiAgICByZXR1cm4gcmVzdWx0T2s7XG59O1xuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGVoZXIgdGhlIGNvbG9yIGlzIGhleGFkZWNpbWFsIGNzcyBjb2xvclxuICogRXhhbXBsZTogICNGRjU2QUNcbiAqXG4gKlxuICogQHBhcmFtIGNvbG9ySW5wdXQgdGhlIGNvbG9yIGlucHQgdG8gdGVzdFxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5wdXRDb2xvciBpcyBhIGhleGFkZWNpbWFsIGNzcyBjb2xvclxuICovXG52YXIgaXNIZXhDb2xvciA9IGZ1bmN0aW9uIChjb2xvcklucHV0KSB7XG4gICAgLy8gaWYgZmlyc3QgZWxlbWVudCBpcyBubyAnIycgcmV0dXJuIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvclxuICAgIGlmIChjb2xvcklucHV0LmNoYXJBdCgwKSAhPT0gJyMnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaWYgY29sb3IgbGVuZ2h0IGlzIG5vdCBleGFjdGx5IDcgcmV0dXJuIGRlZmF1bHRcbiAgICBpZiAoY29sb3JJbnB1dC5sZW5ndGggIT09IDcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBpZiBvbmUgb2YgdGhlIGxldHRlcnMgaXMgbm90IGluY2x1ZGVkIGluIGhleCBhcnJheSByZXR1cm4gIGRlZmF1bHRcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvbG9ySW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFoZXhBcnJheS5pbmNsdWRlcyhjb2xvcklucHV0LmNoYXJBdChpKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIENvbnZlcnRzIGEgbmFtZWQgY29sb3IgaW50byBoZXhhZGVjaW1hbCBjb2xvclxuICogZnJvbSBhIGxpc3Qgb2Ygd2VsbCBrbm93biBuYW1kIGNvbG9ycyBpZiBmb3VuZC5cbiAqIFdoZW4gbm90IGdpdmVuIHJldHVybnMgYSBcIlwiXG4gKiBXaGVuIG5vdCBmb3VuZCBpbiB0aGUgbGlzdCwgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSBnaXZlblxuICogQHBhcmFtIGNvbG91ciB0aGUgbmFtZWQgY29sb3JcbiAqIEByZXR1cm5zIFRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbG9yIG9yIFwiXCIgb3IgdGhlIHNhbWUgY29sb3JcbiAqL1xuZnVuY3Rpb24gY29sb3VyTmFtZVRvSGV4KGNvbG91cikge1xuICAgIC8qKlxuICAgICAqIFdoZW4gbm90IGdpdmVuXG4gICAgICovXG4gICAgaWYgKCFjb2xvdXIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHdoZW4gbmFtZWQgY29sb3IgaXMgZm91bmRcbiAgICAgKi9cbiAgICBpZiAoTkFNRURfQ09MT1JTW2NvbG91ci50b0xvY2FsZUxvd2VyQ2FzZSgpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBOQU1FRF9DT0xPUlNbY29sb3VyLnRvTG9jYWxlTG93ZXJDYXNlKCldO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSBuYW1lZCBjb2xvciB3YXMgbm90IGZvdW5kXG4gICAgICovXG4gICAgcmV0dXJuIGNvbG91cjtcbn1cbi8qKlxuICogaGV4QXJyYXkgJiBkZWNBcnJheVxuICpcbiAqIGFycmF5cyBvZiBudW1iZXJzIHVzZWQgdG8gY29udmVydCBoZXhhZGVjaW1hbCBudW1iZXJzIGludG8gZGVjaW1hbCBhbmQgdmljZXZlcnNhXG4gKi9cbnZhciBoZXhBcnJheSA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRiddO1xudmFyIGRlY0FycmF5ID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTVdO1xuLyoqXG4gKiBDb252ZXJ0cyBoZXggbnVtYmVyIGluIHN0cmluZyByZXByZXNlbnRhdGlvbiB0byBkZWNpbWFsIG51bWJlclxuICpcbiAqXG4gKiBAcGFyYW0gbGV0dGVyIHRoZSBzdHJpbmcgaGV4IG51bWJlclxuICogQHJldHVybnMgYSBkZWNpbWFsIG51bWJlclxuICovXG52YXIgaGV4VG9kZWMgPSBmdW5jdGlvbiAobGV0dGVyKSB7XG4gICAgaWYgKGhleEFycmF5LmluY2x1ZGVzKGxldHRlcikpIHtcbiAgICAgICAgcmV0dXJuIGRlY0FycmF5W2hleEFycmF5LmluZGV4T2YobGV0dGVyKV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG59O1xuLyoqXG4gKiBBc3VyZSBhIGJhc2UgY29sb3IuIFdoZW4gbm90IGdpdmVuIG9yIHdoZW4gZ2l2ZW4gYW4gaW5jb3JyZWN0IGNvbG9yIGZvcm1hdFxuICogZGVmYXVsdCBjb2xvciBpcyB0aGlzIGtpbmQgb2YgZ3JleSAjNWQ2NDc1XG4gKlxuICogQHBhcmFtIGNvbG9yIHBhcmFtIGNvbG9yIGdpdmVuIGJ5IHVzZXJcbiAqIEByZXR1cm5zIHJldHVybnMgdGhlIHNhbWUgY29sb3JcbiAqL1xudmFyIGFzdXJlQ29sb3IgPSBmdW5jdGlvbiAoY29sb3IpIHtcbiAgICBpZiAoY29sb3IgIT09IHVuZGVmaW5lZCAmJiBjb2xvciAhPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gREVGQVVMVF9GT05UX0NPTE9SO1xuICAgIH1cbn07XG4vKipcbiAqIEFzdXJlIGEgYmFzZSBjb2xvci4gV2hlbiBub3QgZ2l2ZW4gb3Igd2hlbiBnaXZlbiBhbiBpbmNvcnJlY3QgY29sb3IgZm9ybWF0XG4gKiBkZWZhdWx0IGNvbG9yIGlzIHRoaXMga2luZCBvZiBncmV5ICM1ZDY0NzVcbiAqXG4gKiBAcGFyYW0gY29sb3IgcGFyYW0gY29sb3IgZ2l2ZW4gYnkgdXNlclxuICogQHJldHVybnMgcmV0dXJucyB0aGUgc2FtZSBjb2xvclxuICovXG52YXIgY29tcGxldGVBc3VyZUNvbG9yID0gZnVuY3Rpb24gKGNvbG9yLCBwZXJjKSB7XG4gICAgaWYgKHBlcmMgPT09IHZvaWQgMCkgeyBwZXJjID0gMTsgfVxuICAgIHJldHVybiBoZXhDb2xvclRvUkdCKGFzdXJlQ29sb3IoY29sb3VyTmFtZVRvSGV4KGNvbG9yKSksIHBlcmMpO1xufTtcbnZhciBERUZBVUxUX0ZPTlRfQ09MT1IgPSBcIiM2NDZjN2ZcIjtcblxudmFyIGV4dEZpbGVSZWNvbmNpbGF0aW9uID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGV4dEZpbGVJbmNvbW1pbmcpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGFyck9mRXh0RmlsZXMgPSBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgIC8vIGNvbnRpbnVlIG9ubHkgaWYgYXJyT2ZFeHRGaWxlcyBleGlzdHNcbiAgICBpZiAoYXJyT2ZFeHRGaWxlcykge1xuICAgICAgICAvL2RpZmZlcmVudCBzaXplcyBtZWFucyB0aGVyZSB3YXMgZGVsZXRlZCBmaWxlc1xuICAgICAgICAvL2Fsc28gY2FuIGJlIG5ldyBmaWxlcyB0byBiZSB1cGxvYWRlZFxuICAgICAgICAvL25lZWRlZCBhbiBleHRyYSBmbGFnIHRvIGFsbG93IGFkZCBmaWxlcyBpbiB0aGUgbWlkZGxlIG9mIHVwbG9hZGluZyBwcm9jZXNzXG4gICAgICAgIC8vIGlmIG5ldyBmaWxlcyBhcmUgYWRkZWQsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBNYW5hZ2VyXG4gICAgICAgIC8vIG91dHNpZGUgdGhleSB3ZXJlIGFscmVhZHkgYWRkZWQgdG8gdGhlIFVJXG4gICAgICAgIC8vIGluc2lkZSBEcm9wem9uZSwgd2lsbCBiZSBuZWVkZWQgYSAubmV4dCgpIG1ldGhvZCBmb3IgbWFuYWdlclxuICAgICAgICAvLyAxc3QgYWxsb3cgZGVsZXRlZCBmaWxlcyBhbmQgaWdub3JlIG5ldyBvbmVzXG4gICAgICAgIC8vIHJlZHVjZSB0aGUgYXJyT2ZFeHRGaWxlSW5zdGFuY2VzIGFycmF5XG4gICAgICAgIC8vIHBhcmVjaWRvIGEgbGlzdGFzIGxpZ2FkYXMsIGl0ZXJhciBoYXN0YSBlbmNvbnRyYXIgbnVsbCBYRFxuICAgICAgICB2YXIgaW5jb21taW5nVGVtcCA9IF9fc3ByZWFkQXJyYXkoW10sIGV4dEZpbGVJbmNvbW1pbmcsIHRydWUpO1xuICAgICAgICBpbmNvbW1pbmdUZW1wID0gaW5jb21taW5nVGVtcC5maWx0ZXIoZnVuY3Rpb24gKEYpIHsgcmV0dXJuIChhcnJPZkV4dEZpbGVzID09PSBudWxsIHx8IGFyck9mRXh0RmlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyck9mRXh0RmlsZXMuZmluZEluZGV4KGZ1bmN0aW9uIChJKSB7IHJldHVybiBJLmlkID09PSBGLmlkOyB9KSkgPT09IC0xOyB9KTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInJlY29uY2lsaWF0aW9uIGluY29tbWluZ1RlbXBcIiwgaW5jb21taW5nVGVtcCk7XG4gICAgICAgIC8vZGlmZmVyZW50IHNpemVzIG5vdCBhbGxvd2VkXG4gICAgICAgIGlmIChhcnJPZkV4dEZpbGVzLmxlbmd0aCAhPT0gZXh0RmlsZUluY29tbWluZy5sZW5ndGggfHwgZXh0RmlsZUluY29tbWluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJPZkV4dEZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGV4dEZpbGVJbmNvbW1pbmdbaV0udXBsb2FkU3RhdHVzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlciBvbkNhbmNlbCBpXCIsIGkpO1xuICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIE1lcmdlIHByb3BzIHRoYXQgY29tZSBmb3JtIHVzZXIgYW5kIHRob3NlIG9uZXMgdGhhdCBhcmUgYnkgZGVmYXVsdFxuICogaWYgaW5jb21taW5nUHJvcHMgaXMgbnVsbCB0aGlzIHJldHVybnMgdGhlIGRlZmF1bHQgcHJvcHMgdmFsdWVcbiAqXG4gKiBAcGFyYW0gaW5jb21taW5nUHJvcHMgcHJvcCB0aGF0IGNvbWVzIGZyb20gcHJvcHMgYXR0cmlidXRvbyBvZiBhIFJlYWN0IE5vZGVcbiAqIEBwYXJhbSBkZWZhdWx0UHJvcHMgZGVmYXVsdCBwcm9wIGRlZmluZWQgZm9yIHRoYXQgIFJlYWN0IE5vZGVcbiAqIEByZXR1cm5zIG1lcmdlZCBwcm9wc1xuICovXG5mdW5jdGlvbiBtZXJnZVByb3BzKGluY29tbWluZ1Byb3BzLCBkZWZhdWx0UHJvcHMpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiaW5jb21taW5nUHJvcHNcIixpbmNvbW1pbmdQcm9wcyk7XG4gICAgaWYgKCFpbmNvbW1pbmdQcm9wcykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFByb3BzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgZGVmYXVsdFByb3BzKSwgaW5jb21taW5nUHJvcHMpO1xuICAgIH1cbn1cblxudmFyIElucHV0SGlkZGVuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsIGlucHV0UmVmID0gcHJvcHMuaW5wdXRSZWYsIGFjY2VwdCA9IHByb3BzLmFjY2VwdCwgbXVsdGlwbGUgPSBwcm9wcy5tdWx0aXBsZTtcbiAgICAvKiBmdW5jdGlvbiBoYW5kbGVDbGljazxUIGV4dGVuZHMgSFRNTElucHV0RWxlbWVudD4oXG4gICAgICBldnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8VCwgTW91c2VFdmVudD5cbiAgICApOiB2b2lkIHtcbiAgICAgIGhhbmRsZUNsaWNrVXRpbChldnQpO1xuICAgIH0gKi9cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7IFwiYXJpYS1sYWJlbFwiOiBcImZ1aS1oaWRkZW4taW5wdXRcIiwgc3R5bGU6IHsgZGlzcGxheTogXCJub25lXCIgfSwgcmVmOiBpbnB1dFJlZiwgb25DaGFuZ2U6IG9uQ2hhbmdlLCB0eXBlOiBcImZpbGVcIiwgYWNjZXB0OiBhY2NlcHQsIG11bHRpcGxlOiBtdWx0aXBsZSB9KSkpO1xufTtcblxudmFyIGRlZmF1bHREcm96b25lUHJvcHMgPSB7XG4gICAgY2xpY2thYmxlOiB0cnVlLFxuICAgIGJlaGF2aW91cjogXCJhZGRcIixcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZHJvcE9uTGF5ZXI6IHRydWUsXG4gICAgdXBsb2FkQ29uZmlnOiB7fSxcbiAgICBhY3Rpb25CdXR0b25zOiB7fSxcbiAgICBoZWFkZXI6IHRydWUsXG4gICAgZm9vdGVyOiB0cnVlLFxuICAgIHZhbHVlOiBbXSxcbiAgICAvL2JvcmRlclJhZGl1czogXCI4cHhcIlxufTtcbnZhciBERUZBVUxUX0JPUkRFUl9SQURJVVMgPSBcIjhweFwiO1xuLypcbmV4cG9ydCBpbnRlcmZhY2UgQWR2YW5jZWRDb25maWdJdGVtIHtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERyb3B6b25lQWR2YW5jZWRDb25maWcgPSB7XG4gIGRyb3B6b25lTGF5ZXI6IGFueTtcbiAgZHJvcHpvbmVDb250YWluZXI6IGFueTtcbiAgZHJvcHpvbmVMYWJlbDogYW55O1xufVxuICovXG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1kcm9wem9uZS1jaGlsZHJlbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZ2FwOiA4cHg7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwYWRkaW5nOiA1cHggMDtcXG59XCIpO1xuXG52YXIgRHJvcHpvbmVDaGlsZHJlbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBsYWJlbCA9IHByb3BzLmxhYmVsLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb247XG4gICAgdmFyIGlzRW1wdHlBcnJheSA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA9PT0gMDtcbiAgICAvL2NvbnNvbGUubG9nKFwiaXNFbXB0eUFycmF5XCIsIGlzRW1wdHlBcnJheSxjaGlsZHJlbik7XG4gICAgdmFyIERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIC8vY2hpbGRyZW4gd2lsbCBiZSBhbHdheXMgY29uc2lkZXIgYXMgbW9yZSBpbXBvcnRhbnRcbiAgICBpZiAoY2hpbGRyZW4gJiYgIWlzRW1wdHlBcnJheSkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZHJvcHpvbmUtY2hpbGRyZW4tY29udGFpbmVyXCIgfSwgY2hpbGRyZW4pKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZHJvcHpvbmUtY2hpbGRyZW4tY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCBudWxsLFxuICAgICAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgICAgIGxhYmVsIHx8IERyb3B6b25lTG9jYWxpemVyLmRlZmF1bHRMYWJlbCkpKTtcbn07XG5cbi8qKlxuICogUGVyZm9ybXMgc3RvcFByb3BhZ2F0aW9uIGFuZCBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvbnMgb24gYW4gZHJvcCBldmVudCBpbnN0YW5jZVxuICogQHBhcmFtIGV2dCBkcmFnIGV2ZW50IGhhbmRsZXIgb2JqZWN0XG4gKi9cbnZhciBoYW5kbGVEcm9wVXRpbCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG59O1xuLyoqXG4gKiBQZXJmb3JtcyBzdG9wUHJvcGFnYXRpb24gYW5kIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9ucyBvbiBhbiBkcm9wIGV2ZW50IGluc3RhbmNlXG4gKiBhbmQgYWxzbyBzcGVjaWZpZXMgdGhhdCB0aGUgZHJvcCBlZmZlY3QgaXMgbGlua1xuICogQHBhcmFtIGV2dCBkcmFnIGV2ZW50IGhhbmRsZXIgb2JqZWN0XG4gKi9cbnZhciBoYW5kbGVEcmFnVXRpbCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICBldnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcImxpbmtcIjtcbiAgICBoYW5kbGVEcm9wVXRpbChldnQpO1xufTtcblxuLyoqXG4gKiBQZXJmb3JtcyBzdG9wUHJvcGFnYXRpb24gYW5kIHByZXZlbnREZWZhdWx0IGZ1bmN0aW9ucyBvbiBhbiBjbGljayBldmVudCBpbnN0YW5jZVxuICogQHBhcmFtIGV2dCBjbGljayBldmVudCBoYW5kbGVyIG9iamVjdFxuICovXG5mdW5jdGlvbiBoYW5kbGVDbGlja1V0aWwoZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xufVxuLyoqXG4gKiBDbGljayBwcm9ncmFtYXRpY2FsbHkgYW4gaW5wdXQgZWxlbWVudC5cbiAqIElmIHRoZSBpbnB1dCBlbGVtZW50IGlzIG51bGwsIG5vdGhpbmcgd2lsbCBoYXBwZW5kXG4gKiBAcGFyYW0gaW5wdXQgdGhlIGlucHV0IGVsZW1lbnQgdGFyZ2V0IHRvIG1ha2UgYSBjbGlja1xuICovXG52YXIgaGFuZGxlQ2xpY2tJbnB1dCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIGlmICghaW5wdXQpXG4gICAgICAgIHJldHVybjtcbiAgICBpbnB1dC5jbGljaygpO1xufTtcblxudmFyIGFzdXJlUmlwcGxlQ29sb3IgPSBmdW5jdGlvbiAoY29sb3IpIHtcbiAgICByZXR1cm4gY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjQpO1xufTtcbmZ1bmN0aW9uIGNyZWF0ZUZ1aVJpcHBsZUZyb21EaXYoZnVpQ29udGFpbmVyQWJzLCBmdWlDb250YWluZXJSZWwsIGNvbG9yKSB7XG4gICAgaWYgKCFmdWlDb250YWluZXJSZWwgfHwgIWZ1aUNvbnRhaW5lckFicylcbiAgICAgICAgcmV0dXJuO1xuICAgIGZ1aUNvbnRhaW5lckFicy5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICAgIC8vcmVtb3ZlUmlwcGxlSWZFeGlzdChmdWlDb250YWluZXJSZWwsIFwiZHVpLXJpcHBsZVwiKTtcbiAgICAvLyBjcmVhdGluZyB0aGUgc3BhbiBjaXJjbGUgcmlwcGxlXG4gICAgdmFyIGNpcmNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIC8vZm9yIHNlYXJjaGluZ1xuICAgIGNpcmNsZS5pZCA9IFwiZmlsZXN1aS1yaXBwbGVcIjtcbiAgICAvL2ZvciBzdHlsZXNcbiAgICBjaXJjbGUuY2xhc3NOYW1lID0gXCJyaXBwbGVcIjtcbiAgICAvLyBjYWxjdWxhdGVzIHRoZSBkaWFtZXRlclxuICAgIHZhciBkaWFtZXRlciA9IE1hdGgubWF4KGZ1aUNvbnRhaW5lclJlbC5jbGllbnRXaWR0aCwgZnVpQ29udGFpbmVyUmVsLmNsaWVudEhlaWdodCk7XG4gICAgLy9jb25zdCByaXBwbGVDaXJjbGVSYWRpdXM6IG51bWJlciA9IGRpYW1ldGVyIC8gMjtcbiAgICAvL2NvbnNvbGUubG9nKFwidyxoXCIsIGZ1aUNvbnRhaW5lclJlbC5jbGllbnRXaWR0aCwgZnVpQ29udGFpbmVyUmVsLmNsaWVudEhlaWdodCk7XG4gICAgY2lyY2xlLnN0eWxlLndpZHRoID0gY2lyY2xlLnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KGRpYW1ldGVyLCBcInB4XCIpO1xuICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBhc3VyZVJpcHBsZUNvbG9yKGNvbG9yKTtcbiAgICBmdWlDb250YWluZXJSZWwuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICAvL3JlbW92ZSB0cmFzaFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBmdWlDb250YWluZXJBYnMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICBjaXJjbGUgPT09IG51bGwgfHwgY2lyY2xlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjaXJjbGUucmVtb3ZlKCk7XG4gICAgfSwgNTAxKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJpcHBsZUJ1dHRvbihldmVudCwgdmFyaWFudCwgY29sb3IpIHtcbiAgICB2YXIgYnV0dG9uQW5jaG9yRGl2ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICB2YXIgY2lyY2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgdmFyIGRpYW1ldGVyID0gTWF0aC5tYXgoYnV0dG9uQW5jaG9yRGl2LmNsaWVudFdpZHRoLCBidXR0b25BbmNob3JEaXYuY2xpZW50SGVpZ2h0KTtcbiAgICAvL2NvbnN0IHJhZGl1cyA9IGRpYW1ldGVyIC8gMjtcbiAgICBjaXJjbGUuc3R5bGUud2lkdGggPSBjaXJjbGUuc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQoZGlhbWV0ZXIsIFwicHhcIik7XG4gICAgLyogY2lyY2xlLnN0eWxlLmxlZnQgPSBgJHtldmVudC5jbGllbnRYIC0gcmFkaXVzXG4gICAgIH1weGA7XG4gICBjaXJjbGUuc3R5bGUudG9wID0gYCR7ZXZlbnQuY2xpZW50WSAtIHJhZGl1c1xuICAgICB9cHhgOyAqL1xuICAgIGNpcmNsZS5jbGFzc0xpc3QuYWRkKFwicmlwcGxlXCIpO1xuICAgIGlmICh2YXJpYW50ICE9PSBcImNvbnRhaW5lZFwiKSB7XG4gICAgICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBhc3VyZVJpcHBsZUNvbG9yKGNvbG9yKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBoZXhDb2xvclRvUkdCKFwiI2ZmZmZmZlwiLCAwLjQpO1xuICAgIH1cbiAgICBidXR0b25BbmNob3JEaXYuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2lyY2xlID09PSBudWxsIHx8IGNpcmNsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2lyY2xlLnJlbW92ZSgpO1xuICAgIH0sIDUwMSk7XG59XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlc3VpLWRpc2FibGVkLXJvb3Qge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xcbn1cIik7XG5cbnZhciBEcm9wem9uZURpc2FibGVkTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb3BlbiA9IHByb3BzLm9wZW4sIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgfVxuICAgIHZhciBoYW5kbGVEcmFnID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBoYW5kbGVEcmFnVXRpbChldnQpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZURyb3AgPSBmdW5jdGlvbiAoZXZ0KSB7IHJldHVybiBfX2F3YWl0ZXIkMSh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgaGFuZGxlRHJvcFV0aWwoZXZ0KTtcbiAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgdmFyIGZpbmFsRGlzYWJsZWRMYXllckNsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShcImZpbGVzdWktZGlzYWJsZWQtcm9vdFwiLCBjbGFzc05hbWUpO1xuICAgIGlmIChvcGVuKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiBzdHlsZSwgY2xhc3NOYW1lOiBmaW5hbERpc2FibGVkTGF5ZXJDbGFzc05hbWUsIG9uRHJvcDogaGFuZGxlRHJvcCwgb25EcmFnT3ZlcjogaGFuZGxlRHJhZywgb25DbGljazogaGFuZGxlQ2xpY2sgfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIH1cbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4uZnVpLWRyb3B6b25lLXJvb3Qge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtaW4td2lkdGg6IDE1MHB4O1xcbiAgbWluLWhlaWdodDogMTgwcHg7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGdhcDogMCA4cHg7XFxuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xcbiAgZm9udC1zaXplOiAxLjVlbTtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDI4NTdlbTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICAvKiAgJi5mdWktZHJvcHpvbmUtYm9yZGVyIHtcXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG5cXG4gICAgYm9yZGVyOiAxcHggZGFzaGVkICMwYzIzNTg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICAgICYuZnVpLWhpZGUtYm9yZGVyIHtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgIH1cXG4gIH0gKi9cXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XFxuICAuZnVpLWRyb3B6b25lLXJvb3Qge1xcbiAgICBmb250LXNpemU6IDEuM2VtO1xcbiAgfVxcbn1cXG4uZnVpLWRyb3B6b25lLXJvb3QuY2xpY2thYmxlIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmZpbGVzLXVpLWhlYWRlciB7XFxuICBtaW4taGVpZ2h0OiAyM3B4O1xcbiAgLyogIGhlaWdodDogMjJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgXFxuICB0b3A6IDA7XFxuICAqL1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDFyZW07XFxufVxcbkBtZWRpYSAobWF4LXdpZHRoOiA5NjBweCkge1xcbiAgLmZpbGVzLXVpLWhlYWRlciB7XFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgfVxcbn1cXG5cXG4uZmlsZXMtdWktZm9vdGVyIHtcXG4gIC8qICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogOHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDhweDsgKi9cXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBjdXJzb3I6IHRleHQ7XFxuICAvKiBoZWlnaHQ6IDIzcHg7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwOyAqL1xcbiAgd2lkdGg6IDEwMCU7XFxuICAvKiBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7ICovXFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIHBhZGRpbmctbGVmdDogMTBweDtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMTtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogOTYwcHgpIHtcXG4gIC5maWxlcy11aS1mb290ZXIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDFweDtcXG4gICAgZm9udC1zaXplOiAwLjlyZW07XFxuICB9XFxufVwiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXN1aS1iYXNlLXJpcHBsZS1hYnNvbHV0ZSAuZmlsZXN1aS1iYXNlLXJpcHBsZS1yZWxhdGl2ZSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGUgLmZpbGVzdWktYmFzZS1yaXBwbGUtcmVsYXRpdmUgc3Bhbi5yaXBwbGUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcXG4gIGFuaW1hdGlvbjogcmlwcGxlIDUwMG1zIGxpbmVhcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuQGtleWZyYW1lcyByaXBwbGUge1xcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDQpO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cIik7XG5cbi8qKlxuICogQWRkZWQgc3VwcG9ydCBmb3IgbGl0ZXJhbHMgJSBhbmQgcHhcbiAqIEBwYXJhbSBzaXplU3RyXG4gKiBAcmV0dXJuc1xuICovXG52YXIgcGFyc2VTaXplID0gZnVuY3Rpb24gKHNpemVTdHIpIHtcbiAgICBpZiAodHlwZW9mIHNpemVTdHIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHNpemVTdHI7XG4gICAgfVxuICAgIHN3aXRjaCAoc2l6ZVN0cikge1xuICAgICAgICBjYXNlIFwibWljcm9cIjpcbiAgICAgICAgICAgIHJldHVybiA4O1xuICAgICAgICBjYXNlIFwic21hbGxcIjpcbiAgICAgICAgICAgIHJldHVybiAxNTtcbiAgICAgICAgY2FzZSBcInNlbWktbWVkaXVtXCI6XG4gICAgICAgICAgICByZXR1cm4gMTg7XG4gICAgICAgIGNhc2UgXCJtZWRpdW1cIjpcbiAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgY2FzZSBcImxhcmdlXCI6XG4gICAgICAgICAgICByZXR1cm4gMjg7XG4gICAgICAgIGNhc2UgXCJleHRyYS1sYXJnZVwiOlxuICAgICAgICAgICAgcmV0dXJuIDMyO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgIH1cbn07XG5cbnZhciBDYW5jZWwgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IFwibm9uZVwiLCBvcGFjaXR5OiBcIi44N1wiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDRjLTQuNDEgMC04IDMuNTktOCA4czMuNTkgOCA4IDggOC0zLjU5IDgtOC0zLjU5LTgtOC04em01IDExLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIiwgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIsIG9wYWNpdHk6IFwiLjVcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy41OS0xM0wxMiAxMC41OSA4LjQxIDcgNyA4LjQxIDEwLjU5IDEyIDcgMTUuNTkgOC40MSAxNyAxMiAxMy40MSAxNS41OSAxNyAxNyAxNS41OSAxMy40MSAxMiAxNyA4LjQxelwiIH0pKSk7XG59O1xuXG52YXIgQ2hlY2tDaXJjbGUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMHpcIiwgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIiB9KSkpO1xufTtcblxudmFyIENsZWFuID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgZW5hYmxlQmFja2dyb3VuZDogXCJuZXcgMCAwIDI0IDI0XCIsIGhlaWdodDogZmluYWxTaXplID8gXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpIDogXCIyNHB4XCIsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiIH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IGZpbGw6IFwibm9uZVwiLCBoZWlnaHQ6IGZpbmFsU2l6ZSB8fCBcIjI0XCIsIHdpZHRoOiBmaW5hbFNpemUgfHwgXCIyNFwiIH0pKSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xNiwxMWgtMVYzYzAtMS4xLTAuOS0yLTItMmgtMkM5LjksMSw5LDEuOSw5LDN2OEg4Yy0yLjc2LDAtNSwyLjI0LTUsNXY3aDE4di03QzIxLDEzLjI0LDE4Ljc2LDExLDE2LDExeiBNMTEsM2gydjhoLTJWMyB6IE0xOSwyMWgtMnYtM2MwLTAuNTUtMC40NS0xLTEtMXMtMSwwLjQ1LTEsMXYzaC0ydi0zYzAtMC41NS0wLjQ1LTEtMS0xcy0xLDAuNDUtMSwxdjNIOXYtM2MwLTAuNTUtMC40NS0xLTEtMXMtMSwwLjQ1LTEsMXYzSDUgdi01YzAtMS42NSwxLjM1LTMsMy0zaDhjMS42NSwwLDMsMS4zNSwzLDNWMjF6XCIgfSkpKSkpO1xufTtcblxudmFyIENsZWFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIGZpbGw6IGNvbG9yRmlsbCB8fCBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTIgMTkgNi40MXpcIiB9KSkpO1xufTtcblxudmFyIENsb3VkRG9uZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgY29sb3JGaWxsID0gcHJvcHMuY29sb3JGaWxsLCBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSA6IGZpbmFsU3R5bGUsIGVuYWJsZUJhY2tncm91bmQ6IFwibmV3IDAgMCAyNCAyNFwiLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgfHwgXCIjMDAwMDAwXCIsIG9uQ2xpY2s6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBoYW5kbGVDbGlja1V0aWwoZSk7XG4gICAgICAgICAgICBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soZSk7XG4gICAgICAgIH0gfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNCAwLTIuMDUgMS41My0zLjc2IDMuNTYtMy45N2wxLjA3LS4xMS41LS45NUM4LjA4IDcuMTQgOS45NCA2IDEyIDZjMi42MiAwIDQuODggMS44NiA1LjM5IDQuNDNsLjMgMS41IDEuNTMuMTFjMS41Ni4xIDIuNzggMS40MSAyLjc4IDIuOTYgMCAxLjY1LTEuMzUgMy0zIDN6bS05LTMuODJsLTIuMDktMi4wOUw2LjUgMTMuNSAxMCAxN2w2LjAxLTYuMDEtMS40MS0xLjQxelwiIH0pKSk7XG59O1xuXG52YXIgRG9EaXN0dXJiID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0Yy00LjQxIDAtOCAzLjU5LTggOHMzLjU5IDggOCA4IDgtMy41OSA4LTgtMy41OS04LTgtOHpcIiwgb3BhY2l0eTogXCIuNFwiIH0pLFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04IDAtMS44NS42My0zLjU1IDEuNjktNC45TDE2LjkgMTguMzFDMTUuNTUgMTkuMzcgMTMuODUgMjAgMTIgMjB6bTYuMzEtMy4xTDcuMSA1LjY5QzguNDUgNC42MyAxMC4xNSA0IDEyIDRjNC40MiAwIDggMy41OCA4IDggMCAxLjg1LS42MyAzLjU1LTEuNjkgNC45elwiIH0pKSk7XG59O1xuXG52YXIgRG93bmxvYWRGaWxlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgZW5hYmxlQmFja2dyb3VuZDogXCJuZXcgMCAwIDI0IDI0XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciB8fCBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIsIGhlaWdodDogZmluYWxTaXplLCB3aWR0aDogZmluYWxTaXplIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTgsMTV2M0g2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTJjMS4xLDAsMi0wLjksMi0ydi0zSDE4eiBNMTcsMTFsLTEuNDEtMS40MUwxMywxMi4xN1Y0aC0ydjguMTdMOC40MSw5LjU5TDcsMTFsNSw1IEwxNywxMXpcIiB9KSkpKTtcbn07XG5cbnZhciBJbmZvRGlzbmV5ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICBvbkNsaWNrID0gcHJvcHMub25DbGljaywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSkgLSAyO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IFxuICAgICAgICAvL2FsdD1cIlwiXG4gICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiLCBcImFyaWEtbGFiZWxcIjogXCJpbmZvXCIsIGZpbGw6IGNvbG9yIHx8IFwiIzAwMDAwMFwiLCByb2xlOiBcImltZ1wiLCB0cmFuc2Zvcm06IFwiXCIsIHZlcnNpb246IFwiMS4xXCIsIHZpZXdCb3g6IFwiMCAwIDM2IDM2XCIsIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMjIuMzc4IDBjMi40MTIgMCAzLjYxOCAxLjY0MiAzLjYxOCAzLjUyMyAwIDIuMzQ5LTIuMDk1IDQuNTIyLTQuODIyIDQuNTIyLTIuMjg0IDAtMy42MTYtMS4zNS0zLjU1My0zLjU4MiAwLTEuODc3IDEuNTg2LTQuNDYyIDQuNzU3LTQuNDYyek0xNC45NTYgMzZjLTEuOTA0IDAtMy4yOTktMS4xNzQtMS45NjctNi4zNDNsMi4xODUtOS4xNjZjMC4zOC0xLjQ2NSAwLjQ0My0yLjA1NCAwLTIuMDU0LTAuNTcxIDAtMy4wNDAgMS4wMTItNC41MDQgMi4wMTFsLTAuOTUtMS41ODRjNC42My0zLjkzNSA5Ljk1Ni02LjI0MSAxMi4yNDItNi4yNDEgMS45MDMgMCAyLjIxOSAyLjI5MSAxLjI2OSA1LjgxNGwtMi41MDQgOS42MzRjLTAuNDQzIDEuNzAxLTAuMjU0IDIuMjg4IDAuMTkxIDIuMjg4IDAuNTcxIDAgMi40NDMtMC43MDYgNC4yODItMi4xNzNsMS4wODAgMS40NjVjLTQuNTA0IDQuNTg1LTkuNDIzIDYuMzQ5LTExLjMyNCA2LjM0OXpcIiB9KSkpO1xufTtcblxudmFyIFBsYXlJY29uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcIlwiLCBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpIDogZmluYWxTdHlsZSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgb25DbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrVXRpbChlKTtcbiAgICAgICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICAgICAgfSB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTAgMGgyNHYyNEgwVjB6XCIsIG9wYWNpdHk6IFwiLjlcIiwgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNOCA1djE0bDExLTdMOCA1elwiIH0pKSk7XG59O1xuXG52YXIgVXBsb2FkID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBjb2xvckZpbGwgPSBwcm9wcy5jb2xvckZpbGwsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgeyBzdHlsZTogb25DbGljayA/IF9fYXNzaWduJDEoe30sIF9fYXNzaWduJDEoeyBjdXJzb3I6IFwicG9pbnRlclwiIH0sIGZpbmFsU3R5bGUpKSA6IGZpbmFsU3R5bGUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpOyB9LCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBlbmFibGVCYWNrZ3JvdW5kOiBcIm5ldyAwIDAgMjQgMjRcIiwgaGVpZ2h0OiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGZpbGw6IGNvbG9yID8gY29sb3IgOiBcIiMwMDAwMDBcIiwgY2xhc3NOYW1lOiBjbGFzc05hbWUgfHwgXCJcIiB9LFxuICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBjb2xvckZpbGwgfHwgXCJub25lXCIsIGhlaWdodDogc2l6ZSB8fCBcIjI0XCIsIHdpZHRoOiBzaXplIHx8IFwiMjRcIiB9KSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIG51bGwsXG4gICAgICAgICAgICBSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGQ6IFwiTTE4LDE1djNINnYtM0g0djNjMCwxLjEsMC45LDIsMiwyaDEyYzEuMSwwLDItMC45LDItMnYtM0gxOHogTTcsOWwxLjQxLDEuNDFMMTEsNy44M1YxNmgyVjcuODNsMi41OSwyLjU4TDE3LDlsLTUtNUw3LDl6XCIgfSkpKSk7XG59O1xuXG52YXIgVXBsb2FkRXJyb3IgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7fSwgX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkpIDogZmluYWxTdHlsZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKCk7IH0sIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyBmaWxsOiBjb2xvckZpbGwgPyBjb2xvckZpbGwgOiBcIm5vbmVcIiwgaGVpZ2h0OiBmaW5hbFNpemUsIHdpZHRoOiBmaW5hbFNpemUgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTgsMTUuMTdWMTVoMnYyLjE3TDE4LDE1LjE3eiBNMTUuNDEsMTIuNTlMMTcsMTFsLTEuNDEtMS40MUwxNCwxMS4xN0wxNS40MSwxMi41OXogTTEzLDEwLjE3VjRoLTJ2NC4xN0wxMywxMC4xN3ogTTIxLjE5LDIxLjE5bC0xLjc4LTEuNzhMMi44MSwyLjgxTDEuMzksNC4yMmw2LjE5LDYuMTlMNywxMWw1LDVsMC41OS0wLjU5TDE1LjE3LDE4SDZ2LTNINHYzYzAsMS4xLDAuOSwyLDIsMmgxMS4xN2wyLjYxLDIuNjEgTDIxLjE5LDIxLjE5elwiIH0pKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAa2V5ZnJhbWVzIGZpbGVzdWktcm90YXRlLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG4uZmlsZXN1aS1yb3RhdGUge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG5cXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcXG4gIC5maWxlc3VpLXJvdGF0ZSB7XFxuICAgIGFuaW1hdGlvbjogZmlsZXN1aS1yb3RhdGUtc3BpbiBpbmZpbml0ZSAycyBsaW5lYXI7XFxuICB9XFxufVwiKTtcblxudmFyIFVwbG9hZGluZ1Byb2Nlc3MgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIFxuICAgIC8vY29sb3JGaWxsLFxuICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHNwaW4gPSBwcm9wcy5zcGluO1xuICAgIHZhciBmaW5hbFNpemUgPSBwYXJzZVNpemUoc2l6ZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSBzdHlsZSA/IHN0eWxlIDoge307XG4gICAgdmFyIGZpbmFsQ2xhc3NuYW1lID0gY2xhc3NOYW1lIHx8IFwiXCI7XG4gICAgZmluYWxDbGFzc25hbWUgKz0gc3BpbiA/IFwiZmlsZXN1aS1yb3RhdGVcIiA6IFwiXCI7XG4gICAgcmV0dXJuIChSZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzbmFtZSwgc3R5bGU6IG9uQ2xpY2sgPyBfX2Fzc2lnbiQxKHt9LCBfX2Fzc2lnbiQxKHsgY3Vyc29yOiBcInBvaW50ZXJcIiB9LCBmaW5hbFN0eWxlKSkgOiBmaW5hbFN0eWxlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkNsaWNrID09PSBudWxsIHx8IG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2soKTsgfSwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgaGVpZ2h0OiBmaW5hbFNpemUgPyBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIikgOiBcIjI0cHhcIiwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IGZpbmFsU2l6ZSA/IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSA6IFwiMjRweFwiLCBmaWxsOiBjb2xvciA/IGNvbG9yIDogXCIjMDAwMDAwXCIgfSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0wIDBoMjR2MjRIMFYwelwiLCBmaWxsOiBcIm5vbmVcIiB9KSxcbiAgICAgICAgUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QzE5LjU0IDE1LjAzIDIwIDEzLjU3IDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRDNC40NiA4Ljk3IDQgMTAuNDMgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIiB9KSkpO1xufTtcblxudmFyIFZpc2liaWxpdHkgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgc2l6ZSA9IHByb3BzLnNpemUsIGNvbG9yID0gcHJvcHMuY29sb3IsIGNvbG9yRmlsbCA9IHByb3BzLmNvbG9yRmlsbCwgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lIHx8IFwiXCIsIHN0eWxlOiBvbkNsaWNrID8gX19hc3NpZ24kMSh7IGN1cnNvcjogXCJwb2ludGVyXCIgfSwgZmluYWxTdHlsZSkgOiBmaW5hbFN0eWxlLCB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgdmlld0JveDogXCIwIDAgMjQgMjRcIiwgd2lkdGg6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgZmlsbDogY29sb3IgPyBjb2xvciA6IFwiIzAwMDAwMFwiLCBvbkNsaWNrOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGUpO1xuICAgICAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgICAgICB9IH0sXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDI0djI0SDBWMHpcIiwgZmlsbDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNGMtNC40MSAwLTggMy41OS04IDhzMy41OSA4IDggOCA4LTMuNTkgOC04LTMuNTktOC04LTh6XCIsIFxuICAgICAgICAgICAgLy9vcGFjaXR5PVwiLjlcIlxuICAgICAgICAgICAgZmlsbDogY29sb3JGaWxsID8gY29sb3JGaWxsIDogXCJub25lXCIgfSksXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMTIgNEM3IDQgMi43MyA3LjExIDEgMTEuNSAyLjczIDE1Ljg5IDcgMTkgMTIgMTlzOS4yNy0zLjExIDExLTcuNUMyMS4yNyA3LjExIDE3IDQgMTIgNHptMCAxMi41Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3pcIiB9KSkpO1xufTtcblxudmFyIERyb3B6b25lSGVhZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG1heEZpbGVTaXplID0gcHJvcHMubWF4RmlsZVNpemUsIG51bWJlck9mVmFsaWRGaWxlcyA9IHByb3BzLm51bWJlck9mVmFsaWRGaWxlcywgb25SZXNldCA9IHByb3BzLm9uUmVzZXQsIG9uQ2xlYW4gPSBwcm9wcy5vbkNsZWFuLCBtYXhGaWxlcyA9IHByb3BzLm1heEZpbGVzLCBvblVwbG9hZFN0YXJ0ID0gcHJvcHMub25VcGxvYWRTdGFydCwgaXNVcGxvYWRpbmcgPSBwcm9wcy5pc1VwbG9hZGluZywgdXJsUHJlc2VudCA9IHByb3BzLnVybFByZXNlbnQsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgYm9yZGVyUmFkaXVzID0gcHJvcHMuYm9yZGVyUmFkaXVzLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBfYSA9IHByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lID0gX2EgPT09IHZvaWQgMCA/IFwiXCIgOiBfYSwgcmVzZXRTdHlsZXMgPSBwcm9wcy5yZXNldFN0eWxlcywgY29sb3IgPSBwcm9wcy5jb2xvciwgX2IgPSBwcm9wcy5maXJzdENsYXNzTmFtZSwgZmlyc3RDbGFzc05hbWUgPSBfYiA9PT0gdm9pZCAwID8gXCJcIiA6IF9iO1xuICAgIHZhciBEcm9wem9uZUhlYWRlckxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKS5oZWFkZXI7XG4gICAgdmFyIGhhbmRsZUNsZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBvbkNsZWFuID09PSBudWxsIHx8IG9uQ2xlYW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xlYW4oKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVTdGFydFVwbG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25VcGxvYWRTdGFydCA9PT0gbnVsbCB8fCBvblVwbG9hZFN0YXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZFN0YXJ0KCk7XG4gICAgfTtcbiAgICB2YXIgbWFrZUhlYWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAob25VcGxvYWRTdGFydCAmJiB1cmxQcmVzZW50ICYmIG51bWJlck9mVmFsaWRGaWxlcykge1xuICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWRpbmdQcm9jZXNzLCB7IHNwaW46IHRydWUsIGNvbG9yOiBjb2xvciB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBEcm9wem9uZUhlYWRlckxvY2FsaXplci51cGxvYWRGaWxlc01lc3NhZ2UpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZCwgeyBjb2xvcjogY29sb3IsIG9uQ2xpY2s6IGhhbmRsZVN0YXJ0VXBsb2FkaW5nIH0pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFwiLFwiLFxuICAgICAgICAgICAgICAgIFwiXFx1MDBBMFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1heEZpbGVTaXplTWVzc2VuZ2VyID0gRHJvcHpvbmVIZWFkZXJMb2NhbGl6ZXIubWF4U2l6ZU1lc3NhZ2U7XG4gICAgICAgIHZhciBtYXhGaWxlU2l6ZUZvcm1hdHRlZCA9IGZpbGVTaXplRm9ybWF0ZXIobWF4RmlsZVNpemUpO1xuICAgICAgICBpZiAobWF4RmlsZVNpemVGb3JtYXR0ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG1heEZpbGVTaXplTWVzc2VuZ2VyKG1heEZpbGVTaXplRm9ybWF0dGVkKSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFwiLFwiLFxuICAgICAgICAgICAgICAgIFwiXFx1MDBBMFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhbGlkRmlsZVNpemVNZXNzZW5nZXIgPSBEcm9wem9uZUhlYWRlckxvY2FsaXplci52YWxpZEZpbGVzTWVzc2FnZTtcbiAgICAgICAgaWYgKG1heEZpbGVzKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWxpZEZpbGVTaXplTWVzc2VuZ2VyKG51bWJlck9mVmFsaWRGaWxlcywgbWF4RmlsZXMpKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgXCIsXCIsXG4gICAgICAgICAgICAgICAgXCJcXHUwMEEwXCIpKTtcbiAgICAgICAgfVxuICAgICAgICAvL2NsZWFuIG5vdCB2YWxpZCBmaWxlcyBvbiBjbGlja1xuICAgICAgICBpZiAob25DbGVhbikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhbiwgeyBjb2xvcjogY29sb3IsIG9uQ2xpY2s6IGhhbmRsZUNsZWFuLCBzaXplOiBcInNlbWktbWVkaXVtXCIgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvblJlc2V0KSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChSZWFjdC5jcmVhdGVFbGVtZW50KENhbmNlbCwgeyBjb2xvcjogY29sb3IsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpOyB9IH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZ0KSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gcmVzZXRTdHlsZXNcbiAgICAgICAgPyBjbGFzc05hbWVcbiAgICAgICAgOiBhZGRDbGFzc05hbWUoXCJmaWxlcy11aS1oZWFkZXJcIiArIFwiIFwiICsgZmlyc3RDbGFzc05hbWUsIGNsYXNzTmFtZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSByZXNldFN0eWxlc1xuICAgICAgICA/IHN0eWxlXG4gICAgICAgIDogX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBzdHlsZSksIHsgYm9yZGVyVG9wTGVmdFJhZGl1czogYm9yZGVyUmFkaXVzLCBib3JkZXJUb3BSaWdodFJhZGl1czogYm9yZGVyUmFkaXVzIH0pO1xuICAgIC8vY29uc29sZS5sb2coXCJoZWFkZXJ4IHJlc2V0U3R5bGVzXCIsIHJlc2V0U3R5bGVzKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiaGVhZGVyeCBzdHlsZVwiLCBzdHlsZSk7XG4gICAgLy9jb25zb2xlLmxvZyhcImhlYWRlcnggZmluYWxTdHlsZVwiLCBmaW5hbFN0eWxlKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgc3R5bGU6IGZpbmFsU3R5bGUgfSwgbWFrZUhlYWRlcigpLm1hcChmdW5jdGlvbiAoSGVhZGVySXRlbSwgaW5kZXgpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGtleTogaW5kZXgsIHN0eWxlOiB7IGRpc3BsYXk6IFwiZmxleFwiIH0gfSwgSGVhZGVySXRlbSkpOyB9KSkpO1xufTtcblxudmFyIERyb3B6b25lRm9vdGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGFjY2VwdCA9IHByb3BzLmFjY2VwdCwgbWVzc2FnZSA9IHByb3BzLm1lc3NhZ2UsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgYm9yZGVyUmFkaXVzID0gcHJvcHMuYm9yZGVyUmFkaXVzLCBzdHlsZSA9IHByb3BzLnN0eWxlLCBfYSA9IHByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lID0gX2EgPT09IHZvaWQgMCA/IFwiXCIgOiBfYSwgX2IgPSBwcm9wcy5yZXNldFN0eWxlcywgcmVzZXRTdHlsZXMgPSBfYiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYiwgX2MgPSBwcm9wcy5hbGxvd2VkVHlwZXNMYWJlbCwgYWxsb3dlZFR5cGVzTGFiZWwgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCBfZCA9IHByb3BzLmN1c3RvbU1lc3NhZ2UsIGN1c3RvbU1lc3NhZ2UgPSBfZCA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2QsIF9lID0gcHJvcHMuZmlyc3RDbGFzc05hbWUsIGZpcnN0Q2xhc3NOYW1lID0gX2UgPT09IHZvaWQgMCA/IFwiXCIgOiBfZTtcbiAgICB2YXIgRHJvcHpvbmVGb290ZXJMb2NhbGl6ZXIgPSBEcm9wem9uZUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuZm9vdGVyO1xuICAgIHZhciBhY2NlcEN1c3RvbU1lc3NlbmdlciA9IERyb3B6b25lRm9vdGVyTG9jYWxpemVyLmFjY2VwdEN1c3RvbTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldnQpIHtcbiAgICAgICAgaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgfVxuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IHJlc2V0U3R5bGVzXG4gICAgICAgID8gY2xhc3NOYW1lXG4gICAgICAgIDogYWRkQ2xhc3NOYW1lKFwiZmlsZXMtdWktZm9vdGVyIFwiLmNvbmNhdChmaXJzdENsYXNzTmFtZSksIGNsYXNzTmFtZSk7XG4gICAgdmFyIGZpbmFsU3R5bGUgPSByZXNldFN0eWxlc1xuICAgICAgICA/IHN0eWxlXG4gICAgICAgIDogX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBzdHlsZSksIHsgYm9yZGVyQm90b21MZWZ0UmFkaXVzOiBib3JkZXJSYWRpdXMsIGJvcmRlckJvdG9tUmlnaHRSYWRpdXM6IGJvcmRlclJhZGl1cyB9KTtcbiAgICAvL2NvbnNvbGUubG9nKFwiZmlsZXMtdWktZm9vdGVyXCIsIGZpbmFsU3R5bGUpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBzdHlsZTogZmluYWxTdHlsZSB9LCBjdXN0b21NZXNzYWdlID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1c3RvbU1lc3NhZ2UpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBtZXNzYWdlXG4gICAgICAgID8gbWVzc2FnZVxuICAgICAgICA6ICFhY2NlcHRcbiAgICAgICAgICAgID8gYWxsb3dlZFR5cGVzTGFiZWxcbiAgICAgICAgICAgICAgICA/IERyb3B6b25lRm9vdGVyTG9jYWxpemVyLmFjY2VwdEFsbFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICA6IGFjY2VwQ3VzdG9tTWVzc2VuZ2VyKGFjY2VwdCkpKSkpO1xufTtcblxudmFyIER5bmFtaUNTUztcclxuKGZ1bmN0aW9uIChEeW5hbWlDU1MpIHtcclxuICAgIC8qKlxyXG4gICAgICogSW5zZXJ0cyBhIHN0eWxlc2hlZXQgaW50byB0aGUgRE9NLlxyXG4gICAgICogV2hlbiBhbiBlcnJvciBvY2N1cnMgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmdcclxuICAgICAqIEBwYXJhbSBkeW5hbWljU2hlZXQgYSBkeW5jYW1pYyBzaGVldFxyXG4gICAgICogQHJldHVybiB0aGUgaWQgb2YgdGhlIHN0eWxlc2hlZXQgaW4gc3RyaW5nIGZvcm1hdFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBpbnNlcnRTdHlsZVNoZWV0KGR5bmFtaWNTaGVldCkge1xyXG4gICAgICAgIHZhciByZXN1bHRfaWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGR5bmFtaWNTaGVldCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBkeW5hbWljU2hlZXQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vaWYgYWxyZWFkeSBleGlzdHNcclxuICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZHluYW1pY1NoZWV0LmlkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZHluYW1pY1NoZWV0LmlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHRfaWQgPSBkeW5hbWljU2hlZXQuaWQ7XHJcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgc3R5bGVTaGVldC5pZCA9IHJlc3VsdF9pZDtcclxuICAgICAgICBzdHlsZVNoZWV0LnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJ0ZXh0L2Nzc1wiKTtcclxuICAgICAgICB2YXIgY29udGV0UmF3ID0gdG9SYXdTdHlsZVNoZWV0KGR5bmFtaWNTaGVldC5zaGVldFJ1bGVzIHx8IFtdKSArIGR5bmFtaWNTaGVldC5yYXcgfHwgXCJcIjtcclxuICAgICAgICBzdHlsZVNoZWV0LnRleHRDb250ZW50ID0gY29udGV0UmF3O1xyXG4gICAgICAgIHZhciBhcHBlbmRSZXN1bHQgPSBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xyXG4gICAgICAgIGlmICghYXBwZW5kUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0X2lkO1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQgPSBpbnNlcnRTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiBoZSBzdHlsZSBzaGVldFxyXG4gICAgICogQHBhcmFtIHNoZWV0UnVsZXMgdGhlIHNldCBvZiBydWxlc1xyXG4gICAgICogQHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9yIHRoZSBpZFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBlZGl0U3R5bGVTaGVldChpZCwgc2hlZXRSdWxlcykge1xyXG4gICAgICAgIHZhciByZXN1bHRfaWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGlkID09PSBcInVuZGVmaW5lZFwiIHx8IGlkID09PSBudWxsIHx8IHNoZWV0UnVsZXMgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vaWYgZG9udCBleGlzdHMgeWV0XHJcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgaWYgKCFzdHlsZVNoZWV0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKiAgcmVzdWx0X2lkID0gaWQ7XHJcbiAgICAgICAgIC8vdmFyIHN0eWxlU2hlZXQ6IEhUTUxTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgIHN0eWxlU2hlZXQuaWQgPSByZXN1bHRfaWQ7XHJcbiAgICAgICAgIHN0eWxlU2hlZXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpOyAqL1xyXG4gICAgICAgIHN0eWxlU2hlZXQudGV4dENvbnRlbnQgPSB0b1Jhd1N0eWxlU2hlZXQoc2hlZXRSdWxlcyk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdF9pZDtcclxuICAgIH1cclxuICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldCA9IGVkaXRTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlbiBhbiBpZCBpbiBzdHJpbmcgZm9ybWF0LCBjaGVja3MgaW50byB0aGUgRE9NIHdoZXRoZXIgdGhlcmUgaXMgYSBzdHlsZVxyXG4gICAgICogd2l0aCB0aGUgZ2l2ZW4gaWQuIElmIHRydWUsIHRoaXMgZnVuY3Rpb24gd2lsbCByZW1vdmUgdGhlIHN0eWxlc2hlZXQgYW5kIHJldHVybiB0aGUgaWQuXHJcbiAgICAgKiBJZiBub3QgcHJlc2VudCwgd2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBzdHlsZXNoZWV0IHRvIHJlbW92ZSBpZiBleGlzdHNcclxuICAgICAqIEByZXR1cm5zIHRoZSBpZCBvciBhbiBlbXB0eSBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gcmVtb3ZlU3R5bGVTaGVldChpZCkge1xyXG4gICAgICAgIHZhciByZXN1bHRfaWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBodG1sT2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICAgIGlmIChodG1sT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoaHRtbE9iamVjdCk7XHJcbiAgICAgICAgICAgIHJlc3VsdF9pZCA9IGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0X2lkO1xyXG4gICAgfVxyXG4gICAgRHluYW1pQ1NTLnJlbW92ZVN0eWxlU2hlZXQgPSByZW1vdmVTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlbiBhbiBpZCBpbiBzdHJpbmcgZm9ybWF0LCBjaGVja3MgaW50byB0aGUgRE9NIHdoZXRoZXIgdGhlcmUgaXMgYSBzdHlsZVxyXG4gICAgICogd2l0aCB0aGUgZ2l2ZW4gaWQgZXhpc3RzIGFuZCByZXR1cm5hIGJvb2xlYW4gcmVzdWx0XHJcbiAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBzdHlsZXNoZWV0IHRvIGNoZWNrIGlmIGV4aXN0c1xyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc3R5bGVzaGVldCB3YXMgZm91bmRcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZXhpc3RTdHlsZVNoZWV0KGlkKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBpZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBodG1sT2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICAgIGlmIChodG1sT2JqZWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MuZXhpc3RTdHlsZVNoZWV0ID0gZXhpc3RTdHlsZVNoZWV0O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgc3R5bGVzaGVldCBnaXZlbiBhIHN0eWxlc2hlZXRcclxuICAgICAqIEBwYXJhbSBzdHlsZVNoZWV0IGFzdHlsZXNoZWV0XHJcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV3IHN0eWxlc2hlZXQgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIG1ha2VTdHlsZVNoZWV0KHN0eWxlU2hlZXQpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHN0eWxlU2hlZXQgPT09IFwidW5kZWZpbmVkXCIgfHwgc3R5bGVTaGVldCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQ7XHJcbiAgICB9XHJcbiAgICBEeW5hbWlDU1MubWFrZVN0eWxlU2hlZXQgPSBtYWtlU3R5bGVTaGVldDtcclxufSkoRHluYW1pQ1NTIHx8IChEeW5hbWlDU1MgPSB7fSkpO1xyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2hhcmFjdGVyIGlzIHVwcGVyQ2FzZSBvciBub3RcclxuICogQHBhcmFtIGNoYXJhY3RlciBhIGNoYXJhY3RlclxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIHN0ciBjb250YWlucyBhIHN0cmluZyBjaGFyYWN0ZXJcclxuICovXHJcbmZ1bmN0aW9uIGlzVXBwZXIoY2hhcmFjdGVyKSB7XHJcbiAgICBpZiAoIWNoYXJhY3RlcilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gIS9bYS16XS8udGVzdChjaGFyYWN0ZXIpICYmIC9bQS1aXS8udGVzdChjaGFyYWN0ZXIpO1xyXG59XHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhIHJ1bGUgd2l0aCB1cHBlcmNhc2UgdG8gYSBoeXBoZW4tbG93ZXJjYXNlIHZlcnNpb25cclxuICogQHBhcmFtIHJ1bGVMYWJlbCB0aGUgcnVsZVxyXG4gKiBAcmV0dXJucyBhIGh5cGhlbi1sb3dlcmNhc2UgbGFiZWxcclxuICovXHJcbmZ1bmN0aW9uIGZyb21VcHBlckNhc2VUb0h5cGhlbihydWxlTGFiZWwpIHtcclxuICAgIHZhciByZXN1bHQgPSBcIlwiO1xyXG4gICAgdmFyIGNoYXJVcHBlciA9ICcgJztcclxuICAgIHZhciBpc3VwcGVyID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVMYWJlbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjdXJyZW50Q2hhciA9IHJ1bGVMYWJlbFtpXTtcclxuICAgICAgICBpZiAoaXNVcHBlcihjdXJyZW50Q2hhcikpIHtcclxuICAgICAgICAgICAgY2hhclVwcGVyID0gY3VycmVudENoYXI7XHJcbiAgICAgICAgICAgIGlzdXBwZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL2FkZCBoeXBoZW5cclxuICAgIGlmIChpc3VwcGVyKSB7XHJcbiAgICAgICAgdmFyIHBhcnRzID0gcnVsZUxhYmVsLnNwbGl0KGNoYXJVcHBlcik7XHJcbiAgICAgICAgcmVzdWx0ID0gXCJcIi5jb25jYXQocGFydHNbMF0sIFwiLVwiKS5jb25jYXQoY2hhclVwcGVyLnRvTG93ZXJDYXNlKCkpLmNvbmNhdChwYXJ0c1sxXSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBydWxlTGFiZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgdGhlIGxhYmVsIGNvbnRhaW5zIHRoZSBcIjpcIiBjaGFyYWN0ZXJcclxuICogQHBhcmFtIHJ1bGVMYWJlbCB0aGUgcnVsZVxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBydWxlIGxhYmVsIGNvcnJlc3BvbmRzIHRvIGEgcHNldWRvIGNsYXNzXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1BzZXVkbyhydWxlTGFiZWwpIHtcclxuICAgIGlmICghcnVsZUxhYmVsKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBydWxlTGFiZWwuaW5jbHVkZXMoXCI6XCIpO1xyXG59XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gY2xhc3NOYW1lXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5mdW5jdGlvbiBtYWtlUmF3UnVsZUxhYmVsKGNsYXNzTmFtZSkge1xyXG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcbiAgICB2YXIgc3BsaXRlZENsYXNzTmFtZSA9IGNsYXNzTmFtZS50cmltKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgLy9pcyBjb21wb3NlZCBjbGFzc25hbWU/XHJcbiAgICBpZiAoc3BsaXRlZENsYXNzTmFtZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcGxpdGVkQ2xhc3NOYW1lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCArPSBcIi5cIi5jb25jYXQoc3BsaXRlZENsYXNzTmFtZVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdCArPSBcIntcXG5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCArPSBcIi5cIi5jb25jYXQoY2xhc3NOYW1lLCBcIntcXG5cIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gc2hlZXRSdWxlc1xyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZnVuY3Rpb24gdG9SYXdTdHlsZVNoZWV0KHNoZWV0UnVsZXMpIHtcclxuICAgIGlmICh0eXBlb2Ygc2hlZXRSdWxlcyA9PT0gXCJ1bmRlZmluZWRcIiB8fCBzaGVldFJ1bGVzID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICB2YXIgcmF3U3R5bGVTaGVldCA9IFwiXCI7XHJcbiAgICB2YXIgbmVzdGVkUHNldWRvcyA9IFtdO1xyXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaGVldFJ1bGVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgdmFyIGN1cnJlbnRSdWxlID0gc2hlZXRSdWxlc1tqXTtcclxuICAgICAgICB2YXIgY3Vycm5ldFJhd1J1bGUgPSBcIlwiO1xyXG4gICAgICAgIC8vIGN1cnJuZXRSYXdSdWxlICs9IGAuJHtjdXJyZW50UnVsZS5jbGFzc05hbWV9e1xcbmA7XHJcbiAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gbWFrZVJhd1J1bGVMYWJlbChjdXJyZW50UnVsZS5jbGFzc05hbWUpO1xyXG4gICAgICAgIC8vbGlzdCBvZiBsYWJlbHMgZm9yIHJ1bGVzXHJcbiAgICAgICAgdmFyIHJ1bGVza2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRSdWxlLnJ1bGVzKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVza2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgY3VycmVudEtleSA9IHJ1bGVza2V5c1tpXTtcclxuICAgICAgICAgICAgdmFyIHN0eWxlTGFiZWwgPSBmcm9tVXBwZXJDYXNlVG9IeXBoZW4oY3VycmVudEtleSk7XHJcbiAgICAgICAgICAgIC8vaWYgYSBwc2V1ZG8gY2xhc3MgZm91bmQsIHNlcGFyYXRlIGl0XHJcbiAgICAgICAgICAgIGlmIChpc1BzZXVkbyhzdHlsZUxhYmVsKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBzZXVkb0NsYXNzTmFtZSA9IGN1cnJlbnRSdWxlLmNsYXNzTmFtZSArIHN0eWxlTGFiZWw7XHJcbiAgICAgICAgICAgICAgICBuZXN0ZWRQc2V1ZG9zLnB1c2goeyBjbGFzc05hbWU6IHBzZXVkb0NsYXNzTmFtZSwgcnVsZXM6IGN1cnJlbnRSdWxlLnJ1bGVzW3N0eWxlTGFiZWxdIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlUnVsZSA9IGN1cnJlbnRSdWxlLnJ1bGVzW2N1cnJlbnRLZXldO1xyXG4gICAgICAgICAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCJcXHRcIi5jb25jYXQoc3R5bGVMYWJlbCwgXCIgOiBcIikuY29uY2F0KHN0eWxlUnVsZSwgXCI7XFxuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwifVxcblwiO1xyXG4gICAgICAgIHJhd1N0eWxlU2hlZXQgKz0gY3Vycm5ldFJhd1J1bGU7XHJcbiAgICB9XHJcbiAgICAvL25lc3RlZCBwc2V1ZG9zXHJcbiAgICBmb3IgKHZhciBwID0gMDsgcCA8IG5lc3RlZFBzZXVkb3MubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICB2YXIgY3Vycm5ldFJhd1J1bGUgPSBcIlwiO1xyXG4gICAgICAgIHZhciBjdXJyZW50UnVsZSA9IG5lc3RlZFBzZXVkb3NbcF07XHJcbiAgICAgICAgdmFyIHJ1bGVza2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRSdWxlLnJ1bGVzKTtcclxuICAgICAgICBjdXJybmV0UmF3UnVsZSArPSBcIi5cIi5jb25jYXQoY3VycmVudFJ1bGUuY2xhc3NOYW1lLCBcIntcXG5cIik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlc2tleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGN1cnJlbnRLZXkgPSBydWxlc2tleXNbaV07XHJcbiAgICAgICAgICAgIHZhciBzdHlsZUxhYmVsID0gZnJvbVVwcGVyQ2FzZVRvSHlwaGVuKGN1cnJlbnRLZXkpO1xyXG4gICAgICAgICAgICB2YXIgc3R5bGVSdWxlID0gY3VycmVudFJ1bGUucnVsZXNbY3VycmVudEtleV07XHJcbiAgICAgICAgICAgIGN1cnJuZXRSYXdSdWxlICs9IFwiXFx0XCIuY29uY2F0KHN0eWxlTGFiZWwsIFwiIDogXCIpLmNvbmNhdChzdHlsZVJ1bGUsIFwiO1xcblwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3Vycm5ldFJhd1J1bGUgKz0gXCJ9XFxuXCI7XHJcbiAgICAgICAgcmF3U3R5bGVTaGVldCArPSBjdXJybmV0UmF3UnVsZTtcclxuICAgIH1cclxuICAgIHJldHVybiByYXdTdHlsZVNoZWV0O1xyXG59XG5cbnZhciBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlcigpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5jcmVhc2VzIHRoZSBjb3VudCBhbmQgcmV0cmlldmVzIHRoZSBuZXh0IG51bWJlclxuICAgICAqIEByZXR1cm5zIHRoZSBuZXh0IHN0YXRpYyBudW1iZXIgaW4gc3R5bGVzXG4gICAgICovXG4gICAgTWF0ZXJpYWxCdXR0b25TdHlsZU1hbmFnZXIuZ2V0TmV4dElkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyKys7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJJZCBjYWxsZWQgXCIgKyBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm5leHRCdXR0b25DbGFzc05hbWVOdW1iZXI7XG4gICAgfTtcbiAgICBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlci5uZXh0QnV0dG9uQ2xhc3NOYW1lTnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZENsYXNzTmFtZSBpZGVudGlmeWVyXG4gICAgICogQHBhcmFtIHZhcmlhbnQgdGhlIHZhcmlhbnQgb2YgdGhlIGJ1dHRvblxuICAgICAqIEBwYXJhbSBkaXNhYmxlZCBkaXNhYmxlZCBwcm9wXG4gICAgICogQHBhcmFtIGNvbG9yIHRoZSB0aGVtZSBjb2xvclxuICAgICAqIEBwYXJhbSB0ZXh0Q29sb3IgdGhlIHRleHQgY29sb3JcbiAgICAgKiBAcmV0dXJucyBhIER5bmFtaWNTaGVldFxuICAgICAqL1xuICAgIE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm1ha2VEeW5hbWljU3R5bGUgPSBmdW5jdGlvbiAoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCB0ZXh0RGVjb3JhdGlvbikge1xuICAgICAgICAvLyhbeyB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgbmV4dENsYXNzTmFtZSB9XSk7XG4gICAgICAgIHZhciBzdHlsZVNoZWV0ID0ge1xuICAgICAgICAgICAgaWQ6IFwibWF0ZXJpYWwtYnV0dG9uLXN0eWxlcy1cIi5jb25jYXQoaWRDbGFzc05hbWUpLFxuICAgICAgICAgICAgLy8gaWQ6IGBkdWktYnV0dG9uLXN0eWxlc2AsXG4gICAgICAgICAgICBzaGVldFJ1bGVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwibWF0ZXJpYWwtYnV0dG9uLlwiLmNvbmNhdCh2YXJpYW50LCBcIi1cIikuY29uY2F0KGlkQ2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgLy9jbGFzc05hbWU6IGBkdWktYnV0dG9uLiR7dmFyaWFudH1gLFxuICAgICAgICAgICAgICAgICAgICBydWxlczoge30sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJtYXRlcmlhbC1idXR0b24tcm9vdC5cIi5jb25jYXQodmFyaWFudCwgXCItXCIpLmNvbmNhdChpZENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgIC8vIGNsYXNzTmFtZTogYGR1aS1idXR0b24tcm9vdC4ke3ZhcmlhbnR9YCxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IHt9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIHZhciBzaGVldFJ1bGVzID0gc3R5bGVTaGVldC5zaGVldFJ1bGVzO1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHZhcmlhbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbmVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMF0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogYXN1cmVDb2xvcihjb2xvdXJOYW1lVG9IZXgodGV4dENvbG9yKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogdGV4dERlY29yYXRpb25cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRSdWxlc1sxXS5ydWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiOmhvdmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGRhcmtlckNvbG9yKGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvcikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm91dGxpbmVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHNoZWV0UnVsZXNbMF0ucnVsZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIFwiLmNvbmNhdChjb21wbGV0ZUFzdXJlQ29sb3IoY29sb3IsIDAuNSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiB0ZXh0RGVjb3JhdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzFdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCI6aG92ZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjA4NSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzBdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiB0ZXh0RGVjb3JhdGlvblxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGVldFJ1bGVzWzFdLnJ1bGVzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCI6aG92ZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjA4NSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgPSBzaGVldFJ1bGVzO1xuICAgICAgICByZXR1cm4gc3R5bGVTaGVldDtcbiAgICB9O1xuICAgIHJldHVybiBNYXRlcmlhbEJ1dHRvblN0eWxlTWFuYWdlcjtcbn0oKSk7XG5cbnZhciB1c2VNYXRlcmlhbEJ1dHRvbkNsYXNzTmFtZSA9IGZ1bmN0aW9uICh2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHRDb2xvciwgdGV4dERlY29yYXRpb24sIGNsYXNzTmFtZSwgaWRDbGFzc05hbWUsIHJlc2V0U3R5bGVzKSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVzZU1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lXCIsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLFxuICAgIC8vIHRleHREZWNvcmF0aW9uLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLCByZXNldFN0eWxlcyk7XG4gICAgdmFyIGJhc2VDbGFzc05hbWUgPSBcIm1hdGVyaWFsLWJ1dHRvbi1yb290IG1hdGVyaWFsLWJ1dHRvblwiO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBpZFN0eWxlcyA9IF9hWzBdLCBzZXRJZFN0eWxlcyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc3R5bGVJbmplY3RlZCA9IF9iWzBdLCBzZXRTdHlsZUluamVjdGVkID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWUgPSBfY1swXSwgc2V0RmluYWxDbGFzc05hbWUgPSBfY1sxXTtcbiAgICAvL2NvbnN0IFtuZXh0Q2xhc3NOYW1lLCBzZXROZXh0Q2xhc3NOYW1lXSA9IFJlYWN0LnVzZVN0YXRlPG51bWJlcj4oMCk7XG4gICAgdmFyIGhhbmRsZUluc2VyU3R5bGUgPSBmdW5jdGlvbiAoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dERlY29yYXRpb24sIHRleHRDb2xvcikge1xuICAgICAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBiYXNlQ2xhc3NOYW1lO1xuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IE1hdGVyaWFsQnV0dG9uU3R5bGVNYW5hZ2VyLm1ha2VEeW5hbWljU3R5bGUoaWRDbGFzc05hbWUsIHZhcmlhbnQsIGRpc2FibGVkLCBjb2xvciwgdGV4dENvbG9yLCB0ZXh0RGVjb3JhdGlvbik7XG4gICAgICAgIHZhciBpZFN0eWxlID0gXCJcIjtcbiAgICAgICAgaWYgKCFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICBpZFN0eWxlID0gRHluYW1pQ1NTLmluc2VydFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRHluYW1pQ1NTIGluc2VydFwiLCBpZFN0eWxlKTtcbiAgICAgICAgICAgIHNldElkU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpXG4gICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vYWxyZWFkeSBhIHN0eWxlc2hlZXQgYXNzb2NpYXRlZFxuICAgICAgICAgICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0KGlkU3R5bGVzLCBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgfHwgW10pO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkR5bmFtaUNTUyBlZGl0XCIsIGlkU3R5bGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vbGV0IGZpbmFsQ2xhc3NOYW1lID0gYG1hdGVyaWFsLWJ1dHRvbi1yb290IG1hdGVyaWFsLWJ1dHRvbiBgO1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAvL2ZpbmFsQ2xhc3NOYW1lICs9IGAke3ZhcmlhbnR9ICR7dmFyaWFudH0tJHtuZXh0Q2xhc3NOYW1lfWA7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBcIi5jb25jYXQodmFyaWFudCwgXCIgXCIpLmNvbmNhdCh2YXJpYW50LCBcIi1cIikuY29uY2F0KGlkQ2xhc3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGRpc2FibGVkXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy9jbGFzc25hbWUgdG8gb3ZlcnJpZGUgc3R5bGVzIGluIHN0eWxlc2hlZXRcbiAgICAgICAgaWYgKGNsYXNzTmFtZSAmJiBjbGFzc05hbWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9zb21lIHRleHQgaW4gY2xhc3NOYW1lXG4gICAgICAgIGlmICh0ZXh0RGVjb3JhdGlvbikge1xuICAgICAgICAgICAgdmFyIGZpbmFsVGV4dERlY29yYXRpb24gPSB0ZXh0RGVjb3JhdGlvbiAmJlxuICAgICAgICAgICAgICAgIFtcInVwcGVyY2FzZVwiLCBcImNhcGl0YWxpemVcIiwgXCJsb3dlcmNhc2VcIiwgXCJub25lXCJdLmluY2x1ZGVzKHRleHREZWNvcmF0aW9uID09PSBudWxsIHx8IHRleHREZWNvcmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0ZXh0RGVjb3JhdGlvbi50b0xvd2VyQ2FzZSgpKSA/IHRleHREZWNvcmF0aW9uLnRvTG93ZXJDYXNlKCkgOiBcInVwcGVyY2FzZVwiO1xuICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KGZpbmFsVGV4dERlY29yYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHNldEZpbmFsQ2xhc3NOYW1lKGZpbmFsQ2xhc3NOYW1lKTtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghcmVzZXRTdHlsZXMpXG4gICAgICAgICAgICBoYW5kbGVJbnNlclN0eWxlKGlkQ2xhc3NOYW1lLCB2YXJpYW50LCBkaXNhYmxlZCwgY29sb3IsIHRleHREZWNvcmF0aW9uLCB0ZXh0Q29sb3IpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbdmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0RGVjb3JhdGlvbiwgdGV4dENvbG9yLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLCByZXNldFN0eWxlc10pO1xuICAgIHZhciByZW1vdmVTdHlsZSA9IGZ1bmN0aW9uIChzdHlsZUluamVjdGVkLCBpZFN0eWxlcykge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJEeW5hbWlDU1MgcmVtb3ZpbmdcIiwgc3R5bGVJbmplY3RlZCwgaWRTdHlsZXMpO1xuICAgICAgICBpZiAoc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgLyogY29uc3QgcmVzID0gICovIER5bmFtaUNTUy5yZW1vdmVTdHlsZVNoZWV0KGlkU3R5bGVzKTtcbiAgICAgICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkR5bmFtaUNTUyByZW1vdmluZyByZXNcIiwgcmVzKTtcbiAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgc2V0SWRTdHlsZXMoXCJcIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiByZW1vdmVTdHlsZShzdHlsZUluamVjdGVkLCBpZFN0eWxlcyk7IH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFtzdHlsZUluamVjdGVkLCBpZFN0eWxlc10pO1xuICAgIHJldHVybiBmaW5hbENsYXNzTmFtZTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4ubWF0ZXJpYWwtYnV0dG9uLXJvb3Qge1xcbiAgYm9yZGVyOiAwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBvdXRsaW5lOiAwO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbiAgY29sb3I6IHdoaXRlO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uIHtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMsIGJveC1zaGFkb3cgMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMsIGJvcmRlciAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIDBtcztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBtaW4td2lkdGg6IDY0cHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzU7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wMjg1N2VtO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLnVwcGVyY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLmxvd2VyY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLmNhcGl0YWxpemUge1xcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XFxufVxcblxcbi5tYXRlcmlhbC1idXR0b24uY29udGFpbmVkIHtcXG4gIHBhZGRpbmc6IDZweCAxNnB4O1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi5vdXRsaW5lZCB7XFxuICBwYWRkaW5nOiA1cHggMTVweDtcXG59XFxuXFxuLm1hdGVyaWFsLWJ1dHRvbi50ZXh0IHtcXG4gIHBhZGRpbmc6IDVweCAxNXB4O1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uLXJvb3QuY29udGFpbmVkOmhvdmVyIHtcXG4gIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG5cXG4ubWF0ZXJpYWwtYnV0dG9uIHNwYW4ubWF0ZXJpYWwtYnV0dG9uLWxhYmVsIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZGlzcGxheTogaW5oZXJpdDtcXG4gIGFsaWduLWl0ZW1zOiBpbmhlcml0O1xcbiAganVzdGlmeS1jb250ZW50OiBpbmhlcml0O1xcbn1cXG5cXG5zcGFuLnJpcHBsZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xcbiAgYW5pbWF0aW9uOiByaXBwbGUgNTAwbXMgbGluZWFyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHJpcHBsZSB7XFxuICB0byB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoNCk7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVxcbi5tYXRlcmlhbC1idXR0b24tcm9vdC5kaXNhYmxlZCB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XFxuICBwYWRkaW5nOiA2cHggMTZweDtcXG59XFxuLm1hdGVyaWFsLWJ1dHRvbi1yb290LmRpc2FibGVkLmRhcmttb2RlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xcbn1cXG5cXG4vKiBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkge1xcbiAgLm1hdGVyaWFsLWJ1dHRvbiB7XFxuICAgIG1pbi13aWR0aDogMzBweDtcXG4gICAgZm9udC1zaXplOiAwLjc4cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcXG4gIH1cXG4gIC5tYXRlcmlhbC1idXR0b24uY29udGFpbmVkIHtcXG4gICAgcGFkZGluZzogNHB4IDEzcHg7XFxuICB9XFxuICAubWF0ZXJpYWwtYnV0dG9uLm91dGxpbmVkIHtcXG4gICAgcGFkZGluZzogNHB4IDEycHg7XFxuICB9XFxufVxcbiAqL1wiKTtcblxudmFyIEZpbGVzVWlDb250ZXh0ID0gUmVhY3RfX2RlZmF1bHQuY3JlYXRlQ29udGV4dCh7fSk7XG5cbnZhciBNYXRlcmlhbEJ1dHRvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLCBocmVmID0gcHJvcHMuaHJlZiwgdGV4dERlY29yYXRpb24gPSBwcm9wcy50ZXh0VHJhbnNmb3JtLCBfYSA9IHByb3BzLnZhcmlhbnQsIHZhcmlhbnQgPSBfYSA9PT0gdm9pZCAwID8gXCJjb250YWluZWRcIiA6IF9hLCBfYiA9IHByb3BzLmNvbG9yLCBjb2xvciA9IF9iID09PSB2b2lkIDAgPyBcIiMxOTc2ZDJcIiA6IF9iLCBfYyA9IHByb3BzLnRleHRDb2xvciwgdGV4dENvbG9yID0gX2MgPT09IHZvaWQgMCA/IFwid2hpdGVcIiA6IF9jLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHN0eWxlID0gcHJvcHMuc3R5bGUsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCByZXNldFN0eWxlcyA9IHByb3BzLnJlc2V0U3R5bGVzLCBkaXNhYmxlUmlwcGxlID0gcHJvcHMuZGlzYWJsZVJpcHBsZSwgZGFya01vZGVQcm9wID0gcHJvcHMuZGFya01vZGUsIGlkID0gcHJvcHMuaWQsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImRpc2FibGVkXCIsIFwiaHJlZlwiLCBcInRleHRUcmFuc2Zvcm1cIiwgXCJ2YXJpYW50XCIsIFwiY29sb3JcIiwgXCJ0ZXh0Q29sb3JcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwib25DbGlja1wiLCBcInJlc2V0U3R5bGVzXCIsIFwiZGlzYWJsZVJpcHBsZVwiLCBcImRhcmtNb2RlXCIsIFwiaWRcIl0pO1xuICAgIC8vY29udGV4dFxuICAgIHZhciBkYXJrTW9kZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KS5kYXJrTW9kZTtcbiAgICB2YXIgZGFya01vZGUgPSBkYXJrTW9kZVByb3AgIT09IHVuZGVmaW5lZCA/IGRhcmtNb2RlUHJvcCA6IGRhcmtNb2RlQ29udGV4dDtcbiAgICAvLyAgY29uc3QgaWRDbGFzc05hbWUgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBpZENsYXNzTmFtZSA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gaWQgfHwgRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpICsgXCJcIjsgfSwgW2lkXSk7XG4gICAgdmFyIG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lID0gdXNlTWF0ZXJpYWxCdXR0b25DbGFzc05hbWUodmFyaWFudCwgZGlzYWJsZWQsIGNvbG9yLCB0ZXh0Q29sb3IsIHRleHREZWNvcmF0aW9uLCBjbGFzc05hbWUsIGlkQ2xhc3NOYW1lLnJlcGxhY2UoXCI6XCIsIFwiXCIpLnJlcGxhY2UoXCI6XCIsIFwiXCIpLCByZXNldFN0eWxlcyk7XG4gICAgdmFyIGZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZSA9IG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lICYmIGRhcmtNb2RlXG4gICAgICAgID8gYWRkQ2xhc3NOYW1lKG1hdGVyaWFsQnV0dG9uQ2xhc3NOYW1lLCBcImRhcmttb2RlXCIpXG4gICAgICAgIDogbWF0ZXJpYWxCdXR0b25DbGFzc05hbWU7XG4gICAgLy9jb25zb2xlLmxvZyhcImZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZVwiLCBmaW5hbE1CQ2xhc3NOYW1lRGFya01vZGUsIGRhcmtNb2RlKTtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy9yaXBwbGVcbiAgICAgICAgaWYgKCFkaXNhYmxlUmlwcGxlKVxuICAgICAgICAgICAgY3JlYXRlUmlwcGxlQnV0dG9uKGUsIHZhcmlhbnQsIGNvbG9yKTtcbiAgICAgICAgb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGUpO1xuICAgIH1cbiAgICBpZiAoZmluYWxNQkNsYXNzTmFtZURhcmtNb2RlICE9PSB1bmRlZmluZWQgfHwgcmVzZXRTdHlsZXMpXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KGhyZWYgPyBcImFcIiA6IFwiYnV0dG9uXCIsIF9fYXNzaWduJDEoeyBjbGFzc05hbWU6IHJlc2V0U3R5bGVzICYmIGNsYXNzTmFtZSA/IGNsYXNzTmFtZSA6IGZpbmFsTUJDbGFzc05hbWVEYXJrTW9kZSwgXCJkYXRhLXRlc3RpZFwiOiBocmVmID8gXCJkdWktYW5jaG9yXCIgOiBcImR1aS1idXR0b25cIiwgb25DbGljazogaGFuZGxlQ2xpY2ssIGhyZWY6IGhyZWYsIHN0eWxlOiBzdHlsZSwgY2hpbGRyZW46IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBcIm1hdGVyaWFsLWJ1dHRvbi1sYWJlbFwiIH0sIGNoaWxkcmVuKSwgZGlzYWJsZWQ6IGRpc2FibGVkIH0sIHJlc3QpKTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBcImxvYWRpbmcgc3R5ZXNcIik7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktYnV0dG9ucy1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBnYXA6IDEwcHg7XFxufVxcbi5maWxlcy11aS1idXR0b25zLWNvbnRhaW5lci50b3Age1xcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XFxufVxcbi5maWxlcy11aS1idXR0b25zLWNvbnRhaW5lci5ib3R0b20ge1xcbiAgcGFkZGluZy10b3A6IDEwcHg7XFxufVwiKTtcblxudmFyIERyb3B6b25lQnV0dG9ucyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjbGVhbkJ1dHRvbiA9IHByb3BzLmNsZWFuQnV0dG9uLCBhYm9ydEJ1dHRvbiA9IHByb3BzLmFib3J0QnV0dG9uLCBjb250YWluZXJDbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGNvbnRhaW5lclN0eWxlID0gcHJvcHMuc3R5bGUsIGRlbGV0ZUJ1dHRvbiA9IHByb3BzLmRlbGV0ZUJ1dHRvbiwgdXBsb2FkQnV0dG9uID0gcHJvcHMudXBsb2FkQnV0dG9uLCBcbiAgICAvL2xvY2FsaXphdGlvbixcbiAgICBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgb25DbGVhbiA9IHByb3BzLm9uQ2xlYW4sIG9uRGVsZXRlID0gcHJvcHMub25EZWxldGUsIG9uVXBsb2FkID0gcHJvcHMub25VcGxvYWQsIHRvcCA9IHByb3BzLnRvcCwgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZDtcbiAgICB2YXIgYWN0aW9uQnV0dG9uc0xpc3QgPSBbXG4gICAgICAgIGNsZWFuQnV0dG9uXG4gICAgICAgICAgICA/IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgY2xlYW5CdXR0b24pLCB7IGxhYmVsOiBcIkNsZWFuXCIsIG9uQ2xpY2s6IGNsZWFuQnV0dG9uLm9uQ2xpY2sgfHwgb25DbGVhbiB9KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGVsZXRlQnV0dG9uXG4gICAgICAgICAgICA/IF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgZGVsZXRlQnV0dG9uKSwgeyBsYWJlbDogXCJEZWxldGVcIiwgb25DbGljazogZGVsZXRlQnV0dG9uLm9uQ2xpY2sgfHwgb25EZWxldGUgfSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHVwbG9hZEJ1dHRvblxuICAgICAgICAgICAgPyBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIHVwbG9hZEJ1dHRvbiksIHsgbGFiZWw6IFwiVXBsb2FkXCIsIG9uQ2xpY2s6IHVwbG9hZEJ1dHRvbi5vbkNsaWNrIHx8IG9uVXBsb2FkIH0pIDogdW5kZWZpbmVkLFxuICAgICAgICBhYm9ydEJ1dHRvblxuICAgICAgICAgICAgPyBfX2Fzc2lnbiQxKF9fYXNzaWduJDEoe30sIGFib3J0QnV0dG9uKSwgeyBsYWJlbDogXCJBYm9ydFwiLCBvbkNsaWNrOiBhYm9ydEJ1dHRvbi5vbkNsaWNrIHx8IG9uQWJvcnQgfSkgOiB1bmRlZmluZWQsXG4gICAgXS5maWx0ZXIoZnVuY3Rpb24gKGFiKSB7IHJldHVybiBhYiAhPT0gdW5kZWZpbmVkOyB9KTtcbiAgICB2YXIgdGFpbENsYXNzTmFtZSA9IFwiXCIuY29uY2F0KHRvcCA/IFwiIHRvcFwiIDogXCIgYm90dG9tXCIpO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGFkZENsYXNzTmFtZShcImZpbGVzLXVpLWJ1dHRvbnMtY29udGFpbmVyXCIgKyB0YWlsQ2xhc3NOYW1lLCBjb250YWluZXJDbGFzc05hbWUpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogZmluYWxDbGFzc05hbWUsIHN0eWxlOiBjb250YWluZXJTdHlsZSB9LCBhY3Rpb25CdXR0b25zTGlzdC5tYXAoZnVuY3Rpb24gKGFjdGlvbkJ1dHRvblByb3BzLCBpbmRleCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBhY3Rpb25CdXR0b25Qcm9wcy5jaGlsZHJlbiwgbGFiZWwgPSBhY3Rpb25CdXR0b25Qcm9wcy5sYWJlbCwgcmVzZXRTdHlsZXMgPSBhY3Rpb25CdXR0b25Qcm9wcy5yZXNldFN0eWxlcywgY2xhc3NOYW1lID0gYWN0aW9uQnV0dG9uUHJvcHMuY2xhc3NOYW1lLCBzdHlsZSA9IGFjdGlvbkJ1dHRvblByb3BzLnN0eWxlLCBvbkNsaWNrID0gYWN0aW9uQnV0dG9uUHJvcHMub25DbGljaztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE1hdGVyaWFsQnV0dG9uLCB7IGtleTogaW5kZXgsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIHJlc2V0U3R5bGVzOiByZXNldFN0eWxlcywgb25DbGljazogZnVuY3Rpb24gKGV2dCkgeyByZXR1cm4gb25DbGljayA9PT0gbnVsbCB8fCBvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsaWNrKGV2dCk7IH0sIGRpc2FibGVkOiBkaXNhYmxlZCB9LCBjaGlsZHJlbiB8fCBsYWJlbCkpO1xuICAgIH0pKSk7XG59O1xuXG52YXIgRHJvcExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9uRHJvcCA9IHByb3BzLm9uRHJvcCwgb25EcmFnTGVhdmUgPSBwcm9wcy5vbkRyYWdMZWF2ZSwgY2xhc3NOYW1lTGF5ZXIgPSBwcm9wcy5jbGFzc05hbWUsIG9wZW4gPSBwcm9wcy5vcGVuLCBzdHlsZSA9IHByb3BzLnN0eWxlO1xuICAgIC8vY29uc29sZS5sb2coXCJEcm9wTGF5ZXJcIiwgY2xhc3NOYW1lTGF5ZXIpO1xuICAgIC8qICBjb25zdCBvbkRyYWdFbmQgPSAoZXZ0OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICAgLy9jb25zb2xlLmxvZyhcIkRyYWcgZW5kZWRcIik7XG4gICAgICAgb25EcmFnTGVhdmU/LihldnQpO1xuICAgICB9OyAqL1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lTGF5ZXIsIG9uRHJhZ0xlYXZlOiBvbkRyYWdMZWF2ZSwgb25Ecm9wOiBvbkRyb3AsIFxuICAgICAgICAvL29uRHJhZ0VuZD17b25EcmFnRW5kfVxuICAgICAgICBzdHlsZTogc3R5bGUgfHwgeyBkaXNwbGF5OiBvcGVuID8gdW5kZWZpbmVkIDogXCJub25lXCIgfSB9KSk7XG59O1xuXG5mdW5jdGlvbiB1c2VEcm9wem9uZUNsYXNzTmFtZShkcm9wem9uZUlkLCBjbGFzc05hbWUsIFxuLy9pc0RyYWdnaW5nOiBib29sZWFuLFxuLy9oZWFkZXI6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZSxcbi8vZm9vdGVyOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2UsXG5jb2xvciwgXG4vL2JvcmRlclJhZGl1czogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkLFxuYmFja2dyb3VuZCwgbWluSGVpZ2h0KSB7XG4gICAgLy9jb25zb2xlLmxvZyhcInVzZURyb3B6b25lQ2xhc3NOYW1lXCIsIGNsYXNzTmFtZSwgaXNEcmFnZ2luZywgaGVhZGVyLCBmb290ZXIsIGNvbG9yLCBiYWNrZ3JvdW5kLCBtaW5IZWlnaHQpO1xuICAgIHZhciBmaW5hbERyb3B6b25lSWQgPSAoY29sb3IgPT09IHVuZGVmaW5lZCAmJiBiYWNrZ3JvdW5kID09PSB1bmRlZmluZWQgJiYgbWluSGVpZ2h0ID09PSB1bmRlZmluZWQpID8gXCJkZWZhdWx0XCIgOiBkcm9wem9uZUlkLnJlcGxhY2UoXCI6XCIsIFwiX1wiKS5yZXBsYWNlKFwiOlwiLCBcIl9cIik7XG4gICAgdmFyIGJhc2VDbGFzc05hbWUgPSBcImZ1aS1kcm9wem9uZS1yb290IGZ1aS1kcm9wem9uZS1ib3JkZXJcIjtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgaWRTdHlsZXMgPSBfYVswXSwgc2V0SWRTdHlsZXMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHN0eWxlSW5qZWN0ZWQgPSBfYlswXSwgc2V0U3R5bGVJbmplY3RlZCA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lID0gX2NbMF0sIHNldEZpbmFsQ2xhc3NOYW1lID0gX2NbMV07XG4gICAgdmFyIF9kID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgZmluYWxDbGFzc05hbWVIZWFkZXIgPSBfZFswXSwgc2V0RmluYWxDbGFzc05hbWVIZWFkZXIgPSBfZFsxXTtcbiAgICB2YXIgX2UgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBmaW5hbENsYXNzTmFtZUZvb3RlciA9IF9lWzBdLCBzZXRGaW5hbENsYXNzTmFtZUZvb3RlciA9IF9lWzFdO1xuICAgIHZhciBfZiA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIGZpbmFsQ2xhc3NOYW1lRGlzYWJsZWQgPSBfZlswXSwgc2V0RmluYWxDbGFzc05hbWVEaXNhYmxlZCA9IF9mWzFdO1xuICAgIC8vY29uc3QgW29mZnNldCwgc2V0T2Zmc2V0XSA9IFJlYWN0LnVzZVN0YXRlPG51bWJlcj4oMCk7XG4gICAgdmFyIG1ha2VDbGFzc05hbWUgPSBmdW5jdGlvbiAoY2xhc3NOYW1lLCBcbiAgICAvL2lzRHJhZ2dpbmc6IGJvb2xlYW4sXG4gICAgLy8gb2Zmc2V0OiBudW1iZXIsXG4gICAgY29sb3IsIFxuICAgIC8vYm9yZGVyUmFkaXVzOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0KSB7XG4gICAgICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IGJhc2VDbGFzc05hbWU7XG4gICAgICAgIC8vIGJldHRlciB0byBjb21lIGJhY2sgdG8gdGhlIGN1c3RvbSBzdHlsZXNoZWV0IGZvciBlYWNoIGRyb3B6b25lIHdpdGggdGhlIHVuaXF1ZSBpZFxuICAgICAgICB2YXIgc3R5bGVTaGVldCA9IG1ha2VEeW5hbWljRHJvcHpvbmVTdHlsZVNoZWV0KGZpbmFsRHJvcHpvbmVJZCwgXG4gICAgICAgIC8vIG9mZnNldCxcbiAgICAgICAgLy9pc0RyYWdnaW5nLFxuICAgICAgICBjb2xvciwgYmFja2dyb3VuZCwgbWluSGVpZ2h0KTtcbiAgICAgICAgdmFyIGlkU3R5bGUgPSBcIlwiO1xuICAgICAgICBpZiAoIXN0eWxlSW5qZWN0ZWQpIHtcbiAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgIHNldElkU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpXG4gICAgICAgICAgICAgICAgc2V0U3R5bGVJbmplY3RlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vYWxyZWFkeSBhIHN0eWxlc2hlZXQgYXNzb2NpYXRlZFxuICAgICAgICAgICAgRHluYW1pQ1NTLmVkaXRTdHlsZVNoZWV0KGlkU3R5bGVzLCBzdHlsZVNoZWV0LnNoZWV0UnVsZXMgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGZpbGVzLXVpLWRyb3B6b25lLWV4dHJhLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpO1xuICAgICAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBmaW5hbENsYXNzTmFtZSA9IFwiXCIuY29uY2F0KGZpbmFsQ2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lID0gYCR7ZmluYWxDbGFzc05hbWV9IGZ1aS1oaWRlLWJvcmRlcmA7XG4gICAgICAgIH0gKi9cbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWUoZmluYWxDbGFzc05hbWUpO1xuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZUhlYWRlcihcImZpbGVzLXVpLWhlYWRlci1ib3JkZXItcmQtXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCkpO1xuICAgICAgICBzZXRGaW5hbENsYXNzTmFtZUZvb3RlcihcImZpbGVzLXVpLWZvb3Rlci1ib3JkZXItcmQtdG9wLWJnLWNvbG9yLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpKTtcbiAgICAgICAgc2V0RmluYWxDbGFzc05hbWVEaXNhYmxlZChcImZpbGVzLXVpLWRpc2FibGVkLWxheWVyLWNvbG9yLVwiLmNvbmNhdChmaW5hbERyb3B6b25lSWQpKTtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG1ha2VDbGFzc05hbWUoY2xhc3NOYW1lLCBcbiAgICAgICAgLy9pc0RyYWdnaW5nLFxuICAgICAgICAvL29mZnNldCwgXG4gICAgICAgIGNvbG9yLCBcbiAgICAgICAgLy8gYm9yZGVyUmFkaXVzLCBcbiAgICAgICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2NsYXNzTmFtZSxcbiAgICAgICAgLy9pc0RyYWdnaW5nLFxuICAgICAgICAvLyBvZmZzZXQsIFxuICAgICAgICBjb2xvcixcbiAgICAgICAgLy9ib3JkZXJSYWRpdXMsIFxuICAgICAgICBiYWNrZ3JvdW5kLCBtaW5IZWlnaHRdKTtcbiAgICByZXR1cm4gW2ZpbmFsQ2xhc3NOYW1lLCBmaW5hbENsYXNzTmFtZUhlYWRlciwgZmluYWxDbGFzc05hbWVGb290ZXIsIGZpbmFsQ2xhc3NOYW1lRGlzYWJsZWRdO1xufVxudmFyIG1ha2VEeW5hbWljRHJvcHpvbmVTdHlsZVNoZWV0ID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIFxuLy8gb2Zmc2V0OiBudW1iZXIsXG4vL2lzRHJhZ2dpbmc6IGJvb2xlYW4sXG5jb2xvciwgYmFja2dyb3VuZCwgbWluSGVpZ2h0KSB7XG4gICAgdmFyIHJvb3RDb2xvckJvcmRlclN0eWxlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktZHJvcHpvbmUtZXh0cmEtXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgY29sb3I6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciksXG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IGRhc2hlZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSksXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGJhY2tncm91bmQsXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IHR5cGVvZiBtaW5IZWlnaHQgPT09IFwibnVtYmVyXCIgPyBcIlwiLmNvbmNhdChtaW5IZWlnaHQsIFwicHhcIikgOiBtaW5IZWlnaHQsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB2YXIgcm9vdENvbG9yQm9yZGVyU3R5bGVIaWRlQm9yZGVyID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktcm9vdC1ib3JkZXItaGlkZVwiLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHZhciBoZWFkZXJCb3JkZXJTdHlsZSA9IHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWhlYWRlci1ib3JkZXItcmQtXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgXCJib3JkZXItdG9wLWxlZnQtcmFkaXVzXCI6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIFwiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXNcIjogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICB9LFxuICAgIH07XG4gICAgdmFyIGZvb3RlckJvcmRlclN0eWxlID0ge1xuICAgICAgICBjbGFzc05hbWU6IFwiZmlsZXMtdWktZm9vdGVyLWJvcmRlci1yZC10b3AtYmctY29sb3ItXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgXCJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzXCI6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIFwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXNcIjogREVGQVVMVF9CT1JERVJfUkFESVVTLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjEyOSksXG4gICAgICAgICAgICBib3JkZXJUb3A6IFwiMXB4IGRvdHRlZCBcIi5jb25jYXQoY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHZhciBkaXNhYmxlZExheWVyU3R5bGUgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmaWxlcy11aS1kaXNhYmxlZC1sYXllci1jb2xvci1cIi5jb25jYXQoZHJvcHpvbmVJZCksXG4gICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvciwgMC4zOCksXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBzaGVldFJ1bGVzID0gW1xuICAgICAgICByb290Q29sb3JCb3JkZXJTdHlsZSxcbiAgICAgICAgcm9vdENvbG9yQm9yZGVyU3R5bGVIaWRlQm9yZGVyLFxuICAgICAgICBoZWFkZXJCb3JkZXJTdHlsZSxcbiAgICAgICAgZm9vdGVyQm9yZGVyU3R5bGUsXG4gICAgICAgIGRpc2FibGVkTGF5ZXJTdHlsZVxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IFwiZmlsZXMtZHJvcHpvbmUtdWktc3R5bGUtaWQtXCIgKyBkcm9wem9uZUlkLFxuICAgICAgICBzaGVldFJ1bGVzOiBzaGVldFJ1bGVzXG4gICAgfTtcbn07XG5cbi8qKlxuICogRWZmZWN0IGZvciBrZWVwaW5nIHRyYWNrIG9mIGNoYW5nZXNcbiAqIHVwZGF0ZSBmaWxlcyB3aGVuIHZhbHVlIGNoYW5nZXNcbiAqIGFsc28gdXBkYXRlcyB0aGUgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gKiBXaGVuIGBpc1VwbG9hZGluZ2AgaXMgdHJ1ZSwgaXQgb25seSB1cGRhdGVzIHdoZW4gdmFsdWUgYW5kIGFyck9mRXh0RmlsZXNcbiAqIGhhdmUgc2FtZSBsZW5naHQuIEFsc28sIG9ubHkgdXBkYXRlcyB0aGUgdXBsb2FkU3RhdHVzIGF0dHJpYnV0ZVxuICogZnJvbSBcInByZXBhcmluZ1wiLCB0byB1bmRlZmluZWQgd2hlbiBvbkNhbmNlbCgpIG1ldGhvZCBpcyBjYWxsZWQgaW5cbiAqIEZpbGVJdGVtIGNvbXBvbmVudFxuICogQHBhcmFtIGRyb3B6b25lSWQgdGhlIGFzb2NpYXRlZCBkcm9wem9uZUlkIGZvciB0aGUgY29ycmVzcG9uZGluZyBhcnJheSBvZiBFeHRGaWxlcyBpbiBjYXNlIG9mIG11bHRpcGxlIGRyb3B6b25lc1xuICogQHBhcmFtIHZhbHVlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBsaXN0IG9mIEZpbGVzIGZyb20gcHJvcHNcbiAqIEBwYXJhbSBpc1VwbG9hZGluZ1xuICogQHJldHVybnMgdGhlIGxvY2FsIGxpc3Qgb2YgRmlsZXNcbiAqL1xudmFyIHVzZURyb3B6b25lRmlsZUxpc3RVcGRhdGVyID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIHZhbHVlLCBpc1VwbG9hZGluZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIHZhbGlkYXRvciwgbG9jYWxpemF0aW9uLCB2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgIC8vY29uc29sZS5sb2coXCJpbmNvbW1pbmcgZXh0ZmlsZXMgZmlsZXVwZGF0ZXIgdmFsdWVcIiwgdmFsdWUubWFwKHggPT4geC51cGxvYWRTdGF0dXMpKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiRmlsZUxpc3RVcGRhdGVyXCIsIGRyb3B6b25lSWQsIHZhbHVlLCBpc1VwbG9hZGluZywgbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIHZhbGlkYXRlRmlsZXNGbGFnKTtcbiAgICAvL3N0YXRlIGZvciBtYW5hZ2luZyB0aGUgZmlsZXMgbG9jYWxseVxuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFtdKSwgbG9jYWxGaWxlcyA9IF9hWzBdLCBzZXRMb2NhbEZpbGVzID0gX2FbMV07XG4gICAgLy8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoMCksIG51bWJlck9mVmFsaWRGaWxlcyA9IF9iWzBdLCBzZXROdW1iZXJPZlZhbGlkRmlsZXMgPSBfYlsxXTtcbiAgICAvL0RldGVjdCBjaGFuZ2VzIGluIHRoZSBmaWxlIGl0ZW0gcHJvcHMgd2hlbiB1cGxvYWQgc3RhcnRlZFxuICAgIC8vbW9zdGx5IGZvciBkZXRlY3RpbmcgXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyck9mRXh0RmlsZXMgPSBFeHRGaWxlTWFuYWdlci5nZXRFeHRGaWxlSW5zdGFuY2VMaXN0KGRyb3B6b25lSWQpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsdWUgY2hhbmdlZFwiLCBpc1VwbG9hZGluZywgdmFsdWUubWFwKEYgPT4gRi51cGxvYWRTdGF0dXMpLCBkcm9wem9uZUlkKTtcbiAgICAgICAgLy8gLy9jb25zb2xlLmxvZyhcInZhbHVlIGNoYW5nZWRcIiwgdmFsdWUubWFwKEYgPT4gRi51cGxvYWRTdGF0dXMpKTtcbiAgICAgICAgaWYgKCFpc1VwbG9hZGluZykge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyB3aGVuIGlzIHVwbG9hZGluZ1xuICAgICAgICAgICAgaWYgKGFyck9mRXh0RmlsZXMpIHtcbiAgICAgICAgICAgICAgICAvL2xlbmdodCBvZiB0aGUgbmV3IGFyciBjYW4gYmUgZXF1YWwgb3IgbG93ZXJcbiAgICAgICAgICAgICAgICAvL3doZW4gbG93ZXIsIGl0IG1lYW5zIGEgZmlsZSB3YXMgZGVsZXRlZCwgaXQgd2lsbCBiZSByZW1vdmVkIG9ubHkgaWYgd2FzIG5vdCB1cGxvYWRlZFxuICAgICAgICAgICAgICAgIC8vd2hlbiBzYW1lIGxlbmdodCBpdCBtZWFucyB0aGF0IGEgZmlsZSBjb3VsZCBiZVxuICAgICAgICAgICAgICAgIC8vbm8gbWF0aGVyIHRoZSBzaXplLCBpdCB3aWxsIHNlYXJjaCBmb3IgdGhlIG1pc3NpbmcgYW5kIHRoZSBzdGF0dXMgdGhhdCBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlcy5mb3JFYWNoKGZ1bmN0aW9uIChleHRGaWxlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9pZiB0aGUgY3VycmVudCBFeHQgZmlsZSBpcyBub3QgcHJlc2VudCBhbnltb3JlXG4gICAgICAgICAgICAgICAgICAgIC8vYWRkIGRlbGV0ZWQgZmxhZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXh0RmlsZUluZGV4ID0gdmFsdWUuZmluZEluZGV4KGZ1bmN0aW9uIChleHRGaWxlKSB7IHJldHVybiBleHRGaWxlLmlkID09PSBleHRGaWxlSW5zdGFuY2UuaWQ7IH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXh0RmlsZUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSA9IHsgZGVsZXRlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImV4dEZpbGVVcGRhdGVyIG5vdCBmb3VuZFwiLCBleHRGaWxlSW5zdGFuY2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJFeHRGaWxlT2JqID0gdmFsdWVbZXh0RmlsZUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldE5leHRVcGxvYWRTdGF0dXMoZXh0RmlsZUluc3RhbmNlLCBjdXJyRXh0RmlsZU9iaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvKmlmIChhcnJPZkV4dEZpbGVzLmxlbmd0aCAhPT0gdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyT2ZFeHRGaWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVbaV0udXBsb2FkU3RhdHVzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFyck9mRXh0RmlsZXNbaV0udXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJ1c2VEcm9wem9uZUZpbGVMaXN0VXBkYXRlciBvbkNhbmNlbCBpXCIsIGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc1tpXS51cGxvYWRTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9ICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2Ryb3B6b25lSWQsIHZhbHVlLFxuICAgICAgICAvLyBpc1VwbG9hZGluZ1xuICAgIF0pO1xuICAgIC8vRGV0ZWN0IGNoYW5nZXMgaW4gdmFsaWRhdGlvbiBwcm9wcyBmb3IgcmUtdmFsaWRhdGluZyBmaWxlc1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgIHNldExvY2FsRmlsZXMobG9jYWxGaWxlcy5tYXAoZnVuY3Rpb24gKEYpIHsgcmV0dXJuIF9fYXNzaWduJDEoX19hc3NpZ24kMSh7fSwgRiksIHsgdmFsaWQ6IHVuZGVmaW5lZCB9KTsgfSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICB2YXIgdmFsaWRhdGVkRXh0RmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGxvY2FsRmlsZXMsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBudW1iZXJPZlZhbGlkRmlsZXMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIHNldExvY2FsRmlsZXModmFsaWRhdGVkRXh0RmlsZUxpc3QpO1xuICAgICAgICAvL21pc3NpbmcgZGVwZW5kZW5jaWUgbG9jYWxGaWxlcyB3YXMgbm90IGFkZGVkIGJ5IHB1cnBvc2VcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3ZhbGlkYXRlRmlsZXNGbGFnLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgbG9jYWxpemF0aW9uXSk7XG4gICAgLy8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHZhbGlkIGZpbGVzXG4gICAgLy8gdXBkYXRlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh2YWxpZGF0ZUZpbGVzRmxhZykge1xuICAgICAgICAgICAgc2V0TnVtYmVyT2ZWYWxpZEZpbGVzKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnZhbGlkOyB9KS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TnVtYmVyT2ZWYWxpZEZpbGVzKGxvY2FsRmlsZXMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH0sIFtsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzRmxhZ10pO1xuICAgIHJldHVybiBbbG9jYWxGaWxlcywgbnVtYmVyT2ZWYWxpZEZpbGVzLCBzZXRMb2NhbEZpbGVzXTtcbn07XG5cbnZhciB1c2VGYWtlUHJvZ3Jlc3MgPSBmdW5jdGlvbiAodGltZSkge1xuICAgIGlmICh0aW1lID09PSB2b2lkIDApIHsgdGltZSA9IDE1MDA7IH1cbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSgyOCksIHByb2dyZXNzID0gX2FbMF0sIHNldFByb2dyZXNzID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVwZGF0ZVByb2dyZXNzID0gZnVuY3Rpb24gKGN1cnJQcm9ncmVzcykge1xuICAgICAgICAgICAgaWYgKGN1cnJQcm9ncmVzcyA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gZ2V0UmFuZG9tSW50KDUsIDI0KTtcbiAgICAgICAgICAgIHZhciBuZXdQcm9ncmVzcyA9IGN1cnJQcm9ncmVzcyArIG9mZnNldDtcbiAgICAgICAgICAgIGlmIChuZXdQcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3UHJvZ3Jlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBfbXlJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFByb2dyZXNzKGZ1bmN0aW9uIChfcHJvZ3Jlc3MpIHsgcmV0dXJuIHVwZGF0ZVByb2dyZXNzKF9wcm9ncmVzcyk7IH0pO1xuICAgICAgICB9LCB0aW1lKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZUZha2VQcm9ncmVzcyBTRVQgaW50ZXJ2YWxcIiwgX215SW50ZXJ2YWwpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZUZha2VQcm9ncmVzcyBDTEVBUiBpbnRlcnZhbFwiLCBfbXlJbnRlcnZhbCk7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF9teUludGVydmFsKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW10pO1xuICAgIHJldHVybiBwcm9ncmVzcztcbn07XG5cbnZhciBtYWtlRHJvcExheWVyRHluYW1pY1N0eWxlID0gZnVuY3Rpb24gKGRyb3B6b25lSWQsIGNvbG9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IFwiZmlsZXMtdWktZHJvcC1sYXllci1zdHlsZS1pZC1cIiArIGRyb3B6b25lSWQsXG4gICAgICAgIHNoZWV0UnVsZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZHJvcHpvbmUtbGF5ZXItXCIuY29uY2F0KGRyb3B6b25lSWQpLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yLCAwLjQpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IERFRkFVTFRfQk9SREVSX1JBRElVUyxcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIwJVwiLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMCVcIixcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyMCxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjBweCBkYXNoZWQgXCIuY29uY2F0KGNvbXBsZXRlQXN1cmVDb2xvcihjb2xvcikpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImRyb3B6b25lLWxheWVyLWRyYWdcIixcbiAgICAgICAgICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiBcIjJweFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICB9O1xufTtcblxuLy9jb25zdCBCQVNFX0RST1BfTEFZRVJfU1RZTEU6IHN0cmluZyA9IFwiZmlsZXMtdWktc3R5bGVzLWRyb3AtbGF5ZXJcIjsgXG4vKipcbiAqXG4gKiBAcGFyYW0gY29sb3JcbiAqIEBwYXJhbSBpc0RyYWdnaW5nXG4gKiBAcGFyYW0gbWFrZUNsYXNzTmFtZSB3aGV0aGVyIHRvIG1ha2UgdGhlIGNsYXNzbmFtZSBvciBub3RcbiAqIEByZXR1cm5zIHRoZSBjbGFzc25hbWUgZm9yIGxheWVyXG4gKi9cbnZhciB1c2VEcm9wTGF5ZXJDbGFzc05hbWUgPSBmdW5jdGlvbiAoZHJvcHpvbmVJZCwgY29sb3IsIFxuLy9pc0RyYWdnaW5nPzogYm9vbGVhbixcbm1ha2VDbGFzc05hbWUpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgaWRTdHlsZXMgPSBfYVswXSwgc2V0SWRTdHlsZXMgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHN0eWxlSW5qZWN0ZWQgPSBfYlswXSwgc2V0U3R5bGVJbmplY3RlZCA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBjbGFzc05hbWVDcmVhdGVkID0gX2NbMF0sIHNldENsYXNzTmFtZUNyZWF0ZWQgPSBfY1sxXTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUlkID0gKGNvbG9yID09PSB1bmRlZmluZWQpID8gXCJkZWZhdWx0XCIgOiBkcm9wem9uZUlkLnJlcGxhY2UoXCI6XCIsIFwiX1wiKS5yZXBsYWNlKFwiOlwiLCBcIl9cIik7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwidXNlRHJvcExheWVyQ2xhc3NOYW1lXCIsIGNvbG9yLCBpc0RyYWdnaW5nLCBtYWtlQ2xhc3NOYW1lKTtcbiAgICAgICAgdmFyIGhhbmRsZUluc2VyU3R5bGUgPSBmdW5jdGlvbiAoY29sb3IpIHtcbiAgICAgICAgICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IFwiXCI7XG4gICAgICAgICAgICB2YXIgc3R5bGVTaGVldCA9IG1ha2VEcm9wTGF5ZXJEeW5hbWljU3R5bGUoZmluYWxEcm9wem9uZUlkLCBjb2xvclxuICAgICAgICAgICAgLy9pc0RyYWdnaW5nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIGlkU3R5bGUgPSBcIlwiO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVzZURyb3BMYXllckNsYXNzTmFtZSBoYW5kbGVJbnNlclN0eWxlXCIsIGNvbG9yLCBzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgIGlmIChmaW5hbERyb3B6b25lSWQgPT09IFwiZGVmYXVsdFwiICYmICFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgLy9jaGVjayBpZiBhbHJlYWR5IGluc2VydGVkXG4gICAgICAgICAgICAgICAgaWYgKER5bmFtaUNTUy5leGlzdFN0eWxlU2hlZXQoXCJmaWxlcy11aS1kcm9wLWxheWVyLXN0eWxlLWlkLVwiICsgZmluYWxEcm9wem9uZUlkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJZFN0eWxlcyhcImZpbGVzLXVpLWRyb3AtbGF5ZXItc3R5bGUtaWQtXCIgKyBmaW5hbERyb3B6b25lSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJZFN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgICAgICBzZXRJZFN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBhIHN0eWxlc2hlZXQgYXNzb2NpYXRlZFxuICAgICAgICAgICAgICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldChpZFN0eWxlcywgc3R5bGVTaGVldC5zaGVldFJ1bGVzIHx8IFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiZHJvcHpvbmUtbGF5ZXItXCIuY29uY2F0KGZpbmFsRHJvcHpvbmVJZCk7XG4gICAgICAgICAgICAvKiAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gYCBkcm9wem9uZS1sYXllci1kcmFnYDtcbiAgICAgICAgICAgICB9ICovXG4gICAgICAgICAgICBzZXRDbGFzc05hbWVDcmVhdGVkKGZpbmFsQ2xhc3NOYW1lKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8vL2NvbnNvbGUubG9nKFwiPT5cIiwgaXNEcmFnZ2luZyk7XG4gICAgICAgIGlmIChtYWtlQ2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBoYW5kbGVJbnNlclN0eWxlKGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbY29sb3IsXG4gICAgICAgIC8vIGlzRHJhZ2dpbmcsXG4gICAgICAgIG1ha2VDbGFzc05hbWVdKTtcbiAgICByZXR1cm4gY2xhc3NOYW1lQ3JlYXRlZDtcbn07XG5cbi8qKlxuICogSW5pdGlhbGl6ZXIgaG9vayBmb3IgRmlsZUl0ZW1OZW9cbiAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIE9iamVjdFxuICogQHBhcmFtIHZhbGlkIFdoZXRoZXIgdGhlIGZpbGUgaXMgdmFsaWQsIG5vdCB2YWxpZCBvciBub3Qgc2V0XG4gKiBAcGFyYW0gcHJldmlldyBXaGV0aGVyIHRvIHNob3cgYSBwcmV2aWV3IG9uIEZpbGVJdGVtXG4gKiBAcGFyYW0gaW1hZ2VVcmwgVGhlIGltYWdlIHVybFxuICogQHBhcmFtIHhociB0aGUgeGhyIG9iamVjdFxuICogQHBhcmFtIHByb2dyZXNzIHRoZSBjdXJyZW50IHByb2dyZXNzIGdpdmVuIGJ5IHByb3BzXG4gKiBAcmV0dXJucyBhbiBhcnJheSB0aHRhIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBbaXNJbWFnZSwgaXNWaWRlbywgdXJsLCBpbWFnZVNvdXJjZSwgbG9jYWxQcm9ncmVzc11cbiAqL1xudmFyIHVzZUZpbGVNb3NhaWNJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmaWxlLCBuYW1lLCB0eXBlLCB2YWxpZCwgcHJldmlldywgaW1hZ2VVcmwsIHZpZGVvVXJsLCBjdXN0b21JY29ucywgeGhyKSB7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc0ltYWdlID0gX2FbMF0sIHNldElzSW1hZ2UgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzVmlkZW8gPSBfYlswXSwgc2V0SXNWaWRlbyA9IF9iWzFdO1xuICAgIHZhciBfYyA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCB1cmwgPSBfY1swXSwgc2V0VXJsID0gX2NbMV07XG4gICAgdmFyIF9kID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgaW1hZ2VTb3VyY2UgPSBfZFswXSwgc2V0SW1hZ2VTb3VyY2UgPSBfZFsxXTtcbiAgICB2YXIgX2UgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCB2aWRlb1NvdXJjZSA9IF9lWzBdLCBzZXRWaWRlb1NvdXJjZSA9IF9lWzFdO1xuICAgIHZhciBfZiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNSZWFkeSA9IF9mWzBdLCBzZXRJc1JlYWR5ID0gX2ZbMV07XG4gICAgdmFyIGluaXQgPSBmdW5jdGlvbiAoZmlsZSwgbmFtZSwgdHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgY3VzdG9tSWNvbnMsIHhociwgcHJvZ3Jlc3MpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVybCwgcmVzcG9uc2UsIHJlc3BvbnNlXzE7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJpbml0XCIsIGZpbGUsIG5hbWUsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGUgJiYgKCFuYW1lICYmICF0eXBlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gKGZpbGUgPyBnZXRVUkxGaWxlSWNvKGZpbGUsIGN1c3RvbUljb25zKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRVUkxGaWxlSWNvRnJvbU5hbWVBbmRUeXBlKG5hbWUsIHR5cGUsIGN1c3RvbUljb25zKSkudXJsO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaW5pdFwiLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRVcmwodXJsKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaW1hZ2VVcmwgJiYgdmlkZW9VcmwpKSByZXR1cm4gWzMgLypicmVhayovLCAxXTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNWaWRlbyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW1hZ2VTb3VyY2UoaW1hZ2VVcmwpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZSh2aWRlb1VybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaW1hZ2VVcmwpIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0ltYWdlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZVNvdXJjZShpbWFnZVVybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlkZW9VcmwpIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1ZpZGVvKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb1NvdXJjZSh2aWRlb1VybCk7XG4gICAgICAgICAgICAgICAgICAgIHNldElzUmVhZHkodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBnZXRIZWFkZXJBbmRUYWlsKGZpbGUsIHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0ltYWdlKHJlc3BvbnNlWzBdID09PSBcImltYWdlXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoW1wibXA0XCIsIFwib2dnXCIsIFwid2VibVwiXS5pbmNsdWRlcyhyZXNwb25zZVsxXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1ZpZGVvKHJlc3BvbnNlWzBdID09PSBcInZpZGVvXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShwcmV2aWV3ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsaWQgfHwgdHlwZW9mIHZhbGlkID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbGlkID09PSBudWxsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VbMF0gPT09IFwiaW1hZ2VcIikpIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZV8xID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGUpIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCByZWFkQXNEYXRhVVJMKGZpbGUpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlXzEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZV8xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZVNvdXJjZShyZXNwb25zZV8xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDU7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICBzZXRJc1JlYWR5KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIC8vLy8vLyAgIENMRUFOIFVQXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5pdChmaWxlLCBuYW1lLCB0eXBlLCB2YWxpZCwgcHJldmlldyB8fCBmYWxzZSwgaW1hZ2VVcmwsIHZpZGVvVXJsLCBjdXN0b21JY29ucyk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzZXRJbWFnZVNvdXJjZSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgc2V0SXNJbWFnZShmYWxzZSk7XG4gICAgICAgICAgICBzZXRJc1ZpZGVvKGZhbHNlKTtcbiAgICAgICAgICAgIHNldElzUmVhZHkoZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbZmlsZSwgbmFtZSwgdHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgY3VzdG9tSWNvbnNdKTtcbiAgICByZXR1cm4gW2lzUmVhZHksIGlzSW1hZ2UsIGlzVmlkZW8sIHVybCwgaW1hZ2VTb3VyY2UsIHZpZGVvU291cmNlXTtcbn07XG4vKiBleHBvcnQgY29uc3QgaWRlbnRpZnlGaWxlU291cmNlID0gKGZpbGU6IEZpbGUgfCB1bmRlZmluZWQsIG5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZykgPT4ge1xuICAgIGlmKCFmaWxlKXtcblxuICAgIH1cbn0gKi9cbnZhciBnZXRIZWFkZXJBbmRUYWlsID0gZnVuY3Rpb24gKGZpbGUsIHR5cGUpIHtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBpZiAoZmlsZS50eXBlKSB7XG4gICAgICAgICAgICB2YXIgc3BsaXR0ZWRUeXBlID0gZmlsZS50eXBlLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIHJldHVybiBbc3BsaXR0ZWRUeXBlWzBdLCBzcGxpdHRlZFR5cGVbMV1dO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtcIm9jdGV0XCIsIFwib2N0ZXRcIl07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBzcGxpdHRlZFR5cGUgPSB0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHR5cGUuc3BsaXQoXCIvXCIpO1xuICAgICAgICBpZiAoc3BsaXR0ZWRUeXBlICYmIHNwbGl0dGVkVHlwZS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW3NwbGl0dGVkVHlwZVswXSwgc3BsaXR0ZWRUeXBlWzFdXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXCJvY3RldFwiLCBcIm9jdGV0XCJdO1xuICAgICAgICB9XG4gICAgfVxufTtcblxudmFyIHVzZUlzVXBsb2FkaW5nID0gZnVuY3Rpb24gKHVwbG9hZFN0YXR1cykge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNVcGxvYWRpbmcgPSBfYVswXSwgc2V0SXNVcGxvYWRpbmcgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZSh1cGxvYWRTdGF0dXMpLCBsYXN0VXBsb2FkU3RhdHVzID0gX2JbMF0sIHNldExhc3RVcGxvYWRTdGF0dXMgPSBfYlsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRMYXN0VXBsb2FkU3RhdHVzKHVwbG9hZFN0YXR1cyk7XG4gICAgICAgIGlmIChbXCJ1cGxvYWRpbmdcIiwgXCJwcmVwYXJpbmdcIl0uaW5jbHVkZXMobGFzdFVwbG9hZFN0YXR1cyB8fCBcIlwiKSAmJlxuICAgICAgICAgICAgW1wic3VjY2Vzc1wiLCBcImVycm9yXCIsIFwiYWJvcnRlZFwiXS5pbmNsdWRlcyh1cGxvYWRTdGF0dXMgfHwgXCJcIikpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sIDM1MDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9iYXNlIGNvbXBhcmlzb25cbiAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKHVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIiB8fCB1cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFt1cGxvYWRTdGF0dXNdKTtcbiAgICByZXR1cm4gaXNVcGxvYWRpbmc7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBwcm9ncmVzcyB0aGUgcHJvZ3Jlc3MgZ2l2ZW4gYXMgYSBwcm9wIHRvIHRoZSBjb21wb25lbnRcbiAqIEBwYXJhbSB4aHIgdGhlIFhNTEh0dHBSZXF1ZXN0IG9iamVjdCBmb3IgQUpBWCBvcGVyYXRpb25zXG4gKiBAcmV0dXJucyB0aGUgcHJvZ3Jlc3MgdG8gYmUgc2hvd24gaW4gdGhlIGNvbXBvbmVudFxuICovXG52YXIgdXNlUHJvZ3Jlc3MgPSBmdW5jdGlvbiAocHJvZ3Jlc3MsIHhocikge1xuICAgIC8vY29uc29sZS5sb2coXCJnZXRQcm9ncmVzc1wiLCBwcm9ncmVzcywgeGhyKTtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpLCBsb2NhbFByb2dyZXNzID0gX2FbMF0sIHNldExvY2FsUHJvZ3Jlc3MgPSBfYVsxXTtcbiAgICBpZiAocHJvZ3Jlc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobG9jYWxQcm9ncmVzcyAhPT0gcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHNldExvY2FsUHJvZ3Jlc3MocHJvZ3Jlc3MpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAoeGhyICE9PSB1bmRlZmluZWQgJiYgeGhyICE9PSBudWxsICYmIHhoci51cGxvYWQub25wcm9ncmVzcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8geGhyIHdhcyBnaXZlbiBidXQgaXQgd2FzIG5vdCBpbml0aWFsaXplZCB0aGUgYG9ucHJvZ3Jlc3NgIGV2ZW50XG4gICAgICAgICAgICB4aHIudXBsb2FkLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ2V0UHJvZ3Jlc3MgcHJvZ3Jlc3NcIiwgcHJvZ3Jlc3MsIChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgKiAxMDApO1xuICAgICAgICAgICAgICAgIHNldExvY2FsUHJvZ3Jlc3MoKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKSAqIDEwMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy9pbml0aWFsIHByb2dyZXNzIHZhbHVlIHNldCB0byAwXG4gICAgICAgICAgICBzZXRMb2NhbFByb2dyZXNzKDApO1xuICAgICAgICB9XG4gICAgICAgIC8vcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsUHJvZ3Jlc3M7XG59O1xuXG4vL2ltcG9ydCB7IHByaW50X21hbmFnZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vdXRpbHNcIjtcbi8qKlxuICpcbiAqIERlbW9zOlxuICpcbiAqIC0gW0Ryb3B6b25lXShodHRwczovL3d3dy5maWxlcy11aS5jb20vY29tcG9uZW50cy9kcm9wem9uZSlcbiAqXG4gKiBBUEk6XG4gKlxuICogLSBbRHJvcHpvbmUgQVBJXShodHRwczovL3d3dy5maWxlcy11aS5jb20vYXBpL2Ryb3B6b25lLylcbiAqL1xudmFyIERyb3B6b25lID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gbWVyZ2VQcm9wcyhwcm9wcywgZGVmYXVsdERyb3pvbmVQcm9wcyksIFxuICAgIC8vYmFzaWNcbiAgICBvbkNoYW5nZSA9IF9hLm9uQ2hhbmdlLCBfYiA9IF9hLnZhbHVlLCB2YWx1ZSA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBcbiAgICAvL3ZhbGlkYXRpb25cbiAgICBhY2NlcHQgPSBfYS5hY2NlcHQsIG1heEZpbGVTaXplID0gX2EubWF4RmlsZVNpemUsIG1heEZpbGVzID0gX2EubWF4RmlsZXMsIHZhbGlkYXRvciA9IF9hLnZhbGlkYXRvciwgY2xlYW5GaWxlcyA9IF9hLmNsZWFuRmlsZXMsIG9uQ2xlYW4gPSBfYS5vbkNsZWFuLCBhdXRvQ2xlYW4gPSBfYS5hdXRvQ2xlYW4sIFxuICAgIC8vdXBsb2FkaW5nXG4gICAgdXBsb2FkQ29uZmlnID0gX2EudXBsb2FkQ29uZmlnLCBmYWtlVXBsb2FkID0gX2EuZmFrZVVwbG9hZCwgb25VcGxvYWRTdGFydCA9IF9hLm9uVXBsb2FkU3RhcnQsIG9uVXBsb2FkRmluaXNoID0gX2Eub25VcGxvYWRGaW5pc2gsIFxuICAgIC8vc3R5bGluZ1xuICAgIGJhY2tncm91bmQgPSBfYS5iYWNrZ3JvdW5kLCBjb2xvciA9IF9hLmNvbG9yLCBtaW5IZWlnaHQgPSBfYS5taW5IZWlnaHQsIHN0eWxlID0gX2Euc3R5bGUsIFxuICAgIC8vdGV4dENvbG9yLFxuICAgIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSwgXG4gICAgLy9sYWJlbFxuICAgIGxhYmVsID0gX2EubGFiZWwsIFxuICAgIC8vbG9jYWxpemF0aW9uXG4gICAgbG9jUHJvcHMgPSBfYS5sb2NhbGl6YXRpb24sIFxuICAgIC8vcmlwcGxlXG4gICAgZGlzYWJsZVJpcHBsZSA9IF9hLmRpc2FibGVSaXBwbGUsIFxuICAgIC8vZHJhZyBvcGVyYXRpb25zXG4gICAgb25EcmFnRW50ZXIgPSBfYS5vbkRyYWdFbnRlciwgb25EcmFnTGVhdmUgPSBfYS5vbkRyYWdMZWF2ZSwgXG4gICAgLy9hY3Rpb24gYnV0b3Ruc1xuICAgIGFjdGlvbkJ1dHRvbnMgPSBfYS5hY3Rpb25CdXR0b25zLCBcbiAgICAvL2Ryb3AgbGF5ZXJcbiAgICBkcm9wT25MYXllciA9IF9hLmRyb3BPbkxheWVyLCBcbiAgICAvL2hlYWRlciBhbmQgZm9vdGVyXG4gICAgaGVhZGVyID0gX2EuaGVhZGVyLCBmb290ZXIgPSBfYS5mb290ZXIsIF9jID0gX2EuaGVhZGVyQ29uZmlnLCBoZWFkZXJDb25maWcgPSBfYyA9PT0gdm9pZCAwID8ge30gOiBfYywgX2QgPSBfYS5mb290ZXJDb25maWcsIGZvb3RlckNvbmZpZyA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kLCBcbiAgICAvL2Rpc2FibGVkXG4gICAgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZCwgXG4gICAgLy9vcGVuIGZpbGUgZGlhbG9nXG4gICAgY2xpY2thYmxlID0gX2EuY2xpY2thYmxlLCBcbiAgICAvL2FkZCBvciByZXBsYWNlXG4gICAgYmVoYXZpb3VyID0gX2EuYmVoYXZpb3VyLCBcbiAgICAvL2NvbnRlbnRcbiAgICBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBcbiAgICAvL2FkdmFuY2VkQ29uZmlnLFxuICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcIm9uQ2hhbmdlXCIsIFwidmFsdWVcIiwgXCJhY2NlcHRcIiwgXCJtYXhGaWxlU2l6ZVwiLCBcIm1heEZpbGVzXCIsIFwidmFsaWRhdG9yXCIsIFwiY2xlYW5GaWxlc1wiLCBcIm9uQ2xlYW5cIiwgXCJhdXRvQ2xlYW5cIiwgXCJ1cGxvYWRDb25maWdcIiwgXCJmYWtlVXBsb2FkXCIsIFwib25VcGxvYWRTdGFydFwiLCBcIm9uVXBsb2FkRmluaXNoXCIsIFwiYmFja2dyb3VuZFwiLCBcImNvbG9yXCIsIFwibWluSGVpZ2h0XCIsIFwic3R5bGVcIiwgXCJjbGFzc05hbWVcIiwgXCJsYWJlbFwiLCBcImxvY2FsaXphdGlvblwiLCBcImRpc2FibGVSaXBwbGVcIiwgXCJvbkRyYWdFbnRlclwiLCBcIm9uRHJhZ0xlYXZlXCIsIFwiYWN0aW9uQnV0dG9uc1wiLCBcImRyb3BPbkxheWVyXCIsIFwiaGVhZGVyXCIsIFwiZm9vdGVyXCIsIFwiaGVhZGVyQ29uZmlnXCIsIFwiZm9vdGVyQ29uZmlnXCIsIFwiZGlzYWJsZWRcIiwgXCJjbGlja2FibGVcIiwgXCJiZWhhdmlvdXJcIiwgXCJjaGlsZHJlblwiXSk7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIFxuICAgIC8vIGRhcmtNb2RlOiBkYXJrTW9kZUNvbnRleHQsXG4gICAgLy9pY29ucyxcbiAgICBsb2NDb250ZXh0ID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCkubG9jYWxpemF0aW9uO1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NQcm9wcyAhPT0gdW5kZWZpbmVkID8gbG9jUHJvcHMgOiBsb2NDb250ZXh0O1xuICAgIHZhciBfZSA9IHVwbG9hZENvbmZpZywgdXJsID0gX2UudXJsLCBtZXRob2QgPSBfZS5tZXRob2QsIGhlYWRlcnMgPSBfZS5oZWFkZXJzLCB1cGxvYWRMYWJlbCA9IF9lLnVwbG9hZExhYmVsLCBfZiA9IF9lLmNsZWFuT25VcGxvYWQsIGNsZWFuT25VcGxvYWQgPSBfZiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9mLCBfZyA9IF9lLnByZXBhcmluZ1RpbWUsIHByZXBhcmluZ1RpbWUgPSBfZyA9PT0gdm9pZCAwID8gMTUwMCA6IF9nLCBfaCA9IF9lLmF1dG9VcGxvYWQsIGF1dG9VcGxvYWQgPSBfaCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfaDtcbiAgICB2YXIgX2ogPSBhY3Rpb25CdXR0b25zLCBhY3Rpb25CdXR0b25zUG9zaXRpb24gPSBfai5wb3NpdGlvbiwgYWJvcnRCdXR0b24gPSBfai5hYm9ydEJ1dHRvbiwgZGVsZXRlQnV0dG9uID0gX2ouZGVsZXRlQnV0dG9uLCB1cGxvYWRCdXR0b24gPSBfai51cGxvYWRCdXR0b24sIGNsZWFuQnV0dG9uID0gX2ouY2xlYW5CdXR0b24sIGNvbnRhaW5lclN0eWxlID0gX2ouc3R5bGUsIGNvbnRhaW5lckNsYXNzTmFtZSA9IF9qLmNsYXNzTmFtZTtcbiAgICB2YXIgc3R5bGVCb3JkZXJSYWRpdXMgPSBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGUuYm9yZGVyUmFkaXVzO1xuICAgIHZhciBfayA9IGhlYWRlckNvbmZpZy5jbGVhbkZpbGVzLCBjbGVhbkZpbGVzSGVhZGVyID0gX2sgPT09IHZvaWQgMCA/IHRydWUgOiBfaywgX2wgPSBoZWFkZXJDb25maWcuZGVsZXRlRmlsZXMsIGRlbGV0ZUZpbGVzSGVhZGVyID0gX2wgPT09IHZvaWQgMCA/IHRydWUgOiBfbCwgX20gPSBoZWFkZXJDb25maWcubWF4RmlsZVNpemUsIG1heEZpbGVTaXplSGVhZGVyID0gX20gPT09IHZvaWQgMCA/IHRydWUgOiBfbSwgX28gPSBoZWFkZXJDb25maWcudXBsb2FkRmlsZXMsIHVwbG9hZEZpbGVzSGVhZGVyID0gX28gPT09IHZvaWQgMCA/IHRydWUgOiBfbywgX3AgPSBoZWFkZXJDb25maWcudXBsb2FkaW5nSWNvbiwgdXBsb2FkaW5nSWNvbkhlZGFlciA9IF9wID09PSB2b2lkIDAgPyB0cnVlIDogX3AsIF9xID0gaGVhZGVyQ29uZmlnLnZhbGlkRmlsZXNDb3VudCwgdmFsaWRGaWxlc0NvdW50SGVhZGVyID0gX3EgPT09IHZvaWQgMCA/IHRydWUgOiBfcSwgY3VzdG9tSGVhZGVyID0gaGVhZGVyQ29uZmlnLmN1c3RvbUhlYWRlciwgY2xhc3NOYW1lSGVhZGVyID0gaGVhZGVyQ29uZmlnLmNsYXNzTmFtZSwgX3IgPSBoZWFkZXJDb25maWcucmVzZXRTdHlsZXMsIHJlc2V0U3R5bGVzSGVhZGVyID0gX3IgPT09IHZvaWQgMCA/IGZhbHNlIDogX3IsIHN0eWxlSGVhZGVyID0gaGVhZGVyQ29uZmlnLnN0eWxlO1xuICAgIHZhciBjdXN0b21Gb290ZXIgPSBmb290ZXJDb25maWcuY3VzdG9tRm9vdGVyLCBfcyA9IGZvb3RlckNvbmZpZy5ub01pc3NpbmdGaWxlc0xhYmVsLCBub01pc3NpbmdGaWxlc0xhYmVsID0gX3MgPT09IHZvaWQgMCA/IHRydWUgOiBfcywgX3QgPSBmb290ZXJDb25maWcudXBsb2FkUHJvZ3Jlc3NNZXNzYWdlLCB1cGxvYWRQcm9ncmVzc01lc3NhZ2UgPSBfdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF90LCBfdSA9IGZvb3RlckNvbmZpZy51cGxvYWRSZXN1bHRNZXNzYWdlLCB1cGxvYWRSZXN1bHRNZXNzYWdlID0gX3UgPT09IHZvaWQgMCA/IHRydWUgOiBfdTtcbiAgICAvL2NvbnNvbGUubG9nKFwiRHJvcHpvbmUgcHJvcHNcIiwgZHJvcE9uTGF5ZXIpO1xuICAgIC8vbG9jYWxpemVyc1xuICAgIHZhciBEcm9wem9uZUxvY2FsaXplciA9IERyb3B6b25lTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICAvL3JlZiB0byBoYW5kbGUgcmlwcGxlXG4gICAgdmFyIGZ1aVJpcHBsZVJlZkFicyA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgZnVpUmlwcGxlUmVmUmVsID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vcmVmIHRvIHRoZSBoaWRkZW4gaW5wdXQgdGFnXG4gICAgdmFyIGlucHV0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vc3RhdGUgZm9yIGRyYWcgb3BlcmF0aW9uXG4gICAgdmFyIF92ID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBpc0RyYWdnaW5nID0gX3ZbMF0sIHNldElzRHJhZ2dpbmcgPSBfdlsxXTtcbiAgICAvL3N0YXRlIGZvciBjaGVja2luZyB1cGxvYWQgc3RhcnRcbiAgICB2YXIgX3cgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGlzVXBsb2FkaW5nID0gX3dbMF0sIHNldElzVXBsb2FkaW5nID0gX3dbMV07XG4gICAgLy9zdGF0ZSBmb3IgbWVzc2FnZSBvbiBmb290ZXJcbiAgICB2YXIgX3ggPSBSZWFjdC51c2VTdGF0ZShcIlwiKSwgbG9jYWxNZXNzYWdlID0gX3hbMF0sIHNldExvY2FsTWVzc2FnZSA9IF94WzFdO1xuICAgIC8vSWQgZm9yIHVwbG9kaW5nIHRocm91Z2ggRnVpRmlsZU1hbmFnZXJcbiAgICAvL2NvbnN0IGRyb3B6b25lSWQ6IHN0cmluZyB8IG51bWJlciA9IHVzZURyb3B6b25lRmlsZUxpc3RJRCgpO1xuICAgIC8vIGNvbnN0IGRyb3B6b25lSWQ6IHN0cmluZyB8IG51bWJlciA9IFJlYWN0LnVzZUlkKCk7XG4gICAgdmFyIGRyb3B6b25lSWQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIEZpbGVJZEdlbmVyYXRvci5nZXROZXh0SWQoKSArIFwiXCI7IH0sIFtdKTtcbiAgICAvL1JlYWN0LnVzZUlkKCk7XG4gICAgLy9GbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHZhbGlkYXRlIG9yIG5vdFxuICAgIHZhciB2YWxpZGF0ZUZpbGVzRmxhZyA9IGlzVmFsaWRhdGVBY3RpdmUoYWNjZXB0LCBtYXhGaWxlU2l6ZSwgbWF4RmlsZXMsIHZhbGlkYXRvcik7XG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBmaWxlcyBsb2NhbGx5XG4gICAgdmFyIF95ID0gdXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIoZHJvcHpvbmVJZCwgdmFsdWUgfHwgW10sIGlzVXBsb2FkaW5nLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgdmFsaWRhdG9yLCBsb2NhbGl6YXRpb24sIHZhbGlkYXRlRmlsZXNGbGFnKSwgbG9jYWxGaWxlcyA9IF95WzBdLCBudW1iZXJPZlZhbGlkRmlsZXMgPSBfeVsxXSwgc2V0TG9jYWxGaWxlcyA9IF95WzJdO1xuICAgIC8qKlxuICAgICAqIFVwbG9hZHMgZWFjaCBmaWxlIGluIHRoZSBhcnJheSBvZiBFeHRGaWxlc1xuICAgICAqIEZpcnN0LCBzZXRzIGFsbCB0aGUgZmlsZXMgaW4gcHJlcGFyaW5nIHN0YXR1cyBhbmQgYXdhaXRzIGBwcmVwYXJpbmdUaW1lYCBtaWxpc2Vjb25kcy5cbiAgICAgKiBJZiBgcHJlcGFyaW5nVGltZWAgaXMgbm90IGdpdmVuIG9yIGl0cyB2YWx1ZSBpcyBmYWxzZSBvciAwLCB0aGVyZSB3b27CtHQgYmUgYSBwcmVwYXJpbmcgcGhhc2UuXG4gICAgICogICAgICAgIFRoaXMgaXMgb25seSBmb3IgdGhlIGZpcnN0IGZpbGUsIHRoZSByZXN0IG9mIGZpbGVzIHdpbGwgaGF2ZSBwcmVwYXJpbmcgdGltZSB1bnRpbCB0aGUgZmlsZSBiZWZvcmUgd2FzIHVwbG9hZGVkXG4gICAgICogICAgICAgIFRoZSBmaXJzdCBmaWxlIHdpbGwganVtcCBmcm9tIHVuZGVmIHRvIFwidXBsb2FkaW5nXCJcbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKlxuICAgICAqIElmIGBvbkNhbmNlbGAgZXZlbnQgb2N1cnJzIG91dHNpZGUgb24gYW55IG9uIHRoZVxuICAgICAqIEZpbGVJdGVtcyhlLmcuIGJ5IGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uIG9uIGBGaWxlSXRlbWApLFxuICAgICAqIHRoZSBleHRGaWxlSW5zdGFuY2Ugd2lsbCBjaGFuZ2UgaXRzIHN0YXR1cyBmcm9tICdwcmVwYXJpbmcnIHRvIHVuZGVmaW5lZC4gSWYgc28sXG4gICAgICogYWZ0ZXIgdGhlIHdhaXRpbmcgdGltZSB0aGUgdmFsdWUgb2Ygc3RhdHVzIHdpbGwgYmUgZm91bmQgYXMgdW5kZWZpbmVkIGFuZFxuICAgICAqIHdvbsK0dCBwZXJmb20gdGhlIHVwbG9hZCBmb3IgdGhhdCBmaWxlIG9yIGFueSBvdGhlciB0aGF0IGZpdHMgdGhhdCBjb25kaXRpb24uXG4gICAgICogVGhlbiwgZm9yIGVhY2ggZmlsZSBzZXRzIHRoZSBmaWxlIGluICd1cGxvYWRpbmcnIHN0YXR1cy5cbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKiBUaGVuIHVwbG9hZHMgdGhlIGZpbGUgd2l0aCB0aGUgYHhocmAgaW5zdGFuY2UuXG4gICAgICogQWZ0ZXIgdGhhdCwgdGhhdCBmaWxlIHJlY2lldmVzIHRoZSBuZXcgdXBsb2FkU3RhdHVzIHRoYXQgY2FuIGJlXG4gICAgICogICdzdWNjZXNzJywgJ2Vycm9yJyBvciAnYWJvcnRlZCdcbiAgICAgKiBhbmQgb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzIHRvIHVwbG9hZFxuICAgICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICAgKi9cbiAgICB2YXIgdXBsb2FkZmlsZXMgPSBmdW5jdGlvbiAobG9jYWxGaWxlcykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgdG90YWxOdW1iZXIsIG1pc3NpbmdVcGxvYWQsIHRvdGFsUmVqZWN0ZWQsIGN1cnJlbnRDb3VudFVwbG9hZCwgdXBsb2FkaW5nTWVzc2VuZ2VyLCBuZXdFeHRGaWxlTG9jYWwsIHNlcnZlclJlc3BvbnNlcywgaSwgY3VycmVudEV4dEZpbGVJbnN0YW5jZSwgdXBsb2FkUmVzcG9uc2UsIGZha2VQcm9ncmVzcywgdXBsb2FkZWRGaWxlLCBmaW5pc2hVcGxvYWRNZXNzZW5nZXI7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAvL3NldCB1cGxvYWRpbmcgZmxhZyB0byB0cnVlXG4gICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL2F2b2lkIHRvIGNhbGwgdXBsb2FkIGlmIG5vdCBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIC8vIGZsYWcgaXMgYWxyZWFkeSB0cnVlIG9yIHRoZXJlIGlzbnQgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgLy91cmwgd2FzIG5vdCBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcgfHwgbG9jYWxGaWxlcy5sZW5ndGggPT09IDAgfHwgIXVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKERyb3B6b25lTG9jYWxpemVyLm5vRmlsZXNNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzVXBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxOdW1iZXIgPSBsb2NhbEZpbGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgbWlzc2luZ1VwbG9hZCA9IGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChleHRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNVcGxvYWRBYmxlRXh0RmlsZShleHRGaWxlLCB2YWxpZGF0ZUZpbGVzRmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxSZWplY3RlZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudFVwbG9hZCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZGluZ01lc3NlbmdlciA9IERyb3B6b25lTG9jYWxpemVyLnVwbG9hZGluZ01lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIC8vbm8gbWlzc2luZyB0byB1cGxvYWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEobWlzc2luZ1VwbG9hZCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9NaXNzaW5nRmlsZXNMYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKERyb3B6b25lTG9jYWxpemVyLm5vRmlsZXNNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkUHJvZ3Jlc3NNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKHVwbG9hZGluZ01lc3NlbmdlcihcIlwiLmNvbmNhdChtaXNzaW5nVXBsb2FkLCBcIi9cIikuY29uY2F0KHRvdGFsTnVtYmVyKSkpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vUFJFUEFSSU5HIHN0YWdlXG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkU3RhcnQgPT09IG51bGwgfHwgb25VcGxvYWRTdGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25VcGxvYWRTdGFydChsb2NhbEZpbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBFeHRGaWxlTWFuYWdlci5zZXRGaWxlTGlzdE1hcFByZXBhcmluZyhkcm9wem9uZUlkLCBsb2NhbEZpbGVzLCB2YWxpZGF0ZUZpbGVzRmxhZywgY2xlYW5PblVwbG9hZCkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIG5ld0V4dEZpbGVMb2NhbCA9IF9fc3ByZWFkQXJyYXkkMShbXSwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgdHJ1ZSkubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC50b0V4dEZpbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQ0hBTkdFIChvIGFsZWpvIGVsIGlzVXBsb2FkaW5nIG8gbG8gYWxlam8gcGFyYSBxdWUgdGVuZ2EgbSxhcyB0aWVtcG8gYW50ZXMgZGUgbGEgcmVzcHV5ZXN0YSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKG5ld0V4dEZpbGVMb2NhbCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vQVdBSVQgd2hlbiBwcmVwYXJpbmcgdGltZSBpcyBnaXZlblxuICAgICAgICAgICAgICAgICAgICAvL2dlbmVyYWwgc2xlZXAgZm9yIGFsbCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFByZXBhcmluZyhwcmVwYXJpbmdUaW1lKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAvL0FXQUlUIHdoZW4gcHJlcGFyaW5nIHRpbWUgaXMgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmFsIHNsZWVwIGZvciBhbGwgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGkgPCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzLmxlbmd0aCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDE2XTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZSA9IGFyck9mRXh0RmlsZXNJbnN0YW5jZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKChfYSA9IGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UuZXh0cmFEYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVsZXRlZCkpKSByZXR1cm4gWzMgLypicmVhayovLCAxNF07XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YWdlIHRvIFwidXBsb2FkaW5nXCIgaW4gb25lIGZpbGUgYW5kIG5vdGlmeSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgLy8gUFJFUEFSSU5HID0+IFVQTE9BRElOR1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFnZSB0byBcInVwbG9hZGluZ1wiIGluIG9uZSBmaWxlIGFuZCBub3RpZnkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIC8vIFBSRVBBUklORyA9PiBVUExPQURJTkdcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW50UHJlcGFyaW5nVG9VcGxvYWRPbmUoY3VycmVudEV4dEZpbGVJbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vbWVzc2dlIGluIGZvb3RlclxuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkUHJvZ3Jlc3NNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWxNZXNzYWdlKHVwbG9hZGluZ01lc3NlbmdlcihcIlwiLmNvbmNhdCgrK2N1cnJlbnRDb3VudFVwbG9hZCwgXCIvXCIpLmNvbmNhdChtaXNzaW5nVXBsb2FkKSkpO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSBGSUxFU1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmYWtlVXBsb2FkKSByZXR1cm4gWzMgLypicmVhayovLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZmFrZUZ1aVVwbG9hZChjdXJyZW50RXh0RmlsZUluc3RhbmNlLCBEcm9wem9uZUxvY2FsaXplcildO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gNTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGZha2VQcm9ncmVzcyA8IDEwMCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDddO1xuICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgKz0gZ2V0UmFuZG9tSW50KDIxLCAzNSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UucHJvZ3Jlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzID4gMTAwID8gMTAwIDogZmFrZVByb2dyZXNzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oMTAwMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIF9iLnRyeXMucHVzaChbOCwgMTAsICwgMTFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRXh0RmlsZShjdXJyZW50RXh0RmlsZUluc3RhbmNlLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdChjdXJyZW50RXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkRmlsZSA9IHVwbG9hZFJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAvL3VwZGF0ZSBpbnN0YW5jZXNcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPSB1cGxvYWRlZEZpbGUudXBsb2FkU3RhdHVzO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZE1lc3NhZ2UgPSB1cGxvYWRlZEZpbGUudXBsb2FkTWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcImFib3J0ZWRcIikpIHJldHVybiBbMyAvKmJyZWFrKi8sIDEzXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKCldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxMztcbiAgICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXBsb2FkZWRGaWxlLnVwbG9hZFN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlamVjdGVkKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzLnB1c2godXBsb2FkUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxNV07XG4gICAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxNTtcbiAgICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgIHNldExvY2FsRmlsZXMoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBsb2FkIGdyb3VwIGZpbmlzaGVkIDpEXG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkRmluaXNoID09PSBudWxsIHx8IG9uVXBsb2FkRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZEZpbmlzaChzZXJ2ZXJSZXNwb25zZXMpO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hVcGxvYWRNZXNzZW5nZXIgPSBEcm9wem9uZUxvY2FsaXplci51cGxvYWRGaW5pc2hlZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwbG9hZFJlc3VsdE1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbE1lc3NhZ2UoZmluaXNoVXBsb2FkTWVzc2VuZ2VyKG1pc3NpbmdVcGxvYWQgLSB0b3RhbFJlamVjdGVkLCB0b3RhbFJlamVjdGVkKSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICB2YXIgaGFuZGxlQWJvcnRVcGxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsaXN0RXh0RmlsZUxvY2FsID0gRXh0RmlsZU1hbmFnZXIuZ2V0RXh0RmlsZUluc3RhbmNlTGlzdChkcm9wem9uZUlkKTtcbiAgICAgICAgaWYgKCFsaXN0RXh0RmlsZUxvY2FsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0RXh0RmlsZUxvY2FsLmZvckVhY2goZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIgfHxcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS54aHIgIT09IG51bGwgJiYgZXh0RmlsZUluc3RhbmNlLnhociAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UueGhyLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiYWJvcnRlZFwiO1xuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gXCJVcGxvYWQgd2FzIGFib3J0ZWQgYnkgdXNlclwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vdGhlIGZpbmFsIGNsYXNzTmFtZVxuICAgIHZhciBfeiA9IHVzZURyb3B6b25lQ2xhc3NOYW1lKGRyb3B6b25lSWQsIGNsYXNzTmFtZSwgXG4gICAgLy9pc0RyYWdnaW5nICYmIEJvb2xlYW4oZHJvcE9uTGF5ZXIpLFxuICAgIC8vIGhlYWRlcixcbiAgICAvLyBmb290ZXIsXG4gICAgY29sb3IsIFxuICAgIC8vc3R5bGU/LmJvcmRlclJhZGl1cyB8fCBib3JkZXJSYWRpdXMsXG4gICAgYmFja2dyb3VuZCwgbWluSGVpZ2h0KSwgZHJvcHpvbmVDbGFzc05hbWUgPSBfelswXSwgaGVhZGVyQ2xhc3NOYW1lID0gX3pbMV0sIGZvb3RlckNsYXNzTmFtZSA9IF96WzJdLCBkaXNhYmxlZExheWVyQ2xhc3NOYW1lID0gX3pbM107XG4gICAgdmFyIGRyb3BMYXllckNsYXNzTmFtZSA9IHVzZURyb3BMYXllckNsYXNzTmFtZShkcm9wem9uZUlkLCBjb2xvciwgXG4gICAgLy8gaXNEcmFnZ2luZyxcbiAgICAhb25EcmFnRW50ZXIgJiYgIW9uRHJhZ0xlYXZlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgdmFyIHZhbGlkYXRlZEZ1aUZpbGVMaXN0ID0gdmFsaWRhdGVFeHRGaWxlTGlzdChsb2NhbEZpbGVzLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gbnVtYmVyT2ZWYWxpZEZpbGVzIDogSW5maW5pdHksIGxvY2FsVmFsaWRhdG9yLCB2YWxpZGF0b3IsIG1heEZpbGVzLCBsb2NhbGl6YXRpb24pO1xuICAgICAgICBzZXRMb2NhbEZpbGVzKHZhbGlkYXRlZEZ1aUZpbGVMaXN0KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW21heEZpbGVTaXplLCBhY2NlcHQsIG1heEZpbGVzLCBsb2NhbGl6YXRpb25dKTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgY2hhbmdlcyBpbiB0aGUgZXh0RmlsZSBsaXN0LlxuICAgICAqIE1ha2VzIGEgbmV3IGFycmF5IG9mIGV4dEZpbGUgYWNjb3JkaW5nIHRvIHRoZSBcImJlaGF2aW91clwiIHByb3AuXG4gICAgICogSWYgaXNVcGxvYWRpbmcgc3RhdGUgaXMgbm90IHRydWUgYW5kIHRoZSBiZWhhdmlvdXIgcHJvcHMgaXMgZXF1YWwgdG8gXCJhZGRcIixcbiAgICAgKiB0aGUgaW5jb21pbmcgZXh0RmlsZUxpc3QgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaXN0IG9mIGV4dEZpbGUuXG4gICAgICogT3RoZXJ3aXNlLCB0aGUgY29tcGxldGUgZXh0RmlsZSBsaXN0IGlzIHJlcGxhY2VkIGJ5IHRoZSBpbmNvbW1pbmcgZXh0RmlsZSBsaXN0XG4gICAgICogQHBhcmFtIGV4dEZpbGVMaXN0IHRoZSBuZXcgZmlsZUxpc3RcbiAgICAgKiBAcGFyYW0gaXNVcGxvYWRpbmcgYSBmbGFnIHRoYXQgZHNjcmliZXMgd2h0aGVyIHRoZSB1cGxvYWRpbmcgcHJvY2VzcyBpcyBhY3RpdmUgb3Igbm90XG4gICAgICovXG4gICAgdmFyIGhhbmRsZUZpbGVzQ2hhbmdlID0gZnVuY3Rpb24gKGV4dEZpbGVMaXN0LCBpc1VwbG9hZGluZykge1xuICAgICAgICB2YXIgZmluYWxFeHRGaWxlTGlzdCA9IGJlaGF2aW91ciA9PT0gXCJhZGRcIiAmJiAhaXNVcGxvYWRpbmdcbiAgICAgICAgICAgID8gX19zcHJlYWRBcnJheSQxKF9fc3ByZWFkQXJyYXkkMShbXSwgbG9jYWxGaWxlcywgdHJ1ZSksIGV4dEZpbGVMaXN0LCB0cnVlKSA6IF9fc3ByZWFkQXJyYXkkMShbXSwgZXh0RmlsZUxpc3QsIHRydWUpO1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0b1VwbG9hZCAmJiAhaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgIHVwbG9hZGZpbGVzKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0aW9uIG9mIHJlY2lldmluZyB0aGUgZmlsZXMgd2hlbiB1c2VyIHNlbGVjdHMgdGhlIGZpbGVzXG4gICAgICogYnkgY2xpY2tpbmcgdGhlIElucHV0QnV0dG9uXG4gICAgICogQHBhcmFtIGV2dCBldmVudCBoYW5kbGVyIGZvciBnZXR0aW5nIGZpbGVzIGZyb20gaW5wdXQgZWxlbWVudCB0YXJnZXRcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlQ2hhbmdlSW5wdXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vaWYgKGlzVXBsb2FkaW5nKSByZXR1cm47XG4gICAgICAgIHZhciBmaWxlTGlzdCA9IGV2dC50YXJnZXQuZmlsZXM7XG4gICAgICAgIHZhciBleHRGaWxlTGlzdE91dHB1dCA9IGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkoZmlsZUxpc3QpO1xuICAgICAgICAvL3ZhbGlkYXRlIGV4dCBmaWxlc1xuICAgICAgICBpZiAodmFsaWRhdGVGaWxlc0ZsYWcpIHtcbiAgICAgICAgICAgIGV4dEZpbGVMaXN0T3V0cHV0ID0gb3V0ZXJGdWlWYWxpZGF0aW9uKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIGlmIChhdXRvQ2xlYW4pIHtcbiAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IGV4dEZpbGVMaXN0T3V0cHV0LmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pbml0IHhociBvbiBlYWNoIGV4dCBmaWxlXG4gICAgICAgIGlmICh1cmwpXG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0KGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgLy8gQ2xlYW4gaW5wdXQgZWxlbWVudCB0byB0cmlnZ2VyIG9uQ2hhbmdlIGV2ZW50IG9uIGlucHV0XG4gICAgICAgIGNsZWFuSW5wdXQoaW5wdXRSZWYuY3VycmVudCk7XG4gICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGVhY2ggRnVpRmlsZVxuICAgICAqIG91dHNpZGUgdGhlIERyb3B6b25lTmVvIGNvbXBvbmVudCBmaWxlIGRlY2xhcmF0aW9uXG4gICAgICogYWNjb3JkaW5nIHRvIHRoZSBjcml0ZXJpYSBnaXZlbiBieSBtYXhGaWxlcyBhbmQgbWF4RmlsZVNpemUgYW5kIGFjY2VwdCBwcm9wc1xuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FsbHMgdmFsaWRhdGVGdWlGaWxlTGlzdCBhbmQgc2V0cyB0aGUgdmFsaWQgcHJvcCBvZiBGdWlGaWxlIHRvIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIlxuICAgICAqIGRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBpbmRpdmlkdWFsIHZhbGlkYXRpb24uXG4gICAgICogSXQgYWxzbyBhZGQgdGhlIGxpc3Qgb2YgZXJyb3JzLlxuICAgICAqIEBwYXJhbSBmdWlGaWxlTGlzdFRvVmFsaWRhdGUgdGhlIGZ1aUZpbGVMaXN0IHRvIHZhbGlkYXRlXG4gICAgICogQHJldHVybnMgYSBsaXN0IG9mIHZhbGlkYXRlZCBGdWlGaWxlIGxpc3RcbiAgICAgKi9cbiAgICB2YXIgb3V0ZXJGdWlWYWxpZGF0aW9uID0gZnVuY3Rpb24gKGZ1aUZpbGVMaXN0VG9WYWxpZGF0ZSkge1xuICAgICAgICB2YXIgbG9jYWxWYWxpZGF0b3IgPSB7IG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSwgYWNjZXB0OiBhY2NlcHQgfTtcbiAgICAgICAgdmFyIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSBudW1iZXJPZlZhbGlkRmlsZXM7XG4gICAgICAgIGlmIChiZWhhdmlvdXIgPT09IFwicmVwbGFjZVwiKSB7XG4gICAgICAgICAgICAvL3JlLXN0YXJ0IG51bWJlciBvZiB2YWxpZHNcbiAgICAgICAgICAgIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWxpZGF0ZWRGdWlGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QoZnVpRmlsZUxpc3RUb1ZhbGlkYXRlLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gZmluYWxOdW1iZXJPZlZhbGlkcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1aUZpbGVMaXN0O1xuICAgIH07XG4gICAgLy8gSEFORExFUlMgZm9yIENMSUNLLCBEUkFHIE5BRCBEUk9QXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soKSB7XG4gICAgICAgIC8vaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgICAgIGlmICghY2xpY2thYmxlIHx8IGRpc2FibGVkIHx8IGlzVXBsb2FkaW5nKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBtYWtlUmlwcGxlKCk7XG4gICAgICAgIGhhbmRsZUNsaWNrSW5wdXQoaW5wdXRSZWYuY3VycmVudCk7XG4gICAgfVxuICAgIHZhciBoYW5kbGVEcmFnRW50ZXIgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIGhhbmRsZURyYWdVdGlsKGV2dCk7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SXNEcmFnZ2luZyh0cnVlKTtcbiAgICAgICAgLyogc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0SXNEcmFnZ2luZygoX2lzRHJhZ2dpbmcpID0+IHtcbiAgICAgICAgICAgIC8vaWYgKF9pc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIC8vfVxuICAgICAgICAgICAgLy9yZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgMjAwMCk7ICovXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVEcmFnRW50ZXJcIik7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlRHJhZ0xlYXZlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGhhbmRsZURyYWdVdGlsKGV2dCk7XG4gICAgICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpO1xuICAgIH07XG4gICAgLy8gUklQUExFXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHJpcHBsZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBtYWluIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHZhciBtYWtlUmlwcGxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjcmVhdGVGdWlSaXBwbGVGcm9tRGl2KGZ1aVJpcHBsZVJlZkFicy5jdXJyZW50LCBmdWlSaXBwbGVSZWZSZWwuY3VycmVudCwgY29sb3IpO1xuICAgIH07XG4gICAgLy8gS0FNVUkgPT4gUkVDSUVWRSBGSUxFUyBGUk9NIERST1AgT1IgSU5QVVQoIENMSUNLICksIFZBTElEQVRFIEFORCBDSEFOR0VcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgYWN0aW9uIG9mIHJlY2lldmluZyB0aGUgZmlsZXMgd2hlbiB1c2VyIGRyb3BzIHRoZSBmaWxlc1xuICAgICAqIGluIHRoZSBEcm9wem9uZSBjb250YWluZXIuXG4gICAgICogQWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBjb25maWcgZnJvbSBwcm9wcywgdGhpcyBmdW5jdGlvbiBjb3VsZFxuICAgICAqIHZhbGlkYXRlIGZpbGVzIGFuZCBhbHNvIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcGhhc2VcbiAgICAgKiBAcGFyYW0gZXZ0IGV2ZW4gaGFuZGxlciBmb3IgZ2V0dGluZyBmaWxlcyBmcm9tIGRhdGFUcmFuc2ZlclxuICAgICAqL1xuICAgIHZhciBrYW11aSA9IGZ1bmN0aW9uIChldnQpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZpbGVMaXN0LCBleHRGaWxlTGlzdE91dHB1dDtcbiAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yJDEodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBoYW5kbGVEcm9wVXRpbChldnQpO1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIGlmIChpc1VwbG9hZGluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICBpZiAoIWRpc2FibGVSaXBwbGUpXG4gICAgICAgICAgICAgICAgbWFrZVJpcHBsZSgpO1xuICAgICAgICAgICAgc2V0SXNEcmFnZ2luZyhmYWxzZSk7XG4gICAgICAgICAgICBmaWxlTGlzdCA9IGV2dC5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IGZpbGVMaXN0VG9FeHRGaWxlQXJyYXkoZmlsZUxpc3QpO1xuICAgICAgICAgICAgLy92YWxpZGF0ZSBleHRlbmRlZCBmaWxlc1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBvdXRlckZ1aVZhbGlkYXRpb24oZXh0RmlsZUxpc3RPdXRwdXQpO1xuICAgICAgICAgICAgICAgIGlmIChhdXRvQ2xlYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBleHRGaWxlTGlzdE91dHB1dC5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vaW5pdCB4aHIgb24gZWFjaCBleHQgZmlsZVxuICAgICAgICAgICAgaWYgKHVybClcbiAgICAgICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0KGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIGhhbmRsZUZpbGVzQ2hhbmdlKGV4dEZpbGVMaXN0T3V0cHV0KTtcbiAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgLyoqKioqKioqKioqKiogSEVBREVSICYgRk9PVEVSICoqKioqKioqICovXG4gICAgLyoqXG4gICAgICogcmVzZXQgdGhlIGNvbXBsZXRlIGZpbGUgbGlzdFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVSZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKFtdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhbmRsZUNsZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DbGVhbikge1xuICAgICAgICAgICAgb25DbGVhbigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0TG9jYWxGaWxlcyhsb2NhbEZpbGVzLmZpbHRlcihmdW5jdGlvbiAoZikgeyByZXR1cm4gZi52YWxpZDsgfSkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlciA9ICFkcm9wem9uZUNsYXNzTmFtZVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IChpc0RyYWdnaW5nICYmIGRyb3BPbkxheWVyKSB8fCBkaXNhYmxlZFxuICAgICAgICAgICAgPyBhZGRDbGFzc05hbWUoZHJvcHpvbmVDbGFzc05hbWUsIFwiZmlsZXMtdWktcm9vdC1ib3JkZXItaGlkZVwiKVxuICAgICAgICAgICAgOiBkcm9wem9uZUNsYXNzTmFtZTtcbiAgICB2YXIgZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlckNsaWNrYWJsZSA9ICFmaW5hbERyb3B6b25lQ2xhc3NOYW1lQm9yZGVyXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogY2xpY2thYmxlICYmICFkaXNhYmxlZFxuICAgICAgICAgICAgPyBhZGRDbGFzc05hbWUoZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlciwgXCJjbGlja2FibGVcIilcbiAgICAgICAgICAgIDogZmluYWxEcm9wem9uZUNsYXNzTmFtZUJvcmRlcjtcbiAgICBpZiAoIWZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJDbGlja2FibGUpXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9PT0gXCJiZWZvcmVcIiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUJ1dHRvbnMsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBhYm9ydEJ1dHRvbjogaXNVcGxvYWRpbmcgPyBhYm9ydEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25BYm9ydDogaGFuZGxlQWJvcnRVcGxvYWQsIGRlbGV0ZUJ1dHRvbjogZGVsZXRlQnV0dG9uLCBvbkRlbGV0ZTogIWlzVXBsb2FkaW5nID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIHVwbG9hZEJ1dHRvbjogIWlzVXBsb2FkaW5nICYmICFhdXRvVXBsb2FkID8gdXBsb2FkQnV0dG9uIDogdW5kZWZpbmVkLCBvblVwbG9hZDogIWF1dG9VcGxvYWQgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfSA6IHVuZGVmaW5lZCwgY2xlYW5CdXR0b246IHZhbGlkYXRlRmlsZXNGbGFnICYmICFpc1VwbG9hZGluZyAmJiAhYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgPyBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBvbkNsZWFuOiBoYW5kbGVDbGVhbiwgc3R5bGU6IGNvbnRhaW5lclN0eWxlLCBjbGFzc05hbWU6IGNvbnRhaW5lckNsYXNzTmFtZSwgdG9wOiB0cnVlIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbiQxKHsgc3R5bGU6IHN0eWxlLCBjbGFzc05hbWU6IGZpbmFsRHJvcHpvbmVDbGFzc05hbWVCb3JkZXJDbGlja2FibGUgfSwgcmVzdCwgeyBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25EcmFnT3ZlcjogaGFuZGxlRHJhZ0VudGVyLCBvbkRyYWdMZWF2ZTogIWRyb3BPbkxheWVyID8gaGFuZGxlRHJhZ0xlYXZlIDogdW5kZWZpbmVkLCBvbkRyb3A6ICFkcm9wT25MYXllciA/IGthbXVpIDogdW5kZWZpbmVkIH0pLFxuICAgICAgICAgICAgIWRpc2FibGVSaXBwbGUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByZWY6IGZ1aVJpcHBsZVJlZkFicywgY2xhc3NOYW1lOiBcImZpbGVzdWktYmFzZS1yaXBwbGUtYWJzb2x1dGVcIiwgc3R5bGU6IHsgYm9yZGVyUmFkaXVzOiBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGUuYm9yZGVyUmFkaXVzIH0gfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiBmdWlSaXBwbGVSZWZSZWwsIGNsYXNzTmFtZTogXCJmaWxlc3VpLWJhc2UtcmlwcGxlLXJlbGF0aXZlXCIgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGhlYWRlciA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21IZWFkZXIgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tSGVhZGVyKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUhlYWRlciwgeyBmaXJzdENsYXNzTmFtZTogaGVhZGVyQ2xhc3NOYW1lLCBjb2xvcjogY29tcGxldGVBc3VyZUNvbG9yKGNvbG9yKSwgc3R5bGU6IHN0eWxlSGVhZGVyLCBjbGFzc05hbWU6IGNsYXNzTmFtZUhlYWRlciwgcmVzZXRTdHlsZXM6IHJlc2V0U3R5bGVzSGVhZGVyLCBib3JkZXJSYWRpdXM6IHN0eWxlQm9yZGVyUmFkaXVzLCBpc1VwbG9hZGluZzogaXNVcGxvYWRpbmcgJiYgdXBsb2FkaW5nSWNvbkhlZGFlciwgb25SZXNldDogIWlzVXBsb2FkaW5nICYmIGRlbGV0ZUZpbGVzSGVhZGVyID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIG1heEZpbGVTaXplOiBtYXhGaWxlU2l6ZSAmJiBtYXhGaWxlU2l6ZUhlYWRlciA/IG1heEZpbGVTaXplIDogdW5kZWZpbmVkLCBtYXhGaWxlczogbWF4RmlsZXMgJiYgdmFsaWRGaWxlc0NvdW50SGVhZGVyID8gbWF4RmlsZXMgOiB1bmRlZmluZWQsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uLCB1cmxQcmVzZW50OiB1cmwgIT09IHVuZGVmaW5lZCAmJiB1cGxvYWRGaWxlc0hlYWRlciwgb25VcGxvYWRTdGFydDogIWF1dG9VcGxvYWQgJiYgIXVwbG9hZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBudW1iZXJPZlZhbGlkRmlsZXM6IG51bWJlck9mVmFsaWRGaWxlcywgXG4gICAgICAgICAgICAgICAgLy9vbkNsZWFuPXthdXRvQ2xlYW4gPyB1bmRlZmluZWQgOiBjbGVhbkJ1dHRvbiA/IHVuZGVmaW5lZCA6IG9uQ2xlYW59XG4gICAgICAgICAgICAgICAgb25DbGVhbjogIWNsZWFuRmlsZXNIZWFkZXIgfHwgaXNVcGxvYWRpbmcgfHwgY2xlYW5CdXR0b24gfHwgYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIDogKGNsZWFuRmlsZXMgfHwgb25DbGVhbikgJiYgdmFsaWRhdGVGaWxlc0ZsYWdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xlYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkIH0pKSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpKSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQ2hpbGRyZW4sIHsgbGFiZWw6IGxhYmVsLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9LCBjaGlsZHJlbiksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBjdXN0b21Gb290ZXIgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VzdG9tRm9vdGVyKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgZm9vdGVyICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lRm9vdGVyLCBfX2Fzc2lnbiQxKHsgZmlyc3RDbGFzc05hbWU6IGZvb3RlckNsYXNzTmFtZSwgYm9yZGVyUmFkaXVzOiBzdHlsZUJvcmRlclJhZGl1cywgYWNjZXB0OiBhY2NlcHQsIG1lc3NhZ2U6IGlzVXBsb2FkaW5nID8gbG9jYWxNZXNzYWdlIDogdW5kZWZpbmVkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9LCBmb290ZXJDb25maWcpKSkpKSksXG4gICAgICAgICAgICBkcm9wT25MYXllciAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wTGF5ZXIsIHsgb3BlbjogaXNEcmFnZ2luZywgY2xhc3NOYW1lOiAhaXNEcmFnZ2luZ1xuICAgICAgICAgICAgICAgICAgICA/IGRyb3BMYXllckNsYXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICA6IFwiXCIuY29uY2F0KGRyb3BMYXllckNsYXNzTmFtZSwgXCIgZHJvcHpvbmUtbGF5ZXItZHJhZ1wiKSwgb25EcmFnTGVhdmU6IGhhbmRsZURyYWdMZWF2ZSwgb25Ecm9wOiBrYW11aSwgc3R5bGU6IHsgYm9yZGVyUmFkaXVzOiBzdHlsZSA9PT0gbnVsbCB8fCBzdHlsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGUuYm9yZGVyUmFkaXVzIH0gfSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dEhpZGRlbiwgeyBtdWx0aXBsZTogbWF4RmlsZXMgPyBtYXhGaWxlcyA+IDEgOiB0cnVlLCBhY2NlcHQ6IGFjY2VwdCB8fCBcIlwiLCBpbnB1dFJlZjogaW5wdXRSZWYsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2VJbnB1dCB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJvcHpvbmVEaXNhYmxlZExheWVyLCB7IG9wZW46IGRpc2FibGVkLCBjbGFzc05hbWU6IGRpc2FibGVkTGF5ZXJDbGFzc05hbWUgfSkpLFxuICAgICAgICBhY3Rpb25CdXR0b25zUG9zaXRpb24gPT09IFwiYWZ0ZXJcIiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEcm9wem9uZUJ1dHRvbnMsIHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBhYm9ydEJ1dHRvbjogaXNVcGxvYWRpbmcgPyBhYm9ydEJ1dHRvbiA6IHVuZGVmaW5lZCwgb25BYm9ydDogaGFuZGxlQWJvcnRVcGxvYWQsIGRlbGV0ZUJ1dHRvbjogZGVsZXRlQnV0dG9uLCBvbkRlbGV0ZTogIWlzVXBsb2FkaW5nID8gaGFuZGxlUmVzZXQgOiB1bmRlZmluZWQsIHVwbG9hZEJ1dHRvbjogIWlzVXBsb2FkaW5nICYmICFhdXRvVXBsb2FkID8gdXBsb2FkQnV0dG9uIDogdW5kZWZpbmVkLCBvblVwbG9hZDogIWF1dG9VcGxvYWQgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1cGxvYWRmaWxlcyhsb2NhbEZpbGVzKTsgfSA6IHVuZGVmaW5lZCwgY2xlYW5CdXR0b246IHZhbGlkYXRlRmlsZXNGbGFnICYmICFpc1VwbG9hZGluZyAmJiAhYXV0b0NsZWFuXG4gICAgICAgICAgICAgICAgPyBjbGVhbkJ1dHRvblxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBvbkNsZWFuOiBoYW5kbGVDbGVhbiwgc3R5bGU6IGNvbnRhaW5lclN0eWxlLCBjbGFzc05hbWU6IGNvbnRhaW5lckNsYXNzTmFtZSwgdG9wOiBmYWxzZSB9KSkpKTtcbn07XG5cbnZhciBkZWZhdWx0RmlsZUlucHV0QnV0dG9uUHJvcHMgPSB7XG4gICAgdGV4dFRyYW5zZm9ybTogXCJ1cHBlcmNhc2VcIixcbiAgICBsYWJlbDogXCJicm93c2UuLi5cIixcbiAgICBiZWhhdmlvdXI6IFwiYWRkXCIsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHVwbG9hZENvbmZpZzoge30sXG4gICAgYWN0aW9uQnV0dG9uczoge30sXG4gICAgdmFsdWU6IFtdLFxufTtcblxudmFyIEZpbGVJbnB1dEJ1dHRvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IG1lcmdlUHJvcHMocHJvcHMsIGRlZmF1bHRGaWxlSW5wdXRCdXR0b25Qcm9wcyksIFxuICAgIC8vYmFzaWNcbiAgICBfYiA9IF9hLnZhbHVlLCBcbiAgICAvL2Jhc2ljXG4gICAgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYiwgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSwgXG4gICAgLy92YWxpZGF0aW9uXG4gICAgYWNjZXB0ID0gX2EuYWNjZXB0LCBtYXhGaWxlU2l6ZSA9IF9hLm1heEZpbGVTaXplLCBtYXhGaWxlcyA9IF9hLm1heEZpbGVzLCB2YWxpZGF0b3IgPSBfYS52YWxpZGF0b3IsIFxuICAgIC8vY2xlYW5GaWxlcyxcbiAgICAvL29uQ2xlYW4sXG4gICAgYXV0b0NsZWFuID0gX2EuYXV0b0NsZWFuLCBcbiAgICAvL3VwbG9hZGluZ1xuICAgIHVwbG9hZENvbmZpZyA9IF9hLnVwbG9hZENvbmZpZywgZmFrZVVwbG9hZCA9IF9hLmZha2VVcGxvYWQsIG9uVXBsb2FkU3RhcnQgPSBfYS5vblVwbG9hZFN0YXJ0LCBvblVwbG9hZEZpbmlzaCA9IF9hLm9uVXBsb2FkRmluaXNoLCBcbiAgICAvL3N0eWxpbmdcbiAgICAvL2JhY2tncm91bmQsXG4gICAgLy9taW5IZWlnaHQsXG4gICAgY29sb3IgPSBfYS5jb2xvciwgc3R5bGUgPSBfYS5zdHlsZSwgdGV4dENvbG9yID0gX2EudGV4dENvbG9yLCB0ZXh0VHJhbnNmb3JtID0gX2EudGV4dFRyYW5zZm9ybSwgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLCBcbiAgICAvL2xhYmVsXG4gICAgbGFiZWwgPSBfYS5sYWJlbCwgXG4gICAgLy9sb2NhbGl6YXRpb25cbiAgICBsb2NQcm9wcyA9IF9hLmxvY2FsaXphdGlvbiwgXG4gICAgLy9yaXBwbGVcbiAgICBkaXNhYmxlUmlwcGxlID0gX2EuZGlzYWJsZVJpcHBsZSwgXG4gICAgLy9hY3Rpb24gYnV0b3Ruc1xuICAgIGFjdGlvbkJ1dHRvbnMgPSBfYS5hY3Rpb25CdXR0b25zLCBcbiAgICAvL2Ryb3AgbGF5ZXJcbiAgICAvLyBkcm9wT25MYXllcixcbiAgICAvL2hlYWRlciBhbmQgZm9vdGVyXG4gICAgLy9oZWFkZXIsXG4gICAgLy9mb290ZXIsXG4gICAgLy9oZWFkZXJDb25maWcgPSB7fSxcbiAgICAvL2Zvb3RlckNvbmZpZyA9IHt9LFxuICAgIC8vZGlzYWJsZWRcbiAgICBkaXNhYmxlZCA9IF9hLmRpc2FibGVkLCBcbiAgICAvL2NsaWNrYWJsZSxcbiAgICAvL2FkZCBvciByZXBsYWNlXG4gICAgYmVoYXZpb3VyID0gX2EuYmVoYXZpb3VyLCBcbiAgICAvL2NvbnRlbnRcbiAgICBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBcbiAgICAvL2FkdmFuY2VkQ29uZmlnLFxuICAgIHZhcmlhbnQgPSBfYS52YXJpYW50LCByZXNldFN0eWxlcyA9IF9hLnJlc2V0U3R5bGVzLCBkYXJrTW9kZVByb3AgPSBfYS5kYXJrTW9kZSwgcmVzdCA9IF9fcmVzdChfYSwgW1widmFsdWVcIiwgXCJvbkNoYW5nZVwiLCBcImFjY2VwdFwiLCBcIm1heEZpbGVTaXplXCIsIFwibWF4RmlsZXNcIiwgXCJ2YWxpZGF0b3JcIiwgXCJhdXRvQ2xlYW5cIiwgXCJ1cGxvYWRDb25maWdcIiwgXCJmYWtlVXBsb2FkXCIsIFwib25VcGxvYWRTdGFydFwiLCBcIm9uVXBsb2FkRmluaXNoXCIsIFwiY29sb3JcIiwgXCJzdHlsZVwiLCBcInRleHRDb2xvclwiLCBcInRleHRUcmFuc2Zvcm1cIiwgXCJjbGFzc05hbWVcIiwgXCJsYWJlbFwiLCBcImxvY2FsaXphdGlvblwiLCBcImRpc2FibGVSaXBwbGVcIiwgXCJhY3Rpb25CdXR0b25zXCIsIFwiZGlzYWJsZWRcIiwgXCJiZWhhdmlvdXJcIiwgXCJjaGlsZHJlblwiLCBcInZhcmlhbnRcIiwgXCJyZXNldFN0eWxlc1wiLCBcImRhcmtNb2RlXCJdKTtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgX2MgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KSwgZGFya01vZGVDb250ZXh0ID0gX2MuZGFya01vZGUsIFxuICAgIC8vaWNvbnMsXG4gICAgbG9jQ29udGV4dCA9IF9jLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gbG9jUHJvcHMgIT09IHVuZGVmaW5lZCA/IGxvY1Byb3BzIDogbG9jQ29udGV4dDtcbiAgICB2YXIgZGFya01vZGUgPSBkYXJrTW9kZVByb3AgIT09IHVuZGVmaW5lZCA/IGRhcmtNb2RlUHJvcCA6IGRhcmtNb2RlQ29udGV4dDtcbiAgICB2YXIgX2QgPSB1cGxvYWRDb25maWcsIHVybCA9IF9kLnVybCwgbWV0aG9kID0gX2QubWV0aG9kLCBoZWFkZXJzID0gX2QuaGVhZGVycywgdXBsb2FkTGFiZWwgPSBfZC51cGxvYWRMYWJlbCwgX2UgPSBfZC5jbGVhbk9uVXBsb2FkLCBjbGVhbk9uVXBsb2FkID0gX2UgPT09IHZvaWQgMCA/IHRydWUgOiBfZSwgX2YgPSBfZC5wcmVwYXJpbmdUaW1lLCBwcmVwYXJpbmdUaW1lID0gX2YgPT09IHZvaWQgMCA/IDE1MDAgOiBfZiwgX2cgPSBfZC5hdXRvVXBsb2FkLCBhdXRvVXBsb2FkID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2c7XG4gICAgdmFyIF9oID0gYWN0aW9uQnV0dG9ucywgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID0gX2gucG9zaXRpb24sIGFib3J0QnV0dG9uID0gX2guYWJvcnRCdXR0b24sIGRlbGV0ZUJ1dHRvbiA9IF9oLmRlbGV0ZUJ1dHRvbiwgdXBsb2FkQnV0dG9uID0gX2gudXBsb2FkQnV0dG9uLCBjbGVhbkJ1dHRvbiA9IF9oLmNsZWFuQnV0dG9uLCBjb250YWluZXJTdHlsZSA9IF9oLnN0eWxlLCBjb250YWluZXJDbGFzc05hbWUgPSBfaC5jbGFzc05hbWU7XG4gICAgLy9sb2NhbGl6ZXJzXG4gICAgdmFyIERyb3B6b25lTG9jYWxpemVyID0gRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIC8vcmVmIHRvIHRoZSBoaWRkZW4gaW5wdXQgdGFnXG4gICAgdmFyIGlucHV0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vc3RhdGUgZm9yIGNoZWNraW5nIHVwbG9hZCBzdGFydFxuICAgIHZhciBfaiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaXNVcGxvYWRpbmcgPSBfalswXSwgc2V0SXNVcGxvYWRpbmcgPSBfalsxXTtcbiAgICAvL0lkIGZvciB1cGxvZGluZyB0aHJvdWdoIEZ1aUZpbGVNYW5hZ2VyXG4gICAgLy9jb25zdCBpbnB1dEJ1dHRvbklkOiBzdHJpbmcgfCBudW1iZXIgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBpbnB1dEJ1dHRvbklkID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiBGaWxlSWRHZW5lcmF0b3IuZ2V0TmV4dElkKCkgKyBcIlwiOyB9LCBbXSk7XG4gICAgLy9GbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHZhbGlkYXRlIG9yIG5vdFxuICAgIHZhciB2YWxpZGF0ZUZpbGVzRmxhZyA9IGlzVmFsaWRhdGVBY3RpdmUoYWNjZXB0LCBtYXhGaWxlU2l6ZSwgbWF4RmlsZXMsIHZhbGlkYXRvcik7XG4gICAgLy9zdGF0ZSBmb3IgbWFuYWdpbmcgdGhlIG51bWJlciBvZiB2YWxpZCBmaWxlc1xuICAgIC8vc3RhdGUgZm9yIG1hbmFnaW5nIHRoZSBmaWxlcyBsb2NhbGx5XG4gICAgdmFyIF9rID0gdXNlRHJvcHpvbmVGaWxlTGlzdFVwZGF0ZXIoaW5wdXRCdXR0b25JZCwgdmFsdWUgfHwgW10sIGlzVXBsb2FkaW5nLCBtYXhGaWxlU2l6ZSwgYWNjZXB0LCBtYXhGaWxlcywgdmFsaWRhdG9yLCBsb2NhbGl6YXRpb24sIHZhbGlkYXRlRmlsZXNGbGFnKSwgbG9jYWxGaWxlcyA9IF9rWzBdLCBudW1iZXJPZlZhbGlkRmlsZXMgPSBfa1sxXSwgc2V0TG9jYWxGaWxlcyA9IF9rWzJdO1xuICAgIC8qKlxuICAgICAqIFVwbG9hZHMgZWFjaCBmaWxlIGluIHRoZSBhcnJheSBvZiBFeHRGaWxlc1xuICAgICAqIEZpcnN0LCBzZXRzIGFsbCB0aGUgZmlsZXMgaW4gcHJlcGFyaW5nIHN0YXR1cyBhbmQgYXdhaXRzIGBwcmVwYXJpbmdUaW1lYCBtaWxpc2Vjb25kcy5cbiAgICAgKiBJZiBgcHJlcGFyaW5nVGltZWAgaXMgbm90IGdpdmVuIG9yIGl0cyB2YWx1ZSBpcyBmYWxzZSBvciAwLCB0aGVyZSB3b27CtHQgYmUgYSBwcmVwYXJpbmcgcGhhc2UuXG4gICAgICogICAgICAgIFRoaXMgaXMgb25seSBmb3IgdGhlIGZpcnN0IGZpbGUsIHRoZSByZXN0IG9mIGZpbGVzIHdpbGwgaGF2ZSBwcmVwYXJpbmcgdGltZSB1bnRpbCB0aGUgZmlsZSBiZWZvcmUgd2FzIHVwbG9hZGVkXG4gICAgICogICAgICAgIFRoZSBmaXJzdCBmaWxlIHdpbGwganVtcCBmcm9tIHVuZGVmIHRvIFwidXBsb2FkaW5nXCJcbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKlxuICAgICAqIElmIGBvbkNhbmNlbGAgZXZlbnQgb2N1cnJzIG91dHNpZGUgb24gYW55IG9uIHRoZVxuICAgICAqIEZpbGVJdGVtcyhlLmcuIGJ5IGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uIG9uIGBGaWxlSXRlbWApLFxuICAgICAqIHRoZSBleHRGaWxlSW5zdGFuY2Ugd2lsbCBjaGFuZ2UgaXRzIHN0YXR1cyBmcm9tICdwcmVwYXJpbmcnIHRvIHVuZGVmaW5lZC4gSWYgc28sXG4gICAgICogYWZ0ZXIgdGhlIHdhaXRpbmcgdGltZSB0aGUgdmFsdWUgb2Ygc3RhdHVzIHdpbGwgYmUgZm91bmQgYXMgdW5kZWZpbmVkIGFuZFxuICAgICAqIHdvbsK0dCBwZXJmb20gdGhlIHVwbG9hZCBmb3IgdGhhdCBmaWxlIG9yIGFueSBvdGhlciB0aGF0IGZpdHMgdGhhdCBjb25kaXRpb24uXG4gICAgICogVGhlbiwgZm9yIGVhY2ggZmlsZSBzZXRzIHRoZSBmaWxlIGluICd1cGxvYWRpbmcnIHN0YXR1cy5cbiAgICAgKiBUaGVuIG9uQ2hhbmdlIGV2ZW50IHdpbGwgYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgZmlsZXMgb3V0c2lkZS5cbiAgICAgKiBUaGVuIHVwbG9hZHMgdGhlIGZpbGUgd2l0aCB0aGUgYHhocmAgaW5zdGFuY2UuXG4gICAgICogQWZ0ZXIgdGhhdCwgdGhhdCBmaWxlIHJlY2lldmVzIHRoZSBuZXcgdXBsb2FkU3RhdHVzIHRoYXQgY2FuIGJlXG4gICAgICogICdzdWNjZXNzJywgJ2Vycm9yJyBvciAnYWJvcnRlZCdcbiAgICAgKiBhbmQgb25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBjYWxsZWQgdG8gdXBkYXRlIHRoZSBmaWxlcyBvdXRzaWRlLlxuICAgICAqIEBwYXJhbSBsb2NhbEZpbGVzIHRoZSBsaXN0IG9mIGV4dEZpbGVzIHRvIHVwbG9hZFxuICAgICAqIEByZXR1cm5zIG5vdGhpbmdcbiAgICAgKi9cbiAgICB2YXIgdXBsb2FkZmlsZXMgPSBmdW5jdGlvbiAobG9jYWxGaWxlcykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcywgbWlzc2luZ1VwbG9hZCwgbmV3RXh0RmlsZUxvY2FsLCBzZXJ2ZXJSZXNwb25zZXMsIGksIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UsIHVwbG9hZFJlc3BvbnNlLCBmYWtlUHJvZ3Jlc3MsIHVwbG9hZGVkRmlsZTtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHVwbG9hZGluZyBmbGFnIHRvIHRydWVcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNVcGxvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vYXZvaWQgdG8gY2FsbCB1cGxvYWQgaWYgbm90IGFsbG93ZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZmxhZyBpcyBhbHJlYWR5IHRydWUgb3IgdGhlcmUgaXNudCBmaWxlc1xuICAgICAgICAgICAgICAgICAgICAvL3VybCB3YXMgbm90IHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1VwbG9hZGluZyB8fCBsb2NhbEZpbGVzLmxlbmd0aCA9PT0gMCB8fCAhdXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nVXBsb2FkID0gbG9jYWxGaWxlcy5maWx0ZXIoZnVuY3Rpb24gKGV4dEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1VwbG9hZEFibGVFeHRGaWxlKGV4dEZpbGUsIHZhbGlkYXRlRmlsZXNGbGFnKTtcbiAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidXBsb2FkIHN0YXJ0OiBtaXNzaW5nVXBsb2FkXCIsIG1pc3NpbmdVcGxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAvL25vIG1pc3NpbmcgdG8gdXBsb2FkXG4gICAgICAgICAgICAgICAgICAgIGlmICghKG1pc3NpbmdVcGxvYWQgPiAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInVwbG9hZCBzdGFydDogbm9GaWxlc01lc3NhZ2VcIiwgbWlzc2luZ1VwbG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL1BSRVBBUklORyBzdGFnZVxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwidmFsaWRhdGVGaWxlc0ZsYWdcIiwgdmFsaWRhdGVGaWxlc0ZsYWcpO1xuICAgICAgICAgICAgICAgICAgICBvblVwbG9hZFN0YXJ0ID09PSBudWxsIHx8IG9uVXBsb2FkU3RhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVXBsb2FkU3RhcnQobG9jYWxGaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgRXh0RmlsZU1hbmFnZXIuc2V0RmlsZUxpc3RNYXBQcmVwYXJpbmcoaW5wdXRCdXR0b25JZCwgbG9jYWxGaWxlcywgdmFsaWRhdGVGaWxlc0ZsYWcsIGNsZWFuT25VcGxvYWQpIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBuZXdFeHRGaWxlTG9jYWwgPSBfX3NwcmVhZEFycmF5JDEoW10sIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMsIHRydWUpLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgudG9FeHRGaWxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSAobyBhbGVqbyBlbCBpc1VwbG9hZGluZyBvIGxvIGFsZWpvIHBhcmEgcXVlIHRlbmdhIG0sYXMgdGllbXBvIGFudGVzIGRlIGxhIHJlc3B1eWVzdGEpXG4gICAgICAgICAgICAgICAgICAgIC8vIHNldElzVXBsb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShuZXdFeHRGaWxlTG9jYWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiRmlsZU1hbmFnZXJMb2cgYmVmb3JlIHNsZWVwXCIsIGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpO1xuICAgICAgICAgICAgICAgICAgICAvL0FXQUlUIHdoZW4gcHJlcGFyaW5nIHRpbWUgaXMgZ2l2ZW5cbiAgICAgICAgICAgICAgICAgICAgLy9nZW5lcmFsIHNsZWVwIGZvciBhbGwgZmlsZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBQcmVwYXJpbmcocHJlcGFyaW5nVGltZSldO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNYW5hZ2VyTG9nIGJlZm9yZSBzbGVlcFwiLCBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgLy9BV0FJVCB3aGVuIHByZXBhcmluZyB0aW1lIGlzIGdpdmVuXG4gICAgICAgICAgICAgICAgICAgIC8vZ2VuZXJhbCBzbGVlcCBmb3IgYWxsIGZpbGVzXG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShpIDwgYXJyT2ZFeHRGaWxlc0luc3RhbmNlcy5sZW5ndGgpKSByZXR1cm4gWzMgLypicmVhayovLCAxNl07XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UgPSBhcnJPZkV4dEZpbGVzSW5zdGFuY2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISgoX2EgPSBjdXJyZW50RXh0RmlsZUluc3RhbmNlLmV4dHJhRGF0YSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlbGV0ZWQpKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMTRdO1xuICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFnZSB0byBcInVwbG9hZGluZ1wiIGluIG9uZSBmaWxlIGFuZCBub3RpZnkgY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgIC8vIFBSRVBBUklORyA9PiBVUExPQURJTkdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgc2xlZXBUcmFuc2l0aW9uKCldO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgLy9zZXQgc3RhZ2UgdG8gXCJ1cGxvYWRpbmdcIiBpbiBvbmUgZmlsZSBhbmQgbm90aWZ5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAvLyBQUkVQQVJJTkcgPT4gVVBMT0FESU5HXG4gICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFudFByZXBhcmluZ1RvVXBsb2FkT25lKGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICAvL0NIQU5HRSBGSUxFU1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmYWtlVXBsb2FkKSByZXR1cm4gWzMgLypicmVhayovLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZmFrZUZ1aVVwbG9hZChjdXJyZW50RXh0RmlsZUluc3RhbmNlLCBEcm9wem9uZUxvY2FsaXplcildO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkUmVzcG9uc2UgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGZha2VQcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gNTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGZha2VQcm9ncmVzcyA8IDEwMCkpIHJldHVybiBbMyAvKmJyZWFrKi8sIDddO1xuICAgICAgICAgICAgICAgICAgICBmYWtlUHJvZ3Jlc3MgKz0gZ2V0UmFuZG9tSW50KDIxLCAzNSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UucHJvZ3Jlc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFrZVByb2dyZXNzID4gMTAwID8gMTAwIDogZmFrZVByb2dyZXNzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBzbGVlcFRyYW5zaXRpb24oMTAwMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShzYW5pdGl6ZUFyckV4dEZpbGUoYXJyT2ZFeHRGaWxlc0luc3RhbmNlcyksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IHJldHVybiBbMyAvKmJyZWFrKi8sIDExXTtcbiAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIF9iLnRyeXMucHVzaChbOCwgMTAsICwgMTFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgdXBsb2FkRXh0RmlsZShjdXJyZW50RXh0RmlsZUluc3RhbmNlLCB1cmwsIG1ldGhvZCwgaGVhZGVycywgdXBsb2FkTGFiZWwpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFJlc3BvbnNlID0gX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxMV07XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRSZXNwb25zZSA9IHVuZXhwZWN0ZWRFcnJvclVwbG9hZFJlc3VsdChjdXJyZW50RXh0RmlsZUluc3RhbmNlLnRvRXh0RmlsZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkRmlsZSA9IHVwbG9hZFJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiZmFrZSB1cGxvYWRSZXNwb25zZSB1cGxvYWRlZEZpbGVcIiwgdXBsb2FkZWRGaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgLy91cGRhdGUgaW5zdGFuY2VzXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFeHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID0gdXBsb2FkZWRGaWxlLnVwbG9hZFN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gdXBsb2FkZWRGaWxlLnVwbG9hZE1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICghIShjdXJyZW50RXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpKSByZXR1cm4gWzMgLypicmVhayovLCAxM107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHNsZWVwVHJhbnNpdGlvbigpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTM7XG4gICAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2VzLnB1c2godXBsb2FkUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAxNV07XG4gICAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRmlsZXNDaGFuZ2Uoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxNTtcbiAgICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDJdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgIHNldExvY2FsRmlsZXMoc2FuaXRpemVBcnJFeHRGaWxlKGFyck9mRXh0RmlsZXNJbnN0YW5jZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdXBsb2FkIGdyb3VwIGZpbmlzaGVkIDpEXG4gICAgICAgICAgICAgICAgICAgIG9uVXBsb2FkRmluaXNoID09PSBudWxsIHx8IG9uVXBsb2FkRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblVwbG9hZEZpbmlzaChzZXJ2ZXJSZXNwb25zZXMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc1VwbG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7IH07XG4gICAgdmFyIGhhbmRsZUFib3J0VXBsb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGlzdEV4dEZpbGVMb2NhbCA9IEV4dEZpbGVNYW5hZ2VyLmdldEV4dEZpbGVJbnN0YW5jZUxpc3QoaW5wdXRCdXR0b25JZCk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJBYm9ydGluZ1wiLCBsaXN0RXh0RmlsZUxvY2FsLCBpbnB1dEJ1dHRvbklkKTtcbiAgICAgICAgaWYgKCFsaXN0RXh0RmlsZUxvY2FsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsaXN0RXh0RmlsZUxvY2FsLmZvckVhY2goZnVuY3Rpb24gKGV4dEZpbGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS51cGxvYWRTdGF0dXMgPT09IFwidXBsb2FkaW5nXCIgfHxcbiAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UudXBsb2FkU3RhdHVzID09PSBcInByZXBhcmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4dEZpbGVJbnN0YW5jZS54aHIgIT09IG51bGwgJiYgZXh0RmlsZUluc3RhbmNlLnhociAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICBleHRGaWxlSW5zdGFuY2UueGhyLmFib3J0KCk7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUluc3RhbmNlLnVwbG9hZFN0YXR1cyA9IFwiYWJvcnRlZFwiO1xuICAgICAgICAgICAgICAgIGV4dEZpbGVJbnN0YW5jZS51cGxvYWRNZXNzYWdlID0gXCJVcGxvYWQgd2FzIGFib3J0ZWQgYnkgdXNlclwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBsb2NhbFZhbGlkYXRvciA9IHsgbWF4RmlsZVNpemU6IG1heEZpbGVTaXplLCBhY2NlcHQ6IGFjY2VwdCB9O1xuICAgICAgICB2YXIgdmFsaWRhdGVkRnVpRmlsZUxpc3QgPSB2YWxpZGF0ZUV4dEZpbGVMaXN0KGxvY2FsRmlsZXMsIG1heEZpbGVzID8gbWF4RmlsZXMgLSBudW1iZXJPZlZhbGlkRmlsZXMgOiBJbmZpbml0eSwgbG9jYWxWYWxpZGF0b3IsIHZhbGlkYXRvciwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbik7XG4gICAgICAgIHNldExvY2FsRmlsZXModmFsaWRhdGVkRnVpRmlsZUxpc3QpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbbWF4RmlsZVNpemUsIGFjY2VwdCwgbWF4RmlsZXMsIGxvY2FsaXphdGlvbl0pO1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIHRoZSBjaGFuZ2VzIGluIHRoZSBleHRGaWxlIGxpc3QuXG4gICAgICogTWFrZXMgYSBuZXcgYXJyYXkgb2YgZXh0RmlsZSBhY2NvcmRpbmcgdG8gdGhlIFwiYmVoYXZpb3VyXCIgcHJvcC5cbiAgICAgKiBJZiBpc1VwbG9hZGluZyBzdGF0ZSBpcyBub3QgdHJ1ZSBhbmQgdGhlIGJlaGF2aW91ciBwcm9wcyBpcyBlcXVhbCB0byBcImFkZFwiLFxuICAgICAqIHRoZSBpbmNvbWluZyBleHRGaWxlTGlzdCBpcyBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGxpc3Qgb2YgZXh0RmlsZS5cbiAgICAgKiBPdGhlcndpc2UsIHRoZSBjb21wbGV0ZSBleHRGaWxlIGxpc3QgaXMgcmVwbGFjZWQgYnkgdGhlIGluY29tbWluZyBleHRGaWxlIGxpc3RcbiAgICAgKiBAcGFyYW0gZXh0RmlsZUxpc3QgdGhlIG5ldyBmaWxlTGlzdFxuICAgICAqIEBwYXJhbSBpc1VwbG9hZGluZyBhIGZsYWcgdGhhdCBkc2NyaWJlcyB3aHRoZXIgdGhlIHVwbG9hZGluZyBwcm9jZXNzIGlzIGFjdGl2ZSBvciBub3RcbiAgICAgKi9cbiAgICB2YXIgaGFuZGxlRmlsZXNDaGFuZ2UgPSBmdW5jdGlvbiAoZXh0RmlsZUxpc3QsIGlzVXBsb2FkaW5nKSB7XG4gICAgICAgIHZhciBmaW5hbEV4dEZpbGVMaXN0ID0gYmVoYXZpb3VyID09PSBcImFkZFwiICYmICFpc1VwbG9hZGluZ1xuICAgICAgICAgICAgPyBfX3NwcmVhZEFycmF5JDEoX19zcHJlYWRBcnJheSQxKFtdLCBsb2NhbEZpbGVzLCB0cnVlKSwgZXh0RmlsZUxpc3QsIHRydWUpIDogX19zcHJlYWRBcnJheSQxKFtdLCBleHRGaWxlTGlzdCwgdHJ1ZSk7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGZpbmFsRXh0RmlsZUxpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRvVXBsb2FkICYmICFpc1VwbG9hZGluZykge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF1dG9VcGxvYWRcIiwgZmluYWxFeHRGaWxlTGlzdCk7XG4gICAgICAgICAgICB1cGxvYWRmaWxlcyhmaW5hbEV4dEZpbGVMaXN0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgdGhlIGFjdGlvbiBvZiByZWNpZXZpbmcgdGhlIGZpbGVzIHdoZW4gdXNlciBzZWxlY3RzIHRoZSBmaWxlc1xuICAgICAqIGJ5IGNsaWNraW5nIHRoZSBJbnB1dEJ1dHRvblxuICAgICAqIEBwYXJhbSBldnQgZXZlbnQgaGFuZGxlciBmb3IgZ2V0dGluZyBmaWxlcyBmcm9tIGlucHV0IGVsZW1lbnQgdGFyZ2V0XG4gICAgICovXG4gICAgdmFyIGhhbmRsZUNoYW5nZUlucHV0ID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2lmIChpc1VwbG9hZGluZykgcmV0dXJuO1xuICAgICAgICB2YXIgZmlsZUxpc3QgPSBldnQudGFyZ2V0LmZpbGVzO1xuICAgICAgICB2YXIgZXh0RmlsZUxpc3RPdXRwdXQgPSBmaWxlTGlzdFRvRXh0RmlsZUFycmF5KGZpbGVMaXN0KTtcbiAgICAgICAgLy92YWxpZGF0ZSBkdWkgZmlsZXNcbiAgICAgICAgaWYgKHZhbGlkYXRlRmlsZXNGbGFnKSB7XG4gICAgICAgICAgICBleHRGaWxlTGlzdE91dHB1dCA9IG91dGVyRnVpVmFsaWRhdGlvbihleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgICAgICBpZiAoYXV0b0NsZWFuKSB7XG4gICAgICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSBleHRGaWxlTGlzdE91dHB1dC5maWx0ZXIoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYudmFsaWQ7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaW5pdCB4aHIgb24gZWFjaCBkdWkgZmlsZVxuICAgICAgICBpZiAodXJsKVxuICAgICAgICAgICAgZXh0RmlsZUxpc3RPdXRwdXQgPSB0b1VwbG9hZGFibGVFeHRGaWxlTGlzdChleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgICAgIC8vIENsZWFuIGlucHV0IGVsZW1lbnQgdG8gdHJpZ2dlciBvbkNoYW5nZSBldmVudCBvbiBpbnB1dFxuICAgICAgICBjbGVhbklucHV0KGlucHV0UmVmLmN1cnJlbnQpO1xuICAgICAgICBoYW5kbGVGaWxlc0NoYW5nZShleHRGaWxlTGlzdE91dHB1dCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyB0aGUgdmFsaWRhdGlvbiBwcm9jZXNzIGZvciBlYWNoIEZ1aUZpbGVcbiAgICAgKiBvdXRzaWRlIHRoZSBEcm9wem9uZU5lbyBjb21wb25lbnQgZmlsZSBkZWNsYXJhdGlvblxuICAgICAqIGFjY29yZGluZyB0byB0aGUgY3JpdGVyaWEgZ2l2ZW4gYnkgbWF4RmlsZXMgYW5kIG1heEZpbGVTaXplIGFuZCBhY2NlcHQgcHJvcHNcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbGxzIHZhbGlkYXRlRnVpRmlsZUxpc3QgYW5kIHNldHMgdGhlIHZhbGlkIHByb3Agb2YgRnVpRmlsZSB0byBcInRydWVcIiBvciBcImZhbHNlXCJcbiAgICAgKiBkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXZpZHVhbCB2YWxpZGF0aW9uLlxuICAgICAqIEl0IGFsc28gYWRkIHRoZSBsaXN0IG9mIGVycm9ycy5cbiAgICAgKiBAcGFyYW0gZnVpRmlsZUxpc3RUb1ZhbGlkYXRlIHRoZSBmdWlGaWxlTGlzdCB0byB2YWxpZGF0ZVxuICAgICAqIEByZXR1cm5zIGEgbGlzdCBvZiB2YWxpZGF0ZWQgRnVpRmlsZSBsaXN0XG4gICAgICovXG4gICAgdmFyIG91dGVyRnVpVmFsaWRhdGlvbiA9IGZ1bmN0aW9uIChmdWlGaWxlTGlzdFRvVmFsaWRhdGUpIHtcbiAgICAgICAgdmFyIGxvY2FsVmFsaWRhdG9yID0geyBtYXhGaWxlU2l6ZTogbWF4RmlsZVNpemUsIGFjY2VwdDogYWNjZXB0IH07XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ2YWxpZGF0ZWRGdWlGaWxlTGlzdCBwcmVcIiwgZnVpRmlsZUxpc3RUb1ZhbGlkYXRlKTtcbiAgICAgICAgdmFyIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSBudW1iZXJPZlZhbGlkRmlsZXM7XG4gICAgICAgIGlmIChiZWhhdmlvdXIgPT09IFwicmVwbGFjZVwiKSB7XG4gICAgICAgICAgICAvL3JlLXN0YXJ0IG51bWJlciBvZiB2YWxpZHNcbiAgICAgICAgICAgIGZpbmFsTnVtYmVyT2ZWYWxpZHMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWxpZGF0ZWRGdWlGaWxlTGlzdCA9IHZhbGlkYXRlRXh0RmlsZUxpc3QoZnVpRmlsZUxpc3RUb1ZhbGlkYXRlLCBtYXhGaWxlcyA/IG1heEZpbGVzIC0gZmluYWxOdW1iZXJPZlZhbGlkcyA6IEluZmluaXR5LCBsb2NhbFZhbGlkYXRvciwgdmFsaWRhdG9yLCBtYXhGaWxlcywgbG9jYWxpemF0aW9uKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInZhbGlkYXRlZEZ1aUZpbGVMaXN0IGFmdFwiLCB2YWxpZGF0ZWRGdWlGaWxlTGlzdCk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZWRGdWlGaWxlTGlzdDtcbiAgICB9O1xuICAgIC8vIEhBTkRMRVJTIGZvciBDTElDS1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKCkge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJIQUFBQUFBQUFcIik7XG4gICAgICAgIC8vaGFuZGxlQ2xpY2tVdGlsKGV2dCk7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaGFuZGxlQ2xpY2tJbnB1dChpbnB1dFJlZi5jdXJyZW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogcmVzZXQgdGhlIGNvbXBsZXRlIGZpbGUgbGlzdFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVSZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKFtdKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIGhhbmRsZUNsZWFuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2NhbEZpbGVzKGxvY2FsRmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnZhbGlkOyB9KSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgYWN0aW9uQnV0dG9uc1Bvc2l0aW9uID09PSBcImJlZm9yZVwiICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQnV0dG9ucywgeyBkaXNhYmxlZDogZGlzYWJsZWQsIGFib3J0QnV0dG9uOiBpc1VwbG9hZGluZyA/IGFib3J0QnV0dG9uIDogdW5kZWZpbmVkLCBvbkFib3J0OiBoYW5kbGVBYm9ydFVwbG9hZCwgZGVsZXRlQnV0dG9uOiBkZWxldGVCdXR0b24sIG9uRGVsZXRlOiAhaXNVcGxvYWRpbmcgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgdXBsb2FkQnV0dG9uOiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9VcGxvYWQgPyB1cGxvYWRCdXR0b24gOiB1bmRlZmluZWQsIG9uVXBsb2FkOiAhYXV0b1VwbG9hZCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9IDogdW5kZWZpbmVkLCBjbGVhbkJ1dHRvbjogdmFsaWRhdGVGaWxlc0ZsYWcgJiYgIWlzVXBsb2FkaW5nICYmICFhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICA/IGNsZWFuQnV0dG9uXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG9uQ2xlYW46IGhhbmRsZUNsZWFuLCBzdHlsZTogY29udGFpbmVyU3R5bGUsIGNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLCB0b3A6IHRydWUgfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE1hdGVyaWFsQnV0dG9uLCBfX2Fzc2lnbiQxKHsgZGlzYWJsZWQ6IGRpc2FibGVkLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgc3R5bGU6IHN0eWxlLCBjb2xvcjogY29sb3IsIHZhcmlhbnQ6IHZhcmlhbnQsIHRleHRUcmFuc2Zvcm06IHRleHRUcmFuc2Zvcm0sIHRleHRDb2xvcjogdGV4dENvbG9yLCByZXNldFN0eWxlczogcmVzZXRTdHlsZXMsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBkaXNhYmxlUmlwcGxlOiBkaXNhYmxlUmlwcGxlLCBkYXJrTW9kZTogZGFya01vZGUsIGlkOiBpbnB1dEJ1dHRvbklkIH0sIHJlc3QpLCBjaGlsZHJlbiB8fCBsYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXRIaWRkZW4sIHsgbXVsdGlwbGU6IG1heEZpbGVzID8gbWF4RmlsZXMgPiAxIDogdHJ1ZSwgYWNjZXB0OiBhY2NlcHQgfHwgXCJcIiwgaW5wdXRSZWY6IGlucHV0UmVmLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlSW5wdXQgfSksXG4gICAgICAgIGFjdGlvbkJ1dHRvbnNQb3NpdGlvbiA9PT0gXCJhZnRlclwiICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERyb3B6b25lQnV0dG9ucywgeyBkaXNhYmxlZDogZGlzYWJsZWQsIGFib3J0QnV0dG9uOiBpc1VwbG9hZGluZyA/IGFib3J0QnV0dG9uIDogdW5kZWZpbmVkLCBvbkFib3J0OiBoYW5kbGVBYm9ydFVwbG9hZCwgZGVsZXRlQnV0dG9uOiBkZWxldGVCdXR0b24sIG9uRGVsZXRlOiAhaXNVcGxvYWRpbmcgPyBoYW5kbGVSZXNldCA6IHVuZGVmaW5lZCwgdXBsb2FkQnV0dG9uOiAhaXNVcGxvYWRpbmcgJiYgIWF1dG9VcGxvYWQgPyB1cGxvYWRCdXR0b24gOiB1bmRlZmluZWQsIG9uVXBsb2FkOiAhYXV0b1VwbG9hZCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwbG9hZGZpbGVzKGxvY2FsRmlsZXMpOyB9IDogdW5kZWZpbmVkLCBjbGVhbkJ1dHRvbjogdmFsaWRhdGVGaWxlc0ZsYWcgJiYgIWlzVXBsb2FkaW5nICYmICFhdXRvQ2xlYW5cbiAgICAgICAgICAgICAgICA/IGNsZWFuQnV0dG9uXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsIG9uQ2xlYW46IGhhbmRsZUNsZWFuLCBzdHlsZTogY29udGFpbmVyU3R5bGUsIGNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLCB0b3A6IGZhbHNlIH0pKSkpO1xufTtcblxuLy9SZWFjdC5IVE1MUHJvcHM8SFRNTERpdkVsZW1lbnQ+XG52YXIgZGVmYXVsdEF2YXRhclByb3BzID0ge1xuICAgIHZhcmlhbnQ6IFwic3F1YXJlXCIsXG4gICAgYWx0OiBcImF2YXRhclwiLFxuICAgIGVtcHR5TGFiZWw6IFwiQWdyZWdhciBmb3RvXCIsXG4gICAgY2hhbmdlTGFiZWw6IFwiQ2FtYmlhciBmb3RvXCIsXG4gICAgbG9hZGluZ0xhYmVsOiBcIkxvYWRpbmcuLi5cIixcbiAgICByZWFkT25seTogZmFsc2UsXG4gICAgLy9zbWFydDogZmFsc2UsXG4gICAgc21hcnRJbWdGaXQ6IFwiY2VudGVyXCIsXG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDIwMHB4O1xcbiAgaGVpZ2h0OiAyMDBweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuNDg2KTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lci5zcXVhcmUge1xcbiAgYm9yZGVyLXJhZGl1czogMHB4O1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lci5jaXJjbGUge1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1pbWFnZSB7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXI6aG92ZXIgLmZ1aS1hdmF0YXItbGFiZWwuaGlkZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1sYWJlbCB7XFxuICBtYXJnaW46IDA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjQ4Nik7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBjb2xvcjogd2hpdGU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZ1aS1hdmF0YXItbWFpbi1jb250YWluZXIgLmZ1aS1hdmF0YXItbGFiZWwuaGlkZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG4uZnVpLWF2YXRhci1tYWluLWNvbnRhaW5lciAuZnVpLWF2YXRhci1sYWJlbDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDcxLCA3MSwgNzEsIDAuNzQpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XCIpO1xuXG52YXIgdXNlQXZhdGFyU3R5bGUgPSBmdW5jdGlvbiAoYXZhdGFySWQsIGJvcmRlclJhZGl1cykge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpLCBpZEF2YXRhclN0eWxlcyA9IF9hWzBdLCBzZXRJZEF2YXRhclN0eWxlcyA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgc3R5bGVJbmplY3RlZCA9IF9iWzBdLCBzZXRTdHlsZUluamVjdGVkID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgY2xhc3NOYW1lQm9yZGVyID0gX2NbMF0sIHNldENsYXNzTmFtZUJvcmRlciA9IF9jWzFdO1xuICAgIC8vY29uc29sZS5sb2coXCJib3JkZXJSYWRpdXNcIixib3JkZXJSYWRpdXMpO1xuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgYSBkeW5hbWljIGNzcyBzaGVldCBmb3IgYXZhdGFyXG4gICAgICogQHBhcmFtIGJvcmRlclJhZGl1cyB0aGUgYm9yZGVyIHJhZGl1c1xuICAgICAqIEByZXR1cm5zIGEgZHluYW1pYyBjc3Mgc2hlZXRcbiAgICAgKi9cbiAgICB2YXIgbWFrZUR5bmFtaWNBdmF0YXJDU1NSdWxlcyA9IGZ1bmN0aW9uIChhdmF0YXJJZCwgYm9yZGVyUmFkaXVzKSB7XG4gICAgICAgIHZhciBmaW5hbElkU3R5bGUgPSAhYm9yZGVyUmFkaXVzID8gXCItZGVmYXVsdFwiIDogXCItXCIuY29uY2F0KGF2YXRhcklkKTtcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBEeW5hbWlDU1MubWFrZVN0eWxlU2hlZXQoe1xuICAgICAgICAgICAgaWQ6IFwiZnVpLWF2YXRhci1zdHlsZXNcIiArIGZpbmFsSWRTdHlsZSxcbiAgICAgICAgICAgIHNoZWV0UnVsZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWJvcmRlclwiICsgZmluYWxJZFN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBydWxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIlwiLmNvbmNhdChib3JkZXJSYWRpdXMgfHwgXCI2cHhcIiwgXCIgIWltcG9ydGFudFwiKSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3R5bGVTaGVldDtcbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYXZhdGFyLCBkZWxldGluZyBpbml0XCIsIHN0eWxlSW5qZWN0ZWQsIGlkQXZhdGFyU3R5bGVzKTtcbiAgICAgICAgICAgIGlmIChzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgY2F0Y2ggY3NzIGRlbGV0ZVwiKTtcbiAgICAgICAgICAgICAgICBEeW5hbWlDU1MucmVtb3ZlU3R5bGVTaGVldChpZEF2YXRhclN0eWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRJZEF2YXRhclN0eWxlcyhcIlwiKTtcbiAgICAgICAgICAgIHNldFN0eWxlSW5qZWN0ZWQoZmFsc2UpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLyogICAgICBpZiAoIWJvcmRlclJhZGl1cykge1xuICAgICAgICAgICAgICAgICBEeW5hbWlDU1MucmVtb3ZlU3R5bGVTaGVldChpZEF2YXRhclN0eWxlcyk7XG4gICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICB9ICovXG4gICAgICAgIHZhciBpZFN0eWxlID0gXCJcIjtcbiAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBtYWtlRHluYW1pY0F2YXRhckNTU1J1bGVzKGF2YXRhcklkLCBib3JkZXJSYWRpdXMpO1xuICAgICAgICAvL2NoZWNrIGlmIGRlZmF1bHQgaXMgaW4gRE9NXG4gICAgICAgIGlmICghYm9yZGVyUmFkaXVzICYmICFzdHlsZUluamVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoRHluYW1pQ1NTLmV4aXN0U3R5bGVTaGVldChcImZ1aS1hdmF0YXItc3R5bGVzLWRlZmF1bHRcIikpIHtcbiAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIHNldElkQXZhdGFyU3R5bGVzKFwiZnVpLWF2YXRhci1zdHlsZXMtZGVmYXVsdFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlkU3R5bGUgPSBEeW5hbWlDU1MuaW5zZXJ0U3R5bGVTaGVldChzdHlsZVNoZWV0KTtcbiAgICAgICAgICAgICAgICBzZXRJZEF2YXRhclN0eWxlcyhpZFN0eWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWRTdHlsZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghc3R5bGVJbmplY3RlZCkge1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgY2xhc3NuYW1lIHdhcyBhZGRlZFxuICAgICAgICAgICAgLy8gaWYgeWVzLCBlZGl0IGNzc1xuICAgICAgICAgICAgLy8gaWYgbm90IGluc2VydCBjc3NcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhdmF0YXIsIG5vIGNzcywgaW5zZXJ0aW5nXCIpO1xuICAgICAgICAgICAgaWRTdHlsZSA9IER5bmFtaUNTUy5pbnNlcnRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgbm8gY3NzLCBpbnNlcnRlZCBPS1wiLCBpZFN0eWxlKTtcbiAgICAgICAgICAgIHNldElkQXZhdGFyU3R5bGVzKGlkU3R5bGUpO1xuICAgICAgICAgICAgaWYgKGlkU3R5bGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBzZXRTdHlsZUluamVjdGVkKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImF2YXRhciwgY2F0Y2ggY3NzLCBtb2RpZml5aW5nXCIsIGlkQXZhdGFyU3R5bGVzKTtcbiAgICAgICAgICAgIER5bmFtaUNTUy5lZGl0U3R5bGVTaGVldChpZEF2YXRhclN0eWxlcywgc3R5bGVTaGVldC5zaGVldFJ1bGVzIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRDbGFzc05hbWVCb3JkZXIoXCJmdWktYXZhdGFyLWJvcmRlci1cIiArIGF2YXRhcklkKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2JvcmRlclJhZGl1c10pO1xuICAgIHJldHVybiBjbGFzc05hbWVCb3JkZXI7XG59O1xuXG52YXIgQmFzZVByZXBhcmluZ0xvYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgY29sb3IgPSBwcm9wcy5jb2xvciwgXG4gICAgLy9jb2xvckZpbGwsXG4gICAgLy9vbkNsaWNrLFxuICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsIFxuICAgIC8vY2xhc3NOYW1lLFxuICAgIHJhZGl1cyA9IHByb3BzLnJhZGl1cywgeCA9IHByb3BzLngsIHkgPSBwcm9wcy55LCB3aWR0aCA9IHByb3BzLndpZHRoO1xuICAgIHZhciBmaW5hbFJhZGl1cyA9IHJhZGl1cyB8fCA0NjtcbiAgICB2YXIgZmluYWxYID0geCB8fCA1MDtcbiAgICB2YXIgZmluYWxZID0geSB8fCA1MDtcbiAgICB2YXIgZmluYWxTaXplID0gcGFyc2VTaXplKHNpemUpO1xuICAgIHZhciBmaW5hbFN0eWxlID0gc3R5bGUgPyBzdHlsZSA6IHt9O1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHhtbG5zWGxpbms6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCB3aWR0aDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBoZWlnaHQ6IFwiXCIuY29uY2F0KGZpbmFsU2l6ZSwgXCJweFwiKSwgc3R5bGU6IGZpbmFsU3R5bGUsIHZpZXdCb3g6IFwiMCAwIDEwMCAxMDBcIiwgcHJlc2VydmVBc3BlY3RSYXRpbzogXCJ4TWlkWU1pZFwiIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJjaXJjbGVcIiwgeyBjeDogXCJcIi5jb25jYXQoZmluYWxYKSwgY3k6IFwiXCIuY29uY2F0KGZpbmFsWSksIHI6IFwiXCIuY29uY2F0KGZpbmFsUmFkaXVzKSwgZmlsbDogXCJub25lXCIsIHN0cm9rZTogY29sb3IgfHwgXCIjMTRmZjAwXCIsIHN0cm9rZVdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCB8fCA4LCBcInB4XCIpLCBzdHJva2VEYXNoYXJyYXk6IFwiMTY0LjkzMzYxNDMxMzQ2NDE1IDEwMC45Nzc4NzE0Mzc4MjEzOFwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYW5pbWF0ZVRyYW5zZm9ybVwiLCB7IGF0dHJpYnV0ZU5hbWU6IFwidHJhbnNmb3JtXCIsIHR5cGU6IFwicm90YXRlXCIsIHJlcGVhdENvdW50OiBcImluZGVmaW5pdGVcIiwgZHVyOiBcIjFzXCIsIHZhbHVlczogXCIwIFwiLmNvbmNhdChmaW5hbFgsIFwiIFwiKS5jb25jYXQoZmluYWxYLCBcIjszNjAgXCIpLmNvbmNhdChmaW5hbFgsIFwiIFwiKS5jb25jYXQoZmluYWxYKSwga2V5VGltZXM6IFwiMDsxXCIgfSkpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktbG9hZGVyLWNvbnRhaW5lciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDEpO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5maWxlcy11aS1sb2FkZXItY29udGFpbmVyLmNsaWNrYWJsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi5maWxlcy11aS1sb2FkZXItY29udGFpbmVyOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42MSk7XFxufVwiKTtcblxudmFyIExvYWRlckNvbnRhaW5lciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHN0eWxlID0gcHJvcHMuc3R5bGUsIHNpemUgPSBwcm9wcy5zaXplLCBvbkNsaWNrID0gcHJvcHMub25DbGljaztcbiAgICB2YXIgZmluYWxTaXplID0gc2l6ZSA/IHBhcnNlU2l6ZShzaXplKSA6IHVuZGVmaW5lZDtcbiAgICAvL2NvbnN0IGlzQ2xpY2thYmxlID0gb25DbGljayAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZSA9IG9uQ2xpY2tcbiAgICAgICAgPyBcImZpbGVzLXVpLWxvYWRlci1jb250YWluZXIgY2xpY2thYmxlXCJcbiAgICAgICAgOiBcImZpbGVzLXVpLWxvYWRlci1jb250YWluZXJcIjtcbiAgICB2YXIgaGFuZGxlQ2xpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljaygpO1xuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgb25DbGljazogaGFuZGxlQ2xpY2ssIGNsYXNzTmFtZTogY2xhc3NOYW1lID8gXCJcIi5jb25jYXQoZmluYWxDbGFzc05hbWUsIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKSA6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogX19hc3NpZ24kMShfX2Fzc2lnbiQxKHt9LCBzdHlsZSksIHsgaGVpZ2h0OiBmaW5hbFNpemUsIHdpZHRoOiBmaW5hbFNpemUgfSkgfSwgY2hpbGRyZW4pKTtcbn07XG5cbnZhciBJbmZpbml0ZUxvYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvbkNsaWNrID0gcHJvcHMub25DbGljaywgXG4gICAgLy90ZXh0LFxuICAgIHNpemUgPSBwcm9wcy5zaXplO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkZXJDb250YWluZXIsIHsgb25DbGljazogb25DbGljaywgc2l6ZTogc2l6ZSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCYXNlUHJlcGFyaW5nTG9hZGVyLCB7IHNpemU6IHNpemUgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgfSB9LCBvbkNsaWNrICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC43NSlcIiwgc2l6ZTogNDUsIG9uQ2xpY2s6IG9uQ2xpY2sgfSkpKSkpKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVwiKTtcblxudmFyIExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgdmlzaWJsZSA9IHByb3BzLnZpc2libGUsIG90aGVyUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIiwgXCJ2aXNpYmxlXCJdKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoY2xhc3NOYW1lIHx8IFwiXCIsIFwiZmlsZXMtdWktbGF5ZXJcIik7XG4gICAgaWYgKHZpc2libGUpXG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbiQxKHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IHN0eWxlIH0sIG90aGVyUHJvcHMpLCBjaGlsZHJlbikpO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxudmFyIEltYWdlUHJldmlld0RlZmF1bHRQcm9wcyA9IHtcbiAgICAvL3dpZHRoOiBcIjEwMCVcIixcbiAgICAvL2hlaWdodDogXCIxMDAlXCIsXG4gICAgYWx0OiBcImltYWdlLXByZXZpZXdcIixcbiAgICAvL2NsYXNzTmFtZTogXCJmdWktaW1hZ2UtcHJldmlld1wiXG4gICAgc21hcnRJbWdGaXQ6IFwib3JpZW50YXRpb25cIlxufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZ1aS1pbWFnZS1wcmV2aWV3IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XFxufVwiKTtcblxudmFyIEltYWdlUHJldmlldyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IG1lcmdlUHJvcHMocHJvcHMsIEltYWdlUHJldmlld0RlZmF1bHRQcm9wcyksIHNyYyA9IF9hLnNyYywgYWx0ID0gX2EuYWx0LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQsIG9uRXJyb3IgPSBfYS5vbkVycm9yLCBcbiAgICAvL3NtYXJ0LFxuICAgIHNtYXJ0SW1nRml0ID0gX2Euc21hcnRJbWdGaXQsIHN0eWxlID0gX2Euc3R5bGUsIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZTtcbiAgICAvL2NvbnNvbGUubG9nKFwiSW1hZ2VQcmV2aWV3IHNtYXJ0SW1nRml0XCIsc21hcnRJbWdGaXQpO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKFt1bmRlZmluZWQsIHVuZGVmaW5lZF0pLCBfYyA9IF9iWzBdLCBmaW5hbEhlaWdodCA9IF9jWzBdLCBmaW5hbFdpZHRoID0gX2NbMV0sIHNldGZpbmFsRGltZW5zaW9ucyA9IF9iWzFdO1xuICAgIC8vLy9jb25zb2xlLnRhYmxlKHsgc3JjLCBhbHQsIGNsYXNzTmFtZSwgc3R5bGUsIHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgdmFyIF9kID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgc291cmNlID0gX2RbMF0sIHNldFNvdXJjZSA9IF9kWzFdO1xuICAgIC8qICBjb25zdCBbb3JpZW50YXRpb24sIHNldE9yaWVudGF0aW9uXSA9IFJlYWN0LnVzZVN0YXRlPFxuICAgICAgXCJsYW5kc2NhcGVcIiB8IFwicG9ydHJhaXRcIiB8IHVuZGVmaW5lZFxuICAgID4odW5kZWZpbmVkKTsgKi9cbiAgICB2YXIgZ2V0U291cmNlID0gZnVuY3Rpb24gKHNyYykgeyByZXR1cm4gX19hd2FpdGVyJDEodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV3SW1hZ2VTcmM7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvciQxKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0IC8qeWllbGQqLywgcmVhZEFzRGF0YVVSTChzcmMpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIG5ld0ltYWdlU3JjID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRTdHJTb3VyY2UobmV3SW1hZ2VTcmMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pOyB9O1xuICAgIHZhciBoYW5kbGVTZXRTdHJTb3VyY2UgPSBmdW5jdGlvbiAoaW1hZ2VTb3VyY2UpIHsgcmV0dXJuIF9fYXdhaXRlciQxKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGZpbmFsSGVpZ2h0LCBmaW5hbFdpZHRoLCBvcmllbnRhdGlvbl8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IkMSh0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVTZXRTdHJTb3VyY2VcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTb3VyY2UgPT09IFwiXCIgfHwgIWltYWdlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlU2V0U3RyU291cmNlIHJldHVyblwiLCBpbWFnZVNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghIXNtYXJ0SW1nRml0KSByZXR1cm4gWzMgLypicmVhayovLCAxXTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZVNldFN0clNvdXJjZSBubyBpbWdmaXRcIiwgaW1hZ2VTb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAvL2lmIG5vdCBnaXZlblxuICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZ2V0SW1hZ2VPcmllbnRhdGlvbihpbWFnZVNvdXJjZSldO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25fMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZVNldFN0clNvdXJjZSBvcmllbnRhdGlvbiBvYnRhaW5lZFwiLCBvcmllbnRhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmllbnRhdGlvbl8xID09PSBcImxhbmRzY2FwZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc21hcnRJbWdGaXQgPT09IFwib3JpZW50YXRpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbWFydEltZ0ZpdCA9PT0gXCJjZW50ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsV2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gXCIxMDAlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFdpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHNldGZpbmFsRGltZW5zaW9ucyhbZmluYWxIZWlnaHQsIGZpbmFsV2lkdGhdKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlKGltYWdlU291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTsgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvL2lmIG5vdCB1bmRlZmluZWRcbiAgICAgICAgaWYgKCFzcmMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkltYWdlUHJldmlldyBUaGVyZSBpcyBzb3VyY2UgOkRcIik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3JjID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAvL2lmIGEgdXJsIHN0cmluZyBpcyBnaXZlbiwgYXNzaWduIGl0IGRpcmVjdGx5XG4gICAgICAgICAgICBoYW5kbGVTZXRTdHJTb3VyY2Uoc3JjKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vaWYgYSBGaWxlIG9iamVjdCBpcyBnaXZlbiwgY2hlY2sgaWYgaXMgYSBzdXBwb3J0ZWQgZm9ybWF0IGFuZCByZWFkIGl0XG4gICAgICAgICAgICB2YXIgaGVhZGVyTWltZSA9IHNyYy50eXBlID8gc3JjLnR5cGUuc3BsaXQoXCIvXCIpWzBdIDogXCJvY3RldFwiO1xuICAgICAgICAgICAgaWYgKGhlYWRlck1pbWUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICAgICAgICAgIC8vc2V0IHRoZSBpbWFnZSBzb3VyY2UgYW5kIGNyZWF0ZSB0aGUgdXJpIHN0cmluZyBpZiBpdCdzIGEgc3VwcG9ydGVkIGltYWdlIGZvcm1hdFxuICAgICAgICAgICAgICAgIGdldFNvdXJjZShzcmMpO1xuICAgICAgICAgICAgICAgIC8vaWYgbm90IGltYWdlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yID09PSBudWxsIHx8IG9uRXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRXJyb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbc3JjXSk7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwiSW1hZ2VQcmV2aWV3XCIsIHNyYywgc291cmNlKTtcbiAgICAvKiBjb25zdCBmaW5hbFdpZHRoOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgd2lkdGggfHwgKG9yaWVudGF0aW9uID09PSBcImxhbmRzY2FwZVwiICYmIHNtYXJ0ID8gXCIxMDAlXCIgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGZpbmFsSGVpZ2h0OiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgaGVpZ2h0IHx8IChvcmllbnRhdGlvbiA9PT0gXCJwb3J0cmFpdFwiICYmIHNtYXJ0ID8gXCIxMDAlXCIgOiB1bmRlZmluZWQpOyAqL1xuICAgIC8vY29uc29sZS5sb2coXCJJbWFnZSByZXN1bHRcIiwgc3JjLCBzb3VyY2UsIGZpbmFsSGVpZ2h0LCBmaW5hbFdpZHRoKTtcbiAgICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVFcnJvclwiLCBvbkVycm9yKTtcbiAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKCk7XG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHNyYyAmJiBzb3VyY2UgJiYgKGZpbmFsSGVpZ2h0IHx8IGZpbmFsV2lkdGgpICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgXG4gICAgICAgIC8vb25Mb2FkPXtoYW5kbGVMb2FkfVxuICAgICAgICBzdHlsZTogc3R5bGUgfHwge30sIG9uQ2xpY2s6IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LCB3aWR0aDogZmluYWxXaWR0aCwgaGVpZ2h0OiBmaW5hbEhlaWdodCwgc3JjOiBzb3VyY2UsIGFsdDogYWx0LCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgb25FcnJvcjogaGFuZGxlRXJyb3IgfSkpKSk7XG59O1xuXG4vKipcbiAqXG4gKiBEZW1vczpcbiAqXG4gKiAtIFtBdmF0YXJdKGh0dHBzOi8vd3d3LmZpbGVzLXVpLmNvbS9jb21wb25lbnRzL2F2YXRhcilcbiAqXG4gKiBBUEk6XG4gKlxuICogLSBbQXZhdGFyIEFQSV0oaHR0cHM6Ly93d3cuZmlsZXMtdWkuY29tL2FwaS9hdmF0YXIvKVxuICovXG52YXIgQXZhdGFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gbWVyZ2VQcm9wcyhwcm9wcywgZGVmYXVsdEF2YXRhclByb3BzKSwgcmVhZE9ubHkgPSBfYS5yZWFkT25seSwgc3JjID0gX2Euc3JjLCBhbHQgPSBfYS5hbHQsIGFjY2VwdCA9IF9hLmFjY2VwdCwgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZSwgZW1wdHlMYWJlbCA9IF9hLmVtcHR5TGFiZWwsIGNoYW5nZUxhYmVsID0gX2EuY2hhbmdlTGFiZWwsIHZhcmlhbnQgPSBfYS52YXJpYW50LCBib3JkZXJSYWRpdXMgPSBfYS5ib3JkZXJSYWRpdXMsIHVwbG9hZGluZ0xhYmVsID0gX2EubG9hZGluZ0xhYmVsLCBpc1Vsb2FkaW5nID0gX2EuaXNMb2FkaW5nLCBvbkVycm9yID0gX2Eub25FcnJvciwgc21hcnRJbWdGaXQgPSBfYS5zbWFydEltZ0ZpdCwgc3R5bGUgPSBfYS5zdHlsZSwgcmVzdCA9IF9fcmVzdChfYSwgW1wicmVhZE9ubHlcIiwgXCJzcmNcIiwgXCJhbHRcIiwgXCJhY2NlcHRcIiwgXCJvbkNoYW5nZVwiLCBcImVtcHR5TGFiZWxcIiwgXCJjaGFuZ2VMYWJlbFwiLCBcInZhcmlhbnRcIiwgXCJib3JkZXJSYWRpdXNcIiwgXCJsb2FkaW5nTGFiZWxcIiwgXCJpc0xvYWRpbmdcIiwgXCJvbkVycm9yXCIsIFwic21hcnRJbWdGaXRcIiwgXCJzdHlsZVwiXSk7XG4gICAgLy9jb25zb2xlLmxvZyhcIkF2YXRhciBzbWFydEltZ0ZpdFwiLCBzbWFydEltZ0ZpdCk7XG4gICAgdmFyIGlucHV0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8vY29uc3QgYXZhdGFySWQgPSBSZWFjdC51c2VJZCgpO1xuICAgIHZhciBhdmF0YXJJZCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gRmlsZUlkR2VuZXJhdG9yLmdldE5leHRJZCgpICsgXCJcIjsgfSwgW10pO1xuICAgIHZhciBmaW5hbENsYXNzTmFtZUJvcmRlciA9IHVzZUF2YXRhclN0eWxlKGF2YXRhcklkLnJlcGxhY2UoXCI6XCIsIFwiXCIpLnJlcGxhY2UoXCI6XCIsIFwiXCIpLCBib3JkZXJSYWRpdXMpO1xuICAgIC8vY29uc29sZS5sb2coXCJmaW5hbENsYXNzTmFtZUJvcmRlclwiLCBmaW5hbENsYXNzTmFtZUJvcmRlcik7XG4gICAgdmFyIGhhbmRsZUNsaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIGFsZXJ0KFwiQWdyZWdhciBmb3Rvb29vb29vXCIpO1xuICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xpY2soKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVDaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgdmFyIGZpbGVMaXN0ID0gZXZ0LnRhcmdldC5maWxlcztcbiAgICAgICAgdmFyIGZpbGVMaXN0T3V0cHV0ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBmID0gdm9pZCAwOyAoZiA9IGZpbGVMaXN0W2ldKTsgaSsrKSB7XG4gICAgICAgICAgICBmaWxlTGlzdE91dHB1dC5wdXNoKGYpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShmaWxlTGlzdE91dHB1dFswXSk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJBdmF0YXIgZXJyb3JcIiwgZXZ0KTtcbiAgICAgICAgb25FcnJvciA9PT0gbnVsbCB8fCBvbkVycm9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkVycm9yKGV2dCk7XG4gICAgfTtcbiAgICBpZiAoIWZpbmFsQ2xhc3NOYW1lQm9yZGVyKVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24kMSh7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLW1haW4tY29udGFpbmVyXCIuY29uY2F0KHZhcmlhbnQgPT09IFwiY2lyY2xlXCIgPyBcIiBjaXJjbGVcIiA6IFwiXCIsIFwiIFwiKS5jb25jYXQoZmluYWxDbGFzc05hbWVCb3JkZXIpLCBzdHlsZTogc3R5bGUgfSwgcmVzdCksXG4gICAgICAgICAgICAgICAgaXNVbG9hZGluZyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWxhYmVsXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5maW5pdGVMb2FkZXIsIHsgc2l6ZTogNTAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRpbmdMYWJlbCkpKSA6IHNyYyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlUHJldmlldywgeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1pbWFnZVwiLCBzcmM6IHNyYywgYWx0OiBhbHQsIG9uRXJyb3I6IGhhbmRsZUVycm9yLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZnVpLWF2YXRhci1sYWJlbFwiIH0sIGVtcHR5TGFiZWwpKSxcbiAgICAgICAgICAgICAgICAhcmVhZE9ubHkgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICFpc1Vsb2FkaW5nICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZ1aS1hdmF0YXItbGFiZWwgaGlkZVwiLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9LCBzcmMgPyBjaGFuZ2VMYWJlbCA6IGVtcHR5TGFiZWwpKSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dEhpZGRlbiwgeyBtdWx0aXBsZTogZmFsc2UsIGFjY2VwdDogYWNjZXB0IHx8IFwiaW1hZ2UvKlwiLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlSW5wdXQsIGlucHV0UmVmOiBpbnB1dFJlZiB9KSkpKSkpO1xuICAgIH1cbn07XG4vKipcbiAqIGNyZWF0ZXMgYSBkeW5hbWljIGNzcyBzaGVldCBmb3IgYXZhdGFyXG4gKiBAcGFyYW0gYm9yZGVyUmFkaXVzIHRoZSBib3JkZXIgcmFkaXVzXG4gKiBAcmV0dXJucyBhIGR5bmFtaWMgY3NzIHNoZWV0XG4gKi9cbi8qIGNvbnN0IG1ha2VEeW5hbWljQXZhdGFyQ1NTUnVsZXMgPSAoXG4gIGJvcmRlclJhZGl1czogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBEeW5hbWljU2hlZXQgPT4ge1xuICBjb25zdCBzdHlsZVNoZWV0OiBEeW5hbWljU2hlZXQgPSBEeW5hbWlDU1MubWFrZVN0eWxlU2hlZXQoe1xuICAgIGlkOiBcImF2YXRhci1zdHlsZXNcIixcbiAgICBzaGVldFJ1bGVzOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJmdWktYXZhdGFyLWJvcmRlclwiLFxuICAgICAgICBydWxlczoge1xuICAgICAgICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcbiAgcmV0dXJuIHN0eWxlU2hlZXQ7XG59OyAqL1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJAaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9UG9wcGluczozMDAsNDAwLDUwMCw2MDAsNzAwLDkwMCk7XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciB7XFxuICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg1OCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBtaW4taGVpZ2h0OiAxMDBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgd2lkdGg6IDMyMHB4O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aWR0aDogMzIwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFxuICBnYXA6IDVweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDEwMHB4O1xcbiAgaGVpZ2h0OiAxMDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIgLmZpbGUtY2FyZC1pY29uLWxheWVyIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMTAwcHg7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciAuZmlsZS1jYXJkLWljb24tbGF5ZXIgaW1nIHtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1pY29uLWNvbnRhaW5lciAuZmlsZS1jYXJkLWljb24tbGF5ZXIuYmx1ciBpbWcge1xcbiAgZmlsdGVyOiBibHVyKDRweCk7XFxuICB3aWR0aDogMjAwJTtcXG4gIGhlaWdodDogMjAwJTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtbWFpbi1sYXllciAuZmlsZS1jYXJkLWljb24tcGx1cy1kYXRhIC5maWxlLWNhcmQtaWNvbi1jb250YWluZXIgLmZpbGUtY2FyZC1zdGF0dXMtbGF5ZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXG4gIHBhZGRpbmc6IDVweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEge1xcbiAgcGFkZGluZy1yaWdodDogMTBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBsaW5lLWhlaWdodDogMTlweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICB3aWR0aDogY2FsYygxMDAlIC0gMTAwcHgpO1xcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xcbiAgY29sb3I6IGJsYWNrO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhLmRhcmstbW9kZSB7XFxuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1tYWluLWxheWVyIC5maWxlLWNhcmQtaWNvbi1wbHVzLWRhdGEgLmZpbGUtY2FyZC1kYXRhIC5maWxlLWNhcmQtc2l6ZSB7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgZm9udC1zaXplOiAwLjlyZW07XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEgLmZpbGUtY2FyZC1uYW1lIHtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAxOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMTtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLW1haW4tbGF5ZXIgLmZpbGUtY2FyZC1pY29uLXBsdXMtZGF0YSAuZmlsZS1jYXJkLWRhdGEgLmZpbGUtY2FyZC1uYW1lLm5vdC1hbGxvd2VkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTgwLCAxNiwgMTYsIDAuNyk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLXVwbG9hZC1sYXllci1jb250YWluZXIge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC4yKSwgcmdiYSgwLCAwLCAwLCAwLjM1KSwgcmdiYSgwLCAwLCAwLCAwLjYyNSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpKTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgZm9udC1zaXplOiAxZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMiksIHJnYmEoMCwgMCwgMCwgMC4zKSwgcmdiYSgwLCAwLCAwLCAwLjQpLCByZ2JhKDAsIDAsIDAsIDAuNzUpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSksIHJnYmEoMCwgMCwgMCwgMC45KSwgcmdiYSgwLCAwLCAwLCAwLjkpLCByZ2JhKDAsIDAsIDAsIDAuOSkpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8ge1xcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTtcXG4gIGhlaWdodDogMTAwcHg7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBzY3JvbGxiYXItY29sb3I6IHJnYmEoMTAwLCAxMDgsIDEyNywgMC42NjI3NDUwOTgpIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbzo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDlweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm86Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1pbmZvLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWZpbGUtaW5mbzo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDAsIDEwOCwgMTI3LCAwLjY2Mjc0NTA5OCk7XFxuICBib3JkZXItcmFkaXVzOiAyMHB4O1xcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8gLmZpbGVzLXVpLWZpbGUtY2FyZC1pbmZvLWxheWVyLWhlYWRlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICAvKiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1O1xcbiAgcmlnaHQ6IDU7ICovXFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWxheWVyLWNvbnRhaW5lciAuZmlsZS1jYXJkLWluZm8tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtZmlsZS1pbmZvIC5oZWFkaW5nIHtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBwYWRkaW5nOiAwIDVweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tbGF5ZXItY29udGFpbmVyIC5maWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXIgLmZpbGUtY2FyZC1maWxlLWluZm8gLmxhYmVsIHtcXG4gIHBhZGRpbmc6IDAgNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDM5OTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5jbGlja2FibGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4vKiAuZmlsZXMtdWktZmlsZS1pY29uIHtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgbWluLXdpZHRoOiAxOXB4O1xcbiAgbWluLWhlaWdodDogMTlweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuNjUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgJjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC44NSk7XFxuICB9XFxuICAmLmRhcmstbW9kZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC42NSk7XFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC44NSk7XFxuICAgIH1cXG4gIH1cXG59ICovXCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktZmlsZS1pY29uIHtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgbWluLXdpZHRoOiAxOXB4O1xcbiAgbWluLWhlaWdodDogMTlweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDJweCAycHg7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCAzMywgMzYsIDAuNjUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pY29uOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC44NSk7XFxufVxcbi5maWxlcy11aS1maWxlLWljb24uZGFyay1tb2RlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC42NSk7XFxufVxcbi5maWxlcy11aS1maWxlLWljb24uZGFyay1tb2RlOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU0LCAxNjAsIDE2NiwgMC44NSk7XFxufVwiKTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUge1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMxMjEyMTI7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0wIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDApLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTEge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tMiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0zIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tNSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tNiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjExKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi03IHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5kYXJrLW1vZGUuZWxldmF0aW9uLTgge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMikpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmRhcmstbW9kZS5lbGV2YXRpb24tOSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xMyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xNyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xOCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0xOSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMSB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMiB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yMyB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZGFyay1tb2RlLmVsZXZhdGlvbi0yNCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSk7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTAge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMSB7XFxuICBib3gtc2hhZG93OiAwcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yIHtcXG4gIGJveC1zaGFkb3c6IDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTMge1xcbiAgYm94LXNoYWRvdzogMHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNCB7XFxuICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNSB7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tNiB7XFxuICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTcge1xcbiAgYm94LXNoYWRvdzogMHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi04IHtcXG4gIGJveC1zaGFkb3c6IDBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tOSB7XFxuICBib3gtc2hhZG93OiAwcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEwIHtcXG4gIGJveC1zaGFkb3c6IDBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTExIHtcXG4gIGJveC1zaGFkb3c6IDBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEyIHtcXG4gIGJveC1zaGFkb3c6IDBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTEzIHtcXG4gIGJveC1zaGFkb3c6IDBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE0IHtcXG4gIGJveC1zaGFkb3c6IDBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE1IHtcXG4gIGJveC1zaGFkb3c6IDBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE2IHtcXG4gIGJveC1zaGFkb3c6IDBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0xNyB7XFxuICBib3gtc2hhZG93OiAwcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMTgge1xcbiAgYm94LXNoYWRvdzogMHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTE5IHtcXG4gIGJveC1zaGFkb3c6IDBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yMCB7XFxuICBib3gtc2hhZG93OiAwcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTIxIHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC1tYWluLWNvbnRhaW5lci5lbGV2YXRpb24tMjIge1xcbiAgYm94LXNoYWRvdzogMHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLW1haW4tY29udGFpbmVyLmVsZXZhdGlvbi0yMyB7XFxuICBib3gtc2hhZG93OiAwcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIuZWxldmF0aW9uLTI0IHtcXG4gIGJveC1zaGFkb3c6IDBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcXG59XCIpO1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZS1jYXJkLXJpZ2h0LWxheWVyLWhlYWRlciB7XFxuICBtYXJnaW4tdG9wOiAzcHg7XFxuICBtYXJnaW4tcmlnaHQ6IDNweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgbGVmdDogdW5zZXQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICBnYXA6IDJweDtcXG59XFxuXFxuLmZpbGUtY2FyZC1yaWdodC1sYXllci1mb290ZXIge1xcbiAgbWFyZ2luLWJvdHRvbTogM3B4O1xcbiAgbWFyZ2luLXJpZ2h0OiAzcHg7XFxuICBsZWZ0OiB1bnNldDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIGdhcDogMnB4O1xcbiAgYm90dG9tOiAwO1xcbiAgcmlnaHQ6IDA7XFxufVwiKTtcblxudmFyIEZpbGVDYXJkUmlnaHRBY3Rpb25zID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGRhcmtNb2RlID0gcHJvcHMuZGFya01vZGUsIGRlbGV0ZUljb24gPSBwcm9wcy5kZWxldGVJY29uLCBkb3dubG9hZEljb24gPSBwcm9wcy5kb3dubG9hZEljb24sIGltYWdlSWNvbiA9IHByb3BzLmltYWdlSWNvbiwgaW5mb0ljb24gPSBwcm9wcy5pbmZvSWNvbiwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25Eb3dubG9hZCA9IHByb3BzLm9uRG93bmxvYWQsIG9uT3BlbkluZm8gPSBwcm9wcy5vbk9wZW5JbmZvLCBvblNlZSA9IHByb3BzLm9uU2VlLCBvbldhdGNoID0gcHJvcHMub25XYXRjaCwgdmlkZW9JY29uID0gcHJvcHMudmlkZW9JY29uLCBpc0FjdGl2ZSA9IHByb3BzLmlzQWN0aXZlLCB2aXNpYmxlID0gcHJvcHMudmlzaWJsZTtcbiAgICBpZiAodmlzaWJsZSlcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtcmlnaHQtbGF5ZXItaGVhZGVyXCIgfSwgaXNBY3RpdmUgJiYgZGVsZXRlSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjbGFzc05hbWU6IGRhcmtNb2RlID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCIgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25EZWxldGUsIHNpemU6IFwic21hbGxcIiwgY29sb3JGaWxsOiBcInRyYW5zcGFyZW50XCIgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXJpZ2h0LWxheWVyLWZvb3RlclwiIH0sIGlzQWN0aXZlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIGltYWdlSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChWaXNpYmlsaXR5LCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uU2VlLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIHZpZGVvSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChQbGF5SWNvbiwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbldhdGNoLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIGRvd25sb2FkSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChEb3dubG9hZEZpbGUsIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25Eb3dubG9hZCwgc2l6ZTogXCJzbWFsbFwiIH0pKSxcbiAgICAgICAgICAgICAgICBpbmZvSWNvbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmZvRGlzbmV5LCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgb25DbGljazogb25PcGVuSW5mbywgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIHNpemU6IFwibWljcm9cIiB9KSkpKSkpKTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG52YXIgRmlsZUNhcmRJbmZvTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgXG4gICAgLy92YWxpZCxcbiAgICBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIG9uQ2xvc2VJbmZvID0gcHJvcHMub25DbG9zZUluZm8sIFxuICAgIC8vIHVwbG9hZFN0YXR1cyxcbiAgICBsb2NhbE5hbWUgPSBwcm9wcy5sb2NhbE5hbWUsIHNpemVGb3JtYXR0ZWQgPSBwcm9wcy5zaXplRm9ybWF0dGVkLCBsb2NhbFR5cGUgPSBwcm9wcy5sb2NhbFR5cGU7XG4gICAgdmFyIEZpbGVJdGVtTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pO1xuICAgIHZhciBfYSA9IEZpbGVJdGVtTG9jYWxpemVyLmZ1bGxJbmZvTGF5ZXIsIG5hbWVMYWJlbCA9IF9hLm5hbWUsIHNpemVMYWJlbCA9IF9hLnNpemUsIHR5cGVMYWJlbCA9IF9hLnR5cGU7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1maWxlLWluZm9cIiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENhbmNlbCwgeyBzdHlsZTogeyBtYXJnaW46IDAsIHJpZ2h0OiA1LCB0b3A6IDAsIHBvc2l0aW9uOiBcImFic29sdXRlXCIgfSwgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjgpXCIsIG9uQ2xpY2s6IG9uQ2xvc2VJbmZvLCBjb2xvckZpbGw6IFwiYmxhY2tcIiB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgbmFtZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIGxvY2FsTmFtZSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiaGVhZGluZ1wiIH0sIHNpemVMYWJlbCksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibGFiZWxcIiB9LCBzaXplRm9ybWF0dGVkKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgdHlwZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIGxvY2FsVHlwZSkpKTtcbn07XG5cbnZhciBBYm9ydGVkU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9EaXN0dXJiLCB7IGNvbG9yOiBcIiNmNDQzMzZcIiwgc2l6ZTogc2l6ZSB8fCA2NSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCxcbiAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIuYWJvcnRlZCkpKTtcbn07XG5cbnZhciBFbXB0eVN0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBoZWlnaHQgPSBwcm9wcy5oZWlnaHQ7XG4gICAgdmFyIGZpbmFsSGVpZ2h0ID0gIWhlaWdodFxuICAgICAgICA/IFwiMTMycHhcIlxuICAgICAgICA6IHR5cGVvZiBoZWlnaHQgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgID8gXCJcIi5jb25jYXQoaGVpZ2h0LCBcInB4XCIpXG4gICAgICAgICAgICA6IGhlaWdodDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogeyB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogZmluYWxIZWlnaHQgfSB9KSkpO1xufTtcblxudmFyIEVycm9yU3RhdHVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc2l6ZSA9IHByb3BzLnNpemU7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xlYXIsIHsgY29sb3I6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjQpXCIsIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInJnYmEoMjQ0LCA2NywgNTQsIDAuOClcIixcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiNTAlXCIsXG4gICAgICAgICAgICB9LCBzaXplOiBzaXplIHx8IDY1IH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLFxuICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5lcnJvcikpKTtcbn07XG5cbnZhciBQcmVwYXJpbmdTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJbmZpbml0ZUxvYWRlciwgeyBvbkNsaWNrOiBvbkNhbmNlbCwgc2l6ZTogc2l6ZSB8fCA2NSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIucHJlcGFyaW5nKSkpO1xufTtcblxudmFyIFN1Y2Nlc3NTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGVja0NpcmNsZSwgeyBjb2xvcjogXCIjNGNhZjUwXCIsIHNpemU6IHNpemUgfHwgNjUgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsXG4gICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnN1Y2Nlc3MpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCJ0ZXh0LmZpbGVzLXVpLXRleHQtZHluYW1pYy1sb2FkZXIge1xcbiAgdGV4dC1hbmNob3I6IG1pZGRsZTtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbiAgZmlsbDogYWxpY2VibHVlO1xcbn1cIik7XG5cbnZhciBEeW5hbWljTG9hZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBjb2xvciA9IHByb3BzLmNvbG9yLCBcbiAgICAvL2NvbG9yRmlsbCxcbiAgICAvL29uQ2xpY2ssXG4gICAgc3R5bGUgPSBwcm9wcy5zdHlsZSwgXG4gICAgLy9jbGFzc05hbWUsXG4gICAgcGVyY2VudGFnZSA9IHByb3BzLnBlcmNlbnRhZ2UsIGhpZGVQZXJuY2VudGFnZSA9IHByb3BzLmhpZGVQZXJuY2VudGFnZSwgcmFkaXVzID0gcHJvcHMucmFkaXVzLCB4ID0gcHJvcHMueCwgeSA9IHByb3BzLnksIHdpZHRoID0gcHJvcHMud2lkdGgsIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrO1xuICAgIC8vY29uc29sZS50YWJsZShwcm9wcyk7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwicGVyY2VudGFnZVwiLCBwZXJjZW50YWdlKTtcbiAgICB2YXIgZmluYWxSYWRpdXMgPSByYWRpdXMgfHwgMjg7XG4gICAgdmFyIGZpbmFsWCA9IHggfHwgMzA7XG4gICAgdmFyIGZpbmFsWSA9IHkgfHwgMzA7XG4gICAgdmFyIGZpbmFsU2l6ZSA9IHBhcnNlU2l6ZShzaXplKTtcbiAgICB2YXIgZmluYWxTdHlsZSA9IHN0eWxlID8gc3R5bGUgOiB7fTtcbiAgICB2YXIgY2lyY2xlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGZ1bmN0aW9uIHNldFByb2dyZXNzKHBlcmNlbnQsIG15Q2lyY2xlLCBjaXJjdW1mZXJlbmNlKSB7XG4gICAgICAgIG15Q2lyY2xlLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBcIlwiLmNvbmNhdChjaXJjdW1mZXJlbmNlICogKDEgLSBwZXJjZW50IC8gMTAwKSk7XG4gICAgICAgIC8vbXlDaXJjbGUuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IGAwYDtcbiAgICAgICAgLyogbGV0IHBjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGN0XCIpO1xuICAgICAgICBwY3QuaW5uZXJIVE1MID0gcGVyY2VudC50b0ZpeGVkKDApICsgXCIlXCI7ICovXG4gICAgfVxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBteUNpcmNsZSA9IGNpcmNsZVJlZi5jdXJyZW50O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwicGVyY2VudGFnZSB1c2VFZmZlY3RcIiwgcGVyY2VudGFnZSk7XG4gICAgICAgIGlmIChteUNpcmNsZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgbXlDaXJjbGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgcGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogbXlDaXJjbGUuci5iYXNlVmFsLnZhbHVlO1xuICAgICAgICAgICAgbXlDaXJjbGUuc3R5bGUuc3Ryb2tlRGFzaGFycmF5ID0gXCJcIi5jb25jYXQoY2lyY3VtZmVyZW5jZSwgXCIgMTAwMFwiKTtcbiAgICAgICAgICAgIHNldFByb2dyZXNzKHBlcmNlbnRhZ2UgPj0gMTAwID8gMTAwIDogcGVyY2VudGFnZSwgbXlDaXJjbGUsIGNpcmN1bWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgfSwgW3BlcmNlbnRhZ2VdKTtcbiAgICBpZiAocGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTG9hZGVyQ29udGFpbmVyLCB7IHNpemU6IHNpemUgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCB7IGNsYXNzTmFtZTogXCJkdWlfc3ZnX2NpcmNsZV9sb2FkZXJcIiwgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgeG1sbnNYbGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsIHdpZHRoOiBcIlwiLmNvbmNhdChmaW5hbFNpemUsIFwicHhcIiksIGhlaWdodDogXCJcIi5jb25jYXQoZmluYWxTaXplLCBcInB4XCIpLCBzdHlsZTogZmluYWxTdHlsZSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiY2lyY2xlXCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IFwicm90YXRlKC05MGRlZylcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzdHJva2U6IGNvbG9yIHx8IFwiIzE0ZmYwMFwiLCBjeDogXCJcIi5jb25jYXQoZmluYWxYKSwgY3k6IFwiXCIuY29uY2F0KGZpbmFsWSksIHI6IFwiXCIuY29uY2F0KGZpbmFsUmFkaXVzKSwgc3Ryb2tlV2lkdGg6IFwiXCIuY29uY2F0KHdpZHRoIHx8IDgsIFwicHhcIiksIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jbGFzc05hbWU9XCJjaXJjbGVfbG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcImNpcmNsZVwiLCByZWY6IGNpcmNsZVJlZiwgZmlsbDogXCJub25lXCIgfSksXG4gICAgICAgICAgICAgICAgICAgICFoaWRlUGVybmNlbnRhZ2UgJiYgcGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dFwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS10ZXh0LWR5bmFtaWMtbG9hZGVyXCIsIHg6IFwiXCIuY29uY2F0KGZpbmFsWCksIHk6IFwiXCIuY29uY2F0KChmaW5hbFggKiA3KSAvIDYpIH0sIFwiXCIuY29uY2F0KHBlcmNlbnRhZ2UudG9GaXhlZCgwKSwgXCIgJVwiKSkpKSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpXCIsIHNpemU6IDQ1LCBvbkNsaWNrOiBvbkNsaWNrIH0pKSkpKSk7XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbiAgICB9XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIubGRzLWNvbG9yYmFyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG59XFxuLmxkcy1jb2xvcmJhciAuZmlsZXMtdWktdGV4dC1kZWZhdWx0LWxvYWRlciB7XFxuICBmb250LXNpemU6IDEuNXJlbTtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xcbn1cIik7XG5cbnZhciBVcGxvYWRpbmdTdGF0dXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgbG9jYWxpemF0aW9uID0gcHJvcHMubG9jYWxpemF0aW9uLCBzaXplID0gcHJvcHMuc2l6ZSwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3M7XG4gICAgdmFyIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyID0gRmlsZUl0ZW1Mb2NhbGl6ZXJTZWxlY3Rvcihsb2NhbGl6YXRpb24pLnN0YXR1cztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIHByb2dyZXNzICE9PSB1bmRlZmluZWQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChEeW5hbWljTG9hZGVyLCB7IHNpemU6IDcwLCB4OiAzNSwgeTogMzUsIHJhZGl1czogMzIsIHBlcmNlbnRhZ2U6IHByb2dyZXNzLCB3aWR0aDogNiwgaGlkZVBlcm5jZW50YWdlOiBwcm9ncmVzcyA9PT0gdW5kZWZpbmVkIHx8IG9uQWJvcnQgIT09IHVuZGVmaW5lZCwgb25DbGljazogb25BYm9ydCB9KSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbmZpbml0ZUxvYWRlciwgeyBvbkNsaWNrOiBvbkFib3J0LCBzaXplOiBzaXplIHx8IDcwIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCxcbiAgICAgICAgICAgIFwiIFwiLFxuICAgICAgICAgICAgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIudXBsb2FkaW5nKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXIge1xcbiAgd2lkdGg6IDEwMHB4O1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLWNhcmQtdXBsb2FkLWxheWVyIC5lbGV2YXRpb24tbGlzdC1jYXJkIHtcXG4gIHRyYW5zaXRpb246IGFsbCAxLjVzIGVhc2U7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0LWNhcmQgLmVsZXZhdGlvbi1pdGVtLWNhcmQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMHB4O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1jYXJkLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QtY2FyZCAuZWxldmF0aW9uLWl0ZW0tY2FyZCBzcGFuIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMjsgLyogbnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgKi9cXG4gIGxpbmUtY2xhbXA6IDI7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbn1cIik7XG5cbnZhciBGaWxlQ2FyZFVwbG9hZExheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3MsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbjtcbiAgICB2YXIgZWxldmF0aW9uQ29udGFpbmVyUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBsaXN0Q29udGFpbmVyU3RvcnlSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoW3VuZGVmaW5lZF0pLCBzdGF0dXNIaXN0b3J5ID0gX2FbMF0sIHNldFN0YXR1c0hpc3RvcnkgPSBfYVsxXTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRTdGF0dXNIaXN0b3J5KGZ1bmN0aW9uIChzdGF0dXNIaXN0b3J5KSB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzSGlzdG9yeVtzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDFdID09PSBcInByZXBhcmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdXBsb2FkU3RhdHVzID09PSBcInVwbG9hZGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRlbXBTdGF0dXNIaXN0b3J5ID0gX19zcHJlYWRBcnJheSQxKFtdLCBzdGF0dXNIaXN0b3J5LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0ZW1wU3RhdHVzSGlzdG9yeVtzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDFdID0gdXBsb2FkU3RhdHVzO1xuICAgICAgICAgICAgICAgIC8vcmVwbGFjZVxuICAgICAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5JDEoW10sIHRlbXBTdGF0dXNIaXN0b3J5LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5JDEoX19zcHJlYWRBcnJheSQxKFtdLCBzdGF0dXNIaXN0b3J5LCB0cnVlKSwgW3VwbG9hZFN0YXR1c10sIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfSwgW3VwbG9hZFN0YXR1c10pO1xuICAgIHZhciBlbGV2YXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudEVsZXZhdGlvbkNvbnRhaW5lciA9IGVsZXZhdGlvbkNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgY3VycmVudEVsZXZhdGlvbkxpc3QgPSBsaXN0Q29udGFpbmVyU3RvcnlSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGN1cnJlbnRFbGV2YXRpb25Db250YWluZXIgPT09IG51bGwgfHwgY3VycmVudEVsZXZhdGlvbkxpc3QgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGN1cnJlbnRFbGV2YXRpb25MaXN0LnN0eWxlLnRvcCA9XG4gICAgICAgICAgICAwIC0gKHN0YXR1c0hpc3RvcnkubGVuZ3RoIC0gMSkgKiAxMDAgKyBcInB4XCI7XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoc3RhdHVzSGlzdG9yeS5sZW5ndGggPiAxKVxuICAgICAgICAgICAgZWxldmF0ZSgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbc3RhdHVzSGlzdG9yeS5sZW5ndGhdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWxheWVyLWNvbnRhaW5lclwiLCByZWY6IGVsZXZhdGlvbkNvbnRhaW5lclJlZiB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1saXN0LWNhcmRcIiwgcmVmOiBsaXN0Q29udGFpbmVyU3RvcnlSZWYgfSwgc3RhdHVzSGlzdG9yeS5tYXAoZnVuY3Rpb24gKHN0YXR1cywgaW5kZXgpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInByZXBhcmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQcmVwYXJpbmdTdGF0dXMsIHsgb25DYW5jZWw6IG9uQ2FuY2VsLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1cGxvYWRpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVXBsb2FkaW5nU3RhdHVzLCB7IG9uQWJvcnQ6IG9uQWJvcnQsIHByb2dyZXNzOiBwcm9ncmVzcywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRXJyb3JTdGF0dXMsIHsgc2l6ZTogNjAsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtLWNhcmRcIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3VjY2Vzc1N0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJhYm9ydGVkXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbS1jYXJkXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFib3J0ZWRTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW0tY2FyZFwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFbXB0eVN0YXR1cywgbnVsbCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpKSk7XG59O1xuXG5fX18kaW5zZXJ0U3R5bGUoXCIuZmlsZXMtdWktdG9vbHRpcCB7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5maWxlcy11aS10b29sdGlwOmhvdmVyIHtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5maWxlcy11aS10b29sdGlwOmhvdmVyIC5maWxlcy11aS10b29sdGlwdGV4dCB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgb3BhY2l0eTogMTtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5maWxlcy11aS10b29sdGlwLmNhcmQ6aG92ZXIge1xcbiAgei1pbmRleDogMjtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZDpob3ZlciAuZmlsZXMtdWktdG9vbHRpcHRleHQge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxuICB6LWluZGV4OiAyO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZm9udC1mYW1pbHk6IFxcXCJQb3BwaW5zXFxcIiwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIHdpZHRoOiAyMDBweDtcXG4gIGNvbG9yOiAjZmZmO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDI7XFxuICBsZWZ0OiBjYWxjKDUwJSAtIDEwMHB4KTtcXG4gIGxlZnQ6IDA7XFxuICBtYXJnaW4tdG9wOiA1cHg7XFxuICB0b3A6IDEwMCU7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcztcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQubm90LXZhbGlkLWVycm9yIHtcXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICNjNjI4MjgsICNkMzJmMmYpO1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dC5ub3QtdmFsaWQtZXJyb3I6OmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2QzMmYyZiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2VzcyB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjMWI1ZTIwLCAjMmU3ZDMyKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAuY2FyZCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2Vzczo6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjMmU3ZDMyIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcC5jYXJkIC5maWxlcy11aS10b29sdGlwdGV4dDo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDEwMCU7XFxuICBsZWZ0OiA1MCU7XFxuICBtYXJnaW4tbGVmdDogLTVweDtcXG4gIGJvcmRlci13aWR0aDogNXB4O1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0IHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgd2lkdGg6IDEzMnB4O1xcbiAgY29sb3I6ICNmZmY7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBwYWRkaW5nOiAycHggMnB4O1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMjtcXG4gIGxlZnQ6IDA7XFxuICBvcGFjaXR5OiAwO1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcztcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0Lm5vdC12YWxpZC1lcnJvciB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjYzYyODI4LCAjZDMyZjJmKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0Lm5vdC12YWxpZC1lcnJvcjo6YWZ0ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZDMyZjJmIHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktdG9vbHRpcCAuZmlsZXMtdWktdG9vbHRpcHRleHQuc3VjY2VzcyB7XFxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAjMWI1ZTIwLCAjMmU3ZDMyKTtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0LnN1Y2Nlc3M6OmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzJlN2QzMiB0cmFuc3BhcmVudDtcXG59XFxuLmZpbGVzLXVpLXRvb2x0aXAgLmZpbGVzLXVpLXRvb2x0aXB0ZXh0OjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJvdHRvbTogMTAwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIG1hcmdpbi1sZWZ0OiAtNXB4O1xcbiAgYm9yZGVyLXdpZHRoOiA1cHg7XFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbn1cIik7XG5cbnZhciBUb29sdGlwID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIFxuICAgIC8vbWVzc2FnZSxcbiAgICAvL3N0eWxlLFxuICAgIC8vY2hpbGRyZW4sXG4gICAgLy9jb2xvcixcbiAgICB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIHZhbGlkID0gcHJvcHMudmFsaWQsIGVycm9ycyA9IHByb3BzLmVycm9ycywgXG4gICAgLy9jbGFzc05hbWUsXG4gICAgdXBsb2FkTWVzc2FnZSA9IHByb3BzLnVwbG9hZE1lc3NhZ2UsIG9wZW4gPSBwcm9wcy5vcGVuO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIHN0YXR1c0NsYXNzTmFtZSA9IF9hWzBdLCBzZXRTYXR1c0NsYXNzTmFtZSA9IF9hWzFdO1xuICAgIHZhciBfYiA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCksIG1lc3NhZ2UgPSBfYlswXSwgc2V0TWVzc2FnZSA9IF9iWzFdO1xuICAgIHZhciBoYW5kbGVDaGFuZ2VTdGF0dXMgPSBmdW5jdGlvbiAodXBsb2FkU3RhdHVzLCB2YWxpZCkge1xuICAgICAgICAvL2hpZ2hlciBwcmlvcml0eVxuICAgICAgICBpZiAodXBsb2FkU3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldE1lc3NhZ2UodXBsb2FkTWVzc2FnZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkU3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgICAgIHNldFNhdHVzQ2xhc3NOYW1lKFwic3VjY2Vzc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNhdHVzQ2xhc3NOYW1lKFwibm90LXZhbGlkLWVycm9yXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHZhbGlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNhdHVzQ2xhc3NOYW1lKFwibm90LXZhbGlkLWVycm9yXCIpO1xuICAgICAgICAgICAgICAgICAgICBzZXRNZXNzYWdlKGVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBlcnJvcnMucmVkdWNlKGZ1bmN0aW9uIChhY3VtLCBjdXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN1bSArPSBcIlwiLmNvbmNhdChjdXJyLCBcIi4gXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3VtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBoYW5kbGVDaGFuZ2VTdGF0dXModXBsb2FkU3RhdHVzLCB2YWxpZCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIH0sIFt1cGxvYWRTdGF0dXMsIHZhbGlkXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCBvcGVuICYmIG1lc3NhZ2UgJiYgc3RhdHVzQ2xhc3NOYW1lICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS10b29sdGlwdGV4dCBcIi5jb25jYXQoc3RhdHVzQ2xhc3NOYW1lKSB9LCBtZXNzYWdlKSkpKTtcbn07XG5cbnZhciBEb3dubG9hZEhpZGRlbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBkb3dubG9hZFVybCA9IHByb3BzLmRvd25sb2FkVXJsLCBhbmNob3JSZWYgPSBwcm9wcy5hbmNob3JSZWYsIGZpbGVOYW1lID0gcHJvcHMuZmlsZU5hbWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZ0KSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKGRvd25sb2FkVXJsKVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgcmVmOiBhbmNob3JSZWYsIHRhcmdldDogXCJfYmxhbmtcIiwgaHJlZjogZG93bmxvYWRVcmwsIGRvd25sb2FkOiBmaWxlTmFtZSwgaGlkZGVuOiB0cnVlLCByZWw6IFwibm9vcGVuZXIgbm9yZWZlcnJlclwiLCBvbkNsaWNrOiBoYW5kbGVDbGljayB9LCBcImRvd25sb2FkX2ZpbGVcIikpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsKTtcbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIkBpbXBvcnQgdXJsKGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Qb3BwaW5zOjMwMCw0MDAsNTAwLDYwMCw3MDAsOTAwKTtcXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIge1xcbiAgd2lkdGg6IDEzMnB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiUG9wcGluc1xcXCIsIHNhbnMtc2VyaWY7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciB7XFxuICB3aWR0aDogMTMycHg7XFxuICBoZWlnaHQ6IDEzMnB4O1xcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXIgaW1nIHtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbWFnZS1sYXllci5ibHVyIGltZyB7XFxuICBmaWx0ZXI6IGJsdXIoNHB4KTtcXG4gIHdpZHRoOiAyMDAlO1xcbiAgaGVpZ2h0OiAyMDAlO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIC5maWxlLW1vc2FpYy1tYWluLWxheWVyLWhlYWRlciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciAuZmlsZS1tb3NhaWMtbWFpbi1sYXllci1mb290ZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1sYXllciAuZmlsZS1tb3NhaWMtbWFpbi1sYXllci1mb290ZXIgLmZpbGUtbW9zYWljLWZvb3Rlci1yaWdodCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LWdyb3c6IDE7XFxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWxheWVyIC5maWxlLW1vc2FpYy1tYWluLWxheWVyLWZvb3RlciAuZmlsZS1tb3NhaWMtZm9vdGVyLWxlZnQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgZmxleC1ncm93OiAxO1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XFxuICBmb250LWZhbWlseTogXFxcIlBvcHBpbnNcXFwiLCBzYW5zLXNlcmlmO1xcbiAgd2lkdGg6IGluaGVyaXQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgZm9udC1zaXplOiAwLjhyZW07XFxuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlIDBzO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBjb2xvcjogd2hpdGU7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA5cHg7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMTA4LCAxMjcsIDAuNjYyNzQ1MDk4KTtcXG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XFxuICBib3JkZXI6IHRyYW5zcGFyZW50O1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWljb24tbGF5ZXItY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyLWhlYWRlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1pY29uLWxheWVyLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaW5mby1sYXllciAuaGVhZGluZyB7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgcGFkZGluZzogMCA1cHg7XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy1tYWluLWNvbnRhaW5lciAuZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXIgLmxhYmVsIHtcXG4gIHBhZGRpbmc6IDAgNXB4O1xcbiAgZm9udC13ZWlnaHQ6IDM5OTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyIC5maWxlcy11aS1maWxlLW1vc2FpYy1maWxlLW5hbWUge1xcbiAgbWFyZ2luLXRvcDogMXB4O1xcbiAgaGVpZ2h0OiAzMXB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBjb2xvcjogYmxhY2s7XFxuICBmb250LXNpemU6IDAuOTVlbTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBsaW5lLWhlaWdodDogMTVweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBsZXR0ZXItc3BhY2luZzogMC4wN3JlbTtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMjtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAvKiAgZGlzcGxheTogZmxleDtcXG4gICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyAqL1xcbn1cXG4uZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgLmZpbGVzLXVpLWZpbGUtbW9zYWljLWZpbGUtbmFtZS5kYXJrLW1vZGUge1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tY29udGFpbmVyLmNsaWNrYWJsZSB7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi8qIC5maWxlcy11aS1maWxlLWljb24ge1xcbiAgZm9udC1zaXplOiAwLjdyZW07XFxuICBtaW4td2lkdGg6IDE5cHg7XFxuICBtaW4taGVpZ2h0OiAxOXB4O1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMnB4IDJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzIsIDMzLCAzNiwgMC42NSk7XFxuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XFxuICAmOmhvdmVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjg1KTtcXG4gIH1cXG4gICYuZGFyay1tb2RlIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjY1KTtcXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTQsIDE2MCwgMTY2LCAwLjg1KTtcXG4gICAgfVxcbiAgfVxcbn1cXG4gKi9cIik7XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1sYXllci1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cIik7XG5cbnZhciBMYXllckNvbnRhaW5lciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gYWRkQ2xhc3NOYW1lKGNsYXNzTmFtZSB8fCBcIlwiLCBcImZpbGVzLXVpLWxheWVyLWNvbnRhaW5lclwiKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUgfSwgY2hpbGRyZW4pKTtcbn07XG5cbnZhciBGaWxlTW9zYWljTmFtZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBmaWxlTmFtZSA9IHByb3BzLmZpbGVOYW1lO1xuICAgIGlmIChmaWxlTmFtZSlcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGZpbGVOYW1lKTtcbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xuICAgIH1cbn07XG5cbl9fXyRpbnNlcnRTdHlsZShcIi5maWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXIge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjUpO1xcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcbi5maWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXIgLmVsZXZhdGlvbi1saXN0IHtcXG4gIHRyYW5zaXRpb246IGFsbCAxLjVzIGVhc2U7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QgLmVsZXZhdGlvbi1pdGVtIHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMzJweDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtbW9zYWljLXVwbG9hZC1sYXllciAuZWxldmF0aW9uLWxpc3QgLmVsZXZhdGlvbi1pdGVtIHNwYW4ge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyOyAvKiBudW1iZXIgb2YgbGluZXMgdG8gc2hvdyAqL1xcbiAgbGluZS1jbGFtcDogMjtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxufVwiKTtcblxudmFyIEZpbGVNb3NhaWNVcGxvYWRMYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIG9uQ2FuY2VsID0gcHJvcHMub25DYW5jZWwsIG9uQWJvcnQgPSBwcm9wcy5vbkFib3J0LCBwcm9ncmVzcyA9IHByb3BzLnByb2dyZXNzLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb247XG4gICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNb3NhaWNVcGxvYWRMYXllciBDSEFOR0UgcHJvZ3Jlc3NcIiwgcHJvZ3Jlc3MsIHVwbG9hZFN0YXR1cyk7XG4gICAgdmFyIGVsZXZhdGlvbkNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgbGlzdENvbnRhaW5lclN0b3J5UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKFt1bmRlZmluZWRdKSwgc3RhdHVzSGlzdG9yeSA9IF9hWzBdLCBzZXRTdGF0dXNIaXN0b3J5ID0gX2FbMV07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0U3RhdHVzSGlzdG9yeShmdW5jdGlvbiAoc3RhdHVzSGlzdG9yeSkge1xuICAgICAgICAgICAgaWYgKHN0YXR1c0hpc3Rvcnlbc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxXSA9PT0gXCJwcmVwYXJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHVwbG9hZFN0YXR1cyA9PT0gXCJ1cGxvYWRpbmdcIikge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wU3RhdHVzSGlzdG9yeSA9IF9fc3ByZWFkQXJyYXkkMShbXSwgc3RhdHVzSGlzdG9yeSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGVtcFN0YXR1c0hpc3Rvcnlbc3RhdHVzSGlzdG9yeS5sZW5ndGggLSAxXSA9IHVwbG9hZFN0YXR1cztcbiAgICAgICAgICAgICAgICAvL3JlcGxhY2VcbiAgICAgICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheSQxKFtdLCB0ZW1wU3RhdHVzSGlzdG9yeSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheSQxKF9fc3ByZWFkQXJyYXkkMShbXSwgc3RhdHVzSGlzdG9yeSwgdHJ1ZSksIFt1cGxvYWRTdGF0dXNdLCBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH0sIFt1cGxvYWRTdGF0dXNdKTtcbiAgICB2YXIgZWxldmF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGV2YXRpb25Db250YWluZXIgPSBlbGV2YXRpb25Db250YWluZXJSZWYuY3VycmVudDtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGV2YXRpb25MaXN0ID0gbGlzdENvbnRhaW5lclN0b3J5UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxldmF0aW9uQ29udGFpbmVyID09PSBudWxsIHx8IGN1cnJlbnRFbGV2YXRpb25MaXN0ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdXJyZW50RWxldmF0aW9uTGlzdC5zdHlsZS50b3AgPVxuICAgICAgICAgICAgMCAtIChzdGF0dXNIaXN0b3J5Lmxlbmd0aCAtIDEpICogMTMyICsgXCJweFwiO1xuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHN0YXR1c0hpc3RvcnkubGVuZ3RoID4gMSlcbiAgICAgICAgICAgIGVsZXZhdGUoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW3N0YXR1c0hpc3RvcnkubGVuZ3RoXSk7XG4gICAgLy9kZWZhdWx0IHBoYXNlXG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1sYXllci1jb250YWluZXJcIiwgcmVmOiBlbGV2YXRpb25Db250YWluZXJSZWYgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24tbGlzdFwiLCByZWY6IGxpc3RDb250YWluZXJTdG9yeVJlZiB9LCBzdGF0dXNIaXN0b3J5Lm1hcChmdW5jdGlvbiAoc3RhdHVzLCBpbmRleCkge1xuICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwicHJlcGFyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQcmVwYXJpbmdTdGF0dXMsIHsgb25DYW5jZWw6IG9uQ2FuY2VsLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ1cGxvYWRpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFVwbG9hZGluZ1N0YXR1cywgeyBvbkFib3J0OiBvbkFib3J0LCBwcm9ncmVzczogcHJvZ3Jlc3MsIGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChFcnJvclN0YXR1cywgeyBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzdWNjZXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJlbGV2YXRpb24taXRlbVwiLCBrZXk6IGluZGV4ICsgMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdWNjZXNzU3RhdHVzLCB7IGxvY2FsaXphdGlvbjogbG9jYWxpemF0aW9uIH0pKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImFib3J0ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImVsZXZhdGlvbi1pdGVtXCIsIGtleTogaW5kZXggKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEFib3J0ZWRTdGF0dXMsIHsgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZWxldmF0aW9uLWl0ZW1cIiwga2V5OiBpbmRleCArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1wdHlTdGF0dXMsIG51bGwpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKSkpO1xufTtcblxudmFyIEZpbGVNb3NhaWNJbWFnZUxheWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgLy8vL2NvbnNvbGUubG9nKFwiRmlsZU1vc2FpY0ltYWdlTGF5ZXJcIiwgcHJvcHMpO1xuICAgIHZhciBpbWFnZVNvdXJjZSA9IHByb3BzLmltYWdlU291cmNlLCB1cmwgPSBwcm9wcy51cmwsIGZpbGVOYW1lID0gcHJvcHMuZmlsZU5hbWUsIGNhcmQgPSBwcm9wcy5jYXJkLCBpc0JsdXIgPSBwcm9wcy5pc0JsdXIsIHNtYXJ0SW1nRml0ID0gcHJvcHMuc21hcnRJbWdGaXQ7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgbG9jYWxTb3VyY2UgPSBfYVswXSwgc2V0TG9jYWxTb3VyY2UgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGVycm9yID0gX2JbMF0sIHNldEVycm9yID0gX2JbMV07XG4gICAgLy9hc3NpZ24gdG8gbG9jYWxTb3VyY2UgdGhlIGltYWdlU291cmNlIG9yIHRoZSB1cmwgb2YgdGhlIGlsZSB0eXBlXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0TG9jYWxTb3VyY2UoaW1hZ2VTb3VyY2UgfHwgdXJsKTtcbiAgICB9LCBbaW1hZ2VTb3VyY2UsIHVybF0pO1xuICAgIC8qKlxuICAgICAqIFdoZW4gYW4gZXJyb3Igb2NjdXJzIHdoZW4gc2V0dGluZyB0aGUgc291cmNlLCB0aGUgdXJsIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLlxuICAgICAqIFRoZSB1cmwgYWx3YXlzIGlzIGEgdmFsaWQgaW1hZ2UgdXJsXG4gICAgICovXG4gICAgdmFyIGhhbmRsZUVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICAgICAgc2V0TG9jYWxTb3VyY2UodXJsKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZpbGVNb3NhaWNJbWFnZUxheWVyIGVycm9yXCIsIHVybCk7XG4gICAgfTtcbiAgICAvL0lmIGJsdXIgaXMgdHJ1ZVxuICAgIGlmIChpc0JsdXIpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAhY2FyZCAmJiAhZXJyb3IgJiYgaW1hZ2VTb3VyY2UgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW1hZ2VQcmV2aWV3LCB7IHNyYzogbG9jYWxTb3VyY2UsIGFsdDogXCJibHVyIFwiLmNvbmNhdChmaWxlTmFtZSksIHNtYXJ0SW1nRml0OiBmYWxzZSB9KSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlUHJldmlldywgeyBvbkVycm9yOiBoYW5kbGVFcnJvciwgc3JjOiBsb2NhbFNvdXJjZSwgc3R5bGU6IHsgYm9yZGVyUmFkaXVzOiBcIjBweFwiIH0sIGFsdDogXCJwcmV2aWV3IFwiLmNvbmNhdChmaWxlTmFtZSksIHNtYXJ0SW1nRml0OiBzbWFydEltZ0ZpdCB9KSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIHtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgcGFkZGluZzogMC41cHg7XFxuICBmb250LXdlaWdodDogNDAwO1xcbn1cXG4uZmlsZXMtdWktZmlsZS1pdGVtLXN0YXR1cy1jb250YWluZXIuZmlsZS1zdGF0dXMtZXJyb3Ige1xcbiAgY29sb3I6ICNmNDQzMzY7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1vayB7XFxuICBjb2xvcjogIzVjN2ExZjtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGNvbG9yOiAjOGI2YjEwO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcucGVyY2VudGFnZSB7XFxuICBwYWRkaW5nOiA3cHggNHB4IDJweCA1cHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC5hYm9ydC1idXR0b24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IC0ycHg7XFxuICB0b3A6IC0ycHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC51cGxvYWRpbmctdGV4dC51cCB7XFxuICBtYXJnaW4tYm90dG9tOiAtMjJweDtcXG59XFxuLmZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyLmZpbGUtc3RhdHVzLWxvYWRpbmcgLnVwbG9hZGluZy10ZXh0LmRvd24ge1xcbiAgbWFyZ2luLXRvcDogLTIwcHg7XFxufVxcbi5maWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lci5maWxlLXN0YXR1cy1sb2FkaW5nIC51cGxvYWRpbmctdGV4dCBwLnBlcmNlbnRhZ2Uge1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XCIpO1xuXG52YXIgRmlsZU1vc2FpY1N0YXR1cyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB2YWxpZCA9IHByb3BzLnZhbGlkLCB1cGxvYWRTdGF0dXMgPSBwcm9wcy51cGxvYWRTdGF0dXMsIGxvY2FsaXphdGlvbiA9IHByb3BzLmxvY2FsaXphdGlvbiwgc3R5bGUgPSBwcm9wcy5zdHlsZTtcbiAgICB2YXIgRmlsZUl0ZW1TdGF0dXNMb2NhbGl6ZXIgPSBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yKGxvY2FsaXphdGlvbikuc3RhdHVzO1xuICAgIGlmICh1cGxvYWRTdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciBmaWxlLXN0YXR1cy1va1wiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xvdWREb25lLCB7IGNvbG9yOiBcIiM0Y2FmNTBcIiwgc2l6ZTogXCJzbWFsbFwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgIEZpbGVJdGVtU3RhdHVzTG9jYWxpemVyLnN1Y2Nlc3MpKTtcbiAgICB9XG4gICAgaWYgKHVwbG9hZFN0YXR1cyA9PT0gXCJlcnJvclwiIHx8IHVwbG9hZFN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIGZpbGUtc3RhdHVzLWVycm9yXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChVcGxvYWRFcnJvciwgeyBjb2xvcjogXCIjZjQ0MzM2XCIsIHNpemU6IFwic2VtaS1tZWRpdW1cIiwgY2xhc3NOYW1lOiBcInN0YXR1cy1pY29uXCIgfSksXG4gICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5lcnJvcikpO1xuICAgIH1cbiAgICBpZiAodmFsaWQgIT09IHVuZGVmaW5lZCAmJiB2YWxpZCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWl0ZW0tc3RhdHVzLWNvbnRhaW5lciBmaWxlLXN0YXR1cy1va1wiLCBzdHlsZTogc3R5bGUgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrQ2lyY2xlLCB7IGNvbG9yOiBcIiM0Y2FmNTBcIiwgc2l6ZTogXCJzbWFsbFwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci52YWxpZCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtaXRlbS1zdGF0dXMtY29udGFpbmVyIGZpbGUtc3RhdHVzLWVycm9yXCIsIHN0eWxlOiBzdHlsZSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9EaXN0dXJiLCB7IGNvbG9yOiBcIiNmNDQzMzZcIiwgc2l6ZTogXCJzbWFsbFwiLCBjbGFzc05hbWU6IFwic3RhdHVzLWljb25cIiB9KSxcbiAgICAgICAgICAgICAgICBGaWxlSXRlbVN0YXR1c0xvY2FsaXplci5kZW5pZWQpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCk7XG59O1xuXG52YXIgRmlsZU1vc2FpY0luZm9MYXllciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB2YWxpZCA9IHByb3BzLnZhbGlkLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIG9uQ2xvc2VJbmZvID0gcHJvcHMub25DbG9zZUluZm8sIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgbG9jYWxOYW1lID0gcHJvcHMubG9jYWxOYW1lLCBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZCwgbG9jYWxUeXBlID0gcHJvcHMubG9jYWxUeXBlO1xuICAgIHZhciBGaWxlSXRlbUxvY2FsaXplciA9IEZpbGVJdGVtTG9jYWxpemVyU2VsZWN0b3IobG9jYWxpemF0aW9uKTtcbiAgICB2YXIgX2EgPSBGaWxlSXRlbUxvY2FsaXplci5mdWxsSW5mb0xheWVyLCBuYW1lTGFiZWwgPSBfYS5uYW1lLCBzaXplTGFiZWwgPSBfYS5zaXplLCB0eXBlTGFiZWwgPSBfYS50eXBlO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy1pbmZvLWxheWVyLWhlYWRlclwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENhbmNlbFxuICAgICAgICAgICAgLy9zdHlsZT17eyBtYXJnaW46IDAsIHJpZ2h0OiAwLCB0b3A6IDAgfX1cbiAgICAgICAgICAgICwgeyBcbiAgICAgICAgICAgICAgICAvL3N0eWxlPXt7IG1hcmdpbjogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAgICAgICAgIGNvbG9yOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44KVwiLCBvbkNsaWNrOiBvbkNsb3NlSW5mbywgY29sb3JGaWxsOiBcImJsYWNrXCIgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNTdGF0dXMsIHsgdmFsaWQ6IHZhbGlkLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCBuYW1lTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgbG9jYWxOYW1lKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJoZWFkaW5nXCIgfSwgc2l6ZUxhYmVsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsYWJlbFwiIH0sIHNpemVGb3JtYXR0ZWQpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImhlYWRpbmdcIiB9LCB0eXBlTGFiZWwpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxhYmVsXCIgfSwgbG9jYWxUeXBlKSkpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZpbGVzdWktZmlsZS1pdGVtLXNpemUge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGZvbnQtc2l6ZTogMC43cmVtO1xcbiAgYm9yZGVyOiAwLjVweCBzb2xpZCB3aGVhdDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODkpO1xcbiAgcGFkZGluZzogMnB4IDEuNXB4O1xcbiAgYm9yZGVyLXJhZGl1czogN3B4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjc1KTtcXG4gIG1pbi13aWR0aDogNDVweDtcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG59XFxuLmZpbGVzdWktZmlsZS1pdGVtLXNpemU6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMiwgMzMsIDM2LCAwLjg1KTtcXG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTcpO1xcbn1cIik7XG5cbnZhciBGaWxlTW9zYWljU2l6ZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHNpemVGb3JtYXR0ZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZXN1aS1maWxlLWl0ZW0tc2l6ZVwiIH0sIHNpemVGb3JtYXR0ZWQpKSkpO1xufTtcblxudmFyIEZpbGVNb3NhaWNNYWluTGF5ZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgZGFya01vZGUgPSBwcm9wcy5kYXJrTW9kZSwgZGVsZXRlSWNvbiA9IHByb3BzLmRlbGV0ZUljb24sIGRvd25sb2FkSWNvbiA9IHByb3BzLmRvd25sb2FkSWNvbiwgaW1hZ2VJY29uID0gcHJvcHMuaW1hZ2VJY29uLCBpbmZvSWNvbiA9IHByb3BzLmluZm9JY29uLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvbkRvd25sb2FkID0gcHJvcHMub25Eb3dubG9hZCwgb25PcGVuSW5mbyA9IHByb3BzLm9uT3BlbkluZm8sIG9uU2VlID0gcHJvcHMub25TZWUsIG9uV2F0Y2ggPSBwcm9wcy5vbldhdGNoLCBzaXplRm9ybWF0dGVkID0gcHJvcHMuc2l6ZUZvcm1hdHRlZCwgdmFsaWQgPSBwcm9wcy52YWxpZCwgdmlkZW9JY29uID0gcHJvcHMudmlkZW9JY29uLCBsb2NhbGl6YXRpb24gPSBwcm9wcy5sb2NhbGl6YXRpb24sIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgaXNBY3RpdmUgPSBwcm9wcy5pc0FjdGl2ZTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtbWFpbi1sYXllci1oZWFkZXJcIiB9LCBpc0FjdGl2ZSAmJiBkZWxldGVJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KENsZWFyLCB7IGNsYXNzTmFtZTogZGFya01vZGUgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIiA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbkRlbGV0ZSwgc2l6ZTogXCJzbWFsbFwiLCBjb2xvckZpbGw6IFwidHJhbnNwYXJlbnRcIiB9KSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtbW9zYWljLW1haW4tbGF5ZXItZm9vdGVyXCIgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtZm9vdGVyLWxlZnRcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1N0YXR1cywgeyB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSxcbiAgICAgICAgICAgICAgICBpc0FjdGl2ZSAmJiBzaXplRm9ybWF0dGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNTaXplLCB7IHNpemVGb3JtYXR0ZWQ6IHNpemVGb3JtYXR0ZWQgfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1tb3NhaWMtZm9vdGVyLXJpZ2h0XCIgfSwgaXNBY3RpdmUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgaW1hZ2VJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFZpc2liaWxpdHksIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgb25DbGljazogb25TZWUsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgdmlkZW9JY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFBsYXlJY29uLCB7IGNsYXNzTmFtZTogZGFya01vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaWxlcy11aS1maWxlLWljb24gZGFyay1tb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJmaWxlcy11aS1maWxlLWljb25cIiwgY29sb3I6IGRhcmtNb2RlID8gXCIjMTIxMjEyXCIgOiBcInJnYmEoMjU1LDI1NSwyNTUsMC44NTEpXCIsIG9uQ2xpY2s6IG9uV2F0Y2gsIHNpemU6IFwic21hbGxcIiB9KSksXG4gICAgICAgICAgICAgICAgZG93bmxvYWRJY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KERvd25sb2FkRmlsZSwgeyBjbGFzc05hbWU6IGRhcmtNb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmlsZXMtdWktZmlsZS1pY29uIGRhcmstbW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiZmlsZXMtdWktZmlsZS1pY29uXCIsIGNvbG9yOiBkYXJrTW9kZSA/IFwiIzEyMTIxMlwiIDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuODUxKVwiLCBvbkNsaWNrOiBvbkRvd25sb2FkLCBzaXplOiBcInNtYWxsXCIgfSkpLFxuICAgICAgICAgICAgICAgIGluZm9JY29uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEluZm9EaXNuZXksIHsgY2xhc3NOYW1lOiBkYXJrTW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbGVzLXVpLWZpbGUtaWNvbiBkYXJrLW1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtaWNvblwiLCBvbkNsaWNrOiBvbk9wZW5JbmZvLCBjb2xvcjogZGFya01vZGUgPyBcIiMxMjEyMTJcIiA6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjg1MSlcIiwgc2l6ZTogXCJtaWNyb1wiIH0pKSkpKSkpKTtcbn07XG5cbnZhciBGaWxlTW9zYWljID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgZmlsZSA9IHByb3BzLmZpbGUsIHByb3BOYW1lID0gcHJvcHMubmFtZSwgcHJvcFNpemUgPSBwcm9wcy5zaXplLCBwcm9wVHlwZSA9IHByb3BzLnR5cGUsIGlkID0gcHJvcHMuaWQsIHZhbGlkID0gcHJvcHMudmFsaWQsIGVycm9ycyA9IHByb3BzLmVycm9ycywgdXBsb2FkU3RhdHVzID0gcHJvcHMudXBsb2FkU3RhdHVzLCB1cGxvYWRNZXNzYWdlID0gcHJvcHMudXBsb2FkTWVzc2FnZSwgcHJvZ3Jlc3MgPSBwcm9wcy5wcm9ncmVzcywgeGhyID0gcHJvcHMueGhyLCBsb2NQcm9wcyA9IHByb3BzLmxvY2FsaXphdGlvbiwgcHJldmlldyA9IHByb3BzLnByZXZpZXcsIGltYWdlVXJsID0gcHJvcHMuaW1hZ2VVcmwsIHZpZGVvVXJsID0gcHJvcHMudmlkZW9VcmwsIGluZm8gPSBwcm9wcy5pbmZvLCBfYSA9IHByb3BzLmJhY2tncm91bmRCbHVySW1hZ2UsIGJhY2tncm91bmRCbHVySW1hZ2UgPSBfYSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9hLCBkYXJrTW9kZVByb3AgPSBwcm9wcy5kYXJrTW9kZSwgX2IgPSBwcm9wcy5hbHdheXNBY3RpdmUsIGFsd2F5c0FjdGl2ZSA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIF9jID0gcHJvcHMucmVzdWx0T25Ub29sdGlwLCByZXN1bHRPblRvb2x0aXAgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCBkb3dubG9hZFVybCA9IHByb3BzLmRvd25sb2FkVXJsLCBvbkRlbGV0ZSA9IHByb3BzLm9uRGVsZXRlLCBvbkNhbmNlbCA9IHByb3BzLm9uQ2FuY2VsLCBvbkFib3J0ID0gcHJvcHMub25BYm9ydCwgb25Eb3dubG9hZCA9IHByb3BzLm9uRG93bmxvYWQsIG9uU2VlID0gcHJvcHMub25TZWUsIG9uV2F0Y2ggPSBwcm9wcy5vbldhdGNoLCBvbkRvdWJsZUNsaWNrID0gcHJvcHMub25Eb3VibGVDbGljaywgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssIG9uUmlnaHRDbGljayA9IHByb3BzLm9uUmlnaHRDbGljaywgX2QgPSBwcm9wcy5zbWFydEltZ0ZpdCwgc21hcnRJbWdGaXQgPSBfZCA9PT0gdm9pZCAwID8gXCJvcmllbnRhdGlvblwiIDogX2Q7XG4gICAgLy9jb250ZXh0XG4gICAgdmFyIF9lID0gUmVhY3QudXNlQ29udGV4dChGaWxlc1VpQ29udGV4dCksIGRhcmtNb2RlQ29udGV4dCA9IF9lLmRhcmtNb2RlLCBpY29ucyA9IF9lLmljb25zLCBsb2NDb250ZXh0ID0gX2UubG9jYWxpemF0aW9uO1xuICAgIHZhciBsb2NhbGl6YXRpb24gPSBsb2NQcm9wcyAhPT0gdW5kZWZpbmVkID8gbG9jUHJvcHMgOiBsb2NDb250ZXh0O1xuICAgIHZhciBkYXJrTW9kZSA9IGRhcmtNb2RlUHJvcCAhPT0gdW5kZWZpbmVkID8gZGFya01vZGVQcm9wIDogZGFya01vZGVDb250ZXh0O1xuICAgIC8vLy9jb25zb2xlLmxvZyhcImdsb2JhbENvbmZpZ1wiLCBkYXJrTW9kZSwgaWNvbnMpO1xuICAgIC8vbG9jYWxpemVyc1xuICAgIC8vcmVmIGZvciBhbmNob3IgZG93bmxvYWQgZWxlbWVudFxuICAgIHZhciBkb3dubG9hZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICB2YXIgZmluYWxDbGFzc05hbWUgPSBhZGRDbGFzc05hbWUoYWRkQ2xhc3NOYW1lKFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtbWFpbi1jb250YWluZXIgZmlsZXMtdWktdG9vbHRpcFwiLCBjbGFzc05hbWUpLCBvbkNsaWNrID8gXCJjbGlja2FibGVcIiA6IHVuZGVmaW5lZCk7XG4gICAgdmFyIGZpbGVNb3NhaWNGaWxlTmFtZUNsYXNzTmFtZSA9IGRhcmtNb2RlXG4gICAgICAgID8gXCJmaWxlcy11aS1maWxlLW1vc2FpYy1maWxlLW5hbWUgZGFyay1tb2RlXCJcbiAgICAgICAgOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWZpbGUtbmFtZVwiO1xuICAgIC8vIGxvY2FsIHByb3BlcnRpZXMgZnJvbSBmaWxlXG4gICAgdmFyIF9mID0gZ2V0TG9jYWxGaWxlSXRlbURhdGEoZmlsZSwgcHJvcE5hbWUsIHByb3BUeXBlLCBwcm9wU2l6ZSksIGxvY2FsTmFtZSA9IF9mWzBdLCBsb2NhbFR5cGUgPSBfZlsxXSwgbG9jYWxTaXplID0gX2ZbMl07XG4gICAgLy8gaGFuZGxlIHByb2dyZXNzXG4gICAgdmFyIGxvY2FsUHJvZ3Jlc3MgPSB1c2VQcm9ncmVzcyhwcm9ncmVzcywgeGhyKTtcbiAgICAvLy8vY29uc29sZS5sb2coXCJGaWxlTW9zYWljIHByb2dyZXNzIGxvY2FsUHJvZ3Jlc3MgXCIgKyBsb2NhbFByb2dyZXNzKTtcbiAgICAvL0luaXRpYWxpemUgRmlsZSBJdGVtXG4gICAgdmFyIF9nID0gdXNlRmlsZU1vc2FpY0luaXRpYWxpemVyKGZpbGUsIHByb3BOYW1lLCBwcm9wVHlwZSwgdmFsaWQsIHByZXZpZXcsIGltYWdlVXJsLCB2aWRlb1VybCwgaWNvbnMpLCBpc1JlYWR5ID0gX2dbMF0sIGlzSW1hZ2UgPSBfZ1sxXSwgaXNWaWRlbyA9IF9nWzJdLCB1cmwgPSBfZ1szXSwgaW1hZ2VTb3VyY2UgPSBfZ1s0XSwgdmlkZW9Tb3VyY2UgPSBfZ1s1XTtcbiAgICAvL1RoZSBzaXplIGZvcm1hdHRlZCBhbmQgcm91bmRlZCBpbiAyIGRlY2ltYWxzXG4gICAgdmFyIHNpemVGb3JtYXR0ZWQgPSBmaWxlU2l6ZUZvcm1hdGVyKGxvY2FsU2l6ZSk7XG4gICAgLy9hbHdheXNBY3RpdmVcbiAgICB2YXIgX2ggPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIHNob3dJbmZvID0gX2hbMF0sIHNldFNob3dJbmZvID0gX2hbMV07XG4gICAgLyoqKioqKioqKiBBTFdBWVMgQUNUSVZFIExPR0lDICAqKioqKioqKioqKioqKiovXG4gICAgLy9zdGF0ZSBmb3IgYWN0aW9uT25Ib3ZlclxuICAgIHZhciBfaiA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgaG92ZXJpbmcgPSBfalswXSwgc2V0SG92ZXJpbmcgPSBfalsxXTtcbiAgICB2YXIgaGFuZGxlT25Ib3ZlckVudGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYWx3YXlzQWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRIb3ZlcmluZyh0cnVlKTtcbiAgICB9O1xuICAgIHZhciBoYW5kbGVPbkhvdmVyTGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChhbHdheXNBY3RpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldEhvdmVyaW5nKGZhbHNlKTtcbiAgICB9O1xuICAgIC8qKioqKioqKioqKioqKioqKiBIQU5ETEVSUyAqKioqKioqKioqL1xuICAgIC8vZGVsZXRlIGZpbGUgaXRlbVxuICAgIHZhciBoYW5kbGVEZWxldGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvbkRlbGV0ZSA9PT0gbnVsbCB8fCBvbkRlbGV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25EZWxldGUoaWQpOyB9O1xuICAgIC8vb3BlbiBpbmZvIGxheWVyXG4gICAgdmFyIGhhbmRsZU9wZW5JbmZvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0U2hvd0luZm8odHJ1ZSk7IH07XG4gICAgLy9jbG9zZSBpbmZvIGxheWVyXG4gICAgdmFyIGhhbmRsZUNsb3NlSW5mbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFNob3dJbmZvKGZhbHNlKTsgfTtcbiAgICB2YXIgaXNVcGxvYWRpbmcgPSB1c2VJc1VwbG9hZGluZyh1cGxvYWRTdGF0dXMpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vLy9jb25zb2xlLmxvZyhcIkNoYW5nZSBpc1VwbG9hZGluZ1wiLCBpc1VwbG9hZGluZyk7XG4gICAgICAgIGlmIChpc1VwbG9hZGluZyAmJiBzaG93SW5mbykge1xuICAgICAgICAgICAgaGFuZGxlQ2xvc2VJbmZvKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2lzVXBsb2FkaW5nXSk7XG4gICAgLyoqKioqKioqKioqKioqKiBDTElDSyAqKioqKioqKioqKioqKiovXG4gICAgLyoqXG4gICAgICogVE8tRE86IEFkZCBmdW5jdGlvbmFsbGl0eSBvbiBjbGljayBldmVudFxuICAgICAqIEBwYXJhbSBlIGV2ZW50IG9iamVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICAgICAgLy9hdm9pZCBjaGlsZHJlbiB0byB0cmlnZ2VyIG9uQ2xpY2sgcmlwcGxlIGZyb20gcGFyZW50XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZURvdWJsZUNsaWNrID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2FsZXJ0KFwiZG91YmxlIGNsaWNrIG9uIGZpbGVcIik7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkRvdWJsZUNsaWNrID09PSBudWxsIHx8IG9uRG91YmxlQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRG91YmxlQ2xpY2soZXZ0KTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXZ0KSB7XG4gICAgICAgIC8vIGFsZXJ0KFwicmlnaHQgY2xpY2shISEhXCIpO1xuICAgICAgICAvL2dldCBjb29yZGluYXRlc1xuICAgICAgICAvL3ppbmRleFxuICAgICAgICAvL2NyZWF0ZSBtZW51IGNvbXBvbmVudFxuICAgICAgICAvLyBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25SaWdodENsaWNrID09PSBudWxsIHx8IG9uUmlnaHRDbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SaWdodENsaWNrKGV2dCk7XG4gICAgfVxuICAgIC8vIERPV05MT0FEIEZJTEVcbiAgICAvKipcbiAgICAgKiBvbkRvd25sb2FkLCBmb3JtIDFcbiAgICAgKiBUcmlnZ2VyIGRvd2xvYWQgZGlyZWN0bHkgcGVyZm9ybWluZyBhIGNsaWNrIG9uIGFuY2hvciBlbGVtZW50XG4gICAgICovXG4gICAgdmFyIGlubmVyRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gZG93bmxvYWRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGFuY2hvckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogb25Eb3dubGFkLCBmb3JtIDJcbiAgICAgKiBIYW5kbGUgdGhlIGRvd25sb2FkIHRyaWdnZXJpbmcgYW4gb3V0c2lkZSBldmVudFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uRG93bmxvYWQpIHtcbiAgICAgICAgICAgIG9uRG93bmxvYWQgPT09IG51bGwgfHwgb25Eb3dubG9hZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Eb3dubG9hZChpZCwgZG93bmxvYWRVcmwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkb3dubG9hZFVybCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpbm5lckRvd25sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBoYW5kbGVBYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgeGhyID09PSBudWxsIHx8IHhociA9PT0gdm9pZCAwID8gdm9pZCAwIDogeGhyLmFib3J0KCk7XG4gICAgICAgIG9uQWJvcnQgPT09IG51bGwgfHwgb25BYm9ydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BYm9ydChpZCk7XG4gICAgfTtcbiAgICBpZiAoaXNSZWFkeSlcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBmaW5hbENsYXNzTmFtZSwgc3R5bGU6IHN0eWxlLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25Nb3VzZUVudGVyOiBoYW5kbGVPbkhvdmVyRW50ZXIsIG9uTW91c2VMZWF2ZTogaGFuZGxlT25Ib3ZlckxlYXZlLCBvbkRvdWJsZUNsaWNrOiBoYW5kbGVEb3VibGVDbGljaywgb25Db250ZXh0TWVudTogaGFuZGxlUmlnaHRDbGljayB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllckNvbnRhaW5lciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaWNvbi1sYXllci1jb250YWluZXJcIiwgc3R5bGU6IHN0eWxlIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZXMtdWktZmlsZS1tb3NhaWMtaW1hZ2UtbGF5ZXIgYmx1clwiLCB2aXNpYmxlOiBiYWNrZ3JvdW5kQmx1ckltYWdlIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY0ltYWdlTGF5ZXIsIHsgaW1hZ2VTb3VyY2U6IGltYWdlU291cmNlLCB1cmw6IHVybCwgZmlsZU5hbWU6IGxvY2FsTmFtZSwgaXNCbHVyOiB0cnVlLCBzbWFydEltZ0ZpdDogZmFsc2UgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWltYWdlLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW1hZ2VMYXllciwgeyBpbWFnZVNvdXJjZTogaW1hZ2VTb3VyY2UsIHVybDogdXJsLCBmaWxlTmFtZTogbG9jYWxOYW1lLCBpc0JsdXI6IGZhbHNlLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLW1haW4tbGF5ZXJcIiwgdmlzaWJsZTogIWlzVXBsb2FkaW5nICYmICFzaG93SW5mbyB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNNYWluTGF5ZXIsIHsgZGVsZXRlSWNvbjogb25EZWxldGUgIT09IHVuZGVmaW5lZCwgb25EZWxldGU6IGhhbmRsZURlbGV0ZSwgZGFya01vZGU6IGRhcmtNb2RlLCB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiwgc2l6ZUZvcm1hdHRlZDogc2l6ZUZvcm1hdHRlZCwgaW1hZ2VJY29uOiBpc0ltYWdlICYmIG9uU2VlICE9PSB1bmRlZmluZWQsIG9uU2VlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvblNlZSA9PT0gbnVsbCB8fCBvblNlZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25TZWUoaW1hZ2VTb3VyY2UpOyB9LCB2aWRlb0ljb246IGlzVmlkZW8gJiYgb25XYXRjaCAhPT0gdW5kZWZpbmVkLCBvbldhdGNoOiBmdW5jdGlvbiAoKSB7IHJldHVybiBvbldhdGNoID09PSBudWxsIHx8IG9uV2F0Y2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uV2F0Y2godmlkZW9Tb3VyY2UpOyB9LCBkb3dubG9hZEljb246IG9uRG93bmxvYWQgIT09IHVuZGVmaW5lZCB8fCBkb3dubG9hZFVybCAhPT0gdW5kZWZpbmVkLCBvbkRvd25sb2FkOiBoYW5kbGVEb3dubG9hZCwgaW5mb0ljb246IGluZm8gIT09IHVuZGVmaW5lZCwgb25PcGVuSW5mbzogaGFuZGxlT3BlbkluZm8sIGlzQWN0aXZlOiBhbHdheXNBY3RpdmUgfHwgaG92ZXJpbmcgfSkpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtbW9zYWljLWluZm8tbGF5ZXJcIiwgdmlzaWJsZTogc2hvd0luZm8sIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbmZvTGF5ZXIsIHsgb25DbG9zZUluZm86IGhhbmRsZUNsb3NlSW5mbywgdmFsaWQ6IHZhbGlkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiwgbG9jYWxOYW1lOiBsb2NhbE5hbWUsIHNpemVGb3JtYXR0ZWQ6IHNpemVGb3JtYXR0ZWQsIGxvY2FsVHlwZTogbG9jYWxUeXBlIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLW1vc2FpYy11cGxvYWQtbGF5ZXJcIiwgdmlzaWJsZTogaXNVcGxvYWRpbmcsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNVcGxvYWRMYXllciwgeyB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgcHJvZ3Jlc3M6IGxvY2FsUHJvZ3Jlc3MsIG9uQ2FuY2VsOiBvbkNhbmNlbCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2FuY2VsID09PSBudWxsIHx8IG9uQ2FuY2VsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNhbmNlbChpZCk7IH0gOiB1bmRlZmluZWQsIG9uQWJvcnQ6IG9uQWJvcnQgPyBoYW5kbGVBYm9ydCA6IHVuZGVmaW5lZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24gfSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbGVNb3NhaWNGaWxlTmFtZUNsYXNzTmFtZSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY05hbWUsIHsgZmlsZU5hbWU6IGxvY2FsTmFtZSB9KSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRvb2x0aXAsIHsgb3BlbjogcmVzdWx0T25Ub29sdGlwLCB1cGxvYWRTdGF0dXM6IHVwbG9hZFN0YXR1cywgdmFsaWQ6IHZhbGlkLCBlcnJvcnM6IGVycm9ycywgdXBsb2FkTWVzc2FnZTogdXBsb2FkTWVzc2FnZSB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG93bmxvYWRIaWRkZW4sIHsgZmlsZU5hbWU6IGxvY2FsTmFtZSwgYW5jaG9yUmVmOiBkb3dubG9hZFJlZiwgZG93bmxvYWRVcmw6IGRvd25sb2FkVXJsIH0pKSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxudmFyIHNldEZpbmFsRWxldmF0aW9uID0gZnVuY3Rpb24gKGVsZXZhdGlvbikge1xuICAgIC8vICBsZXQgZmluYWxFbGV2YXRpb246IG51bWJlciAgPSBcIlwiO1xuICAgIHZhciBmaW5hbEVsZXZhdGlvbiA9IE51bWJlcihlbGV2YXRpb24pO1xuICAgIGlmICghaXNOYU4oZmluYWxFbGV2YXRpb24pKSB7XG4gICAgICAgIGlmIChmaW5hbEVsZXZhdGlvbiA+IDI0KSB7XG4gICAgICAgICAgICByZXR1cm4gMjQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmluYWxFbGV2YXRpb24gPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaW5hbEVsZXZhdGlvbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxufTtcbnZhciBtYWtlRmlsZUNhcmRDbGFzc05hbWUgPSBmdW5jdGlvbiAoZWxldmF0aW9uLCBkYXJrTW9kZSwgY2xhc3NOYW1lLCBjbGlja2FibGUpIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiRmlsZUNhcmQgbWFrZUZpbGVDYXJkQ2xhc3NOYW1lXCIsIGVsZXZhdGlvbiwgZGFya01vZGUsIGNsYXNzTmFtZSk7XG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gXCJmaWxlcy11aS1maWxlLWNhcmQtbWFpbi1jb250YWluZXIgZmlsZXMtdWktdG9vbHRpcCBjYXJkXCI7XG4gICAgaWYgKGVsZXZhdGlvbikge1xuICAgICAgICBmaW5hbENsYXNzTmFtZSArPSBcIiBlbGV2YXRpb24tXCIgKyBzZXRGaW5hbEVsZXZhdGlvbihlbGV2YXRpb24pO1xuICAgIH1cbiAgICBpZiAoZGFya01vZGUpIHtcbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgZGFyay1tb2RlXCI7XG4gICAgfVxuICAgIGlmIChjbGlja2FibGUpXG4gICAgICAgIGZpbmFsQ2xhc3NOYW1lICs9IFwiIGNsaWNrYWJsZVwiO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgZmluYWxDbGFzc05hbWUgKz0gXCIgXCIuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgfVxuICAgIC8vY29uc29sZS5sb2coXCJGaWxlQ2FyZCBmaW5hbENsYXNzTmFtZVwiLCBmaW5hbENsYXNzTmFtZSk7XG4gICAgcmV0dXJuIGZpbmFsQ2xhc3NOYW1lO1xufTtcbnZhciBGaWxlQ2FyZCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzdHlsZSA9IHByb3BzLnN0eWxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGZpbGUgPSBwcm9wcy5maWxlLCBwcm9wTmFtZSA9IHByb3BzLm5hbWUsIHByb3BTaXplID0gcHJvcHMuc2l6ZSwgcHJvcFR5cGUgPSBwcm9wcy50eXBlLCBpZCA9IHByb3BzLmlkLCB2YWxpZCA9IHByb3BzLnZhbGlkLCBlcnJvcnMgPSBwcm9wcy5lcnJvcnMsIHVwbG9hZFN0YXR1cyA9IHByb3BzLnVwbG9hZFN0YXR1cywgdXBsb2FkTWVzc2FnZSA9IHByb3BzLnVwbG9hZE1lc3NhZ2UsIHByb2dyZXNzID0gcHJvcHMucHJvZ3Jlc3MsIHhociA9IHByb3BzLnhociwgbG9jUHJvcHMgPSBwcm9wcy5sb2NhbGl6YXRpb24sIHByZXZpZXcgPSBwcm9wcy5wcmV2aWV3LCBpbWFnZVVybCA9IHByb3BzLmltYWdlVXJsLCB2aWRlb1VybCA9IHByb3BzLnZpZGVvVXJsLCBpbmZvID0gcHJvcHMuaW5mbywgX2EgPSBwcm9wcy5iYWNrZ3JvdW5kQmx1ckltYWdlLCBiYWNrZ3JvdW5kQmx1ckltYWdlID0gX2EgPT09IHZvaWQgMCA/IHRydWUgOiBfYSwgZGFya01vZGVQcm9wID0gcHJvcHMuZGFya01vZGUsIF9iID0gcHJvcHMuYWx3YXlzQWN0aXZlLCBhbHdheXNBY3RpdmUgPSBfYiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9iLCBfYyA9IHByb3BzLnJlc3VsdE9uVG9vbHRpcCwgcmVzdWx0T25Ub29sdGlwID0gX2MgPT09IHZvaWQgMCA/IHRydWUgOiBfYywgZG93bmxvYWRVcmwgPSBwcm9wcy5kb3dubG9hZFVybCwgb25EZWxldGUgPSBwcm9wcy5vbkRlbGV0ZSwgb25DYW5jZWwgPSBwcm9wcy5vbkNhbmNlbCwgb25BYm9ydCA9IHByb3BzLm9uQWJvcnQsIG9uRG93bmxvYWQgPSBwcm9wcy5vbkRvd25sb2FkLCBvblNlZSA9IHByb3BzLm9uU2VlLCBvbldhdGNoID0gcHJvcHMub25XYXRjaCwgb25Eb3VibGVDbGljayA9IHByb3BzLm9uRG91YmxlQ2xpY2ssIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLCBvblJpZ2h0Q2xpY2sgPSBwcm9wcy5vblJpZ2h0Q2xpY2ssIF9kID0gcHJvcHMuZWxldmF0aW9uLCBlbGV2YXRpb24gPSBfZCA9PT0gdm9pZCAwID8gNCA6IF9kLCBfZSA9IHByb3BzLnNtYXJ0SW1nRml0LCBzbWFydEltZ0ZpdCA9IF9lID09PSB2b2lkIDAgPyBcIm9yaWVudGF0aW9uXCIgOiBfZTtcbiAgICAvL2NvbnRleHRcbiAgICB2YXIgX2YgPSBSZWFjdC51c2VDb250ZXh0KEZpbGVzVWlDb250ZXh0KSwgZGFya01vZGVDb250ZXh0ID0gX2YuZGFya01vZGUsIGljb25zID0gX2YuaWNvbnMsIGxvY0NvbnRleHQgPSBfZi5sb2NhbGl6YXRpb247XG4gICAgdmFyIGxvY2FsaXphdGlvbiA9IGxvY1Byb3BzICE9PSB1bmRlZmluZWQgPyBsb2NQcm9wcyA6IGxvY0NvbnRleHQ7XG4gICAgdmFyIGRhcmtNb2RlID0gZGFya01vZGVQcm9wICE9PSB1bmRlZmluZWQgPyBkYXJrTW9kZVByb3AgOiBkYXJrTW9kZUNvbnRleHQ7XG4gICAgLy9jb25zb2xlLmxvZyhcImdsb2JhbENvbmZpZ1wiLCBkYXJrTW9kZSwgaWNvbnMpO1xuICAgIC8vcmVmIGZvciBhbmNob3IgZWxlbWVudFxuICAgIHZhciBkb3dubG9hZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAvL2NsYXNzTmFtZSBjcmVhdGVkXG4gICAgdmFyIGZpbmFsQ2xhc3NOYW1lID0gbWFrZUZpbGVDYXJkQ2xhc3NOYW1lKGVsZXZhdGlvbiwgZGFya01vZGUsIGNsYXNzTmFtZSwgb25DbGljayAhPT0gdW5kZWZpbmVkKTtcbiAgICAvLyBsb2NhbCBwcm9wZXJ0aWVzIGZyb20gZmlsZVxuICAgIHZhciBfZyA9IGdldExvY2FsRmlsZUl0ZW1EYXRhKGZpbGUsIHByb3BOYW1lLCBwcm9wVHlwZSwgcHJvcFNpemUpLCBsb2NhbE5hbWUgPSBfZ1swXSwgbG9jYWxUeXBlID0gX2dbMV0sIGxvY2FsU2l6ZSA9IF9nWzJdO1xuICAgIC8vIGhhbmRsZSBwcm9ncmVzc1xuICAgIHZhciBsb2NhbFByb2dyZXNzID0gdXNlUHJvZ3Jlc3MocHJvZ3Jlc3MsIHhocik7XG4gICAgLy9Jbml0aWFsaXplIEZpbGUgSXRlbVxuICAgIHZhciBfaCA9IHVzZUZpbGVNb3NhaWNJbml0aWFsaXplcihmaWxlLCBwcm9wTmFtZSwgcHJvcFR5cGUsIHZhbGlkLCBwcmV2aWV3LCBpbWFnZVVybCwgdmlkZW9VcmwsIGljb25zKSwgaXNSZWFkeSA9IF9oWzBdLCBpc0ltYWdlID0gX2hbMV0sIGlzVmlkZW8gPSBfaFsyXSwgdXJsID0gX2hbM10sIGltYWdlU291cmNlID0gX2hbNF0sIHZpZGVvU291cmNlID0gX2hbNV07XG4gICAgLy9UaGUgc2l6ZSBmb3JtYXR0ZWQgYW5kIHJvdW5kZWQgaW4gMiBkZWNpbWFsc1xuICAgIHZhciBzaXplRm9ybWF0dGVkID0gZmlsZVNpemVGb3JtYXRlcihsb2NhbFNpemUpO1xuICAgIC8vYWx3YXlzQWN0aXZlXG4gICAgdmFyIF9qID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBzaG93SW5mbyA9IF9qWzBdLCBzZXRTaG93SW5mbyA9IF9qWzFdO1xuICAgIC8qKioqKioqKiogQUxXQVlTIEFDVElWRSBMT0dJQyAgKioqKioqKioqKioqKioqL1xuICAgIC8vc3RhdGUgZm9yIGFjdGlvbk9uSG92ZXJcbiAgICB2YXIgX2sgPSBSZWFjdC51c2VTdGF0ZShmYWxzZSksIGhvdmVyaW5nID0gX2tbMF0sIHNldEhvdmVyaW5nID0gX2tbMV07XG4gICAgdmFyIGhhbmRsZU9uSG92ZXJFbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGFsd2F5c0FjdGl2ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0SG92ZXJpbmcodHJ1ZSk7XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlT25Ib3ZlckxlYXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYWx3YXlzQWN0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRIb3ZlcmluZyhmYWxzZSk7XG4gICAgfTtcbiAgICAvKioqKioqKioqKioqKioqKiogSEFORExFUlMgKioqKioqKioqKi9cbiAgICAvL2RlbGV0ZSBmaWxlIGl0ZW1cbiAgICB2YXIgaGFuZGxlRGVsZXRlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25EZWxldGUgPT09IG51bGwgfHwgb25EZWxldGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRGVsZXRlKGlkKTsgfTtcbiAgICAvL29wZW4gaW5mbyBsYXllclxuICAgIHZhciBoYW5kbGVPcGVuSW5mbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNldFNob3dJbmZvKHRydWUpOyB9O1xuICAgIC8vY2xvc2UgaW5mbyBsYXllclxuICAgIHZhciBoYW5kbGVDbG9zZUluZm8gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRTaG93SW5mbyhmYWxzZSk7IH07XG4gICAgdmFyIGlzVXBsb2FkaW5nID0gdXNlSXNVcGxvYWRpbmcodXBsb2FkU3RhdHVzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAvLy8vY29uc29sZS5sb2coXCJDaGFuZ2UgaXNVcGxvYWRpbmdcIiwgaXNVcGxvYWRpbmcpO1xuICAgICAgICBpZiAoaXNVcGxvYWRpbmcgJiYgc2hvd0luZm8pXG4gICAgICAgICAgICBoYW5kbGVDbG9zZUluZm8oKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgfSwgW2lzVXBsb2FkaW5nXSk7XG4gICAgLyoqKioqKioqKioqKioqKiBDbGljayAqKioqKioqKioqKioqKiovXG4gICAgLyoqXG4gICAgICogVE8tRE86IEFkZCBmdW5jdGlvbmFsbGl0eSBvbiBjbGljayBldmVudFxuICAgICAqIEBwYXJhbSBlIGV2ZW50IG9iamVjdFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGUpIHtcbiAgICAgICAgLy9hdm9pZCBjaGlsZHJlbiB0byB0cmlnZ2VyIG9uQ2xpY2sgcmlwcGxlIGZyb20gcGFyZW50XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uQ2xpY2sgPT09IG51bGwgfHwgb25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGljayhlKTtcbiAgICB9XG4gICAgdmFyIGhhbmRsZURvdWJsZUNsaWNrID0gZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAvL2FsZXJ0KFwiZG91YmxlIGNsaWNrIG9uIGZpbGVcIik7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkRvdWJsZUNsaWNrID09PSBudWxsIHx8IG9uRG91YmxlQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRG91YmxlQ2xpY2soZXZ0KTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXZ0KSB7XG4gICAgICAgIC8vIGFsZXJ0KFwicmlnaHQgY2xpY2shISEhXCIpO1xuICAgICAgICAvL2dldCBjb29yZGluYXRlc1xuICAgICAgICAvL3ppbmRleFxuICAgICAgICAvL2NyZWF0ZSBtZW51IGNvbXBvbmVudFxuICAgICAgICAvLyBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25SaWdodENsaWNrID09PSBudWxsIHx8IG9uUmlnaHRDbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SaWdodENsaWNrKGV2dCk7XG4gICAgfVxuICAgIC8vIERPV05MT0FEIEZJTEVcbiAgICAvKipcbiAgICAgKiBvbkRvd25sb2FkLCBmb3JtIDFcbiAgICAgKiBUcmlnZ2VyIGRvd2xvYWQgZGlyZWN0bHkgcGVyZm9ybWluZyBhIGNsaWNrIG9uIGFuY2hvciBlbGVtZW50XG4gICAgICovXG4gICAgdmFyIGlubmVyRG93bmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gZG93bmxvYWRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGFuY2hvckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogb25Eb3dubGFkLCBmb3JtIDJcbiAgICAgKiBIYW5kbGUgdGhlIGRvd25sb2FkIHRyaWdnZXJpbmcgYW4gb3V0c2lkZSBldmVudFxuICAgICAqL1xuICAgIHZhciBoYW5kbGVEb3dubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG9uRG93bmxvYWQpIHtcbiAgICAgICAgICAgIG9uRG93bmxvYWQgPT09IG51bGwgfHwgb25Eb3dubG9hZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Eb3dubG9hZChpZCwgZG93bmxvYWRVcmwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkb3dubG9hZFVybCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBpbm5lckRvd25sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBoYW5kbGVBYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgeGhyID09PSBudWxsIHx8IHhociA9PT0gdm9pZCAwID8gdm9pZCAwIDogeGhyLmFib3J0KCk7XG4gICAgICAgIG9uQWJvcnQgPT09IG51bGwgfHwgb25BYm9ydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25BYm9ydChpZCk7XG4gICAgfTtcbiAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGZpbmFsQ2xhc3NOYW1lLCBzdHlsZTogc3R5bGUsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLCBvbk1vdXNlRW50ZXI6IGhhbmRsZU9uSG92ZXJFbnRlciwgb25Nb3VzZUxlYXZlOiBoYW5kbGVPbkhvdmVyTGVhdmUsIG9uRG91YmxlQ2xpY2s6IGhhbmRsZURvdWJsZUNsaWNrLCBvbkNvbnRleHRNZW51OiBoYW5kbGVSaWdodENsaWNrIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyQ29udGFpbmVyLCB7IGNsYXNzTmFtZTogXCJmaWxlcy11aS1maWxlLWNhcmQtbWFpbi1sYXllci1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1tYWluLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1wbHVzLWRhdGFcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaWNvbi1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXJDb250YWluZXIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1pY29uLWxheWVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tbGF5ZXIgYmx1clwiLCB2aXNpYmxlOiBiYWNrZ3JvdW5kQmx1ckltYWdlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVNb3NhaWNJbWFnZUxheWVyLCB7IGltYWdlU291cmNlOiBpbWFnZVNvdXJjZSwgZmlsZU5hbWU6IGxvY2FsTmFtZSwgdXJsOiB1cmwsIGlzQmx1cjogdHJ1ZSwgc21hcnRJbWdGaXQ6IGZhbHNlIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLWljb24tbGF5ZXJcIiwgdmlzaWJsZTogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlTW9zYWljSW1hZ2VMYXllciwgeyBpbWFnZVNvdXJjZTogaW1hZ2VTb3VyY2UsIHVybDogdXJsLCBmaWxlTmFtZTogbG9jYWxOYW1lLCBpc0JsdXI6IGZhbHNlLCBzbWFydEltZ0ZpdDogc21hcnRJbWdGaXQgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtc3RhdHVzLWxheWVyXCIsIHZpc2libGU6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZU1vc2FpY1N0YXR1cywgeyB2YWxpZDogdmFsaWQsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGRhcmtNb2RlID8gXCJmaWxlLWNhcmQtZGF0YSBkYXJrLW1vZGVcIiA6IFwiZmlsZS1jYXJkLWRhdGFcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLW5hbWVcIiB9LCBsb2NhbE5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXNpemVcIiB9LCBzaXplRm9ybWF0dGVkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGUtY2FyZC1zaXplXCIgfSwgc2hyaW5rV29yZChsb2NhbFR5cGUpKSkpKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7IGNsYXNzTmFtZTogXCJmaWxlLWNhcmQtaW5mby1sYXllci1jb250YWluZXJcIiwgdmlzaWJsZTogc2hvd0luZm8sIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZpbGVDYXJkSW5mb0xheWVyLCB7IG9uQ2xvc2VJbmZvOiBoYW5kbGVDbG9zZUluZm8sIHZhbGlkOiB2YWxpZCwgbG9jYWxpemF0aW9uOiBsb2NhbGl6YXRpb24sIGxvY2FsTmFtZTogbG9jYWxOYW1lLCBzaXplRm9ybWF0dGVkOiBzaXplRm9ybWF0dGVkLCBsb2NhbFR5cGU6IGxvY2FsVHlwZSB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgeyBjbGFzc05hbWU6IFwiZmlsZS1jYXJkLXVwbG9hZC1sYXllci1jb250YWluZXJcIiwgdmlzaWJsZTogaXNVcGxvYWRpbmcsIG9uQ2xpY2s6IGhhbmRsZUNsaWNrVXRpbCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImZpbGVzLXVpLWZpbGUtY2FyZC11cGxvYWQtbGF5ZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGaWxlQ2FyZFVwbG9hZExheWVyLCB7IHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCBwcm9ncmVzczogbG9jYWxQcm9ncmVzcywgb25DYW5jZWw6IG9uQ2FuY2VsID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gb25DYW5jZWwgPT09IG51bGwgfHwgb25DYW5jZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2FuY2VsKGlkKTsgfSA6IHVuZGVmaW5lZCwgb25BYm9ydDogb25BYm9ydCA/IGhhbmRsZUFib3J0IDogdW5kZWZpbmVkLCBsb2NhbGl6YXRpb246IGxvY2FsaXphdGlvbiB9KSkpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZUNhcmRSaWdodEFjdGlvbnMsIHsgZGVsZXRlSWNvbjogb25EZWxldGUgIT09IHVuZGVmaW5lZCwgb25EZWxldGU6IGhhbmRsZURlbGV0ZSwgZGFya01vZGU6IGRhcmtNb2RlLCBpbWFnZUljb246IGlzSW1hZ2UgJiYgb25TZWUgIT09IHVuZGVmaW5lZCwgb25TZWU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uU2VlID09PSBudWxsIHx8IG9uU2VlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlZShpbWFnZVNvdXJjZSk7IH0sIHZpZGVvSWNvbjogaXNWaWRlbyAmJiBvbldhdGNoICE9PSB1bmRlZmluZWQsIG9uV2F0Y2g6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uV2F0Y2ggPT09IG51bGwgfHwgb25XYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25XYXRjaCh2aWRlb1NvdXJjZSk7IH0sIGRvd25sb2FkSWNvbjogb25Eb3dubG9hZCAhPT0gdW5kZWZpbmVkIHx8IGRvd25sb2FkVXJsICE9PSB1bmRlZmluZWQsIG9uRG93bmxvYWQ6IGhhbmRsZURvd25sb2FkLCBpbmZvSWNvbjogaW5mbyAhPT0gdW5kZWZpbmVkLCBvbk9wZW5JbmZvOiBoYW5kbGVPcGVuSW5mbywgaXNBY3RpdmU6IGFsd2F5c0FjdGl2ZSB8fCBob3ZlcmluZywgdmlzaWJsZTogIWlzVXBsb2FkaW5nICYmICFzaG93SW5mbyB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwgeyBvcGVuOiByZXN1bHRPblRvb2x0aXAsIHVwbG9hZFN0YXR1czogdXBsb2FkU3RhdHVzLCB2YWxpZDogdmFsaWQsIGVycm9yczogZXJyb3JzLCB1cGxvYWRNZXNzYWdlOiB1cGxvYWRNZXNzYWdlIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEb3dubG9hZEhpZGRlbiwgeyBmaWxlTmFtZTogbG9jYWxOYW1lLCBhbmNob3JSZWY6IGRvd25sb2FkUmVmLCBkb3dubG9hZFVybDogZG93bmxvYWRVcmwgfSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwpO1xufTtcblxuX19fJGluc2VydFN0eWxlKFwiLmZ1aS1mdWxsc2NyZWVuLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43MzQpO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTAwJSk7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLWluLW91dDtcXG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbiAgei1pbmRleDogNDAwMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5mdWktZnVsbHNjcmVlbi1jb250YWluZXIuc2hvdy1mcyB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKTtcXG59XFxuXFxuLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogOTAlO1xcbiAgaGVpZ2h0OiA5MCU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC8qICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XFxuICAgIHdpZHRoOiA4MCU7XFxuICAgIGhlaWdodDogYXV0bztcXG4gIH0qL1xcbn1cXG4uZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIGltZyB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB2aWRlbyB7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogYXV0bztcXG59XFxuQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KSB7XFxuICAuZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIHtcXG4gICAgaGVpZ2h0OiA5MCU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcbiAgLmZ1aS1mdWxsc2NyZWVuLXJlbGF0aXZlLWNvbnRhaW5lciB2aWRlbyB7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuICAuZnVpLWZ1bGxzY3JlZW4tcmVsYXRpdmUtY29udGFpbmVyIGltZyB7XFxuICAgIGhlaWdodDogYXV0bztcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxufVxcblxcbi5idXR0b24tZnVsbC1zY3JlZW4ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxufVwiKTtcblxudmFyIEZ1bGxTY3JlZW4gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgb3BlbiA9IHByb3BzLm9wZW4sIG9uQ2xvc2UgPSBwcm9wcy5vbkNsb3NlLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICAgIGZ1bmN0aW9uIGhhbmRsZUNsb3NlKGUpIHtcbiAgICAgICAgLy9hdm9pZCBjaGlsZHJlbiB0byB0cmlnZ2VyIG9uQ2xpY2sgcmlwcGxlIGZyb20gcGFyZW50XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uQ2xvc2UgPT09IG51bGwgfHwgb25DbG9zZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbG9zZSgpO1xuICAgIH1cbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaGFuZGxlQ2xvc2VFc2MgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgICAgICBpZiAoZXZ0LmtleSA9PT0gXCJFc2NhcGVcIilcbiAgICAgICAgICAgICAgICBvbkNsb3NlID09PSBudWxsIHx8IG9uQ2xvc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImFkZGluZyBsaXN0ZW5lclwiKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlQ2xvc2VFc2MpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcInJlbW92aW5nIGxpc3RlbmVyXCIpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlQ2xvc2VFc2MpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBvcGVuID8gXCJmdWktZnVsbHNjcmVlbi1jb250YWluZXIgc2hvdy1mc1wiIDogXCJmdWktZnVsbHNjcmVlbi1jb250YWluZXJcIiwgb25DbGljazogaGFuZGxlQ2xvc2UgfSxcbiAgICAgICAgb3BlbiAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJmdWktZnVsbHNjcmVlbi1yZWxhdGl2ZS1jb250YWluZXJcIiwgb25DbGljazogaGFuZGxlQ2xvc2UgfSwgY2hpbGRyZW4pKSxcbiAgICAgICAgb25DbG9zZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhciwgeyBjb2xvcjogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIiwgb25DbGljazogaGFuZGxlQ2xvc2UsIGNvbG9yRmlsbDogXCJ0cmFuc3BhcmVudFwiLCBjbGFzc05hbWU6IFwiYnV0dG9uLWZ1bGwtc2NyZWVuXCIsIHNpemU6IFwiZXh0cmEtbGFyZ2VcIiB9KSkpKTtcbn07XG5cbnZhciBWaWRlb1ByZXZpZXcgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdmlkZW9TcmMgPSBwcm9wcy5zcmMsIFxuICAgIC8qIGF1dG9QbGF5LCBjb250cm9scywgICovXG4gICAgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBvdGhlcnMgPSBfX3Jlc3QocHJvcHMsIFtcInNyY1wiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCJdKTtcbiAgICB2YXIgdmlkZW9SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKSwgc291cmNlID0gX2FbMF0sIHNldFNvdXJjZSA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vaWYgbm90IHVuZGVmaW5lZFxuICAgICAgICBpZiAoIXZpZGVvU3JjKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2aWRlb1NyYyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgLy9pZiBhIHVybCBzdHJpbmcgaXMgZ2l2ZW4sIGFzc2lnbiBpdCBkaXJlY3RseVxuICAgICAgICAgICAgc2V0U291cmNlKHZpZGVvU3JjKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vaWYgYSBGaWxlIG9iamVjdCBpcyBnaXZlbiwgY2hlY2sgaWYgaXMgYSBzdXBwb3J0ZWQgZm9ybWF0XG4gICAgICAgICAgICB2YXIgaGVhZGVyTWltZSA9IHZpZGVvU3JjLnR5cGUgPyB2aWRlb1NyYy50eXBlLnNwbGl0KFwiL1wiKVswXSA6IFwib2N0ZXRcIjtcbiAgICAgICAgICAgIHZhciB0YWlsTWltZSA9IHZpZGVvU3JjLnR5cGUgPyB2aWRlb1NyYy50eXBlLnNwbGl0KFwiL1wiKVsxXSA6IFwib2N0ZXRcIjtcbiAgICAgICAgICAgIGlmIChoZWFkZXJNaW1lID09PSBcInZpZGVvXCIgJiYgW1wibXA0XCIsIFwib2dnXCIsIFwid2VibVwiXS5pbmNsdWRlcyh0YWlsTWltZSkpIHtcbiAgICAgICAgICAgICAgICAvL3NldCB0aGUgdmlkZW8gc291cmNlIGFuZCBjcmVhdGUgdGhlIHVyaSBzdHJpbmcgaWYgaXMgYSBzdXBwb3J0ZWQgdmlkZW8gZm9ybWF0XG4gICAgICAgICAgICAgICAgdmFyIG5ld1ZpZGVvU3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh2aWRlb1NyYyk7XG4gICAgICAgICAgICAgICAgc2V0U291cmNlKG5ld1ZpZGVvU3JjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFt2aWRlb1NyY10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChzb3VyY2UgJiYgdmlkZW9SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgdmlkZW9SZWYuY3VycmVudC5sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9LCBbc291cmNlXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCB2aWRlb1NyYyAmJiBzb3VyY2UgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ2aWRlb1wiLCBfX2Fzc2lnbiQxKHsgb25DbGljazogZnVuY3Rpb24gKGV2dCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0sIFxuICAgICAgICAvL29uTG9hZGVkTWV0YWRhdGE9e2hhbmRsZUxvYWRlZH1cbiAgICAgICAgaWQ6IFwiZmlsZXMtdWktdmlkZW9cIiwgXG4gICAgICAgIC8vY29udHJvbHM9e2NvbnRyb2xzfVxuICAgICAgICByZWY6IHZpZGVvUmVmLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB8fCBcImZpbGVzdWktdmlkZW8tcHJldmlld1wiLCBcbiAgICAgICAgLy9hdXRvUGxheT17YXV0b3BsYXl9XG4gICAgICAgIHNyYzogc291cmNlLCBcbiAgICAgICAgLy93aWR0aD17XCIxMDAlXCJ9XG4gICAgICAgIGhlaWdodDogXCIxMDAlXCIsIHN0eWxlOiBzdHlsZSB9LCBvdGhlcnMpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIsIHsgdHlwZTogXCJ2aWRlby93ZWJtXCIgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzb3VyY2VcIiwgeyB0eXBlOiBcInZpZGVvL29nZ1wiIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic291cmNlXCIsIHsgdHlwZTogXCJ2aWRlby9tcDRcIiB9KSkpKSk7XG59O1xuXG52YXIgRmlsZXNVaVByb3ZpZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGNvbmZpZyA9IHByb3BzLmNvbmZpZztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmlsZXNVaUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbmZpZyB8fCB7fSB9LCBjaGlsZHJlbikpO1xufTtcblxuZXhwb3J0IHsgQUJPUlRFRF9FUlJPUl9SRVNQT05TRSwgQXZhdGFyLCBEcm9wem9uZSwgRHJvcHpvbmVFbmdsaXNoLCBEcm9wem9uZUZyZW5jaCwgRHJvcHpvbmVJdGFsaWFuLCBEcm9wem9uZUxvY2FsaXplciwgRHJvcHpvbmVMb2NhbGl6ZXJTZWxlY3RvciwgRHJvcHpvbmVQb3J0dWd1ZXNlLCBEcm9wem9uZVJ1c3NpYW4sIERyb3B6b25lU2ltcGxpZmllZENoaW5lc2UsIERyb3B6b25lU3BhbmlzaCwgRHJvcHpvbmVUcmFkaXRpb25hbENoaW5lc2UsIEV4dEZpbGVJbnN0YW5jZSwgRmlsZUNhcmQsIEZpbGVJZEdlbmVyYXRvciwgRmlsZUlucHV0QnV0dG9uLCBGaWxlSXRlbUVuZ2xpc2gsIEZpbGVJdGVtRnJlbmNoLCBGaWxlSXRlbUl0YWxpYW4sIEZpbGVJdGVtTG9jYWxpemVyLCBGaWxlSXRlbUxvY2FsaXplclNlbGVjdG9yLCBGaWxlSXRlbVBvcnR1Z3Vlc2UsIEZpbGVJdGVtUnVzc2lhbiwgRmlsZUl0ZW1TaW1wbGlmaWVkQ2hpbmVzZSwgRmlsZUl0ZW1TcGFuaXNoLCBGaWxlSXRlbVRyYWRpdGlvbmFsQ2hpbmVzZSwgRmlsZU1vc2FpYywgRmlsZXNVaVByb3ZpZGVyLCBGdWxsU2NyZWVuLCBJbWFnZVByZXZpZXcsIEpTT05fUEFSU0VfRVJST1JfUkVTUE9OU0UsIEpzb25QYXJzZVJlc3BvbnNlLCBNYXRlcmlhbEJ1dHRvbiwgTkFNRURfQ09MT1JTLCBOT19YSFJfUFJPVklERURfRVJST1IsIFN5bnRoZXRpY0ZpbGUsIFRJTUVPVVRfRVJST1JfUkVTUE9OU0UsIFVORVhQRUNURURfRVJST1JfUkVTUE9OU0UsIFZhbGlkYXRlRXJyb3JFbmdsaXNoLCBWYWxpZGF0ZUVycm9yRnJlbmNoLCBWYWxpZGF0ZUVycm9ySXRhbGlhbiwgVmFsaWRhdGVFcnJvckxvY2FsaXplciwgVmFsaWRhdGVFcnJvckxvY2FsaXplclNlbGVjdG9yLCBWYWxpZGF0ZUVycm9yUG9ydHVndWVzZSwgVmFsaWRhdGVFcnJvclJ1c3NpYW4sIFZhbGlkYXRlRXJyb3JTaW1wbGlmaWVkQ2hpbmVzZSwgVmFsaWRhdGVFcnJvclNwYW5pc2gsIFZhbGlkYXRlRXJyb3JUcmFkaXRpb25hbENoaW5lc2UsIFZpZGVvUHJldmlldywgYWFjLCBhYncsIGFjY2RiLCBhZGRDbGFzc05hbWUsIGFkZEV4dHJhRGF0YSwgYWRkSGVhZGVycywgYXN1cmVDb2xvciwgY2xlYW5JbnB1dCwgY29sb3VyTmFtZVRvSGV4LCBjb21wbGV0ZUFzdXJlQ29sb3IsIGNvbXBsZXRlVXBsb2FkUmVzdWx0LCBjcmVhdGVMaXN0T2ZNdWx0aVR5cGVGaWxlLCBjcmVhdGVTeW50aGV0aWNGaWxlLCBjcmVhdGVVcGxvYWRDb25maWcsIGRhcmtlckNvbG9yLCBleHRGaWxlTW9jaywgZXh0RmlsZVJlY29uY2lsYXRpb24sIGZha2VGdWlVcGxvYWQsIGZpbGVMaXN0VG9FeHRGaWxlQXJyYXksIGZpbGVMaXN0VG9FeHRGaWxlSW5zdGFuY2VBcnJheSwgZmlsZUxpc3R2YWxpZGF0b3IsIGZpbGVTaXplRm9ybWF0ZXIsIGdldEV4dCwgZ2V0SW1hZ2VPcmllbnRhdGlvbiwgZ2V0TG9jYWxGaWxlSXRlbURhdGEsIGdldFJhbmRvbUludCwgZ2V0VVJMRmlsZUljbywgZ2V0VVJMRmlsZUljb0Zyb21OYW1lQW5kVHlwZSwgaGV4Q29sb3JUb1JHQiwgaGV4VG9kZWMsIGluc3RhbnRQcmVwYXJpbmdUb1VwbG9hZE9uZSwgaXNIZXhDb2xvciwgaXNVcGxvYWRBYmxlRXh0RmlsZSwgaXNWYWxpZGF0ZUFjdGl2ZSwgbWFrZUVycm9yVXBsb2FkUmVzcG9uc2UsIG1ha2VTZXJ2ZXJSZXNwb25zZSwgbWFrZVN1Y2Nlc3NVcGxvYWRSZXNwb25zZSwgbWFrZVN5bnRoZXRpY0V4dEZpbGUsIHByZXBUb1VwbG9hZE9uZSwgcHJlcGFyaW5nVG9VcGxvYWRPbmUsIHJlYWRBc0FycmF5QnVmZmVyLCByZWFkQXNCaW5hcnlTdHJpbmcsIHJlYWRBc0RhdGFVUkwsIHJlYWRBc1RleHQsIHJlc2l6ZUltYWdlLCBzYW5pdGl6ZUFyckV4dEZpbGUsIHNlcGFyYXRlQWNjZXB0LCBzZXROZXh0VXBsb2FkU3RhdHVzLCBzZXRQcmVwVG9VcGxvYWRpbmcsIHNocmlua1dvcmQsIHNsZWVwUHJlcGFyaW5nLCBzbGVlcFRyYW5zaXRpb24sIHRvVXBsb2FkYWJsZUV4dEZpbGVMaXN0LCB1bmFibGVUb1VwbG9hZFJlc3VsdCwgdW5leHBlY3RlZEVycm9yVXBsb2FkUmVzdWx0LCB1cGxvYWRFeHRGaWxlLCB1cGxvYWRGaWxlLCB1cGxvYWRGb3JtRGF0YSwgdXBsb2FkT25lLCB1cGxvYWRPbmVFeHRGaWxlLCB1c2VGYWtlUHJvZ3Jlc3MsIHZhbGlkYXRlQWNjZXB0LCB2YWxpZGF0ZUV4dEZpbGUsIHZhbGlkYXRlRXh0RmlsZUxpc3QsIHZhbGlkYXRlRmlsZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguZXMuanMubWFwXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9wcm9wLXR5cGVzICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlUmVmLFxuICB1c2VNZW1vLFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxuICB1c2VDYWxsYmFjayxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBEcm9wem9uZSwgRmlsZU1vc2FpYyB9IGZyb20gXCJAZmlsZXMtdWkvcmVhY3RcIjtcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tIFwiLi9NZXNzYWdlXCI7XG5pbXBvcnQgeyBBd2FpdCB9IGZyb20gXCIuL0F3YWl0XCI7XG5pbXBvcnQgeyBMb2FkaW5nSW5mbyB9IGZyb20gXCIuL0xvYWRpbmdJbmZvXCI7XG5cbmNvbnN0IFNpbmdsZU5ld0RpciA9ICh7IG5hbWUsIGVkaXQsIHNldE5ld0RpciwgaWR4IH0pID0+IHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IFtfbmFtZSwgc2V0TmFtZV0gPSB1c2VTdGF0ZShuYW1lIHx8IFwiXCIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVkaXQpIHtcbiAgICAgIHJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbcmVmLCBlZGl0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX25hbWUuaW5kZXhPZihcIi9cIikgPiAtMSkge1xuICAgICAgY29uc3QgZGlycyA9IF9uYW1lLnNwbGl0KFwiL1wiLCAyKTtcbiAgICAgIHNldE5hbWUoZGlyc1swXSk7XG4gICAgICBjb25zdCBhZGQgPSB7IG5hbWU6IGRpcnNbMV0sIGVkaXQ6IHRydWUgfTtcbiAgICAgIHNldE5ld0Rpcih7IG5hbWU6IGRpcnNbMF0sIGVkaXQ6IGZhbHNlIH0sIGlkeCwgYWRkKTtcbiAgICB9XG4gIH0sIFtfbmFtZSwgc2V0TmV3RGlyLCBpZHhdKTtcblxuICBpZiAoIWVkaXQpIHtcbiAgICBjb25zdCBvbkNsaWNrID0gKCkgPT4ge1xuICAgICAgc2V0TmV3RGlyKHsgbmFtZTogX25hbWUsIGVkaXQ6IHRydWUgfSwgaWR4KTtcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgICBzdHlsZT17eyBwYWRkaW5nTGVmdDogXCIwLjFyZW1cIiwgcGFkZGluZ1JpZ2h0OiBcIjByZW1cIiB9fVxuICAgICAgPlxuICAgICAgICB7X25hbWV9L1xuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKGUpID0+IHtcbiAgICBzZXROYW1lKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBvbkJsdXIgPSAoZSkgPT4ge1xuICAgIGlmIChlLnJlbGF0ZWRUYXJnZXQ/LmNsYXNzTGlzdC5jb250YWlucyhcImNhb3NkYi1mLWNhbmNlbC1uZXctZGlyZWN0b3J5XCIpKSB7XG4gICAgICBzZXROZXdEaXIoeyBlZGl0OiBmYWxzZSB9LCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXROZXdEaXIoeyBuYW1lOiBfbmFtZSwgZWRpdDogZmFsc2UgfSwgaWR4KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlKSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIHNldE5ld0Rpcih7IG5hbWU6IF9uYW1lLCBlZGl0OiBmYWxzZSB9LCBpZHgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8c3BhbiBjbGFzc05hbWU9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIHZhbHVlPXtfbmFtZX1cbiAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIHRpdGxlPVwiSW5zZXJ0IG5ldyBkaXJlY3RvcnkgbmFtZS4gQSBkaXJlY3RvcnkgbmFtZSBtdXN0IG5vdCBjb250YWluIHRoZSBzbGFzaCAnLycuXCJcbiAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAvPlxuICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNhb3NkYi1mLWNhbmNlbC1uZXctZGlyZWN0b3J5XCI+XG4gICAgICAgIDxpIGNsYXNzTmFtZT1cImJpIGJpLXhcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIj5cbiAgICAgICAgPGkgY2xhc3NOYW1lPVwiYmkgYmktY2hlY2tcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuICApO1xufTtcblxuY29uc3QgTmV3RGlycyA9ICh7IHNldERpcmVjdG9yeSwgdmFsdWUgfSkgPT4ge1xuICBjb25zdCBbbmV3RGlycywgc2V0TmV3RGlyc10gPSB1c2VTdGF0ZShcbiAgICB2YWx1ZS5tYXAoKGQpID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGQgfTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBzZXRTaW5nbGVOZXdEaXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZCwgaWR4LCBhZGQpID0+IHtcbiAgICAgIHZhciBfbmV3RGlycyA9IFtdLmNvbmNhdChuZXdEaXJzKTtcbiAgICAgIGlmIChkLm5hbWUpIHtcbiAgICAgICAgX25ld0RpcnNbaWR4XSA9IGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfbmV3RGlycyA9IF9uZXdEaXJzLnNsaWNlKDAsIGlkeCkuY29uY2F0KF9uZXdEaXJzLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgX25ld0RpcnMgPSBfbmV3RGlyc1xuICAgICAgICAgIC5zbGljZSgwLCBpZHggKyAxKVxuICAgICAgICAgIC5jb25jYXQoW2FkZF0sIF9uZXdEaXJzLnNsaWNlKGlkeCArIDEpKTtcbiAgICAgIH1cbiAgICAgIHNldE5ld0RpcnMoX25ld0RpcnMpO1xuICAgICAgc2V0RGlyZWN0b3J5KF9uZXdEaXJzLm1hcCgoZCkgPT4gZC5uYW1lKSk7XG4gICAgfSxcbiAgICBbbmV3RGlycywgc2V0TmV3RGlycywgc2V0RGlyZWN0b3J5XSxcbiAgKTtcblxuICBjb25zdCBhZGREaXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgX25ld0RpcnMgPSBuZXdEaXJzLm1hcCgoZCkgPT4ge1xuICAgICAgcmV0dXJuIHsgLi4uZCwgZWRpdDogZmFsc2UgfTtcbiAgICB9KTtcbiAgICBfbmV3RGlycy5wdXNoKHsgZWRpdDogdHJ1ZSB9KTtcbiAgICBzZXROZXdEaXJzKF9uZXdEaXJzKTtcbiAgfSwgW25ld0RpcnMsIHNldE5ld0RpcnNdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7bmV3RGlycy5tYXAoKG5ld0RpciwgaWR4KSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNpbmdsZU5ld0RpclxuICAgICAgICAgICAga2V5PXtgJHtuZXdEaXIubmFtZX0tJHtpZHh9YH1cbiAgICAgICAgICAgIGlkeD17aWR4fVxuICAgICAgICAgICAgbmFtZT17bmV3RGlyLm5hbWV9XG4gICAgICAgICAgICBzZXROZXdEaXI9e3NldFNpbmdsZU5ld0Rpcn1cbiAgICAgICAgICAgIGVkaXQ9e25ld0Rpci5lZGl0fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KX1cbiAgICAgIHtuZXdEaXJzLmZpbHRlcigoZCkgPT4gZC5lZGl0KS5sZW5ndGggPiAwIHx8IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cIm1zLWF1dG8gYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gYWRkRGlyKCl9XG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzc05hbWU9XCJiaSBiaS1mb2xkZXItcGx1c1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IERpcmVjdG9yeUZpZWxkID0gKHtcbiAgZGlyZWN0b3J5QmFzZSxcbiAgcmVhZE9ubHksXG4gIHZhbHVlLFxuICBzZXREaXJlY3RvcnksXG4gIGxhYmVsLFxufSkgPT4ge1xuICBjb25zdCBfbGFiZWwgPSBsYWJlbCB8fCBcIkRpcmVjdG9yeVwiO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWItMSByb3cgY2Fvc2RiLWYtZmlsZS11cGxvYWQtZGlyZWN0b3J5LWlucHV0XCI+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57X2xhYmVsfTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS05IGQtZmxleFwiPlxuICAgICAgICB7IWRpcmVjdG9yeUJhc2UgfHwgKFxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCJ1bnNldFwiLCBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2wtcGxhaW50ZXh0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZGlyZWN0b3J5QmFzZS5qb2luKFwiL1wiKSArIFwiL1wifVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgICAge3JlYWRPbmx5IHx8IDxOZXdEaXJzIHNldERpcmVjdG9yeT17c2V0RGlyZWN0b3J5fSB2YWx1ZT17dmFsdWV9IC8+fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBTZWxlY3QgPSAoeyBvcHRpb25zLCBvbkNoYW5nZSwgdmFsdWUsIGNsYXNzTmFtZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPHNlbGVjdCBjbGFzc05hbWU9e2NsYXNzTmFtZX0gb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17dmFsdWV9PlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxuICAgICAge29wdGlvbnMubWFwKChvLCBpZHgpID0+IChcbiAgICAgICAgPG9wdGlvbiBrZXk9e2lkeH0gdmFsdWU9e28udmFsdWV9IHRpdGxlPXtvLnRpdGxlfT5cbiAgICAgICAgICB7by5sYWJlbCB8fCBvLnZhbHVlfVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgICkpfVxuICAgIDwvc2VsZWN0PlxuICApO1xufTtcblxuY29uc3QgUmVjb3JkVHlwZUZpZWxkID0gKHsgb3B0aW9ucywgdmFsdWUsIG9uQ2hhbmdlLCBsYWJlbCB9KSA9PiB7XG4gIGNvbnN0IF9sYWJlbCA9IGxhYmVsIHx8IFwiUmVjb3JkVHlwZVwiO1xuICBjb25zdCBfcmVhZE9ubHkgPSAhb3B0aW9ucztcbiAgY29uc3QgY2xhc3NOYW1lID0gX3JlYWRPbmx5ID8gXCJmb3JtLWNvbnRyb2wtcGxhaW50ZXh0XCIgOiBcImZvcm0tY29udHJvbFwiO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYi0xIHJvdyBjYW9zZGItZi1maWxlLXVwbG9hZC1yZWNvcmR0eXBlLXNlbGVjdFwiPlxuICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInBlLTEgY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57X2xhYmVsfTwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS05XCI+XG4gICAgICAgIHshX3JlYWRPbmx5IHx8IChcbiAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHJlYWRPbmx5PXtfcmVhZE9ubHl9IHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAge19yZWFkT25seSB8fCAoXG4gICAgICAgICAgPEF3YWl0XG4gICAgICAgICAgICBwcm9taXNlPXtQcm9taXNlLmFsbChbb3B0aW9ucywgdmFsdWVdKX1cbiAgICAgICAgICAgIHRoZW49eyhyZXNvbHZlZCkgPT4gKFxuICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17cmVzb2x2ZWRbMF19XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtyZXNvbHZlZFsxXX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgRmlsZSA9ICh7IGZpbGUsIHJlbW92ZUZpbGUgfSkgPT4ge1xuICByZXR1cm4gPEZpbGVNb3NhaWMgey4uLmZpbGV9IG9uRGVsZXRlPXtyZW1vdmVGaWxlfSAvPjtcbn07XG5cbmNvbnN0IEZpbGVVcGxvYWRGYWlsZWQgPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPE1lc3NhZ2UgdHlwZT1cImVycm9yXCI+XG4gICAgICB7XCJUaGUgZmlsZSB1cGxvYWQgZmFpbGVkOiBcIn1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L01lc3NhZ2U+XG4gICk7XG59O1xuXG5jb25zdCBGaWxlVXBsb2FkU3VjY2VzcyA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAge2NoaWxkcmVuIHx8IChcbiAgICAgICAgPE1lc3NhZ2UgdHlwZT1cInN1Y2Nlc3NcIj5Zb3VyIGZpbGVzIGhhdmUgYmVlbiB1cGxvYWRlZC48L01lc3NhZ2U+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgU2luZ2xlRmlsZVJlc3BvbnNlID0gKHsgZGlyZWN0b3J5LCBmaWxlLCByZXNwb25zZUVycm9ycyB9KSA9PiB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChyZXNwb25zZUVycm9ycykge1xuICAgIHJlc3VsdCA9IChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTZcIj57ZmlsZS5wYXRoLnJlcGxhY2VBbGwoZGlyZWN0b3J5LCBcIlwiKX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tNiB0ZXh0LWVuZFwiPlxuICAgICAgICAgIHtmaWxlLmVycm9yID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWRhbmdlclwiPntmaWxlLmVycm9yfTwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJ0ZXh0LXN1Y2Nlc3MgYmkgYmktY2hlY2tcIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02XCI+e2ZpbGUucGF0aC5yZXBsYWNlQWxsKGRpcmVjdG9yeSwgXCJcIil9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTRcIj57ZmlsZS5pZH08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tMiB0ZXh0LWVuZFwiPlxuICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImJ0biBjYW9zZGItZnMtYnRuLWZpbGVcIiBocmVmPXtmaWxlLnVybH0+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZSBjYW9zZGItbGFiZWwtZmlsZVwiPkY8L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9XCJsaXN0LWdyb3VwLWl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+e3Jlc3VsdH08L2Rpdj5cbiAgICA8L2xpPlxuICApO1xufTtcblxuY29uc3QgaGFuZGxlUmVzcG9uc2UgPSAocmVzcG9uc2UpID0+IHtcbiAgdmFyIGhlYWRlciA9IHJlc3BvbnNlLmhhc0Vycm9ycyA/IChcbiAgICA8TWVzc2FnZSB0eXBlPVwiZXJyb3JcIj5UaGUgZmlsZSB1cGxvYWQgZmFpbGVkLjwvTWVzc2FnZT5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPE1lc3NhZ2UgdHlwZT1cInN1Y2Nlc3NcIj5Zb3VyIGZpbGVzIGhhdmUgYmVlbiB1cGxvYWRlZC48L01lc3NhZ2U+XG4gICAgICB7IXJlc3BvbnNlLnVybCB8fCAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItM1wiPlxuICAgICAgICAgIEdvIHRvIGRpcmVjdG9yeTogPGEgaHJlZj17cmVzcG9uc2UudXJsfT57cmVzcG9uc2UuZGlyZWN0b3J5fTwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7aGVhZGVyfVxuICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02XCI+PC9kaXY+XG4gICAgICAgICAgICB7cmVzcG9uc2UuaGFzRXJyb3JzID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IHRleHQtZW5kIGZ3LWJvbGRcIj5FcnJvcjwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS0zIGZ3LWJvbGRcIj5JRDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTMgdGV4dC1lbmQgZnctYm9sZFwiPkZpbGUgRW50aXR5PC9kaXY+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAge3Jlc3BvbnNlLm5ld0ZpbGVzPy5tYXAoKGYsIGlkeCkgPT4gKFxuICAgICAgICAgIDxTaW5nbGVGaWxlUmVzcG9uc2VcbiAgICAgICAgICAgIHJlc3BvbnNlRXJyb3JzPXtyZXNwb25zZS5oYXNFcnJvcnN9XG4gICAgICAgICAgICBkaXJlY3Rvcnk9e3Jlc3BvbnNlLmRpcmVjdG9yeX1cbiAgICAgICAgICAgIGZpbGU9e2Z9XG4gICAgICAgICAgICBrZXk9e2lkeH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCB0b0RpcmVjdG9yeUFycmF5ID0gKGRpcikgPT4ge1xuICBpZiAoZGlyPy5zcGxpdCkge1xuICAgIHJldHVybiBkaXIuc3BsaXQoXCIvXCIpLmZpbHRlcigoeCkgPT4geCk7XG4gIH1cbiAgcmV0dXJuIGRpcjtcbn07XG5cbmNvbnN0IEZpbGVVcGxvYWQgPSAoe1xuICBmaWxlcyxcbiAgb25DYW5jZWwsXG4gIHJlY29yZFR5cGVTaG93LFxuICByZWNvcmRUeXBlcyxcbiAgZGlyZWN0b3J5QmFzZSxcbiAgZGlyZWN0b3J5LFxuICBkaXJlY3RvcnlSZWFkT25seSxcbiAgZGlyZWN0b3J5U2hvdyxcbiAgcmVjb3JkVHlwZSxcbiAgb25DaGFuZ2UsXG4gIG9uU3VibWl0LFxuICBhY2NlcHQsXG4gIHN0YXRlLFxuICBvbkZpbmlzaCxcbn0pID0+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,"&lt;")),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_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.internal.AMP_RE_,"&amp;")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.internal.LT_RE_,"&lt;")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.internal.GT_RE_,"&gt;")),-1!=e.indexOf(\'"\')&&(e=e.replace(goog.string.internal.QUOT_RE_,"&quot;")),-1!=e.indexOf("\'")&&(e=e.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;")),-1!=e.indexOf("\\0")&&(e=e.replace(goog.string.internal.NULL_RE_,"&#0;"))}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," &#160;"),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_,"&#101;")),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={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'},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," &#160;"),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,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 Q=__webpack_module_cache__[F];if(void 0!==Q)return Q.exports;var l=__webpack_module_cache__[F]={exports:{}};return __webpack_modules__[F](l,l.exports,__webpack_require__),l.exports}__webpack_require__.n=F=>{var Q=F&&F.__esModule?()=>F.default:()=>F;return __webpack_require__.d(Q,{a:Q}),Q},__webpack_require__.d=(F,Q)=>{for(var l in Q)__webpack_require__.o(Q,l)&&!__webpack_require__.o(F,l)&&Object.defineProperty(F,l,{enumerable:!0,get:Q[l]})},__webpack_require__.o=(F,Q)=>Object.prototype.hasOwnProperty.call(F,Q),__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