@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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
3
|
-
|
|
3
|
+
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 }; })(); }
|
|
4
|
+
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); }
|
|
4
5
|
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; } } }; }
|
|
5
6
|
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; } }
|
|
6
7
|
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; }
|
|
@@ -400,17 +401,17 @@ function foldRuleResult(rule, result, state) {
|
|
|
400
401
|
}
|
|
401
402
|
/** Evaluate ONE rule (transform → builtin checks → validator → deep rules); custom validators are awaited. */
|
|
402
403
|
function evalRuleAsync(rule, rawValue, name) {
|
|
403
|
-
return __awaiter(this, void 0, void 0, /*#__PURE__*/
|
|
404
|
+
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee() {
|
|
404
405
|
var prep, value, failure, result, acc, _iterator4, _step4, _step4$value, subRule, subValue, subName, _t, _t2, _t3, _t4, _t5;
|
|
405
|
-
return
|
|
406
|
-
while (1) switch (_context.
|
|
406
|
+
return _regenerator().w(function (_context) {
|
|
407
|
+
while (1) switch (_context.p = _context.n) {
|
|
407
408
|
case 0:
|
|
408
409
|
prep = applyTransform(rule, rawValue);
|
|
409
410
|
if (prep.ok) {
|
|
410
|
-
_context.
|
|
411
|
+
_context.n = 1;
|
|
411
412
|
break;
|
|
412
413
|
}
|
|
413
|
-
return _context.
|
|
414
|
+
return _context.a(2, {
|
|
414
415
|
error: prep.failure,
|
|
415
416
|
warning: null
|
|
416
417
|
});
|
|
@@ -418,40 +419,40 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
418
419
|
value = prep.value;
|
|
419
420
|
failure = checkBuiltinRules(rule, value, name);
|
|
420
421
|
if (!(failure === null && typeof rule.validator === 'function')) {
|
|
421
|
-
_context.
|
|
422
|
+
_context.n = 5;
|
|
422
423
|
break;
|
|
423
424
|
}
|
|
424
|
-
_context.
|
|
425
|
-
_context.
|
|
425
|
+
_context.p = 2;
|
|
426
|
+
_context.n = 3;
|
|
426
427
|
return rule.validator(rule, value);
|
|
427
428
|
case 3:
|
|
428
|
-
result = _context.
|
|
429
|
+
result = _context.v;
|
|
429
430
|
warnLegacyValidatorReturn(name, result);
|
|
430
|
-
_context.
|
|
431
|
+
_context.n = 5;
|
|
431
432
|
break;
|
|
432
433
|
case 4:
|
|
433
|
-
_context.
|
|
434
|
-
_t = _context
|
|
434
|
+
_context.p = 4;
|
|
435
|
+
_t = _context.v;
|
|
435
436
|
failure = resolveFailureMessage(_t, rule);
|
|
436
437
|
case 5:
|
|
437
438
|
if (!(failure !== null)) {
|
|
438
|
-
_context.
|
|
439
|
+
_context.n = 6;
|
|
439
440
|
break;
|
|
440
441
|
}
|
|
441
|
-
return _context.
|
|
442
|
+
return _context.a(2, {
|
|
442
443
|
error: failure,
|
|
443
444
|
warning: null
|
|
444
445
|
});
|
|
445
446
|
case 6:
|
|
446
447
|
if (!((rule.fields || rule.defaultField) && !isEmptyValue(value))) {
|
|
447
|
-
_context.
|
|
448
|
+
_context.n = 16;
|
|
448
449
|
break;
|
|
449
450
|
}
|
|
450
451
|
if (!(_typeof(value) !== 'object' || value === null)) {
|
|
451
|
-
_context.
|
|
452
|
+
_context.n = 7;
|
|
452
453
|
break;
|
|
453
454
|
}
|
|
454
|
-
return _context.
|
|
455
|
+
return _context.a(2, {
|
|
455
456
|
error: rule.message || "".concat(name, " must be an object or an array"),
|
|
456
457
|
warning: null
|
|
457
458
|
});
|
|
@@ -461,48 +462,45 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
461
462
|
warning: null
|
|
462
463
|
};
|
|
463
464
|
_iterator4 = _createForOfIteratorHelper(deepRuleEntries(rule, value, name));
|
|
464
|
-
_context.
|
|
465
|
+
_context.p = 8;
|
|
465
466
|
_iterator4.s();
|
|
466
467
|
case 9:
|
|
467
468
|
if ((_step4 = _iterator4.n()).done) {
|
|
468
|
-
_context.
|
|
469
|
+
_context.n = 12;
|
|
469
470
|
break;
|
|
470
471
|
}
|
|
471
472
|
_step4$value = _slicedToArray(_step4.value, 3), subRule = _step4$value[0], subValue = _step4$value[1], subName = _step4$value[2];
|
|
472
473
|
_t2 = mergeSubResult;
|
|
473
474
|
_t3 = acc;
|
|
474
475
|
_t4 = subRule;
|
|
475
|
-
_context.
|
|
476
|
+
_context.n = 10;
|
|
476
477
|
return evalRuleAsync(subRule, subValue, subName);
|
|
477
478
|
case 10:
|
|
478
|
-
if (!_t2(_t3, _t4, _context.
|
|
479
|
-
_context.
|
|
479
|
+
if (!_t2(_t3, _t4, _context.v)) {
|
|
480
|
+
_context.n = 11;
|
|
480
481
|
break;
|
|
481
482
|
}
|
|
482
|
-
return _context.
|
|
483
|
+
return _context.a(3, 12);
|
|
483
484
|
case 11:
|
|
484
|
-
_context.
|
|
485
|
+
_context.n = 9;
|
|
485
486
|
break;
|
|
486
487
|
case 12:
|
|
487
|
-
_context.
|
|
488
|
+
_context.n = 14;
|
|
488
489
|
break;
|
|
489
490
|
case 13:
|
|
490
|
-
_context.
|
|
491
|
-
_t5 = _context
|
|
491
|
+
_context.p = 13;
|
|
492
|
+
_t5 = _context.v;
|
|
492
493
|
_iterator4.e(_t5);
|
|
493
494
|
case 14:
|
|
494
|
-
_context.
|
|
495
|
+
_context.p = 14;
|
|
495
496
|
_iterator4.f();
|
|
496
|
-
return _context.
|
|
497
|
+
return _context.f(14);
|
|
497
498
|
case 15:
|
|
498
|
-
return _context.
|
|
499
|
+
return _context.a(2, acc);
|
|
499
500
|
case 16:
|
|
500
|
-
return _context.
|
|
501
|
-
case 17:
|
|
502
|
-
case "end":
|
|
503
|
-
return _context.stop();
|
|
501
|
+
return _context.a(2, PASS);
|
|
504
502
|
}
|
|
505
|
-
}, _callee, null, [[
|
|
503
|
+
}, _callee, null, [[8, 13, 14, 15], [2, 4]]);
|
|
506
504
|
}));
|
|
507
505
|
}
|
|
508
506
|
/**
|
|
@@ -514,34 +512,34 @@ function evalRuleAsync(rule, rawValue, name) {
|
|
|
514
512
|
* failure surfaces through the error/warning channels.
|
|
515
513
|
*/
|
|
516
514
|
export function runRulesAsync(name, value, values, rules, instance) {
|
|
517
|
-
return __awaiter(this, void 0, void 0, /*#__PURE__*/
|
|
515
|
+
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee2() {
|
|
518
516
|
var state, _iterator5, _step5, rule, result, error, _t6, _t7;
|
|
519
|
-
return
|
|
520
|
-
while (1) switch (_context2.
|
|
517
|
+
return _regenerator().w(function (_context2) {
|
|
518
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
521
519
|
case 0:
|
|
522
520
|
state = {
|
|
523
521
|
warning: null
|
|
524
522
|
};
|
|
525
523
|
_iterator5 = _createForOfIteratorHelper(resolveRules(rules, values, instance));
|
|
526
|
-
_context2.
|
|
524
|
+
_context2.p = 1;
|
|
527
525
|
_iterator5.s();
|
|
528
526
|
case 2:
|
|
529
527
|
if ((_step5 = _iterator5.n()).done) {
|
|
530
|
-
_context2.
|
|
528
|
+
_context2.n = 8;
|
|
531
529
|
break;
|
|
532
530
|
}
|
|
533
531
|
rule = _step5.value;
|
|
534
532
|
result = void 0;
|
|
535
|
-
_context2.
|
|
536
|
-
_context2.
|
|
533
|
+
_context2.p = 3;
|
|
534
|
+
_context2.n = 4;
|
|
537
535
|
return evalRuleAsync(rule, value, name);
|
|
538
536
|
case 4:
|
|
539
|
-
result = _context2.
|
|
540
|
-
_context2.
|
|
537
|
+
result = _context2.v;
|
|
538
|
+
_context2.n = 6;
|
|
541
539
|
break;
|
|
542
540
|
case 5:
|
|
543
|
-
_context2.
|
|
544
|
-
_t6 = _context2
|
|
541
|
+
_context2.p = 5;
|
|
542
|
+
_t6 = _context2.v;
|
|
545
543
|
result = {
|
|
546
544
|
error: resolveFailureMessage(_t6, rule),
|
|
547
545
|
warning: null
|
|
@@ -549,37 +547,34 @@ export function runRulesAsync(name, value, values, rules, instance) {
|
|
|
549
547
|
case 6:
|
|
550
548
|
error = foldRuleResult(rule, result, state);
|
|
551
549
|
if (!(error !== null)) {
|
|
552
|
-
_context2.
|
|
550
|
+
_context2.n = 7;
|
|
553
551
|
break;
|
|
554
552
|
}
|
|
555
|
-
return _context2.
|
|
553
|
+
return _context2.a(2, {
|
|
556
554
|
error: error,
|
|
557
555
|
warning: state.warning
|
|
558
556
|
});
|
|
559
557
|
case 7:
|
|
560
|
-
_context2.
|
|
558
|
+
_context2.n = 2;
|
|
561
559
|
break;
|
|
562
560
|
case 8:
|
|
563
|
-
_context2.
|
|
561
|
+
_context2.n = 10;
|
|
564
562
|
break;
|
|
565
563
|
case 9:
|
|
566
|
-
_context2.
|
|
567
|
-
_t7 = _context2
|
|
564
|
+
_context2.p = 9;
|
|
565
|
+
_t7 = _context2.v;
|
|
568
566
|
_iterator5.e(_t7);
|
|
569
567
|
case 10:
|
|
570
|
-
_context2.
|
|
568
|
+
_context2.p = 10;
|
|
571
569
|
_iterator5.f();
|
|
572
|
-
return _context2.
|
|
570
|
+
return _context2.f(10);
|
|
573
571
|
case 11:
|
|
574
|
-
return _context2.
|
|
572
|
+
return _context2.a(2, {
|
|
575
573
|
error: null,
|
|
576
574
|
warning: state.warning
|
|
577
575
|
});
|
|
578
|
-
case 12:
|
|
579
|
-
case "end":
|
|
580
|
-
return _context2.stop();
|
|
581
576
|
}
|
|
582
|
-
}, _callee2, null, [[1, 9, 10, 11]
|
|
577
|
+
}, _callee2, null, [[3, 5], [1, 9, 10, 11]]);
|
|
583
578
|
}));
|
|
584
579
|
}
|
|
585
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJyZXNvbHZlVmFsdWUiLCJkZXZXYXJuT25jZSIsImlzRW1wdHlWYWx1ZSIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJyZWFzb24iLCJFcnJvciIsIm1lc3NhZ2UiLCJyZXNvbHZlRmFpbHVyZU1lc3NhZ2UiLCJydWxlIiwiX2EiLCJyZXNvbHZlUnVsZXMiLCJydWxlcyIsInZhbHVlcyIsImluc3RhbmNlIiwic29tZSIsImN0eCIsIk9iamVjdCIsImFzc2lnbiIsImdldEZpZWxkVmFsdWUiLCJuYW1lIiwiZ2V0RmllbGRzVmFsdWUiLCJtYXAiLCJlcnIiLCJ2YWxpZGF0b3IiLCJub3JtYWxpemVUcmlnZ2VycyIsIml0ZW1UcmlnZ2VyIiwiZm9ybVRyaWdnZXIiLCJlZmZlY3RpdmUiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsInRyaWdnZXIiLCJhY3RpdmVUcmlnZ2VycyIsImZpZWxkTmFtZSIsImluY2x1ZGVzIiwiZmlsdGVyIiwicnVsZVRyaWdnZXIiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJydWxlVHJpZ2dlcnMiLCJtYXRjaGVzIiwidCIsImNvbmNhdCIsImpvaW4iLCJUWVBFX0NIRUNLUyIsInN0cmluZyIsInYiLCJudW1iZXIiLCJOdW1iZXIiLCJpc05hTiIsImJvb2xlYW4iLCJtZXRob2QiLCJpbnRlZ2VyIiwiaXNJbnRlZ2VyIiwiZmxvYXQiLCJhcnJheSIsIm9iamVjdCIsIl90eXBlb2YiLCJkYXRlIiwiRGF0ZSIsImdldFRpbWUiLCJyZWdleHAiLCJSZWdFeHAiLCJoZXgiLCJ0ZXN0IiwiZW1haWwiLCJ1cmwiLCJVUkwiLCJ0eXBlRmFpbHVyZU1lc3NhZ2UiLCJ0eXBlIiwibWVhc3VyZVZhbHVlIiwibWVhc3VyZWQiLCJ1bml0IiwiY2hlY2tCdWlsdGluUnVsZXMiLCJyZXF1aXJlZCIsIndoaXRlc3BhY2UiLCJ0cmltIiwibGVuIiwibSIsIm1pbiIsIm1heCIsInBhdHRlcm4iLCJnbG9iYWwiLCJzdGlja3kiLCJsYXN0SW5kZXgiLCJ0b1J1bGVBcnJheSIsImRlZXBNZW1iZXJzIiwibWVtYmVyIiwiaW5kZXgiLCJTdHJpbmciLCJlbnRyaWVzIiwiUEFTUyIsImVycm9yIiwid2FybmluZyIsIndhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4iLCJhcHBseVRyYW5zZm9ybSIsInJhd1ZhbHVlIiwidHJhbnNmb3JtIiwib2siLCJmYWlsdXJlIiwiZGVlcFJ1bGVFbnRyaWVzIiwiZmllbGRzIiwic291cmNlIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsImtleSIsInN1YlJ1bGVzIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwic3ViUnVsZSIsInB1c2giLCJmIiwiZGVmYXVsdEZpZWxkIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9zdGVwMiR2YWx1ZSIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJtZXJnZVN1YlJlc3VsdCIsImFjYyIsInN1YiIsIndhcm5pbmdPbmx5IiwiZm9sZFJ1bGVSZXN1bHQiLCJzdGF0ZSIsImNvbnRlbnQiLCJldmFsUnVsZUFzeW5jIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicHJlcCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJhYnJ1cHQiLCJzZW50IiwiZmluaXNoIiwic3RvcCIsInJ1blJ1bGVzQXN5bmMiLCJfY2FsbGVlMiIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfdDYiLCJfdDciLCJfY29udGV4dDIiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFDUixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzdGLFNB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O1FBQUE7VUFBQSxPQUFBaUUsU0FBQSxDQUFBUCxJQUFBO01BQUE7SUFBQSxHQUFBRSxRQUFBO0VBQUEsQ0FDL0MsRUFBQTtBRDFERCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgZGV2V2Fybk9uY2UgfSBmcm9tICcuL2Rldldhcm5pbmcnO1xuLyoqIEVtcHR5IGZvciBgcmVxdWlyZWRgOiB1bmRlZmluZWQgLyBudWxsIC8gJycgLyBlbXB0eSBhcnJheS4gKi9cbmZ1bmN0aW9uIGlzRW1wdHlWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICB2YWx1ZSA9PT0gJycgfHxcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpO1xufVxuLyoqXG4gKiBDb2VyY2UgYSB0aHJvd24vcmVqZWN0ZWQgcmVhc29uIGludG8gZGlzcGxheWFibGUgZmFpbHVyZSBjb250ZW50OlxuICogYSBub24tZW1wdHkgRXJyb3IubWVzc2FnZSBvciBhIG5vbi1lbXB0eSBwbGFpbiBzdHJpbmcg4oCUIG90aGVyd2lzZSBudWxsXG4gKiAoY2FsbGVyIHBpY2tzIGl0cyBmYWxsYmFjaykuIFNoYXJlZCB3aXRoIHRoZSBmb3JtLWxldmVsIGxhc3QtcmVzb3J0IG5ldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VGYWlsdXJlUmVhc29uKHJlYXNvbikge1xuICAgIGlmIChyZWFzb24gaW5zdGFuY2VvZiBFcnJvciAmJiByZWFzb24ubWVzc2FnZSlcbiAgICAgICAgcmV0dXJuIHJlYXNvbi5tZXNzYWdlO1xuICAgIGlmICh0eXBlb2YgcmVhc29uID09PSAnc3RyaW5nJyAmJiByZWFzb24pXG4gICAgICAgIHJldHVybiByZWFzb247XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEZhaWx1cmUgbWVzc2FnZSBmb3IgYSByZWplY3RlZC90aHJvd24gY3VzdG9tIHZhbGlkYXRvcjpcbiAqIEVycm9yLm1lc3NhZ2Ug4oaSIHBsYWluIHN0cmluZyByZWFzb24g4oaSIHJ1bGUubWVzc2FnZSDihpIgZ2VuZXJpYyBmYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKHJlYXNvbiwgcnVsZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gY29lcmNlRmFpbHVyZVJlYXNvbihyZWFzb24pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAocnVsZS5tZXNzYWdlIHx8ICdWYWxpZGF0aW9uIGZhaWxlZCcpO1xufVxuLyoqXG4gKiBSZXNvbHZlIGZ1bmN0aW9uLWZvcm0gcnVsZXMgaW50byBzdGF0aWMgcnVsZXMuIFRoZVxuICogY29udGV4dCBleHBvc2VzIHRoZSB2YWx1ZSBzbmFwc2hvdCB0aGUgcnVuIHdhcyBpbnZva2VkIHdpdGg7IGZ1bmN0aW9uIHJ1bGVzXG4gKiBtdXN0IGJlIGNoZWFwIGFuZCBzaWRlLWVmZmVjdCBmcmVlIOKAlCB0aGV5IG1heSBiZSByZXNvbHZlZCBtb3JlIHRoYW4gb25jZVxuICogcGVyIHZhbGlkYXRpb24gcGFzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSdWxlcyhydWxlcywgdmFsdWVzLCBpbnN0YW5jZSkge1xuICAgIC8vIEZhc3QgcGF0aDogbm8gZnVuY3Rpb24gcnVsZXMg4oaSIG5vdGhpbmcgdG8gcmVzb2x2ZSwgbm8gY3R4IGFsbG9jYXRpb24uXG4gICAgLy8gVGhpcyBhbHNvIG1ha2VzIHRoZSBlbmdpbmUtaW50ZXJuYWwgcmUtcmVzb2x1dGlvbiBvZiBhbHJlYWR5LXJlc29sdmVkXG4gICAgLy8gYXJyYXlzIGZyZWUuXG4gICAgaWYgKCFydWxlcy5zb21lKChydWxlKSA9PiB0eXBlb2YgcnVsZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgIH1cbiAgICAvLyBMaXZlLWluc3RhbmNlIG1lbWJlcnMgKHNldEZpZWxkc1ZhbHVlLCBnZXRGaWVsZEVycm9yLCDigKYpIGFyZSBzcHJlYWQgaW5cbiAgICAvLyB3aGVuIGF2YWlsYWJsZTsgdGhlIHJlYWRzIGFsd2F5cyBjb21lIGZyb20gdGhlIHZhbGlkYXRpb24tdGltZSBzbmFwc2hvdC5cbiAgICBjb25zdCBjdHggPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluc3RhbmNlKSwgeyBnZXRGaWVsZFZhbHVlOiAobmFtZSkgPT4gcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSksIGdldEZpZWxkc1ZhbHVlOiAoKSA9PiB2YWx1ZXMgfSk7XG4gICAgcmV0dXJuIHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICByZXR1cm4gcnVsZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBydWxlKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gQSB0aHJvd2luZyBydWxlIGZhY3RvcnkgbXVzdCBub3QgY3Jhc2ggcmVuZGVyaW5nIG9yIHZhbGlkYXRpb24g4oCUXG4gICAgICAgICAgICAvLyBzdXJmYWNlIGl0IGFzIGEgcnVsZSB0aGF0IGFsd2F5cyBmYWlscyB3aXRoIHRoZSB0aHJvd24gcmVhc29uLlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIE5vcm1hbGl6ZSBhIGZvcm0vaXRlbS1sZXZlbCB2YWxpZGF0ZVRyaWdnZXIgY29uZmlnIGludG8gdGhlIGVmZmVjdGl2ZVxuICogaW50ZXJhY3RpdmUgZXZlbnQgbGlzdDogaXRlbS1sZXZlbCAod2hlbiBwcmVzZW50KSBvdmVycmlkZXMgZm9ybS1sZXZlbDtcbiAqIGBmYWxzZWAgZGlzYWJsZXMgaW50ZXJhY3RpdmUgdmFsaWRhdGlvbiBlbnRpcmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRyaWdnZXJzKGl0ZW1UcmlnZ2VyLCBmb3JtVHJpZ2dlcikge1xuICAgIGNvbnN0IGVmZmVjdGl2ZSA9IGl0ZW1UcmlnZ2VyID09PSB1bmRlZmluZWQgPyBmb3JtVHJpZ2dlciA6IGl0ZW1UcmlnZ2VyO1xuICAgIGlmIChlZmZlY3RpdmUgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZWZmZWN0aXZlKSA/IGVmZmVjdGl2ZSA6IFtlZmZlY3RpdmVdO1xufVxuLyoqXG4gKiBGaWx0ZXIgcnVsZXMgYXBwbGljYWJsZSB0byBhbiBpbnRlcmFjdGl2ZSBldmVudDogdGhlIGV2ZW50XG4gKiB2YWxpZGF0ZXMgb25seSB3aGVuIGl0IGlzIGluIHRoZSBpdGVtJ3MgZWZmZWN0aXZlIHRyaWdnZXIgc2V0LiBXaXRoaW4gdGhlXG4gKiBzZXQsIGEgcnVsZSBXSVRIT1VUIGB2YWxpZGF0ZVRyaWdnZXJgIHJ1bnMgb24gZXZlcnkgZXZlbnQ7IGEgcnVsZSBXSVRIIG9uZVxuICogcnVucyBvbmx5IG9uIG1hdGNoaW5nIGV2ZW50cyDigJQgc28gYSBydWxlIHRyaWdnZXIgb3V0c2lkZSB0aGUgaXRlbSdzIHNldFxuICogbmV2ZXIgZmlyZXMgaW50ZXJhY3RpdmVseS4gU3VibWl0LXRpbWUgdmFsaWRhdGlvbiBieXBhc3NlcyB0aGlzIGZpbHRlciBhbmRcbiAqIHJ1bnMgZXZlcnkgcnVsZS5cbiAqXG4gKiBEZXYgZ3VhcmQ6IGEgcnVsZSB3aG9zZSAobm9uLWVtcHR5KSB0cmlnZ2VyIHNldCBpcyBmdWxseSBPVVRTSURFIHRoZVxuICogYWN0aXZlIHNldCBjYW4gbmV2ZXIgZmlyZSBpbnRlcmFjdGl2ZWx5IOKAlCB1c3VhbGx5IGEgbGVmdG92ZXIgb2YgdGhlXG4gKiBwcmUtMC4wLjc2IG92ZXJyaWRlIHNlbWFudGljcywgc28gaXQgd2FybnMgb25jZS4gYHZhbGlkYXRlVHJpZ2dlcjogW11gXG4gKiBpcyB0aGUgZGVsaWJlcmF0ZSBzdWJtaXQtb25seSBpZGlvbSBhbmQgc3RheXMgc2lsZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUnVsZXNCeVRyaWdnZXIocnVsZXMsIHRyaWdnZXIsIGFjdGl2ZVRyaWdnZXJzLCBmaWVsZE5hbWUpIHtcbiAgICBpZiAoIWFjdGl2ZVRyaWdnZXJzLmluY2x1ZGVzKHRyaWdnZXIpKVxuICAgICAgICByZXR1cm4gW107XG4gICAgcmV0dXJuIHJ1bGVzLmZpbHRlcigocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlVHJpZ2dlciA9IHJ1bGUudmFsaWRhdGVUcmlnZ2VyO1xuICAgICAgICBpZiAocnVsZVRyaWdnZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBydWxlVHJpZ2dlcnMgPSBBcnJheS5pc0FycmF5KHJ1bGVUcmlnZ2VyKSA/IHJ1bGVUcmlnZ2VyIDogW3J1bGVUcmlnZ2VyXTtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHJ1bGVUcmlnZ2Vycy5pbmNsdWRlcyh0cmlnZ2VyKTtcbiAgICAgICAgaWYgKCFtYXRjaGVzICYmXG4gICAgICAgICAgICBydWxlVHJpZ2dlcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgIXJ1bGVUcmlnZ2Vycy5zb21lKCh0KSA9PiBhY3RpdmVUcmlnZ2Vycy5pbmNsdWRlcyh0KSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWVsZE5hbWUgIT09IG51bGwgJiYgZmllbGROYW1lICE9PSB2b2lkIDAgPyBmaWVsZE5hbWUgOiAnKGFueSknO1xuICAgICAgICAgICAgZGV2V2Fybk9uY2UoYHRyaWdnZXI6JHtuYW1lfToke3J1bGVUcmlnZ2Vycy5qb2luKCcsJyl9YCwgYFtQcm9Gb3JtXSBGaWVsZCBcIiR7bmFtZX1cIjogcnVsZSB2YWxpZGF0ZVRyaWdnZXIgWyR7cnVsZVRyaWdnZXJzLmpvaW4oJywgJyl9XSBpcyBvdXRzaWRlIHRoaXMgZmllbGQncyBhY3RpdmUgdHJpZ2dlciBzZXQgWyR7YWN0aXZlVHJpZ2dlcnMuam9pbignLCAnKX1dIOKAlCB0aGUgcnVsZSB3aWxsIG9ubHkgcnVuIG9uIHN1Ym1pdC4gSW5jbHVkZSBpdCBpbiB0aGUgaXRlbS9mb3JtIHZhbGlkYXRlVHJpZ2dlciB0byBydW4gaXQgaW50ZXJhY3RpdmVseS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICB9KTtcbn1cbi8qKiBCdWlsdC1pbiBgdHlwZWAgY2hlY2tzLiBgZW51bWAgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5IGFnYWluc3QgYHJ1bGUuZW51bWAuICovXG5jb25zdCBUWVBFX0NIRUNLUyA9IHtcbiAgICBzdHJpbmc6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZycsXG4gICAgbnVtYmVyOiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odiksXG4gICAgYm9vbGVhbjogKHYpID0+IHR5cGVvZiB2ID09PSAnYm9vbGVhbicsXG4gICAgbWV0aG9kOiAodikgPT4gdHlwZW9mIHYgPT09ICdmdW5jdGlvbicsXG4gICAgaW50ZWdlcjogKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHYpLFxuICAgIGZsb2F0OiAodikgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odikgJiYgIU51bWJlci5pc0ludGVnZXIodiksXG4gICAgYXJyYXk6ICh2KSA9PiBBcnJheS5pc0FycmF5KHYpLFxuICAgIG9iamVjdDogKHYpID0+IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2ICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHYpLFxuICAgIGRhdGU6ICh2KSA9PiB2IGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICA/ICFOdW1iZXIuaXNOYU4odi5nZXRUaW1lKCkpXG4gICAgICAgIDogdHlwZW9mICh2ID09PSBudWxsIHx8IHYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHYuZ2V0VGltZSkgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICFOdW1iZXIuaXNOYU4odi5nZXRUaW1lKCkpLFxuICAgIHJlZ2V4cDogKHYpID0+IHtcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBSZWdFeHAodik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaGV4OiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eIz8oW2EtZjAtOV17Nn18W2EtZjAtOV17M30pJC9pLnRlc3QodiksXG4gICAgLy8gU3RyaW5nLW9ubHk6IGNvZXJjaW5nIHZpYSBTdHJpbmcoKSB3b3VsZCBsZXQgZS5nLiBbJ2FAYi5jbyddIHN0cmluZ2lmeVxuICAgIC8vIGludG8gYSBwYXNzaW5nIHZhbHVlLlxuICAgIGVtYWlsOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodiksXG4gICAgdXJsOiAodikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFVSTCh2KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcbn07XG4vKiogRnJpZW5kbHkgZ2VuZXJhdGVkIG1lc3NhZ2VzIGZvciB0aGUgbGVnYWN5IHR5cGUgbmFtZXM7IG90aGVycyBnZXQgYSBnZW5lcmljIG9uZS4gKi9cbmZ1bmN0aW9uIHR5cGVGYWlsdXJlTWVzc2FnZShuYW1lLCB0eXBlKSB7XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIG51bWJlcmA7XG4gICAgaWYgKHR5cGUgPT09ICdlbWFpbCcpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgZW1haWxgO1xuICAgIGlmICh0eXBlID09PSAndXJsJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBVUkxgO1xuICAgIHJldHVybiBgJHtuYW1lfSBpcyBub3QgYSB2YWxpZCAke3R5cGV9YDtcbn1cbi8qKiBNZWFzdXJlIGEgdmFsdWUgZm9yIGxlbi9taW4vbWF4OiBzdHJpbmcg4oaSIGxlbmd0aCwgYXJyYXkg4oaSIGNvdW50LCBudW1iZXIg4oaSIHZhbHVlLiAqL1xuZnVuY3Rpb24gbWVhc3VyZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZS5sZW5ndGgsIHVuaXQ6ICcgY2hhcmFjdGVycycgfTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZS5sZW5ndGgsIHVuaXQ6ICcgaXRlbXMnIH07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpXG4gICAgICAgIHJldHVybiB7IG1lYXN1cmVkOiB2YWx1ZSwgdW5pdDogJycgfTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogRXZhbHVhdGUgZXZlcnkgYnVpbHQtaW4gKG5vbi1gdmFsaWRhdG9yYCkgcnVsZSBraW5kIGZvciBhIHNpbmdsZSBydWxlLlxuICogUmV0dXJucyB0aGUgZXJyb3IgY29udGVudCBmb3IgdGhlIGZpcnN0IGZhaWxpbmcgY2hlY2ssIG9yIG51bGwuXG4gKlxuICogRW1wdHkgdmFsdWVzICh1bmRlZmluZWQgLyBudWxsIC8gJycgLyBlbXB0eSBhcnJheSkgYXJlIG9ubHkgY2hlY2tlZCBieVxuICogYHJlcXVpcmVkYCDigJQgZXZlcnkgb3RoZXIgYnVpbHRpbiBjaGVjayBpcyBza2lwcGVkLCBzbyBvcHRpb25hbCBmaWVsZHNcbiAqIGRvbid0IGVycm9yIHVudGlsIHRoZXkgaGF2ZSBjb250ZW50LiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgTk9UIHN1YmplY3QgdG9cbiAqIHRoaXMgc2tpcCAodGhleSByZWNlaXZlIHRoZSBlbXB0eSB2YWx1ZSBhbmQgZGVjaWRlIHRoZW1zZWx2ZXMpLlxuICovXG5mdW5jdGlvbiBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChydWxlLnJlcXVpcmVkICYmIGlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgfVxuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAvLyBOb24tZW1wdHkgc3RyaW5nIG9mIG9ubHkgd2hpdGVzcGFjZSAodGhlIHJlcXVpcmVkK3doaXRlc3BhY2UgdHJpbSBpZGlvbSkuXG4gICAgaWYgKHJ1bGUud2hpdGVzcGFjZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBjYW5ub3QgYmUgYmxhbmtgO1xuICAgIH1cbiAgICAvLyBsZW46IGV4YWN0IGxlbmd0aC9jb3VudC92YWx1ZSDigJQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG1pbi9tYXguXG4gICAgaWYgKHJ1bGUubGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgbSA9IG1lYXN1cmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChtICE9PSBudWxsICYmIG0ubWVhc3VyZWQgIT09IHJ1bGUubGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgZXhhY3RseSAke3J1bGUubGVufSR7bS51bml0fWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCB8fCBydWxlLm1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG0gPSBtZWFzdXJlVmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAobSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUubWluICE9PSB1bmRlZmluZWQgJiYgbS5tZWFzdXJlZCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59JHttLnVuaXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1heCAhPT0gdW5kZWZpbmVkICYmIG0ubWVhc3VyZWQgPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0ke20udW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBBIC9nIG9yIC95IHJlZ2V4IGlzIHN0YXRlZnVsOiBsYXN0SW5kZXggcGVyc2lzdHMgYWNyb3NzIC50ZXN0KCkgY2FsbHMsXG4gICAgICAgIC8vIHNvIHJlcGVhdGVkIHJ1bnMgd291bGQgYWx0ZXJuYXRlIHBhc3MvZmFpbCDigJQgcmVzZXQgaXQgZXZlcnkgcnVuLlxuICAgICAgICBpZiAocnVsZS5wYXR0ZXJuLmdsb2JhbCB8fCBydWxlLnBhdHRlcm4uc3RpY2t5KVxuICAgICAgICAgICAgcnVsZS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlICYmIHJ1bGUudHlwZSAhPT0gJ2VudW0nICYmICFUWVBFX0NIRUNLU1tydWxlLnR5cGVdKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IHR5cGVGYWlsdXJlTWVzc2FnZShuYW1lLCBydWxlLnR5cGUpO1xuICAgIH1cbiAgICAvLyBlbnVtIG1lbWJlcnNoaXA6IGFwcGxpZXMgZm9yIHR5cGUgJ2VudW0nIG9yIHdoZW5ldmVyIHJ1bGUuZW51bSBpcyBwcmVzZW50LlxuICAgIGlmIChydWxlLmVudW0gJiYgQXJyYXkuaXNBcnJheShydWxlLmVudW0pICYmICFydWxlLmVudW0uaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBvbmUgb2YgJHtydWxlLmVudW0uam9pbignLCAnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHRvUnVsZUFycmF5KHJ1bGVzKSB7XG4gICAgaWYgKCFydWxlcylcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJ1bGVzKSA/IHJ1bGVzIDogW3J1bGVzXTtcbn1cbi8qKiBNZW1iZXJzIGZvciBkZWVwIHJ1bGVzOiBhcnJheSDihpIgaW5kZXhlZCBlbnRyaWVzLCBwbGFpbiBvYmplY3Qg4oaSIGtleSBlbnRyaWVzLiAqL1xuZnVuY3Rpb24gZGVlcE1lbWJlcnModmFsdWUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKG1lbWJlciwgaW5kZXgpID0+IFtTdHJpbmcoaW5kZXgpLCBtZW1iZXJdKTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKTtcbiAgICByZXR1cm4gW107XG59XG5jb25zdCBQQVNTID0geyBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuLyoqXG4gKiBEZXYgZ3VhcmQgZm9yIHRoZSBwcmUtMC4wLjc2IHZhbGlkYXRvciBjb250cmFjdDogcmV0dXJuaW5nIGEgc3RyaW5nIG9yXG4gKiBgZmFsc2VgIHVzZWQgdG8gRkFJTCB0aGUgcnVsZSDigJQgdW5kZXIgdGhlIGAocnVsZSwgdmFsdWUpYCBjb250cmFjdCByZXR1cm5cbiAqIHZhbHVlcyBhcmUgaWdub3JlZCBhbmQgb25seSB0aHJvdy9yZWplY3QgZmFpbHMuIFN1Y2ggYSByZXR1cm4gaXMgYWxtb3N0XG4gKiBjZXJ0YWlubHkgYSBsZWdhY3kgdmFsaWRhdG9yIHNpbGVudGx5IHBhc3NpbmcsIHNvIGl0IHdhcm5zIG9uY2UuXG4gKi9cbmZ1bmN0aW9uIHdhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4obmFtZSwgcmVzdWx0KSB7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdzdHJpbmcnICYmIHJlc3VsdCAhPT0gZmFsc2UpXG4gICAgICAgIHJldHVybjtcbiAgICBkZXZXYXJuT25jZShgdmFsaWRhdG9yLXJldHVybjoke25hbWV9YCwgYFtQcm9Gb3JtXSBGaWVsZCBcIiR7bmFtZX1cIjogYSBjdXN0b20gdmFsaWRhdG9yIHJldHVybmVkICR7dHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyAnYSBzdHJpbmcnIDogJ2ZhbHNlJ30g4oCUIHJldHVybiB2YWx1ZXMgYXJlIElHTk9SRUQ7IHZhbGlkYXRvcnMgZmFpbCBieSB0aHJvd2luZyBvciByZWplY3RpbmcgKGEgdGhyb3duIEVycm9yJ3MgbWVzc2FnZSBiZWNvbWVzIHRoZSBmaWVsZCBlcnJvcikuYCk7XG59XG4vKiogUnVuIGEgcnVsZSdzIHRyYW5zZm9ybSwgY29udGFpbmluZyB0aHJvd3MgYXMgYSBydWxlIGZhaWx1cmUuICovXG5mdW5jdGlvbiBhcHBseVRyYW5zZm9ybShydWxlLCByYXdWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcnVsZS50cmFuc2Zvcm0gIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmF3VmFsdWUgfTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHJ1bGUudHJhbnNmb3JtKHJhd1ZhbHVlKSB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZmFpbHVyZTogcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSkgfTtcbiAgICB9XG59XG4vKipcbiAqIEZsYXR0ZW4gYSBydWxlJ3MgZGVlcCBzb3VyY2VzIChgZmllbGRzYCBwZXIga2V5LCB0aGVuIGBkZWZhdWx0RmllbGRgIHBlclxuICogbWVtYmVyKSBpbnRvIFtzdWJSdWxlLCBtZW1iZXJWYWx1ZSwgbWVtYmVyTmFtZV0gdHVwbGVzIOKAlCB0aGUgc2luZ2xlIHBsYWNlXG4gKiB0aGF0IGtub3dzIGhvdyBkZWVwIHJ1bGVzIG1hcCBvbnRvIGEgY29udGFpbmVyIHZhbHVlLlxuICovXG5mdW5jdGlvbiBkZWVwUnVsZUVudHJpZXMocnVsZSwgdmFsdWUsIG5hbWUpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgaWYgKHJ1bGUuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHN1YlJ1bGVzXSBvZiBPYmplY3QuZW50cmllcyhydWxlLmZpZWxkcykpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiB0b1J1bGVBcnJheShzdWJSdWxlcykpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goW3N1YlJ1bGUsIHNvdXJjZVtrZXldLCBgJHtuYW1lfS4ke2tleX1gXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUuZGVmYXVsdEZpZWxkKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgbWVtYmVyXSBvZiBkZWVwTWVtYmVycyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiB0b1J1bGVBcnJheShydWxlLmRlZmF1bHRGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnB1c2goW3N1YlJ1bGUsIG1lbWJlciwgYCR7bmFtZX0uJHtrZXl9YF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbnRyaWVzO1xufVxuLyoqXG4gKiBNZXJnZSBhIHN1Yi1ydWxlJ3Mgb3V0Y29tZSBpbnRvIHRoZSBwYXJlbnQncyBjaGFubmVscy4gQSBzdWItcnVsZSBmbGFnZ2VkXG4gKiBgd2FybmluZ09ubHlgIGNvbnRyaWJ1dGVzIGl0cyBmYWlsdXJlIGFzIGEgV0FSTklORzsgb3RoZXJ3aXNlIGl0cyBlcnJvclxuICogYmxvY2tzLiBSZXR1cm5zIHRydWUgd2hlbiBhIGJsb2NraW5nIGVycm9yIGxhbmRlZCAoc3RvcCB3YWxraW5nKS5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VTdWJSZXN1bHQoYWNjLCBzdWJSdWxlLCBzdWIpIHtcbiAgICBpZiAoc3ViLndhcm5pbmcgIT09IG51bGwgJiYgYWNjLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgIGFjYy53YXJuaW5nID0gc3ViLndhcm5pbmc7XG4gICAgaWYgKHN1Yi5lcnJvciAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoc3ViUnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICAgICAgaWYgKGFjYy53YXJuaW5nID09PSBudWxsKVxuICAgICAgICAgICAgICAgIGFjYy53YXJuaW5nID0gc3ViLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWNjLmVycm9yID0gc3ViLmVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLyoqXG4gKiBGb2xkIG9uZSBydWxlJ3Mgb3V0Y29tZSBpbnRvIHRoZSBydW4tbGV2ZWwgY2hhbm5lbHMuIEEgcnVsZSBmbGFnZ2VkXG4gKiBgd2FybmluZ09ubHlgIGRvd25ncmFkZXMgZXZlcnl0aGluZyBpdCBwcm9kdWNlZCAob3duIGNoZWNrcyBBTkQgZGVlcFxuICogc3ViLXJ1bGVzKSB0byBhIHdhcm5pbmcuIFJldHVybnMgdGhlIGJsb2NraW5nIGVycm9yIHRvIHN1cmZhY2UsIG9yIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGZvbGRSdWxlUmVzdWx0KHJ1bGUsIHJlc3VsdCwgc3RhdGUpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IChfYSA9IHJlc3VsdC5lcnJvcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcmVzdWx0Lndhcm5pbmc7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSBudWxsICYmIHN0YXRlLndhcm5pbmcgPT09IG51bGwpXG4gICAgICAgICAgICBzdGF0ZS53YXJuaW5nID0gY29udGVudDtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChyZXN1bHQud2FybmluZyAhPT0gbnVsbCAmJiBzdGF0ZS53YXJuaW5nID09PSBudWxsKVxuICAgICAgICBzdGF0ZS53YXJuaW5nID0gcmVzdWx0Lndhcm5pbmc7XG4gICAgcmV0dXJuIHJlc3VsdC5lcnJvcjtcbn1cbi8qKiBFdmFsdWF0ZSBPTkUgcnVsZSAodHJhbnNmb3JtIOKGkiBidWlsdGluIGNoZWNrcyDihpIgdmFsaWRhdG9yIOKGkiBkZWVwIHJ1bGVzKTsgY3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQuICovXG5mdW5jdGlvbiBldmFsUnVsZUFzeW5jKHJ1bGUsIHJhd1ZhbHVlLCBuYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgcHJlcCA9IGFwcGx5VHJhbnNmb3JtKHJ1bGUsIHJhd1ZhbHVlKTtcbiAgICAgICAgaWYgKCFwcmVwLm9rKVxuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IHByZXAuZmFpbHVyZSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByZXAudmFsdWU7XG4gICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICBpZiAoZmFpbHVyZSA9PT0gbnVsbCAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gKHlpZWxkIHJ1bGUudmFsaWRhdG9yKHJ1bGUsIHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgd2FybkxlZ2FjeVZhbGlkYXRvclJldHVybihuYW1lLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUgPSByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmFpbHVyZSAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBmYWlsdXJlLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGlmICgocnVsZS5maWVsZHMgfHwgcnVsZS5kZWZhdWx0RmllbGQpICYmICFpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBEZWVwIHJ1bGVzIG5lZWQgYSBjb250YWluZXI7IGEgbm9uLWVtcHR5IHByaW1pdGl2ZSBmYWlscyB0aGUgUEFSRU5UXG4gICAgICAgICAgICAvLyAoY2xlYXIgYXR0cmlidXRpb24pIGluc3RlYWQgb2YgcHJvZHVjaW5nIGNvbmZ1c2luZyBjaGlsZCBlcnJvcnMuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXlgLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhY2MgPSB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzdWJSdWxlLCBzdWJWYWx1ZSwgc3ViTmFtZV0gb2YgZGVlcFJ1bGVFbnRyaWVzKHJ1bGUsIHZhbHVlLCBuYW1lKSkge1xuICAgICAgICAgICAgICAgIGlmIChtZXJnZVN1YlJlc3VsdChhY2MsIHN1YlJ1bGUsIHlpZWxkIGV2YWxSdWxlQXN5bmMoc3ViUnVsZSwgc3ViVmFsdWUsIHN1Yk5hbWUpKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQQVNTO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSdWxlIHJ1bi4gQ3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQgKHN5bmMgb3IgYXN5bmMpOiByZXNvbHZpbmcgcGFzc2VzLFxuICogcmVqZWN0aW5nL3Rocm93aW5nIGZhaWxzLiBSZXR1cm4gdmFsdWVzIGFyZSBpZ25vcmVkLlxuICpcbiAqIFRoZSBwZXItcnVsZSB0cnkvY2F0Y2ggaXMgdGhlIHRvdGFsaXR5IGNob2tlIHBvaW50OiBOTyBpbnB1dCDigJQgaW5jbHVkaW5nXG4gKiBleG90aWMgdmFsdWVzIHRoYXQgYnJlYWsgYSBidWlsdGluIGNoZWNrIOKAlCBtYXkgZXNjYXBlIGFzIGEgdGhyb3c7IGV2ZXJ5XG4gKiBmYWlsdXJlIHN1cmZhY2VzIHRocm91Z2ggdGhlIGVycm9yL3dhcm5pbmcgY2hhbm5lbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzLCBpbnN0YW5jZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0geyB3YXJuaW5nOiBudWxsIH07XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgaW5zdGFuY2UpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB5aWVsZCBldmFsUnVsZUFzeW5jKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB7IGVycm9yOiByZXNvbHZlRmFpbHVyZU1lc3NhZ2UoZXJyLCBydWxlKSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBmb2xkUnVsZVJlc3VsdChydWxlLCByZXN1bHQsIHN0YXRlKTtcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBlcnJvciwgd2FybmluZzogc3RhdGUud2FybmluZyB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBudWxsLCB3YXJuaW5nOiBzdGF0ZS53YXJuaW5nIH07XG4gICAgfSk7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
580
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJlIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsInByb3RvdHlwZSIsIkdlbmVyYXRvciIsInUiLCJPYmplY3QiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImJpbmQiLCJsZW5ndGgiLCJsIiwiVHlwZUVycm9yIiwiY2FsbCIsImRvbmUiLCJ2YWx1ZSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZGlzcGxheU5hbWUiLCJfcmVnZW5lcmF0b3IiLCJ3IiwibSIsImRlZmluZVByb3BlcnR5IiwiX3JlZ2VuZXJhdG9yRGVmaW5lIiwiX2ludm9rZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwicyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJyZXNvbHZlVmFsdWUiLCJkZXZXYXJuT25jZSIsImlzRW1wdHlWYWx1ZSIsInVuZGVmaW5lZCIsImNvZXJjZUZhaWx1cmVSZWFzb24iLCJyZWFzb24iLCJFcnJvciIsIm1lc3NhZ2UiLCJyZXNvbHZlRmFpbHVyZU1lc3NhZ2UiLCJydWxlIiwiX2EiLCJyZXNvbHZlUnVsZXMiLCJydWxlcyIsInZhbHVlcyIsImluc3RhbmNlIiwic29tZSIsImN0eCIsImFzc2lnbiIsImdldEZpZWxkVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsIm1hcCIsImVyciIsInZhbGlkYXRvciIsIm5vcm1hbGl6ZVRyaWdnZXJzIiwiaXRlbVRyaWdnZXIiLCJmb3JtVHJpZ2dlciIsImVmZmVjdGl2ZSIsImZpbHRlclJ1bGVzQnlUcmlnZ2VyIiwidHJpZ2dlciIsImFjdGl2ZVRyaWdnZXJzIiwiZmllbGROYW1lIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJydWxlVHJpZ2dlciIsInZhbGlkYXRlVHJpZ2dlciIsInJ1bGVUcmlnZ2VycyIsIm1hdGNoZXMiLCJjb25jYXQiLCJqb2luIiwiVFlQRV9DSEVDS1MiLCJzdHJpbmciLCJudW1iZXIiLCJOdW1iZXIiLCJpc05hTiIsImJvb2xlYW4iLCJtZXRob2QiLCJpbnRlZ2VyIiwiaXNJbnRlZ2VyIiwiZmxvYXQiLCJhcnJheSIsIm9iamVjdCIsIl90eXBlb2YiLCJkYXRlIiwiRGF0ZSIsImdldFRpbWUiLCJyZWdleHAiLCJSZWdFeHAiLCJoZXgiLCJlbWFpbCIsInVybCIsIlVSTCIsInR5cGVGYWlsdXJlTWVzc2FnZSIsInR5cGUiLCJtZWFzdXJlVmFsdWUiLCJtZWFzdXJlZCIsInVuaXQiLCJjaGVja0J1aWx0aW5SdWxlcyIsInJlcXVpcmVkIiwid2hpdGVzcGFjZSIsInRyaW0iLCJsZW4iLCJtaW4iLCJtYXgiLCJwYXR0ZXJuIiwiZ2xvYmFsIiwic3RpY2t5IiwibGFzdEluZGV4IiwidG9SdWxlQXJyYXkiLCJkZWVwTWVtYmVycyIsIm1lbWJlciIsImluZGV4IiwiU3RyaW5nIiwiZW50cmllcyIsIlBBU1MiLCJlcnJvciIsIndhcm5pbmciLCJ3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuIiwiYXBwbHlUcmFuc2Zvcm0iLCJyYXdWYWx1ZSIsInRyYW5zZm9ybSIsIm9rIiwiZmFpbHVyZSIsImRlZXBSdWxlRW50cmllcyIsImZpZWxkcyIsInNvdXJjZSIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkiLCJrZXkiLCJzdWJSdWxlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwic3ViUnVsZSIsInB1c2giLCJkZWZhdWx0RmllbGQiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3N0ZXAyJHZhbHVlIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIm1lcmdlU3ViUmVzdWx0IiwiYWNjIiwic3ViIiwid2FybmluZ09ubHkiLCJmb2xkUnVsZVJlc3VsdCIsInN0YXRlIiwiY29udGVudCIsImV2YWxSdWxlQXN5bmMiLCJfY2FsbGVlIiwicHJlcCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc3RlcDQkdmFsdWUiLCJzdWJWYWx1ZSIsInN1Yk5hbWUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl9jb250ZXh0IiwicnVuUnVsZXNBc3luYyIsIl9jYWxsZWUyIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl90NiIsIl90NyIsIl9jb250ZXh0MiJdLCJtYXBwaW5ncyI6Ijs7MEJBQ0EsdUtBQUFBLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxXQUFBLDhCQUFBQyxFQUFBTixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQUwsQ0FBQSxJQUFBQSxDQUFBLENBQUFNLFNBQUEsWUFBQUMsU0FBQSxHQUFBUCxDQUFBLEdBQUFPLFNBQUEsRUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLE1B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Z0ksR0FBQSxFQUFNL0gsSUFBSSxDQUFDO1lBQUU0RSxPQUFPLEVBQUU7VUFBSSxDQUFFO1FBQUM7VUFFaEVELEtBQUssR0FBRytCLGNBQWMsQ0FBQzFHLElBQUksRUFBRVosTUFBTSxFQUFFdUgsS0FBSyxDQUFDO1VBQUEsTUFDN0NoQyxLQUFLLEtBQUssSUFBSTtZQUFBc0QsU0FBQSxDQUFBak4sQ0FBQTtZQUFBO1VBQUE7VUFBQSxPQUFBaU4sU0FBQSxDQUFBaE0sQ0FBQSxJQUFTO1lBQUUwSSxLQUFLLEVBQUxBLEtBQUs7WUFBRUMsT0FBTyxFQUFFK0IsS0FBSyxDQUFDL0I7VUFBTyxDQUFFO1FBQUE7VUFBQXFELFNBQUEsQ0FBQWpOLENBQUE7VUFBQTtRQUFBO1VBQUFpTixTQUFBLENBQUFqTixDQUFBO1VBQUE7UUFBQTtVQUFBaU4sU0FBQSxDQUFBcE0sQ0FBQTtVQUFBbU0sR0FBQSxHQUFBQyxTQUFBLENBQUFqTSxDQUFBO1VBQUE2TCxVQUFBLENBQUFqTixDQUFBLENBQUFvTixHQUFBO1FBQUE7VUFBQUMsU0FBQSxDQUFBcE0sQ0FBQTtVQUFBZ00sVUFBQSxDQUFBak0sQ0FBQTtVQUFBLE9BQUFxTSxTQUFBLENBQUFyTSxDQUFBO1FBQUE7VUFBQSxPQUFBcU0sU0FBQSxDQUFBaE0sQ0FBQSxJQUV2RDtZQUFFMEksS0FBSyxFQUFFLElBQUk7WUFBRUMsT0FBTyxFQUFFK0IsS0FBSyxDQUFDL0I7VUFBTyxDQUFFO01BQUE7SUFBQSxHQUFBZ0QsUUFBQTtFQUFBLENBQy9DLEVBQUE7QUQxREQiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4vcGF0aFV0aWxzJztcbmltcG9ydCB7IGRldldhcm5PbmNlIH0gZnJvbSAnLi9kZXZXYXJuaW5nJztcbi8qKiBFbXB0eSBmb3IgYHJlcXVpcmVkYDogdW5kZWZpbmVkIC8gbnVsbCAvICcnIC8gZW1wdHkgYXJyYXkuICovXG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKTtcbn1cbi8qKlxuICogQ29lcmNlIGEgdGhyb3duL3JlamVjdGVkIHJlYXNvbiBpbnRvIGRpc3BsYXlhYmxlIGZhaWx1cmUgY29udGVudDpcbiAqIGEgbm9uLWVtcHR5IEVycm9yLm1lc3NhZ2Ugb3IgYSBub24tZW1wdHkgcGxhaW4gc3RyaW5nIOKAlCBvdGhlcndpc2UgbnVsbFxuICogKGNhbGxlciBwaWNrcyBpdHMgZmFsbGJhY2spLiBTaGFyZWQgd2l0aCB0aGUgZm9ybS1sZXZlbCBsYXN0LXJlc29ydCBuZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlRmFpbHVyZVJlYXNvbihyZWFzb24pIHtcbiAgICBpZiAocmVhc29uIGluc3RhbmNlb2YgRXJyb3IgJiYgcmVhc29uLm1lc3NhZ2UpXG4gICAgICAgIHJldHVybiByZWFzb24ubWVzc2FnZTtcbiAgICBpZiAodHlwZW9mIHJlYXNvbiA9PT0gJ3N0cmluZycgJiYgcmVhc29uKVxuICAgICAgICByZXR1cm4gcmVhc29uO1xuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBGYWlsdXJlIG1lc3NhZ2UgZm9yIGEgcmVqZWN0ZWQvdGhyb3duIGN1c3RvbSB2YWxpZGF0b3I6XG4gKiBFcnJvci5tZXNzYWdlIOKGkiBwbGFpbiBzdHJpbmcgcmVhc29uIOKGkiBydWxlLm1lc3NhZ2Ug4oaSIGdlbmVyaWMgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGYWlsdXJlTWVzc2FnZShyZWFzb24sIHJ1bGUpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IGNvZXJjZUZhaWx1cmVSZWFzb24ocmVhc29uKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogKHJ1bGUubWVzc2FnZSB8fCAnVmFsaWRhdGlvbiBmYWlsZWQnKTtcbn1cbi8qKlxuICogUmVzb2x2ZSBmdW5jdGlvbi1mb3JtIHJ1bGVzIGludG8gc3RhdGljIHJ1bGVzLiBUaGVcbiAqIGNvbnRleHQgZXhwb3NlcyB0aGUgdmFsdWUgc25hcHNob3QgdGhlIHJ1biB3YXMgaW52b2tlZCB3aXRoOyBmdW5jdGlvbiBydWxlc1xuICogbXVzdCBiZSBjaGVhcCBhbmQgc2lkZS1lZmZlY3QgZnJlZSDigJQgdGhleSBtYXkgYmUgcmVzb2x2ZWQgbW9yZSB0aGFuIG9uY2VcbiAqIHBlciB2YWxpZGF0aW9uIHBhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUnVsZXMocnVsZXMsIHZhbHVlcywgaW5zdGFuY2UpIHtcbiAgICAvLyBGYXN0IHBhdGg6IG5vIGZ1bmN0aW9uIHJ1bGVzIOKGkiBub3RoaW5nIHRvIHJlc29sdmUsIG5vIGN0eCBhbGxvY2F0aW9uLlxuICAgIC8vIFRoaXMgYWxzbyBtYWtlcyB0aGUgZW5naW5lLWludGVybmFsIHJlLXJlc29sdXRpb24gb2YgYWxyZWFkeS1yZXNvbHZlZFxuICAgIC8vIGFycmF5cyBmcmVlLlxuICAgIGlmICghcnVsZXMuc29tZSgocnVsZSkgPT4gdHlwZW9mIHJ1bGUgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHJldHVybiBydWxlcztcbiAgICB9XG4gICAgLy8gTGl2ZS1pbnN0YW5jZSBtZW1iZXJzIChzZXRGaWVsZHNWYWx1ZSwgZ2V0RmllbGRFcnJvciwg4oCmKSBhcmUgc3ByZWFkIGluXG4gICAgLy8gd2hlbiBhdmFpbGFibGU7IHRoZSByZWFkcyBhbHdheXMgY29tZSBmcm9tIHRoZSB2YWxpZGF0aW9uLXRpbWUgc25hcHNob3QuXG4gICAgY29uc3QgY3R4ID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbnN0YW5jZSksIHsgZ2V0RmllbGRWYWx1ZTogKG5hbWUpID0+IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpLCBnZXRGaWVsZHNWYWx1ZTogKCkgPT4gdmFsdWVzIH0pO1xuICAgIHJldHVybiBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBydWxlICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZShjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIEEgdGhyb3dpbmcgcnVsZSBmYWN0b3J5IG11c3Qgbm90IGNyYXNoIHJlbmRlcmluZyBvciB2YWxpZGF0aW9uIOKAlFxuICAgICAgICAgICAgLy8gc3VyZmFjZSBpdCBhcyBhIHJ1bGUgdGhhdCBhbHdheXMgZmFpbHMgd2l0aCB0aGUgdGhyb3duIHJlYXNvbi5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBOb3JtYWxpemUgYSBmb3JtL2l0ZW0tbGV2ZWwgdmFsaWRhdGVUcmlnZ2VyIGNvbmZpZyBpbnRvIHRoZSBlZmZlY3RpdmVcbiAqIGludGVyYWN0aXZlIGV2ZW50IGxpc3Q6IGl0ZW0tbGV2ZWwgKHdoZW4gcHJlc2VudCkgb3ZlcnJpZGVzIGZvcm0tbGV2ZWw7XG4gKiBgZmFsc2VgIGRpc2FibGVzIGludGVyYWN0aXZlIHZhbGlkYXRpb24gZW50aXJlbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUcmlnZ2VycyhpdGVtVHJpZ2dlciwgZm9ybVRyaWdnZXIpIHtcbiAgICBjb25zdCBlZmZlY3RpdmUgPSBpdGVtVHJpZ2dlciA9PT0gdW5kZWZpbmVkID8gZm9ybVRyaWdnZXIgOiBpdGVtVHJpZ2dlcjtcbiAgICBpZiAoZWZmZWN0aXZlID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGVmZmVjdGl2ZSkgPyBlZmZlY3RpdmUgOiBbZWZmZWN0aXZlXTtcbn1cbi8qKlxuICogRmlsdGVyIHJ1bGVzIGFwcGxpY2FibGUgdG8gYW4gaW50ZXJhY3RpdmUgZXZlbnQ6IHRoZSBldmVudFxuICogdmFsaWRhdGVzIG9ubHkgd2hlbiBpdCBpcyBpbiB0aGUgaXRlbSdzIGVmZmVjdGl2ZSB0cmlnZ2VyIHNldC4gV2l0aGluIHRoZVxuICogc2V0LCBhIHJ1bGUgV0lUSE9VVCBgdmFsaWRhdGVUcmlnZ2VyYCBydW5zIG9uIGV2ZXJ5IGV2ZW50OyBhIHJ1bGUgV0lUSCBvbmVcbiAqIHJ1bnMgb25seSBvbiBtYXRjaGluZyBldmVudHMg4oCUIHNvIGEgcnVsZSB0cmlnZ2VyIG91dHNpZGUgdGhlIGl0ZW0ncyBzZXRcbiAqIG5ldmVyIGZpcmVzIGludGVyYWN0aXZlbHkuIFN1Ym1pdC10aW1lIHZhbGlkYXRpb24gYnlwYXNzZXMgdGhpcyBmaWx0ZXIgYW5kXG4gKiBydW5zIGV2ZXJ5IHJ1bGUuXG4gKlxuICogRGV2IGd1YXJkOiBhIHJ1bGUgd2hvc2UgKG5vbi1lbXB0eSkgdHJpZ2dlciBzZXQgaXMgZnVsbHkgT1VUU0lERSB0aGVcbiAqIGFjdGl2ZSBzZXQgY2FuIG5ldmVyIGZpcmUgaW50ZXJhY3RpdmVseSDigJQgdXN1YWxseSBhIGxlZnRvdmVyIG9mIHRoZVxuICogcHJlLTAuMC43NiBvdmVycmlkZSBzZW1hbnRpY3MsIHNvIGl0IHdhcm5zIG9uY2UuIGB2YWxpZGF0ZVRyaWdnZXI6IFtdYFxuICogaXMgdGhlIGRlbGliZXJhdGUgc3VibWl0LW9ubHkgaWRpb20gYW5kIHN0YXlzIHNpbGVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJ1bGVzLCB0cmlnZ2VyLCBhY3RpdmVUcmlnZ2VycywgZmllbGROYW1lKSB7XG4gICAgaWYgKCFhY3RpdmVUcmlnZ2Vycy5pbmNsdWRlcyh0cmlnZ2VyKSlcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIHJldHVybiBydWxlcy5maWx0ZXIoKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgcnVsZVRyaWdnZXIgPSBydWxlLnZhbGlkYXRlVHJpZ2dlcjtcbiAgICAgICAgaWYgKHJ1bGVUcmlnZ2VyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY29uc3QgcnVsZVRyaWdnZXJzID0gQXJyYXkuaXNBcnJheShydWxlVHJpZ2dlcikgPyBydWxlVHJpZ2dlciA6IFtydWxlVHJpZ2dlcl07XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBydWxlVHJpZ2dlcnMuaW5jbHVkZXModHJpZ2dlcik7XG4gICAgICAgIGlmICghbWF0Y2hlcyAmJlxuICAgICAgICAgICAgcnVsZVRyaWdnZXJzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICFydWxlVHJpZ2dlcnMuc29tZSgodCkgPT4gYWN0aXZlVHJpZ2dlcnMuaW5jbHVkZXModCkpKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmllbGROYW1lICE9PSBudWxsICYmIGZpZWxkTmFtZSAhPT0gdm9pZCAwID8gZmllbGROYW1lIDogJyhhbnkpJztcbiAgICAgICAgICAgIGRldldhcm5PbmNlKGB0cmlnZ2VyOiR7bmFtZX06JHtydWxlVHJpZ2dlcnMuam9pbignLCcpfWAsIGBbUHJvRm9ybV0gRmllbGQgXCIke25hbWV9XCI6IHJ1bGUgdmFsaWRhdGVUcmlnZ2VyIFske3J1bGVUcmlnZ2Vycy5qb2luKCcsICcpfV0gaXMgb3V0c2lkZSB0aGlzIGZpZWxkJ3MgYWN0aXZlIHRyaWdnZXIgc2V0IFske2FjdGl2ZVRyaWdnZXJzLmpvaW4oJywgJyl9XSDigJQgdGhlIHJ1bGUgd2lsbCBvbmx5IHJ1biBvbiBzdWJtaXQuIEluY2x1ZGUgaXQgaW4gdGhlIGl0ZW0vZm9ybSB2YWxpZGF0ZVRyaWdnZXIgdG8gcnVuIGl0IGludGVyYWN0aXZlbHkuYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hdGNoZXM7XG4gICAgfSk7XG59XG4vKiogQnVpbHQtaW4gYHR5cGVgIGNoZWNrcy4gYGVudW1gIGlzIGhhbmRsZWQgc2VwYXJhdGVseSBhZ2FpbnN0IGBydWxlLmVudW1gLiAqL1xuY29uc3QgVFlQRV9DSEVDS1MgPSB7XG4gICAgc3RyaW5nOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnLFxuICAgIG51bWJlcjogKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHYpLFxuICAgIGJvb2xlYW46ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nLFxuICAgIG1ldGhvZDogKHYpID0+IHR5cGVvZiB2ID09PSAnZnVuY3Rpb24nLFxuICAgIGludGVnZXI6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzSW50ZWdlcih2KSxcbiAgICBmbG9hdDogKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHYpICYmICFOdW1iZXIuaXNJbnRlZ2VyKHYpLFxuICAgIGFycmF5OiAodikgPT4gQXJyYXkuaXNBcnJheSh2KSxcbiAgICBvYmplY3Q6ICh2KSA9PiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdiAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2KSxcbiAgICBkYXRlOiAodikgPT4gdiBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgPyAhTnVtYmVyLmlzTmFOKHYuZ2V0VGltZSgpKVxuICAgICAgICA6IHR5cGVvZiAodiA9PT0gbnVsbCB8fCB2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2LmdldFRpbWUpID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICAhTnVtYmVyLmlzTmFOKHYuZ2V0VGltZSgpKSxcbiAgICByZWdleHA6ICh2KSA9PiB7XG4gICAgICAgIGlmICh2IGluc3RhbmNlb2YgUmVnRXhwKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgUmVnRXhwKHYpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGhleDogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiAvXiM/KFthLWYwLTldezZ9fFthLWYwLTldezN9KSQvaS50ZXN0KHYpLFxuICAgIC8vIFN0cmluZy1vbmx5OiBjb2VyY2luZyB2aWEgU3RyaW5nKCkgd291bGQgbGV0IGUuZy4gWydhQGIuY28nXSBzdHJpbmdpZnlcbiAgICAvLyBpbnRvIGEgcGFzc2luZyB2YWx1ZS5cbiAgICBlbWFpbDogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLy50ZXN0KHYpLFxuICAgIHVybDogKHYpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBVUkwodik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG59O1xuLyoqIEZyaWVuZGx5IGdlbmVyYXRlZCBtZXNzYWdlcyBmb3IgdGhlIGxlZ2FjeSB0eXBlIG5hbWVzOyBvdGhlcnMgZ2V0IGEgZ2VuZXJpYyBvbmUuICovXG5mdW5jdGlvbiB0eXBlRmFpbHVyZU1lc3NhZ2UobmFtZSwgdHlwZSkge1xuICAgIGlmICh0eXBlID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IG11c3QgYmUgYSBudW1iZXJgO1xuICAgIGlmICh0eXBlID09PSAnZW1haWwnKVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIGVtYWlsYDtcbiAgICBpZiAodHlwZSA9PT0gJ3VybCcpXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgVVJMYDtcbiAgICByZXR1cm4gYCR7bmFtZX0gaXMgbm90IGEgdmFsaWQgJHt0eXBlfWA7XG59XG4vKiogTWVhc3VyZSBhIHZhbHVlIGZvciBsZW4vbWluL21heDogc3RyaW5nIOKGkiBsZW5ndGgsIGFycmF5IOKGkiBjb3VudCwgbnVtYmVyIOKGkiB2YWx1ZS4gKi9cbmZ1bmN0aW9uIG1lYXN1cmVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4geyBtZWFzdXJlZDogdmFsdWUubGVuZ3RoLCB1bml0OiAnIGNoYXJhY3RlcnMnIH07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICByZXR1cm4geyBtZWFzdXJlZDogdmFsdWUubGVuZ3RoLCB1bml0OiAnIGl0ZW1zJyB9O1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4odmFsdWUpKVxuICAgICAgICByZXR1cm4geyBtZWFzdXJlZDogdmFsdWUsIHVuaXQ6ICcnIH07XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEV2YWx1YXRlIGV2ZXJ5IGJ1aWx0LWluIChub24tYHZhbGlkYXRvcmApIHJ1bGUga2luZCBmb3IgYSBzaW5nbGUgcnVsZS5cbiAqIFJldHVybnMgdGhlIGVycm9yIGNvbnRlbnQgZm9yIHRoZSBmaXJzdCBmYWlsaW5nIGNoZWNrLCBvciBudWxsLlxuICpcbiAqIEVtcHR5IHZhbHVlcyAodW5kZWZpbmVkIC8gbnVsbCAvICcnIC8gZW1wdHkgYXJyYXkpIGFyZSBvbmx5IGNoZWNrZWQgYnlcbiAqIGByZXF1aXJlZGAg4oCUIGV2ZXJ5IG90aGVyIGJ1aWx0aW4gY2hlY2sgaXMgc2tpcHBlZCwgc28gb3B0aW9uYWwgZmllbGRzXG4gKiBkb24ndCBlcnJvciB1bnRpbCB0aGV5IGhhdmUgY29udGVudC4gQ3VzdG9tIHZhbGlkYXRvcnMgYXJlIE5PVCBzdWJqZWN0IHRvXG4gKiB0aGlzIHNraXAgKHRoZXkgcmVjZWl2ZSB0aGUgZW1wdHkgdmFsdWUgYW5kIGRlY2lkZSB0aGVtc2VsdmVzKS5cbiAqL1xuZnVuY3Rpb24gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpIHtcbiAgICBpZiAocnVsZS5yZXF1aXJlZCAmJiBpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgIH1cbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgLy8gTm9uLWVtcHR5IHN0cmluZyBvZiBvbmx5IHdoaXRlc3BhY2UgKHRoZSByZXF1aXJlZCt3aGl0ZXNwYWNlIHRyaW0gaWRpb20pLlxuICAgIGlmIChydWxlLndoaXRlc3BhY2UgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gY2Fubm90IGJlIGJsYW5rYDtcbiAgICB9XG4gICAgLy8gbGVuOiBleGFjdCBsZW5ndGgvY291bnQvdmFsdWUg4oCUIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBtaW4vbWF4LlxuICAgIGlmIChydWxlLmxlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG0gPSBtZWFzdXJlVmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAobSAhPT0gbnVsbCAmJiBtLm1lYXN1cmVkICE9PSBydWxlLmxlbikge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGV4YWN0bHkgJHtydWxlLmxlbn0ke20udW5pdH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHJ1bGUubWluICE9PSB1bmRlZmluZWQgfHwgcnVsZS5tYXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBtID0gbWVhc3VyZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKG0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkICYmIG0ubWVhc3VyZWQgPCBydWxlLm1pbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSR7bS51bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5tYXggIT09IHVuZGVmaW5lZCAmJiBtLm1lYXN1cmVkID4gcnVsZS5tYXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7cnVsZS5tYXh9JHttLnVuaXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS5wYXR0ZXJuICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gQSAvZyBvciAveSByZWdleCBpcyBzdGF0ZWZ1bDogbGFzdEluZGV4IHBlcnNpc3RzIGFjcm9zcyAudGVzdCgpIGNhbGxzLFxuICAgICAgICAvLyBzbyByZXBlYXRlZCBydW5zIHdvdWxkIGFsdGVybmF0ZSBwYXNzL2ZhaWwg4oCUIHJlc2V0IGl0IGV2ZXJ5IHJ1bi5cbiAgICAgICAgaWYgKHJ1bGUucGF0dGVybi5nbG9iYWwgfHwgcnVsZS5wYXR0ZXJuLnN0aWNreSlcbiAgICAgICAgICAgIHJ1bGUucGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICAgICAgICBpZiAoIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBmb3JtYXQgaXMgaW52YWxpZGA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUudHlwZSAmJiBydWxlLnR5cGUgIT09ICdlbnVtJyAmJiAhVFlQRV9DSEVDS1NbcnVsZS50eXBlXSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCB0eXBlRmFpbHVyZU1lc3NhZ2UobmFtZSwgcnVsZS50eXBlKTtcbiAgICB9XG4gICAgLy8gZW51bSBtZW1iZXJzaGlwOiBhcHBsaWVzIGZvciB0eXBlICdlbnVtJyBvciB3aGVuZXZlciBydWxlLmVudW0gaXMgcHJlc2VudC5cbiAgICBpZiAocnVsZS5lbnVtICYmIEFycmF5LmlzQXJyYXkocnVsZS5lbnVtKSAmJiAhcnVsZS5lbnVtLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgb25lIG9mICR7cnVsZS5lbnVtLmpvaW4oJywgJyl9YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiB0b1J1bGVBcnJheShydWxlcykge1xuICAgIGlmICghcnVsZXMpXG4gICAgICAgIHJldHVybiBbXTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShydWxlcykgPyBydWxlcyA6IFtydWxlc107XG59XG4vKiogTWVtYmVycyBmb3IgZGVlcCBydWxlczogYXJyYXkg4oaSIGluZGV4ZWQgZW50cmllcywgcGxhaW4gb2JqZWN0IOKGkiBrZXkgZW50cmllcy4gKi9cbmZ1bmN0aW9uIGRlZXBNZW1iZXJzKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICByZXR1cm4gdmFsdWUubWFwKChtZW1iZXIsIGluZGV4KSA9PiBbU3RyaW5nKGluZGV4KSwgbWVtYmVyXSk7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gICAgcmV0dXJuIFtdO1xufVxuY29uc3QgUEFTUyA9IHsgZXJyb3I6IG51bGwsIHdhcm5pbmc6IG51bGwgfTtcbi8qKlxuICogRGV2IGd1YXJkIGZvciB0aGUgcHJlLTAuMC43NiB2YWxpZGF0b3IgY29udHJhY3Q6IHJldHVybmluZyBhIHN0cmluZyBvclxuICogYGZhbHNlYCB1c2VkIHRvIEZBSUwgdGhlIHJ1bGUg4oCUIHVuZGVyIHRoZSBgKHJ1bGUsIHZhbHVlKWAgY29udHJhY3QgcmV0dXJuXG4gKiB2YWx1ZXMgYXJlIGlnbm9yZWQgYW5kIG9ubHkgdGhyb3cvcmVqZWN0IGZhaWxzLiBTdWNoIGEgcmV0dXJuIGlzIGFsbW9zdFxuICogY2VydGFpbmx5IGEgbGVnYWN5IHZhbGlkYXRvciBzaWxlbnRseSBwYXNzaW5nLCBzbyBpdCB3YXJucyBvbmNlLlxuICovXG5mdW5jdGlvbiB3YXJuTGVnYWN5VmFsaWRhdG9yUmV0dXJuKG5hbWUsIHJlc3VsdCkge1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAnc3RyaW5nJyAmJiByZXN1bHQgIT09IGZhbHNlKVxuICAgICAgICByZXR1cm47XG4gICAgZGV2V2Fybk9uY2UoYHZhbGlkYXRvci1yZXR1cm46JHtuYW1lfWAsIGBbUHJvRm9ybV0gRmllbGQgXCIke25hbWV9XCI6IGEgY3VzdG9tIHZhbGlkYXRvciByZXR1cm5lZCAke3R5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gJ2Egc3RyaW5nJyA6ICdmYWxzZSd9IOKAlCByZXR1cm4gdmFsdWVzIGFyZSBJR05PUkVEOyB2YWxpZGF0b3JzIGZhaWwgYnkgdGhyb3dpbmcgb3IgcmVqZWN0aW5nIChhIHRocm93biBFcnJvcidzIG1lc3NhZ2UgYmVjb21lcyB0aGUgZmllbGQgZXJyb3IpLmApO1xufVxuLyoqIFJ1biBhIHJ1bGUncyB0cmFuc2Zvcm0sIGNvbnRhaW5pbmcgdGhyb3dzIGFzIGEgcnVsZSBmYWlsdXJlLiAqL1xuZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm0ocnVsZSwgcmF3VmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHJ1bGUudHJhbnNmb3JtICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHJhd1ZhbHVlIH07XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBydWxlLnRyYW5zZm9ybShyYXdWYWx1ZSkgfTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIGZhaWx1cmU6IHJlc29sdmVGYWlsdXJlTWVzc2FnZShlcnIsIHJ1bGUpIH07XG4gICAgfVxufVxuLyoqXG4gKiBGbGF0dGVuIGEgcnVsZSdzIGRlZXAgc291cmNlcyAoYGZpZWxkc2AgcGVyIGtleSwgdGhlbiBgZGVmYXVsdEZpZWxkYCBwZXJcbiAqIG1lbWJlcikgaW50byBbc3ViUnVsZSwgbWVtYmVyVmFsdWUsIG1lbWJlck5hbWVdIHR1cGxlcyDigJQgdGhlIHNpbmdsZSBwbGFjZVxuICogdGhhdCBrbm93cyBob3cgZGVlcCBydWxlcyBtYXAgb250byBhIGNvbnRhaW5lciB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZGVlcFJ1bGVFbnRyaWVzKHJ1bGUsIHZhbHVlLCBuYW1lKSB7XG4gICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgIGlmIChydWxlLmZpZWxkcykge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSB2YWx1ZTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBzdWJSdWxlc10gb2YgT2JqZWN0LmVudHJpZXMocnVsZS5maWVsZHMpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YlJ1bGUgb2YgdG9SdWxlQXJyYXkoc3ViUnVsZXMpKSB7XG4gICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKFtzdWJSdWxlLCBzb3VyY2Vba2V5XSwgYCR7bmFtZX0uJHtrZXl9YF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLmRlZmF1bHRGaWVsZCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIG1lbWJlcl0gb2YgZGVlcE1lbWJlcnModmFsdWUpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YlJ1bGUgb2YgdG9SdWxlQXJyYXkocnVsZS5kZWZhdWx0RmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZW50cmllcy5wdXNoKFtzdWJSdWxlLCBtZW1iZXIsIGAke25hbWV9LiR7a2V5fWBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZW50cmllcztcbn1cbi8qKlxuICogTWVyZ2UgYSBzdWItcnVsZSdzIG91dGNvbWUgaW50byB0aGUgcGFyZW50J3MgY2hhbm5lbHMuIEEgc3ViLXJ1bGUgZmxhZ2dlZFxuICogYHdhcm5pbmdPbmx5YCBjb250cmlidXRlcyBpdHMgZmFpbHVyZSBhcyBhIFdBUk5JTkc7IG90aGVyd2lzZSBpdHMgZXJyb3JcbiAqIGJsb2Nrcy4gUmV0dXJucyB0cnVlIHdoZW4gYSBibG9ja2luZyBlcnJvciBsYW5kZWQgKHN0b3Agd2Fsa2luZykuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlU3ViUmVzdWx0KGFjYywgc3ViUnVsZSwgc3ViKSB7XG4gICAgaWYgKHN1Yi53YXJuaW5nICE9PSBudWxsICYmIGFjYy53YXJuaW5nID09PSBudWxsKVxuICAgICAgICBhY2Mud2FybmluZyA9IHN1Yi53YXJuaW5nO1xuICAgIGlmIChzdWIuZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHN1YlJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgICAgIGlmIChhY2Mud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICBhY2Mud2FybmluZyA9IHN1Yi5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFjYy5lcnJvciA9IHN1Yi5lcnJvcjtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICogRm9sZCBvbmUgcnVsZSdzIG91dGNvbWUgaW50byB0aGUgcnVuLWxldmVsIGNoYW5uZWxzLiBBIHJ1bGUgZmxhZ2dlZFxuICogYHdhcm5pbmdPbmx5YCBkb3duZ3JhZGVzIGV2ZXJ5dGhpbmcgaXQgcHJvZHVjZWQgKG93biBjaGVja3MgQU5EIGRlZXBcbiAqIHN1Yi1ydWxlcykgdG8gYSB3YXJuaW5nLiBSZXR1cm5zIHRoZSBibG9ja2luZyBlcnJvciB0byBzdXJmYWNlLCBvciBudWxsLlxuICovXG5mdW5jdGlvbiBmb2xkUnVsZVJlc3VsdChydWxlLCByZXN1bHQsIHN0YXRlKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChydWxlLndhcm5pbmdPbmx5KSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoX2EgPSByZXN1bHQuZXJyb3IpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHJlc3VsdC53YXJuaW5nO1xuICAgICAgICBpZiAoY29udGVudCAhPT0gbnVsbCAmJiBzdGF0ZS53YXJuaW5nID09PSBudWxsKVxuICAgICAgICAgICAgc3RhdGUud2FybmluZyA9IGNvbnRlbnQ7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAocmVzdWx0Lndhcm5pbmcgIT09IG51bGwgJiYgc3RhdGUud2FybmluZyA9PT0gbnVsbClcbiAgICAgICAgc3RhdGUud2FybmluZyA9IHJlc3VsdC53YXJuaW5nO1xuICAgIHJldHVybiByZXN1bHQuZXJyb3I7XG59XG4vKiogRXZhbHVhdGUgT05FIHJ1bGUgKHRyYW5zZm9ybSDihpIgYnVpbHRpbiBjaGVja3Mg4oaSIHZhbGlkYXRvciDihpIgZGVlcCBydWxlcyk7IGN1c3RvbSB2YWxpZGF0b3JzIGFyZSBhd2FpdGVkLiAqL1xuZnVuY3Rpb24gZXZhbFJ1bGVBc3luYyhydWxlLCByYXdWYWx1ZSwgbmFtZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHByZXAgPSBhcHBseVRyYW5zZm9ybShydWxlLCByYXdWYWx1ZSk7XG4gICAgICAgIGlmICghcHJlcC5vaylcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBwcmVwLmZhaWx1cmUsIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcmVwLnZhbHVlO1xuICAgICAgICBsZXQgZmFpbHVyZSA9IGNoZWNrQnVpbHRpblJ1bGVzKHJ1bGUsIHZhbHVlLCBuYW1lKTtcbiAgICAgICAgaWYgKGZhaWx1cmUgPT09IG51bGwgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9ICh5aWVsZCBydWxlLnZhbGlkYXRvcihydWxlLCB2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHdhcm5MZWdhY3lWYWxpZGF0b3JSZXR1cm4obmFtZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBmYWlsdXJlID0gcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZhaWx1cmUgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogZmFpbHVyZSwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICBpZiAoKHJ1bGUuZmllbGRzIHx8IHJ1bGUuZGVmYXVsdEZpZWxkKSAmJiAhaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gRGVlcCBydWxlcyBuZWVkIGEgY29udGFpbmVyOyBhIG5vbi1lbXB0eSBwcmltaXRpdmUgZmFpbHMgdGhlIFBBUkVOVFxuICAgICAgICAgICAgLy8gKGNsZWFyIGF0dHJpYnV0aW9uKSBpbnN0ZWFkIG9mIHByb2R1Y2luZyBjb25mdXNpbmcgY2hpbGQgZXJyb3JzLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBlcnJvcjogcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYW4gb2JqZWN0IG9yIGFuIGFycmF5YCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWNjID0geyBlcnJvcjogbnVsbCwgd2FybmluZzogbnVsbCB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBbc3ViUnVsZSwgc3ViVmFsdWUsIHN1Yk5hbWVdIG9mIGRlZXBSdWxlRW50cmllcyhydWxlLCB2YWx1ZSwgbmFtZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobWVyZ2VTdWJSZXN1bHQoYWNjLCBzdWJSdWxlLCB5aWVsZCBldmFsUnVsZUFzeW5jKHN1YlJ1bGUsIHN1YlZhbHVlLCBzdWJOYW1lKSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUEFTUztcbiAgICB9KTtcbn1cbi8qKlxuICogUnVsZSBydW4uIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBhd2FpdGVkIChzeW5jIG9yIGFzeW5jKTogcmVzb2x2aW5nIHBhc3NlcyxcbiAqIHJlamVjdGluZy90aHJvd2luZyBmYWlscy4gUmV0dXJuIHZhbHVlcyBhcmUgaWdub3JlZC5cbiAqXG4gKiBUaGUgcGVyLXJ1bGUgdHJ5L2NhdGNoIGlzIHRoZSB0b3RhbGl0eSBjaG9rZSBwb2ludDogTk8gaW5wdXQg4oCUIGluY2x1ZGluZ1xuICogZXhvdGljIHZhbHVlcyB0aGF0IGJyZWFrIGEgYnVpbHRpbiBjaGVjayDigJQgbWF5IGVzY2FwZSBhcyBhIHRocm93OyBldmVyeVxuICogZmFpbHVyZSBzdXJmYWNlcyB0aHJvdWdoIHRoZSBlcnJvci93YXJuaW5nIGNoYW5uZWxzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuUnVsZXNBc3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCBydWxlcywgaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHsgd2FybmluZzogbnVsbCB9O1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcmVzb2x2ZVJ1bGVzKHJ1bGVzLCB2YWx1ZXMsIGluc3RhbmNlKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0geWllbGQgZXZhbFJ1bGVBc3luYyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0geyBlcnJvcjogcmVzb2x2ZUZhaWx1cmVNZXNzYWdlKGVyciwgcnVsZSksIHdhcm5pbmc6IG51bGwgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZm9sZFJ1bGVSZXN1bHQocnVsZSwgcmVzdWx0LCBzdGF0ZSk7XG4gICAgICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3IsIHdhcm5pbmc6IHN0YXRlLndhcm5pbmcgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgd2FybmluZzogc3RhdGUud2FybmluZyB9O1xuICAgIH0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|