@1money/component-ui 0.0.73 → 0.0.74

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.
Files changed (83) hide show
  1. package/es/components/ProForm/ProForm.js +201 -48
  2. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  3. package/es/components/ProForm/ProFormDependency.js +29 -136
  4. package/es/components/ProForm/ProFormItem.js +81 -24
  5. package/es/components/ProForm/ProFormList.js +114 -62
  6. package/es/components/ProForm/Submitter.js +15 -4
  7. package/es/components/ProForm/context.d.ts +11 -3
  8. package/es/components/ProForm/context.js +32 -12
  9. package/es/components/ProForm/core/constants.d.ts +10 -2
  10. package/es/components/ProForm/core/constants.js +17 -3
  11. package/es/components/ProForm/core/formStore.d.ts +24 -0
  12. package/es/components/ProForm/core/formStore.js +101 -0
  13. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  14. package/es/components/ProForm/core/hooks/useForm.js +220 -120
  15. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  16. package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
  17. package/es/components/ProForm/core/runRules.d.ts +5 -3
  18. package/es/components/ProForm/core/runRules.js +13 -5
  19. package/es/components/ProForm/core/useFormItem.d.ts +2 -2
  20. package/es/components/ProForm/core/useFormItem.js +46 -23
  21. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  22. package/es/components/ProForm/fields/createProFormField.js +14 -4
  23. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  24. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  25. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  26. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  27. package/es/components/ProForm/index.d.ts +2 -2
  28. package/es/components/ProForm/index.js +1 -1
  29. package/es/components/ProForm/interface.d.ts +105 -23
  30. package/es/components/ProForm/layouts/DialogForm.js +17 -7
  31. package/es/components/ProForm/layouts/DrawerForm.js +16 -7
  32. package/es/components/ProForm/layouts/QueryFilter.js +46 -135
  33. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  34. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  35. package/es/components/ProForm/style/ProForm.css +0 -6
  36. package/es/components/ProForm/utils.js +32 -8
  37. package/es/components/ProTable/ProTable.js +3 -3
  38. package/es/index.css +1 -1
  39. package/es/index.d.ts +1 -1
  40. package/es/index.js +1 -1
  41. package/lib/components/ProForm/ProForm.js +201 -48
  42. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  43. package/lib/components/ProForm/ProFormDependency.js +30 -138
  44. package/lib/components/ProForm/ProFormItem.js +78 -21
  45. package/lib/components/ProForm/ProFormList.js +112 -60
  46. package/lib/components/ProForm/Submitter.js +15 -4
  47. package/lib/components/ProForm/context.d.ts +11 -3
  48. package/lib/components/ProForm/context.js +33 -13
  49. package/lib/components/ProForm/core/constants.d.ts +10 -2
  50. package/lib/components/ProForm/core/constants.js +18 -4
  51. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  52. package/lib/components/ProForm/core/formStore.js +110 -0
  53. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  54. package/lib/components/ProForm/core/hooks/useForm.js +220 -120
  55. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  56. package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
  57. package/lib/components/ProForm/core/runRules.d.ts +5 -3
  58. package/lib/components/ProForm/core/runRules.js +13 -5
  59. package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
  60. package/lib/components/ProForm/core/useFormItem.js +44 -21
  61. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  62. package/lib/components/ProForm/fields/createProFormField.js +14 -4
  63. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  64. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  65. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  66. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  67. package/lib/components/ProForm/index.d.ts +2 -2
  68. package/lib/components/ProForm/index.js +1 -1
  69. package/lib/components/ProForm/interface.d.ts +105 -23
  70. package/lib/components/ProForm/layouts/DialogForm.js +17 -7
  71. package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
  72. package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
  73. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  74. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  75. package/lib/components/ProForm/style/ProForm.css +0 -6
  76. package/lib/components/ProForm/utils.js +32 -8
  77. package/lib/components/ProTable/ProTable.js +3 -3
  78. package/lib/index.css +1 -1
  79. package/lib/index.d.ts +1 -1
  80. package/lib/index.js +1 -1
  81. package/package.json +1 -1
  82. package/scripts/mcp-server/examples.generated.json +36 -0
  83. package/scripts/mcp-server/index.generated.json +538 -16
@@ -26,46 +26,20 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
26
26
  return t;
27
27
  };
28
28
  var classes = (0, _classnames["default"])("".concat(_constants.CSS_PREFIX, "-query-filter"));
29
+ var HIDDEN_STYLE = {
30
+ display: 'none'
31
+ };
32
+ // Keeps the wrapper layout-neutral: the field stays a direct flex item.
33
+ var CONTENTS_STYLE = {
34
+ display: 'contents'
35
+ };
29
36
  // ---------------------------------------------------------------------------
30
- // URL sync helpers
31
- // ---------------------------------------------------------------------------
32
- function getUrlParams() {
33
- if (typeof window === 'undefined') return {};
34
- var params = {};
35
- new URLSearchParams(window.location.search).forEach(function (v, k) {
36
- params[k] = v;
37
- });
38
- return params;
39
- }
40
- /**
41
- * Write the filter values into the URL while PRESERVING unrelated query params
42
- * (e.g. `?tab=...`). Only keys previously written by this filter (tracked in
43
- * `managedKeys`) are cleared before writing, so reset removes exactly what the
44
- * filter added. Returns the new set of managed keys.
45
- */
46
- function setUrlParams(params, managedKeys) {
47
- if (typeof window === 'undefined') return new Set(managedKeys);
48
- var sp = new URLSearchParams(window.location.search);
49
- managedKeys.forEach(function (k) {
50
- return sp["delete"](k);
51
- });
52
- var written = new Set();
53
- for (var _i = 0, _Object$entries = Object.entries(params); _i < _Object$entries.length; _i++) {
54
- var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
55
- k = _Object$entries$_i[0],
56
- v = _Object$entries$_i[1];
57
- if (v !== null && v !== undefined && v !== '') {
58
- sp.set(k, String(v));
59
- written.add(k);
60
- }
61
- }
62
- var search = sp.toString();
63
- var url = search ? "".concat(window.location.pathname, "?").concat(search) : window.location.pathname;
64
- window.history.replaceState(null, '', url);
65
- return written;
66
- }
67
- // ---------------------------------------------------------------------------
68
- // QueryFilter
37
+ // QueryFilter a compact filter bar on top of ProForm.
38
+ //
39
+ // URL synchronization is handled by ProForm itself (`syncToUrl`); QueryFilter
40
+ // only flips the default of `syncToUrlAsImportant` to true: a filter's reason
41
+ // to sync is restoring state from the URL on refresh, so URL params win over
42
+ // `initialValues` here (plain ProForm keeps the opposite default).
69
43
  // ---------------------------------------------------------------------------
70
44
  var QueryFilterBase = function QueryFilterBase(props) {
71
45
  var _a, _b;
@@ -79,99 +53,37 @@ var QueryFilterBase = function QueryFilterBase(props) {
79
53
  _props$split = props.split,
80
54
  split = _props$split === void 0 ? false : _props$split,
81
55
  searchConfig = props.searchConfig,
82
- syncToUrl = props.syncToUrl,
83
- onFinish = props.onFinish,
84
- onReset = props.onReset,
56
+ _props$syncToUrlAsImp = props.syncToUrlAsImportant,
57
+ syncToUrlAsImportant = _props$syncToUrlAsImp === void 0 ? true : _props$syncToUrlAsImp,
85
58
  children = props.children,
86
- _props$submitter = props.submitter,
87
- submitter = _props$submitter === void 0 ? false : _props$submitter,
88
- initialValuesProp = props.initialValues,
89
- formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrl", "onFinish", "onReset", "children", "submitter", "initialValues"]);
59
+ onFinishFailed = props.onFinishFailed,
60
+ _submitter = props.submitter,
61
+ formProps = __rest(props, ["defaultCollapsed", "collapsed", "onCollapse", "defaultColsNumber", "labelWidth", "split", "searchConfig", "syncToUrlAsImportant", "children", "onFinishFailed", "submitter"]);
90
62
  var _useControlledState = (0, _useControlledState3["default"])(defaultCollapsed, controlledCollapsed),
91
63
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
92
64
  collapsed = _useControlledState2[0],
93
65
  setCollapsed = _useControlledState2[1];
94
- // ── syncToUrl: merge URL params into initial values on mount ──
95
- // One-time snapshot of the URL params at mount. Lazy ref init is IDEMPOTENT,
96
- // so it is safe under StrictMode's double render (an impure "first run" flag
97
- // inside useMemo would return the unmerged value on the replay invocation).
98
- var urlParamsAtMountRef = (0, _react.useRef)(null);
99
- if (urlParamsAtMountRef.current === null) {
100
- urlParamsAtMountRef.current = syncToUrl ? getUrlParams() : {};
101
- }
102
- // Keys this filter has WRITTEN to the URL — the only keys submit/reset is
103
- // allowed to clear. The function form of syncToUrl also seeds this from its
104
- // filtered 'get' result (those keys are the filter's own by definition).
105
- var managedKeysRef = (0, _react.useRef)(new Set());
106
- // Boolean-mode only: URL params merged into initialValues but NOT yet
107
- // claimed. The boolean form cannot tell its own params from foreign ones
108
- // (?tab=…), so a seeded key is claimed only once its value changes (or it
109
- // disappears from the submitted values, i.e. the user cleared the field).
110
- var urlSeededRef = (0, _react.useRef)({});
111
- var initialValues = (0, _react.useMemo)(function () {
112
- var _a;
113
- if (!syncToUrl) return initialValuesProp;
114
- var urlParams = (_a = urlParamsAtMountRef.current) !== null && _a !== void 0 ? _a : {};
115
- if (typeof syncToUrl === 'function') {
116
- var fromUrl = syncToUrl(urlParams, 'get');
117
- // Idempotent ref writes — same input on every invocation.
118
- managedKeysRef.current = new Set(Object.keys(fromUrl));
119
- return Object.assign(Object.assign({}, initialValuesProp), fromUrl);
120
- }
121
- urlSeededRef.current = Object.assign({}, urlParams);
122
- return Object.assign(Object.assign({}, initialValuesProp), urlParams);
123
- }, []);
124
- var handleSyncSet = (0, _useMemoizedFn["default"])(function (values) {
125
- if (!syncToUrl) return;
126
- var toWrite;
127
- var toClear = new Set(managedKeysRef.current);
128
- if (typeof syncToUrl === 'function') {
129
- toWrite = syncToUrl(values, 'set');
130
- } else {
131
- // Skip URL-seeded keys we never wrote whose value is unchanged — they
132
- // may belong to someone else (?tab=…); leave them in the URL untouched.
133
- // A seeded key whose value DID change is claimed from now on.
134
- toWrite = {};
135
- for (var _i2 = 0, _Object$entries2 = Object.entries(values); _i2 < _Object$entries2.length; _i2++) {
136
- var _Object$entries2$_i = (0, _slicedToArray2["default"])(_Object$entries2[_i2], 2),
137
- key = _Object$entries2$_i[0],
138
- value = _Object$entries2$_i[1];
139
- var seeded = urlSeededRef.current[key];
140
- if (seeded !== undefined && !managedKeysRef.current.has(key) && String(value) === seeded) {
141
- continue;
142
- }
143
- delete urlSeededRef.current[key];
144
- toClear.add(key);
145
- toWrite[key] = value;
146
- }
147
- // Seeded keys missing from the submitted values were cleared by the
148
- // user (omitNil strips empty values) — claim them and remove their
149
- // stale params from the URL.
150
- for (var _i3 = 0, _Object$keys = Object.keys(urlSeededRef.current); _i3 < _Object$keys.length; _i3++) {
151
- var _key = _Object$keys[_i3];
152
- if (!(_key in values)) {
153
- delete urlSeededRef.current[_key];
154
- toClear.add(_key);
155
- }
156
- }
157
- }
158
- managedKeysRef.current = setUrlParams(toWrite, toClear);
159
- });
160
- var handleFinish = (0, _useMemoizedFn["default"])(function (values) {
161
- handleSyncSet(values);
162
- onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
163
- });
164
- var handleReset = (0, _useMemoizedFn["default"])(function () {
165
- if (syncToUrl) {
166
- managedKeysRef.current = setUrlParams({}, managedKeysRef.current);
167
- }
168
- onReset === null || onReset === void 0 ? void 0 : onReset();
169
- });
170
66
  var handleCollapse = (0, _useMemoizedFn["default"])(function () {
171
67
  var next = !collapsed;
172
68
  setCollapsed(next);
173
69
  onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(next);
174
70
  });
71
+ // A collapsed (display:none) field failing validation would block Search
72
+ // with an INVISIBLE error — auto-expand so the user can see and fix it.
73
+ var handleFinishFailed = (0, _useMemoizedFn["default"])(function (errorInfo) {
74
+ if (collapsed) {
75
+ var overflowHasError = _react["default"].Children.toArray(children).slice(defaultColsNumber).some(function (child) {
76
+ if (! /*#__PURE__*/_react["default"].isValidElement(child)) return false;
77
+ var childName = child.props.name;
78
+ return childName !== undefined && errorInfo.errors[childName] !== undefined;
79
+ });
80
+ if (overflowHasError) {
81
+ setCollapsed(false);
82
+ onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(false);
83
+ }
84
+ }
85
+ onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed(errorInfo);
86
+ });
175
87
  // Count children and split visible/hidden
176
88
  var childArray = (0, _react.useMemo)(function () {
177
89
  var arr = [];
@@ -182,7 +94,6 @@ var QueryFilterBase = function QueryFilterBase(props) {
182
94
  });
183
95
  return arr;
184
96
  }, [children]);
185
- var visibleChildren = collapsed ? childArray.slice(0, defaultColsNumber) : childArray;
186
97
  var hasMore = childArray.length > defaultColsNumber;
187
98
  var searchText = (_a = searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchText) !== null && _a !== void 0 ? _a : _constants.DEFAULT_TEXT.search;
188
99
  var resetText = (_b = searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.resetText) !== null && _b !== void 0 ? _b : _constants.DEFAULT_TEXT.reset;
@@ -191,20 +102,21 @@ var QueryFilterBase = function QueryFilterBase(props) {
191
102
  width: labelWidth
192
103
  } : undefined;
193
104
  return (0, _jsxRuntime.jsx)(_ProForm.ProForm, Object.assign({}, formProps, {
194
- initialValues: initialValues,
195
- onFinish: handleFinish,
196
- onReset: handleReset,
105
+ syncToUrlAsImportant: syncToUrlAsImportant,
106
+ formComponentType: "QueryFilter",
107
+ onFinishFailed: handleFinishFailed,
197
108
  submitter: false,
198
109
  children: (0, _jsxRuntime.jsxs)("div", {
199
110
  className: classes(),
200
- children: [visibleChildren.map(function (child, index) {
111
+ children: [childArray.map(function (child, index) {
112
+ var hiddenByCollapse = collapsed && index >= defaultColsNumber;
201
113
  return (0, _jsxRuntime.jsxs)(_react["default"].Fragment, {
202
- children: [split && index > 0 && (0, _jsxRuntime.jsx)("div", {
114
+ children: [split && index > 0 && !hiddenByCollapse && (0, _jsxRuntime.jsx)("div", {
203
115
  className: classes('split')
204
- }), labelStyle ? (0, _jsxRuntime.jsx)("div", {
205
- style: labelStyle,
116
+ }), (0, _jsxRuntime.jsx)("div", {
117
+ style: hiddenByCollapse ? HIDDEN_STYLE : labelStyle !== null && labelStyle !== void 0 ? labelStyle : CONTENTS_STYLE,
206
118
  children: child
207
- }) : child]
119
+ })]
208
120
  }, index);
209
121
  }), (0, _jsxRuntime.jsxs)("div", {
210
122
  className: classes('actions'),
@@ -214,10 +126,9 @@ var QueryFilterBase = function QueryFilterBase(props) {
214
126
  size: buttonSize,
215
127
  children: searchText
216
128
  }), (0, _jsxRuntime.jsx)(_Button.Button, {
217
- type: "button",
129
+ type: "reset",
218
130
  color: "secondary",
219
131
  size: buttonSize,
220
- onClick: handleReset,
221
132
  children: resetText
222
133
  }), hasMore && (0, _jsxRuntime.jsx)(_Button.Button, {
223
134
  type: "button",
@@ -234,4 +145,4 @@ QueryFilterBase.displayName = 'QueryFilter';
234
145
  /** Generic-aware export — keeps `<QueryFilter<MyValues> …>` fully typed. */
235
146
  var QueryFilter = exports.QueryFilter = /*#__PURE__*/(0, _react.memo)(QueryFilterBase);
236
147
  var _default = exports["default"] = QueryFilter;
237
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl9jbGFzc25hbWVzIiwiX0J1dHRvbiIsIl9Qcm9Gb3JtIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiZ2V0VXJsUGFyYW1zIiwid2luZG93IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJzZWFyY2giLCJmb3JFYWNoIiwidiIsImsiLCJzZXRVcmxQYXJhbXMiLCJtYW5hZ2VkS2V5cyIsIlNldCIsInNwIiwid3JpdHRlbiIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsInVuZGVmaW5lZCIsIlN0cmluZyIsImFkZCIsInRvU3RyaW5nIiwidXJsIiwicGF0aG5hbWUiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJzeW5jVG9VcmwiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9wcm9wcyRzdWJtaXR0ZXIiLCJzdWJtaXR0ZXIiLCJpbml0aWFsVmFsdWVzUHJvcCIsImluaXRpYWxWYWx1ZXMiLCJmb3JtUHJvcHMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJzZXRDb2xsYXBzZWQiLCJ1cmxQYXJhbXNBdE1vdW50UmVmIiwidXNlUmVmIiwiY3VycmVudCIsIm1hbmFnZWRLZXlzUmVmIiwidXJsU2VlZGVkUmVmIiwidXNlTWVtbyIsInVybFBhcmFtcyIsImZyb21VcmwiLCJrZXlzIiwiYXNzaWduIiwiaGFuZGxlU3luY1NldCIsInVzZU1lbW9pemVkRm4iLCJ2YWx1ZXMiLCJ0b1dyaXRlIiwidG9DbGVhciIsIl9pMiIsIl9PYmplY3QkZW50cmllczIiLCJfT2JqZWN0JGVudHJpZXMyJF9pIiwia2V5IiwidmFsdWUiLCJzZWVkZWQiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJoYW5kbGVGaW5pc2giLCJoYW5kbGVSZXNldCIsImhhbmRsZUNvbGxhcHNlIiwibmV4dCIsImNoaWxkQXJyYXkiLCJhcnIiLCJSZWFjdCIsIkNoaWxkcmVuIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsInB1c2giLCJ2aXNpYmxlQ2hpbGRyZW4iLCJzbGljZSIsImhhc01vcmUiLCJzZWFyY2hUZXh0IiwiREVGQVVMVF9URVhUIiwicmVzZXRUZXh0IiwicmVzZXQiLCJidXR0b25TaXplIiwic2l6ZSIsImxhYmVsU3R5bGUiLCJ3aWR0aCIsIl9qc3giLCJQcm9Gb3JtIiwiX2pzeHMiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsIkZyYWdtZW50Iiwic3R5bGUiLCJCdXR0b24iLCJ0eXBlIiwiY29sb3IiLCJvbkNsaWNrIiwidmFyaWFudCIsImV4cGFuZCIsImNvbGxhcHNlIiwiZGlzcGxheU5hbWUiLCJRdWVyeUZpbHRlciIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFBd0QsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFULHdCQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENB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QUFDLE1BQU07VUFBQ2YsSUFBSSxFQUFFRCxVQUFVO1VBQUVlLE9BQU8sRUFBRS9CLGNBQWM7VUFBQW5DLFFBQUEsRUFDM0VYLFNBQVMsR0FBRzJELHVCQUFZLENBQUNvQixNQUFNLEdBQUdwQix1QkFBWSxDQUFDcUI7UUFBUSxDQUFBLENBRTNEO01BQUEsQ0FBQSxDQUNHO0lBQUEsQ0FBQTtFQUNGLENBQUEsQ0FBQSxDQUNFO0FBRWQsQ0FBQztBQUVEdkYsZUFBZSxDQUFDd0YsV0FBVyxHQUFHLGFBQWE7QUFFM0M7QUFDTyxJQUFNQyxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUMzRixlQUFlLENBRUs7QUFBQyxJQUFBNEYsUUFBQSxHQUFBRixPQUFBLGNBRXRDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IFByb0Zvcm0gfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tcXVlcnktZmlsdGVyYCk7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVSTCBzeW5jIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZ2V0VXJsUGFyYW1zKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICBwYXJhbXNba10gPSB2O1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG59XG4vKipcbiAqIFdyaXRlIHRoZSBmaWx0ZXIgdmFsdWVzIGludG8gdGhlIFVSTCB3aGlsZSBQUkVTRVJWSU5HIHVucmVsYXRlZCBxdWVyeSBwYXJhbXNcbiAqIChlLmcuIGA/dGFiPS4uLmApLiBPbmx5IGtleXMgcHJldmlvdXNseSB3cml0dGVuIGJ5IHRoaXMgZmlsdGVyICh0cmFja2VkIGluXG4gKiBgbWFuYWdlZEtleXNgKSBhcmUgY2xlYXJlZCBiZWZvcmUgd3JpdGluZywgc28gcmVzZXQgcmVtb3ZlcyBleGFjdGx5IHdoYXQgdGhlXG4gKiBmaWx0ZXIgYWRkZWQuIFJldHVybnMgdGhlIG5ldyBzZXQgb2YgbWFuYWdlZCBrZXlzLlxuICovXG5mdW5jdGlvbiBzZXRVcmxQYXJhbXMocGFyYW1zLCBtYW5hZ2VkS2V5cykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQobWFuYWdlZEtleXMpO1xuICAgIGNvbnN0IHNwID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBtYW5hZ2VkS2V5cy5mb3JFYWNoKChrKSA9PiBzcC5kZWxldGUoaykpO1xuICAgIGNvbnN0IHdyaXR0ZW4gPSBuZXcgU2V0KCk7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuICAgICAgICBpZiAodiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycpIHtcbiAgICAgICAgICAgIHNwLnNldChrLCBTdHJpbmcodikpO1xuICAgICAgICAgICAgd3JpdHRlbi5hZGQoayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoID0gc3AudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBzZWFyY2ggPyBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9PyR7c2VhcmNofWAgOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCB1cmwpO1xuICAgIHJldHVybiB3cml0dGVuO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBRdWVyeUZpbHRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBRdWVyeUZpbHRlckJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgZGVmYXVsdENvbGxhcHNlZCA9IHRydWUsIGNvbGxhcHNlZDogY29udHJvbGxlZENvbGxhcHNlZCwgb25Db2xsYXBzZSwgZGVmYXVsdENvbHNOdW1iZXIgPSAzLCBsYWJlbFdpZHRoLCBzcGxpdCA9IGZhbHNlLCBzZWFyY2hDb25maWcsIHN5bmNUb1VybCwgb25GaW5pc2gsIG9uUmVzZXQsIGNoaWxkcmVuLCBzdWJtaXR0ZXIgPSBmYWxzZSwgaW5pdGlhbFZhbHVlczogaW5pdGlhbFZhbHVlc1Byb3AgfSA9IHByb3BzLCBmb3JtUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImRlZmF1bHRDb2xsYXBzZWRcIiwgXCJjb2xsYXBzZWRcIiwgXCJvbkNvbGxhcHNlXCIsIFwiZGVmYXVsdENvbHNOdW1iZXJcIiwgXCJsYWJlbFdpZHRoXCIsIFwic3BsaXRcIiwgXCJzZWFyY2hDb25maWdcIiwgXCJzeW5jVG9VcmxcIiwgXCJvbkZpbmlzaFwiLCBcIm9uUmVzZXRcIiwgXCJjaGlsZHJlblwiLCBcInN1Ym1pdHRlclwiLCBcImluaXRpYWxWYWx1ZXNcIl0pO1xuICAgIGNvbnN0IFtjb2xsYXBzZWQsIHNldENvbGxhcHNlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENvbGxhcHNlZCwgY29udHJvbGxlZENvbGxhcHNlZCk7XG4gICAgLy8g4pSA4pSAIHN5bmNUb1VybDogbWVyZ2UgVVJMIHBhcmFtcyBpbnRvIGluaXRpYWwgdmFsdWVzIG9uIG1vdW50IOKUgOKUgFxuICAgIC8vIE9uZS10aW1lIHNuYXBzaG90IG9mIHRoZSBVUkwgcGFyYW1zIGF0IG1vdW50LiBMYXp5IHJlZiBpbml0IGlzIElERU1QT1RFTlQsXG4gICAgLy8gc28gaXQgaXMgc2FmZSB1bmRlciBTdHJpY3RNb2RlJ3MgZG91YmxlIHJlbmRlciAoYW4gaW1wdXJlIFwiZmlyc3QgcnVuXCIgZmxhZ1xuICAgIC8vIGluc2lkZSB1c2VNZW1vIHdvdWxkIHJldHVybiB0aGUgdW5tZXJnZWQgdmFsdWUgb24gdGhlIHJlcGxheSBpbnZvY2F0aW9uKS5cbiAgICBjb25zdCB1cmxQYXJhbXNBdE1vdW50UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmICh1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdXJsUGFyYW1zQXRNb3VudFJlZi5jdXJyZW50ID0gc3luY1RvVXJsID8gZ2V0VXJsUGFyYW1zKCkgOiB7fTtcbiAgICB9XG4gICAgLy8gS2V5cyB0aGlzIGZpbHRlciBoYXMgV1JJVFRFTiB0byB0aGUgVVJMIOKAlCB0aGUgb25seSBrZXlzIHN1Ym1pdC9yZXNldCBpc1xuICAgIC8vIGFsbG93ZWQgdG8gY2xlYXIuIFRoZSBmdW5jdGlvbiBmb3JtIG9mIHN5bmNUb1VybCBhbHNvIHNlZWRzIHRoaXMgZnJvbSBpdHNcbiAgICAvLyBmaWx0ZXJlZCAnZ2V0JyByZXN1bHQgKHRob3NlIGtleXMgYXJlIHRoZSBmaWx0ZXIncyBvd24gYnkgZGVmaW5pdGlvbikuXG4gICAgY29uc3QgbWFuYWdlZEtleXNSZWYgPSB1c2VSZWYobmV3IFNldCgpKTtcbiAgICAvLyBCb29sZWFuLW1vZGUgb25seTogVVJMIHBhcmFtcyBtZXJnZWQgaW50byBpbml0aWFsVmFsdWVzIGJ1dCBOT1QgeWV0XG4gICAgLy8gY2xhaW1lZC4gVGhlIGJvb2xlYW4gZm9ybSBjYW5ub3QgdGVsbCBpdHMgb3duIHBhcmFtcyBmcm9tIGZvcmVpZ24gb25lc1xuICAgIC8vICg/dGFiPeKApiksIHNvIGEgc2VlZGVkIGtleSBpcyBjbGFpbWVkIG9ubHkgb25jZSBpdHMgdmFsdWUgY2hhbmdlcyAob3IgaXRcbiAgICAvLyBkaXNhcHBlYXJzIGZyb20gdGhlIHN1Ym1pdHRlZCB2YWx1ZXMsIGkuZS4gdGhlIHVzZXIgY2xlYXJlZCB0aGUgZmllbGQpLlxuICAgIGNvbnN0IHVybFNlZWRlZFJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghc3luY1RvVXJsKVxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZXNQcm9wO1xuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSAoX2EgPSB1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgZnJvbVVybCA9IHN5bmNUb1VybCh1cmxQYXJhbXMsICdnZXQnKTtcbiAgICAgICAgICAgIC8vIElkZW1wb3RlbnQgcmVmIHdyaXRlcyDigJQgc2FtZSBpbnB1dCBvbiBldmVyeSBpbnZvY2F0aW9uLlxuICAgICAgICAgICAgbWFuYWdlZEtleXNSZWYuY3VycmVudCA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnJvbVVybCkpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCBmcm9tVXJsKTtcbiAgICAgICAgfVxuICAgICAgICB1cmxTZWVkZWRSZWYuY3VycmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVybFBhcmFtcyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXNQcm9wKSwgdXJsUGFyYW1zKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU3luY1NldCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIXN5bmNUb1VybClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHRvV3JpdGU7XG4gICAgICAgIGNvbnN0IHRvQ2xlYXIgPSBuZXcgU2V0KG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9Xcml0ZSA9IHN5bmNUb1VybCh2YWx1ZXMsICdzZXQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNraXAgVVJMLXNlZWRlZCBrZXlzIHdlIG5ldmVyIHdyb3RlIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlZCDigJQgdGhleVxuICAgICAgICAgICAgLy8gbWF5IGJlbG9uZyB0byBzb21lb25lIGVsc2UgKD90YWI94oCmKTsgbGVhdmUgdGhlbSBpbiB0aGUgVVJMIHVudG91Y2hlZC5cbiAgICAgICAgICAgIC8vIEEgc2VlZGVkIGtleSB3aG9zZSB2YWx1ZSBESUQgY2hhbmdlIGlzIGNsYWltZWQgZnJvbSBub3cgb24uXG4gICAgICAgICAgICB0b1dyaXRlID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VlZGVkID0gdXJsU2VlZGVkUmVmLmN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoc2VlZGVkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIW1hbmFnZWRLZXlzUmVmLmN1cnJlbnQuaGFzKGtleSkgJiZcbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHZhbHVlKSA9PT0gc2VlZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWxldGUgdXJsU2VlZGVkUmVmLmN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICB0b0NsZWFyLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIHRvV3JpdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2VlZGVkIGtleXMgbWlzc2luZyBmcm9tIHRoZSBzdWJtaXR0ZWQgdmFsdWVzIHdlcmUgY2xlYXJlZCBieSB0aGVcbiAgICAgICAgICAgIC8vIHVzZXIgKG9taXROaWwgc3RyaXBzIGVtcHR5IHZhbHVlcykg4oCUIGNsYWltIHRoZW0gYW5kIHJlbW92ZSB0aGVpclxuICAgICAgICAgICAgLy8gc3RhbGUgcGFyYW1zIGZyb20gdGhlIFVSTC5cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHVybFNlZWRlZFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiB2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB0b0NsZWFyLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtYW5hZ2VkS2V5c1JlZi5jdXJyZW50ID0gc2V0VXJsUGFyYW1zKHRvV3JpdGUsIHRvQ2xlYXIpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBoYW5kbGVTeW5jU2V0KHZhbHVlcyk7XG4gICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jVG9VcmwpIHtcbiAgICAgICAgICAgIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQgPSBzZXRVcmxQYXJhbXMoe30sIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNvbGxhcHNlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAhY29sbGFwc2VkO1xuICAgICAgICBzZXRDb2xsYXBzZWQobmV4dCk7XG4gICAgICAgIG9uQ29sbGFwc2UgPT09IG51bGwgfHwgb25Db2xsYXBzZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db2xsYXBzZShuZXh0KTtcbiAgICB9KTtcbiAgICAvLyBDb3VudCBjaGlsZHJlbiBhbmQgc3BsaXQgdmlzaWJsZS9oaWRkZW5cbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtjaGlsZHJlbl0pO1xuICAgIGNvbnN0IHZpc2libGVDaGlsZHJlbiA9IGNvbGxhcHNlZFxuICAgICAgICA/IGNoaWxkQXJyYXkuc2xpY2UoMCwgZGVmYXVsdENvbHNOdW1iZXIpXG4gICAgICAgIDogY2hpbGRBcnJheTtcbiAgICBjb25zdCBoYXNNb3JlID0gY2hpbGRBcnJheS5sZW5ndGggPiBkZWZhdWx0Q29sc051bWJlcjtcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gKF9hID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnNlYXJjaFRleHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IERFRkFVTFRfVEVYVC5zZWFyY2g7XG4gICAgY29uc3QgcmVzZXRUZXh0ID0gKF9iID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnJlc2V0VGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULnJlc2V0O1xuICAgIGNvbnN0IGJ1dHRvblNpemUgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2l6ZTtcbiAgICBjb25zdCBsYWJlbFN0eWxlID0gbGFiZWxXaWR0aCAhPT0gdW5kZWZpbmVkICYmIGxhYmVsV2lkdGggIT09ICdhdXRvJ1xuICAgICAgICA/IHsgd2lkdGg6IGxhYmVsV2lkdGggfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybVByb3BzLCB7IGluaXRpYWxWYWx1ZXM6IGluaXRpYWxWYWx1ZXMsIG9uRmluaXNoOiBoYW5kbGVGaW5pc2gsIG9uUmVzZXQ6IGhhbmRsZVJlc2V0LCBzdWJtaXR0ZXI6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFt2aXNpYmxlQ2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IChfanN4cyhSZWFjdC5GcmFnbWVudCwgeyBjaGlsZHJlbjogW3NwbGl0ICYmIGluZGV4ID4gMCAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzcGxpdCcpIH0pLCBsYWJlbFN0eWxlID8gKF9qc3goXCJkaXZcIiwgeyBzdHlsZTogbGFiZWxTdHlsZSwgY2hpbGRyZW46IGNoaWxkIH0pKSA6IChjaGlsZCldIH0sIGluZGV4KSkpLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgY2hpbGRyZW46IHNlYXJjaFRleHQgfSksIF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVSZXNldCwgY2hpbGRyZW46IHJlc2V0VGV4dCB9KSwgaGFzTW9yZSAmJiAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgdmFyaWFudDogXCJ0ZXh0XCIsIHNpemU6IGJ1dHRvblNpemUsIG9uQ2xpY2s6IGhhbmRsZUNvbGxhcHNlLCBjaGlsZHJlbjogY29sbGFwc2VkID8gREVGQVVMVF9URVhULmV4cGFuZCA6IERFRkFVTFRfVEVYVC5jb2xsYXBzZSB9KSldIH0pXSB9KSB9KSkpO1xufTtcblF1ZXJ5RmlsdGVyQmFzZS5kaXNwbGF5TmFtZSA9ICdRdWVyeUZpbHRlcic7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8UXVlcnlGaWx0ZXI8TXlWYWx1ZXM+IOKApj5gIGZ1bGx5IHR5cGVkLiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RmlsdGVyID0gbWVtbyhRdWVyeUZpbHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUXVlcnlGaWx0ZXI7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
148
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl9jbGFzc25hbWVzIiwiX0J1dHRvbiIsIl9Qcm9Gb3JtIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiSElEREVOX1NUWUxFIiwiZGlzcGxheSIsIkNPTlRFTlRTX1NUWUxFIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJfcHJvcHMkc3luY1RvVXJsQXNJbXAiLCJzeW5jVG9VcmxBc0ltcG9ydGFudCIsImNoaWxkcmVuIiwib25GaW5pc2hGYWlsZWQiLCJfc3VibWl0dGVyIiwic3VibWl0dGVyIiwiZm9ybVByb3BzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0Q29sbGFwc2VkIiwiaGFuZGxlQ29sbGFwc2UiLCJ1c2VNZW1vaXplZEZuIiwibmV4dCIsImhhbmRsZUZpbmlzaEZhaWxlZCIsImVycm9ySW5mbyIsIm92ZXJmbG93SGFzRXJyb3IiLCJSZWFjdCIsIkNoaWxkcmVuIiwidG9BcnJheSIsInNsaWNlIiwic29tZSIsImNoaWxkIiwiaXNWYWxpZEVsZW1lbnQiLCJjaGlsZE5hbWUiLCJuYW1lIiwidW5kZWZpbmVkIiwiZXJyb3JzIiwiY2hpbGRBcnJheSIsInVzZU1lbW8iLCJhcnIiLCJmb3JFYWNoIiwicHVzaCIsImhhc01vcmUiLCJzZWFyY2hUZXh0IiwiREVGQVVMVF9URVhUIiwic2VhcmNoIiwicmVzZXRUZXh0IiwicmVzZXQiLCJidXR0b25TaXplIiwic2l6ZSIsImxhYmVsU3R5bGUiLCJ3aWR0aCIsIl9qc3giLCJQcm9Gb3JtIiwiYXNzaWduIiwiZm9ybUNvbXBvbmVudFR5cGUiLCJfanN4cyIsImNsYXNzTmFtZSIsIm1hcCIsImluZGV4IiwiaGlkZGVuQnlDb2xsYXBzZSIsIkZyYWdtZW50Iiwic3R5bGUiLCJCdXR0b24iLCJ0eXBlIiwiY29sb3IiLCJ2YXJpYW50Iiwib25DbGljayIsImV4cGFuZCIsImNvbGxhcHNlIiwiZGlzcGxheU5hbWUiLCJRdWVyeUZpbHRlciIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FB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eEIsdUJBQVksQ0FBQ3lCO1FBQVEsQ0FBQSxDQUUzRDtNQUFBLENBQUEsQ0FDRztJQUFBLENBQUE7RUFDRixDQUFBLENBQUEsQ0FDRTtBQUVkLENBQUM7QUFFRDVFLGVBQWUsQ0FBQzZFLFdBQVcsR0FBRyxhQUFhO0FBRTNDO0FBQ08sSUFBTUMsV0FBVyxHQUFBQyxPQUFBLENBQUFELFdBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDaEYsZUFBZSxDQUVLO0FBQUMsSUFBQWlGLFFBQUEsR0FBQUYsT0FBQSxjQUV0Q0QsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgUHJvRm9ybSB9IGZyb20gJy4uL1Byb0Zvcm0nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1xdWVyeS1maWx0ZXJgKTtcbmNvbnN0IEhJRERFTl9TVFlMRSA9IHsgZGlzcGxheTogJ25vbmUnIH07XG4vLyBLZWVwcyB0aGUgd3JhcHBlciBsYXlvdXQtbmV1dHJhbDogdGhlIGZpZWxkIHN0YXlzIGEgZGlyZWN0IGZsZXggaXRlbS5cbmNvbnN0IENPTlRFTlRTX1NUWUxFID0geyBkaXNwbGF5OiAnY29udGVudHMnIH07XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5RmlsdGVyIOKAlCBhIGNvbXBhY3QgZmlsdGVyIGJhciBvbiB0b3Agb2YgUHJvRm9ybS5cbi8vXG4vLyBVUkwgc3luY2hyb25pemF0aW9uIGlzIGhhbmRsZWQgYnkgUHJvRm9ybSBpdHNlbGYgKGBzeW5jVG9VcmxgKTsgUXVlcnlGaWx0ZXJcbi8vIG9ubHkgZmxpcHMgdGhlIGRlZmF1bHQgb2YgYHN5bmNUb1VybEFzSW1wb3J0YW50YCB0byB0cnVlOiBhIGZpbHRlcidzIHJlYXNvblxuLy8gdG8gc3luYyBpcyByZXN0b3Jpbmcgc3RhdGUgZnJvbSB0aGUgVVJMIG9uIHJlZnJlc2gsIHNvIFVSTCBwYXJhbXMgd2luIG92ZXJcbi8vIGBpbml0aWFsVmFsdWVzYCBoZXJlIChwbGFpbiBQcm9Gb3JtIGtlZXBzIHRoZSBvcHBvc2l0ZSBkZWZhdWx0KS5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgUXVlcnlGaWx0ZXJCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IGRlZmF1bHRDb2xsYXBzZWQgPSB0cnVlLCBjb2xsYXBzZWQ6IGNvbnRyb2xsZWRDb2xsYXBzZWQsIG9uQ29sbGFwc2UsIGRlZmF1bHRDb2xzTnVtYmVyID0gMywgbGFiZWxXaWR0aCwgc3BsaXQgPSBmYWxzZSwgc2VhcmNoQ29uZmlnLCBzeW5jVG9VcmxBc0ltcG9ydGFudCA9IHRydWUsIGNoaWxkcmVuLCBvbkZpbmlzaEZhaWxlZCwgXG4gICAgLy8gUXVlcnlGaWx0ZXIgYWx3YXlzIHJlbmRlcnMgaXRzIG93biBTZWFyY2gvUmVzZXQvRXhwYW5kIGJ1dHRvbnMuXG4gICAgc3VibWl0dGVyOiBfc3VibWl0dGVyIH0gPSBwcm9wcywgZm9ybVByb3BzID0gX19yZXN0KHByb3BzLCBbXCJkZWZhdWx0Q29sbGFwc2VkXCIsIFwiY29sbGFwc2VkXCIsIFwib25Db2xsYXBzZVwiLCBcImRlZmF1bHRDb2xzTnVtYmVyXCIsIFwibGFiZWxXaWR0aFwiLCBcInNwbGl0XCIsIFwic2VhcmNoQ29uZmlnXCIsIFwic3luY1RvVXJsQXNJbXBvcnRhbnRcIiwgXCJjaGlsZHJlblwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwic3VibWl0dGVyXCJdKTtcbiAgICBjb25zdCBbY29sbGFwc2VkLCBzZXRDb2xsYXBzZWRdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRDb2xsYXBzZWQsIGNvbnRyb2xsZWRDb2xsYXBzZWQpO1xuICAgIGNvbnN0IGhhbmRsZUNvbGxhcHNlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAhY29sbGFwc2VkO1xuICAgICAgICBzZXRDb2xsYXBzZWQobmV4dCk7XG4gICAgICAgIG9uQ29sbGFwc2UgPT09IG51bGwgfHwgb25Db2xsYXBzZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db2xsYXBzZShuZXh0KTtcbiAgICB9KTtcbiAgICAvLyBBIGNvbGxhcHNlZCAoZGlzcGxheTpub25lKSBmaWVsZCBmYWlsaW5nIHZhbGlkYXRpb24gd291bGQgYmxvY2sgU2VhcmNoXG4gICAgLy8gd2l0aCBhbiBJTlZJU0lCTEUgZXJyb3Ig4oCUIGF1dG8tZXhwYW5kIHNvIHRoZSB1c2VyIGNhbiBzZWUgYW5kIGZpeCBpdC5cbiAgICBjb25zdCBoYW5kbGVGaW5pc2hGYWlsZWQgPSB1c2VNZW1vaXplZEZuKChlcnJvckluZm8pID0+IHtcbiAgICAgICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dIYXNFcnJvciA9IFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pXG4gICAgICAgICAgICAgICAgLnNsaWNlKGRlZmF1bHRDb2xzTnVtYmVyKVxuICAgICAgICAgICAgICAgIC5zb21lKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGROYW1lID0gY2hpbGQucHJvcHMubmFtZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGROYW1lICE9PSB1bmRlZmluZWQgJiYgZXJyb3JJbmZvLmVycm9yc1tjaGlsZE5hbWVdICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvdmVyZmxvd0hhc0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgc2V0Q29sbGFwc2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBvbkNvbGxhcHNlID09PSBudWxsIHx8IG9uQ29sbGFwc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29sbGFwc2UoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZChlcnJvckluZm8pO1xuICAgIH0pO1xuICAgIC8vIENvdW50IGNoaWxkcmVuIGFuZCBzcGxpdCB2aXNpYmxlL2hpZGRlblxuICAgIGNvbnN0IGNoaWxkQXJyYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICAgICAgICAgIGFyci5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW2NoaWxkcmVuXSk7XG4gICAgY29uc3QgaGFzTW9yZSA9IGNoaWxkQXJyYXkubGVuZ3RoID4gZGVmYXVsdENvbHNOdW1iZXI7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IChfYSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zZWFyY2hUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBERUZBVUxUX1RFWFQuc2VhcmNoO1xuICAgIGNvbnN0IHJlc2V0VGV4dCA9IChfYiA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5yZXNldFRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5yZXNldDtcbiAgICBjb25zdCBidXR0b25TaXplID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnNpemU7XG4gICAgY29uc3QgbGFiZWxTdHlsZSA9IGxhYmVsV2lkdGggIT09IHVuZGVmaW5lZCAmJiBsYWJlbFdpZHRoICE9PSAnYXV0bydcbiAgICAgICAgPyB7IHdpZHRoOiBsYWJlbFdpZHRoIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4KFByb0Zvcm0sIE9iamVjdC5hc3NpZ24oe30sIGZvcm1Qcm9wcywgeyBzeW5jVG9VcmxBc0ltcG9ydGFudDogc3luY1RvVXJsQXNJbXBvcnRhbnQsIGZvcm1Db21wb25lbnRUeXBlOiBcIlF1ZXJ5RmlsdGVyXCIsIG9uRmluaXNoRmFpbGVkOiBoYW5kbGVGaW5pc2hGYWlsZWQsIHN1Ym1pdHRlcjogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygpLCBjaGlsZHJlbjogW2NoaWxkQXJyYXkubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGlkZGVuQnlDb2xsYXBzZSA9IGNvbGxhcHNlZCAmJiBpbmRleCA+PSBkZWZhdWx0Q29sc051bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4cyhSZWFjdC5GcmFnbWVudCwgeyBjaGlsZHJlbjogW3NwbGl0ICYmIGluZGV4ID4gMCAmJiAhaGlkZGVuQnlDb2xsYXBzZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzcGxpdCcpIH0pLCBfanN4KFwiZGl2XCIsIHsgc3R5bGU6IGhpZGRlbkJ5Q29sbGFwc2UgPyBISURERU5fU1RZTEUgOiAobGFiZWxTdHlsZSAhPT0gbnVsbCAmJiBsYWJlbFN0eWxlICE9PSB2b2lkIDAgPyBsYWJlbFN0eWxlIDogQ09OVEVOVFNfU1RZTEUpLCBjaGlsZHJlbjogY2hpbGQgfSldIH0sIGluZGV4KSk7XG4gICAgICAgICAgICAgICAgfSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb25zJyksIGNoaWxkcmVuOiBbX2pzeChCdXR0b24sIHsgdHlwZTogXCJzdWJtaXRcIiwgY29sb3I6IFwicHJpbWFyeVwiLCBzaXplOiBidXR0b25TaXplLCBjaGlsZHJlbjogc2VhcmNoVGV4dCB9KSwgX2pzeChCdXR0b24sIHsgdHlwZTogXCJyZXNldFwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgY2hpbGRyZW46IHJlc2V0VGV4dCB9KSwgaGFzTW9yZSAmJiAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgdmFyaWFudDogXCJ0ZXh0XCIsIHNpemU6IGJ1dHRvblNpemUsIG9uQ2xpY2s6IGhhbmRsZUNvbGxhcHNlLCBjaGlsZHJlbjogY29sbGFwc2VkID8gREVGQVVMVF9URVhULmV4cGFuZCA6IERFRkFVTFRfVEVYVC5jb2xsYXBzZSB9KSldIH0pXSB9KSB9KSkpO1xufTtcblF1ZXJ5RmlsdGVyQmFzZS5kaXNwbGF5TmFtZSA9ICdRdWVyeUZpbHRlcic7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8UXVlcnlGaWx0ZXI8TXlWYWx1ZXM+IOKApj5gIGZ1bGx5IHR5cGVkLiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RmlsdGVyID0gbWVtbyhRdWVyeUZpbHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUXVlcnlGaWx0ZXI7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -9,9 +9,9 @@ interface UseOverlayFormOptions {
9
9
  interface UseOverlayFormReturn {
10
10
  mergedOpen: boolean;
11
11
  triggerNode: ReactElement | null;
12
- handleFinish: (values: Record<string, unknown>) => Promise<void>;
12
+ handleFinish: (values: Record<string, unknown>) => Promise<void | boolean>;
13
13
  handleHide: () => void;
14
14
  handleShow: () => void;
15
15
  }
16
- export declare function useOverlayForm(options: UseOverlayFormOptions, onFinish?: (values: Record<string, unknown>) => void | Promise<void>): UseOverlayFormReturn;
16
+ export declare function useOverlayForm(options: UseOverlayFormOptions, onFinish?: (values: Record<string, unknown>) => void | boolean | Promise<void | boolean>): UseOverlayFormReturn;
17
17
  export default useOverlayForm;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -8,10 +9,12 @@ exports["default"] = void 0;
8
9
  exports.useOverlayForm = useOverlayForm;
9
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
- var _react = _interopRequireDefault(require("react"));
12
+ var _react = _interopRequireWildcard(require("react"));
12
13
  var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
13
14
  var _useDebouncedCallback2 = _interopRequireDefault(require("@1money/hooks/useDebouncedCallback"));
14
15
  var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
15
18
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
16
19
  function adopt(value) {
17
20
  return value instanceof P ? value : new P(function (resolve) {
@@ -53,18 +56,30 @@ function useOverlayForm(options, onFinish) {
53
56
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
54
57
  mergedOpen = _useControlledState2[0],
55
58
  setMergedOpen = _useControlledState2[1];
59
+ // Session generation — every open-state change starts a new session, so a
60
+ // STALE in-flight submit (started in a previous session) can't auto-close
61
+ // the overlay the user has since closed and reopened.
62
+ var sessionRef = (0, _react.useRef)(0);
56
63
  var setOpen = (0, _useEventCallback["default"])(function (nextOpen) {
64
+ sessionRef.current += 1;
57
65
  setMergedOpen(nextOpen);
58
66
  onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
59
67
  });
60
- // Deferred auto-close after submit. `cancel` clears any pending close (e.g.
61
- // when the overlay is hidden first); the timer is also auto-cancelled on
68
+ // Deferred auto-close after submit. The fire-time session check makes a
69
+ // STALE timer (scheduled in a previous open/close session) a no-op;
70
+ // `cancel` clears any pending close and the timer also auto-cancels on
62
71
  // unmount.
63
- var _useDebouncedCallback = (0, _useDebouncedCallback2["default"])(function () {
64
- return setOpen(false);
72
+ var _useDebouncedCallback = (0, _useDebouncedCallback2["default"])(function (session) {
73
+ if (session === sessionRef.current) setOpen(false);
65
74
  }, submitTimeout),
66
75
  scheduleClose = _useDebouncedCallback.run,
67
76
  cancelScheduledClose = _useDebouncedCallback.cancel;
77
+ // Any open-state transition — including CONTROLLED `open` prop flips that
78
+ // bypass setOpen — starts a new session and discards a pending close.
79
+ (0, _react.useEffect)(function () {
80
+ sessionRef.current += 1;
81
+ cancelScheduledClose();
82
+ }, [mergedOpen, cancelScheduledClose]);
68
83
  var handleShow = (0, _useEventCallback["default"])(function () {
69
84
  setOpen(true);
70
85
  });
@@ -72,21 +87,28 @@ function useOverlayForm(options, onFinish) {
72
87
  cancelScheduledClose();
73
88
  setOpen(false);
74
89
  });
90
+ // Propagate the consumer's return value — ProForm gates URL sync on it,
91
+ // and autoClose honors it too: an explicit `false` means the submit FAILED,
92
+ // so the overlay stays open instead of discarding the user's input.
75
93
  var handleFinish = (0, _useEventCallback["default"])(function (values) {
76
94
  return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
95
+ var session, result;
77
96
  return _regenerator["default"].wrap(function (_context) {
78
97
  while (1) switch (_context.prev = _context.next) {
79
98
  case 0:
99
+ session = sessionRef.current;
80
100
  _context.next = 1;
81
101
  return onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
82
102
  case 1:
83
- if (autoClose) {
103
+ result = _context.sent;
104
+ if (autoClose && result !== false && session === sessionRef.current) {
84
105
  if (submitTimeout && submitTimeout > 0) {
85
- scheduleClose();
106
+ scheduleClose(session);
86
107
  } else {
87
108
  setOpen(false);
88
109
  }
89
110
  }
111
+ return _context.abrupt("return", result);
90
112
  case 2:
91
113
  case "end":
92
114
  return _context.stop();
@@ -114,4 +136,4 @@ function useOverlayForm(options, onFinish) {
114
136
  };
115
137
  }
116
138
  var _default = exports["default"] = useOverlayForm;
117
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0udHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX3VzZURlYm91bmNlZENhbGxiYWNrMiIsIl91c2VFdmVudENhbGxiYWNrIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlT3ZlcmxheUZvcm0iLCJvcHRpb25zIiwib25GaW5pc2giLCJfdGhpcyIsImNvbnRyb2xsZWRPcGVuIiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInRyaWdnZXIiLCJfb3B0aW9ucyRhdXRvQ2xvc2UiLCJhdXRvQ2xvc2UiLCJzdWJtaXRUaW1lb3V0IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwibWVyZ2VkT3BlbiIsInNldE1lcmdlZE9wZW4iLCJzZXRPcGVuIiwidXNlRXZlbnRDYWxsYmFjayIsIm5leHRPcGVuIiwiX3VzZURlYm91bmNlZENhbGxiYWNrIiwidXNlRGVib3VuY2VkQ2FsbGJhY2siLCJzY2hlZHVsZUNsb3NlIiwicnVuIiwiY2FuY2VsU2NoZWR1bGVkQ2xvc2UiLCJjYW5jZWwiLCJoYW5kbGVTaG93IiwiaGFuZGxlSGlkZSIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsInN0b3AiLCJ0cmlnZ2VyTm9kZSIsIlJlYWN0IiwiY2xvbmVFbGVtZW50Iiwib25DbGljayIsIl9hIiwib3JpZ2luYWxPbkNsaWNrIiwicHJvcHMiLCJhcmd1bWVudHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxvQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsc0JBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUNKQSxJQUFJSSxTQUFTLEdBQUksVUFBUSxTQUFLQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFDUixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFD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QUlwQixTQUFTLEVBQUU7Y0FDYixJQUFJQyxhQUFhLElBQUlBLGFBQWEsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RDWSxhQUFhLENBQUEsQ0FBRTtjQUNqQixDQUFDLE1BQU07Z0JBQ0xMLE9BQU8sQ0FBQyxLQUFLLENBQUM7Y0FDaEI7WUFDRjtVQUFDO1VBQUE7WUFBQSxPQUFBaUIsUUFBQSxDQUFBRSxJQUFBO1FBQUE7TUFBQSxHQUFBSixPQUFBO0lBQUEsQ0FDRixFQUFBO0VBQUEsRUFBQztFQUVGO0VBQ0EsSUFBTUssV0FBVyxHQUFHOUIsT0FBTyxnQkFDdkIrQixpQkFBSyxDQUFDQyxZQUFZLENBQUNoQyxPQUFzRCxFQUFFO0lBQ3pFaUMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBeUI7TUMzQnhCLElBQUlDLEVBQUU7TUQ0QlpmLFVBQVUsQ0FBQSxDQUFFO01BQ1osSUFBTWdCLGVBQWUsR0FBRyxDQUFBRCxFQUFBLEdBQUNsQyxPQUFPLENBQUNvQyxLQUFpQyxNQUFBLElBQUEsSUFBQUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVELE9BQU87TUFDM0UsSUFBSSxPQUFPRSxlQUFlLEtBQUssVUFBVSxFQUFFO1FBQ3hDQSxlQUE2QyxDQUFBM0MsS0FBQSxTQUFBNkMsU0FBUSxDQUFDO01BQ3pEO0lBQ0Y7RUMxQkEsQ0QyQkQsQ0FBQyxHQUNGLElBQUk7RUFFUixPQUFPO0lBQ0w3QixVQUFVLEVBQVZBLFVBQVU7SUFDVnNCLFdBQVcsRUFBWEEsV0FBVztJQUNYVCxZQUFZLEVBQVpBLFlBQVk7SUFDWkQsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZELFVBQVUsRUFBVkE7RUMzQkEsQ0Q0QkQ7QUFDSDtBQUFDLElBQUFtQixRQUFBLEdBQUFDLE9BQUEsY0FFYzlDLGNBQWMiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZURlYm91bmNlZENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRGVib3VuY2VkQ2FsbGJhY2snO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybShvcHRpb25zLCBvbkZpbmlzaCkge1xuICAgIGNvbnN0IHsgb3BlbjogY29udHJvbGxlZE9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlID0gdHJ1ZSwgc3VibWl0VGltZW91dCwgfSA9IG9wdGlvbnM7XG4gICAgLy8gQ29udHJvbGxlZCB3aGVuIGBjb250cm9sbGVkT3BlbmAgaXMgcGFzc2VkLCBpbnRlcm5hbCBvdGhlcndpc2Ug4oCUIGFuZCBhbHdheXNcbiAgICAvLyBmb3J3YXJkIHRoZSBjaGFuZ2UgdG8gYG9uT3BlbkNoYW5nZWAuXG4gICAgY29uc3QgW21lcmdlZE9wZW4sIHNldE1lcmdlZE9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGZhbHNlLCBjb250cm9sbGVkT3Blbik7XG4gICAgY29uc3Qgc2V0T3BlbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIHNldE1lcmdlZE9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0pO1xuICAgIC8vIERlZmVycmVkIGF1dG8tY2xvc2UgYWZ0ZXIgc3VibWl0LiBgY2FuY2VsYCBjbGVhcnMgYW55IHBlbmRpbmcgY2xvc2UgKGUuZy5cbiAgICAvLyB3aGVuIHRoZSBvdmVybGF5IGlzIGhpZGRlbiBmaXJzdCk7IHRoZSB0aW1lciBpcyBhbHNvIGF1dG8tY2FuY2VsbGVkIG9uXG4gICAgLy8gdW5tb3VudC5cbiAgICBjb25zdCB7IHJ1bjogc2NoZWR1bGVDbG9zZSwgY2FuY2VsOiBjYW5jZWxTY2hlZHVsZWRDbG9zZSB9ID0gdXNlRGVib3VuY2VkQ2FsbGJhY2soKCkgPT4gc2V0T3BlbihmYWxzZSksIHN1Ym1pdFRpbWVvdXQpO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlcykgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB5aWVsZCAob25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcykpO1xuICAgICAgICBpZiAoYXV0b0Nsb3NlKSB7XG4gICAgICAgICAgICBpZiAoc3VibWl0VGltZW91dCAmJiBzdWJtaXRUaW1lb3V0ID4gMCkge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlQ2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIENsb25lIHRyaWdnZXIgd2l0aCBvbkNsaWNrIGhhbmRsZXJcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHRyaWdnZXJcbiAgICAgICAgPyBSZWFjdC5jbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxPbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT25DbGljayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkT3BlbixcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgaGFuZGxlU2hvdyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlT3ZlcmxheUZvcm07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
139
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0udHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlRGVib3VuY2VkQ2FsbGJhY2syIiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsInVzZU92ZXJsYXlGb3JtIiwib3B0aW9ucyIsIm9uRmluaXNoIiwiX3RoaXMiLCJjb250cm9sbGVkT3BlbiIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJ0cmlnZ2VyIiwiX29wdGlvbnMkYXV0b0Nsb3NlIiwiYXV0b0Nsb3NlIiwic3VibWl0VGltZW91dCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsIm1lcmdlZE9wZW4iLCJzZXRNZXJnZWRPcGVuIiwic2Vzc2lvblJlZiIsInVzZVJlZiIsInNldE9wZW4iLCJ1c2VFdmVudENhbGxiYWNrIiwibmV4dE9wZW4iLCJjdXJyZW50IiwiX3VzZURlYm91bmNlZENhbGxiYWNrIiwidXNlRGVib3VuY2VkQ2FsbGJhY2siLCJzZXNzaW9uIiwic2NoZWR1bGVDbG9zZSIsInJ1biIsImNhbmNlbFNjaGVkdWxlZENsb3NlIiwiY2FuY2VsIiwidXNlRWZmZWN0IiwiaGFuZGxlU2hvdyIsImhhbmRsZUhpZGUiLCJoYW5kbGVGaW5pc2giLCJ2YWx1ZXMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzZW50IiwiYWJydXB0Iiwic3RvcCIsInRyaWdnZXJOb2RlIiwiUmVhY3QiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwiX2EiLCJvcmlnaW5hbE9uQ2xpY2siLCJwcm9wcyIsImFyZ3VtZW50cyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsc0JBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFBOEQsU0FBQUsseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FB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LFFBQUEsQ0FBQUcsTUFBQSxXQUNNOUMsTUFBTTtVQUFBO1VBQUE7WUFBQSxPQUFBMkMsUUFBQSxDQUFBSSxJQUFBO1FBQUE7TUFBQSxHQUFBTixPQUFBO0lBQUEsQ0FDZCxFQUFBO0VBQUEsRUFBQztFQUVGO0VBQ0EsSUFBTU8sV0FBVyxHQUFHckMsT0FBTyxnQkFDdkJzQyxpQkFBSyxDQUFDQyxZQUFZLENBQUN2QyxPQUFzRCxFQUFFO0lBQ3pFd0MsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBeUI7TUM1QnhCLElBQUlDLEVBQUU7TUQ2QlpqQixVQUFVLENBQUEsQ0FBRTtNQUNaLElBQU1rQixlQUFlLEdBQUcsQ0FBQUQsRUFBQSxHQUFDekMsT0FBTyxDQUFDMkMsS0FBaUMsTUFBQSxJQUFBLElBQUFGLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFRCxPQUFPO01BQzNFLElBQUksT0FBT0UsZUFBZSxLQUFLLFVBQVUsRUFBRTtRQUN4Q0EsZUFBNkMsQ0FBQWxELEtBQUEsU0FBQW9ELFNBQVEsQ0FBQztNQUN6RDtJQUNGO0VDM0JBLENENEJELENBQUMsR0FDRixJQUFJO0VBRVIsT0FBTztJQUNMcEMsVUFBVSxFQUFWQSxVQUFVO0lBQ1Y2QixXQUFXLEVBQVhBLFdBQVc7SUFDWFgsWUFBWSxFQUFaQSxZQUFZO0lBQ1pELFVBQVUsRUFBVkEsVUFBVTtJQUNWRCxVQUFVLEVBQVZBO0VDNUJBLENENkJEO0FBQ0g7QUFBQyxJQUFBcUIsUUFBQSxHQUFBQyxPQUFBLGNBRWNyRCxjQUFjIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZURlYm91bmNlZENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRGVib3VuY2VkQ2FsbGJhY2snO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybShvcHRpb25zLCBvbkZpbmlzaCkge1xuICAgIGNvbnN0IHsgb3BlbjogY29udHJvbGxlZE9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgYXV0b0Nsb3NlID0gdHJ1ZSwgc3VibWl0VGltZW91dCwgfSA9IG9wdGlvbnM7XG4gICAgLy8gQ29udHJvbGxlZCB3aGVuIGBjb250cm9sbGVkT3BlbmAgaXMgcGFzc2VkLCBpbnRlcm5hbCBvdGhlcndpc2Ug4oCUIGFuZCBhbHdheXNcbiAgICAvLyBmb3J3YXJkIHRoZSBjaGFuZ2UgdG8gYG9uT3BlbkNoYW5nZWAuXG4gICAgY29uc3QgW21lcmdlZE9wZW4sIHNldE1lcmdlZE9wZW5dID0gdXNlQ29udHJvbGxlZFN0YXRlKGZhbHNlLCBjb250cm9sbGVkT3Blbik7XG4gICAgLy8gU2Vzc2lvbiBnZW5lcmF0aW9uIOKAlCBldmVyeSBvcGVuLXN0YXRlIGNoYW5nZSBzdGFydHMgYSBuZXcgc2Vzc2lvbiwgc28gYVxuICAgIC8vIFNUQUxFIGluLWZsaWdodCBzdWJtaXQgKHN0YXJ0ZWQgaW4gYSBwcmV2aW91cyBzZXNzaW9uKSBjYW4ndCBhdXRvLWNsb3NlXG4gICAgLy8gdGhlIG92ZXJsYXkgdGhlIHVzZXIgaGFzIHNpbmNlIGNsb3NlZCBhbmQgcmVvcGVuZWQuXG4gICAgY29uc3Qgc2Vzc2lvblJlZiA9IHVzZVJlZigwKTtcbiAgICBjb25zdCBzZXRPcGVuID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dE9wZW4pID0+IHtcbiAgICAgICAgc2Vzc2lvblJlZi5jdXJyZW50ICs9IDE7XG4gICAgICAgIHNldE1lcmdlZE9wZW4obmV4dE9wZW4pO1xuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0pO1xuICAgIC8vIERlZmVycmVkIGF1dG8tY2xvc2UgYWZ0ZXIgc3VibWl0LiBUaGUgZmlyZS10aW1lIHNlc3Npb24gY2hlY2sgbWFrZXMgYVxuICAgIC8vIFNUQUxFIHRpbWVyIChzY2hlZHVsZWQgaW4gYSBwcmV2aW91cyBvcGVuL2Nsb3NlIHNlc3Npb24pIGEgbm8tb3A7XG4gICAgLy8gYGNhbmNlbGAgY2xlYXJzIGFueSBwZW5kaW5nIGNsb3NlIGFuZCB0aGUgdGltZXIgYWxzbyBhdXRvLWNhbmNlbHMgb25cbiAgICAvLyB1bm1vdW50LlxuICAgIGNvbnN0IHsgcnVuOiBzY2hlZHVsZUNsb3NlLCBjYW5jZWw6IGNhbmNlbFNjaGVkdWxlZENsb3NlIH0gPSB1c2VEZWJvdW5jZWRDYWxsYmFjaygoc2Vzc2lvbikgPT4ge1xuICAgICAgICBpZiAoc2Vzc2lvbiA9PT0gc2Vzc2lvblJlZi5jdXJyZW50KVxuICAgICAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgc3VibWl0VGltZW91dCk7XG4gICAgLy8gQW55IG9wZW4tc3RhdGUgdHJhbnNpdGlvbiDigJQgaW5jbHVkaW5nIENPTlRST0xMRUQgYG9wZW5gIHByb3AgZmxpcHMgdGhhdFxuICAgIC8vIGJ5cGFzcyBzZXRPcGVuIOKAlCBzdGFydHMgYSBuZXcgc2Vzc2lvbiBhbmQgZGlzY2FyZHMgYSBwZW5kaW5nIGNsb3NlLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNlc3Npb25SZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjYW5jZWxTY2hlZHVsZWRDbG9zZSgpO1xuICAgIH0sIFttZXJnZWRPcGVuLCBjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuICAgIGNvbnN0IGhhbmRsZVNob3cgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNhbmNlbFNjaGVkdWxlZENsb3NlKCk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIC8vIFByb3BhZ2F0ZSB0aGUgY29uc3VtZXIncyByZXR1cm4gdmFsdWUg4oCUIFByb0Zvcm0gZ2F0ZXMgVVJMIHN5bmMgb24gaXQsXG4gICAgLy8gYW5kIGF1dG9DbG9zZSBob25vcnMgaXQgdG9vOiBhbiBleHBsaWNpdCBgZmFsc2VgIG1lYW5zIHRoZSBzdWJtaXQgRkFJTEVELFxuICAgIC8vIHNvIHRoZSBvdmVybGF5IHN0YXlzIG9wZW4gaW5zdGVhZCBvZiBkaXNjYXJkaW5nIHRoZSB1c2VyJ3MgaW5wdXQuXG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWVzKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBzZXNzaW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIChvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsdWVzKSk7XG4gICAgICAgIGlmIChhdXRvQ2xvc2UgJiYgcmVzdWx0ICE9PSBmYWxzZSAmJiBzZXNzaW9uID09PSBzZXNzaW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmIChzdWJtaXRUaW1lb3V0ICYmIHN1Ym1pdFRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVDbG9zZShzZXNzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkpO1xuICAgIC8vIENsb25lIHRyaWdnZXIgd2l0aCBvbkNsaWNrIGhhbmRsZXJcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHRyaWdnZXJcbiAgICAgICAgPyBSZWFjdC5jbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxPbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsT25DbGljayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWVyZ2VkT3BlbixcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgaGFuZGxlU2hvdyxcbiAgICB9O1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlT3ZlcmxheUZvcm07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -25,14 +25,8 @@
25
25
  }
26
26
 
27
27
  .om-component-ui-form-item {
28
- margin-bottom: var(--om-spacing-300, 12px);
29
- }
30
- .om-component-ui-form-item-large {
31
28
  margin-bottom: var(--om-spacing-600, 24px);
32
29
  }
33
- .om-component-ui-form-item-small {
34
- margin-bottom: var(--om-spacing-200, 8px);
35
- }
36
30
 
37
31
  .om-component-ui-form-item-label-wrapper-vertical {
38
32
  margin-bottom: var(--om-spacing-200, 8px);