@1money/component-ui 0.0.99 → 0.0.100
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/es/business/Dialog/VerificationDialog/VerificationDialog.js +38 -39
- package/es/business/Dialog/variants/LoadingDialog.js +17 -17
- package/es/business/Filter/DateRange/DateRange.js +14 -14
- package/es/business/Select/Country/CountrySelect.js +71 -40
- package/es/business/Select/Country/interface.d.ts +31 -15
- package/es/business/Select/Country/style/CountrySelect.css +33 -0
- package/es/business/Select/Country/style/css.js +2 -0
- package/es/business/Select/Country/style/index.d.ts +1 -0
- package/es/business/Select/Country/style/index.js +2 -0
- package/es/business/shared/formCore/useSubmitAction.js +19 -19
- package/es/components/Icons/Illustrations.js +15 -15
- package/es/components/Notification/NotificationStatic.js +27 -32
- package/es/components/ProForm/ProForm.js +47 -51
- package/es/components/ProForm/Submitter.js +8 -8
- package/es/components/ProForm/core/hooks/useForm.js +77 -88
- package/es/components/ProForm/core/runRules.js +56 -61
- package/es/components/ProForm/hooks/useFieldRequest.js +19 -19
- package/es/components/ProForm/layouts/useOverlayForm.js +9 -11
- package/es/components/ProTable/ProTable.js +8 -8
- package/es/components/ProTable/useFetchData.js +23 -23
- package/es/components/Select/SelectOptionContent.js +8 -1
- package/es/components/Select/interface.d.ts +9 -0
- package/es/components/Select/interface.js +1 -1
- package/es/components/Select/style/Select.css +7 -0
- package/es/components/Spinner/Spinner.js +11 -11
- package/es/components/Table/internal/kernel/Table.js +8 -8
- package/es/index.css +1 -1
- package/lib/business/Dialog/BaseDialog/BaseDialog.js +2 -3
- package/lib/business/Dialog/Descriptions/Descriptions.js +2 -3
- package/lib/business/Dialog/DetailsDialog/DetailsDialog.js +2 -3
- package/lib/business/Dialog/FormDialog/FormDialog.js +2 -3
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +39 -41
- package/lib/business/Dialog/variants/LoadingDialog.js +18 -19
- package/lib/business/FieldList/index.js +2 -3
- package/lib/business/Filter/DateRange/DateRange.js +14 -14
- package/lib/business/Select/Country/CountrySelect.js +71 -40
- package/lib/business/Select/Country/interface.d.ts +31 -15
- package/lib/business/Select/Country/style/CountrySelect.css +33 -0
- package/lib/business/Select/Country/style/css.js +4 -0
- package/lib/business/Select/Country/style/index.d.ts +1 -0
- package/lib/business/Select/Country/style/index.js +4 -0
- package/lib/business/shared/formCore/useSubmitAction.js +19 -19
- package/lib/components/Accordion/Accordion.js +2 -3
- package/lib/components/Accordion/index.js +2 -3
- package/lib/components/ActionBar/ActionBar.js +2 -3
- package/lib/components/Alert/Alert.js +2 -3
- package/lib/components/Alert/index.js +2 -3
- package/lib/components/Button/Button.js +2 -3
- package/lib/components/Button/index.js +2 -3
- package/lib/components/Calendar/Calendar.js +2 -3
- package/lib/components/Calendar/index.js +2 -3
- package/lib/components/Carousel/Carousel.js +2 -3
- package/lib/components/Carousel/index.js +2 -3
- package/lib/components/Cell/Cell.js +2 -3
- package/lib/components/Cell/index.js +2 -3
- package/lib/components/Checkbox/BaseCheckbox.js +2 -3
- package/lib/components/Checkbox/Checkbox.js +2 -3
- package/lib/components/Checkbox/CheckboxGroup.js +2 -3
- package/lib/components/Checkbox/index.js +2 -3
- package/lib/components/CoachMark/CoachMark.js +2 -3
- package/lib/components/CoachMark/index.js +2 -3
- package/lib/components/Copy/Clipboard.js +2 -3
- package/lib/components/Copy/Copy.js +2 -3
- package/lib/components/Copy/index.js +2 -3
- package/lib/components/Dialog/index.js +2 -3
- package/lib/components/Divider/Divider.js +2 -3
- package/lib/components/Drawer/Drawer.js +2 -3
- package/lib/components/Empty/Empty.js +2 -3
- package/lib/components/Empty/index.js +2 -3
- package/lib/components/Flex/Flex.js +2 -3
- package/lib/components/FormLayout/FormLayout.js +2 -3
- package/lib/components/Grid/Col.js +2 -3
- package/lib/components/Grid/Row.js +2 -3
- package/lib/components/Icons/Illustrations.js +15 -15
- package/lib/components/Icons/Logo.js +2 -3
- package/lib/components/Icons/Wrapper.js +2 -3
- package/lib/components/Icons/index.js +2 -3
- package/lib/components/Input/Amount/Amount.js +2 -3
- package/lib/components/Input/Amount/index.js +2 -3
- package/lib/components/Input/FieldShell/FieldShell.js +2 -3
- package/lib/components/Input/FieldShell/index.js +2 -3
- package/lib/components/Input/Input/Input.js +2 -3
- package/lib/components/Input/Input/index.js +2 -3
- package/lib/components/Input/Mask/Mask.js +2 -3
- package/lib/components/Input/Mask/index.js +2 -3
- package/lib/components/Input/OTP/index.js +2 -3
- package/lib/components/Input/Password/Password.js +2 -3
- package/lib/components/Input/Password/index.js +2 -3
- package/lib/components/Input/Search/Search.js +2 -3
- package/lib/components/Input/Search/index.js +2 -3
- package/lib/components/Input/TextArea/TextArea.js +2 -3
- package/lib/components/Input/TextArea/index.js +2 -3
- package/lib/components/Input/Trade/Trade.js +2 -3
- package/lib/components/Input/Trade/index.js +2 -3
- package/lib/components/Input/index.js +2 -3
- package/lib/components/Link/Link.js +2 -3
- package/lib/components/Link/index.js +2 -3
- package/lib/components/Navigation/Nav.js +2 -3
- package/lib/components/Navigation/Navigation.js +2 -3
- package/lib/components/Navigation/NavigationStepper.js +2 -3
- package/lib/components/Navigation/index.js +2 -3
- package/lib/components/Notification/Notification.js +2 -3
- package/lib/components/Notification/NotificationStatic.js +28 -34
- package/lib/components/Notification/index.js +2 -3
- package/lib/components/Pagination/Pagination.js +2 -3
- package/lib/components/Pagination/index.js +2 -3
- package/lib/components/PanelLayout/PanelLayout.js +2 -3
- package/lib/components/Popconfirm/Popconfirm.js +2 -3
- package/lib/components/Popconfirm/index.js +2 -3
- package/lib/components/Portal/index.js +2 -3
- package/lib/components/ProForm/ProForm.js +48 -53
- package/lib/components/ProForm/ProFormDependency.js +2 -3
- package/lib/components/ProForm/ProFormItem.js +2 -3
- package/lib/components/ProForm/Submitter.js +8 -8
- package/lib/components/ProForm/core/devWarning.js +2 -3
- package/lib/components/ProForm/core/hooks/useForm.js +78 -90
- package/lib/components/ProForm/core/runRules.js +56 -61
- package/lib/components/ProForm/core/useFormItem.js +2 -3
- package/lib/components/ProForm/fields/ProFormFieldSet.js +2 -3
- package/lib/components/ProForm/hooks/useFieldRequest.js +19 -19
- package/lib/components/ProForm/layouts/QueryFilter.js +2 -3
- package/lib/components/ProForm/layouts/useOverlayForm.js +10 -13
- package/lib/components/ProTable/ProTable.js +8 -8
- package/lib/components/ProTable/index.js +2 -3
- package/lib/components/ProTable/useFetchData.js +23 -23
- package/lib/components/Progress/Progress.js +2 -3
- package/lib/components/Progress/index.js +2 -3
- package/lib/components/Radio/Radio.js +2 -3
- package/lib/components/Radio/RadioGroup.js +2 -3
- package/lib/components/Radio/index.js +2 -3
- package/lib/components/ResizeObserver/Collection.js +2 -3
- package/lib/components/ResizeObserver/ResizeObserver.js +2 -3
- package/lib/components/ResizeObserver/SingleObserver/index.js +2 -3
- package/lib/components/ResizeObserver/useResizeObserver.js +2 -3
- package/lib/components/ResizeObserver/utils/reactUtil.js +2 -3
- package/lib/components/Segment/Segment.js +2 -3
- package/lib/components/Segment/index.js +2 -3
- package/lib/components/Select/Select.js +2 -3
- package/lib/components/Select/SelectCustom.js +2 -3
- package/lib/components/Select/SelectOptionContent.js +8 -1
- package/lib/components/Select/interface.d.ts +9 -0
- package/lib/components/Select/interface.js +1 -1
- package/lib/components/Select/style/Select.css +7 -0
- package/lib/components/Skeleton/Skeleton.js +2 -3
- package/lib/components/Skeleton/index.js +2 -3
- package/lib/components/Slider/Slider.js +2 -3
- package/lib/components/Slider/index.js +2 -3
- package/lib/components/Space/Space.js +2 -3
- package/lib/components/Spinner/Spinner.js +12 -13
- package/lib/components/Spinner/index.js +2 -3
- package/lib/components/Step/Step.js +2 -3
- package/lib/components/Step/index.js +2 -3
- package/lib/components/Switch/Switch.js +2 -3
- package/lib/components/Switch/index.js +2 -3
- package/lib/components/Table/core/useTableSetup.js +2 -3
- package/lib/components/Table/internal/index.js +2 -3
- package/lib/components/Table/internal/kernel/Body/BodyRow.js +2 -3
- package/lib/components/Table/internal/kernel/Body/ExpandedRow.js +2 -3
- package/lib/components/Table/internal/kernel/Body/MeasureCell.js +2 -3
- package/lib/components/Table/internal/kernel/Body/MeasureRow.js +2 -3
- package/lib/components/Table/internal/kernel/Body/index.js +2 -3
- package/lib/components/Table/internal/kernel/Cell/index.js +2 -3
- package/lib/components/Table/internal/kernel/Cell/useCellRender.js +2 -3
- package/lib/components/Table/internal/kernel/ColGroup.js +2 -3
- package/lib/components/Table/internal/kernel/FixedHolder/index.js +2 -3
- package/lib/components/Table/internal/kernel/Footer/Cell.js +2 -3
- package/lib/components/Table/internal/kernel/Footer/Row.js +2 -3
- package/lib/components/Table/internal/kernel/Footer/SummaryContext.js +2 -3
- package/lib/components/Table/internal/kernel/Footer/index.js +2 -3
- package/lib/components/Table/internal/kernel/Header/Header.js +2 -3
- package/lib/components/Table/internal/kernel/Header/HeaderRow.js +2 -3
- package/lib/components/Table/internal/kernel/Panel/index.js +2 -3
- package/lib/components/Table/internal/kernel/Table.js +9 -10
- package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +2 -3
- package/lib/components/Table/internal/kernel/VirtualTable/BodyLine.js +2 -3
- package/lib/components/Table/internal/kernel/VirtualTable/VirtualCell.js +2 -3
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +2 -3
- package/lib/components/Table/internal/kernel/context/PerfContext.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useColumns/index.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useColumns/useWidthColumns.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useExpand.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useFixedInfo.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useFlattenRecords.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useHover.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useRenderTimes.js +2 -3
- package/lib/components/Table/internal/kernel/hooks/useSticky.js +2 -3
- package/lib/components/Table/internal/kernel/index.js +2 -3
- package/lib/components/Table/internal/kernel/selector-context/Immutable.js +2 -3
- package/lib/components/Table/internal/kernel/selector-context/context.js +2 -3
- package/lib/components/Table/internal/kernel/stickyScrollBar.js +2 -3
- package/lib/components/Table/internal/kernel/utils/expandUtil.js +2 -3
- package/lib/components/Table/internal/kernel/utils/useMemo.js +2 -3
- package/lib/components/Tabs/Tabs.js +2 -3
- package/lib/components/Tabs/index.js +2 -3
- package/lib/components/Tag/Tag.js +2 -3
- package/lib/components/Tag/index.js +2 -3
- package/lib/components/Tooltip/Tooltip.js +2 -3
- package/lib/components/Tooltip/index.js +2 -3
- package/lib/components/Tour/index.js +2 -3
- package/lib/components/Trigger/Trigger.js +2 -3
- package/lib/components/Typography/index.js +2 -3
- package/lib/components/Typography/utils.js +2 -3
- package/lib/components/Upload/Upload.js +2 -3
- package/lib/components/Upload/UploadFileBar.js +2 -3
- package/lib/components/Upload/index.js +2 -3
- package/lib/components/VirtualList/Filler.js +2 -3
- package/lib/components/VirtualList/Item.js +2 -3
- package/lib/components/VirtualList/ScrollBar.js +2 -3
- package/lib/components/VirtualList/VirtualList.js +2 -3
- package/lib/components/VirtualList/hooks/useChildren.js +2 -3
- package/lib/components/VirtualList/hooks/useDiffItem.js +2 -3
- package/lib/components/VirtualList/hooks/useGetSize.js +2 -3
- package/lib/components/VirtualList/hooks/useHeights.js +2 -3
- package/lib/components/VirtualList/hooks/useScrollDrag.js +2 -3
- package/lib/components/VirtualList/hooks/useScrollTo.js +2 -3
- package/lib/index.css +1 -1
- package/lib/stories/docs/ComponentDocsPage.js +2 -3
- package/package.json +23 -17
|
@@ -9,11 +9,12 @@ exports.filterRulesByTrigger = filterRulesByTrigger;
|
|
|
9
9
|
exports.normalizeTriggers = normalizeTriggers;
|
|
10
10
|
exports.resolveRules = resolveRules;
|
|
11
11
|
exports.runRulesAsync = runRulesAsync;
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
14
13
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
15
14
|
var _pathUtils = require("./pathUtils");
|
|
16
15
|
var _devWarning = require("./devWarning");
|
|
16
|
+
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 }; })(); }
|
|
17
|
+
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); }
|
|
17
18
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
18
19
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
19
20
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
@@ -411,17 +412,17 @@ function foldRuleResult(rule, result, state) {
|
|
|
411
412
|
}
|
|
412
413
|
/** Evaluate ONE rule (transform → builtin checks → validator → deep rules); custom validators are awaited. */
|
|
413
414
|
function evalRuleAsync(rule, rawValue, name) {
|
|
414
|
-
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator
|
|
415
|
+
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee() {
|
|
415
416
|
var prep, value, failure, result, acc, _iterator4, _step4, _step4$value, subRule, subValue, subName, _t, _t2, _t3, _t4, _t5;
|
|
416
|
-
return _regenerator
|
|
417
|
-
while (1) switch (_context.
|
|
417
|
+
return _regenerator().w(function (_context) {
|
|
418
|
+
while (1) switch (_context.p = _context.n) {
|
|
418
419
|
case 0:
|
|
419
420
|
prep = applyTransform(rule, rawValue);
|
|
420
421
|
if (prep.ok) {
|
|
421
|
-
_context.
|
|
422
|
+
_context.n = 1;
|
|
422
423
|
break;
|
|
423
424
|
}
|
|
424
|
-
return _context.
|
|
425
|
+
return _context.a(2, {
|
|
425
426
|
error: prep.failure,
|
|
426
427
|
warning: null
|
|
427
428
|
});
|
|
@@ -429,40 +430,40 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
429
430
|
value = prep.value;
|
|
430
431
|
failure = checkBuiltinRules(rule, value, name);
|
|
431
432
|
if (!(failure === null && typeof rule.validator === 'function')) {
|
|
432
|
-
_context.
|
|
433
|
+
_context.n = 5;
|
|
433
434
|
break;
|
|
434
435
|
}
|
|
435
|
-
_context.
|
|
436
|
-
_context.
|
|
436
|
+
_context.p = 2;
|
|
437
|
+
_context.n = 3;
|
|
437
438
|
return rule.validator(rule, value);
|
|
438
439
|
case 3:
|
|
439
|
-
result = _context.
|
|
440
|
+
result = _context.v;
|
|
440
441
|
warnLegacyValidatorReturn(name, result);
|
|
441
|
-
_context.
|
|
442
|
+
_context.n = 5;
|
|
442
443
|
break;
|
|
443
444
|
case 4:
|
|
444
|
-
_context.
|
|
445
|
-
_t = _context
|
|
445
|
+
_context.p = 4;
|
|
446
|
+
_t = _context.v;
|
|
446
447
|
failure = resolveFailureMessage(_t, rule);
|
|
447
448
|
case 5:
|
|
448
449
|
if (!(failure !== null)) {
|
|
449
|
-
_context.
|
|
450
|
+
_context.n = 6;
|
|
450
451
|
break;
|
|
451
452
|
}
|
|
452
|
-
return _context.
|
|
453
|
+
return _context.a(2, {
|
|
453
454
|
error: failure,
|
|
454
455
|
warning: null
|
|
455
456
|
});
|
|
456
457
|
case 6:
|
|
457
458
|
if (!((rule.fields || rule.defaultField) && !isEmptyValue(value))) {
|
|
458
|
-
_context.
|
|
459
|
+
_context.n = 16;
|
|
459
460
|
break;
|
|
460
461
|
}
|
|
461
462
|
if (!((0, _typeof2["default"])(value) !== 'object' || value === null)) {
|
|
462
|
-
_context.
|
|
463
|
+
_context.n = 7;
|
|
463
464
|
break;
|
|
464
465
|
}
|
|
465
|
-
return _context.
|
|
466
|
+
return _context.a(2, {
|
|
466
467
|
error: rule.message || "".concat(name, " must be an object or an array"),
|
|
467
468
|
warning: null
|
|
468
469
|
});
|
|
@@ -472,48 +473,45 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
472
473
|
warning: null
|
|
473
474
|
};
|
|
474
475
|
_iterator4 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name));
|
|
475
|
-
_context.
|
|
476
|
+
_context.p = 8;
|
|
476
477
|
_iterator4.s();
|
|
477
478
|
case 9:
|
|
478
479
|
if ((_step4 = _iterator4.n()).done) {
|
|
479
|
-
_context.
|
|
480
|
+
_context.n = 12;
|
|
480
481
|
break;
|
|
481
482
|
}
|
|
482
483
|
_step4$value = (0, _slicedToArray2["default"])(_step4.value, 3), subRule = _step4$value[0], subValue = _step4$value[1], subName = _step4$value[2];
|
|
483
484
|
_t2 = mergeSubResult;
|
|
484
485
|
_t3 = acc;
|
|
485
486
|
_t4 = subRule;
|
|
486
|
-
_context.
|
|
487
|
+
_context.n = 10;
|
|
487
488
|
return evalRuleAsync(subRule, subValue, subName);
|
|
488
489
|
case 10:
|
|
489
|
-
if (!_t2(_t3, _t4, _context.
|
|
490
|
-
_context.
|
|
490
|
+
if (!_t2(_t3, _t4, _context.v)) {
|
|
491
|
+
_context.n = 11;
|
|
491
492
|
break;
|
|
492
493
|
}
|
|
493
|
-
return _context.
|
|
494
|
+
return _context.a(3, 12);
|
|
494
495
|
case 11:
|
|
495
|
-
_context.
|
|
496
|
+
_context.n = 9;
|
|
496
497
|
break;
|
|
497
498
|
case 12:
|
|
498
|
-
_context.
|
|
499
|
+
_context.n = 14;
|
|
499
500
|
break;
|
|
500
501
|
case 13:
|
|
501
|
-
_context.
|
|
502
|
-
_t5 = _context
|
|
502
|
+
_context.p = 13;
|
|
503
|
+
_t5 = _context.v;
|
|
503
504
|
_iterator4.e(_t5);
|
|
504
505
|
case 14:
|
|
505
|
-
_context.
|
|
506
|
+
_context.p = 14;
|
|
506
507
|
_iterator4.f();
|
|
507
|
-
return _context.
|
|
508
|
+
return _context.f(14);
|
|
508
509
|
case 15:
|
|
509
|
-
return _context.
|
|
510
|
+
return _context.a(2, acc);
|
|
510
511
|
case 16:
|
|
511
|
-
return _context.
|
|
512
|
-
case 17:
|
|
513
|
-
case "end":
|
|
514
|
-
return _context.stop();
|
|
512
|
+
return _context.a(2, PASS);
|
|
515
513
|
}
|
|
516
|
-
}, _callee, null, [[
|
|
514
|
+
}, _callee, null, [[8, 13, 14, 15], [2, 4]]);
|
|
517
515
|
}));
|
|
518
516
|
}
|
|
519
517
|
/**
|
|
@@ -525,34 +523,34 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
525
523
|
* failure surfaces through the error/warning channels.
|
|
526
524
|
*/
|
|
527
525
|
function runRulesAsync(name, value, values, rules, instance) {
|
|
528
|
-
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator
|
|
526
|
+
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee2() {
|
|
529
527
|
var state, _iterator5, _step5, rule, result, error, _t6, _t7;
|
|
530
|
-
return _regenerator
|
|
531
|
-
while (1) switch (_context2.
|
|
528
|
+
return _regenerator().w(function (_context2) {
|
|
529
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
532
530
|
case 0:
|
|
533
531
|
state = {
|
|
534
532
|
warning: null
|
|
535
533
|
};
|
|
536
534
|
_iterator5 = _createForOfIteratorHelper(resolveRules(rules, values, instance));
|
|
537
|
-
_context2.
|
|
535
|
+
_context2.p = 1;
|
|
538
536
|
_iterator5.s();
|
|
539
537
|
case 2:
|
|
540
538
|
if ((_step5 = _iterator5.n()).done) {
|
|
541
|
-
_context2.
|
|
539
|
+
_context2.n = 8;
|
|
542
540
|
break;
|
|
543
541
|
}
|
|
544
542
|
rule = _step5.value;
|
|
545
543
|
result = void 0;
|
|
546
|
-
_context2.
|
|
547
|
-
_context2.
|
|
544
|
+
_context2.p = 3;
|
|
545
|
+
_context2.n = 4;
|
|
548
546
|
return evalRuleAsync(rule, value, name);
|
|
549
547
|
case 4:
|
|
550
|
-
result = _context2.
|
|
551
|
-
_context2.
|
|
548
|
+
result = _context2.v;
|
|
549
|
+
_context2.n = 6;
|
|
552
550
|
break;
|
|
553
551
|
case 5:
|
|
554
|
-
_context2.
|
|
555
|
-
_t6 = _context2
|
|
552
|
+
_context2.p = 5;
|
|
553
|
+
_t6 = _context2.v;
|
|
556
554
|
result = {
|
|
557
555
|
error: resolveFailureMessage(_t6, rule),
|
|
558
556
|
warning: null
|
|
@@ -560,37 +558,34 @@ function runRulesAsync(name, value, values, rules, instance) {
|
|
|
560
558
|
case 6:
|
|
561
559
|
error = foldRuleResult(rule, result, state);
|
|
562
560
|
if (!(error !== null)) {
|
|
563
|
-
_context2.
|
|
561
|
+
_context2.n = 7;
|
|
564
562
|
break;
|
|
565
563
|
}
|
|
566
|
-
return _context2.
|
|
564
|
+
return _context2.a(2, {
|
|
567
565
|
error: error,
|
|
568
566
|
warning: state.warning
|
|
569
567
|
});
|
|
570
568
|
case 7:
|
|
571
|
-
_context2.
|
|
569
|
+
_context2.n = 2;
|
|
572
570
|
break;
|
|
573
571
|
case 8:
|
|
574
|
-
_context2.
|
|
572
|
+
_context2.n = 10;
|
|
575
573
|
break;
|
|
576
574
|
case 9:
|
|
577
|
-
_context2.
|
|
578
|
-
_t7 = _context2
|
|
575
|
+
_context2.p = 9;
|
|
576
|
+
_t7 = _context2.v;
|
|
579
577
|
_iterator5.e(_t7);
|
|
580
578
|
case 10:
|
|
581
|
-
_context2.
|
|
579
|
+
_context2.p = 10;
|
|
582
580
|
_iterator5.f();
|
|
583
|
-
return _context2.
|
|
581
|
+
return _context2.f(10);
|
|
584
582
|
case 11:
|
|
585
|
-
return _context2.
|
|
583
|
+
return _context2.a(2, {
|
|
586
584
|
error: null,
|
|
587
585
|
warning: state.warning
|
|
588
586
|
});
|
|
589
|
-
case 12:
|
|
590
|
-
case "end":
|
|
591
|
-
return _context2.stop();
|
|
592
587
|
}
|
|
593
|
-
}, _callee2, null, [[1, 9, 10, 11]
|
|
588
|
+
}, _callee2, null, [[3, 5], [1, 9, 10, 11]]);
|
|
594
589
|
}));
|
|
595
590
|
}
|
|
596
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMudHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyJdLCJuYW1lcyI6WyJfcGF0aFV0aWxzIiwicmVxdWlyZSIsIl9kZXZXYXJuaW5nIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsInJlamVjdGVkIiwicmVzdWx0IiwidGhlbiIsImFwcGx5IiwiaXNFbXB0eVZhbHVlIiwidW5kZWZpbmVkIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsInJlYXNvbiIsIkVycm9yIiwibWVzc2FnZSIsInJlc29sdmVGYWlsdXJlTWVzc2FnZSIsInJ1bGUiLCJfYSIsInJlc29sdmVSdWxlcyIsInJ1bGVzIiwidmFsdWVzIiwiaW5zdGFuY2UiLCJzb21lIiwiY3R4IiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0RmllbGRWYWx1ZSIsInJlc29sdmVWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwibWFwIiwiZXJyIiwidmFsaWRhdG9yIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJpdGVtVHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZWZmZWN0aXZlIiwiZmlsdGVyUnVsZXNCeVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlVHJpZ2dlcnMiLCJmaWVsZE5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwicnVsZVRyaWdnZXJzIiwibWF0Y2hlcyIsImRldldhcm5PbmNlIiwiY29uY2F0Iiwiam9pbiIsIlRZUEVfQ0hFQ0tTIiwic3RyaW5nIiwidiIsIm51bWJlciIsIk51bWJlciIsImlzTmFOIiwiYm9vbGVhbiIsIm1ldGhvZCIsImludGVnZXIiLCJpc0ludGVnZXIiLCJmbG9hdCIsImFycmF5Iiwib2JqZWN0IiwiX3R5cGVvZjIiLCJkYXRlIiwiRGF0ZSIsImdldFRpbWUiLCJyZWdleHAiLCJSZWdFeHAiLCJoZXgiLCJlbWFpbCIsInVybCIsIlVSTCIsInR5cGVGYWlsdXJlTWVzc2FnZSIsInR5cGUiLCJtZWFzdXJlVmFsdWUiLCJtZWFzdXJlZCIsInVuaXQiLCJjaGVja0J1aWx0aW5SdWxlcyIsInJlcXVpcmVkIiwid2hpdGVzcGFjZSIsInRyaW0iLCJsZW4iLCJtIiwibWluIiwibWF4IiwicGF0dGVybiIsImdsb2JhbCIsInN0aWNreSIsImxhc3RJbmRleCIsInRvUnVsZUFycmF5IiwiZGVlcE1lbWJlcnMiLCJtZW1iZXIiLCJpbmRleCIsIlN0cmluZyIsImVudHJpZXMiLCJQQVNTIiwiZXJyb3IiLCJ3YXJuaW5nIiwid2FybkxlZ2FjeVZhbGlkYXRvclJldHVybiIsImFwcGx5VHJhbnNmb3JtIiwicmF3VmFsdWUiLCJ0cmFuc2Zvcm0iLCJvayIsImZhaWx1cmUiLCJkZWVwUnVsZUVudHJpZXMiLCJmaWVsZHMiLCJzb3VyY2UiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsImtleSIsInN1YlJ1bGVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJzdWJSdWxlIiwicHVzaCIsImRlZmF1bHRGaWVsZCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfc3RlcDIkdmFsdWUiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibWVyZ2VTdWJSZXN1bHQiLCJhY2MiLCJzdWIiLCJ3YXJuaW5nT25seSIsImZvbGRSdWxlUmVzdWx0Iiwic3RhdGUiLCJjb250ZW50IiwiZXZhbFJ1bGVBc3luYyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicHJlcCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJhYnJ1cHQiLCJzZW50IiwiZmluaXNoIiwic3RvcCIsInJ1blJ1bGVzQXN5bmMiLCJfY2FsbGVlMiIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfdDYiLCJfdDciLCJfY29udGV4dDIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQTJDLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENBQUEsQ0FBQVMsRUFBQSxVQUFBUixDQUFB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cyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBkZXZXYXJuT25jZSB9IGZyb20gJy4vZGV2V2FybmluZyc7XG4vKiogRW1wdHkgZm9yIGByZXF1aXJlZGA6IHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5LiAqL1xuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSk7XG59XG4vKipcbiAqIENvZXJjZSBhIHRocm93bi9yZWplY3RlZCByZWFzb24gaW50byBkaXNwbGF5YWJsZSBmYWlsdXJlIGNvbnRlbnQ6XG4gKiBhIG5vbi1lbXB0eSBFcnJvci5tZXNzYWdlIG9yIGEgbm9uLWVtcHR5IHBsYWluIHN0cmluZyDigJQgb3RoZXJ3aXNlIG51bGxcbiAqIChjYWxsZXIgcGlja3MgaXRzIGZhbGxiYWNrKS4gU2hhcmVkIHdpdGggdGhlIGZvcm0tbGV2ZWwgbGFzdC1yZXNvcnQgbmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUZhaWx1cmVSZWFzb24ocmVhc29uKSB7XG4gICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yICYmIHJlYXNvbi5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gcmVhc29uLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiByZWFzb24gPT09ICdzdHJpbmcnICYmIHJlYXNvbilcbiAgICAgICAgcmV0dXJuIHJlYXNvbjtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRmFpbHVyZSBtZXNzYWdlIGZvciBhIHJlamVjdGVkL3Rocm93biBjdXN0b20gdmFsaWRhdG9yOlxuICogRXJyb3IubWVzc2FnZSDihpIgcGxhaW4gc3RyaW5nIHJlYXNvbiDihpIgcnVsZS5tZXNzYWdlIOKGkiBnZW5lcmljIGZhbGxiYWNrLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UocmVhc29uLCBydWxlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKHJlYXNvbikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChydWxlLm1lc3NhZ2UgfHwgJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XG59XG4vKipcbiAqIFJlc29sdmUgZnVuY3Rpb24tZm9ybSBydWxlcyBpbnRvIHN0YXRpYyBydWxlcy4gVGhlXG4gKiBjb250ZXh0IGV4cG9zZXMgdGhlIHZhbHVlIHNuYXBzaG90IHRoZSBydW4gd2FzIGludm9rZWQgd2l0aDsgZnVuY3Rpb24gcnVsZXNcbiAqIG11c3QgYmUgY2hlYXAgYW5kIHNpZGUtZWZmZWN0IGZyZWUg4oCUIHRoZXkgbWF5IGJlIHJlc29sdmVkIG1vcmUgdGhhbiBvbmNlXG4gKiBwZXIgdmFsaWRhdGlvbiBwYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGluc3RhbmNlKSB7XG4gICAgLy8gRmFzdCBwYXRoOiBubyBmdW5jdGlvbiBydWxlcyDihpIgbm90aGluZyB0byByZXNvbHZlLCBubyBjdHggYWxsb2NhdGlvbi5cbiAgICAvLyBUaGlzIGFsc28gbWFrZXMgdGhlIGVuZ2luZS1pbnRlcm5hbCByZS1yZXNvbHV0aW9uIG9mIGFscmVhZHktcmVzb2x2ZWRcbiAgICAvLyBhcnJheXMgZnJlZS5cbiAgICBpZiAoIXJ1bGVzLnNvbWUoKHJ1bGUpID0+IHR5cGVvZiBydWxlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgfVxuICAgIC8vIExpdmUtaW5zdGFuY2UgbWVtYmVycyAoc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3IsIOKApikgYXJlIHNwcmVhZCBpblxuICAgIC8vIHdoZW4gYXZhaWxhYmxlOyB0aGUgcmVhZHMgYWx3YXlzIGNvbWUgZnJvbSB0aGUgdmFsaWRhdGlvbi10aW1lIHNuYXBzaG90LlxuICAgIGNvbnN0IGN0eCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5zdGFuY2UpLCB7IGdldEZpZWxkVmFsdWU6IChuYW1lKSA9PiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgZ2V0RmllbGRzVmFsdWU6ICgpID0+IHZhbHVlcyB9KTtcbiAgICByZXR1cm4gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybiBydWxlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBBIHRocm93aW5nIHJ1bGUgZmFjdG9yeSBtdXN0IG5vdCBjcmFzaCByZW5kZXJpbmcgb3IgdmFsaWRhdGlvbiDigJRcbiAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgYXMgYSBydWxlIHRoYXQgYWx3YXlzIGZhaWxzIHdpdGggdGhlIHRocm93biByZWFzb24uXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgZm9ybS9pdGVtLWxldmVsIHZhbGlkYXRlVHJpZ2dlciBjb25maWcgaW50byB0aGUgZWZmZWN0aXZlXG4gKiBpbnRlcmFjdGl2ZSBldmVudCBsaXN0OiBpdGVtLWxldmVsICh3aGVuIHByZXNlbnQpIG92ZXJyaWRlcyBmb3JtLWxldmVsO1xuICogYGZhbHNlYCBkaXNhYmxlcyBpbnRlcmFjdGl2ZSB2YWxpZGF0aW9uIGVudGlyZWx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHJpZ2dlcnMoaXRlbVRyaWdnZXIsIGZvcm1UcmlnZ2VyKSB7XG4gICAgY29uc3QgZWZmZWN0aXZlID0gaXRlbVRyaWdnZXIgPT09IHVuZGVmaW5lZCA/IGZvcm1UcmlnZ2VyIDogaXRlbVRyaWdnZXI7XG4gICAgaWYgKGVmZmVjdGl2ZSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlZmZlY3RpdmUpID8gZWZmZWN0aXZlIDogW2VmZmVjdGl2ZV07XG59XG4vKipcbiAqIEZpbHRlciBydWxlcyBhcHBsaWNhYmxlIHRvIGFuIGludGVyYWN0aXZlIGV2ZW50OiB0aGUgZXZlbnRcbiAqIHZhbGlkYXRlcyBvbmx5IHdoZW4gaXQgaXMgaW4gdGhlIGl0ZW0ncyBlZmZlY3RpdmUgdHJpZ2dlciBzZXQuIFdpdGhpbiB0aGVcbiAqIHNldCwgYSBydWxlIFdJVEhPVVQgYHZhbGlkYXRlVHJpZ2dlcmAgcnVucyBvbiBldmVyeSBldmVudDsgYSBydWxlIFdJVEggb25lXG4gKiBydW5zIG9ubHkgb24gbWF0Y2hpbmcgZXZlbnRzIOKAlCBzbyBhIHJ1bGUgdHJpZ2dlciBvdXRzaWRlIHRoZSBpdGVtJ3Mgc2V0XG4gKiBuZXZlciBmaXJlcyBpbnRlcmFjdGl2ZWx5LiBTdWJtaXQtdGltZSB2YWxpZGF0aW9uIGJ5cGFzc2VzIHRoaXMgZmlsdGVyIGFuZFxuICogcnVucyBldmVyeSBydWxlLlxuICpcbiAqIERldiBndWFyZDogYSBydWxlIHdob3NlIChub24tZW1wdHkpIHRyaWdnZXIgc2V0IGlzIGZ1bGx5IE9VVFNJREUgdGhlXG4gKiBhY3RpdmUgc2V0IGNhbiBuZXZlciBmaXJlIGludGVyYWN0aXZlbHkg4oCUIHVzdWFsbHkgYSBsZWZ0b3ZlciBvZiB0aGVcbiAqIHByZS0wLjAuNzYgb3ZlcnJpZGUgc2VtYW50aWNzLCBzbyBpdCB3YXJucyBvbmNlLiBgdmFsaWRhdGVUcmlnZ2VyOiBbXWBcbiAqIGlzIHRoZSBkZWxpYmVyYXRlIHN1Ym1pdC1vbmx5IGlkaW9tIGFuZCBzdGF5cyBzaWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgYWN0aXZlVHJpZ2dlcnMsIGZpZWxkTmFtZSkge1xuICAgIGlmICghYWN0aXZlVHJpZ2dlcnMuaW5jbHVkZXModHJpZ2dlcikpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gcnVsZXMuZmlsdGVyKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VyID0gcnVsZS52YWxpZGF0ZVRyaWdnZXI7XG4gICAgICAgIGlmIChydWxlVHJpZ2dlciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VycyA9IEFycmF5LmlzQXJyYXkocnVsZVRyaWdnZXIpID8gcnVsZVRyaWdnZXIgOiBbcnVsZVRyaWdnZXJdO1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gcnVsZVRyaWdnZXJzLmluY2x1ZGVzKHRyaWdnZXIpO1xuICAgICAgICBpZiAoIW1hdGNoZXMgJiZcbiAgICAgICAgICAgIHJ1bGVUcmlnZ2Vycy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhcnVsZVRyaWdnZXJzLnNvbWUoKHQpID0+IGFjdGl2ZVRyaWdnZXJzLmluY2x1ZGVzKHQpKSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpZWxkTmFtZSAhPT0gbnVsbCAmJiBmaWVsZE5hbWUgIT09IHZvaWQgMCA/IGZpZWxkTmFtZSA6ICcoYW55KSc7XG4gICAgICAgICAgICBkZXZXYXJuT25jZShgdHJpZ2dlcjoke25hbWV9OiR7cnVsZVRyaWdnZXJzLmpvaW4oJywnKX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBydWxlIHZhbGlkYXRlVHJpZ2dlciBbJHtydWxlVHJpZ2dlcnMuam9pbignLCAnKX1dIGlzIG91dHNpZGUgdGhpcyBmaWVsZCdzIGFjdGl2ZSB0cmlnZ2VyIHNldCBbJHthY3RpdmVUcmlnZ2Vycy5qb2luKCcsICcpfV0g4oCUIHRoZSBydWxlIHdpbGwgb25seSBydW4gb24gc3VibWl0LiBJbmNsdWRlIGl0IGluIHRoZSBpdGVtL2Zvcm0gdmFsaWRhdGVUcmlnZ2VyIHRvIHJ1biBpdCBpbnRlcmFjdGl2ZWx5LmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH0pO1xufVxuLyoqIEJ1aWx0LWluIGB0eXBlYCBjaGVja3MuIGBlbnVtYCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgYWdhaW5zdCBgcnVsZS5lbnVtYC4gKi9cbmNvbnN0IFRZUEVfQ0hFQ0tTID0ge1xuICAgIHN0cmluZzogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyxcbiAgICBudW1iZXI6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSxcbiAgICBib29sZWFuOiAodikgPT4gdHlwZW9mIHYgPT09ICdib29sZWFuJyxcbiAgICBtZXRob2Q6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBpbnRlZ2VyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIodiksXG4gICAgZmxvYXQ6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSAmJiAhTnVtYmVyLmlzSW50ZWdlcih2KSxcbiAgICBhcnJheTogKHYpID0+IEFycmF5LmlzQXJyYXkodiksXG4gICAgb2JqZWN0OiAodikgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodiksXG4gICAgZGF0ZTogKHYpID0+IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgID8gIU51bWJlci5pc05hTih2LmdldFRpbWUoKSlcbiAgICAgICAgOiB0eXBlb2YgKHYgPT09IG51bGwgfHwgdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdi5nZXRUaW1lKSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgIU51bWJlci5pc05hTih2LmdldFRpbWUoKSksXG4gICAgcmVnZXhwOiAodikgPT4ge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFJlZ0V4cCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBoZXg6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2kudGVzdCh2KSxcbiAgICAvLyBTdHJpbmctb25seTogY29lcmNpbmcgdmlhIFN0cmluZygpIHdvdWxkIGxldCBlLmcuIFsnYUBiLmNvJ10gc3RyaW5naWZ5XG4gICAgLy8gaW50byBhIHBhc3NpbmcgdmFsdWUuXG4gICAgZW1haWw6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh2KSxcbiAgICB1cmw6ICh2KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgVVJMKHYpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxufTtcbi8qKiBGcmllbmRseSBnZW5lcmF0ZWQgbWVzc2FnZXMgZm9yIHRoZSBsZWdhY3kgdHlwZSBuYW1lczsgb3RoZXJzIGdldCBhIGdlbmVyaWMgb25lLiAqL1xuZnVuY3Rpb24gdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICBpZiAodHlwZSA9PT0gJ2VtYWlsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBlbWFpbGA7XG4gICAgaWYgKHR5cGUgPT09ICd1cmwnKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFVSTGA7XG4gICAgcmV0dXJuIGAke25hbWV9IGlzIG5vdCBhIHZhbGlkICR7dHlwZX1gO1xufVxuLyoqIE1lYXN1cmUgYSB2YWx1ZSBmb3IgbGVuL21pbi9tYXg6IHN0cmluZyDihpIgbGVuZ3RoLCBhcnJheSDihpIgY291bnQsIG51bWJlciDihpIgdmFsdWUuICovXG5mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBjaGFyYWN0ZXJzJyB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBpdGVtcycgfTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLCB1bml0OiAnJyB9O1xuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBldmVyeSBidWlsdC1pbiAobm9uLWB2YWxpZGF0b3JgKSBydWxlIGtpbmQgZm9yIGEgc2luZ2xlIHJ1bGUuXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBjb250ZW50IGZvciB0aGUgZmlyc3QgZmFpbGluZyBjaGVjaywgb3IgbnVsbC5cbiAqXG4gKiBFbXB0eSB2YWx1ZXMgKHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5KSBhcmUgb25seSBjaGVja2VkIGJ5XG4gKiBgcmVxdWlyZWRgIOKAlCBldmVyeSBvdGhlciBidWlsdGluIGNoZWNrIGlzIHNraXBwZWQsIHNvIG9wdGlvbmFsIGZpZWxkc1xuICogZG9uJ3QgZXJyb3IgdW50aWwgdGhleSBoYXZlIGNvbnRlbnQuIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBOT1Qgc3ViamVjdCB0b1xuICogdGhpcyBza2lwICh0aGV5IHJlY2VpdmUgdGhlIGVtcHR5IHZhbHVlIGFuZCBkZWNpZGUgdGhlbXNlbHZlcykuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICB9XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIC8vIE5vbi1lbXB0eSBzdHJpbmcgb2Ygb25seSB3aGl0ZXNwYWNlICh0aGUgcmVxdWlyZWQrd2hpdGVzcGFjZSB0cmltIGlkaW9tKS5cbiAgICBpZiAocnVsZS53aGl0ZXNwYWNlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGNhbm5vdCBiZSBibGFua2A7XG4gICAgfVxuICAgIC8vIGxlbjogZXhhY3QgbGVuZ3RoL2NvdW50L3ZhbHVlIOKAlCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbWluL21heC5cbiAgICBpZiAocnVsZS5sZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBtID0gbWVhc3VyZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKG0gIT09IG51bGwgJiYgbS5tZWFzdXJlZCAhPT0gcnVsZS5sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBleGFjdGx5ICR7cnVsZS5sZW59JHttLnVuaXR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkIHx8IHJ1bGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCAmJiBtLm1lYXN1cmVkIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSR7bS51bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEEgL2cgb3IgL3kgcmVnZXggaXMgc3RhdGVmdWw6IGxhc3RJbmRleCBwZXJzaXN0cyBhY3Jvc3MgLnRlc3QoKSBjYWxscyxcbiAgICAgICAgLy8gc28gcmVwZWF0ZWQgcnVucyB3b3VsZCBhbHRlcm5hdGUgcGFzcy9mYWlsIOKAlCByZXNldCBpdCBldmVyeSBydW4uXG4gICAgICAgIGlmIChydWxlLnBhdHRlcm4uZ2xvYmFsIHx8IHJ1bGUucGF0dGVybi5zdGlja3kpXG4gICAgICAgICAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgJiYgcnVsZS50eXBlICE9PSAnZW51bScgJiYgIVRZUEVfQ0hFQ0tTW3J1bGUudHlwZV0odmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHJ1bGUudHlwZSk7XG4gICAgfVxuICAgIC8vIGVudW0gbWVtYmVyc2hpcDogYXBwbGllcyBmb3IgdHlwZSAnZW51bScgb3Igd2hlbmV2ZXIgcnVsZS5lbnVtIGlzIHByZXNlbnQuXG4gICAgaWYgKHJ1bGUuZW51bSAmJiBBcnJheS5pc0FycmF5KHJ1bGUuZW51bSkgJiYgIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdG9SdWxlQXJyYXkocnVsZXMpIHtcbiAgICBpZiAoIXJ1bGVzKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocnVsZXMpID8gcnVsZXMgOiBbcnVsZXNdO1xufVxuLyoqIE1lbWJlcnMgZm9yIGRlZXAgcnVsZXM6IGFycmF5IOKGkiBpbmRleGVkIGVudHJpZXMsIHBsYWluIG9iamVjdCDihpIga2V5IGVudHJpZXMuICovXG5mdW5jdGlvbiBkZWVwTWVtYmVycyh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgobWVtYmVyLCBpbmRleCkgPT4gW1N0cmluZyhpbmRleCksIG1lbWJlcl0pO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICAgIHJldHVybiBbXTtcbn1cbmNvbnN0IFBBU1MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4vKipcbiAqIERldiBndWFyZCBmb3IgdGhlIHByZS0wLjAuNzYgdmFsaWRhdG9yIGNvbnRyYWN0OiByZXR1cm5pbmcgYSBzdHJpbmcgb3JcbiAqIGBmYWxzZWAgdXNlZCB0byBGQUlMIHRoZSBydWxlIOKAlCB1bmRlciB0aGUgYChydWxlLCB2YWx1ZSlgIGNvbnRyYWN0IHJldHVyblxuICogdmFsdWVzIGFyZSBpZ25vcmVkIGFuZCBvbmx5IHRocm93L3JlamVjdCBmYWlscy4gU3VjaCBhIHJldHVybiBpcyBhbG1vc3RcbiAqIGNlcnRhaW5seSBhIGxlZ2FjeSB2YWxpZGF0b3Igc2lsZW50bHkgcGFzc2luZywgc28gaXQgd2FybnMgb25jZS5cbiAqL1xuZnVuY3Rpb24gd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpIHtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycgJiYgcmVzdWx0ICE9PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRldldhcm5PbmNlKGB2YWxpZGF0b3ItcmV0dXJuOiR7bmFtZX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBhIGN1c3RvbSB2YWxpZGF0b3IgcmV0dXJuZWQgJHt0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/ICdhIHN0cmluZycgOiAnZmFsc2UnfSDigJQgcmV0dXJuIHZhbHVlcyBhcmUgSUdOT1JFRDsgdmFsaWRhdG9ycyBmYWlsIGJ5IHRocm93aW5nIG9yIHJlamVjdGluZyAoYSB0aHJvd24gRXJyb3IncyBtZXNzYWdlIGJlY29tZXMgdGhlIGZpZWxkIGVycm9yKS5gKTtcbn1cbi8qKiBSdW4gYSBydWxlJ3MgdHJhbnNmb3JtLCBjb250YWluaW5nIHRocm93cyBhcyBhIHJ1bGUgZmFpbHVyZS4gKi9cbmZ1bmN0aW9uIGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBydWxlLnRyYW5zZm9ybSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByYXdWYWx1ZSB9O1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcnVsZS50cmFuc2Zvcm0ocmF3VmFsdWUpIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBmYWlsdXJlOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSB9O1xuICAgIH1cbn1cbi8qKlxuICogRmxhdHRlbiBhIHJ1bGUncyBkZWVwIHNvdXJjZXMgKGBmaWVsZHNgIHBlciBrZXksIHRoZW4gYGRlZmF1bHRGaWVsZGAgcGVyXG4gKiBtZW1iZXIpIGludG8gW3N1YlJ1bGUsIG1lbWJlclZhbHVlLCBtZW1iZXJOYW1lXSB0dXBsZXMg4oCUIHRoZSBzaW5nbGUgcGxhY2VcbiAqIHRoYXQga25vd3MgaG93IGRlZXAgcnVsZXMgbWFwIG9udG8gYSBjb250YWluZXIgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGRlZXBSdWxlRW50cmllcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICBpZiAocnVsZS5maWVsZHMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdmFsdWU7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgc3ViUnVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHJ1bGUuZmllbGRzKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHN1YlJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgc291cmNlW2tleV0sIGAke25hbWV9LiR7a2V5fWBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS5kZWZhdWx0RmllbGQpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBtZW1iZXJdIG9mIGRlZXBNZW1iZXJzKHZhbHVlKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHJ1bGUuZGVmYXVsdEZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgbWVtYmVyLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG59XG4vKipcbiAqIE1lcmdlIGEgc3ViLXJ1bGUncyBvdXRjb21lIGludG8gdGhlIHBhcmVudCdzIGNoYW5uZWxzLiBBIHN1Yi1ydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgY29udHJpYnV0ZXMgaXRzIGZhaWx1cmUgYXMgYSBXQVJOSU5HOyBvdGhlcndpc2UgaXRzIGVycm9yXG4gKiBibG9ja3MuIFJldHVybnMgdHJ1ZSB3aGVuIGEgYmxvY2tpbmcgZXJyb3IgbGFuZGVkIChzdG9wIHdhbGtpbmcpLlxuICovXG5mdW5jdGlvbiBtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHN1Yikge1xuICAgIGlmIChzdWIud2FybmluZyAhPT0gbnVsbCAmJiBhY2Mud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIud2FybmluZztcbiAgICBpZiAoc3ViLmVycm9yICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChzdWJSdWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgICAgICBpZiAoYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhY2MuZXJyb3IgPSBzdWIuZXJyb3I7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIEZvbGQgb25lIHJ1bGUncyBvdXRjb21lIGludG8gdGhlIHJ1bi1sZXZlbCBjaGFubmVscy4gQSBydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgZG93bmdyYWRlcyBldmVyeXRoaW5nIGl0IHByb2R1Y2VkIChvd24gY2hlY2tzIEFORCBkZWVwXG4gKiBzdWItcnVsZXMpIHRvIGEgd2FybmluZy4gUmV0dXJucyB0aGUgYmxvY2tpbmcgZXJyb3IgdG8gc3VyZmFjZSwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZm9sZFJ1bGVSZXN1bHQocnVsZSwgcmVzdWx0LCBzdGF0ZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAocnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKF9hID0gcmVzdWx0LmVycm9yKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiByZXN1bHQud2FybmluZztcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IG51bGwgJiYgc3RhdGUud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgICAgIHN0YXRlLndhcm5pbmcgPSBjb250ZW50O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC53YXJuaW5nICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIHN0YXRlLndhcm5pbmcgPSByZXN1bHQud2FybmluZztcbiAgICByZXR1cm4gcmVzdWx0LmVycm9yO1xufVxuLyoqIEV2YWx1YXRlIE9ORSBydWxlICh0cmFuc2Zvcm0g4oaSIGJ1aWx0aW4gY2hlY2tzIOKGkiB2YWxpZGF0b3Ig4oaSIGRlZXAgcnVsZXMpOyBjdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZC4gKi9cbmZ1bmN0aW9uIGV2YWxSdWxlQXN5bmMocnVsZSwgcmF3VmFsdWUsIG5hbWUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwcmVwID0gYXBwbHlUcmFuc2Zvcm0ocnVsZSwgcmF3VmFsdWUpO1xuICAgICAgICBpZiAoIXByZXAub2spXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogcHJlcC5mYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJlcC52YWx1ZTtcbiAgICAgICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoeWllbGQgcnVsZS52YWxpZGF0b3IocnVsZSwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICB3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuKG5hbWUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZSA9IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgaWYgKChydWxlLmZpZWxkcyB8fCBydWxlLmRlZmF1bHRGaWVsZCkgJiYgIWlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIERlZXAgcnVsZXMgbmVlZCBhIGNvbnRhaW5lcjsgYSBub24tZW1wdHkgcHJpbWl0aXZlIGZhaWxzIHRoZSBQQVJFTlRcbiAgICAgICAgICAgIC8vIChjbGVhciBhdHRyaWJ1dGlvbikgaW5zdGVhZCBvZiBwcm9kdWNpbmcgY29uZnVzaW5nIGNoaWxkIGVycm9ycy5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheWAsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjYyA9IHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3N1YlJ1bGUsIHN1YlZhbHVlLCBzdWJOYW1lXSBvZiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lcmdlU3ViUmVzdWx0KGFjYywgc3ViUnVsZSwgeWllbGQgZXZhbFJ1bGVBc3luYyhzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZSkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBBU1M7XG4gICAgfSk7XG59XG4vKipcbiAqIFJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZCAoc3luYyBvciBhc3luYyk6IHJlc29sdmluZyBwYXNzZXMsXG4gKiByZWplY3RpbmcvdGhyb3dpbmcgZmFpbHMuIFJldHVybiB2YWx1ZXMgYXJlIGlnbm9yZWQuXG4gKlxuICogVGhlIHBlci1ydWxlIHRyeS9jYXRjaCBpcyB0aGUgdG90YWxpdHkgY2hva2UgcG9pbnQ6IE5PIGlucHV0IOKAlCBpbmNsdWRpbmdcbiAqIGV4b3RpYyB2YWx1ZXMgdGhhdCBicmVhayBhIGJ1aWx0aW4gY2hlY2sg4oCUIG1heSBlc2NhcGUgYXMgYSB0aHJvdzsgZXZlcnlcbiAqIGZhaWx1cmUgc3VyZmFjZXMgdGhyb3VnaCB0aGUgZXJyb3Ivd2FybmluZyBjaGFubmVscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzQXN5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMsIGluc3RhbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGV2YWxSdWxlQXN5bmMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHsgZXJyb3I6IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IHN0YXRlLndhcm5pbmcgfTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
591
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMudHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyJdLCJuYW1lcyI6WyJfcGF0aFV0aWxzIiwicmVxdWlyZSIsIl9kZXZXYXJuaW5nIiwiX3JlZ2VuZXJhdG9yIiwiZSIsInQiLCJyIiwiU3ltYm9sIiwibiIsIml0ZXJhdG9yIiwibyIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJwcm90b3R5cGUiLCJHZW5lcmF0b3IiLCJ1IiwiT2JqZWN0IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJiaW5kIiwibGVuZ3RoIiwibCIsIlR5cGVFcnJvciIsImNhbGwiLCJkb25lIiwidmFsdWUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsInMiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsInJlamVjdGVkIiwicmVzdWx0IiwidGhlbiIsImFwcGx5IiwiaXNFbXB0eVZhbHVlIiwidW5kZWZpbmVkIiwiY29lcmNlRmFpbHVyZVJlYXNvbiIsInJlYXNvbiIsIkVycm9yIiwibWVzc2FnZSIsInJlc29sdmVGYWlsdXJlTWVzc2FnZSIsInJ1bGUiLCJfYSIsInJlc29sdmVSdWxlcyIsInJ1bGVzIiwidmFsdWVzIiwiaW5zdGFuY2UiLCJzb21lIiwiY3R4IiwiYXNzaWduIiwiZ2V0RmllbGRWYWx1ZSIsInJlc29sdmVWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwibWFwIiwiZXJyIiwidmFsaWRhdG9yIiwibm9ybWFsaXplVHJpZ2dlcnMiLCJpdGVtVHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZWZmZWN0aXZlIiwiZmlsdGVyUnVsZXNCeVRyaWdnZXIiLCJ0cmlnZ2VyIiwiYWN0aXZlVHJpZ2dlcnMiLCJmaWVsZE5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwicnVsZVRyaWdnZXJzIiwibWF0Y2hlcyIsImRldldhcm5PbmNlIiwiY29uY2F0Iiwiam9pbiIsIlRZUEVfQ0hFQ0tTIiwic3RyaW5nIiwibnVtYmVyIiwiTnVtYmVyIiwiaXNOYU4iLCJib29sZWFuIiwibWV0aG9kIiwiaW50ZWdlciIsImlzSW50ZWdlciIsImZsb2F0IiwiYXJyYXkiLCJvYmplY3QiLCJfdHlwZW9mMiIsImRhdGUiLCJEYXRlIiwiZ2V0VGltZSIsInJlZ2V4cCIsIlJlZ0V4cCIsImhleCIsImVtYWlsIiwidXJsIiwiVVJMIiwidHlwZUZhaWx1cmVNZXNzYWdlIiwidHlwZSIsIm1lYXN1cmVWYWx1ZSIsIm1lYXN1cmVkIiwidW5pdCIsImNoZWNrQnVpbHRpblJ1bGVzIiwicmVxdWlyZWQiLCJ3aGl0ZXNwYWNlIiwidHJpbSIsImxlbiIsIm1pbiIsIm1heCIsInBhdHRlcm4iLCJnbG9iYWwiLCJzdGlja3kiLCJsYXN0SW5kZXgiLCJ0b1J1bGVBcnJheSIsImRlZXBNZW1iZXJzIiwibWVtYmVyIiwiaW5kZXgiLCJTdHJpbmciLCJlbnRyaWVzIiwiUEFTUyIsImVycm9yIiwid2FybmluZyIsIndhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4iLCJhcHBseVRyYW5zZm9ybSIsInJhd1ZhbHVlIiwidHJhbnNmb3JtIiwib2siLCJmYWlsdXJlIiwiZGVlcFJ1bGVFbnRyaWVzIiwiZmllbGRzIiwic291cmNlIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheTIiLCJrZXkiLCJzdWJSdWxlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwic3ViUnVsZSIsInB1c2giLCJkZWZhdWx0RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3N0ZXAyJHZhbHVlIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIm1lcmdlU3ViUmVzdWx0IiwiYWNjIiwic3ViIiwid2FybmluZ09ubHkiLCJmb2xkUnVsZVJlc3VsdCIsInN0YXRlIiwiY29udGVudCIsImV2YWxSdWxlQXN5bmMiLCJfY2FsbGVlIiwicHJlcCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl9jb250ZXh0IiwicnVuUnVsZXNBc3luYyIsIl9jYWxsZWUyIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl90NiIsIl90NyIsIl9jb250ZXh0MiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUEyQyxTQUFBRSxhQUFBLElDRDNDLHVLQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENB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QUFFLFNBQUEsQ0FBQWhNLENBQUE7VUFFTm1ELE1BQU0sR0FBRztZQUFFdUYsS0FBSyxFQUFFOUUscUJBQXFCLENBQUFrSSxHQUFBLEVBQU1qSSxJQUFJLENBQUM7WUFBRThFLE9BQU8sRUFBRTtVQUFJLENBQUU7UUFBQztVQUVoRUQsS0FBSyxHQUFHK0IsY0FBYyxDQUFDNUcsSUFBSSxFQUFFVixNQUFNLEVBQUV1SCxLQUFLLENBQUM7VUFBQSxNQUM3Q2hDLEtBQUssS0FBSyxJQUFJO1lBQUFzRCxTQUFBLENBQUFoTixDQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFnTixTQUFBLENBQUEvTCxDQUFBLElBQVM7WUFBRXlJLEtBQUssRUFBTEEsS0FBSztZQUFFQyxPQUFPLEVBQUUrQixLQUFLLENBQUMvQjtVQUFPLENBQUU7UUFBQTtVQUFBcUQsU0FBQSxDQUFBaE4sQ0FBQTtVQUFBO1FBQUE7VUFBQWdOLFNBQUEsQ0FBQWhOLENBQUE7VUFBQTtRQUFBO1VBQUFnTixTQUFBLENBQUFuTSxDQUFBO1VBQUFrTSxHQUFBLEdBQUFDLFNBQUEsQ0FBQWhNLENBQUE7VUFBQTRMLFVBQUEsQ0FBQWhOLENBQUEsQ0FBQW1OLEdBQUE7UUFBQTtVQUFBQyxTQUFBLENBQUFuTSxDQUFBO1VBQUErTCxVQUFBLENBQUFoTSxDQUFBO1VBQUEsT0FBQW9NLFNBQUEsQ0FBQXBNLENBQUE7UUFBQTtVQUFBLE9BQUFvTSxTQUFBLENBQUEvTCxDQUFBLElBRXZEO1lBQUV5SSxLQUFLLEVBQUUsSUFBSTtZQUFFQyxPQUFPLEVBQUUrQixLQUFLLENBQUMvQjtVQUFPLENBQUU7TUFBQTtJQUFBLEdBQUFnRCxRQUFBO0VBQUEsQ0FDL0MsRUFBQTtBQzFERCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBkZXZXYXJuT25jZSB9IGZyb20gJy4vZGV2V2FybmluZyc7XG4vKiogRW1wdHkgZm9yIGByZXF1aXJlZGA6IHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5LiAqL1xuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSk7XG59XG4vKipcbiAqIENvZXJjZSBhIHRocm93bi9yZWplY3RlZCByZWFzb24gaW50byBkaXNwbGF5YWJsZSBmYWlsdXJlIGNvbnRlbnQ6XG4gKiBhIG5vbi1lbXB0eSBFcnJvci5tZXNzYWdlIG9yIGEgbm9uLWVtcHR5IHBsYWluIHN0cmluZyDigJQgb3RoZXJ3aXNlIG51bGxcbiAqIChjYWxsZXIgcGlja3MgaXRzIGZhbGxiYWNrKS4gU2hhcmVkIHdpdGggdGhlIGZvcm0tbGV2ZWwgbGFzdC1yZXNvcnQgbmV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUZhaWx1cmVSZWFzb24ocmVhc29uKSB7XG4gICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yICYmIHJlYXNvbi5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gcmVhc29uLm1lc3NhZ2U7XG4gICAgaWYgKHR5cGVvZiByZWFzb24gPT09ICdzdHJpbmcnICYmIHJlYXNvbilcbiAgICAgICAgcmV0dXJuIHJlYXNvbjtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRmFpbHVyZSBtZXNzYWdlIGZvciBhIHJlamVjdGVkL3Rocm93biBjdXN0b20gdmFsaWRhdG9yOlxuICogRXJyb3IubWVzc2FnZSDihpIgcGxhaW4gc3RyaW5nIHJlYXNvbiDihpIgcnVsZS5tZXNzYWdlIOKGkiBnZW5lcmljIGZhbGxiYWNrLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UocmVhc29uLCBydWxlKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiAoX2EgPSBjb2VyY2VGYWlsdXJlUmVhc29uKHJlYXNvbikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChydWxlLm1lc3NhZ2UgfHwgJ1ZhbGlkYXRpb24gZmFpbGVkJyk7XG59XG4vKipcbiAqIFJlc29sdmUgZnVuY3Rpb24tZm9ybSBydWxlcyBpbnRvIHN0YXRpYyBydWxlcy4gVGhlXG4gKiBjb250ZXh0IGV4cG9zZXMgdGhlIHZhbHVlIHNuYXBzaG90IHRoZSBydW4gd2FzIGludm9rZWQgd2l0aDsgZnVuY3Rpb24gcnVsZXNcbiAqIG11c3QgYmUgY2hlYXAgYW5kIHNpZGUtZWZmZWN0IGZyZWUg4oCUIHRoZXkgbWF5IGJlIHJlc29sdmVkIG1vcmUgdGhhbiBvbmNlXG4gKiBwZXIgdmFsaWRhdGlvbiBwYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGluc3RhbmNlKSB7XG4gICAgLy8gRmFzdCBwYXRoOiBubyBmdW5jdGlvbiBydWxlcyDihpIgbm90aGluZyB0byByZXNvbHZlLCBubyBjdHggYWxsb2NhdGlvbi5cbiAgICAvLyBUaGlzIGFsc28gbWFrZXMgdGhlIGVuZ2luZS1pbnRlcm5hbCByZS1yZXNvbHV0aW9uIG9mIGFscmVhZHktcmVzb2x2ZWRcbiAgICAvLyBhcnJheXMgZnJlZS5cbiAgICBpZiAoIXJ1bGVzLnNvbWUoKHJ1bGUpID0+IHR5cGVvZiBydWxlID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgfVxuICAgIC8vIExpdmUtaW5zdGFuY2UgbWVtYmVycyAoc2V0RmllbGRzVmFsdWUsIGdldEZpZWxkRXJyb3IsIOKApikgYXJlIHNwcmVhZCBpblxuICAgIC8vIHdoZW4gYXZhaWxhYmxlOyB0aGUgcmVhZHMgYWx3YXlzIGNvbWUgZnJvbSB0aGUgdmFsaWRhdGlvbi10aW1lIHNuYXBzaG90LlxuICAgIGNvbnN0IGN0eCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5zdGFuY2UpLCB7IGdldEZpZWxkVmFsdWU6IChuYW1lKSA9PiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSwgZ2V0RmllbGRzVmFsdWU6ICgpID0+IHZhbHVlcyB9KTtcbiAgICByZXR1cm4gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcnVsZSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybiBydWxlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBBIHRocm93aW5nIHJ1bGUgZmFjdG9yeSBtdXN0IG5vdCBjcmFzaCByZW5kZXJpbmcgb3IgdmFsaWRhdGlvbiDigJRcbiAgICAgICAgICAgIC8vIHN1cmZhY2UgaXQgYXMgYSBydWxlIHRoYXQgYWx3YXlzIGZhaWxzIHdpdGggdGhlIHRocm93biByZWFzb24uXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogTm9ybWFsaXplIGEgZm9ybS9pdGVtLWxldmVsIHZhbGlkYXRlVHJpZ2dlciBjb25maWcgaW50byB0aGUgZWZmZWN0aXZlXG4gKiBpbnRlcmFjdGl2ZSBldmVudCBsaXN0OiBpdGVtLWxldmVsICh3aGVuIHByZXNlbnQpIG92ZXJyaWRlcyBmb3JtLWxldmVsO1xuICogYGZhbHNlYCBkaXNhYmxlcyBpbnRlcmFjdGl2ZSB2YWxpZGF0aW9uIGVudGlyZWx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHJpZ2dlcnMoaXRlbVRyaWdnZXIsIGZvcm1UcmlnZ2VyKSB7XG4gICAgY29uc3QgZWZmZWN0aXZlID0gaXRlbVRyaWdnZXIgPT09IHVuZGVmaW5lZCA/IGZvcm1UcmlnZ2VyIDogaXRlbVRyaWdnZXI7XG4gICAgaWYgKGVmZmVjdGl2ZSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlZmZlY3RpdmUpID8gZWZmZWN0aXZlIDogW2VmZmVjdGl2ZV07XG59XG4vKipcbiAqIEZpbHRlciBydWxlcyBhcHBsaWNhYmxlIHRvIGFuIGludGVyYWN0aXZlIGV2ZW50OiB0aGUgZXZlbnRcbiAqIHZhbGlkYXRlcyBvbmx5IHdoZW4gaXQgaXMgaW4gdGhlIGl0ZW0ncyBlZmZlY3RpdmUgdHJpZ2dlciBzZXQuIFdpdGhpbiB0aGVcbiAqIHNldCwgYSBydWxlIFdJVEhPVVQgYHZhbGlkYXRlVHJpZ2dlcmAgcnVucyBvbiBldmVyeSBldmVudDsgYSBydWxlIFdJVEggb25lXG4gKiBydW5zIG9ubHkgb24gbWF0Y2hpbmcgZXZlbnRzIOKAlCBzbyBhIHJ1bGUgdHJpZ2dlciBvdXRzaWRlIHRoZSBpdGVtJ3Mgc2V0XG4gKiBuZXZlciBmaXJlcyBpbnRlcmFjdGl2ZWx5LiBTdWJtaXQtdGltZSB2YWxpZGF0aW9uIGJ5cGFzc2VzIHRoaXMgZmlsdGVyIGFuZFxuICogcnVucyBldmVyeSBydWxlLlxuICpcbiAqIERldiBndWFyZDogYSBydWxlIHdob3NlIChub24tZW1wdHkpIHRyaWdnZXIgc2V0IGlzIGZ1bGx5IE9VVFNJREUgdGhlXG4gKiBhY3RpdmUgc2V0IGNhbiBuZXZlciBmaXJlIGludGVyYWN0aXZlbHkg4oCUIHVzdWFsbHkgYSBsZWZ0b3ZlciBvZiB0aGVcbiAqIHByZS0wLjAuNzYgb3ZlcnJpZGUgc2VtYW50aWNzLCBzbyBpdCB3YXJucyBvbmNlLiBgdmFsaWRhdGVUcmlnZ2VyOiBbXWBcbiAqIGlzIHRoZSBkZWxpYmVyYXRlIHN1Ym1pdC1vbmx5IGlkaW9tIGFuZCBzdGF5cyBzaWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJSdWxlc0J5VHJpZ2dlcihydWxlcywgdHJpZ2dlciwgYWN0aXZlVHJpZ2dlcnMsIGZpZWxkTmFtZSkge1xuICAgIGlmICghYWN0aXZlVHJpZ2dlcnMuaW5jbHVkZXModHJpZ2dlcikpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gcnVsZXMuZmlsdGVyKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VyID0gcnVsZS52YWxpZGF0ZVRyaWdnZXI7XG4gICAgICAgIGlmIChydWxlVHJpZ2dlciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IHJ1bGVUcmlnZ2VycyA9IEFycmF5LmlzQXJyYXkocnVsZVRyaWdnZXIpID8gcnVsZVRyaWdnZXIgOiBbcnVsZVRyaWdnZXJdO1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gcnVsZVRyaWdnZXJzLmluY2x1ZGVzKHRyaWdnZXIpO1xuICAgICAgICBpZiAoIW1hdGNoZXMgJiZcbiAgICAgICAgICAgIHJ1bGVUcmlnZ2Vycy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhcnVsZVRyaWdnZXJzLnNvbWUoKHQpID0+IGFjdGl2ZVRyaWdnZXJzLmluY2x1ZGVzKHQpKSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpZWxkTmFtZSAhPT0gbnVsbCAmJiBmaWVsZE5hbWUgIT09IHZvaWQgMCA/IGZpZWxkTmFtZSA6ICcoYW55KSc7XG4gICAgICAgICAgICBkZXZXYXJuT25jZShgdHJpZ2dlcjoke25hbWV9OiR7cnVsZVRyaWdnZXJzLmpvaW4oJywnKX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBydWxlIHZhbGlkYXRlVHJpZ2dlciBbJHtydWxlVHJpZ2dlcnMuam9pbignLCAnKX1dIGlzIG91dHNpZGUgdGhpcyBmaWVsZCdzIGFjdGl2ZSB0cmlnZ2VyIHNldCBbJHthY3RpdmVUcmlnZ2Vycy5qb2luKCcsICcpfV0g4oCUIHRoZSBydWxlIHdpbGwgb25seSBydW4gb24gc3VibWl0LiBJbmNsdWRlIGl0IGluIHRoZSBpdGVtL2Zvcm0gdmFsaWRhdGVUcmlnZ2VyIHRvIHJ1biBpdCBpbnRlcmFjdGl2ZWx5LmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH0pO1xufVxuLyoqIEJ1aWx0LWluIGB0eXBlYCBjaGVja3MuIGBlbnVtYCBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgYWdhaW5zdCBgcnVsZS5lbnVtYC4gKi9cbmNvbnN0IFRZUEVfQ0hFQ0tTID0ge1xuICAgIHN0cmluZzogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyxcbiAgICBudW1iZXI6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSxcbiAgICBib29sZWFuOiAodikgPT4gdHlwZW9mIHYgPT09ICdib29sZWFuJyxcbiAgICBtZXRob2Q6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBpbnRlZ2VyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIodiksXG4gICAgZmxvYXQ6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2KSAmJiAhTnVtYmVyLmlzSW50ZWdlcih2KSxcbiAgICBhcnJheTogKHYpID0+IEFycmF5LmlzQXJyYXkodiksXG4gICAgb2JqZWN0OiAodikgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmIHYgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodiksXG4gICAgZGF0ZTogKHYpID0+IHYgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgID8gIU51bWJlci5pc05hTih2LmdldFRpbWUoKSlcbiAgICAgICAgOiB0eXBlb2YgKHYgPT09IG51bGwgfHwgdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdi5nZXRUaW1lKSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgIU51bWJlci5pc05hTih2LmdldFRpbWUoKSksXG4gICAgcmVnZXhwOiAodikgPT4ge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFJlZ0V4cCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBoZXg6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2kudGVzdCh2KSxcbiAgICAvLyBTdHJpbmctb25seTogY29lcmNpbmcgdmlhIFN0cmluZygpIHdvdWxkIGxldCBlLmcuIFsnYUBiLmNvJ10gc3RyaW5naWZ5XG4gICAgLy8gaW50byBhIHBhc3NpbmcgdmFsdWUuXG4gICAgZW1haWw6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh2KSxcbiAgICB1cmw6ICh2KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgVVJMKHYpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxufTtcbi8qKiBGcmllbmRseSBnZW5lcmF0ZWQgbWVzc2FnZXMgZm9yIHRoZSBsZWdhY3kgdHlwZSBuYW1lczsgb3RoZXJzIGdldCBhIGdlbmVyaWMgb25lLiAqL1xuZnVuY3Rpb24gdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICBpZiAodHlwZSA9PT0gJ2VtYWlsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBlbWFpbGA7XG4gICAgaWYgKHR5cGUgPT09ICd1cmwnKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFVSTGA7XG4gICAgcmV0dXJuIGAke25hbWV9IGlzIG5vdCBhIHZhbGlkICR7dHlwZX1gO1xufVxuLyoqIE1lYXN1cmUgYSB2YWx1ZSBmb3IgbGVuL21pbi9tYXg6IHN0cmluZyDihpIgbGVuZ3RoLCBhcnJheSDihpIgY291bnQsIG51bWJlciDihpIgdmFsdWUuICovXG5mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBjaGFyYWN0ZXJzJyB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLmxlbmd0aCwgdW5pdDogJyBpdGVtcycgfTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHsgbWVhc3VyZWQ6IHZhbHVlLCB1bml0OiAnJyB9O1xuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBldmVyeSBidWlsdC1pbiAobm9uLWB2YWxpZGF0b3JgKSBydWxlIGtpbmQgZm9yIGEgc2luZ2xlIHJ1bGUuXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBjb250ZW50IGZvciB0aGUgZmlyc3QgZmFpbGluZyBjaGVjaywgb3IgbnVsbC5cbiAqXG4gKiBFbXB0eSB2YWx1ZXMgKHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5KSBhcmUgb25seSBjaGVja2VkIGJ5XG4gKiBgcmVxdWlyZWRgIOKAlCBldmVyeSBvdGhlciBidWlsdGluIGNoZWNrIGlzIHNraXBwZWQsIHNvIG9wdGlvbmFsIGZpZWxkc1xuICogZG9uJ3QgZXJyb3IgdW50aWwgdGhleSBoYXZlIGNvbnRlbnQuIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBOT1Qgc3ViamVjdCB0b1xuICogdGhpcyBza2lwICh0aGV5IHJlY2VpdmUgdGhlIGVtcHR5IHZhbHVlIGFuZCBkZWNpZGUgdGhlbXNlbHZlcykuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICB9XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIC8vIE5vbi1lbXB0eSBzdHJpbmcgb2Ygb25seSB3aGl0ZXNwYWNlICh0aGUgcmVxdWlyZWQrd2hpdGVzcGFjZSB0cmltIGlkaW9tKS5cbiAgICBpZiAocnVsZS53aGl0ZXNwYWNlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGNhbm5vdCBiZSBibGFua2A7XG4gICAgfVxuICAgIC8vIGxlbjogZXhhY3QgbGVuZ3RoL2NvdW50L3ZhbHVlIOKAlCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbWluL21heC5cbiAgICBpZiAocnVsZS5sZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBtID0gbWVhc3VyZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKG0gIT09IG51bGwgJiYgbS5tZWFzdXJlZCAhPT0gcnVsZS5sZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBleGFjdGx5ICR7cnVsZS5sZW59JHttLnVuaXR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkIHx8IHJ1bGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCAmJiBtLm1lYXN1cmVkIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSR7bS51bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEEgL2cgb3IgL3kgcmVnZXggaXMgc3RhdGVmdWw6IGxhc3RJbmRleCBwZXJzaXN0cyBhY3Jvc3MgLnRlc3QoKSBjYWxscyxcbiAgICAgICAgLy8gc28gcmVwZWF0ZWQgcnVucyB3b3VsZCBhbHRlcm5hdGUgcGFzcy9mYWlsIOKAlCByZXNldCBpdCBldmVyeSBydW4uXG4gICAgICAgIGlmIChydWxlLnBhdHRlcm4uZ2xvYmFsIHx8IHJ1bGUucGF0dGVybi5zdGlja3kpXG4gICAgICAgICAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgJiYgcnVsZS50eXBlICE9PSAnZW51bScgJiYgIVRZUEVfQ0hFQ0tTW3J1bGUudHlwZV0odmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgdHlwZUZhaWx1cmVNZXNzYWdlKG5hbWUsIHJ1bGUudHlwZSk7XG4gICAgfVxuICAgIC8vIGVudW0gbWVtYmVyc2hpcDogYXBwbGllcyBmb3IgdHlwZSAnZW51bScgb3Igd2hlbmV2ZXIgcnVsZS5lbnVtIGlzIHByZXNlbnQuXG4gICAgaWYgKHJ1bGUuZW51bSAmJiBBcnJheS5pc0FycmF5KHJ1bGUuZW51bSkgJiYgIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdG9SdWxlQXJyYXkocnVsZXMpIHtcbiAgICBpZiAoIXJ1bGVzKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocnVsZXMpID8gcnVsZXMgOiBbcnVsZXNdO1xufVxuLyoqIE1lbWJlcnMgZm9yIGRlZXAgcnVsZXM6IGFycmF5IOKGkiBpbmRleGVkIGVudHJpZXMsIHBsYWluIG9iamVjdCDihpIga2V5IGVudHJpZXMuICovXG5mdW5jdGlvbiBkZWVwTWVtYmVycyh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgobWVtYmVyLCBpbmRleCkgPT4gW1N0cmluZyhpbmRleCksIG1lbWJlcl0pO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICAgIHJldHVybiBbXTtcbn1cbmNvbnN0IFBBU1MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4vKipcbiAqIERldiBndWFyZCBmb3IgdGhlIHByZS0wLjAuNzYgdmFsaWRhdG9yIGNvbnRyYWN0OiByZXR1cm5pbmcgYSBzdHJpbmcgb3JcbiAqIGBmYWxzZWAgdXNlZCB0byBGQUlMIHRoZSBydWxlIOKAlCB1bmRlciB0aGUgYChydWxlLCB2YWx1ZSlgIGNvbnRyYWN0IHJldHVyblxuICogdmFsdWVzIGFyZSBpZ25vcmVkIGFuZCBvbmx5IHRocm93L3JlamVjdCBmYWlscy4gU3VjaCBhIHJldHVybiBpcyBhbG1vc3RcbiAqIGNlcnRhaW5seSBhIGxlZ2FjeSB2YWxpZGF0b3Igc2lsZW50bHkgcGFzc2luZywgc28gaXQgd2FybnMgb25jZS5cbiAqL1xuZnVuY3Rpb24gd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpIHtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3N0cmluZycgJiYgcmVzdWx0ICE9PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGRldldhcm5PbmNlKGB2YWxpZGF0b3ItcmV0dXJuOiR7bmFtZX1gLCBgW1Byb0Zvcm1dIEZpZWxkIFwiJHtuYW1lfVwiOiBhIGN1c3RvbSB2YWxpZGF0b3IgcmV0dXJuZWQgJHt0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/ICdhIHN0cmluZycgOiAnZmFsc2UnfSDigJQgcmV0dXJuIHZhbHVlcyBhcmUgSUdOT1JFRDsgdmFsaWRhdG9ycyBmYWlsIGJ5IHRocm93aW5nIG9yIHJlamVjdGluZyAoYSB0aHJvd24gRXJyb3IncyBtZXNzYWdlIGJlY29tZXMgdGhlIGZpZWxkIGVycm9yKS5gKTtcbn1cbi8qKiBSdW4gYSBydWxlJ3MgdHJhbnNmb3JtLCBjb250YWluaW5nIHRocm93cyBhcyBhIHJ1bGUgZmFpbHVyZS4gKi9cbmZ1bmN0aW9uIGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBydWxlLnRyYW5zZm9ybSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByYXdWYWx1ZSB9O1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcnVsZS50cmFuc2Zvcm0ocmF3VmFsdWUpIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBmYWlsdXJlOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSB9O1xuICAgIH1cbn1cbi8qKlxuICogRmxhdHRlbiBhIHJ1bGUncyBkZWVwIHNvdXJjZXMgKGBmaWVsZHNgIHBlciBrZXksIHRoZW4gYGRlZmF1bHRGaWVsZGAgcGVyXG4gKiBtZW1iZXIpIGludG8gW3N1YlJ1bGUsIG1lbWJlclZhbHVlLCBtZW1iZXJOYW1lXSB0dXBsZXMg4oCUIHRoZSBzaW5nbGUgcGxhY2VcbiAqIHRoYXQga25vd3MgaG93IGRlZXAgcnVsZXMgbWFwIG9udG8gYSBjb250YWluZXIgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGRlZXBSdWxlRW50cmllcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICBpZiAocnVsZS5maWVsZHMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdmFsdWU7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgc3ViUnVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKHJ1bGUuZmllbGRzKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHN1YlJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgc291cmNlW2tleV0sIGAke25hbWV9LiR7a2V5fWBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS5kZWZhdWx0RmllbGQpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBtZW1iZXJdIG9mIGRlZXBNZW1iZXJzKHZhbHVlKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWJSdWxlIG9mIHRvUnVsZUFycmF5KHJ1bGUuZGVmYXVsdEZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChbc3ViUnVsZSwgbWVtYmVyLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJpZXM7XG59XG4vKipcbiAqIE1lcmdlIGEgc3ViLXJ1bGUncyBvdXRjb21lIGludG8gdGhlIHBhcmVudCdzIGNoYW5uZWxzLiBBIHN1Yi1ydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgY29udHJpYnV0ZXMgaXRzIGZhaWx1cmUgYXMgYSBXQVJOSU5HOyBvdGhlcndpc2UgaXRzIGVycm9yXG4gKiBibG9ja3MuIFJldHVybnMgdHJ1ZSB3aGVuIGEgYmxvY2tpbmcgZXJyb3IgbGFuZGVkIChzdG9wIHdhbGtpbmcpLlxuICovXG5mdW5jdGlvbiBtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHN1Yikge1xuICAgIGlmIChzdWIud2FybmluZyAhPT0gbnVsbCAmJiBhY2Mud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIud2FybmluZztcbiAgICBpZiAoc3ViLmVycm9yICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChzdWJSdWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgICAgICBpZiAoYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgYWNjLndhcm5pbmcgPSBzdWIuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhY2MuZXJyb3IgPSBzdWIuZXJyb3I7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIEZvbGQgb25lIHJ1bGUncyBvdXRjb21lIGludG8gdGhlIHJ1bi1sZXZlbCBjaGFubmVscy4gQSBydWxlIGZsYWdnZWRcbiAqIGB3YXJuaW5nT25seWAgZG93bmdyYWRlcyBldmVyeXRoaW5nIGl0IHByb2R1Y2VkIChvd24gY2hlY2tzIEFORCBkZWVwXG4gKiBzdWItcnVsZXMpIHRvIGEgd2FybmluZy4gUmV0dXJucyB0aGUgYmxvY2tpbmcgZXJyb3IgdG8gc3VyZmFjZSwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZm9sZFJ1bGVSZXN1bHQocnVsZSwgcmVzdWx0LCBzdGF0ZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAocnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKF9hID0gcmVzdWx0LmVycm9yKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiByZXN1bHQud2FybmluZztcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09IG51bGwgJiYgc3RhdGUud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgICAgIHN0YXRlLndhcm5pbmcgPSBjb250ZW50O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC53YXJuaW5nICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIHN0YXRlLndhcm5pbmcgPSByZXN1bHQud2FybmluZztcbiAgICByZXR1cm4gcmVzdWx0LmVycm9yO1xufVxuLyoqIEV2YWx1YXRlIE9ORSBydWxlICh0cmFuc2Zvcm0g4oaSIGJ1aWx0aW4gY2hlY2tzIOKGkiB2YWxpZGF0b3Ig4oaSIGRlZXAgcnVsZXMpOyBjdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZC4gKi9cbmZ1bmN0aW9uIGV2YWxSdWxlQXN5bmMocnVsZSwgcmF3VmFsdWUsIG5hbWUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBwcmVwID0gYXBwbHlUcmFuc2Zvcm0ocnVsZSwgcmF3VmFsdWUpO1xuICAgICAgICBpZiAoIXByZXAub2spXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogcHJlcC5mYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJlcC52YWx1ZTtcbiAgICAgICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSAoeWllbGQgcnVsZS52YWxpZGF0b3IocnVsZSwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICB3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuKG5hbWUsIHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZSA9IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgaWYgKChydWxlLmZpZWxkcyB8fCBydWxlLmRlZmF1bHRGaWVsZCkgJiYgIWlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIERlZXAgcnVsZXMgbmVlZCBhIGNvbnRhaW5lcjsgYSBub24tZW1wdHkgcHJpbWl0aXZlIGZhaWxzIHRoZSBQQVJFTlRcbiAgICAgICAgICAgIC8vIChjbGVhciBhdHRyaWJ1dGlvbikgaW5zdGVhZCBvZiBwcm9kdWNpbmcgY29uZnVzaW5nIGNoaWxkIGVycm9ycy5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGFuIG9iamVjdCBvciBhbiBhcnJheWAsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjYyA9IHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3N1YlJ1bGUsIHN1YlZhbHVlLCBzdWJOYW1lXSBvZiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lcmdlU3ViUmVzdWx0KGFjYywgc3ViUnVsZSwgeWllbGQgZXZhbFJ1bGVBc3luYyhzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZSkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFBBU1M7XG4gICAgfSk7XG59XG4vKipcbiAqIFJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgYXdhaXRlZCAoc3luYyBvciBhc3luYyk6IHJlc29sdmluZyBwYXNzZXMsXG4gKiByZWplY3RpbmcvdGhyb3dpbmcgZmFpbHMuIFJldHVybiB2YWx1ZXMgYXJlIGlnbm9yZWQuXG4gKlxuICogVGhlIHBlci1ydWxlIHRyeS9jYXRjaCBpcyB0aGUgdG90YWxpdHkgY2hva2UgcG9pbnQ6IE5PIGlucHV0IOKAlCBpbmNsdWRpbmdcbiAqIGV4b3RpYyB2YWx1ZXMgdGhhdCBicmVhayBhIGJ1aWx0aW4gY2hlY2sg4oCUIG1heSBlc2NhcGUgYXMgYSB0aHJvdzsgZXZlcnlcbiAqIGZhaWx1cmUgc3VyZmFjZXMgdGhyb3VnaCB0aGUgZXJyb3Ivd2FybmluZyBjaGFubmVscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzQXN5bmMobmFtZSwgdmFsdWUsIHZhbHVlcywgcnVsZXMsIGluc3RhbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGV2YWxSdWxlQXN5bmMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHsgZXJyb3I6IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IHN0YXRlLndhcm5pbmcgfTtcbiAgICB9KTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|