@1money/react-ui 1.16.0 → 1.17.0
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/AGENTS.md +393 -0
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
- package/es/components/CheckboxGroup/interface.d.ts +21 -15
- package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/es/components/Form/Form.d.ts +29 -0
- package/es/components/Form/Form.js +188 -0
- package/es/components/Form/FormItem.d.ts +4 -0
- package/es/components/Form/FormItem.js +165 -0
- package/es/components/Form/FormItemContent.d.ts +18 -0
- package/es/components/Form/FormItemContent.js +146 -0
- package/es/components/Form/constants.d.ts +46 -0
- package/es/components/Form/constants.js +65 -0
- package/es/components/Form/helper.d.ts +120 -0
- package/es/components/Form/helper.js +284 -0
- package/es/components/Form/index.d.ts +20 -0
- package/es/components/Form/index.js +21 -0
- package/es/components/Form/interface.d.ts +238 -0
- package/es/components/Form/interface.js +2 -0
- package/es/components/Form/style/Form.css +1 -0
- package/es/components/Form/style/Form.scss +167 -0
- package/es/components/Form/style/css.js +2 -0
- package/es/components/Form/style/index.d.ts +1 -0
- package/es/components/Form/style/index.js +2 -0
- package/es/components/Form/useFormItemContext.d.ts +32 -0
- package/es/components/Form/useFormItemContext.js +55 -0
- package/es/components/Form/useFormItemWatch.d.ts +51 -0
- package/es/components/Form/useFormItemWatch.js +69 -0
- package/es/components/Form/useValidationTrigger.d.ts +40 -0
- package/es/components/Form/useValidationTrigger.js +74 -0
- package/es/components/Input/Input.js +72 -74
- package/es/components/Input/interface.d.ts +9 -9
- package/es/components/InputAmount/InputAmount.js +228 -276
- package/es/components/InputAmount/helper.d.ts +46 -0
- package/es/components/InputAmount/helper.js +115 -0
- package/es/components/ProForm/ProForm.d.ts +33 -0
- package/es/components/ProForm/ProForm.js +208 -0
- package/es/components/ProForm/ProFormDependency.d.ts +12 -0
- package/es/components/ProForm/ProFormDependency.js +61 -0
- package/es/components/ProForm/ProFormList.d.ts +19 -0
- package/es/components/ProForm/ProFormList.js +348 -0
- package/es/components/ProForm/Submitter.d.ts +21 -0
- package/es/components/ProForm/Submitter.js +76 -0
- package/es/components/ProForm/constants.d.ts +34 -0
- package/es/components/ProForm/constants.js +40 -0
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
- package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormDigit.js +15 -0
- package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMoney.js +10 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
- package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormPassword.js +16 -0
- package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormRadio.js +13 -0
- package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSelect.js +13 -0
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
- package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormText.js +15 -0
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
- package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/es/components/ProForm/fields/createProFormField.js +200 -0
- package/es/components/ProForm/fields/index.d.ts +12 -0
- package/es/components/ProForm/fields/index.js +13 -0
- package/es/components/ProForm/index.d.ts +7 -0
- package/es/components/ProForm/index.js +7 -0
- package/es/components/ProForm/interface.d.ts +306 -0
- package/es/components/ProForm/interface.js +2 -0
- package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/es/components/ProForm/layouts/DrawerForm.js +79 -0
- package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/es/components/ProForm/layouts/ModalForm.js +89 -0
- package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/es/components/ProForm/layouts/QueryFilter.js +132 -0
- package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/es/components/ProForm/layouts/StepsForm.js +295 -0
- package/es/components/ProForm/layouts/index.d.ts +4 -0
- package/es/components/ProForm/layouts/index.js +5 -0
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
- package/es/components/ProForm/style/ProForm.module.css +1 -0
- package/es/components/ProForm/style/ProForm.module.scss +59 -0
- package/es/components/ProForm/style/css.js +3 -0
- package/es/components/ProForm/style/index.d.ts +1 -0
- package/es/components/ProForm/style/index.js +3 -0
- package/es/components/ProForm/utils.d.ts +72 -0
- package/es/components/ProForm/utils.js +206 -0
- package/es/components/RadioGroup/RadioGroup.js +46 -23
- package/es/components/RadioGroup/interface.d.ts +3 -1
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +113 -106
- package/es/components/Select/constants.d.ts +18 -0
- package/es/components/Select/constants.js +19 -0
- package/es/components/Sidebar/Sidebar.js +21 -23
- package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/es/components/Sidebar/SidebarLogo.js +33 -0
- package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/es/components/Sidebar/SimplySidebar.js +18 -22
- package/es/components/Sidebar/Stepper.js +14 -14
- package/es/components/Sidebar/constants.d.ts +16 -0
- package/es/components/Sidebar/constants.js +17 -0
- package/es/components/Sidebar/style/Stepper.css +1 -1
- package/es/components/Sidebar/style/Stepper.scss +11 -1
- package/es/components/Switch/Switch.js +28 -25
- package/es/components/Switch/interface.d.ts +9 -4
- package/es/components/useControlledState/index.d.ts +14 -0
- package/es/components/useControlledState/index.js +32 -0
- package/es/components/useEventCallback/index.d.ts +11 -0
- package/es/components/useEventCallback/index.js +17 -0
- package/es/components/useLayoutEffect/index.d.ts +11 -0
- package/es/components/useLayoutEffect/index.js +17 -0
- package/es/components/useLayoutState/index.d.ts +13 -0
- package/es/components/useLayoutState/index.js +71 -0
- package/es/components/useMemoizedFn/index.d.ts +12 -0
- package/es/components/useMemoizedFn/index.js +27 -0
- package/es/components/usePrevious/index.d.ts +11 -0
- package/es/components/usePrevious/index.js +19 -0
- package/es/components/useSafeState/index.d.ts +12 -0
- package/es/components/useSafeState/index.js +24 -0
- package/es/components/useSyncState/index.d.ts +14 -0
- package/es/components/useSyncState/index.js +37 -0
- package/es/components/useUpdateEffect/index.d.ts +9 -0
- package/es/components/useUpdateEffect/index.js +19 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +21 -2
- package/es/index.js +19 -1
- package/jest.setup.d.ts +1 -0
- package/jest.setup.ts +1 -0
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
- package/lib/components/CheckboxGroup/interface.d.ts +21 -15
- package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/lib/components/Form/Form.d.ts +29 -0
- package/lib/components/Form/Form.js +199 -0
- package/lib/components/Form/FormItem.d.ts +4 -0
- package/lib/components/Form/FormItem.js +176 -0
- package/lib/components/Form/FormItemContent.d.ts +18 -0
- package/lib/components/Form/FormItemContent.js +156 -0
- package/lib/components/Form/constants.d.ts +46 -0
- package/lib/components/Form/constants.js +71 -0
- package/lib/components/Form/helper.d.ts +120 -0
- package/lib/components/Form/helper.js +290 -0
- package/lib/components/Form/index.d.ts +20 -0
- package/lib/components/Form/index.js +45 -0
- package/lib/components/Form/interface.d.ts +238 -0
- package/lib/components/Form/interface.js +6 -0
- package/lib/components/Form/style/Form.css +1 -0
- package/lib/components/Form/style/Form.scss +167 -0
- package/lib/components/Form/style/css.js +4 -0
- package/lib/components/Form/style/index.d.ts +1 -0
- package/lib/components/Form/style/index.js +4 -0
- package/lib/components/Form/useFormItemContext.d.ts +32 -0
- package/lib/components/Form/useFormItemContext.js +62 -0
- package/lib/components/Form/useFormItemWatch.d.ts +51 -0
- package/lib/components/Form/useFormItemWatch.js +76 -0
- package/lib/components/Form/useValidationTrigger.d.ts +40 -0
- package/lib/components/Form/useValidationTrigger.js +81 -0
- package/lib/components/Input/Input.js +71 -73
- package/lib/components/Input/interface.d.ts +9 -9
- package/lib/components/InputAmount/InputAmount.js +230 -278
- package/lib/components/InputAmount/helper.d.ts +46 -0
- package/lib/components/InputAmount/helper.js +122 -0
- package/lib/components/ProForm/ProForm.d.ts +33 -0
- package/lib/components/ProForm/ProForm.js +216 -0
- package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
- package/lib/components/ProForm/ProFormDependency.js +67 -0
- package/lib/components/ProForm/ProFormList.d.ts +19 -0
- package/lib/components/ProForm/ProFormList.js +355 -0
- package/lib/components/ProForm/Submitter.d.ts +21 -0
- package/lib/components/ProForm/Submitter.js +83 -0
- package/lib/components/ProForm/constants.d.ts +34 -0
- package/lib/components/ProForm/constants.js +46 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
- package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
- package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
- package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
- package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormText.js +22 -0
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
- package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/lib/components/ProForm/fields/createProFormField.js +208 -0
- package/lib/components/ProForm/fields/index.d.ts +12 -0
- package/lib/components/ProForm/fields/index.js +90 -0
- package/lib/components/ProForm/index.d.ts +7 -0
- package/lib/components/ProForm/index.js +73 -0
- package/lib/components/ProForm/interface.d.ts +306 -0
- package/lib/components/ProForm/interface.js +6 -0
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
- package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/ModalForm.js +96 -0
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
- package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/lib/components/ProForm/layouts/StepsForm.js +302 -0
- package/lib/components/ProForm/layouts/index.d.ts +4 -0
- package/lib/components/ProForm/layouts/index.js +40 -0
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
- package/lib/components/ProForm/style/ProForm.module.css +1 -0
- package/lib/components/ProForm/style/ProForm.module.scss +59 -0
- package/lib/components/ProForm/style/css.js +4 -0
- package/lib/components/ProForm/style/index.d.ts +1 -0
- package/lib/components/ProForm/style/index.js +4 -0
- package/lib/components/ProForm/utils.d.ts +72 -0
- package/lib/components/ProForm/utils.js +213 -0
- package/lib/components/RadioGroup/RadioGroup.js +45 -22
- package/lib/components/RadioGroup/interface.d.ts +3 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +114 -107
- package/lib/components/Select/constants.d.ts +18 -0
- package/lib/components/Select/constants.js +25 -0
- package/lib/components/Sidebar/Sidebar.js +21 -23
- package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/lib/components/Sidebar/SidebarLogo.js +39 -0
- package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/lib/components/Sidebar/SimplySidebar.js +17 -21
- package/lib/components/Sidebar/Stepper.js +14 -14
- package/lib/components/Sidebar/constants.d.ts +16 -0
- package/lib/components/Sidebar/constants.js +23 -0
- package/lib/components/Sidebar/style/Stepper.css +1 -1
- package/lib/components/Sidebar/style/Stepper.scss +11 -1
- package/lib/components/Switch/Switch.js +27 -24
- package/lib/components/Switch/interface.d.ts +9 -4
- package/lib/components/useControlledState/index.d.ts +14 -0
- package/lib/components/useControlledState/index.js +39 -0
- package/lib/components/useEventCallback/index.d.ts +11 -0
- package/lib/components/useEventCallback/index.js +24 -0
- package/lib/components/useLayoutEffect/index.d.ts +11 -0
- package/lib/components/useLayoutEffect/index.js +23 -0
- package/lib/components/useLayoutState/index.d.ts +13 -0
- package/lib/components/useLayoutState/index.js +79 -0
- package/lib/components/useMemoizedFn/index.d.ts +12 -0
- package/lib/components/useMemoizedFn/index.js +33 -0
- package/lib/components/usePrevious/index.d.ts +11 -0
- package/lib/components/usePrevious/index.js +25 -0
- package/lib/components/useSafeState/index.d.ts +12 -0
- package/lib/components/useSafeState/index.js +31 -0
- package/lib/components/useSyncState/index.d.ts +14 -0
- package/lib/components/useSyncState/index.js +44 -0
- package/lib/components/useUpdateEffect/index.d.ts +9 -0
- package/lib/components/useUpdateEffect/index.js +25 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +21 -2
- package/lib/index.js +213 -1
- package/package.json +16 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
3
|
var __rest = this && this.__rest || function (s, e) {
|
|
3
4
|
var t = {};
|
|
@@ -8,90 +9,75 @@ var __rest = this && this.__rest || function (s, e) {
|
|
|
8
9
|
return t;
|
|
9
10
|
};
|
|
10
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
import { memo, useMemo, useState,
|
|
12
|
-
import BigNumber from 'bignumber.js';
|
|
13
|
-
import { numericFormatter } from 'react-number-format';
|
|
12
|
+
import { memo, useMemo, useState, useRef, useLayoutEffect } from 'react';
|
|
14
13
|
import { Skeleton } from 'primereact/skeleton';
|
|
15
14
|
import Spinner from '../Spinner';
|
|
15
|
+
import useLatest from '../useLatest';
|
|
16
|
+
import useEventCallback from '../useEventCallback';
|
|
16
17
|
import { default as classnames, joinCls } from '../../utils/classnames';
|
|
17
|
-
|
|
18
|
-
var normalizeNumberInput = function normalizeNumberInput(val) {
|
|
19
|
-
return val.replace(/[\u3002\uff0e\uff61]/g, '.').replace(/[\uFF0C]/g, ',');
|
|
20
|
-
};
|
|
21
|
-
var calcValueInRange = function calcValueInRange(val, min, max) {
|
|
22
|
-
if (val === '' || val === '-' || isNaN(+val)) return val;
|
|
23
|
-
var calcVal = val;
|
|
24
|
-
var bnVal = BigNumber(val);
|
|
25
|
-
if (typeof min === 'number' || typeof min === 'bigint') {
|
|
26
|
-
var minBn = BigNumber(min);
|
|
27
|
-
if (bnVal.lt(minBn)) {
|
|
28
|
-
calcVal = '' + min;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (typeof max === 'number' || typeof max === 'bigint') {
|
|
32
|
-
var maxBn = BigNumber(max);
|
|
33
|
-
if (bnVal.gt(maxBn)) {
|
|
34
|
-
calcVal = '' + max;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return calcVal;
|
|
38
|
-
};
|
|
18
|
+
import { MIN_INPUT_WIDTH, DECIMAL_POINT_OFFSET, SKELETON_LABEL_WIDTH, SKELETON_LABEL_HEIGHT, SPINNER_STROKE_WIDTH, CSS_VAR_INPUT_WIDTH, DEFAULT_TYPE, DEFAULT_SIZE, DEFAULT_PLACEHOLDER, DEFAULT_PREFIX_CLS, CHAR_MINUS, CHAR_COMMA, CHAR_DOT, isNumericType, stripCommas, stripMinus, formatThousands, calcValueInRange, normalizeValue, truncateFractionDigits, calcGapWidth, parseRawInput, absValue } from './helper';
|
|
39
19
|
export var InputAmount = function InputAmount(props) {
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
20
|
+
var _a, _b;
|
|
21
|
+
var type = (_a = props.type) !== null && _a !== void 0 ? _a : DEFAULT_TYPE;
|
|
22
|
+
var size = type === 'normal' ? (_b = props.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE : DEFAULT_SIZE;
|
|
23
|
+
var footnote = type === 'normal' ? undefined : props.footnote;
|
|
24
|
+
var footnoteCls = type === 'normal' ? undefined : props.footnoteCls;
|
|
25
|
+
var rawBaseProps = Object.assign({}, props);
|
|
26
|
+
delete rawBaseProps.type;
|
|
27
|
+
delete rawBaseProps.size;
|
|
28
|
+
delete rawBaseProps.footnote;
|
|
29
|
+
delete rawBaseProps.footnoteCls;
|
|
30
|
+
var baseProps = rawBaseProps;
|
|
31
|
+
var value = baseProps.value,
|
|
32
|
+
maxFractionDigits = baseProps.maxFractionDigits,
|
|
33
|
+
_baseProps$placeholde = baseProps.placeholder,
|
|
34
|
+
placeholder = _baseProps$placeholde === void 0 ? DEFAULT_PLACEHOLDER : _baseProps$placeholde,
|
|
35
|
+
min = baseProps.min,
|
|
36
|
+
max = baseProps.max,
|
|
37
|
+
className = baseProps.className,
|
|
38
|
+
wrapperCls = baseProps.wrapperCls,
|
|
39
|
+
labelCls = baseProps.labelCls,
|
|
40
|
+
_baseProps$prefixCls = baseProps.prefixCls,
|
|
41
|
+
prefixCls = _baseProps$prefixCls === void 0 ? DEFAULT_PREFIX_CLS : _baseProps$prefixCls,
|
|
42
|
+
messageCls = baseProps.messageCls,
|
|
43
|
+
prefixEleCls = baseProps.prefixEleCls,
|
|
44
|
+
suffixEleCls = baseProps.suffixEleCls,
|
|
45
|
+
invalid = baseProps.invalid,
|
|
46
|
+
negative = baseProps.negative,
|
|
47
|
+
required = baseProps.required,
|
|
48
|
+
loading = baseProps.loading,
|
|
49
|
+
success = baseProps.success,
|
|
50
|
+
disabled = baseProps.disabled,
|
|
51
|
+
readOnly = baseProps.readOnly,
|
|
52
|
+
label = baseProps.label,
|
|
53
|
+
prefix = baseProps.prefix,
|
|
54
|
+
suffix = baseProps.suffix,
|
|
55
|
+
currency = baseProps.currency,
|
|
56
|
+
message = baseProps.message,
|
|
57
|
+
onChange = baseProps.onChange,
|
|
58
|
+
onBlur = baseProps.onBlur,
|
|
59
|
+
onFocus = baseProps.onFocus,
|
|
60
|
+
rest = __rest(baseProps, ["value", "maxFractionDigits", "placeholder", "min", "max", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "prefixEleCls", "suffixEleCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
|
|
61
|
+
var cls = classnames("".concat(prefixCls, "-").concat(type));
|
|
62
|
+
// ── Refs ──
|
|
78
63
|
var inputRef = useRef(null);
|
|
79
64
|
var fakeEleRef = useRef(null);
|
|
80
65
|
var prefixRef = useRef(null);
|
|
81
66
|
var suffixRef = useRef(null);
|
|
82
67
|
var currencyRef = useRef(null);
|
|
83
68
|
var containerRef = useRef(null);
|
|
84
|
-
var
|
|
69
|
+
var caretPosRef = useRef(0);
|
|
85
70
|
var ignoreSelectRef = useRef(false);
|
|
86
|
-
var onChangeRef =
|
|
71
|
+
var onChangeRef = useLatest(onChange);
|
|
72
|
+
// ── State ──
|
|
87
73
|
var _useState = useState(null),
|
|
88
74
|
_useState2 = _slicedToArray(_useState, 2),
|
|
89
|
-
|
|
90
|
-
|
|
75
|
+
innerValue = _useState2[0],
|
|
76
|
+
setInnerValue = _useState2[1];
|
|
91
77
|
var _useState3 = useState(MIN_INPUT_WIDTH),
|
|
92
78
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
93
|
-
|
|
94
|
-
|
|
79
|
+
inputWidth = _useState4[0],
|
|
80
|
+
setInputWidth = _useState4[1];
|
|
95
81
|
var _useState5 = useState(false),
|
|
96
82
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
97
83
|
isMaxWidth = _useState6[0],
|
|
@@ -100,137 +86,133 @@ export var InputAmount = function InputAmount(props) {
|
|
|
100
86
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
101
87
|
isFocus = _useState8[0],
|
|
102
88
|
setIsFocus = _useState8[1];
|
|
103
|
-
var isFocusRef =
|
|
89
|
+
var isFocusRef = useLatest(isFocus);
|
|
90
|
+
var isUncontrolled = typeof value === 'undefined';
|
|
104
91
|
var formattedValue = useMemo(function () {
|
|
105
|
-
return
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}, [_value, negative]);
|
|
110
|
-
var valueRef = useRef({
|
|
111
|
-
value: value,
|
|
112
|
-
_value: _value,
|
|
92
|
+
return formatThousands(innerValue !== null && innerValue !== void 0 ? innerValue : '', negative);
|
|
93
|
+
}, [innerValue, negative]);
|
|
94
|
+
var stateRef = useLatest({
|
|
95
|
+
innerValue: innerValue,
|
|
113
96
|
formattedValue: formattedValue,
|
|
114
97
|
min: min,
|
|
115
98
|
max: max,
|
|
116
99
|
negative: negative,
|
|
117
100
|
maxFractionDigits: maxFractionDigits
|
|
118
101
|
});
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
isFocusRef.current = focus;
|
|
122
|
-
}, []);
|
|
123
|
-
var scrollToEnd = useCallback(function () {
|
|
102
|
+
// ── Helpers ──
|
|
103
|
+
var scrollToEnd = useEventCallback(function () {
|
|
124
104
|
var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
125
105
|
var _a;
|
|
126
106
|
var input = inputRef.current;
|
|
127
107
|
if (!input) return;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
108
|
+
if (sticky) {
|
|
109
|
+
input.setSelectionRange(caretPosRef.current, caretPosRef.current);
|
|
110
|
+
} else {
|
|
111
|
+
var len = (_a = input.value) === null || _a === void 0 ? void 0 : _a.length;
|
|
112
|
+
input.setSelectionRange(len, len);
|
|
113
|
+
input.scrollLeft = input.scrollWidth;
|
|
114
|
+
}
|
|
134
115
|
input.focus();
|
|
135
|
-
}
|
|
136
|
-
var calcCaretPos =
|
|
116
|
+
});
|
|
117
|
+
var calcCaretPos = useEventCallback(function (val) {
|
|
137
118
|
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
138
119
|
var currPos = arguments.length > 2 ? arguments[2] : undefined;
|
|
139
120
|
var _a, _b;
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
121
|
+
var input = inputRef.current;
|
|
122
|
+
if (!input) return;
|
|
123
|
+
var _stateRef$current = stateRef.current,
|
|
124
|
+
prev = _stateRef$current.innerValue,
|
|
125
|
+
negative = _stateRef$current.negative,
|
|
126
|
+
formattedValue = _stateRef$current.formattedValue;
|
|
127
|
+
var formattedNewVal = formatThousands(val, negative);
|
|
128
|
+
var originOffset = val.length - ((_a = prev === null || prev === void 0 ? void 0 : prev.length) !== null && _a !== void 0 ? _a : 0);
|
|
129
|
+
var position = (_b = currPos !== null && currPos !== void 0 ? currPos : input.selectionEnd) !== null && _b !== void 0 ? _b : 0;
|
|
130
|
+
// Map formatted position back to raw position
|
|
131
|
+
position = stripCommas(formattedValue.slice(0, Math.max(position, 0))).length;
|
|
132
|
+
// Map raw position forward to formatted position
|
|
133
|
+
var posVal = val.slice(0, position + originOffset);
|
|
134
|
+
formattedNewVal.split('').reduce(function (acc, _char, ind) {
|
|
135
|
+
if (_char === CHAR_COMMA) return acc;
|
|
136
|
+
acc.push(_char);
|
|
137
|
+
if (acc.join('') === posVal) position = ind + 1;
|
|
138
|
+
return acc;
|
|
139
|
+
}, []);
|
|
140
|
+
caretPosRef.current = position + offset;
|
|
141
|
+
});
|
|
142
|
+
var commitValue = useEventCallback(function (val, hasDecimalPoint, e) {
|
|
143
|
+
var _a;
|
|
144
|
+
if (isUncontrolled) {
|
|
145
|
+
setInnerValue(val === '' ? null : val);
|
|
146
|
+
calcCaretPos(val, hasDecimalPoint ? DECIMAL_POINT_OFFSET : 0, Math.max(caretPosRef.current, 0));
|
|
147
|
+
ignoreSelectRef.current = true;
|
|
163
148
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
149
|
+
if (e) (_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, e, val);
|
|
150
|
+
});
|
|
151
|
+
// ── Event Handlers ──
|
|
152
|
+
var handleChange = useEventCallback(function (e) {
|
|
153
|
+
var _a;
|
|
167
154
|
if (disabled || readOnly) return;
|
|
168
|
-
var
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var hasDecimalPoint =
|
|
179
|
-
|
|
180
|
-
if (
|
|
181
|
-
|
|
182
|
-
if (
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
var maxDecimals = Number(maxFractionDigits);
|
|
190
|
-
if (decimal != null && decimal.length > maxDecimals) {
|
|
191
|
-
var truncatedDecimals = decimal.slice(0, maxDecimals);
|
|
192
|
-
var _formattedValue$split = formattedValue.split('.'),
|
|
155
|
+
var _stateRef$current2 = stateRef.current,
|
|
156
|
+
innerValue = _stateRef$current2.innerValue,
|
|
157
|
+
formattedValue = _stateRef$current2.formattedValue,
|
|
158
|
+
min = _stateRef$current2.min,
|
|
159
|
+
max = _stateRef$current2.max,
|
|
160
|
+
negative = _stateRef$current2.negative,
|
|
161
|
+
maxFractionDigits = _stateRef$current2.maxFractionDigits;
|
|
162
|
+
var parsed = parseRawInput((_a = e.target.value) !== null && _a !== void 0 ? _a : '', negative);
|
|
163
|
+
if (!parsed) return;
|
|
164
|
+
var val = parsed.val;
|
|
165
|
+
var hasDecimalPoint = parsed.hasDecimalPoint,
|
|
166
|
+
isStandaloneMinus = parsed.isStandaloneMinus;
|
|
167
|
+
if (val === innerValue && !hasDecimalPoint) return;
|
|
168
|
+
// Enforce fraction digit limit
|
|
169
|
+
if (isNumericType(maxFractionDigits)) {
|
|
170
|
+
var _truncateFractionDigi = truncateFractionDigits(val, Number(maxFractionDigits)),
|
|
171
|
+
_int = _truncateFractionDigi["int"],
|
|
172
|
+
truncated = _truncateFractionDigi.truncated,
|
|
173
|
+
overflow = _truncateFractionDigi.overflow;
|
|
174
|
+
if (overflow) {
|
|
175
|
+
var _formattedValue$split = formattedValue.split(CHAR_DOT),
|
|
193
176
|
_formattedValue$split2 = _slicedToArray(_formattedValue$split, 1),
|
|
194
177
|
oldInt = _formattedValue$split2[0];
|
|
195
|
-
if (oldInt
|
|
196
|
-
val =
|
|
178
|
+
if (stripCommas(oldInt) === _int) return;
|
|
179
|
+
val = truncated;
|
|
197
180
|
}
|
|
198
181
|
}
|
|
199
|
-
|
|
182
|
+
// Clamp to min/max range
|
|
183
|
+
if (isNumericType(min) || isNumericType(max)) {
|
|
200
184
|
val = calcValueInRange(val, min, max);
|
|
201
185
|
}
|
|
186
|
+
// Normalize the final value
|
|
202
187
|
if (val !== '') {
|
|
203
|
-
|
|
204
|
-
val = '-';
|
|
205
|
-
} else {
|
|
206
|
-
var decimals = (_c = (_b = (_a = val.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
|
|
207
|
-
var bn = BigNumber(val);
|
|
208
|
-
var normalized = bn.toFixed(decimals);
|
|
209
|
-
if (negative && val.trim().startsWith('-') && bn.isZero()) {
|
|
210
|
-
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
211
|
-
}
|
|
212
|
-
val = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
|
|
213
|
-
}
|
|
188
|
+
val = isStandaloneMinus ? CHAR_MINUS : normalizeValue(val, hasDecimalPoint, negative);
|
|
214
189
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
ignoreSelectRef.current = true;
|
|
219
|
-
} else {
|
|
220
|
-
e.preventDefault();
|
|
221
|
-
e.stopPropagation();
|
|
222
|
-
}
|
|
223
|
-
(_d = onChangeRef.current) === null || _d === void 0 ? void 0 : _d.call(onChangeRef, e, val);
|
|
224
|
-
}, [disabled, readOnly]);
|
|
225
|
-
var handleSelect = useCallback(function () {
|
|
190
|
+
commitValue(val, hasDecimalPoint, e);
|
|
191
|
+
});
|
|
192
|
+
var handleSelect = useEventCallback(function () {
|
|
226
193
|
var _a;
|
|
227
194
|
if (ignoreSelectRef.current) {
|
|
228
195
|
ignoreSelectRef.current = false;
|
|
229
196
|
return;
|
|
230
197
|
}
|
|
231
198
|
var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionEnd;
|
|
232
|
-
if (typeof currPos === 'number')
|
|
233
|
-
}
|
|
199
|
+
if (typeof currPos === 'number') caretPosRef.current = currPos;
|
|
200
|
+
});
|
|
201
|
+
var handleFocus = useEventCallback(function (e) {
|
|
202
|
+
setIsFocus(true);
|
|
203
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
|
|
204
|
+
});
|
|
205
|
+
var handleBlur = useEventCallback(function (e) {
|
|
206
|
+
setIsFocus(false);
|
|
207
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
|
|
208
|
+
});
|
|
209
|
+
var handleContainerClick = useEventCallback(function (e) {
|
|
210
|
+
var _a;
|
|
211
|
+
if (e.target instanceof HTMLInputElement) return;
|
|
212
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
213
|
+
if (isMaxWidth) scrollToEnd();
|
|
214
|
+
});
|
|
215
|
+
// ── Layout Effects ──
|
|
234
216
|
useLayoutEffect(function () {
|
|
235
217
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
236
218
|
var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
|
|
@@ -238,167 +220,137 @@ export var InputAmount = function InputAmount(props) {
|
|
|
238
220
|
var suffixWidth = (_f = (_e = suffixRef.current) === null || _e === void 0 ? void 0 : _e.offsetWidth) !== null && _f !== void 0 ? _f : 0;
|
|
239
221
|
var currencyWidth = (_h = (_g = currencyRef.current) === null || _g === void 0 ? void 0 : _g.offsetWidth) !== null && _h !== void 0 ? _h : 0;
|
|
240
222
|
var fakeWidth = (_k = (_j = fakeEleRef.current) === null || _j === void 0 ? void 0 : _j.offsetWidth) !== null && _k !== void 0 ? _k : 0;
|
|
241
|
-
var gapWidth = prefixWidth
|
|
223
|
+
var gapWidth = calcGapWidth(!!prefixWidth, !!suffixWidth, !!currencyWidth);
|
|
242
224
|
var maxWidth = containerWidth - prefixWidth - suffixWidth - currencyWidth - gapWidth;
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
setIsMaxWidth(isMax);
|
|
225
|
+
setInputWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
|
|
226
|
+
setIsMaxWidth(fakeWidth >= maxWidth);
|
|
246
227
|
if (isFocusRef.current) scrollToEnd(true);
|
|
247
|
-
}, [
|
|
228
|
+
}, [innerValue, prefix, suffix, currency, loading]);
|
|
248
229
|
useLayoutEffect(function () {
|
|
249
|
-
var _a
|
|
250
|
-
var val =
|
|
230
|
+
var _a;
|
|
231
|
+
var val = isUncontrolled ? innerValue : value;
|
|
251
232
|
var hasDecimalPoint = false;
|
|
252
233
|
var isStandaloneMinus = false;
|
|
253
234
|
if (typeof val === 'string') {
|
|
254
235
|
if (val === '') {
|
|
255
236
|
val = null;
|
|
256
237
|
} else {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
isStandaloneMinus =
|
|
262
|
-
if (!
|
|
263
|
-
}
|
|
264
|
-
} else if (val !== null && typeof val !== 'number' && typeof val !== 'bigint') return;
|
|
265
|
-
if (!negative) {
|
|
266
|
-
if (typeof val === 'number') {
|
|
267
|
-
val = Math.abs(val);
|
|
268
|
-
} else if (typeof val === 'bigint') {
|
|
269
|
-
var zero = BigInt(0);
|
|
270
|
-
val = val < zero ? -val : val;
|
|
238
|
+
var parsed = parseRawInput(val, negative);
|
|
239
|
+
if (!parsed) return;
|
|
240
|
+
val = parsed.val;
|
|
241
|
+
hasDecimalPoint = parsed.hasDecimalPoint;
|
|
242
|
+
isStandaloneMinus = parsed.isStandaloneMinus;
|
|
243
|
+
if (!negative) val = stripMinus(val);
|
|
271
244
|
}
|
|
245
|
+
} else if (val !== null && !isNumericType(val)) return;
|
|
246
|
+
// Ensure non-negative when negative is not allowed
|
|
247
|
+
if (!negative && isNumericType(val)) {
|
|
248
|
+
val = absValue(val);
|
|
272
249
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
val = "".concat(_int2, ".").concat(truncatedDecimals);
|
|
282
|
-
if (typeof value === 'undefined') {
|
|
283
|
-
setValue(val);
|
|
250
|
+
// Enforce fraction digit limit
|
|
251
|
+
if ((typeof val === 'string' || typeof val === 'number') && isNumericType(maxFractionDigits)) {
|
|
252
|
+
var _truncateFractionDigi2 = truncateFractionDigits("".concat(val), Number(maxFractionDigits)),
|
|
253
|
+
truncated = _truncateFractionDigi2.truncated,
|
|
254
|
+
overflow = _truncateFractionDigi2.overflow;
|
|
255
|
+
if (overflow) {
|
|
256
|
+
if (isUncontrolled) {
|
|
257
|
+
setInnerValue(truncated);
|
|
284
258
|
} else {
|
|
285
|
-
|
|
259
|
+
(_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, {
|
|
286
260
|
target: inputRef.current
|
|
287
|
-
};
|
|
288
|
-
(_a = onChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeRef, syntheticEvent, val !== null && val !== void 0 ? val : '');
|
|
261
|
+
}, truncated !== null && truncated !== void 0 ? truncated : '');
|
|
289
262
|
}
|
|
290
263
|
return;
|
|
291
264
|
}
|
|
292
265
|
}
|
|
293
|
-
|
|
294
|
-
|
|
266
|
+
// Clamp to min/max range
|
|
267
|
+
if (isNumericType(val) || typeof val === 'string') {
|
|
268
|
+
val = calcValueInRange("".concat(val), min, max);
|
|
295
269
|
}
|
|
296
270
|
if (val === '' || val == null) {
|
|
297
|
-
|
|
271
|
+
setInnerValue(null);
|
|
298
272
|
} else {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
} else {
|
|
302
|
-
var strVal = '' + val;
|
|
303
|
-
var decimals = (_d = (_c = (_b = strVal.match(/\.(\d+)$/)) === null || _b === void 0 ? void 0 : _b[1]) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
|
|
304
|
-
var bn = BigNumber(strVal);
|
|
305
|
-
var normalized = bn.toFixed(decimals);
|
|
306
|
-
if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
|
|
307
|
-
normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
|
|
308
|
-
}
|
|
309
|
-
val = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
|
|
310
|
-
}
|
|
311
|
-
setValue(val);
|
|
273
|
+
val = isStandaloneMinus ? CHAR_MINUS : normalizeValue("".concat(val), hasDecimalPoint, negative);
|
|
274
|
+
setInnerValue(val);
|
|
312
275
|
}
|
|
313
|
-
calcCaretPos(val !== null && val !== void 0 ? val : '', hasDecimalPoint ?
|
|
276
|
+
calcCaretPos(val !== null && val !== void 0 ? val : '', hasDecimalPoint ? DECIMAL_POINT_OFFSET : 0, Math.max(caretPosRef.current, 0));
|
|
314
277
|
ignoreSelectRef.current = true;
|
|
315
278
|
}, [value, maxFractionDigits, min, max, negative]);
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
className: classes('wrapper', joinCls(wrapperCls, classes(size), invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
|
|
330
|
-
children: [label ? loading ? _jsx(Skeleton, {
|
|
331
|
-
width: '72px',
|
|
332
|
-
height: '18px',
|
|
333
|
-
className: classes('label-loading')
|
|
334
|
-
}) : _jsx("span", {
|
|
335
|
-
className: classes('label', joinCls(required && classes('label-required'), labelCls)),
|
|
279
|
+
// ── Render ──
|
|
280
|
+
var wrapperClassName = cls('wrapper', joinCls(wrapperCls, cls(size), invalid && cls('invalid'), success && cls('success'), disabled && cls('disabled'), readOnly && cls('readonly'), innerValue && cls('filled')));
|
|
281
|
+
var renderLabel = function renderLabel() {
|
|
282
|
+
if (!label) return null;
|
|
283
|
+
if (loading) {
|
|
284
|
+
return _jsx(Skeleton, {
|
|
285
|
+
width: SKELETON_LABEL_WIDTH,
|
|
286
|
+
height: SKELETON_LABEL_HEIGHT,
|
|
287
|
+
className: cls('label-loading')
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
return _jsx("span", {
|
|
291
|
+
className: cls('label', joinCls(required && cls('label-required'), labelCls)),
|
|
336
292
|
children: label
|
|
337
|
-
})
|
|
293
|
+
});
|
|
294
|
+
};
|
|
295
|
+
var renderSuffix = function renderSuffix() {
|
|
296
|
+
if (loading) return _jsx(Spinner, {
|
|
297
|
+
className: cls('suffix-loading'),
|
|
298
|
+
strokeWidth: SPINNER_STROKE_WIDTH
|
|
299
|
+
});
|
|
300
|
+
if (suffix) return _jsx("span", {
|
|
301
|
+
ref: suffixRef,
|
|
302
|
+
className: cls('suffix', suffixEleCls),
|
|
303
|
+
children: suffix
|
|
304
|
+
});
|
|
305
|
+
return null;
|
|
306
|
+
};
|
|
307
|
+
return _jsxs("div", {
|
|
308
|
+
className: wrapperClassName,
|
|
309
|
+
children: [renderLabel(), _jsxs("div", {
|
|
338
310
|
ref: containerRef,
|
|
339
|
-
className:
|
|
340
|
-
onClick:
|
|
341
|
-
var _a;
|
|
342
|
-
if (e.target instanceof HTMLInputElement) return;
|
|
343
|
-
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
344
|
-
if (isMaxWidth) scrollToEnd();
|
|
345
|
-
},
|
|
311
|
+
className: cls(void 0, joinCls(className, isFocus && cls('focus'))),
|
|
312
|
+
onClick: handleContainerClick,
|
|
346
313
|
children: [prefix && _jsx("span", {
|
|
347
314
|
ref: prefixRef,
|
|
348
|
-
className:
|
|
315
|
+
className: cls('prefix', prefixEleCls),
|
|
349
316
|
children: prefix
|
|
350
317
|
}), _jsx("div", {
|
|
351
|
-
className:
|
|
318
|
+
className: cls('element', !isFocus && isMaxWidth ? cls('element-max') : ''),
|
|
352
319
|
children: _jsx("input", Object.assign({}, rest, {
|
|
353
320
|
ref: inputRef,
|
|
354
321
|
value: formattedValue,
|
|
355
322
|
placeholder: placeholder,
|
|
356
323
|
readOnly: readOnly,
|
|
357
324
|
disabled: disabled,
|
|
358
|
-
style: {
|
|
359
|
-
'--input-width': "".concat(_width, "px")
|
|
360
|
-
},
|
|
325
|
+
style: _defineProperty({}, CSS_VAR_INPUT_WIDTH, "".concat(inputWidth, "px")),
|
|
361
326
|
onChange: handleChange,
|
|
362
327
|
onSelect: handleSelect,
|
|
363
|
-
onFocus:
|
|
364
|
-
|
|
365
|
-
_onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
|
|
366
|
-
},
|
|
367
|
-
onBlur: function onBlur(e) {
|
|
368
|
-
changeFocus(false);
|
|
369
|
-
_onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
|
|
370
|
-
}
|
|
328
|
+
onFocus: handleFocus,
|
|
329
|
+
onBlur: handleBlur
|
|
371
330
|
}))
|
|
372
331
|
}), currency && _jsx("span", {
|
|
373
332
|
ref: currencyRef,
|
|
374
|
-
className:
|
|
333
|
+
className: cls('currency'),
|
|
375
334
|
children: currency
|
|
376
|
-
}),
|
|
377
|
-
className: classes('suffix-loading'),
|
|
378
|
-
strokeWidth: '4'
|
|
379
|
-
}) : suffix ? _jsx("span", {
|
|
380
|
-
ref: suffixRef,
|
|
381
|
-
className: classes('suffix', suffixEleCls),
|
|
382
|
-
children: suffix
|
|
383
|
-
}) : null, _jsx("span", {
|
|
335
|
+
}), renderSuffix(), _jsx("span", {
|
|
384
336
|
ref: fakeEleRef,
|
|
385
|
-
className:
|
|
337
|
+
className: cls('fake'),
|
|
386
338
|
onClick: function onClick(e) {
|
|
387
339
|
return e.stopPropagation();
|
|
388
340
|
},
|
|
389
341
|
children: formattedValue
|
|
390
342
|
})]
|
|
391
343
|
}), (message || footnote) && _jsxs("div", {
|
|
392
|
-
className:
|
|
344
|
+
className: cls('extra'),
|
|
393
345
|
children: [message && _jsx("div", {
|
|
394
|
-
className:
|
|
346
|
+
className: cls('message', messageCls),
|
|
395
347
|
children: message
|
|
396
348
|
}), footnote && _jsx("div", {
|
|
397
|
-
className:
|
|
349
|
+
className: cls('footnote', footnoteCls),
|
|
398
350
|
children: footnote
|
|
399
351
|
})]
|
|
400
352
|
})]
|
|
401
353
|
});
|
|
402
354
|
};
|
|
403
355
|
export default /*#__PURE__*/memo(InputAmount);
|
|
404
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsImlnbm9yZVNlbGVjdFJlZiIsIm9uQ2hhbmdlUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJpc0ZvY3VzUmVmIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJ2YWx1ZVJlZiIsImNoYW5nZUZvY3VzIiwiZm9jdXMiLCJjdXJyZW50Iiwic2Nyb2xsVG9FbmQiLCJzdGlja3kiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfYSIsImlucHV0IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJjYWxjQ2FyZXRQb3MiLCJvZmZzZXQiLCJjdXJyUG9zIiwiX2IiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsIm9yaWdpbk9mZnNldCIsInNlbGVjdGlvbkVuZCIsIm9sZFBvc1ZhbCIsInNsaWNlIiwiTWF0aCIsInNwbGl0Iiwiam9pbiIsInBvc1ZhbCIsInJlZHVjZSIsImFjYyIsImNoYXIiLCJpbmQiLCJwdXNoIiwiaGFuZGxlQ2hhbmdlIiwiX2MiLCJfZCIsIl92YWx1ZVJlZiRjdXJyZW50MiIsInRhcmdldCIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsIl92YWwkc3BsaXQiLCJfdmFsJHNwbGl0MiIsImludCIsImRlY2ltYWwiLCJtYXhEZWNpbWFscyIsIk51bWJlciIsInRydW5jYXRlZERlY2ltYWxzIiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0IiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0MiIsIm9sZEludCIsImRlY2ltYWxzIiwibWF0Y2giLCJibiIsIm5vcm1hbGl6ZWQiLCJ0b0ZpeGVkIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJpc1plcm8iLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVNlbGVjdCIsIl9lIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwic3ludGhldGljRXZlbnQiLCJzdHJWYWwiLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJvblNlbGVjdCIsInN0cm9rZVdpZHRoIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFB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QUFBLEVBQUE7UUFBSzRDLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxVQUFVLEVBQUV6QixXQUFXLENBQUM7UUFBQU4sUUFBQSxFQUFHSztNQUFRLENBQUEsQ0FBTztJQUFBLENBQUEsQ0FDM0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBRUQsNEJBQWV2QyxJQUFJLENBQUM0QixXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9JbnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuY29uc3Qgbm9ybWFsaXplTnVtYmVySW5wdXQgPSAodmFsKSA9PiB2YWxcbiAgICAucmVwbGFjZSgvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZywgJy4nKVxuICAgIC5yZXBsYWNlKC9bXFx1RkYwQ10vZywgJywnKTtcbmNvbnN0IGNhbGNWYWx1ZUluUmFuZ2UgPSAodmFsLCBtaW4sIG1heCkgPT4ge1xuICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PT0gJy0nIHx8IGlzTmFOKCt2YWwpKVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgIGxldCBjYWxjVmFsID0gdmFsO1xuICAgIGNvbnN0IGJuVmFsID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIGNvbnN0IG1pbkJuID0gQmlnTnVtYmVyKG1pbik7XG4gICAgICAgIGlmIChiblZhbC5sdChtaW5CbikpIHtcbiAgICAgICAgICAgIGNhbGNWYWwgPSAnJyArIG1pbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWF4Qm4gPSBCaWdOdW1iZXIobWF4KTtcbiAgICAgICAgaWYgKGJuVmFsLmd0KG1heEJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWF4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYWxjVmFsO1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCB0eXBlID0gJ3ByaW1hcnknLCBtYXhGcmFjdGlvbkRpZ2l0cywgY2hpbGRyZW4sIHBsYWNlaG9sZGVyID0gJzAnLCBtaW4sIG1heCwgXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHNpemUgPSAnbGFyZ2UnLCBmb290bm90ZSwgZm9vdG5vdGVDbHMsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBwcmVmaXhFbGVDbHMsIHN1ZmZpeEVsZUNscywgaW52YWxpZCwgbmVnYXRpdmUsIHJlcXVpcmVkLCBsb2FkaW5nLCBzdWNjZXNzLCBkaXNhYmxlZCwgcmVhZE9ubHksIGxhYmVsLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIG1lc3NhZ2UsIG9uQ2hhbmdlLCBvbkJsdXIsIG9uRm9jdXMgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcInR5cGVcIiwgXCJtYXhGcmFjdGlvbkRpZ2l0c1wiLCBcImNoaWxkcmVuXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJzaXplXCIsIFwiZm9vdG5vdGVcIiwgXCJmb290bm90ZUNsc1wiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJsYWJlbENsc1wiLCBcInByZWZpeENsc1wiLCBcIm1lc3NhZ2VDbHNcIiwgXCJwcmVmaXhFbGVDbHNcIiwgXCJzdWZmaXhFbGVDbHNcIiwgXCJpbnZhbGlkXCIsIFwibmVnYXRpdmVcIiwgXCJyZXF1aXJlZFwiLCBcImxvYWRpbmdcIiwgXCJzdWNjZXNzXCIsIFwiZGlzYWJsZWRcIiwgXCJyZWFkT25seVwiLCBcImxhYmVsXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwiY3VycmVuY3lcIiwgXCJtZXNzYWdlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkJsdXJcIiwgXCJvbkZvY3VzXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtwcmVmaXhDbHN9LSR7dHlwZX1gKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGlucHV0Q2FyZXRQb3NpdGlvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBpZ25vcmVTZWxlY3RSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IG9uQ2hhbmdlUmVmID0gdXNlUmVmKG9uQ2hhbmdlKTtcbiAgICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbX3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaXNGb2N1c1JlZiA9IHVzZVJlZihpc0ZvY3VzKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCB2YWx1ZVJlZiA9IHVzZVJlZih7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBfdmFsdWUsXG4gICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgIG1heEZyYWN0aW9uRGlnaXRzLFxuICAgIH0pO1xuICAgIGNvbnN0IGNoYW5nZUZvY3VzID0gdXNlQ2FsbGJhY2soKGZvY3VzKSA9PiB7XG4gICAgICAgIHNldElzRm9jdXMoZm9jdXMpO1xuICAgICAgICBpc0ZvY3VzUmVmLmN1cnJlbnQgPSBmb2N1cztcbiAgICB9LCBbXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChpbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCB7IF92YWx1ZSwgbmVnYXRpdmUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luT2Zmc2V0ID0gdmFsLmxlbmd0aCAtICgoX2EgPSBfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKTtcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9IChfYiA9IGN1cnJQb3MgIT09IG51bGwgJiYgY3VyclBvcyAhPT0gdm9pZCAwID8gY3VyclBvcyA6IGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgocG9zaXRpb24sIDApKTtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkUG9zVmFsLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIChwb3NpdGlvbiArIG9yaWdpbk9mZnNldCkpO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBsZXQgdmFsID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBbb2xkSW50LF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGlmIChvbGRJbnQuc3BsaXQoJywnKS5qb2luKCcnKSA9PSBpbnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB8fCAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09ICcnKSB7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFsb25lTWludXMpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSAnLSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgKF9kID0gb25DaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmNhbGwob25DaGFuZ2VSZWYsIGUsIHZhbCk7XG4gICAgfSwgW2Rpc2FibGVkLCByZWFkT25seV0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VyclBvcyA9IChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGlmICh0eXBlb2YgY3VyclBvcyA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IGN1cnJQb3M7XG4gICAgfSwgW10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAoX2IgPSAoX2EgPSBjb250YWluZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBNSU5fSU5QVVRfV0lEVEg7XG4gICAgICAgIGNvbnN0IHByZWZpeFdpZHRoID0gKF9kID0gKF9jID0gcHJlZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc3VmZml4V2lkdGggPSAoX2YgPSAoX2UgPSBzdWZmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeVdpZHRoID0gKF9oID0gKF9nID0gY3VycmVuY3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAwO1xuICAgICAgICBjb25zdCBmYWtlV2lkdGggPSAoX2sgPSAoX2ogPSBmYWtlRWxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogMDtcbiAgICAgICAgY29uc3QgZ2FwV2lkdGggPSBwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICA/IDI0XG4gICAgICAgICAgICA6IChwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCkgfHwgKHByZWZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpIHx8IChzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKVxuICAgICAgICAgICAgICAgID8gMTZcbiAgICAgICAgICAgICAgICA6IHByZWZpeFdpZHRoIHx8IHN1ZmZpeFdpZHRoIHx8IGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHByZWZpeFdpZHRoIC0gc3VmZml4V2lkdGggLSBjdXJyZW5jeVdpZHRoIC0gZ2FwV2lkdGg7XG4gICAgICAgIGNvbnN0IGlzTWF4ID0gZmFrZVdpZHRoID49IG1heFdpZHRoO1xuICAgICAgICBzZXRXaWR0aChNYXRoLm1pbihtYXhXaWR0aCwgTWF0aC5tYXgoZmFrZVdpZHRoLCBNSU5fSU5QVVRfV0lEVEgpKSk7XG4gICAgICAgIHNldElzTWF4V2lkdGgoaXNNYXgpO1xuICAgICAgICBpZiAoaXNGb2N1c1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5XSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBsZXQgdmFsID0gdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IF92YWx1ZSA6IHZhbHVlO1xuICAgICAgICBsZXQgaGFzRGVjaW1hbFBvaW50ID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1N0YW5kYWxvbmVNaW51cyA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpc1N0YW5kYWxvbmVNaW51cyA9ICEhbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsICE9PSAnYmlnaW50JylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gTWF0aC5hYnModmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgemVybyA9IEJpZ0ludCgwKTtcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwgPCB6ZXJvID8gLXZhbCA6IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAmJlxuICAgICAgICAgICAgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJ1bmNhdGVkRGVjaW1hbHMgPSBkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7dHJ1bmNhdGVkRGVjaW1hbHN9YDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ludGhldGljRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGlucHV0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IG9uQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uQ2hhbmdlUmVmLCBzeW50aGV0aWNFdmVudCwgdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwID8gdmFsIDogJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gJy0nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2QgPSAoX2MgPSAoX2IgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzFdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHN0clZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCAhPT0gbnVsbCAmJiB2YWwgIT09IHZvaWQgMCA/IHZhbCA6ICcnLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG9uQ2hhbmdlUmVmLmN1cnJlbnQgPSBvbkNoYW5nZTtcbiAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgX3ZhbHVlLFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXgsXG4gICAgICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgICAgIG1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgIH07XG4gICAgfSwgW192YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzLCBvbkNoYW5nZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlRm9jdXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBvbkJsdXI6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcsIHN1ZmZpeEVsZUNscyksIGNoaWxkcmVuOiBzdWZmaXggfSkgOiBudWxsLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IGZvcm1hdHRlZFZhbHVlIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
356
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlTGF5b3V0RWZmZWN0IiwiU2tlbGV0b24iLCJTcGlubmVyIiwidXNlTGF0ZXN0IiwidXNlRXZlbnRDYWxsYmFjayIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIk1JTl9JTlBVVF9XSURUSCIsIkRFQ0lNQUxfUE9JTlRfT0ZGU0VUIiwiU0tFTEVUT05fTEFCRUxfV0lEVEgiLCJTS0VMRVRPTl9MQUJFTF9IRUlHSFQiLCJTUElOTkVSX1NUUk9LRV9XSURUSCIsIkNTU19WQVJfSU5QVVRfV0lEVEgiLCJERUZBVUxUX1RZUEUiLCJERUZBVUxUX1NJWkUiLCJERUZBVUxUX1BMQUNFSE9MREVSIiwiREVGQVVMVF9QUkVGSVhfQ0xTIiwiQ0hBUl9NSU5VUyIsIkNIQVJfQ09NTUEiLCJDSEFSX0RPVCIsImlzTnVtZXJpY1R5cGUiLCJzdHJpcENvbW1hcyIsInN0cmlwTWludXMiLCJmb3JtYXRUaG91c2FuZHMiLCJjYWxjVmFsdWVJblJhbmdlIiwibm9ybWFsaXplVmFsdWUiLCJ0cnVuY2F0ZUZyYWN0aW9uRGlnaXRzIiwiY2FsY0dhcFdpZHRoIiwicGFyc2VSYXdJbnB1dCIsImFic1ZhbHVlIiwiSW5wdXRBbW91bnQiLCJwcm9wcyIsIl9hIiwiX2IiLCJ0eXBlIiwic2l6ZSIsImZvb3Rub3RlIiwidW5kZWZpbmVkIiwiZm9vdG5vdGVDbHMiLCJyYXdCYXNlUHJvcHMiLCJhc3NpZ24iLCJiYXNlUHJvcHMiLCJ2YWx1ZSIsIm1heEZyYWN0aW9uRGlnaXRzIiwiX2Jhc2VQcm9wcyRwbGFjZWhvbGRlIiwicGxhY2Vob2xkZXIiLCJtaW4iLCJtYXgiLCJjbGFzc05hbWUiLCJ3cmFwcGVyQ2xzIiwibGFiZWxDbHMiLCJfYmFzZVByb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNscyIsImNvbmNhdCIsImlucHV0UmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiY2FyZXRQb3NSZWYiLCJpZ25vcmVTZWxlY3RSZWYiLCJvbkNoYW5nZVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbnB1dFdpZHRoIiwic2V0SW5wdXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiaXNGb2N1c1JlZiIsImlzVW5jb250cm9sbGVkIiwiZm9ybWF0dGVkVmFsdWUiLCJzdGF0ZVJlZiIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwiaW5wdXQiLCJjdXJyZW50Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJsZW4iLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImNhbGNDYXJldFBvcyIsInZhbCIsIm9mZnNldCIsImN1cnJQb3MiLCJfc3RhdGVSZWYkY3VycmVudCIsInByZXYiLCJmb3JtYXR0ZWROZXdWYWwiLCJvcmlnaW5PZmZzZXQiLCJwb3NpdGlvbiIsInNlbGVjdGlvbkVuZCIsInNsaWNlIiwiTWF0aCIsInBvc1ZhbCIsInNwbGl0IiwicmVkdWNlIiwiYWNjIiwiY2hhciIsImluZCIsInB1c2giLCJqb2luIiwiY29tbWl0VmFsdWUiLCJoYXNEZWNpbWFsUG9pbnQiLCJoYW5kbGVDaGFuZ2UiLCJfc3RhdGVSZWYkY3VycmVudDIiLCJwYXJzZWQiLCJ0YXJnZXQiLCJpc1N0YW5kYWxvbmVNaW51cyIsIl90cnVuY2F0ZUZyYWN0aW9uRGlnaSIsIk51bWJlciIsImludCIsInRydW5jYXRlZCIsIm92ZXJmbG93IiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0IiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0MiIsIm9sZEludCIsImhhbmRsZVNlbGVjdCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQmx1ciIsImhhbmRsZUNvbnRhaW5lckNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiX3RydW5jYXRlRnJhY3Rpb25EaWdpMiIsIndyYXBwZXJDbGFzc05hbWUiLCJyZW5kZXJMYWJlbCIsIndpZHRoIiwiaGVpZ2h0IiwiY2hpbGRyZW4iLCJyZW5kZXJTdWZmaXgiLCJzdHJva2VXaWR0aCIsInJlZiIsIm9uQ2xpY2siLCJzdHlsZSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9uU2VsZWN0Iiwic3RvcFByb3BhZ2F0aW9uIl0s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LENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUM0TSxlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUFSLFFBQUEsRUFFaEN6RTtNQUFjLENBQUEsQ0FDVjtJQUFBLENBQUEsQ0FDSCxFQUVMLENBQUNuQyxPQUFPLElBQUkvQixRQUFRLEtBQ25CMUMsS0FBQSxDQUFBLEtBQUEsRUFBQTtNQUFLc0QsU0FBUyxFQUFFd0IsR0FBRyxDQUFDLE9BQU8sQ0FBQztNQUFBdUcsUUFBQSxFQUFBLENBQ3pCNUcsT0FBTyxJQUFJM0UsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLd0QsU0FBUyxFQUFFd0IsR0FBRyxDQUFDLFNBQVMsRUFBRW5CLFVBQVUsQ0FBQztRQUFBMEgsUUFBQSxFQUFHNUc7TUFBTyxDQUFBLENBQU8sRUFDdEUvQixRQUFRLElBQUk1QyxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUt3RCxTQUFTLEVBQUV3QixHQUFHLENBQUMsVUFBVSxFQUFFbEMsV0FBVyxDQUFDO1FBQUF5SSxRQUFBLEVBQUczSTtNQUFRLENBQUEsQ0FBTztJQUFBLENBQUEsQ0FFOUU7RUFBQSxDQUFBLENBQ0c7QUFFVixDQUFDO0FBRUQsNEJBQWV6QyxJQUFJLENBQUNtQyxXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9JbnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgdXNlTGF0ZXN0IGZyb20gJy4uL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgTUlOX0lOUFVUX1dJRFRILCBERUNJTUFMX1BPSU5UX09GRlNFVCwgU0tFTEVUT05fTEFCRUxfV0lEVEgsIFNLRUxFVE9OX0xBQkVMX0hFSUdIVCwgU1BJTk5FUl9TVFJPS0VfV0lEVEgsIENTU19WQVJfSU5QVVRfV0lEVEgsIERFRkFVTFRfVFlQRSwgREVGQVVMVF9TSVpFLCBERUZBVUxUX1BMQUNFSE9MREVSLCBERUZBVUxUX1BSRUZJWF9DTFMsIENIQVJfTUlOVVMsIENIQVJfQ09NTUEsIENIQVJfRE9ULCBpc051bWVyaWNUeXBlLCBzdHJpcENvbW1hcywgc3RyaXBNaW51cywgZm9ybWF0VGhvdXNhbmRzLCBjYWxjVmFsdWVJblJhbmdlLCBub3JtYWxpemVWYWx1ZSwgdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cywgY2FsY0dhcFdpZHRoLCBwYXJzZVJhd0lucHV0LCBhYnNWYWx1ZSwgfSBmcm9tICcuL2hlbHBlcic7XG5leHBvcnQgY29uc3QgSW5wdXRBbW91bnQgPSBwcm9wcyA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB0eXBlID0gKF9hID0gcHJvcHMudHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogREVGQVVMVF9UWVBFO1xuICAgIGNvbnN0IHNpemUgPSB0eXBlID09PSAnbm9ybWFsJ1xuICAgICAgICA/IChfYiA9IHByb3BzLnNpemUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfU0laRVxuICAgICAgICA6IERFRkFVTFRfU0laRTtcbiAgICBjb25zdCBmb290bm90ZSA9IHR5cGUgPT09ICdub3JtYWwnID8gdW5kZWZpbmVkIDogcHJvcHMuZm9vdG5vdGU7XG4gICAgY29uc3QgZm9vdG5vdGVDbHMgPSB0eXBlID09PSAnbm9ybWFsJyA/IHVuZGVmaW5lZCA6IHByb3BzLmZvb3Rub3RlQ2xzO1xuICAgIGNvbnN0IHJhd0Jhc2VQcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIHByb3BzKTtcbiAgICBkZWxldGUgcmF3QmFzZVByb3BzLnR5cGU7XG4gICAgZGVsZXRlIHJhd0Jhc2VQcm9wcy5zaXplO1xuICAgIGRlbGV0ZSByYXdCYXNlUHJvcHMuZm9vdG5vdGU7XG4gICAgZGVsZXRlIHJhd0Jhc2VQcm9wcy5mb290bm90ZUNscztcbiAgICBjb25zdCBiYXNlUHJvcHMgPSByYXdCYXNlUHJvcHM7XG4gICAgY29uc3QgeyB2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIHBsYWNlaG9sZGVyID0gREVGQVVMVF9QTEFDRUhPTERFUiwgbWluLCBtYXgsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9IERFRkFVTFRfUFJFRklYX0NMUywgbWVzc2FnZUNscywgcHJlZml4RWxlQ2xzLCBzdWZmaXhFbGVDbHMsIGludmFsaWQsIG5lZ2F0aXZlLCByZXF1aXJlZCwgbG9hZGluZywgc3VjY2VzcywgZGlzYWJsZWQsIHJlYWRPbmx5LCBsYWJlbCwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBtZXNzYWdlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBiYXNlUHJvcHMsIHJlc3QgPSBfX3Jlc3QoYmFzZVByb3BzLCBbXCJ2YWx1ZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJtaW5cIiwgXCJtYXhcIiwgXCJjbGFzc05hbWVcIiwgXCJ3cmFwcGVyQ2xzXCIsIFwibGFiZWxDbHNcIiwgXCJwcmVmaXhDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwicHJlZml4RWxlQ2xzXCIsIFwic3VmZml4RWxlQ2xzXCIsIFwiaW52YWxpZFwiLCBcIm5lZ2F0aXZlXCIsIFwicmVxdWlyZWRcIiwgXCJsb2FkaW5nXCIsIFwic3VjY2Vzc1wiLCBcImRpc2FibGVkXCIsIFwicmVhZE9ubHlcIiwgXCJsYWJlbFwiLCBcInByZWZpeFwiLCBcInN1ZmZpeFwiLCBcImN1cnJlbmN5XCIsIFwibWVzc2FnZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25CbHVyXCIsIFwib25Gb2N1c1wiXSk7XG4gICAgY29uc3QgY2xzID0gY2xhc3NuYW1lcyhgJHtwcmVmaXhDbHN9LSR7dHlwZX1gKTtcbiAgICAvLyDilIDilIAgUmVmcyDilIDilIBcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNhcmV0UG9zUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qgb25DaGFuZ2VSZWYgPSB1c2VMYXRlc3Qob25DaGFuZ2UpO1xuICAgIC8vIOKUgOKUgCBTdGF0ZSDilIDilIBcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbaW5wdXRXaWR0aCwgc2V0SW5wdXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IFtpc01heFdpZHRoLCBzZXRJc01heFdpZHRoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNGb2N1cywgc2V0SXNGb2N1c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgaXNGb2N1c1JlZiA9IHVzZUxhdGVzdChpc0ZvY3VzKTtcbiAgICBjb25zdCBpc1VuY29udHJvbGxlZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSB1c2VNZW1vKCgpID0+IGZvcm1hdFRob3VzYW5kcyhpbm5lclZhbHVlICE9PSBudWxsICYmIGlubmVyVmFsdWUgIT09IHZvaWQgMCA/IGlubmVyVmFsdWUgOiAnJywgbmVnYXRpdmUpLCBbaW5uZXJWYWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCBzdGF0ZVJlZiA9IHVzZUxhdGVzdCh7XG4gICAgICAgIGlubmVyVmFsdWUsIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzLFxuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBIZWxwZXJzIOKUgOKUgFxuICAgIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlRXZlbnRDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChzdGlja3kpIHtcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGNhcmV0UG9zUmVmLmN1cnJlbnQsIGNhcmV0UG9zUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShsZW4sIGxlbik7XG4gICAgICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gaW5wdXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VFdmVudENhbGxiYWNrKCh2YWwsIG9mZnNldCA9IDAsIGN1cnJQb3MpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGlubmVyVmFsdWU6IHByZXYsIG5lZ2F0aXZlLCBmb3JtYXR0ZWRWYWx1ZSB9ID0gc3RhdGVSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gZm9ybWF0VGhvdXNhbmRzKHZhbCwgbmVnYXRpdmUpO1xuICAgICAgICBjb25zdCBvcmlnaW5PZmZzZXQgPSB2YWwubGVuZ3RoIC0gKChfYSA9IHByZXYgPT09IG51bGwgfHwgcHJldiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJldi5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICBsZXQgcG9zaXRpb24gPSAoX2IgPSBjdXJyUG9zICE9PSBudWxsICYmIGN1cnJQb3MgIT09IHZvaWQgMCA/IGN1cnJQb3MgOiBpbnB1dC5zZWxlY3Rpb25FbmQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgIC8vIE1hcCBmb3JtYXR0ZWQgcG9zaXRpb24gYmFjayB0byByYXcgcG9zaXRpb25cbiAgICAgICAgcG9zaXRpb24gPSBzdHJpcENvbW1hcyhmb3JtYXR0ZWRWYWx1ZS5zbGljZSgwLCBNYXRoLm1heChwb3NpdGlvbiwgMCkpKS5sZW5ndGg7XG4gICAgICAgIC8vIE1hcCByYXcgcG9zaXRpb24gZm9yd2FyZCB0byBmb3JtYXR0ZWQgcG9zaXRpb25cbiAgICAgICAgY29uc3QgcG9zVmFsID0gdmFsLnNsaWNlKDAsIHBvc2l0aW9uICsgb3JpZ2luT2Zmc2V0KTtcbiAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PT0gQ0hBUl9DT01NQSlcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgYWNjLnB1c2goY2hhcik7XG4gICAgICAgICAgICBpZiAoYWNjLmpvaW4oJycpID09PSBwb3NWYWwpXG4gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBpbmQgKyAxO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICBjYXJldFBvc1JlZi5jdXJyZW50ID0gcG9zaXRpb24gKyBvZmZzZXQ7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0VmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKCh2YWwsIGhhc0RlY2ltYWxQb2ludCwgZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpc1VuY29udHJvbGxlZCkge1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyBERUNJTUFMX1BPSU5UX09GRlNFVCA6IDAsIE1hdGgubWF4KGNhcmV0UG9zUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZSlcbiAgICAgICAgICAgIChfYSA9IG9uQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uQ2hhbmdlUmVmLCBlLCB2YWwpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBFdmVudCBIYW5kbGVycyDilIDilIBcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGRpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IGlubmVyVmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzIH0gPSBzdGF0ZVJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVJhd0lucHV0KChfYSA9IGUudGFyZ2V0LnZhbHVlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJywgbmVnYXRpdmUpO1xuICAgICAgICBpZiAoIXBhcnNlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHsgdmFsIH0gPSBwYXJzZWQ7XG4gICAgICAgIGNvbnN0IHsgaGFzRGVjaW1hbFBvaW50LCBpc1N0YW5kYWxvbmVNaW51cyB9ID0gcGFyc2VkO1xuICAgICAgICBpZiAodmFsID09PSBpbm5lclZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIEVuZm9yY2UgZnJhY3Rpb24gZGlnaXQgbGltaXRcbiAgICAgICAgaWYgKGlzTnVtZXJpY1R5cGUobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGludCwgdHJ1bmNhdGVkLCBvdmVyZmxvdyB9ID0gdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cyh2YWwsIE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpO1xuICAgICAgICAgICAgaWYgKG92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludF0gPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdChDSEFSX0RPVCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0cmlwQ29tbWFzKG9sZEludCkgPT09IGludClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhbCA9IHRydW5jYXRlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDbGFtcCB0byBtaW4vbWF4IHJhbmdlXG4gICAgICAgIGlmIChpc051bWVyaWNUeXBlKG1pbikgfHwgaXNOdW1lcmljVHlwZShtYXgpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgZmluYWwgdmFsdWVcbiAgICAgICAgaWYgKHZhbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHZhbCA9IGlzU3RhbmRhbG9uZU1pbnVzID8gQ0hBUl9NSU5VUyA6IG5vcm1hbGl6ZVZhbHVlKHZhbCwgaGFzRGVjaW1hbFBvaW50LCBuZWdhdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0VmFsdWUodmFsLCBoYXNEZWNpbWFsUG9pbnQsIGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpZ25vcmVTZWxlY3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGNhcmV0UG9zUmVmLmN1cnJlbnQgPSBjdXJyUG9zO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBMYXlvdXQgRWZmZWN0cyDilIDilIBcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gY2FsY0dhcFdpZHRoKCEhcHJlZml4V2lkdGgsICEhc3VmZml4V2lkdGgsICEhY3VycmVuY3lXaWR0aCk7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBzZXRJbnB1dFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChmYWtlV2lkdGggPj0gbWF4V2lkdGgpO1xuICAgICAgICBpZiAoaXNGb2N1c1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW2lubmVyVmFsdWUsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbG9hZGluZ10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IHZhbCA9IGlzVW5jb250cm9sbGVkID8gaW5uZXJWYWx1ZSA6IHZhbHVlO1xuICAgICAgICBsZXQgaGFzRGVjaW1hbFBvaW50ID0gZmFsc2U7XG4gICAgICAgIGxldCBpc1N0YW5kYWxvbmVNaW51cyA9IGZhbHNlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmF3SW5wdXQodmFsLCBuZWdhdGl2ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB2YWwgPSBwYXJzZWQudmFsO1xuICAgICAgICAgICAgICAgIGhhc0RlY2ltYWxQb2ludCA9IHBhcnNlZC5oYXNEZWNpbWFsUG9pbnQ7XG4gICAgICAgICAgICAgICAgaXNTdGFuZGFsb25lTWludXMgPSBwYXJzZWQuaXNTdGFuZGFsb25lTWludXM7XG4gICAgICAgICAgICAgICAgaWYgKCFuZWdhdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gc3RyaXBNaW51cyh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCAhPT0gbnVsbCAmJiAhaXNOdW1lcmljVHlwZSh2YWwpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyBFbnN1cmUgbm9uLW5lZ2F0aXZlIHdoZW4gbmVnYXRpdmUgaXMgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSAmJiBpc051bWVyaWNUeXBlKHZhbCkpIHtcbiAgICAgICAgICAgIHZhbCA9IGFic1ZhbHVlKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5mb3JjZSBmcmFjdGlvbiBkaWdpdCBsaW1pdFxuICAgICAgICBpZiAoKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSAmJlxuICAgICAgICAgICAgaXNOdW1lcmljVHlwZShtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHJ1bmNhdGVkLCBvdmVyZmxvdyB9ID0gdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cyhgJHt2YWx9YCwgTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSk7XG4gICAgICAgICAgICBpZiAob3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNVbmNvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSh0cnVuY2F0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gb25DaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25DaGFuZ2VSZWYsIHsgdGFyZ2V0OiBpbnB1dFJlZi5jdXJyZW50IH0sIHRydW5jYXRlZCAhPT0gbnVsbCAmJiB0cnVuY2F0ZWQgIT09IHZvaWQgMCA/IHRydW5jYXRlZCA6ICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIENsYW1wIHRvIG1pbi9tYXggcmFuZ2VcbiAgICAgICAgaWYgKGlzTnVtZXJpY1R5cGUodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsID0gY2FsY1ZhbHVlSW5SYW5nZShgJHt2YWx9YCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFsID0gaXNTdGFuZGFsb25lTWludXMgPyBDSEFSX01JTlVTIDogbm9ybWFsaXplVmFsdWUoYCR7dmFsfWAsIGhhc0RlY2ltYWxQb2ludCwgbmVnYXRpdmUpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSh2YWwpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGNDYXJldFBvcyh2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDAgPyB2YWwgOiAnJywgaGFzRGVjaW1hbFBvaW50ID8gREVDSU1BTF9QT0lOVF9PRkZTRVQgOiAwLCBNYXRoLm1heChjYXJldFBvc1JlZi5jdXJyZW50LCAwKSk7XG4gICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICAvLyDilIDilIAgUmVuZGVyIOKUgOKUgFxuICAgIGNvbnN0IHdyYXBwZXJDbGFzc05hbWUgPSBjbHMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGNscyhzaXplKSwgaW52YWxpZCAmJiBjbHMoJ2ludmFsaWQnKSwgc3VjY2VzcyAmJiBjbHMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbHMoJ3JlYWRvbmx5JyksIGlubmVyVmFsdWUgJiYgY2xzKCdmaWxsZWQnKSkpO1xuICAgIGNvbnN0IHJlbmRlckxhYmVsID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWxhYmVsKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogU0tFTEVUT05fTEFCRUxfV0lEVEgsIGhlaWdodDogU0tFTEVUT05fTEFCRUxfSEVJR0hULCBjbGFzc05hbWU6IGNscygnbGFiZWwtbG9hZGluZycpIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSk7XG4gICAgfTtcbiAgICBjb25zdCByZW5kZXJTdWZmaXggPSAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkaW5nKVxuICAgICAgICAgICAgcmV0dXJuIF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNscygnc3VmZml4LWxvYWRpbmcnKSwgc3Ryb2tlV2lkdGg6IFNQSU5ORVJfU1RST0tFX1dJRFRIIH0pO1xuICAgICAgICBpZiAoc3VmZml4KVxuICAgICAgICAgICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBzdWZmaXhSZWYsIGNsYXNzTmFtZTogY2xzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHdyYXBwZXJDbGFzc05hbWUsIGNoaWxkcmVuOiBbcmVuZGVyTGFiZWwoKSwgX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbHModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbHMoJ2ZvY3VzJykpKSwgb25DbGljazogaGFuZGxlQ29udGFpbmVyQ2xpY2ssIGNoaWxkcmVuOiBbcHJlZml4ICYmIChfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNscygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNscygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNscygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgW0NTU19WQVJfSU5QVVRfV0lEVEhdOiBgJHtpbnB1dFdpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgb25CbHVyOiBoYW5kbGVCbHVyIH0pKSB9KSwgY3VycmVuY3kgJiYgKF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbHMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSksIHJlbmRlclN1ZmZpeCgpLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbHMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogZm9ybWF0dGVkVmFsdWUgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbHMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbHMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNscygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSkpXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|