@1money/component-ui 0.0.70 → 0.0.73
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/hooks/useOtpVerification.js +3 -2
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
- package/es/business/Select/Network/NetworkSelect.js +2 -2
- package/es/components/Accordion/Accordion.js +3 -2
- package/es/components/Calendar/Calendar.js +3 -2
- package/es/components/Carousel/Carousel.js +3 -2
- package/es/components/Checkbox/BaseCheckbox.js +3 -2
- package/es/components/Checkbox/Checkbox.js +2 -2
- package/es/components/Checkbox/CheckboxGroup.js +3 -2
- package/es/components/CoachMark/CoachMark.js +3 -2
- package/es/components/Copy/Copy.js +2 -2
- package/es/components/Dialog/Dialog.js +2 -2
- package/es/components/Drawer/Drawer.js +2 -2
- package/es/components/Input/Amount/Amount.js +2 -2
- package/es/components/Input/Input/Input.js +3 -2
- package/es/components/Input/Mask/Mask.js +3 -2
- package/es/components/Input/OTP/OTP.js +3 -2
- package/es/components/Input/Password/Password.js +3 -2
- package/es/components/Input/Search/Search.js +3 -2
- package/es/components/Input/TextArea/TextArea.js +3 -2
- package/es/components/Input/Trade/Trade.js +2 -2
- package/es/components/Input/useAmountInput.js +4 -2
- package/es/components/Input/useSyncRef.js +2 -2
- package/es/components/Navigation/Nav.js +2 -2
- package/es/components/Navigation/Navigation.js +5 -2
- package/es/components/Pagination/Pagination.js +2 -2
- package/es/components/Pagination/usePagination.js +3 -2
- package/es/components/Popconfirm/Popconfirm.js +2 -2
- package/es/components/Portal/Portal.js +2 -2
- package/es/components/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +60 -24
- package/es/components/ProForm/ProFormDependency.js +4 -1
- package/es/components/ProForm/ProFormGroup.js +2 -2
- package/es/components/ProForm/ProFormItem.js +73 -36
- package/es/components/ProForm/ProFormList.js +3 -2
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +13 -3
- package/es/components/ProForm/context.d.ts +22 -3
- package/es/components/ProForm/context.js +49 -10
- package/es/components/ProForm/core/constants.d.ts +8 -1
- package/es/components/ProForm/core/constants.js +9 -6
- package/es/components/ProForm/core/hooks/useForm.js +174 -320
- package/es/components/ProForm/core/hooks/useFormCore.js +84 -178
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/pathUtils.d.ts +6 -0
- package/es/components/ProForm/core/pathUtils.js +59 -0
- package/es/components/ProForm/core/runRules.d.ts +23 -0
- package/es/components/ProForm/core/runRules.js +233 -0
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +105 -61
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/createProFormField.js +64 -59
- package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
- package/es/components/ProForm/index.d.ts +11 -4
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +89 -14
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +2 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +2 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +79 -13
- package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
- package/es/components/ProForm/style/ProForm.css +6 -0
- package/es/components/ProForm/utils.d.ts +14 -3
- package/es/components/ProForm/utils.js +73 -70
- package/es/components/ProTable/ProTable.js +3 -2
- package/es/components/ProTable/core/useAwaitableReload.js +3 -2
- package/es/components/ProTable/useFetchData.js +4 -2
- package/es/components/Radio/Radio.js +3 -2
- package/es/components/Radio/RadioGroup.js +3 -2
- package/es/components/ResizeObserver/useResizeObserver.js +2 -2
- package/es/components/Segment/Segment.js +4 -2
- package/es/components/Select/Select.js +3 -2
- package/es/components/Select/SelectCustom.js +2 -2
- package/es/components/Select/useSelectShell.js +3 -2
- package/es/components/Slider/Slider.js +3 -2
- package/es/components/Switch/Switch.js +3 -2
- package/es/components/Table/Table.js +14 -28
- package/es/components/Table/VirtualTable.js +18 -28
- package/es/components/Table/core/columnUtil.d.ts +9 -0
- package/es/components/Table/core/columnUtil.js +34 -0
- package/es/components/Table/core/useTableColumns.d.ts +4 -13
- package/es/components/Table/core/useTableColumns.js +55 -24
- package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/es/components/Table/core/useTableDataPipeline.js +66 -73
- package/es/components/Table/core/useTableExpand.js +3 -2
- package/es/components/Table/core/useTableSelection.js +7 -4
- package/es/components/Table/core/useTableSetup.js +4 -2
- package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/es/components/Table/features/ExpandTrigger.js +14 -8
- package/es/components/Table/features/FilterTrigger.js +21 -17
- package/es/components/Table/features/SelectionColumn.d.ts +11 -6
- package/es/components/Table/features/SelectionColumn.js +12 -5
- package/es/components/Table/features/SortTrigger.d.ts +4 -2
- package/es/components/Table/features/SortTrigger.js +8 -3
- package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
- package/es/components/Table/internal/kernel/Cell/index.js +2 -2
- package/es/components/Table/internal/kernel/Table.js +3 -3
- package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
- package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
- package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
- package/es/components/Table/renderers/HeaderCell.js +3 -2
- package/es/components/Table/renderers/TableShell.d.ts +13 -0
- package/es/components/Table/renderers/TableShell.js +25 -0
- package/es/components/Table/style/Table.css +3 -0
- package/es/components/Tabs/Tabs.js +4 -2
- package/es/components/Tooltip/Tooltip.js +3 -2
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/components/Tour/Tour.js +3 -2
- package/es/components/Trigger/Trigger.js +3 -2
- package/es/components/Typography/Typography.js +2 -2
- package/es/components/Typography/useTypographyEnhancements.js +3 -2
- package/es/components/Upload/Upload.js +2 -2
- package/es/components/Upload/UploadFileBar.js +2 -2
- package/es/components/VirtualList/VirtualList.js +3 -2
- package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
- package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
- package/lib/business/Select/Network/NetworkSelect.js +3 -3
- package/lib/components/Accordion/Accordion.js +5 -4
- package/lib/components/Calendar/Calendar.js +6 -5
- package/lib/components/Carousel/Carousel.js +5 -4
- package/lib/components/Checkbox/BaseCheckbox.js +5 -4
- package/lib/components/Checkbox/Checkbox.js +3 -3
- package/lib/components/Checkbox/CheckboxGroup.js +7 -6
- package/lib/components/CoachMark/CoachMark.js +7 -6
- package/lib/components/Copy/Copy.js +3 -3
- package/lib/components/Dialog/Dialog.js +6 -6
- package/lib/components/Drawer/Drawer.js +10 -10
- package/lib/components/Input/Amount/Amount.js +6 -5
- package/lib/components/Input/Input/Input.js +7 -6
- package/lib/components/Input/Mask/Mask.js +9 -8
- package/lib/components/Input/OTP/OTP.js +9 -8
- package/lib/components/Input/Password/Password.js +6 -5
- package/lib/components/Input/Search/Search.js +8 -7
- package/lib/components/Input/TextArea/TextArea.js +5 -4
- package/lib/components/Input/Trade/Trade.js +5 -4
- package/lib/components/Input/useAmountInput.js +13 -11
- package/lib/components/Input/useSyncRef.js +4 -3
- package/lib/components/Navigation/Nav.js +3 -3
- package/lib/components/Navigation/Navigation.js +10 -7
- package/lib/components/Pagination/Pagination.js +4 -3
- package/lib/components/Pagination/usePagination.js +7 -6
- package/lib/components/Popconfirm/Popconfirm.js +3 -3
- package/lib/components/Portal/Portal.js +4 -4
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +66 -30
- package/lib/components/ProForm/ProFormDependency.js +4 -1
- package/lib/components/ProForm/ProFormGroup.js +3 -3
- package/lib/components/ProForm/ProFormItem.js +72 -34
- package/lib/components/ProForm/ProFormList.js +10 -9
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +15 -5
- package/lib/components/ProForm/context.d.ts +22 -3
- package/lib/components/ProForm/context.js +49 -10
- package/lib/components/ProForm/core/constants.d.ts +8 -1
- package/lib/components/ProForm/core/constants.js +10 -7
- package/lib/components/ProForm/core/hooks/useForm.js +181 -327
- package/lib/components/ProForm/core/hooks/useFormCore.js +96 -190
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
- package/lib/components/ProForm/core/pathUtils.js +68 -0
- package/lib/components/ProForm/core/runRules.d.ts +23 -0
- package/lib/components/ProForm/core/runRules.js +242 -0
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +106 -62
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/createProFormField.js +63 -58
- package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
- package/lib/components/ProForm/index.d.ts +11 -4
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +89 -14
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +2 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +84 -18
- package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
- package/lib/components/ProForm/style/ProForm.css +6 -0
- package/lib/components/ProForm/utils.d.ts +14 -3
- package/lib/components/ProForm/utils.js +91 -74
- package/lib/components/ProTable/ProTable.js +10 -9
- package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
- package/lib/components/ProTable/useFetchData.js +15 -13
- package/lib/components/Radio/Radio.js +6 -5
- package/lib/components/Radio/RadioGroup.js +5 -4
- package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
- package/lib/components/Segment/Segment.js +7 -5
- package/lib/components/Select/Select.js +23 -22
- package/lib/components/Select/SelectCustom.js +8 -8
- package/lib/components/Select/useSelectShell.js +5 -4
- package/lib/components/Slider/Slider.js +6 -5
- package/lib/components/Switch/Switch.js +5 -4
- package/lib/components/Table/Table.js +13 -27
- package/lib/components/Table/VirtualTable.js +17 -27
- package/lib/components/Table/core/columnUtil.d.ts +9 -0
- package/lib/components/Table/core/columnUtil.js +42 -0
- package/lib/components/Table/core/useTableColumns.d.ts +4 -13
- package/lib/components/Table/core/useTableColumns.js +57 -26
- package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/lib/components/Table/core/useTableDataPipeline.js +73 -80
- package/lib/components/Table/core/useTableExpand.js +6 -5
- package/lib/components/Table/core/useTableSelection.js +13 -10
- package/lib/components/Table/core/useTableSetup.js +8 -5
- package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/lib/components/Table/features/ExpandTrigger.js +14 -8
- package/lib/components/Table/features/FilterTrigger.js +21 -17
- package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
- package/lib/components/Table/features/SelectionColumn.js +12 -5
- package/lib/components/Table/features/SortTrigger.d.ts +4 -2
- package/lib/components/Table/features/SortTrigger.js +8 -3
- package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
- package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
- package/lib/components/Table/internal/kernel/Table.js +7 -6
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
- package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
- package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
- package/lib/components/Table/renderers/HeaderCell.js +3 -2
- package/lib/components/Table/renderers/TableShell.d.ts +13 -0
- package/lib/components/Table/renderers/TableShell.js +31 -0
- package/lib/components/Table/style/Table.css +3 -0
- package/lib/components/Tabs/Tabs.js +7 -5
- package/lib/components/Tooltip/Tooltip.js +5 -4
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/components/Tour/Tour.js +7 -6
- package/lib/components/Trigger/Trigger.js +5 -4
- package/lib/components/Typography/Typography.js +5 -4
- package/lib/components/Typography/useTypographyEnhancements.js +8 -7
- package/lib/components/Upload/Upload.js +5 -4
- package/lib/components/Upload/UploadFileBar.js +4 -3
- package/lib/components/VirtualList/VirtualList.js +8 -7
- package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
- package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +2 -2
- package/scripts/mcp-server/examples.generated.json +54 -0
- package/scripts/mcp-server/index.generated.json +1212 -80
|
@@ -5,61 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.useFormCore = exports["default"] = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
var
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
10
|
var _react = require("react");
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
|
-
// Nested path helpers (dot-notation support, e.g. "items.0.title")
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
function getNestedValue(obj, path) {
|
|
21
|
-
var keys = path.split('.');
|
|
22
|
-
var current = obj;
|
|
23
|
-
var _iterator = _createForOfIteratorHelper(keys),
|
|
24
|
-
_step;
|
|
25
|
-
try {
|
|
26
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
27
|
-
var key = _step.value;
|
|
28
|
-
if (current === null || current === undefined || (0, _typeof2["default"])(current) !== 'object') return undefined;
|
|
29
|
-
current = current[key];
|
|
30
|
-
}
|
|
31
|
-
} catch (err) {
|
|
32
|
-
_iterator.e(err);
|
|
33
|
-
} finally {
|
|
34
|
-
_iterator.f();
|
|
35
|
-
}
|
|
36
|
-
return current;
|
|
37
|
-
}
|
|
38
|
-
function setNestedValue(obj, path, value) {
|
|
39
|
-
var keys = path.split('.');
|
|
40
|
-
if (keys.length === 1) return Object.assign(Object.assign({}, obj), (0, _defineProperty2["default"])({}, path, value));
|
|
41
|
-
var result = Object.assign({}, obj);
|
|
42
|
-
var current = result;
|
|
43
|
-
for (var i = 0; i < keys.length - 1; i++) {
|
|
44
|
-
var key = keys[i];
|
|
45
|
-
var nextKey = keys[i + 1];
|
|
46
|
-
var isNextArray = /^\d+$/.test(nextKey);
|
|
47
|
-
if (current[key] === undefined || current[key] === null) {
|
|
48
|
-
current[key] = isNextArray ? [] : {};
|
|
49
|
-
}
|
|
50
|
-
if (Array.isArray(current[key])) {
|
|
51
|
-
current[key] = (0, _toConsumableArray2["default"])(current[key]);
|
|
52
|
-
} else {
|
|
53
|
-
current[key] = Object.assign({}, current[key]);
|
|
54
|
-
}
|
|
55
|
-
current = current[key];
|
|
56
|
-
}
|
|
57
|
-
current[keys[keys.length - 1]] = value;
|
|
58
|
-
return result;
|
|
59
|
-
}
|
|
60
|
-
function resolveValue(values, name) {
|
|
61
|
-
return name.includes('.') ? getNestedValue(values, name) : values[name];
|
|
62
|
-
}
|
|
11
|
+
var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
|
|
12
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
13
|
+
var _pathUtils = require("../pathUtils");
|
|
14
|
+
var _runRules = require("../runRules");
|
|
63
15
|
var useFormCore = exports.useFormCore = function useFormCore() {
|
|
64
16
|
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
65
17
|
var _config$initialValues = config.initialValues,
|
|
@@ -90,18 +42,30 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
90
42
|
setErrors = _useState4[1];
|
|
91
43
|
var _useState5 = (0, _react.useState)({}),
|
|
92
44
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
93
|
-
|
|
94
|
-
|
|
45
|
+
warnings = _useState6[0],
|
|
46
|
+
setWarnings = _useState6[1];
|
|
95
47
|
var _useState7 = (0, _react.useState)({}),
|
|
96
48
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
49
|
+
touched = _useState8[0],
|
|
50
|
+
setTouched = _useState8[1];
|
|
51
|
+
// Live rule registry — ONE stable object mutated in place. Registration must
|
|
52
|
+
// not trigger renders, and submit-time validation must always read the latest
|
|
53
|
+
// rules (they can change between renders, e.g. a conditional `required`).
|
|
54
|
+
var fieldRulesRef = (0, _react.useRef)({});
|
|
55
|
+
// Imperative mirror of `values`. Computing the next values OUTSIDE the
|
|
56
|
+
// setState updater keeps the updater pure (StrictMode replays updaters,
|
|
57
|
+
// which double-fired onValuesChange) and lets multiple set calls in the
|
|
58
|
+
// same tick see each other's writes.
|
|
59
|
+
var valuesRef = (0, _react.useRef)(values);
|
|
60
|
+
var commitValues = (0, _useMemoizedFn["default"])(function (newValues) {
|
|
61
|
+
valuesRef.current = newValues;
|
|
62
|
+
setValues(newValues);
|
|
63
|
+
});
|
|
64
|
+
var setFieldValue = (0, _useMemoizedFn["default"])(function (name, value) {
|
|
65
|
+
var prev = valuesRef.current;
|
|
66
|
+
var newValues = name.includes('.') ? (0, _pathUtils.setNestedValue)(prev, name, value) : Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, value));
|
|
67
|
+
commitValues(newValues);
|
|
68
|
+
onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange((0, _defineProperty2["default"])({}, name, value), newValues);
|
|
105
69
|
if (value !== '' && value !== null && value !== undefined) {
|
|
106
70
|
setErrors(function (prev) {
|
|
107
71
|
if (!prev[name]) return prev;
|
|
@@ -111,7 +75,7 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
111
75
|
});
|
|
112
76
|
}
|
|
113
77
|
});
|
|
114
|
-
var setFieldError = (0,
|
|
78
|
+
var setFieldError = (0, _useMemoizedFn["default"])(function (name, error) {
|
|
115
79
|
setErrors(function (prev) {
|
|
116
80
|
if (error === null) {
|
|
117
81
|
if (!prev[name]) return prev;
|
|
@@ -122,76 +86,46 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
122
86
|
return Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, error));
|
|
123
87
|
});
|
|
124
88
|
});
|
|
125
|
-
var
|
|
126
|
-
|
|
127
|
-
|
|
89
|
+
var setFieldWarning = (0, _useMemoizedFn["default"])(function (name, warning) {
|
|
90
|
+
setWarnings(function (prev) {
|
|
91
|
+
if (warning === null) {
|
|
92
|
+
if (!prev[name]) return prev;
|
|
93
|
+
var newWarnings = Object.assign({}, prev);
|
|
94
|
+
delete newWarnings[name];
|
|
95
|
+
return newWarnings;
|
|
96
|
+
}
|
|
97
|
+
if (prev[name] === warning) return prev;
|
|
98
|
+
return Object.assign(Object.assign({}, prev), (0, _defineProperty2["default"])({}, name, warning));
|
|
128
99
|
});
|
|
129
100
|
});
|
|
130
|
-
var
|
|
131
|
-
|
|
101
|
+
var registerField = (0, _useMemoizedFn["default"])(function (name, rules) {
|
|
102
|
+
fieldRulesRef.current[name] = rules;
|
|
132
103
|
});
|
|
133
|
-
var
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
});
|
|
104
|
+
var getFieldRules = (0, _useMemoizedFn["default"])(function (name) {
|
|
105
|
+
return fieldRulesRef.current[name];
|
|
106
|
+
});
|
|
107
|
+
var unregisterField = (0, _useMemoizedFn["default"])(function (name) {
|
|
108
|
+
delete fieldRulesRef.current[name];
|
|
139
109
|
});
|
|
140
|
-
var validateField = (0,
|
|
110
|
+
var validateField = (0, _useMemoizedFn["default"])(function (name) {
|
|
141
111
|
var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
142
112
|
var providedValue = arguments.length > 2 ? arguments[2] : undefined;
|
|
143
|
-
var value = providedValue !== undefined ? providedValue : resolveValue(
|
|
144
|
-
var
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
setFieldError(name, error);
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
if (rule.min && typeof value === 'string' && value.length < rule.min) {
|
|
155
|
-
var _error = rule.message || "".concat(name, " must be at least ").concat(rule.min, " characters");
|
|
156
|
-
setFieldError(name, _error);
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
if (rule.max && typeof value === 'string' && value.length > rule.max) {
|
|
160
|
-
var _error2 = rule.message || "".concat(name, " must be no more than ").concat(rule.max, " characters");
|
|
161
|
-
setFieldError(name, _error2);
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
|
|
165
|
-
var _error3 = rule.message || "".concat(name, " format is invalid");
|
|
166
|
-
setFieldError(name, _error3);
|
|
167
|
-
return false;
|
|
168
|
-
}
|
|
169
|
-
if (rule.validator && typeof rule.validator === 'function') {
|
|
170
|
-
try {
|
|
171
|
-
var result = rule.validator(value, values);
|
|
172
|
-
if (result !== true) {
|
|
173
|
-
setFieldError(name, typeof result === 'string' ? result : 'Validation failed');
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
} catch (err) {
|
|
177
|
-
var message = err instanceof Error ? err.message : 'Validation error';
|
|
178
|
-
setFieldError(name, message);
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
} catch (err) {
|
|
184
|
-
_iterator2.e(err);
|
|
185
|
-
} finally {
|
|
186
|
-
_iterator2.f();
|
|
113
|
+
var value = providedValue !== undefined ? providedValue : (0, _pathUtils.resolveValue)(valuesRef.current, name);
|
|
114
|
+
var _runRulesSync = (0, _runRules.runRulesSync)(name, value, valuesRef.current, rules),
|
|
115
|
+
error = _runRulesSync.error,
|
|
116
|
+
warning = _runRulesSync.warning;
|
|
117
|
+
setFieldWarning(name, warning);
|
|
118
|
+
if (error !== null) {
|
|
119
|
+
setFieldError(name, error);
|
|
120
|
+
return false;
|
|
187
121
|
}
|
|
188
122
|
if (errors[name]) {
|
|
189
123
|
setFieldError(name, null);
|
|
190
124
|
}
|
|
191
125
|
return true;
|
|
192
126
|
});
|
|
193
|
-
var validateFields = (0,
|
|
194
|
-
var fieldsRulesToValidate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] :
|
|
127
|
+
var validateFields = (0, _useMemoizedFn["default"])(function () {
|
|
128
|
+
var fieldsRulesToValidate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : fieldRulesRef.current;
|
|
195
129
|
var isValid = true;
|
|
196
130
|
Object.keys(fieldsRulesToValidate).forEach(function (name) {
|
|
197
131
|
var rules = fieldsRulesToValidate[name];
|
|
@@ -201,68 +135,36 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
201
135
|
});
|
|
202
136
|
return isValid;
|
|
203
137
|
});
|
|
204
|
-
var handleSubmitInternal = (0,
|
|
138
|
+
var handleSubmitInternal = (0, _useMemoizedFn["default"])(function () {
|
|
139
|
+
var currentValues = valuesRef.current;
|
|
140
|
+
var currentRules = fieldRulesRef.current;
|
|
205
141
|
var hasErrors = false;
|
|
206
142
|
var newErrors = {};
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
var value = resolveValue(
|
|
210
|
-
var
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
if (rule.min && typeof value === 'string' && value.length < rule.min) {
|
|
221
|
-
newErrors[fieldName] = rule.message || "".concat(fieldName, " must be at least ").concat(rule.min, " characters");
|
|
222
|
-
hasErrors = true;
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
if (rule.max && typeof value === 'string' && value.length > rule.max) {
|
|
226
|
-
newErrors[fieldName] = rule.message || "".concat(fieldName, " must be no more than ").concat(rule.max, " characters");
|
|
227
|
-
hasErrors = true;
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
|
|
231
|
-
newErrors[fieldName] = rule.message || "".concat(fieldName, " format is invalid");
|
|
232
|
-
hasErrors = true;
|
|
233
|
-
break;
|
|
234
|
-
}
|
|
235
|
-
if (rule.validator && typeof rule.validator === 'function') {
|
|
236
|
-
try {
|
|
237
|
-
var result = rule.validator(value, values);
|
|
238
|
-
if (result !== true) {
|
|
239
|
-
newErrors[fieldName] = typeof result === 'string' ? result : 'Validation failed';
|
|
240
|
-
hasErrors = true;
|
|
241
|
-
break;
|
|
242
|
-
}
|
|
243
|
-
} catch (err) {
|
|
244
|
-
newErrors[fieldName] = err instanceof Error ? err.message : 'Validation error';
|
|
245
|
-
hasErrors = true;
|
|
246
|
-
break;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
} catch (err) {
|
|
251
|
-
_iterator3.e(err);
|
|
252
|
-
} finally {
|
|
253
|
-
_iterator3.f();
|
|
143
|
+
var newWarnings = {};
|
|
144
|
+
Object.keys(currentRules).forEach(function (fieldName) {
|
|
145
|
+
var value = (0, _pathUtils.resolveValue)(currentValues, fieldName);
|
|
146
|
+
var _runRulesSync2 = (0, _runRules.runRulesSync)(fieldName, value, currentValues, currentRules[fieldName]),
|
|
147
|
+
error = _runRulesSync2.error,
|
|
148
|
+
warning = _runRulesSync2.warning;
|
|
149
|
+
if (error !== null) {
|
|
150
|
+
newErrors[fieldName] = error;
|
|
151
|
+
hasErrors = true;
|
|
152
|
+
}
|
|
153
|
+
if (warning !== null) {
|
|
154
|
+
newWarnings[fieldName] = warning;
|
|
254
155
|
}
|
|
255
156
|
});
|
|
256
157
|
setErrors(newErrors);
|
|
158
|
+
setWarnings(newWarnings);
|
|
257
159
|
if (!hasErrors) {
|
|
258
|
-
onFinish === null || onFinish === void 0 ? void 0 : onFinish(
|
|
160
|
+
onFinish === null || onFinish === void 0 ? void 0 : onFinish(currentValues);
|
|
259
161
|
return {
|
|
260
162
|
success: true,
|
|
261
|
-
values:
|
|
163
|
+
values: currentValues
|
|
262
164
|
};
|
|
263
165
|
} else {
|
|
264
166
|
onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
|
|
265
|
-
values:
|
|
167
|
+
values: currentValues,
|
|
266
168
|
errors: newErrors
|
|
267
169
|
});
|
|
268
170
|
return {
|
|
@@ -271,32 +173,31 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
271
173
|
};
|
|
272
174
|
}
|
|
273
175
|
});
|
|
274
|
-
var handleSubmit = (0,
|
|
176
|
+
var handleSubmit = (0, _useEventCallback["default"])(function (e) {
|
|
275
177
|
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
276
178
|
return handleSubmitInternal();
|
|
277
179
|
});
|
|
278
|
-
var resetFields = (0,
|
|
279
|
-
|
|
180
|
+
var resetFields = (0, _useMemoizedFn["default"])(function () {
|
|
181
|
+
commitValues(initialValues);
|
|
280
182
|
setErrors({});
|
|
183
|
+
setWarnings({});
|
|
281
184
|
setTouched({});
|
|
282
185
|
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
283
186
|
});
|
|
284
|
-
var handleReset = (0,
|
|
187
|
+
var handleReset = (0, _useEventCallback["default"])(function (e) {
|
|
285
188
|
e === null || e === void 0 ? void 0 : e.preventDefault();
|
|
286
189
|
resetFields();
|
|
287
190
|
});
|
|
288
|
-
var getFieldValue = (0,
|
|
289
|
-
return resolveValue(
|
|
191
|
+
var getFieldValue = (0, _useMemoizedFn["default"])(function (name) {
|
|
192
|
+
return (0, _pathUtils.resolveValue)(valuesRef.current, name);
|
|
290
193
|
});
|
|
291
|
-
var getFieldsValue = (0,
|
|
292
|
-
return
|
|
194
|
+
var getFieldsValue = (0, _useMemoizedFn["default"])(function () {
|
|
195
|
+
return valuesRef.current;
|
|
293
196
|
});
|
|
294
|
-
var setFieldsValue = (0,
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
return updatedValues;
|
|
299
|
-
});
|
|
197
|
+
var setFieldsValue = (0, _useMemoizedFn["default"])(function (newValues) {
|
|
198
|
+
var updatedValues = Object.assign(Object.assign({}, valuesRef.current), newValues);
|
|
199
|
+
commitValues(updatedValues);
|
|
200
|
+
onValuesChange === null || onValuesChange === void 0 ? void 0 : onValuesChange(newValues, updatedValues);
|
|
300
201
|
});
|
|
301
202
|
var formInstance = (0, _react.useMemo)(function () {
|
|
302
203
|
return {
|
|
@@ -313,10 +214,12 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
313
214
|
return {
|
|
314
215
|
values: values,
|
|
315
216
|
errors: errors,
|
|
217
|
+
warnings: warnings,
|
|
316
218
|
touched: touched,
|
|
317
219
|
formInstance: formInstance,
|
|
318
220
|
setFieldValue: setFieldValue,
|
|
319
221
|
setFieldError: setFieldError,
|
|
222
|
+
setFieldWarning: setFieldWarning,
|
|
320
223
|
validateField: validateField,
|
|
321
224
|
registerField: registerField,
|
|
322
225
|
unregisterField: unregisterField,
|
|
@@ -327,15 +230,18 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
327
230
|
requiredMark: requiredMark,
|
|
328
231
|
validateTrigger: validateTrigger
|
|
329
232
|
};
|
|
330
|
-
}, [values, errors, touched, formInstance, setFieldValue, setFieldError, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
|
|
233
|
+
}, [values, errors, warnings, touched, formInstance, setFieldValue, setFieldError, setFieldWarning, validateField, registerField, unregisterField, size, labelAlign, disabled, colon, requiredMark, validateTrigger]);
|
|
331
234
|
return {
|
|
332
235
|
values: values,
|
|
333
236
|
errors: errors,
|
|
237
|
+
warnings: warnings,
|
|
334
238
|
touched: touched,
|
|
335
|
-
|
|
239
|
+
// Live registry — stable identity, mutated in place by register/unregister.
|
|
240
|
+
fieldRules: fieldRulesRef.current,
|
|
336
241
|
getFieldRules: getFieldRules,
|
|
337
242
|
setFieldValue: setFieldValue,
|
|
338
243
|
setFieldError: setFieldError,
|
|
244
|
+
setFieldWarning: setFieldWarning,
|
|
339
245
|
setFieldsValue: setFieldsValue,
|
|
340
246
|
getFieldValue: getFieldValue,
|
|
341
247
|
getFieldsValue: getFieldsValue,
|
|
@@ -351,4 +257,4 @@ var useFormCore = exports.useFormCore = function useFormCore() {
|
|
|
351
257
|
};
|
|
352
258
|
};
|
|
353
259
|
var _default = exports["default"] = useFormCore;
|
|
354
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfaG9va3MiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImdldE5lc3RlZFZhbHVlIiwib2JqIiwicGF0aCIsImtleXMiLCJzcGxpdCIsImN1cnJlbnQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImtleSIsInVuZGVmaW5lZCIsIl90eXBlb2YyIiwiZXJyIiwic2V0TmVzdGVkVmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkyIiwicmVzdWx0IiwiaSIsIm5leHRLZXkiLCJpc05leHRBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZXNvbHZlVmFsdWUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsInVzZUZvcm1Db3JlIiwiZXhwb3J0cyIsImNvbmZpZyIsImFyZ3VtZW50cyIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZmllbGRSdWxlcyIsInNldEZpZWxkUnVsZXMiLCJzZXRGaWVsZFZhbHVlIiwidXNlTWVtb2l6ZWRGbiIsInByZXYiLCJuZXdWYWx1ZXMiLCJuZXdFcnJvcnMiLCJzZXRGaWVsZEVycm9yIiwiZXJyb3IiLCJyZWdpc3RlckZpZWxkIiwicnVsZXMiLCJnZXRGaWVsZFJ1bGVzIiwidW5yZWdpc3RlckZpZWxkIiwibmV3UnVsZXMiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJydWxlIiwicmVxdWlyZWQiLCJtZXNzYWdlIiwiY29uY2F0IiwibWluIiwibWF4IiwicGF0dGVybiIsInZhbGlkYXRvciIsIkVycm9yIiwidmFsaWRhdGVGaWVsZHMiLCJmaWVsZHNSdWxlc1RvVmFsaWRhdGUiLCJpc1ZhbGlkIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiaGFzRXJyb3JzIiwiZmllbGROYW1lIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInN1Y2Nlc3MiLCJoYW5kbGVTdWJtaXQiLCJ1c2VFdmVudENhbGxiYWNrIiwicHJldmVudERlZmF1bHQiLCJyZXNldEZpZWxkcyIsImhhbmRsZVJlc2V0IiwiZ2V0RmllbGRWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRzVmFsdWUiLCJ1cGRhdGVkVmFsdWVzIiwiZm9ybUluc3RhbmNlIiwidXNlTWVtbyIsInN1Ym1pdCIsImNvcmVDb250ZXh0U2hhcGUiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBZ0UsU0FBQUUsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLENBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsQ0FBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLENBQUEsSUFBQUQsQ0FBQSx1QkFBQUEsQ0FBQSxDQUFBUSxNQUFBLElBQUFOLENBQUEsS0FBQUYsQ0FBQSxHQUFBRSxDQUFBLE9BQUFPLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUFDLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFBLEVBQUEsV0FBQUgsRUFBQSxJQUFBVCxDQUFBLENBQUFRLE1BQUEsS0FBQUssSUFBQSxXQUFBQSxJQUFBLE1BQUFDLEtBQUEsRUFBQWQsQ0FBQSxDQUFBUyxFQUFBLFVBQUFSLENBQUEsV0FBQUEsRUFBQUQsQ0FBQSxVQUFBQSxDQUFBLEtBQUFlLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU0sU0FBQSxpSkFBQUMsQ0FBQSxFQUFBQyxDQUFBLE9BQUFDLENBQUEsZ0JBQUFSLENBQUEsV0FBQUEsRUFBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQWtCLElBQUEsQ0FBQXBCLENBQUEsTUFBQVksQ0FBQSxXQUFBQSxFQUFBLFFBQUFaLENBQUEsR0FBQUUsQ0FBQSxDQUFBbUIsSUFBQSxXQUFBSCxDQUFBLEdBQUFsQixDQUFBLENBQUFhLElBQUEsRUFBQWIsQ0FBQSxLQUFBQyxDQUFBLFdBQUFBLEVBQUFELENBQUEsSUFBQW1CLENBQUEsT0FBQUYsQ0FBQSxHQUFBakIsQ0FBQSxLQUFBZSxDQUFBLFdBQUFBLEVBQUEsVUFBQUcsQ0FBQSxZQUFBaEIsQ0FBQSxjQUFBQSxDQUFBLDhCQUFBaUIsQ0FBQSxRQUFBRixDQUFBO0FBQUEsU0FBQVYsNEJBQUFQLENBQUEsRUFBQWtCLENBQUEsUUFBQWxCLENBQUEsMkJBQUFBLENBQUEsU0FBQXNCLGlCQUFBLENBQUF0QixDQUFBLEVBQUFrQixDQUFBLE9BQUFoQixDQUFBLE1BQUFxQixRQUFBLENBQUFILElBQUEsQ0FBQXBCLENBQUEsRUFBQXdCLEtBQUEsNkJBQUF0QixDQUFBLElBQUFGLENBQUEsQ0FBQXlCLFdBQUEsS0FBQXZCLENBQUEsR0FBQUYsQ0FBQSxDQUFBeUIsV0FBQSxDQUFBQyxJQUFBLGFBQUF4QixDQUFBLGNBQUFBLENBQUEsR0FBQUcsS0FBQSxDQUFBc0IsSUFBQSxDQUFBM0IsQ0FBQSxvQkFBQUUsQ0FBQSwrQ0FBQTBCLElBQUEsQ0FBQTFCLENBQUEsSUFBQW9CLGlCQUFBLENBQUF0QixDQUFBLEVBQUFrQixDQUFBO0FBQUEsU0FBQUksa0JBQUF0QixDQUFBLEVBQUFrQixDQUFBLGFBQUFBLENBQUEsSUFBQUEsQ0FBQSxHQUFBbEIsQ0FBQSxDQUFBUSxNQUFBLE1BQUFVLENBQUEsR0FBQWxCLENBQUEsQ0FBQVEsTUFBQSxZQUFBUCxDQUFBLE1BQUFXLENBQUEsR0FBQVAsS0FBQSxDQUFBYSxDQUFBLEdBQUFqQixDQUFBLEdBQUFpQixDQUFBLEVBQUFqQixDQUFBLElBQUFXLENBQUEsQ0FBQVgsQ0FBQSxJQUFBRCxDQUFBLENBQUFDLENBQUEsVUFBQVcsQ0FBQTtBQVFoRTtBQUNBO0FBQ0E7QUFDQSxTQUFTaUIsY0FBY0EsQ0FBQ0MsR0FBNEIsRUFBRUMsSUFBWSxFQUFBO0VBQ2hFLElBQU1DLElBQUksR0FBR0QsSUFBSSxDQUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQzVCLElBQUlDLE9BQU8sR0FBWUosR0FBRztFQUFDLElBQUFLLFNBQUEsR0FBQXBDLDBCQUFBLENBQ1RpQyxJQUFJO0lBQUFJLEtBQUE7RUFBQTtJQUF0QixLQUFBRCxTQUFBLENBQUF4QixDQUFBLE1BQUF5QixLQUFBLEdBQUFELFNBQUEsQ0FBQXZCLENBQUEsSUFBQUMsSUFBQSxHQUF3QjtNQUFBLElBQWJ3QixHQUFHLEdBQUFELEtBQUEsQ0FBQXRCLEtBQUE7TUFDWixJQUFJb0IsT0FBTyxLQUFLLElBQUksSUFBSUEsT0FBTyxLQUFLSSxTQUFTLElBQUksSUFBQUMsUUFBQSxhQUFPTCxPQUFPLE1BQUssUUFBUSxFQUFFLE9BQU9JLFNBQVM7TUFDOUZKLE9BQU8sR0FBSUEsT0FBbUMsQ0FBQ0csR0FBRyxDQUFDO0lBQ3JEO0VBQUMsU0FBQUcsR0FBQTtJQUFBTCxTQUFBLENBQUFsQyxDQUFBLENBQUF1QyxHQUFBO0VBQUE7SUFBQUwsU0FBQSxDQUFBcEIsQ0FBQTtFQUFBO0VBQ0QsT0FBT21CLE9BQU87QUFDaEI7QUFFQSxTQUFTTyxjQUFjQSxDQUNyQlgsR0FBNEIsRUFDNUJDLElBQVksRUFDWmpCLEtBQWMsRUFBQTtFQUVkLElBQU1rQixJQUFJLEdBQUdELElBQUksQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUM1QixJQUFJRCxJQUFJLENBQUN4QixNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQUFrQyxNQUFBLENBQUFDLE1BQUEsQ0FBQUQsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVliLEdBQUcsQ0FBQSxNQUFBYyxnQkFBQSxpQkFBR2IsSUFBSSxFQUFHakIsS0FBSyxDQUFBLENBQUE7RUFFckQsSUFBTStCLE1BQU0sR0FBQUgsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFiLEdBQUcsQ0FBRTtFQUN6QixJQUFJSSxPQUFPLEdBQTRCVyxNQUFNO0VBQzdDLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHZCxJQUFJLENBQUN4QixNQUFNLEdBQUcsQ0FBQyxFQUFFc0MsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsSUFBTVQsR0FBRyxHQUFHTCxJQUFJLENBQUNjLENBQUMsQ0FBQztJQUNuQixJQUFNQyxPQUFPLEdBQUdmLElBQUksQ0FBQ2MsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixJQUFNRSxXQUFXLEdBQUcsT0FBTyxDQUFDcEIsSUFBSSxDQUFDbUIsT0FBTyxDQUFDO0lBQ3pDLElBQUliLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLEtBQUtDLFNBQVMsSUFBSUosT0FBTyxDQUFDRyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7TUFDdkRILE9BQU8sQ0FBQ0csR0FBRyxDQUFDLEdBQUdXLFdBQVcsR0FBRyxFQUFFLEdBQUcsQ0FBQSxDQUFFO0lBQ3RDO0lBQ0EsSUFBSTNDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDNEIsT0FBTyxDQUFDRyxHQUFHLENBQUMsQ0FBQyxFQUFFO01BQy9CSCxPQUFPLENBQUNHLEdBQUcsQ0FBQyxPQUFBWSxtQkFBQSxhQUFRZixPQUFPLENBQUNHLEdBQUcsQ0FBZSxDQUFDO0lBQ2pELENBQUMsTUFBTTtNQUNMSCxPQUFPLENBQUNHLEdBQUcsQ0FBQyxHQUFBSyxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBU1QsT0FBTyxDQUFDRyxHQUFHLENBQTZCLENBQUU7SUFDakU7SUFDQUgsT0FBTyxHQUFHQSxPQUFPLENBQUNHLEdBQUcsQ0FBNEI7RUFDbkQ7RUFDQUgsT0FBTyxDQUFDRixJQUFJLENBQUNBLElBQUksQ0FBQ3hCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHTSxLQUFLO0VBQ3RDLE9BQU8rQixNQUFNO0FBQ2Y7QUFFQSxTQUFTSyxZQUFZQSxDQUFDQyxNQUErQixFQUFFekIsSUFBWSxFQUFBO0VBQ2pFLE9BQU9BLElBQUksQ0FBQzBCLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBR3ZCLGNBQWMsQ0FBQ3NCLE1BQU0sRUFBRXpCLElBQUksQ0FBQyxHQUFHeUIsTUFBTSxDQUFDekIsSUFBSSxDQUFDO0FBQ3pFO0FBRU8sSUFBTTJCLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQSxFQUF5RDtFQUFBLElBQXJERSxNQUFBLEdBQUFDLFNBQUEsQ0FBQWhELE1BQUEsUUFBQWdELFNBQUEsUUFBQWxCLFNBQUEsR0FBQWtCLFNBQUEsTUFBNEIsQ0FBQSxDQUFFO0VBQ3hELElBQUFDLHFCQUFBLEdBWUlGLE1BQU0sQ0FYUkcsYUFBYTtJQUFiQSxhQUFhLEdBQUFELHFCQUFBLGNBQUcsQ0FBQSxDQUFFLEdBQUFBLHFCQUFBO0lBQ2xCRSxRQUFRLEdBVU5KLE1BQU0sQ0FWUkksUUFBUTtJQUNSQyxjQUFjLEdBU1pMLE1BQU0sQ0FUUkssY0FBYztJQUNkQyxjQUFjLEdBUVpOLE1BQU0sQ0FSUk0sY0FBYztJQUNkQyxPQUFPLEdBT0xQLE1BQU0sQ0FQUk8sT0FBTztJQUFBQyxZQUFBLEdBT0xSLE1BQU0sQ0FOUlMsSUFBSTtJQUFKQSxJQUFJLEdBQUFELFlBQUEsY0FBRyxRQUFRLEdBQUFBLFlBQUE7SUFBQUUsa0JBQUEsR0FNYlYsTUFBTSxDQUxSVyxVQUFVO0lBQVZBLFVBQVUsR0FBQUQsa0JBQUEsY0FBRyxNQUFNLEdBQUFBLGtCQUFBO0lBQUFFLGdCQUFBLEdBS2pCWixNQUFNLENBSlJhLFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxnQkFBQSxjQUFHLEtBQUssR0FBQUEsZ0JBQUE7SUFBQUUsYUFBQSxHQUlkZCxNQUFNLENBSFJlLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxhQUFBLGNBQUcsSUFBSSxHQUFBQSxhQUFBO0lBQUFFLG9CQUFBLEdBR1ZoQixNQUFNLENBRlJpQixZQUFZO0lBQVpBLFlBQVksR0FBQUQsb0JBQUEsY0FBRyxJQUFJLEdBQUFBLG9CQUFBO0lBQUFFLHFCQUFBLEdBRWpCbEIsTUFBTSxDQURSbUIsZUFBZTtJQUFmQSxlQUFlLEdBQUFELHFCQUFBLGNBQUcsVUFBVSxHQUFBQSxxQkFBQTtFQUc5QixJQUFBRSxTQUFBLEdBQTRCLElBQUFDLGVBQVEsRUFBMEJsQixhQUFhLENBQUM7SUFBQW1CLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQXJFeEIsTUFBTSxHQUFBMEIsVUFBQTtJQUFFRSxTQUFTLEdBQUFGLFVBQUE7RUFDeEIsSUFBQUcsVUFBQSxHQUE0QixJQUFBSixlQUFRLEVBQXlCLENBQUEsQ0FBRSxDQUFDO0lBQUFLLFVBQUEsT0FBQUgsZUFBQSxhQUFBRSxVQUFBO0lBQXpERSxNQUFNLEdBQUFELFVBQUE7SUFBRUUsU0FBUyxHQUFBRixVQUFBO0VBQ3hCLElBQUFHLFVBQUEsR0FBOEIsSUFBQVIsZUFBUSxFQUEwQixDQUFBLENBQUUsQ0FBQztJQUFBUyxVQUFBLE9BQUFQLGVBQUEsYUFBQU0sVUFBQTtJQUE1REUsT0FBTyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUMxQixJQUFBRyxVQUFBLEdBQW9DLElBQUFaLGVBQVEsRUFBeUIsQ0FBQSxDQUFFLENBQUM7SUFBQWEsVUFBQSxPQUFBWCxlQUFBLGFBQUFVLFVBQUE7SUFBakVFLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFFaEMsSUFBTUcsYUFBYSxHQUFHLElBQUFDLG9CQUFhLEVBQUMsVUFBQ25FLElBQVksRUFBRVosS0FBYyxFQUFJO0lBQ25FaUUsU0FBUyxDQUFDLFVBQUNlLElBQUksRUFBSTtNQUNqQixJQUFNQyxTQUFTLEdBQUdyRSxJQUFJLENBQUMwQixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQ2hDWCxjQUFjLENBQUNxRCxJQUFJLEVBQUVwRSxJQUFJLEVBQUVaLEtBQUssQ0FBQyxHQUNsQzRCLE1BQUEsQ0FBQUMsTUFBQSxDQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTW1ELElBQUksQ0FBQSxNQUFBbEQsZ0JBQUEsaUJBQUdsQixJQUFJLEVBQUdaLEtBQUssQ0FBQSxDQUFFO01BQzlCK0MsY0FBYyxLQUFBLElBQUEsSUFBZEEsY0FBYyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFkQSxjQUFjLEtBQUFqQixnQkFBQSxpQkFBTWxCLElBQUksRUFBR1osS0FBSyxHQUFJaUYsU0FBUyxDQUFDO01BQzlDLE9BQU9BLFNBQVM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsSUFBSWpGLEtBQUssS0FBSyxFQUFFLElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS3dCLFNBQVMsRUFBRTtNQUN6RDZDLFNBQVMsQ0FBQyxVQUFDVyxJQUFJLEVBQUk7UUFDakIsSUFBSSxDQUFDQSxJQUFJLENBQUNwRSxJQUFJLENBQUMsRUFBRSxPQUFPb0UsSUFBSTtRQUM1QixJQUFNRSxTQUFTLEdBQUF0RCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUW1ELElBQUksQ0FBRTtRQUM3QixPQUFPRSxTQUFTLENBQUN0RSxJQUFJLENBQUM7UUFDdEIsT0FBT3NFLFNBQVM7TUFDbEIsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFFRixJQUFNQyxhQUFhLEdBQUcsSUFBQUosb0JBQWEsRUFBQyxVQUFDbkUsSUFBWSxFQUFFd0UsS0FBb0IsRUFBSTtJQUN6RWYsU0FBUyxDQUFDLFVBQUNXLElBQUksRUFBSTtNQUNqQixJQUFJSSxLQUFLLEtBQUssSUFBSSxFQUFFO1FBQ2xCLElBQUksQ0FBQ0osSUFBSSxDQUFDcEUsSUFBSSxDQUFDLEVBQUUsT0FBT29FLElBQUk7UUFDNUIsSUFBTUUsU0FBUyxHQUFBdEQsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFtRCxJQUFJLENBQUU7UUFDN0IsT0FBT0UsU0FBUyxDQUFDdEUsSUFBSSxDQUFDO1FBQ3RCLE9BQU9zRSxTQUFTO01BQ2xCO01BQ0EsT0FBQXRELE1BQUEsQ0FBQUMsTUFBQSxDQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBWW1ELElBQUksQ0FBQSxNQUFBbEQsZ0JBQUEsaUJBQUdsQixJQUFJLEVBQUd3RSxLQUFLLENBQUEsQ0FBQTtJQUNqQyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRixJQUFNQyxhQUFhLEdBQUcsSUFBQU4sb0JBQWEsRUFBQyxVQUFDbkUsSUFBWSxFQUFFMEUsS0FBYSxFQUFJO0lBQ2xFVCxhQUFhLENBQUMsVUFBQ0csSUFBSTtNQUFBLE9BQUtwRCxNQUFBLENBQUFDLE1BQUEsQ0FBQUQsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQU1tRCxJQUFJLENBQUEsTUFBQWxELGdCQUFBLGlCQUFHbEIsSUFBSSxFQUFHMEUsS0FBSyxDQUFBLENBQUE7SUFBQSxDQUFHLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0VBRUYsSUFBTUMsYUFBYSxHQUFHLElBQUFSLG9CQUFhLEVBQUMsVUFBQ25FLElBQVksRUFBd0I7SUFDdkUsT0FBT2dFLFVBQVUsQ0FBQ2hFLElBQUksQ0FBQztFQUN6QixDQUFDLENBQUM7RUFFRixJQUFNNEUsZUFBZSxHQUFHLElBQUFULG9CQUFhLEVBQUMsVUFBQ25FLElBQVksRUFBSTtJQUNyRGlFLGFBQWEsQ0FBQyxVQUFDRyxJQUFJLEVBQUk7TUFDckIsSUFBTVMsUUFBUSxHQUFBN0QsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFtRCxJQUFJLENBQUU7TUFDNUIsT0FBT1MsUUFBUSxDQUFDN0UsSUFBSSxDQUFDO01BQ3JCLE9BQU82RSxRQUFRO0lBQ2pCLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGLElBQU1DLGFBQWEsR0FBRyxJQUFBWCxvQkFBYSxFQUNqQyxVQUFDbkUsSUFBWSxFQUEwRDtJQUFBLElBQXhEMEUsS0FBQSxHQUFBNUMsU0FBQSxDQUFBaEQsTUFBQSxRQUFBZ0QsU0FBQSxRQUFBbEIsU0FBQSxHQUFBa0IsU0FBQSxNQUFnQixFQUFFO0lBQUEsSUFBRWlELGFBQXVCLEdBQUFqRCxTQUFBLENBQUFoRCxNQUFBLE9BQUFnRCxTQUFBLE1BQUFsQixTQUFBO0lBQ3hELElBQU14QixLQUFLLEdBQUcyRixhQUFhLEtBQUtuRSxTQUFTLEdBQUdtRSxhQUFhLEdBQUd2RCxZQUFZLENBQUNDLE1BQU0sRUFBRXpCLElBQUksQ0FBQztJQUFDLElBQUFnRixVQUFBLEdBQUEzRywwQkFBQSxDQUVwRXFHLEtBQUs7TUFBQU8sTUFBQTtJQUFBO01BQXhCLEtBQUFELFVBQUEsQ0FBQS9GLENBQUEsTUFBQWdHLE1BQUEsR0FBQUQsVUFBQSxDQUFBOUYsQ0FBQSxJQUFBQyxJQUFBLEdBQTBCO1FBQUEsSUFBZitGLElBQUksR0FBQUQsTUFBQSxDQUFBN0YsS0FBQTtRQUNiLElBQ0U4RixJQUFJLENBQUNDLFFBQVEsS0FDWi9GLEtBQUssS0FBS3dCLFNBQVMsSUFBSXhCLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBSyxFQUFFLENBQUMsRUFDdkQ7VUFDQSxJQUFNb0YsS0FBSyxHQUFHVSxJQUFJLENBQUNFLE9BQU8sT0FBQUMsTUFBQSxDQUFPckYsSUFBSSxpQkFBYztVQUNuRHVFLGFBQWEsQ0FBQ3ZFLElBQUksRUFBRXdFLEtBQUssQ0FBQztVQUMxQixPQUFPLEtBQUs7UUFDZDtRQUVBLElBQUlVLElBQUksQ0FBQ0ksR0FBRyxJQUFJLE9BQU9sRyxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLENBQUNOLE1BQU0sR0FBR29HLElBQUksQ0FBQ0ksR0FBRyxFQUFFO1VBQ3BFLElBQU1kLE1BQUssR0FDVFUsSUFBSSxDQUFDRSxPQUFPLE9BQUFDLE1BQUEsQ0FBT3JGLElBQUksd0JBQUFxRixNQUFBLENBQXFCSCxJQUFJLENBQUNJLEdBQUcsZ0JBQWE7VUFDbkVmLGFBQWEsQ0FBQ3ZFLElBQUksRUFBRXdFLE1BQUssQ0FBQztVQUMxQixPQUFPLEtBQUs7UUFDZDtRQUVBLElBQUlVLElBQUksQ0FBQ0ssR0FBRyxJQUFJLE9BQU9uRyxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLENBQUNOLE1BQU0sR0FBR29HLElBQUksQ0FBQ0ssR0FBRyxFQUFFO1VBQ3BFLElBQU1mLE9BQUssR0FDVFUsSUFBSSxDQUFDRSxPQUFPLE9BQUFDLE1BQUEsQ0FBT3JGLElBQUksNEJBQUFxRixNQUFBLENBQXlCSCxJQUFJLENBQUNLLEdBQUcsZ0JBQWE7VUFDdkVoQixhQUFhLENBQUN2RSxJQUFJLEVBQUV3RSxPQUFLLENBQUM7VUFDMUIsT0FBTyxLQUFLO1FBQ2Q7UUFFQSxJQUFJVSxJQUFJLENBQUNNLE9BQU8sSUFBSSxPQUFPcEcsS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDOEYsSUFBSSxDQUFDTSxPQUFPLENBQUN0RixJQUFJLENBQUNkLEtBQUssQ0FBQyxFQUFFO1VBQzFFLElBQU1vRixPQUFLLEdBQUdVLElBQUksQ0FBQ0UsT0FBTyxPQUFBQyxNQUFBLENBQU9yRixJQUFJLHVCQUFvQjtVQUN6RHVFLGFBQWEsQ0FBQ3ZFLElBQUksRUFBRXdFLE9BQUssQ0FBQztVQUMxQixPQUFPLEtBQUs7UUFDZDtRQUVBLElBQUlVLElBQUksQ0FBQ08sU0FBUyxJQUFJLE9BQU9QLElBQUksQ0FBQ08sU0FBUyxLQUFLLFVBQVUsRUFBRTtVQUMxRCxJQUFJO1lBQ0YsSUFBTXRFLE1BQU0sR0FBRytELElBQUksQ0FBQ08sU0FBUyxDQUFDckcsS0FBSyxFQUFFcUMsTUFBaUMsQ0FBQztZQUN2RSxJQUFJTixNQUFNLEtBQUssSUFBSSxFQUFFO2NBQ25Cb0QsYUFBYSxDQUNYdkUsSUFBSSxFQUNKLE9BQU9tQixNQUFNLEtBQUssUUFBUSxHQUFHQSxNQUFNLEdBQUcsbUJBQW1CLENBQzFEO2NBQ0QsT0FBTyxLQUFLO1lBQ2Q7VUFDRixDQUFDLENBQUMsT0FBT0wsR0FBRyxFQUFFO1lBQ1osSUFBTXNFLE9BQU8sR0FBR3RFLEdBQUcsWUFBWTRFLEtBQUssR0FBRzVFLEdBQUcsQ0FBQ3NFLE9BQU8sR0FBRyxrQkFBa0I7WUFDdkViLGFBQWEsQ0FBQ3ZFLElBQUksRUFBRW9GLE9BQU8sQ0FBQztZQUM1QixPQUFPLEtBQUs7VUFDZDtRQUNGO01BQ0Y7SUFBQyxTQUFBdEUsR0FBQTtNQUFBa0UsVUFBQSxDQUFBekcsQ0FBQSxDQUFBdUMsR0FBQTtJQUFBO01BQUFrRSxVQUFBLENBQUEzRixDQUFBO0lBQUE7SUFFRCxJQUFJbUUsTUFBTSxDQUFDeEQsSUFBSSxDQUFDLEVBQUU7TUFDaEJ1RSxhQUFhLENBQUN2RSxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQzNCO0lBRUEsT0FBTyxJQUFJO0VBQ2IsQ0FBQyxDQUNGO0VBRUQsSUFBTTJGLGNBQWMsR0FBRyxJQUFBeEIsb0JBQWEsRUFDbEMsWUFBd0U7SUFBQSxJQUF2RXlCLHFCQUFBLEdBQUE5RCxTQUFBLENBQUFoRCxNQUFBLFFBQUFnRCxTQUFBLFFBQUFsQixTQUFBLEdBQUFrQixTQUFBLE1BQWdEa0MsVUFBVTtJQUN6RCxJQUFJNkIsT0FBTyxHQUFHLElBQUk7SUFFbEI3RSxNQUFNLENBQUNWLElBQUksQ0FBQ3NGLHFCQUFxQixDQUFDLENBQUNFLE9BQU8sQ0FBQyxVQUFDOUYsSUFBSSxFQUFJO01BQ2xELElBQU0wRSxLQUFLLEdBQUdrQixxQkFBcUIsQ0FBQzVGLElBQUksQ0FBQztNQUN6QyxJQUFJLENBQUM4RSxhQUFhLENBQUM5RSxJQUFJLEVBQUUwRSxLQUFLLENBQUMsRUFBRTtRQUMvQm1CLE9BQU8sR0FBRyxLQUFLO01BQ2pCO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsT0FBT0EsT0FBTztFQUNoQixDQUFDLENBQ0Y7RUFFRCxJQUFNRSxvQkFBb0IsR0FBRyxJQUFBNUIsb0JBQWEsRUFBQyxZQUFLO0lBQzlDLElBQUk2QixTQUFTLEdBQUcsS0FBSztJQUNyQixJQUFNMUIsU0FBUyxHQUEyQixDQUFBLENBQUU7SUFFNUN0RCxNQUFNLENBQUNWLElBQUksQ0FBQzBELFVBQVUsQ0FBQyxDQUFDOEIsT0FBTyxDQUFDLFVBQUNHLFNBQVMsRUFBSTtNQUM1QyxJQUFNdkIsS0FBSyxHQUFHVixVQUFVLENBQUNpQyxTQUFTLENBQUM7TUFDbkMsSUFBTTdHLEtBQUssR0FBR29DLFlBQVksQ0FBQ0MsTUFBTSxFQUFFd0UsU0FBUyxDQUFDO01BQUMsSUFBQUMsVUFBQSxHQUFBN0gsMEJBQUEsQ0FFM0JxRyxLQUFLO1FBQUF5QixNQUFBO01BQUE7UUFBeEIsS0FBQUQsVUFBQSxDQUFBakgsQ0FBQSxNQUFBa0gsTUFBQSxHQUFBRCxVQUFBLENBQUFoSCxDQUFBLElBQUFDLElBQUEsR0FBMEI7VUFBQSxJQUFmK0YsSUFBSSxHQUFBaUIsTUFBQSxDQUFBL0csS0FBQTtVQUNiLElBQ0U4RixJQUFJLENBQUNDLFFBQVEsS0FDWi9GLEtBQUssS0FBS3dCLFNBQVMsSUFBSXhCLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBSyxFQUFFLENBQUMsRUFDdkQ7WUFDQWtGLFNBQVMsQ0FBQzJCLFNBQVMsQ0FBQyxHQUFHZixJQUFJLENBQUNFLE9BQU8sT0FBQUMsTUFBQSxDQUFPWSxTQUFTLGlCQUFjO1lBQ2pFRCxTQUFTLEdBQUcsSUFBSTtZQUNoQjtVQUNGO1VBRUEsSUFBSWQsSUFBSSxDQUFDSSxHQUFHLElBQUksT0FBT2xHLEtBQUssS0FBSyxRQUFRLElBQUlBLEtBQUssQ0FBQ04sTUFBTSxHQUFHb0csSUFBSSxDQUFDSSxHQUFHLEVBQUU7WUFDcEVoQixTQUFTLENBQUMyQixTQUFTLENBQUMsR0FDbEJmLElBQUksQ0FBQ0UsT0FBTyxPQUFBQyxNQUFBLENBQU9ZLFNBQVMsd0JBQUFaLE1BQUEsQ0FBcUJILElBQUksQ0FBQ0ksR0FBRyxnQkFBYTtZQUN4RVUsU0FBUyxHQUFHLElBQUk7WUFDaEI7VUFDRjtVQUVBLElBQUlkLElBQUksQ0FBQ0ssR0FBRyxJQUFJLE9BQU9uRyxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLENBQUNOLE1BQU0sR0FBR29HLElBQUksQ0FBQ0ssR0FBRyxFQUFFO1lBQ3BFakIsU0FBUyxDQUFDMkIsU0FBUyxDQUFDLEdBQ2xCZixJQUFJLENBQUNFLE9BQU8sT0FBQUMsTUFBQSxDQUNUWSxTQUFTLDRCQUFBWixNQUFBLENBQXlCSCxJQUFJLENBQUNLLEdBQUcsZ0JBQWE7WUFDNURTLFNBQVMsR0FBRyxJQUFJO1lBQ2hCO1VBQ0Y7VUFFQSxJQUNFZCxJQUFJLENBQUNNLE9BQU8sSUFDWixPQUFPcEcsS0FBSyxLQUFLLFFBQVEsSUFDekIsQ0FBQzhGLElBQUksQ0FBQ00sT0FBTyxDQUFDdEYsSUFBSSxDQUFDZCxLQUFLLENBQUMsRUFDekI7WUFDQWtGLFNBQVMsQ0FBQzJCLFNBQVMsQ0FBQyxHQUFHZixJQUFJLENBQUNFLE9BQU8sT0FBQUMsTUFBQSxDQUFPWSxTQUFTLHVCQUFvQjtZQUN2RUQsU0FBUyxHQUFHLElBQUk7WUFDaEI7VUFDRjtVQUVBLElBQUlkLElBQUksQ0FBQ08sU0FBUyxJQUFJLE9BQU9QLElBQUksQ0FBQ08sU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUMxRCxJQUFJO2NBQ0YsSUFBTXRFLE1BQU0sR0FBRytELElBQUksQ0FBQ08sU0FBUyxDQUFDckcsS0FBSyxFQUFFcUMsTUFBaUMsQ0FBQztjQUN2RSxJQUFJTixNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNuQm1ELFNBQVMsQ0FBQzJCLFNBQVMsQ0FBQyxHQUNsQixPQUFPOUUsTUFBTSxLQUFLLFFBQVEsR0FBR0EsTUFBTSxHQUFHLG1CQUFtQjtnQkFDM0Q2RSxTQUFTLEdBQUcsSUFBSTtnQkFDaEI7Y0FDRjtZQUNGLENBQUMsQ0FBQyxPQUFPbEYsR0FBRyxFQUFFO2NBQ1p3RCxTQUFTLENBQUMyQixTQUFTLENBQUMsR0FDbEJuRixHQUFHLFlBQVk0RSxLQUFLLEdBQUc1RSxHQUFHLENBQUNzRSxPQUFPLEdBQUcsa0JBQWtCO2NBQ3pEWSxTQUFTLEdBQUcsSUFBSTtjQUNoQjtZQUNGO1VBQ0Y7UUFDRjtNQUFDLFNBQUFsRixHQUFBO1FBQUFvRixVQUFBLENBQUEzSCxDQUFBLENBQUF1QyxHQUFBO01BQUE7UUFBQW9GLFVBQUEsQ0FBQTdHLENBQUE7TUFBQTtJQUNILENBQUMsQ0FBQztJQUVGb0UsU0FBUyxDQUFDYSxTQUFTLENBQUM7SUFFcEIsSUFBSSxDQUFDMEIsU0FBUyxFQUFFO01BQ2QvRCxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsQ0FBR1IsTUFBTSxDQUFDO01BQ2xCLE9BQU87UUFBRTJFLE9BQU8sRUFBRSxJQUFJO1FBQUUzRSxNQUFNLEVBQU5BO01BQU0sQ0FBRTtJQUNsQyxDQUFDLE1BQU07TUFDTFMsY0FBYyxLQUFBLElBQUEsSUFBZEEsY0FBYyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFkQSxjQUFjLENBQUc7UUFBRVQsTUFBTSxFQUFOQSxNQUFNO1FBQUUrQixNQUFNLEVBQUVjO01BQVMsQ0FBRSxDQUFDO01BQy9DLE9BQU87UUFBRThCLE9BQU8sRUFBRSxLQUFLO1FBQUU1QyxNQUFNLEVBQUVjO01BQVMsQ0FBRTtJQUM5QztFQUNGLENBQUMsQ0FBQztFQUVGLElBQU0rQixZQUFZLEdBQUcsSUFBQUMsdUJBQWdCLEVBQUMsVUFBQy9ILENBQWEsRUFBSTtJQUN0REEsQ0FBQyxLQUFBLElBQUEsSUFBREEsQ0FBQyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFEQSxDQUFDLENBQUVnSSxjQUFjLENBQUEsQ0FBRTtJQUNuQixPQUFPUixvQkFBb0IsQ0FBQSxDQUFFO0VBQy9CLENBQUMsQ0FBQztFQUVGLElBQU1TLFdBQVcsR0FBRyxJQUFBckMsb0JBQWEsRUFBQyxZQUFLO0lBQ3JDZCxTQUFTLENBQUNyQixhQUFhLENBQUM7SUFDeEJ5QixTQUFTLENBQUMsQ0FBQSxDQUFFLENBQUM7SUFDYkksVUFBVSxDQUFDLENBQUEsQ0FBRSxDQUFDO0lBQ2R6QixPQUFPLEtBQUEsSUFBQSxJQUFQQSxPQUFPLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVBBLE9BQU8sQ0FBQSxDQUFJO0VBQ2IsQ0FBQyxDQUFDO0VBRUYsSUFBTXFFLFdBQVcsR0FBRyxJQUFBSCx1QkFBZ0IsRUFBQyxVQUFDL0gsQ0FBYSxFQUFJO0lBQ3JEQSxDQUFDLEtBQUEsSUFBQSxJQUFEQSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQURBLENBQUMsQ0FBRWdJLGNBQWMsQ0FBQSxDQUFFO0lBQ25CQyxXQUFXLENBQUEsQ0FBRTtFQUNmLENBQUMsQ0FBQztFQUVGLElBQU1FLGFBQWEsR0FBRyxJQUFBdkMsb0JBQWEsRUFBQyxVQUFDbkUsSUFBWSxFQUFhO0lBQzVELE9BQU93QixZQUFZLENBQUNDLE1BQU0sRUFBRXpCLElBQUksQ0FBQztFQUNuQyxDQUFDLENBQUM7RUFFRixJQUFNMkcsY0FBYyxHQUFHLElBQUF4QyxvQkFBYSxFQUFDLFlBQThCO0lBQ2pFLE9BQU8xQyxNQUFNO0VBQ2YsQ0FBQyxDQUFDO0VBRUYsSUFBTW1GLGNBQWMsR0FBRyxJQUFBekMsb0JBQWEsRUFBQyxVQUFDRSxTQUFrQyxFQUFJO0lBQzFFaEIsU0FBUyxDQUFDLFVBQUNlLElBQUksRUFBSTtNQUNqQixJQUFNeUMsYUFBYSxHQUFBN0YsTUFBQSxDQUFBQyxNQUFBLENBQUFELE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRbUQsSUFBSSxDQUFBLEVBQUtDLFNBQVMsQ0FBRTtNQUMvQ2xDLGNBQWMsS0FBQSxJQUFBLElBQWRBLGNBQWMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBZEEsY0FBYyxDQUFHa0MsU0FBUyxFQUFFd0MsYUFBYSxDQUFDO01BQzFDLE9BQU9BLGFBQWE7SUFDdEIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUYsSUFBTUMsWUFBWSxHQUFHLElBQUFDLGNBQU8sRUFDMUI7SUFBQSxPQUFPO01BQ0xDLE1BQU0sRUFBRWpCLG9CQUFvQjtNQUM1QlMsV0FBVyxFQUFYQSxXQUFXO01BQ1hFLGFBQWEsRUFBYkEsYUFBYTtNQUNiQyxjQUFjLEVBQWRBLGNBQWM7TUFDZEMsY0FBYyxFQUFkQSxjQUFjO01BQ2QxQyxhQUFhLEVBQWJBLGFBQWE7TUFDYnlCLGNBQWMsRUFBZEE7SUNyRUYsQ0RzRUM7RUFBQSxDQUFDLEVBQ0YsQ0FDRUksb0JBQW9CLEVBQ3BCUyxXQUFXLEVBQ1hFLGFBQWEsRUFDYkMsY0FBYyxFQUNkQyxjQUFjLEVBQ2QxQyxhQUFhLEVBQ2J5QixjQUFjLENBQ2YsQ0FDRjtFQUVELElBQU1zQixnQkFBZ0IsR0FBeUIsSUFBQUYsY0FBTyxFQUNwRDtJQUFBLE9BQU87TUFDTHRGLE1BQU0sRUFBTkEsTUFBTTtNQUNOK0IsTUFBTSxFQUFOQSxNQUFNO01BQ05JLE9BQU8sRUFBUEEsT0FBTztNQUNQa0QsWUFBWSxFQUFaQSxZQUFZO01BQ1o1QyxhQUFhLEVBQWJBLGFBQWE7TUFDYkssYUFBYSxFQUFiQSxhQUFhO01BQ2JPLGFBQWEsRUFBYkEsYUFBYTtNQUNiTCxhQUFhLEVBQWJBLGFBQWE7TUFDYkcsZUFBZSxFQUFmQSxlQUFlO01BQ2Z0QyxJQUFJLEVBQUpBLElBQUk7TUFDSkUsVUFBVSxFQUFWQSxVQUFVO01BQ1ZFLFFBQVEsRUFBUkEsUUFBUTtNQUNSRSxLQUFLLEVBQUxBLEtBQUs7TUFDTEUsWUFBWSxFQUFaQSxZQUFZO01BQ1pFLGVBQWUsRUFBZkE7SUN6RUYsQ0QwRUM7RUFBQSxDQUFDLEVBQ0YsQ0FDRXZCLE1BQU0sRUFDTitCLE1BQU0sRUFDTkksT0FBTyxFQUNQa0QsWUFBWSxFQUNaNUMsYUFBYSxFQUNiSyxhQUFhLEVBQ2JPLGFBQWEsRUFDYkwsYUFBYSxFQUNiRyxlQUFlLEVBQ2Z0QyxJQUFJLEVBQ0pFLFVBQVUsRUFDVkUsUUFBUSxFQUNSRSxLQUFLLEVBQ0xFLFlBQVksRUFDWkUsZUFBZSxDQUNoQixDQUNGO0VBRUQsT0FBTztJQUNMdkIsTUFBTSxFQUFOQSxNQUFNO0lBQ04rQixNQUFNLEVBQU5BLE1BQU07SUFDTkksT0FBTyxFQUFQQSxPQUFPO0lBQ1BJLFVBQVUsRUFBVkEsVUFBVTtJQUNWVyxhQUFhLEVBQWJBLGFBQWE7SUFDYlQsYUFBYSxFQUFiQSxhQUFhO0lBQ2JLLGFBQWEsRUFBYkEsYUFBYTtJQUNicUMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RGLGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxjQUFjLEVBQWRBLGNBQWM7SUFDZDdCLGFBQWEsRUFBYkEsYUFBYTtJQUNiYSxjQUFjLEVBQWRBLGNBQWM7SUFDZGxCLGFBQWEsRUFBYkEsYUFBYTtJQUNiRyxlQUFlLEVBQWZBLGVBQWU7SUFDZnlCLFlBQVksRUFBWkEsWUFBWTtJQUNaSSxXQUFXLEVBQVhBLFdBQVc7SUFDWEQsV0FBVyxFQUFYQSxXQUFXO0lBQ1hNLFlBQVksRUFBWkEsWUFBWTtJQUNaRyxnQkFBZ0IsRUFBaEJBO0VDNUVBLENENkVEO0FBQ0gsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FBQXRGLE9BQUEsY0FFYUQsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE5lc3RlZCBwYXRoIGhlbHBlcnMgKGRvdC1ub3RhdGlvbiBzdXBwb3J0LCBlLmcuIFwiaXRlbXMuMC50aXRsZVwiKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBnZXROZXN0ZWRWYWx1ZShvYmosIHBhdGgpIHtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IG51bGwgfHwgY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xufVxuZnVuY3Rpb24gc2V0TmVzdGVkVmFsdWUob2JqLCBwYXRoLCB2YWx1ZSkge1xuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAxKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvYmopLCB7IFtwYXRoXTogdmFsdWUgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgICBsZXQgY3VycmVudCA9IHJlc3VsdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICAgIGNvbnN0IG5leHRLZXkgPSBrZXlzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgaXNOZXh0QXJyYXkgPSAvXlxcZCskLy50ZXN0KG5leHRLZXkpO1xuICAgICAgICBpZiAoY3VycmVudFtrZXldID09PSB1bmRlZmluZWQgfHwgY3VycmVudFtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBpc05leHRBcnJheSA/IFtdIDoge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFtrZXldKSkge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0gWy4uLmN1cnJlbnRba2V5XV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIGN1cnJlbnRba2V5c1trZXlzLmxlbmd0aCAtIDFdXSA9IHZhbHVlO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUuaW5jbHVkZXMoJy4nKSA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgbmFtZSkgOiB2YWx1ZXNbbmFtZV07XG59XG5leHBvcnQgY29uc3QgdXNlRm9ybUNvcmUgPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IGluaXRpYWxWYWx1ZXMgPSB7fSwgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblZhbHVlc0NoYW5nZSwgb25SZXNldCwgc2l6ZSA9ICdtaWRkbGUnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCBjb2xvbiA9IHRydWUsIHJlcXVpcmVkTWFyayA9IHRydWUsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIH0gPSBjb25maWc7XG4gICAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZXMpO1xuICAgIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3RvdWNoZWQsIHNldFRvdWNoZWRdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtmaWVsZFJ1bGVzLCBzZXRGaWVsZFJ1bGVzXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBzZXRGaWVsZFZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgICAgc2V0VmFsdWVzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZXMgPSBuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKHByZXYsIG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlcztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdFcnJvcnM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBlcnJvcikgPT4ge1xuICAgICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiBlcnJvciB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzKSA9PiB7XG4gICAgICAgIHNldEZpZWxkUnVsZXMoKHByZXYpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogcnVsZXMgfSkpKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZFJ1bGVzID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gZmllbGRSdWxlc1tuYW1lXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHNldEZpZWxkUnVsZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1J1bGVzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICBkZWxldGUgbmV3UnVsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbmV3UnVsZXM7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbGlkYXRlRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcyA9IFtdLCBwcm92aWRlZFZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvdmlkZWRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZWRWYWx1ZSA6IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPCBydWxlLm1pbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gcnVsZS5tYXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5wYXR0ZXJuICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS52YWxpZGF0b3IgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVsZS52YWxpZGF0b3IodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnVmFsaWRhdGlvbiBmYWlsZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNSdWxlc1RvVmFsaWRhdGUgPSBmaWVsZFJ1bGVzKSA9PiB7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzUnVsZXNUb1ZhbGlkYXRlKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZpZWxkc1J1bGVzVG9WYWxpZGF0ZVtuYW1lXTtcbiAgICAgICAgICAgIGlmICghdmFsaWRhdGVGaWVsZChuYW1lLCBydWxlcykpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXRJbnRlcm5hbCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZFJ1bGVzKS5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRSdWxlc1tmaWVsZE5hbWVdO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUodmFsdWVzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUucmVxdWlyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IHJ1bGUubWVzc2FnZSB8fCBgJHtmaWVsZE5hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLm1pbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fCBgJHtmaWVsZE5hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS5tYXggJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtmaWVsZE5hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7cnVsZS5tYXh9IGNoYXJhY3RlcnNgO1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUucGF0dGVybiAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgICFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPSBydWxlLm1lc3NhZ2UgfHwgYCR7ZmllbGROYW1lfSBmb3JtYXQgaXMgaW52YWxpZGA7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS52YWxpZGF0b3IgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0RXJyb3JzKG5ld0Vycm9ycyk7XG4gICAgICAgIGlmICghaGFzRXJyb3JzKSB7XG4gICAgICAgICAgICBvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHZhbHVlcyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzLCBlcnJvcnM6IG5ld0Vycm9ycyB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IG5ld0Vycm9ycyB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZVN1Ym1pdEludGVybmFsKCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRGaWVsZHMgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgc2V0VmFsdWVzKGluaXRpYWxWYWx1ZXMpO1xuICAgICAgICBzZXRFcnJvcnMoe30pO1xuICAgICAgICBzZXRUb3VjaGVkKHt9KTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXNldEZpZWxkcygpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZHNWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmV3VmFsdWVzKSA9PiB7XG4gICAgICAgIHNldFZhbHVlcygocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIG5ld1ZhbHVlcyk7XG4gICAgICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UobmV3VmFsdWVzLCB1cGRhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVkVmFsdWVzO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHN1Ym1pdDogaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIH0pLCBbXG4gICAgICAgIGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICBdKTtcbiAgICBjb25zdCBjb3JlQ29udGV4dFNoYXBlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSksIFtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmaWVsZFJ1bGVzLFxuICAgICAgICBnZXRGaWVsZFJ1bGVzLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIGNvcmVDb250ZXh0U2hhcGUsXG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtQ29yZTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
260
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfdXNlRXZlbnRDYWxsYmFjayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl9wYXRoVXRpbHMiLCJfcnVuUnVsZXMiLCJ1c2VGb3JtQ29yZSIsImV4cG9ydHMiLCJjb25maWciLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJfY29uZmlnJGluaXRpYWxWYWx1ZXMiLCJpbml0aWFsVmFsdWVzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uVmFsdWVzQ2hhbmdlIiwib25SZXNldCIsIl9jb25maWckc2l6ZSIsInNpemUiLCJfY29uZmlnJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX2NvbmZpZyRkaXNhYmxlZCIsImRpc2FibGVkIiwiX2NvbmZpZyRjb2xvbiIsImNvbG9uIiwiX2NvbmZpZyRyZXF1aXJlZE1hcmsiLCJyZXF1aXJlZE1hcmsiLCJfY29uZmlnJHZhbGlkYXRlVHJpZ2ciLCJ2YWxpZGF0ZVRyaWdnZXIiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVycm9ycyIsInNldEVycm9ycyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwid2FybmluZ3MiLCJzZXRXYXJuaW5ncyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwidG91Y2hlZCIsInNldFRvdWNoZWQiLCJmaWVsZFJ1bGVzUmVmIiwidXNlUmVmIiwidmFsdWVzUmVmIiwiY29tbWl0VmFsdWVzIiwidXNlTWVtb2l6ZWRGbiIsIm5ld1ZhbHVlcyIsImN1cnJlbnQiLCJzZXRGaWVsZFZhbHVlIiwibmFtZSIsInZhbHVlIiwicHJldiIsImluY2x1ZGVzIiwic2V0TmVzdGVkVmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkyIiwibmV3RXJyb3JzIiwic2V0RmllbGRFcnJvciIsImVycm9yIiwic2V0RmllbGRXYXJuaW5nIiwid2FybmluZyIsIm5ld1dhcm5pbmdzIiwicmVnaXN0ZXJGaWVsZCIsInJ1bGVzIiwiZ2V0RmllbGRSdWxlcyIsInVucmVnaXN0ZXJGaWVsZCIsInZhbGlkYXRlRmllbGQiLCJwcm92aWRlZFZhbHVlIiwicmVzb2x2ZVZhbHVlIiwiX3J1blJ1bGVzU3luYyIsInJ1blJ1bGVzU3luYyIsInZhbGlkYXRlRmllbGRzIiwiZmllbGRzUnVsZXNUb1ZhbGlkYXRlIiwiaXNWYWxpZCIsImtleXMiLCJmb3JFYWNoIiwiaGFuZGxlU3VibWl0SW50ZXJuYWwiLCJjdXJyZW50VmFsdWVzIiwiY3VycmVudFJ1bGVzIiwiaGFzRXJyb3JzIiwiZmllbGROYW1lIiwiX3J1blJ1bGVzU3luYzIiLCJzdWNjZXNzIiwiaGFuZGxlU3VibWl0IiwidXNlRXZlbnRDYWxsYmFjayIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInJlc2V0RmllbGRzIiwiaGFuZGxlUmVzZXQiLCJnZXRGaWVsZFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsInVwZGF0ZWRWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJ1c2VNZW1vIiwic3VibWl0IiwiY29yZUNvbnRleHRTaGFwZSIsImZpZWxkUnVsZXMiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUNB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dXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4uL3BhdGhVdGlscyc7XG5pbXBvcnQgeyBydW5SdWxlc1N5bmMgfSBmcm9tICcuLi9ydW5SdWxlcyc7XG5leHBvcnQgY29uc3QgdXNlRm9ybUNvcmUgPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IGluaXRpYWxWYWx1ZXMgPSB7fSwgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblZhbHVlc0NoYW5nZSwgb25SZXNldCwgc2l6ZSA9ICdtaWRkbGUnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCBjb2xvbiA9IHRydWUsIHJlcXVpcmVkTWFyayA9IHRydWUsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIH0gPSBjb25maWc7XG4gICAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZXMpO1xuICAgIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3dhcm5pbmdzLCBzZXRXYXJuaW5nc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3RvdWNoZWQsIHNldFRvdWNoZWRdID0gdXNlU3RhdGUoe30pO1xuICAgIC8vIExpdmUgcnVsZSByZWdpc3RyeSDigJQgT05FIHN0YWJsZSBvYmplY3QgbXV0YXRlZCBpbiBwbGFjZS4gUmVnaXN0cmF0aW9uIG11c3RcbiAgICAvLyBub3QgdHJpZ2dlciByZW5kZXJzLCBhbmQgc3VibWl0LXRpbWUgdmFsaWRhdGlvbiBtdXN0IGFsd2F5cyByZWFkIHRoZSBsYXRlc3RcbiAgICAvLyBydWxlcyAodGhleSBjYW4gY2hhbmdlIGJldHdlZW4gcmVuZGVycywgZS5nLiBhIGNvbmRpdGlvbmFsIGByZXF1aXJlZGApLlxuICAgIGNvbnN0IGZpZWxkUnVsZXNSZWYgPSB1c2VSZWYoe30pO1xuICAgIC8vIEltcGVyYXRpdmUgbWlycm9yIG9mIGB2YWx1ZXNgLiBDb21wdXRpbmcgdGhlIG5leHQgdmFsdWVzIE9VVFNJREUgdGhlXG4gICAgLy8gc2V0U3RhdGUgdXBkYXRlciBrZWVwcyB0aGUgdXBkYXRlciBwdXJlIChTdHJpY3RNb2RlIHJlcGxheXMgdXBkYXRlcnMsXG4gICAgLy8gd2hpY2ggZG91YmxlLWZpcmVkIG9uVmFsdWVzQ2hhbmdlKSBhbmQgbGV0cyBtdWx0aXBsZSBzZXQgY2FsbHMgaW4gdGhlXG4gICAgLy8gc2FtZSB0aWNrIHNlZSBlYWNoIG90aGVyJ3Mgd3JpdGVzLlxuICAgIGNvbnN0IHZhbHVlc1JlZiA9IHVzZVJlZih2YWx1ZXMpO1xuICAgIGNvbnN0IGNvbW1pdFZhbHVlcyA9IHVzZU1lbW9pemVkRm4oKG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICB2YWx1ZXNSZWYuY3VycmVudCA9IG5ld1ZhbHVlcztcbiAgICAgICAgc2V0VmFsdWVzKG5ld1ZhbHVlcyk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXYgPSB2YWx1ZXNSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gbmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKHByZXYsIG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogdmFsdWUgfSk7XG4gICAgICAgIGNvbW1pdFZhbHVlcyhuZXdWYWx1ZXMpO1xuICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UoeyBbbmFtZV06IHZhbHVlIH0sIG5ld1ZhbHVlcyk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdFcnJvcnM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBlcnJvcikgPT4ge1xuICAgICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiBlcnJvciB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRXYXJuaW5nID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgd2FybmluZykgPT4ge1xuICAgICAgICBzZXRXYXJuaW5ncygocHJldikgPT4ge1xuICAgICAgICAgICAgaWYgKHdhcm5pbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld1dhcm5pbmdzW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdXYXJuaW5ncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmV2W25hbWVdID09PSB3YXJuaW5nKVxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiB3YXJuaW5nIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMpID0+IHtcbiAgICAgICAgZmllbGRSdWxlc1JlZi5jdXJyZW50W25hbWVdID0gcnVsZXM7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRSdWxlcyA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIGZpZWxkUnVsZXNSZWYuY3VycmVudFtuYW1lXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzID0gW10sIHByb3ZpZGVkVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm92aWRlZFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm92aWRlZFZhbHVlIDogcmVzb2x2ZVZhbHVlKHZhbHVlc1JlZi5jdXJyZW50LCBuYW1lKTtcbiAgICAgICAgY29uc3QgeyBlcnJvciwgd2FybmluZyB9ID0gcnVuUnVsZXNTeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXNSZWYuY3VycmVudCwgcnVsZXMpO1xuICAgICAgICBzZXRGaWVsZFdhcm5pbmcobmFtZSwgd2FybmluZyk7XG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc1J1bGVzVG9WYWxpZGF0ZSA9IGZpZWxkUnVsZXNSZWYuY3VycmVudCkgPT4ge1xuICAgICAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkc1J1bGVzVG9WYWxpZGF0ZSkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmaWVsZHNSdWxlc1RvVmFsaWRhdGVbbmFtZV07XG4gICAgICAgICAgICBpZiAoIXZhbGlkYXRlRmllbGQobmFtZSwgcnVsZXMpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0SW50ZXJuYWwgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHZhbHVlc1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50UnVsZXMgPSBmaWVsZFJ1bGVzUmVmLmN1cnJlbnQ7XG4gICAgICAgIGxldCBoYXNFcnJvcnMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0ge307XG4gICAgICAgIGNvbnN0IG5ld1dhcm5pbmdzID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnRSdWxlcykuZm9yRWFjaCgoZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVWYWx1ZShjdXJyZW50VmFsdWVzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgY29uc3QgeyBlcnJvciwgd2FybmluZyB9ID0gcnVuUnVsZXNTeW5jKGZpZWxkTmFtZSwgdmFsdWUsIGN1cnJlbnRWYWx1ZXMsIGN1cnJlbnRSdWxlc1tmaWVsZE5hbWVdKTtcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YXJuaW5nICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbmV3V2FybmluZ3NbZmllbGROYW1lXSA9IHdhcm5pbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRFcnJvcnMobmV3RXJyb3JzKTtcbiAgICAgICAgc2V0V2FybmluZ3MobmV3V2FybmluZ3MpO1xuICAgICAgICBpZiAoIWhhc0Vycm9ycykge1xuICAgICAgICAgICAgb25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKGN1cnJlbnRWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzOiBjdXJyZW50VmFsdWVzIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGN1cnJlbnRWYWx1ZXMsIGVycm9yczogbmV3RXJyb3JzIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yczogbmV3RXJyb3JzIH07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gaGFuZGxlU3VibWl0SW50ZXJuYWwoKTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBjb21taXRWYWx1ZXMoaW5pdGlhbFZhbHVlcyk7XG4gICAgICAgIHNldEVycm9ycyh7fSk7XG4gICAgICAgIHNldFdhcm5pbmdzKHt9KTtcbiAgICAgICAgc2V0VG91Y2hlZCh7fSk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmVzZXRGaWVsZHMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZFZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVZhbHVlKHZhbHVlc1JlZi5jdXJyZW50LCBuYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZHNWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzUmVmLmN1cnJlbnQ7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdmFsdWVzUmVmLmN1cnJlbnQpLCBuZXdWYWx1ZXMpO1xuICAgICAgICBjb21taXRWYWx1ZXModXBkYXRlZFZhbHVlcyk7XG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlID09PSBudWxsIHx8IG9uVmFsdWVzQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblZhbHVlc0NoYW5nZShuZXdWYWx1ZXMsIHVwZGF0ZWRWYWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgc3VibWl0OiBoYW5kbGVTdWJtaXRJbnRlcm5hbCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgfSksIFtcbiAgICAgICAgaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIF0pO1xuICAgIGNvbnN0IGNvcmVDb250ZXh0U2hhcGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICBzZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KSwgW1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgd2FybmluZ3MsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICAvLyBMaXZlIHJlZ2lzdHJ5IOKAlCBzdGFibGUgaWRlbnRpdHksIG11dGF0ZWQgaW4gcGxhY2UgYnkgcmVnaXN0ZXIvdW5yZWdpc3Rlci5cbiAgICAgICAgZmllbGRSdWxlczogZmllbGRSdWxlc1JlZi5jdXJyZW50LFxuICAgICAgICBnZXRGaWVsZFJ1bGVzLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICBzZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgY29yZUNvbnRleHRTaGFwZSxcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm1Db3JlOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|