@1money/component-ui 0.0.70 → 0.0.71

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 (201) hide show
  1. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
  2. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
  3. package/es/business/Select/Network/NetworkSelect.js +2 -2
  4. package/es/components/Accordion/Accordion.js +3 -2
  5. package/es/components/Calendar/Calendar.js +3 -2
  6. package/es/components/Carousel/Carousel.js +3 -2
  7. package/es/components/Checkbox/BaseCheckbox.js +3 -2
  8. package/es/components/Checkbox/Checkbox.js +2 -2
  9. package/es/components/Checkbox/CheckboxGroup.js +3 -2
  10. package/es/components/CoachMark/CoachMark.js +3 -2
  11. package/es/components/Copy/Copy.js +2 -2
  12. package/es/components/Dialog/Dialog.js +2 -2
  13. package/es/components/Drawer/Drawer.js +2 -2
  14. package/es/components/Input/Amount/Amount.js +2 -2
  15. package/es/components/Input/Input/Input.js +3 -2
  16. package/es/components/Input/Mask/Mask.js +3 -2
  17. package/es/components/Input/OTP/OTP.js +3 -2
  18. package/es/components/Input/Password/Password.js +3 -2
  19. package/es/components/Input/Search/Search.js +3 -2
  20. package/es/components/Input/TextArea/TextArea.js +3 -2
  21. package/es/components/Input/Trade/Trade.js +2 -2
  22. package/es/components/Input/useAmountInput.js +4 -2
  23. package/es/components/Input/useSyncRef.js +2 -2
  24. package/es/components/Navigation/Nav.js +2 -2
  25. package/es/components/Navigation/Navigation.js +5 -2
  26. package/es/components/Pagination/Pagination.js +2 -2
  27. package/es/components/Pagination/usePagination.js +3 -2
  28. package/es/components/Popconfirm/Popconfirm.js +2 -2
  29. package/es/components/Portal/Portal.js +2 -2
  30. package/es/components/ProForm/ProForm.js +6 -3
  31. package/es/components/ProForm/ProFormGroup.js +2 -2
  32. package/es/components/ProForm/ProFormList.js +3 -2
  33. package/es/components/ProForm/Submitter.js +2 -2
  34. package/es/components/ProForm/core/constants.d.ts +6 -0
  35. package/es/components/ProForm/core/constants.js +7 -1
  36. package/es/components/ProForm/core/hooks/useForm.js +25 -195
  37. package/es/components/ProForm/core/hooks/useFormCore.js +14 -142
  38. package/es/components/ProForm/core/pathUtils.d.ts +6 -0
  39. package/es/components/ProForm/core/pathUtils.js +59 -0
  40. package/es/components/ProForm/core/runRules.d.ts +13 -0
  41. package/es/components/ProForm/core/runRules.js +186 -0
  42. package/es/components/ProForm/core/useFormItem.js +10 -28
  43. package/es/components/ProForm/fields/createProFormField.js +43 -57
  44. package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
  45. package/es/components/ProForm/layouts/QueryFilter.js +3 -2
  46. package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
  47. package/es/components/ProForm/utils.d.ts +2 -2
  48. package/es/components/ProForm/utils.js +5 -51
  49. package/es/components/ProTable/ProTable.js +3 -2
  50. package/es/components/ProTable/core/useAwaitableReload.js +3 -2
  51. package/es/components/ProTable/useFetchData.js +4 -2
  52. package/es/components/Radio/Radio.js +3 -2
  53. package/es/components/Radio/RadioGroup.js +3 -2
  54. package/es/components/ResizeObserver/useResizeObserver.js +2 -2
  55. package/es/components/Segment/Segment.js +4 -2
  56. package/es/components/Select/Select.js +3 -2
  57. package/es/components/Select/SelectCustom.js +2 -2
  58. package/es/components/Select/useSelectShell.js +3 -2
  59. package/es/components/Slider/Slider.js +3 -2
  60. package/es/components/Switch/Switch.js +3 -2
  61. package/es/components/Table/Table.js +14 -28
  62. package/es/components/Table/VirtualTable.js +18 -28
  63. package/es/components/Table/core/columnUtil.d.ts +9 -0
  64. package/es/components/Table/core/columnUtil.js +34 -0
  65. package/es/components/Table/core/useTableColumns.d.ts +4 -13
  66. package/es/components/Table/core/useTableColumns.js +55 -24
  67. package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
  68. package/es/components/Table/core/useTableDataPipeline.js +66 -73
  69. package/es/components/Table/core/useTableExpand.js +3 -2
  70. package/es/components/Table/core/useTableSelection.js +7 -4
  71. package/es/components/Table/core/useTableSetup.js +4 -2
  72. package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
  73. package/es/components/Table/features/ExpandTrigger.js +14 -8
  74. package/es/components/Table/features/FilterTrigger.js +21 -17
  75. package/es/components/Table/features/SelectionColumn.d.ts +11 -6
  76. package/es/components/Table/features/SelectionColumn.js +12 -5
  77. package/es/components/Table/features/SortTrigger.d.ts +4 -2
  78. package/es/components/Table/features/SortTrigger.js +8 -3
  79. package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
  80. package/es/components/Table/internal/kernel/Cell/index.js +2 -2
  81. package/es/components/Table/internal/kernel/Table.js +3 -3
  82. package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
  83. package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
  84. package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
  85. package/es/components/Table/renderers/HeaderCell.js +3 -2
  86. package/es/components/Table/renderers/TableShell.d.ts +13 -0
  87. package/es/components/Table/renderers/TableShell.js +25 -0
  88. package/es/components/Table/style/Table.css +3 -0
  89. package/es/components/Tabs/Tabs.js +4 -2
  90. package/es/components/Tooltip/Tooltip.js +3 -2
  91. package/es/components/Tour/Tour.js +3 -2
  92. package/es/components/Trigger/Trigger.js +3 -2
  93. package/es/components/Typography/Typography.js +2 -2
  94. package/es/components/Typography/useTypographyEnhancements.js +3 -2
  95. package/es/components/Upload/Upload.js +2 -2
  96. package/es/components/Upload/UploadFileBar.js +2 -2
  97. package/es/components/VirtualList/VirtualList.js +3 -2
  98. package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
  99. package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
  100. package/es/index.css +1 -1
  101. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
  102. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
  103. package/lib/business/Select/Network/NetworkSelect.js +3 -3
  104. package/lib/components/Accordion/Accordion.js +5 -4
  105. package/lib/components/Calendar/Calendar.js +6 -5
  106. package/lib/components/Carousel/Carousel.js +5 -4
  107. package/lib/components/Checkbox/BaseCheckbox.js +5 -4
  108. package/lib/components/Checkbox/Checkbox.js +3 -3
  109. package/lib/components/Checkbox/CheckboxGroup.js +7 -6
  110. package/lib/components/CoachMark/CoachMark.js +7 -6
  111. package/lib/components/Copy/Copy.js +3 -3
  112. package/lib/components/Dialog/Dialog.js +6 -6
  113. package/lib/components/Drawer/Drawer.js +10 -10
  114. package/lib/components/Input/Amount/Amount.js +6 -5
  115. package/lib/components/Input/Input/Input.js +7 -6
  116. package/lib/components/Input/Mask/Mask.js +9 -8
  117. package/lib/components/Input/OTP/OTP.js +9 -8
  118. package/lib/components/Input/Password/Password.js +6 -5
  119. package/lib/components/Input/Search/Search.js +8 -7
  120. package/lib/components/Input/TextArea/TextArea.js +5 -4
  121. package/lib/components/Input/Trade/Trade.js +5 -4
  122. package/lib/components/Input/useAmountInput.js +13 -11
  123. package/lib/components/Input/useSyncRef.js +4 -3
  124. package/lib/components/Navigation/Nav.js +3 -3
  125. package/lib/components/Navigation/Navigation.js +10 -7
  126. package/lib/components/Pagination/Pagination.js +4 -3
  127. package/lib/components/Pagination/usePagination.js +7 -6
  128. package/lib/components/Popconfirm/Popconfirm.js +3 -3
  129. package/lib/components/Portal/Portal.js +4 -4
  130. package/lib/components/ProForm/ProForm.js +14 -11
  131. package/lib/components/ProForm/ProFormGroup.js +3 -3
  132. package/lib/components/ProForm/ProFormList.js +10 -9
  133. package/lib/components/ProForm/Submitter.js +4 -4
  134. package/lib/components/ProForm/core/constants.d.ts +6 -0
  135. package/lib/components/ProForm/core/constants.js +8 -2
  136. package/lib/components/ProForm/core/hooks/useForm.js +36 -206
  137. package/lib/components/ProForm/core/hooks/useFormCore.js +32 -160
  138. package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
  139. package/lib/components/ProForm/core/pathUtils.js +68 -0
  140. package/lib/components/ProForm/core/runRules.d.ts +13 -0
  141. package/lib/components/ProForm/core/runRules.js +194 -0
  142. package/lib/components/ProForm/core/useFormItem.js +15 -33
  143. package/lib/components/ProForm/fields/createProFormField.js +42 -56
  144. package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
  145. package/lib/components/ProForm/layouts/QueryFilter.js +8 -7
  146. package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
  147. package/lib/components/ProForm/utils.d.ts +2 -2
  148. package/lib/components/ProForm/utils.js +20 -55
  149. package/lib/components/ProTable/ProTable.js +10 -9
  150. package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
  151. package/lib/components/ProTable/useFetchData.js +15 -13
  152. package/lib/components/Radio/Radio.js +6 -5
  153. package/lib/components/Radio/RadioGroup.js +5 -4
  154. package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
  155. package/lib/components/Segment/Segment.js +7 -5
  156. package/lib/components/Select/Select.js +23 -22
  157. package/lib/components/Select/SelectCustom.js +8 -8
  158. package/lib/components/Select/useSelectShell.js +5 -4
  159. package/lib/components/Slider/Slider.js +6 -5
  160. package/lib/components/Switch/Switch.js +5 -4
  161. package/lib/components/Table/Table.js +13 -27
  162. package/lib/components/Table/VirtualTable.js +17 -27
  163. package/lib/components/Table/core/columnUtil.d.ts +9 -0
  164. package/lib/components/Table/core/columnUtil.js +42 -0
  165. package/lib/components/Table/core/useTableColumns.d.ts +4 -13
  166. package/lib/components/Table/core/useTableColumns.js +57 -26
  167. package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
  168. package/lib/components/Table/core/useTableDataPipeline.js +73 -80
  169. package/lib/components/Table/core/useTableExpand.js +6 -5
  170. package/lib/components/Table/core/useTableSelection.js +13 -10
  171. package/lib/components/Table/core/useTableSetup.js +8 -5
  172. package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
  173. package/lib/components/Table/features/ExpandTrigger.js +14 -8
  174. package/lib/components/Table/features/FilterTrigger.js +21 -17
  175. package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
  176. package/lib/components/Table/features/SelectionColumn.js +12 -5
  177. package/lib/components/Table/features/SortTrigger.d.ts +4 -2
  178. package/lib/components/Table/features/SortTrigger.js +8 -3
  179. package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
  180. package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
  181. package/lib/components/Table/internal/kernel/Table.js +7 -6
  182. package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
  183. package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
  184. package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
  185. package/lib/components/Table/renderers/HeaderCell.js +3 -2
  186. package/lib/components/Table/renderers/TableShell.d.ts +13 -0
  187. package/lib/components/Table/renderers/TableShell.js +31 -0
  188. package/lib/components/Table/style/Table.css +3 -0
  189. package/lib/components/Tabs/Tabs.js +7 -5
  190. package/lib/components/Tooltip/Tooltip.js +5 -4
  191. package/lib/components/Tour/Tour.js +7 -6
  192. package/lib/components/Trigger/Trigger.js +5 -4
  193. package/lib/components/Typography/Typography.js +5 -4
  194. package/lib/components/Typography/useTypographyEnhancements.js +8 -7
  195. package/lib/components/Upload/Upload.js +5 -4
  196. package/lib/components/Upload/UploadFileBar.js +4 -3
  197. package/lib/components/VirtualList/VirtualList.js +8 -7
  198. package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
  199. package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
  200. package/lib/index.css +1 -1
  201. package/package.json +2 -2
@@ -9,7 +9,8 @@ exports["default"] = exports.Input = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _react = require("react");
12
- var _hooks = require("@1money/hooks");
12
+ var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
13
+ var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
13
14
  var _Icons = require("../../Icons");
14
15
  var _Spinner = require("../../Spinner");
15
16
  var _classnames = _interopRequireWildcard(require("../../../utils/classnames"));
@@ -89,24 +90,24 @@ var InputBase = function InputBase(props) {
89
90
  _useSyncRef2 = (0, _slicedToArray2["default"])(_useSyncRef, 2),
90
91
  inputRef = _useSyncRef2[0],
91
92
  syncRef = _useSyncRef2[1];
92
- var _useControlledState = (0, _hooks.useControlledState)(defaultValue, value),
93
+ var _useControlledState = (0, _useControlledState3["default"])(defaultValue, value),
93
94
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
94
95
  innerValue = _useControlledState2[0],
95
96
  setInnerValue = _useControlledState2[1];
96
97
  var ariaRequired = required ? 'true' : 'false';
97
98
  var ariaInvalid = status === 'error' ? 'true' : 'false';
98
- var handleChange = (0, _hooks.useEventCallback)(function (event) {
99
+ var handleChange = (0, _useEventCallback["default"])(function (event) {
99
100
  var nextValue = event.target.value;
100
101
  setInnerValue(nextValue);
101
102
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
102
103
  });
103
- var handleControlClick = (0, _hooks.useEventCallback)(function (e) {
104
+ var handleControlClick = (0, _useEventCallback["default"])(function (e) {
104
105
  var _a;
105
106
  if (isDisabled || readOnly) return;
106
107
  if (e.target instanceof HTMLInputElement) return;
107
108
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
108
109
  });
109
- var handleClear = (0, _hooks.useEventCallback)(function () {
110
+ var handleClear = (0, _useEventCallback["default"])(function () {
110
111
  var _a;
111
112
  setInnerValue('');
112
113
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
@@ -179,4 +180,4 @@ var Input = exports.Input = Object.assign(MemoizedInput, {
179
180
  Mask: _Mask["default"]
180
181
  });
181
182
  var _default = exports["default"] = Input;
182
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvSW5wdXQvSW5wdXQuanMiLCJjb21wb25lbnRzL0lucHV0L3NyYy9jb21wb25lbnRzL0lucHV0L0lucHV0L0lucHV0LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaG9va3MiLCJfSWNvbnMiLCJfU3Bpbm5lciIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRmllbGRTaGVsbCIsIl91c2VTeW5jUmVmMyIsIl9BbW91bnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX09UUCIsIl9QYXNzd29yZCIsIl9TZWFyY2giLCJfVGV4dEFyZWEiLCJfVHJhZGUiLCJfTWFzayIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiSW5wdXRCYXNlIiwicHJvcHMiLCJtYXNrIiwic2xvdENoYXIiLCJ1bm1hc2siLCJhdXRvQ2xlYXIiLCJvbkNvbXBsZXRlIiwiaW5wdXRQcm9wcyIsIl9qc3giLCJJbnB1dE1hc2siLCJhc3NpZ24iLCJfaW5wdXRQcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJsYWJlbENsYXNzTmFtZSIsIl9pbnB1dFByb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9pbnB1dFByb3BzJHNpemUiLCJzaXplIiwiX2lucHV0UHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX2lucHV0UHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9pbnB1dFByb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwibGFiZWwiLCJpbmZvIiwiZmVlZGJhY2siLCJmZWVkYmFja0ljb24iLCJ0aXAiLCJyZXF1aXJlZCIsIl9pbnB1dFByb3BzJGFsbG93Q2xlYSIsImFsbG93Q2xlYXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2YWx1ZSIsIl9pbnB1dFByb3BzJGRlZmF1bHRWYSIsImRlZmF1bHRWYWx1ZSIsIm9uQ2hhbmdlIiwib25DbGVhciIsInJlZiIsImV4dGVybmFsSWQiLCJpZCIsIl9pbnB1dFByb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJyZXN0IiwiYXV0b0lkIiwidXNlSWQiLCJpbnB1dElkIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJfdXNlU3luY1JlZiIsInVzZVN5bmNSZWYiLCJfdXNlU3luY1JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJpbnB1dFJlZiIsInN5bmNSZWYiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJpbm5lclZhbHVlIiwic2V0SW5uZXJWYWx1ZSIsImFyaWFSZXF1aXJlZCIsImFyaWFJbnZhbGlkIiwiaGFuZGxlQ2hhbmdlIiwidXNlRXZlbnRDYWxsYmFjayIsImV2ZW50IiwibmV4dFZhbHVlIiwidGFyZ2V0IiwiaGFuZGxlQ29udHJvbENsaWNrIiwiX2EiLCJpc0Rpc2FibGVkIiwiSFRNTElucHV0RWxlbWVudCIsImN1cnJlbnQiLCJmb2N1cyIsImhhbmRsZUNsZWFyIiwic2hvd0NsZWFyQWN0aW9uIiwiRmllbGRTaGVsbCIsIm9uQ29udHJvbFdyYXBwZXJDbGljayIsImNoaWxkcmVuIiwiX2pzeHMiLCJqb2luQ2xzIiwidHlwZSIsIm9uQ2xpY2siLCJJY29ucyIsIm5hbWUiLCJTcGlubmVyIiwic3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsIk1lbW9pemVkSW5wdXQiLCJtZW1vIiwiZGlzcGxheU5hbWUiLCJJbnB1dCIsImV4cG9ydHMiLCJQYXNzd29yZCIsIklucHV0UGFzc3dvcmQiLCJTZWFyY2giLCJJbnB1dFNlYXJjaCIsIlRleHRBcmVhIiwiSW5wdXRUZXh0QXJlYSIsIk9UUCIsIklucHV0T1RQIiwiVHJhZGUiLCJJbnB1dFRyYWRlIiwiQW1vdW50IiwiSW5wdXRBbW91bnQiLCJNYXNrIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQVIsT0FBQTtBQUlBLElBQUFTLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFXLElBQUEsR0FBQUQsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFZLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFhLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFjLFNBQUEsR0FBQUosc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFlLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQVYsT0FBQTtBQUNBLElBQUFnQixLQUFBLEdBQUFOLHNCQUFBLENBQUFWLE9BQUE7QUFBZ0MsU0FBQWlCLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENB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QUFFUixXQUFXO1FBQUFJLFFBQUEsRUFFcEIsSUFBQXRFLGVBQUEsRUFBQzJFLFlBQUssRUFBQTtVQUFDQyxJQUFJLEVBQUMsT0FBTztVQUFDbkUsSUFBSSxFQUFFO1FBQUUsQ0FBQTtNQUFJLENBQUEsQ0FFbkMsRUFDQU0sT0FBTyxJQUFJLElBQUFmLGVBQUEsRUFBQzZFLGdCQUFPLEVBQUE7UUFBQ0MsS0FBSyxFQUFFO1VBQUVDLEtBQUssRUFBRSxFQUFFO1VBQUVDLE1BQU0sRUFBRTtRQUFFO01BQUUsQ0FBQSxDQUFJLEVBQ3hEdkQsTUFBTSxJQUFJLElBQUF6QixlQUFBLEVBQUEsTUFBQSxFQUFBO1FBQU1JLFNBQVMsRUFBRW9DLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFBQThCLFFBQUEsRUFBRzdDO01BQU0sQ0FBQSxDQUFRO0lBQUEsQ0FBQTtFQUMxRCxDQUFBLENBQ0s7QUFFakIsQ0FBQztBQUVELElBQU13RCxhQUFhLGdCQUFHLElBQUFDLFdBQUksRUFBQzFGLFNBQVMsQ0FBQztBQUNyQ3lGLGFBQWEsQ0FBQ0UsV0FBVyxHQUFHLE9BQU87QUFFNUIsSUFBTUMsS0FBSyxHQUFBQyxPQUFBLENBQUFELEtBQUEsR0FBRzVHLE1BQU0sQ0FBQzBCLE1BQU0sQ0FBQytFLGFBQWEsRUFBRTtFQUNoREssUUFBUSxFQUFFQyxvQkFBYTtFQUN2QkMsTUFBTSxFQUFFQyxrQkFBVztFQUNuQkMsUUFBUSxFQUFFQyxvQkFBYTtFQUN2QkMsR0FBRyxFQUFFQyxlQUFRO0VBQ2JDLEtBQUssRUFBRUMsaUJBQVU7RUFDakJDLE1BQU0sRUFBRUMsa0JBQVc7RUFDbkJDLElBQUksRUFBRWpHO0FEckZSLENDc0ZDLENBQW1CO0FBQUMsSUFBQWtHLFFBQUEsR0FBQWQsT0FBQSxjQUVORCxLQUFLIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXQvSW5wdXQvSW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlSWQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL1NwaW5uZXInO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBGaWVsZFNoZWxsIH0gZnJvbSAnLi4vRmllbGRTaGVsbCc7XG5pbXBvcnQgeyB1c2VTeW5jUmVmIH0gZnJvbSAnLi4vdXNlU3luY1JlZic7XG5pbXBvcnQgSW5wdXRBbW91bnQgZnJvbSAnLi4vQW1vdW50JztcbmltcG9ydCBJbnB1dE9UUCBmcm9tICcuLi9PVFAnO1xuaW1wb3J0IElucHV0UGFzc3dvcmQgZnJvbSAnLi4vUGFzc3dvcmQnO1xuaW1wb3J0IElucHV0U2VhcmNoIGZyb20gJy4uL1NlYXJjaCc7XG5pbXBvcnQgSW5wdXRUZXh0QXJlYSBmcm9tICcuLi9UZXh0QXJlYSc7XG5pbXBvcnQgSW5wdXRUcmFkZSBmcm9tICcuLi9UcmFkZSc7XG5pbXBvcnQgSW5wdXRNYXNrIGZyb20gJy4uL01hc2snO1xuY29uc3QgSW5wdXRCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBtYXNrLCBzbG90Q2hhciwgdW5tYXNrLCBhdXRvQ2xlYXIsIG9uQ29tcGxldGUgfSA9IHByb3BzLCBpbnB1dFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJtYXNrXCIsIFwic2xvdENoYXJcIiwgXCJ1bm1hc2tcIiwgXCJhdXRvQ2xlYXJcIiwgXCJvbkNvbXBsZXRlXCJdKTtcbiAgICAvLyBEZWxlZ2F0ZSB0byBJbnB1dE1hc2sgd2hlbiBtYXNrIHBhdHRlcm4gaXMgcHJvdmlkZWRcbiAgICBpZiAobWFzaykge1xuICAgICAgICByZXR1cm4gKF9qc3goSW5wdXRNYXNrLCBPYmplY3QuYXNzaWduKHt9LCBpbnB1dFByb3BzLCB7IG1hc2s6IG1hc2ssIHNsb3RDaGFyOiBzbG90Q2hhciwgdW5tYXNrOiB1bm1hc2ssIGF1dG9DbGVhcjogYXV0b0NsZWFyLCBvbkNvbXBsZXRlOiBvbkNvbXBsZXRlIH0pKSk7XG4gICAgfVxuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIGxhYmVsQ2xhc3NOYW1lLCBwcmVmaXhDbHMgPSAnaW5wdXQnLCBzaXplID0gJ2xhcmdlJywgc3RhdHVzID0gJ2RlZmF1bHQnLCBkaXNhYmxlZCA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIGxhYmVsLCBpbmZvLCBmZWVkYmFjaywgZmVlZGJhY2tJY29uLCB0aXAsIHJlcXVpcmVkLCBhbGxvd0NsZWFyID0gZmFsc2UsIHByZWZpeCwgc3VmZml4LCB2YWx1ZSwgZGVmYXVsdFZhbHVlID0gJycsIG9uQ2hhbmdlLCBvbkNsZWFyLCByZWYsIGlkOiBleHRlcm5hbElkLCByZWFkT25seSA9IGZhbHNlIH0gPSBpbnB1dFByb3BzLCByZXN0ID0gX19yZXN0KGlucHV0UHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcImxhYmVsQ2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwic2l6ZVwiLCBcInN0YXR1c1wiLCBcImRpc2FibGVkXCIsIFwibG9hZGluZ1wiLCBcImxhYmVsXCIsIFwiaW5mb1wiLCBcImZlZWRiYWNrXCIsIFwiZmVlZGJhY2tJY29uXCIsIFwidGlwXCIsIFwicmVxdWlyZWRcIiwgXCJhbGxvd0NsZWFyXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwidmFsdWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQ2xlYXJcIiwgXCJyZWZcIiwgXCJpZFwiLCBcInJlYWRPbmx5XCJdKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGlucHV0SWQgPSBleHRlcm5hbElkICE9PSBudWxsICYmIGV4dGVybmFsSWQgIT09IHZvaWQgMCA/IGV4dGVybmFsSWQgOiBhdXRvSWQ7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBbaW5wdXRSZWYsIHN5bmNSZWZdID0gdXNlU3luY1JlZihyZWYpO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUsIHZhbHVlKTtcbiAgICBjb25zdCBhcmlhUmVxdWlyZWQgPSByZXF1aXJlZCA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgY29uc3QgYXJpYUludmFsaWQgPSBzdGF0dXMgPT09ICdlcnJvcicgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobmV4dFZhbHVlLCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQ29udHJvbENsaWNrID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkIHx8IHJlYWRPbmx5KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDbGVhciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgb25DbGVhciA9PT0gbnVsbCB8fCBvbkNsZWFyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNsZWFyKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGxvYWRpbmc7XG4gICAgY29uc3Qgc2hvd0NsZWFyQWN0aW9uID0gYWxsb3dDbGVhciAmJiAhaXNEaXNhYmxlZCAmJiAhcmVhZE9ubHkgJiYgaW5uZXJWYWx1ZS5sZW5ndGggPiAwO1xuICAgIHJldHVybiAoX2pzeChGaWVsZFNoZWxsLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBsYWJlbENsYXNzTmFtZTogbGFiZWxDbGFzc05hbWUsIHByZWZpeENsczogcHJlZml4Q2xzLCBzaXplOiBzaXplLCBzdGF0dXM6IHN0YXR1cywgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGxvYWRpbmc6IGxvYWRpbmcsIHJlYWRPbmx5OiByZWFkT25seSwgbGFiZWw6IGxhYmVsLCBpbmZvOiBpbmZvLCB0aXA6IHRpcCwgZmVlZGJhY2s6IGZlZWRiYWNrLCBmZWVkYmFja0ljb246IGZlZWRiYWNrSWNvbiwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpbnB1dElkOiBpbnB1dElkLCBvbkNvbnRyb2xXcmFwcGVyQ2xpY2s6IGhhbmRsZUNvbnRyb2xDbGljaywgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250cm9sJywgam9pbkNscyhpc0Rpc2FibGVkICYmIGNsYXNzZXMoJ2NvbnRyb2wtZGlzYWJsZWQnKSkpLCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogc3luY1JlZiwgaWQ6IGlucHV0SWQsIGNsYXNzTmFtZTogY2xhc3NlcygnZmllbGQnKSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkT25seSwgdmFsdWU6IGlubmVyVmFsdWUsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIFwiYXJpYS1yZXF1aXJlZFwiOiBhcmlhUmVxdWlyZWQsIFwiYXJpYS1pbnZhbGlkXCI6IGFyaWFJbnZhbGlkIH0pKSwgc2hvd0NsZWFyQWN0aW9uICYmIChfanN4KFwiYnV0dG9uXCIsIHsgdHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdhY3Rpb24nKSwgXCJhcmlhLWxhYmVsXCI6IFwiY2xlYXIgaW5wdXRcIiwgb25DbGljazogaGFuZGxlQ2xlYXIsIGNoaWxkcmVuOiBfanN4KEljb25zLCB7IG5hbWU6IFwiY3Jvc3NcIiwgc2l6ZTogMTYgfSkgfSkpLCBsb2FkaW5nICYmIF9qc3goU3Bpbm5lciwgeyBzdHlsZTogeyB3aWR0aDogMTYsIGhlaWdodDogMTYgfSB9KSwgc3VmZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KV0gfSkgfSkpO1xufTtcbmNvbnN0IE1lbW9pemVkSW5wdXQgPSBtZW1vKElucHV0QmFzZSk7XG5NZW1vaXplZElucHV0LmRpc3BsYXlOYW1lID0gJ0lucHV0JztcbmV4cG9ydCBjb25zdCBJbnB1dCA9IE9iamVjdC5hc3NpZ24oTWVtb2l6ZWRJbnB1dCwge1xuICAgIFBhc3N3b3JkOiBJbnB1dFBhc3N3b3JkLFxuICAgIFNlYXJjaDogSW5wdXRTZWFyY2gsXG4gICAgVGV4dEFyZWE6IElucHV0VGV4dEFyZWEsXG4gICAgT1RQOiBJbnB1dE9UUCxcbiAgICBUcmFkZTogSW5wdXRUcmFkZSxcbiAgICBBbW91bnQ6IElucHV0QW1vdW50LFxuICAgIE1hc2s6IElucHV0TWFzayxcbn0pO1xuZXhwb3J0IGRlZmF1bHQgSW5wdXQ7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
183
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvSW5wdXQvSW5wdXQuanMiLCJjb21wb25lbnRzL0lucHV0L3NyYy9jb21wb25lbnRzL0lucHV0L0lucHV0L0lucHV0LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlRXZlbnRDYWxsYmFjayIsIl9JY29ucyIsIl9TcGlubmVyIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9GaWVsZFNoZWxsIiwiX3VzZVN5bmNSZWYzIiwiX0Ftb3VudCIsIl9PVFAiLCJfUGFzc3dvcmQiLCJfU2VhcmNoIiwiX1RleHRBcmVhIiwiX1RyYWRlIiwiX01hc2siLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIklucHV0QmFzZSIsInByb3BzIiwibWFzayIsInNsb3RDaGFyIiwidW5tYXNrIiwiYXV0b0NsZWFyIiwib25Db21wbGV0ZSIsImlucHV0UHJvcHMiLCJfanN4IiwiSW5wdXRNYXNrIiwiYXNzaWduIiwiX2lucHV0UHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwibGFiZWxDbGFzc05hbWUiLCJfaW5wdXRQcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJfaW5wdXRQcm9wcyRzaXplIiwic2l6ZSIsIl9pbnB1dFByb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9pbnB1dFByb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfaW5wdXRQcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsImxhYmVsIiwiaW5mbyIsImZlZWRiYWNrIiwiZmVlZGJhY2tJY29uIiwidGlwIiwicmVxdWlyZWQiLCJfaW5wdXRQcm9wcyRhbGxvd0NsZWEiLCJhbGxvd0NsZWFyIiwicHJlZml4Iiwic3VmZml4IiwidmFsdWUiLCJfaW5wdXRQcm9wcyRkZWZhdWx0VmEiLCJkZWZhdWx0VmFsdWUiLCJvbkNoYW5nZSIsIm9uQ2xlYXIiLCJyZWYiLCJleHRlcm5hbElkIiwiaWQiLCJfaW5wdXRQcm9wcyRyZWFkT25seSIsInJlYWRPbmx5IiwicmVzdCIsImF1dG9JZCIsInVzZUlkIiwiaW5wdXRJZCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZVN5bmNSZWYiLCJ1c2VTeW5jUmVmIiwiX3VzZVN5bmNSZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5wdXRSZWYiLCJzeW5jUmVmIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJhcmlhUmVxdWlyZWQiLCJhcmlhSW52YWxpZCIsImhhbmRsZUNoYW5nZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJldmVudCIsIm5leHRWYWx1ZSIsInRhcmdldCIsImhhbmRsZUNvbnRyb2xDbGljayIsIl9hIiwiaXNEaXNhYmxlZCIsIkhUTUxJbnB1dEVsZW1lbnQiLCJjdXJyZW50IiwiZm9jdXMiLCJoYW5kbGVDbGVhciIsInNob3dDbGVhckFjdGlvbiIsIkZpZWxkU2hlbGwiLCJvbkNvbnRyb2xXcmFwcGVyQ2xpY2siLCJjaGlsZHJlbiIsIl9qc3hzIiwiam9pbkNscyIsInR5cGUiLCJvbkNsaWNrIiwiSWNvbnMiLCJuYW1lIiwiU3Bpbm5lciIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJNZW1vaXplZElucHV0IiwibWVtbyIsImRpc3BsYXlOYW1lIiwiSW5wdXQiLCJleHBvcnRzIiwiUGFzc3dvcmQiLCJJbnB1dFBhc3N3b3JkIiwiU2VhcmNoIiwiSW5wdXRTZWFyY2giLCJUZXh0QXJlYSIsIklucHV0VGV4dEFyZWEiLCJPVFAiLCJJbnB1dE9UUCIsIlRyYWRlIiwiSW5wdXRUcmFkZSIsIkFtb3VudCIsIklucHV0QW1vdW50IiwiTWFzayIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFXQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNYQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFlBQUEsR0FBQVYsT0FBQTtBQUlBLElBQUFXLE9BQUEsR0FBQVIsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFZLElBQUEsR0FBQVQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFhLFNBQUEsR0FBQVYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFjLE9BQUEsR0FBQVgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFlLFNBQUEsR0FBQVosc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFnQixNQUFBLEdBQUFiLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBaUIsS0FBQSxHQUFBZCxzQkFBQSxDQUFBSCxPQUFBO0FBQWdDLFNBQUFrQix5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FB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LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUlkIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9JY29ucyc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEZpZWxkU2hlbGwgfSBmcm9tICcuLi9GaWVsZFNoZWxsJztcbmltcG9ydCB7IHVzZVN5bmNSZWYgfSBmcm9tICcuLi91c2VTeW5jUmVmJztcbmltcG9ydCBJbnB1dEFtb3VudCBmcm9tICcuLi9BbW91bnQnO1xuaW1wb3J0IElucHV0T1RQIGZyb20gJy4uL09UUCc7XG5pbXBvcnQgSW5wdXRQYXNzd29yZCBmcm9tICcuLi9QYXNzd29yZCc7XG5pbXBvcnQgSW5wdXRTZWFyY2ggZnJvbSAnLi4vU2VhcmNoJztcbmltcG9ydCBJbnB1dFRleHRBcmVhIGZyb20gJy4uL1RleHRBcmVhJztcbmltcG9ydCBJbnB1dFRyYWRlIGZyb20gJy4uL1RyYWRlJztcbmltcG9ydCBJbnB1dE1hc2sgZnJvbSAnLi4vTWFzayc7XG5jb25zdCBJbnB1dEJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IG1hc2ssIHNsb3RDaGFyLCB1bm1hc2ssIGF1dG9DbGVhciwgb25Db21wbGV0ZSB9ID0gcHJvcHMsIGlucHV0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcIm1hc2tcIiwgXCJzbG90Q2hhclwiLCBcInVubWFza1wiLCBcImF1dG9DbGVhclwiLCBcIm9uQ29tcGxldGVcIl0pO1xuICAgIC8vIERlbGVnYXRlIHRvIElucHV0TWFzayB3aGVuIG1hc2sgcGF0dGVybiBpcyBwcm92aWRlZFxuICAgIGlmIChtYXNrKSB7XG4gICAgICAgIHJldHVybiAoX2pzeChJbnB1dE1hc2ssIE9iamVjdC5hc3NpZ24oe30sIGlucHV0UHJvcHMsIHsgbWFzazogbWFzaywgc2xvdENoYXI6IHNsb3RDaGFyLCB1bm1hc2s6IHVubWFzaywgYXV0b0NsZWFyOiBhdXRvQ2xlYXIsIG9uQ29tcGxldGU6IG9uQ29tcGxldGUgfSkpKTtcbiAgICB9XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgbGFiZWxDbGFzc05hbWUsIHByZWZpeENscyA9ICdpbnB1dCcsIHNpemUgPSAnbGFyZ2UnLCBzdGF0dXMgPSAnZGVmYXVsdCcsIGRpc2FibGVkID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbGFiZWwsIGluZm8sIGZlZWRiYWNrLCBmZWVkYmFja0ljb24sIHRpcCwgcmVxdWlyZWQsIGFsbG93Q2xlYXIgPSBmYWxzZSwgcHJlZml4LCBzdWZmaXgsIHZhbHVlLCBkZWZhdWx0VmFsdWUgPSAnJywgb25DaGFuZ2UsIG9uQ2xlYXIsIHJlZiwgaWQ6IGV4dGVybmFsSWQsIHJlYWRPbmx5ID0gZmFsc2UgfSA9IGlucHV0UHJvcHMsIHJlc3QgPSBfX3Jlc3QoaW5wdXRQcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwibGFiZWxDbGFzc05hbWVcIiwgXCJwcmVmaXhDbHNcIiwgXCJzaXplXCIsIFwic3RhdHVzXCIsIFwiZGlzYWJsZWRcIiwgXCJsb2FkaW5nXCIsIFwibGFiZWxcIiwgXCJpbmZvXCIsIFwiZmVlZGJhY2tcIiwgXCJmZWVkYmFja0ljb25cIiwgXCJ0aXBcIiwgXCJyZXF1aXJlZFwiLCBcImFsbG93Q2xlYXJcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJ2YWx1ZVwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25DbGVhclwiLCBcInJlZlwiLCBcImlkXCIsIFwicmVhZE9ubHlcIl0pO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgaW5wdXRJZCA9IGV4dGVybmFsSWQgIT09IG51bGwgJiYgZXh0ZXJuYWxJZCAhPT0gdm9pZCAwID8gZXh0ZXJuYWxJZCA6IGF1dG9JZDtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IFtpbnB1dFJlZiwgc3luY1JlZl0gPSB1c2VTeW5jUmVmKHJlZik7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSwgdmFsdWUpO1xuICAgIGNvbnN0IGFyaWFSZXF1aXJlZCA9IHJlcXVpcmVkID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICBjb25zdCBhcmlhSW52YWxpZCA9IHN0YXR1cyA9PT0gJ2Vycm9yJyA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDb250cm9sQ2xpY2sgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNsZWFyID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZSgnJyk7XG4gICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICBvbkNsZWFyID09PSBudWxsIHx8IG9uQ2xlYXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xlYXIoKTtcbiAgICB9KTtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gZGlzYWJsZWQgfHwgbG9hZGluZztcbiAgICBjb25zdCBzaG93Q2xlYXJBY3Rpb24gPSBhbGxvd0NsZWFyICYmICFpc0Rpc2FibGVkICYmICFyZWFkT25seSAmJiBpbm5lclZhbHVlLmxlbmd0aCA+IDA7XG4gICAgcmV0dXJuIChfanN4KEZpZWxkU2hlbGwsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHNpemU6IHNpemUsIHN0YXR1czogc3RhdHVzLCBkaXNhYmxlZDogaXNEaXNhYmxlZCwgbG9hZGluZzogbG9hZGluZywgcmVhZE9ubHk6IHJlYWRPbmx5LCBsYWJlbDogbGFiZWwsIGluZm86IGluZm8sIHRpcDogdGlwLCBmZWVkYmFjazogZmVlZGJhY2ssIGZlZWRiYWNrSWNvbjogZmVlZGJhY2tJY29uLCByZXF1aXJlZDogcmVxdWlyZWQsIGlucHV0SWQ6IGlucHV0SWQsIG9uQ29udHJvbFdyYXBwZXJDbGljazogaGFuZGxlQ29udHJvbENsaWNrLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRyb2wnLCBqb2luQ2xzKGlzRGlzYWJsZWQgJiYgY2xhc3NlcygnY29udHJvbC1kaXNhYmxlZCcpKSksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBzeW5jUmVmLCBpZDogaW5wdXRJZCwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmaWVsZCcpLCBkaXNhYmxlZDogaXNEaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCB2YWx1ZTogaW5uZXJWYWx1ZSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgXCJhcmlhLXJlcXVpcmVkXCI6IGFyaWFSZXF1aXJlZCwgXCJhcmlhLWludmFsaWRcIjogYXJpYUludmFsaWQgfSkpLCBzaG93Q2xlYXJBY3Rpb24gJiYgKF9qc3goXCJidXR0b25cIiwgeyB0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2FjdGlvbicpLCBcImFyaWEtbGFiZWxcIjogXCJjbGVhciBpbnB1dFwiLCBvbkNsaWNrOiBoYW5kbGVDbGVhciwgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJjcm9zc1wiLCBzaXplOiAxNiB9KSB9KSksIGxvYWRpbmcgJiYgX2pzeChTcGlubmVyLCB7IHN0eWxlOiB7IHdpZHRoOiAxNiwgaGVpZ2h0OiAxNiB9IH0pLCBzdWZmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pXSB9KSB9KSk7XG59O1xuY29uc3QgTWVtb2l6ZWRJbnB1dCA9IG1lbW8oSW5wdXRCYXNlKTtcbk1lbW9pemVkSW5wdXQuZGlzcGxheU5hbWUgPSAnSW5wdXQnO1xuZXhwb3J0IGNvbnN0IElucHV0ID0gT2JqZWN0LmFzc2lnbihNZW1vaXplZElucHV0LCB7XG4gICAgUGFzc3dvcmQ6IElucHV0UGFzc3dvcmQsXG4gICAgU2VhcmNoOiBJbnB1dFNlYXJjaCxcbiAgICBUZXh0QXJlYTogSW5wdXRUZXh0QXJlYSxcbiAgICBPVFA6IElucHV0T1RQLFxuICAgIFRyYWRlOiBJbnB1dFRyYWRlLFxuICAgIEFtb3VudDogSW5wdXRBbW91bnQsXG4gICAgTWFzazogSW5wdXRNYXNrLFxufSk7XG5leHBvcnQgZGVmYXVsdCBJbnB1dDsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -9,7 +9,8 @@ exports["default"] = exports.InputMask = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  var _react = require("react");
12
- var _hooks = require("@1money/hooks");
12
+ var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
13
+ var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
13
14
  var _classnames = _interopRequireWildcard(require("../../../utils/classnames"));
14
15
  var _FieldShell = require("../FieldShell");
15
16
  var _useSyncRef3 = require("../useSyncRef");
@@ -148,21 +149,21 @@ var InputMask = exports.InputMask = function InputMask(props) {
148
149
  };
149
150
  var initialFormatted = defaultValue ? formatValue(defaultValue) : '';
150
151
  var controlledFormatted = value !== undefined ? formatValue(value) : undefined;
151
- var _useControlledState = (0, _hooks.useControlledState)(initialFormatted, controlledFormatted),
152
+ var _useControlledState = (0, _useControlledState3["default"])(initialFormatted, controlledFormatted),
152
153
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
153
154
  innerValue = _useControlledState2[0],
154
155
  setInnerValue = _useControlledState2[1];
155
156
  var isDisabled = disabled || loading;
156
157
  var ariaRequired = required ? 'true' : 'false';
157
158
  var ariaInvalid = status === 'error' ? 'true' : 'false';
158
- var emitChange = (0, _hooks.useEventCallback)(function (formatted, event) {
159
+ var emitChange = (0, _useEventCallback["default"])(function (formatted, event) {
159
160
  var raw = extractRaw(formatted, mask, slotChar);
160
161
  onChange === null || onChange === void 0 ? void 0 : onChange(unmask ? raw : formatted, event);
161
162
  if (raw.length === totalSlots) {
162
163
  onComplete === null || onComplete === void 0 ? void 0 : onComplete(unmask ? raw : formatted);
163
164
  }
164
165
  });
165
- var handleChange = (0, _hooks.useEventCallback)(function (event) {
166
+ var handleChange = (0, _useEventCallback["default"])(function (event) {
166
167
  var _a;
167
168
  if (isComposing.current) return;
168
169
  var input = event.target;
@@ -185,7 +186,7 @@ var InputMask = exports.InputMask = function InputMask(props) {
185
186
  input.setSelectionRange(nextPos, nextPos);
186
187
  });
187
188
  });
188
- var handleKeyDown = (0, _hooks.useEventCallback)(function (event) {
189
+ var handleKeyDown = (0, _useEventCallback["default"])(function (event) {
189
190
  var _a, _b, _c;
190
191
  var input = inputRef.current;
191
192
  if (!input) return;
@@ -273,7 +274,7 @@ var InputMask = exports.InputMask = function InputMask(props) {
273
274
  }
274
275
  onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
275
276
  });
276
- var handleFocus = (0, _hooks.useEventCallback)(function (event) {
277
+ var handleFocus = (0, _useEventCallback["default"])(function (event) {
277
278
  // On focus, if empty show the mask placeholder
278
279
  if (!innerValue || extractRaw(innerValue, mask, slotChar).length === 0) {
279
280
  var formatted = applyMask('', mask, slotChar);
@@ -288,7 +289,7 @@ var InputMask = exports.InputMask = function InputMask(props) {
288
289
  });
289
290
  onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
290
291
  });
291
- var handleBlur = (0, _hooks.useEventCallback)(function (event) {
292
+ var handleBlur = (0, _useEventCallback["default"])(function (event) {
292
293
  var raw = extractRaw(innerValue, mask, slotChar);
293
294
  if (autoClear && raw.length > 0 && raw.length < totalSlots) {
294
295
  var empty = applyMask('', mask, slotChar);
@@ -353,4 +354,4 @@ InputMask.displayName = 'InputMask';
353
354
  var MemoizedInputMask = /*#__PURE__*/(0, _react.memo)(InputMask);
354
355
  MemoizedInputMask.displayName = 'InputMask';
355
356
  var _default = exports["default"] = MemoizedInputMask;
356
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwiY29tcG9uZW50cy9JbnB1dC9zcmMvY29tcG9uZW50cy9JbnB1dC9NYXNrL01hc2sudHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9ob29rcyIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRmllbGRTaGVsbCIsIl91c2VTeW5jUmVmMyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUFTS19UT0tFTiIsImlzTWFza1Rva2VuIiwiY2hhciIsImFwcGx5TWFzayIsInJhdyIsIm1hc2siLCJzbG90Q2hhciIsInJlc3VsdCIsInJhd0luZGV4IiwibWFza0NoYXIiLCJyZSIsInRlc3QiLCJleHRyYWN0UmF3IiwiZm9ybWF0dGVkIiwiY291bnRUb2tlblNsb3RzIiwiY291bnQiLCJmaW5kTmV4dFNsb3QiLCJmcm9tSW5kZXgiLCJmaW5kRmlyc3RTbG90IiwiaWR4IiwiSW5wdXRNYXNrIiwiZXhwb3J0cyIsInByb3BzIiwiX2EiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwibGFiZWxDbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwiX3Byb3BzJHNsb3RDaGFyIiwiX3Byb3BzJHVubWFzayIsInVubWFzayIsIl9wcm9wcyRhdXRvQ2xlYXIiLCJhdXRvQ2xlYXIiLCJsYWJlbCIsImluZm8iLCJmZWVkYmFjayIsImZlZWRiYWNrSWNvbiIsInRpcCIsInJlcXVpcmVkIiwicHJlZml4Iiwic3VmZml4IiwidmFsdWUiLCJfcHJvcHMkZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwib25DaGFuZ2UiLCJvbkNvbXBsZXRlIiwib25Gb2N1cyIsIm9uQmx1ciIsIm9uS2V5RG93biIsInJlZiIsImV4dGVybmFsSWQiLCJpZCIsInJlc3QiLCJhdXRvSWQiLCJ1c2VJZCIsImlucHV0SWQiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsIl91c2VTeW5jUmVmIiwidXNlU3luY1JlZiIsIl91c2VTeW5jUmVmMiIsIl9zbGljZWRUb0FycmF5MiIsImlucHV0UmVmIiwic3luY1JlZiIsImlzQ29tcG9zaW5nIiwidXNlUmVmIiwidG90YWxTbG90cyIsImZvcm1hdFZhbHVlIiwidmFsIiwiaW5pdGlhbEZvcm1hdHRlZCIsImNvbnRyb2xsZWRGb3JtYXR0ZWQiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJpbm5lclZhbHVlIiwic2V0SW5uZXJWYWx1ZSIsImlzRGlzYWJsZWQiLCJhcmlhUmVxdWlyZWQiLCJhcmlhSW52YWxpZCIsImVtaXRDaGFuZ2UiLCJ1c2VFdmVudENhbGxiYWNrIiwiZXZlbnQiLCJoYW5kbGVDaGFuZ2UiLCJjdXJyZW50IiwiaW5wdXQiLCJ0YXJnZXQiLCJjdXJzb3JQb3MiLCJzZWxlY3Rpb25TdGFydCIsImlucHV0VmFsdWUiLCJzbGljZSIsInJlcGxhY2UiLCJjbGVhblJhdyIsImNoIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwibmV4dFBvcyIsInNldFNlbGVjdGlvblJhbmdlIiwiaGFuZGxlS2V5RG93biIsIl9iIiwiX2MiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsInBvcyIsInNlbEVuZCIsInNlbGVjdGlvbkVuZCIsImN1cnJlbnRSYXciLCJuZXdSYXciLCJyYXdJZHgiLCJ0YXJnZXRQb3MiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUJsdXIiLCJlbXB0eSIsIl9qc3giLCJGaWVsZFNoZWxsIiwiY2hpbGRyZW4iLCJfanN4cyIsImpvaW5DbHMiLCJhc3NpZ24iLCJwbGFjZWhvbGRlciIsIm9uQ29tcG9zaXRpb25TdGFydCIsIm9uQ29tcG9zaXRpb25FbmQiLCJkaXNwbGF5TmFtZSIsIk1lbW9pemVkSW5wdXRNYXNrIiwibWVtbyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFXQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNYQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFBMkMsU0FBQU8seUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFKLHdCQUFBSSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFH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QUFnQkEsQ0FBRzVKLENBQUMsRUFBSTtVQUN0Qm9HLFdBQVcsQ0FBQ29CLE9BQU8sR0FBRyxLQUFLO1VBQzNCRCxZQUFZLENBQUN2SCxDQUE2QyxDQUFDO1FBQzdELENBQUM7UUFBQSxlQUFBLEVBQ2NrSCxZQUFZO1FBQUEsY0FBQSxFQUNiQztNQUFXLENBQUEsQ0FBQSxDQUN6QixFQUNEdkMsTUFBTSxJQUFJLElBQUF3RSxlQUFBLEVBQUEsTUFBQSxFQUFBO1FBQU1oRyxTQUFTLEVBQUV3QyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQUEwRCxRQUFBLEVBQUcxRTtNQUFNLENBQUEsQ0FBUTtJQUFBLENBQUE7RUFDMUQsQ0FBQSxDQUNLO0FBRWpCLENBQUM7QUFFRDdCLFNBQVMsQ0FBQzhHLFdBQVcsR0FBRyxXQUFXO0FBRW5DLElBQU1DLGlCQUFpQixnQkFBRyxJQUFBQyxXQUFJLEVBQUNoSCxTQUFTLENBQUM7QUFDekMrRyxpQkFBaUIsQ0FBQ0QsV0FBVyxHQUFHLFdBQVc7QUFBQyxJQUFBRyxRQUFBLEdBQUFoSCxPQUFBLGNBRTdCOEcsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUlkLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgRmllbGRTaGVsbCB9IGZyb20gJy4uL0ZpZWxkU2hlbGwnO1xuaW1wb3J0IHsgdXNlU3luY1JlZiB9IGZyb20gJy4uL3VzZVN5bmNSZWYnO1xuLyoqIE1hc2sgdG9rZW4gbWF0Y2hlcnM6IDkgPSBkaWdpdCwgYSA9IGxldHRlciwgKiA9IGFscGhhbnVtZXJpYyAqL1xuY29uc3QgTUFTS19UT0tFTiA9IHtcbiAgICAnOSc6IC9cXGQvLFxuICAgICdhJzogL1thLXpBLVpdLyxcbiAgICAnKic6IC9bYS16QS1aMC05XS8sXG59O1xuY29uc3QgaXNNYXNrVG9rZW4gPSAoY2hhcikgPT4gY2hhciBpbiBNQVNLX1RPS0VOO1xuLyoqIEFwcGx5IG1hc2sgdG8gcmF3IHZhbHVlLCByZXR1cm5pbmcgdGhlIGZvcm1hdHRlZCBzdHJpbmcgKi9cbmNvbnN0IGFwcGx5TWFzayA9IChyYXcsIG1hc2ssIHNsb3RDaGFyKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGxldCByYXdJbmRleCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG1hc2tDaGFyID0gbWFza1tpXTtcbiAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tDaGFyKSkge1xuICAgICAgICAgICAgaWYgKHJhd0luZGV4IDwgcmF3Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlID0gTUFTS19UT0tFTlttYXNrQ2hhcl07XG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gcmF3XG4gICAgICAgICAgICAgICAgd2hpbGUgKHJhd0luZGV4IDwgcmF3Lmxlbmd0aCAmJiAhcmUudGVzdChyYXdbcmF3SW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICByYXdJbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmF3SW5kZXggPCByYXcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSByYXdbcmF3SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICByYXdJbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNsb3RDaGFyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzbG90Q2hhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBtYXNrQ2hhcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbi8qKiBFeHRyYWN0IHJhdyB2YWx1ZSAob25seSB1c2VyLXR5cGVkIGNoYXJhY3RlcnMsIG5vIGxpdGVyYWxzIG9yIHNsb3QgY2hhcnMpICovXG5jb25zdCBleHRyYWN0UmF3ID0gKGZvcm1hdHRlZCwgbWFzaywgc2xvdENoYXIpID0+IHtcbiAgICBsZXQgcmF3ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aCAmJiBpIDwgZm9ybWF0dGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSAmJiBmb3JtYXR0ZWRbaV0gIT09IHNsb3RDaGFyKSB7XG4gICAgICAgICAgICByYXcgKz0gZm9ybWF0dGVkW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByYXc7XG59O1xuLyoqIENvdW50IGhvdyBtYW55IG1hc2sgdG9rZW5zIGV4aXN0IGluIHRoZSBtYXNrIHBhdHRlcm4gKi9cbmNvbnN0IGNvdW50VG9rZW5TbG90cyA9IChtYXNrKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pKVxuICAgICAgICAgICAgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xufTtcbi8qKiBGaW5kIHRoZSBjdXJzb3IgcG9zaXRpb24gZm9yIHRoZSBuZXh0IGF2YWlsYWJsZSBtYXNrIHRva2VuIHNsb3QgKi9cbmNvbnN0IGZpbmROZXh0U2xvdCA9IChtYXNrLCBmb3JtYXR0ZWQsIHNsb3RDaGFyLCBmcm9tSW5kZXgpID0+IHtcbiAgICBmb3IgKGxldCBpID0gZnJvbUluZGV4OyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkgJiYgKGkgPj0gZm9ybWF0dGVkLmxlbmd0aCB8fCBmb3JtYXR0ZWRbaV0gPT09IHNsb3RDaGFyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZyb21JbmRleDtcbn07XG4vKiogRmluZCB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IHNsb3QgY2hhciBpbiBmb3JtYXR0ZWQgdmFsdWUgKi9cbmNvbnN0IGZpbmRGaXJzdFNsb3QgPSAoZm9ybWF0dGVkLCBzbG90Q2hhcikgPT4ge1xuICAgIGNvbnN0IGlkeCA9IGZvcm1hdHRlZC5pbmRleE9mKHNsb3RDaGFyKTtcbiAgICByZXR1cm4gaWR4ID09PSAtMSA/IGZvcm1hdHRlZC5sZW5ndGggOiBpZHg7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0TWFzayA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBsYWJlbENsYXNzTmFtZSwgcHJlZml4Q2xzID0gJ2lucHV0Jywgc2l6ZSA9ICdsYXJnZScsIHN0YXR1cyA9ICdkZWZhdWx0JywgZGlzYWJsZWQgPSBmYWxzZSwgbG9hZGluZyA9IGZhbHNlLCBtYXNrLCBzbG90Q2hhciA9ICdfJywgdW5tYXNrID0gZmFsc2UsIGF1dG9DbGVhciA9IGZhbHNlLCBsYWJlbCwgaW5mbywgZmVlZGJhY2ssIGZlZWRiYWNrSWNvbiwgdGlwLCByZXF1aXJlZCwgcHJlZml4LCBzdWZmaXgsIHZhbHVlLCBkZWZhdWx0VmFsdWUgPSAnJywgb25DaGFuZ2UsIG9uQ29tcGxldGUsIG9uRm9jdXMsIG9uQmx1ciwgb25LZXlEb3duLCByZWYsIGlkOiBleHRlcm5hbElkIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwibGFiZWxDbGFzc05hbWVcIiwgXCJwcmVmaXhDbHNcIiwgXCJzaXplXCIsIFwic3RhdHVzXCIsIFwiZGlzYWJsZWRcIiwgXCJsb2FkaW5nXCIsIFwibWFza1wiLCBcInNsb3RDaGFyXCIsIFwidW5tYXNrXCIsIFwiYXV0b0NsZWFyXCIsIFwibGFiZWxcIiwgXCJpbmZvXCIsIFwiZmVlZGJhY2tcIiwgXCJmZWVkYmFja0ljb25cIiwgXCJ0aXBcIiwgXCJyZXF1aXJlZFwiLCBcInByZWZpeFwiLCBcInN1ZmZpeFwiLCBcInZhbHVlXCIsIFwiZGVmYXVsdFZhbHVlXCIsIFwib25DaGFuZ2VcIiwgXCJvbkNvbXBsZXRlXCIsIFwib25Gb2N1c1wiLCBcIm9uQmx1clwiLCBcIm9uS2V5RG93blwiLCBcInJlZlwiLCBcImlkXCJdKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGlucHV0SWQgPSBleHRlcm5hbElkICE9PSBudWxsICYmIGV4dGVybmFsSWQgIT09IHZvaWQgMCA/IGV4dGVybmFsSWQgOiBhdXRvSWQ7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBbaW5wdXRSZWYsIHN5bmNSZWZdID0gdXNlU3luY1JlZihyZWYpO1xuICAgIGNvbnN0IGlzQ29tcG9zaW5nID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCB0b3RhbFNsb3RzID0gY291bnRUb2tlblNsb3RzKG1hc2spO1xuICAgIC8vIEludGVybmFsIHN0YXRlIGFsd2F5cyBzdG9yZXMgdGhlIGZvcm1hdHRlZCB2YWx1ZVxuICAgIGNvbnN0IGZvcm1hdFZhbHVlID0gKHZhbCkgPT4gYXBwbHlNYXNrKHZhbCwgbWFzaywgc2xvdENoYXIpO1xuICAgIGNvbnN0IGluaXRpYWxGb3JtYXR0ZWQgPSBkZWZhdWx0VmFsdWUgPyBmb3JtYXRWYWx1ZShkZWZhdWx0VmFsdWUpIDogJyc7XG4gICAgY29uc3QgY29udHJvbGxlZEZvcm1hdHRlZCA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyBmb3JtYXRWYWx1ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGluaXRpYWxGb3JtYXR0ZWQsIGNvbnRyb2xsZWRGb3JtYXR0ZWQpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGFyaWFSZXF1aXJlZCA9IHJlcXVpcmVkID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICBjb25zdCBhcmlhSW52YWxpZCA9IHN0YXR1cyA9PT0gJ2Vycm9yJyA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgY29uc3QgZW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKGZvcm1hdHRlZCwgZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgcmF3ID0gZXh0cmFjdFJhdyhmb3JtYXR0ZWQsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKHVubWFzayA/IHJhdyA6IGZvcm1hdHRlZCwgZXZlbnQpO1xuICAgICAgICBpZiAocmF3Lmxlbmd0aCA9PT0gdG90YWxTbG90cykge1xuICAgICAgICAgICAgb25Db21wbGV0ZSA9PT0gbnVsbCB8fCBvbkNvbXBsZXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbXBsZXRlKHVubWFzayA/IHJhdyA6IGZvcm1hdHRlZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpc0NvbXBvc2luZy5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgY3Vyc29yUG9zID0gKF9hID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgLy8gRXh0cmFjdCBvbmx5IHZhbGlkIGNoYXJhY3RlcnMgZnJvbSB0aGUgcmF3IGlucHV0XG4gICAgICAgIGNvbnN0IHJhdyA9IGV4dHJhY3RSYXcoaW5wdXRWYWx1ZSwgbWFzaywgc2xvdENoYXIpXG4gICAgICAgICAgICArIGlucHV0VmFsdWUuc2xpY2UoY3Vyc29yUG9zID4gMCA/IGN1cnNvclBvcyAtIDEgOiAwLCBjdXJzb3JQb3MpLnJlcGxhY2UoL1teXFxkYS16QS1aXS9nLCAnJyk7XG4gICAgICAgIC8vIFJlLWV4dHJhY3QgZnJvbSB0aGUgZnVsbCBpbnB1dCB0byBnZXQgY2xlYW4gcmF3XG4gICAgICAgIGxldCBjbGVhblJhdyA9ICcnO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0VmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoID0gaW5wdXRWYWx1ZVtpXTtcbiAgICAgICAgICAgIGlmICgvW1xcZGEtekEtWl0vLnRlc3QoY2gpKVxuICAgICAgICAgICAgICAgIGNsZWFuUmF3ICs9IGNoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGFwcGx5TWFzayhjbGVhblJhdywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICBzZXRJbm5lclZhbHVlKGZvcm1hdHRlZCk7XG4gICAgICAgIGVtaXRDaGFuZ2UoZm9ybWF0dGVkLCBldmVudCk7XG4gICAgICAgIC8vIFBvc2l0aW9uIGN1cnNvciBhZnRlciB0aGUgbGFzdCBmaWxsZWQgc2xvdFxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV4dFBvcyA9IGZpbmRGaXJzdFNsb3QoZm9ybWF0dGVkLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShuZXh0UG9zLCBuZXh0UG9zKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcG9zID0gKF9hID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgICAgICBjb25zdCBzZWxFbmQgPSAoX2IgPSBpbnB1dC5zZWxlY3Rpb25FbmQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgICAgICBpZiAocG9zID09PSAwICYmIHNlbEVuZCA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UmF3ID0gZXh0cmFjdFJhdyhpbm5lclZhbHVlLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBpZiAocG9zICE9PSBzZWxFbmQpIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3Rpb246IHJlbW92ZSBhbGwgcmF3IGNoYXJzIGluIHRoZSBzZWxlY3RlZCByYW5nZVxuICAgICAgICAgICAgICAgIGxldCBuZXdSYXcgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcmF3SWR4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2subGVuZ3RoICYmIHJhd0lkeCA8IGN1cnJlbnRSYXcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IHBvcyB8fCBpID49IHNlbEVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JhdyArPSBjdXJyZW50UmF3W3Jhd0lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByYXdJZHgrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2sobmV3UmF3LCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWQpO1xuICAgICAgICAgICAgICAgIGVtaXRDaGFuZ2UoZm9ybWF0dGVkLCB7IHRhcmdldDogaW5wdXQgfSk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFBvcyA9IGZpbmROZXh0U2xvdChtYXNrLCBmb3JtYXR0ZWQsIHNsb3RDaGFyLCBwb3MpO1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShuZXh0UG9zLCBuZXh0UG9zKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpbmdsZSBiYWNrc3BhY2U6IGZpbmQgcHJldiB0b2tlbiBwb3NpdGlvbiBhbmQgcmVtb3ZlIGl0XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFBvcyA9IHBvcyAtIDE7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldFBvcyA+PSAwICYmICFpc01hc2tUb2tlbihtYXNrW3RhcmdldFBvc10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFBvcy0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0UG9zIDwgMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGxldCBuZXdSYXcgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcmF3SWR4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gdGFyZ2V0UG9zICYmIHJhd0lkeCA8IGN1cnJlbnRSYXcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmF3ICs9IGN1cnJlbnRSYXdbcmF3SWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd0lkeCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGFwcGx5TWFzayhuZXdSYXcsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgICAgICBzZXRJbm5lclZhbHVlKGZvcm1hdHRlZCk7XG4gICAgICAgICAgICAgICAgZW1pdENoYW5nZShmb3JtYXR0ZWQsIHsgdGFyZ2V0OiBpbnB1dCB9KTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSh0YXJnZXRQb3MsIHRhcmdldFBvcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSAoX2MgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgIGxldCB0YXJnZXRQb3MgPSBwb3M7XG4gICAgICAgICAgICB3aGlsZSAodGFyZ2V0UG9zIDwgbWFzay5sZW5ndGggJiYgIWlzTWFza1Rva2VuKG1hc2tbdGFyZ2V0UG9zXSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YXJnZXRQb3MgPj0gbWFzay5sZW5ndGgpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFJhdyA9IGV4dHJhY3RSYXcoaW5uZXJWYWx1ZSwgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgbGV0IG5ld1JhdyA9ICcnO1xuICAgICAgICAgICAgbGV0IHJhd0lkeCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT09IHRhcmdldFBvcyAmJiByYXdJZHggPCBjdXJyZW50UmF3Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmF3ICs9IGN1cnJlbnRSYXdbcmF3SWR4XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByYXdJZHgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2sobmV3UmF3LCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKGZvcm1hdHRlZCk7XG4gICAgICAgICAgICBlbWl0Q2hhbmdlKGZvcm1hdHRlZCwgeyB0YXJnZXQ6IGlucHV0IH0pO1xuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBvbktleURvd24gPT09IG51bGwgfHwgb25LZXlEb3duID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbktleURvd24oZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgLy8gT24gZm9jdXMsIGlmIGVtcHR5IHNob3cgdGhlIG1hc2sgcGxhY2Vob2xkZXJcbiAgICAgICAgaWYgKCFpbm5lclZhbHVlIHx8IGV4dHJhY3RSYXcoaW5uZXJWYWx1ZSwgbWFzaywgc2xvdENoYXIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKCcnLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBzZXRJbm5lclZhbHVlKGZvcm1hdHRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IGZpbmRGaXJzdFNsb3QoaW5wdXQudmFsdWUsIHNsb3RDaGFyKTtcbiAgICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCByYXcgPSBleHRyYWN0UmF3KGlubmVyVmFsdWUsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgaWYgKGF1dG9DbGVhciAmJiByYXcubGVuZ3RoID4gMCAmJiByYXcubGVuZ3RoIDwgdG90YWxTbG90cykge1xuICAgICAgICAgICAgY29uc3QgZW1wdHkgPSBhcHBseU1hc2soJycsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUoZW1wdHkpO1xuICAgICAgICAgICAgZW1pdENoYW5nZShlbXB0eSwgeyB0YXJnZXQ6IGV2ZW50LnRhcmdldCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBjb21wbGV0ZWx5IGVtcHR5LCBjbGVhciB0aGUgZm9ybWF0dGVkIG1hc2tcbiAgICAgICAgaWYgKHJhdy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihldmVudCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIChfanN4KEZpZWxkU2hlbGwsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHNpemU6IHNpemUsIHN0YXR1czogc3RhdHVzLCBkaXNhYmxlZDogaXNEaXNhYmxlZCwgbGFiZWw6IGxhYmVsLCBpbmZvOiBpbmZvLCB0aXA6IHRpcCwgZmVlZGJhY2s6IGZlZWRiYWNrLCBmZWVkYmFja0ljb246IGZlZWRiYWNrSWNvbiwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpbnB1dElkOiBpbnB1dElkLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRyb2wnLCBqb2luQ2xzKGlzRGlzYWJsZWQgJiYgY2xhc3NlcygnY29udHJvbC1kaXNhYmxlZCcpKSksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBzeW5jUmVmLCBpZDogaW5wdXRJZCwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmaWVsZCcpLCBkaXNhYmxlZDogaXNEaXNhYmxlZCwgdmFsdWU6IGlubmVyVmFsdWUsIHBsYWNlaG9sZGVyOiAoX2EgPSByZXN0LnBsYWNlaG9sZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBhcHBseU1hc2soJycsIG1hc2ssIHNsb3RDaGFyKSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLCBvbkZvY3VzOiBoYW5kbGVGb2N1cywgb25CbHVyOiBoYW5kbGVCbHVyLCBvbkNvbXBvc2l0aW9uU3RhcnQ6ICgpID0+IHsgaXNDb21wb3NpbmcuY3VycmVudCA9IHRydWU7IH0sIG9uQ29tcG9zaXRpb25FbmQ6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbXBvc2luZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2UoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIFwiYXJpYS1yZXF1aXJlZFwiOiBhcmlhUmVxdWlyZWQsIFwiYXJpYS1pbnZhbGlkXCI6IGFyaWFJbnZhbGlkIH0pKSwgc3VmZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnKSwgY2hpbGRyZW46IHN1ZmZpeCB9KV0gfSkgfSkpO1xufTtcbklucHV0TWFzay5kaXNwbGF5TmFtZSA9ICdJbnB1dE1hc2snO1xuY29uc3QgTWVtb2l6ZWRJbnB1dE1hc2sgPSBtZW1vKElucHV0TWFzayk7XG5NZW1vaXplZElucHV0TWFzay5kaXNwbGF5TmFtZSA9ICdJbnB1dE1hc2snO1xuZXhwb3J0IGRlZmF1bHQgTWVtb2l6ZWRJbnB1dE1hc2s7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
357
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvTWFzay9NYXNrLmpzIiwiY29tcG9uZW50cy9JbnB1dC9zcmMvY29tcG9uZW50cy9JbnB1dC9NYXNrL01hc2sudHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl91c2VDb250cm9sbGVkU3RhdGUzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2VFdmVudENhbGxiYWNrIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9GaWVsZFNoZWxsIiwiX3VzZVN5bmNSZWYzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX19yZXN0IiwicyIsInAiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJNQVNLX1RPS0VOIiwiaXNNYXNrVG9rZW4iLCJjaGFyIiwiYXBwbHlNYXNrIiwicmF3IiwibWFzayIsInNsb3RDaGFyIiwicmVzdWx0IiwicmF3SW5kZXgiLCJtYXNrQ2hhciIsInJlIiwidGVzdCIsImV4dHJhY3RSYXciLCJmb3JtYXR0ZWQiLCJjb3VudFRva2VuU2xvdHMiLCJjb3VudCIsImZpbmROZXh0U2xvdCIsImZyb21JbmRleCIsImZpbmRGaXJzdFNsb3QiLCJpZHgiLCJJbnB1dE1hc2siLCJleHBvcnRzIiwicHJvcHMiLCJfYSIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJsYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkc2xvdENoYXIiLCJfcHJvcHMkdW5tYXNrIiwidW5tYXNrIiwiX3Byb3BzJGF1dG9DbGVhciIsImF1dG9DbGVhciIsImxhYmVsIiwiaW5mbyIsImZlZWRiYWNrIiwiZmVlZGJhY2tJY29uIiwidGlwIiwicmVxdWlyZWQiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2YWx1ZSIsIl9wcm9wcyRkZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJvbkNoYW5nZSIsIm9uQ29tcGxldGUiLCJvbkZvY3VzIiwib25CbHVyIiwib25LZXlEb3duIiwicmVmIiwiZXh0ZXJuYWxJZCIsImlkIiwicmVzdCIsImF1dG9JZCIsInVzZUlkIiwiaW5wdXRJZCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZVN5bmNSZWYiLCJ1c2VTeW5jUmVmIiwiX3VzZVN5bmNSZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5wdXRSZWYiLCJzeW5jUmVmIiwiaXNDb21wb3NpbmciLCJ1c2VSZWYiLCJ0b3RhbFNsb3RzIiwiZm9ybWF0VmFsdWUiLCJ2YWwiLCJpbml0aWFsRm9ybWF0dGVkIiwiY29udHJvbGxlZEZvcm1hdHRlZCIsInVuZGVmaW5lZCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwiaXNEaXNhYmxlZCIsImFyaWFSZXF1aXJlZCIsImFyaWFJbnZhbGlkIiwiZW1pdENoYW5nZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJldmVudCIsImhhbmRsZUNoYW5nZSIsImN1cnJlbnQiLCJpbnB1dCIsInRhcmdldCIsImN1cnNvclBvcyIsInNlbGVjdGlvblN0YXJ0IiwiaW5wdXRWYWx1ZSIsInNsaWNlIiwicmVwbGFjZSIsImNsZWFuUmF3IiwiY2giLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJuZXh0UG9zIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJoYW5kbGVLZXlEb3duIiwiX2IiLCJfYyIsImtleSIsInByZXZlbnREZWZhdWx0IiwicG9zIiwic2VsRW5kIiwic2VsZWN0aW9uRW5kIiwiY3VycmVudFJhdyIsIm5ld1JhdyIsInJhd0lkeCIsInRhcmdldFBvcyIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQmx1ciIsImVtcHR5IiwiX2pzeCIsIkZpZWxkU2hlbGwiLCJjaGlsZHJlbiIsIl9qc3hzIiwiam9pbkNscyIsImFzc2lnbiIsInBsYWNlaG9sZGVyIiwib25Db21wb3NpdGlvblN0YXJ0Iiwib25Db21wb3NpdGlvbkVuZCIsImRpc3BsYXlOYW1lIiwiTWVtb2l6ZWRJbnB1dE1hc2siLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQTJDLFNBQUFTLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBSix3QkFBQUksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxD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UyxrQkFBa0IsRUFBRSxTQUFwQkEsa0JBQWtCQSxDQUFBLEVBQU87VUFBR3ZELFdBQVcsQ0FBQ29CLE9BQU8sR0FBRyxJQUFJO1FBQUUsQ0FBQztRQUN6RG9DLGdCQUFnQixFQUFFLFNBQWxCQSxnQkFBZ0JBLENBQUc1SixDQUFDLEVBQUk7VUFDdEJvRyxXQUFXLENBQUNvQixPQUFPLEdBQUcsS0FBSztVQUMzQkQsWUFBWSxDQUFDdkgsQ0FBNkMsQ0FBQztRQUM3RCxDQUFDO1FBQUEsZUFBQSxFQUNja0gsWUFBWTtRQUFBLGNBQUEsRUFDYkM7TUFBVyxDQUFBLENBQUEsQ0FDekIsRUFDRHZDLE1BQU0sSUFBSSxJQUFBd0UsZUFBQSxFQUFBLE1BQUEsRUFBQTtRQUFNaEcsU0FBUyxFQUFFd0MsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUFBMEQsUUFBQSxFQUFHMUU7TUFBTSxDQUFBLENBQVE7SUFBQSxDQUFBO0VBQzFELENBQUEsQ0FDSztBQUVqQixDQUFDO0FBRUQ3QixTQUFTLENBQUM4RyxXQUFXLEdBQUcsV0FBVztBQUVuQyxJQUFNQyxpQkFBaUIsZ0JBQUcsSUFBQUMsV0FBSSxFQUFDaEgsU0FBUyxDQUFDO0FBQ3pDK0csaUJBQWlCLENBQUNELFdBQVcsR0FBRyxXQUFXO0FBQUMsSUFBQUcsUUFBQSxHQUFBaEgsT0FBQSxjQUU3QjhHLGlCQUFpQiIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0L01hc2svTWFzay5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VJZCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBGaWVsZFNoZWxsIH0gZnJvbSAnLi4vRmllbGRTaGVsbCc7XG5pbXBvcnQgeyB1c2VTeW5jUmVmIH0gZnJvbSAnLi4vdXNlU3luY1JlZic7XG4vKiogTWFzayB0b2tlbiBtYXRjaGVyczogOSA9IGRpZ2l0LCBhID0gbGV0dGVyLCAqID0gYWxwaGFudW1lcmljICovXG5jb25zdCBNQVNLX1RPS0VOID0ge1xuICAgICc5JzogL1xcZC8sXG4gICAgJ2EnOiAvW2EtekEtWl0vLFxuICAgICcqJzogL1thLXpBLVowLTldLyxcbn07XG5jb25zdCBpc01hc2tUb2tlbiA9IChjaGFyKSA9PiBjaGFyIGluIE1BU0tfVE9LRU47XG4vKiogQXBwbHkgbWFzayB0byByYXcgdmFsdWUsIHJldHVybmluZyB0aGUgZm9ybWF0dGVkIHN0cmluZyAqL1xuY29uc3QgYXBwbHlNYXNrID0gKHJhdywgbWFzaywgc2xvdENoYXIpID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgbGV0IHJhd0luZGV4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbWFza0NoYXIgPSBtYXNrW2ldO1xuICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza0NoYXIpKSB7XG4gICAgICAgICAgICBpZiAocmF3SW5kZXggPCByYXcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmUgPSBNQVNLX1RPS0VOW21hc2tDaGFyXTtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIGludmFsaWQgY2hhcmFjdGVycyBpbiByYXdcbiAgICAgICAgICAgICAgICB3aGlsZSAocmF3SW5kZXggPCByYXcubGVuZ3RoICYmICFyZS50ZXN0KHJhd1tyYXdJbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJhd0luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyYXdJbmRleCA8IHJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJhd1tyYXdJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHJhd0luZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2xvdENoYXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHNsb3RDaGFyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ICs9IG1hc2tDaGFyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuLyoqIEV4dHJhY3QgcmF3IHZhbHVlIChvbmx5IHVzZXItdHlwZWQgY2hhcmFjdGVycywgbm8gbGl0ZXJhbHMgb3Igc2xvdCBjaGFycykgKi9cbmNvbnN0IGV4dHJhY3RSYXcgPSAoZm9ybWF0dGVkLCBtYXNrLCBzbG90Q2hhcikgPT4ge1xuICAgIGxldCByYXcgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hc2subGVuZ3RoICYmIGkgPCBmb3JtYXR0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzTWFza1Rva2VuKG1hc2tbaV0pICYmIGZvcm1hdHRlZFtpXSAhPT0gc2xvdENoYXIpIHtcbiAgICAgICAgICAgIHJhdyArPSBmb3JtYXR0ZWRbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJhdztcbn07XG4vKiogQ291bnQgaG93IG1hbnkgbWFzayB0b2tlbnMgZXhpc3QgaW4gdGhlIG1hc2sgcGF0dGVybiAqL1xuY29uc3QgY291bnRUb2tlblNsb3RzID0gKG1hc2spID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkpXG4gICAgICAgICAgICBjb3VudCsrO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG59O1xuLyoqIEZpbmQgdGhlIGN1cnNvciBwb3NpdGlvbiBmb3IgdGhlIG5leHQgYXZhaWxhYmxlIG1hc2sgdG9rZW4gc2xvdCAqL1xuY29uc3QgZmluZE5leHRTbG90ID0gKG1hc2ssIGZvcm1hdHRlZCwgc2xvdENoYXIsIGZyb21JbmRleCkgPT4ge1xuICAgIGZvciAobGV0IGkgPSBmcm9tSW5kZXg7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSAmJiAoaSA+PSBmb3JtYXR0ZWQubGVuZ3RoIHx8IGZvcm1hdHRlZFtpXSA9PT0gc2xvdENoYXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUluZGV4O1xufTtcbi8qKiBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3Qgc2xvdCBjaGFyIGluIGZvcm1hdHRlZCB2YWx1ZSAqL1xuY29uc3QgZmluZEZpcnN0U2xvdCA9IChmb3JtYXR0ZWQsIHNsb3RDaGFyKSA9PiB7XG4gICAgY29uc3QgaWR4ID0gZm9ybWF0dGVkLmluZGV4T2Yoc2xvdENoYXIpO1xuICAgIHJldHVybiBpZHggPT09IC0xID8gZm9ybWF0dGVkLmxlbmd0aCA6IGlkeDtcbn07XG5leHBvcnQgY29uc3QgSW5wdXRNYXNrID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIGxhYmVsQ2xhc3NOYW1lLCBwcmVmaXhDbHMgPSAnaW5wdXQnLCBzaXplID0gJ2xhcmdlJywgc3RhdHVzID0gJ2RlZmF1bHQnLCBkaXNhYmxlZCA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIG1hc2ssIHNsb3RDaGFyID0gJ18nLCB1bm1hc2sgPSBmYWxzZSwgYXV0b0NsZWFyID0gZmFsc2UsIGxhYmVsLCBpbmZvLCBmZWVkYmFjaywgZmVlZGJhY2tJY29uLCB0aXAsIHJlcXVpcmVkLCBwcmVmaXgsIHN1ZmZpeCwgdmFsdWUsIGRlZmF1bHRWYWx1ZSA9ICcnLCBvbkNoYW5nZSwgb25Db21wbGV0ZSwgb25Gb2N1cywgb25CbHVyLCBvbktleURvd24sIHJlZiwgaWQ6IGV4dGVybmFsSWQgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIiwgXCJsYWJlbENsYXNzTmFtZVwiLCBcInByZWZpeENsc1wiLCBcInNpemVcIiwgXCJzdGF0dXNcIiwgXCJkaXNhYmxlZFwiLCBcImxvYWRpbmdcIiwgXCJtYXNrXCIsIFwic2xvdENoYXJcIiwgXCJ1bm1hc2tcIiwgXCJhdXRvQ2xlYXJcIiwgXCJsYWJlbFwiLCBcImluZm9cIiwgXCJmZWVkYmFja1wiLCBcImZlZWRiYWNrSWNvblwiLCBcInRpcFwiLCBcInJlcXVpcmVkXCIsIFwicHJlZml4XCIsIFwic3VmZml4XCIsIFwidmFsdWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQ29tcGxldGVcIiwgXCJvbkZvY3VzXCIsIFwib25CbHVyXCIsIFwib25LZXlEb3duXCIsIFwicmVmXCIsIFwiaWRcIl0pO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgaW5wdXRJZCA9IGV4dGVybmFsSWQgIT09IG51bGwgJiYgZXh0ZXJuYWxJZCAhPT0gdm9pZCAwID8gZXh0ZXJuYWxJZCA6IGF1dG9JZDtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IFtpbnB1dFJlZiwgc3luY1JlZl0gPSB1c2VTeW5jUmVmKHJlZik7XG4gICAgY29uc3QgaXNDb21wb3NpbmcgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHRvdGFsU2xvdHMgPSBjb3VudFRva2VuU2xvdHMobWFzayk7XG4gICAgLy8gSW50ZXJuYWwgc3RhdGUgYWx3YXlzIHN0b3JlcyB0aGUgZm9ybWF0dGVkIHZhbHVlXG4gICAgY29uc3QgZm9ybWF0VmFsdWUgPSAodmFsKSA9PiBhcHBseU1hc2sodmFsLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgY29uc3QgaW5pdGlhbEZvcm1hdHRlZCA9IGRlZmF1bHRWYWx1ZSA/IGZvcm1hdFZhbHVlKGRlZmF1bHRWYWx1ZSkgOiAnJztcbiAgICBjb25zdCBjb250cm9sbGVkRm9ybWF0dGVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IGZvcm1hdFZhbHVlKHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoaW5pdGlhbEZvcm1hdHRlZCwgY29udHJvbGxlZEZvcm1hdHRlZCk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGxvYWRpbmc7XG4gICAgY29uc3QgYXJpYVJlcXVpcmVkID0gcmVxdWlyZWQgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIGNvbnN0IGFyaWFJbnZhbGlkID0gc3RhdHVzID09PSAnZXJyb3InID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICBjb25zdCBlbWl0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoZm9ybWF0dGVkLCBldmVudCkgPT4ge1xuICAgICAgICBjb25zdCByYXcgPSBleHRyYWN0UmF3KGZvcm1hdHRlZCwgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UodW5tYXNrID8gcmF3IDogZm9ybWF0dGVkLCBldmVudCk7XG4gICAgICAgIGlmIChyYXcubGVuZ3RoID09PSB0b3RhbFNsb3RzKSB7XG4gICAgICAgICAgICBvbkNvbXBsZXRlID09PSBudWxsIHx8IG9uQ29tcGxldGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29tcGxldGUodW5tYXNrID8gcmF3IDogZm9ybWF0dGVkKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGlzQ29tcG9zaW5nLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBjb25zdCBjdXJzb3JQb3MgPSAoX2EgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMDtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICAvLyBFeHRyYWN0IG9ubHkgdmFsaWQgY2hhcmFjdGVycyBmcm9tIHRoZSByYXcgaW5wdXRcbiAgICAgICAgY29uc3QgcmF3ID0gZXh0cmFjdFJhdyhpbnB1dFZhbHVlLCBtYXNrLCBzbG90Q2hhcilcbiAgICAgICAgICAgICsgaW5wdXRWYWx1ZS5zbGljZShjdXJzb3JQb3MgPiAwID8gY3Vyc29yUG9zIC0gMSA6IDAsIGN1cnNvclBvcykucmVwbGFjZSgvW15cXGRhLXpBLVpdL2csICcnKTtcbiAgICAgICAgLy8gUmUtZXh0cmFjdCBmcm9tIHRoZSBmdWxsIGlucHV0IHRvIGdldCBjbGVhbiByYXdcbiAgICAgICAgbGV0IGNsZWFuUmF3ID0gJyc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY2ggPSBpbnB1dFZhbHVlW2ldO1xuICAgICAgICAgICAgaWYgKC9bXFxkYS16QS1aXS8udGVzdChjaCkpXG4gICAgICAgICAgICAgICAgY2xlYW5SYXcgKz0gY2g7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKGNsZWFuUmF3LCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICAgICAgZW1pdENoYW5nZShmb3JtYXR0ZWQsIGV2ZW50KTtcbiAgICAgICAgLy8gUG9zaXRpb24gY3Vyc29yIGFmdGVyIHRoZSBsYXN0IGZpbGxlZCBzbG90XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXh0UG9zID0gZmluZEZpcnN0U2xvdChmb3JtYXR0ZWQsIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKG5leHRQb3MsIG5leHRQb3MpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSAoX2EgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMDtcbiAgICAgICAgICAgIGNvbnN0IHNlbEVuZCA9IChfYiA9IGlucHV0LnNlbGVjdGlvbkVuZCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMDtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IDAgJiYgc2VsRW5kID09PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRSYXcgPSBleHRyYWN0UmF3KGlubmVyVmFsdWUsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIGlmIChwb3MgIT09IHNlbEVuZCkge1xuICAgICAgICAgICAgICAgIC8vIFNlbGVjdGlvbjogcmVtb3ZlIGFsbCByYXcgY2hhcnMgaW4gdGhlIHNlbGVjdGVkIHJhbmdlXG4gICAgICAgICAgICAgICAgbGV0IG5ld1JhdyA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCByYXdJZHggPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGggJiYgcmF3SWR4IDwgY3VycmVudFJhdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDwgcG9zIHx8IGkgPj0gc2VsRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmF3ICs9IGN1cnJlbnRSYXdbcmF3SWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd0lkeCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGFwcGx5TWFzayhuZXdSYXcsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgICAgICBzZXRJbm5lclZhbHVlKGZvcm1hdHRlZCk7XG4gICAgICAgICAgICAgICAgZW1pdENoYW5nZShmb3JtYXR0ZWQsIHsgdGFyZ2V0OiBpbnB1dCB9KTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UG9zID0gZmluZE5leHRTbG90KG1hc2ssIGZvcm1hdHRlZCwgc2xvdENoYXIsIHBvcyk7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKG5leHRQb3MsIG5leHRQb3MpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gU2luZ2xlIGJhY2tzcGFjZTogZmluZCBwcmV2IHRva2VuIHBvc2l0aW9uIGFuZCByZW1vdmUgaXRcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0UG9zID0gcG9zIC0gMTtcbiAgICAgICAgICAgICAgICB3aGlsZSAodGFyZ2V0UG9zID49IDAgJiYgIWlzTWFza1Rva2VuKG1hc2tbdGFyZ2V0UG9zXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UG9zLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRQb3MgPCAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgbGV0IG5ld1JhdyA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCByYXdJZHggPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXNrVG9rZW4obWFza1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9PSB0YXJnZXRQb3MgJiYgcmF3SWR4IDwgY3VycmVudFJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSYXcgKz0gY3VycmVudFJhd1tyYXdJZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3SWR4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gYXBwbHlNYXNrKG5ld1JhdywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICAgICAgICAgICAgICBlbWl0Q2hhbmdlKGZvcm1hdHRlZCwgeyB0YXJnZXQ6IGlucHV0IH0pO1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHRhcmdldFBvcywgdGFyZ2V0UG9zKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IChfYyA9IGlucHV0LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgbGV0IHRhcmdldFBvcyA9IHBvcztcbiAgICAgICAgICAgIHdoaWxlICh0YXJnZXRQb3MgPCBtYXNrLmxlbmd0aCAmJiAhaXNNYXNrVG9rZW4obWFza1t0YXJnZXRQb3NdKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRhcmdldFBvcyA+PSBtYXNrLmxlbmd0aClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UmF3ID0gZXh0cmFjdFJhdyhpbm5lclZhbHVlLCBtYXNrLCBzbG90Q2hhcik7XG4gICAgICAgICAgICBsZXQgbmV3UmF3ID0gJyc7XG4gICAgICAgICAgICBsZXQgcmF3SWR4ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpc01hc2tUb2tlbihtYXNrW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPT0gdGFyZ2V0UG9zICYmIHJhd0lkeCA8IGN1cnJlbnRSYXcubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdSYXcgKz0gY3VycmVudFJhd1tyYXdJZHhdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJhd0lkeCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGFwcGx5TWFzayhuZXdSYXcsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UoZm9ybWF0dGVkLCB7IHRhcmdldDogaW5wdXQgfSk7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIG9uS2V5RG93biA9PT0gbnVsbCB8fCBvbktleURvd24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uS2V5RG93bihldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICAvLyBPbiBmb2N1cywgaWYgZW1wdHkgc2hvdyB0aGUgbWFzayBwbGFjZWhvbGRlclxuICAgICAgICBpZiAoIWlubmVyVmFsdWUgfHwgZXh0cmFjdFJhdyhpbm5lclZhbHVlLCBtYXNrLCBzbG90Q2hhcikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhcHBseU1hc2soJycsIG1hc2ssIHNsb3RDaGFyKTtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9zID0gZmluZEZpcnN0U2xvdChpbnB1dC52YWx1ZSwgc2xvdENoYXIpO1xuICAgICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHBvcywgcG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG9uRm9jdXMgPT09IG51bGwgfHwgb25Gb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Gb2N1cyhldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGV4dHJhY3RSYXcoaW5uZXJWYWx1ZSwgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICBpZiAoYXV0b0NsZWFyICYmIHJhdy5sZW5ndGggPiAwICYmIHJhdy5sZW5ndGggPCB0b3RhbFNsb3RzKSB7XG4gICAgICAgICAgICBjb25zdCBlbXB0eSA9IGFwcGx5TWFzaygnJywgbWFzaywgc2xvdENoYXIpO1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZShlbXB0eSk7XG4gICAgICAgICAgICBlbWl0Q2hhbmdlKGVtcHR5LCB7IHRhcmdldDogZXZlbnQudGFyZ2V0IH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGNvbXBsZXRlbHkgZW1wdHksIGNsZWFyIHRoZSBmb3JtYXR0ZWQgbWFza1xuICAgICAgICBpZiAocmF3Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0SW5uZXJWYWx1ZSgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gKF9qc3goRmllbGRTaGVsbCwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSwgbGFiZWxDbGFzc05hbWU6IGxhYmVsQ2xhc3NOYW1lLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2l6ZTogc2l6ZSwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBpc0Rpc2FibGVkLCBsYWJlbDogbGFiZWwsIGluZm86IGluZm8sIHRpcDogdGlwLCBmZWVkYmFjazogZmVlZGJhY2ssIGZlZWRiYWNrSWNvbjogZmVlZGJhY2tJY29uLCByZXF1aXJlZDogcmVxdWlyZWQsIGlucHV0SWQ6IGlucHV0SWQsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udHJvbCcsIGpvaW5DbHMoaXNEaXNhYmxlZCAmJiBjbGFzc2VzKCdjb250cm9sLWRpc2FibGVkJykpKSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IHN5bmNSZWYsIGlkOiBpbnB1dElkLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2ZpZWxkJyksIGRpc2FibGVkOiBpc0Rpc2FibGVkLCB2YWx1ZTogaW5uZXJWYWx1ZSwgcGxhY2Vob2xkZXI6IChfYSA9IHJlc3QucGxhY2Vob2xkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGFwcGx5TWFzaygnJywgbWFzaywgc2xvdENoYXIpLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbktleURvd246IGhhbmRsZUtleURvd24sIG9uRm9jdXM6IGhhbmRsZUZvY3VzLCBvbkJsdXI6IGhhbmRsZUJsdXIsIG9uQ29tcG9zaXRpb25TdGFydDogKCkgPT4geyBpc0NvbXBvc2luZy5jdXJyZW50ID0gdHJ1ZTsgfSwgb25Db21wb3NpdGlvbkVuZDogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29tcG9zaW5nLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZShlKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgXCJhcmlhLXJlcXVpcmVkXCI6IGFyaWFSZXF1aXJlZCwgXCJhcmlhLWludmFsaWRcIjogYXJpYUludmFsaWQgfSkpLCBzdWZmaXggJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pXSB9KSB9KSk7XG59O1xuSW5wdXRNYXNrLmRpc3BsYXlOYW1lID0gJ0lucHV0TWFzayc7XG5jb25zdCBNZW1vaXplZElucHV0TWFzayA9IG1lbW8oSW5wdXRNYXNrKTtcbk1lbW9pemVkSW5wdXRNYXNrLmRpc3BsYXlOYW1lID0gJ0lucHV0TWFzayc7XG5leHBvcnQgZGVmYXVsdCBNZW1vaXplZElucHV0TWFzazsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -8,7 +8,8 @@ exports["default"] = exports.InputOTP = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  var _react = require("react");
11
- var _hooks = require("@1money/hooks");
11
+ var _useControlledState3 = _interopRequireDefault(require("@1money/hooks/useControlledState"));
12
+ var _useEventCallback = _interopRequireDefault(require("@1money/hooks/useEventCallback"));
12
13
  var _classnames = _interopRequireDefault(require("../../../utils/classnames"));
13
14
  var _FieldShell = require("../FieldShell");
14
15
  var _constants = require("../constants");
@@ -52,7 +53,7 @@ var InputOTP = exports.InputOTP = function InputOTP(props) {
52
53
  containerRef = _useSyncRef2[0],
53
54
  syncContainerRef = _useSyncRef2[1];
54
55
  var inputRefs = (0, _react.useRef)([]);
55
- var _useControlledState = (0, _hooks.useControlledState)(defaultValue, value),
56
+ var _useControlledState = (0, _useControlledState3["default"])(defaultValue, value),
56
57
  _useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
57
58
  innerValue = _useControlledState2[0],
58
59
  setInnerValue = _useControlledState2[1];
@@ -63,13 +64,13 @@ var InputOTP = exports.InputOTP = function InputOTP(props) {
63
64
  var _a;
64
65
  return (_a = normalizedValue[index]) !== null && _a !== void 0 ? _a : '';
65
66
  });
66
- var focusCell = (0, _hooks.useEventCallback)(function (index) {
67
+ var focusCell = (0, _useEventCallback["default"])(function (index) {
67
68
  var target = inputRefs.current[index];
68
69
  if (!target) return;
69
70
  target.focus();
70
71
  target.select();
71
72
  });
72
- var commitValue = (0, _hooks.useEventCallback)(function (nextValue, focusIndex) {
73
+ var commitValue = (0, _useEventCallback["default"])(function (nextValue, focusIndex) {
73
74
  var formattedValue = (formatter ? formatter(nextValue) : nextValue).slice(0, length);
74
75
  setInnerValue(formattedValue);
75
76
  onChange === null || onChange === void 0 ? void 0 : onChange(formattedValue);
@@ -80,7 +81,7 @@ var InputOTP = exports.InputOTP = function InputOTP(props) {
80
81
  focusCell(Math.max(0, Math.min(length - 1, focusIndex)));
81
82
  }
82
83
  });
83
- var handleInputChange = (0, _hooks.useEventCallback)(function (index, event) {
84
+ var handleInputChange = (0, _useEventCallback["default"])(function (index, event) {
84
85
  if (disabled) return;
85
86
  var _char = event.target.value.slice(-1);
86
87
  if (_char && !DIGIT_PATTERN.test(_char)) return;
@@ -88,7 +89,7 @@ var InputOTP = exports.InputOTP = function InputOTP(props) {
88
89
  nextChars[index] = _char;
89
90
  commitValue(nextChars.join(''), _char ? index + 1 : index);
90
91
  });
91
- var handleInputKeyDown = (0, _hooks.useEventCallback)(function (index, event) {
92
+ var handleInputKeyDown = (0, _useEventCallback["default"])(function (index, event) {
92
93
  if (disabled || event.key !== 'Backspace') return;
93
94
  event.preventDefault();
94
95
  var nextChars = [].concat(chars);
@@ -102,7 +103,7 @@ var InputOTP = exports.InputOTP = function InputOTP(props) {
102
103
  commitValue(nextChars.join(''), index - 1);
103
104
  }
104
105
  });
105
- var handleInputPaste = (0, _hooks.useEventCallback)(function (index, event) {
106
+ var handleInputPaste = (0, _useEventCallback["default"])(function (index, event) {
106
107
  if (disabled) return;
107
108
  event.preventDefault();
108
109
  var pasted = event.clipboardData.getData('text').replace(/\D/g, '').slice(0, length - index);
@@ -163,4 +164,4 @@ InputOTP.displayName = 'InputOTP';
163
164
  var MemoizedInputOTP = /*#__PURE__*/(0, _react.memo)(InputOTP);
164
165
  MemoizedInputOTP.displayName = 'InputOTP';
165
166
  var _default = exports["default"] = MemoizedInputOTP;
166
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvT1RQL09UUC5qcyIsImNvbXBvbmVudHMvSW5wdXQvc3JjL2NvbXBvbmVudHMvSW5wdXQvT1RQL09UUC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2hvb2tzIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ZpZWxkU2hlbGwiLCJfY29uc3RhbnRzIiwiX3VzZVN5bmNSZWYzIiwiRElHSVRfUEFUVEVSTiIsIklucHV0T1RQIiwiZXhwb3J0cyIsInByb3BzIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImxhYmVsQ2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9wcm9wcyRzaXplIiwic2l6ZSIsIl9wcm9wcyRzdGF0dXMiLCJzdGF0dXMiLCJfcHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsImxhYmVsIiwiaW5mbyIsImZlZWRiYWNrIiwiZmVlZGJhY2tJY29uIiwidGlwIiwicmVxdWlyZWQiLCJ2YWx1ZSIsIl9wcm9wcyRkZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJfcHJvcHMkbGVuZ3RoIiwibGVuZ3RoIiwiT1RQX0RFRkFVTFRfTEVOR1RIIiwiX3Byb3BzJGF1dG9Gb2N1cyIsImF1dG9Gb2N1cyIsIl9wcm9wcyRtYXNrIiwibWFzayIsImZvcm1hdHRlciIsIm9uQ2hhbmdlIiwib25Db21wbGV0ZSIsInJlZiIsImF1dG9JZCIsInVzZUlkIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJfdXNlU3luY1JlZiIsInVzZVN5bmNSZWYiLCJfdXNlU3luY1JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb250YWluZXJSZWYiLCJzeW5jQ29udGFpbmVyUmVmIiwiaW5wdXRSZWZzIiwidXNlUmVmIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJub3JtYWxpemVkVmFsdWUiLCJzbGljZSIsImNoYXJzIiwiQXJyYXkiLCJmcm9tIiwiXyIsImluZGV4IiwiX2EiLCJmb2N1c0NlbGwiLCJ1c2VFdmVudENhbGxiYWNrIiwidGFyZ2V0IiwiY3VycmVudCIsImZvY3VzIiwic2VsZWN0IiwiY29tbWl0VmFsdWUiLCJuZXh0VmFsdWUiLCJmb2N1c0luZGV4IiwiZm9ybWF0dGVkVmFsdWUiLCJ1bmRlZmluZWQiLCJNYXRoIiwibWF4IiwibWluIiwiaGFuZGxlSW5wdXRDaGFuZ2UiLCJldmVudCIsImNoYXIiLCJ0ZXN0IiwibmV4dENoYXJzIiwiY29uY2F0Iiwiam9pbiIsImhhbmRsZUlucHV0S2V5RG93biIsImtleSIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlSW5wdXRQYXN0ZSIsInBhc3RlZCIsImNsaXBib2FyZERhdGEiLCJnZXREYXRhIiwicmVwbGFjZSIsInNwbGl0IiwiZm9yRWFjaCIsIm9mZnNldCIsIl9qc3giLCJGaWVsZFNoZWxsIiwiaW5wdXRJZCIsImNoaWxkcmVuIiwibm9kZSIsImlucHV0TW9kZSIsInBhdHRlcm4iLCJtYXhMZW5ndGgiLCJ0eXBlIiwib25LZXlEb3duIiwib25QYXN0ZSIsImRpc3BsYXlOYW1lIiwiTWVtb2l6ZWRJbnB1dE9UUCIsIm1lbW8iLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFJQSxJQUFNUSxhQUFhLEdBQUcsTUFBTTtBQUVyQixJQUFNQyxRQUFRLEdBQUFDLE9BQUEsQ0FBQUQs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QSxPQUFLRCxpQkFBaUIsQ0FBQ2hCLEtBQUssRUFBRWlCLEtBQUssQ0FBQztVQUFBO1VBQ3BEMEIsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUcxQixLQUFLO1lBQUEsT0FBS00sa0JBQWtCLENBQUN2QixLQUFLLEVBQUVpQixLQUFLLENBQUM7VUFBQTtVQUN0RDJCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFHM0IsS0FBSztZQUFBLE9BQUtTLGdCQUFnQixDQUFDMUIsS0FBSyxFQUFFaUIsS0FBSyxDQUFDO1VBQUE7UUFBQSxDQUFBLEVBZjdDakIsS0FBSyxDQWdCVjtNQUFBLENBQ0g7SUFBQyxDQUFBO0VBQ0UsQ0FBQSxDQUNLO0FBRWpCLENBQUM7QUFFRHpELFFBQVEsQ0FBQ3NHLFdBQVcsR0FBRyxVQUFVO0FBRWpDLElBQU1DLGdCQUFnQixnQkFBRyxJQUFBQyxXQUFJLEVBQUN4RyxRQUFRLENBQUM7QUFDdkN1RyxnQkFBZ0IsQ0FBQ0QsV0FBVyxHQUFHLFVBQVU7QUFBQyxJQUFBRyxRQUFBLEdBQUF4RyxPQUFBLGNBRTNCc0csZ0JBQWdCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXQvT1RQL09UUC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VJZCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEZpZWxkU2hlbGwgfSBmcm9tICcuLi9GaWVsZFNoZWxsJztcbmltcG9ydCB7IE9UUF9ERUZBVUxUX0xFTkdUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VTeW5jUmVmIH0gZnJvbSAnLi4vdXNlU3luY1JlZic7XG5jb25zdCBESUdJVF9QQVRURVJOID0gL15cXGQkLztcbmV4cG9ydCBjb25zdCBJbnB1dE9UUCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIGxhYmVsQ2xhc3NOYW1lLCBwcmVmaXhDbHMgPSAnaW5wdXQnLCBzaXplID0gJ2xhcmdlJywgc3RhdHVzID0gJ2RlZmF1bHQnLCBkaXNhYmxlZCA9IGZhbHNlLCBsYWJlbCwgaW5mbywgZmVlZGJhY2ssIGZlZWRiYWNrSWNvbiwgdGlwLCByZXF1aXJlZCwgdmFsdWUsIGRlZmF1bHRWYWx1ZSA9ICcnLCBsZW5ndGggPSBPVFBfREVGQVVMVF9MRU5HVEgsIGF1dG9Gb2N1cyA9IGZhbHNlLCBtYXNrID0gZmFsc2UsIGZvcm1hdHRlciwgb25DaGFuZ2UsIG9uQ29tcGxldGUsIHJlZiwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBbY29udGFpbmVyUmVmLCBzeW5jQ29udGFpbmVyUmVmXSA9IHVzZVN5bmNSZWYocmVmKTtcbiAgICBjb25zdCBpbnB1dFJlZnMgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUsIHZhbHVlKTtcbiAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSBpbm5lclZhbHVlLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgY29uc3QgY2hhcnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoIH0sIChfLCBpbmRleCkgPT4geyB2YXIgX2E7IHJldHVybiAoX2EgPSBub3JtYWxpemVkVmFsdWVbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJzsgfSk7XG4gICAgY29uc3QgZm9jdXNDZWxsID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gaW5wdXRSZWZzLmN1cnJlbnRbaW5kZXhdO1xuICAgICAgICBpZiAoIXRhcmdldClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIHRhcmdldC5zZWxlY3QoKTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21taXRWYWx1ZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgZm9jdXNJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IChmb3JtYXR0ZXIgPyBmb3JtYXR0ZXIobmV4dFZhbHVlKSA6IG5leHRWYWx1ZSkuc2xpY2UoMCwgbGVuZ3RoKTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZS5sZW5ndGggPT09IGxlbmd0aCkge1xuICAgICAgICAgICAgb25Db21wbGV0ZSA9PT0gbnVsbCB8fCBvbkNvbXBsZXRlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbXBsZXRlKGZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9jdXNJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb2N1c0NlbGwoTWF0aC5tYXgoMCwgTWF0aC5taW4obGVuZ3RoIC0gMSwgZm9jdXNJbmRleCkpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgsIGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgY2hhciA9IGV2ZW50LnRhcmdldC52YWx1ZS5zbGljZSgtMSk7XG4gICAgICAgIGlmIChjaGFyICYmICFESUdJVF9QQVRURVJOLnRlc3QoY2hhcikpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHRDaGFycyA9IFsuLi5jaGFyc107XG4gICAgICAgIG5leHRDaGFyc1tpbmRleF0gPSBjaGFyO1xuICAgICAgICBjb21taXRWYWx1ZShuZXh0Q2hhcnMuam9pbignJyksIGNoYXIgPyBpbmRleCArIDEgOiBpbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlSW5wdXRLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgsIGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCBldmVudC5rZXkgIT09ICdCYWNrc3BhY2UnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBuZXh0Q2hhcnMgPSBbLi4uY2hhcnNdO1xuICAgICAgICBpZiAobmV4dENoYXJzW2luZGV4XSkge1xuICAgICAgICAgICAgbmV4dENoYXJzW2luZGV4XSA9ICcnO1xuICAgICAgICAgICAgY29tbWl0VmFsdWUobmV4dENoYXJzLmpvaW4oJycpLCBpbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgbmV4dENoYXJzW2luZGV4IC0gMV0gPSAnJztcbiAgICAgICAgICAgIGNvbW1pdFZhbHVlKG5leHRDaGFycy5qb2luKCcnKSwgaW5kZXggLSAxKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUlucHV0UGFzdGUgPSB1c2VFdmVudENhbGxiYWNrKChpbmRleCwgZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBwYXN0ZWQgPSBldmVudC5jbGlwYm9hcmREYXRhXG4gICAgICAgICAgICAuZ2V0RGF0YSgndGV4dCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxEL2csICcnKVxuICAgICAgICAgICAgLnNsaWNlKDAsIGxlbmd0aCAtIGluZGV4KTtcbiAgICAgICAgY29uc3QgbmV4dENoYXJzID0gWy4uLmNoYXJzXTtcbiAgICAgICAgcGFzdGVkLnNwbGl0KCcnKS5mb3JFYWNoKChjaGFyLCBvZmZzZXQpID0+IHtcbiAgICAgICAgICAgIG5leHRDaGFyc1tpbmRleCArIG9mZnNldF0gPSBjaGFyO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tbWl0VmFsdWUobmV4dENoYXJzLmpvaW4oJycpLCBNYXRoLm1pbihsZW5ndGggLSAxLCBpbmRleCArIHBhc3RlZC5sZW5ndGgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gKF9qc3goRmllbGRTaGVsbCwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSwgbGFiZWxDbGFzc05hbWU6IGxhYmVsQ2xhc3NOYW1lLCBwcmVmaXhDbHM6IHByZWZpeENscywgc2l6ZTogc2l6ZSwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgbGFiZWw6IGxhYmVsLCBpbmZvOiBpbmZvLCB0aXA6IHRpcCwgZmVlZGJhY2s6IGZlZWRiYWNrLCBmZWVkYmFja0ljb246IGZlZWRiYWNrSWNvbiwgcmVxdWlyZWQ6IHJlcXVpcmVkLCBpbnB1dElkOiBhdXRvSWQsIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgcmVmOiBzeW5jQ29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ290cCcpLCBjaGlsZHJlbjogQXJyYXkuZnJvbSh7IGxlbmd0aCB9LCAoXywgaW5kZXgpID0+IChfanN4KFwiaW5wdXRcIiwgeyByZWY6IChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0UmVmcy5jdXJyZW50W2luZGV4XSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgfSwgY2xhc3NOYW1lOiBjbGFzc2VzKCdvdHAtY2VsbCcpLCBkaXNhYmxlZDogZGlzYWJsZWQsIGlucHV0TW9kZTogXCJudW1lcmljXCIsIHBhdHRlcm46IFwiWzAtOV0qXCIsIG1heExlbmd0aDogMSwgXCJhcmlhLWxhYmVsXCI6IGBPVFAgZGlnaXQgJHtpbmRleCArIDF9YCwgYXV0b0ZvY3VzOiBhdXRvRm9jdXMgJiYgaW5kZXggPT09IDAsIHR5cGU6IG1hc2sgPyAncGFzc3dvcmQnIDogJ3RleHQnLCB2YWx1ZTogY2hhcnNbaW5kZXhdLCBvbkNoYW5nZTogKGV2ZW50KSA9PiBoYW5kbGVJbnB1dENoYW5nZShpbmRleCwgZXZlbnQpLCBvbktleURvd246IChldmVudCkgPT4gaGFuZGxlSW5wdXRLZXlEb3duKGluZGV4LCBldmVudCksIG9uUGFzdGU6IChldmVudCkgPT4gaGFuZGxlSW5wdXRQYXN0ZShpbmRleCwgZXZlbnQpIH0sIGluZGV4KSkpIH0pIH0pKTtcbn07XG5JbnB1dE9UUC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUCc7XG5jb25zdCBNZW1vaXplZElucHV0T1RQID0gbWVtbyhJbnB1dE9UUCk7XG5NZW1vaXplZElucHV0T1RQLmRpc3BsYXlOYW1lID0gJ0lucHV0T1RQJztcbmV4cG9ydCBkZWZhdWx0IE1lbW9pemVkSW5wdXRPVFA7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
167
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXQvT1RQL09UUC5qcyIsImNvbXBvbmVudHMvSW5wdXQvc3JjL2NvbXBvbmVudHMvSW5wdXQvT1RQL09UUC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfY2xhc3NuYW1lcyIsIl9GaWVsZFNoZWxsIiwiX2NvbnN0YW50cyIsIl91c2VTeW5jUmVmMyIsIkRJR0lUX1BBVFRFUk4iLCJJbnB1dE9UUCIsImV4cG9ydHMiLCJwcm9wcyIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJsYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJfcHJvcHMkc3RhdHVzIiwic3RhdHVzIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJsYWJlbCIsImluZm8iLCJmZWVkYmFjayIsImZlZWRiYWNrSWNvbiIsInRpcCIsInJlcXVpcmVkIiwidmFsdWUiLCJfcHJvcHMkZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJGxlbmd0aCIsImxlbmd0aCIsIk9UUF9ERUZBVUxUX0xFTkdUSCIsIl9wcm9wcyRhdXRvRm9jdXMiLCJhdXRvRm9jdXMiLCJfcHJvcHMkbWFzayIsIm1hc2siLCJmb3JtYXR0ZXIiLCJvbkNoYW5nZSIsIm9uQ29tcGxldGUiLCJyZWYiLCJhdXRvSWQiLCJ1c2VJZCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZVN5bmNSZWYiLCJ1c2VTeW5jUmVmIiwiX3VzZVN5bmNSZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29udGFpbmVyUmVmIiwic3luY0NvbnRhaW5lclJlZiIsImlucHV0UmVmcyIsInVzZVJlZiIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwibm9ybWFsaXplZFZhbHVlIiwic2xpY2UiLCJjaGFycyIsIkFycmF5IiwiZnJvbSIsIl8iLCJpbmRleCIsIl9hIiwiZm9jdXNDZWxsIiwidXNlRXZlbnRDYWxsYmFjayIsInRhcmdldCIsImN1cnJlbnQiLCJmb2N1cyIsInNlbGVjdCIsImNvbW1pdFZhbHVlIiwibmV4dFZhbHVlIiwiZm9jdXNJbmRleCIsImZvcm1hdHRlZFZhbHVlIiwidW5kZWZpbmVkIiwiTWF0aCIsIm1heCIsIm1pbiIsImhhbmRsZUlucHV0Q2hhbmdlIiwiZXZlbnQiLCJjaGFyIiwidGVzdCIsIm5leHRDaGFycyIsImNvbmNhdCIsImpvaW4iLCJoYW5kbGVJbnB1dEtleURvd24iLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZUlucHV0UGFzdGUiLCJwYXN0ZWQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsInJlcGxhY2UiLCJzcGxpdCIsImZvckVhY2giLCJvZmZzZXQiLCJfanN4IiwiRmllbGRTaGVsbCIsImlucHV0SWQiLCJjaGlsZHJlbiIsIm5vZGUiLCJpbnB1dE1vZGUiLCJwYXR0ZXJuIiwibWF4TGVuZ3RoIiwidHlwZSIsIm9uS2V5RG93biIsIm9uUGFzdGUiLCJkaXNwbGF5TmFtZSIsIk1lbW9pemVkSW5wdXRPVFAiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7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TTtVQUNoQ1QsS0FBSyxFQUFFaUMsS0FBSyxDQUFDSSxLQUFLLENBQUM7VUFDbkIxQixRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRzJDLEtBQUs7WUFBQSxPQUFLRCxpQkFBaUIsQ0FBQ2hCLEtBQUssRUFBRWlCLEtBQUssQ0FBQztVQUFBO1VBQ3BEMEIsU0FBUyxFQUFFLFNBQVhBLFNBQVNBLENBQUcxQixLQUFLO1lBQUEsT0FBS00sa0JBQWtCLENBQUN2QixLQUFLLEVBQUVpQixLQUFLLENBQUM7VUFBQTtVQUN0RDJCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFHM0IsS0FBSztZQUFBLE9BQUtTLGdCQUFnQixDQUFDMUIsS0FBSyxFQUFFaUIsS0FBSyxDQUFDO1VBQUE7UUFBQSxDQUFBLEVBZjdDakIsS0FBSyxDQWdCVjtNQUFBLENBQ0g7SUFBQyxDQUFBO0VBQ0UsQ0FBQSxDQUNLO0FBRWpCLENBQUM7QUFFRHpELFFBQVEsQ0FBQ3NHLFdBQVcsR0FBRyxVQUFVO0FBRWpDLElBQU1DLGdCQUFnQixnQkFBRyxJQUFBQyxXQUFJLEVBQUN4RyxRQUFRLENBQUM7QUFDdkN1RyxnQkFBZ0IsQ0FBQ0QsV0FBVyxHQUFHLFVBQVU7QUFBQyxJQUFBRyxRQUFBLEdBQUF4RyxPQUFBLGNBRTNCc0csZ0JBQWdCIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXQvT1RQL09UUC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VJZCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBGaWVsZFNoZWxsIH0gZnJvbSAnLi4vRmllbGRTaGVsbCc7XG5pbXBvcnQgeyBPVFBfREVGQVVMVF9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdXNlU3luY1JlZiB9IGZyb20gJy4uL3VzZVN5bmNSZWYnO1xuY29uc3QgRElHSVRfUEFUVEVSTiA9IC9eXFxkJC87XG5leHBvcnQgY29uc3QgSW5wdXRPVFAgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBsYWJlbENsYXNzTmFtZSwgcHJlZml4Q2xzID0gJ2lucHV0Jywgc2l6ZSA9ICdsYXJnZScsIHN0YXR1cyA9ICdkZWZhdWx0JywgZGlzYWJsZWQgPSBmYWxzZSwgbGFiZWwsIGluZm8sIGZlZWRiYWNrLCBmZWVkYmFja0ljb24sIHRpcCwgcmVxdWlyZWQsIHZhbHVlLCBkZWZhdWx0VmFsdWUgPSAnJywgbGVuZ3RoID0gT1RQX0RFRkFVTFRfTEVOR1RILCBhdXRvRm9jdXMgPSBmYWxzZSwgbWFzayA9IGZhbHNlLCBmb3JtYXR0ZXIsIG9uQ2hhbmdlLCBvbkNvbXBsZXRlLCByZWYsIH0gPSBwcm9wcztcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgW2NvbnRhaW5lclJlZiwgc3luY0NvbnRhaW5lclJlZl0gPSB1c2VTeW5jUmVmKHJlZik7XG4gICAgY29uc3QgaW5wdXRSZWZzID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFZhbHVlLCB2YWx1ZSk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gaW5uZXJWYWx1ZS5zbGljZSgwLCBsZW5ndGgpO1xuICAgIGNvbnN0IGNoYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aCB9LCAoXywgaW5kZXgpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gbm9ybWFsaXplZFZhbHVlW2luZGV4XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7IH0pO1xuICAgIGNvbnN0IGZvY3VzQ2VsbCA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGlucHV0UmVmcy5jdXJyZW50W2luZGV4XTtcbiAgICAgICAgaWYgKCF0YXJnZXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRhcmdldC5mb2N1cygpO1xuICAgICAgICB0YXJnZXQuc2VsZWN0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0VmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIGZvY3VzSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSAoZm9ybWF0dGVyID8gZm9ybWF0dGVyKG5leHRWYWx1ZSkgOiBuZXh0VmFsdWUpLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHNldElubmVyVmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUubGVuZ3RoID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIG9uQ29tcGxldGUgPT09IG51bGwgfHwgb25Db21wbGV0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db21wbGV0ZShmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvY3VzSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9jdXNDZWxsKE1hdGgubWF4KDAsIE1hdGgubWluKGxlbmd0aCAtIDEsIGZvY3VzSW5kZXgpKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJbnB1dENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4LCBldmVudCkgPT4ge1xuICAgICAgICBpZiAoZGlzYWJsZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGNoYXIgPSBldmVudC50YXJnZXQudmFsdWUuc2xpY2UoLTEpO1xuICAgICAgICBpZiAoY2hhciAmJiAhRElHSVRfUEFUVEVSTi50ZXN0KGNoYXIpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0Q2hhcnMgPSBbLi4uY2hhcnNdO1xuICAgICAgICBuZXh0Q2hhcnNbaW5kZXhdID0gY2hhcjtcbiAgICAgICAgY29tbWl0VmFsdWUobmV4dENoYXJzLmpvaW4oJycpLCBjaGFyID8gaW5kZXggKyAxIDogaW5kZXgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUlucHV0S2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGluZGV4LCBldmVudCkgPT4ge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgZXZlbnQua2V5ICE9PSAnQmFja3NwYWNlJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgbmV4dENoYXJzID0gWy4uLmNoYXJzXTtcbiAgICAgICAgaWYgKG5leHRDaGFyc1tpbmRleF0pIHtcbiAgICAgICAgICAgIG5leHRDaGFyc1tpbmRleF0gPSAnJztcbiAgICAgICAgICAgIGNvbW1pdFZhbHVlKG5leHRDaGFycy5qb2luKCcnKSwgaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIG5leHRDaGFyc1tpbmRleCAtIDFdID0gJyc7XG4gICAgICAgICAgICBjb21taXRWYWx1ZShuZXh0Q2hhcnMuam9pbignJyksIGluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVJbnB1dFBhc3RlID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgsIGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChkaXNhYmxlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgcGFzdGVkID0gZXZlbnQuY2xpcGJvYXJkRGF0YVxuICAgICAgICAgICAgLmdldERhdGEoJ3RleHQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcRC9nLCAnJylcbiAgICAgICAgICAgIC5zbGljZSgwLCBsZW5ndGggLSBpbmRleCk7XG4gICAgICAgIGNvbnN0IG5leHRDaGFycyA9IFsuLi5jaGFyc107XG4gICAgICAgIHBhc3RlZC5zcGxpdCgnJykuZm9yRWFjaCgoY2hhciwgb2Zmc2V0KSA9PiB7XG4gICAgICAgICAgICBuZXh0Q2hhcnNbaW5kZXggKyBvZmZzZXRdID0gY2hhcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbW1pdFZhbHVlKG5leHRDaGFycy5qb2luKCcnKSwgTWF0aC5taW4obGVuZ3RoIC0gMSwgaW5kZXggKyBwYXN0ZWQubGVuZ3RoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIChfanN4KEZpZWxkU2hlbGwsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgcHJlZml4Q2xzOiBwcmVmaXhDbHMsIHNpemU6IHNpemUsIHN0YXR1czogc3RhdHVzLCBkaXNhYmxlZDogZGlzYWJsZWQsIGxhYmVsOiBsYWJlbCwgaW5mbzogaW5mbywgdGlwOiB0aXAsIGZlZWRiYWNrOiBmZWVkYmFjaywgZmVlZGJhY2tJY29uOiBmZWVkYmFja0ljb24sIHJlcXVpcmVkOiByZXF1aXJlZCwgaW5wdXRJZDogYXV0b0lkLCBjaGlsZHJlbjogX2pzeChcImRpdlwiLCB7IHJlZjogc3luY0NvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdvdHAnKSwgY2hpbGRyZW46IEFycmF5LmZyb20oeyBsZW5ndGggfSwgKF8sIGluZGV4KSA9PiAoX2pzeChcImlucHV0XCIsIHsgcmVmOiAobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dFJlZnMuY3VycmVudFtpbmRleF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIH0sIGNsYXNzTmFtZTogY2xhc3Nlcygnb3RwLWNlbGwnKSwgZGlzYWJsZWQ6IGRpc2FibGVkLCBpbnB1dE1vZGU6IFwibnVtZXJpY1wiLCBwYXR0ZXJuOiBcIlswLTldKlwiLCBtYXhMZW5ndGg6IDEsIFwiYXJpYS1sYWJlbFwiOiBgT1RQIGRpZ2l0ICR7aW5kZXggKyAxfWAsIGF1dG9Gb2N1czogYXV0b0ZvY3VzICYmIGluZGV4ID09PSAwLCB0eXBlOiBtYXNrID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0JywgdmFsdWU6IGNoYXJzW2luZGV4XSwgb25DaGFuZ2U6IChldmVudCkgPT4gaGFuZGxlSW5wdXRDaGFuZ2UoaW5kZXgsIGV2ZW50KSwgb25LZXlEb3duOiAoZXZlbnQpID0+IGhhbmRsZUlucHV0S2V5RG93bihpbmRleCwgZXZlbnQpLCBvblBhc3RlOiAoZXZlbnQpID0+IGhhbmRsZUlucHV0UGFzdGUoaW5kZXgsIGV2ZW50KSB9LCBpbmRleCkpKSB9KSB9KSk7XG59O1xuSW5wdXRPVFAuZGlzcGxheU5hbWUgPSAnSW5wdXRPVFAnO1xuY29uc3QgTWVtb2l6ZWRJbnB1dE9UUCA9IG1lbW8oSW5wdXRPVFApO1xuTWVtb2l6ZWRJbnB1dE9UUC5kaXNwbGF5TmFtZSA9ICdJbnB1dE9UUCc7XG5leHBvcnQgZGVmYXVsdCBNZW1vaXplZElucHV0T1RQOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==