@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
|
@@ -10,7 +10,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
12
|
var _react = require("react");
|
|
13
|
-
var
|
|
13
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
14
|
+
var _useSafeState7 = _interopRequireDefault(require("@1money/hooks/useSafeState"));
|
|
14
15
|
var _Pagination = require("../Pagination");
|
|
15
16
|
var _Table = require("../Table");
|
|
16
17
|
var _ProForm = require("../ProForm");
|
|
@@ -119,7 +120,7 @@ function ProTableInner(props) {
|
|
|
119
120
|
},
|
|
120
121
|
// mount-only snapshot of the URL
|
|
121
122
|
[searchInitialValues]);
|
|
122
|
-
var _useSafeState = (0,
|
|
123
|
+
var _useSafeState = (0, _useSafeState7["default"])(function () {
|
|
123
124
|
return mergedInitialValues;
|
|
124
125
|
}),
|
|
125
126
|
_useSafeState2 = (0, _slicedToArray2["default"])(_useSafeState, 2),
|
|
@@ -127,11 +128,11 @@ function ProTableInner(props) {
|
|
|
127
128
|
setSearchParams = _useSafeState2[1];
|
|
128
129
|
var formRef = (0, _react.useRef)(undefined);
|
|
129
130
|
// ── server sort / filter ──
|
|
130
|
-
var _useSafeState3 = (0,
|
|
131
|
+
var _useSafeState3 = (0, _useSafeState7["default"])({}),
|
|
131
132
|
_useSafeState4 = (0, _slicedToArray2["default"])(_useSafeState3, 2),
|
|
132
133
|
sort = _useSafeState4[0],
|
|
133
134
|
setSort = _useSafeState4[1];
|
|
134
|
-
var _useSafeState5 = (0,
|
|
135
|
+
var _useSafeState5 = (0, _useSafeState7["default"])({}),
|
|
135
136
|
_useSafeState6 = (0, _slicedToArray2["default"])(_useSafeState5, 2),
|
|
136
137
|
filter = _useSafeState6[0],
|
|
137
138
|
setFilter = _useSafeState6[1];
|
|
@@ -168,7 +169,7 @@ function ProTableInner(props) {
|
|
|
168
169
|
var dataSource = controlledData !== null && controlledData !== void 0 ? controlledData : fetchedData;
|
|
169
170
|
var loading = controlledLoading !== null && controlledLoading !== void 0 ? controlledLoading : manual ? false : fetchLoading;
|
|
170
171
|
// ── handlers ──
|
|
171
|
-
var handleSearchFinish = (0,
|
|
172
|
+
var handleSearchFinish = (0, _useMemoizedFn["default"])(function (values) {
|
|
172
173
|
var perColumn = (0, _genSearchFields.applySearchTransforms)(values, columns);
|
|
173
174
|
var finalParams = beforeSearchSubmit ? beforeSearchSubmit(perColumn) : perColumn;
|
|
174
175
|
setSearchParams(finalParams);
|
|
@@ -177,7 +178,7 @@ function ProTableInner(props) {
|
|
|
177
178
|
});
|
|
178
179
|
void _reload();
|
|
179
180
|
});
|
|
180
|
-
var handleSearchReset = (0,
|
|
181
|
+
var handleSearchReset = (0, _useMemoizedFn["default"])(function () {
|
|
181
182
|
var _a;
|
|
182
183
|
// Use the array form (`resetFields(names)`) — the no-arg form re-invokes the
|
|
183
184
|
// form's own `onReset`, which loops back here and recurses infinitely.
|
|
@@ -188,7 +189,7 @@ function ProTableInner(props) {
|
|
|
188
189
|
});
|
|
189
190
|
void _reload();
|
|
190
191
|
});
|
|
191
|
-
var handleTableChange = (0,
|
|
192
|
+
var handleTableChange = (0, _useMemoizedFn["default"])(function (meta) {
|
|
192
193
|
if (meta.sorter) {
|
|
193
194
|
var _meta$sorter = meta.sorter,
|
|
194
195
|
columnKey = _meta$sorter.columnKey,
|
|
@@ -201,7 +202,7 @@ function ProTableInner(props) {
|
|
|
201
202
|
});
|
|
202
203
|
onChange === null || onChange === void 0 ? void 0 : onChange(meta);
|
|
203
204
|
});
|
|
204
|
-
var handlePageChange = (0,
|
|
205
|
+
var handlePageChange = (0, _useMemoizedFn["default"])(function (page, pageSize) {
|
|
205
206
|
setPageInfo({
|
|
206
207
|
current: page,
|
|
207
208
|
pageSize: pageSize
|
|
@@ -313,4 +314,4 @@ function ProTableInner(props) {
|
|
|
313
314
|
}
|
|
314
315
|
var ProTable = exports.ProTable = /*#__PURE__*/(0, _react.memo)(ProTableInner);
|
|
315
316
|
var _default = exports["default"] = ProTable;
|
|
316
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaG9va3MiLCJfUGFnaW5hdGlvbiIsIl9UYWJsZSIsIl9Qcm9Gb3JtIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnN0YW50cyIsIl91c2VGZXRjaERhdGEyIiwiX2dlbkNvbHVtbnMiLCJfZ2VuU2VhcmNoRmllbGRzIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwicmVhZFVybFZhbHVlcyIsInN5bmNUb1VybCIsIndpbmRvdyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZm9yRWFjaCIsImtleSIsIlByb1RhYmxlSW5uZXIiLCJwcm9wcyIsIl90aGlzIiwiX2EiLCJfYiIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJDU1NfUFJFRklYIiwiY2xhc3NOYW1lIiwiY29sdW1ucyIsInJlcXVlc3QiLCJjb250cm9sbGVkRGF0YSIsImRhdGFTb3VyY2UiLCJjb250cm9sbGVkTG9hZGluZyIsImxvYWRpbmciLCJkZWZhdWx0RGF0YSIsIm1hbnVhbFJlcXVlc3QiLCJkZWJvdW5jZVRpbWUiLCJwb3N0RGF0YSIsInBvbGxpbmciLCJiZWZvcmVTZWFyY2hTdWJtaXQiLCJjb2x1bW5FbXB0eVRleHQiLCJzZWFyY2hGb3JtUmVuZGVyIiwiX3Byb3BzJHBhZ2luYXRpb24iLCJwYWdpbmF0aW9uIiwiX3Byb3BzJHNlYXJjaCIsInJvd1NlbGVjdGlvbiIsIl9wcm9wcyRzaXplIiwic2l6ZSIsImFjdGlvblJlZiIsIm9uTG9hZCIsIm9uTG9hZGluZ0NoYW5nZSIsIm9uUmVxdWVzdEVycm9yIiwib25DaGFuZ2UiLCJyb3dLZXkiLCJfcHJvcHMkdmFyaWFudCIsInZhcmlhbnQiLCJib3JkZXJlZCIsInNjcm9sbCIsInN0aWNreSIsImV4cGFuZGFibGUiLCJlbXB0eSIsInRhYmxlTGF5b3V0Iiwicm93Q2xhc3NOYW1lIiwib25Sb3ciLCJzdW1tYXJ5IiwiZm9vdGVyIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJ0YWJsZUNvbHVtbnMiLCJ1c2VNZW1vIiwiZ2VuQ29sdW1ucyIsInNlYXJjaENmZyIsInVuZGVmaW5lZCIsIl91c2VNZW1vIiwiZ2VuU2VhcmNoRmllbGRzIiwic2VhcmNoRmllbGRzIiwiZmllbGRzIiwic2VhcmNoSW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJzZWFyY2hGaWVsZE5hbWVzIiwibmFtZXMiLCJoYXNTZWFyY2giLCJsZW5ndGgiLCJtZXJnZWRJbml0aWFsVmFsdWVzIiwiT2JqZWN0IiwiYXNzaWduIiwiX3VzZVNhZmVTdGF0ZSIsInVzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2VhcmNoUGFyYW1zIiwic2V0U2VhcmNoUGFyYW1zIiwiZm9ybVJlZiIsInVzZVJlZiIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJzb3J0Iiwic2V0U29ydCIsIl91c2VTYWZlU3RhdGU1IiwiX3VzZVNhZmVTdGF0ZTYiLCJmaWx0ZXIiLCJzZXRGaWx0ZXIiLCJwYWdpbmF0ZWQiLCJkZWZhdWx0UGFnZVNpemUiLCJwYWdlU2l6ZSIsIkRFRkFVTFRfUEFHRV9TSVpFIiwiZGVmYXVsdEN1cnJlbnQiLCJjdXJyZW50IiwiREVGQVVMVF9DVVJSRU5UIiwibWFudWFsIiwiX3VzZUZldGNoRGF0YSIsInVzZUZldGNoRGF0YSIsImZldGNoZWREYXRhIiwiZmV0Y2hMb2FkaW5nIiwicGFnZUluZm8iLCJzZXRQYWdlSW5mbyIsInJlbG9hZCIsInJlc2V0IiwiaGFuZGxlU2VhcmNoRmluaXNoIiwidXNlTWVtb2l6ZWRGbiIsInZhbHVlcyIsInBlckNvbHVtbiIsImFwcGx5U2VhcmNoVHJhbnNmb3JtcyIsImZpbmFsUGFyYW1zIiwiaGFuZGxlU2VhcmNoUmVzZXQiLCJyZXNldEZpZWxkcyIsImhhbmRsZVRhYmxlQ2hhbmdlIiwibWV0YSIsInNvcnRlciIsIl9tZXRhJHNvcnRlciIsImNvbHVtbktleSIsIm9yZGVyIiwiX2RlZmluZVByb3BlcnR5MiIsIlN0cmluZyIsImZpbHRlcnMiLCJoYW5kbGVQYWdlQ2hhbmdlIiwicGFnZSIsImN1cnJlbnREYXRhU291cmNlIiwiYWN0aW9uIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInJlbG9hZEFuZFJlc3QiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdG9wIiwic2VhcmNoTm9kZSIsInNlYXJjaEZvcm0iLCJfanN4IiwiUXVlcnlGaWx0ZXIiLCJkZWZhdWx0Q29sbGFwc2VkIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwic2VhcmNoQ29uZmlnIiwic2VhcmNoVGV4dCIsIkRFRkFVTFRfVEVYVCIsInJlc2V0VGV4dCIsIm9uRmluaXNoIiwib25SZXNldCIsImNoaWxkcmVuIiwiX2pzeHMiLCJUYWJsZSIsIlBhZ2luYXRpb24iLCJ0b3RhbCIsIlByb1RhYmxlIiwiZXhwb3J0cyIsIm1lbW8iLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQVNBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1RBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FB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QUFXLEVBQUVBLFdBQVc7UUFDeEJDLFlBQVksRUFBRUEsWUFBWTtRQUMxQkMsS0FBSyxFQUFFQSxLQUFLO1FBQ1pDLE9BQU8sRUFBRUEsT0FBTztRQUNoQkMsTUFBTSxFQUFFQTtNQUFNLENBQUEsQ0FDZCxFQUVEcUMsU0FBUyxJQUNSLElBQUFnRCxlQUFBLEVBQUEsS0FBQSxFQUFBO1FBQUszSCxTQUFTLEVBQUV1QyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQUErRixRQUFBLEVBQ25DLElBQUFYLGVBQUEsRUFBQ2Msc0JBQVUsRUFBQTtVQUNUQyxLQUFLLEVBQUVuRCxRQUFRLENBQUNtRCxLQUFLO1VBQ3JCMUQsT0FBTyxFQUFFTyxRQUFRLENBQUNQLE9BQU87VUFDekJILFFBQVEsRUFBRVUsUUFBUSxDQUFDVixRQUFRO1VBQzNCcEQsUUFBUSxFQUFFbUY7UUFBZ0IsQ0FBQTtNQUMxQixDQUFBLENBRUw7SUFBQSxDQUFBLENBQ0c7RUFBQSxDQUFBLENBQ0Y7QUFFVjtBQUVPLElBQU0rQixRQUFRLEdBQUFDLE9BQUEsQ0FBQUQsUUFBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUNySixhQUFhLENBQXlCO0FBQUMsSUFBQXNKLFFBQUEsR0FBQUYsT0FBQSxjQUVyREQsUUFBUSIsImZpbGUiOiJjb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtb2l6ZWRGbiwgdXNlU2FmZVN0YXRlIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vUGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL1RhYmxlJztcbmltcG9ydCB7IFF1ZXJ5RmlsdGVyIH0gZnJvbSAnLi4vUHJvRm9ybSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfQ1VSUkVOVCwgREVGQVVMVF9QQUdFX1NJWkUsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZUZldGNoRGF0YSB9IGZyb20gJy4vdXNlRmV0Y2hEYXRhJztcbmltcG9ydCB7IGdlbkNvbHVtbnMgfSBmcm9tICcuL2NvcmUvZ2VuQ29sdW1ucyc7XG5pbXBvcnQgeyBhcHBseVNlYXJjaFRyYW5zZm9ybXMsIGdlblNlYXJjaEZpZWxkcyB9IGZyb20gJy4vY29yZS9nZW5TZWFyY2hGaWVsZHMnO1xuLyoqIFJlYWQgdGhlIGN1cnJlbnQgVVJMIHF1ZXJ5IHN0cmluZyBpbnRvIHNlYXJjaCB2YWx1ZXMsIGFwcGx5aW5nIHRoZSBgJ2dldCdgIHRyYW5zZm9ybS4gKi9cbmZ1bmN0aW9uIHJlYWRVcmxWYWx1ZXMoc3luY1RvVXJsKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIHBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHR5cGVvZiBzeW5jVG9VcmwgPT09ICdmdW5jdGlvbicgPyBzeW5jVG9VcmwocGFyYW1zLCAnZ2V0JykgOiBwYXJhbXM7XG59XG5mdW5jdGlvbiBQcm9UYWJsZUlubmVyKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IHByZWZpeENscyA9IENTU19QUkVGSVgsIGNsYXNzTmFtZSwgY29sdW1ucywgcmVxdWVzdCwgcGFyYW1zLCBkYXRhU291cmNlOiBjb250cm9sbGVkRGF0YSwgbG9hZGluZzogY29udHJvbGxlZExvYWRpbmcsIGRlZmF1bHREYXRhLCBtYW51YWxSZXF1ZXN0LCBkZWJvdW5jZVRpbWUsIHBvc3REYXRhLCBwb2xsaW5nLCBiZWZvcmVTZWFyY2hTdWJtaXQsIGNvbHVtbkVtcHR5VGV4dCwgc2VhcmNoRm9ybVJlbmRlciwgcGFnaW5hdGlvbiA9IHt9LCBzZWFyY2ggPSB7fSwgcm93U2VsZWN0aW9uLCBzaXplID0gJ3NtYWxsJywgYWN0aW9uUmVmLCBvbkxvYWQsIG9uTG9hZGluZ0NoYW5nZSwgb25SZXF1ZXN0RXJyb3IsIG9uQ2hhbmdlLCByb3dLZXksIHZhcmlhbnQgPSAnc3Ryb2tlJywgYm9yZGVyZWQsIHNjcm9sbCwgc3RpY2t5LCBleHBhbmRhYmxlLCBlbXB0eSwgdGFibGVMYXlvdXQsIHJvd0NsYXNzTmFtZSwgb25Sb3csIHN1bW1hcnksIGZvb3RlciwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgdGFibGVDb2x1bW5zID0gdXNlTWVtbygoKSA9PiBnZW5Db2x1bW5zKGNvbHVtbnMsIGNvbHVtbkVtcHR5VGV4dCksIFtjb2x1bW5zLCBjb2x1bW5FbXB0eVRleHRdKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gKGF1dG8tZ2VuZXJhdGVkIGZyb20gY29sdW1ucykg4pSA4pSAXG4gICAgY29uc3Qgc2VhcmNoQ2ZnID0gc2VhcmNoID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHNlYXJjaDtcbiAgICBjb25zdCB7IGZpZWxkczogc2VhcmNoRmllbGRzLCBpbml0aWFsVmFsdWVzOiBzZWFyY2hJbml0aWFsVmFsdWVzLCBuYW1lczogc2VhcmNoRmllbGROYW1lcyB9ID0gdXNlTWVtbygoKSA9PiBnZW5TZWFyY2hGaWVsZHMoY29sdW1ucyksIFtjb2x1bW5zXSk7XG4gICAgY29uc3QgaGFzU2VhcmNoID0gc2VhcmNoICE9PSBmYWxzZSAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBzeW5jVG9VcmwgPSBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcuc3luY1RvVXJsO1xuICAgIC8vIFNlZWQgaW5pdGlhbCB2YWx1ZXMgKGFuZCB0aGUgZmlyc3QgcmVxdWVzdCkgZnJvbSB0aGUgVVJMIHdoZW4gc3luY1RvVXJsIGlzIG9uLlxuICAgIGNvbnN0IG1lcmdlZEluaXRpYWxWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IChzeW5jVG9VcmwgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNlYXJjaEluaXRpYWxWYWx1ZXMpLCByZWFkVXJsVmFsdWVzKHN5bmNUb1VybCkpIDogc2VhcmNoSW5pdGlhbFZhbHVlcyksIFxuICAgIC8vIG1vdW50LW9ubHkgc25hcHNob3Qgb2YgdGhlIFVSTFxuICAgIFtzZWFyY2hJbml0aWFsVmFsdWVzXSk7XG4gICAgY29uc3QgW3NlYXJjaFBhcmFtcywgc2V0U2VhcmNoUGFyYW1zXSA9IHVzZVNhZmVTdGF0ZSgoKSA9PiBtZXJnZWRJbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBmb3JtUmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgLy8g4pSA4pSAIHNlcnZlciBzb3J0IC8gZmlsdGVyIOKUgOKUgFxuICAgIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgLy8g4pSA4pSAIHBhZ2luYXRpb24gY29uZmlnIOKUgOKUgFxuICAgIGNvbnN0IHBhZ2luYXRlZCA9IHBhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZSA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSB8fCAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnBhZ2VTaXplKSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICBjb25zdCBkZWZhdWx0Q3VycmVudCA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpIHx8IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uY3VycmVudCkgfHwgREVGQVVMVF9DVVJSRU5UO1xuICAgIGNvbnN0IG1hbnVhbCA9IGNvbnRyb2xsZWREYXRhICE9PSB1bmRlZmluZWQgfHwgIXJlcXVlc3Q7XG4gICAgY29uc3QgeyBkYXRhU291cmNlOiBmZXRjaGVkRGF0YSwgbG9hZGluZzogZmV0Y2hMb2FkaW5nLCBwYWdlSW5mbywgc2V0UGFnZUluZm8sIHJlbG9hZCwgcmVzZXQgfSA9IHVzZUZldGNoRGF0YSh7XG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1hbnVhbCxcbiAgICAgICAgbWFudWFsUmVxdWVzdCxcbiAgICAgICAgZGVib3VuY2VUaW1lLFxuICAgICAgICBwb3N0RGF0YSxcbiAgICAgICAgcG9sbGluZyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBkZWZhdWx0RGF0YSxcbiAgICAgICAgcGFnaW5hdGVkLFxuICAgICAgICBkZWZhdWx0Q3VycmVudCxcbiAgICAgICAgZGVmYXVsdFBhZ2VTaXplLFxuICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgIHNvcnQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgb25Mb2FkLFxuICAgICAgICBvbkxvYWRpbmdDaGFuZ2UsXG4gICAgICAgIG9uUmVxdWVzdEVycm9yLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBjb250cm9sbGVkRGF0YSAhPT0gbnVsbCAmJiBjb250cm9sbGVkRGF0YSAhPT0gdm9pZCAwID8gY29udHJvbGxlZERhdGEgOiBmZXRjaGVkRGF0YTtcbiAgICBjb25zdCBsb2FkaW5nID0gY29udHJvbGxlZExvYWRpbmcgIT09IG51bGwgJiYgY29udHJvbGxlZExvYWRpbmcgIT09IHZvaWQgMCA/IGNvbnRyb2xsZWRMb2FkaW5nIDogKG1hbnVhbCA/IGZhbHNlIDogZmV0Y2hMb2FkaW5nKTtcbiAgICAvLyDilIDilIAgaGFuZGxlcnMg4pSA4pSAXG4gICAgY29uc3QgaGFuZGxlU2VhcmNoRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHBlckNvbHVtbiA9IGFwcGx5U2VhcmNoVHJhbnNmb3Jtcyh2YWx1ZXMsIGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBmaW5hbFBhcmFtcyA9IGJlZm9yZVNlYXJjaFN1Ym1pdCA/IGJlZm9yZVNlYXJjaFN1Ym1pdChwZXJDb2x1bW4pIDogcGVyQ29sdW1uO1xuICAgICAgICBzZXRTZWFyY2hQYXJhbXMoZmluYWxQYXJhbXMpO1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICB2b2lkIHJlbG9hZCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaFJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gVXNlIHRoZSBhcnJheSBmb3JtIChgcmVzZXRGaWVsZHMobmFtZXMpYCkg4oCUIHRoZSBuby1hcmcgZm9ybSByZS1pbnZva2VzIHRoZVxuICAgICAgICAvLyBmb3JtJ3Mgb3duIGBvblJlc2V0YCwgd2hpY2ggbG9vcHMgYmFjayBoZXJlIGFuZCByZWN1cnNlcyBpbmZpbml0ZWx5LlxuICAgICAgICAoX2EgPSBmb3JtUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXNldEZpZWxkcyhzZWFyY2hGaWVsZE5hbWVzKTtcbiAgICAgICAgc2V0U2VhcmNoUGFyYW1zKHt9KTtcbiAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgdm9pZCByZWxvYWQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZU1lbW9pemVkRm4oKG1ldGEpID0+IHtcbiAgICAgICAgaWYgKG1ldGEuc29ydGVyKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNvbHVtbktleSwgb3JkZXIgfSA9IG1ldGEuc29ydGVyO1xuICAgICAgICAgICAgc2V0U29ydChjb2x1bW5LZXkgJiYgb3JkZXIgPyB7IFtTdHJpbmcoY29sdW1uS2V5KV06IG9yZGVyIH0gOiB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGEuZmlsdGVycylcbiAgICAgICAgICAgIHNldEZpbHRlcihtZXRhLmZpbHRlcnMpO1xuICAgICAgICBpZiAobWV0YS5zb3J0ZXIgfHwgbWV0YS5maWx0ZXJzKVxuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG1ldGEpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVBhZ2VDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChwYWdlLCBwYWdlU2l6ZSkgPT4ge1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0pO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2Uoe1xuICAgICAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICBhY3Rpb246ICdwYWdpbmF0ZScsXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBpbXBlcmF0aXZlIGhhbmRsZSDilIDilIBcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGFjdGlvblJlZiwgKCkgPT4gKHtcbiAgICAgICAgcmVsb2FkOiAoKSA9PiByZWxvYWQoKSxcbiAgICAgICAgcmVsb2FkQW5kUmVzdDogKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgICAgIHlpZWxkIHJlbG9hZCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGZvcm1SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc2V0RmllbGRzKHNlYXJjaEZpZWxkTmFtZXMpO1xuICAgICAgICAgICAgc2V0U2VhcmNoUGFyYW1zKHNlYXJjaEluaXRpYWxWYWx1ZXMpO1xuICAgICAgICAgICAgc2V0U29ydCh7fSk7XG4gICAgICAgICAgICBzZXRGaWx0ZXIoe30pO1xuICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgIHZvaWQgcmVsb2FkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldFBhZ2VJbmZvLFxuICAgIH0pKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gbm9kZSAob25seSBidWlsdCB3aGVuIHRoZXJlIGFyZSBzZWFyY2hhYmxlIGNvbHVtbnMpIOKUgOKUgFxuICAgIGxldCBzZWFyY2hOb2RlID0gbnVsbDtcbiAgICBpZiAoaGFzU2VhcmNoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEZvcm0gPSAoX2pzeChRdWVyeUZpbHRlciwgeyBmb3JtUmVmOiBmb3JtUmVmLCBzaXplOiBcInNtYWxsXCIsIGluaXRpYWxWYWx1ZXM6IG1lcmdlZEluaXRpYWxWYWx1ZXMsIGRlZmF1bHRDb2xsYXBzZWQ6IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5kZWZhdWx0Q29sbGFwc2VkLCBkZWZhdWx0Q29sc051bWJlcjogc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLmRlZmF1bHRDb2xzTnVtYmVyLCBsYWJlbFdpZHRoOiBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcubGFiZWxXaWR0aCwgc3luY1RvVXJsOiBzeW5jVG9VcmwsIHNlYXJjaENvbmZpZzoge1xuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ6IChfYSA9IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5zZWFyY2hUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBERUZBVUxUX1RFWFQuc2VhcmNoLFxuICAgICAgICAgICAgICAgIHJlc2V0VGV4dDogKF9iID0gc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLnJlc2V0VGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULnJlc2V0LFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgfSwgb25GaW5pc2g6IGhhbmRsZVNlYXJjaEZpbmlzaCwgb25SZXNldDogaGFuZGxlU2VhcmNoUmVzZXQsIGNoaWxkcmVuOiBzZWFyY2hGaWVsZHMgfSkpO1xuICAgICAgICBzZWFyY2hOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NlYXJjaCcpLCBjaGlsZHJlbjogc2VhcmNoRm9ybVJlbmRlciA/IHNlYXJjaEZvcm1SZW5kZXIoc2VhcmNoRm9ybSkgOiBzZWFyY2hGb3JtIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh1bmRlZmluZWQsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbc2VhcmNoTm9kZSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRhaW5lcicpLCBjaGlsZHJlbjogW19qc3goVGFibGUsIHsgcm93S2V5OiByb3dLZXksIGNvbHVtbnM6IHRhYmxlQ29sdW1ucywgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSwgbG9hZGluZzogbG9hZGluZywgc2l6ZTogc2l6ZSwgcGFnaW5hdGlvbjogZmFsc2UsIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uLCBvbkNoYW5nZTogaGFuZGxlVGFibGVDaGFuZ2UsIHZhcmlhbnQ6IHZhcmlhbnQsIGJvcmRlcmVkOiBib3JkZXJlZCwgc2Nyb2xsOiBzY3JvbGwsIHN0aWNreTogc3RpY2t5LCBleHBhbmRhYmxlOiBleHBhbmRhYmxlLCBlbXB0eTogZW1wdHksIHRhYmxlTGF5b3V0OiB0YWJsZUxheW91dCwgcm93Q2xhc3NOYW1lOiByb3dDbGFzc05hbWUsIG9uUm93OiBvblJvdywgc3VtbWFyeTogc3VtbWFyeSwgZm9vdGVyOiBmb290ZXIgfSksIHBhZ2luYXRlZCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFnaW5hdGlvbicpLCBjaGlsZHJlbjogX2pzeChQYWdpbmF0aW9uLCB7IHRvdGFsOiBwYWdlSW5mby50b3RhbCwgY3VycmVudDogcGFnZUluZm8uY3VycmVudCwgcGFnZVNpemU6IHBhZ2VJbmZvLnBhZ2VTaXplLCBvbkNoYW5nZTogaGFuZGxlUGFnZUNoYW5nZSB9KSB9KSldIH0pXSB9KSk7XG59XG5leHBvcnQgY29uc3QgUHJvVGFibGUgPSBtZW1vKFByb1RhYmxlSW5uZXIpO1xuZXhwb3J0IGRlZmF1bHQgUHJvVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
317
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfdXNlTWVtb2l6ZWRGbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlU2FmZVN0YXRlNyIsIl9QYWdpbmF0aW9uIiwiX1RhYmxlIiwiX1Byb0Zvcm0iLCJfY2xhc3NuYW1lcyIsIl9jb25zdGFudHMiLCJfdXNlRmV0Y2hEYXRhMiIsIl9nZW5Db2x1bW5zIiwiX2dlblNlYXJjaEZpZWxkcyIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsInJlYWRVcmxWYWx1ZXMiLCJzeW5jVG9VcmwiLCJ3aW5kb3ciLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJsb2NhdGlvbiIsInNlYXJjaCIsImZvckVhY2giLCJrZXkiLCJQcm9UYWJsZUlubmVyIiwicHJvcHMiLCJfdGhpcyIsIl9hIiwiX2IiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiQ1NTX1BSRUZJWCIsImNsYXNzTmFtZSIsImNvbHVtbnMiLCJyZXF1ZXN0IiwiY29udHJvbGxlZERhdGEiLCJkYXRhU291cmNlIiwiY29udHJvbGxlZExvYWRpbmciLCJsb2FkaW5nIiwiZGVmYXVsdERhdGEiLCJtYW51YWxSZXF1ZXN0IiwiZGVib3VuY2VUaW1lIiwicG9zdERhdGEiLCJwb2xsaW5nIiwiYmVmb3JlU2VhcmNoU3VibWl0IiwiY29sdW1uRW1wdHlUZXh0Iiwic2VhcmNoRm9ybVJlbmRlciIsIl9wcm9wcyRwYWdpbmF0aW9uIiwicGFnaW5hdGlvbiIsIl9wcm9wcyRzZWFyY2giLCJyb3dTZWxlY3Rpb24iLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJhY3Rpb25SZWYiLCJvbkxvYWQiLCJvbkxvYWRpbmdDaGFuZ2UiLCJvblJlcXVlc3RFcnJvciIsIm9uQ2hhbmdlIiwicm93S2V5IiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiYm9yZGVyZWQiLCJzY3JvbGwiLCJzdGlja3kiLCJleHBhbmRhYmxlIiwiZW1wdHkiLCJ0YWJsZUxheW91dCIsInJvd0NsYXNzTmFtZSIsIm9uUm93Iiwic3VtbWFyeSIsImZvb3RlciIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwidGFibGVDb2x1bW5zIiwidXNlTWVtbyIsImdlbkNvbHVtbnMiLCJzZWFyY2hDZmciLCJ1bmRlZmluZWQiLCJfdXNlTWVtbyIsImdlblNlYXJjaEZpZWxkcyIsInNlYXJjaEZpZWxkcyIsImZpZWxkcyIsInNlYXJjaEluaXRpYWxWYWx1ZXMiLCJpbml0aWFsVmFsdWVzIiwic2VhcmNoRmllbGROYW1lcyIsIm5hbWVzIiwiaGFzU2VhcmNoIiwibGVuZ3RoIiwibWVyZ2VkSW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImFzc2lnbiIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNlYXJjaFBhcmFtcyIsInNldFNlYXJjaFBhcmFtcyIsImZvcm1SZWYiLCJ1c2VSZWYiLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic29ydCIsInNldFNvcnQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VTYWZlU3RhdGU2IiwiZmlsdGVyIiwic2V0RmlsdGVyIiwicGFnaW5hdGVkIiwiZGVmYXVsdFBhZ2VTaXplIiwicGFnZVNpemUiLCJERUZBVUxUX1BBR0VfU0laRSIsImRlZmF1bHRDdXJyZW50IiwiY3VycmVudCIsIkRFRkFVTFRfQ1VSUkVOVCIsIm1hbnVhbCIsIl91c2VGZXRjaERhdGEiLCJ1c2VGZXRjaERhdGEiLCJmZXRjaGVkRGF0YSIsImZldGNoTG9hZGluZyIsInBhZ2VJbmZvIiwic2V0UGFnZUluZm8iLCJyZWxvYWQiLCJyZXNldCIsImhhbmRsZVNlYXJjaEZpbmlzaCIsInVzZU1lbW9pemVkRm4iLCJ2YWx1ZXMiLCJwZXJDb2x1bW4iLCJhcHBseVNlYXJjaFRyYW5zZm9ybXMiLCJmaW5hbFBhcmFtcyIsImhhbmRsZVNlYXJjaFJlc2V0IiwicmVzZXRGaWVsZHMiLCJoYW5kbGVUYWJsZUNoYW5nZSIsIm1ldGEiLCJzb3J0ZXIiLCJfbWV0YSRzb3J0ZXIiLCJjb2x1bW5LZXkiLCJvcmRlciIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJTdHJpbmciLCJmaWx0ZXJzIiwiaGFuZGxlUGFnZUNoYW5nZSIsInBhZ2UiLCJjdXJyZW50RGF0YVNvdXJjZSIsImFjdGlvbiIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJyZWxvYWRBbmRSZXN0IiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2Iiwic3RvcCIsInNlYXJjaE5vZGUiLCJzZWFyY2hGb3JtIiwiX2pzeCIsIlF1ZXJ5RmlsdGVyIiwiZGVmYXVsdENvbGxhcHNlZCIsImRlZmF1bHRDb2xzTnVtYmVyIiwibGFiZWxXaWR0aCIsInNlYXJjaENvbmZpZyIsInNlYXJjaFRleHQiLCJERUZBVUxUX1RFWFQiLCJyZXNldFRleHQiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiVGFibGUiLCJQYWdpbmF0aW9uIiwidG90YWwiLCJQcm9UYWJsZSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFTQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNUQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFELHNCQUFBLENBQUFILE9B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TTtRQUNkQyxNQUFNLEVBQUVBLE1BQU07UUFDZEMsVUFBVSxFQUFFQSxVQUFVO1FBQ3RCQyxLQUFLLEVBQUVBLEtBQUs7UUFDWkMsV0FBVyxFQUFFQSxXQUFXO1FBQ3hCQyxZQUFZLEVBQUVBLFlBQVk7UUFDMUJDLEtBQUssRUFBRUEsS0FBSztRQUNaQyxPQUFPLEVBQUVBLE9BQU87UUFDaEJDLE1BQU0sRUFBRUE7TUFBTSxDQUFBLENBQ2QsRUFFRHFDLFNBQVMsSUFDUixJQUFBZ0QsZUFBQSxFQUFBLEtBQUEsRUFBQTtRQUFLM0gsU0FBUyxFQUFFdUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUFBK0YsUUFBQSxFQUNuQyxJQUFBWCxlQUFBLEVBQUNjLHNCQUFVLEVBQUE7VUFDVEMsS0FBSyxFQUFFbkQsUUFBUSxDQUFDbUQsS0FBSztVQUNyQjFELE9BQU8sRUFBRU8sUUFBUSxDQUFDUCxPQUFPO1VBQ3pCSCxRQUFRLEVBQUVVLFFBQVEsQ0FBQ1YsUUFBUTtVQUMzQnBELFFBQVEsRUFBRW1GO1FBQWdCLENBQUE7TUFDMUIsQ0FBQSxDQUVMO0lBQUEsQ0FBQSxDQUNHO0VBQUEsQ0FBQSxDQUNGO0FBRVY7QUFFTyxJQUFNK0IsUUFBUSxHQUFBQyxPQUFBLENBQUFELFFBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDckosYUFBYSxDQUF5QjtBQUFDLElBQUFzSixRQUFBLEdBQUFGLE9BQUEsY0FFckRELFFBQVEiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9UYWJsZS9Qcm9UYWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUltcGVyYXRpdmVIYW5kbGUsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB7IFBhZ2luYXRpb24gfSBmcm9tICcuLi9QYWdpbmF0aW9uJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vVGFibGUnO1xuaW1wb3J0IHsgUXVlcnlGaWx0ZXIgfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9DVVJSRU5ULCBERUZBVUxUX1BBR0VfU0laRSwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdXNlRmV0Y2hEYXRhIH0gZnJvbSAnLi91c2VGZXRjaERhdGEnO1xuaW1wb3J0IHsgZ2VuQ29sdW1ucyB9IGZyb20gJy4vY29yZS9nZW5Db2x1bW5zJztcbmltcG9ydCB7IGFwcGx5U2VhcmNoVHJhbnNmb3JtcywgZ2VuU2VhcmNoRmllbGRzIH0gZnJvbSAnLi9jb3JlL2dlblNlYXJjaEZpZWxkcyc7XG4vKiogUmVhZCB0aGUgY3VycmVudCBVUkwgcXVlcnkgc3RyaW5nIGludG8gc2VhcmNoIHZhbHVlcywgYXBwbHlpbmcgdGhlIGAnZ2V0J2AgdHJhbnNmb3JtLiAqL1xuZnVuY3Rpb24gcmVhZFVybFZhbHVlcyhzeW5jVG9VcmwpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgcGFyYW1zW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJyA/IHN5bmNUb1VybChwYXJhbXMsICdnZXQnKSA6IHBhcmFtcztcbn1cbmZ1bmN0aW9uIFByb1RhYmxlSW5uZXIocHJvcHMpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzID0gQ1NTX1BSRUZJWCwgY2xhc3NOYW1lLCBjb2x1bW5zLCByZXF1ZXN0LCBwYXJhbXMsIGRhdGFTb3VyY2U6IGNvbnRyb2xsZWREYXRhLCBsb2FkaW5nOiBjb250cm9sbGVkTG9hZGluZywgZGVmYXVsdERhdGEsIG1hbnVhbFJlcXVlc3QsIGRlYm91bmNlVGltZSwgcG9zdERhdGEsIHBvbGxpbmcsIGJlZm9yZVNlYXJjaFN1Ym1pdCwgY29sdW1uRW1wdHlUZXh0LCBzZWFyY2hGb3JtUmVuZGVyLCBwYWdpbmF0aW9uID0ge30sIHNlYXJjaCA9IHt9LCByb3dTZWxlY3Rpb24sIHNpemUgPSAnc21hbGwnLCBhY3Rpb25SZWYsIG9uTG9hZCwgb25Mb2FkaW5nQ2hhbmdlLCBvblJlcXVlc3RFcnJvciwgb25DaGFuZ2UsIHJvd0tleSwgdmFyaWFudCA9ICdzdHJva2UnLCBib3JkZXJlZCwgc2Nyb2xsLCBzdGlja3ksIGV4cGFuZGFibGUsIGVtcHR5LCB0YWJsZUxheW91dCwgcm93Q2xhc3NOYW1lLCBvblJvdywgc3VtbWFyeSwgZm9vdGVyLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCB0YWJsZUNvbHVtbnMgPSB1c2VNZW1vKCgpID0+IGdlbkNvbHVtbnMoY29sdW1ucywgY29sdW1uRW1wdHlUZXh0KSwgW2NvbHVtbnMsIGNvbHVtbkVtcHR5VGV4dF0pO1xuICAgIC8vIOKUgOKUgCBzZWFyY2ggZm9ybSAoYXV0by1nZW5lcmF0ZWQgZnJvbSBjb2x1bW5zKSDilIDilIBcbiAgICBjb25zdCBzZWFyY2hDZmcgPSBzZWFyY2ggPT09IGZhbHNlID8gdW5kZWZpbmVkIDogc2VhcmNoO1xuICAgIGNvbnN0IHsgZmllbGRzOiBzZWFyY2hGaWVsZHMsIGluaXRpYWxWYWx1ZXM6IHNlYXJjaEluaXRpYWxWYWx1ZXMsIG5hbWVzOiBzZWFyY2hGaWVsZE5hbWVzIH0gPSB1c2VNZW1vKCgpID0+IGdlblNlYXJjaEZpZWxkcyhjb2x1bW5zKSwgW2NvbHVtbnNdKTtcbiAgICBjb25zdCBoYXNTZWFyY2ggPSBzZWFyY2ggIT09IGZhbHNlICYmIHNlYXJjaEZpZWxkcy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHN5bmNUb1VybCA9IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5zeW5jVG9Vcmw7XG4gICAgLy8gU2VlZCBpbml0aWFsIHZhbHVlcyAoYW5kIHRoZSBmaXJzdCByZXF1ZXN0KSBmcm9tIHRoZSBVUkwgd2hlbiBzeW5jVG9VcmwgaXMgb24uXG4gICAgY29uc3QgbWVyZ2VkSW5pdGlhbFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4gKHN5bmNUb1VybCA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc2VhcmNoSW5pdGlhbFZhbHVlcyksIHJlYWRVcmxWYWx1ZXMoc3luY1RvVXJsKSkgOiBzZWFyY2hJbml0aWFsVmFsdWVzKSwgXG4gICAgLy8gbW91bnQtb25seSBzbmFwc2hvdCBvZiB0aGUgVVJMXG4gICAgW3NlYXJjaEluaXRpYWxWYWx1ZXNdKTtcbiAgICBjb25zdCBbc2VhcmNoUGFyYW1zLCBzZXRTZWFyY2hQYXJhbXNdID0gdXNlU2FmZVN0YXRlKCgpID0+IG1lcmdlZEluaXRpYWxWYWx1ZXMpO1xuICAgIGNvbnN0IGZvcm1SZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgICAvLyDilIDilIAgc2VydmVyIHNvcnQgLyBmaWx0ZXIg4pSA4pSAXG4gICAgY29uc3QgW3NvcnQsIHNldFNvcnRdID0gdXNlU2FmZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU2FmZVN0YXRlKHt9KTtcbiAgICAvLyDilIDilIAgcGFnaW5hdGlvbiBjb25maWcg4pSA4pSAXG4gICAgY29uc3QgcGFnaW5hdGVkID0gcGFnaW5hdGlvbiAhPT0gZmFsc2U7XG4gICAgY29uc3QgZGVmYXVsdFBhZ2VTaXplID0gKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvbi5kZWZhdWx0UGFnZVNpemUpIHx8IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24ucGFnZVNpemUpIHx8IERFRkFVTFRfUEFHRV9TSVpFO1xuICAgIGNvbnN0IGRlZmF1bHRDdXJyZW50ID0gKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvbi5kZWZhdWx0Q3VycmVudCkgfHwgKHBhZ2luYXRpb24gJiYgcGFnaW5hdGlvbi5jdXJyZW50KSB8fCBERUZBVUxUX0NVUlJFTlQ7XG4gICAgY29uc3QgbWFudWFsID0gY29udHJvbGxlZERhdGEgIT09IHVuZGVmaW5lZCB8fCAhcmVxdWVzdDtcbiAgICBjb25zdCB7IGRhdGFTb3VyY2U6IGZldGNoZWREYXRhLCBsb2FkaW5nOiBmZXRjaExvYWRpbmcsIHBhZ2VJbmZvLCBzZXRQYWdlSW5mbywgcmVsb2FkLCByZXNldCB9ID0gdXNlRmV0Y2hEYXRhKHtcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgbWFudWFsLFxuICAgICAgICBtYW51YWxSZXF1ZXN0LFxuICAgICAgICBkZWJvdW5jZVRpbWUsXG4gICAgICAgIHBvc3REYXRhLFxuICAgICAgICBwb2xsaW5nLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGRlZmF1bHREYXRhLFxuICAgICAgICBwYWdpbmF0ZWQsXG4gICAgICAgIGRlZmF1bHRDdXJyZW50LFxuICAgICAgICBkZWZhdWx0UGFnZVNpemUsXG4gICAgICAgIHNlYXJjaFBhcmFtcyxcbiAgICAgICAgc29ydCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBvbkxvYWQsXG4gICAgICAgIG9uTG9hZGluZ0NoYW5nZSxcbiAgICAgICAgb25SZXF1ZXN0RXJyb3IsXG4gICAgfSk7XG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IGNvbnRyb2xsZWREYXRhICE9PSBudWxsICYmIGNvbnRyb2xsZWREYXRhICE9PSB2b2lkIDAgPyBjb250cm9sbGVkRGF0YSA6IGZldGNoZWREYXRhO1xuICAgIGNvbnN0IGxvYWRpbmcgPSBjb250cm9sbGVkTG9hZGluZyAhPT0gbnVsbCAmJiBjb250cm9sbGVkTG9hZGluZyAhPT0gdm9pZCAwID8gY29udHJvbGxlZExvYWRpbmcgOiAobWFudWFsID8gZmFsc2UgOiBmZXRjaExvYWRpbmcpO1xuICAgIC8vIOKUgOKUgCBoYW5kbGVycyDilIDilIBcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hGaW5pc2ggPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcGVyQ29sdW1uID0gYXBwbHlTZWFyY2hUcmFuc2Zvcm1zKHZhbHVlcywgY29sdW1ucyk7XG4gICAgICAgIGNvbnN0IGZpbmFsUGFyYW1zID0gYmVmb3JlU2VhcmNoU3VibWl0ID8gYmVmb3JlU2VhcmNoU3VibWl0KHBlckNvbHVtbikgOiBwZXJDb2x1bW47XG4gICAgICAgIHNldFNlYXJjaFBhcmFtcyhmaW5hbFBhcmFtcyk7XG4gICAgICAgIHNldFBhZ2VJbmZvKHsgY3VycmVudDogZGVmYXVsdEN1cnJlbnQgfSk7XG4gICAgICAgIHZvaWQgcmVsb2FkKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAvLyBVc2UgdGhlIGFycmF5IGZvcm0gKGByZXNldEZpZWxkcyhuYW1lcylgKSDigJQgdGhlIG5vLWFyZyBmb3JtIHJlLWludm9rZXMgdGhlXG4gICAgICAgIC8vIGZvcm0ncyBvd24gYG9uUmVzZXRgLCB3aGljaCBsb29wcyBiYWNrIGhlcmUgYW5kIHJlY3Vyc2VzIGluZmluaXRlbHkuXG4gICAgICAgIChfYSA9IGZvcm1SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc2V0RmllbGRzKHNlYXJjaEZpZWxkTmFtZXMpO1xuICAgICAgICBzZXRTZWFyY2hQYXJhbXMoe30pO1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICB2b2lkIHJlbG9hZCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhYmxlQ2hhbmdlID0gdXNlTWVtb2l6ZWRGbigobWV0YSkgPT4ge1xuICAgICAgICBpZiAobWV0YS5zb3J0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uS2V5LCBvcmRlciB9ID0gbWV0YS5zb3J0ZXI7XG4gICAgICAgICAgICBzZXRTb3J0KGNvbHVtbktleSAmJiBvcmRlciA/IHsgW1N0cmluZyhjb2x1bW5LZXkpXTogb3JkZXIgfSA6IHt9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0YS5maWx0ZXJzKVxuICAgICAgICAgICAgc2V0RmlsdGVyKG1ldGEuZmlsdGVycyk7XG4gICAgICAgIGlmIChtZXRhLnNvcnRlciB8fCBtZXRhLmZpbHRlcnMpXG4gICAgICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobWV0YSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUGFnZUNoYW5nZSA9IHVzZU1lbW9pemVkRm4oKHBhZ2UsIHBhZ2VTaXplKSA9PiB7XG4gICAgICAgIHNldFBhZ2VJbmZvKHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZSh7XG4gICAgICAgICAgICBjdXJyZW50RGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGFjdGlvbjogJ3BhZ2luYXRlJyxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIGltcGVyYXRpdmUgaGFuZGxlIOKUgOKUgFxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoYWN0aW9uUmVmLCAoKSA9PiAoe1xuICAgICAgICByZWxvYWQ6ICgpID0+IHJlbG9hZCgpLFxuICAgICAgICByZWxvYWRBbmRSZXN0OiAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICAgICAgeWllbGQgcmVsb2FkKCk7XG4gICAgICAgIH0pLFxuICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZm9ybVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzZXRGaWVsZHMoc2VhcmNoRmllbGROYW1lcyk7XG4gICAgICAgICAgICBzZXRTZWFyY2hQYXJhbXMoc2VhcmNoSW5pdGlhbFZhbHVlcyk7XG4gICAgICAgICAgICBzZXRTb3J0KHt9KTtcbiAgICAgICAgICAgIHNldEZpbHRlcih7fSk7XG4gICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgdm9pZCByZWxvYWQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0UGFnZUluZm8sXG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBzZWFyY2ggZm9ybSBub2RlIChvbmx5IGJ1aWx0IHdoZW4gdGhlcmUgYXJlIHNlYXJjaGFibGUgY29sdW1ucykg4pSA4pSAXG4gICAgbGV0IHNlYXJjaE5vZGUgPSBudWxsO1xuICAgIGlmIChoYXNTZWFyY2gpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoRm9ybSA9IChfanN4KFF1ZXJ5RmlsdGVyLCB7IGZvcm1SZWY6IGZvcm1SZWYsIHNpemU6IFwic21hbGxcIiwgaW5pdGlhbFZhbHVlczogbWVyZ2VkSW5pdGlhbFZhbHVlcywgZGVmYXVsdENvbGxhcHNlZDogc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLmRlZmF1bHRDb2xsYXBzZWQsIGRlZmF1bHRDb2xzTnVtYmVyOiBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcuZGVmYXVsdENvbHNOdW1iZXIsIGxhYmVsV2lkdGg6IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5sYWJlbFdpZHRoLCBzeW5jVG9Vcmw6IHN5bmNUb1VybCwgc2VhcmNoQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogKF9hID0gc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLnNlYXJjaFRleHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IERFRkFVTFRfVEVYVC5zZWFyY2gsXG4gICAgICAgICAgICAgICAgcmVzZXRUZXh0OiAoX2IgPSBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcucmVzZXRUZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQucmVzZXQsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICB9LCBvbkZpbmlzaDogaGFuZGxlU2VhcmNoRmluaXNoLCBvblJlc2V0OiBoYW5kbGVTZWFyY2hSZXNldCwgY2hpbGRyZW46IHNlYXJjaEZpZWxkcyB9KSk7XG4gICAgICAgIHNlYXJjaE5vZGUgPSAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc2VhcmNoJyksIGNoaWxkcmVuOiBzZWFyY2hGb3JtUmVuZGVyID8gc2VhcmNoRm9ybVJlbmRlcihzZWFyY2hGb3JtKSA6IHNlYXJjaEZvcm0gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IFtzZWFyY2hOb2RlLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGFpbmVyJyksIGNoaWxkcmVuOiBbX2pzeChUYWJsZSwgeyByb3dLZXk6IHJvd0tleSwgY29sdW1uczogdGFibGVDb2x1bW5zLCBkYXRhU291cmNlOiBkYXRhU291cmNlLCBsb2FkaW5nOiBsb2FkaW5nLCBzaXplOiBzaXplLCBwYWdpbmF0aW9uOiBmYWxzZSwgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb24sIG9uQ2hhbmdlOiBoYW5kbGVUYWJsZUNoYW5nZSwgdmFyaWFudDogdmFyaWFudCwgYm9yZGVyZWQ6IGJvcmRlcmVkLCBzY3JvbGw6IHNjcm9sbCwgc3RpY2t5OiBzdGlja3ksIGV4cGFuZGFibGU6IGV4cGFuZGFibGUsIGVtcHR5OiBlbXB0eSwgdGFibGVMYXlvdXQ6IHRhYmxlTGF5b3V0LCByb3dDbGFzc05hbWU6IHJvd0NsYXNzTmFtZSwgb25Sb3c6IG9uUm93LCBzdW1tYXJ5OiBzdW1tYXJ5LCBmb290ZXI6IGZvb3RlciB9KSwgcGFnaW5hdGVkICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYWdpbmF0aW9uJyksIGNoaWxkcmVuOiBfanN4KFBhZ2luYXRpb24sIHsgdG90YWw6IHBhZ2VJbmZvLnRvdGFsLCBjdXJyZW50OiBwYWdlSW5mby5jdXJyZW50LCBwYWdlU2l6ZTogcGFnZUluZm8ucGFnZVNpemUsIG9uQ2hhbmdlOiBoYW5kbGVQYWdlQ2hhbmdlIH0pIH0pKV0gfSldIH0pKTtcbn1cbmV4cG9ydCBjb25zdCBQcm9UYWJsZSA9IG1lbW8oUHJvVGFibGVJbm5lcik7XG5leHBvcnQgZGVmYXVsdCBQcm9UYWJsZTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -7,7 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.useAwaitableReload = useAwaitableReload;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
9
|
var _react = require("react");
|
|
10
|
-
var
|
|
10
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
11
|
+
var _useSafeState3 = _interopRequireDefault(require("@1money/hooks/useSafeState"));
|
|
11
12
|
/**
|
|
12
13
|
* Bridges imperative, awaitable reloads onto a reactive (effect-driven) fetch.
|
|
13
14
|
*
|
|
@@ -17,12 +18,12 @@ var _hooks = require("@1money/hooks");
|
|
|
17
18
|
* still letting callers `await` a reload — no stale refs, no duplicate fetches.
|
|
18
19
|
*/
|
|
19
20
|
function useAwaitableReload() {
|
|
20
|
-
var _useSafeState = (0,
|
|
21
|
+
var _useSafeState = (0, _useSafeState3["default"])(0),
|
|
21
22
|
_useSafeState2 = (0, _slicedToArray2["default"])(_useSafeState, 2),
|
|
22
23
|
token = _useSafeState2[0],
|
|
23
24
|
setToken = _useSafeState2[1];
|
|
24
25
|
var resolversRef = (0, _react.useRef)([]);
|
|
25
|
-
var request = (0,
|
|
26
|
+
var request = (0, _useMemoizedFn["default"])(function () {
|
|
26
27
|
return new Promise(function (resolve) {
|
|
27
28
|
resolversRef.current.push(resolve);
|
|
28
29
|
setToken(function (value) {
|
|
@@ -30,7 +31,7 @@ function useAwaitableReload() {
|
|
|
30
31
|
});
|
|
31
32
|
});
|
|
32
33
|
});
|
|
33
|
-
var settle = (0,
|
|
34
|
+
var settle = (0, _useMemoizedFn["default"])(function () {
|
|
34
35
|
var resolvers = resolversRef.current;
|
|
35
36
|
resolversRef.current = [];
|
|
36
37
|
resolvers.forEach(function (resolve) {
|
|
@@ -43,4 +44,4 @@ function useAwaitableReload() {
|
|
|
43
44
|
settle: settle
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvc3JjL2NvbXBvbmVudHMvUHJvVGFibGUvY29yZS91c2VBd2FpdGFibGVSZWxvYWQudHMiLCJjb21wb25lbnRzL1Byb1RhYmxlL2NvcmUvdXNlQXdhaXRhYmxlUmVsb2FkLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfdXNlTWVtb2l6ZWRGbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlU2FmZVN0YXRlMyIsInVzZUF3YWl0YWJsZVJlbG9hZCIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInRva2VuIiwic2V0VG9rZW4iLCJyZXNvbHZlcnNSZWYiLCJ1c2VSZWYiLCJyZXF1ZXN0IiwidXNlTWVtb2l6ZWRGbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiY3VycmVudCIsInB1c2giLCJ2YWx1ZSIsInNldHRsZSIsInJlc29sdmVycyIsImZvckVhY2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBV0E7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRFdNLFNBQVVJLGtCQUFrQkEsQ0FBQSxFQUFBO0VBQ2hDLElBQUFDLGFBQUEsR0FBMEIsSUFBQUMseUJBQVksRUFBQyxDQUFDLENBQUM7SUFBQUMsY0FBQSxPQUFBQyxlQUFBLGFBQUFILGFBQUE7SUFBbENJLEtBQUssR0FBQUYsY0FBQTtJQUFFRyxRQUFRLEdBQUFILGNBQUE7RUFDdEIsSUFBTUksWUFBWSxHQUFHLElBQUFDLGFBQU0sRUFBb0IsRUFBRSxDQUFDO0VBRWxELElBQU1DLE9BQU8sR0FBRyxJQUFBQyx5QkFBYSxFQUMzQjtJQUFBLE9BQ0UsSUFBSUMsT0FBTyxDQUFPLFVBQUNDLE9BQU8sRUFBSTtNQUM1QkwsWUFBWSxDQUFDTSxPQUFPLENBQUNDLElBQUksQ0FBQ0YsT0FBTyxDQUFDO01BQ2xDTixRQUFRLENBQUMsVUFBQ1MsS0FBSztRQUFBLE9BQUtBLEtBQUssR0FBRyxDQUFDO01BQUEsRUFBQztJQUNoQyxDQUFDLENBQUM7RUFBQSxFQUNMO0VBRUQsSUFBTUMsTUFBTSxHQUFHLElBQUFOLHlCQUFhLEVBQUMsWUFBSztJQUNoQyxJQUFNTyxTQUFTLEdBQUdWLFlBQVksQ0FBQ00sT0FBTztJQUN0Q04sWUFBWSxDQUFDTSxPQUFPLEdBQUcsRUFBRTtJQUN6QkksU0FBUyxDQUFDQyxPQUFPLENBQUMsVUFBQ04sT0FBTztNQUFBLE9BQUtBLE9BQU8sQ0FBQSxDQUFFO0lBQUEsRUFBQztFQUMzQyxDQUFDLENBQUM7RUFFRixPQUFPO0lBQUVQLEtBQUssRUFBTEEsS0FBSztJQUFFSSxPQUFPLEVBQVBBLE9BQU87SUFBRU8sTUFBTSxFQUFOQTtFQUFNLENBQUU7QUFDbkMiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9UYWJsZS9jb3JlL3VzZUF3YWl0YWJsZVJlbG9hZC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuLyoqXG4gKiBCcmlkZ2VzIGltcGVyYXRpdmUsIGF3YWl0YWJsZSByZWxvYWRzIG9udG8gYSByZWFjdGl2ZSAoZWZmZWN0LWRyaXZlbikgZmV0Y2guXG4gKlxuICogYHJlcXVlc3QoKWAgYnVtcHMgYHRva2VuYCAod2hpY2ggdGhlIGNvbnN1bWluZyBlZmZlY3QgZGVwZW5kcyBvbikgYW5kIHJldHVybnMgYVxuICogcHJvbWlzZTsgdGhlIGVmZmVjdCBjYWxscyBgc2V0dGxlKClgIG9uY2UgdGhlIGZldGNoIGl0IHRyaWdnZXJlZCBmaW5pc2hlcyxcbiAqIHJlc29sdmluZyB0aGF0IHByb21pc2UuIFRoaXMga2VlcHMgYSBzaW5nbGUsIGZyZXNoLWNsb3N1cmUgZmV0Y2ggcGF0aCB3aGlsZVxuICogc3RpbGwgbGV0dGluZyBjYWxsZXJzIGBhd2FpdGAgYSByZWxvYWQg4oCUIG5vIHN0YWxlIHJlZnMsIG5vIGR1cGxpY2F0ZSBmZXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQXdhaXRhYmxlUmVsb2FkKCkge1xuICAgIGNvbnN0IFt0b2tlbiwgc2V0VG9rZW5dID0gdXNlU2FmZVN0YXRlKDApO1xuICAgIGNvbnN0IHJlc29sdmVyc1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgcmVzb2x2ZXJzUmVmLmN1cnJlbnQucHVzaChyZXNvbHZlKTtcbiAgICAgICAgc2V0VG9rZW4oKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgIH0pKTtcbiAgICBjb25zdCBzZXR0bGUgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXJzID0gcmVzb2x2ZXJzUmVmLmN1cnJlbnQ7XG4gICAgICAgIHJlc29sdmVyc1JlZi5jdXJyZW50ID0gW107XG4gICAgICAgIHJlc29sdmVycy5mb3JFYWNoKChyZXNvbHZlKSA9PiByZXNvbHZlKCkpO1xuICAgIH0pO1xuICAgIHJldHVybiB7IHRva2VuLCByZXF1ZXN0LCBzZXR0bGUgfTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -8,7 +8,9 @@ exports.useFetchData = useFetchData;
|
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _react = require("react");
|
|
11
|
-
var
|
|
11
|
+
var _useLatest = _interopRequireDefault(require("@1money/hooks/useLatest"));
|
|
12
|
+
var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
|
|
13
|
+
var _useSafeState7 = _interopRequireDefault(require("@1money/hooks/useSafeState"));
|
|
12
14
|
var _useAwaitableReload = require("./core/useAwaitableReload");
|
|
13
15
|
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
14
16
|
function adopt(value) {
|
|
@@ -68,15 +70,15 @@ function useFetchData(options) {
|
|
|
68
70
|
onLoad = options.onLoad,
|
|
69
71
|
onLoadingChange = options.onLoadingChange,
|
|
70
72
|
onRequestError = options.onRequestError;
|
|
71
|
-
var _useSafeState = (0,
|
|
73
|
+
var _useSafeState = (0, _useSafeState7["default"])(defaultData !== null && defaultData !== void 0 ? defaultData : []),
|
|
72
74
|
_useSafeState2 = (0, _slicedToArray2["default"])(_useSafeState, 2),
|
|
73
75
|
dataSource = _useSafeState2[0],
|
|
74
76
|
setDataSource = _useSafeState2[1];
|
|
75
|
-
var _useSafeState3 = (0,
|
|
77
|
+
var _useSafeState3 = (0, _useSafeState7["default"])(false),
|
|
76
78
|
_useSafeState4 = (0, _slicedToArray2["default"])(_useSafeState3, 2),
|
|
77
79
|
loading = _useSafeState4[0],
|
|
78
80
|
setLoadingState = _useSafeState4[1];
|
|
79
|
-
var _useSafeState5 = (0,
|
|
81
|
+
var _useSafeState5 = (0, _useSafeState7["default"])({
|
|
80
82
|
current: defaultCurrent,
|
|
81
83
|
pageSize: defaultPageSize,
|
|
82
84
|
total: 0
|
|
@@ -85,14 +87,14 @@ function useFetchData(options) {
|
|
|
85
87
|
pageInfo = _useSafeState6[0],
|
|
86
88
|
setPageInfoState = _useSafeState6[1];
|
|
87
89
|
var reloadSignal = (0, _useAwaitableReload.useAwaitableReload)();
|
|
88
|
-
var reqRef = (0,
|
|
89
|
-
var callbacks = (0,
|
|
90
|
+
var reqRef = (0, _useLatest["default"])(request);
|
|
91
|
+
var callbacks = (0, _useLatest["default"])({
|
|
90
92
|
onLoad: onLoad,
|
|
91
93
|
onLoadingChange: onLoadingChange,
|
|
92
94
|
onRequestError: onRequestError,
|
|
93
95
|
postData: postData
|
|
94
96
|
});
|
|
95
|
-
var loadingRef = (0,
|
|
97
|
+
var loadingRef = (0, _useLatest["default"])(loading);
|
|
96
98
|
var requestIdRef = (0, _react.useRef)(0);
|
|
97
99
|
var abortRef = (0, _react.useRef)(null);
|
|
98
100
|
var skipFirstRef = (0, _react.useRef)(manualRequest === true);
|
|
@@ -101,12 +103,12 @@ function useFetchData(options) {
|
|
|
101
103
|
// Set right before a polling-triggered refetch so it can refresh silently
|
|
102
104
|
// (without flashing the main loading overlay). Consumed at the start of runRequest.
|
|
103
105
|
var silentRef = (0, _react.useRef)(false);
|
|
104
|
-
var setLoading = (0,
|
|
106
|
+
var setLoading = (0, _useMemoizedFn["default"])(function (next) {
|
|
105
107
|
var _a, _b;
|
|
106
108
|
setLoadingState(next);
|
|
107
109
|
(_b = (_a = callbacks.current).onLoadingChange) === null || _b === void 0 ? void 0 : _b.call(_a, next);
|
|
108
110
|
});
|
|
109
|
-
var setPageInfo = (0,
|
|
111
|
+
var setPageInfo = (0, _useMemoizedFn["default"])(function (info) {
|
|
110
112
|
setPageInfoState(function (prev) {
|
|
111
113
|
var merged = Object.assign(Object.assign({}, prev), info);
|
|
112
114
|
if (merged.current === prev.current && merged.pageSize === prev.pageSize && merged.total === prev.total) {
|
|
@@ -117,7 +119,7 @@ function useFetchData(options) {
|
|
|
117
119
|
});
|
|
118
120
|
// The single network entry point: abort the previous request, then apply data
|
|
119
121
|
// while guarding against stale / aborted responses.
|
|
120
|
-
var runRequest = (0,
|
|
122
|
+
var runRequest = (0, _useMemoizedFn["default"])(function (merged, st, ft) {
|
|
121
123
|
return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
122
124
|
var _a, _b, _c, _d, _e, _f, req, silent, abort, requestId, result, raw, next, _t;
|
|
123
125
|
return _regenerator["default"].wrap(function (_context) {
|
|
@@ -234,10 +236,10 @@ function useFetchData(options) {
|
|
|
234
236
|
}
|
|
235
237
|
void fire();
|
|
236
238
|
}, [paramsKey, searchParams, sort, filter, pageInfo.current, pageInfo.pageSize, reloadSignal.token, manual]);
|
|
237
|
-
var reload = (0,
|
|
239
|
+
var reload = (0, _useMemoizedFn["default"])(function () {
|
|
238
240
|
return manual ? Promise.resolve() : reloadSignal.request();
|
|
239
241
|
});
|
|
240
|
-
var reset = (0,
|
|
242
|
+
var reset = (0, _useMemoizedFn["default"])(function () {
|
|
241
243
|
setPageInfoState(function (prev) {
|
|
242
244
|
return Object.assign(Object.assign({}, prev), {
|
|
243
245
|
current: defaultCurrent,
|
|
@@ -274,4 +276,4 @@ function useFetchData(options) {
|
|
|
274
276
|
reset: reset
|
|
275
277
|
};
|
|
276
278
|
}
|
|
277
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvVGFibGUvdXNlRmV0Y2hEYXRhLnRzIiwiY29tcG9uZW50cy9Qcm9UYWJsZS91c2VGZXRjaERhdGEuanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsIl9ob29rcyIsIl91c2VBd2FpdGFibGVSZWxvYWQiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJ1c2VGZXRjaERhdGEiLCJvcHRpb25zIiwiX3RoaXMiLCJyZXF1ZXN0IiwibWFudWFsIiwibWFudWFsUmVxdWVzdCIsImRlYm91bmNlVGltZSIsInBvc3REYXRhIiwicG9sbGluZyIsInBhcmFtcyIsImRlZmF1bHREYXRhIiwicGFnaW5hdGVkIiwiZGVmYXVsdEN1cnJlbnQiLCJkZWZhdWx0UGFnZVNpemUiLCJzZWFyY2hQYXJhbXMiLCJzb3J0IiwiZmlsdGVyIiwib25Mb2FkIiwib25Mb2FkaW5nQ2hhbmdlIiwib25SZXF1ZXN0RXJyb3IiLCJfdXNlU2FmZVN0YXRlIiwidXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJkYXRhU291cmNlIiwic2V0RGF0YVNvdXJjZSIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJsb2FkaW5nIiwic2V0TG9hZGluZ1N0YXRlIiwiX3VzZVNhZmVTdGF0ZTUiLCJjdXJyZW50IiwicGFnZVNpemUiLCJ0b3RhbCIsIl91c2VTYWZlU3RhdGU2IiwicGFnZUluZm8iLCJzZXRQYWdlSW5mb1N0YXRlIiwicmVsb2FkU2lnbmFsIiwidXNlQXdhaXRhYmxlUmVsb2FkIiwicmVxUmVmIiwidXNlTGF0ZXN0IiwiY2FsbGJhY2tzIiwibG9hZGluZ1JlZiIsInJlcXVlc3RJZFJlZiIsInVzZVJlZiIsImFib3J0UmVmIiwic2tpcEZpcnN0UmVmIiwicHJldlBhcmFtc1JlZiIsInVuZGVmaW5lZCIsImRlYm91bmNlVGltZXJSZWYiLCJzaWxlbnRSZWYiLCJzZXRMb2FkaW5nIiwidXNlTWVtb2l6ZWRGbiIsIl9hIiwiX2IiLCJjYWxsIiwic2V0UGFnZUluZm8iLCJpbmZvIiwicHJldiIsIm1lcmdlZCIsIk9iamVjdCIsImFzc2lnbiIsInJ1blJlcXVlc3QiLCJzdCIsImZ0IiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfYyIsIl9kIiwiX2UiLCJfZiIsInJlcSIsInNpbGVudCIsImFib3J0IiwicmVxdWVzdElkIiwicmF3IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJhYnJ1cHQiLCJBYm9ydENvbnRyb2xsZXIiLCJzaWduYWwiLCJzZW50IiwiYWJvcnRlZCIsInN1Y2Nlc3MiLCJkYXRhIiwibGVuZ3RoIiwiZmluaXNoIiwic3RvcCIsImJ1aWxkTWVyZ2VkIiwicGFyYW1zS2V5IiwiSlNPTiIsInN0cmluZ2lmeSIsInVzZUVmZmVjdCIsInNldHRsZSIsImZpcmUiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidG9rZW4iLCJyZWxvYWQiLCJyZXNldCIsInBvbGxpbmdNcyIsImlkIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxtQkFBQSxHQUFBRixPQUFBO0FDSEEsSUFBSUcsU0FBUyxHQUFJLFVBQVEsU0FBS0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FB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Z0JBQVMsRUFBQyxZQUFLO0lBQ2IsSUFBSTFGLE1BQU0sSUFBSSxDQUFDa0csU0FBUyxJQUFJQSxTQUFTLElBQUksQ0FBQyxFQUFFO0lBQzVDLElBQU1DLEVBQUUsR0FBR0MsV0FBVyxDQUFDLFlBQUs7TUFDMUIsSUFBSTlELFVBQVUsQ0FBQ1gsT0FBTyxFQUFFO01BQ3hCbUIsU0FBUyxDQUFDbkIsT0FBTyxHQUFHLElBQUk7TUFDeEIsS0FBS00sWUFBWSxDQUFDbEMsT0FBTyxDQUFBLENBQUU7SUFDN0IsQ0FBQyxFQUFFbUcsU0FBUyxDQUFDO0lBQ2IsT0FBTztNQUFBLE9BQU1HLGFBQWEsQ0FBQ0YsRUFBRSxDQUFDO0lBQUE7RUFDaEMsQ0FBQyxFQUFFLENBQUNELFNBQVMsRUFBRWxHLE1BQU0sQ0FBQyxDQUFDO0VBRXZCO0VBQ0EsSUFBQTBGLGdCQUFTLEVBQUM7SUFBQSxPQUFNLFlBQUs7TUFBQSxJQUFBekMsRUFBQTtNQUFDLE9BQUEsQ0FBQUEsRUFBQSxHQUFBUixRQUFRLENBQUNkLE9BQU8sTUFBQSxJQUFBLElBQUFzQixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRXFCLEtBQUssQ0FBQSxDQUFFO0lBQUEsQ0FBQTtFQUFBLEdBQUUsRUFBRSxDQUFDO0VBRXBELE9BQU87SUFBRWxELFVBQVUsRUFBVkEsVUFBVTtJQUFFSSxPQUFPLEVBQVBBLE9BQU87SUFBRU8sUUFBUSxFQUFSQSxRQUFRO0lBQUVxQixXQUFXLEVBQVhBLFdBQVc7SUFBRTRDLE1BQU0sRUFBTkEsTUFBTTtJQUFFQyxLQUFLLEVBQUxBO0VBQUssQ0FBRTtBQUN0RSIsImZpbGUiOiJjb21wb25lbnRzL1Byb1RhYmxlL3VzZUZldGNoRGF0YS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUxhdGVzdCwgdXNlTWVtb2l6ZWRGbiwgdXNlU2FmZVN0YXRlIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyB1c2VBd2FpdGFibGVSZWxvYWQgfSBmcm9tICcuL2NvcmUvdXNlQXdhaXRhYmxlUmVsb2FkJztcbi8qKlxuICogT3ducyB0aGUgcmVxdWVzdCBsaWZlY3ljbGUgZm9yIFByb1RhYmxlOiBkYXRhLCBsb2FkaW5nLCBhbmQgcGFnaW5hdGlvbi5cbiAqXG4gKiBPbmUgZWZmZWN0IGlzIHRoZSBzaW5nbGUgZmV0Y2ggcGF0aC4gSXQgcmVhZHMgaXRzIHF1ZXJ5IGlucHV0cyBmcm9tIHRoZVxuICogKipyZW5kZXIgY2xvc3VyZSoqIChuZXZlciBhIGxhZ2dpbmcgcmVmKSwgc28gZXZlcnkgc3RhdGUgY2hhbmdlIOKAlCBzZWFyY2gsXG4gKiBzb3J0LCBmaWx0ZXIsIHBhcmFtcywgcGFnZSDigJQgcmVmZXRjaGVzIHdpdGggY29ycmVjdCB2YWx1ZXMuIEFuIGF3YWl0YWJsZVxuICogcmVsb2FkIHNpZ25hbCBsZXRzIGltcGVyYXRpdmUgY2FsbGVycyBmb3JjZSB0aGUgc2FtZSBlZmZlY3QgYW5kIGBhd2FpdGAgaXQuXG4gKlxuICogYHJ1blJlcXVlc3RgIGFib3J0cyB0aGUgcHJldmlvdXMgaW4tZmxpZ2h0IHJlcXVlc3QgKGBBYm9ydENvbnRyb2xsZXJgLCBleHBvc2VkXG4gKiB0byBgcmVxdWVzdGAgYXMgYHsgc2lnbmFsIH1gKSwgdGFncyBpdHNlbGYgd2l0aCBhIHJlcXVlc3QgaWQsIGFuZCBkcm9wcyBzdGFsZVxuICogb3IgYWJvcnRlZCByZXNwb25zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VGZXRjaERhdGEob3B0aW9ucykge1xuICAgIGNvbnN0IHsgcmVxdWVzdCwgbWFudWFsLCBtYW51YWxSZXF1ZXN0LCBkZWJvdW5jZVRpbWUsIHBvc3REYXRhLCBwb2xsaW5nLCBwYXJhbXMsIGRlZmF1bHREYXRhLCBwYWdpbmF0ZWQsIGRlZmF1bHRDdXJyZW50LCBkZWZhdWx0UGFnZVNpemUsIHNlYXJjaFBhcmFtcywgc29ydCwgZmlsdGVyLCBvbkxvYWQsIG9uTG9hZGluZ0NoYW5nZSwgb25SZXF1ZXN0RXJyb3IsIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IFtkYXRhU291cmNlLCBzZXREYXRhU291cmNlXSA9IHVzZVNhZmVTdGF0ZShkZWZhdWx0RGF0YSAhPT0gbnVsbCAmJiBkZWZhdWx0RGF0YSAhPT0gdm9pZCAwID8gZGVmYXVsdERhdGEgOiBbXSk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmdTdGF0ZV0gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtwYWdlSW5mbywgc2V0UGFnZUluZm9TdGF0ZV0gPSB1c2VTYWZlU3RhdGUoe1xuICAgICAgICBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCxcbiAgICAgICAgcGFnZVNpemU6IGRlZmF1bHRQYWdlU2l6ZSxcbiAgICAgICAgdG90YWw6IDAsXG4gICAgfSk7XG4gICAgY29uc3QgcmVsb2FkU2lnbmFsID0gdXNlQXdhaXRhYmxlUmVsb2FkKCk7XG4gICAgY29uc3QgcmVxUmVmID0gdXNlTGF0ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IHVzZUxhdGVzdCh7IG9uTG9hZCwgb25Mb2FkaW5nQ2hhbmdlLCBvblJlcXVlc3RFcnJvciwgcG9zdERhdGEgfSk7XG4gICAgY29uc3QgbG9hZGluZ1JlZiA9IHVzZUxhdGVzdChsb2FkaW5nKTtcbiAgICBjb25zdCByZXF1ZXN0SWRSZWYgPSB1c2VSZWYoMCk7XG4gICAgY29uc3QgYWJvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2tpcEZpcnN0UmVmID0gdXNlUmVmKG1hbnVhbFJlcXVlc3QgPT09IHRydWUpO1xuICAgIGNvbnN0IHByZXZQYXJhbXNSZWYgPSB1c2VSZWYodW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWJvdW5jZVRpbWVyUmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgLy8gU2V0IHJpZ2h0IGJlZm9yZSBhIHBvbGxpbmctdHJpZ2dlcmVkIHJlZmV0Y2ggc28gaXQgY2FuIHJlZnJlc2ggc2lsZW50bHlcbiAgICAvLyAod2l0aG91dCBmbGFzaGluZyB0aGUgbWFpbiBsb2FkaW5nIG92ZXJsYXkpLiBDb25zdW1lZCBhdCB0aGUgc3RhcnQgb2YgcnVuUmVxdWVzdC5cbiAgICBjb25zdCBzaWxlbnRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHNldExvYWRpbmcgPSB1c2VNZW1vaXplZEZuKChuZXh0KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHNldExvYWRpbmdTdGF0ZShuZXh0KTtcbiAgICAgICAgKF9iID0gKF9hID0gY2FsbGJhY2tzLmN1cnJlbnQpLm9uTG9hZGluZ0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIG5leHQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldFBhZ2VJbmZvID0gdXNlTWVtb2l6ZWRGbigoaW5mbykgPT4ge1xuICAgICAgICBzZXRQYWdlSW5mb1N0YXRlKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCBpbmZvKTtcbiAgICAgICAgICAgIGlmIChtZXJnZWQuY3VycmVudCA9PT0gcHJldi5jdXJyZW50ICYmIG1lcmdlZC5wYWdlU2l6ZSA9PT0gcHJldi5wYWdlU2l6ZSAmJiBtZXJnZWQudG90YWwgPT09IHByZXYudG90YWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIFRoZSBzaW5nbGUgbmV0d29yayBlbnRyeSBwb2ludDogYWJvcnQgdGhlIHByZXZpb3VzIHJlcXVlc3QsIHRoZW4gYXBwbHkgZGF0YVxuICAgIC8vIHdoaWxlIGd1YXJkaW5nIGFnYWluc3Qgc3RhbGUgLyBhYm9ydGVkIHJlc3BvbnNlcy5cbiAgICBjb25zdCBydW5SZXF1ZXN0ID0gdXNlTWVtb2l6ZWRGbigobWVyZ2VkLCBzdCwgZnQpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgICAgIGNvbnN0IHJlcSA9IHJlcVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIXJlcSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8gQSBwb2xsaW5nIHJlZmV0Y2ggcmVmcmVzaGVzIHNpbGVudGx5IOKAlCBubyBsb2FkaW5nIG92ZXJsYXkgZmxhc2guXG4gICAgICAgIGNvbnN0IHNpbGVudCA9IHNpbGVudFJlZi5jdXJyZW50O1xuICAgICAgICBzaWxlbnRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAoX2EgPSBhYm9ydFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWJvcnQoKTtcbiAgICAgICAgY29uc3QgYWJvcnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICAgIGFib3J0UmVmLmN1cnJlbnQgPSBhYm9ydDtcbiAgICAgICAgY29uc3QgcmVxdWVzdElkID0gKytyZXF1ZXN0SWRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFzaWxlbnQpXG4gICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgcmVxKG1lcmdlZCwgc3QsIGZ0LCB7IHNpZ25hbDogYWJvcnQuc2lnbmFsIH0pO1xuICAgICAgICAgICAgaWYgKGFib3J0LnNpZ25hbC5hYm9ydGVkIHx8IHJlcXVlc3RJZCAhPT0gcmVxdWVzdElkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCByYXcgPSAoX2IgPSByZXN1bHQuZGF0YSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogW107XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gY2FsbGJhY2tzLmN1cnJlbnQucG9zdERhdGEgPyBjYWxsYmFja3MuY3VycmVudC5wb3N0RGF0YShyYXcpIDogcmF3O1xuICAgICAgICAgICAgc2V0RGF0YVNvdXJjZShuZXh0KTtcbiAgICAgICAgICAgIHNldFBhZ2VJbmZvU3RhdGUoKHByZXYpID0+IHsgdmFyIF9hOyByZXR1cm4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgdG90YWw6IChfYSA9IHJlc3VsdC50b3RhbCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbmV4dC5sZW5ndGggfSkpOyB9KTtcbiAgICAgICAgICAgIChfZCA9IChfYyA9IGNhbGxiYWNrcy5jdXJyZW50KS5vbkxvYWQpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5jYWxsKF9jLCBuZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChhYm9ydC5zaWduYWwuYWJvcnRlZCB8fCByZXF1ZXN0SWQgIT09IHJlcXVlc3RJZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIChfZiA9IChfZSA9IGNhbGxiYWNrcy5jdXJyZW50KS5vblJlcXVlc3RFcnJvcikgPT09IG51bGwgfHwgX2YgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mLmNhbGwoX2UsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICghc2lsZW50ICYmIHJlcXVlc3RJZCA9PT0gcmVxdWVzdElkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgLy8gQnVpbGQgdGhlIHJlcXVlc3QgcGFyYW1zIGZyb20gdGhlIGN1cnJlbnQgcmVuZGVyIGNsb3N1cmUuXG4gICAgY29uc3QgYnVpbGRNZXJnZWQgPSAoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIChwYXJhbXMgIT09IG51bGwgJiYgcGFyYW1zICE9PSB2b2lkIDAgPyBwYXJhbXMgOiB7fSkpLCBzZWFyY2hQYXJhbXMpLCAocGFnaW5hdGVkID8geyBjdXJyZW50OiBwYWdlSW5mby5jdXJyZW50LCBwYWdlU2l6ZTogcGFnZUluZm8ucGFnZVNpemUgfSA6IHt9KSkpO1xuICAgIC8vIE9ubHkgYHBhcmFtc2AgKGEgY29uc3VtZXItb3duZWQgcHJvcCwgb2Z0ZW4gYW4gaW5saW5lIG9iamVjdCkgbmVlZHMgdmFsdWVcbiAgICAvLyBjb21wYXJpc29uOyB0aGUgcmVzdCBhcmUgc3RhYmxlIGludGVybmFsIHN0YXRlIGFuZCBjb21wYXJlIGJ5IHJlZmVyZW5jZS5cbiAgICBjb25zdCBwYXJhbXNLZXkgPSBKU09OLnN0cmluZ2lmeShwYXJhbXMgIT09IG51bGwgJiYgcGFyYW1zICE9PSB2b2lkIDAgPyBwYXJhbXMgOiBudWxsKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWFudWFsKSB7XG4gICAgICAgICAgICByZWxvYWRTaWduYWwuc2V0dGxlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWFudWFsUmVxdWVzdDogc3dhbGxvdyBvbmx5IHRoZSBmaXJzdCAobW91bnQpIHRyaWdnZXIuXG4gICAgICAgIGlmIChza2lwRmlyc3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgc2tpcEZpcnN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHByZXZQYXJhbXNSZWYuY3VycmVudCA9IHBhcmFtc0tleTtcbiAgICAgICAgICAgIHJlbG9hZFNpZ25hbC5zZXR0bGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBIGBwYXJhbXNgIGNoYW5nZSByZXNldHMgdG8gcGFnZSAxIGZpcnN0OyB0aGUgcGFnZSBjaGFuZ2UgcmUtcnVucyB0aGlzXG4gICAgICAgIC8vIGVmZmVjdCwgd2hlcmUgdGhlIGFjdHVhbCBmZXRjaCBoYXBwZW5zIChzbyBpdCBuZXZlciBkb3VibGUtZmV0Y2hlcykuXG4gICAgICAgIGlmIChwcmV2UGFyYW1zUmVmLmN1cnJlbnQgIT09IHBhcmFtc0tleSAmJiBwYWdlSW5mby5jdXJyZW50ICE9PSBkZWZhdWx0Q3VycmVudCkge1xuICAgICAgICAgICAgcHJldlBhcmFtc1JlZi5jdXJyZW50ID0gcGFyYW1zS2V5O1xuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwcmV2UGFyYW1zUmVmLmN1cnJlbnQgPSBwYXJhbXNLZXk7XG4gICAgICAgIGNvbnN0IGZpcmUgPSAoKSA9PiBydW5SZXF1ZXN0KGJ1aWxkTWVyZ2VkKCksIHNvcnQsIGZpbHRlcikuZmluYWxseShyZWxvYWRTaWduYWwuc2V0dGxlKTtcbiAgICAgICAgaWYgKGRlYm91bmNlVGltZSAmJiBkZWJvdW5jZVRpbWUgPiAwKSB7XG4gICAgICAgICAgICBpZiAoZGVib3VuY2VUaW1lclJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZGVib3VuY2VUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dChmaXJlLCBkZWJvdW5jZVRpbWUpO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGVib3VuY2VUaW1lclJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCBmaXJlKCk7XG4gICAgfSwgW3BhcmFtc0tleSwgc2VhcmNoUGFyYW1zLCBzb3J0LCBmaWx0ZXIsIHBhZ2VJbmZvLmN1cnJlbnQsIHBhZ2VJbmZvLnBhZ2VTaXplLCByZWxvYWRTaWduYWwudG9rZW4sIG1hbnVhbF0pO1xuICAgIGNvbnN0IHJlbG9hZCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gKG1hbnVhbCA/IFByb21pc2UucmVzb2x2ZSgpIDogcmVsb2FkU2lnbmFsLnJlcXVlc3QoKSkpO1xuICAgIGNvbnN0IHJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHNldFBhZ2VJbmZvU3RhdGUoKHByZXYpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50LCBwYWdlU2l6ZTogZGVmYXVsdFBhZ2VTaXplIH0pKSk7XG4gICAgfSk7XG4gICAgLy8gUG9sbGluZzogcmUtdHJpZ2dlciBvbiBhbiBpbnRlcnZhbCwgc2tpcHBpbmcgdGlja3Mgd2hpbGUgYSByZXF1ZXN0IGlzIGluIGZsaWdodC5cbiAgICBjb25zdCBwb2xsaW5nTXMgPSB0eXBlb2YgcG9sbGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBvbGxpbmcoZGF0YVNvdXJjZSkgOiBwb2xsaW5nO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChtYW51YWwgfHwgIXBvbGxpbmdNcyB8fCBwb2xsaW5nTXMgPD0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAobG9hZGluZ1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNpbGVudFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHZvaWQgcmVsb2FkU2lnbmFsLnJlcXVlc3QoKTtcbiAgICAgICAgfSwgcG9sbGluZ01zKTtcbiAgICAgICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaWQpO1xuICAgIH0sIFtwb2xsaW5nTXMsIG1hbnVhbF0pO1xuICAgIC8vIEFib3J0IGFueSBpbi1mbGlnaHQgcmVxdWVzdCBvbiB1bm1vdW50LlxuICAgIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7IHZhciBfYTsgcmV0dXJuIChfYSA9IGFib3J0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hYm9ydCgpOyB9LCBbXSk7XG4gICAgcmV0dXJuIHsgZGF0YVNvdXJjZSwgbG9hZGluZywgcGFnZUluZm8sIHNldFBhZ2VJbmZvLCByZWxvYWQsIHJlc2V0IH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
279
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvVGFibGUvdXNlRmV0Y2hEYXRhLnRzIiwiY29tcG9uZW50cy9Qcm9UYWJsZS91c2VGZXRjaERhdGEuanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsIl91c2VMYXRlc3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZU1lbW9pemVkRm4iLCJfdXNlU2FmZVN0YXRlNyIsIl91c2VBd2FpdGFibGVSZWxvYWQiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJ1c2VGZXRjaERhdGEiLCJvcHRpb25zIiwiX3RoaXMiLCJyZXF1ZXN0IiwibWFudWFsIiwibWFudWFsUmVxdWVzdCIsImRlYm91bmNlVGltZSIsInBvc3REYXRhIiwicG9sbGluZyIsInBhcmFtcyIsImRlZmF1bHREYXRhIiwicGFnaW5hdGVkIiwiZGVmYXVsdEN1cnJlbnQiLCJkZWZhdWx0UGFnZVNpemUiLCJzZWFyY2hQYXJhbXMiLCJzb3J0IiwiZmlsdGVyIiwib25Mb2FkIiwib25Mb2FkaW5nQ2hhbmdlIiwib25SZXF1ZXN0RXJyb3IiLCJfdXNlU2FmZVN0YXRlIiwidXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJkYXRhU291cmNlIiwic2V0RGF0YVNvdXJjZSIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJsb2FkaW5nIiwic2V0TG9hZGluZ1N0YXRlIiwiX3VzZVNhZmVTdGF0ZTUiLCJjdXJyZW50IiwicGFnZVNpemUiLCJ0b3RhbCIsIl91c2VTYWZlU3RhdGU2IiwicGFnZUluZm8iLCJzZXRQYWdlSW5mb1N0YXRlIiwicmVsb2FkU2lnbmFsIiwidXNlQXdhaXRhYmxlUmVsb2FkIiwicmVxUmVmIiwidXNlTGF0ZXN0IiwiY2FsbGJhY2tzIiwibG9hZGluZ1JlZiIsInJlcXVlc3RJZFJlZiIsInVzZVJlZiIsImFib3J0UmVmIiwic2tpcEZpcnN0UmVmIiwicHJldlBhcmFtc1JlZiIsInVuZGVmaW5lZCIsImRlYm91bmNlVGltZXJSZWYiLCJzaWxlbnRSZWYiLCJzZXRMb2FkaW5nIiwidXNlTWVtb2l6ZWRGbiIsIl9hIiwiX2IiLCJjYWxsIiwic2V0UGFnZUluZm8iLCJpbmZvIiwicHJldiIsIm1lcmdlZCIsIk9iamVjdCIsImFzc2lnbiIsInJ1blJlcXVlc3QiLCJzdCIsImZ0IiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfYyIsIl9kIiwiX2UiLCJfZiIsInJlcSIsInNpbGVudCIsImFib3J0IiwicmVxdWVzdElkIiwicmF3IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJhYnJ1cHQiLCJBYm9ydENvbnRyb2xsZXIiLCJzaWduYWwiLCJzZW50IiwiYWJvcnRlZCIsInN1Y2Nlc3MiLCJkYXRhIiwibGVuZ3RoIiwiZmluaXNoIiwic3RvcCIsImJ1aWxkTWVyZ2VkIiwicGFyYW1zS2V5IiwiSlNPTiIsInN0cmluZ2lmeSIsInVzZUVmZmVjdCIsInNldHRsZSIsImZpcmUiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidG9rZW4iLCJyZWxvYWQiLCJyZXNldCIsInBvbGxpbmdNcyIsImlkIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxtQkFBQSxHQUFBTCxPQUFBO0FD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YmxlL3VzZUZldGNoRGF0YS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXRlc3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHsgdXNlQXdhaXRhYmxlUmVsb2FkIH0gZnJvbSAnLi9jb3JlL3VzZUF3YWl0YWJsZVJlbG9hZCc7XG4vKipcbiAqIE93bnMgdGhlIHJlcXVlc3QgbGlmZWN5Y2xlIGZvciBQcm9UYWJsZTogZGF0YSwgbG9hZGluZywgYW5kIHBhZ2luYXRpb24uXG4gKlxuICogT25lIGVmZmVjdCBpcyB0aGUgc2luZ2xlIGZldGNoIHBhdGguIEl0IHJlYWRzIGl0cyBxdWVyeSBpbnB1dHMgZnJvbSB0aGVcbiAqICoqcmVuZGVyIGNsb3N1cmUqKiAobmV2ZXIgYSBsYWdnaW5nIHJlZiksIHNvIGV2ZXJ5IHN0YXRlIGNoYW5nZSDigJQgc2VhcmNoLFxuICogc29ydCwgZmlsdGVyLCBwYXJhbXMsIHBhZ2Ug4oCUIHJlZmV0Y2hlcyB3aXRoIGNvcnJlY3QgdmFsdWVzLiBBbiBhd2FpdGFibGVcbiAqIHJlbG9hZCBzaWduYWwgbGV0cyBpbXBlcmF0aXZlIGNhbGxlcnMgZm9yY2UgdGhlIHNhbWUgZWZmZWN0IGFuZCBgYXdhaXRgIGl0LlxuICpcbiAqIGBydW5SZXF1ZXN0YCBhYm9ydHMgdGhlIHByZXZpb3VzIGluLWZsaWdodCByZXF1ZXN0IChgQWJvcnRDb250cm9sbGVyYCwgZXhwb3NlZFxuICogdG8gYHJlcXVlc3RgIGFzIGB7IHNpZ25hbCB9YCksIHRhZ3MgaXRzZWxmIHdpdGggYSByZXF1ZXN0IGlkLCBhbmQgZHJvcHMgc3RhbGVcbiAqIG9yIGFib3J0ZWQgcmVzcG9uc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRmV0Y2hEYXRhKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHJlcXVlc3QsIG1hbnVhbCwgbWFudWFsUmVxdWVzdCwgZGVib3VuY2VUaW1lLCBwb3N0RGF0YSwgcG9sbGluZywgcGFyYW1zLCBkZWZhdWx0RGF0YSwgcGFnaW5hdGVkLCBkZWZhdWx0Q3VycmVudCwgZGVmYXVsdFBhZ2VTaXplLCBzZWFyY2hQYXJhbXMsIHNvcnQsIGZpbHRlciwgb25Mb2FkLCBvbkxvYWRpbmdDaGFuZ2UsIG9uUmVxdWVzdEVycm9yLCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBbZGF0YVNvdXJjZSwgc2V0RGF0YVNvdXJjZV0gPSB1c2VTYWZlU3RhdGUoZGVmYXVsdERhdGEgIT09IG51bGwgJiYgZGVmYXVsdERhdGEgIT09IHZvaWQgMCA/IGRlZmF1bHREYXRhIDogW10pO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nU3RhdGVdID0gdXNlU2FmZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbcGFnZUluZm8sIHNldFBhZ2VJbmZvU3RhdGVdID0gdXNlU2FmZVN0YXRlKHtcbiAgICAgICAgY3VycmVudDogZGVmYXVsdEN1cnJlbnQsXG4gICAgICAgIHBhZ2VTaXplOiBkZWZhdWx0UGFnZVNpemUsXG4gICAgICAgIHRvdGFsOiAwLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlbG9hZFNpZ25hbCA9IHVzZUF3YWl0YWJsZVJlbG9hZCgpO1xuICAgIGNvbnN0IHJlcVJlZiA9IHVzZUxhdGVzdChyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWxsYmFja3MgPSB1c2VMYXRlc3QoeyBvbkxvYWQsIG9uTG9hZGluZ0NoYW5nZSwgb25SZXF1ZXN0RXJyb3IsIHBvc3REYXRhIH0pO1xuICAgIGNvbnN0IGxvYWRpbmdSZWYgPSB1c2VMYXRlc3QobG9hZGluZyk7XG4gICAgY29uc3QgcmVxdWVzdElkUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGFib3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNraXBGaXJzdFJlZiA9IHVzZVJlZihtYW51YWxSZXF1ZXN0ID09PSB0cnVlKTtcbiAgICBjb25zdCBwcmV2UGFyYW1zUmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVib3VuY2VUaW1lclJlZiA9IHVzZVJlZih1bmRlZmluZWQpO1xuICAgIC8vIFNldCByaWdodCBiZWZvcmUgYSBwb2xsaW5nLXRyaWdnZXJlZCByZWZldGNoIHNvIGl0IGNhbiByZWZyZXNoIHNpbGVudGx5XG4gICAgLy8gKHdpdGhvdXQgZmxhc2hpbmcgdGhlIG1haW4gbG9hZGluZyBvdmVybGF5KS4gQ29uc3VtZWQgYXQgdGhlIHN0YXJ0IG9mIHJ1blJlcXVlc3QuXG4gICAgY29uc3Qgc2lsZW50UmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBzZXRMb2FkaW5nID0gdXNlTWVtb2l6ZWRGbigobmV4dCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBzZXRMb2FkaW5nU3RhdGUobmV4dCk7XG4gICAgICAgIChfYiA9IChfYSA9IGNhbGxiYWNrcy5jdXJyZW50KS5vbkxvYWRpbmdDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBuZXh0KTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRQYWdlSW5mbyA9IHVzZU1lbW9pemVkRm4oKGluZm8pID0+IHtcbiAgICAgICAgc2V0UGFnZUluZm9TdGF0ZSgocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgaW5mbyk7XG4gICAgICAgICAgICBpZiAobWVyZ2VkLmN1cnJlbnQgPT09IHByZXYuY3VycmVudCAmJiBtZXJnZWQucGFnZVNpemUgPT09IHByZXYucGFnZVNpemUgJiYgbWVyZ2VkLnRvdGFsID09PSBwcmV2LnRvdGFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBUaGUgc2luZ2xlIG5ldHdvcmsgZW50cnkgcG9pbnQ6IGFib3J0IHRoZSBwcmV2aW91cyByZXF1ZXN0LCB0aGVuIGFwcGx5IGRhdGFcbiAgICAvLyB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IHN0YWxlIC8gYWJvcnRlZCByZXNwb25zZXMuXG4gICAgY29uc3QgcnVuUmVxdWVzdCA9IHVzZU1lbW9pemVkRm4oKG1lcmdlZCwgc3QsIGZ0KSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICBjb25zdCByZXEgPSByZXFSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFyZXEpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIEEgcG9sbGluZyByZWZldGNoIHJlZnJlc2hlcyBzaWxlbnRseSDigJQgbm8gbG9hZGluZyBvdmVybGF5IGZsYXNoLlxuICAgICAgICBjb25zdCBzaWxlbnQgPSBzaWxlbnRSZWYuY3VycmVudDtcbiAgICAgICAgc2lsZW50UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgKF9hID0gYWJvcnRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFib3J0KCk7XG4gICAgICAgIGNvbnN0IGFib3J0ID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgICBhYm9ydFJlZi5jdXJyZW50ID0gYWJvcnQ7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9ICsrcmVxdWVzdElkUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghc2lsZW50KVxuICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIHJlcShtZXJnZWQsIHN0LCBmdCwgeyBzaWduYWw6IGFib3J0LnNpZ25hbCB9KTtcbiAgICAgICAgICAgIGlmIChhYm9ydC5zaWduYWwuYWJvcnRlZCB8fCByZXF1ZXN0SWQgIT09IHJlcXVlc3RJZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyA9PT0gZmFsc2UpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gKF9iID0gcmVzdWx0LmRhdGEpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IFtdO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNhbGxiYWNrcy5jdXJyZW50LnBvc3REYXRhID8gY2FsbGJhY2tzLmN1cnJlbnQucG9zdERhdGEocmF3KSA6IHJhdztcbiAgICAgICAgICAgIHNldERhdGFTb3VyY2UobmV4dCk7XG4gICAgICAgICAgICBzZXRQYWdlSW5mb1N0YXRlKChwcmV2KSA9PiB7IHZhciBfYTsgcmV0dXJuIChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IHRvdGFsOiAoX2EgPSByZXN1bHQudG90YWwpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG5leHQubGVuZ3RoIH0pKTsgfSk7XG4gICAgICAgICAgICAoX2QgPSAoX2MgPSBjYWxsYmFja3MuY3VycmVudCkub25Mb2FkKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuY2FsbChfYywgbmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoYWJvcnQuc2lnbmFsLmFib3J0ZWQgfHwgcmVxdWVzdElkICE9PSByZXF1ZXN0SWRSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAoX2YgPSAoX2UgPSBjYWxsYmFja3MuY3VycmVudCkub25SZXF1ZXN0RXJyb3IpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5jYWxsKF9lLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIXNpbGVudCAmJiByZXF1ZXN0SWQgPT09IHJlcXVlc3RJZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIEJ1aWxkIHRoZSByZXF1ZXN0IHBhcmFtcyBmcm9tIHRoZSBjdXJyZW50IHJlbmRlciBjbG9zdXJlLlxuICAgIGNvbnN0IGJ1aWxkTWVyZ2VkID0gKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCAocGFyYW1zICE9PSBudWxsICYmIHBhcmFtcyAhPT0gdm9pZCAwID8gcGFyYW1zIDoge30pKSwgc2VhcmNoUGFyYW1zKSwgKHBhZ2luYXRlZCA/IHsgY3VycmVudDogcGFnZUluZm8uY3VycmVudCwgcGFnZVNpemU6IHBhZ2VJbmZvLnBhZ2VTaXplIH0gOiB7fSkpKTtcbiAgICAvLyBPbmx5IGBwYXJhbXNgIChhIGNvbnN1bWVyLW93bmVkIHByb3AsIG9mdGVuIGFuIGlubGluZSBvYmplY3QpIG5lZWRzIHZhbHVlXG4gICAgLy8gY29tcGFyaXNvbjsgdGhlIHJlc3QgYXJlIHN0YWJsZSBpbnRlcm5hbCBzdGF0ZSBhbmQgY29tcGFyZSBieSByZWZlcmVuY2UuXG4gICAgY29uc3QgcGFyYW1zS2V5ID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zICE9PSBudWxsICYmIHBhcmFtcyAhPT0gdm9pZCAwID8gcGFyYW1zIDogbnVsbCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG1hbnVhbCkge1xuICAgICAgICAgICAgcmVsb2FkU2lnbmFsLnNldHRsZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIG1hbnVhbFJlcXVlc3Q6IHN3YWxsb3cgb25seSB0aGUgZmlyc3QgKG1vdW50KSB0cmlnZ2VyLlxuICAgICAgICBpZiAoc2tpcEZpcnN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNraXBGaXJzdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBwcmV2UGFyYW1zUmVmLmN1cnJlbnQgPSBwYXJhbXNLZXk7XG4gICAgICAgICAgICByZWxvYWRTaWduYWwuc2V0dGxlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQSBgcGFyYW1zYCBjaGFuZ2UgcmVzZXRzIHRvIHBhZ2UgMSBmaXJzdDsgdGhlIHBhZ2UgY2hhbmdlIHJlLXJ1bnMgdGhpc1xuICAgICAgICAvLyBlZmZlY3QsIHdoZXJlIHRoZSBhY3R1YWwgZmV0Y2ggaGFwcGVucyAoc28gaXQgbmV2ZXIgZG91YmxlLWZldGNoZXMpLlxuICAgICAgICBpZiAocHJldlBhcmFtc1JlZi5jdXJyZW50ICE9PSBwYXJhbXNLZXkgJiYgcGFnZUluZm8uY3VycmVudCAhPT0gZGVmYXVsdEN1cnJlbnQpIHtcbiAgICAgICAgICAgIHByZXZQYXJhbXNSZWYuY3VycmVudCA9IHBhcmFtc0tleTtcbiAgICAgICAgICAgIHNldFBhZ2VJbmZvKHsgY3VycmVudDogZGVmYXVsdEN1cnJlbnQgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcHJldlBhcmFtc1JlZi5jdXJyZW50ID0gcGFyYW1zS2V5O1xuICAgICAgICBjb25zdCBmaXJlID0gKCkgPT4gcnVuUmVxdWVzdChidWlsZE1lcmdlZCgpLCBzb3J0LCBmaWx0ZXIpLmZpbmFsbHkocmVsb2FkU2lnbmFsLnNldHRsZSk7XG4gICAgICAgIGlmIChkZWJvdW5jZVRpbWUgJiYgZGVib3VuY2VUaW1lID4gMCkge1xuICAgICAgICAgICAgaWYgKGRlYm91bmNlVGltZXJSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGRlYm91bmNlVGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoZmlyZSwgZGVib3VuY2VUaW1lKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRlYm91bmNlVGltZXJSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZvaWQgZmlyZSgpO1xuICAgIH0sIFtwYXJhbXNLZXksIHNlYXJjaFBhcmFtcywgc29ydCwgZmlsdGVyLCBwYWdlSW5mby5jdXJyZW50LCBwYWdlSW5mby5wYWdlU2l6ZSwgcmVsb2FkU2lnbmFsLnRva2VuLCBtYW51YWxdKTtcbiAgICBjb25zdCByZWxvYWQgPSB1c2VNZW1vaXplZEZuKCgpID0+IChtYW51YWwgPyBQcm9taXNlLnJlc29sdmUoKSA6IHJlbG9hZFNpZ25hbC5yZXF1ZXN0KCkpKTtcbiAgICBjb25zdCByZXNldCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBzZXRQYWdlSW5mb1N0YXRlKChwcmV2KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCwgcGFnZVNpemU6IGRlZmF1bHRQYWdlU2l6ZSB9KSkpO1xuICAgIH0pO1xuICAgIC8vIFBvbGxpbmc6IHJlLXRyaWdnZXIgb24gYW4gaW50ZXJ2YWwsIHNraXBwaW5nIHRpY2tzIHdoaWxlIGEgcmVxdWVzdCBpcyBpbiBmbGlnaHQuXG4gICAgY29uc3QgcG9sbGluZ01zID0gdHlwZW9mIHBvbGxpbmcgPT09ICdmdW5jdGlvbicgPyBwb2xsaW5nKGRhdGFTb3VyY2UpIDogcG9sbGluZztcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWFudWFsIHx8ICFwb2xsaW5nTXMgfHwgcG9sbGluZ01zIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxvYWRpbmdSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzaWxlbnRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB2b2lkIHJlbG9hZFNpZ25hbC5yZXF1ZXN0KCk7XG4gICAgICAgIH0sIHBvbGxpbmdNcyk7XG4gICAgICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGlkKTtcbiAgICB9LCBbcG9sbGluZ01zLCBtYW51YWxdKTtcbiAgICAvLyBBYm9ydCBhbnkgaW4tZmxpZ2h0IHJlcXVlc3Qgb24gdW5tb3VudC5cbiAgICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4geyB2YXIgX2E7IHJldHVybiAoX2EgPSBhYm9ydFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWJvcnQoKTsgfSwgW10pO1xuICAgIHJldHVybiB7IGRhdGFTb3VyY2UsIGxvYWRpbmcsIHBhZ2VJbmZvLCBzZXRQYWdlSW5mbywgcmVsb2FkLCByZXNldCB9O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|