@phenixrts/sdk 2025.2.4-beta.656 → 2025.2.4-beta.657
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/channels/debug/channels.js +155 -79
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +155 -79
- package/channels/debug.private/package.json +1 -1
- package/channels/debug.provideGlobalScope/channels.js +155 -79
- package/channels/debug.provideGlobalScope/package.json +1 -1
- package/channels/es5.debug.private/channels.js +143 -70
- package/channels/es5.debug.private/package.json +1 -1
- package/channels/min/channels.js +1 -1
- package/channels/min/channels.js.map +1 -1
- package/channels/min/package.json +1 -1
- package/channels/min.private/channels.js +1 -1
- package/channels/min.private/channels.js.map +1 -1
- package/channels/min.private/package.json +1 -1
- package/channels/min.provideGlobalScope/channels.js +1 -1
- package/channels/min.provideGlobalScope/channels.js.map +1 -1
- package/channels/min.provideGlobalScope/package.json +1 -1
- package/channels/package.json +1 -1
- package/full/debug/full.js +155 -79
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +155 -79
- package/full/debug.private/package.json +1 -1
- package/full/min/full.js +1 -1
- package/full/min/full.js.map +1 -1
- package/full/min/package.json +1 -1
- package/full/min.private/full.js +1 -1
- package/full/min.private/full.js.map +1 -1
- package/full/min.private/package.json +1 -1
- package/full/package.json +1 -1
- package/package.json +1 -1
- package/publish/debug/package.json +1 -1
- package/publish/debug/publish.js +155 -79
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +155 -79
- package/publish/min/package.json +1 -1
- package/publish/min/publish.js +1 -1
- package/publish/min/publish.js.map +1 -1
- package/publish/min.private/package.json +1 -1
- package/publish/min.private/publish.js +1 -1
- package/publish/min.private/publish.js.map +1 -1
- package/publish/package.json +1 -1
- package/types/sdk/discovery/PcastUri.d.ts +6 -0
- package/types/sdk/replay/ReplayApi.d.ts +16 -0
|
@@ -5341,6 +5341,7 @@ var DiscoveryService = /*#__PURE__*/function () {
|
|
|
5341
5341
|
/* harmony import */ var _version_VersionManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../version/VersionManager */ "./src/sdk/version/VersionManager.ts");
|
|
5342
5342
|
/* harmony import */ var _environment_Parameters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../environment/Parameters */ "./src/environment/Parameters.ts");
|
|
5343
5343
|
/* harmony import */ var _defaults__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../defaults */ "./src/sdk/defaults.ts");
|
|
5344
|
+
/* harmony import */ var _PcastUri__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PcastUri */ "./src/sdk/discovery/PcastUri.ts");
|
|
5344
5345
|
|
|
5345
5346
|
|
|
5346
5347
|
|
|
@@ -5353,6 +5354,7 @@ var DiscoveryService = /*#__PURE__*/function () {
|
|
|
5353
5354
|
|
|
5354
5355
|
|
|
5355
5356
|
|
|
5357
|
+
|
|
5356
5358
|
var DiscoveryUri = /*#__PURE__*/function () {
|
|
5357
5359
|
function DiscoveryUri() {
|
|
5358
5360
|
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default()(this, DiscoveryUri);
|
|
@@ -5373,7 +5375,7 @@ var DiscoveryUri = /*#__PURE__*/function () {
|
|
|
5373
5375
|
url.searchParams.set('intentions', intentions);
|
|
5374
5376
|
url.searchParams.set('_', "".concat(Date.now()));
|
|
5375
5377
|
if (url.pathname === '/') {
|
|
5376
|
-
url.pathname =
|
|
5378
|
+
url.pathname = _PcastUri__WEBPACK_IMPORTED_MODULE_8__["default"].discoveryPath;
|
|
5377
5379
|
}
|
|
5378
5380
|
return url.toString();
|
|
5379
5381
|
}
|
|
@@ -5396,30 +5398,29 @@ _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_help
|
|
|
5396
5398
|
/* harmony export */ });
|
|
5397
5399
|
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js */ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js");
|
|
5398
5400
|
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
5399
|
-
/* harmony import */ var
|
|
5400
|
-
/* harmony import */ var
|
|
5401
|
-
/* harmony import */ var
|
|
5402
|
-
/* harmony import */ var
|
|
5403
|
-
/* harmony import */ var
|
|
5404
|
-
/* harmony import */ var
|
|
5405
|
-
/* harmony import */ var
|
|
5406
|
-
/* harmony import */ var
|
|
5407
|
-
/* harmony import */ var
|
|
5408
|
-
/* harmony import */ var
|
|
5409
|
-
/* harmony import */ var
|
|
5410
|
-
/* harmony import */ var
|
|
5411
|
-
/* harmony import */ var
|
|
5412
|
-
/* harmony import */ var
|
|
5413
|
-
/* harmony import */ var
|
|
5414
|
-
/* harmony import */ var
|
|
5415
|
-
/* harmony import */ var
|
|
5416
|
-
/* harmony import */ var
|
|
5417
|
-
/* harmony import */ var
|
|
5418
|
-
/* harmony import */ var
|
|
5419
|
-
/* harmony import */ var
|
|
5420
|
-
/* harmony import */ var
|
|
5421
|
-
/* harmony import */ var
|
|
5422
|
-
/* harmony import */ var _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./BitrateModeMapping */ "./src/sdk/discovery/BitrateModeMapping.ts");
|
|
5401
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js");
|
|
5402
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
5403
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/defineProperty.js */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
|
|
5404
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
5405
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ "./node_modules/@babel/runtime/helpers/createClass.js");
|
|
5406
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
5407
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
|
|
5408
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
5409
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js */ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js");
|
|
5410
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
5411
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/getPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js");
|
|
5412
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6__);
|
|
5413
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/inherits.js */ "./node_modules/@babel/runtime/helpers/inherits.js");
|
|
5414
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7__);
|
|
5415
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js */ "./node_modules/@babel/runtime/helpers/wrapNativeSuper.js");
|
|
5416
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8__);
|
|
5417
|
+
/* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
|
|
5418
|
+
/* harmony import */ var _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../logger/LoggerFactory */ "./src/logger/LoggerFactory.ts");
|
|
5419
|
+
/* harmony import */ var _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../edgeAuth/EdgeAuthParser */ "./src/edgeAuth/EdgeAuthParser.ts");
|
|
5420
|
+
/* harmony import */ var _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../version/VersionManager */ "./src/sdk/version/VersionManager.ts");
|
|
5421
|
+
/* harmony import */ var _environment_Parameters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../environment/Parameters */ "./src/environment/Parameters.ts");
|
|
5422
|
+
/* harmony import */ var _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./BitrateModeMapping */ "./src/sdk/discovery/BitrateModeMapping.ts");
|
|
5423
|
+
/* harmony import */ var _PcastUri__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PcastUri */ "./src/sdk/discovery/PcastUri.ts");
|
|
5423
5424
|
/* harmony import */ var _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./BitrateStateMapping */ "./src/sdk/discovery/BitrateStateMapping.ts");
|
|
5424
5425
|
/* provided dependency */ var Promise = __webpack_require__(/*! ./src/promise/Promise */ "./src/promise/Promise.ts")["default"];
|
|
5425
5426
|
|
|
@@ -5431,13 +5432,12 @@ _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_help
|
|
|
5431
5432
|
|
|
5432
5433
|
|
|
5433
5434
|
|
|
5434
|
-
|
|
5435
5435
|
var _excluded = ["status", "streamId", "sharedSecret", "lag", "rtcConfiguration", "setRemoteDescriptionResponse", "createAnswerDescriptionResponse", "createOfferDescriptionResponse", "streamResponseContext"];
|
|
5436
5436
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5437
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
|
5437
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5438
5438
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
5439
5439
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
5440
|
-
function _callSuper(t, o, e) { return o =
|
|
5440
|
+
function _callSuper(t, o, e) { return o = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6___default()(o), _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_5___default()(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_6___default()(t).constructor) : o.apply(t, e)); }
|
|
5441
5441
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
5442
5442
|
/**
|
|
5443
5443
|
* Copyright 2026 Perform Content Services Limited. Confidential and Proprietary. All Rights Reserved.
|
|
@@ -5450,29 +5450,30 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
5450
5450
|
|
|
5451
5451
|
|
|
5452
5452
|
|
|
5453
|
+
|
|
5453
5454
|
var apiVersion = 7;
|
|
5454
5455
|
var FetchTimeoutError = /*#__PURE__*/function (_Error) {
|
|
5455
5456
|
function FetchTimeoutError() {
|
|
5456
|
-
|
|
5457
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4___default()(this, FetchTimeoutError);
|
|
5457
5458
|
return _callSuper(this, FetchTimeoutError, arguments);
|
|
5458
5459
|
}
|
|
5459
|
-
|
|
5460
|
-
return
|
|
5461
|
-
}(/*#__PURE__*/
|
|
5460
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_7___default()(FetchTimeoutError, _Error);
|
|
5461
|
+
return _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3___default()(FetchTimeoutError);
|
|
5462
|
+
}(/*#__PURE__*/_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_wrapNativeSuper_js__WEBPACK_IMPORTED_MODULE_8___default()(Error));
|
|
5462
5463
|
var EndPoint = /*#__PURE__*/function () {
|
|
5463
5464
|
function EndPoint(uri, timeout) {
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5467
|
-
|
|
5468
|
-
|
|
5465
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_4___default()(this, EndPoint);
|
|
5466
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_logger", _logger_LoggerFactory__WEBPACK_IMPORTED_MODULE_10__["default"].getLogger('EndPoint'));
|
|
5467
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_uri", void 0);
|
|
5468
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_timeoutDuration", void 0);
|
|
5469
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_roundTripTime", 0);
|
|
5469
5470
|
this._uri = uri;
|
|
5470
5471
|
this._timeoutDuration = timeout;
|
|
5471
5472
|
if (!timeout) {
|
|
5472
5473
|
throw new Error("End point requires a timeout");
|
|
5473
5474
|
}
|
|
5474
5475
|
}
|
|
5475
|
-
return
|
|
5476
|
+
return _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_3___default()(EndPoint, [{
|
|
5476
5477
|
key: "roundTripTime",
|
|
5477
5478
|
get: function get() {
|
|
5478
5479
|
return this._roundTripTime;
|
|
@@ -5485,7 +5486,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5485
5486
|
}, {
|
|
5486
5487
|
key: "ping",
|
|
5487
5488
|
value: function () {
|
|
5488
|
-
var _ping =
|
|
5489
|
+
var _ping = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
5489
5490
|
var url, start, requestOptions, response;
|
|
5490
5491
|
return _regenerator().w(function (_context) {
|
|
5491
5492
|
while (1) switch (_context.n) {
|
|
@@ -5524,7 +5525,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5524
5525
|
}, {
|
|
5525
5526
|
key: "subscribe",
|
|
5526
5527
|
value: function () {
|
|
5527
|
-
var _subscribe =
|
|
5528
|
+
var _subscribe = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee2(token, localSessionDescription, failureCount) {
|
|
5528
5529
|
var _options$onSubscribeR, _options$onSubscribeR4;
|
|
5529
5530
|
var options,
|
|
5530
5531
|
tenancy,
|
|
@@ -5548,7 +5549,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5548
5549
|
while (1) switch (_context2.n) {
|
|
5549
5550
|
case 0:
|
|
5550
5551
|
options = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : {};
|
|
5551
|
-
tenancy =
|
|
5552
|
+
tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_11__["default"].parseToken(token).tenancy;
|
|
5552
5553
|
if (tenancy) {
|
|
5553
5554
|
_context2.n = 1;
|
|
5554
5555
|
break;
|
|
@@ -5559,8 +5560,8 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5559
5560
|
});
|
|
5560
5561
|
case 1:
|
|
5561
5562
|
url = this.buildUrl([tenancy, 'stream', 'subscribe']).toString();
|
|
5562
|
-
formData = new
|
|
5563
|
-
clientVersion =
|
|
5563
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5564
|
+
clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__["default"].sdkVersion;
|
|
5564
5565
|
if (failureCount === 0 && localSessionDescription) {
|
|
5565
5566
|
requestBody = {
|
|
5566
5567
|
apiVersion: apiVersion,
|
|
@@ -5652,12 +5653,12 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5652
5653
|
}, {
|
|
5653
5654
|
key: "publish",
|
|
5654
5655
|
value: function () {
|
|
5655
|
-
var _publish =
|
|
5656
|
+
var _publish = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee3(name, token, localSessionDescription, failureCount) {
|
|
5656
5657
|
var tenancy, url, formData, clientVersion, bodyWithOffer, bodyWithoutOffer, start, fetchRequestOptions, httpResponse, jsonResponseBody, status, finished, publishResponse;
|
|
5657
5658
|
return _regenerator().w(function (_context3) {
|
|
5658
5659
|
while (1) switch (_context3.n) {
|
|
5659
5660
|
case 0:
|
|
5660
|
-
tenancy =
|
|
5661
|
+
tenancy = _edgeAuth_EdgeAuthParser__WEBPACK_IMPORTED_MODULE_11__["default"].parseToken(token).tenancy;
|
|
5661
5662
|
if (tenancy) {
|
|
5662
5663
|
_context3.n = 1;
|
|
5663
5664
|
break;
|
|
@@ -5668,8 +5669,8 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5668
5669
|
});
|
|
5669
5670
|
case 1:
|
|
5670
5671
|
url = this.buildUrl([tenancy, 'stream', 'publish']).toString();
|
|
5671
|
-
formData = new
|
|
5672
|
-
clientVersion =
|
|
5672
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5673
|
+
clientVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__["default"].sdkVersion;
|
|
5673
5674
|
if (failureCount === 0 && localSessionDescription) {
|
|
5674
5675
|
bodyWithOffer = {
|
|
5675
5676
|
apiVersion: apiVersion,
|
|
@@ -5752,13 +5753,13 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5752
5753
|
}, {
|
|
5753
5754
|
key: "setRemoteDescription",
|
|
5754
5755
|
value: function () {
|
|
5755
|
-
var _setRemoteDescription =
|
|
5756
|
+
var _setRemoteDescription = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee4(stream, sessionDescription) {
|
|
5756
5757
|
var url, formData, body, start, fetchRequestOptions, httpResponse, status, finished, setRemoteDescriptionResponse;
|
|
5757
5758
|
return _regenerator().w(function (_context4) {
|
|
5758
5759
|
while (1) switch (_context4.n) {
|
|
5759
5760
|
case 0:
|
|
5760
5761
|
url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'description', 'remote']).toString();
|
|
5761
|
-
formData = new
|
|
5762
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5762
5763
|
body = {
|
|
5763
5764
|
apiVersion: apiVersion,
|
|
5764
5765
|
sharedSecret: stream.sharedSecret,
|
|
@@ -5804,20 +5805,20 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5804
5805
|
}, {
|
|
5805
5806
|
key: "limitBitrate",
|
|
5806
5807
|
value: function () {
|
|
5807
|
-
var _limitBitrate =
|
|
5808
|
+
var _limitBitrate = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee5(stream, elapsedInMilliseconds, bitrateInBitsPerSecond, bitrateState, bitrateMode) {
|
|
5808
5809
|
var url, formData, body, start, fetchRequestOptions, httpResponse, status, finished;
|
|
5809
5810
|
return _regenerator().w(function (_context5) {
|
|
5810
5811
|
while (1) switch (_context5.n) {
|
|
5811
5812
|
case 0:
|
|
5812
5813
|
url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'bitrate']).toString();
|
|
5813
|
-
formData = new
|
|
5814
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5814
5815
|
body = {
|
|
5815
5816
|
apiVersion: apiVersion,
|
|
5816
5817
|
sharedSecret: stream.sharedSecret,
|
|
5817
5818
|
elapsedInMilliseconds: elapsedInMilliseconds,
|
|
5818
5819
|
bitrateInBitsPerSecond: bitrateInBitsPerSecond,
|
|
5819
5820
|
bitrateState: _BitrateStateMapping__WEBPACK_IMPORTED_MODULE_16__["default"].convertBitrateStateToBitrateStateType(bitrateState),
|
|
5820
|
-
bitrateMode:
|
|
5821
|
+
bitrateMode: _BitrateModeMapping__WEBPACK_IMPORTED_MODULE_14__["default"].convertBitrateModeToBitrateModeType(bitrateMode)
|
|
5821
5822
|
};
|
|
5822
5823
|
formData.append('jsonBody', JSON.stringify(body));
|
|
5823
5824
|
start = Date.now();
|
|
@@ -5846,7 +5847,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5846
5847
|
}, {
|
|
5847
5848
|
key: "addIceCandidates",
|
|
5848
5849
|
value: function () {
|
|
5849
|
-
var _addIceCandidates =
|
|
5850
|
+
var _addIceCandidates = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee6(stream, candidates, discoveryCompleted) {
|
|
5850
5851
|
var options,
|
|
5851
5852
|
url,
|
|
5852
5853
|
formData,
|
|
@@ -5863,7 +5864,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5863
5864
|
case 0:
|
|
5864
5865
|
options = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : [];
|
|
5865
5866
|
url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'ice', 'candidates']).toString();
|
|
5866
|
-
formData = new
|
|
5867
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5867
5868
|
body = {
|
|
5868
5869
|
apiVersion: apiVersion,
|
|
5869
5870
|
sharedSecret: stream.sharedSecret,
|
|
@@ -5908,13 +5909,13 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5908
5909
|
}, {
|
|
5909
5910
|
key: "destroyStream",
|
|
5910
5911
|
value: function () {
|
|
5911
|
-
var _destroyStream =
|
|
5912
|
+
var _destroyStream = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee7(stream, reason) {
|
|
5912
5913
|
var url, formData, body, fetchRequestOptions, start, httpResponse, status, finished, destroyStreamResponse;
|
|
5913
5914
|
return _regenerator().w(function (_context7) {
|
|
5914
5915
|
while (1) switch (_context7.n) {
|
|
5915
5916
|
case 0:
|
|
5916
5917
|
url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
|
|
5917
|
-
formData = new
|
|
5918
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5918
5919
|
body = {
|
|
5919
5920
|
apiVersion: apiVersion,
|
|
5920
5921
|
sharedSecret: stream.sharedSecret,
|
|
@@ -5959,13 +5960,13 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5959
5960
|
}, {
|
|
5960
5961
|
key: "destroyStreamOnUnmount",
|
|
5961
5962
|
value: function () {
|
|
5962
|
-
var _destroyStreamOnUnmount =
|
|
5963
|
+
var _destroyStreamOnUnmount = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee8(stream, reason) {
|
|
5963
5964
|
var _this = this;
|
|
5964
5965
|
var sendBeacon, url, formData, body;
|
|
5965
5966
|
return _regenerator().w(function (_context8) {
|
|
5966
5967
|
while (1) switch (_context8.n) {
|
|
5967
5968
|
case 0:
|
|
5968
|
-
sendBeacon =
|
|
5969
|
+
sendBeacon = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.sendBeacon;
|
|
5969
5970
|
if (sendBeacon) {
|
|
5970
5971
|
_context8.n = 1;
|
|
5971
5972
|
break;
|
|
@@ -5976,7 +5977,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5976
5977
|
return _context8.a(2);
|
|
5977
5978
|
case 1:
|
|
5978
5979
|
url = this.buildUrl([stream.tenancy, 'stream', stream.streamId, 'destroy']).toString();
|
|
5979
|
-
formData = new
|
|
5980
|
+
formData = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.FormData();
|
|
5980
5981
|
body = {
|
|
5981
5982
|
apiVersion: apiVersion,
|
|
5982
5983
|
sharedSecret: stream.sharedSecret,
|
|
@@ -5998,19 +5999,19 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
5998
5999
|
}, {
|
|
5999
6000
|
key: "fetchWithTimeout",
|
|
6000
6001
|
value: function () {
|
|
6001
|
-
var _fetchWithTimeout =
|
|
6002
|
+
var _fetchWithTimeout = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee9(url, requestOptions, timeoutDuration) {
|
|
6002
6003
|
var controller, timeout;
|
|
6003
6004
|
return _regenerator().w(function (_context9) {
|
|
6004
6005
|
while (1) switch (_context9.p = _context9.n) {
|
|
6005
6006
|
case 0:
|
|
6006
|
-
controller = new
|
|
6007
|
+
controller = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.AbortController();
|
|
6007
6008
|
timeout = null;
|
|
6008
6009
|
_context9.p = 1;
|
|
6009
6010
|
_context9.n = 2;
|
|
6010
|
-
return Promise.race([
|
|
6011
|
+
return Promise.race([_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.fetch(url, _objectSpread(_objectSpread({}, requestOptions), {}, {
|
|
6011
6012
|
signal: controller.signal
|
|
6012
6013
|
})), new Promise(function (_, reject) {
|
|
6013
|
-
timeout =
|
|
6014
|
+
timeout = _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.setTimeout(function () {
|
|
6014
6015
|
controller.abort();
|
|
6015
6016
|
reject(new FetchTimeoutError("Timed out [".concat(url, "]")));
|
|
6016
6017
|
}, timeoutDuration);
|
|
@@ -6020,7 +6021,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6020
6021
|
case 3:
|
|
6021
6022
|
_context9.p = 3;
|
|
6022
6023
|
if (timeout) {
|
|
6023
|
-
|
|
6024
|
+
_globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.clearTimeout(timeout);
|
|
6024
6025
|
}
|
|
6025
6026
|
return _context9.f(3);
|
|
6026
6027
|
case 4:
|
|
@@ -6036,7 +6037,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6036
6037
|
}, {
|
|
6037
6038
|
key: "executeFetchRequest",
|
|
6038
6039
|
value: function () {
|
|
6039
|
-
var _executeFetchRequest =
|
|
6040
|
+
var _executeFetchRequest = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee0(url, requestOptions, operation) {
|
|
6040
6041
|
var _t;
|
|
6041
6042
|
return _regenerator().w(function (_context0) {
|
|
6042
6043
|
while (1) switch (_context0.p = _context0.n) {
|
|
@@ -6064,18 +6065,14 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6064
6065
|
}, {
|
|
6065
6066
|
key: "buildUrl",
|
|
6066
6067
|
value: function buildUrl(path) {
|
|
6067
|
-
|
|
6068
|
-
var pathAsArray = uri.pathname.split('/');
|
|
6069
|
-
pathAsArray.length = pathAsArray.length - 1;
|
|
6070
|
-
uri.pathname = pathAsArray.concat.apply(pathAsArray, _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_1___default()(path)).join('/');
|
|
6071
|
-
return uri;
|
|
6068
|
+
return _PcastUri__WEBPACK_IMPORTED_MODULE_15__["default"].buildRouteUrl(this._uri, path);
|
|
6072
6069
|
}
|
|
6073
6070
|
}, {
|
|
6074
6071
|
key: "buildPingUrl",
|
|
6075
6072
|
value: function buildPingUrl() {
|
|
6076
|
-
var uri = new
|
|
6077
|
-
var sdkVersion =
|
|
6078
|
-
var intentions =
|
|
6073
|
+
var uri = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_9__["default"].value.URL(this._uri);
|
|
6074
|
+
var sdkVersion = _version_VersionManager__WEBPACK_IMPORTED_MODULE_12__["default"].sdkVersion;
|
|
6075
|
+
var intentions = _environment_Parameters__WEBPACK_IMPORTED_MODULE_13__["default"].discoveryParameters.intentions;
|
|
6079
6076
|
uri.searchParams.set('type', 'http');
|
|
6080
6077
|
uri.searchParams.set('version', sdkVersion);
|
|
6081
6078
|
uri.searchParams.set('intentions', intentions);
|
|
@@ -6085,7 +6082,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6085
6082
|
}, {
|
|
6086
6083
|
key: "parseJsonBody",
|
|
6087
6084
|
value: function () {
|
|
6088
|
-
var _parseJsonBody =
|
|
6085
|
+
var _parseJsonBody = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee1(response) {
|
|
6089
6086
|
var _t2;
|
|
6090
6087
|
return _regenerator().w(function (_context1) {
|
|
6091
6088
|
while (1) switch (_context1.p = _context1.n) {
|
|
@@ -6349,7 +6346,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6349
6346
|
}, {
|
|
6350
6347
|
key: "convertHttpResponseToSetRemoteDescription",
|
|
6351
6348
|
value: function () {
|
|
6352
|
-
var _convertHttpResponseToSetRemoteDescription =
|
|
6349
|
+
var _convertHttpResponseToSetRemoteDescription = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee10(response) {
|
|
6353
6350
|
var data, status, setRemoteDescriptionResponse;
|
|
6354
6351
|
return _regenerator().w(function (_context10) {
|
|
6355
6352
|
while (1) switch (_context10.n) {
|
|
@@ -6377,7 +6374,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6377
6374
|
}, {
|
|
6378
6375
|
key: "convertHttpResponseToAddIceCandidates",
|
|
6379
6376
|
value: function () {
|
|
6380
|
-
var _convertHttpResponseToAddIceCandidates =
|
|
6377
|
+
var _convertHttpResponseToAddIceCandidates = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee11(response) {
|
|
6381
6378
|
var data, status, addIceCandidatesResponse;
|
|
6382
6379
|
return _regenerator().w(function (_context11) {
|
|
6383
6380
|
while (1) switch (_context11.n) {
|
|
@@ -6408,7 +6405,7 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6408
6405
|
}, {
|
|
6409
6406
|
key: "convertHttpResponseToDestroyStream",
|
|
6410
6407
|
value: function () {
|
|
6411
|
-
var _convertHttpResponseToDestroyStream =
|
|
6408
|
+
var _convertHttpResponseToDestroyStream = _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()(/*#__PURE__*/_regenerator().m(function _callee12(response) {
|
|
6412
6409
|
var data, status, destroyStream;
|
|
6413
6410
|
return _regenerator().w(function (_context12) {
|
|
6414
6411
|
while (1) switch (_context12.n) {
|
|
@@ -6434,6 +6431,85 @@ var EndPoint = /*#__PURE__*/function () {
|
|
|
6434
6431
|
}();
|
|
6435
6432
|
|
|
6436
6433
|
|
|
6434
|
+
/***/ }),
|
|
6435
|
+
|
|
6436
|
+
/***/ "./src/sdk/discovery/PcastUri.ts":
|
|
6437
|
+
/*!***************************************!*\
|
|
6438
|
+
!*** ./src/sdk/discovery/PcastUri.ts ***!
|
|
6439
|
+
\***************************************/
|
|
6440
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6441
|
+
|
|
6442
|
+
"use strict";
|
|
6443
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6444
|
+
/* harmony export */ "default": () => (/* binding */ PcastUri)
|
|
6445
|
+
/* harmony export */ });
|
|
6446
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/toConsumableArray.js */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js");
|
|
6447
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
6448
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ "./node_modules/@babel/runtime/helpers/classCallCheck.js");
|
|
6449
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
6450
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ "./node_modules/@babel/runtime/helpers/createClass.js");
|
|
6451
|
+
/* harmony import */ var _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
6452
|
+
/* harmony import */ var _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../globalScope/GlobalScope */ "./src/globalScope/GlobalScope.ts");
|
|
6453
|
+
|
|
6454
|
+
|
|
6455
|
+
|
|
6456
|
+
/**
|
|
6457
|
+
* Copyright 2026 Perform Content Services Limited. Confidential and Proprietary. All Rights Reserved.
|
|
6458
|
+
*/
|
|
6459
|
+
|
|
6460
|
+
|
|
6461
|
+
var discoveryPath = '/pcast/endPoints';
|
|
6462
|
+
|
|
6463
|
+
/** Builds pcast route URLs from a discovery or end point URI. */
|
|
6464
|
+
var PcastUri = /*#__PURE__*/function () {
|
|
6465
|
+
function PcastUri() {
|
|
6466
|
+
_Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_1___default()(this, PcastUri);
|
|
6467
|
+
throw new Error('PcastUri is a static class that may not be instantiated');
|
|
6468
|
+
}
|
|
6469
|
+
return _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_2___default()(PcastUri, null, [{
|
|
6470
|
+
key: "discoveryPath",
|
|
6471
|
+
get: /** The path the platform serves discovery from, and the path a bare discovery host is taken to mean. */
|
|
6472
|
+
function get() {
|
|
6473
|
+
return discoveryPath;
|
|
6474
|
+
}
|
|
6475
|
+
|
|
6476
|
+
/**
|
|
6477
|
+
* Takes a discovery URI as an application or a token gives it. A bare host
|
|
6478
|
+
* means the discovery path, as `DiscoveryUri` reads it. Query and fragment
|
|
6479
|
+
* are dropped: they belong to the discovery request, not to a stream route.
|
|
6480
|
+
*/
|
|
6481
|
+
}, {
|
|
6482
|
+
key: "normalizeDiscoveryUri",
|
|
6483
|
+
value: function normalizeDiscoveryUri(uri) {
|
|
6484
|
+
var url = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_3__["default"].value.URL(uri.toString());
|
|
6485
|
+
if (url.pathname === '' || url.pathname === '/') {
|
|
6486
|
+
url.pathname = discoveryPath;
|
|
6487
|
+
}
|
|
6488
|
+
url.search = '';
|
|
6489
|
+
url.hash = '';
|
|
6490
|
+
return url;
|
|
6491
|
+
}
|
|
6492
|
+
|
|
6493
|
+
/**
|
|
6494
|
+
* Builds a route URL beside the base URI's last path segment. The base
|
|
6495
|
+
* `https://host/pcast/endPoints` and the path `[tenancy, 'stream',
|
|
6496
|
+
* 'subscribe']` give `https://host/pcast/<tenancy>/stream/subscribe`. The
|
|
6497
|
+
* base is used as given: an end point URI from discovery is already the
|
|
6498
|
+
* route root.
|
|
6499
|
+
*/
|
|
6500
|
+
}, {
|
|
6501
|
+
key: "buildRouteUrl",
|
|
6502
|
+
value: function buildRouteUrl(baseUri, path) {
|
|
6503
|
+
var url = new _globalScope_GlobalScope__WEBPACK_IMPORTED_MODULE_3__["default"].value.URL(baseUri.toString());
|
|
6504
|
+
var segments = url.pathname.split('/');
|
|
6505
|
+
segments.length = segments.length - 1;
|
|
6506
|
+
url.pathname = segments.concat.apply(segments, _Users_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_toConsumableArray_js__WEBPACK_IMPORTED_MODULE_0___default()(path)).join('/');
|
|
6507
|
+
return url;
|
|
6508
|
+
}
|
|
6509
|
+
}]);
|
|
6510
|
+
}();
|
|
6511
|
+
|
|
6512
|
+
|
|
6437
6513
|
/***/ }),
|
|
6438
6514
|
|
|
6439
6515
|
/***/ "./src/sdk/publish/Publisher.ts":
|
|
@@ -7742,7 +7818,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
7742
7818
|
key: "sdkVersion",
|
|
7743
7819
|
get: function get() {
|
|
7744
7820
|
try {
|
|
7745
|
-
return "2026-09-11T18:
|
|
7821
|
+
return "2026-09-11T18:56:57.987Z (2025.2.4-beta.657)";
|
|
7746
7822
|
} catch (e) {
|
|
7747
7823
|
return this._defaultVersion;
|
|
7748
7824
|
}
|
|
@@ -9013,4 +9089,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9013
9089
|
/******/ })()
|
|
9014
9090
|
;
|
|
9015
9091
|
});
|
|
9016
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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dUI7QUFDdEQsZ0JBQWdCLG1CQUFPLENBQUMsMEVBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRSx5QkFBeUIsU0FBUyx5QkFBeUI7QUFDaEU7QUFDQSxtQ0FBbUMseUJBQXlCLFNBQVMseUJBQXlCLGtCOzs7Ozs7VUMxQjlGO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBLEU7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQSxFOzs7OztXQ1BBLHdGOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RCxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTs7QUFFeUI7QUFDYTtBQUNRO0FBSzlCO0FBR2hCLCtEQUFlO0VBQ2J6b0MsR0FBRyxFQUFIQSw0Q0FBRztFQUNINmhDLFVBQVUsRUFBVkEsbURBQVU7RUFDVi9GLGNBQWMsRUFBZEEsdURBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNQdWJsaXNoTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1NkcFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1JlYWRPbmx5U3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvU3ViamVjdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL0Vudmlyb25tZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvU0RLLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvVGVsZW1ldHJ5VXJsLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZU1vZGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVTdGF0ZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0VuZFBvaW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlckNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlclN0YXRlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9SZWFsVGltZVB1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9TZXNzaW9uVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRoSG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3IuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY29uc3RydWN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9QcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvd3JhcE5hdGl2ZVN1cGVyLmpzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmNvbnN0IHZpc2liaWxpdHlDaGFuZ2VFdmVudCA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG4gIHByaXZhdGUgX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb246IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uKCk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgbGV0IGJhY2tncm91bmRFbnRyeVRpbWU6IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGlzTm93Rm9yZWdyb3VuZCA9ICFHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudElzSGlkZGVuO1xuXG4gICAgICBpZiAoIWlzTm93Rm9yZWdyb3VuZCkge1xuICAgICAgICBiYWNrZ3JvdW5kRW50cnlUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGJhY2tncm91bmRFbnRyeVRpbWUpIHtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IERhdGUubm93KCkgLSBiYWNrZ3JvdW5kRW50cnlUaW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSBpc05vd0ZvcmVncm91bmQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVzZUV2ZW50Q2FwdHVyZVBoYXNlID0gZmFsc2U7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGREb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGUgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZpbGUgaXMgdXNlZCBpbiB0aGUgc2lsZW50IGJ1aWxkXG4vLyB0byBjb25zdHJhaW4gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcm90ZWN0ZWRDaGFubmVsU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEZpcmVmb3ggRFJNIHBsYXliYWNrIGV4aGliaXRzIGluY29uc2lzdGVudCBwZXJmb3JtYW5jZTsgcm9vdCBjYXVzZSBpbnZlc3RpZ2F0aW9uIHBlbmRpbmdcbiAgICAvLyBTYWZhcmkgbGFja3MgcGxhdGZvcm0gc3VwcG9ydCBmb3IgRmFpclBsYXkgRFJNIGltcGxlbWVudGF0aW9uXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWRcbiAgICAgICYmIChGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdTYWZhcmknO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgQWJvcnRDb250cm9sbGVyKCk6IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuQWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgZ2V0IEZvcm1EYXRhKCk6IHR5cGVvZiBGb3JtRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5Gb3JtRGF0YTtcbiAgfVxuXG4gIGdldCBIVE1MVmlkZW9FbGVtZW50KCk6IHR5cGVvZiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkhUTUxWaWRlb0VsZW1lbnQ7XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW0oKTogdHlwZW9mIE1lZGlhU3RyZWFtIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtO1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtVHJhY2soKTogdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2sge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW1UcmFjaztcbiAgfVxuXG4gIGdldCBNZWRpYVNvdXJjZSgpOiB0eXBlb2YgTWVkaWFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTb3VyY2U7XG4gIH1cblxuICBnZXQgUlRDUGVlckNvbm5lY3Rpb24oKTogdHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbigpOiB0eXBlb2YgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBSVENJY2VDYW5kaWRhdGUoKTogdHlwZW9mIFJUQ0ljZUNhbmRpZGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENJY2VDYW5kaWRhdGU7XG4gIH1cblxuICBnZXQgVVJMKCk6IHR5cGVvZiBVUkwge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMO1xuICB9XG5cbiAgZ2V0IFVSTFNlYXJjaFBhcmFtcygpOiB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTFNlYXJjaFBhcmFtcztcbiAgfVxuXG4gIGdldCBhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJJbnRlcnZhbCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJUaW1lb3V0KCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhclRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRIYXNGb2N1cygpOiAoKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuaGFzRm9jdXMuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRJc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kb2N1bWVudC5oaWRkZW47XG4gIH1cblxuICBnZXQgZG9jdW1lbnRRdWVyeVNlbGVjdG9yKCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZmV0Y2goKTogKGlucHV0OiBzdHJpbmcgfCBVUkwgfCBSZXF1ZXN0LCBpbml0PzogUmVxdWVzdEluaXQpID0+IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmZldGNoLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbkhvc3RuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uU2VhcmNoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaDtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JDb25uZWN0aW9uKCk6IElOZXR3b3JrSW5mb3JtYXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JJc09uTGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLm9uTGluZTtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93WydfX3BoZW5peFBhZ2VMb2FkVGltZSddIHx8IHRoaXMuX3dpbmRvd1snX19wYWdlTG9hZFRpbWUnXTtcbiAgfVxuXG4gIGdldCBzZW5kQmVhY29uKCk6ICgodXJsOiBzdHJpbmcgfCBVUkwsIGRhdGE/OiBCb2R5SW5pdCB8IG51bGwpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb25cbiAgICAgID8gKHVybCwgZGF0YSkgPT4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb24hKHVybCwgZGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGRhdGEpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBxdWV1ZU1pY3JvdGFzaygpOiAobWljcm90YXNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnF1ZXVlTWljcm90YXNrLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IHJlcXVlc3RBbmltYXRpb25GcmFtZSgpOiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogSURpc3Bvc2FibGVbXSA9IFtdO1xuXG4gIGFkZChkaXNwb3NhYmxlOiBJRGlzcG9zYWJsZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QucHVzaChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5mb3JFYWNoKGRpc3Bvc2FibGUgPT4gZGlzcG9zYWJsZS5kaXNwb3NlKCkpO1xuICAgIHRoaXMuX2xpc3QubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBEaXNwb3NhYmxlTGlzdFtkaXNwb3NhYmxlcz0ke3RoaXMuX2xpc3QubGVuZ3RofV1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHg6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgWyR7eH1dLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkYCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2VydFVucmVhY2hhYmxlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZW51bSBMb2dnaW5nTGV2ZWwge1xuICBBbGwgPSAtMSxcbiAgVHJhY2UgPSAxMCxcbiAgRGVidWcgPSAyMCxcbiAgSW5mbyA9IDMwLFxuICBXYXJuID0gNDAsXG4gIEVycm9yID0gNTAsXG4gIEZhdGFsID0gNjAsXG4gIE9mZiA9IDEwMCxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ0xldmVsVHlwZSA9ICdPZmYnIHwgJ1RyYWNlJyB8ICdEZWJ1ZycgfCAnSW5mbycgfCAnV2FybicgfCAnRXJyb3InIHwgJ0ZhdGFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRlZ29yeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBlbmRlcnM6IEFwcGVuZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkO1xuXG4gIGdldCBjYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeTtcbiAgfVxuXG4gIGdldCBhcHBlbmRlcnMoKTogQXBwZW5kZXJzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nVGhyZXNob2xkIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgdHJhY2UoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLlRyYWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLlRyYWNlLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5EZWJ1ZywgYXJncyk7XG4gIH1cblxuICBpbmZvKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkluZm8sIGFyZ3MpO1xuICB9XG5cbiAgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5XYXJuLCBhcmdzKTtcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5FcnJvciwgYXJncyk7XG4gIH1cblxuICBmYXRhbCguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRmF0YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRmF0YWwsIGFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IG51bWJlciwgYXJnczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzKTtcblxuICAgIHRoaXMuX2FwcGVuZGVycy52YWx1ZS5mb3JFYWNoKChhcHBlbmRlcjogSUFwcGVuZGVyKSA9PiB7XG4gICAgICBhcHBlbmRlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIHRoaXMuY2F0ZWdvcnksIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3M6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSBhcmdzWzBdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAocmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mICYmIGFyZ3MubGVuZ3RoID4gMSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICBpbmRleCA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZignJScsIGluZGV4KTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCB0eXBlID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxLCBpbmRleCArIDIpO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgLy8gRXNjYXBlZCAnJSUnIHR1cm5zIGludG8gJyUnXG4gICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnJWQnIG9yICclcycgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAlaicgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgYXJncyA9IGFyZ3MucmVkdWNlKChhY2N1bXVsYXRvcjogc3RyaW5nLCBjdXJyZW50VmFsdWU6IHN0cmluZyB8IEVycm9yLCBpbmRleDogbnVtYmVyLCBhcnJheTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gYXJyYXkubGVuZ3RoICYmIGN1cnJlbnRWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLm1lc3NhZ2UpICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBgWyR7dGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUpfV1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5KGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZTogb2JqZWN0W10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy50b1N0cmluZyhhcmcpIDogYXJnLFxuICAgICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdJbmZvJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdUaHJlc2hvbGQge1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHZhbHVlKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldFRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4uL3Nkay9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uL3Nkay9FbnZpcm9ubWVudCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4vVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlczoge1tjYXRlZ29yeTogc3RyaW5nXTogTWV0cmljc1NlcnZpY2V9ID0ge307XG5cbiAgc3RhdGljIGdldE1ldHJpY3NTZXJ2aWNlKHVybDogc3RyaW5nKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1cmwgbXVzdCBiZSBhIHN0cmluZyBpbnN0ZWFkIHJlY2VpdmVkIFske3R5cGVvZiB1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMpIHtcbiAgICAgIHJldHVybiBtZXRyaWNzU2VydmljZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh1cmwpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKFNESy50ZWxlbWV0cnlMZXZlbCk7XG5cbiAgICByZXR1cm4gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdID0gbmV3IE1ldHJpY3NTZXJ2aWNlKG1ldHJpY3NDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBzZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBPYmplY3QudmFsdWVzKE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXMpO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcyAmJiBtZXRyaWNzU2VydmljZXMubGVuZ3RoKSB7XG4gICAgICBtZXRyaWNzU2VydmljZXMuZm9yRWFjaChtZXRyaWNzU2VydmljZSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gdGVsZW1ldHJ5TGV2ZWw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0cmljc0ZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIE5vdGU6IFRoaXMgUHJvbWlzZSBwb2x5ZmlsbCBpcyBpbmNsdWRlZCBmb3IgYnJvd3NlciBidWlsZHMgb25seSB0byBhZGRyZXNzIGNvbXBhdGliaWxpdHkgaXNzdWVzXG4vLyB3aXRoIG9sZGVyIGJyb3dzZXJzIHdob3NlIG5hdGl2ZSBQcm9taXNlPFQ+aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCAuZmluYWxseS5cblxuaW1wb3J0IFByb21pc2VIYW5kbGVyIGZyb20gJy4vUHJvbWlzZUhhbmRsZXInO1xuXG5jbGFzcyBQcm9taXNlPFQ+IHtcbiAgX3N0YXRlOiBudW1iZXI7XG4gIF9oYW5kbGVkOiBib29sZWFuO1xuICBfdmFsdWU6IFQgfCB1bmtub3duO1xuICBfZGVmZXJyZWRzOiBBcnJheTxQcm9taXNlSGFuZGxlcjxUPj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICB0aGVuKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGwsIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbCk6IFByb21pc2U8VD58IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlID0gMDtcbiAgICB0aGlzLl9oYW5kbGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuXG4gICAgdGhpcy5kb1Jlc29sdmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZG9SZXNvbHZlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgY2FsbGJhY2soXG4gICAgICAgICh2YWx1ZTogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChyZWFzb246IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVzb2x2ZShuZXdWYWx1ZTogUHJvbWlzZTxUPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFByb21pc2U8VD5SZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL1Byb21pc2VzLWFwbHVzL1Byb21pc2VzLXNwZWMjdGhlLVByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmVcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIFByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXQgc2VsZi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1ZhbHVlICYmICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIG5leHQgbGluZSB0byBub3QgZG8gZXh0cmEgaWYgc3RhdGVtZW50c1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgdGhlbiA9IG5ld1ZhbHVlLnRoZW47XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHByb21pc2UuX3N0YXRlID0gMztcbiAgICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgIHByb21pc2UuZmluYWxlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBwcm9taXNlLmRvUmVzb2x2ZShmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgICAgICAgIHRoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyBhcyB1bmtub3duIGFzIFtvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJvbWlzZS5fc3RhdGUgPSAxO1xuICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHByb21pc2UuZmluYWxlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZWplY3QobmV3VmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9IDI7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLmZpbmFsZSgpO1xuICB9XG5cbiAgZmluYWxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gMiAmJiB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2hhbmRsZWQpIHtcbiAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24odGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuICB9XG5cbiAgaGFuZGxlKGRlZmVycmVkOiBQcm9taXNlSGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGxldCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgd2hpbGUgKHByb21pc2UuX3N0YXRlID09PSAzKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS5fdmFsdWUgYXMgUHJvbWlzZTxUPjtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcbiAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX2hhbmRsZWQgPSB0cnVlO1xuICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xuXG4gICAgICBpZiAoY2FsbGJhY2sgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAxKSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2socHJvbWlzZS5fdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYWxsKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgICBjb25zdCBtYW5hZ2VSZXNwb25zZSA9IChpOiBudW1iZXIsIHZhbHVlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW4gPSB2YWx1ZS50aGVuO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhlbi5jYWxsKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPikgPT4gbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhcmdzW2ldID0gdmFsdWU7XG5cbiAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYW5hZ2VSZXNwb25zZShpLCBhcmdzW2ldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IFByb21pc2UpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmVqZWN0KHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfOiB1bmRlZmluZWQsIHJlamVjdDogRnVuY3Rpb24pID0+IHJlamVjdCh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJhY2UoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5yYWNlIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFycltpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9pbW1lZGlhdGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgaWdub3JlZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTtcbiAgfVxuXG4gIHN0YXRpYyBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yOiBQcm9taXNlPHVua25vd24+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246JywgZXJyb3IpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn1cblxuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24ob25SZWplY3RlZDogRnVuY3Rpb24pOiB1bmtub3duIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKCgpOiBudWxsID0+IG51bGwpO1xuXG4gIHRoaXMuaGFuZGxlKG5ldyBQcm9taXNlSGFuZGxlcjx1bmtub3duPihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xuXG4gIHJldHVybiBwcm9taXNlO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddID0gZnVuY3Rpb24oY2FsbGJhY2s6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+fCB1bmRlZmluZWQpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlLCAoKTogbnVsbCA9PiBudWxsKSxcbiAgICAocmVhc29uOiBFcnJvciB8IHN0cmluZykgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gUHJvbWlzZS5yZWplY3QocmVhc29uKSwgKCk6IG51bGwgPT4gbnVsbClcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21pc2U7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlcjxUPiB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uLCBwcm9taXNlOiBQcm9taXNlPFQ+KSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25maWd1cmF0aW9uTWFuYWdlciB7XG4gIHN0YXRpYyB0cnVuY2F0ZUljZVNlcnZlcnMoY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1B1Ymxpc2hTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaFN0YXRpc3RpYyB7XG4gIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICBzc3JjOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNTZW50OiBudW1iZXI7XG4gIHBhY2tldHNTZW50OiBudW1iZXI7XG4gIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGZpckNvdW50PzogbnVtYmVyO1xuICBmcmFtZUhlaWdodD86IG51bWJlcjtcbiAgZnJhbWVXaWR0aD86IG51bWJlcjtcbiAgZnJhbWVzRW5jb2RlZD86IG51bWJlcjtcbiAgZnJhbWVzU2VudD86IG51bWJlcjtcbiAgaGVhZGVyQnl0ZXNTZW50PzogbnVtYmVyO1xuICBodWdlRnJhbWVzU2VudD86IG51bWJlcjtcbiAgcGxpQ291bnQ/OiBudW1iZXI7XG4gIHFwU3VtPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZVRpbWU/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0PzogbnVtYmVyO1xuICBjb2RlYzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5jb25zdCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiA9IDUwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y1B1Ymxpc2hNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUnRjUHVibGlzaE1vbml0b3InKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRWaWRlb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZEF1ZGlvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnRjU3RhdGlzdGljOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4gPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9tb25pdG9yR2VuZXJhdGlvbiA9IDA7XG4gIHByaXZhdGUgX2F2YWlsYWJsZVRyYWNrczoge1xuICAgIGF1ZGlvOiBib29sZWFuO1xuICAgIHZpZGVvOiBib29sZWFuO1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyLCBpc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24gJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy5zZHAgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICBjb25zdCBwYXJzZWRMb2NhbERlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYztcbiAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjO1xuXG4gICAgICB0aGlzLl9hdmFpbGFibGVUcmFja3MgPSB7XG4gICAgICAgIGF1ZGlvOiBwYXJzZWRMb2NhbERlc2NyaXB0aW9uLmlzQXVkaW9UcmFja0VuYWJsZWQgJiYgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCxcbiAgICAgICAgdmlkZW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNWaWRlb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkXG4gICAgICB9O1xuXG4gICAgICBsZXQgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIGlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoZm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmb3JlZ3JvdW5kIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IHBvbGwgZnJvbSBiZWZvcmUgdGhlIGZyZWV6ZVxuICAgICAgICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdSZXN0YXJ0aW5nIHN0YXRzIHBvbGxpbmcgYWZ0ZXIgZm9yZWdyb3VuZCB0cmFuc2l0aW9uJyk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB7XG4gICAgICAgIGF1ZGlvOiAwLFxuICAgICAgICB2aWRlbzogMFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGxldCB0aW1lb3V0SGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHNQcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpO1xuXG4gICAgICBpZiAoIXN0YXRzUHJvbWlzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dW5kZWZpbmVkPihyZXNvbHZlID0+IHtcbiAgICAgICAgdGltZW91dEhhbmRsZSA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0cygpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgbGV0IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdvdXRib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICBjb25zdCBraW5kOiAndmlkZW8nIHwgJ2F1ZGlvJyB8IHVuZGVmaW5lZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgc3RhdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fYXZhaWxhYmxlVHJhY2tzPy5ba2luZF0pIHtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNTZW50IHx8IDA7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNTZW50ID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzU2VudCA/PyAwO1xuICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzU2VudDtcbiAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHJlcG9ydC5ieXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgcGFja2V0c1NlbnQ6IHJlcG9ydC5wYWNrZXRzU2VudCxcbiAgICAgICAgICAgICAgICByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OiByZXBvcnQucmV0cmFuc21pdHRlZEJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZpckNvdW50J10gPSByZXBvcnQuZmlyQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVIZWlnaHQnXSA9IHJlcG9ydC5mcmFtZUhlaWdodDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZVdpZHRoJ10gPSByZXBvcnQuZnJhbWVXaWR0aDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNFbmNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRW5jb2RlZDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNTZW50J10gPSByZXBvcnQuZnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydoZWFkZXJCeXRlc1NlbnQnXSA9IHJlcG9ydC5oZWFkZXJCeXRlc1NlbnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnaHVnZUZyYW1lc1NlbnQnXSA9IHJlcG9ydC5odWdlRnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydwbGlDb3VudCddID0gcmVwb3J0LnBsaUNvdW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3FwU3VtJ10gPSByZXBvcnQucXBTdW07XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVUaW1lJ10gPSByZXBvcnQudG90YWxFbmNvZGVUaW1lO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0J10gPSByZXBvcnQudG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRW5jb2RlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNFbmNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0VuY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ2dldFN0YXRzKCkgcmVqZWN0ZWQnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZyAmJiBnZW5lcmF0aW9uID09PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29kZWNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmNsYXNzIERpc3Bvc2FibGVMaXN0ZW5lcjxUPiBleHRlbmRzIERpc3Bvc2FibGUge1xuICBjb25zdHJ1Y3RvcihsaXN0ZW5lcnM6IFRbXSwgbGlzdGVuZXI6IFQpIHtcbiAgICBzdXBlcigoKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogKCh2YWx1ZTogVCkgPT4gdm9pZClbXTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgbGV0IGNoYW5nZWQgPSB0aGlzLl92YWx1ZSAhPT0gdmFsdWU7XG5cbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgY29tcGFyYWJsZSA9IHZhbHVlIGFzIHVua25vd24gYXMgSUNvbXBhcmFibGU8VD47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcGFyYWJsZS5lcXVhbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2hhbmdlZCA9ICFjb21wYXJhYmxlLmVxdWFscyh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgWy4uLnRoaXMuX2xpc3RlbmVyc10pIHtcbiAgICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgbGlzdGVuZXIodGhpcy5fdmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlTGlzdGVuZXI8KHZhbHVlOiBUKSA9PiB2b2lkPih0aGlzLl9saXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQml0cmF0ZVN0YXRlVHlwZSA9ICdLZWVwJyB8ICdSZXNldCc7XG5leHBvcnQgdHlwZSBCaXRyYXRlTW9kZVR5cGUgPSAnTm9ybWFsJyB8ICdGb3JjZScgfCAnUmVzZXQnO1xuXG5leHBvcnQgZW51bSBCaXRyYXRlU3RhdGUge1xuICBLZWVwLFxuICBSZXNldFxufVxuXG5leHBvcnQgZW51bSBCaXRyYXRlTW9kZSB7XG4gIE5vcm1hbCxcbiAgRm9yY2UsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlIHtcbiAgYXBpVmVyc2lvbjogbnVtYmVyO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVUeXBlO1xuICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVUeXBlO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5cbmV4cG9ydCB0eXBlIFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7XG4gIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBib29sZWFuO1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvbjogU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gb3B0aW9ucy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICAgIHRoaXMubWVkaWFTdHJlYW0gPSBuZXcgU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAoIXBlZXJDb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCkge1xuICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlTWVkaWFTdHJlYW0oKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgIHRoaXMubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVNb2RlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZU1vZGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSk6IEJpdHJhdGVNb2RlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlTW9kZSkge1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuRm9yY2U6XG4gICAgICAgIHJldHVybiAnRm9yY2UnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlTW9kZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVTdGF0ZSwgQml0cmF0ZVN0YXRlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZVN0YXRlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlKTogQml0cmF0ZVN0YXRlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlU3RhdGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLktlZXA6XG4gICAgICAgIHJldHVybiAnS2VlcCc7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlU3RhdGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RW5kUG9pbnQ+KHJlc29sdmVFbmRQb2ludFByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKVxuICAgICAgICAgIC50aGVuKHJlc29sdmVFbmRQb2ludFByb21pc2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vRGlzY292ZXJ5VXJpJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGVmYXVsdFRpbWVvdXQgPSAyMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEaXNjb3ZlcnknKTtcbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF91cmk6IFVSTDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IFVSTCkge1xuICAgIGlmICghdXJpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB1cmknKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKHVyaS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gIH1cblxuICBhc3luYyBkaXNjb3Zlck5lYXJieUVuZFBvaW50cyh1cmk6IFVSTCwgdGltZW91dDogbnVtYmVyKTogUHJvbWlzZTxFbmRQb2ludFtdPiB7XG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB0aW1lb3V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpc2NvdmVyeSB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRpbWVvdXQpKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVVyaSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kaXNjb3ZlcnlVcmk6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oZGVmYXVsdERpc2NvdmVyeVVyaSk7XG5cbiAgc3RhdGljIGdldCB1cmkoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gRGlzY292ZXJ5VXJpLl9kaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGREaXNjb3ZlcnlVcmwodXJpOiBVUkwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lID09PSAnLycpIHtcbiAgICAgIHVybC5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5VXJpIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5jbGFzcyBGZXRjaFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247IC8vIEludGVudGlvbmFsbHkgb3BlbjogdGhlIHNlcnZlciBtYXkgaW5jbHVkZSBwcm9wZXJ0aWVzIChlLmcuIGRybUNvbmZpZ3VyYXRpb24pIG5vdCBkZWNsYXJlZCBpbiB0aGlzIGludGVyZmFjZSB0aGF0IGNhbGxlcnMgcmVseSBvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHtcbiAgKHJlcXVlc3Q6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHtcbiAgKHJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlT3B0aW9ucyA9IHtcbiAgb25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdub3QtZm91bmQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCcgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0RHVyYXRpb246IE1pbGxpc2Vjb25kO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBNaWxsaXNlY29uZCkge1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgICB0aGlzLl90aW1lb3V0RHVyYXRpb24gPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICB9O1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KHVybCwgcmVxdWVzdE9wdGlvbnMsIHRoaXMuX3RpbWVvdXREdXJhdGlvbilcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEZldGNoVGltZW91dEVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3N1YnNjcmliZScpO1xuICAgIGNvbnN0IGpzb25SZXNwb25zZUJvZHkgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6ICdmYWlsZWQnfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSB0aGlzLm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1Ymxpc2gobmFtZTogc3RyaW5nLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlcik6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdwdWJsaXNoJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdwdWJsaXNoJyk7XG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBwdWJsaXNoUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW06IElTdHJlYW0sIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXNjcmlwdGlvbicsICdyZW1vdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdzZXQgbGltaXQgYml0cmF0ZScpO1xuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ2FkZCBpY2UgY2FuZGlkYXRlcycpO1xuICAgIGNvbnN0IHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnZGVzdHJveSBzdHJlYW0nKTtcbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3lTdHJlYW1PblVubW91bnQoc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlbmRCZWFjb24gPSBHbG9iYWxTY29wZS52YWx1ZS5zZW5kQmVhY29uO1xuXG4gICAgaWYgKCFzZW5kQmVhY29uKSB7XG4gICAgICB0aGlzLmRlc3Ryb3lTdHJlYW0oc3RyZWFtLCByZWFzb24pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIG9uIHVubW91bnQnLCBlcnIpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgc2VuZEJlYWNvbih1cmwsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hXaXRoVGltZW91dCh1cmw6IHN0cmluZywgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0LCB0aW1lb3V0RHVyYXRpb246IE1pbGxpc2Vjb25kKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICAuLi5yZXF1ZXN0T3B0aW9ucyxcbiAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcblxuICAgICAgICAgICAgcmVqZWN0KG5ldyBGZXRjaFRpbWVvdXRFcnJvcihgVGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgIH0sIHRpbWVvdXREdXJhdGlvbik7XG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmw6IHN0cmluZywgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0LCBvcGVyYXRpb246IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hXaXRoVGltZW91dCh1cmwsIHJlcXVlc3RPcHRpb25zLCB0aGlzLl90aW1lb3V0RHVyYXRpb24pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gJHtvcGVyYXRpb259IFske3JlcXVlc3RPcHRpb25zLm1ldGhvZCB8fCAnR0VUJ31dIFske3VybH1dYCwgZXJyIGFzIEVycm9yKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6IGVyciBpbnN0YW5jZW9mIEZldGNoVGltZW91dEVycm9yID8gNDA4IDogNTAwfSBhcyBSZXNwb25zZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgcGF0aEFzQXJyYXkgPSB1cmkucGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIHBhdGhBc0FycmF5Lmxlbmd0aCA9IHBhdGhBc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICB1cmkucGF0aG5hbWUgPSBwYXRoQXNBcnJheS5jb25jYXQoLi4ucGF0aCkuam9pbignLycpO1xuXG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQaW5nVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlJywgJ2h0dHAnKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwYXJzZUpzb25Cb2R5PFQ+KHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRXhwZWN0ZWQgZm9yIHJlc3BvbnNlcyB3aXRob3V0IGEgSlNPTiBib2R5ICh0aW1lb3V0LCBlbXB0eSBlcnJvciByZXNwb25zZXMpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdzdHJlYW0gcmVzcG9uc2UgY29udGV4dCBbJWpdJywgY29udGV4dCk7XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHVibGlzaFN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSk6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgICBjb25zdCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIHNoYXJlZFNlY3JldCxcbiAgICAgIGxhZyxcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIC8vIERlc3RydWN0dXJlZCB0aGUgdGVsZW1ldHJ5IGJhZ2dhZ2UgXCJzdHJlYW1SZXNwb25zZUNvbnRleHRcIiB0byBleGNsdWRlIGl0IGZyb20gb3RoZXJQcm9wZXJ0aWVzXG4gICAgICAvLyBpdCBpcyAgaGFuZGxlZCBzZXBhcmF0ZWx5IGJ5IGhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCBhbmQgbXVzdCBuZXZlciBiZSBmb3J3YXJkZWQgdG8gY2FsbGVycy5cbiAgICAgIHN0cmVhbVJlc3BvbnNlQ29udGV4dDogaWdub3JlZFN0cmVhbVJlc3BvbnNlQ29udGV4dCxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIC4uLm90aGVyUHJvcGVydGllcywgLy8gU3ByZWFkIGZpcnN0IHNvIHRoYXQgaXQgY2Fubm90IG92ZXJ3cml0ZSB0aGUgcHJvcGVydGllcyBub3JtYWxpemVkIGJlbG93LlxuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWdcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlKTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZSk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyhyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTZXNzaW9uVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcblxuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHtQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFJlYWxUaW1lUHVibGlzaGVyIGZyb20gJy4vUmVhbFRpbWVQdWJsaXNoZXInO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuY29uc3Qgb25lSG91ckluTWlsbGlzZWNvbmRzID0gMzYwMCAqIDEwMDA7XG5jb25zdCBtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAyICogb25lSG91ckluTWlsbGlzZWNvbmRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlclN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuOiBSZWFkT25seVN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQdWJsaXNoaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU1lZGlhU3RyZWFtOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7Zm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnR9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dCA9IG5ldyBQdWJsaXNoZXJDb250ZXh0KG5hbWUpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQocGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuKTtcbiAgICB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhdGUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXV0aG9yaXplZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlPbmxpbmUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQdWJsaXNoaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhbmRieSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludCk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuXG4gICAgY29uc3QgZGVzdHJveVN0cmVhbU9uVW5tb3VudCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW1PblVubW91bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcHVibGlzaGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OnN0YXJ0Jyk7XG5cbiAgICBjb25zdCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiA9IHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgICBjb25zdCBsaXN0ZW5PblN0cmVhbVNldHVwID0gdGhpcy5fc2Vzc2lvblRlbGVtZXRyeS5saXN0ZW5PblN0cmVhbVNldHVwKCk7XG5cbiAgICBpZiAoIUVkZ2VBdXRoUGFyc2VyLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gUHVibGlzaGVyU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIC8vIE5lZWQgdG8gc2V0IGlzU3RhcnRpbmcgdG8gZmFsc2UgYW5kIGNhbGwgaGFuZGxlU3RyZWFtRmFpbHVyZSBpZiBzdHJlYW0gbW9uaXRvcnMgZm91bmQgYW4gaXNzdWVcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdHJlYW1QdWJsaXNoZXIgPSBuZXcgUmVhbFRpbWVQdWJsaXNoZXIodGhpcy5fcHVibGlzaGVyQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHN0cmVhbVB1Ymxpc2hlci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBwdWJsaXNoaW5nJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID09PSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRNZWRpYVN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2gobWVkaWFUcmFjayA9PiB7XG4gICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZT8uZ2V0U2VuZGVycygpLmZvckVhY2goc2VuZGVyID0+IHtcbiAgICAgICAgICBpZiAobWVkaWFUcmFjay5raW5kID09PSBzZW5kZXI/LnRyYWNrPy5raW5kICYmIG1lZGlhVHJhY2suaWQgIT09IHNlbmRlci50cmFjay5pZCkge1xuICAgICAgICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayhtZWRpYVRyYWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCA9IDA7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSBEYXRlLm5vdygpIC0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzO1xuXG4gICAgICAgIGlmIChtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPD0gcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10gWyVzXSBhZnRlciBleGNlZWRpbmcgdGltZW91dCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSwgUHVibGlzaGVyU3RhdGVbdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBwdWJsaXNoaW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjaGFubmVsIG5vdCBmb3VuZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlUGVlckNvbm5lY3Rpb24oKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBFbmRQb2ludCwge1xuICBJU3RyZWFtLFxuICBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLFxuICBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1xufSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IHtQdWJsaXNoU3RhdHVzfSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlckNvbnRleHQge1xuICBwdWJsaXNoZXJJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBwdWJsaXNoZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHN0YXRlOiBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaXNoaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG4gIHN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVySW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4oUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnB1Ymxpc2hpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICAgIHRoaXMubmFtZSA9IG5hbWUgJiYgbmFtZS5sZW5ndGggPyBuYW1lIDogdGhpcy5nZW5lcmF0ZVNjcmVlbk5hbWUoKTtcbiAgICB0aGlzLnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1czogUHVibGlzaFN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlVbmhhbmRsZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlVbmF1dGhvcml6ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlOb3RGb3VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU2NyZWVuTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmdzLnJhbmRvbSgxMik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gUHVibGlzaGVyU3RhdGUge1xuICBJbml0aWFsaXppbmcgPSAwLFxuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcgPSAyLFxuICBQdWJsaXNoaW5nID0gMyxcbiAgUmVjb3ZlcmluZyA9IDQsXG4gIFJlY29ubmVjdGluZyA9IDUsXG4gIFN0b3BwZWQgPSA2LFxuICBVbmF1dGhvcml6ZWQgPSA3LFxuICBHZW9SZXN0cmljdGVkID0gOCxcbiAgR2VvQmxvY2tlZCA9IDksXG4gIFVuc3VwcG9ydGVkRmVhdHVyZSA9IDEwLFxuICBOb3RGb3VuZCA9IDExLFxuICBDb25maWd1cmF0aW9uRXJyb3IgPSAxMixcbiAgVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIENvbm5lY3Rpb25FcnJvciA9IDE0LFxuICBDbGllbnRTdGFydEVycm9yID0gMTUsXG4gIEVycm9yID0gMTZcbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVibGlzaGVyU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFB1Ymxpc2hlciBmcm9tICcuL1B1Ymxpc2hlcic7XG5cbnR5cGUgQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyA9IHtcbiAgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtO1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgbmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlcnMge1xuICBzdGF0aWMgY3JlYXRlUHVibGlzaGVyKG9wdGlvbnM6IENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMpOiBQdWJsaXNoZXIge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHVibGlzaGVyKG9wdGlvbnMubWVkaWFTdHJlYW0sIG9wdGlvbnMudG9rZW4sIG9wdGlvbnMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHVibGlzaGVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBSdGNQdWJsaXNoTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuXG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5cbmNvbnN0IGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsID0gMTAwO1xuY29uc3Qgc29mdFJlc3RhcnRJbnRlcnZhbCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lUHVibGlzaGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lUHVibGlzaGVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHB1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dCA9IHB1Ymxpc2hlckNvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICB9XG5cbiAgc3RhcnQodXJpOiBVUkwsIHRva2VuOiBzdHJpbmcsIGxpc3Rlbk9uU3RyZWFtU2V0dXA6IFN0cmVhbVNldHVwTGlzdGVuZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIUdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuT2ZmbGluZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdQdWJsaXNoIGZhaWxlZCBubyBtZWRpYSBzdHJlYW0gcHJvdmlkZWQnKTtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZWRpYVRyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpO1xuICAgIGNvbnN0IHRyYWNrS2luZHMgPSBtZWRpYVRyYWNrcy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10sIHRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sua2luZCA9PT0gJ2F1ZGlvJyB8fCB0cmFjay5raW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgIGFjY3VtdWxhdG9yLnB1c2godHJhY2sua2luZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBUcmFjayBraW5kIGlzIG5vdCBzdXBwb3J0ZWQnLCB0cmFjay5raW5kKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3NlbmRvbmx5JywgdHJhY2tLaW5kcylcbiAgICAgICAgLnRoZW4oKHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn0pID0+IHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbE9mZmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGhlbigoW2VuZFBvaW50LCB7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259XSkgPT4ge1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPiAwKSB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuXG4gICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbnVsbCwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5tYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICdbJXNdIFB1Ymxpc2ggZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7c3RyZWFtLCBydGNDb25maWd1cmF0aW9uLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2V9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFB1Ymxpc2ggY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uIGFzIFJUQ0NvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgLnRoZW4ocGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICAgICAgbGV0IHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkU3RyZWFtKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSBhcyBNZWRpYVN0cmVhbSk7XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBmYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdG9wIG5vcm1hbGx5IHRoZSBwZWVyIGNvbm5lY3Rpb24gaXMgdW5yZWdpc3RlcmVkIGZpcnN0LlxuICAgICAgICAgICAgICAgIC8vIFRodXMgYW55dGltZSB3ZSBzZWUgYSBjbG9zZWQgcGVlciBjb25uZWN0aW9uIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGl0IGlzIGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHN3aXRjaCAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbj8uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIuc2RwKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoIWVuZFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24sIEVuZFBvaW50IGlzIG5vdCBzZXQnKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbSwgYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCh7c3RhdHVzLCBzZXNzaW9uRGVzY3JpcHRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uPy5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24gYXMgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjUHVibGlzaE1vbml0b3IgPSBuZXcgUnRjUHVibGlzaE1vbml0b3IoXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwLFxuICAgICAgICAgICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQocnRjUHVibGlzaE1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSBydGNQdWJsaXNoTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Rpc2Nvbm5lY3RlZCcgfHwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9sb2dzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfcGFnZUxvYWRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMjAwMDtcbmNvbnN0IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMTtcbmNvbnN0IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMzAwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbEJhY2tvZmYge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kXG4gICkge1xuICAgIHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICB9XG5cbiAgZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudChmYWlsdXJlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYmFja29mZkludGVydmFsSW5TZWNvbmRzID0gdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCAvIDEwMDA7XG4gICAgY29uc3QgcmFuZG9taXphdGlvbiA9IDAuNSArICgwLjUgKiBNYXRoLnJhbmRvbSgpKTsgLy8gWzAuNSwgMSlcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmYgPSBNYXRoLnBvdyhiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMsIGZhaWx1cmVDb3VudCAtIDIpOyAvLyAgWzEvNCAxLzIgMSAyIDQgOCAuLi4uXVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uID0gTWF0aC5mbG9vcihleHBvbmVudGlhbEJhY2tvZmYpICogcmFuZG9taXphdGlvbjtcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQgPSBNYXRoLmNlaWwoTWF0aC5tYXgoZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gKiAxMDAwLCB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKSk7XG5cbiAgICByZXR1cm4gTWF0aC5taW4oZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kLCB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE5ldHdvcmtNb25pdG9yIGZyb20gJy4uL2RvbS9OZXR3b3JrTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOZXR3b3JrU3RhdGlzdGljcyB7XG4gIHJ0dD86IG51bWJlcjtcbiAgZWZmZWN0aXZlVHlwZT86IHN0cmluZztcbiAgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTZXNzaW9uVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtNb25pdG9yOiBOZXR3b3JrTW9uaXRvciA9IG5ldyBOZXR3b3JrTW9uaXRvcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2xhc3ROZXR3b3JrU3RhdGlzdGljczogSU5ldHdvcmtTdGF0aXN0aWNzID0ge307XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gbWV0cmljc1NlcnZpY2U7XG5cbiAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb25UZWxlbWV0cnkgRmFpbGVkOiBObyBhcHBsaWNhdGlvbiBtb25pdG9yIGluaXRpYWxpemVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fbmV0d29ya01vbml0b3IuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5ydHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtSVFRVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZWZmZWN0aXZlVHlwZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdGVuT25TdHJlYW1TZXR1cCgpOiBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbVNldHVwTGlzdGVuZXIodGhpcy5fcGFnZUxvYWRUaW1lKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENoYW5nZSA9IHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5nZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk7XG5cbiAgICBpZiAoIXRpbWVTaW5jZUxhc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IGlzRm9yZWdyb3VuZCA/IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZCA6IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZCxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VMYXN0Q2hhbmdlfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnQXBwbGljYXRpb24gaGFzIGdvbmUgaW50byB0aGUgWyVzXSBhZnRlciBbJXNdIG1zJyxcbiAgICAgIGlzRm9yZWdyb3VuZCA/ICdmb3JlZ3JvdW5kJyA6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlTGFzdENoYW5nZSkudG9Jc29TdHJpbmcoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrUlRUVXBkYXRlKG5ld1JUVDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRSdHQgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dCA9IG5ld1JUVDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBuZXdSVFR9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkUnR0ID8ge3VpbnQ2NDogb2xkUnR0fSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlc291cmNlOiAnbmF2aWdhdG9yJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIFJUVCBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3UlRULFxuICAgICAgb2xkUnR0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUobmV3TmV0d29ya1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkTmV0d29ya1R5cGUgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlID0gbmV3TmV0d29ya1R5cGU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld05ldHdvcmtUeXBlfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZE5ldHdvcmtUeXBlID8ge3N0cmluZzogb2xkTmV0d29ya1R5cGV9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZWZmZWN0aXZlIHR5cGUgaGFzIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdOZXR3b3JrVHlwZSxcbiAgICAgIG9sZE5ldHdvcmtUeXBlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKG5ld0NhcGFjaXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZENhcGFjaXR5ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtmbG9hdDogbmV3Q2FwYWNpdHl9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkQ2FwYWNpdHkgPyB7ZmxvYXQ6IG9sZENhcGFjaXR5fSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGRvd25saW5rIHRocm91Z2hwdXQgY2FwYWNpdHkgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld0NhcGFjaXR5LFxuICAgICAgb2xkQ2FwYWNpdHlcbiAgICApO1xuICB9XG59IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aG91dEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xuICB0cnkge1xuICAgIHZhciBpID0gblthXShjKSxcbiAgICAgIHUgPSBpLnZhbHVlO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIHZvaWQgZShuKTtcbiAgfVxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHQgPSB0aGlzLFxuICAgICAgZSA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIG4pO1xuICAgICAgfVxuICAgICAgX25leHQodm9pZCAwKTtcbiAgICB9KTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSByZXF1aXJlKFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9jb25zdHJ1Y3QodCwgZSwgcikge1xuICBpZiAoaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICB2YXIgbyA9IFtudWxsXTtcbiAgby5wdXNoLmFwcGx5KG8sIGUpO1xuICB2YXIgcCA9IG5ldyAodC5iaW5kLmFwcGx5KHQsIG8pKSgpO1xuICByZXR1cm4gciAmJiBzZXRQcm90b3R5cGVPZihwLCByLnByb3RvdHlwZSksIHA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jb25zdHJ1Y3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24odCkge1xuICB0cnkge1xuICAgIHJldHVybiAtMSAhPT0gRnVuY3Rpb24udG9TdHJpbmcuY2FsbCh0KS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHQ7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlRnVuY3Rpb24sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgPSByZXF1aXJlKFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCIpO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgbyA9IG5bcl0sIHQuaW5kZXhPZihvKSA+PSAwIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmRleE9mKG4pID49IDApIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgPSByZXF1aXJlKFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIik7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIGlzTmF0aXZlRnVuY3Rpb24gPSByZXF1aXJlKFwiLi9pc05hdGl2ZUZ1bmN0aW9uLmpzXCIpO1xudmFyIGNvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2NvbnN0cnVjdC5qc1wiKTtcbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIodCkge1xuICB2YXIgciA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgTWFwID8gbmV3IE1hcCgpIDogdm9pZCAwO1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3dyYXBOYXRpdmVTdXBlciA9IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIodCkge1xuICAgIGlmIChudWxsID09PSB0IHx8ICFpc05hdGl2ZUZ1bmN0aW9uKHQpKSByZXR1cm4gdDtcbiAgICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgaWYgKHZvaWQgMCAhPT0gcikge1xuICAgICAgaWYgKHIuaGFzKHQpKSByZXR1cm4gci5nZXQodCk7XG4gICAgICByLnNldCh0LCBXcmFwcGVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3QodCwgYXJndW1lbnRzLCBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcik7XG4gICAgfVxuICAgIHJldHVybiBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBXcmFwcGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgICB9XG4gICAgfSksIHNldFByb3RvdHlwZU9mKFdyYXBwZXIsIHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfd3JhcE5hdGl2ZVN1cGVyKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfd3JhcE5hdGl2ZVN1cGVyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IFB1Ymxpc2hlcnMgZnJvbSAnLi9QdWJsaXNoZXJzJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBTREssXG4gIFB1Ymxpc2hlcnMsXG4gIFB1Ymxpc2hlclN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJiYWNrZ3JvdW5kRW50cnlUaW1lIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImlzTm93Rm9yZWdyb3VuZCIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIlNESyIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwic2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsInVuZGVmaW5lZCIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkFib3J0Q29udHJvbGxlciIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsIlVSTFNlYXJjaFBhcmFtcyIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZW5kQmVhY29uIiwidXJsIiwiZGF0YSIsInNldEludGVydmFsIiwic2V0SW5zdGFuY2UiLCJwcm92aWRlZEdsb2JhbFNjb3BlIiwiZ2V0SW5zdGFuY2UiLCJfcmVhZE9ubHlJbnN0YW5jZSIsInN1YnNjcmliZSIsImNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlIiwiX2luc3RhbmNlIiwiZGlzcG9zYWJsZSIsIl9kaXNwb3NlZCIsIl9kaXNwb3NhYmxlIiwiY2FsbCIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwiX3RoaXMyIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIl8iLCJPYmplY3QiLCJhcmd1bWVudCIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImxvZ2dlciIsIl9sb2dnZXJzIiwiYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5TG9nZ2luZ0xldmVsIiwiYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCIsImFwcGx5Q29uc29sZUxvZ2dlciIsImFwcGx5VGVsZW1ldHJ5TG9nZ2VyIiwicGFyYW1ldGVyVmFsdWUiLCJzZXRUaHJlc2hvbGQiLCJhcHBseUFwcGVuZGVyIiwibG9nZ2luZ0xldmVsIiwiT2ZmIiwiQWxsIiwiY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbCIsImxvZ2dpbmdMZXZlbFR5cGUiLCJUZWxlbWV0cnlMZXZlbCIsIm1ldHJpY3MiLCJfbWV0cmljcyIsImdldFRlbGVtZXRyeUxldmVsIiwiVGltZVRvRmlyc3RGcmFtZSIsIkVzc2VudGlhbCIsIkNoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJTdGFsbGVkIiwiQnVmZmVyaW5nIiwiUm91bmRUcmlwVGltZSIsIkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiTmV0d29ya1R5cGUiLCJSZXNvbHV0aW9uQ2hhbmdlZCIsIkFwcGxpY2F0aW9uRm9yZWdyb3VuZCIsIkFwcGxpY2F0aW9uQmFja2dyb3VuZCIsIk1ldHJpY3NDb25maWd1cmF0aW9uIiwiX3VybCIsInNldCIsIm1ldHJpY3NVcmwiLCJwYXRobmFtZSIsIl9lbnZpcm9ubWVudCIsImVudmlyb25tZW50IiwiX3RlbmFuY3kiLCJ0ZW5hbmN5IiwiX3Nlc3Npb25JZCIsInNlc3Npb25JZCIsIk1ldHJpY3NTZXJ2aWNlIiwiVGVsZW1ldHJ5VXJsIiwiRW52aXJvbm1lbnQiLCJNZXRyaWNzRmFjdG9yeSIsImdldE1ldHJpY3NTZXJ2aWNlIiwiX3R5cGVvZiIsIm1ldHJpY3NTZXJ2aWNlcyIsIl9tZXRyaWNzU2VydmljZXMiLCJtZXRyaWNzQ29uZmlndXJhdGlvbiIsImNsaWVudFNlc3Npb25JZCIsImdldFRlbGVtZXRyeVVybCIsImdldEVudmlyb25tZW50RnJvbVVybCIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsIiwidGVsZW1ldHJ5TGV2ZWwiLCJzZXRUZWxlbWV0cnlMZXZlbCIsInZhbHVlcyIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJsIiwiVHlwZUVycm9yIiwiZG9uZSIsInJldHVybiIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkV4cG9uZW50aWFsQmFja29mZiIsIlZlcnNpb25NYW5hZ2VyIiwicmVxdWVzdFNpemVMaW1pdCIsIm1heEJ1ZmZlcmVkUmVjb3JkcyIsIl9tZXRyaWNzQ29uZmlndXJhdGlvbiIsIl9leHBvbmVudGlhbEJhY2tvZmYiLCJnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlIiwidGhlbiIsImxvY2F0aW9uSG9zdG5hbWUiLCJfZG9tYWluIiwibWV0cmljIiwicHJldmlvdXNWYWx1ZSIsInJlc291cmNlIiwia2luZCIsIm1ldHJpY1JlY29yZCIsInRpbWVzdGFtcCIsImZ1bGxRdWFsaWZpZWROYW1lIiwic2RrVmVyc2lvbiIsImlnbm9yZWQiLCJzZW5kTWV0cmljc0lmQWJsZSIsIlByb21pc2UiLCJyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSIsImdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfY2FsbGVlIiwibWV0cmljc01lc3NhZ2VzIiwiZm9ybURhdGEiLCJfY29udGV4dCIsImFwcGVuZCIsInJlY29yZHMiLCJtZXRob2QiLCJib2R5IiwiX3giLCJhcHBseSIsIl9zZW5kTWV0cmljc0lmQWJsZSIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiX2lzU2VuZGluZyIsInNsaWNlIiwicmVzcG9uc2UiLCJpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSIsIl9mYWlsdXJlQ291bnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50IiwiY2F0Y2giLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJQcm9taXNlSGFuZGxlciIsIl9zdGF0ZSIsIl9oYW5kbGVkIiwiX3ZhbHVlIiwiX2RlZmVycmVkcyIsImRvUmVzb2x2ZSIsInByb21pc2VSZXNvbHZlIiwicmVhc29uIiwicHJvbWlzZVJlamVjdCIsIm5ld1ZhbHVlIiwicHJvbWlzZSIsImZpbmFsZSIsIl9pbW1lZGlhdGUiLCJfdW5oYW5kbGVkUmVqZWN0aW9uIiwibGVuIiwiaGFuZGxlIiwiZGVmZXJyZWQiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXN1bHQiLCJhbGwiLCJhcnIiLCJyZXNvbHZlIiwicmVqZWN0IiwiaXNBcnJheSIsInJlbWFpbmluZyIsIm1hbmFnZVJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJyYWNlIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIkVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImRlZmF1bHRUcmFja0tpbmRzIiwiUGVlckNvbm5lY3Rpb25TZXJ2aWNlIiwiX3BlZXJDb25uZWN0aW9uRmFjdG9yeSIsImluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmciLCJpc1ByZWNhY2hpbmdFbmFibGVkIiwicHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX3ByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWNoZWQiLCJkaXJlY3Rpb24iLCJwZWVyQ29ubmVjdGlvbiIsImNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jYWxsZWUzIiwidHJhY2tLaW5kcyIsImVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsImNvbmZpZ3VyYXRpb24iLCJfYXJnczMiLCJfY29udGV4dDMiLCJEaXNhYmxlZCIsImlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0IiwiRW5hYmxlZCIsImNyZWF0ZVBlZXJDb25uZWN0aW9uIiwic3VwcG9ydHNBZGRUcmFuc2NlaXZlciIsImF1ZGlvVHJhbnNjZWl2ZXJzIiwidmlkZW9UcmFuc2NlaXZlcnMiLCJvcHRpb25zIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfdDUiLCJfdDYiLCJhZGRUcmFuc2NlaXZlciIsImNyZWF0ZU9mZmVyIiwibG9jYWxPZmZlciIsIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCJvZmZlclRvUmVjZWl2ZVZpZGVvIiwidHJhY2tzS2luZHMiLCJjb3VudFRyYWNrS2luZHMiLCJ0cmFja0tpbmRDb3VudCIsImF1ZGlvIiwidmlkZW8iLCJjb3VudGVkVHJhY2tLaW5kcyIsImNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyIsIlJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIiwidHJ1bmNhdGVJY2VTZXJ2ZXJzIiwiaWNlU2VydmVycyIsInVybHMiLCJ1c2VybmFtZSIsImNyZWRlbnRpYWwiLCJTZHBQYXJzZXIiLCJ1cGRhdGVTdGF0aXN0aWNUaW1lb3V0IiwiZ2V0U3RhdHNUaW1lb3V0RHVyYXRpb24iLCJSdGNQdWJsaXNoTW9uaXRvciIsImVzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJpc0ZvcmVncm91bmQiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24yIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjQiLCJfcGVlckNvbm5lY3Rpb24iLCJfZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIiwic2RwIiwiY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIiwicGFyc2VkTG9jYWxEZXNjcmlwdGlvbiIsInBhcnNlZFJlbW90ZURlc2NyaXB0aW9uIiwiX2VzdGltYXRlZEF1ZGlvQ29kZWMiLCJhdWRpb0NvZGVjIiwiX2VzdGltYXRlZFZpZGVvQ29kZWMiLCJ2aWRlb0NvZGVjIiwiX2F2YWlsYWJsZVRyYWNrcyIsImlzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1ZpZGVvVHJhY2tFbmFibGVkIiwiaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2siLCJmb3JlZ3JvdW5kIiwiX2lzTW9uaXRvclJ1bm5pbmciLCJfbW9uaXRvckdlbmVyYXRpb24iLCJfdXBkYXRlVGltZW91dCIsInVwZGF0ZVN0YXRpc3RpYyIsIl9ydGNTdGF0aXN0aWMiLCJfdXBkYXRlU3RhdGlzdGljIiwiZ2VuZXJhdGlvbiIsImdldEtpbmRGb3JTYWZhcmkxMSIsInRpbWVvdXRIYW5kbGUiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb241Iiwic3RhdHNQcm9taXNlIiwidGltZW91dFByb21pc2UiLCJzdGF0cyIsInJ0Y1N0YXRpc3RpY3MiLCJyb3VuZFRyaXBUaW1lIiwibGFzdFBhY2tldFNlbnRUaW1lc3RhbXAiLCJnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkIiwiaWQiLCJnZXRTdGF0cyIsInJlcG9ydCIsImN1cnJlbnRSb3VuZFRyaXBUaW1lIiwiX3RoaXMyJF9hdmFpbGFibGVUcmFjIiwibWVkaWFUeXBlIiwiY29kZWMiLCJjb2RlY0lkIiwibWltZVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQyIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMyIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDQiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ1IiwiYnl0ZXMiLCJieXRlc1NlbnQiLCJwcmV2aW91c0J5dGVzU2VudCIsImJ5dGVzRGVsdGEiLCJ0aW1lRGVsdGEiLCJiaXRyYXRlIiwic3NyYyIsInBhY2tldHNTZW50IiwicmV0cmFuc21pdHRlZEJ5dGVzU2VudCIsImdldENvZGVjQnlUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDciLCJmaXJDb3VudCIsImZyYW1lSGVpZ2h0IiwiZnJhbWVXaWR0aCIsImZyYW1lc0VuY29kZWQiLCJmcmFtZXNTZW50IiwiaGVhZGVyQnl0ZXNTZW50IiwiaHVnZUZyYW1lc1NlbnQiLCJwbGlDb3VudCIsInFwU3VtIiwidG90YWxFbmNvZGVUaW1lIiwidG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQiLCJmcHMiLCJfc2RwIiwic2RwU3BsaXRCeUxpbmVzIiwic2RwU3BsaXRCeVRyYWNrcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2lzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1RyYWNrQnlUeXBlRW5hYmxlZCIsIl9pc1ZpZGVvVHJhY2tFbmFibGVkIiwic2RwU2VjdGlvbkZvclR5cGUiLCJmaW5kIiwic2RwVHJhY2siLCJfc2RwU3BsaXRCeUxpbmVzJGZpbmQiLCJydG1hcCIsInNkcExpbmUiLCJ1c2VkQ29kZWNMaW5lIiwidXNlZENvZGVjIiwiY29kZWNOYW1lIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJnZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNiIsInNldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb243IiwiZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQiLCJnZXRUcmFuc2NlaXZlcnMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb244IiwiX2NyZWF0ZU9mZmVyIiwicHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQiLCJfY3JlYXRlQW5zd2VyIiwiY3JlYXRlQW5zd2VyIiwiX3gyIiwiX3NldExvY2FsRGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldExvY2FsRGVzY3JpcHRpb24iLCJfeDMiLCJfc2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlNCIsIl9kZXNjcmlwdGlvbiRzZHAiLCJoYXNDcnlwdG8iLCJfY29udGV4dDQiLCJzZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94NCIsImdldFNlbmRlcnMiLCJnZXRSZWNlaXZlcnMiLCJzZWxlY3RvciIsImdldFN0YXRzTGVnYWN5IiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwibWVkaWFTdHJlYW0iLCJfdGhpczQiLCJnZXRUcmFja3MiLCJ0cmFjayIsImFkZFRyYWNrIiwib250cmFjayIsImhhbmRsZXIiLCJvbmljZWNhbmRpZGF0ZSIsIm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwib25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJjbG9zZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjkiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlIiwic3ViamVjdCIsIl9zdWJqZWN0IiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiX2kiLCJfYXJyIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9HbG9iYWxTY29wZSRnZXRJbnN0YSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwib25Mb2FkIiwiX2luaXRpYWxpemVkIiwiYWRkV2luZG93RXZlbnRMaXN0ZW5lciIsImluaXQiLCJvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUiLCJwZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJjb25zb2xlTG9nZ2luZ0xldmVsIiwiY29uc29sZUFwcGVuZGVyIiwiYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwid2ViUGxheWVyTG9hZGVyIiwic2hha2FQbGF5ZXJMb2FkZXIiLCJobHNKc0xvYWRlciIsIl90aGlzJF9hcHBsaWNhdGlvbkFjdCIsIl9TREsiLCJzZWdtZW50cyIsInByb3RvY29sIiwidW5zaGlmdCIsImVuZHNXaXRoIiwiam9pbiIsIkJpdHJhdGVTdGF0ZSIsIkJpdHJhdGVNb2RlIiwiUGVlckNvbm5lY3Rpb25Db250ZXh0IiwiZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsInBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJkaXNwb3NlUGVlckNvbm5lY3Rpb24iLCJkaXNwb3NlTWVkaWFTdHJlYW0iLCJfdGhpcyRtZWRpYVN0cmVhbSR2YWwiLCJzdG9wIiwiU3RhdGVDb250ZXh0IiwiaXNTdGFydGluZyIsImlzRGlzcG9zZWQiLCJUb2tlbkNvbnRleHQiLCJ0b2tlbkV4cGlyaW5nIiwiZGVmYXVsdERpc2NvdmVyeVVyaSIsIkJpdHJhdGVNb2RlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlIiwiYml0cmF0ZU1vZGUiLCJOb3JtYWwiLCJGb3JjZSIsIlJlc2V0IiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJLZWVwIiwiRGlzY292ZXJ5U2VydmljZSIsImRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwiLCJEaXNjb3ZlcnkiLCJfcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJyZXNvbHZlRW5kUG9pbnRQcm9taXNlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsInByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJkaXNjb3ZlcnlTZXJ2aWNlIiwiY2FjaGVkVmFsdWUiLCJfY2FjaGUiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJvayIsInRleHQiLCJtYXAiLCJlbmRQb2ludCIsImRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwiX2Rpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiZmFpbGVkUmVxdWVzdHMiLCJwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCIsIl9hcmdzMiIsImJ1aWxkRGlzY292ZXJ5VXJsIiwicGluZyIsInRpbWUiLCJfZGlzY292ZXJ5VXJpIiwiZGlzY292ZXJ5UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJCb29sZWFuIiwidmFsdWVPZiIsImFwaVZlcnNpb24iLCJGZXRjaFRpbWVvdXRFcnJvciIsIl9FcnJvciIsIl93cmFwTmF0aXZlU3VwZXIiLCJfdGltZW91dER1cmF0aW9uIiwiX3JvdW5kVHJpcFRpbWUiLCJfcGluZyIsInN0YXJ0IiwicmVxdWVzdE9wdGlvbnMiLCJidWlsZFBpbmdVcmwiLCJmZXRjaFdpdGhUaW1lb3V0IiwiX3N1YnNjcmliZSIsImxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uIiwiZmFpbHVyZUNvdW50IiwiX29wdGlvbnMkb25TdWJzY3JpYmVSIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSNCIsImNsaWVudFZlcnNpb24iLCJyZXF1ZXN0Qm9keSIsImZldGNoUmVxdWVzdE9wdGlvbnMiLCJodHRwUmVzcG9uc2UiLCJqc29uUmVzcG9uc2VCb2R5IiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjMiLCJfcmVzcG9uc2UyIiwiZmluaXNoZWQiLCJzdWJzY3JpYmVSZXNwb25zZSIsImJ1aWxkVXJsIiwiYmVhcmVyVG9rZW4iLCJodHRwUm91bmRUcmlwVGltZSIsInNlc3Npb25EZXNjcmlwdGlvbiIsImNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbiIsIm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIiwiZXhlY3V0ZUZldGNoUmVxdWVzdCIsInBhcnNlSnNvbkJvZHkiLCJoYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQiLCJzdHJlYW1SZXNwb25zZUNvbnRleHQiLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwiYm9keVdpdGhPZmZlciIsImJvZHlXaXRob3V0T2ZmZXIiLCJwdWJsaXNoUmVzcG9uc2UiLCJtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzIiwibm9ybWFsaXplUHVibGlzaFJlc3BvbnNlIiwicHVibGlzaCIsIl94NSIsIl94NiIsIl94NyIsInN0cmVhbSIsInNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJzaGFyZWRTZWNyZXQiLCJtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g4IiwiX3g5IiwiX2xpbWl0Qml0cmF0ZSIsIl9jYWxsZWU1IiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiYml0cmF0ZUluQml0c1BlclNlY29uZCIsIl9jb250ZXh0NSIsIm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIiwibGltaXRCaXRyYXRlIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX2FkZEljZUNhbmRpZGF0ZXMiLCJfY2FsbGVlNiIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJfY29udGV4dDYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyIsImFkZEljZUNhbmRpZGF0ZXMiLCJfeDEzIiwiX3gxNCIsIl94MTUiLCJfZGVzdHJveVN0cmVhbSIsIl9jYWxsZWU3IiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwiX2NvbnRleHQ3IiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0iLCJkZXN0cm95U3RyZWFtIiwiX3gxNiIsIl94MTciLCJfZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsIl9jYWxsZWU4IiwiX2NvbnRleHQ4IiwiZXJyIiwiZGVzdHJveVN0cmVhbU9uVW5tb3VudCIsIl94MTgiLCJfeDE5IiwiX2ZldGNoV2l0aFRpbWVvdXQiLCJfY2FsbGVlOSIsInRpbWVvdXREdXJhdGlvbiIsImNvbnRyb2xsZXIiLCJfY29udGV4dDkiLCJfb2JqZWN0U3ByZWFkIiwic2lnbmFsIiwiYWJvcnQiLCJfeDIwIiwiX3gyMSIsIl94MjIiLCJfZXhlY3V0ZUZldGNoUmVxdWVzdCIsIl9jYWxsZWUwIiwib3BlcmF0aW9uIiwiX2NvbnRleHQwIiwiX3gyMyIsIl94MjQiLCJfeDI1IiwicGF0aCIsInBhdGhBc0FycmF5IiwiX3BhcnNlSnNvbkJvZHkiLCJfY2FsbGVlMSIsIl9jb250ZXh0MSIsImpzb24iLCJfeDI2IiwiY29udGV4dCIsImxhZyIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiaWdub3JlZFN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm90aGVyUHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWUxMCIsIl9jb250ZXh0MTAiLCJfeDI3IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyOCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiX2NhbGxlZTEyIiwiX2NvbnRleHQxMiIsIl94MjkiLCJQdWJsaXNoZXJTdGF0ZSIsIlNlc3Npb25UZWxlbWV0cnkiLCJQdWJsaXNoZXJDb250ZXh0IiwiUmVhbFRpbWVQdWJsaXNoZXIiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIm9uZUhvdXJJbk1pbGxpc2Vjb25kcyIsIm1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIlB1Ymxpc2hlciIsInBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMiLCJfdG9rZW5Db250ZXh0IiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9wdWJsaXNoZXJTdGFydFRpbWUiLCJfcmVhZE9ubHlUb2tlbiIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsInB1Ymxpc2hlckRpc3Bvc2FibGVzIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUHVibGlzaGluZyIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJkaXNwb3NhYmxlcyIsIl9zdG9wIiwicHJvY2Vzc1N0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiU3RvcHBlZCIsIl9kaXNwb3NlIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QdWJsaXNoZXIiLCJTdGFydGluZyIsIlVuYXV0aG9yaXplZCIsIlJlY292ZXJpbmciLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMiLCJ0aW1lb3V0SWQiLCJnZXRSZXRyeUludGVydmFsIiwic2V0TWVkaWFTdHJlYW0iLCJfdGhpczUiLCJtZWRpYVRyYWNrIiwiX3RoaXM1JF9wZWVyQ29ubmVjdGlvIiwic2VuZGVyIiwiX3NlbmRlciR0cmFjayIsInJlcGxhY2VUcmFjayIsIk9mZmxpbmUiLCJJbml0aWFsaXppbmciLCJOb3RGb3VuZCIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUmVjb25uZWN0aW5nIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiQ29uZmlndXJhdGlvbkVycm9yIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJyZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsIiwiX3RoaXM2IiwicHVibGlzaGVySW5pdGlhbGl6YXRpb24iLCJnZW5lcmF0ZVNjcmVlbk5hbWUiLCJhcHBseVB1Ymxpc2hTdGF0dXMiLCJhcHBseVVuYXV0aG9yaXplZCIsImFwcGx5Tm90Rm91bmQiLCJhcHBseVVuaGFuZGxlZEVycm9yIiwiYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsIm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIlB1Ymxpc2hlcnMiLCJjcmVhdGVQdWJsaXNoZXIiLCJpbml0aWFsaXplZCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsInNvZnRSZXN0YXJ0SW50ZXJ2YWwiLCJwdWJsaXNoZXJDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0IiwibmF2aWdhdG9ySXNPbkxpbmUiLCJtZWRpYVRyYWNrcyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJfcmVmMyQiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUiLCJfcmVmNCIsIm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9jcmVhdGVBbnN3ZXJEZXNjcmlwdCIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIl90aGlzJF9wdWJsaXNoZXJDb250ZTIiLCJydGNQdWJsaXNoTW9uaXRvciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCIsImljZVJlc3RhcnQiLCJvZmZlciIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Il0sInNvdXJjZVJvb3QiOiIifQ==
|
|
9092
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QXFCLG1CQUFPLENBQUMsb0ZBQXFCO0FBQ2xELHVCQUF1QixtQkFBTyxDQUFDLHdGQUF1QjtBQUN0RCxnQkFBZ0IsbUJBQU8sQ0FBQywwRUFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRyxFQUFFLHlCQUF5QixTQUFTLHlCQUF5QjtBQUNoRTtBQUNBLG1DQUFtQyx5QkFBeUIsU0FBUyx5QkFBeUIsa0I7Ozs7OztVQzFCOUY7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBOztBQUV5QjtBQUNhO0FBQ1E7QUFLOUI7QUFHaEIsK0RBQWU7RUFDYjlvQyxHQUFHLEVBQUhBLDRDQUFHO0VBQ0hraUMsVUFBVSxFQUFWQSxtREFBVTtFQUNWL0YsY0FBYyxFQUFkQSx1REFBY0E7QUFDaEIsQ0FBQyxFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vQnJvd3NlckRldGVjdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9OZXR3b3JrTW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1N0cmVhbVNldHVwTGlzdGVuZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlVG9rZW4udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9nbG9iYWxTY29wZS9HbG9iYWxTY29wZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGVMaXN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL051bWJlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvU3RyaW5ncy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0FwcGVuZGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0NvbnNvbGVBcHBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckRlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nVGhyZXNob2xkLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc0ZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1NlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljc1R5cGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9wcm9taXNlL1Byb21pc2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZUhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y1B1Ymxpc2hNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvU2RwUGFyc2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvVmFuaWxsYVBlZXJDb25uZWN0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcngvUmVhZE9ubHlTdWJqZWN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9TdWJqZWN0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvRW52aXJvbm1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9TREsudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9UZWxlbWV0cnlVcmwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RhdGVDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9Ub2tlbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlTW9kZU1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvQml0cmF0ZVN0YXRlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRGlzY292ZXJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvRW5kUG9pbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kaXNjb3ZlcnkvUGNhc3RVcmkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1B1Ymxpc2hlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL1JlYWxUaW1lUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5U2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9EdXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGltZS9FeHBvbmVudGlhbEJhY2tvZmYudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXJyYXlMaWtlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhvdXRIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b1Byb3BlcnR5S2V5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy93cmFwTmF0aXZlU3VwZXIuanMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wicGhlbml4XCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtNaWxsaXNlY29uZH0gZnJvbSAnLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcblxuY29uc3QgdmlzaWJpbGl0eUNoYW5nZUV2ZW50ID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0ZvcmVncm91bmQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgcHJpdmF0ZSBfbGFzdEJhY2tncm91bmREdXJhdGlvbjogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pc0ZvcmVncm91bmQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZCA9IG5ldyBSZWFkT25seVN1YmplY3QodGhpcy5faXNGb3JlZ3JvdW5kKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBpc0ZvcmVncm91bmQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdGhpcy5fdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24oKTogTWlsbGlzZWNvbmQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBsZXQgYmFja2dyb3VuZEVudHJ5VGltZTogTWlsbGlzZWNvbmQgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNOb3dGb3JlZ3JvdW5kID0gIUdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50SXNIaWRkZW47XG5cbiAgICAgIGlmICghaXNOb3dGb3JlZ3JvdW5kKSB7XG4gICAgICAgIGJhY2tncm91bmRFbnRyeVRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoYmFja2dyb3VuZEVudHJ5VGltZSkge1xuICAgICAgICB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGJhY2tncm91bmRFbnRyeVRpbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzRm9yZWdyb3VuZC52YWx1ZSA9IGlzTm93Rm9yZWdyb3VuZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlRXZlbnRDYXB0dXJlUGhhc2UgPSBmYWxzZTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSkpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnJvd3NlckRldGVjdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4ID0gLyhNU0lFfCg/IUdlY2tvLispRmlyZWZveHwoPyFBcHBsZVdlYktpdC4rQ2hyb21lLispU2FmYXJpfCg/IUFwcGxlV2ViS2l0LispQ2hyb21lfEFwcGxlV2ViS2l0KD8hLitDaHJvbWV8LitTYWZhcmkpfEdlY2tvKD8hLitGaXJlZm94KSkoPzogfFxcLykoW1xcZC5hcHJlXSspL2c7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJNYWpvclZlcnNpb24gPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzTW9iaWxlID0gKC9BbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxPcGVyYSBNaW5pL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNBbmRyb2lkID0gKC9BbmRyb2lkL2kpLnRlc3QobmF2aWdhdG9yPy51c2VyQWdlbnQpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTY5ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS82OS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzAgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcwLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzEuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcyID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Mi4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzQgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc0LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzUuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc2ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ni4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzcgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc3LicpO1xuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9icm93c2VyTWFqb3JWZXJzaW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0FuZHJvaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNBbmRyb2lkO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTY5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNjk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcxO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc1O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc2KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NztcbiAgfVxuXG4gIHN0YXRpYyBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc01vYmlsZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUFuZFZlcnNpb24gPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgpO1xuXG4gICAgaWYgKGJyb3dzZXJOYW1lQW5kVmVyc2lvbiAmJiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF0pIHtcbiAgICAgIHJldHVybiBicm93c2VyTmFtZUFuZFZlcnNpb25bMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJOYW1lTGlzdCB8fCAhYnJvd3Nlck5hbWVMaXN0WzBdKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lTGlzdFswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uTGlzdCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAoIWJyb3dzZXJWZXJzaW9uTGlzdCB8fCAhYnJvd3NlclZlcnNpb25MaXN0WzFdKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsVmVyc2lvbiA9IGJyb3dzZXJWZXJzaW9uTGlzdFsxXTtcblxuICAgIGlmICghZnVsbFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXIoZnVsbFZlcnNpb24uc3BsaXQoJy4nKVswXSkgfHwgMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgY29uc3QgbXNpZSA9IHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFICcpO1xuXG4gICAgaWYgKG1zaWUgPiAwKSB7XG4gICAgICAvLyBJRSAxMCBvciBvbGRlciA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKG1zaWUgKyA1LCB1c2VyQWdlbnQuaW5kZXhPZignLicsIG1zaWUpKSwgMTApfWA7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZGVudCA9IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG4gICAgaWYgKHRyaWRlbnQgPiAwKSB7XG4gICAgICAvLyBJRSAxMSA9PiByZXR1cm4gdmVyc2lvbiBudW1iZXJcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VyQWdlbnQuaW5kZXhPZigncnY6Jyk7XG5cbiAgICAgIHJldHVybiBgSUUvJHtwYXJzZUludCh1c2VyQWdlbnQuc3Vic3RyaW5nKHZlcnNpb24gKyAzLCB1c2VyQWdlbnQuaW5kZXhPZignLicsIHZlcnNpb24pKSwgMTApfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbi8vIFRoZSBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZmlsZSBpcyB1c2VkIGluIHRoZSBzaWxlbnQgYnVpbGRcbi8vIHRvIGNvbnN0cmFpbiB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpbmdWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdFN0cmluZ1ZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRCb29sZWFuVmFsdWUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5kZWZhdWx0Qm9vbGVhblZhbHVlW25hbWVdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRlZmF1bHRTdHJpbmdWYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLmZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5xdWV1ZU1pY3JvdGFzayh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCh0aGlzLm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbi5iaW5kKHRoaXMpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IGltZzogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudENyZWF0ZUVsZW1lbnQ8SFRNTEltYWdlRWxlbWVudD4oJ2ltZycpO1xuXG4gICAgaW1nLnNyYyA9IEdsb2JhbFNjb3BlLnZhbHVlLlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcigxMGUrNyldKSk7IC8vIDEwME1iIG9yIGxlc3Mgb3IgbW9yZSBkZXBlbmRpbmcgb24gYXMgeW91IHdpc2ggdG8gZm9yY2UvaW52b2tlIEdDIGN5Y2xlIHJ1blxuICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5VUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcblxuICAgICAgaW1nID0gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya01vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZDogYm9vbGVhbiA9IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24gIT09IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnR0OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VmZmVjdGl2ZVR5cGU6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IG5ldyBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpO1xuICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuICB9XG5cbiAgZ2V0IGlzU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgfVxuXG4gIGdldCBydHQoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcnR0O1xuICB9XG5cbiAgZ2V0IGVmZmVjdGl2ZVR5cGUoKTogU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZWZmZWN0aXZlVHlwZTtcbiAgfVxuXG4gIGdldCBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5kb3dubGluayA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5kb3dubGlua01heCA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWZmZWN0aXZlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5lZmZlY3RpdmVUeXBlID8/IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnR5cGUgPz8gJ1Vua25vd24nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJ0dCA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKCk6IHZvaWQgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWNzKCk7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRpc3RpY3MoKTogdm9pZCB7XG4gICAgdGhpcy5fcnR0LnZhbHVlID0gdGhpcy5nZXRSb3VuZFRyaXBUaW1lKCk7XG4gICAgdGhpcy5fZWZmZWN0aXZlVHlwZS52YWx1ZSA9IHRoaXMuZ2V0RWZmZWN0aXZlVHlwZSgpO1xuICAgIHRoaXMuX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnZhbHVlID0gdGhpcy5nZXREb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuXG5leHBvcnQgY2xhc3MgU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTdHJlYW1TZXR1cExpc3RlbmVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0cmljc1NlcnZpY2UgPSBTREsubWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWV0cmljU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN1Y2Nlc3Moc3RyZWFtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkLCBzdHJlYW1JZCk7XG4gIH1cblxuICBmYWlsKCk6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkU3RyZWFtTWV0cmljKE1ldHJpY3NUeXBlLlNldHVwRmFpbGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkU3RyZWFtTWV0cmljKG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLCBzdHJlYW1JZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tZXRyaWNTdWJtaXR0ZWQpIHtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljU3VibWl0dGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0dXBUaW1lID0gbm93IC0gdGhpcy5fc3RhcnRUaW1lO1xuICAgIGNvbnN0IG1ldHJpY05hbWUgPSBuZXcgTWV0cmljVHlwZShtZXRyaWNUeXBlKS5nZXROYW1lKCk7XG5cbiAgICB0aGlzLm1ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBzZXR1cFRpbWV9LFxuICAgICAgc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBTdHJlYW0gbWV0cmljIFslc10gaW4gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIG5ldyBEdXJhdGlvbnMoc2V0dXBUaW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBFZGdlVG9rZW4gZnJvbSAnLi9FZGdlVG9rZW4nO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5jb25zdCBlZGdlQXV0aFRva2VuUHJlZml4ID0gJ0RJR0VTVDonO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlQXV0aFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRWRnZUF1dGhQYXJzZXInKTtcblxuICBzdGF0aWMgcGFyc2VUb2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IEVkZ2VUb2tlbiB7XG4gICAgaWYgKCF0aGlzLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignVG9rZW4gaXMgbm90IHZhbGlkIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBhdG9iKHRva2VuLnN1YnN0cihlZGdlQXV0aFRva2VuUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gSlNPTi5wYXJzZShkZWNvZGVkVG9rZW4pO1xuXG4gICAgICBlZGdlVG9rZW4udG9rZW4gPSBKU09OLnBhcnNlKGVkZ2VUb2tlbi50b2tlbik7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKGVkZ2VUb2tlbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgRWRnZUF1dGhQYXJzZXIuX2xvZ2dlci5lcnJvcignQ2Fubm90IHBhcnNlIHRva2VuIHZhbHVlJywgZSk7XG5cbiAgICAgIHJldHVybiBuZXcgRWRnZVRva2VuKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRva2VuICYmIHRva2VuLnN0YXJ0c1dpdGgoZWRnZUF1dGhUb2tlblByZWZpeCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmludGVyZmFjZSBJVG9rZW4ge1xuICB1cmk6IFVSTCB8IG51bGw7XG4gIGNhcGFiaWxpdGllczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJRWRnZVRva2VuIHtcbiAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICB0b2tlbjogSVRva2VuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlVG9rZW4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuOiBJVG9rZW47XG5cbiAgY29uc3RydWN0b3IoZWRnZVRva2VuOiBJRWRnZVRva2VuIHwgbnVsbCkge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBlZGdlVG9rZW4/LmFwcGxpY2F0aW9uSWQgfHwgJyc7XG4gICAgdGhpcy5fdG9rZW4gPSB7XG4gICAgICB1cmk6IGVkZ2VUb2tlbj8udG9rZW4/LnVyaSA/IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoZWRnZVRva2VuLnRva2VuLnVyaSkgOiBudWxsLFxuICAgICAgY2FwYWJpbGl0aWVzOiBlZGdlVG9rZW4/LnRva2VuPy5jYXBhYmlsaXRpZXMgfHwgW11cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHVyaSgpOiBVUkwgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4udXJpO1xuICB9XG5cbiAgZ2V0IGNhcGFiaWxpdGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLmNhcGFiaWxpdGllcztcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uSWQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmRlY2xhcmUgY29uc3QgX19GRUFUVVJFU19fOiB7XG4gIHNlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHNlbmRMb2dzOiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBzZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZEZlYXR1cmVzIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IGJvb2xlYW47XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NlbmRNZXRyaWNzOiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dUb0NvbnNvbGU6IExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9ncygpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvZ3M7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRNZXRyaWNzKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRNZXRyaWNzO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dUb0NvbnNvbGUoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ1RvQ29uc29sZTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZlYXR1cmVzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IF9fRkVBVFVSRVNfXztcblxuICAgICAgdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcyA9ICdzZW5kTG9jYWxDYW5kaWRhdGVzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMgOiB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnc2VuZExvZ3MnIGluIGZlYXR1cmVzID8gZmVhdHVyZXMuc2VuZExvZ3MgOiAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ3NlbmRNZXRyaWNzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRNZXRyaWNzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnbG9nVG9Db25zb2xlJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLmxvZ1RvQ29uc29sZSA6ICdBbGwnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5fc2VuZExvZ3MgPSAnQWxsJztcbiAgICAgIHRoaXMuX3NlbmRNZXRyaWNzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9sb2dUb0NvbnNvbGUgPSAnQWxsJztcbiAgICB9XG4gIH1cbn1cblxuQnVpbGRGZWF0dXJlcy5hcHBseUZlYXR1cmVzKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmVhdHVyZUVuYWJsZW1lbnQge1xuICBzdGF0aWMgZ2V0IGNsaWVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2xpZW50IG9mZmVyIHdvcmtmbG93IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnNcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzQgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc1IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NiB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGdldFRyYW5zY2VpdmVyc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFkZFRyYW5jZWl2ZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBDaHJvbWUgNjksIDcwLCA3MSwgNzIgZXhwb3NlcyBgYWRkVHJhbmNlaXZlcmAgYnV0IGl0IGRvZXMgbm90IHdvcmsgY29ycmVjdGx5XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MCB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDY2O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRDdXJyZW50T2ZmZXJEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG9uVHJhY2tEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2MyB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaG91bGRVc2VOYXRpdmVIbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhZmFyaScgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ1NhbXN1bmdCcm93c2VyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcmVjYWNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnSUUnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5kb2N1bWVudENyZWF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPj0gNzEgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDY5IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmlzTW9iaWxlKCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3IgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIFJUQ1J0cFJlY2VpdmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgUlRDUnRwUmVjZWl2ZXIucHJvdG90eXBlLmNyZWF0ZUVuY29kZWRTdHJlYW1zICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1Byb3RlY3RlZENoYW5uZWxTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gRmlyZWZveCBEUk0gcGxheWJhY2sgZXhoaWJpdHMgaW5jb25zaXN0ZW50IHBlcmZvcm1hbmNlOyByb290IGNhdXNlIGludmVzdGlnYXRpb24gcGVuZGluZ1xuICAgIC8vIFNhZmFyaSBsYWNrcyBwbGF0Zm9ybSBzdXBwb3J0IGZvciBGYWlyUGxheSBEUk0gaW1wbGVtZW50YXRpb25cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnRmlyZWZveCcgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lICE9PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LkhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBBYm9ydENvbnRyb2xsZXIoKTogdHlwZW9mIEFib3J0Q29udHJvbGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5BYm9ydENvbnRyb2xsZXI7XG4gIH1cblxuICBnZXQgRm9ybURhdGEoKTogdHlwZW9mIEZvcm1EYXRhIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkZvcm1EYXRhO1xuICB9XG5cbiAgZ2V0IEhUTUxWaWRlb0VsZW1lbnQoKTogdHlwZW9mIEhUTUxWaWRlb0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuSFRNTFZpZGVvRWxlbWVudDtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbSgpOiB0eXBlb2YgTWVkaWFTdHJlYW0ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW07XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW1UcmFjaygpOiB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbVRyYWNrO1xuICB9XG5cbiAgZ2V0IE1lZGlhU291cmNlKCk6IHR5cGVvZiBNZWRpYVNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVNvdXJjZTtcbiAgfVxuXG4gIGdldCBSVENQZWVyQ29ubmVjdGlvbigpOiB0eXBlb2YgUlRDUGVlckNvbm5lY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCk6IHR5cGVvZiBSVENTZXNzaW9uRGVzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ0ljZUNhbmRpZGF0ZSgpOiB0eXBlb2YgUlRDSWNlQ2FuZGlkYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ0ljZUNhbmRpZGF0ZTtcbiAgfVxuXG4gIGdldCBVUkwoKTogdHlwZW9mIFVSTCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkw7XG4gIH1cblxuICBnZXQgVVJMU2VhcmNoUGFyYW1zKCk6IHR5cGVvZiBVUkxTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMU2VhcmNoUGFyYW1zO1xuICB9XG5cbiAgZ2V0IGFkZERvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgYWRkV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhckludGVydmFsKCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhckludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBjbGVhclRpbWVvdXQoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFyVGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRDcmVhdGVFbGVtZW50KCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudEhhc0ZvY3VzKCk6ICgpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5oYXNGb2N1cy5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudElzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2RvY3VtZW50LmhpZGRlbjtcbiAgfVxuXG4gIGdldCBkb2N1bWVudFF1ZXJ5U2VsZWN0b3IoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3Rvci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBmZXRjaCgpOiAoaW5wdXQ6IHN0cmluZyB8IFVSTCB8IFJlcXVlc3QsIGluaXQ/OiBSZXF1ZXN0SW5pdCkgPT4gUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuZmV0Y2guYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uSG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICBnZXQgbG9jYXRpb25TZWFyY2goKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYXRpb24uc2VhcmNoO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvckNvbm5lY3Rpb24oKTogSU5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5jb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IG5hdmlnYXRvcklzT25MaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iub25MaW5lO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3dbJ19fcGhlbml4UGFnZUxvYWRUaW1lJ10gfHwgdGhpcy5fd2luZG93WydfX3BhZ2VMb2FkVGltZSddO1xuICB9XG5cbiAgZ2V0IHNlbmRCZWFjb24oKTogKCh1cmw6IHN0cmluZyB8IFVSTCwgZGF0YT86IEJvZHlJbml0IHwgbnVsbCkgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3Iuc2VuZEJlYWNvblxuICAgICAgPyAodXJsLCBkYXRhKSA9PiB0aGlzLl9uYXZpZ2F0b3Iuc2VuZEJlYWNvbiEodXJsLCBkYXRhID09PSB1bmRlZmluZWQgPyBudWxsIDogZGF0YSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHF1ZXVlTWljcm90YXNrKCk6IChtaWNyb3Rhc2s6ICgpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucXVldWVNaWNyb3Rhc2suYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk6IChjYWxsYmFjazogRnJhbWVSZXF1ZXN0Q2FsbGJhY2spID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0SW50ZXJ2YWwoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0SW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldFRpbWVvdXQoKTogKGhhbmRsZXI6IHN0cmluZyB8IEZ1bmN0aW9uLCB0aW1lb3V0PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuc2V0VGltZW91dC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSBfZGlzcG9zZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2Rpc3Bvc2FibGU6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoZGlzcG9zYWJsZTogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5fZGlzcG9zYWJsZSA9IGRpc3Bvc2FibGU7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLl9kaXNwb3NhYmxlLmNhbGwodGhpcyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzcG9zYWJsZUxpc3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0OiBJRGlzcG9zYWJsZVtdID0gW107XG5cbiAgYWRkKGRpc3Bvc2FibGU6IElEaXNwb3NhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5wdXNoKGRpc3Bvc2FibGUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LmZvckVhY2goZGlzcG9zYWJsZSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSk7XG4gICAgdGhpcy5fbGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYERpc3Bvc2FibGVMaXN0W2Rpc3Bvc2FibGVzPSR7dGhpcy5fbGlzdC5sZW5ndGh9XWA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIEFzIGZsb2F0IGluIEVDTUFTY3JpcHQgdXNlIDY0LWJpdCBmb3JtYXQgaXQgY2Fubm90IGhhdmUvaGFuZGxlIG1vcmUgdGhhbiAxNSBzeW1ib2xzIGFmdGVyIGRvdC5cbmNvbnN0IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCA9IDE1O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOdW1iZXJzIHtcbiAgc3RhdGljIGNvdW50TnVtYmVyTGVuZ3RoKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlID0gMDtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgbnVtYmVyICo9IC0xO1xuICAgICAgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSsrO1xuICAgIH1cblxuICAgIHJldHVybiBOdW1iZXJzLmNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbChudW1iZXIpICsgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSArIChudW1iZXIgIT09IE1hdGguZmxvb3IobnVtYmVyKSA/IE51bWJlcnMuY291bnREaWdpdHNBZnRlckRlY2ltYWwobnVtYmVyKSArIDEgOiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpeFJvdW5kaW5nKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBwb3dlciA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuXG4gICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBwb3dlcikgLyBwb3dlcjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZGlnaXRzQmVmb3JlRGVjaW1hbCA9IDE7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgd2hpbGUgKG51bWJlciA+PSAxMCkge1xuICAgICAgbnVtYmVyID0gbnVtYmVyIC8gMTA7XG4gICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZ2l0c0JlZm9yZURlY2ltYWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG4gICAgbGV0IG1vZGlmaWVkVmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgd2hpbGUgKG1vZGlmaWVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUgJiYgY291bnQgPCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgICBtb2RpZmllZFZhbHVlID0gTnVtYmVycy5maXhSb3VuZGluZyhvcmlnaW5hbFZhbHVlLCBjb3VudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ051bWJlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJpbmdzIHtcbiAgc3RhdGljIHJhbmRvbShsZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmFuZG9tMTNDaGFyYWN0ZXJzID0gKCk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDIsIDE1KTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9vcHM6IG51bWJlciA9IE1hdGguY2VpbChsZW5ndGggLyAxMyk7XG5cbiAgICByZXR1cm4gbmV3IEFycmF5KGxvb3BzKS5maWxsKHJhbmRvbTEzQ2hhcmFjdGVycykucmVkdWNlKChzdHJpbmcsIGZ1bmMpID0+IHtcbiAgICAgIHJldHVybiBzdHJpbmcgKyBmdW5jKCk7XG4gICAgfSwgJycpLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmluZ3MgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VW5yZWFjaGFibGUoeDogbmV2ZXIpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBbJHt4fV0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzZXJ0VW5yZWFjaGFibGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBlbmRlcnMge1xuICBwcml2YXRlIF9hcHBlbmRlcnM6IEFycmF5PElBcHBlbmRlcj4gPSBbXTtcblxuICBnZXQgdmFsdWUoKTogQXJyYXk8SUFwcGVuZGVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGFkZChhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLnB1c2goYXBwZW5kZXIpO1xuICB9XG5cbiAgcmVtb3ZlKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSB0aGlzLl9hcHBlbmRlcnMucmVkdWNlKChpdGVtcywgaXRlbSkgPT4ge1xuICAgICAgaWYgKCEoaXRlbSA9PT0gYXBwZW5kZXIpKSB7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9LCBbXSBhcyBBcnJheTxJQXBwZW5kZXI+KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnNvbGVBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGAke2RhdGUudG9JU09TdHJpbmcoKX0gWyR7Y2F0ZWdvcnl9XSBbJHtMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdfV0gJHttZXNzYWdlfWA7XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgY29uc29sZS5sb2coZnVsbE1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihmdWxsTWVzc2FnZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBlbnVtIExvZ2dpbmdMZXZlbCB7XG4gIEFsbCA9IC0xLFxuICBUcmFjZSA9IDEwLFxuICBEZWJ1ZyA9IDIwLFxuICBJbmZvID0gMzAsXG4gIFdhcm4gPSA0MCxcbiAgRXJyb3IgPSA1MCxcbiAgRmF0YWwgPSA2MCxcbiAgT2ZmID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMb2dnaW5nTGV2ZWxUeXBlID0gJ09mZicgfCAnVHJhY2UnIHwgJ0RlYnVnJyB8ICdJbmZvJyB8ICdXYXJuJyB8ICdFcnJvcicgfCAnRmF0YWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhdGVnb3J5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGVuZGVyczogQXBwZW5kZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQ7XG5cbiAgZ2V0IGNhdGVnb3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NhdGVnb3J5O1xuICB9XG5cbiAgZ2V0IGFwcGVuZGVycygpOiBBcHBlbmRlcnMge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdUaHJlc2hvbGQge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICB0cmFjZSguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuVHJhY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuVHJhY2UsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkRlYnVnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkRlYnVnLCBhcmdzKTtcbiAgfVxuXG4gIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuSW5mbywgYXJncyk7XG4gIH1cblxuICB3YXJuKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLldhcm4sIGFyZ3MpO1xuICB9XG5cbiAgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkVycm9yLCBhcmdzKTtcbiAgfVxuXG4gIGZhdGFsKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5GYXRhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5GYXRhbCwgYXJncyk7XG4gIH1cblxuICBwcml2YXRlIGxvZyhsZXZlbDogbnVtYmVyLCBhcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5yZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3MpO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLnZhbHVlLmZvckVhY2goKGFwcGVuZGVyOiBJQXBwZW5kZXIpID0+IHtcbiAgICAgIGFwcGVuZGVyLmxvZyhsZXZlbCwgbWVzc2FnZSwgdGhpcy5jYXRlZ29yeSwgZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQbGFjZWhvbGRlcnMoYXJnczogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IGFyZ3NbMF07XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIHdoaWxlIChyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YgJiYgYXJncy5sZW5ndGggPiAxICYmIGluZGV4ID49IDApIHtcbiAgICAgIGluZGV4ID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mKCclJywgaW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMik7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSAnJSc6XG4gICAgICAgICAgICAvLyBFc2NhcGVkICclJScgdHVybnMgaW50byAnJSdcbiAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpO1xuICAgICAgICAgICAgaW5kZXgrKztcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICclZCcgb3IgJyVzJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy50b1N0cmluZyhhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICAvLyBSZXBsYWNlICVqJyB3aXRoIHRoZSBhcmd1bWVudFxuICAgICAgICAgICAgYXJnc1swXSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSB0aGlzLnJlcGxhY2VBcmd1bWVudChcbiAgICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhcmdzLnNwbGljZSgxLCAxKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBhcmdzID0gYXJncy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogc3RyaW5nIHwgRXJyb3IsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBhcnJheS5sZW5ndGggJiYgY3VycmVudFZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUubWVzc2FnZSkgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvciArIGBbJHt0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XWA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnkoYXJnOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhY2hlOiBvYmplY3RbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXJnIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnRvU3RyaW5nKGFyZykgOiBhcmcsXG4gICAgICAgIChfLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoY2FjaGUuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnPHJlY3Vyc2l2ZT4nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYWNoZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdbb2JqZWN0IGludmFsaWQgSlNPTi5zdHJpbmdpZnldJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VBcmd1bWVudChhcmd1bWVudDogYW55LCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyB0aGlzLnRvU3RyaW5nKGFyZ3VtZW50KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMik7XG4gIH1cblxuICBwcml2YXRlIHRvU3RyaW5nKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiBkYXRhID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB0b1N0cmluZ1N0ciA9ICcnO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSAnW29iamVjdCBpbnZhbGlkIHRvU3RyaW5nKCldJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1N0cmluZ1N0cjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGNhdGVnb3J5OiBzdHJpbmcsIGFwcGVuZGVyczogQXBwZW5kZXJzLCB0aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQpIHtcbiAgICB0aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IGFwcGVuZGVycztcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJEZWZhdWx0cyB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTG9nc107XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLmxvZ1RvQ29uc29sZV07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlciwge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcnM6IHtbY2F0ZWdvcnk6IHN0cmluZ106IElMb2dnZXJ9ID0ge307XG4gIHByaXZhdGUgc3RhdGljIF9hcHBlbmRlcnM6IEFwcGVuZGVycyA9IG5ldyBBcHBlbmRlcnMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCA9IG5ldyBMb2dnaW5nVGhyZXNob2xkKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uID0gbmV3IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9nZ2VyKGNhdGVnb3J5OiBzdHJpbmcpOiBJTG9nZ2VyIHtcbiAgICBpZiAodHlwZW9mIGNhdGVnb3J5ICE9PSAnc3RyaW5nJykge1xuICAgICAgY2F0ZWdvcnkgPSAnU0RLJztcbiAgICB9XG5cbiAgICBjb25zdCBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgIHJldHVybiBsb2dnZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldID0gbmV3IExvZ2dlcihjYXRlZ29yeSwgdGhpcy5fYXBwZW5kZXJzLCB0aGlzLl90aHJlc2hvbGQpO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dpbmdMZXZlbCgpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgnY29uc29sZScsIExvZ2dlckZhY3RvcnkuYXBwbHlDb25zb2xlTG9nZ2VyLmJpbmQodGhpcykpO1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbCgndGVsZW1ldHJ5JywgTG9nZ2VyRmFjdG9yeS5hcHBseVRlbGVtZXRyeUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5TG9nZ2luZ0xldmVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWxvZ2dpbmctbGV2ZWwnKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pIHtcbiAgICAgIHRoaXMuX3RocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlBcHBlbmRlckxvZ2dpbmdMZXZlbChuYW1lOiBzdHJpbmcsIGFwcGx5QXBwZW5kZXI6IChsZXZlbDogTG9nZ2luZ0xldmVsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKGBwaGVuaXgtJHtuYW1lfS1sb2dnaW5nLWxldmVsYCkgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChwYXJhbWV0ZXJWYWx1ZSA9PT0gJ09mZicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhcHBseUFwcGVuZGVyKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlDb25zb2xlTG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIobGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5VGVsZW1ldHJ5TG9nZ2VyKGxldmVsOiBMb2dnaW5nTGV2ZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZCA9IGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9nZ2VyRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuTG9nZ2VyRmFjdG9yeS5hcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnaW5nTGV2ZWxNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUobG9nZ2luZ0xldmVsOiBMb2dnaW5nTGV2ZWwpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbCkge1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5UcmFjZTpcbiAgICAgICAgcmV0dXJuICdUcmFjZSc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5EZWJ1ZzpcbiAgICAgICAgcmV0dXJuICdEZWJ1Zyc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICByZXR1cm4gJ0luZm8nO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gTm90ZTogVGhpcyBQcm9taXNlIHBvbHlmaWxsIGlzIGluY2x1ZGVkIGZvciBicm93c2VyIGJ1aWxkcyBvbmx5IHRvIGFkZHJlc3MgY29tcGF0aWJpbGl0eSBpc3N1ZXNcbi8vIHdpdGggb2xkZXIgYnJvd3NlcnMgd2hvc2UgbmF0aXZlIFByb21pc2U8VD5pbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IC5maW5hbGx5LlxuXG5pbXBvcnQgUHJvbWlzZUhhbmRsZXIgZnJvbSAnLi9Qcm9taXNlSGFuZGxlcic7XG5cbmNsYXNzIFByb21pc2U8VD4ge1xuICBfc3RhdGU6IG51bWJlcjtcbiAgX2hhbmRsZWQ6IGJvb2xlYW47XG4gIF92YWx1ZTogVCB8IHVua25vd247XG4gIF9kZWZlcnJlZHM6IEFycmF5PFByb21pc2VIYW5kbGVyPFQ+PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIHRoZW4ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbCwgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsKTogUHJvbWlzZTxUPnwgdm9pZDtcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUgPSAwO1xuICAgIHRoaXMuX2hhbmRsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG5cbiAgICB0aGlzLmRvUmVzb2x2ZShjYWxsYmFjayk7XG4gIH1cblxuICBkb1Jlc29sdmUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBjYWxsYmFjayhcbiAgICAgICAgKHZhbHVlOiBQcm9taXNlPFQ+fCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKHJlYXNvbjogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KHJlYXNvbik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLnByb21pc2VSZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZXNvbHZlKG5ld1ZhbHVlOiBQcm9taXNlPFQ+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB0cnkge1xuICAgICAgLy8gUHJvbWlzZTxUPlJlc29sdXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vUHJvbWlzZXMtYXBsdXMvUHJvbWlzZXMtc3BlYyN0aGUtUHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICAgICAgaWYgKG5ld1ZhbHVlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgUHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdCBzZWxmLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAvLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgbmV4dCBsaW5lIHRvIG5vdCBkbyBleHRyYSBpZiBzdGF0ZW1lbnRzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCB0aGVuID0gbmV3VmFsdWUudGhlbjtcblxuICAgICAgICBpZiAobmV3VmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcHJvbWlzZS5fc3RhdGUgPSAzO1xuICAgICAgICAgIHByb21pc2UuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgcHJvbWlzZS5maW5hbGUoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHByb21pc2UuZG9SZXNvbHZlKGZ1bmN0aW9uKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgdGhlbi5hcHBseShuZXdWYWx1ZSwgYXJndW1lbnRzIGFzIHVua25vd24gYXMgW29uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb25dKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcm9taXNlLl9zdGF0ZSA9IDE7XG4gICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcHJvbWlzZS5maW5hbGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvbWlzZVJlamVjdChuZXdWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gMjtcbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuZmluYWxlKCk7XG4gIH1cblxuICBmaW5hbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAyICYmIHRoaXMuX2RlZmVycmVkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5faGFuZGxlZCkge1xuICAgICAgICAgIFByb21pc2UuX3VuaGFuZGxlZFJlamVjdGlvbih0aGlzLl92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRoaXMuaGFuZGxlKHRoaXMuX2RlZmVycmVkc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmZXJyZWRzID0gW107XG4gIH1cblxuICBoYW5kbGUoZGVmZXJyZWQ6IFByb21pc2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgbGV0IHByb21pc2UgPSB0aGlzIGFzIFByb21pc2U8VD47XG5cbiAgICB3aGlsZSAocHJvbWlzZS5fc3RhdGUgPT09IDMpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLl92YWx1ZSBhcyBQcm9taXNlPFQ+O1xuICAgIH1cblxuICAgIGlmIChwcm9taXNlLl9zdGF0ZSA9PT0gMCkge1xuICAgICAgcHJvbWlzZS5fZGVmZXJyZWRzLnB1c2goZGVmZXJyZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvbWlzZS5faGFuZGxlZCA9IHRydWU7XG4gICAgUHJvbWlzZS5faW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gcHJvbWlzZS5fc3RhdGUgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxlZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG5cbiAgICAgIGlmIChjYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDEpIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QocHJvbWlzZS5fdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhwcm9taXNlLl92YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlamVjdChlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRlZmVycmVkLnByb21pc2UucHJvbWlzZVJlc29sdmUocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhbGwoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5hbGwgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZW1haW5pbmcgPSBhcmdzLmxlbmd0aDtcbiAgICAgIGNvbnN0IG1hbmFnZVJlc3BvbnNlID0gKGk6IG51bWJlciwgdmFsdWU6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICAgICAgY29uc3QgdGhlbiA9IHZhbHVlLnRoZW47XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGVuLmNhbGwoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+KSA9PiBtYW5hZ2VSZXNwb25zZShpLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFyZ3NbaV0gPSB2YWx1ZTtcblxuICAgICAgICAgIGlmICgtLXJlbWFpbmluZyA9PT0gMCkge1xuICAgICAgICAgICAgcmVzb2x2ZShhcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1hbmFnZVJlc3BvbnNlKGksIGFyZ3NbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIHJlc29sdmUodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24pID0+IHJlc29sdmUodmFsdWUpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWplY3QodmFsdWU6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF86IHVuZGVmaW5lZCwgcmVqZWN0OiBGdW5jdGlvbikgPT4gcmVqZWN0KHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmFjZShhcnI6IEFycmF5PFByb21pc2U8dW5rbm93bj4+KTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLnJhY2UgYWNjZXB0cyBhbiBhcnJheScpKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoYXJyW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgX2ltbWVkaWF0ZShjYWxsYmFjazogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBpZ25vcmVkID0gd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICB9XG5cbiAgc3RhdGljIF91bmhhbmRsZWRSZWplY3Rpb24oZXJyb3I6IFByb21pc2U8dW5rbm93bj58IG51bGwgfCB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1Bvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjonLCBlcnJvcik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgIH1cbiAgfVxufVxuXG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbihvblJlamVjdGVkOiBGdW5jdGlvbik6IHVua25vd24ge1xuICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsndGhlbiddID0gZnVuY3Rpb24ob25GdWxmaWxsZWQ6IEZ1bmN0aW9uLCBvblJlamVjdGVkOiBGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj58IHZvaWQge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKCk6IG51bGwgPT4gbnVsbCk7XG5cbiAgdGhpcy5oYW5kbGUobmV3IFByb21pc2VIYW5kbGVyPHVua25vd24+KG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKSk7XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10gPSBmdW5jdGlvbihjYWxsYmFjazogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAodmFsdWU6IFByb21pc2U8dW5rbm93bj58IHVuZGVmaW5lZCkgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gdmFsdWUsICgpOiBudWxsID0+IG51bGwpLFxuICAgIChyZWFzb246IEVycm9yIHwgc3RyaW5nKSA9PiBQcm9taXNlLnJlc29sdmUoY2FsbGJhY2soKSkudGhlbigoKSA9PiBQcm9taXNlLnJlamVjdChyZWFzb24pLCAoKTogbnVsbCA9PiBudWxsKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBQcm9taXNlIGZyb20gJy4vUHJvbWlzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb21pc2VIYW5kbGVyPFQ+IHtcbiAgb25GdWxmaWxsZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgb25SZWplY3RlZDogRnVuY3Rpb24gfCBudWxsO1xuICBwcm9taXNlOiBQcm9taXNlPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24sIHByb21pc2U6IFByb21pc2U8VD4pIHtcbiAgICB0aGlzLm9uRnVsZmlsbGVkID0gdHlwZW9mIG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiBudWxsO1xuICAgIHRoaXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB7XG4gIFtraW5kOiBzdHJpbmddOiBJUnRjUHVibGlzaFN0YXRpc3RpYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnQge1xuICByZXN1bHQ6ICgpID0+IElMZWdhY3lSVENTdGF0c1JlcG9ydEl0ZW1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtIGV4dGVuZHMgUlRDU3RhdHNSZXBvcnQge1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWVzOiAoKSA9PiBzdHJpbmdbXTtcbiAgc3RhdDogKG5hbWU6IHN0cmluZykgPT4gbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNQdWJsaXNoU3RhdGlzdGljIHtcbiAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA/OiBudW1iZXI7XG4gIHNzcmM6IHN0cmluZztcbiAgbWVkaWFUeXBlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBiaXRyYXRlPzogbnVtYmVyO1xuICBieXRlc1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcmV0cmFuc21pdHRlZEJ5dGVzU2VudD86IG51bWJlcjtcbiAgZmlyQ291bnQ/OiBudW1iZXI7XG4gIGZyYW1lSGVpZ2h0PzogbnVtYmVyO1xuICBmcmFtZVdpZHRoPzogbnVtYmVyO1xuICBmcmFtZXNFbmNvZGVkPzogbnVtYmVyO1xuICBmcmFtZXNTZW50PzogbnVtYmVyO1xuICBoZWFkZXJCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGh1Z2VGcmFtZXNTZW50PzogbnVtYmVyO1xuICBwbGlDb3VudD86IG51bWJlcjtcbiAgcXBTdW0/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlVGltZT86IG51bWJlcjtcbiAgdG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ/OiBudW1iZXI7XG4gIGNvZGVjOiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZTogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcbmNvbnN0IGdldFN0YXRzVGltZW91dER1cmF0aW9uID0gNTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjUHVibGlzaE1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSdGNQdWJsaXNoTW9uaXRvcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX21vbml0b3JHZW5lcmF0aW9uID0gMDtcbiAgcHJpdmF0ZSBfYXZhaWxhYmxlVHJhY2tzOiB7XG4gICAgYXVkaW86IGJvb2xlYW47XG4gICAgdmlkZW86IGJvb2xlYW47XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCBlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXIsIGlzRm9yZWdyb3VuZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBwZWVyQ29ubmVjdGlvbjtcbiAgICB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lID0gZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbiAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnNkcCAmJiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uPy5zZHApIHtcbiAgICAgIGNvbnN0IHBhcnNlZExvY2FsRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICBjb25zdCBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBTZHBQYXJzZXIodGhpcy5fcGVlckNvbm5lY3Rpb24uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjO1xuICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWM7XG5cbiAgICAgIHRoaXMuX2F2YWlsYWJsZVRyYWNrcyA9IHtcbiAgICAgICAgYXVkaW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc0F1ZGlvVHJhY2tFbmFibGVkLFxuICAgICAgICB2aWRlbzogcGFyc2VkTG9jYWxEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkICYmIHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLmlzVmlkZW9UcmFja0VuYWJsZWRcbiAgICAgIH07XG5cbiAgICAgIGxldCBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IHRydWU7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShmb3JlZ3JvdW5kID0+IHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWZvcmVncm91bmQgfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJbnZhbGlkYXRlIGFueSBpbi1mbGlnaHQgcG9sbCBmcm9tIGJlZm9yZSB0aGUgZnJlZXplXG4gICAgICAgICAgdGhpcy5fbW9uaXRvckdlbmVyYXRpb24rKztcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZW91dCk7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1Jlc3RhcnRpbmcgc3RhdHMgcG9sbGluZyBhZnRlciBmb3JlZ3JvdW5kIHRyYW5zaXRpb24nKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljKCk6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0Y1N0YXRpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgdGhpcy5faXNNb25pdG9yUnVubmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHtcbiAgICAgICAgYXVkaW86IDAsXG4gICAgICAgIHZpZGVvOiAwXG4gICAgICB9O1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uO1xuICAgIC8vIFNhZmFyaSAxMSBkb2VzbnQgaGF2ZSBraW5kIG9yIG1lZGlhVHlwZSBzbyB3ZSBuZWVkIHRvIHRha2UgaXQgZnJvbSB0aGUgaW5ib3VuZC1ydHAgb2JqZWN0IGlkXG4gICAgY29uc3QgZ2V0S2luZEZvclNhZmFyaTExID0gKGl0ZW06IHtpZDogc3RyaW5nfSk6IHN0cmluZyA9PiBpdGVtLmlkLmluY2x1ZGVzKCdBdWRpbycpID8gJ2F1ZGlvJyA6IGl0ZW0uaWQuaW5jbHVkZXMoJ1ZpZGVvJykgPyAndmlkZW8nIDogJyc7XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHMobnVsbCk7XG5cbiAgICAgIGlmICghc3RhdHNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGltZW91dFByb21pc2UgPSBuZXcgUHJvbWlzZTx1bmRlZmluZWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHVuZGVmaW5lZCksIGdldFN0YXRzVGltZW91dER1cmF0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3N0YXRzUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcblxuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0cykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ2dldFN0YXRzKCkgdGltZWQgb3V0LCBza2lwcGluZyBzdGF0cyBwcm9jZXNzaW5nJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBydGNTdGF0aXN0aWNzOiBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICBsZXQgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICBzdGF0cy5mb3JFYWNoKHJlcG9ydCA9PiB7XG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSkge1xuICAgICAgICAgICAgcm91bmRUcmlwVGltZSA9IHJlcG9ydC5jdXJyZW50Um91bmRUcmlwVGltZSAqIDEwMDA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ucm91bmRUcmlwVGltZSA9IHJvdW5kVHJpcFRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnY2FuZGlkYXRlLXBhaXInICYmIHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWydhdWRpbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ2F1ZGlvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ291dGJvdW5kLXJ0cCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGtpbmQ6ICd2aWRlbycgfCAnYXVkaW8nIHwgdW5kZWZpbmVkID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl9hdmFpbGFibGVUcmFja3M/LltraW5kXSkge1xuICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IHJlcG9ydC5ieXRlc1NlbnQgfHwgMDtcbiAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNCeXRlc1NlbnQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNTZW50ID8/IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5dGVzRGVsdGEgPSBieXRlcyAtIHByZXZpb3VzQnl0ZXNTZW50O1xuICAgICAgICAgICAgICBjb25zdCB0aW1lRGVsdGEgPSByZXBvcnQudGltZXN0YW1wIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgIGJ5dGVzU2VudDogcmVwb3J0LmJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBwYWNrZXRzU2VudDogcmVwb3J0LnBhY2tldHNTZW50LFxuICAgICAgICAgICAgICAgIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ6IHJlcG9ydC5yZXRyYW5zbWl0dGVkQnl0ZXNTZW50LFxuICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wIHx8IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXS5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZmlyQ291bnQnXSA9IHJlcG9ydC5maXJDb3VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZUhlaWdodCddID0gcmVwb3J0LmZyYW1lSGVpZ2h0O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lV2lkdGgnXSA9IHJlcG9ydC5mcmFtZVdpZHRoO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0VuY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNFbmNvZGVkO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc1NlbnQnXSA9IHJlcG9ydC5mcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2hlYWRlckJ5dGVzU2VudCddID0gcmVwb3J0LmhlYWRlckJ5dGVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydodWdlRnJhbWVzU2VudCddID0gcmVwb3J0Lmh1Z2VGcmFtZXNTZW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3BsaUNvdW50J10gPSByZXBvcnQucGxpQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsncXBTdW0nXSA9IHJlcG9ydC5xcFN1bTtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWyd0b3RhbEVuY29kZVRpbWUnXSA9IHJlcG9ydC50b3RhbEVuY29kZVRpbWU7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQnXSA9IHJlcG9ydC50b3RhbEVuY29kZWRCeXRlc1RhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNFbmNvZGVkKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBmcHMgPSAocmVwb3J0LmZyYW1lc0VuY29kZWQgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8uZnJhbWVzRW5jb2RlZCkgL1xuICAgICAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgICAgICAxMDAwO1xuXG4gICAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUgPSBydGNTdGF0aXN0aWNzO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24gfHwgIXRoaXMuX2lzTW9uaXRvclJ1bm5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIud2FybignZ2V0U3RhdHMoKSByZWplY3RlZCcsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc01vbml0b3JSdW5uaW5nICYmIGdlbmVyYXRpb24gPT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4gdGhpcy51cGRhdGVTdGF0aXN0aWMoKSwgdXBkYXRlU3RhdGlzdGljVGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2RlY0J5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkQXVkaW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBjYXNlICd2aWRlbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRWaWRlb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZHBQYXJzZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHA6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXVkaW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVmlkZW9UcmFja0VuYWJsZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2RwOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZHAgPSBzZHA7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcbiAgICBjb25zdCBzZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICB0aGlzLl9hdWRpb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCdhdWRpbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fdmlkZW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygndmlkZW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCdhdWRpbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICAgIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQgPSB0aGlzLmlzVHJhY2tCeVR5cGVFbmFibGVkKCd2aWRlbycsIHNkcFNwbGl0QnlUcmFja3MpO1xuICB9XG5cbiAgZ2V0IGF1ZGlvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXVkaW9Db2RlYztcbiAgfVxuXG4gIGdldCB2aWRlb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZGVvQ29kZWM7XG4gIH1cblxuICBnZXQgaXNBdWRpb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1ZpZGVvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlUcmFja3M6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2RwU2VjdGlvbkZvclR5cGUgPSBzZHBTcGxpdEJ5VHJhY2tzLmZpbmQoc2RwVHJhY2sgPT4gc2RwVHJhY2suc3RhcnRzV2l0aCh0eXBlKSk7XG5cbiAgICBpZiAoIXNkcFNlY3Rpb25Gb3JUeXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICFzZHBTZWN0aW9uRm9yVHlwZS5pbmNsdWRlcyhgYT1pbmFjdGl2ZWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvZGVjKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeUxpbmVzOiBzdHJpbmcgW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJ0bWFwID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBtPSR7dHlwZX1gKSk/LnNwbGl0KCcgJylbM10gfHwgJyc7XG4gICAgY29uc3QgdXNlZENvZGVjTGluZSA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgYT1ydHBtYXA6JHtydG1hcH1gKSk7XG4gICAgY29uc3QgdXNlZENvZGVjID0gdXNlZENvZGVjTGluZT8uc3BsaXQoJyAnKVsxXSB8fCAnJztcbiAgICBjb25zdCBjb2RlY05hbWUgPSB1c2VkQ29kZWMuc3BsaXQoJy8nKVswXTtcblxuICAgIHJldHVybiBjb2RlY05hbWU7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJTGVnYWN5UlRDU3RhdHNSZXBvcnR9IGZyb20gJy4vUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuXG5jbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb24gaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignVmFuaWxsYVBlZXJDb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQud2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvblxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBnZXQgbmF0aXZlKCk6IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudExvY2FsRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBjb25uZWN0aW9uU3RhdGUoKTogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgaWNlQ29ubmVjdGlvblN0YXRlKCk6IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uaWNlQ29ubmVjdGlvblN0YXRlIHx8IG51bGw7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LnNldENvbmZpZ3VyYXRpb24gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5nZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFRyYW5zY2VpdmVycyA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uYWRkVHJhbnNjZWl2ZXIgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPZmZlcihvcHRpb25zPzogUlRDT2ZmZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlT2ZmZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQW5zd2VyKG9wdGlvbnM/OiBSVENBbnN3ZXJPcHRpb25zKTogUHJvbWlzZTxSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgY3JlYXRlQW5zd2VyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0NyeXB0byA9IGRlc2NyaXB0aW9uLnNkcD8ubWF0Y2goL2E9Y3J5cHRvOi9pKTtcblxuICAgIGlmIChoYXNDcnlwdG8pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTRFAgYT1jcnlwdG8gaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihGZWF0dXJlRW5hYmxlbWVudC5wcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCA/XG4gICAgICBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSA6IGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIGdldFNlbmRlcnMoKTogUlRDUnRwU2VuZGVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U2VuZGVycygpO1xuICB9XG5cbiAgZ2V0UmVjZWl2ZXJzKCk6IFJUQ1J0cFJlY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0UmVjZWl2ZXJzKCk7XG4gIH1cblxuICBnZXRTdGF0cyhzZWxlY3Rvcj86IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsKTogUHJvbWlzZTxSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMoc2VsZWN0b3IpO1xuICB9XG5cbiAgZ2V0U3RhdHNMZWdhY3koKTogUHJvbWlzZTxJTGVnYWN5UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgLy8gSWdub3JlZCBkdWUgdG8gdHlwZXNjcmlwdCBub3QgaGF2aW5nIGxlZ2FjeSAnZ2V0U3RhdHMnIG1ldGhvZCB0eXBlIGRlZmluaXRpb25cbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSAnZ2V0U3RhdHMnIG1ldGhvZCBmb3JcbiAgICAgIC8vIENocm9tZUA8PSA2NiBkZXRhaWxlZCBoZXJlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02Mjc4MTZcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0U3RhdHMocmVzb2x2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VHJhbnNjZWl2ZXJzKCk6IFJUQ1J0cFRyYW5zY2VpdmVyW10ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0VHJhbnNjZWl2ZXJzKCk7XG4gIH1cblxuICBhZGRUcmFuc2NlaXZlcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCk6IFJUQ1J0cFRyYW5zY2VpdmVyIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgYWRkU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSk6IHZvaWQge1xuICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZFRyYWNrKHRyYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ3VyYXRpb24oKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHNldCBvbnRyYWNrKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjayA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb250cmFjaygpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2s7XG4gIH1cblxuICBzZXQgb25pY2VjYW5kaWRhdGUoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2VjYW5kaWRhdGUoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZTtcbiAgfVxuXG4gIHNldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBzZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNsb3NlKCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW5pbGxhUGVlckNvbm5lY3Rpb247IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkgaW1wbGVtZW50cyBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IHtcbiAgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+KHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZShuZXcgVmFuaWxsYVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4vU3ViamVjdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWRPbmx5U3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YmplY3Q6IFN1YmplY3Q8VD47XG5cbiAgY29uc3RydWN0b3Ioc3ViamVjdDogU3ViamVjdDxUPikge1xuICAgIHRoaXMuX3N1YmplY3QgPSBzdWJqZWN0O1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuY2xhc3MgRGlzcG9zYWJsZUxpc3RlbmVyPFQ+IGV4dGVuZHMgRGlzcG9zYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxpc3RlbmVyczogVFtdLCBsaXN0ZW5lcjogVCkge1xuICAgIHN1cGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IGxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdGVuZXJzOiAoKHZhbHVlOiBUKSA9PiB2b2lkKVtdO1xuICBwcml2YXRlIF92YWx1ZTogVDtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdO1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IFQpIHtcbiAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlICE9PSB2YWx1ZTtcblxuICAgIGlmIChjaGFuZ2VkICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBjb21wYXJhYmxlID0gdmFsdWUgYXMgdW5rbm93biBhcyBJQ29tcGFyYWJsZTxUPjtcblxuICAgICAgaWYgKHR5cGVvZiBjb21wYXJhYmxlLmVxdWFscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjaGFuZ2VkID0gIWNvbXBhcmFibGUuZXF1YWxzKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNoYW5nZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBbLi4udGhpcy5fbGlzdGVuZXJzXSkge1xuICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAgICBsaXN0ZW5lcih0aGlzLl92YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGVMaXN0ZW5lcjwodmFsdWU6IFQpID0+IHZvaWQ+KHRoaXMuX2xpc3RlbmVycywgbGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHN0YXRpYyBnZXRFbnZpcm9ubWVudEZyb21VcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgICByZXR1cm4gYmFzZVVSTC5vcmlnaW47XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtHbG9iYWxTY29wZX0gZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbCwgTG9nZ2luZ0xldmVsVHlwZX0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4uL2xvZ2dlci9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IExvZ2dpbmdMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dpbmdMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQgQnJvd3NlckRldGVjdG9yIGZyb20gJy4uL2RvbS9Ccm93c2VyRGV0ZWN0b3InO1xuaW1wb3J0IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGZyb20gJy4uL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcic7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuLi9ydGMvSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeVVybCBmcm9tICcuL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi9FbnZpcm9ubWVudCc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQnO1xuaW1wb3J0IHtTaGFrYVBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lTaGFrYVBsYXllcic7XG5pbXBvcnQge0hsc1BsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lIbHNQbGF5ZXInO1xuaW1wb3J0IHtXZWJQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JV2ViUGxheWVyJztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9JUHJvdmlkZWRHbG9iYWxTY29wZSc7XG5cbmNvbnN0IHBhZ2VMb2FkVGltZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU/LnBhZ2VMb2FkVGltZSB8fCBEYXRlLm5vdygpO1xuXG5pbnRlcmZhY2UgSUluaXRPcHRpb25zIHtcbiAgZGlzY292ZXJ5VXJpPzogc3RyaW5nO1xuICBwZWVyQ29ubmVjdGlvbkZhY3Rvcnk/OiBJUGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB0ZWxlbWV0cnlMZXZlbD86IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgY29uc29sZUxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0/OiBib29sZWFuO1xuICBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZT86IGJvb2xlYW47XG4gIHdlYlBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgc2hha2FQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgaGxzSnNMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNESyB7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSB0cnVlO1xuICBwcml2YXRlIHN0YXRpYyBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3dlYlBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfc2hha2FQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfaGxzSnNMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF9lbnZpcm9ubWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlVcmw6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gODtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUxldmVsOiBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPiA9IG5ldyBTdWJqZWN0PFRlbGVtZXRyeUxldmVsPihUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCk7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGljIF9tZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoQnVpbGRGZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3RlbmFuY3k6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSBTdHJpbmdzLnJhbmRvbSgzMik7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2FkZWRUaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1NESycpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5pdGlhbGl6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluaXRpYWxpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KFNESy5faW5pdGlhbGl6ZWQpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlEaXNjb3ZlcnlVcmk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KERpc2NvdmVyeVVyaS51cmkpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4oUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeSk7XG5cbiAgc3RhdGljIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTG9jYWxDYW5kaWRhdGVzKCk6IFN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZW5hbmN5KCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGNsaWVudFNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTREsuX2NsaWVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9hZGVkVGltZXN0YW1wKCk6IERhdGUge1xuICAgIHJldHVybiBTREsuX2xvYWRlZFRpbWVzdGFtcDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaW5pdGlhbGl6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seUluaXRpYWxpemVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlVcmkoKTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5RGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljUmV0cnlPbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICB9XG5cbiAgc3RhdGljIGdldCBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgd2ViUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYlBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hha2FQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9zaGFrYVBsYXllckxvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaGxzSnNMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5faGxzSnNMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1ldHJpY3NTZXJ2aWNlKCk6IE1ldHJpY3NTZXJ2aWNlIHtcbiAgICByZXR1cm4gU0RLLl9tZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeVVybCgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZWxlbWV0cnlVcmw7XG4gIH1cblxuICBzdGF0aWMgZ2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cztcbiAgfVxuXG4gIHN0YXRpYyBzZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyhyZXRyaWVzQW1vdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gcmV0cmllc0Ftb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUodGhpcy5fbG9nZ2VyLnRocmVzaG9sZC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsVHlwZSB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3NlckRldGVjdG9yKCk6IEJyb3dzZXJEZXRlY3RvciB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IExvZ2dlckZhY3RvcnkudGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSA9IFNESy5wYWdlTG9hZFRpbWU7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgVVJMIHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyICYmIHRlbmFuY3kpIHtcbiAgICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZSh0ZWxlbWV0cnlBcHBlbmRlcik7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBUZWxlbWV0cnlBcHBlbmRlcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdUZWxlbWV0cnkgdGVuYW5jeSB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKERpc2NvdmVyeVVyaS51cmkudmFsdWUpO1xuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBTREsuX21ldHJpY3NTZXJ2aWNlLm1ldHJpY3NDb25maWd1cmF0aW9uO1xuXG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbWV0cmljcy1sZXZlbCcpIGFzIFRlbGVtZXRyeUxldmVsVHlwZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwoVGVsZW1ldHJ5TGV2ZWxbdmFsdWVdKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwgPSBTREsuX3RlbGVtZXRyeUxldmVsLnN1YnNjcmliZSh0ZWxlbWV0cnlMZXZlbCA9PiB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZScpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgU0RLLmRpc2NvdmVyeVVyaS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLnRlbGVtZXRyeVVybC52YWx1ZSA9IFNESy5nZXRUZWxlbWV0cnlVcmwodmFsdWUpO1xuICAgICAgU0RLLl9lbnZpcm9ubWVudC52YWx1ZSA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjaGFubmVsVG9rZW4gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtY2hhbm5lbC10b2tlbicpO1xuXG4gICAgaWYgKGNoYW5uZWxUb2tlbikge1xuICAgICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbihjaGFubmVsVG9rZW4pO1xuXG4gICAgICBTREsuX3RlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeTtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmlWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC11cmknKTtcblxuICAgIGlmICh1cmlWYWx1ZSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaVZhbHVlO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VVUklWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1iYXNlLXVyaScpO1xuXG4gICAgaWYgKGJhc2VVUklWYWx1ZSkge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlO1xuICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChiYXNlVVJJVmFsdWUpO1xuXG4gICAgICB1cmkucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC1iYXNlLXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgb25Mb2FkKGdsb2JhbFNjb3BlOiBJR2xvYmFsU2NvcGUgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NESyBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2xvYmFsU2NvcGUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcigndW5sb2FkJywgKCkgPT4ge1xuICAgICAgU0RLLmRpc3Bvc2UoKTtcbiAgICB9KTtcblxuICAgIFNESy5hcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBuZXcgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IoKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJldHJ5IG9uIGZhaWx1cmUgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdTa2lwIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBtb2JpbGUgZGV2aWNlcyBvbiByZXN0YXJ0IGlzIHNldCB0bzogWyVzXScsIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBzdGF0aWMgaW5pdChvcHRpb25zPzogSUluaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlOiBJSW5pdE9wdGlvbnMgJiB7Z2xvYmFsU2NvcGU/OiBJUHJvdmlkZWRHbG9iYWxTY29wZX0gPSBvcHRpb25zO1xuXG4gICAgaWYgKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSkge1xuICAgICAgR2xvYmFsU2NvcGUuc2V0SW5zdGFuY2Uob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5kaXNjb3ZlcnlVcmkpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBvcHRpb25zLmRpc2NvdmVyeVVyaTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpIHtcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUgPSBvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCAmJiBUZWxlbWV0cnlMZXZlbFtvcHRpb25zLnRlbGVtZXRyeUxldmVsXSkge1xuICAgICAgU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSA9IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbChvcHRpb25zLnRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMubG9nZ2luZ0xldmVsXSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLnRocmVzaG9sZC5zZXRUaHJlc2hvbGQoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMubG9nZ2luZ0xldmVsKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsXSkge1xuICAgICAgY29uc3QgY29uc29sZUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgQ29uc29sZUFwcGVuZGVyKTtcblxuICAgICAgaWYgKGNvbnNvbGVBcHBlbmRlcikge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnJlbW92ZShjb25zb2xlQXBwZW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICE9PSAnT2ZmJykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUgPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLndlYlBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fd2ViUGxheWVyTG9hZGVyID0gb3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyID0gb3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5obHNKc0xvYWRlcikge1xuICAgICAgdGhpcy5faGxzSnNMb2FkZXIgPSBvcHRpb25zLmhsc0pzTG9hZGVyO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIFNESy5faW5pdGlhbGl6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBUZWxlbWV0cnlVcmwuZ2V0VGVsZW1ldHJ5VXJsKHVybCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5HbG9iYWxTY29wZS5zdWJzY3JpYmUoU0RLLm9uTG9hZC5iaW5kKFNESykpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5VXJsIHtcbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG4gICAgICBjb25zdCBzZWdtZW50cyA9IGJhc2VVUkwuaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgICAgc3dpdGNoIChiYXNlVVJMLnByb3RvY29sKSB7XG4gICAgICAgIGNhc2UgJ3dzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwOic7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd3NzOic6XG4gICAgICAgICAgYmFzZVVSTC5wcm90b2NvbCA9ICdodHRwczonO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMiB8fFxuICAgICAgICAgIChzZWdtZW50cy5sZW5ndGggPT09IDMgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMl0ubGVuZ3RoIDw9IDIgJiYgc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV0ubGVuZ3RoIDw9IDMpXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudHMudW5zaGlmdCgndGVsZW1ldHJ5Jyk7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ3N0Zy0nKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLXN0ZycpIHx8IHNlZ21lbnRzWzBdLmluY2x1ZGVzKCctc3RnLScpIHx8IHNlZ21lbnRzWzBdID09PSAnc3RnJykge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnktc3RnJztcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnbG9jYWwnKSB8fCBzZWdtZW50c1swXS5lbmRzV2l0aCgnLWxvY2FsJykpIHtcbiAgICAgICAgLy8gTGVhdmUgVVJMIHVuY2hhbmdlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5JztcbiAgICAgIH1cblxuICAgICAgYmFzZVVSTC5ob3N0bmFtZSA9IHNlZ21lbnRzLmpvaW4oJy4nKTtcblxuICAgICAgcmV0dXJuIGAke2Jhc2VVUkwub3JpZ2lufS90ZWxlbWV0cnlgO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgdHlwZSBCaXRyYXRlU3RhdGVUeXBlID0gJ0tlZXAnIHwgJ1Jlc2V0JztcbmV4cG9ydCB0eXBlIEJpdHJhdGVNb2RlVHlwZSA9ICdOb3JtYWwnIHwgJ0ZvcmNlJyB8ICdSZXNldCc7XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVTdGF0ZSB7XG4gIEtlZXAsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBlbnVtIEJpdHJhdGVNb2RlIHtcbiAgTm9ybWFsLFxuICBGb3JjZSxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUge1xuICBhcGlWZXJzaW9uOiBudW1iZXI7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgYml0cmF0ZUluQml0c1BlclNlY29uZDogbnVtYmVyO1xuICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZVR5cGU7XG4gIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZVR5cGU7XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcblxuZXhwb3J0IHR5cGUgUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtcbiAgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucykge1xuICAgIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBvcHRpb25zLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZTtcblxuICAgIGlmICghcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgIGlmICh0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KSB7XG4gICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VNZWRpYVN0cmVhbSgpOiB2b2lkIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtLnZhbHVlPy5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2tlbkNvbnRleHQge1xuICB0b2tlbjogU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgdG9rZW5FeHBpcmluZzogU3ViamVjdDxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgU3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPih0b2tlbik7XG4gICAgdGhpcy50b2tlbkV4cGlyaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0RGlzY292ZXJ5VXJpID0gJ2h0dHBzOi8vcGNhc3QucGhlbml4cnRzLmNvbS9wY2FzdC9lbmRQb2ludHMnO1xuXG5leHBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZU1vZGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlTW9kZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlKTogQml0cmF0ZU1vZGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVNb2RlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLk5vcm1hbDpcbiAgICAgICAgcmV0dXJuICdOb3JtYWwnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Gb3JjZTpcbiAgICAgICAgcmV0dXJuICdGb3JjZSc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVNb2RlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZVN0YXRlLCBCaXRyYXRlU3RhdGVUeXBlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRyYXRlU3RhdGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUpOiBCaXRyYXRlU3RhdGVUeXBlIHtcbiAgICBzd2l0Y2ggKGJpdHJhdGVTdGF0ZSkge1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuS2VlcDpcbiAgICAgICAgcmV0dXJuICdLZWVwJztcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLlJlc2V0OlxuICAgICAgICByZXR1cm4gJ1Jlc2V0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGJpdHJhdGVTdGF0ZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc2NvdmVyeVNlcnZpY2UgZnJvbSAnLi9EaXNjb3ZlcnlTZXJ2aWNlJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCA9IDYwMDAwO1xuXG5pbnRlcmZhY2UgSVBlclVSSUVuZHBvaW50IHsgW3g6IHN0cmluZ106IFByb21pc2U8RW5kUG9pbnQ+IH1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBJUGVyVVJJRW5kcG9pbnQgPSB7fTtcblxuICBzdGF0aWMgYXN5bmMgcHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxFbmRQb2ludD4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpXG4gICAgICAgICAgLnRoZW4ocmVzb2x2ZUVuZFBvaW50UHJvbWlzZSlcbiAgICAgICAgICAudGhlbigoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmk6IFVSTCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgcmV0dXJuIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjb3ZlcnlTZXJ2aWNlID0gbmV3IERpc2NvdmVyeVNlcnZpY2UodXJpKTtcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9IGRpc2NvdmVyeVNlcnZpY2UuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQoKTtcbiAgICBjb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaWdub3JlZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID09PSBjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgICAgIH1cbiAgICAgIH0sIGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwpO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpOiBVUkwpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcblxuICAgIGlmICh1cmwgaW4gRGlzY292ZXJ5Ll9jYWNoZSkge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5jb25zdCBpZ25vcmVkID0gRGlzY292ZXJ5LnByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDIwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0Rpc2NvdmVyeScpO1xuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgX3VyaTogVVJMO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogVVJMKSB7XG4gICAgaWYgKCF1cmkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHVyaScpO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UodXJpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKHVyaTogVVJMLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPEVuZFBvaW50W10+IHtcbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5IHJlcXVpcmVzIHRpbWVvdXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB1cmkudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgIH0pLFxuICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlzY292ZXJ5IHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGltZW91dCkpXG4gICAgXSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UuYm9keSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIHdpdGggbm8gZGF0YSBbJHt1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IGFzU3RyaW5nID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGFzU3RyaW5nLnNwbGl0KCcsJyk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBuZXcgRW5kUG9pbnQoZW5kUG9pbnQsIHRpbWVvdXQpKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KHRpbWVvdXQ6IG51bWJlciA9IGRlZmF1bHRUaW1lb3V0KTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IERpc2NvdmVyeVVyaS5idWlsZERpc2NvdmVyeVVybCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IGVuZFBvaW50cyA9IGF3YWl0IHRoaXMuZGlzY292ZXJOZWFyYnlFbmRQb2ludHMobmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpLCB0aW1lb3V0KTtcbiAgICBsZXQgZmFpbGVkUmVxdWVzdHMgPSAwO1xuICAgIGNvbnN0IHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkID0gKCk6IFByb21pc2U8dm9pZD4gPT4gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKGZhaWxlZFJlcXVlc3RzID49IGVuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVqZWN0KGBEaXNjb3Zlcnkgb2YgWyR7ZW5kUG9pbnRzLmxlbmd0aH1dIGVuZHBvaW50cyBmcm9tIFske3VybH1dIGZhaWxlZCwgcHJldmVudGluZyBpdCBmcm9tIGNvbXBsZXRpbmdgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBlbmRQb2ludCA9IGF3YWl0IFByb21pc2UucmFjZShlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IGVuZFBvaW50XG4gICAgICAucGluZygpXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdGYWlsZWQgdG8gcGluZyBlbmQgcG9pbnQgWyVzXScsIGVuZFBvaW50LCBlKTtcblxuICAgICAgICBmYWlsZWRSZXF1ZXN0cysrO1xuXG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCgpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHRpbWUgPT4ge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcmVkIGVuZCBwb2ludCBbJXNdIHdpdGggdGltZSBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSwgdGltZSk7XG4gICAgICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICAgICAgcnVudGltZTogKG5vdyAtIFNESy5wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgICAgICB2YWx1ZToge3VpbnQ2NDogdGltZSB8fCAwfSxcbiAgICAgICAgICByZXNvdXJjZTogZW5kUG9pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBraW5kOiAncGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50O1xuICAgICAgfSkpKTtcblxuICAgIHJldHVybiBlbmRQb2ludDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge2RlZmF1bHREaXNjb3ZlcnlVcml9IGZyb20gJy4uL2RlZmF1bHRzJztcbmltcG9ydCBQY2FzdFVyaSBmcm9tICcuL1BjYXN0VXJpJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5VXJpIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Rpc2NvdmVyeVVyaTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPihkZWZhdWx0RGlzY292ZXJ5VXJpKTtcblxuICBzdGF0aWMgZ2V0IHVyaSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiBEaXNjb3ZlcnlVcmkuX2Rpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZERpc2NvdmVyeVVybCh1cmk6IFVSTCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gUGNhc3RVcmkuZGlzY292ZXJ5UGF0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRGlzY292ZXJ5VXJpIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuaW1wb3J0IHtcbiAgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSxcbiAgSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QsXG4gIElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0XG59IGZyb20gJy4uL2FwaS9TdWJzY3JpYmUnO1xuaW1wb3J0IHtJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0LCBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZX0gZnJvbSAnLi4vYXBpL1NldFJlbW90ZURlc2NyaXB0aW9uJztcbmltcG9ydCB7SURlc3Ryb3lTdHJlYW1SZXF1ZXN0LCBJRGVzdHJveVN0cmVhbVJlc3BvbnNlfSBmcm9tICcuLi9hcGkvRGVzdHJveVN0cmVhbSc7XG5pbXBvcnQge0lBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCwgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZX0gZnJvbSAnLi4vYXBpL0FkZEljZUNhbmRpZGF0ZXMnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IFBhcmFtZXRlcnMgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvUGFyYW1ldGVycyc7XG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlU3RhdGUsIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBCaXRyYXRlTW9kZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlTW9kZU1hcHBpbmcnO1xuaW1wb3J0IFBjYXN0VXJpIGZyb20gJy4vUGNhc3RVcmknO1xuaW1wb3J0IEJpdHJhdGVTdGF0ZU1hcHBpbmcgZnJvbSAnLi9CaXRyYXRlU3RhdGVNYXBwaW5nJztcbmltcG9ydCB7Qml0c1BlclNlY29uZCwgTWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7XG4gIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlLFxuICBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QsXG4gIElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCxcbiAgUHVibGlzaFN0YXR1c1xufSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmNvbnN0IGFwaVZlcnNpb24gPSA3O1xuXG5jbGFzcyBGZXRjaFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZVN0YXR1cyA9ICdvaycgfCAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIFJlbW92ZVRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgRGVzdHJveVN0cmVhbVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW0ge1xuICBzdHJlYW1JZDogc3RyaW5nO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247IC8vIEludGVudGlvbmFsbHkgb3BlbjogdGhlIHNlcnZlciBtYXkgaW5jbHVkZSBwcm9wZXJ0aWVzIChlLmcuIGRybUNvbmZpZ3VyYXRpb24pIG5vdCBkZWNsYXJlZCBpbiB0aGlzIGludGVyZmFjZSB0aGF0IGNhbGxlcnMgcmVseSBvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiAnbm8tc3RyZWFtJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrIHtcbiAgKHJlcXVlc3Q6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIHtcbiAgKHJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlT3B0aW9ucyA9IHtcbiAgb25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnb2snO1xuICBzdHJlYW06IElTdHJlYW07XG4gIGxhZz86IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdub3QtZm91bmQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmb3JiaWRkZW4tdGFnJyB8ICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCcgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59O1xuXG5pbnRlcmZhY2UgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cztcbiAgc2Vzc2lvbkRlc2NyaXB0aW9uPzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbn1cblxuaW50ZXJmYWNlIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzO1xufVxuXG5pbnRlcmZhY2UgSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZFBvaW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VuZFBvaW50Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VyaTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lb3V0RHVyYXRpb246IE1pbGxpc2Vjb25kO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBNaWxsaXNlY29uZCkge1xuICAgIHRoaXMuX3VyaSA9IHVyaTtcbiAgICB0aGlzLl90aW1lb3V0RHVyYXRpb24gPSB0aW1lb3V0O1xuXG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuZCBwb2ludCByZXF1aXJlcyBhIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJvdW5kVHJpcFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkUGluZ1VybCgpO1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICB9O1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KHVybCwgcmVxdWVzdE9wdGlvbnMsIHRoaXMuX3RpbWVvdXREdXJhdGlvbilcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEZldGNoVGltZW91dEVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3N1YnNjcmliZScpO1xuICAgIGNvbnN0IGpzb25SZXNwb25zZUJvZHkgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6ICdmYWlsZWQnfTtcblxuICAgICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihyZXNwb25zZSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2UgPSB0aGlzLm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1Ymxpc2gobmFtZTogc3RyaW5nLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlcik6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVB1Ymxpc2hGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdwdWJsaXNoJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRoT2ZmZXI6IElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRoT2ZmZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYm9keVdpdGhvdXRPZmZlcjogSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhvdXRPZmZlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdwdWJsaXNoJyk7XG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZT4oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGpzb25SZXNwb25zZUJvZHk/LnN0cmVhbVJlc3BvbnNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBzdGF0dXM6IFB1Ymxpc2hTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBpZiAoIWpzb25SZXNwb25zZUJvZHkpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3ksIGpzb25SZXNwb25zZUJvZHkpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3QgcHVibGlzaCByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBwdWJsaXNoUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW06IElTdHJlYW0sIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXNjcmlwdGlvbicsICdyZW1vdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgIHR5cGU6IHNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IHNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHNldCByZW1vdGUgZGVzY3JpcHRpb24gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaW1pdEJpdHJhdGUoXG4gICAgc3RyZWFtOiBJU3RyZWFtLFxuICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyLFxuICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IEJpdHNQZXJTZWNvbmQsXG4gICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGUsXG4gICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlLFxuICApOiBQcm9taXNlPElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnYml0cmF0ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGVsYXBzZWRJbk1pbGxpc2Vjb25kcyxcbiAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZU1hcHBpbmcuY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGUpLFxuICAgICAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZSlcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdzZXQgbGltaXQgYml0cmF0ZScpO1xuICAgIGNvbnN0IHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKGh0dHBSZXNwb25zZSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBzZXQgbGltaXQgYml0cmF0ZSByZXNwb25zZSBbJXNdIGluIFslc10gbXMnLCBzdGF0dXMsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHtzdGF0dXN9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ2FkZCBpY2UgY2FuZGlkYXRlcycpO1xuICAgIGNvbnN0IHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgYWRkIElDRSBjYW5kaWRhdGVzIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnZGVzdHJveSBzdHJlYW0nKTtcbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGRlc3Ryb3kgc3RyZWFtIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIGRlc3Ryb3lTdHJlYW1SZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3lTdHJlYW1PblVubW91bnQoc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlbmRCZWFjb24gPSBHbG9iYWxTY29wZS52YWx1ZS5zZW5kQmVhY29uO1xuXG4gICAgaWYgKCFzZW5kQmVhY29uKSB7XG4gICAgICB0aGlzLmRlc3Ryb3lTdHJlYW0oc3RyZWFtLCByZWFzb24pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIG9uIHVubW91bnQnLCBlcnIpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgc2VuZEJlYWNvbih1cmwsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hXaXRoVGltZW91dCh1cmw6IHN0cmluZywgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0LCB0aW1lb3V0RHVyYXRpb246IE1pbGxpc2Vjb25kKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuQWJvcnRDb250cm9sbGVyKCk7XG4gICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICAuLi5yZXF1ZXN0T3B0aW9ucyxcbiAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcblxuICAgICAgICAgICAgcmVqZWN0KG5ldyBGZXRjaFRpbWVvdXRFcnJvcihgVGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgIH0sIHRpbWVvdXREdXJhdGlvbik7XG4gICAgICAgIH0pXG4gICAgICBdKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmw6IHN0cmluZywgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0LCBvcGVyYXRpb246IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hXaXRoVGltZW91dCh1cmwsIHJlcXVlc3RPcHRpb25zLCB0aGlzLl90aW1lb3V0RHVyYXRpb24pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gJHtvcGVyYXRpb259IFske3JlcXVlc3RPcHRpb25zLm1ldGhvZCB8fCAnR0VUJ31dIFske3VybH1dYCwgZXJyIGFzIEVycm9yKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6IGVyciBpbnN0YW5jZW9mIEZldGNoVGltZW91dEVycm9yID8gNDA4IDogNTAwfSBhcyBSZXNwb25zZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICByZXR1cm4gUGNhc3RVcmkuYnVpbGRSb3V0ZVVybCh0aGlzLl91cmksIHBhdGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBpbmdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHRoaXMuX3VyaSk7XG4gICAgY29uc3Qgc2RrVmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgY29uc3QgaW50ZW50aW9ucyA9IFBhcmFtZXRlcnMuZGlzY292ZXJ5UGFyYW1ldGVycy5pbnRlbnRpb25zO1xuXG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGUnLCAnaHR0cCcpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICByZXR1cm4gdXJpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhcnNlSnNvbkJvZHk8VD4ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBFeHBlY3RlZCBmb3IgcmVzcG9uc2VzIHdpdGhvdXQgYSBKU09OIGJvZHkgKHRpbWVvdXQsIGVtcHR5IGVycm9yIHJlc3BvbnNlcylcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoY29udGV4dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ3N0cmVhbSByZXNwb25zZSBjb250ZXh0IFslal0nLCBjb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA2OlxuICAgICAgICByZXR1cm4gJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFN1YnNjcmliZVN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IERlc3Ryb3lTdHJlYW1TdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCBkYXRhOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlKTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLy8gRGVzdHJ1Y3R1cmVkIHRoZSB0ZWxlbWV0cnkgYmFnZ2FnZSBcInN0cmVhbVJlc3BvbnNlQ29udGV4dFwiIHRvIGV4Y2x1ZGUgaXQgZnJvbSBvdGhlclByb3BlcnRpZXNcbiAgICAgIC8vIGl0IGlzICBoYW5kbGVkIHNlcGFyYXRlbHkgYnkgaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0IGFuZCBtdXN0IG5ldmVyIGJlIGZvcndhcmRlZCB0byBjYWxsZXJzLlxuICAgICAgc3RyZWFtUmVzcG9uc2VDb250ZXh0OiBpZ25vcmVkU3RyZWFtUmVzcG9uc2VDb250ZXh0LFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzLCAvLyBTcHJlYWQgZmlyc3Qgc28gdGhhdCBpdCBjYW5ub3Qgb3ZlcndyaXRlIHRoZSBwcm9wZXJ0aWVzIG5vcm1hbGl6ZWQgYmVsb3cuXG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldFxuICAgICAgfSxcbiAgICAgIGxhZ1xuICAgIH07XG5cbiAgICBpZiAocnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplUHVibGlzaFJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UpOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICAgIGNvbnN0IHB1Ymxpc2hSZXNwb25zZTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZDogZGF0YS5zdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0OiBkYXRhLnNoYXJlZFNlY3JldFxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoZGF0YS5ydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UucnRjQ29uZmlndXJhdGlvbiA9IHRoaXMuY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGRhdGEucnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gPSB7aWNlU2VydmVyczogW119O1xuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSA9IGNvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPSBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVNlcnZlcnMpIHtcbiAgICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGljZVNlcnZlcnMucHVzaCh7XG4gICAgICAgICAgdXJsczogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHMsXG4gICAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5ID0gY29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5ID0gY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U+KHJlc3BvbnNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBkYXRhID8gZGF0YS5zdGF0dXMgOiB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlOiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U+KHJlc3BvbnNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBkYXRhID8gZGF0YS5zdGF0dXMgOiB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMocmVzcG9uc2UpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTogSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEub3B0aW9ucykge1xuICAgICAgICBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2Uub3B0aW9ucyA9IGRhdGEub3B0aW9ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElEZXN0cm95U3RyZWFtUmVzcG9uc2U+KHJlc3BvbnNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBkYXRhID8gZGF0YS5zdGF0dXMgOiB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2UpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICByZXR1cm4gZGVzdHJveVN0cmVhbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuY29uc3QgZGlzY292ZXJ5UGF0aCA9ICcvcGNhc3QvZW5kUG9pbnRzJztcblxuLyoqIEJ1aWxkcyBwY2FzdCByb3V0ZSBVUkxzIGZyb20gYSBkaXNjb3Zlcnkgb3IgZW5kIHBvaW50IFVSSS4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBjYXN0VXJpIHtcbiAgLyoqIFRoZSBwYXRoIHRoZSBwbGF0Zm9ybSBzZXJ2ZXMgZGlzY292ZXJ5IGZyb20sIGFuZCB0aGUgcGF0aCBhIGJhcmUgZGlzY292ZXJ5IGhvc3QgaXMgdGFrZW4gdG8gbWVhbi4gKi9cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRpc2NvdmVyeVBhdGg7XG4gIH1cblxuICAvKipcbiAgICogVGFrZXMgYSBkaXNjb3ZlcnkgVVJJIGFzIGFuIGFwcGxpY2F0aW9uIG9yIGEgdG9rZW4gZ2l2ZXMgaXQuIEEgYmFyZSBob3N0XG4gICAqIG1lYW5zIHRoZSBkaXNjb3ZlcnkgcGF0aCwgYXMgYERpc2NvdmVyeVVyaWAgcmVhZHMgaXQuIFF1ZXJ5IGFuZCBmcmFnbWVudFxuICAgKiBhcmUgZHJvcHBlZDogdGhleSBiZWxvbmcgdG8gdGhlIGRpc2NvdmVyeSByZXF1ZXN0LCBub3QgdG8gYSBzdHJlYW0gcm91dGUuXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplRGlzY292ZXJ5VXJpKHVyaTogc3RyaW5nIHwgVVJMKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcblxuICAgIGlmICh1cmwucGF0aG5hbWUgPT09ICcnIHx8IHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSBkaXNjb3ZlcnlQYXRoO1xuICAgIH1cblxuICAgIHVybC5zZWFyY2ggPSAnJztcbiAgICB1cmwuaGFzaCA9ICcnO1xuXG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSByb3V0ZSBVUkwgYmVzaWRlIHRoZSBiYXNlIFVSSSdzIGxhc3QgcGF0aCBzZWdtZW50LiBUaGUgYmFzZVxuICAgKiBgaHR0cHM6Ly9ob3N0L3BjYXN0L2VuZFBvaW50c2AgYW5kIHRoZSBwYXRoIGBbdGVuYW5jeSwgJ3N0cmVhbScsXG4gICAqICdzdWJzY3JpYmUnXWAgZ2l2ZSBgaHR0cHM6Ly9ob3N0L3BjYXN0Lzx0ZW5hbmN5Pi9zdHJlYW0vc3Vic2NyaWJlYC4gVGhlXG4gICAqIGJhc2UgaXMgdXNlZCBhcyBnaXZlbjogYW4gZW5kIHBvaW50IFVSSSBmcm9tIGRpc2NvdmVyeSBpcyBhbHJlYWR5IHRoZVxuICAgKiByb3V0ZSByb290LlxuICAgKi9cbiAgc3RhdGljIGJ1aWxkUm91dGVVcmwoYmFzZVVyaTogc3RyaW5nIHwgVVJMLCBwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChiYXNlVXJpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHNlZ21lbnRzID0gdXJsLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBzZWdtZW50cy5sZW5ndGggPSBzZWdtZW50cy5sZW5ndGggLSAxO1xuICAgIHVybC5wYXRobmFtZSA9IHNlZ21lbnRzLmNvbmNhdCguLi5wYXRoKS5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BjYXN0VXJpIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IEVuZFBvaW50LCB7SVN0cmVhbX0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuXG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFRva2VuQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1Rva2VuQ29udGV4dCc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCwge1BlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnN9IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9TdGF0ZUNvbnRleHQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgUmVhbFRpbWVQdWJsaXNoZXIgZnJvbSAnLi9SZWFsVGltZVB1Ymxpc2hlcic7XG5cbmNvbnN0IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiA9ICdjbGllbnQ6dGVybWluYXRpb24nO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5jb25zdCBvbmVIb3VySW5NaWxsaXNlY29uZHMgPSAzNjAwICogMTAwMDtcbmNvbnN0IG1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDIgKiBvbmVIb3VySW5NaWxsaXNlY29uZHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1B1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkNvbnRleHQ6IFRva2VuQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW46IFJlYWRPbmx5U3ViamVjdDxFbmNvZGVkRWRnZVRva2VuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YXRlOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuRXhwaXJpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlBdXRob3JpemVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5T25saW5lOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TG9hZGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVB1Ymxpc2hpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGFuZGJ5OiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RvcHBlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUZhaWx1cmVDb3VudDogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RW5kUG9pbnQ6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSdGNTdGF0aXN0aWNzOiBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuXG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvblRlbGVtZXRyeTogU2Vzc2lvblRlbGVtZXRyeTtcblxuICBjb25zdHJ1Y3RvcihtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0sIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBuYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9uczogUGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyA9IHtmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydH07XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQgPSBuZXcgVG9rZW5Db250ZXh0KHRva2VuKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gbmV3IFB1Ymxpc2hlckNvbnRleHQobmFtZSk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gbmV3IFBlZXJDb25uZWN0aW9uQ29udGV4dChwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX3B1Ymxpc2hlclN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4pO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUpO1xuICAgIHRoaXMuX3JlYWRPbmx5TG9hZGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RvcHBlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkKTtcbiAgICB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudCA9IG5ldyBSZWFkT25seVN1YmplY3Q8bnVtYmVyPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudCk7XG4gICAgdGhpcy5fcmVhZE9ubHlFbmRQb2ludCA9IG5ldyBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtKTtcbiAgICB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcyk7XG4gICAgdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0pO1xuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG4gICAgdGhpcy5fc2Vzc2lvblRlbGVtZXRyeSA9IG5ldyBTZXNzaW9uVGVsZW1ldHJ5KFNESy5wYWdlTG9hZFRpbWUsIHRoaXMuX21ldHJpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpIHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZSAhPT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgICAgICB9LCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG4gICAgICB9KSk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgJ2NsaWVudDp0ZXJtaW5hdGlvbi1vbi13aW5kb3ctdW5sb2FkJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEVuY29kZWRFZGdlVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSA9IHRva2VuO1xuICAgIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSk7XG4gICAgY29uc3QgZGlzY292ZXJ5VXJpID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgIFNESy50ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3kgfHwgU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IGRpc2NvdmVyeVVyaTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YXRlO1xuICB9XG5cbiAgZ2V0IHRva2VuRXhwaXJpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nO1xuICB9XG5cbiAgZ2V0IGF1dGhvcml6ZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkO1xuICB9XG5cbiAgZ2V0IG9ubGluZSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU9ubGluZTtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TG9hZGluZztcbiAgfVxuXG4gIGdldCBwdWJsaXNoaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZztcbiAgfVxuXG4gIGdldCBzdGFuZGJ5KCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhbmRieTtcbiAgfVxuXG4gIGdldCBzdG9wcGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RvcHBlZDtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkO1xuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpY3MoKTogUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AocmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcblxuICAgICAgICByZXNvbHZlKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZCh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy5zdWJzY3JpYmUoaXNTdGFydGluZyA9PiB7XG4gICAgICAgIGlmICghaXNTdGFydGluZykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1N0b3AocmVhc29uKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0b3AocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZS5jbG9zZSgpO1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RvcHBlZDtcbiAgfVxuXG4gIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcCgnY2xpZW50OmNoYW5uZWwtZGlzcG9zZScpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyBzdGFydCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1N0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NTdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6c3RhcnQnKTtcblxuICAgIGNvbnN0IHRva2VuOiBFbmNvZGVkRWRnZVRva2VuID0gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICAgIGNvbnN0IGxpc3Rlbk9uU3RyZWFtU2V0dXAgPSB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5Lmxpc3Rlbk9uU3RyZWFtU2V0dXAoKTtcblxuICAgIGlmICghRWRnZUF1dGhQYXJzZXIuaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW4pKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZykge1xuICAgICAgICAgIERpc2NvdmVyeS5jbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2s6ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgLy8gTmVlZCB0byBzZXQgaXNTdGFydGluZyB0byBmYWxzZSBhbmQgY2FsbCBoYW5kbGVTdHJlYW1GYWlsdXJlIGlmIHN0cmVhbSBtb25pdG9ycyBmb3VuZCBhbiBpc3N1ZVxuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKCkpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN0cmVhbVB1Ymxpc2hlciA9IG5ldyBSZWFsVGltZVB1Ymxpc2hlcih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayk7XG5cbiAgICByZXR1cm4gc3RyZWFtUHVibGlzaGVyLnN0YXJ0KFxuICAgICAgdXJpLFxuICAgICAgdG9rZW4sXG4gICAgICBsaXN0ZW5PblN0cmVhbVNldHVwKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuZmFpbCgpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpjbGVhbnVwLWFmdGVyLWZhaWxlZC1zZXR1cCcpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHB1Ymxpc2hpbmcnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB0aGlzLmdldFJldHJ5SW50ZXJ2YWwoKSk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE1lZGlhU3RyZWFtKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSkge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaChtZWRpYVRyYWNrID0+IHtcbiAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlPy5nZXRTZW5kZXJzKCkuZm9yRWFjaChzZW5kZXIgPT4ge1xuICAgICAgICAgIGlmIChtZWRpYVRyYWNrLmtpbmQgPT09IHNlbmRlcj8udHJhY2s/LmtpbmQgJiYgbWVkaWFUcmFjay5pZCAhPT0gc2VuZGVyLnRyYWNrLmlkKSB7XG4gICAgICAgICAgICBzZW5kZXIucmVwbGFjZVRyYWNrKG1lZGlhVHJhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJldHJ5SW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuT2ZmbGluZTpcbiAgICAgICAgcmV0dXJuIHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gMDtcblxuICAgIHN3aXRjaCAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgaWYgKCF0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCA9IERhdGUubm93KCkgLSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM7XG5cbiAgICAgICAgaWYgKG1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA8PSByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXSBbJXNdIGFmdGVyIGV4Y2VlZGluZyB0aW1lb3V0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSwgUHVibGlzaGVyU3RhdGVbdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyB1bmF1dGhvcml6ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgZ2VvIHJlc3RyaWN0ZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHB1Ymxpc2hpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgaW5pdGlhbGl6aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byB1bnN1cHBvcnRlZCBmZWF0dXJlLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIGNoYW5uZWwgbm90IGZvdW5kLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUmVzb3VyY2VzKHJlYXNvbjogc3RyaW5nID0gZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uKTogdm9pZCB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YW5kYnkudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IEVuZFBvaW50LCB7XG4gIElTdHJlYW0sXG4gIEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMsXG4gIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzXG59IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi8uLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IHtJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5pbXBvcnQge1B1Ymxpc2hTdGF0dXN9IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVyQ29udGV4dCB7XG4gIHB1Ymxpc2hlckluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHB1Ymxpc2hlckRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgc3RhdGU6IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+O1xuICBhdXRob3JpemVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBvbmxpbmU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGxvYWRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1Ymxpc2hpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0YW5kYnk6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHN0b3BwZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcbiAgc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJJbml0aWFsaXphdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPihQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuYXV0aG9yaXplZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMub25saW5lID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMucHVibGlzaGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0YW5kYnkgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdG9wcGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigwKTtcbiAgICB0aGlzLmVuZFBvaW50ID0gbmV3IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnN0cmVhbSA9IG5ldyBTdWJqZWN0PElTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJ0Y1N0YXRpc3RpY3MgPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPihudWxsKTtcbiAgICB0aGlzLmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IDA7XG4gICAgdGhpcy5uYW1lID0gbmFtZSAmJiBuYW1lLmxlbmd0aCA/IG5hbWUgOiB0aGlzLmdlbmVyYXRlU2NyZWVuTmFtZSgpO1xuICAgIHRoaXMuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IDA7XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLnN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJlYW0uc3RyZWFtSWQ7XG4gIH1cblxuICBhcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBhcHBseVVuaGFuZGxlZEVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhcHBseVVuYXV0aG9yaXplZCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBhcHBseU5vdEZvdW5kKCk6IHZvaWQge1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVTY3JlZW5OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZ3MucmFuZG9tKDEyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBQdWJsaXNoZXJTdGF0ZSB7XG4gIEluaXRpYWxpemluZyA9IDAsXG4gIE9mZmxpbmUgPSAxLFxuICBTdGFydGluZyA9IDIsXG4gIFB1Ymxpc2hpbmcgPSAzLFxuICBSZWNvdmVyaW5nID0gNCxcbiAgUmVjb25uZWN0aW5nID0gNSxcbiAgU3RvcHBlZCA9IDYsXG4gIFVuYXV0aG9yaXplZCA9IDcsXG4gIEdlb1Jlc3RyaWN0ZWQgPSA4LFxuICBHZW9CbG9ja2VkID0gOSxcbiAgVW5zdXBwb3J0ZWRGZWF0dXJlID0gMTAsXG4gIE5vdEZvdW5kID0gMTEsXG4gIENvbmZpZ3VyYXRpb25FcnJvciA9IDEyLFxuICBUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IgPSAxMyxcbiAgQ29ubmVjdGlvbkVycm9yID0gMTQsXG4gIENsaWVudFN0YXJ0RXJyb3IgPSAxNSxcbiAgRXJyb3IgPSAxNlxufVxuXG5leHBvcnQgZGVmYXVsdCBQdWJsaXNoZXJTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgUHVibGlzaGVyIGZyb20gJy4vUHVibGlzaGVyJztcblxudHlwZSBDcmVhdGVQdWJsaXNoZXJPcHRpb25zID0ge1xuICBtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW07XG4gIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuO1xuICBuYW1lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVycyB7XG4gIHN0YXRpYyBjcmVhdGVQdWJsaXNoZXIob3B0aW9uczogQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyk6IFB1Ymxpc2hlciB7XG4gICAgaWYgKCFTREsuaW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU0RLIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQdWJsaXNoZXIob3B0aW9ucy5tZWRpYVN0cmVhbSwgb3B0aW9ucy50b2tlbiwgb3B0aW9ucy5uYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQdWJsaXNoZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi8uLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLCBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFJ0Y1B1Ymxpc2hNb25pdG9yIGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5cbmltcG9ydCBSdGNDb25maWd1cmF0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9ydGMvUnRjQ29uZmlndXJhdGlvbk1hbmFnZXInO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBzb2Z0UmVzdGFydEludGVydmFsID0gMTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhbFRpbWVQdWJsaXNoZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUmVhbFRpbWVQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgY29uc3RydWN0b3IocHVibGlzaGVyQ29udGV4dDogUHVibGlzaGVyQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmU6ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0ID0gcHVibGlzaGVyQ29udGV4dDtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBwZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFTdHJlYW0gPSB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIW1lZGlhU3RyZWFtKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1B1Ymxpc2ggZmFpbGVkIG5vIG1lZGlhIHN0cmVhbSBwcm92aWRlZCcpO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhVHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCk7XG4gICAgY29uc3QgdHJhY2tLaW5kcyA9IG1lZGlhVHJhY2tzLnJlZHVjZSgoYWNjdW11bGF0b3I6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSwgdHJhY2spID0+IHtcbiAgICAgIGlmICh0cmFjay5raW5kID09PSAnYXVkaW8nIHx8IHRyYWNrLmtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgYWNjdW11bGF0b3IucHVzaCh0cmFjay5raW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFRyYWNrIGtpbmQgaXMgbm90IHN1cHBvcnRlZCcsIHRyYWNrLmtpbmQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcignc2VuZG9ubHknLCB0cmFja0tpbmRzKVxuICAgICAgICAudGhlbigoe2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvY2FsT2ZmZXIsXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvblxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgXSlcbiAgICAgIC50aGVuKChbZW5kUG9pbnQsIHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn1dKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IGVuZFBvaW50O1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ29ubmVjdGluZyB0byBbJXNdJywgZW5kUG9pbnQudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdMb2NhbCBvZmZlcjpcXG4nICsgbG9jYWxPZmZlci5zZHApO1xuXG4gICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA+IDApIHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQuZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk7XG5cbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnQucHVibGlzaCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm5hbWUsIHRva2VuLCBudWxsLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQucHVibGlzaCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm5hbWUsIHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCB7c3RhdHVzfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgICAgICAgJ1slc10gUHVibGlzaCBmYWlsZWQgd2l0aCBzdGF0dXMgWyVzXScsXG4gICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtzdHJlYW0sIHJ0Y0NvbmZpZ3VyYXRpb24sIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZX0gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IHN0cmVhbTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoXG4gICAgICAgICAgJ1slc10gUHVibGlzaCBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2VcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5tYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UnRjQ29uZmlndXJhdGlvbih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUsIHJ0Y0NvbmZpZ3VyYXRpb24gYXMgUlRDQ29uZmlndXJhdGlvbilcbiAgICAgICAgICAudGhlbihwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgICAgICBsZXQgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQ6IHVuZGVmaW5lZCB8IG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjYW5jZWxEaXNjb3ZlcnkgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkaXNjb3ZlcnlDb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IHBlZXJDb25uZWN0aW9uO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRTdHJlYW0odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlIGFzIE1lZGlhU3RyZWFtKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghU0RLLnNlbmRMb2NhbENhbmRpZGF0ZXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZS5jYW5kaWRhdGUgJiYgZS5jYW5kaWRhdGUuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5wdXNoKGUuY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFzdWJtaXRDYW5kaWRhdGVzVGltZW91dCkge1xuICAgICAgICAgICAgICAgIHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZT8uYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW0sIGNhbmRpZGF0ZXMsIGRpc2NvdmVyeUNvbXBsZXRlZClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHtzdGF0dXMsIG9wdGlvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBmYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5pbmNsdWRlcygnY2FuY2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbERpc2NvdmVyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gQWRkZWQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXSBhbmQgb3B0aW9ucyBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIGZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCByZXRyeUNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIHN0b3Agbm9ybWFsbHkgdGhlIHBlZXIgY29ubmVjdGlvbiBpcyB1bnJlZ2lzdGVyZWQgZmlyc3QuXG4gICAgICAgICAgICAgICAgLy8gVGh1cyBhbnl0aW1lIHdlIHNlZSBhIGNsb3NlZCBwZWVyIGNvbm5lY3Rpb24gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaXQgaXMgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHRyeWluZyB0byByZWNvbm5lY3QnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdjbG9zZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCByZXRyeWluZyB0byBjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgYXMgbmV2ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uPy5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZVZpZGVvOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGFuc3dlci5zZHApO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgIGlmICghZW5kUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiwgRW5kUG9pbnQgaXMgbm90IHNldCcpO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5kUG9pbnQuc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtLCBhbnN3ZXIpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHtzdGF0dXMsIHNlc3Npb25EZXNjcmlwdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24/LnNkcCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNlc3Npb25EZXNjcmlwdGlvbiBhcyBSVENTZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLnN1Y2Nlc3ModGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgIT09IFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjb25zdCBydGNQdWJsaXNoTW9uaXRvciA9IG5ldyBSdGNQdWJsaXNoTW9uaXRvcihcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5yb3VuZFRyaXBUaW1lID8gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5yb3VuZFRyaXBUaW1lIC8gNCA6IDAsXG4gICAgICAgICAgICAgICAgU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmRcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChydGNQdWJsaXNoTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHJ0Y1B1Ymxpc2hNb25pdG9yLnJ0Y1N0YXRpc3RpYy5zdWJzY3JpYmUoc3RhdGlzdGljcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzLnZhbHVlID0gc3RhdGlzdGljcztcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXBwbHlSdGNDb25maWd1cmF0aW9uKFxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGwsXG4gICAgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgaWYgKCFvcHRpb25hbFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uID0gUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIudHJ1bmNhdGVJY2VTZXJ2ZXJzKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgICByZXR1cm4gU0RLLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSdGNDb25maWd1cmF0aW9uID0ge1xuICAgICAgLi4ub3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5nZXRDb25maWd1cmF0aW9uKCksXG4gICAgICAuLi5ydGNDb25maWd1cmF0aW9uXG4gICAgfTtcblxuICAgIG9wdGlvbmFsUGVlckNvbm5lY3Rpb24uc2V0Q29uZmlndXJhdGlvbihuZXdSdGNDb25maWd1cmF0aW9uKTtcblxuICAgIHJldHVybiBvcHRpb25hbFBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIDwgU0RLLm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgfHwgIVNESy5hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKys7XG5cbiAgICAgIGNvbnN0IGlzQ2xpZW50T2ZmZXJGbG93ID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb24/LnR5cGUgPT09ICdvZmZlcic7XG5cbiAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5jbGllbnRPZmZlckRpc2FibGVkIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c1NldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhaXNDbGllbnRPZmZlckZsb3dcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCkpKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZWNvbm5lY3RpbmcgcGVlciBjb25uZWN0aW9uIGJ5IHJlc3RhcnRpbmcgSUNFJyk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gcGVlckNvbm5lY3Rpb24uY3VycmVudExvY2FsRGVzY3JpcHRpb247XG4gICAgICBjb25zdCBpZ25vcmVkID0gcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoe2ljZVJlc3RhcnQ6IHRydWV9KS50aGVuKG9mZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZGlzY29ubmVjdGVkJyB8fCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdmYWlsZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICB9LCBzb2Z0UmVzdGFydEludGVydmFsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZGVjbGFyZSBjb25zdCBfX0JVSUxEX1ZFUlNJT05fXzogc3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0VmVyc2lvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICBzdGF0aWMgZ2V0IHNka1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIF9fQlVJTERfVkVSU0lPTl9fO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmVyc2lvbjtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBUZWxlbWV0cnlTZXJ2aWNlIGZyb20gJy4vVGVsZW1ldHJ5U2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4uL2xvZ2dlci9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlBcHBlbmRlciBpbXBsZW1lbnRzIElBcHBlbmRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbmFuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5O1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkO1xuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UgPSBuZXcgVGVsZW1ldHJ5U2VydmljZSh0ZWxlbWV0cnlDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGxvZyhsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAobG9nTGV2ZWwgPCB0aGlzLl90aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlLnB1c2gobG9nTGV2ZWwsIG1lc3NhZ2UsIGNhdGVnb3J5LCBkYXRlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L2xvZ3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9wYWdlTG9hZFRpbWU6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3RocmVzaG9sZCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgdGVsZW1ldHJ5VXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgdGVsZW1ldHJ5VXJsLnBhdGhuYW1lID0gdGVsZW1ldHJ5VXJsLnBhdGhuYW1lICsgJy9sb2dzJztcblxuICAgIHRoaXMuX3VybCA9IHRlbGVtZXRyeVVybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzZXQgcGFnZUxvYWRUaW1lKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IE51bWJlcnMgZnJvbSAnLi4vbGFuZy9OdW1iZXJzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuXG5jb25zdCByZXF1ZXN0U2l6ZUxpbWl0ID0gODE5MjtcblxuaW50ZXJmYWNlIElMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2xvZ3M6IEFycmF5PElMb2dJdGVtPiA9IFtdO1xuICBwcml2YXRlIF9pc1NlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZG9tYWluID0gJyc7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgcHVzaChsb2dMZXZlbDogTG9nZ2luZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIGNhdGVnb3J5OiBzdHJpbmcsIHRpbWVzdGFtcDogRGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSAodGltZXN0YW1wLnZhbHVlT2YoKSAtIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lKSAvIDEwMDA7XG4gICAgY29uc3QgbG9nUmVjb3JkID0ge1xuICAgICAgdGltZXN0YW1wOiB0aW1lc3RhbXAudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIGxldmVsOiBMb2dnaW5nTGV2ZWxbbG9nTGV2ZWxdLFxuICAgICAgY2F0ZWdvcnksXG4gICAgICBtZXNzYWdlLFxuICAgICAgc2Vzc2lvbklkOiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBydW50aW1lXG4gICAgfTtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgdGhpcy5fbG9ncy5wdXNoKGxvZ1JlY29yZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvZ3MudW5zaGlmdChsb2dSZWNvcmQpO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMb2dzKGxvZ01lc3NhZ2VzOiBBcnJheTxJTG9nSXRlbT4pOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoe3JlY29yZHM6IGxvZ01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRMb2dzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX2xvZ3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBudW1iZXJPZkxvZ3NUb1NlbmQgPSAwO1xuICAgIGxldCBzaXplT2ZMb2dzVG9TZW5kID0gMDtcblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBnZXRJdGVtU2l6ZSA9IChpdGVtOiBudW1iZXIgfCBzdHJpbmcpID0+IHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJyA/IE51bWJlcnMuY291bnROdW1iZXJMZW5ndGgoaXRlbSkgOiBpdGVtLmxlbmd0aDtcbiAgICBjb25zdCBnZXRMb2dTaXplID0gKGxvZzogSUxvZ0l0ZW0pOiBudW1iZXIgPT4gT2JqZWN0LnZhbHVlcyhsb2cpXG4gICAgICAucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIChpdGVtID8gZ2V0SXRlbVNpemUoaXRlbSkgOiAwKSwgMCk7XG5cbiAgICB3aGlsZSAodGhpcy5fbG9ncy5sZW5ndGggPiBudW1iZXJPZkxvZ3NUb1NlbmQgJiYgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgc2l6ZU9mTG9nc1RvU2VuZCA8IHJlcXVlc3RTaXplTGltaXQpIHtcbiAgICAgIHNpemVPZkxvZ3NUb1NlbmQgKz0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kKys7XG4gICAgfVxuXG4gICAgaWYgKCFudW1iZXJPZkxvZ3NUb1NlbmQpIHtcbiAgICAgIHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlID0gdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsXG4gICAgICAgIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIChyZXF1ZXN0U2l6ZUxpbWl0IC0gZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pKSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQgPSAxO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ01lc3NhZ2VzID0gdGhpcy5fbG9ncy5zbGljZSgwLCBudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgdGhpcy5fbG9ncyA9IHRoaXMuX2xvZ3Muc2xpY2UobnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHJldHVybiB0aGlzLnNlbmRMb2dzKGxvZ01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2R1cmF0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZHVyYXRpb24gPSAwKSB7XG4gICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgfVxuXG4gIHRvSXNvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2R1cmF0aW9uID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1AwUyc7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHRoaXMuX2R1cmF0aW9uIDwgMDtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGlzTmVnYXRpdmUgPyBNYXRoLmFicyh0aGlzLl9kdXJhdGlvbikgOiB0aGlzLl9kdXJhdGlvbjtcbiAgICBsZXQgb2Zmc2V0ID0gTWF0aC5mbG9vcihkdXJhdGlvbik7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gb2Zmc2V0ICUgMTAwMDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gMTAwMCk7XG5cbiAgICBjb25zdCBzZWNvbmRzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgaG91cnMgPSBvZmZzZXQgJSAyNDtcbiAgICBjb25zdCBwYXJ0cyA9IFsnUFQnXTtcblxuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCctJyk7XG4gICAgfVxuXG4gICAgaWYgKGhvdXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKGhvdXJzICsgJ0gnKTtcbiAgICB9XG5cbiAgICBpZiAobWludXRlcykge1xuICAgICAgcGFydHMucHVzaChtaW51dGVzICsgJ00nKTtcbiAgICB9XG5cbiAgICBpZiAoc2Vjb25kcyB8fCBtaWxsaXNlY29uZHMpIHtcbiAgICAgIHBhcnRzLnB1c2goU3RyaW5nKHNlY29uZHMpKTtcblxuICAgICAgaWYgKG1pbGxpc2Vjb25kcykge1xuICAgICAgICBwYXJ0cy5wdXNoKCcuJyArIHRoaXMucGFkU3RhcnQobWlsbGlzZWNvbmRzLnRvU3RyaW5nKCksIDMsICcwJykpO1xuICAgICAgfVxuXG4gICAgICBwYXJ0cy5wdXNoKCdTJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgcGFkU3RhcnQoaXRlbTogc3RyaW5nLCB0YXJnZXRMZW5ndGg6IG51bWJlciwgcGFkU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCA+PiAwO1xuICAgIHBhZFN0cmluZyA9IFN0cmluZygodHlwZW9mIHBhZFN0cmluZyAhPT0gJ3VuZGVmaW5lZCcgPyBwYWRTdHJpbmcgOiAnICcpKTtcblxuICAgIGlmIChpdGVtLmxlbmd0aCA+IHRhcmdldExlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoIC0gaXRlbS5sZW5ndGg7XG5cbiAgICBpZiAodGFyZ2V0TGVuZ3RoID4gcGFkU3RyaW5nLmxlbmd0aCkge1xuICAgICAgcGFkU3RyaW5nICs9IHBhZFN0cmluZy5yZXBlYXQodGFyZ2V0TGVuZ3RoIC8gcGFkU3RyaW5nLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZFN0cmluZy5zbGljZSgwLCB0YXJnZXRMZW5ndGgpICsgaXRlbTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAyMDAwO1xuY29uc3QgZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAxO1xuY29uc3QgZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSAzMDAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9uZW50aWFsQmFja29mZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQsXG4gICAgbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyID0gZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmRcbiAgKSB7XG4gICAgdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gICAgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ7XG4gIH1cblxuICBnZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KGZhaWx1cmVDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMgPSB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIC8gMTAwMDtcbiAgICBjb25zdCByYW5kb21pemF0aW9uID0gMC41ICsgKDAuNSAqIE1hdGgucmFuZG9tKCkpOyAvLyBbMC41LCAxKVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZiA9IE1hdGgucG93KGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcywgZmFpbHVyZUNvdW50IC0gMik7IC8vICBbMS80IDEvMiAxIDIgNCA4IC4uLi5dXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gPSBNYXRoLmZsb29yKGV4cG9uZW50aWFsQmFja29mZikgKiByYW5kb21pemF0aW9uO1xuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCA9IE1hdGguY2VpbChNYXRoLm1heChleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiAqIDEwMDAsIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpKTtcblxuICAgIHJldHVybiBNYXRoLm1pbihleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQsIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTmV0d29ya01vbml0b3IgZnJvbSAnLi4vZG9tL05ldHdvcmtNb25pdG9yJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuXG5pbnRlcmZhY2UgSU5ldHdvcmtTdGF0aXN0aWNzIHtcbiAgcnR0PzogbnVtYmVyO1xuICBlZmZlY3RpdmVUeXBlPzogc3RyaW5nO1xuICBkb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvblRlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1Nlc3Npb25UZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29ya01vbml0b3I6IE5ldHdvcmtNb25pdG9yID0gbmV3IE5ldHdvcmtNb25pdG9yKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VMb2FkVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfbGFzdE5ldHdvcmtTdGF0aXN0aWNzOiBJTmV0d29ya1N0YXRpc3RpY3MgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwYWdlTG9hZFRpbWU6IG51bWJlciwgbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvcik7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcblxuICAgIGlmICghdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2Vzc2lvblRlbGVtZXRyeSBGYWlsZWQ6IE5vIGFwcGxpY2F0aW9uIG1vbml0b3IgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZXR3b3JrTW9uaXRvci5pc1N1cHBvcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci5pc0ZvcmVncm91bmQuc3Vic2NyaWJlKGlzRm9yZWdyb3VuZCA9PiB7XG4gICAgICB0aGlzLnJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLnJ0dC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1JUVFVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5lZmZlY3RpdmVUeXBlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW5PblN0cmVhbVNldHVwKCk6IFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICAgIHJldHVybiBuZXcgU3RyZWFtU2V0dXBMaXN0ZW5lcih0aGlzLl9wYWdlTG9hZFRpbWUpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZEZvcmVncm91bmRDaGFuZ2UoaXNGb3JlZ3JvdW5kOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0Q2hhbmdlID0gdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTtcblxuICAgIGlmICghdGltZVNpbmNlTGFzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogaXNGb3JlZ3JvdW5kID8gTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kIDogTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWVTaW5jZUxhc3RDaGFuZ2V9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdBcHBsaWNhdGlvbiBoYXMgZ29uZSBpbnRvIHRoZSBbJXNdIGFmdGVyIFslc10gbXMnLFxuICAgICAgaXNGb3JlZ3JvdW5kID8gJ2ZvcmVncm91bmQnIDogJ2JhY2tncm91bmQnLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aW1lU2luY2VMYXN0Q2hhbmdlKS50b0lzb1N0cmluZygpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtSVFRVcGRhdGUobmV3UlRUOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZFJ0dCA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQ7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0ID0gbmV3UlRUO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IG5ld1JUVH0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRSdHQgPyB7dWludDY0OiBvbGRSdHR9IDogdW5kZWZpbmVkLFxuICAgICAgcmVzb3VyY2U6ICduYXZpZ2F0b3InXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgUlRUIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdSVFQsXG4gICAgICBvbGRSdHRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZShuZXdOZXR3b3JrVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGROZXR3b3JrVHlwZSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlO1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGUgPSBuZXdOZXR3b3JrVHlwZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuTmV0d29ya1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3N0cmluZzogbmV3TmV0d29ya1R5cGV9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkTmV0d29ya1R5cGUgPyB7c3RyaW5nOiBvbGROZXR3b3JrVHlwZX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBlZmZlY3RpdmUgdHlwZSBoYXMgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld05ldHdvcmtUeXBlLFxuICAgICAgb2xkTmV0d29ya1R5cGVcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUobmV3Q2FwYWNpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkQ2FwYWNpdHkgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkgPSBuZXdDYXBhY2l0eTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge2Zsb2F0OiBuZXdDYXBhY2l0eX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGRDYXBhY2l0eSA/IHtmbG9hdDogb2xkQ2FwYWNpdHl9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZG93bmxpbmsgdGhyb3VnaHB1dCBjYXBhY2l0eSBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3Q2FwYWNpdHksXG4gICAgICBvbGRDYXBhY2l0eVxuICAgICk7XG4gIH1cbn0iLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlMaWtlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRob3V0SG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXN5bmNUb0dlbmVyYXRvciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NsYXNzQ2FsbENoZWNrLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX2NvbnN0cnVjdCh0LCBlLCByKSB7XG4gIGlmIChpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkgcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIHZhciBvID0gW251bGxdO1xuICBvLnB1c2guYXBwbHkobywgZSk7XG4gIHZhciBwID0gbmV3ICh0LmJpbmQuYXBwbHkodCwgbykpKCk7XG4gIHJldHVybiByICYmIHNldFByb3RvdHlwZU9mKHAsIHIucHJvdG90eXBlKSwgcDtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHIpIHtcbiAgZm9yICh2YXIgdCA9IDA7IHQgPCByLmxlbmd0aDsgdCsrKSB7XG4gICAgdmFyIG8gPSByW3RdO1xuICAgIG8uZW51bWVyYWJsZSA9IG8uZW51bWVyYWJsZSB8fCAhMSwgby5jb25maWd1cmFibGUgPSAhMCwgXCJ2YWx1ZVwiIGluIG8gJiYgKG8ud3JpdGFibGUgPSAhMCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCB0b1Byb3BlcnR5S2V5KG8ua2V5KSwgbyk7XG4gIH1cbn1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhlLCByLCB0KSB7XG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVDbGFzcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZShcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiKTtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0KSB7XG4gIHJldHVybiAociA9IHRvUHJvcGVydHlLZXkocikpIGluIGUgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwge1xuICAgIHZhbHVlOiB0LFxuICAgIGVudW1lcmFibGU6ICEwLFxuICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgd3JpdGFibGU6ICEwXG4gIH0pIDogZVtyXSA9IHQsIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9kZWZpbmVQcm9wZXJ0eSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfZ2V0UHJvdG90eXBlT2YodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW5oZXJpdHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVGdW5jdGlvbih0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIC0xICE9PSBGdW5jdGlvbi50b1N0cmluZy5jYWxsKHQpLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVGdW5jdGlvbiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIHRyeSB7XG4gICAgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICB9IGNhdGNoICh0KSB7fVxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gICAgcmV0dXJuICEhdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShyKSB7XG4gIGlmIChcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgbnVsbCAhPSByW1N5bWJvbC5pdGVyYXRvcl0gfHwgbnVsbCAhPSByW1wiQEBpdGVyYXRvclwiXSkgcmV0dXJuIEFycmF5LmZyb20ocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkge1xuICB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdO1xuICBpZiAobnVsbCAhPSB0KSB7XG4gICAgdmFyIGUsXG4gICAgICBuLFxuICAgICAgaSxcbiAgICAgIHUsXG4gICAgICBhID0gW10sXG4gICAgICBmID0gITAsXG4gICAgICBvID0gITE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHtcbiAgICAgICAgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuO1xuICAgICAgICBmID0gITE7XG4gICAgICB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgbyA9ICEwLCBuID0gcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKG8pIHRocm93IG47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVJlc3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSA9IHJlcXVpcmUoXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIik7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIG4gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBuLmxlbmd0aDsgcisrKSBvID0gbltyXSwgdC5pbmRleE9mKG8pID49IDAgfHwge30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLCBvKSAmJiAoaVtvXSA9IGVbb10pO1xuICB9XG4gIHJldHVybiBpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluZGV4T2YobikgPj0gMCkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheUxpbWl0ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5TGltaXQuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVJlc3QgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVJlc3QuanNcIik7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NsaWNlZFRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRob3V0SG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhvdXRIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgPSByZXF1aXJlKFwiLi91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciBub25JdGVyYWJsZVNwcmVhZCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlU3ByZWFkLmpzXCIpO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdG9Db25zdW1hYmxlQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XG4gIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0O1xuICB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xuICAgIHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpO1xuICAgIGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTtcbiAgfVxuICByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1ByaW1pdGl2ZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoXCIuL3RvUHJpbWl0aXZlLmpzXCIpO1xuZnVuY3Rpb24gdG9Qcm9wZXJ0eUtleSh0KSB7XG4gIHZhciBpID0gdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7XG4gIHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogaSArIFwiXCI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJvcGVydHlLZXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfdHlwZW9mKG8pIHtcbiAgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiO1xuXG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfdHlwZW9mKG8pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5TGlrZVRvQXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheUxpa2VUb0FycmF5LmpzXCIpO1xuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGEpIHtcbiAgaWYgKHIpIHtcbiAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgcikgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkociwgYSk7XG4gICAgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTtcbiAgICByZXR1cm4gXCJPYmplY3RcIiA9PT0gdCAmJiByLmNvbnN0cnVjdG9yICYmICh0ID0gci5jb25zdHJ1Y3Rvci5uYW1lKSwgXCJNYXBcIiA9PT0gdCB8fCBcIlNldFwiID09PSB0ID8gQXJyYXkuZnJvbShyKSA6IFwiQXJndW1lbnRzXCIgPT09IHQgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCkgPyBhcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL2dldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG52YXIgaXNOYXRpdmVGdW5jdGlvbiA9IHJlcXVpcmUoXCIuL2lzTmF0aXZlRnVuY3Rpb24uanNcIik7XG52YXIgY29uc3RydWN0ID0gcmVxdWlyZShcIi4vY29uc3RydWN0LmpzXCIpO1xuZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gIHZhciByID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBNYXAgPyBuZXcgTWFwKCkgOiB2b2lkIDA7XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcih0KSB7XG4gICAgaWYgKG51bGwgPT09IHQgfHwgIWlzTmF0aXZlRnVuY3Rpb24odCkpIHJldHVybiB0O1xuICAgIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHQpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICBpZiAodm9pZCAwICE9PSByKSB7XG4gICAgICBpZiAoci5oYXModCkpIHJldHVybiByLmdldCh0KTtcbiAgICAgIHIuc2V0KHQsIFdyYXBwZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cnVjdCh0LCBhcmd1bWVudHMsIGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IFdyYXBwZXIsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICAgIH1cbiAgICB9KSwgc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgdCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF93cmFwTmF0aXZlU3VwZXIodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF93cmFwTmF0aXZlU3VwZXIsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgUHVibGlzaGVycyBmcm9tICcuL1B1Ymxpc2hlcnMnO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIFB1Ymxpc2hlcnMsXG4gIFB1Ymxpc2hlclN0YXRlXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07Il0sIm5hbWVzIjpbIkdsb2JhbFNjb3BlIiwiRGlzcG9zYWJsZSIsIkRpc3Bvc2FibGVMaXN0IiwiU3ViamVjdCIsIlJlYWRPbmx5U3ViamVjdCIsInZpc2liaWxpdHlDaGFuZ2VFdmVudCIsIkFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5IiwiRGF0ZSIsIm5vdyIsIl9pc0ZvcmVncm91bmQiLCJfcmVhZE9ubHlJc0ZvcmVncm91bmQiLCJpbml0aWFsaXplIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwiZ2V0IiwidmFsdWUiLCJnZXRUaW1lU2luY2VMYXN0Q2hhbmdlIiwiX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZSIsImdldExhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJfbGFzdEJhY2tncm91bmREdXJhdGlvbiIsImRpc3Bvc2UiLCJfZGlzcG9zYWJsZXMiLCJfdGhpcyIsImJhY2tncm91bmRFbnRyeVRpbWUiLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwiaXNOb3dGb3JlZ3JvdW5kIiwiZG9jdW1lbnRJc0hpZGRlbiIsInVzZUV2ZW50Q2FwdHVyZVBoYXNlIiwiYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiYWRkIiwicmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyIiwiZGVmYXVsdCIsIkJyb3dzZXJEZXRlY3RvciIsIl9icm93c2VyTmFtZUFuZFZlcnNpb24iLCJfYnJvd3Nlck5hbWUiLCJfYnJvd3Nlck1ham9yVmVyc2lvbiIsIl9pc0FuZHJvaWQiLCJfaXNDaHJvbWU2OSIsIl9pc0Nocm9tZTcwIiwiX2lzQ2hyb21lNzEiLCJfaXNDaHJvbWU3MiIsIl9pc0Nocm9tZTc0IiwiX2lzQ2hyb21lNzUiLCJfaXNDaHJvbWU3NiIsIl9pc0Nocm9tZTc3IiwiaXNNb2JpbGUiLCJfaXNNb2JpbGUiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImJyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIm1hdGNoIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4IiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSIsInBhcnNlQnJvd3Nlck5hbWUiLCJicm93c2VyTmFtZUxpc3QiLCJzcGxpdCIsInBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbiIsImJyb3dzZXJWZXJzaW9uTGlzdCIsImZ1bGxWZXJzaW9uIiwiTnVtYmVyIiwibXNpZSIsImluZGV4T2YiLCJjb25jYXQiLCJwYXJzZUludCIsInN1YnN0cmluZyIsInRyaWRlbnQiLCJ2ZXJzaW9uIiwiX0Jyb3dzZXJEZXRlY3RvciIsInRlc3QiLCJfbmF2aWdhdG9yIiwiX25hdmlnYXRvcjIiLCJpbmNsdWRlcyIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIlRlbGVtZXRyeURlZmF1bHQiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiTG9nZ2VyRGVmYXVsdHMiLCJQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJkZWZhdWx0U3RyaW5nVmFsdWUiLCJnZXRCb29sZWFuVmFsdWUiLCJkZWZhdWx0Qm9vbGVhblZhbHVlIiwiY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUiLCJkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlIiwiZGVmYXVsdExvZ2dpbmdMZXZlbCIsImRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsIiwiZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCIsIkZlYXR1cmVFbmFibGVtZW50IiwiU0RLIiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwiYmluZCIsInNldFRpbWVvdXQiLCJpbWciLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJuYXZpZ2F0b3JDb25uZWN0aW9uIiwidW5kZWZpbmVkIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJfcmVmIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTMiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsIl9yZWYyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE2IiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNyIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTgiLCJydHQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE5IiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfR2xvYmFsU2NvcGUkdmFsdWUiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJfR2xvYmFsU2NvcGUkdmFsdWUyIiwiSFRNTFZpZGVvRWxlbWVudCIsInJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfR2xvYmFsU2NvcGUkdmFsdWUzIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCIsIlBhcmFtZXRlcnMiLCJfZGlzY292ZXJ5UGFyYW1ldGVycyIsImFwcGx5UGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJfX1BBUkFNRVRFUlNfXyIsImRpc2NvdmVyeSIsImludGVudGlvbnMiLCJicm93c2VyR2xvYmFsU2NvcGUiLCJkb2N1bWVudCIsImxvY2F0aW9uIiwid2luZG93IiwiZ2xvYmFsU2NvcGUiLCJfZG9jdW1lbnQiLCJfbG9jYXRpb24iLCJfd2luZG93IiwiQWJvcnRDb250cm9sbGVyIiwiRm9ybURhdGEiLCJNZWRpYVN0cmVhbSIsIk1lZGlhU3RyZWFtVHJhY2siLCJNZWRpYVNvdXJjZSIsIlJUQ1BlZXJDb25uZWN0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiUlRDSWNlQ2FuZGlkYXRlIiwiVVJMU2VhcmNoUGFyYW1zIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImNyZWF0ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhpZGRlbiIsInF1ZXJ5U2VsZWN0b3IiLCJmZXRjaCIsImhvc3RuYW1lIiwic2VhcmNoIiwiY29ubmVjdGlvbiIsIm9uTGluZSIsInNlbmRCZWFjb24iLCJ1cmwiLCJkYXRhIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIl9jb250ZXh0IiwiYXBwZW5kIiwicmVjb3JkcyIsIm1ldGhvZCIsImJvZHkiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJjYXRjaCIsInN0YXR1cyIsInRlbGVtZXRyeUxldmVsVHlwZSIsIlByb21pc2VIYW5kbGVyIiwiX3N0YXRlIiwiX2hhbmRsZWQiLCJfdmFsdWUiLCJfZGVmZXJyZWRzIiwiZG9SZXNvbHZlIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJsZW4iLCJoYW5kbGUiLCJkZWZlcnJlZCIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc3VsdCIsImFsbCIsImFyciIsInJlc29sdmUiLCJyZWplY3QiLCJpc0FycmF5IiwicmVtYWluaW5nIiwibWFuYWdlUmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsInJhY2UiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiZGVmYXVsdFRyYWNrS2luZHMiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJ0cmFja0tpbmRzIiwiZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiY29uZmlndXJhdGlvbiIsIl9hcmdzMyIsIl9jb250ZXh0MyIsIkRpc2FibGVkIiwiaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQiLCJFbmFibGVkIiwiY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdXBwb3J0c0FkZFRyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlcnMiLCJ2aWRlb1RyYW5zY2VpdmVycyIsIm9wdGlvbnMiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl90NiIsImFkZFRyYW5zY2VpdmVyIiwiY3JlYXRlT2ZmZXIiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0cmFja3NLaW5kcyIsImNvdW50VHJhY2tLaW5kcyIsInRyYWNrS2luZENvdW50IiwiYXVkaW8iLCJ2aWRlbyIsImNvdW50ZWRUcmFja0tpbmRzIiwiY291bnRlZERlZmF1bHRUcmFja0tpbmRzIiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiIsIlJ0Y1B1Ymxpc2hNb25pdG9yIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImlzRm9yZWdyb3VuZCIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24zIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNCIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJzZHAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJwYXJzZWRMb2NhbERlc2NyaXB0aW9uIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJfYXZhaWxhYmxlVHJhY2tzIiwiaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVmlkZW9UcmFja0VuYWJsZWQiLCJpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayIsImZvcmVncm91bmQiLCJfaXNNb25pdG9yUnVubmluZyIsIl9tb25pdG9yR2VuZXJhdGlvbiIsIl91cGRhdGVUaW1lb3V0IiwidXBkYXRlU3RhdGlzdGljIiwiX3J0Y1N0YXRpc3RpYyIsIl91cGRhdGVTdGF0aXN0aWMiLCJnZW5lcmF0aW9uIiwiZ2V0S2luZEZvclNhZmFyaTExIiwidGltZW91dEhhbmRsZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjUiLCJzdGF0c1Byb21pc2UiLCJ0aW1lb3V0UHJvbWlzZSIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0U2VudFRpbWVzdGFtcCIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJpZCIsImdldFN0YXRzIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJfdGhpczIkX2F2YWlsYWJsZVRyYWMiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDIiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQzIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDUiLCJieXRlcyIsImJ5dGVzU2VudCIsInByZXZpb3VzQnl0ZXNTZW50IiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c1NlbnQiLCJyZXRyYW5zbWl0dGVkQnl0ZXNTZW50IiwiZ2V0Q29kZWNCeVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ2IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNyIsImZpckNvdW50IiwiZnJhbWVIZWlnaHQiLCJmcmFtZVdpZHRoIiwiZnJhbWVzRW5jb2RlZCIsImZyYW1lc1NlbnQiLCJoZWFkZXJCeXRlc1NlbnQiLCJodWdlRnJhbWVzU2VudCIsInBsaUNvdW50IiwicXBTdW0iLCJ0b3RhbEVuY29kZVRpbWUiLCJ0b3RhbEVuY29kZWRCeXRlc1RhcmdldCIsImZwcyIsIl9zZHAiLCJzZHBTcGxpdEJ5TGluZXMiLCJzZHBTcGxpdEJ5VHJhY2tzIiwiX2F1ZGlvQ29kZWMiLCJhcHBseUNvZGVjIiwiX3ZpZGVvQ29kZWMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJzZHBTZWN0aW9uRm9yVHlwZSIsImZpbmQiLCJzZHBUcmFjayIsIl9zZHBTcGxpdEJ5TGluZXMkZmluZCIsInJ0bWFwIiwic2RwTGluZSIsInVzZWRDb2RlY0xpbmUiLCJ1c2VkQ29kZWMiLCJjb2RlY05hbWUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb24iLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQiLCJ3ZWJraXRSVENQZWVyQ29ubmVjdGlvbiIsImNvbm5lY3Rpb25TdGF0ZSIsImljZUNvbm5lY3Rpb25TdGF0ZSIsImdldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb242Iiwic2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjciLCJnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCIsImdldFRyYW5zY2VpdmVycyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjgiLCJfY3JlYXRlT2ZmZXIiLCJwcm9taXNlQmFzZWRQQ01ldGhvZHNEaXNhYmxlZCIsIl9jcmVhdGVBbnN3ZXIiLCJjcmVhdGVBbnN3ZXIiLCJfeDIiLCJfc2V0TG9jYWxEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0TG9jYWxEZXNjcmlwdGlvbiIsIl94MyIsIl9zZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWU0IiwiX2Rlc2NyaXB0aW9uJHNkcCIsImhhc0NyeXB0byIsIl9jb250ZXh0NCIsInNldFJlbW90ZURlc2NyaXB0aW9uIiwiX3g0IiwiZ2V0U2VuZGVycyIsImdldFJlY2VpdmVycyIsInNlbGVjdG9yIiwiZ2V0U3RhdHNMZWdhY3kiLCJfdGhpczMiLCJhZGRTdHJlYW0iLCJtZWRpYVN0cmVhbSIsIl90aGlzNCIsImdldFRyYWNrcyIsInRyYWNrIiwiYWRkVHJhY2siLCJvbnRyYWNrIiwiaGFuZGxlciIsIm9uaWNlY2FuZGlkYXRlIiwib25jb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsImNsb3NlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOSIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbiIsInJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UiLCJzdWJqZWN0IiwiX3N1YmplY3QiLCJEaXNwb3NhYmxlTGlzdGVuZXIiLCJfRGlzcG9zYWJsZSIsImxpc3RlbmVycyIsIl9jYWxsU3VwZXIiLCJpZHgiLCJfaW5oZXJpdHMiLCJfbGlzdGVuZXJzIiwiY2hhbmdlZCIsImNvbXBhcmFibGUiLCJlcXVhbHMiLCJfaSIsIl9hcnIiLCJiYXNlVVJMIiwib3JpZ2luIiwiRGlzY292ZXJ5VXJpIiwiX0dsb2JhbFNjb3BlJGdldEluc3RhIiwiX2NsaWVudFNlc3Npb25JZCIsIl9sb2FkZWRUaW1lc3RhbXAiLCJfcmVhZE9ubHlJbml0aWFsaXplZCIsIl9yZWFkT25seURpc2NvdmVyeVVyaSIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeSIsIl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUiLCJfYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJfYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCIsIl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJfd2ViUGxheWVyTG9hZGVyIiwiX3NoYWthUGxheWVyTG9hZGVyIiwiX2hsc0pzTG9hZGVyIiwiX21ldHJpY3NTZXJ2aWNlIiwiX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwiX3RlbGVtZXRyeVVybCIsIl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwicmV0cmllc0Ftb3VudCIsIl90ZWxlbWV0cnlMZXZlbCIsImFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsInRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJpZ25vcmVkRW52aXJvbm1lbnQiLCJpZ25vcmVkRGlzY292ZXJ5VXJpIiwidGVsZW1ldHJ5VXJsIiwidGVsZW1ldHJ5QXBwZW5kZXIiLCJpZ25vcmVkVGVuYW5jeSIsImFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24iLCJpZ25vcmVkVGVsZW1ldHJ5TGV2ZWwiLCJhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5Rm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiZGlzY292ZXJ5VXJpIiwiY2hhbm5lbFRva2VuIiwidXJpVmFsdWUiLCJiYXNlVVJJVmFsdWUiLCJvbkxvYWQiLCJfaW5pdGlhbGl6ZWQiLCJhZGRXaW5kb3dFdmVudExpc3RlbmVyIiwiaW5pdCIsIm9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZSIsInBlZXJDb25uZWN0aW9uRmFjdG9yeSIsImNvbnNvbGVMb2dnaW5nTGV2ZWwiLCJjb25zb2xlQXBwZW5kZXIiLCJhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUiLCJ3ZWJQbGF5ZXJMb2FkZXIiLCJzaGFrYVBsYXllckxvYWRlciIsImhsc0pzTG9hZGVyIiwiX3RoaXMkX2FwcGxpY2F0aW9uQWN0IiwiX1NESyIsInNlZ21lbnRzIiwicHJvdG9jb2wiLCJ1bnNoaWZ0IiwiZW5kc1dpdGgiLCJqb2luIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImRpc3Bvc2VQZWVyQ29ubmVjdGlvbiIsImRpc3Bvc2VNZWRpYVN0cmVhbSIsIl90aGlzJG1lZGlhU3RyZWFtJHZhbCIsInN0b3AiLCJTdGF0ZUNvbnRleHQiLCJpc1N0YXJ0aW5nIiwiaXNEaXNwb3NlZCIsIlRva2VuQ29udGV4dCIsInRva2VuRXhwaXJpbmciLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIk5vcm1hbCIsIkZvcmNlIiwiUmVzZXQiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIktlZXAiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIkRpc2NvdmVyeSIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsIm1hcCIsImVuZFBvaW50IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIlBjYXN0VXJpIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJkaXNjb3ZlcnlQYXRoIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiYXBpVmVyc2lvbiIsIkZldGNoVGltZW91dEVycm9yIiwiX0Vycm9yIiwiX3dyYXBOYXRpdmVTdXBlciIsIl90aW1lb3V0RHVyYXRpb24iLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwic3RhcnQiLCJyZXF1ZXN0T3B0aW9ucyIsImJ1aWxkUGluZ1VybCIsImZldGNoV2l0aFRpbWVvdXQiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJmYWlsdXJlQ291bnQiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVI0IiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiZmV0Y2hSZXF1ZXN0T3B0aW9ucyIsImh0dHBSZXNwb25zZSIsImpzb25SZXNwb25zZUJvZHkiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsIl9yZXNwb25zZTIiLCJmaW5pc2hlZCIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJleGVjdXRlRmV0Y2hSZXF1ZXN0IiwicGFyc2VKc29uQm9keSIsImhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCIsInN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsIm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsInB1Ymxpc2hSZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic3RyZWFtIiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwiX2NhbGxlZTUiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiX2NvbnRleHQ1IiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJsaW1pdEJpdHJhdGUiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsIl9jYWxsZWU2IiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIl9jb250ZXh0NiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiX2NhbGxlZTciLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY29udGV4dDciLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW0iLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX2NhbGxlZTgiLCJfY29udGV4dDgiLCJlcnIiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX3gxOCIsIl94MTkiLCJfZmV0Y2hXaXRoVGltZW91dCIsIl9jYWxsZWU5IiwidGltZW91dER1cmF0aW9uIiwiY29udHJvbGxlciIsIl9jb250ZXh0OSIsIl9vYmplY3RTcHJlYWQiLCJzaWduYWwiLCJhYm9ydCIsIl94MjAiLCJfeDIxIiwiX3gyMiIsIl9leGVjdXRlRmV0Y2hSZXF1ZXN0IiwiX2NhbGxlZTAiLCJvcGVyYXRpb24iLCJfY29udGV4dDAiLCJfeDIzIiwiX3gyNCIsIl94MjUiLCJwYXRoIiwiYnVpbGRSb3V0ZVVybCIsIl9wYXJzZUpzb25Cb2R5IiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJqc29uIiwiX3gyNiIsImNvbnRleHQiLCJsYWciLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsImlnbm9yZWRTdHJlYW1SZXNwb25zZUNvbnRleHQiLCJvdGhlclByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTExIiwiX2NvbnRleHQxMSIsIl94MjgiLCJfY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsIl9jYWxsZWUxMiIsIl9jb250ZXh0MTIiLCJfeDI5Iiwibm9ybWFsaXplRGlzY292ZXJ5VXJpIiwiaGFzaCIsImJhc2VVcmkiLCJQdWJsaXNoZXJTdGF0ZSIsIlNlc3Npb25UZWxlbWV0cnkiLCJQdWJsaXNoZXJDb250ZXh0IiwiUmVhbFRpbWVQdWJsaXNoZXIiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIm9uZUhvdXJJbk1pbGxpc2Vjb25kcyIsIm1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIlB1Ymxpc2hlciIsInBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMiLCJfdG9rZW5Db250ZXh0IiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9wdWJsaXNoZXJTdGFydFRpbWUiLCJfcmVhZE9ubHlUb2tlbiIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsInB1Ymxpc2hlckRpc3Bvc2FibGVzIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUHVibGlzaGluZyIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJkaXNwb3NhYmxlcyIsIl9zdG9wIiwicHJvY2Vzc1N0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiU3RvcHBlZCIsIl9kaXNwb3NlIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QdWJsaXNoZXIiLCJTdGFydGluZyIsIlVuYXV0aG9yaXplZCIsIlJlY292ZXJpbmciLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMiLCJ0aW1lb3V0SWQiLCJnZXRSZXRyeUludGVydmFsIiwic2V0TWVkaWFTdHJlYW0iLCJfdGhpczUiLCJtZWRpYVRyYWNrIiwiX3RoaXM1JF9wZWVyQ29ubmVjdGlvIiwic2VuZGVyIiwiX3NlbmRlciR0cmFjayIsInJlcGxhY2VUcmFjayIsIk9mZmxpbmUiLCJJbml0aWFsaXppbmciLCJOb3RGb3VuZCIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUmVjb25uZWN0aW5nIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiQ29uZmlndXJhdGlvbkVycm9yIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJyZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsIiwiX3RoaXM2IiwicHVibGlzaGVySW5pdGlhbGl6YXRpb24iLCJnZW5lcmF0ZVNjcmVlbk5hbWUiLCJhcHBseVB1Ymxpc2hTdGF0dXMiLCJhcHBseVVuYXV0aG9yaXplZCIsImFwcGx5Tm90Rm91bmQiLCJhcHBseVVuaGFuZGxlZEVycm9yIiwiYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsIm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIlB1Ymxpc2hlcnMiLCJjcmVhdGVQdWJsaXNoZXIiLCJpbml0aWFsaXplZCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsInNvZnRSZXN0YXJ0SW50ZXJ2YWwiLCJwdWJsaXNoZXJDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0IiwibmF2aWdhdG9ySXNPbkxpbmUiLCJtZWRpYVRyYWNrcyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJfcmVmMyQiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUiLCJfcmVmNCIsIm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9jcmVhdGVBbnN3ZXJEZXNjcmlwdCIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIl90aGlzJF9wdWJsaXNoZXJDb250ZTIiLCJydGNQdWJsaXNoTW9uaXRvciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCIsImljZVJlc3RhcnQiLCJvZmZlciIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Il0sInNvdXJjZVJvb3QiOiIifQ==
|